Beispiel #1
0
    /// <summary>
    /// Gets the inherited page template from the parent node
    /// </summary>
    /// <param name="node">Document node</param>
    protected int GetInheritedPageTemplateId(TreeNode node)
    {
        string aliasPath = node.NodeAliasPath;

        // For root, there is no inheritance possible
        if (String.IsNullOrEmpty(aliasPath) || (aliasPath == "/"))
        {
            return(0);
        }

        aliasPath = TreePathUtils.GetParentPath(aliasPath);

        // Get the page info
        PageInfo pi = PageInfoProvider.GetPageInfo(node.NodeSiteName, aliasPath, node.DocumentCulture, node.DocumentUrlPath, node.NodeParentID, true);

        if (pi != null)
        {
            // Get template used by the page info
            pti = pi.UsedPageTemplateInfo;
            if (pti != null)
            {
                return(pti.PageTemplateId);
            }
        }

        return(0);
    }
        public async Task <string> GetAncestorPathAsync(string Path, int Levels, bool LevelIsRelative = true, int MinAbsoluteLevel = 2)
        {
            string[] PathParts = TreePathUtils.EnsureSingleNodePath(Path).Split("/".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);

            if (LevelIsRelative)
            {
                // Handle minimum absolute level
                if ((PathParts.Length - Levels + 1) < MinAbsoluteLevel)
                {
                    Levels -= MinAbsoluteLevel - (PathParts.Length - Levels + 1);
                }
                return(TreePathUtils.GetParentPath(TreePathUtils.EnsureSingleNodePath(Path), Levels));
            }

            // Since first 'item' in path is actually level 2, reduce level by 1 to match counts
            Levels--;
            if (PathParts.Count() > Levels)
            {
                return("/" + string.Join("/", PathParts.Take(Levels)));
            }
            else
            {
                return(TreePathUtils.EnsureSingleNodePath(Path));
            }
        }
Beispiel #3
0
    /// <summary>
    /// Gets the inherited page template from the parent node
    /// </summary>
    /// <param name="currentNode">Document node</param>
    protected int GetInheritedPageTemplateId(TreeNode currentNode)
    {
        string aliasPath = currentNode.NodeAliasPath;

        // For root, there is no inheritance possible
        if (String.IsNullOrEmpty(aliasPath) || (aliasPath == "/"))
        {
            return(0);
        }

        aliasPath = TreePathUtils.GetParentPath(aliasPath);

        // Get the parent page info
        PageInfo pi = PageInfoProvider.GetPageInfo(currentNode.NodeSiteName, aliasPath, currentNode.DocumentCulture, null, currentNode.NodeParentID, true);

        if (pi == null)
        {
            return(0);
        }

        // Get template used by the page info
        pageTemplateInfo = pi.UsedPageTemplateInfo;

        return(pageTemplateInfo != null ? pageTemplateInfo.PageTemplateId : 0);
    }
