Пример #1
0
        public CmsDependencyMessage[] ValidateByPagePath()
        {
            List <CmsDependencyMessage> ret = new List <CmsDependencyMessage>();

            if (LanguagesThatMustHavePagePath.Length == 0)
            {
                ret.Add(CmsDependencyMessage.Error("Could not run CmsPageDependency for path '" + PagePath + "' - no languages are configured!"));
            }
            else
            {
                foreach (CmsLanguage lang in LanguagesThatMustHavePagePath)
                {
                    try
                    {
                        CmsPage page = CmsContext.getPageByPath(PagePath);
                        if (Exists == ExistsMode.MustExist)
                        {
                            if (page.ID < 0)
                            {
                                ret.Add(CmsDependencyMessage.Error("could not find required page '" + PagePath + "' 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 Path '" + PagePath + "'"));
                            }
                        }
                        else if (Exists == ExistsMode.MustNotExist)
                        {
                            if (page.ID >= 0)
                            {
                                ret.Add(CmsDependencyMessage.Error("The page '" + PagePath + "' in language '" + lang.shortCode + "' should NOT exist."));
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        if (Exists == ExistsMode.MustExist)
                        {
                            ret.Add(CmsDependencyMessage.Error("Could not find required page '" + PagePath + "' in language '" + lang.shortCode + "'"));
                        }
                    }
                } // foreach Language
            }
            return(ret.ToArray());
        }
Пример #2
0
        public void ProcessRequest(HttpContext context)
        {
            string pagePath = "";

            if (context.Request.QueryString["p"] != null)
            {
                pagePath = context.Request.QueryString["p"];
            }

            string controlPath = "";

            if (context.Request.QueryString["c"] != null)
            {
                controlPath = context.Request.QueryString["c"];
            }

            CmsPage pageToRenderControlFor = CmsContext.getPageByPath(pagePath);

            if (pageToRenderControlFor.Id < 0)
            {
                context.Response.ContentType = "text/plain";
                context.Response.Write("Error: CMS page not found");
                context.Response.Flush();
                context.Response.End();
                return;
            }

            string appPath = context.Request.ApplicationPath;

            if (!appPath.EndsWith("/"))
            {
                appPath += "/";
            }


            string html = pageToRenderControlFor.TemplateEngine.renderControlToString(controlPath);


            context.Response.ContentType = "text/html";
            context.Response.Write(html);
        } // ProcessRequest
Пример #3
0
        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();
            }
        }