Ejemplo n.º 1
0
    /// <summary>
    /// Validates form.
    /// </summary>
    private void OnBeforeValidate(object sender, EventArgs e)
    {
        int      selectedCMSUserId = ValidationHelper.GetInteger(Control.GetFieldValue("ChatUserUserID"), 0);
        UserInfo user     = UserInfoProvider.GetUserInfo(selectedCMSUserId);
        string   nickname = Control.GetFieldValue("ChatUserNickname") as string;

        // Validate form - user and nickname fields must be filled
        if ((user == null) || (String.IsNullOrWhiteSpace(nickname)))
        {
            ShowErrorAndStopProcessing("chat.user.erroridnickname");

            return;
        }

        if (user.IsPublic())
        {
            ShowErrorAndStopProcessing("chat.cantassociatechatusertopublic");

            return;
        }

        // Creating a new object
        if (Control.IsInsertMode)
        {
            // Check if userID is unique in ChatUser table if adding a new user
            if (ChatUserInfoProvider.GetChatUserByUserID(selectedCMSUserId) != null)
            {
                ShowErrorAndStopProcessing("chat.user.erroridunique");

                return;
            }
        }

        // Check nickname only if text has been changed
        ChatUserInfo editedChatUser = Control.EditedObject as ChatUserInfo;

        if (Control.IsInsertMode || (nickname != editedChatUser.ChatUserNickname))
        {
            try
            {
                ChatUserHelper.VerifyNicknameIsValid(ref nickname);
            }
            catch (ChatServiceException ex)
            {
                ShowErrorAndStopProcessing(ex.StatusMessage);

                return;
            }


            // Check if Nickname is unique in registered users
            if (!ChatUserHelper.IsNicknameAvailable(nickname))
            {
                ShowErrorAndStopProcessing("chat.user.errornickunique");

                return;
            }
        }
    }
    void Grid_OnAction(string actionName, object actionArgument)
    {
        // If room is global also modifyglobal permission has to be checked.. add it to every action which has modify permisison
        ((CMSChatPage)Page).CheckModifyPermission(SiteID);

        int chatRoomUserID = ValidationHelper.GetInteger(actionArgument, 0);

        if (chatRoomUserID == 0)
        {
            return;
        }

        ChatRoomUserInfo chatRoomUser = ChatRoomUserInfoProvider.GetChatRoomUser(chatRoomUserID);

        if (chatRoomUser == null)
        {
            return;
        }

        // Can't perform any action in one to one support room
        if (ChatRoom.IsOneToOneSupport)
        {
            ShowError(GetString("chat.cantrevokerightsofsupportroomcreator"));
            return;
        }

        switch (actionName)
        {
        case "kick":
            if (!chatRoomUser.IsOnline)
            {
                ShowError(GetString("chat.cantkickofflineuser"));
                return;
            }
            ChatRoomUserHelper.KickUserFromRoom(ChatRoomID, ChatUserInfoProvider.GetChatUserInfo(chatRoomUser.ChatRoomUserChatUserID), ChatUserHelper.GetChatUserFromCMSUser(MembershipContext.AuthenticatedUser));
            break;

        case "revoke":
            if (chatRoomUser.ChatRoomUserAdminLevel == AdminLevelEnum.Creator)
            {
                ShowError(GetString("chat.cantrevokecreatorrights"));
                return;
            }
            ChatRoomUserHelper.KickUserPermanentlyFromRoom(ChatRoomID, ChatUserInfoProvider.GetChatUserInfo(chatRoomUser.ChatRoomUserChatUserID), ChatUserHelper.GetChatUserFromCMSUser(MembershipContext.AuthenticatedUser));
            break;
        }
    }
Ejemplo n.º 3
0
    protected void Page_Load(object sender, EventArgs e)
    {
        if (EditedObjectParent != null)
        {
            editElem.ChatRoomID = ((ChatRoomInfo)EditedObjectParent).ChatRoomID;
        }

        // If editing, add user's nickname to macro resolver, so it can be retrieved when applying breacrumb attribute
        if (EditedObject != null)
        {
            int chatUserID = ((ChatRoomUserInfo)EditedObject).ChatRoomUserChatUserID;

            ChatUserInfo chatUser = ChatUserInfoProvider.GetChatUserInfo(chatUserID);

            CMSContext.CurrentResolver.SetNamedSourceData("EditedChatUserNickname", chatUser.ChatUserNickname);
        }
    }
