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/TDijk1/erp-apps.eu/wwwroot/CMSModules/AdminControls/Pages/UIPage.aspx.cs
using System;
using System.Linq;

using CMS.DocumentEngine;
using CMS.Helpers;
using CMS.PortalControls;
using CMS.PortalEngine;
using CMS.UIControls;


public partial class CMSModules_AdminControls_Pages_UIPage : CMSUIPage
{
    #region "Variables"

    private PageTemplateInfo mPageTemplate;

    private const string headerBeginTag = @"
<div id=""UIHeader"" class=""UIHeader"">";

    private const string headerEndTag = @"
    <div id=""CMSHeaderDiv"" class=""CMSHeaderDiv""></div>
    <div id=""CKToolbar"" class=""CKToolbar""></div>
</div>";

    private const string contentBeginTag = @"
<div id=""UIContent"" class=""UIContent scroll-area"">";

    private const string contentEndTag = @"
</div>";

    private const string footerBeginTag = @"
<div id=""UIFooter"" class=""UIFooter"">";

    private const string footerEndTag = @"
</div>";

    #endregion


    #region "Properties"

    /// <summary>
    /// Gets the current page template object.
    /// </summary>
    private PageTemplateInfo PageTemplate
    {
        get
        {
            if (mPageTemplate == null)
            {
                // If direct page template is set via query string use it instead of element's template
                String templateName = QueryHelper.GetString("templatename", String.Empty);
                mPageTemplate = !String.IsNullOrEmpty(templateName) ? PageTemplateInfoProvider.GetPageTemplateInfo(templateName) : PageTemplateInfoProvider.GetPageTemplateInfo(UIElement.ElementPageTemplateID);

                if (mPageTemplate == null)
                {
                    // Prevent loop page template cycling
                    RedirectToInformation(String.Format(GetString("ui.templatenotfound"), templateName));
                }
            }

            return mPageTemplate;
        }
    }


    /// <summary>
    /// Provides access to a dialog's footer. Is only rendered if the page is a dialog.
    /// </summary>
    public override IDialogFooter DialogFooter
    {
        get
        {
            return dialogFooter;
        }
        protected set
        {
            throw new NotSupportedException("[CMSPage.aspx:DialogFooter.get] Cannot assign DialogFooter.");
        }
    }

    #endregion


    #region "Page events"

    /// <summary>
    /// PreInit event handler
    /// </summary>
    protected override void OnPreInit(EventArgs e)
    {
        // Do not automatically switch masterpage if 'dialog=1' is present in query string, because
        // UIPage has its own MasterPage and it would break
        RequiresDialog = false;

        base.OnPreInit(e);

        InitPage();

        EnsureScriptManager();
    }


    /// <summary>
    /// Raises the PreRenderComplete event after the OnPreRenderComplete event and before the page is rendered.
    /// </summary>
    protected override void OnPreRender(EventArgs e)
    {
        base.OnPreRender(e);

        EnsureContentScrolling();
        ScriptHelper.RegisterModule(Page, "CMS/HeaderShadow");
    }


