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/BizForms/Tools/BizForm_Edit_Layout.aspx.cs
using System;

using CMS.FormEngine;
using CMS.Helpers;
using CMS.OnlineForms;
using CMS.SiteProvider;
using CMS.Membership;
using CMS.UIControls;
using CMS.ExtendedControls.ActionsConfig;
using CMS.DataEngine;
using CMS.Synchronization;
using CMS.ExtendedControls;

// Edited object
[EditedObject(BizFormInfo.OBJECT_TYPE, "formId")]
[Security(Resource = "CMS.Form", Permission = "ReadForm")]
[UIElement("CMS.Form", "Forms.Layout")]
public partial class CMSModules_BizForms_Tools_BizForm_Edit_Layout : CMSBizFormPage
{
    #region "Variables"

    protected HeaderAction attachments = null;
    private BizFormInfo formInfo;
    private const string mAttachmentsActionClass = "attachments-header-action";

    #endregion


    #region "Properties"

    protected BizFormInfo FormInfo
    {
        get
        {
            return formInfo ?? (formInfo = EditedObject as BizFormInfo);
        }
    }

    #endregion


    #region "Page events"

    protected void Page_Load(object sender, EventArgs e)
    {
        if (EditedObject == null)
        {
            RedirectToAccessDenied(GetString("general.invalidparameters")); 
        }

        CurrentMaster.PanelContent.CssClass = string.Empty;

        layoutElem.FormLayoutType = FormLayoutTypeEnum.Bizform;
        layoutElem.ObjectID = FormInfo.FormID;
        layoutElem.ObjectType = BizFormInfo.OBJECT_TYPE;
        layoutElem.ObjectCategory = ObjectAttachmentsCategories.LAYOUT;
        layoutElem.IsLiveSite = false;
        layoutElem.OnBeforeSave += layoutElem_OnBeforeSave;
        layoutElem.OnAfterSave += layoutElem_OnAfterSave;
        layoutElem.IsAuthorizedForAscxEditingFunction = CheckAscxCodePermission;

        // Load CSS style sheet to editor area
        if (SiteContext.CurrentSite != null)
        {
            int cssId = SiteContext.CurrentSite.SiteDefaultEditorStylesheet;
            if (cssId == 0) // Use default site CSS if none editor CSS is specified
            {
                cssId = SiteContext.CurrentSite.SiteDefaultStylesheetID;
            }
            layoutElem.CssStyleSheetID = cssId;
        }

    }


    protected void Page_PreRender(object sender, EventArgs e)
    {
        // Add attachment button to header actions
        InitHeaderActions();

        if (layoutElem.CustomLayoutEnabled)
        {
            // Register paste attachment script
            const string script = @"// Pasting image URL to CKEditor - requires other function 'InsertHTML' -  see Layout control
function PasteImage(imageurl) {
    imageurl = '<img src=""' + imageurl + '"" />';
    return InsertHTML(imageurl);
}";
            ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "PasteScript_" + ClientID, script, true);
        }
        else
        {
            attachments.Enabled = false;
        }
    }

    #endregion


    #region "Event handlers"

    private void layoutElem_OnAfterSave(object sender, EventArgs e)
    {    
        // Delete all attachments if layout was deleted
        if (FormInfo != null)
        {
            var dci = DataClassInfoProvider.GetDataClassInfo(FormInfo.FormClassID);
            if ((dci != null) && string.IsNullOrEmpty(dci.ClassFormLayout))
            {
                // Delete all attachments
                MetaFileInfoProvider.DeleteFiles(FormInfo.FormID, BizFormInfo.OBJECT_TYPE, ObjectAttachmentsCategories.LAYOUT);
            }
        }

        // Log synchronization
        SynchronizationHelper.LogObjectChange(FormInfo, TaskTypeEnum.UpdateObject);
    }


    private void layoutElem_OnBeforeSave(object sender, EventArgs e)
    {
        // Check 'EditForm' permission
        if (!MembershipContext.AuthenticatedUser.IsAuthorizedPerResource("cms.form", "EditForm", SiteInfoProvider.GetSiteName(FormInfo.FormSiteID)))
        {
            RedirectToAccessDenied("cms.form", "EditForm");
        }
    }

    #endregion


    #region "Methods"

    /// <summary>
    /// Initializes header actions.
    /// </summary>
    protected void InitHeaderActions()
    {
        bool isAuthorized = CurrentUser.IsAuthorizedPerResource("cms.form", "EditForm");

        int attachCount = 0;
        if (isAuthorized)
        {
            // Get number of attachments
            InfoDataSet<MetaFileInfo> ds = MetaFileInfoProvider.GetMetaFiles(FormInfo.FormID, BizFormInfo.OBJECT_TYPE, ObjectAttachmentsCategories.LAYOUT, null, null, "MetafileID", -1);
            attachCount = ds.Items.Count;

            // Register attachments count update module
            ScriptHelper.RegisterModule(this, "CMS/AttachmentsCountUpdater", new { Selector = "." + mAttachmentsActionClass, Text = ResHelper.GetString("general.attachments") });

            // Register dialog scripts
            ScriptHelper.RegisterDialogScript(Page);
        }

        // Prepare metafile dialog URL
        string metaFileDialogUrl = ResolveUrl(@"~/CMSModules/AdminControls/Controls/MetaFiles/MetaFileDialog.aspx");
        string query = string.Format("?objectid={0}&objecttype={1}", FormInfo.FormID, BizFormInfo.OBJECT_TYPE);
        metaFileDialogUrl += string.Format("{0}&category={1}&hash={2}", query, ObjectAttachmentsCategories.LAYOUT, QueryHelper.GetHash(query));

        // Init attachment button
        attachments = new HeaderAction
        {
            Text = GetString("general.attachments") + ((attachCount > 0) ? " (" + attachCount + ")" : string.Empty),
            Tooltip = GetString("general.attachments"),
            OnClientClick = string.Format(@"if (modalDialog) {{modalDialog('{0}', 'Attachments', '700', '500');}}", metaFileDialogUrl) + " return false;",
            Enabled = isAuthorized,
            Visible = !layoutElem.IsEditedObjectLocked(),
            CssClass = mAttachmentsActionClass,
            ButtonStyle = ButtonStyle.Default,
        };
        layoutElem.AddExtraHeaderAction(attachments);
    }


    private bool CheckAscxCodePermission()
    {
        return MembershipContext.AuthenticatedUser.IsAuthorizedPerResource("cms.globalpermissions", "editcode");
    }

    #endregion
}