Esempio n. 1
0
    protected void DocumentManager_OnAfterAction(object sender, DocumentManagerEventArgs e)
    {
        TreeNode node = e.Node;

        int newNodeId = node.NodeID;

        if (newdocument || newculture)
        {
            // Store error text
            if (!string.IsNullOrEmpty(formElem.MessagesPlaceHolder.ErrorText))
            {
                SessionHelper.SetValue("FormErrorText|" + newNodeId, formElem.MessagesPlaceHolder.ErrorText);
            }

            var pti = PageTemplateInfoProvider.GetPageTemplateInfo(node.NodeTemplateID);
            if ((pti != null) && !pti.IsReusable)
            {
                // Update node guid and display name when new document selected template is ad-hoc
                pti.PageTemplateNodeGUID = node.NodeGUID;
                pti.DisplayName          = "Ad-hoc: " + node.DocumentName;

                PageTemplateInfoProvider.SetPageTemplateInfo(pti);
            }
        }
        else
        {
            // Reload the values in the form
            formElem.LoadControlValues();
        }
    }
Esempio n. 2
0
    /// <summary>
    /// Clone button event handler
    /// </summary>
    protected void btnClone_Click(object sender, EventArgs e)
    {
        if ((pti != null) && hasModifyPermission)
        {
            TreeNode node = Node;

            // Clone the info
            string docName     = node.GetDocumentName();
            string displayName = "Ad-hoc: " + docName;

            PageTemplateInfo newInfo = PageTemplateInfoProvider.CloneTemplateAsAdHoc(pti, displayName, SiteContext.CurrentSiteID, node.NodeGUID);

            newInfo.Description = String.Format(GetString("PageTemplate.AdHocDescription"), Node.DocumentNamePath);
            PageTemplateInfoProvider.SetPageTemplateInfo(newInfo);

            // Assign the selected template for all cultures and save
            SelectedTemplateID = newInfo.PageTemplateId;

            if (radInherit.Checked)
            {
                radAllCultures.Checked = true;
                radInherit.Checked     = false;
            }

            DocumentManager.SaveDocument();
        }
    }
    /// <summary>
    /// Handle btnOK's OnClick event.
    /// </summary>
    protected void ObjectManager_OnSaveData(object sender, SimpleObjectManagerEventArgs e)
    {
        string errorMessage = "";

        // Get PageTemplateInfo.
        pti = PageTemplateInfoProvider.GetPageTemplateInfo(templateId);
        if (pti != null)
        {
            // Update WebParts configuration in PageTemplate.
            try
            {
                pti.WebParts = txtWebParts.Text;
                PageTemplateInfoProvider.SetPageTemplateInfo(pti);
                ShowChangesSaved();

                // Update textbox value
                txtWebParts.Text = HTMLHelper.ReformatHTML(pti.WebParts, "  ");
            }
            catch (UnauthorizedAccessException ex)
            {
                errorMessage = ResHelper.GetStringFormat("general.sourcecontrolerror", ex.Message);
            }
            catch (Exception ex)
            {
                errorMessage = ex.Message;
            }

            // Show error message
            if (!String.IsNullOrEmpty(errorMessage))
            {
                ShowError(errorMessage);
            }
        }
    }
Esempio n. 4
0
    /// <summary>
    /// Creates page template. Called when the "Create template" button is pressed.
    /// </summary>
    private bool CreatePageTemplate()
    {
        // Get the page template category
        PageTemplateCategoryInfo category = PageTemplateCategoryInfoProvider.GetPageTemplateCategoryInfo("MyNewCategory");

        if (category != null)
        {
            // Create new page template object
            PageTemplateInfo newTemplate = new PageTemplateInfo();

            // Set the properties
            newTemplate.DisplayName          = "My new template";
            newTemplate.CodeName             = "MyNewTemplate";
            newTemplate.Description          = "This is page template created by API Example";
            newTemplate.PageTemplateSiteID   = CMSContext.CurrentSiteID;
            newTemplate.FileName             = " ";
            newTemplate.ShowAsMasterTemplate = false;
            newTemplate.IsPortal             = true;
            newTemplate.InheritPageLevels    = ""; // inherits all
            newTemplate.IsReusable           = true;
            newTemplate.CategoryID           = category.CategoryId;


            // Save the page template
            PageTemplateInfoProvider.SetPageTemplateInfo(newTemplate);

            return(true);
        }

        return(false);
    }
Esempio n. 5
0
    /// <summary>
    /// Gets and bulk updates page templates. Called when the "Get and bulk update templates" button is pressed.
    /// Expects the CreatePageTemplate method to be run first.
    /// </summary>
    private bool GetAndBulkUpdatePageTemplates()
    {
        // Prepare the parameters
        string where = "PageTemplateCodeName LIKE N'MyNewTemplate%'";

        // Get the data
        DataSet templates = PageTemplateInfoProvider.GetTemplates(where, null);

        if (!DataHelper.DataSourceIsEmpty(templates))
        {
            // Loop through the individual items
            foreach (DataRow templateDr in templates.Tables[0].Rows)
            {
                // Create object from DataRow
                PageTemplateInfo modifyTemplate = new PageTemplateInfo(templateDr);

                // Update the properties
                modifyTemplate.DisplayName = modifyTemplate.DisplayName.ToUpper();

                // Save the changes
                PageTemplateInfoProvider.SetPageTemplateInfo(modifyTemplate);
            }

            return(true);
        }

        return(false);
    }
Esempio n. 6
0
    /// <summary>
    /// Handle btnOK's OnClick event.
    /// </summary>
    protected void btnOK_Click(object sender, EventArgs e)
    {
        string errorMessage = "";

        // Get PageTemplateInfo.
        PageTemplateInfo pti = PageTemplateInfoProvider.GetPageTemplateInfo(templateId);

        if (pti != null)
        {
            // Update WebParts configuration in PageTemplate.
            try
            {
                pti.WebParts = txtWebParts.Text;
                PageTemplateInfoProvider.SetPageTemplateInfo(pti);
                lblInfo.Text    = GetString("General.ChangesSaved");
                lblInfo.Visible = true;

                // Update textbox value
                txtWebParts.Text = HTMLHelper.ReformatHTML(pti.WebParts, "  ");
            }
            catch (Exception ex)
            {
                errorMessage = ex.Message;
            }

            // Show error message
            if (errorMessage != "")
            {
                lblError.Text    = errorMessage;
                lblError.Visible = true;
            }
        }
    }
