コード例 #1
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 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;
        }
    }
コード例 #3
0
    /// <summary>
    /// Ensures dashboard inicialization.
    /// </summary>
    public void SetupDashboard()
    {
        if (PortalPageInstance == null)
        {
            throw new Exception("[DashboardControl.SetupDashboard] Portal page instance must be set.");
        }

        // Default settings for drag and drop for dashboard
        manPortal.HighlightDropableAreas = HighlightDropableAreas;
        manPortal.ActivateZoneBorder     = ActivateZoneBorder;

        string dashboardName = QueryHelper.GetString("DashboardName", PersonalizationInfoProvider.UNDEFINEDDASHBOARD);

        // Set culture
        CultureInfo ci = CultureHelper.PreferredUICultureInfo;

        Thread.CurrentThread.CurrentCulture   = ci;
        Thread.CurrentThread.CurrentUICulture = ci;

        // Init the page components
        PortalPageInstance.PageManager = manPortal;
        manPortal.SetMainPagePlaceholder(plc);

        string templateName = QueryHelper.GetString("templatename", String.Empty);

        PageTemplateInfo pti = PageTemplateInfoProvider.GetPageTemplateInfo(templateName);

        if (pti != null)
        {
            if (pti.PageTemplateType != PageTemplateTypeEnum.Dashboard)
            {
                URLHelper.Redirect(URLHelper.ResolveUrl("~/CMSDesk/accessdenied.aspx") + "?message=" + ResHelper.GetString("dashboard.invalidpagetemplate"));
            }

            // Prepare virtual page info
            PageInfo pi = new PageInfo();
            pi.DocumentPageTemplateID = pti.PageTemplateId;
            pi.PageTemplateInfo       = pti;
            pi.ClassName        = "CMS.Root";
            pi.NodeAliasPath    = String.Empty;
            pi.DocumentNamePath = "/" + templateName;
            pi.NodeSiteId       = CMSContext.CurrentSiteID;

            CMSContext.CurrentPageInfo = pi;

            // Set the design mode
            PortalContext.SetRequestViewMode(ViewModeEnum.DashboardWidgets);
            PortalContext.DashboardName = dashboardName;
            ContextHelper.Add("DisplayContentInDesignMode", "0", true, false, false, DateTime.MinValue);

            PortalPageInstance.ManagersContainer    = plcManagers;
            PortalPageInstance.ScriptManagerControl = manScript;
        }
        else
        {
            RedirectToInformation(GetString("dashboard.notemplate"));
        }
    }
コード例 #4
0
    /// <summary>
    /// Checks out the page template
    /// </summary>
    /// <param name="pageTemplateInfo">Page template to check out</param>
    private void CheckOutTemplate(PageTemplateInfo pageTemplateInfo)
    {
        var objectManager = CMSObjectManager.GetCurrent(this) ?? new CMSObjectManager();

        if (CMSObjectManager.KeepNewObjectsCheckedOut)
        {
            objectManager.CheckOutObject(pageTemplateInfo);
        }
    }
コード例 #5
0
    /// <summary>
    /// Checks out the page template
    /// </summary>
    /// <param name="pageTemplateInfo">Page template to check out</param>
    private void CheckOutTemplate(PageTemplateInfo pageTemplateInfo)
    {
        var objectManager = CMSObjectManager.GetCurrent(Page);

        if ((objectManager != null) && CMSObjectManager.KeepNewObjectsCheckedOut)
        {
            objectManager.CheckOutObject(pageTemplateInfo);
        }
    }
コード例 #6
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;
            }
        }
    }
コード例 #7
0
    protected override void OnInit(EventArgs e)
    {
        int classId = QueryHelper.GetInteger("classId", 0);

        // Load the root category of the selector
        DataClassInfo dci = DataClassInfoProvider.GetDataClassInfo(classId);

        if (dci != null)
        {
            selTemplate.RootCategory = dci.ClassPageTemplateCategoryID;
            if (!URLHelper.IsPostback() && (dci.ClassDefaultPageTemplateID > 0))
            {
                PageTemplateInfo pageTemplate = PageTemplateInfoProvider.GetPageTemplateInfo(dci.ClassDefaultPageTemplateID);
                if ((pageTemplate != null) && PageTemplateInfoProvider.IsPageTemplateOnSite(pageTemplate.PageTemplateId, SiteContext.CurrentSiteID))
                {
                    bool setDefaultTemplate = true;

                    // If different template categories are used
                    if (pageTemplate.CategoryID != dci.ClassPageTemplateCategoryID)
                    {
                        // Get categories info
                        PageTemplateCategoryInfo templateCategory = PageTemplateCategoryInfoProvider.GetPageTemplateCategoryInfo(pageTemplate.CategoryID);
                        PageTemplateCategoryInfo rootCategory     = PageTemplateCategoryInfoProvider.GetPageTemplateCategoryInfo(dci.ClassPageTemplateCategoryID);

                        // Check if selected root category is same as one of parent page template categories or has no parent category
                        if ((rootCategory.ParentId != 0) && !templateCategory.CategoryPath.Contains("/" + rootCategory.CategoryName + "/"))
                        {
                            setDefaultTemplate = false;
                        }
                    }

                    if (setDefaultTemplate)
                    {
                        selTemplate.SetDefaultTemplate(dci.ClassDefaultPageTemplateID);
                    }
                }
            }

            // Display footer only in dialog mode
            pnlFooterContent.Visible = RequiresDialog;

            var titleText = String.Format(GetString("content.newdocument"), dci.ClassDisplayName);

            // Set dialog title
            if (RequiresDialog)
            {
                SetTitle(HTMLHelper.HTMLEncode(titleText));
            }
            else
            {
                titleElem.TitleText = HTMLHelper.HTMLEncode(titleText);
                EnsureDocumentBreadcrumbs(titleElem.Breadcrumbs, action: titleElem.TitleText);
            }
        }

        base.OnInit(e);
    }
コード例 #8
0
    /// <summary>
    /// Display info messages
    /// </summary>
    /// <param name="forceDisplay">If true, message is displayed even on postback</param>
    private void DisplayMessage(bool forceDisplay)
    {
        bool showMessage = editMenuElem.ObjectManager.IsObjectChecked() && (!RequestHelper.IsPostBack() || forceDisplay);

        // Setup Preview mode state and display shared template warning
        switch (EditedObjectType)
        {
        case EditedObjectTypeEnum.Template:
        {
            previewState = GetPreviewStateFromCookies(CMSPreviewControl.PAGETEMPLATELAYOUT);
            if (showMessage)
            {
                PageTemplateInfo pti = EditFormLayout.EditedObject as PageTemplateInfo;
                ShowSharedTemplateWarningMessage(pti);
            }
        }
        break;

        case EditedObjectTypeEnum.Layout:
        {
            previewState = GetPreviewStateFromCookies(CMSPreviewControl.PAGELAYOUT);
            LayoutInfo layoutInfo = EditFormLayout.EditedObject as LayoutInfo;
            if (DialogMode && ShowSharedLayoutWarnings && showMessage && (layoutInfo != null))
            {
                ShowInformation(string.Format(GetString("layout.sharedwarning"), layoutInfo.LayoutDisplayName));
            }
        }
        break;

        case EditedObjectTypeEnum.DeviceLayout:
        {
            previewState = GetPreviewStateFromCookies(CMSPreviewControl.DEVICELAYUOT);
            PageTemplateDeviceLayoutInfo deviceLayout = EditFormLayout.EditedObject as PageTemplateDeviceLayoutInfo;
            if ((deviceLayout != null) && showMessage)
            {
                if (DialogMode && (deviceLayout.LayoutID > 0))
                {
                    ShowInformation(GetString("layout.sharedwarning"));
                }
                else
                {
                    PageTemplateInfo pti = PageTemplateInfoProvider.GetPageTemplateInfo(deviceLayout.PageTemplateID);
                    ShowSharedTemplateWarningMessage(pti);
                }
            }
        }
        break;
        }

        if (showMessage)
        {
            codeElem.ShowMessage();
            codeLayoutElem.ShowMessage();
            deviceCode.ShowMessage();
        }
    }
コード例 #9
0
    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);
        }
    }
コード例 #10
0
ファイル: EditLayout.ascx.cs プロジェクト: kudutest2/Kentico
    /// <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;
        }
    }
コード例 #11
0
        private PageTemplateInfo GetStorePageTemplate(string key, string pageTypeKey)
        {
            DataCommand cmd = DataCommandManager.GetDataCommand("GetStorePageTemplate");

            cmd.SetParameterValue("@Key", key);
            cmd.SetParameterValue("@PageTypeKey", pageTypeKey);
            PageTemplateInfo result = cmd.ExecuteEntity <PageTemplateInfo>();

            return(result);
        }
コード例 #12
0
ファイル: Default.aspx.cs プロジェクト: tvelzy/RadstackMedia
    /// <summary>
    /// Deletes page template. Called when the "Delete template" button is pressed.
    /// Expects the CreatePageTemplate method to be run first.
    /// </summary>
    private bool DeletePageTemplate()
    {
        // Get the page template
        PageTemplateInfo deleteTemplate = PageTemplateInfoProvider.GetPageTemplateInfo("MyNewTemplate");

        // Delete the page template
        PageTemplateInfoProvider.DeletePageTemplate(deleteTemplate);

        return(deleteTemplate != null);
    }
    protected override void OnPreInit(EventArgs e)
    {
        WebPartInstance webPart = null;

        // Check permissions for web part properties UI
        if (!MembershipContext.AuthenticatedUser.IsAuthorizedPerUIElement("CMS.Design", "WebPartProperties.Layout"))
        {
            RedirectToUIElementAccessDenied("CMS.Design", "WebPartProperties.Layout");
        }

        if (webpartId != "")
        {
            // Get pageinfo
            PageInfo pi = GetPageInfo(aliasPath, templateId, cultureCode);
            if (pi == null)
            {
                return;
            }

            // Get page template
            PageTemplateInfo pti = pi.UsedPageTemplateInfo;
            if ((pti != null) && ((pti.TemplateInstance != null)))
            {
                webPart = pti.TemplateInstance.GetWebPart(instanceGuid, zoneVariantId, variantId) ?? pti.TemplateInstance.GetWebPart(webpartId);
            }
        }

        if (webPart != null)
        {
            WebPartInfo wpi = WebPartInfoProvider.GetWebPartInfo(webPart.WebPartType);
            layoutCodeName = QueryHelper.GetString("layoutcodename", String.Empty);

            if (String.IsNullOrEmpty(layoutCodeName))
            {
                // Get the current layout name
                layoutCodeName = ValidationHelper.GetString(webPart.GetValue("WebPartLayout"), "");
            }

            if (wpi != null)
            {
                wpli = WebPartLayoutInfoProvider.GetWebPartLayoutInfo(wpi.WebPartName, layoutCodeName);
                if (wpli != null)
                {
                    if ((layoutCodeName != "|default|") && (layoutCodeName != "|new|") && !QueryHelper.GetBoolean("tabmode", false))
                    {
                        string url = UIContextHelper.GetElementUrl("CMS.Design", "Design.WebPartProperties.LayoutEdit", false, wpli.WebPartLayoutID);
                        url = URLHelper.AppendQuery(url, RequestContext.CurrentQueryString);
                        url = URLHelper.AddParameterToUrl(url, "tabmode", "1");
                        URLHelper.Redirect(url);
                    }
                }
            }
        }
        base.OnPreInit(e);
    }
コード例 #14
0
    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.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);
        }
    }