Ejemplo n.º 4
0
    protected void UIFormOnOnBeforeValidate(object sender, EventArgs e)
    {
        int selectedCMSUserId = ValidationHelper.GetInteger(fUserSelector.Value, 0);

        UserInfo user = UserInfoProvider.GetUserInfo(selectedCMSUserId);

        // Validate form - both fields must be filled
        if ((user == null) || (fNickname.EditingControl.Text == ""))
        {
            ShowErrorAndStopProcessing("chat.user.erroridnickname");
            return;
        }

        if (user.IsPublic())
        {
            ShowErrorAndStopProcessing("chat.cantassociatechatusertopublic");
            return;
        }


        // Editing
        if (TypedEditedObject != null)
        {
            if (!TypedEditedObject.ChatUserUserID.HasValue)
            {
                ShowErrorAndStopProcessing("chat.user.cannoteditanonymoususer");
                return;
            }
        }
        else
        {
            // New object

            // Check if userID is unique in ChatUser table if adding a new user
            if (ChatUserInfoProvider.GetChatUserByUserID(selectedCMSUserId) != null)
            {
                ShowErrorAndStopProcessing("chat.user.erroridunique");
                return;
            }
        }

        string newNickname = fNickname.EditingControl.Text;

        // Check nickname only if text has been changed
        if ((TypedEditedObject == null) || (newNickname != TypedEditedObject.ChatUserNickname))
        {
            try
            {
                ChatUserHelper.VerifyNicknameIsValid(ref newNickname);
            }
            catch (ChatServiceException ex)
            {
                ShowErrorAndStopProcessing(ex.StatusMessage);
                return;
            }


            // Check if Nickname is unique in registered users
            if (!ChatUserHelper.IsNicknameAvailable(newNickname))
            {
                ShowErrorAndStopProcessing("chat.user.errornickunique");
                return;
            }
        }

        fNickname.EditingControl.Text = newNickname;
    }
Ejemplo n.º 5
0
    object Grid_OnExternalDataBound(object sender, string sourceName, object parameter)
    {
        sourceName = sourceName.ToLowerCSafe();

        switch (sourceName)
        {
        case "chatroomcreatedbychatuserid":

            ChatUserInfo user = ChatUserInfoProvider.GetChatUserInfo(ValidationHelper.GetInteger(parameter, 0));
            if (user != null)
            {
                return(ChatHelper.GetCMSDeskChatUserField(this, user));
            }
            else
            {
                return(GetString("general.na"));
            }

        case "approve":
        case "safedelete":
            DataRow row = ((DataRowView)((GridViewRow)parameter).DataItem).Row;

            ChatRoomInfo room = ChatRoomInfoProvider.GetChatRoomInfo(ValidationHelper.GetInteger(row["ChatRoomID"], 0));

            if (room == null)
            {
                return(null);
            }

            bool enabled = ((CMSChatPage)Page).HasUserModifyPermission(room.ChatRoomSiteID);

            string toolTipResourceString;
            CMSGridActionButton button = ((CMSGridActionButton)sender);

            if (sourceName == "approve")
            {
                bool approve = ValidationHelper.GetBoolean(row["ChatRoomEnabled"], false);

                if (!approve)
                {
                    toolTipResourceString = "general.enable";
                    button.IconCssClass   = "icon-check-circle";
                    button.IconStyle      = GridIconStyle.Allow;
                }
                else
                {
                    toolTipResourceString = "general.disable";
                    button.IconCssClass   = "icon-times-circle";
                    button.IconStyle      = GridIconStyle.Critical;
                }

                // Disable 'approve' or 'reject' action if room is one to one support
                if (room.IsOneToOneSupport)
                {
                    enabled = false;
                }
            }
            else
            {
                toolTipResourceString = "general.delete";
            }

            if (!enabled)
            {
                button.Enabled = false;
            }

            button.ToolTip = GetString(toolTipResourceString);
            break;
        }

        return(parameter);
    }