Esempio n. 7
0
    /// <summary>
    /// Creates page template scope. Called when the "Create scope" button is pressed.
    /// </summary>
    private bool CreatePageTemplateScope()
    {
        // Get template object
        PageTemplateInfo template = PageTemplateInfoProvider.GetPageTemplateInfo("MyNewTemplate");

        // If template exists
        if (template != null)
        {
            // Page template isn't from all pages
            template.PageTemplateForAllPages = false;

            // Create new template scope
            PageTemplateScopeInfo newScope = new PageTemplateScopeInfo();

            // Set some properties
            newScope.PageTemplateScopeTemplateID = template.PageTemplateId;
            newScope.PageTemplateScopeSiteID     = CMSContext.CurrentSiteID;
            newScope.PageTemplateScopePath       = "/";
            newScope.PageTemplateScopeLevels     = "/{0}/{1}";

            // Save scope to database
            PageTemplateScopeInfoProvider.SetPageTemplateScopeInfo(newScope);

            // Update page template
            PageTemplateInfoProvider.SetPageTemplateInfo(template);

            return(true);
        }

        return(false);
    }
 /// <summary>
 /// Saves webpart properties.
 /// </summary>
 public void Save()
 {
     // Update page template
     PageTemplateInfoProvider.SetPageTemplateInfo(pti);
     txtSourceId.Text          = "";
     txtSourceProperty.Text    = "";
     drpProperty.SelectedIndex = 0;
 }
 /// <summary>
 /// Updates PageTemplateForAllPages property of template info.
 /// </summary>
 private void UpdatePageTemplateInfo()
 {
     if (template != null)
     {
         template.PageTemplateForAllPages = radAllPages.Checked;
         PageTemplateInfoProvider.SetPageTemplateInfo(template);
     }
 }
    protected void DocumentManager_OnSaveData(object sender, DocumentManagerEventArgs e)
    {
        e.UpdateDocument = false;

        string errorMessage = null;
        string newPageName  = txtPageName.Text.Trim();

        if (!String.IsNullOrEmpty(newPageName))
        {
            // Limit length
            newPageName = TreePathUtils.EnsureMaxNodeNameLength(newPageName, pageClassName);
        }

        TreeNode node = e.Node;

        node.DocumentName = newPageName;

        bool updateGuidAfterInsert = false;

        // Same template for all language versions by default
        PageTemplateInfo pti = selTemplate.EnsureTemplate(node.DocumentName, node.NodeGUID, ref errorMessage);

        if (pti != null)
        {
            node.SetDefaultPageTemplateID(pti.PageTemplateId);

            // Template should by updated after document insert
            if (!pti.IsReusable)
            {
                updateGuidAfterInsert = true;
            }
        }

        // Insert node if no error
        if (String.IsNullOrEmpty(errorMessage))
        {
            // Insert the document
            // Ensures documents consistency (blog post hierarchy etc.)
            DocumentManager.EnsureDocumentsConsistency();
            DocumentHelper.InsertDocument(node, DocumentManager.ParentNode, DocumentManager.Tree);

            if (updateGuidAfterInsert)
            {
                PageTemplateInfo pageTemplateInfo = PageTemplateInfoProvider.GetPageTemplateInfo(node.NodeTemplateID);
                if (pageTemplateInfo != null)
                {
                    // Update template's node GUID
                    pageTemplateInfo.PageTemplateNodeGUID = node.NodeGUID;
                    PageTemplateInfoProvider.SetPageTemplateInfo(pageTemplateInfo);
                }
            }
        }
        else
        {
            e.IsValid      = false;
            e.ErrorMessage = errorMessage;
        }
    }