コード例 #15
0
    public void LoadData()
    {
        if (node != null)
        {
            string layoutText = String.Empty;

            // get template info
            pti = PageTemplateInfoProvider.GetPageTemplateInfo(node.GetUsedPageTemplateId());
            if ((pti == null) && (DocumentContext.CurrentPageInfo != null) && (DocumentContext.CurrentPageInfo.UsedPageTemplateInfo != null))
            {
                pti = DocumentContext.CurrentPageInfo.UsedPageTemplateInfo;
            }

            if (pti != null)
            {
                PageTemplateLayoutTypeEnum type = PageTemplateLayoutTypeEnum.PageTemplateLayout;
                // Try get device layout
                object layoutObject = PageTemplateDeviceLayoutInfoProvider.GetLayoutObject(pti, DeviceContext.CurrentDeviceProfile, out type);
                layoutText = pti.PageTemplateLayout;

                // Set layout text with dependence on current layout type
                switch (type)
                {
                // Shared layouts
                case PageTemplateLayoutTypeEnum.SharedLayout:
                case PageTemplateLayoutTypeEnum.DeviceSharedLayout:
                case PageTemplateLayoutTypeEnum.SharedLayoutMapped:
                    layoutText = (layoutObject as LayoutInfo).LayoutCode;
                    break;

                // Custom device layout
                case PageTemplateLayoutTypeEnum.DeviceLayout:
                    layoutText = (layoutObject as PageTemplateDeviceLayoutInfo).LayoutCode;
                    break;
                }
            }
            ltlLayoutCode.Text = HTMLHelper.EnsureHtmlLineEndings(HTMLHelper.HighlightHTML(layoutText));
            ltlLayoutCode.Text = RegexHelper.GetRegex("[ ](?![^<>]*>)").Replace(ltlLayoutCode.Text, "&nbsp;");

            // Load node data
            if (!RequestHelper.IsPostBack())
            {
                txtBodyCss.Text      = node.NodeBodyElementAttributes;
                txtBodyScripts.Value = node.NodeBodyScripts;
                txtDocType.Text      = node.NodeDocType;
                txtHeadTags.Value    = node.NodeHeadTags;
            }
        }

        lblAfterDocType.Text  = HighlightHTML("<html>") + "<br />" + AddSpaces(1) + HighlightHTML("<head>");
        lblAfterHeadTags.Text = AddSpaces(1) + HighlightHTML("</head>");
        lblAfterLayout.Text   = AddSpaces(1) + HighlightHTML("</body>") + "<br />" + HighlightHTML("</html>");
        lblBodyEnd.Text       = HighlightHTML(">");
        lblBodyStart.Text     = AddSpaces(1) + HighlightHTML("<body " + HttpUtility.HtmlDecode(mBody));
    }