Ejemplo n.º 6
0
    object Grid_OnExternalDataBound(object sender, string sourceName, object parameter)
    {
        string name = sourceName.ToLowerCSafe();

        switch (name)
        {
        case "chatmessageauthor":
        {
            DataRowView row = (DataRowView)parameter;

            if (row["AuthorNickname"] == DBNull.Value)
            {
                return("<span style=\"color: #777777; font-style: italic;\">" + GetString("chat.system") + "</span>");
            }

            int    chatUserID  = ValidationHelper.GetInteger(row["ChatMessageUserID"], 0);
            string nickname    = ValidationHelper.GetString(row["AuthorNickname"], "AuthorNickname");
            bool   isAnonymous = ValidationHelper.GetBoolean(row["AuthorIsAnonymous"], true);

            return(ChatHelper.GetCMSDeskChatUserField(this, chatUserID, nickname, isAnonymous));
        }

        case "edit":
        case "reject":
        case "delete":
        {
            DataRowView row = (DataRowView)((GridViewRow)parameter).DataItem;

            // Whisper message is consider as system here - it can't be rejected or edited
            ChatMessageTypeEnum msgType = (ChatMessageTypeEnum)ValidationHelper.GetInteger(row["ChatMessageSystemMessageType"], 0);
            bool isSystem = ((msgType != ChatMessageTypeEnum.ClassicMessage) && (msgType != ChatMessageTypeEnum.Announcement));

            bool enabled      = true;
            var  actionButton = (CMSGridActionButton)sender;

            if (isSystem)
            {
                if (name == "edit" || name == "reject")
                {
                    // Disable edit and reject buttons for system messages
                    enabled = false;
                }
            }
            else
            {
                if (name == "reject")
                {
                    bool isRejected = ValidationHelper.GetBoolean(row["ChatMessageRejected"], false);
                    if (isRejected)
                    {
                        actionButton.IconCssClass = "icon-check-circle";
                        actionButton.IconStyle    = GridIconStyle.Allow;
                        actionButton.ToolTip      = GetString("general.approve");
                    }
                }
            }

            if (!HasUserModifyPermission && name != "edit")
            {
                enabled = false;
            }

            actionButton.Enabled = enabled;

            break;
        }

        case "chatmessagesystemmessagetype":
        {
            DataRowView row = (DataRowView)parameter;

            ChatMessageTypeEnum messageType = (ChatMessageTypeEnum)ValidationHelper.GetInteger(row["ChatMessageSystemMessageType"], 0);

            if (messageType == ChatMessageTypeEnum.Whisper)
            {
                ChatUserInfo recipient = ChatUserInfoProvider.GetChatUserInfo(ValidationHelper.GetInteger(row["ChatMessageRecipientID"], 0));

                if (recipient != null)
                {
                    // Set text to the format "Whisper to somebody", where somebody may be link to the user if he is not anonymous

                    return(string.Format(ResHelper.GetString("chat.system.cmsdesk.whisperto"), ChatHelper.GetCMSDeskChatUserField(this, recipient)));
                }
            }

            return(messageType.ToStringValue((int)ChatMessageTypeStringValueUsageEnum.CMSDeskDescription));
        }

        case "chatmessagetext":
        {
            DataRowView row = (DataRowView)parameter;

            ChatMessageTypeEnum messageType = (ChatMessageTypeEnum)ValidationHelper.GetInteger(row["ChatMessageSystemMessageType"], 0);

            string messageText = ValidationHelper.GetString(row["ChatMessageText"], "");

            if (messageType.IsSystemMessage())
            {
                messageText = MacroResolver.Resolve(messageText);
            }

            return(HTMLHelper.HTMLEncode(messageText));
        }
        }

        return(parameter);
    }
Ejemplo n.º 7
0
    protected void Page_Load(object sender, EventArgs e)
    {
        UIFormControl.OnCheckPermissions += EditForm_OnCheckPermissions;
        UIFormControl.OnBeforeValidate   += EditForm_OnBeforeValidate;
        UIFormControl.OnBeforeSave       += EditForm_OnBeforeSave;

        ChatRoomInfo room = ChatRoom;

        if ((room == null) || room.IsOneToOneSupport)
        {
            RedirectToInformation(GetString("chat.error.internal"));
        }

        if (!RequestHelper.IsPostBack())
        {
            List <AdminLevelEnum> itemsToAdd = new List <AdminLevelEnum>();

            // Level can be set to None only if editing existing user in room
            if (IsEditing)
            {
                itemsToAdd.Add(AdminLevelEnum.None);
            }

            // Level can be set to Join only in private rooms
            if (room.ChatRoomPrivate)
            {
                itemsToAdd.Add(AdminLevelEnum.Join);
            }

            // Level can be set to Admin always
            itemsToAdd.Add(AdminLevelEnum.Admin);

            foreach (AdminLevelEnum enumValue in itemsToAdd)
            {
                fdrpAdminLevel.DropDownList.Items.Add(new ListItem(enumValue.ToStringValue(), ((int)enumValue).ToString()));
            }

            if (IsEditing)
            {
                fdrpAdminLevel.SelectedValue = ((int)TypedEditedObject.ChatRoomUserAdminLevel).ToString();
            }
        }


        if (IsEditing)
        {
            ChatUserInfo chatUser = ChatUserInfoProvider.GetChatUserInfo(TypedEditedObject.ChatRoomUserChatUserID);

            litChatUserLink.Text = ChatHelper.GetCMSDeskChatUserField(this, chatUser);

            fUserSelector.Value = chatUser.ChatUserUserID;

            litChatUserLink.Visible = true;
            fUserSelector.Visible   = false;

            // Disable user selector and set ProcessDisabledFields to false, so it won't be validated
            UIFormControl.ProcessDisabledFields = false;
            fUserSelector.Enabled = false;
        }
        else
        {
            litChatUserLink.Visible = false;
            fUserSelector.Visible   = true;

            if (room.ChatRoomSiteID.HasValue)
            {
                fUserSelector.SiteID         = room.ChatRoomSiteID.Value;
                fUserSelector.ShowSiteFilter = false;
            }
        }
    }