Esempio n. 11
0
    protected void btnOK_Click(object sender, EventArgs e)
    {
        if (pt != null)
        {
            // Limit text length
            txtTemplateCodeName.Text    = TextHelper.LimitLength(txtTemplateCodeName.Text.Trim(), 100, "");
            txtTemplateDisplayName.Text = TextHelper.LimitLength(txtTemplateDisplayName.Text.Trim(), 200, "");

            // finds whether required fields are not empty
            string result = new Validator().NotEmpty(txtTemplateDisplayName.Text, GetString("Administration-PageTemplate_General.ErrorEmptyTemplateDisplayName")).NotEmpty(txtTemplateCodeName.Text, GetString("Administration-PageTemplate_General.ErrorEmptyTemplateCodeName"))
                            .IsCodeName(txtTemplateCodeName.Text, GetString("general.invalidcodename"))
                            .Result;

            if (String.IsNullOrEmpty(result))
            {
                // Check if template with given name already exists
                if (PageTemplateInfoProvider.PageTemplateNameExists(txtTemplateCodeName.Text))
                {
                    lblError.Text = GetString("general.codenameexists");
                    return;
                }

                if (pt.IsReusable == true)
                {
                    // Clone template with clear
                    pt = pt.Clone(true);
                }
                pt.CodeName    = txtTemplateCodeName.Text;
                pt.DisplayName = txtTemplateDisplayName.Text;
                pt.Description = txtTemplateDescription.Text;

                pt.CategoryID = Convert.ToInt32(categorySelector.Value);

                pt.IsReusable         = true;
                pt.PageTemplateSiteID = 0;
                try
                {
                    PageTemplateInfoProvider.SetPageTemplateInfo(pt);
                    int siteId = QueryHelper.GetInteger("siteid", 0);
                    if (siteId > 0)
                    {
                        PageTemplateInfoProvider.AddPageTemplateToSite(pt.PageTemplateId, siteId);
                    }
                    ltlScript.Text = ScriptHelper.GetScript("SelectActualData(" + pt.PageTemplateId.ToString() + ", " + pt.IsPortal.ToString().ToLower() + ", " + pt.IsReusable.ToString().ToLower() + ");");
                }
                catch (Exception ex)
                {
                    lblError.Text = ex.Message;
                }
            }
            else
            {
                lblError.Visible = true;
                lblError.Text    = result;
            }
        }
    }
    protected void btnOK_Click(object sender, EventArgs e)
    {
        // Limit text length
        txtTemplateCodeName.Text    = TextHelper.LimitLength(txtTemplateCodeName.Text.Trim(), 100, "");
        txtTemplateDisplayName.Text = TextHelper.LimitLength(txtTemplateDisplayName.Text.Trim(), 200, "");

        // finds whether required fields are not empty
        string result = new Validator().NotEmpty(txtTemplateDisplayName.Text, GetString("Administration-PageTemplate_General.ErrorEmptyTemplateDisplayName")).NotEmpty(txtTemplateCodeName.Text, GetString("Administration-PageTemplate_General.ErrorEmptyTemplateCodeName"))
                        .IsCodeName(txtTemplateCodeName.Text, GetString("general.invalidcodename"))
                        .Result;

        if (result == "")
        {
            if (parentCategoryId > 0)
            {
                if (!PageTemplateInfoProvider.PageTemplateNameExists(txtTemplateCodeName.Text))
                {
                    //Insert page template info
                    PageTemplateInfo pi = new PageTemplateInfo();

                    pi.PageTemplateType = PageTemplateTypeEnum.Portal;
                    pi.DisplayName      = txtTemplateDisplayName.Text;
                    pi.CodeName         = txtTemplateCodeName.Text;
                    pi.IsPortal         = true;
                    pi.FileName         = "";
                    pi.WebParts         = "";
                    pi.Description      = txtTemplateDescription.Text;
                    pi.CategoryID       = parentCategoryId;
                    pi.IsReusable       = true; //set default value for isReusable

                    PageTemplateInfoProvider.SetPageTemplateInfo(pi);

                    EditedObject = pi;
                    CMSObjectManager.CheckOutNewObject(this.Page);

                    string script = "parent.frames['pt_tree'].location.href = 'PageTemplate_Tree.aspx?templateid=" + pi.PageTemplateId + "';";
                    script         += "this.location.href = 'PageTemplate_Edit.aspx?templateid=" + pi.PageTemplateId + "';";
                    ltlScript.Text += ScriptHelper.GetScript(script);
                }
                else
                {
                    ShowError(GetString("Administration-PageTemplate_New.TemplateExistsAlready"));
                }
            }
            else
            {
                ShowError(GetString("Administration-PageTemplate_New.NoParentIdGiven"));
            }
        }
        else
        {
            rfvTemplateDisplayName.Visible = false;
            rfvTemplateCodeName.Visible    = false;
            ShowError(result);
        }
    }
Esempio n. 13
0
    /// <summary>
    /// Check in event handler.
    /// </summary>
    protected void btnCheckIn_Click(object sender, EventArgs e)
    {
        LayoutInfo       li  = this.PagePlaceholder.LayoutInfo;
        PageTemplateInfo pti = this.PagePlaceholder.PageTemplateInfo;

        if ((li != null) || (pti != null))
        {
            string filename    = "";
            string tmpFileName = "";

            if (li != null)
            {
                tmpFileName = li.LayoutCheckedOutFilename;
            }
            else
            {
                tmpFileName = pti.PageTemplateLayoutCheckedOutFileName;
            }

            if (HttpContext.Current != null)
            {
                filename = HttpContext.Current.Server.MapPath(tmpFileName);
            }
            StreamReader sr = StreamReader.New(filename);

            // Read away the directive lines
            int skiplines = LayoutInfoProvider.GetLayoutDirectives().Split('\n').Length - 1;
            for (int i = 0; i < skiplines; i++)
            {
                sr.ReadLine();
            }

            string newcode = sr.ReadToEnd();
            sr.Close();
            File.Delete(filename);

            if (li != null)
            {
                li.LayoutCheckedOutByUserID    = 0;
                li.LayoutCheckedOutFilename    = "";
                li.LayoutCheckedOutMachineName = "";
                li.LayoutCode = newcode;
                LayoutInfoProvider.SetLayoutInfo(li);
            }
            else
            {
                pti.PageTemplateLayoutCheckedOutByUserID    = 0;
                pti.PageTemplateLayoutCheckedOutFileName    = "";
                pti.PageTemplateLayoutCheckedOutMachineName = "";
                pti.PageTemplateLayout = newcode;
                PageTemplateInfoProvider.SetPageTemplateInfo(pti);
            }

            txtLayout.Text = newcode;
        }
    }
Esempio n. 14
0
    /// <summary>
    /// Updates PageTemplateForAllPages property of template info.
    /// </summary>
    private void UpdatePageTemplateInfo()
    {
        if (PageTemplate != null)
        {
            PageTemplate.PageTemplateForAllPages = radAllPages.Checked;
            PageTemplateInfoProvider.SetPageTemplateInfo(PageTemplate);
        }

        ShowChangesSaved();
    }