Beispiel #4
0
    /// <summary>
    /// Loads the initial data from the document
    /// </summary>
    private void LoadData()
    {
        node = Node;
        if (node == null)
        {
            return;
        }

        if (node.IsRoot())
        {
            // Hide inheritance options for root node
            pnlInherits.Visible = false;
        }
        else
        {
            inheritElem.Value = Node.NodeInheritPageLevels;

            // Try get info whether exist linked document in path
            DataSet ds = DocumentManager.Tree.SelectNodes(SiteContext.CurrentSiteName, "/%", node.DocumentCulture, false, null, "NodeLinkedNodeID IS NOT NULL AND (N'" + SqlHelper.EscapeQuotes(Node.NodeAliasPath) + "' LIKE NodeAliasPath + '%')", null, -1, false, 1, "Count(*) AS NumOfDocs");

            // If node is not link or none of parent documents is not linked document use document name path
            if (!node.IsLink && DataHelper.GetIntValue(ds.Tables[0].Rows[0], "NumOfDocs") == 0)
            {
                inheritElem.TreePath = TreePathUtils.GetParentPath("/" + Node.DocumentNamePath);
            }
            else
            {
                // Otherwise use alias path
                inheritElem.TreePath = TreePathUtils.GetParentPath("/" + Node.NodeAliasPath);
            }
        }

        if (node.NodeInheritPageTemplate)
        {
            // Document inherits template
            radInherit.Checked = true;
        }
        else
        {
            // Document has its own template
            int templateId = node.GetUsedPageTemplateId();
            radInherit.Checked = false;

            if (node.NodeTemplateForAllCultures)
            {
                radAllCultures.Checked = true;
            }
            else
            {
                radThisCulture.Checked = true;
            }

            // Set selected template ID
            SelectedTemplateID = templateId;
        }

        ReloadControls();
    }
    private string GetTreePath()
    {
        // Try get info whether exist linked document in path
        var documentPathContainsLink = DocumentNodeDataInfoProvider.GetDocumentNodes()
                                       .OnSite(SiteContext.CurrentSiteID)
                                       .WhereNotNull("NodeLinkedNodeID")
                                       .Where(TreePathUtils.GetNodesOnPathWhereCondition(Node.NodeAliasPath, false, false))
                                       .Count > 0;

        // If node is not link or none of parent documents is not linked document use document name path
        var treePath = Node.IsLink || documentPathContainsLink ? Node.NodeAliasPath : Node.DocumentNamePath;

        return(TreePathUtils.GetParentPath($"/{treePath}"));
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        if (DocumentManager != null)
        {
            CMS.DocumentEngine.TreeNode node = DocumentManager.Node;
            if (node != null)
            {
                DocumentSettings = true;

                // Try get info whether exist linked document in path
                DataSet ds = DocumentManager.Tree.SelectNodes(CMSContext.CurrentSiteName, "/%", node.DocumentCulture, false, null, "NodeLinkedNodeID IS NOT NULL AND (N'" + SqlHelperClass.GetSafeQueryString(node.NodeAliasPath) + "' LIKE NodeAliasPath + '%')", null, -1, false, 1, "Count(*) AS NumOfDocs");

                // If node is not link or none of parent documents is not linked document use document name path
                if (!node.IsLink && ValidationHelper.GetInteger(DataHelper.GetDataRowValue(ds.Tables[0].Rows[0], "NumOfDocs"), 0) == 0)
                {
                    TreePath = TreePathUtils.GetParentPath("/" + node.DocumentNamePath);
                }
                else
                {
                    // Otherwise use alias path
                    TreePath = TreePathUtils.GetParentPath("/" + node.NodeAliasPath);
                }
            }
        }

        if (DocumentSettings)
        {
            radInheritAll.Text = GetString("InheritLevels.UseTemplateSettigns");
        }
        else
        {
            radInheritAll.Text = GetString("InheritLevels.InheritAll");
        }
        radNonInherit.Text    = GetString("InheritLevels.NonInherit");
        radSelect.Text        = GetString("InheritLevels.Select");
        radInheritMaster.Text = GetString("InheritLevels.InheritMaster");
    }
