Пример #1
0
        private string getMacroReplacement(string macro, string macroPrefix, string macroSuffix, CmsPage sourcePage)
        {
            string cleaned = macro.Substring(macroPrefix.Length, macro.Length - macroPrefix.Length - macroSuffix.Length);

            string[] parts = cleaned.Split(new char[] { '_' }, StringSplitOptions.RemoveEmptyEntries);

            if (parts.Length >= 1)
            {
                int         pageId = Convert.ToInt32(parts[0]);
                CmsLanguage lang   = CmsContext.currentLanguage;
                if (parts.Length >= 2 && includePageLanguageInMacro())
                {
                    string langCode = parts[1];
                    lang = CmsLanguage.GetFromHaystack(langCode, CmsConfig.Languages);
                }

                if (!lang.isInvalidLanguage)
                {
                    CmsPage p = CmsContext.getPageById(pageId);
                    if (p.Id >= 0)
                    {
                        return(p.getUrl(lang));
                    }
                }
            }

            string pageNotFoundUrl = CmsContext.ApplicationPath + "PageNotFound" + macro.Replace("/", "") + "source_" + sourcePage.Id.ToString() + ".aspx";

            return(pageNotFoundUrl);
        }
Пример #2
0
        public CmsDependencyMessage[] ValidateByPageId()
        {
            List <CmsDependencyMessage> ret = new List <CmsDependencyMessage>();

            if (LanguagesThatMustHavePagePath.Length == 0)
            {
                ret.Add(CmsDependencyMessage.Error("Could not run CmsPageDependency for pageId '" + PageId + "' - no languages are configured!"));
            }
            else
            {
                foreach (CmsLanguage lang in LanguagesThatMustHavePagePath)
                {
                    try
                    {
                        CmsPage page = CmsContext.getPageById(PageId);
                        if (Exists == ExistsMode.MustExist)
                        {
                            if (page.ID < 0)
                            {
                                ret.Add(CmsDependencyMessage.Error("Could not find required pageId '" + PageId + "' in language '" + lang.shortCode + "'"));
                            }
                            else if (PageTemplate != "" && String.Compare(page.TemplateName, PageTemplate, true) != 0)
                            {
                                ret.Add(CmsDependencyMessage.Error("The required page '" + PagePath + "' was found, but does not have the correct template (required: '" + PageTemplate + "'); actual: '" + page.TemplateName + "'"));
                            }
                            else
                            {
                                ret.AddRange(CmsTemplateDependency.testTemplate(page.TemplateName, "Page ID #" + PageId.ToString()));
                            }
                        }
                        else if (Exists == ExistsMode.MustNotExist)
                        {
                            if (page.ID >= 0)
                            {
                                ret.Add(CmsDependencyMessage.Error("PageId '" + PageId + "' in language '" + lang.shortCode + "' should NOT exist."));
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        if (Exists == ExistsMode.MustExist)
                        {
                            ret.Add(CmsDependencyMessage.Error("Could not find required pageId '" + PageId + "' in language '" + lang.shortCode + "'"));
                        }
                    }
                } // foreach Language
            }
            return(ret.ToArray());
        }
        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 CmsPage ToCmsPageObject()
        {
            CmsPage newPage = new CmsPage();

            newPage.LanguageInfo = NewPageLanguageInfos;

            newPage.ShowInMenu   = ShowInMenu;
            newPage.TemplateName = Template;
            newPage.ParentID     = ParentPageId;

            // -- set sortOrdinal
            CmsPage parentPage = CmsContext.getPageById(ParentPageId);

            if (parentPage.ID >= 0)
            {
                int highestSiblingSortOrdinal = -1;
                foreach (CmsPage sibling in parentPage.ChildPages)
                {
                    highestSiblingSortOrdinal = Math.Max(sibling.SortOrdinal, highestSiblingSortOrdinal);
                }
                if (highestSiblingSortOrdinal > -1)
                {
                    newPage.SortOrdinal = highestSiblingSortOrdinal + 1;
                }
                else
                {
                    newPage.SortOrdinal = 0;
                }
            }
            else
            {
                newPage.SortOrdinal = 0;
            }

            return(newPage);
        }