Esempio n. 15
0
    protected void btnClone_Click(object sender, EventArgs e)
    {
        int pageTemplateId = ValidationHelper.GetInteger(Request.Params["SelectedTemplateId"], 0);

        if (pageTemplateId == 0)
        {
            pageTemplateId = ValidationHelper.GetInteger(Request.Params["InheritedTemplateId"], 0);
        }

        if (pageTemplateId > 0)
        {
            PageTemplateInfo pt = PageTemplateInfoProvider.GetPageTemplateInfo(pageTemplateId);
            if (pt != null)
            {
                // Clone the info
                string docName = node.DocumentName;
                if (docName == "")
                {
                    docName = "/";
                }

                string displayName = "Ad-hoc: " + docName;

                PageTemplateInfo newInfo = PageTemplateInfoProvider.CloneTemplateAsAdHoc(pt, displayName, CMSContext.CurrentSite.SiteID);

                newInfo.Description = String.Format(GetString("PageTemplate.AdHocDescription"), node.DocumentNamePath);
                PageTemplateInfoProvider.SetPageTemplateInfo(newInfo);

                // Save the MVT/Content personalization variants of this page template
                if (LicenseHelper.CheckFeature(URLHelper.GetCurrentDomain(), FeatureEnum.MVTesting))
                {
                    ModuleCommands.OnlineMarketingCloneTemplateMVTVariants(pageTemplateId, newInfo.PageTemplateId);
                }
                if (LicenseHelper.CheckFeature(URLHelper.GetCurrentDomain(), FeatureEnum.ContentPersonalization))
                {
                    ModuleCommands.OnlineMarketingCloneTemplateContentPersonalizationVariants(pageTemplateId, newInfo.PageTemplateId);
                }

                ltlScript.Text      += ScriptHelper.GetScript("pressedClone(" + newInfo.PageTemplateId + "); ShowButtons(" + pt.IsPortal.ToString().ToLower() + ", " + pt.IsReusable.ToString().ToLower() + ", true);");
                btnSaveOnClickScript = "modalDialog('" + ResolveUrl(PORTALENGINE_UI_LAYOUTPATH + "SaveNewPageTemplate.aspx") + "?templateid=' + document.getElementById('SelectedTemplateId').value + '&siteid=" + siteid + "', 'SaveNewTemplate', 480, 360);return false;";
                txtTemplate.Text     = newInfo.DisplayName;

                cloneId = newInfo.PageTemplateId;
            }
            btnSave.Visible = true;

            lnkSave_Click(sender, e);
        }
    }
Esempio n. 16
0
    /// <summary>
    /// Sets current layout.
    /// </summary>
    protected void SetCurrentLayout(bool saveToWebPartInstance)
    {
        if ((webPart != null) && (LayoutCodeName != "|new|"))
        {
            if (saveToWebPartInstance)
            {
                if (LayoutCodeName == "|default|")
                {
                    webPart.SetValue("WebPartLayout", "");
                }
                else
                {
                    webPart.SetValue("WebPartLayout", LayoutCodeName);
                }

                bool isWebPartVariant = (variantId > 0) || (zoneVariantId > 0) || isNewVariant;
                if (!isWebPartVariant)
                {
                    // Update page template
                    PageTemplateInfoProvider.SetPageTemplateInfo(pti);
                }
                else
                {
                    // Save the variant properties
                    if ((webPart != null) &&
                        (webPart.ParentZone != null) &&
                        (webPart.ParentZone.ParentTemplateInstance != null) &&
                        (webPart.ParentZone.ParentTemplateInstance.ParentPageTemplate != null))
                    {
                        XmlNode xmlWebParts = (zoneVariantId > 0) ? webPart.ParentZone.GetXmlNode() : webPart.GetXmlNode();

                        VariantHelper.SetVariantWebParts(webPart.VariantMode, (zoneVariantId > 0) ? zoneVariantId : variantId, xmlWebParts);

                        // The variants are cached -> Reload
                        webPart.ParentZone.ParentTemplateInstance.LoadVariants(true, VariantModeEnum.None);
                    }
                }
            }

            string parameters = aliasPath + "/" + zoneId + "/" + webpartId;
            string cacheName  = "CMSVirtualWebParts|" + parameters.ToLowerCSafe().TrimStart('/');

            CacheHelper.Remove(cacheName);
        }
    }
    private void EnsureAdHocTemplate(DocumentManagerEventArgs e)
    {
        var pti = PageTemplateInfoProvider.GetPageTemplateInfo(formElem.DefaultPageTemplateID);

        // Ensure ad-hoc template as default
        if ((pti != null) && pti.IsReusable && pti.PageTemplateCloneAsAdHoc)
        {
            // Create ad-hoc template (display name is created automatically)
            var adHocTemplate = PageTemplateInfoProvider.CloneTemplateAsAdHoc(pti, null, SiteContext.CurrentSiteID, e.Node.NodeGUID);
            PageTemplateInfoProvider.SetPageTemplateInfo(adHocTemplate);
            formElem.DefaultPageTemplateID = adHocTemplate.PageTemplateId;

            if (SiteContext.CurrentSite != null)
            {
                PageTemplateInfoProvider.AddPageTemplateToSite(adHocTemplate.PageTemplateId, SiteContext.CurrentSiteID);
            }
        }
    }
Esempio n. 18
0
    /// <summary>
    /// Gets and updates page template. Called when the "Get and update template" button is pressed.
    /// Expects the CreatePageTemplate method to be run first.
    /// </summary>
    private bool GetAndUpdatePageTemplate()
    {
        // Get the page template
        PageTemplateInfo updateTemplate = PageTemplateInfoProvider.GetPageTemplateInfo("MyNewTemplate");

        if (updateTemplate != null)
        {
            // Update the properties
            updateTemplate.DisplayName = updateTemplate.DisplayName.ToLower();

            // Save the changes
            PageTemplateInfoProvider.SetPageTemplateInfo(updateTemplate);

            return(true);
        }

        return(false);
    }
Esempio n. 19
0
    /// <summary>
    /// Discard check out event handler.
    /// </summary>
    protected void btnUndoCheckOut_Click(object sender, EventArgs e)
    {
        LayoutInfo       li  = this.PagePlaceholder.LayoutInfo;
        PageTemplateInfo pti = this.PagePlaceholder.PageTemplateInfo;

        if ((li != null) || (pti != null))
        {
            string filename    = "";
            string tmpFileName = "";

            if (li != null)
            {
                tmpFileName = li.LayoutCheckedOutFilename;
            }
            else
            {
                tmpFileName = pti.PageTemplateLayoutCheckedOutFileName;
            }

            if (HttpContext.Current != null)
            {
                filename = HttpContext.Current.Server.MapPath(tmpFileName);
            }
            if (File.Exists(filename))
            {
                File.Delete(filename);
            }

            if (li != null)
            {
                li.LayoutCheckedOutByUserID    = 0;
                li.LayoutCheckedOutFilename    = "";
                li.LayoutCheckedOutMachineName = "";
                LayoutInfoProvider.SetLayoutInfo(li);
            }
            else
            {
                pti.PageTemplateLayoutCheckedOutByUserID    = 0;
                pti.PageTemplateLayoutCheckedOutFileName    = "";
                pti.PageTemplateLayoutCheckedOutMachineName = "";
                PageTemplateInfoProvider.SetPageTemplateInfo(pti);
            }
        }
    }
    /// <summary>
    /// Clone button event handler
    /// </summary>
    protected void btnClone_Click(object sender, EventArgs e)
    {
        if (pti != null)
        {
            // Clone the info
            string displayName = "Ad-hoc: " + pti.DisplayName;

            PageTemplateInfo newInfo = PageTemplateInfoProvider.CloneTemplateAsAdHoc(pti, displayName, SiteContext.CurrentSiteID, ItemGuid);

            newInfo.Description = String.Format(GetString("uielement.adhocdescription"), ItemName);

            PageTemplateInfoProvider.SetPageTemplateInfo(newInfo);

            PageTemplateID     = newInfo.PageTemplateId;
            plcUIClone.Visible = false;

            // Force save upper control
            Save = true;
        }
    }