Beispiel #7
0
    /// <summary>
    /// Yes button click event handler.
    /// </summary>
    protected void btnYes_Click(object sender, EventArgs e)
    {
        if (IsBannedIP())
        {
            return;
        }

        // Prepare the where condition
        string where = "NodeID = " + NodeID;

        // Get the documents
        DataSet ds = null;

        if (chkAllCultures.Checked)
        {
            ds = TreeProvider.SelectNodes(SiteName, "/%", TreeProvider.ALL_CULTURES, true, null, where, null, -1, false);
        }
        else
        {
            ds = TreeProvider.SelectNodes(SiteName, "/%", CultureCode, false, null, where, null, -1, false);
        }

        if (!DataHelper.DataSourceIsEmpty(ds))
        {
            // Get node alias
            string nodeAlias = ValidationHelper.GetString(DataHelper.GetDataRowValue(ds.Tables[0].Rows[0], "NodeAlias"), string.Empty);
            // Get parent alias path
            string parentAliasPath = TreePathUtils.GetParentPath(ValidationHelper.GetString(DataHelper.GetDataRowValue(ds.Tables[0].Rows[0], "NodeAliasPath"), string.Empty));

            string   aliasPath = null;
            string   culture   = null;
            string   className = null;
            bool     hasUserDeletePermission = false;
            TreeNode treeNode = null;

            // Delete the documents
            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                aliasPath = ValidationHelper.GetString(dr["NodeAliasPath"], string.Empty);
                culture   = ValidationHelper.GetString(dr["DocumentCulture"], string.Empty);
                className = ValidationHelper.GetString(dr["ClassName"], string.Empty);

                // Get the node
                treeNode = TreeProvider.SelectSingleNode(SiteName, aliasPath, culture, false, className, false);

                if (treeNode != null)
                {
                    // Check delete permissions
                    hasUserDeletePermission = !CheckPermissions || IsUserAuthorizedToDeleteDocument(treeNode, chkDestroy.Checked);

                    if (hasUserDeletePermission)
                    {
                        // Delete the document
                        try
                        {
                            LogDeleteActivity(treeNode);
                            DocumentHelper.DeleteDocument(treeNode, TreeProvider, chkAllCultures.Checked, chkDestroy.Checked, true);
                        }
                        catch (Exception ex)
                        {
                            EventLogProvider.LogEvent(EventType.ERROR, "Content", "DELETEDOC", EventLogProvider.GetExceptionLogMessage(ex), RequestContext.RawURL, MembershipContext.AuthenticatedUser.UserID, MembershipContext.AuthenticatedUser.UserName, treeNode.NodeID, treeNode.GetDocumentName(), RequestContext.UserHostAddress, SiteContext.CurrentSiteID);
                            AddAlert(GetString("ContentRequest.DeleteFailed") + ": " + ex.Message);
                            return;
                        }
                    }
                    // Access denied - not authorized to delete the document
                    else
                    {
                        AddAlert(String.Format(GetString("cmsdesk.notauthorizedtodeletedocument"), treeNode.NodeAliasPath));
                        return;
                    }
                }
                else
                {
                    AddAlert(GetString("ContentRequest.ErrorMissingSource"));
                    return;
                }
            }

            RaiseOnAfterDelete();

            string rawUrl = RequestContext.RawURL.TrimEnd(new char[] { '/' });
            if ((!string.IsNullOrEmpty(nodeAlias)) && (rawUrl.Substring(rawUrl.LastIndexOfCSafe('/')).Contains(nodeAlias)))
            {
                // Redirect to the parent url when current url belongs to deleted document
                URLHelper.Redirect(DocumentURLProvider.GetUrl(parentAliasPath));
            }
            else
            {
                // Redirect to current url
                URLHelper.Redirect(rawUrl);
            }
        }
        else
        {
            AddAlert(GetString("DeleteDocument.CultureNotExists"));
            return;
        }
    }
    /// <summary>
    /// Handles the Load event of the Page control.
    /// </summary>
    protected void Page_Load(object sender, EventArgs e)
    {
        // Setup the radio button texts
        radNonInherit.Text    = GetString("InheritLevels.NonInherit");
        radInheritMaster.Text = GetString("InheritLevels.InheritMaster");

        treeElem.Level = Level;
        if (Node != null)
        {
            // Try get info whether exist linked document in path
            DataSet ds = DocumentManager.Tree.SelectNodes(SiteContext.CurrentSiteName, "/%", Node.DocumentCulture, false, null, "NodeLinkedNodeID IS NOT NULL AND (N'" + SqlHelper.GetSafeQueryString(Node.NodeAliasPath) + "' LIKE NodeAliasPath + '%')", null, -1, false, 1, "Count(*) AS NumOfDocs");

            // If node is not link or none of parent documents is not linked document use document name path
            if (!Node.IsLink && ValidationHelper.GetInteger(DataHelper.GetDataRowValue(ds.Tables[0].Rows[0], "NumOfDocs"), 0) == 0)
            {
                TreePath = TreePathUtils.GetParentPath("/" + Node.DocumentNamePath);
            }
            else
            {
                // Otherwise use alias path
                TreePath = TreePathUtils.GetParentPath("/" + Node.NodeAliasPath);
            }

            radInheritAll.Text = GetString("InheritLevels.UseTemplateSettigns");
            bool             isWireframe = IsWireframeTemplate || Node.IsWireframe();
            PageTemplateInfo template    = PageTemplateInfoProvider.GetPageTemplateInfo(isWireframe ? Node.NodeWireframeTemplateID : Node.DocumentPageTemplateID);
            if (template != null)
            {
                string resString = String.Empty;
                string levels    = String.Empty;
                switch (template.InheritPageLevels)
                {
                case "/":
                    resString = "InheritLevels.NoNesting";
                    break;

                case "\\":
                    resString = "InheritLevels.InheritMaster";
                    break;

                case "":
                    resString = "InheritLevels.InheritAll";
                    break;

                default:
                    resString = "InheritLevels.SelectedLevels";

                    // Format page levels
                    levels = template.InheritPageLevels.Trim(new[] { '}', '{', '/' });
                    levels = levels.Replace("}/{", ", ");
                    break;
                }

                // Display page template default setting
                radInheritAll.Text += " (" + GetString(resString) + (!String.IsNullOrEmpty(levels) ? ": " + levels : String.Empty) + ")";
            }

            radSelect.Text = GetString("InheritLevels.Select");
        }
        else
        {
            // Page template setting
            radInheritAll.Text = GetString("InheritLevels.InheritAll");
            radSelect.Text     = GetString("InheritLevels.SelectTemplate");
        }
    }
