Esempio n. 1
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();
        }
    }
Esempio n. 2
0
    /// <summary>
    /// Clones template as adhoc from original node.
    /// </summary>
    /// <param name="newNode">New node which will use new adhoc template</param>
    private void CloneTemplateAsAdHoc(TreeNode newNode)
    {
        PageInfo originalPage = PageInfoProvider.GetPageInfo(mNode.NodeSiteName, mNode.NodeAliasPath, mNode.DocumentCulture, null, mNode.NodeID, false);

        if (originalPage == null)
        {
            return;
        }

        PageTemplateInfo originalTemplate = originalPage.UsedPageTemplateInfo;

        // If template is not adhoc or is inherited, create adhoc from original node template
        if ((originalTemplate != null) && (originalTemplate.IsReusable || mNode.NodeInheritPageTemplate))
        {
            var newDisplayName = string.Format("Ad-hoc: {0} ({1})", txtDocumentName.Text.Trim(), GetString("abtesting.abvarianttemplate"));
            var adHocTemplate  = PageTemplateInfoProvider.CloneTemplateAsAdHoc(originalTemplate, newDisplayName, SiteContext.CurrentSiteID, Guid.Empty);

            if (newNode.NodeTemplateForAllCultures)
            {
                newNode.NodeTemplateID = adHocTemplate.PageTemplateId;
            }
            else
            {
                newNode.DocumentPageTemplateID = adHocTemplate.PageTemplateId;
            }
            newNode.NodeInheritPageTemplate = false;
        }
    }
Esempio n. 3
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);
        }
    }
    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);
            }
        }
    }
    /// <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. 6
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. 7
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. 8
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="errorMessage">Returns the error message</param>
    public int EnsureTemplate(string documentName, ref string errorMessage)
    {
        int result = 0;

        // Template selection
        if (radUseTemplate.Checked)
        {
            // Template page
            int templateId = ValidationHelper.GetInteger(templateSelector.SelectedItem, 0);
            if (templateId > 0)
            {
                result = templateId;
            }
            else
            {
                errorMessage = GetString("NewPage.TemplateError");
            }
        }
        else if (radInherit.Checked)
        {
            // Inherited page
        }
        else if (radCreateBlank.Checked || radCreateEmpty.Checked)
        {
            // Create custom template info for the page
            PageTemplateInfo templateInfo = new PageTemplateInfo(true);

            // Prepare ad-hoc template name
            string displayName = "Ad-hoc: " + documentName;

            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     = "<cc1:CMSWebPartZone ID=\"zoneLeft\" runat=\"server\" />";
                templateInfo.PageTemplateLayoutType = LayoutTypeEnum.Ascx;
            }

            if (String.IsNullOrEmpty(errorMessage))
            {
                // Create ad-hoc template
                templateInfo = PageTemplateInfoProvider.CloneTemplateAsAdHoc(templateInfo, displayName, CMSContext.CurrentSiteID);

                // Set inherit only master
                templateInfo.InheritPageLevels = "\\";
                PageTemplateInfoProvider.SetPageTemplateInfo(templateInfo);

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

                // Assign the template to document
                result = templateInfo.PageTemplateId;
            }
        }

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

        return(result);
    }