コード例 #16
0
    /// <summary>
    /// Display info messages
    /// </summary>
    /// <param name="forceDisplay">If true, message is displayed even on postback</param>
    private void DisplayMessage(bool forceDisplay)
    {
        bool showMessage = editMenuElem.ObjectManager.IsObjectChecked() && (!RequestHelper.IsPostBack() || forceDisplay);

        // Display shared template warning
        switch (EditedObjectType)
        {
        case EditedObjectTypeEnum.Template:
        {
            if (showMessage)
            {
                PageTemplateInfo pti = EditFormTemplate.EditedObject as PageTemplateInfo;
                ShowSharedTemplateWarningMessage(pti);
                codeElem.ShowMessage();
            }
        }
        break;

        case EditedObjectTypeEnum.Layout:
        {
            LayoutInfo layoutInfo = EditFormLayout.EditedObject as LayoutInfo;
            if (showMessage)
            {
                if (DialogMode && ShowSharedLayoutWarnings && (layoutInfo != null))
                {
                    ShowInformation(string.Format(GetString("layout.sharedwarning"), layoutInfo.LayoutDisplayName));
                }
                codeLayoutElem.ShowMessage();
            }
        }
        break;

        case EditedObjectTypeEnum.DeviceLayout:
        {
            PageTemplateDeviceLayoutInfo deviceLayout = EditFormDeviceLayout.EditedObject as PageTemplateDeviceLayoutInfo;
            if (showMessage)
            {
                if (deviceLayout != null)
                {
                    if (DialogMode && (deviceLayout.LayoutID > 0))
                    {
                        ShowInformation(GetString("layout.sharedwarning"));
                    }
                    else
                    {
                        PageTemplateInfo pti = PageTemplateInfoProvider.GetPageTemplateInfo(deviceLayout.PageTemplateID);
                        ShowSharedTemplateWarningMessage(pti);
                    }
                }
                deviceCode.ShowMessage();
            }
        }
        break;
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        // Check permissions for web part properties UI
        var currentUser = MembershipContext.AuthenticatedUser;

        if (!currentUser.IsAuthorizedPerUIElement("CMS.Design", "WebPartProperties.Layout"))
        {
            RedirectToUIElementAccessDenied("CMS.Design", "WebPartProperties.Layout");
        }

        WebPartInstance webPart = null;

        if (webpartId != "")
        {
            // Get pageinfo
            PageInfo pi = GetPageInfo(aliasPath, templateId, cultureCode);
            if (pi != null)
            {
                // Get page template
                PageTemplateInfo pti = pi.UsedPageTemplateInfo;

                // Get web part
                if ((pti != null) && ((pti.TemplateInstance != null)))
                {
                    webPart = pti.TemplateInstance.GetWebPart(instanceGuid, zoneVariantId, variantId) ?? pti.TemplateInstance.GetWebPart(webpartId);
                }
            }
        }

        // If the web part is not found, do not continue
        if (webPart != null)
        {
            WebPartInfo wpi = WebPartInfoProvider.GetWebPartInfo(webPart.WebPartType);
            if (wpi != null)
            {
                // Get the current layout name
                if (String.IsNullOrEmpty(LayoutCodeName))
                {
                    // Get the current layout name
                    LayoutCodeName = ValidationHelper.GetString(webPart.GetValue("WebPartLayout"), "");
                }

                // Load the web part information
                if (LayoutCodeName != "")
                {
                    WebPartLayoutInfo wpli = WebPartLayoutInfoProvider.GetWebPartLayoutInfo(wpi.WebPartName, LayoutCodeName);
                    SetEditedObject(wpli, null);
                }
            }
        }

        // Set page tabs
        InitTabs("webpartlayoutcontent");
        SetTab(0, GetString("general.general"), "webpartproperties_layout.aspx" + RequestContext.CurrentQueryString, null);
    }
コード例 #18
0
        /// <summary>
        /// Inserts .css and .js resources at the start of the page's block of CSS and JavaScript files.
        /// There can be one or more css or js resource for each page template.
        /// This information is found in the PageTemplateInfo object of the
        /// PageAssembleyContext.Current
        ///
        /// This method inserts those resources marked as "Beginning" as well as resources
        /// which have no location specified.
        /// </summary>
        protected virtual void InsertHeaderStyleSheetsJavascriptsReferences()
        {
            if (CurrentPageHead != null)
            {
                PageTemplateInfo pgTemplateInfo = PageAssemblyContext.Current.PageTemplateInfo;
                if (pgTemplateInfo != null)
                {
                    StyleSheetInfo[] colCss = pgTemplateInfo.StyleSheets;
                    JavascriptInfo[] colJs  = pgTemplateInfo.Javascripts;

                    PageResources pgResources = PageAssemblyContext.Current.PageAssemblyInstruction.GetPageResources();
                    if (pgResources != null)
                    {
                        colCss = colCss.Concat(pgResources.StyleSheets).ToArray();
                        colJs  = colJs.Concat(pgResources.Javascripts).ToArray();
                    }

                    // Capture all items marked as going at the start of the block.
                    IEnumerable <StyleSheetInfo> firstStylesheet = System.Linq.Enumerable.Where(colCss, fcss => fcss.Beginning == "true");
                    IEnumerable <JavascriptInfo> firstJavaScript = System.Linq.Enumerable.Where(colJs, fjs => fjs.Beginning == "true");

                    // Capture all items which aren't marked for a particular location.
                    IEnumerable <StyleSheetInfo> unspecifiedStylesheets = System.Linq.Enumerable.Where(colCss, fcss => fcss.Beginning != "true" && fcss.End != "true");
                    IEnumerable <JavascriptInfo> unspecifiedJavaScripts = System.Linq.Enumerable.Where(colJs, fjs => fjs.Beginning != "true" && fjs.End != "true");

                    //Load first Javascript
                    foreach (JavascriptInfo jsBeginningInfo in firstJavaScript)
                    {
                        String url = appendFileFingerprint(jsBeginningInfo.JavascriptPath);
                        NCI.Web.UI.WebControls.JSManager.AddExternalScript(this, url, jsBeginningInfo.Async, jsBeginningInfo.Defer);
                    }

                    //Load first Stylesheet
                    foreach (StyleSheetInfo cssBeginningInfo in firstStylesheet)
                    {
                        String url = appendFileFingerprint(cssBeginningInfo.StyleSheetPath);
                        NCI.Web.UI.WebControls.CssManager.AddStyleSheet(this, url, cssBeginningInfo.Media);
                    }

                    // Load the js and css resources with no specified location
                    foreach (JavascriptInfo jsInfo in unspecifiedJavaScripts)
                    {
                        String url = appendFileFingerprint(jsInfo.JavascriptPath);
                        NCI.Web.UI.WebControls.JSManager.AddExternalScript(this, url, jsInfo.Async, jsInfo.Defer);
                    }

                    foreach (StyleSheetInfo ssInfo in unspecifiedStylesheets)
                    {
                        String url = appendFileFingerprint(ssInfo.StyleSheetPath);
                        NCI.Web.UI.WebControls.CssManager.AddStyleSheet(this, url, ssInfo.Media);
                    }
                }
            }
        }
コード例 #19
0
    /// <summary>
    /// Determines whether the current page template is UI template.
    /// </summary>
    private static bool IsUITemplate()
    {
        PageTemplateInfo pti = DocumentContext.CurrentPageInfo.DesignPageTemplateInfo;

        if (pti != null)
        {
            return(pti.PageTemplateType == PageTemplateTypeEnum.UI);
        }

        return(false);
    }
コード例 #20
0
    protected override void OnPreInit(EventArgs e)
    {
        WebPartInstance webPart = null;

        // Check permissions for web part properties UI
        if (!CMSContext.CurrentUser.IsAuthorizedPerUIElement("CMS.Content", "WebPartProperties.Layout"))
        {
            RedirectToCMSDeskUIElementAccessDenied("CMS.Content", "WebPartProperties.Layout");
        }

        if (webpartId != "")
        {
            // Get pageinfo
            PageInfo pi = GetPageInfo(aliasPath, templateId, cultureCode);
            if (pi == null)
            {
                return;
            }

            // Get page template
            PageTemplateInfo pti = pi.UsedPageTemplateInfo;
            if ((pti != null) && ((pti.TemplateInstance != null)))
            {
                webPart = pti.TemplateInstance.GetWebPart(instanceGuid, zoneVariantId, variantId) ?? pti.GetWebPart(webpartId);
            }
        }

        if (webPart != null)
        {
            WebPartInfo wpi = WebPartInfoProvider.GetWebPartInfo(webPart.WebPartType);
            layoutCodeName = QueryHelper.GetString("layoutcodename", String.Empty);

            if (String.IsNullOrEmpty(layoutCodeName))
            {
                // Get the current layout name
                layoutCodeName = ValidationHelper.GetString(webPart.GetValue("WebPartLayout"), "");
            }

            if (wpi != null)
            {
                wpli = WebPartLayoutInfoProvider.GetWebPartLayoutInfo(wpi.WebPartName, layoutCodeName);
                if (wpli != null)
                {
                    if ((layoutCodeName != "|default|") && (layoutCodeName != "|new|"))
                    {
                        SetEditedObject(wpli, "WebPartProperties_layout_frameset_frameset.aspx");
                    }
                }
            }
        }

        base.OnPreInit(e);
    }
    /// <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)
        {
            TreePath = GetTreePath();

            radInheritAll.Text = GetString("InheritLevels.UseTemplateSettigns");
            PageTemplateInfo template = PageTemplateInfoProvider.GetPageTemplateInfo(Node.DocumentPageTemplateID);
            if (template != null)
            {
                string resString;
                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('}', '{', '/');
                    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");
        }
    }
コード例 #22
0
    /// <summary>
    /// Clear web part variants from the cache and reloads them.
    /// </summary>
    /// <param name="instanceGuid">The instance GUID.</param>
    private void ReloadWebPartCache(string zoneId, Guid instanceGuid)
    {
        // Delete cached web part variants
        if (Node != null)
        {
            bool found = false;

            // Get page template instance and find the webpart instance.
            PageTemplateInfo pti = PageTemplateInfoProvider.GetPageTemplateInfo(Node.DocumentPageTemplateID);
            if ((pti != null) &&
                (pti.TemplateInstance != null) &&
                (pti.TemplateInstance.WebPartZones != null))
            {
                // Set the CurrentDocument - will be used for detection of the VariantMode (MVT/ContentPersonalization)
                CMSContext.CurrentDocument = Node;

                foreach (WebPartZoneInstance zone in pti.TemplateInstance.WebPartZones)
                {
                    if (found)
                    {
                        break;
                    }

                    // Is zone variant
                    if (instanceGuid == Guid.Empty)
                    {
                        if (zoneId == zone.ZoneID)
                        {
                            // Reload the zone variants
                            zone.LoadVariants(true, VariantModeEnum.ContentPersonalization);
                            break;
                        }
                    }
                    // Is web part variant
                    else
                    {
                        foreach (WebPartInstance wInstance in zone.WebParts)
                        {
                            // Find the web part instance which is to be cleared
                            if (wInstance.InstanceGUID == instanceGuid)
                            {
                                // Reload the web part variants
                                wInstance.LoadVariants(true, VariantModeEnum.ContentPersonalization);
                                found = true;
                                break;
                            }
                        }
                    }
                }
            }
        }
    }
コード例 #23
0
    private void ReloadData()
    {
        if (node != null)
        {
            // Check read permissions
            if (currentUser.IsAuthorizedPerDocument(node, NodePermissionsEnum.Read) == AuthorizationResultEnum.Denied)
            {
                RedirectToAccessDenied(String.Format(GetString("cmsdesk.notauthorizedtoreaddocument"), node.NodeAliasPath));
            }
            // Check modify permissions
            else if (currentUser.IsAuthorizedPerDocument(node, NodePermissionsEnum.Modify) == AuthorizationResultEnum.Denied)
            {
                DisableFormEditing();

                lblInfo.Visible = true;
                lblInfo.Text    = String.Format(GetString("cmsdesk.notauthorizedtoeditdocument"), node.NodeAliasPath);
            }

            if (hasDesign)
            {
                // Show template name by template id
                if (node.GetValue("DocumentPageTemplateID") != null)
                {
                    PageTemplateInfo pt = PageTemplateInfoProvider.GetPageTemplateInfo(Convert.ToInt32(node.GetValue("DocumentPageTemplateID")));
                    if (pt != null)
                    {
                        // Prepare the template name
                        string templateName = null;
                        if (pt.IsReusable)
                        {
                            templateName = pt.DisplayName;
                        }
                        else
                        {
                            templateName = "Ad-hoc: " + (!string.IsNullOrEmpty(node.DocumentName) ? node.DocumentName : node.DocumentNamePath);
                        }

                        ltlScript.Text += ScriptHelper.GetScript("SelectTemplate(" + pt.PageTemplateId + ", " + ScriptHelper.GetString(templateName) + ", " + pt.IsPortal.ToString().ToLower() + ", " + pt.IsReusable.ToString().ToLower() + "); RememberTemplate(" + ScriptHelper.GetString(pt.DisplayName) + ");");
                    }
                    else
                    {
                        ltlScript.Text += ScriptHelper.GetScript("NoTemplateSelected();");
                    }
                    btnInherit.Visible = true;
                }
                else
                {
                    btnInherit_Click(null, null);
                }
            }
        }
    }
コード例 #24
0
    /// <summary>
    /// Loads the control data.
    /// </summary>
    public void LoadData()
    {
        PageTemplateInfo pti = PageTemplateInfo;

        if (pti != null)
        {
            txtTemplate.Text = ResHelper.LocalizeString(pti.DisplayName);
        }
        else
        {
            txtTemplate.Text = "";
        }
    }
コード例 #25
0
 /// <summary>
 /// Ensure portal view mode for dashboards.
 /// </summary>
 public void EnsureDashboard()
 {
     if (PageTemplateId > 0)
     {
         PageTemplateInfo pti = PageTemplateInfoProvider.GetPageTemplateInfo(PageTemplateId);
         if ((pti != null) && (pti.PageTemplateType == PageTemplateTypeEnum.Dashboard))
         {
             PortalContext.SetRequestViewMode(ViewModeEnum.DashboardWidgets);
             PortalContext.DashboardName     = QueryHelper.GetString("dashboard", String.Empty);
             PortalContext.DashboardSiteName = QueryHelper.GetString("sitename", String.Empty);
         }
     }
 }
    /// <summary>
    /// Initializes menu.
    /// </summary>
    protected void InitializeMenu()
    {
        if (webpartId != string.Empty)
        {
            // get pageinfo
            PageInfo pi = GetPageInfo(aliasPath, templateId, cultureCode);
            if (pi == null)
            {
                Visible = false;
                return;
            }

            PageTemplateInfo pti = pi.UsedPageTemplateInfo;
            if (pti != null)
            {
                // Get web part
                WebPartInstance webPart = pti.TemplateInstance.GetWebPart(instanceGuid, webpartId);

                // New webpart is loaded via WebPartID
                if ((webPart == null) && !isNew)
                {
                    // Clone templateInstance to avoid caching of the temporary template instance loaded with CP/MVT variants
                    var tempTemplateInstance = pti.TemplateInstance.Clone();
                    tempTemplateInstance.LoadVariants(false, VariantModeEnum.None);

                    webPart = tempTemplateInstance.GetWebPart(instanceGuid, -1, 0);
                }

                WebPartInfo wi = (webPart != null) ? WebPartInfoProvider.GetWebPartInfo(webPart.WebPartType) :
                                 WebPartInfoProvider.GetWebPartInfo(ValidationHelper.GetInteger(webpartId, 0));

                if (wi != null)
                {
                    type = (WebPartTypeEnum)wi.WebPartType;

                    // Generate documentation link
                    Literal ltr       = new Literal();
                    string  docScript = "NewWindow('" + ResolveUrl("~/CMSModules/PortalEngine/UI/WebParts/WebPartDocumentationPage.aspx") + "?webpartid=" + ScriptHelper.GetString(wi.WebPartName, false) + "', 'WebPartPropertiesDocumentation', 800, 800); return false;";
                    string  tooltip   = GetString("help.tooltip");
                    ltr.Text += String.Format
                                    ("<div class=\"action-button\"><a onclick=\"{0}\" href=\"#\"><span class=\"sr-only\">{1}</span><i class=\"icon-modal-question cms-icon-80\" title=\"{1}\" aria-hidden=\"true\"></i></a></div>",
                                    docScript, tooltip);

                    pageTitle.RightPlaceHolder.Controls.Add(ltr);
                    pageTitle.TitleText = GetString("WebpartProperties.Title") + " (" + HTMLHelper.HTMLEncode(ResHelper.LocalizeString(wi.WebPartDisplayName)) + ")";
                }
            }
        }

        tabsElem.UrlTarget = "webpartpropertiescontent";
    }
コード例 #27
0
    /// <summary>
    /// Creates new document under root and new event (booking system) document under created document.
    /// Called when the "Create event" button is pressed.
    /// </summary>
    private bool CreateEvent()
    {
        TreeProvider tree = new TreeProvider(MembershipContext.AuthenticatedUser);

        // Get root document
        TreeNode root = tree.SelectSingleNode(SiteContext.CurrentSiteName, "/", null, true);

        // Create a new CMS Page (menu item) document
        TreeNode node = TreeNode.New("CMS.MenuItem", tree);

        // Set values
        node.DocumentName    = "MyNewDocument";
        node.DocumentCulture = LocalizationContext.PreferredCultureCode;

        // Get page template
        PageTemplateInfo template = PageTemplateInfoProvider.GetPageTemplateInfo("cms.empty");

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

        // Insert the document
        DocumentHelper.InsertDocument(node, root, tree);

        // Create new Event (booking system) document
        TreeNode eventNode = TreeNode.New("CMS.BookingEvent", tree);

        // Set values
        eventNode.DocumentName    = "MyNewEvent";
        eventNode.DocumentCulture = LocalizationContext.PreferredCultureCode;
        eventNode.SetValue("EventSummary", "My event summary");
        eventNode.SetValue("EventDetails", "My event details");
        eventNode.SetValue("EventLocation", "My location");
        eventNode.SetValue("EventDate", DateTime.Now);
        eventNode.SetValue("EventCapacity", 100);

        // Get page template
        PageTemplateInfo eventTemplate = PageTemplateInfoProvider.GetPageTemplateInfo("cms.empty");

        if (eventTemplate != null)
        {
            eventNode.SetDefaultPageTemplateID(eventTemplate.PageTemplateId);
        }

        // Insert the Event (booking system) document
        DocumentHelper.InsertDocument(eventNode, node, tree);

        return(true);
    }
コード例 #28
0
        public void GetTemplateInfoTest_DefaultCancerGovTemplate_Print()
        {
            using (HttpSimulator httpSimulator = GetStandardSimulatedRequest())
            {
                string          templateName = "DefaultCancerGovTemplate";
                DisplayVersions version      = DisplayVersions.Print;

                PageTemplateInfo expected = GetPrintPageTemplateInfo();

                PageTemplateInfo actual;
                actual = PageTemplateResolver.GetPageTemplateInfo(string.Empty, templateName, version);
                Assert.AreEqual(expected, actual);
            }
        }
コード例 #29
0
    /// <summary>
    /// Initializes menu.
    /// </summary>
    protected void InitalizeMenu()
    {
        if (webpartId != string.Empty)
        {
            // get pageinfo
            PageInfo pi = GetPageInfo(aliasPath, templateId, cultureCode);
            if (pi == null)
            {
                Visible = false;
                return;
            }

            PageTemplateInfo pti = pi.UsedPageTemplateInfo;
            if (pti != null)
            {
                WebPartInfo wi = null;

                // Get web part
                WebPartInstance webPart = pti.GetWebPart(instanceGuid, webpartId);
                if (webPart != null)
                {
                    wi = WebPartInfoProvider.GetWebPartInfo(webPart.WebPartType);
                    if (ValidationHelper.GetString(webPart.GetValue("WebPartCode"), string.Empty).Trim() != string.Empty)
                    {
                        showCodeTab = true;
                    }
                    if (webPart.Bindings.Count > 0)
                    {
                        showBindingTab = true;
                    }
                }
                else
                {
                    wi = WebPartInfoProvider.GetWebPartInfo(ValidationHelper.GetInteger(webpartId, 0));
                }

                if (wi != null)
                {
                    // Generate documentation link
                    Literal ltr = new Literal();
                    PageTitle.RightPlaceHolder.Controls.Add(ltr);
                    string docScript = "NewWindow('" + ResolveUrl("~/CMSModules/PortalEngine/UI/WebParts/WebPartDocumentationPage.aspx") + "?webpartid=" + ScriptHelper.GetString(wi.WebPartName, false) + "', 'WebPartPropertiesDocumentation', 800, 800); return false;";
                    ltr.Text           += "<a onclick=\"" + docScript + "\" href=\"#\"><img src=\"" + ResolveUrl(GetImageUrl("General/HelpLargeDark.png")) + "\" style=\"border-width: 0px;\"></a>";
                    PageTitle.TitleText = GetString("WebpartProperties.Title") + " (" + HTMLHelper.HTMLEncode(ResHelper.LocalizeString(wi.WebPartDisplayName)) + ")";
                }
            }
        }

        tabsElem.UrlTarget = "webpartpropertiescontent";
    }
コード例 #30
0
    private void EditForm_OnBeforeSave(object sender, EventArgs e)
    {
        // Don't save shared layout object, update only necessary objects
        if ((EditedObjectType == EditedObjectTypeEnum.Layout) && radShared.Checked)
        {
            LayoutInfo li = EditedObject as LayoutInfo;

            // Get the current layout type
            PageTemplateLayoutTypeEnum layoutType = PageTemplateLayoutTypeEnum.PageTemplateLayout;
            PageTemplateDeviceLayoutInfoProvider.GetLayoutObject(PageTemplateInfo, DeviceProfileInfo, out layoutType);

            switch (layoutType)
            {
            case PageTemplateLayoutTypeEnum.PageTemplateLayout:
            case PageTemplateLayoutTypeEnum.SharedLayout:
            {
                int newLayoutId = ValidationHelper.GetInteger(drpLayout.Value, 0);

                // We need to save also page template if shared template is used
                if ((PageTemplateInfo != null) && (PageTemplateInfo.LayoutID != li.LayoutId))
                {
                    PageTemplateInfo.LayoutID = newLayoutId;
                    PageTemplateInfo.Update();
                }
            }
            break;

            case PageTemplateLayoutTypeEnum.DeviceSharedLayout:
            case PageTemplateLayoutTypeEnum.DeviceLayout:
            {
                // We need to save also template device layout if shared template is used
                PageTemplateDeviceLayoutInfo deviceLayout = PageTemplateDeviceLayoutInfoProvider.GetTemplateDeviceLayoutInfo(TemplateID, DeviceProfileID);
                if (deviceLayout != null)
                {
                    deviceLayout.LayoutID   = ValidationHelper.GetInteger(drpLayout.Value, 0);
                    deviceLayout.LayoutCode = null;
                    deviceLayout.LayoutCSS  = null;
                    deviceLayout.Update();
                }
            }
            break;
            }

            ShowChangesSaved();

            // Prevent from saving object
            EditForm.StopProcessing = true;
        }
    }
コード例 #31
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);
        }
    }