Beispiel #9
0
    public void RaisePostBackEvent(string eventArgument)
    {
        CurrentUserInfo currentUser = CMSContext.CurrentUser;

        // Current Node ID
        int nodeId = ValidationHelper.GetInteger(Param1, 0);

        TreeProvider     tree = new TreeProvider(currentUser);
        EventLogProvider log  = new EventLogProvider();

        string documentName = "";
        string action       = Action.ToLower();

        // Process the request
        switch (action)
        {
        case "moveup":
        case "movedown":
            // Move the document up (document order)
            try
            {
                if (nodeId == 0)
                {
                    AddAlert(GetString("ContentRequest.ErrorMissingSource"));
                    return;
                }

                // Get document to move
                TreeNode node = tree.SelectSingleNode(nodeId);

                // Check the permissions for document
                if (currentUser.IsAuthorizedPerDocument(node, NodePermissionsEnum.Modify) == AuthorizationResultEnum.Allowed)
                {
                    switch (action)
                    {
                    case "moveup":
                        node = tree.MoveNodeUp(nodeId);
                        break;

                    case "movedown":
                        node = tree.MoveNodeDown(nodeId);
                        break;
                    }

                    string siteName = CMSContext.CurrentSiteName;
                    if (SettingsKeyProvider.GetBoolValue(siteName + ".CMSStagingLogChanges"))
                    {
                        // Load all nodes under parent node
                        if (node != null)
                        {
                            string parentPath = TreePathUtils.GetParentPath(node.NodeAliasPath);

                            DataSet ds = tree.SelectNodes(siteName, parentPath.TrimEnd('/') + "/%", TreeProvider.ALL_CULTURES, true, null, null, null, 1);

                            // Check if data source is not empty
                            if (!DataHelper.DataSourceIsEmpty(ds))
                            {
                                // Go through all nodes
                                foreach (DataRow dr in ds.Tables[0].Rows)
                                {
                                    // Update child nodes
                                    int    logNodeId = ValidationHelper.GetInteger(dr["NodeID"], 0);
                                    string culture   = ValidationHelper.GetString(dr["DocumentCulture"], "");
                                    string className = ValidationHelper.GetString(dr["ClassName"], "");

                                    TreeNode tn = tree.SelectSingleNode(logNodeId, culture, className);
                                    DocumentSynchronizationHelper.LogDocumentChange(tn, TaskTypeEnum.UpdateDocument, tree);
                                }
                            }
                        }
                    }

                    // Move the node
                    if (node != null)
                    {
                        documentName = node.DocumentName;

                        treeContent.ExpandNodeID = node.NodeParentID;
                        treeContent.NodeID       = node.NodeID;
                    }
                    else
                    {
                        AddAlert(GetString("ContentRequest.MoveFailed"));
                    }
                }
                else
                {
                    AddAlert(GetString("ContentRequest.MoveDenied"));
                }
            }
            catch (Exception ex)
            {
                log.LogEvent(EventLogProvider.EVENT_TYPE_ERROR, DateTime.Now, "Content", "MOVE", currentUser.UserID, currentUser.UserName, nodeId, documentName, HTTPHelper.UserHostAddress, EventLogProvider.GetExceptionLogMessage(ex), CMSContext.CurrentSite.SiteID, HTTPHelper.GetAbsoluteUri());
                AddAlert(GetString("ContentRequest.MoveFailed") + " : " + ex.Message);
            }
            break;

        case "delete":
            // Delete the document
            try
            {
                if (nodeId == 0)
                {
                    AddAlert(GetString("DefineSiteStructure.ErrorMissingSource"));
                    return;
                }

                // Get the node
                TreeNode node = tree.SelectSingleNode(nodeId);

                // Delete the node
                if (node != null)
                {
                    treeContent.NodeID = node.NodeParentID;

                    node.Delete();

                    // Delete search index for given node
                    if (SearchIndexInfoProvider.SearchEnabled)
                    {
                        SearchTaskInfoProvider.CreateTask(SearchTaskTypeEnum.Delete, PredefinedObjectType.DOCUMENT, SearchHelper.ID_FIELD, node.GetSearchID());
                    }

                    if (node.NodeAliasPath == "/")
                    {
                        // Refresh root document
                        treeContent.NodeID = node.NodeID;
                        AddScript("SelectNode(" + node.NodeID + "); \n");
                    }
                    else
                    {
                        AddScript("SelectNode(" + node.NodeParentID + "); \n");
                    }
                }
            }
            catch (Exception ex)
            {
                AddAlert(GetString("DefineSiteStructure.DeleteFailed") + " : " + ex.Message);
            }
            break;
        }
    }
    /// <summary>
    /// Yes button click event handler.
    /// </summary>
    protected void btnYes_Click(object sender, EventArgs e)
    {
        // Prepare the where condition
        string where = "NodeID = " + NodeID;

        // Get the documents
        DataSet ds = null;

        if (chkAllCultures.Checked)
        {
            ds = TreeProvider.SelectNodes(SiteName, "/%", TreeProvider.ALL_CULTURES, true, null, where, null, -1, false);
        }
        else
        {
            ds = TreeProvider.SelectNodes(SiteName, "/%", CultureCode, false, null, where, null, -1, false);
        }

        if (!DataHelper.DataSourceIsEmpty(ds))
        {
            // Get node alias
            var nodeAlias = DataHelper.GetStringValue(ds.Tables[0].Rows[0], "NodeAlias", string.Empty);
            // Get parent alias path

            var parentAliasPath = TreePathUtils.GetParentPath(DataHelper.GetStringValue(ds.Tables[0].Rows[0], "NodeAliasPath", string.Empty));

            // Delete the documents
            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                var aliasPath = ValidationHelper.GetString(dr["NodeAliasPath"], string.Empty);
                var culture   = ValidationHelper.GetString(dr["DocumentCulture"], string.Empty);
                var className = ValidationHelper.GetString(dr["ClassName"], string.Empty);

                // Get the node
                var treeNode = TreeProvider.SelectSingleNode(SiteName, aliasPath, culture, false, className, false);

                if (treeNode != null)
                {
                    // Check delete permissions
                    var hasUserDeletePermission = !CheckPermissions || IsUserAuthorizedToDeleteDocument(treeNode, chkDestroy.Checked);

                    if (hasUserDeletePermission)
                    {
                        // Delete the document
                        try
                        {
                            DocumentHelper.DeleteDocument(treeNode, TreeProvider, chkAllCultures.Checked, chkDestroy.Checked);
                        }
                        catch (Exception ex)
                        {
                            var logData = new EventLogData(EventTypeEnum.Error, "Content", "DELETEDOC")
                            {
                                EventDescription = EventLogProvider.GetExceptionLogMessage(ex),
                                EventUrl         = RequestContext.RawURL,
                                UserID           = MembershipContext.AuthenticatedUser.UserID,
                                UserName         = MembershipContext.AuthenticatedUser.UserName,
                                NodeID           = treeNode.NodeID,
                                DocumentName     = treeNode.GetDocumentName(),
                                IPAddress        = RequestContext.UserHostAddress,
                                SiteID           = SiteContext.CurrentSiteID
                            };

                            Service.Resolve <IEventLogService>().LogEvent(logData);
                            AddAlert(GetString("ContentRequest.DeleteFailed") + ": " + ex.Message);
                            return;
                        }
                    }
                    // Access denied - not authorized to delete the document
                    else
                    {
                        AddAlert(String.Format(GetString("cmsdesk.notauthorizedtodeletedocument"), HTMLHelper.HTMLEncode(treeNode.GetDocumentName())));
                        return;
                    }
                }
                else
                {
                    AddAlert(GetString("ContentRequest.ErrorMissingSource"));
                    return;
                }
            }

            RaiseOnAfterDelete();
        }
        else
        {
            AddAlert(GetString("DeleteDocument.CultureNotExists"));
        }
    }