Esempio n. 21
0
    /// <summary>
    /// Handles the Click event of the btnOK control.
    /// </summary>
    protected void btnOK_Click(object sender, EventArgs e)
    {
        PageTemplateInfo pti = PageTemplateInfoProvider.GetPageTemplateInfo(templateId);

        if (pti != null)
        {
            pti.PageTemplateHeader = txtTemplateHeader.Text.Trim();
            try
            {
                // Save changes
                PageTemplateInfoProvider.SetPageTemplateInfo(pti);
                lblInfo.Text    = GetString("General.ChangesSaved");
                lblInfo.Visible = true;
            }
            catch (Exception ex)
            {
                lblError.Text    = ex.Message;
                lblError.Visible = true;
            }
        }
    }
Esempio n. 22
0
    /// <summary>
    /// Clone button event handler
    /// </summary>
    protected void btnClone_Click(object sender, EventArgs e)
    {
        if ((pti != null) && hasModifyPermission)
        {
            int templateId = pti.PageTemplateId;

            TreeNode node = Node;

            // Clone the info
            string docName     = node.GetDocumentName();
            string displayName = "Ad-hoc: " + docName;

            PageTemplateInfo newInfo = PageTemplateInfoProvider.CloneTemplateAsAdHoc(pti, displayName, CMSContext.CurrentSiteID, node.NodeGUID);

            newInfo.Description = String.Format(GetString("PageTemplate.AdHocDescription"), Node.DocumentNamePath);
            PageTemplateInfoProvider.SetPageTemplateInfo(newInfo);

            // Save the MVT/Content personalization variants of this page template
            if (LicenseHelper.CheckFeature(URLHelper.GetCurrentDomain(), FeatureEnum.MVTesting))
            {
                ModuleCommands.OnlineMarketingCloneTemplateMVTVariants(templateId, newInfo.PageTemplateId);
            }
            if (LicenseHelper.CheckFeature(URLHelper.GetCurrentDomain(), FeatureEnum.ContentPersonalization))
            {
                ModuleCommands.OnlineMarketingCloneTemplateContentPersonalizationVariants(templateId, newInfo.PageTemplateId);
            }

            // Assign the selected template for all cultures and save
            SelectedTemplateID = newInfo.PageTemplateId;

            if (radInherit.Checked)
            {
                radAllCultures.Checked = true;
                radInherit.Checked     = false;
            }

            DocumentManager.SaveDocument();
        }
    }
Esempio n. 23
0
    /// <summary>
    /// Save layout.
    /// </summary>
    public bool SaveLayout()
    {
        PageTemplateInfo pti = PageTemplateInfoProvider.GetPageTemplateInfo(templateId);

        if (pti != null)
        {
            if (radShared.Checked)
            {
                // Shared layout
                pnlCheckOutInfo.Visible = false;
                pti.LayoutID            = ValidationHelper.GetInteger(selectShared.Value, 0);
                pti.PageTemplateLayout  = "";
                pti.PageTemplateCSS     = "";
            }
            else
            {
                LayoutTypeEnum layoutType = LayoutInfoProvider.GetLayoutTypeEnum(this.drpType.SelectedValue);

                if ((layoutType != LayoutTypeEnum.Ascx) || user.IsAuthorizedPerResource("CMS.Design", "EditCode"))
                {
                    // Custom layout
                    pnlCheckOutInfo.Visible    = true;
                    pti.LayoutID               = 0;
                    pti.PageTemplateLayoutType = layoutType;
                    pti.PageTemplateLayout     = txtCustom.Text;
                    pti.PageTemplateCSS        = txtCustomCSS.Text;
                }
            }

            PageTemplateInfoProvider.SetPageTemplateInfo(pti);

            lblInfo.Visible = true;
            lblInfo.Text    = GetString("General.ChangesSaved");

            return(true);
        }

        return(false);
    }
Esempio n. 24
0
    protected void ObjectManager_OnSaveData(object sender, SimpleObjectManagerEventArgs e)
    {
        if (PageTemplate != null)
        {
            PageTemplate.PageTemplateHeader              = txtTemplateHeader.Text.Trim();
            PageTemplate.PageTemplateAllowInheritHeader  = chkAllowInherit.Checked;
            PageTemplate.PageTemplateInheritParentHeader = chkInheritParent.Checked;

            try
            {
                // Save changes
                PageTemplateInfoProvider.SetPageTemplateInfo(PageTemplate);
                ShowChangesSaved();
            }
            catch (UnauthorizedAccessException ex)
            {
                ShowError(ResHelper.GetStringFormat("general.sourcecontrolerror", ex.Message));
            }
            catch (Exception ex)
            {
                ShowError(ex.Message);
            }
        }
    }