    /// <summary>
    /// Load event handler
    /// </summary>
    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);

        RegisterScripts();
    }

    #endregion


    #region "Private methods"

    /// <summary>
    /// Inits page
    /// </summary>
    private void InitPage()
    {
        // Disable debug for this page
        if (ValidationHelper.GetBoolean(UIContext["disabledebug"], false))
        {
            DisableDebugging();
        }

        // Master page must he addressed here to allow access to page controls on PreInit - DO NOT REMOVE!
        var master = Master as CMSMasterPage;

        if (UIContext.IsDialog)
        {
            master.PanelBody.CssClass = "DialogPageBody";
        }

        if (HandleHierarchy())
        {
            return;
        }

        switch (UIElement.ElementType)
        {
            case UIElementTypeEnum.PageTemplate:
                LoadTemplate();
                break;

            case UIElementTypeEnum.Url:
                {
                    string url = ContextResolver.ResolveMacros(UIElement.ElementTargetURL);

                    RedirectToUrl(url);
                }
                break;
        }

        if (PageTemplate.PageTemplateIsLayout)
        {
            // Layout template needs to propagate the return handler further. The return handler may be used in one of the child layout panes.
            var handlerName = QueryHelper.GetString("returnhandler", string.Empty);

            if (!string.IsNullOrEmpty(handlerName))
            {
                string script = string.Format(
@"
function {0}(parameterValue) {{
    if (wopener && wopener.{0}) {{
        wopener.{0}(parameterValue);
    }}
}}
", ScriptHelper.GetString(handlerName, false));

                ScriptHelper.RegisterStartupScript(this, typeof(string), "returnhandler", script, true);
            }
        }
    }


    /// <summary>
    /// Loads template based on UI element settings
    /// </summary>
    private void LoadTemplate()
    {
        // Init the page components
        manPortal.SetMainPagePlaceholder(plc);

        // Prepare the page info
        PageInfo pi = PageInfoProvider.GetVirtualPageInfo(UIElement.ElementPageTemplateID);
        pi.DocumentNamePath = "/" + ResHelper.GetString("edittabs.design");

        DocumentContext.CurrentPageInfo = pi;

        // Set the design mode
        PortalContext.SetRequestViewMode(ViewModeEnum.UI);
    }


    /// <summary>
    /// Creates the standard page structure: header, content, footer. Modifies web part zones and its properties to ensure the desired structure.
    /// This is the first step for enabling content scrolling.
    /// </summary>
    private void EnsureContentScrolling()
    {
        if (PageTemplate.PageTemplateIsLayout)
        {
            // Layout templates ensure scrolling themselves
            return;
        }

        SetupHeader();
        SetupFooter();
    }


    private void SetupFooter()
    {
        CMSWebPartZone footerZone = plc.WebPartZones.FirstOrDefault(z => ((z.ZoneType == WebPartZoneTypeEnum.Footer) || (z.ZoneType == WebPartZoneTypeEnum.DialogFooter)));
        if ((footerZone != null) && footerZone.IsVisible)
        {
            // Wrap the footer content into footer div
            footerZone.ContentBefore = contentEndTag + footerBeginTag + footerZone.ContentBefore;

            // Close 'UIFooter'
            footerZone.ContentAfter += footerEndTag;
        }
        else
        {
            // Close 'UIContent'
            ltlFooterBefore.Text += contentEndTag;

            // Display the dialog footer panel only in the top dialog frame
            if (UIContext.IsRootDialog)
            {
                ltlFooterBefore.Text += footerBeginTag;
                plcFooter.Visible = true;
                ltlFooterAfter.Text += footerEndTag;
            }
        }
    }


    private void SetupHeader()
    {
        var headerZone = plc.WebPartZones.FirstOrDefault(z => (z.ZoneType == WebPartZoneTypeEnum.Header));
        if ((headerZone != null) && headerZone.IsVisible)
        {
            // Wrap the header content into the header div
            headerZone.ContentBefore = headerBeginTag + headerZone.ContentBefore;

            // Close the header div and open the content div
            headerZone.ContentAfter += headerEndTag + contentBeginTag;
        }
        else
        {
            // Wrap the content into the content div
            plcHeader.Append(contentBeginTag);
        }
    }


    private void RegisterScripts()
    {
        // Register page scripts
        ScriptHelper.RegisterJQuery(this);
        ScriptHelper.RegisterScriptFile(this, URLHelper.ResolveUrl("~/CMSScripts/UI/UIPage.js"));

        if (UIContext.IsRootDialog)
        {
            // Register dialog manipulation functions
            ScriptHelper.RegisterDialogScript(this);
            ScriptHelper.RegisterWOpenerScript(this);
        }
    }

    #endregion
}