Beispiel #11
0
    protected void Page_Load(object sender, EventArgs e)
    {
        // Register the scripts
        ScriptHelper.RegisterProgress(this);
        ScriptHelper.RegisterScriptFile(this, "~/CMSModules/Content/CMSDesk/Properties/template.js");
        inheritElem.DocumentSettings = true;
        int documentId = 0;

        UIContext.PropertyTab = PropertyTabEnum.Template;

        currentUser = CMSContext.CurrentUser;

        nodeId = QueryHelper.GetInteger("nodeid", 0);

        tree = new TreeProvider(currentUser);
        node = tree.SelectSingleNode(nodeId, CMSContext.PreferredCultureCode, false);

        // Redirect to page 'New culture version' in split mode. It must be before setting EditedDocument.
        if ((node == null) && displaySplitMode)
        {
            URLHelper.Redirect("~/CMSModules/Content/CMSDesk/New/NewCultureVersion.aspx" + URLHelper.Url.Query);
        }
        // Set edited document
        EditedDocument = node;

        if (node != null)
        {
            siteid     = node.NodeSiteID;
            documentId = node.DocumentID;
        }

        imgSaveDoc.ImageUrl         = GetImageUrl("CMSModules/CMS_Content/EditMenu/save.png");
        imgSaveDoc.DisabledImageUrl = GetImageUrl("CMSModules/CMS_Content/EditMenu/savedisabled.png");
        mSaveDoc = GetString("general.save");

        pnlInherits.GroupingText = GetString("PageProperties.InheritLevels");

        ltlScript.Text = "";
        string initScript = null;

        hasDesign = currentUser.IsAuthorizedPerResource("CMS.Design", "Design");
        if (hasDesign)
        {
            btnEditTemplateProperties.Attributes.Add("onclick", "modalDialog('" + ResolveUrl("~/CMSModules/PortalEngine/UI/PageTemplates/PageTemplate_Edit.aspx") + "?templateid=' + document.getElementById('SelectedTemplateId').value + '&dialog=1', 'TemplateSelection', 850, 680);return false;");

            bool allowEditShared = currentUser.IsAuthorizedPerUIElement("CMS.Content", "Template.ModifySharedTemplates");

            // Define GetCurrentTemplateId() used for specifing teplateId in the SaveAsNewTemplate onClick handler
            initScript =
                @"
var allowEditShared = " + allowEditShared.ToString().ToLower() + @";

function GetCurrentTemplateId() {
    if (document.getElementById('SelectedTemplateId').value > 0) { 
        return document.getElementById('SelectedTemplateId').value;
    } else { 
        return document.getElementById('InheritedTemplateId').value;
    }
};"
            ;

            ltlPreInitScript.Text = ScriptHelper.GetScript(initScript);

            btnSelect.Text = GetString("PageProperties.Select");
            btnSelect.Attributes.Add("onclick", "modalDialog('" + ResolveUrl(PORTALENGINE_UI_LAYOUTPATH + "PageTemplateSelector.aspx") + "?documentid=" + documentId + "', 'PageTemplateSelection', '90%', '85%'); return false;");

            // Register the dialog script
            ScriptHelper.RegisterDialogScript(this);

            ltlElemScript.Text += ScriptHelper.GetScript(
                @"
var cloneElem = document.getElementById('" + btnClone.ClientID + @"');
if (cloneElem != null) var cloneElemStyle = (cloneElem.style != null) ? cloneElem.style : cloneElem;
var inheritElem = document.getElementById('" + btnInherit.ClientID + @"');
if (inheritElem != null) var inheritElemStyle = (inheritElem.style != null) ? inheritElem.style : inheritElem;
var saveElem = document.getElementById('" + btnSave.ClientID + @"');
if (saveElem != null) var saveElemStyle = (saveElem.style != null) ? saveElem.style : saveElem;
var editTemplatePropertiesElem = document.getElementById('" + btnEditTemplateProperties.ClientID + @"');
if (editTemplatePropertiesElem != null) var editTemplatePropertiesElemStyle = (editTemplatePropertiesElem.style != null) ? editTemplatePropertiesElem.style : editTemplatePropertiesElem;
"
                );

            txtTemplate.Text = ValidationHelper.GetString(Request.Params["txtTemplate"], "");

            pnlActions.GroupingText = GetString("PageProperties.Template");

            mClone   = GetString("PageProperties.Clone");
            mSave    = GetString("PageProperties.Save");
            mInherit = GetString("PageProperties.Inherit");
            mEditTemplateProperties = GetString("PageProperties.EditTemplateProperties");

            imgClone.ImageUrl   = GetImageUrl("CMSModules/CMS_Content/Template/clone.png");
            imgInherit.ImageUrl = GetImageUrl("CMSModules/CMS_Content/Template/inherit.png");
            imgSave.ImageUrl    = GetImageUrl("CMSModules/CMS_Content/Template/save.png");
            imgEditTemplateProperties.ImageUrl         = GetImageUrl("CMSModules/CMS_Content/Template/edit.png");
            imgClone.DisabledImageUrl                  = GetImageUrl("CMSModules/CMS_Content/Template/clonedisabled.png");
            imgInherit.DisabledImageUrl                = GetImageUrl("CMSModules/CMS_Content/Template/inheritdisabled.png");
            imgSave.DisabledImageUrl                   = GetImageUrl("CMSModules/CMS_Content/Template/savedisabled.png");
            imgEditTemplateProperties.DisabledImageUrl = GetImageUrl("CMSModules/CMS_Content/Template/editdisabled.png");
        }
        else
        {
            RedirectToUINotAvailable();
        }

        if (!RequestHelper.IsPostBack())
        {
            ReloadData();

            // Modal dialog for save
            btnSaveOnClickScript = "modalDialog('" + ResolveUrl(PORTALENGINE_UI_LAYOUTPATH + "SaveNewPageTemplate.aspx") + "?templateId=' + GetCurrentTemplateId() + '&siteid=" + siteid + "', 'SaveNewTemplate', 480, 360);return false;";

            if (node != null)
            {
                if (node.NodeAliasPath != "/")
                {
                    inheritElem.Value = node.NodeInheritPageLevels;
                    // Try get info whether exist linked document in path
                    DataSet ds = tree.SelectNodes(CMSContext.CurrentSiteName, "/%", node.DocumentCulture, false, null, "NodeLinkedNodeID IS NOT NULL AND (N'" + SqlHelperClass.GetSafeQueryString(node.NodeAliasPath) + "' LIKE NodeAliasPath + '%')", null, -1, false, 1, "Count(*) AS NumOfDocs");
                    // If node is not link or none of parent documents is not linked document use document name path
                    if (!node.IsLink && ValidationHelper.GetInteger(DataHelper.GetDataRowValue(ds.Tables[0].Rows[0], "NumOfDocs"), 0) == 0)
                    {
                        inheritElem.TreePath = TreePathUtils.GetParentPath("/" + node.DocumentNamePath);
                    }
                    // otherwise use alias path
                    else
                    {
                        inheritElem.TreePath = TreePathUtils.GetParentPath("/" + node.NodeAliasPath);
                    }
                }
                else
                {
                    pnlInherits.Visible = false;
                }
            }
        }
        else if (hasDesign)
        {
            initScript =
                "document.getElementById('SelectedTemplateId').value = " + ValidationHelper.GetInteger(Request.Params["SelectedTemplateId"], 0) + "; \n " +
                "document.getElementById('InheritedTemplateId').value = " + ValidationHelper.GetInteger(Request.Params["InheritedTemplateId"], 0) + "; \n " +
                "document.getElementById('Saved').value = " + ValidationHelper.GetBoolean(Request.Params["Saved"], false).ToString().ToLower() + "; \n" +
                "document.getElementById('TemplateDisplayName').value = '" + ValidationHelper.GetString(Request.Params["TemplateDisplayName"], "") + "'; \n " +
                "document.getElementById('TemplateDescription').value = '" + ValidationHelper.GetString(Request.Params["TemplateDescription"], "") + "'; \n " +
                "document.getElementById('TemplateCategory').value = '" + ValidationHelper.GetString(Request.Params["TemplateCategory"], "") + "'; \n " +
                "document.getElementById('isPortal').value = " + ValidationHelper.GetBoolean(Request.Params["isPortal"], false).ToString().ToLower() + "; \n " +
                "document.getElementById('isReusable').value = " + ValidationHelper.GetBoolean(Request.Params["isReusable"], false).ToString().ToLower() + "; \n " +
                "document.getElementById('isAdHoc').value = " + ValidationHelper.GetBoolean(Request.Params["isAdHoc"], false).ToString().ToLower() + "; \n ";

            string textTemplate = ValidationHelper.GetString(Request.Params["txtTemplate"], "");
            if (textTemplate == "")
            {
                textTemplate = ValidationHelper.GetString(Request.Params["TextTemplate"], "");
            }
            initScript += "document.getElementById('TextTemplate').value = " + ScriptHelper.GetString(textTemplate) + "; \n ";

            ltlInitScript.Text = ScriptHelper.GetScript(initScript);
            ltlScript.Text    += ScriptHelper.GetScript("ShowButtons(document.getElementById('isPortal').value, document.getElementById('isReusable').value, document.getElementById('isAdHoc').value); \n");

            ltlScript.Text  += ScriptHelper.GetScript("if (document.getElementById('SelectedTemplateId').value == 0) { if (inheritElemStyle != null) inheritElemStyle.display = 'none'; if (editTemplatePropertiesElemStyle != null) editTemplatePropertiesElemStyle.display = 'none'; }");
            txtTemplate.Text = textTemplate;

            btnSaveOnClickScript = "modalDialog('" + ResolveUrl(PORTALENGINE_UI_LAYOUTPATH + "SaveNewPageTemplate.aspx") + "?templateId=' + GetCurrentTemplateId() + '&siteid=" + siteid + "', 'SaveNewTemplate', 480, 360);return false;";
        }

        // Javascript function for updating template name
        string updateTemplateName = ScriptHelper.GetScript(@"function SetTemplateName(templateName) {
        var txtTemplate = document.getElementById('" + txtTemplate.ClientID + "'); txtTemplate.value = templateName;}");

        ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "SetTemplateName", updateTemplateName);
    }
 private string GetTreePath()
 {
     return(TreePathUtils.GetParentPath($"/{Node.NodeAliasPath}"));
 }