Esempio n. 25
0
    protected void btnOK_Click(object sender, EventArgs e)
    {
        if (pt != null)
        {
            // Limit text length
            txtTemplateDisplayName.Text = TextHelper.LimitLength(txtTemplateDisplayName.Text.Trim(), 200, "");

            // finds whether required fields are not empty
            string result = new Validator()
                            .NotEmpty(txtTemplateDisplayName.Text, GetString("Administration-PageTemplate_General.ErrorEmptyTemplateDisplayName"))
                            .NotEmpty(txtTemplateCodeName.Text, GetString("Administration-PageTemplate_General.ErrorEmptyTemplateCodeName"))
                            .IsCodeName(txtTemplateCodeName.Text, GetString("general.invalidcodename"))
                            .Result;

            if (String.IsNullOrEmpty(result))
            {
                // Check if template with given name already exists
                if (PageTemplateInfoProvider.PageTemplateNameExists(txtTemplateCodeName.Text))
                {
                    ShowError(GetString("general.codenameexists"));
                }

                bool templateCloned      = false;
                var  reusableOrInherited = pt.IsReusable || QueryHelper.GetBoolean("inherits", false);

                // Clone template when page template is reusable or inherited from the parent page or template shouldn't be assigned to the current page
                // Do not clone template when page template is ad-hoc and new template should be assigned to the current page
                if (reusableOrInherited || !chkKeep.Checked)
                {
                    // Clone template with clear
                    pt             = pt.Clone(true);
                    templateCloned = true;
                }

                // Moving an ad-hoc template to a reusable template
                if (!pt.IsReusable)
                {
                    // Transfer template layout from file system to the database object to ensure that the new layout file (created afterwards) will contain the correct content
                    pt.PageTemplateLayout = pt.PageTemplateLayout;
                }

                pt.CodeName    = txtTemplateCodeName.Text;
                pt.DisplayName = txtTemplateDisplayName.Text;
                pt.Description = txtTemplateDescription.Text;

                pt.CategoryID = Convert.ToInt32(categorySelector.Value);

                // Reset the Ad-hoc status
                pt.IsReusable           = true;
                pt.PageTemplateNodeGUID = Guid.Empty;

                pt.PageTemplateSiteID = 0;

                if (templateCloned)
                {
                    // After all properties were set, reset object original values in order to behave as a new object. This ensures that a new layout file is created and the original one is not deleted.
                    pt.ResetChanges();
                }

                try
                {
                    PageTemplateInfoProvider.SetPageTemplateInfo(pt);
                    int siteId = QueryHelper.GetInteger("siteid", 0);
                    if (siteId > 0)
                    {
                        PageTemplateInfoProvider.AddPageTemplateToSite(pt.PageTemplateId, siteId);
                    }

                    if (!chkKeep.Checked)
                    {
                        ShowInformation(GetString("PortalEngine.SaveNewPageTemplate.Saved"));

                        txtTemplateCodeName.Text = pt.CodeName;

                        pnlContent.Enabled = false;
                        btnOk.Visible      = false;
                    }
                    else
                    {
                        var documentId = QueryHelper.GetInteger("documentId", 0);
                        if (reusableOrInherited && (documentId > 0))
                        {
                            // Assign the new page template to the current document
                            AssignNewTemplateToDocument(documentId, pt.PageTemplateId);
                        }

                        RegisterPageTemplateSavedScript();
                    }
                }
                catch (Exception ex)
                {
                    ShowError(ex.Message);
                }
            }
            else
            {
                ShowError(result);
            }
        }
    }
Esempio n. 26
0
    protected void DocumentManager_OnSaveData(object sender, DocumentManagerEventArgs e)
    {
        e.UpdateDocument = false;

        string errorMessage = null;
        string newPageName  = txtPageName.Text.Trim();

        if (!String.IsNullOrEmpty(newPageName))
        {
            // Limit length
            newPageName = TreePathUtils.EnsureMaxNodeNameLength(newPageName, pageClassName);
        }

        TreeNode node = e.Node;

        node.DocumentName = newPageName;

        bool updateGuidAfterInsert = false;

        // Same template for all language versions by default
        PageTemplateInfo pti = selTemplate.EnsureTemplate(node.DocumentName, node.NodeGUID, ref errorMessage);

        if (pti != null)
        {
            node.SetDefaultPageTemplateID(pti.PageTemplateId);

            // Template should by updated after document insert
            if (!pti.IsReusable)
            {
                updateGuidAfterInsert = true;
            }
        }

        // Insert node if no error
        if (String.IsNullOrEmpty(errorMessage))
        {
            // Insert the document
            // Ensures documents consistency (blog post hierarchy etc.)
            DocumentManager.EnsureDocumentsConsistency();
            DocumentHelper.InsertDocument(node, DocumentManager.ParentNode, DocumentManager.Tree);

            if (updateGuidAfterInsert)
            {
                PageTemplateInfo pageTemplateInfo = PageTemplateInfoProvider.GetPageTemplateInfo(node.NodeTemplateID);
                if (pageTemplateInfo != null)
                {
                    // Update template's node GUID
                    pageTemplateInfo.PageTemplateNodeGUID = node.NodeGUID;
                    PageTemplateInfoProvider.SetPageTemplateInfo(pageTemplateInfo);
                }
            }

            // Create default SKU if configured
            if (ModuleManager.CheckModuleLicense(ModuleName.ECOMMERCE, RequestContext.CurrentDomain, FeatureEnum.Ecommerce, ObjectActionEnum.Insert))
            {
                bool?skuCreated = node.CreateDefaultSKU();
                if (skuCreated.HasValue && !skuCreated.Value)
                {
                    AddError(GetString("com.CreateDefaultSKU.Error"));
                }
            }

            if (node.NodeSKUID > 0)
            {
                DocumentManager.UpdateDocument(true);
            }
        }
        else
        {
            e.IsValid      = false;
            e.ErrorMessage = errorMessage;
        }
    }