コード例 #32
0
    private static void ProcessTemplateToFS(PageTemplateInfo info)
    {
        var devices = info.Children[PortalObjectType.TEMPLATEDEVICELAYOUT];

        if (devices != null)
        {
            foreach (PageTemplateDeviceLayoutInfo device in devices)
            {
                device.Generalized.SaveExternalColumns();
            }
        }

        if ((info.IsPortal || info.PageTemplateType == PageTemplateTypeEnum.Dashboard) && !string.IsNullOrEmpty(info.PageTemplateLayout))
        {
            info.Generalized.SaveExternalColumns();
        }
    }
コード例 #33
0
    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);

        dialog = QueryHelper.GetBoolean("dialog", false);

        lblTemplateHeader.Text = GetString("pagetemplate_header.addheader");

        pnlObjectLocking.ObjectManager.OnSaveData += new EventHandler<SimpleObjectManagerEventArgs>(ObjectManager_OnSaveData);
        pnlObjectLocking.ObjectManager.OnAfterAction += new EventHandler<SimpleObjectManagerEventArgs>(ObjectManager_OnAfterAction);

        pti = PageTemplateInfoProvider.GetPageTemplateInfo(PageTemplateID);
        CMSContext.EditedObject = pti;

        if (!RequestHelper.IsPostBack())
        {
            // Load data to form
            LoadData();
        }
    }
コード例 #34
0
    /// <summary>
    /// PreInit event handler
    /// </summary>
    protected override void OnPreInit(EventArgs e)
    {
        deviceProfile = CMSContext.CurrentDeviceProfile;
        templateId = QueryHelper.GetInteger("templateid", 0);
        pti = PageTemplateInfoProvider.GetPageTemplateInfo(templateId);

        dialogMode = QueryHelper.GetBoolean("dialogmode", false);
        tabMode = QueryHelper.GetBoolean("tabmode", false);

        // Page template dialog in CMS Desk
        if (!CMSContext.CurrentUser.IsAuthorizedPerUIElement("CMS.Content", "Design.EditLayout"))
        {
            RedirectToCMSDeskUIElementAccessDenied("CMS.Content", "Design.EditLayout");
        }

        if (dialogMode)
        {
            // Set proper master page for dialog mode
            MasterPageFile = "~/CMSMasterPages/UI/Dialogs/ModalSimplePage.master";

            if (!tabMode)
            {
                CurrentMaster.Title.TitleText = GetTitleText();
                CurrentMaster.Title.TitleImage = GetImageUrl("Objects/CMS_Layout/object.png");
                CurrentMaster.Title.TitleInformation = GetTitleInformation();

                CurrentMaster.Title.HelpTopicName = "CMS_Design_page_layout";
                CurrentMaster.Title.HelpName = "helpTopic";
            }
        }

        int layoutId = QueryHelper.GetInteger("layoutid", 0);
        int newSharedLayoutId = QueryHelper.GetInteger("newshared", -1);
        int oldSharedLayoutId = QueryHelper.GetInteger("oldshared", -1);
        int deviceProfileId = (deviceProfile != null) ? deviceProfile.ProfileID : 0;

        CMSContext.EditedObject = GetEditedObject(templateId, layoutId, newSharedLayoutId, oldSharedLayoutId, deviceProfileId);

        base.OnPreInit(e);
    }
コード例 #35
0
    protected void Page_Load(object sender, EventArgs e)
    {
        currentUser = CMSContext.CurrentUser;

        // Get current page template ID
        mPageTemplateId = QueryHelper.GetInteger("templateid", 0);
        pti = PageTemplateInfoProvider.GetPageTemplateInfo(mPageTemplateId);
        if (pti != null)
        {
            if (pti.IsReusable)
            {
                filterDocuments.LoadSites = true;
            }
            else
            {
                filterDocuments.SitesPlaceHolder.Visible = false;
            }
        }
        docElem.UniGrid.OnBeforeDataReload += new OnBeforeDataReload(UniGrid_OnBeforeDataReload);
        docElem.UniGrid.OnAfterDataReload += new OnAfterDataReload(UniGrid_OnAfterDataReload);

        string site = null;

        // Site selector is available for global admin
        if (currentUser.IsGlobalAdministrator)
        {
            site = filterDocuments.SelectedSite;
        }
        else
        {
            site = CMSContext.CurrentSiteName;
        }

        // For ad-hoc templates use all sites
        if (!pti.IsReusable)
        {
            site = TreeProvider.ALL_SITES;
        }
        docElem.SiteName = site;
    }
コード例 #36
0
    /// <summary>
    /// OnInit
    /// </summary>
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);

        // Check permissions for web part properties UI
        CurrentUserInfo currentUser = CMSContext.CurrentUser;

        if (!currentUser.IsAuthorizedPerUIElement("CMS.Content", "WebPartProperties.Code"))
        {
            RedirectToCMSDeskUIElementAccessDenied("CMS.Content", "WebPartProperties.Code");
        }

        if (webpartId != "")
        {
            // Get page info
            pi = GetPageInfo(aliasPath, templateId, cultureCode);
            if (pi == null)
            {
                Visible = false;
                return;
            }

            pti = pi.UsedPageTemplateInfo;
            if ((pti != null) && ((pti.TemplateInstance != null)))
            {
                // Get web part instance
                webPart = pti.TemplateInstance.GetWebPart(instanceGuid, zoneVariantId, variantId) ?? pti.GetWebPart(webpartId);

                if (webPart != null)
                {
                    txtCode.Text = ValidationHelper.GetString(webPart.GetValue("WebPartCode"), "");
                }
                EditedObject = webPart;
            }
        }
    }
コード例 #37
0
    private static void ProcessTemplateToFS(PageTemplateInfo info)
    {
        var devices = info.Children[PageTemplateDeviceLayoutInfo.OBJECT_TYPE];
        if (devices != null)
        {
            foreach (PageTemplateDeviceLayoutInfo device in devices)
            {
                device.Generalized.SaveExternalColumns();
            }
        }

        if (info.IsPortal || (info.PageTemplateType == PageTemplateTypeEnum.Dashboard) || (info.PageTemplateType == PageTemplateTypeEnum.UI))
        {
            info.Generalized.SaveExternalColumns();
        }
    }
コード例 #38
0
    protected void Page_Load(object sender, EventArgs e)
    {
        // Get and check template ID
        pageTemplateId = QueryHelper.GetInteger("templateid", 0);
        if (pageTemplateId <= 0)
        {
            return;
        }

        // Register refresh script
        string refreshScript = ScriptHelper.GetScript(@"function RefreshContent() {
                             if ((parent != null) && (parent.Refresh != null)) parent.Refresh();
                             var txtDisplayName = document.getElementById('" + txtTemplateDisplayName.TextBox.ClientID + @"');
                             var wopener = parent.wopener; if ((wopener != null) && (wopener.SetTemplateName)) wopener.SetTemplateName(txtDisplayName.value);
                             }");
        ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "pageTemplateRefreshScript", refreshScript);

        // Hide teaser
        lblUploadFile.Visible = false;
        UploadFile.Visible = false;

        lblTemplateDisplayName.Text = GetString("Administration-PageTemplate_General.TemplateDisplayName");
        lblTemplateCodeName.Text = GetString("Administration-PageTemplate_General.TemplateCodeName");
        lblTemplateCategory.Text = GetString("Administration-PageTemplate_General.Category");
        lblTemplateDescription.Text = GetString("Administration-PageTemplate_General.TemplateDescription");
        lblTemplateType.Text = GetString("Administration-PageTemplate_General.Type");
        lblShowAsMasterTemplate.Text = GetString("Administration-PageTemplate_General.ShowAsMasterTemplate");
        lblInheritLevels.Text = GetString("Administration-PageTemplate_General.InheritLevels");
        lblUploadFile.Text = GetString("Administration-PageTemplate_General.lblUpload");

        rfvTemplateDisplayName.ErrorMessage = GetString("Administration-PageTemplate_General.ErrorEmptyTemplateDisplayName");
        rfvTemplateCodeName.ErrorMessage = GetString("Administration-PageTemplate_General.ErrorEmptyTemplateCodeName");

        // New item link
        string[,] actions = new string[1, 9];
        actions[0, 0] = HeaderActions.TYPE_SAVEBUTTON;
        actions[0, 1] = GetString("general.save");
        actions[0, 2] = null;
        actions[0, 3] = null;
        actions[0, 4] = null;
        actions[0, 5] = GetImageUrl("CMSModules/CMS_Content/EditMenu/save.png");
        actions[0, 6] = "lnksave_click";
        actions[0, 7] = null;
        actions[0, 8] = "true";

        this.CurrentMaster.HeaderActions.LinkCssClass = "ContentSaveLinkButton";
        this.CurrentMaster.HeaderActions.Actions = actions;
        this.CurrentMaster.HeaderActions.ActionPerformed += new CommandEventHandler(HeaderActions_ActionPerformed);

        if (!RequestHelper.IsPostBack())
        {
            FillDropDown();
        }

        pti = PageTemplateInfoProvider.GetPageTemplateInfo(pageTemplateId);
        if (pti != null)
        {
            if (!RequestHelper.IsPostBack())
            {
                // Load the initial data
                LoadData();

                lvlElem.Value = pti.InheritPageLevels;
                lvlElem.Level = 10;
            }
            else
            {
                // Load just the flags
                pageTemplateIsReusable = pti.IsReusable;
                pageTemplateWebParts = pti.WebParts;
            }

            // Show teaser if needed
            if (!pti.DisplayName.ToLower().StartsWith("ad-hoc"))
            {
                lblUploadFile.Visible = true;
                UploadFile.Visible = true;
                UploadFile.ObjectID = pageTemplateId;
                UploadFile.ObjectType = PortalObjectType.PAGETEMPLATE;
                UploadFile.Category = MetaFileInfoProvider.OBJECT_CATEGORY_THUMBNAIL;
            }

            FileSystemDialogConfiguration config = new FileSystemDialogConfiguration();
            config.DefaultPath = "CMSTemplates";
            config.AllowedExtensions = "aspx";
            config.ShowFolders = false;

            FileSystemSelector.DialogConfig = config;
            FileSystemSelector.AllowEmptyValue = false;
            FileSystemSelector.SelectedPathPrefix = "~/CMSTemplates/";
            FileSystemSelector.ValidationError = GetString("Administration-PageTemplate_General.ErrorEmptyTemplateFileName");

            // Script for dynamic hiding of inherited levels
            string script = @"
            function HideOrShowInheritLevels() {
                var tr = document.getElementById('" + inheritLevels.ClientID + @"');
                if (tr) {
                    var checkbox = document.getElementById('" + chkShowAsMasterTemplate.ClientID + @"') ;
                    if(checkbox != null) {
                        if(checkbox.checked == 1) {
                            tr.style.display = 'none';
                        }
                        else {
                            tr.style.display = '';
                        }
                    }
                }
            }";

            // Hide inherited levels
            if (chkShowAsMasterTemplate.Checked)
            {
                inheritLevels.Style.Add("display", "none");
            }
            else
            {
                inheritLevels.Style.Clear();
            }

            // Register script to page
            ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "showOrHide", ScriptHelper.GetScript(script));

            chkShowAsMasterTemplate.Attributes.Add("onclick", "HideOrShowInheritLevels();");
            //Page.Focus();
            //Page.Form.Focus();
            //ScriptHelper.RegisterStartupScript(this, typeof(string), "focus", ScriptHelper.GetScript("document.getElementById('" +Page.Form.ClientID  + "').focus();"));
        }
    }
