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/CMS/CMSAdminControls/UI/Macros/Dialogs/ObjectBrowser.aspx.cs
using System;
using System.Text;

using CMS.UIControls;
using CMS.Helpers;

[Title(Text = "Object browser")]
public partial class CMSAdminControls_UI_Macros_Dialogs_ObjectBrowser : GlobalAdminPage
{
    protected void Page_Load(object sender, EventArgs e)
    {
        editorElem.Editor.ShowToolbar = false;
        editorElem.MixedMode = false;

        treeElem.VirtualMode = false;
        treeElem.DisplayValues = false;
        treeElem.DisplayObjectInRoot = true;
        
        // Load expression from query string
        if (!RequestHelper.IsPostBack())
        {
            var expr = QueryHelper.GetString("expr", "");
            if (!String.IsNullOrEmpty(expr))
            {
                editorElem.Text = expr;
            }

            var mode = QueryHelper.GetString("mode", "");
            switch (mode)
            {
                case "normal":
                    radNormalMode.Checked = true;
                    break;

                case "values":
                    radValues.Checked = true;
                    treeElem.DisplayValues = true;
                    break;

                default:
                    radVirtual.Checked = true;
                    treeElem.VirtualMode = true;
                    break;
            }
        }
        else
        {
            treeElem.VirtualMode = radVirtual.Checked;
            treeElem.DisplayValues = radValues.Checked;
        }

        treeElem.ContextResolver.Settings.CheckSecurity = false;

        treeElem.MacroExpression = editorElem.Text;
        treeElem.OnNodeClickHandler = "SelectItem";
    }


    protected override void OnPreRender(EventArgs e)
    {
        base.OnPreRender(e);

        string macro = editorElem.Text;

        txtOutput.Text = treeElem.ContextResolver.ResolveMacros("{%" + macro + "%}");

        StringBuilder sb = new StringBuilder();

        // Conditional addition of the dot operator (if not using the indexer parentheses) is handled with the replacement
        sb.Append(
@"
function SelectItem(macro) {
    var item = ('", ScriptHelper.GetString(macro, false), @".' + macro).replace('.[', '[');
    ", editorElem.Editor.EditorID, @".setValue(item);
}
");

        ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "SelectItem", ScriptHelper.GetScript(sb.ToString()));
    }


    protected void btnClear_Click(object sender, EventArgs e)
    {
        editorElem.Text = "CMSContext.Current";
        treeElem.MacroExpression = editorElem.Text;
    }
}