Esempio n. 27
0
    protected void btnOK_Click(object sender, EventArgs e)
    {
        if (pt != null)
        {
            // Limit text length
            txtTemplateDisplayName.Text = TextHelper.LimitLength(txtTemplateDisplayName.Text.Trim(), 200, "");

            // finds whether required fields are not empty
            string result = new Validator()
                            .NotEmpty(txtTemplateDisplayName.Text, GetString("Administration-PageTemplate_General.ErrorEmptyTemplateDisplayName"))
                            .NotEmpty(txtTemplateCodeName.Text, GetString("Administration-PageTemplate_General.ErrorEmptyTemplateCodeName"))
                            .IsCodeName(txtTemplateCodeName.Text, GetString("general.invalidcodename"))
                            .Result;

            if (String.IsNullOrEmpty(result))
            {
                // Check if template with given name already exists
                if (PageTemplateInfoProvider.PageTemplateNameExists(txtTemplateCodeName.Text))
                {
                    ShowError(GetString("general.codenameexists"));
                }

                if (pt.IsReusable || !chkKeep.Checked)
                {
                    // Clone template with clear
                    pt = pt.Clone(true);
                }
                pt.CodeName    = txtTemplateCodeName.Text;
                pt.DisplayName = txtTemplateDisplayName.Text;
                pt.Description = txtTemplateDescription.Text;

                pt.CategoryID = Convert.ToInt32(categorySelector.Value);

                // Reset the Ad-hoc status
                pt.IsReusable           = true;
                pt.PageTemplateNodeGUID = Guid.Empty;

                pt.PageTemplateSiteID = 0;

                try
                {
                    PageTemplateInfoProvider.SetPageTemplateInfo(pt);
                    int siteId = QueryHelper.GetInteger("siteid", 0);
                    if (siteId > 0)
                    {
                        PageTemplateInfoProvider.AddPageTemplateToSite(pt.PageTemplateId, siteId);
                    }

                    if (!chkKeep.Checked)
                    {
                        ShowInformation(GetString("PortalEngine.SaveNewPageTemplate.Saved"));

                        txtTemplateCodeName.Text = pt.CodeName;

                        pnlContent.Enabled = false;
                        btnOk.Visible      = false;
                    }
                    else
                    {
                        string script;

                        bool refresh = QueryHelper.GetBoolean("refresh", false);
                        if (refresh)
                        {
                            script = "wopener.location.replace(wopener.location); CloseDialog();";
                        }
                        else
                        {
                            String selId = QueryHelper.GetString("selectorID", String.Empty);
                            script = "SelectTemplate(" + pt.PageTemplateId + "," + ScriptHelper.GetString(selId) + ");";
                        }

                        ltlScript.Text = ScriptHelper.GetScript(script);
                    }
                }
                catch (Exception ex)
                {
                    ShowError(ex.Message);
                }
            }
            else
            {
                ShowError(result);
            }
        }
    }
Esempio n. 28
0
    protected void btnSave_Click(object sender, EventArgs e)
    {
        if ((nodeId > 0) && (node != null))
        {
            LayoutTypeEnum layoutType = LayoutInfoProvider.GetLayoutTypeEnum(drpType.SelectedValue);

            // Check the permissions
            if ((layoutType != LayoutTypeEnum.Ascx) || user.IsAuthorizedPerResource("CMS.Design", "EditCode"))
            {
                // Update the layout
                if (node.DocumentPageTemplateID > 0)
                {
                    PageTemplateInfo pti = PageTemplateInfoProvider.GetPageTemplateInfo(node.DocumentPageTemplateID);
                    if (pti != null)
                    {
                        // Get shared layout
                        LayoutInfo li = LayoutInfoProvider.GetLayoutInfo(pti.LayoutID);
                        if (li != null)
                        {
                            // Update shared layout
                            li.LayoutCode = txtLayout.Text;
                            li.LayoutType = layoutType;

                            LayoutInfoProvider.SetLayoutInfo(li);
                        }
                        else if (pti.PageTemplateLayoutCheckedOutByUserID <= 0)
                        {
                            // Update custom layout
                            pti.PageTemplateLayout     = txtLayout.Text;
                            pti.PageTemplateLayoutType = layoutType;

                            PageTemplateInfoProvider.SetPageTemplateInfo(pti);
                        }
                    }
                }
            }

            // Update fields
            node.NodeBodyElementAttributes = txtBodyCss.Text;
            node.NodeDocType  = txtDocType.Text;
            node.NodeHeadTags = txtHeadTags.Value.ToString();

            // Update the node
            node.Update();

            // Update search index
            if ((node.PublishedVersionExists) && (SearchIndexInfoProvider.SearchEnabled))
            {
                SearchTaskInfoProvider.CreateTask(SearchTaskTypeEnum.Update, PredefinedObjectType.DOCUMENT, SearchHelper.ID_FIELD, node.GetSearchID());
            }

            // Log synchronization
            DocumentSynchronizationHelper.LogDocumentChange(node, TaskTypeEnum.UpdateDocument, tree);

            lblInfo.Visible = true;
            lblInfo.Text    = GetString("General.ChangesSaved");

            // Clear cache
            PageInfoProvider.RemoveAllPageInfosFromCache();
        }
    }