コード例 #39
0
    /// <summary>
    /// Page load event.
    /// </summary>
    /// <param name="sender">Sender</param>
    /// <param name="e">Arguments</param>
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!CMSContext.CurrentUser.UserSiteManagerAdmin)
        {
            RedirectToAccessDenied(GetString("template.scopes.denied"));
        }

        // Master page settings
        CurrentMaster.DisplayControlsPanel = true;
        CurrentMaster.DisplaySiteSelectorPanel = true;

        // Get template id
        templateID = QueryHelper.GetInteger("templateid", 0);

        // Get template info
        if (templateID > 0)
        {
            template = PageTemplateInfoProvider.GetPageTemplateInfo(templateID);
        }

        if (!RequestHelper.IsPostBack())
        {
            if (template != null)
            {
                radAllPages.Checked = template.PageTemplateForAllPages;
                radSelectedScopes.Checked = !template.PageTemplateForAllPages;
            }
            siteID = QueryHelper.GetInteger("siteid", 0);
            if (siteID > 0)
            {
                selectSite.Value = siteID;
            }
        }
        else
        {
            siteID = ValidationHelper.GetInteger(selectSite.Value, 0);
        }

        // Display only assigned sites
        selectSite.UniSelector.WhereCondition = "SiteID IN (SELECT SiteID FROM CMS_PageTemplateSite WHERE PageTemplateID = " + templateID + ") OR SiteID IN (SELECT PageTemplateScopeSiteID FROM CMS_PageTemplateScope WHERE PageTemplateScopeTemplateID = " + templateID + ")";

        // Show scopes content only if option template can be used within scopes is selected
        if (radAllPages.Checked)
        {
            pnlContent.Visible = false;
        }
        else
        {
            pnlContent.Visible = true;

            // New item link
            string[,] actions = new string[1, 6];
            actions[0, 0] = HeaderActions.TYPE_HYPERLINK;
            actions[0, 1] = GetString("template.scopes.newscope");
            actions[0, 2] = null;
            actions[0, 3] = "javascript: AddNewItem()";
            actions[0, 4] = null;
            actions[0, 5] = GetImageUrl("Objects/CMS_PageTemplateScope/add.png");
            CurrentMaster.HeaderActions.Actions = actions;
        }

        // Setup unigrid
        unigridScopes.OnAction += new OnActionEventHandler(unigridScopes_OnAction);
        unigridScopes.OnExternalDataBound += new OnExternalDataBoundEventHandler(unigridScopes_OnExternalDataBound);
        unigridScopes.WhereCondition = GenerateWhereCondition();
        unigridScopes.ZeroRowsText = GetString("general.nodatafound");

        // Set site selector
        selectSite.DropDownSingleSelect.AutoPostBack = true;
        selectSite.AllowAll = false;
        selectSite.OnlyRunningSites = false;
        selectSite.UniSelector.SpecialFields = new string[1, 2] { { GetString("template.scopes.global"), "0" } };
        selectSite.UniSelector.OnSelectionChanged += new EventHandler(UniSelector_OnSelectionChanged);

        // Register correct script for new item
        ScriptHelper.RegisterClientScriptBlock(this.Page, typeof(string), "AddNewItem", ScriptHelper.GetScript(
            "function AddNewItem() { this.window.location = '" + ResolveUrl("PageTemplateScope_Edit.aspx?templateid=" + templateID.ToString() + "&siteID=" + siteID.ToString()) + "'} "));
    }
コード例 #40
0
    public void LoadData()
    {
        if (node != null)
        {
            string layoutText = String.Empty;

            // get template info
            pti = PageTemplateInfoProvider.GetPageTemplateInfo(node.GetUsedPageTemplateId());
            if ((pti == null) && (DocumentContext.CurrentPageInfo != null) && (DocumentContext.CurrentPageInfo.UsedPageTemplateInfo != null))
            {
                pti = DocumentContext.CurrentPageInfo.UsedPageTemplateInfo;
            }

            if (pti != null)
            {
                PageTemplateLayoutTypeEnum type = PageTemplateLayoutTypeEnum.PageTemplateLayout;
                // Try get device layout
                object layoutObject = PageTemplateDeviceLayoutInfoProvider.GetLayoutObject(pti, DeviceContext.CurrentDeviceProfile, out type);
                layoutText = pti.PageTemplateLayout;

                // Set layout text with dependence on current layout type
                switch (type)
                {
                    // Shared layouts
                    case PageTemplateLayoutTypeEnum.SharedLayout:
                    case PageTemplateLayoutTypeEnum.DeviceSharedLayout:
                    case PageTemplateLayoutTypeEnum.SharedLayoutMapped:
                        layoutText = (layoutObject as LayoutInfo).LayoutCode;
                        break;

                    // Custom device layout
                    case PageTemplateLayoutTypeEnum.DeviceLayout:
                        layoutText = (layoutObject as PageTemplateDeviceLayoutInfo).LayoutCode;
                        break;
                }
            }
            ltlLayoutCode.Text = HTMLHelper.EnsureLineEnding(HTMLHelper.HighlightHTML(layoutText), "<br />");
            ltlLayoutCode.Text = RegexHelper.GetRegex("[ ](?![^<>]*>)").Replace(ltlLayoutCode.Text, "&nbsp;");

            // Load node data
            if (!RequestHelper.IsPostBack())
            {
                txtBodyCss.Text = node.NodeBodyElementAttributes;
                txtDocType.Text = node.NodeDocType;
                txtHeadTags.Value = node.NodeHeadTags;
            }
        }

        lblAfterDocType.Text = HighlightHTML("<html>") + "<br />" + AddSpaces(1) + HighlightHTML("<head>");
        lblAfterHeadTags.Text = AddSpaces(1) + HighlightHTML("</head>");
        lblAfterLayout.Text = AddSpaces(1) + HighlightHTML("</body>") + "<br />" + HighlightHTML("</html>");
        lblBodyEnd.Text = HighlightHTML(">");
        lblBodyStart.Text = AddSpaces(1) + HighlightHTML("<body " + HttpUtility.HtmlDecode(mBody));
    }
コード例 #41
0
    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);

        dialog = (QueryHelper.GetBoolean("dialog", false) || QueryHelper.GetBoolean("isindialog", false));

        // Initialize controls.
        ShowWarning(GetString("PageTemplate_WebParts.Warning"), null, null);
        lblWPConfig.Text = GetString("PageTemplate_WebParts.WebPartsConfiguration");

        // Get 'templateid' from querystring.
        templateId = QueryHelper.GetInteger("templateId", 0);

        pnlObjectLocking.ObjectManager.OnSaveData += new EventHandler<SimpleObjectManagerEventArgs>(ObjectManager_OnSaveData);
        pnlObjectLocking.ObjectManager.OnAfterAction += new EventHandler<SimpleObjectManagerEventArgs>(ObjectManager_OnAfterAction);

        pti = PageTemplateInfoProvider.GetPageTemplateInfo(templateId);
        EditedObject = pti;

        if (!RequestHelper.IsPostBack())
        {
            LoadData();
        }
    }
コード例 #42
0
    /// <summary>
    /// Reloads the controls on the page to the appropriate state
    /// </summary>
    protected void ReloadControls()
    {
        node = Node;

        if (node.NodeAliasPath == "/")
        {
            // For root, inherit option means no page template
            radInherit.ResourceString = "Template.NoTemplate";
        }

        // Get the template ID
        int templateId = SelectedTemplateID;
        string suffix = null;
        bool inherit = radInherit.Checked;

        plcUIClone.Visible = false;
        plcUIEdit.Visible = false;
        plcUISave.Visible = false;

        if (inherit)
        {
            // Inherited
            selectorEnabled = false;

            // Inherit
            templateId = GetInheritedPageTemplateId(node);

            if (templateId > 0)
            {
                suffix = " " + GetString("Template.Inherited");
            }
        }
        else
        {
            // Standard selection
            selectorEnabled = true;
        }

        // Set modal dialogs
        string modalScript = String.Format("modalDialog('{0}?startingpath=/&templateId={1}&siteid={2}&documentid={3}&inherits={4}', 'SaveNewTemplate', 720, 430); return false;", ResolveUrl("~/CMSModules/PortalEngine/UI/Layout/SaveNewPageTemplate.aspx"), templateId, SiteContext.CurrentSiteID, Node.DocumentID, radInherit.Checked);
        btnSave.OnClientClick = modalScript;

        String url = UIContextHelper.GetElementDialogUrl("cms.design", "PageTemplate.EditPageTemplate", templateId, String.Format("aliaspath={0}", node.NodeAliasPath));
        btnEditTemplateProperties.OnClientClick = "modalDialog('" + url + "', 'Template edit', '95%', '95%');return false;";

        // Load the page template name
        pageTemplateInfo = PageTemplateInfoProvider.GetPageTemplateInfo(templateId);
        if (pageTemplateInfo != null)
        {
            txtTemplate.Text = ResHelper.LocalizeString(pageTemplateInfo.DisplayName);

            plcUISave.Visible = true;
            plcUIEdit.Visible = (!pageTemplateInfo.IsReusable || currentUser.IsAuthorizedPerUIElement("CMS.Content", "Template.ModifySharedTemplates"));
            plcUIClone.Visible = pageTemplateInfo.IsReusable || inherit;
        }
        else
        {
            txtTemplate.Text = GetString("Template.SelectorNoTemplate");
        }

        txtTemplate.Text += suffix;
    }
コード例 #43
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;
    }
コード例 #44
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);
                        }

                        string script = "SelectTemplate(" + pt.PageTemplateId + ");";

                        ltlScript.Text = ScriptHelper.GetScript(script);
                    }
                }
                catch (Exception ex)
                {
                    ShowError(ex.Message);
                }
            }
            else
            {
                ShowError(result);
            }
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        this.CurrentMaster.DisplaySiteSelectorPanel = true;

        if (webpartId != "")
        {
            // Get pageinfo
            pi = GetPageInfo(aliasPath, templateId);
            if (pi == null)
            {
                RedirectToInformation(GetString("WebPartProperties.WebPartNotFound"));
                return;
            }

            // Get page template
            pti = pi.PageTemplateInfo;
            if ((pti != null) && ((pti.TemplateInstance != null)))
            {
                webPart = pti.TemplateInstance.GetWebPart(instanceGuid, zoneVariantId, variantId) ?? pti.GetWebPart(webpartId);
            }
        }

        // If the web part is not found, do not continue
        if (webPart == null)
        {
            RedirectToInformation(GetString("WebPartProperties.WebPartNotFound"));
            return;
        }
        else
        {
            // Get the current layout name
            if (String.IsNullOrEmpty(LayoutCodeName))
            {
                mLayoutCodeName = ValidationHelper.GetString(webPart.GetValue("WebPartLayout"), "");
            }
        }

        // Strings
        lblLayouts.Text = GetString("WebPartPropertise.LayoutList");

        if (!RequestHelper.IsPostBack())
        {
            LoadLayouts();
        }

        // Add default drop down items
        selectLayout.ShowDefaultItem = true;

        // Add new item
        if (SettingsKeyProvider.UsingVirtualPathProvider && CurrentUser.IsAuthorizedPerResource("CMS.Design", "EditCode"))
        {
            selectLayout.ShowNewItem = true;
        }

        webPartInfo = WebPartInfoProvider.GetWebPartInfo(webPart.WebPartType);

        // Where condition
        selectLayout.WhereCondition = "WebPartLayoutWebPartID =" + webPartInfo.WebPartID;

        if (QueryHelper.GetBoolean("reload", false))
        {
            SetContentPage();
        }
    }
