Exemple #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);
        }
Exemple #2
0
        /// <summary>
        /// returns true if any of the .name fields in the specified pageLangInfos matches ChildPage.names, returns TRUE
        /// </summary>
        /// <param name="parentPageId"></param>
        /// <param name="pageLangInfos"></param>
        /// <returns></returns>
        public static bool childPageWithNameExists(int parentPageId, CmsPageLanguageInfo[] pageLangInfos)
        {
            CmsPage parentPage = CmsPage.FetchPageById(parentPageId);

            if (parentPage.ID < 0)
            {
                return(false);
            }

            foreach (CmsPage p in parentPage.ChildPages)
            {
                foreach (CmsPageLanguageInfo langInfo in pageLangInfos)
                {
                    string      nameToFind   = langInfo.name;
                    CmsLanguage pageLanguage = CmsLanguage.GetFromHaystack(langInfo.languageShortCode, CmsConfig.Languages);
                    if (String.Compare(p.getName(pageLanguage), nameToFind, true) == 0)
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
        public void ProcessRequest(HttpContext context)
        {
            string pagePath = "";

            if (context.Request.QueryString["p"] != null)
            {
                pagePath = context.Request.QueryString["p"];
            }
            CmsLanguage pageLang = CmsConfig.Languages[0];

            if (CmsConfig.Languages.Length > 1 && context.Request.QueryString["l"] != null)
            {
                string      langCode = context.Request.QueryString["l"];
                CmsLanguage testLang = CmsLanguage.GetFromHaystack(langCode, CmsConfig.Languages);
                if (!testLang.isInvalidLanguage)
                {
                    pageLang = testLang;
                }
            }

            CmsPage pageToRenderRSSFor = CmsContext.getPageByPath(pagePath, pageLang);

            if (pageToRenderRSSFor.ID < 0 || !pageToRenderRSSFor.currentUserCanRead)
            {
                context.Response.ContentType = "text/plain";
                context.Response.Write("Error: CMS page not found");
                context.Response.Flush();
                context.Response.End();
            }
            else
            {
                // -- generate the RssFeed
                RssFeed rssFeed = new RssFeed(System.Text.UTF8Encoding.UTF8);
                rssFeed.Version = RssVersion.RSS20;


                // -- setup the RSS channel
                string titlePrefix  = CmsConfig.getConfigValue("pageTitlePrefix", "");
                string titlePostfix = CmsConfig.getConfigValue("pageTitlePostfix", "");

                string     rssTitle       = titlePrefix + pageToRenderRSSFor.getTitle(pageLang) + titlePostfix;
                string     rssDescription = pageToRenderRSSFor.getSearchEngineDescription(pageLang);
                Uri        rssLink        = new Uri(pageToRenderRSSFor.getUrl(CmsUrlFormat.FullIncludingProtocolAndDomainName, pageLang), UriKind.RelativeOrAbsolute);
                RssChannel rssChannel     = new RssChannel(rssTitle, rssDescription, rssLink);
                rssChannel.Generator = "HatCMS: https://code.google.com/p/hatcms/";

                // -- call "GetRssFeedItems()" for each placeholder.
                CmsPlaceholderDefinition[] phDefs = pageToRenderRSSFor.getAllPlaceholderDefinitions();

                foreach (CmsPlaceholderDefinition phDef in phDefs)
                {
                    RssItem[] items = Placeholders.PlaceholderUtils.GetRssFeedItems(phDef.PlaceholderType, pageToRenderRSSFor, phDef, pageLang);
                    foreach (RssItem item in items)
                    {
                        rssChannel.Items.Add(item);
                    }
                }

                rssFeed.Channels.Add(rssChannel);

                context.Response.ContentType = "application/rss+xml";
                rssFeed.Write(context.Response.OutputStream);
                context.Response.Flush();
                context.Response.End();
            }
        }