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()); }
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
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(); } }