Ejemplo n.º 8
0
    object Grid_OnExternalDataBound(object sender, string sourceName, object parameter)
    {
        sourceName = sourceName.ToLowerCSafe();

        switch (sourceName)
        {
        case "chatroomcreatedbychatuserid":

            ChatUserInfo user = ChatUserInfoProvider.GetChatUserInfo(ValidationHelper.GetInteger(parameter, 0));
            if (user != null)
            {
                return(ChatHelper.GetCMSDeskChatUserField(this, user));
            }
            else
            {
                return(GetString("general.na"));
            }

        case "approve":
        case "safedelete":
            DataRow row = ((DataRowView)((GridViewRow)parameter).DataItem).Row;

            ChatRoomInfo room = ChatRoomInfoProvider.GetChatRoomInfo(ValidationHelper.GetInteger(row["ChatRoomID"], 0));

            if (room == null)
            {
                return(null);
            }

            bool enabled = ((CMSChatPage)Page).HasUserModifyPermission(room.ChatRoomSiteID);

            string iconName;
            string toolTipResourceString;

            if (sourceName == "approve")
            {
                bool approve = ValidationHelper.GetBoolean(row["ChatRoomEnabled"], false);

                if (!approve)
                {
                    toolTipResourceString = "general.enable";
                    iconName = "Approve";
                }
                else
                {
                    toolTipResourceString = "general.disable";
                    iconName = "Reject";
                }

                // Disable 'approve' or 'reject' action if room is one to one support
                if (room.IsOneToOneSupport)
                {
                    enabled = false;
                }
            }
            else
            {
                toolTipResourceString = "general.delete";
                iconName = "Delete";
            }

            ImageButton button = ((ImageButton)sender);

            if (!enabled)
            {
                button.Enabled = false;
                iconName      += "disabled";
            }

            button.ToolTip  = GetString(toolTipResourceString);
            button.ImageUrl = GetImageUrl("Design/Controls/UniGrid/Actions/" + iconName + ".png");

            break;
        }

        return(parameter);
    }
    object Grid_OnExternalDataBound(object sender, string sourceName, object parameter)
    {
        int    chatUserID = ValidationHelper.GetInteger(parameter, 0);
        string name       = sourceName.ToLowerCSafe();

        switch (name)
        {
        case "chatroomuserchatuserid":
            ChatUserInfo user = ChatUserInfoProvider.GetChatUserInfo(chatUserID);

            return(ChatUIHelper.GetCMSDeskChatUserField(this, user));

        case "adminlevel":
            AdminLevelEnum adminLevel = (AdminLevelEnum)parameter;

            return(adminLevel.ToStringValue());

        case "onlinestatus":
            if (parameter == DBNull.Value)
            {
                parameter = null;
            }

            DateTime?joinTime = (DateTime?)parameter;

            string input = "<span class=\"{0}\">{1}</span>";

            return(String.Format(input, (joinTime.HasValue) ? "StatusEnabled" : "StatusDisabled", GetString(joinTime.HasValue ? "general.yes" : "general.no")));


        case "action_kick":
        case "action_revoke":
        case "action_edit":
            //Gets the value of the UserName column from the current data row
            DataRow row = ((DataRowView)((GridViewRow)parameter).DataItem).Row;

            bool visible = true;
            CMSGridActionButton actionButton = (CMSGridActionButton)sender;

            // Can't perform any action in one to one support room
            if (ChatRoom.IsOneToOneSupport)
            {
                visible = false;
            }
            else
            {
                if (name == "action_kick")
                {
                    if (row["ChatRoomUserJoinTime"] == DBNull.Value)
                    {
                        visible = false;
                    }
                    actionButton.IconCssClass = "icon-arrow-right-rect";
                }
                else if (name == "action_revoke")
                {
                    // Can't revoke access to the creator of the room
                    // Can't revoke access to the public room
                    if (!ChatRoom.ChatRoomPrivate || ((int)row["ChatRoomUserAdminLevel"] == (int)AdminLevelEnum.Creator))
                    {
                        visible = false;
                    }
                    actionButton.IconCssClass = "icon-times-circle color-red-70";
                }
                else if (name == "action_edit")
                {
                    actionButton.IconCssClass = "icon-edit";
                    actionButton.IconStyle    = GridIconStyle.Allow;
                }
            }

            if (!visible)
            {
                actionButton.Visible = false;
            }
            else if (!HasUserModifyPermission)
            {
                actionButton.Enabled = false;
            }

            break;
        }

        return(parameter);
    }