コード例 #46
0
    /// <summary>
    /// Loads the web part form.
    /// </summary>
    protected void LoadForm()
    {
        // Load settings
        if (!string.IsNullOrEmpty(Request.Form[hdnIsNewWebPart.UniqueID]))
        {
            IsNewWebPart = ValidationHelper.GetBoolean(Request.Form[hdnIsNewWebPart.UniqueID], false);
        }
        if (!string.IsNullOrEmpty(Request.Form[hdnInstanceGUID.UniqueID]))
        {
            InstanceGUID = ValidationHelper.GetGuid(Request.Form[hdnInstanceGUID.UniqueID], Guid.Empty);
        }

        // Indicates whether the new variant should be chosen when closing this dialog
        selectNewVariant = IsNewVariant;

        // Try to find the web part variant in the database and set its VariantID
        if (IsNewVariant)
        {
            Hashtable varProperties = WindowHelper.GetItem("variantProperties") as Hashtable;
            if (varProperties != null)
            {
                // Get the variant code name from the WindowHelper
                string variantName = ValidationHelper.GetString(varProperties["codename"], string.Empty);

                // Check if the variant exists in the database
                int variantIdFromDB = VariantHelper.GetVariantID(VariantMode, PageTemplateID, variantName, true);

                // Set the variant id from the database
                if (variantIdFromDB > 0)
                {
                    VariantID = variantIdFromDB;
                    IsNewVariant = false;
                }
            }
        }

        if (!String.IsNullOrEmpty(WebPartID))
        {
            // Get the page info
            pi = CMSWebPartPropertiesPage.GetPageInfo(AliasPath, PageTemplateID, CultureCode);
            if (pi != null)
            {
                // Get template
                pti = pi.UsedPageTemplateInfo;

                // Get template instance
                templateInstance = pti.TemplateInstance;

                if (!IsNewWebPart)
                {
                    // Standard zone
                    webPartInstance = templateInstance.GetWebPart(InstanceGUID, WebPartID);

                    // If the web part not found, try to find it among the MVT/CP variants
                    if (webPartInstance == null)
                    {
                        // MVT/CP variant
                        templateInstance.LoadVariants(false, VariantModeEnum.None);
                        webPartInstance = templateInstance.GetWebPart(InstanceGUID, -1, 0);

                        // Set the VariantMode according to the selected web part/zone variant
                        if ((webPartInstance != null) && (webPartInstance.ParentZone != null))
                        {
                            VariantMode = (webPartInstance.VariantMode != VariantModeEnum.None) ? webPartInstance.VariantMode : webPartInstance.ParentZone.VariantMode;
                        }
                        else
                        {
                            VariantMode = VariantModeEnum.None;
                        }
                    }
                    else
                    {
                        // Ensure that the ZoneVariantID is not set when the web part was found in a regular zone
                        ZoneVariantID = 0;
                    }

                    if ((VariantID > 0) && (webPartInstance != null) && (webPartInstance.PartInstanceVariants != null))
                    {
                        // Check OnlineMarketing permissions.
                        if (CheckPermissions("Read"))
                        {
                            webPartInstance = webPartInstance.FindVariant(VariantID);
                        }
                        else
                        {
                            // Not authorized for OnlineMarketing - Manage.
                            RedirectToInformation(String.Format(GetString("general.permissionresource"), "Read", (VariantMode == VariantModeEnum.ContentPersonalization) ? "CMS.ContentPersonalization" : "CMS.MVTest"));
                        }
                    }

                    if (webPartInstance == null)
                    {
                        UIContext.EditedObject = null;
                        return;
                    }
                }

                mainWebPartInstance = webPartInstance;

                // Keep xml version
                if (webPartInstance != null)
                {
                    xmlVersion = webPartInstance.XMLVersion;

                    // If data source ID set, edit the data source
                    if (NestedWebPartID > 0)
                    {
                        webPartInstance = webPartInstance.NestedWebParts[NestedWebPartKey] ?? new WebPartInstance() { InstanceGUID = Guid.NewGuid() };
                    }
                }

                // Get the form info
                FormInfo fi = GetWebPartFormInfo();

                // Get the form definition
                if (fi != null)
                {
                    fi.ContextResolver.Settings.RelatedObject = templateInstance;
                    form.AllowMacroEditing = ((WebPartTypeEnum)wpi.WebPartType != WebPartTypeEnum.Wireframe);

                    // Get data row with required columns
                    DataRow dr = fi.GetDataRow();

                    if (IsNewWebPart || (xmlVersion > 0))
                    {
                        fi.LoadDefaultValues(dr);
                    }

                    // Load values from existing web part
                    LoadDataRowFromWebPart(dr, webPartInstance, fi);

                    // Set a unique WebPartControlID for the new variant
                    if (IsNewVariant || IsNewWebPart)
                    {
                        // Set control ID
                        string webPartControlId = ValidationHelper.GetCodeName(wpi.WebPartDisplayName);
                        dr["WebPartControlID"] = WebPartZoneInstance.GetUniqueWebPartId(webPartControlId, templateInstance);
                    }

                    // Init the form
                    InitForm(form, dr, fi);

                    AddExportLink();
                }
                else
                {
                    UIContext.EditedObject = null;
                }
            }
        }
    }
コード例 #47
0
    protected void Page_Load(object sender, EventArgs e)
    {
        if (RequestHelper.IsPostBack())
        {
            int currentId = ValidationHelper.GetInteger(this.hdnTemplateCode.Value, 0);
            pti = PageTemplateInfoProvider.GetPageTemplateInfo(currentId);
        }

        ScriptHelper.RegisterDialogScript(this.Page);
        WindowHelper.Add("ShowOnlySiteTemplates", ShowOnlySiteTemplates);

        ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "SelectTemplate", ScriptHelper.GetScript(
            "function OpenSelectTemplateDialog (selectorId){modalDialog('" + ResolveUrl("~/CMSModules/PortalEngine/UI/Layout/PageTemplateSelector.aspx") + "?selectorid=' + selectorId + '&selectedPageTemplateId=' + document.getElementById(selectorId + '_hdnTemplateCode').value, 'PageTemplateSelection', '90%', '85%'); return false;} \n" +
            "function OnSelectPageTemplate(templateID, templateName, selectorId) { if (document.getElementById(selectorId + '_txtTemplate') != null) document.getElementById(selectorId + '_txtTemplate').value = templateName; if (document.getElementById(selectorId + '_hdnTemplateCode') != null) document.getElementById(selectorId + '_hdnTemplateCode').value = templateID; if ((templateName != null)&&(templateName != '')) setTimeout('BTN_Enable(\"' + selectorId + '_btnClear\");', 0);} \n" +
            "function ClearTemplate(selectorId) { document.getElementById(selectorId + '_txtTemplate').value = ''; document.getElementById(selectorId + '_hdnTemplateCode').value = 0; return false;} \n"
            ));

        btnSelect.OnClientClick = "return OpenSelectTemplateDialog('" + this.ClientID + "');";
        btnClear.Attributes.Add("onclick", "return ClearTemplate('" + this.ClientID + "');");

        btnSelect.Text = GetString("general.select");
        btnClear.Text = GetString("general.clear");
    }
コード例 #48
0
 /// <summary>
 /// Checks out the page template
 /// </summary>
 /// <param name="pageTemplateInfo">Page template to check out</param>
 private void CheckOutTemplate(PageTemplateInfo pageTemplateInfo)
 {
     var objectManager = CMSObjectManager.GetCurrent(Page);
     if ((objectManager != null) && CMSObjectManager.KeepNewObjectsCheckedOut)
     {
         objectManager.CheckOutObject(pageTemplateInfo);
     }
 }
コード例 #49
0
 /// <summary>
 /// Select button click
 /// </summary>
 protected void btnSelect_Click(object sender, EventArgs e)
 {
     pti = null;
 }
コード例 #50
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;
    }
    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);

        CurrentMaster.DisplaySiteSelectorPanel = true;

        if (webpartId != "")
        {
            // Get pageinfo
            pi = GetPageInfo(aliasPath, templateId, cultureCode);
            if (pi == null)
            {
                RedirectToInformation(GetString("WebPartProperties.WebPartNotFound"));
                return;
            }

            // Get page template
            pti = pi.UsedPageTemplateInfo;
            if ((pti != null) && ((pti.TemplateInstance != null)))
            {
                webPart = pti.TemplateInstance.GetWebPart(instanceGuid, zoneVariantId, variantId) ?? pti.TemplateInstance.GetWebPart(webpartId);
            }
        }

        bool hide = false;

        // If the web part is not found, do not continue
        // Redirect to information is in main window, just hide selector
        if (webPart == null)
        {
            hide = true;
        }
        else
        {
            webPartInfo = WebPartInfoProvider.GetWebPartInfo(webPart.WebPartType);
            if (webPartInfo == null)
            {
                hide = true;
            }

            // Get the current layout name
            if (String.IsNullOrEmpty(LayoutCodeName))
            {
                mLayoutCodeName = ValidationHelper.GetString(webPart.GetValue("WebPartLayout"), "");
            }
        }

        if (hide)
        {
            pnlContent.Visible = false;
            return;
        }

        // Strings
        lblLayouts.Text = GetString("WebPartPropertise.LayoutList");

        // Add default drop down items
        selectLayout.ShowDefaultItem = true;

        // Add new item
        if (CurrentUser.IsAuthorizedPerResource("CMS.Design", "EditCode"))
        {
            selectLayout.ShowNewItem = true;
        }

        // Set where condition
        selectLayout.WhereCondition = "WebPartLayoutWebPartID =" + webPartInfo.WebPartID;

        // Hide loader, it appears on wrong position because of small frame
        selectLayout.UniSelector.OnBeforeClientChanged = "if (window.Loader) { window.Loader.hide(); }";

        // Load layouts
        if (!RequestHelper.IsPostBack() && (LayoutCodeName != ""))
        {
            selectLayout.Value = LayoutCodeName;
        }

        // Reload the content page if required
        if (!RequestHelper.IsPostBack() || QueryHelper.GetBoolean("reload", false))
        {
            LoadContentPage();
        }
    }
コード例 #52
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 = SiteContext.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;
    }