Esempio n. 29
0
    /// <summary>
    /// Ensures the template from the selection and returns the template ID.
    /// </summary>
    /// <param name="documentName">Document name for the ad-hoc template</param>
    /// <param name="nodeGuid">Owner node GUID in case of ad-hoc template</param>
    /// <param name="errorMessage">Returns the error message</param>
    public PageTemplateInfo EnsureTemplate(string documentName, Guid nodeGuid, ref string errorMessage)
    {
        bool cloneAsAdHoc = false;
        bool masterOnly   = false;

        PageTemplateInfo templateInfo = null;

        // Template selection
        if (radUseTemplate.Checked)
        {
            // Template page
            int templateId = ValidationHelper.GetInteger(templateSelector.SelectedItem, 0);
            if (templateId > 0)
            {
                // Get the template and check if it should be cloned
                templateInfo = PageTemplateInfoProvider.GetPageTemplateInfo(templateId);
                if (templateInfo != null)
                {
                    cloneAsAdHoc = templateInfo.PageTemplateCloneAsAdHoc;
                }
            }
            else
            {
                errorMessage = GetString("NewPage.TemplateError");

                // Reload template selector to show correct subtree
                templateSelector.ResetToDefault();
            }
        }
        else if (radInherit.Checked)
        {
            // Inherited page
        }
        else if (radCreateBlank.Checked || radCreateEmpty.Checked)
        {
            // Create custom template info for the page
            templateInfo = new PageTemplateInfo();

            if (radCreateBlank.Checked)
            {
                // Blank page with layout
                int layoutId = ValidationHelper.GetInteger(layoutSelector.SelectedItem, 0);
                if (layoutId > 0)
                {
                    templateInfo.LayoutID = layoutId;

                    // Copy layout to selected template
                    if (chkLayoutPageTemplate.Checked)
                    {
                        templateInfo.LayoutID = 0;
                        LayoutInfo li = LayoutInfoProvider.GetLayoutInfo(layoutId);
                        if (li != null)
                        {
                            templateInfo.PageTemplateLayout     = li.LayoutCode;
                            templateInfo.PageTemplateLayoutType = li.LayoutType;
                        }
                        else
                        {
                            errorMessage = GetString("NewPage.LayoutError");
                        }
                    }
                }
                else
                {
                    errorMessage = GetString("NewPage.LayoutError");
                }
            }
            else if (radCreateEmpty.Checked)
            {
                // Empty template
                templateInfo.LayoutID           = 0;
                templateInfo.PageTemplateLayout = "<cms:CMSWebPartZone ZoneID=\"zoneA\" runat=\"server\" />";

                templateInfo.PageTemplateLayoutType = LayoutTypeEnum.Ascx;
            }

            if (String.IsNullOrEmpty(errorMessage))
            {
                cloneAsAdHoc = true;
                masterOnly   = true;
            }
        }

        if (cloneAsAdHoc)
        {
            // Prepare ad-hoc template name
            string displayName = "Ad-hoc: " + documentName;

            // Create ad-hoc template
            templateInfo = PageTemplateInfoProvider.CloneTemplateAsAdHoc(templateInfo, displayName, SiteContext.CurrentSiteID, nodeGuid);

            // Set inherit only master
            if (masterOnly)
            {
                templateInfo.InheritPageLevels = "\\";
            }

            PageTemplateInfoProvider.SetPageTemplateInfo(templateInfo);

            if (SiteContext.CurrentSite != null)
            {
                PageTemplateInfoProvider.AddPageTemplateToSite(templateInfo.PageTemplateId, SiteContext.CurrentSiteID);
            }

            CheckOutTemplate(templateInfo);
        }

        // Assign owner node GUID
        if ((templateInfo != null) && !templateInfo.IsReusable)
        {
            templateInfo.PageTemplateNodeGUID = nodeGuid;
        }

        // Reload the template selector in case of error
        if (!String.IsNullOrEmpty(errorMessage))
        {
            if (radUseTemplate.Checked)
            {
                templateSelector.ReloadData();
            }
        }

        return(templateInfo);
    }
Esempio n. 30
0
    protected void DocumentManager_OnSaveData(object sender, DocumentManagerEventArgs e)
    {
        e.UpdateDocument = false;

        string errorMessage = null;
        string newPageName  = txtPageName.Text.Trim();

        if (!String.IsNullOrEmpty(newPageName))
        {
            // Limit length
            newPageName = TreePathUtils.EnsureMaxNodeNameLength(newPageName, pageClassName);
        }

        TreeNode node = e.Node;

        node.DocumentName = newPageName;

        bool updateGuidAfterInsert = false;

        bool wireframe = node.IsWireframe() && PortalHelper.IsWireframingEnabled(SiteContext.CurrentSiteName);

        if (wireframe)
        {
            node.DocumentSearchExcluded = true;

            // Wireframe
            PageTemplateInfo pti = selTemplate.EnsureTemplate(node.DocumentName, node.NodeGUID, ref errorMessage);
            if (pti != null)
            {
                node.NodeWireframeTemplateID = pti.PageTemplateId;
            }
        }
        else
        {
            // Same template for all language versions by default
            PageTemplateInfo pti = selTemplate.EnsureTemplate(node.DocumentName, node.NodeGUID, ref errorMessage);
            if (pti != null)
            {
                node.SetDefaultPageTemplateID(pti.PageTemplateId);

                // Template should by updated after document insert
                if (!pti.IsReusable)
                {
                    updateGuidAfterInsert = true;
                }
            }
        }

        // Insert node if no error
        if (String.IsNullOrEmpty(errorMessage))
        {
            // Switch to design mode (the template is empty at this moment)
            if (!DocumentManager.CreateAnother && (PortalContext.ViewMode != ViewModeEnum.EditLive))
            {
                if (wireframe)
                {
                    // Wireframe mode for wireframes
                    PortalContext.ViewMode = ViewModeEnum.Wireframe;
                }
                else if (selTemplate.NewTemplateIsEmpty)
                {
                    // Design mode for empty template
                    PortalContext.ViewMode = ViewModeEnum.Design;
                }
            }

            // Insert the document
            if (DocumentManager.Mode == FormModeEnum.Convert)
            {
                DocumentManager.UpdateDocument(true);
            }
            else
            {
                // Ensures documents consistency (blog post hierarchy etc.)
                DocumentManager.EnsureDocumentsConsistency();
                DocumentHelper.InsertDocument(node, DocumentManager.ParentNodeID, DocumentManager.Tree);

                if (updateGuidAfterInsert)
                {
                    PageTemplateInfo pti = PageTemplateInfoProvider.GetPageTemplateInfo(node.NodeTemplateID);
                    if (pti != null)
                    {
                        // Update template's node GUID
                        pti.PageTemplateNodeGUID = node.NodeGUID;
                        PageTemplateInfoProvider.SetPageTemplateInfo(pti);
                    }
                }
            }

            // Create default SKU if configured
            if (ModuleManager.CheckModuleLicense(ModuleName.ECOMMERCE, RequestContext.CurrentDomain, FeatureEnum.Ecommerce, ObjectActionEnum.Insert))
            {
                bool?skuCreated = node.CreateDefaultSKU();
                if (skuCreated.HasValue && !skuCreated.Value)
                {
                    AddError(GetString("com.CreateDefaultSKU.Error"));
                }
            }

            if (node.NodeSKUID > 0)
            {
                DocumentManager.UpdateDocument(true);
            }
        }
        else
        {
            e.IsValid      = false;
            e.ErrorMessage = errorMessage;
        }
    }