HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/RMourik/bassol.nl/wwwroot/CMSModules/Chat/Controls/UI/ChatRoom/Edit.ascx.cs
using System;

using CMS.DataEngine;
using CMS.FormControls;
using CMS.Helpers;
using CMS.UIControls;
using CMS.Chat;
using CMS.Base;
using CMS.PortalEngine;


public partial class CMSModules_Chat_Controls_UI_ChatRoom_Edit : CMSAdminEditControl
{
    #region "Private fields"

    private int? mSiteID;

    #endregion


    #region "Properties"

    /// <summary>
    /// UIForm control used for editing objects properties.
    /// </summary>
    public UIForm UIFormControl
    {
        get
        {
            return EditForm;
        }
    }


    /// <summary>
    /// Indicates if the control should perform the operations.
    /// </summary>
    public override bool StopProcessing
    {
        get
        {
            return base.StopProcessing;
        }
        set
        {
            base.StopProcessing = value;
            EditForm.StopProcessing = value;
        }
    }


    /// <summary>
    /// Indicates if the control is used on the live site.
    /// </summary>
    public override bool IsLiveSite
    {
        get
        {
            return base.IsLiveSite;
        }
        set
        {
            base.IsLiveSite = value;
            EditForm.IsLiveSite = value;
        }
    }


    /// <summary>
    /// SiteID of a new room.
    /// 
    /// NULL means global.
    /// </summary>
    public int? SiteID
    {
        get
        {
            if (TypedEditedObject != null && TypedEditedObject.ChatRoomID > 0)
            {
                return TypedEditedObject.ChatRoomSiteID;
            }

            return mSiteID;
        }
        set
        {
            if (value <= 0)
            {
                value = null;
            }
            mSiteID = value;
        }
    }


    public ChatRoomInfo TypedEditedObject
    {
        get
        {
            return (ChatRoomInfo)UIContext.EditedObject;
        }
    }

    #endregion


    #region "Page events"

    protected void Page_Load(object sender, EventArgs e)
    {
        UIFormControl.OnBeforeDataRetrieval += UIFormControl_OnBeforeDataRetrieval;
        UIFormControl.OnAfterSave += UIFormControl_OnAfterSave;
        UIFormControl.OnCheckPermissions += UIFormControl_OnCheckPermissions;
        UIFormControl.OnItemValidation += UiFormControlOnOnItemValidation;

        string urlAfterCreate = UIContextHelper.GetElementUrl("CMS.Chat", "EditChatRoom");
        urlAfterCreate = URLHelper.AddParameterToUrl(urlAfterCreate, "roomId", "{%EditedObject.ID%}");
        urlAfterCreate = URLHelper.AddParameterToUrl(urlAfterCreate, "objectid", "{%EditedObject.ID%}");
        urlAfterCreate = URLHelper.AddParameterToUrl(urlAfterCreate, "siteid", "{?siteid?}");
        urlAfterCreate = URLHelper.AddParameterToUrl(urlAfterCreate, "saved", "1");
        urlAfterCreate = URLHelper.AddParameterToUrl(urlAfterCreate, "displaytitle", "false");
        UIFormControl.RedirectUrlAfterCreate = urlAfterCreate;

        // Allow an empty password
        EditingFormControl passwordEditingControl = UIFormControl.FieldEditingControls["chatroompassword"];
        var passwordStrengthControl = passwordEditingControl.NestedControl as CMSModules_Membership_FormControls_Passwords_PasswordStrength;
        if (passwordStrengthControl != null)
        {
            passwordStrengthControl.AllowEmpty = true;
        }
    }


    private void UiFormControlOnOnItemValidation(object sender, ref string errorMessage)
    {
        var control = sender as FormEngineUserControl;
        switch (control.Field)
        {
            case "ChatRoomDisplayName":
            case "ChatRoomDescription":
                try
                {
                    ChatHelper.CheckNameForBadWords(control.Value.ToString());
                }
                catch (ChatBadWordsException ex)
                {
                    errorMessage = ex.Message;
                }
                break;
        }
    }


    protected void Page_PreRender(object sender, EventArgs e)
    {
        // If room is one to one support (support room created after user requested support), disable editing some properties.
        if ((TypedEditedObject != null) && TypedEditedObject.IsOneToOneSupport)
        {
            DisableFieldControl("ChatRoomName");
            DisableFieldControl("ChatRoomEnabled");
            DisableFieldControl("ChatRoomPrivate");
            DisableFieldControl("ChatRoomAllowAnonym");
            DisableFieldControl("ChatRoomIsSupport");
        }
    }


    void DisableFieldControl(string fieldName)
    {
        if (UIFormControl.FieldControls != null)
        {
            FormEngineUserControl fieldControl = UIFormControl.FieldControls[fieldName];

            if (fieldControl != null)
            {
                fieldControl.Enabled = false;
            }
        }
    }


    void UIFormControl_OnCheckPermissions(object sender, EventArgs e)
    {
        ((CMSChatPage)Page).CheckModifyPermission(SiteID);
    }


    void UIFormControl_OnBeforeDataRetrieval(object sender, EventArgs e)
    {
        // Set site id and other data if the room is new
        if ((UIContext.EditedObject == null) || (((ChatRoomInfo)UIContext.EditedObject).ChatRoomID <= 0))
        {
            IDataContainer data = UIFormControl.Data;
            data["ChatRoomCreatedByChatUserID"] = ChatUserHelper.GetChatUserFromCMSUser().ChatUserID;
            data["ChatRoomCreatedWhen"] = DateTime.Now; // GETDATE() will be used on SQL Server side
            data["ChatRoomSiteID"] = SiteID;

            Guid guid = Guid.NewGuid();
            data["ChatRoomGUID"] = guid;

            EditingFormControl passwordEditingControl = UIFormControl.FieldEditingControls["chatroompassword"];
            string password = passwordEditingControl.Value.ToString();
            passwordEditingControl.Value = ChatRoomHelper.GetRoomPasswordHash(password, guid);
        }
        else
        {
            ChatRoomInfo room = UIContext.EditedObject as ChatRoomInfo;
            EditingFormControl enabledControl = UIFormControl.FieldEditingControls["chatroomenabled"];
            bool enabled = (bool)enabledControl.Value;
            if (room.ChatRoomEnabled != enabled)
            {
                if (enabled)
                {
                    ChatRoomHelper.EnableChatRoom(room.ChatRoomID);
                }
                else
                {
                    ChatRoomHelper.DisableChatRoom(room.ChatRoomID);
                }
            }
        }
    }


    void UIFormControl_OnAfterSave(object sender, EventArgs e)
    {
        // Refresh header with display name in breadcrumbs
        ScriptHelper.RefreshTabHeader(Page, ((ChatRoomInfo)EditedObject).ChatRoomDisplayName);

    }

    #endregion
}