コード例 #53
0
    /// <summary>
    /// OnInit event (BasicForm initialization).
    /// </summary>
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);

        string zoneId = QueryHelper.GetString("zoneid", "");
        string aliasPath = QueryHelper.GetString("aliaspath", "");
        int templateId = QueryHelper.GetInteger("templateid", 0);
        string culture = QueryHelper.GetString("culture", LocalizationContext.PreferredCultureCode);
        mZoneVariantID = QueryHelper.GetInteger("variantid", 0);
        mIsNewVariant = QueryHelper.GetBoolean("isnewvariant", false);
        variantMode = VariantModeFunctions.GetVariantModeEnum(QueryHelper.GetString("variantmode", string.Empty));

        // When displaying an existing variant of a web part, get the variant mode for its original web part
        if (ZoneVariantID > 0)
        {
            PageTemplateInfo pti = PageTemplateInfoProvider.GetPageTemplateInfo(templateId);
            if ((pti != null) && ((pti.TemplateInstance != null)))
            {
                // Get the original webpart and retrieve its variant mode
                WebPartZoneInstance zoneInstance = pti.TemplateInstance.GetZone(zoneId);
                if ((zoneInstance != null) && (zoneInstance.VariantMode != VariantModeEnum.None))
                {
                    variantMode = zoneInstance.VariantMode;
                }
            }
        }

        // Try to find the zone variant in the database and set its VariantID
        if (IsNewVariant)
        {
            Hashtable properties = WindowHelper.GetItem("variantProperties") as Hashtable;
            if (properties != null)
            {
                // Get the variant code name from the WindowHelper
                string variantName = ValidationHelper.GetString(properties["codename"], string.Empty);

                // Check if the variant exists in the database
                int variantIdFromDB = VariantHelper.GetVariantID(variantMode, templateId, variantName, true);

                // Set the variant id from the database
                if (variantIdFromDB > 0)
                {
                    mZoneVariantID = variantIdFromDB;
                    mIsNewVariant = false;
                }
            }
        }

        if (!String.IsNullOrEmpty(zoneId))
        {
            // Get page info
            pi = CMSWebPartPropertiesPage.GetPageInfo(aliasPath, templateId, culture);
            if (pi == null)
            {
                ShowInformation(GetString("webpartzone.notfound"));
                pnlFormArea.Visible = false;
                return;
            }

            // Get template
            pti = pi.UsedPageTemplateInfo;
            if (pti != null)
            {
                // Get web part zone
                pti.TemplateInstance.EnsureZone(zoneId);
                webPartZone = pti.TemplateInstance.GetZone(zoneId);

                if ((ZoneVariantID > 0) && (webPartZone != null) && (webPartZone.ZoneInstanceVariants != null))
                {
                    // Check OnlineMarketing permissions
                    if (CheckPermissions("Read"))
                    {
                        webPartZone = webPartZone.ZoneInstanceVariants.Find(v => v.VariantID.Equals(ZoneVariantID));
                    }
                    else
                    {
                        // Not authorized for OnlineMarketing - Manage.
                        RedirectToInformation(String.Format(GetString("general.permissionresource"), "Read", (variantMode == VariantModeEnum.ContentPersonalization) ? "CMS.ContentPersonalization" : "CMS.MVTest"));
                    }
                }
                if (webPartZone == null)
                {
                    ShowInformation(GetString("webpartzone.notfound"));
                    pnlFormArea.Visible = false;
                    return;
                }

                FormInfo fi = BuildFormInfo(webPartZone);

                // Get the DataRow and fill the data row with values
                DataRow dr = fi.GetDataRow();
                foreach (DataColumn column in dr.Table.Columns)
                {
                    try
                    {
                        DataHelper.SetDataRowValue(dr, column.ColumnName, webPartZone.GetValue(column.ColumnName));
                    }
                    catch
                    {
                    }
                }

                // Initialize Form
                formElem.DataRow = dr;
                formElem.MacroTable = webPartZone.MacroTable;
                formElem.SubmitButton.Visible = false;
                formElem.SiteName = SiteContext.CurrentSiteName;
                formElem.FormInformation = fi;
                formElem.ShowPrivateFields = true;
                formElem.OnAfterDataLoad += formElem_OnAfterDataLoad;

                // HTML editor toolbar
                if (fi.UsesHtmlArea())
                {
                    plcToolbarPadding.Visible = true;
                    plcToolbar.Visible = true;
                    pnlFormArea.Height = 285;
                }
            }
        }
    }
コード例 #54
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(where);
        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;
    }
コード例 #55
0
    protected void Page_Load(object sender, EventArgs e)
    {
        pageTemplateId = QueryHelper.GetInteger("templateid", 0);
        if (pageTemplateId > 0)
        {
            pt = PageTemplateInfoProvider.GetPageTemplateInfo(pageTemplateId);
        }

        categorySelector.StartingPath = QueryHelper.GetString("startingpath", String.Empty);

        // Check the authorization per UI element
        var currentUser = MembershipContext.AuthenticatedUser;
        if (!currentUser.IsAuthorizedPerUIElement("CMS.Content", new[] { "Properties", "Properties.Template", "Template.SaveAsNew" }, SiteContext.CurrentSiteName))
        {
            RedirectToUIElementAccessDenied("CMS.Content", "Properties;Properties.Template;Template.SaveAsNew");
        }

        PageTitle.TitleText = GetString("PortalEngine.SaveNewPageTemplate.PageTitle");

        // Set category selector
        if (!RequestHelper.IsPostBack() && (pt != null))
        {
            categorySelector.Value = pt.CategoryID.ToString();
        }
    }
コード例 #56
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;
    }
