public CmsPageEditMenuAction(CmsEditMenuActionCategory actionCategory, CmsEditMenuActionItem actionItem, CmsEditMode requiredEditMode, int sortOrdinal, RenderToString renderDelegate)
 {
     ActionCategory       = actionCategory;
     ActionItem           = actionItem;
     RequiredEditMode     = requiredEditMode;
     SortOrdinal          = sortOrdinal;
     doRenderToString     = renderDelegate;
     CreateNewPageOptions = new CmsCreateNewPageOptions();
 }
            public static string CreateNewPage(CmsPageEditMenuAction action, CmsPage pageToRenderFor, CmsLanguage langToRenderFor)
            {
                action.CreateNewPageOptions = CmsCreateNewPageOptions.CreateInstanceWithDefaultsForCurrentUser(pageToRenderFor);
                NameValueCollection createPageParams = action.CreateNewPageOptions.GetCreatePagePopupParams();

                if (action.CreateNewPageOptions.RequiresUserInput())
                {
                    return(RenderPopupLink("CreateNewPagePath", "/_admin/createPage", createPageParams, pageToRenderFor, langToRenderFor, "<strong>Create</strong> a new sub-page", 500, 400));
                }
                else
                {
                    return(RenderLink("CreateNewPagePath", "/_admin/createPage", createPageParams, pageToRenderFor, langToRenderFor, "<strong>Create</strong> a new sub-page"));
                }
            }
        public static CmsCreateNewPageOptions ReadFromQueryString()
        {
            int parentId = PageUtils.getFromForm("ParentPageId", -1);
            CmsCreateNewPageOptions ret = new CmsCreateNewPageOptions();

            // -- modify smart defaults if the query string isn't formatted correctly.
            if (parentId >= 0)
            {
                CmsPage parentPage = CmsContext.getPageById(parentId);
                if (parentPage.ID >= 0)
                {
                    parentId = parentPage.ID;
                    ret      = CreateInstanceWithDefaultsForCurrentUser(parentPage);
                }
            }

            ret.PromptUserForFilename   = PageUtils.getFromForm("pFilename", ret.PromptUserForFilename);
            ret.PromptUserForTitle      = PageUtils.getFromForm("pTitle", ret.PromptUserForTitle);
            ret.PromptUserForMenuTitle  = PageUtils.getFromForm("pMenuTitle", ret.PromptUserForMenuTitle);
            ret.PromptUserForShowInMenu = PageUtils.getFromForm("pShowInMenu", ret.PromptUserForShowInMenu);
            ret.PromptUserForTemplate   = PageUtils.getFromForm("pTemplate", ret.PromptUserForTemplate);
            ret.PromptUserForParentPage = PageUtils.getFromForm("pParentPage", ret.PromptUserForParentPage);

            List <CmsPageLanguageInfo> langInfos = new List <CmsPageLanguageInfo>();

            foreach (CmsLanguage lang in CmsConfig.Languages)
            {
                CmsPageLanguageInfo langInfo = CmsPageLanguageInfo.GetFromHaystack(lang, ret.NewPageLanguageInfos); // returns a new CmsPageLangInfo if not found
                langInfo.languageShortCode       = lang.shortCode;
                langInfo.menuTitle               = PageUtils.getFromForm("MenuTitle_" + lang.shortCode, langInfo.menuTitle);
                langInfo.title                   = PageUtils.getFromForm("Title_" + lang.shortCode, langInfo.title);
                langInfo.searchEngineDescription = PageUtils.getFromForm("SEDesc_" + lang.shortCode, langInfo.searchEngineDescription);
                langInfo.name = PageUtils.getFromForm("Name_" + lang.shortCode, langInfo.name);

                langInfos.Add(langInfo);
            } // foreach lang

            ret.NewPageLanguageInfos = langInfos.ToArray();

            ret.ShowInMenu   = PageUtils.getFromForm("ShowInMenu", ret.ShowInMenu);
            ret.Template     = PageUtils.getFromForm("Template", ret.Template);
            ret.ParentPageId = parentId;

            return(ret);
        }
        public static CmsCreateNewPageOptions CreateInstanceWithNoUserPrompts(CmsPageLanguageInfo[] newPageLangInfos, bool newPageShowInMenu, string newPageTemplate, int newPageParentId)
        {
            CmsCreateNewPageOptions ret = new CmsCreateNewPageOptions();

            ret.PromptUserForFilename   = false;
            ret.PromptUserForTitle      = false;
            ret.PromptUserForMenuTitle  = false;
            ret.PromptUserForShowInMenu = false;
            ret.PromptUserForTemplate   = false;
            ret.PromptUserForParentPage = false;

            ret.NewPageLanguageInfos = newPageLangInfos;
            ret.ShowInMenu           = newPageShowInMenu;
            ret.Template             = newPageTemplate;
            ret.ParentPageId         = newPageParentId;

            return(ret);
        }
        public static CmsCreateNewPageOptions CreateInstanceWithDefaultsForCurrentUser(CmsPage editMenuPage)
        {
            CmsCreateNewPageOptions ret = new CmsCreateNewPageOptions();
            // CreateNewPage_DefaultTemplate; use "~~ParentTemplate~~" for the new page's parent's template
            string defaultTemplate = CmsConfig.getConfigValue("CreateNewPage_DefaultTemplate", editMenuPage.TemplateName);

            if (string.Compare(defaultTemplate, "~~ParentTemplate~~", true) == 0)
            {
                defaultTemplate = editMenuPage.TemplateName;
            }

            if (CmsContext.currentUserIsSuperAdmin)
            {
                ret.PromptUserForFilename   = true;
                ret.PromptUserForTitle      = true;
                ret.PromptUserForMenuTitle  = true;
                ret.PromptUserForShowInMenu = true;
                ret.PromptUserForTemplate   = true;
                ret.PromptUserForParentPage = true;

                List <CmsPageLanguageInfo> langInfos = new List <CmsPageLanguageInfo>();
                foreach (CmsLanguage lang in CmsConfig.Languages)
                {
                    CmsPageLanguageInfo l = new CmsPageLanguageInfo();
                    l.languageShortCode = lang.shortCode;
                    l.name      = "";
                    l.title     = "";
                    l.menuTitle = "";
                    l.searchEngineDescription = "";

                    langInfos.Add(l);
                }

                ret.NewPageLanguageInfos = langInfos.ToArray();

                ret.ShowInMenu   = true;
                ret.Template     = defaultTemplate;
                ret.ParentPageId = editMenuPage.ID;
            }
            else if (editMenuPage.currentUserCanWrite)
            {
                ret.PromptUserForFilename   = true;
                ret.PromptUserForTitle      = true;
                ret.PromptUserForMenuTitle  = false;
                ret.PromptUserForShowInMenu = false;
                ret.PromptUserForTemplate   = false;
                ret.PromptUserForParentPage = false;

                List <CmsPageLanguageInfo> langInfos = new List <CmsPageLanguageInfo>();
                foreach (CmsLanguage lang in CmsConfig.Languages)
                {
                    CmsPageLanguageInfo l = new CmsPageLanguageInfo();
                    l.languageShortCode = lang.shortCode;
                    l.name      = "";
                    l.title     = "";
                    l.menuTitle = "";
                    l.searchEngineDescription = "";

                    langInfos.Add(l);
                }

                ret.NewPageLanguageInfos = langInfos.ToArray();

                ret.ShowInMenu   = true;
                ret.Template     = defaultTemplate;
                ret.ParentPageId = editMenuPage.ID;
            }
            else
            {
                ret.PromptUserForFilename   = false;
                ret.PromptUserForTitle      = false;
                ret.PromptUserForMenuTitle  = false;
                ret.PromptUserForShowInMenu = false;
                ret.PromptUserForTemplate   = false;
                ret.PromptUserForParentPage = false;

                List <CmsPageLanguageInfo> langInfos = new List <CmsPageLanguageInfo>();
                foreach (CmsLanguage lang in CmsConfig.Languages)
                {
                    CmsPageLanguageInfo l = new CmsPageLanguageInfo();
                    l.languageShortCode = lang.shortCode;
                    l.name      = "";
                    l.title     = "";
                    l.menuTitle = "";
                    l.searchEngineDescription = "";

                    langInfos.Add(l);
                }

                ret.NewPageLanguageInfos = langInfos.ToArray();

                ret.ShowInMenu   = true;
                ret.Template     = defaultTemplate;
                ret.ParentPageId = editMenuPage.ID;
            }

            return(ret);
        }