コード例 #57
0
    /// <summary>
    /// Handles form's after data load event.
    /// </summary>
    protected void EditForm_OnAfterDataLoad(object sender, EventArgs e)
    {
        etaCode.Language = LanguageEnum.HTML;

        cssLayoutEditor.Editor.Language = LanguageEnum.CSS;
        cssLayoutEditor.Editor.ShowBookmarks = true;

        // Do not check changes
        DocumentManager.RegisterSaveChangesScript = false;

        EditForm.OnBeforeSave += EditForm_OnBeforeSave;

        etaCode.Language = LanguageEnum.HTML;

        wpli = UIContext.EditedObject as WebPartLayoutInfo;

        layoutID = QueryHelper.GetInteger("layoutid", 0);

        isSiteManager = ((MembershipContext.AuthenticatedUser.IsGlobalAdministrator && layoutID != 0) || QueryHelper.GetBoolean("sitemanager", false));
        isNew = (LayoutCodeName == "|new|");
        isDefault = (LayoutCodeName == "|default|") || (!isSiteManager && string.IsNullOrEmpty(LayoutCodeName));

        if ((wpli == null) || (wpli.WebPartLayoutID <= 0))
        {
            isNew |= isSiteManager;
            editMenuElem.ObjectManager.ObjectType = WebPartLayoutInfo.OBJECT_TYPE;
        }

        ScriptHelper.RegisterClientScriptBlock(Page, typeof(string), "PreviewHierarchyPerformAction", ScriptHelper.GetScript("function actionPerformed(action) { if (action == 'saveandclose') { document.getElementById('" + hdnClose.ClientID + "').value = '1'; } " + editMenuElem.ObjectManager.GetJSFunction(ComponentEvents.SAVE, null, null) + "; }"));

        currentUser = MembershipContext.AuthenticatedUser;

        // Get web part instance (if edited in CMSDesk)
        if ((webpartId != "") && !isSiteManager)
        {
            // Get page info
            pi = CMSWebPartPropertiesPage.GetPageInfo(aliasPath, templateId, culture);
            if (pi == null)
            {
                ShowInformation(GetString("WebPartProperties.WebPartNotFound"), persistent: false);
            }
            else
            {
                // Get page template
                pti = pi.UsedPageTemplateInfo;
                if ((pti != null) && ((pti.TemplateInstance != null)))
                {
                    webPart = pti.TemplateInstance.GetWebPart(instanceGuid, zoneVariantId, variantId) ?? pti.TemplateInstance.GetWebPart(webpartId);
                }
            }
        }

        // If the web part is not found, try web part ID
        if (webPart == null)
        {
            wpi = WebPartInfoProvider.GetWebPartInfo(ValidationHelper.GetInteger(webpartId, 0));
            if (wpi == null)
            {
                ShowError(GetString("WebPartProperties.WebPartNotFound"));
                startWithFullScreen = false;
                return;
            }
        }
        else
        {
            // CMS desk
            wpi = WebPartInfoProvider.GetWebPartInfo(webPart.WebPartType);
            if (string.IsNullOrEmpty(LayoutCodeName))
            {
                // Get the current layout name
                LayoutCodeName = ValidationHelper.GetString(webPart.GetValue("WebPartLayout"), "");
            }
        }

        if (wpi != null)
        {
            // Load the web part information
            webPartInfo = wpi;
            bool loaded = false;

            if (!RequestHelper.IsPostBack())
            {
                if (wpli != null)
                {
                    editMenuElem.MenuPanel.Visible = true;

                    // Read-only code text area
                    etaCode.Editor.ReadOnly = false;
                    loaded = true;
                }

                if (!loaded)
                {
                    string fileName = webPartInfo.WebPartFileName;

                    if (webPartInfo.WebPartParentID > 0)
                    {
                        WebPartInfo pwpi = WebPartInfoProvider.GetWebPartInfo(webPartInfo.WebPartParentID);
                        if (pwpi != null)
                        {
                            fileName = pwpi.WebPartFileName;
                        }
                    }

                    if (!fileName.StartsWithCSafe("~"))
                    {
                        fileName = "~/CMSWebparts/" + fileName;
                    }

                    // Check if filename exist
                    if (!FileHelper.FileExists(fileName))
                    {
                        ShowError(GetString("WebPartProperties.FileNotExist"));
                        pnlContent.Visible = false;
                        editMenuElem.ObjectEditMenu.Visible = false;
                    }
                    else
                    {
                        // Load default web part layout code
                        etaCode.Text = File.ReadAllText(Server.MapPath(fileName));

                        // Load default web part CSS
                        cssLayoutEditor.Text = wpi.WebPartCSS;
                        startWithFullScreen = false;
                    }
                }
            }
        }

        if (((wpli == null) || (wpli.WebPartLayoutID <= 0)) && isSiteManager)
        {
            editMenuElem.Title.Breadcrumbs.AddBreadcrumb(new BreadcrumbItem
            {
                Text = GetString("WebParts.Layout"),
                RedirectUrl = String.Format("{0}&parentobjectid={1}&displaytitle={2}", UIContextHelper.GetElementUrl("CMS.Design", "WebPart.Layout"), QueryHelper.GetInteger("webpartid", 0), false)
            });

            editMenuElem.Title.Breadcrumbs.AddBreadcrumb(new BreadcrumbItem
            {
                Text = GetString("webparts_layout_newlayout"),
            });
        }

        ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "ApplyButton", ScriptHelper.GetScript(
            "function SetRefresh(refreshpage) { document.getElementById('" + hidRefresh.ClientID + @"').value = refreshpage; }
             function OnApplyButton(refreshpage) { SetRefresh(refreshpage); actionPerformed('save');refreshPreview(); }
             function OnOKButton(refreshpage) { SetRefresh(refreshpage); actionPerformed('saveandclose'); } "));

        InitLayoutForm();
    }
コード例 #58
0
 /// <summary>
 /// Checks out the page template
 /// </summary>
 /// <param name="pageTemplateInfo">Page template to check out</param>
 private void CheckOutTemplate(PageTemplateInfo pageTemplateInfo)
 {
     var objectManager = CMSObjectManager.GetCurrent(this) ?? new CMSObjectManager();
     if (CMSObjectManager.KeepNewObjectsCheckedOut)
     {
         objectManager.CheckOutObject(pageTemplateInfo);
     }
 }
コード例 #59
0
    protected void Page_Load(object sender, EventArgs e)
    {
        pageTemplateId = QueryHelper.GetInteger("templateid", 0);
        if (pageTemplateId > 0)
        {
            pt = PageTemplateInfoProvider.GetPageTemplateInfo(pageTemplateId);
        }

        // Check the authorization per UI element
        CurrentUserInfo currentUser = CMSContext.CurrentUser;
        if (!currentUser.IsAuthorizedPerUIElement("CMS.Content", new string[] { "Properties", "Properties.Template", "Template.SaveAsNew" }, CMSContext.CurrentSiteName))
        {
            RedirectToCMSDeskUIElementAccessDenied("CMS.Content", "Properties;Properties.Template;Template.SaveAsNew");
        }

        CurrentMaster.Title.TitleText = GetString("PortalEngine.SaveNewPageTemplate.PageTitle");
        CurrentMaster.Title.TitleImage = GetImageUrl("CMSModules/CMS_Content/Template/save.png");

        lblTemplateDisplayName.Text = GetString("PortalEngine.SaveNewPageTemplate.DisplayName");
        lblTemplateDescription.Text = GetString("PortalEngine.SaveNewPageTemplate.Description");
        lblTemplateCategory.Text = GetString("PortalEngine.SaveNewPageTemplate.Category");
        lblTemplateCodeName.Text = GetString("PortalEngine.SaveNewPageTemplate.CodeName");

        btnOk.Text = GetString("general.ok");
        btnCancel.Text = GetString("general.cancel");

        rfvTemplateDisplayName.ErrorMessage = GetString("PortalEngine.SaveNewPageTemplate.rfvDisplayNameMsg");
        rfvTemplateCodeName.ErrorMessage = GetString("PortalEngine.SaveNewPageTemplate.rfvCodeNameMsg");

        // Preset category
        if (!RequestHelper.IsPostBack())
        {
            if (pt != null)
            {
                categorySelector.Value = pt.CategoryID.ToString();
            }
        }
    }
コード例 #60
0
    /// <summary>
    /// Init event handler.
    /// </summary>
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);

        // Setup basic form on live site
        formCustom.AllowMacroEditing = false;
        formCustom.IsLiveSite = IsLiveSite;

        // Load settings
        if (!String.IsNullOrEmpty(Request.Form[hdnIsNewWebPart.UniqueID]))
        {
            IsNewWidget = ValidationHelper.GetBoolean(Request.Form[hdnIsNewWebPart.UniqueID], false);
        }
        if (!String.IsNullOrEmpty(Request.Form[hdnInstanceGUID.UniqueID]))
        {
            InstanceGUID = ValidationHelper.GetGuid(Request.Form[hdnInstanceGUID.UniqueID], Guid.Empty);
        }

        // Try to find the widget variant in the database and set its VariantID
        if (IsNewVariant)
        {
            Hashtable properties = WindowHelper.GetItem("variantProperties") as Hashtable;
            if (properties != null)
            {
                // Get the variant code name from the WindowHelper
                string variantName = ValidationHelper.GetString(properties["codename"], string.Empty);

                // Check if the variant exists in the database
                int variantIdFromDB = 0;
                if (VariantMode == VariantModeEnum.MVT)
                {
                    variantIdFromDB = ModuleCommands.OnlineMarketingGetMVTVariantId(PageTemplateId, variantName);
                }
                else if (VariantMode == VariantModeEnum.ContentPersonalization)
                {
                    variantIdFromDB = ModuleCommands.OnlineMarketingGetContentPersonalizationVariantId(PageTemplateId, variantName);
                }

                // Set the variant id from the database
                if (variantIdFromDB > 0)
                {
                    VariantID = variantIdFromDB;
                    IsNewVariant = false;
                }
            }
        }

        EnsureDashboard();

        if (!String.IsNullOrEmpty(WidgetId) && !IsInline)
        {
            // Get pageinfo
            try
            {
                pi = CMSWebPartPropertiesPage.GetPageInfo(AliasPath, PageTemplateId);
            }
            catch (PageNotFoundException)
            {
                // Do not throw exception if page info not found (e.g. bad alias path)
            }

            if (pi == null)
            {
                lblInfo.Text = GetString("Widgets.Properties.aliasnotfound");
                lblInfo.Visible = true;
                pnlFormArea.Visible = false;
                return;
            }

            // Get template
            pti = pi.PageTemplateInfo;

            // Get template instance
            templateInstance = CMSPortalManager.GetTemplateInstanceForEditing(pi);

            if (!IsNewWidget)
            {
                // Get the instance of widget
                widgetInstance = templateInstance.GetWebPart(InstanceGUID, WidgetId);
                if (widgetInstance == null)
                {
                    lblInfo.Text = GetString("Widgets.Properties.WidgetNotFound");
                    lblInfo.Visible = true;
                    pnlFormArea.Visible = false;
                    return;
                }

                if ((VariantID > 0) && (widgetInstance != null) && (widgetInstance.PartInstanceVariants != null))
                {
                    // Check OnlineMarketing permissions.
                    if (CheckPermissions("Read"))
                    {
                        widgetInstance = pi.DocumentTemplateInstance.GetWebPart(InstanceGUID, WidgetId);
                        widgetInstance = widgetInstance.PartInstanceVariants.Find(v => v.VariantID.Equals(VariantID));
                        // Set the widget variant mode
                        if (widgetInstance != null)
                        {
                            VariantMode = widgetInstance.VariantMode;
                        }
                    }
                    else
                    {
                        // Not authorised for OnlineMarketing - Manage.
                        RedirectToInformation(String.Format(GetString("general.permissionresource"), "Read", (VariantMode == VariantModeEnum.ContentPersonalization) ? "CMS.ContentPersonalization" : "CMS.MVTest"));
                    }
                }

                // Get widget info by widget name(widget type)
                wi = WidgetInfoProvider.GetWidgetInfo(widgetInstance.WebPartType);
            }
            // Widget instance hasn't created yet
            else
            {
                wi = WidgetInfoProvider.GetWidgetInfo(ValidationHelper.GetInteger(WidgetId, 0));
            }

            CMSPage.EditedObject = wi;
            zoneType = ZoneType;

            // Get the zone to which it inserts
            WebPartZoneInstance zone = templateInstance.GetZone(ZoneId);
            if ((zoneType == WidgetZoneTypeEnum.None) && (zone != null))
            {
                zoneType = zone.WidgetZoneType;
            }

            // Check security
            CurrentUserInfo currentUser = CMSContext.CurrentUser;

            switch (zoneType)
            {
                // Group zone => Only group widgets and group admin
                case WidgetZoneTypeEnum.Group:
                    // Should always be, only group widget are allowed in group zone
                    if (!wi.WidgetForGroup || (!currentUser.IsGroupAdministrator(pi.NodeGroupId) && ((CMSContext.ViewMode != ViewModeEnum.Design) || ((CMSContext.ViewMode == ViewModeEnum.Design) && (!currentUser.IsAuthorizedPerResource("CMS.Design", "Design"))))))
                    {
                        if (OnNotAllowed != null)
                        {
                            OnNotAllowed(this, null);
                        }
                    }
                    break;

                // Widget must be allowed for editor zones
                case WidgetZoneTypeEnum.Editor:
                    if (!wi.WidgetForEditor)
                    {
                        if (OnNotAllowed != null)
                        {
                            OnNotAllowed(this, null);
                        }
                    }
                    break;

                // Widget must be allowed for user zones
                case WidgetZoneTypeEnum.User:
                    if (!wi.WidgetForUser)
                    {
                        if (OnNotAllowed != null)
                        {
                            OnNotAllowed(this, null);
                        }
                    }
                    break;

                // Widget must be allowed for dasboard zones
                case WidgetZoneTypeEnum.Dashboard:
                    if (!wi.WidgetForDashboard)
                    {
                        if (OnNotAllowed != null)
                        {
                            OnNotAllowed(this, null);
                        }
                    }
                    break;
            }

            // Check security
            if ((zoneType != WidgetZoneTypeEnum.Group) && !WidgetRoleInfoProvider.IsWidgetAllowed(wi, currentUser.UserID, currentUser.IsAuthenticated()))
            {
                if (OnNotAllowed != null)
                {
                    OnNotAllowed(this, null);
                }
            }

            // Get form schemas
            wpi = WebPartInfoProvider.GetWebPartInfo(wi.WidgetWebPartID);
            FormInfo zoneTypeDefinition = PortalHelper.GetPositionFormInfo(zoneType);
            string widgetProperties = FormHelper.MergeFormDefinitions(wpi.WebPartProperties, wi.WidgetProperties);
            FormInfo fi = FormHelper.GetWidgetFormInfo(wi.WidgetName, Enum.GetName(typeof(WidgetZoneTypeEnum), zoneType), widgetProperties, zoneTypeDefinition, true);

            if (fi != null)
            {
                // Check if there are some editable properties
                FormFieldInfo[] ffi = fi.GetFields(true, false);
                if ((ffi == null) || (ffi.Length == 0))
                {
                    lblInfo.Visible = true;
                    lblInfo.Text = GetString("widgets.emptyproperties");
                }

                // Get datarows with required columns
                DataRow dr = CombineWithDefaultValues(fi, wi);

                // Load default values for new widget
                if (IsNewWidget)
                {
                    fi.LoadDefaultValues(dr, FormResolveTypeEnum.Visible);

                    // Overide default value and set title as widget display name
                    DataHelper.SetDataRowValue(dr, "WidgetTitle", ResHelper.LocalizeString(wi.WidgetDisplayName));
                }

                // Load values from existing widget
                LoadDataRowFromWidget(dr);

                // Init HTML toolbar if exists
                InitHTMLToobar(fi);

                // Init the form
                InitForm(formCustom, dr, fi);

                // Set the context name
                formCustom.ControlContext.ContextName = CMS.SiteProvider.ControlContext.WIDGET_PROPERTIES;
            }
        }

        if (IsInline)
        {
            //Load text definition from session
            string definition = ValidationHelper.GetString(SessionHelper.GetValue("WidgetDefinition"), string.Empty);
            if (String.IsNullOrEmpty(definition))
            {
                definition = Request.Form[hdnWidgetDefinition.UniqueID];
            }
            else
            {
                hdnWidgetDefinition.Value = definition;
            }

            Hashtable parameters = null;

            if (IsNewWidget)
            {
                // new wdiget - load widget info by id
                if (!String.IsNullOrEmpty(WidgetId))
                {
                    wi = WidgetInfoProvider.GetWidgetInfo(ValidationHelper.GetInteger(WidgetId, 0));
                }
                else
                {
                    // Try to get widget from codename
                    mName = QueryHelper.GetString("WidgetName", String.Empty);
                    wi = WidgetInfoProvider.GetWidgetInfo(mName);
                }
            }
            else
            {
                if (definition == null)
                {
                    ShowError("widget.failedtoload");
                    return;
                }

                //parse defininiton
                parameters = CMSDialogHelper.GetHashTableFromString(definition);

                //trim control name
                if (parameters["name"] != null)
                {
                    mName = parameters["name"].ToString();

                }

                wi = WidgetInfoProvider.GetWidgetInfo(mName);
            }
            if (wi == null)
            {
                ShowError("widget.failedtoload");
                return;
            }

            //If widget cant be used asi inline
            if (!wi.WidgetForInline)
            {
                ShowError("widget.cantbeusedasinline");
                return;
            }

            //Test permission for user
            CurrentUserInfo currentUser = CMSContext.CurrentUser;
            if (!WidgetRoleInfoProvider.IsWidgetAllowed(wi, currentUser.UserID, currentUser.IsAuthenticated()))
            {
                mIsValidWidget = false;
                OnNotAllowed(this, null);
            }

            //If user is editor, more properties are shown
            WidgetZoneTypeEnum zoneType = WidgetZoneTypeEnum.User;
            if (currentUser.IsEditor)
            {
                zoneType = WidgetZoneTypeEnum.Editor;
            }

            WebPartInfo wpi = WebPartInfoProvider.GetWebPartInfo(wi.WidgetWebPartID);
            string widgetProperties = FormHelper.MergeFormDefinitions(wpi.WebPartProperties, wi.WidgetProperties);
            FormInfo zoneTypeDefinition = PortalHelper.GetPositionFormInfo(zoneType);
            FormInfo fi = FormHelper.GetWidgetFormInfo(wi.WidgetName, Enum.GetName(typeof(WidgetZoneTypeEnum), zoneType), widgetProperties, zoneTypeDefinition, true);

            if (fi != null)
            {
                // Check if there are some editable properties
                mFields = fi.GetFields(true, true);
                if ((mFields == null) || (mFields.Length == 0))
                {
                    lblInfo.Visible = true;
                    lblInfo.Text = GetString("widgets.emptyproperties");
                }

                // Get datarows with required columns
                DataRow dr = CombineWithDefaultValues(fi, wi);

                if (IsNewWidget)
                {
                    // Load default values for new widget
                    fi.LoadDefaultValues(dr, FormResolveTypeEnum.Visible);
                }
                else
                {
                    foreach (string key in parameters.Keys)
                    {
                        string value = parameters[key].ToString();
                        // Test if given property exists
                        if (dr.Table.Columns.Contains(key) && !String.IsNullOrEmpty(value))
                        {
                            try
                            {
                                dr[key] = value;
                            }
                            catch
                            {
                            }
                        }
                    }
                }

                // Overide default value and set title as widget display name
                DataHelper.SetDataRowValue(dr, "WidgetTitle", wi.WidgetDisplayName);

                // Init HTML toolbar if exists
                InitHTMLToobar(fi);
                // Init the form
                InitForm(formCustom, dr, fi);

                // Set the context name
                formCustom.ControlContext.ContextName = CMS.SiteProvider.ControlContext.WIDGET_PROPERTIES;
            }
        }
    }