public static string CheckForSpecialURL(SiteData site) { string sRequestedURL = "/"; if (IsWebView) { sRequestedURL = CurrentScriptName; string sFileRequested = sRequestedURL; if (!sRequestedURL.ToLowerInvariant().StartsWith(AdminFolderPath) && site != null) { if (sFileRequested.ToLowerInvariant().StartsWith(site.BlogFolderPath.ToLowerInvariant())) { if (site.GetSpecialFilePathPrefixes().Where(x => sFileRequested.ToLowerInvariant().StartsWith(x)).Count() > 0) { if (site.Blog_Root_ContentID.HasValue) { using (ISiteNavHelper navHelper = SiteNavFactory.GetSiteNavHelper()) { SiteNav blogNavPage = navHelper.GetLatestVersion(site.SiteID, site.Blog_Root_ContentID.Value); if (blogNavPage != null) { sRequestedURL = blogNavPage.FileName; } } } } } } } return(sRequestedURL); }
public List <ContentCategory> GetPageCategories(int takeTop) { if (takeTop < 0) { takeTop = 300000; } if (SecurityData.AdvancedEditMode && !this.IsPageLocked) { using (CMSConfigHelper cmsHelper = new CMSConfigHelper()) { cmsHelper.OverrideKey(this.ThePage.FileName); if (cmsHelper.cmsAdminContent != null) { return(cmsHelper.cmsAdminContent.ContentCategories.Take(takeTop).ToList()); } } } else { using (ISiteNavHelper navHelper = SiteNavFactory.GetSiteNavHelper()) { return(navHelper.GetCategoryListForPost(this.TheSite.SiteID, takeTop, this.ThePage.Root_ContentID)); } } return(new List <ContentCategory>()); }
public static HtmlString GetSiteMap() { StringBuilder sb = new StringBuilder(); SiteData site = SiteData.CurrentSite; List <SiteNav> lstNav = new List <SiteNav>(); using (ISiteNavHelper navHelper = SiteNavFactory.GetSiteNavHelper()) { //lstNav = navHelper.GetTwoLevelNavigation(SiteData.CurrentSiteID, true); lstNav = navHelper.GetLevelDepthNavigation(SiteData.CurrentSiteID, 4, true); } lstNav.RemoveAll(x => x.ShowInSiteMap == false); DateTime dtMax = lstNav.Min(x => x.EditDate); string DateFormat = "yyyy-MM-dd"; XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; settings.Encoding = Encoding.UTF8; settings.CheckCharacters = true; XmlWriter writer = XmlWriter.Create(sb, settings); //writer.WriteStartDocument(); writer.WriteProcessingInstruction("xml", "version=\"1.0\" encoding=\"utf-8\""); writer.WriteRaw("\n"); writer.WriteStartElement("urlset", "http://www.sitemaps.org/schemas/sitemap/0.9"); writer.WriteAttributeString("xmlns", "xsi", null, "http://www.w3.org/2001/XMLSchema-instance"); writer.WriteAttributeString("xsi", "schemaLocation", null, "http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"); writer.WriteRaw("\n"); writer.WriteStartElement("url"); writer.WriteElementString("loc", site.MainURL); writer.WriteElementString("lastmod", dtMax.ToString(DateFormat)); writer.WriteElementString("priority", "1.0"); writer.WriteEndElement(); writer.WriteRaw("\n"); // always, hourly, daily, weekly, monthly, yearly, never foreach (SiteNav n in lstNav) { writer.WriteStartElement("url"); writer.WriteElementString("loc", site.ConstructedCanonicalURL(n)); writer.WriteElementString("lastmod", n.EditDate.ToString(DateFormat)); writer.WriteElementString("changefreq", "weekly"); writer.WriteElementString("priority", n.Parent_ContentID.HasValue ? "0.60" : "0.80"); writer.WriteEndElement(); writer.WriteRaw("\n"); } writer.WriteEndDocument(); writer.Flush(); writer.Close(); return(new HtmlString(sb.ToString())); }
public void GenerateSuccessResponse(HttpRequest request, XmlWriter writer, TrackBackInfo tb) { SiteNav navData = null; using (ISiteNavHelper navHelper = SiteNavFactory.GetSiteNavHelper()) { navData = navHelper.FindByFilename(SiteData.CurrentSiteID, tb.BlogPostID); } string sReferer = null; string sIP = request.ServerVariables["REMOTE_ADDR"].ToString(); try { sReferer = request.ServerVariables["HTTP_REFERER"].ToString(); } catch { } PostComment pc = new PostComment(); pc.ContentCommentID = Guid.NewGuid(); pc.Root_ContentID = navData.Root_ContentID; pc.CreateDate = SiteData.CurrentSite.Now; pc.IsApproved = false; pc.IsSpam = false; pc.CommenterIP = sIP; pc.CommenterEmail = "trackback"; pc.CommenterName = tb.BlogName; pc.PostCommentText = tb.BlogExcerpt; #if DEBUG pc.PostCommentText = request.UserAgent + "\r\n" + tb.RequestSourceURL + "\r\n" + tb.BlogExcerpt; #endif pc.CommenterURL = tb.RequestSourceURL; if (!string.IsNullOrEmpty(sReferer)) { pc.CommenterURL = sReferer; } pc.Save(); writer.WriteStartElement("response"); writer.WriteElementString("error", "0"); writer.WriteStartElement("rss"); writer.WriteAttributeString("version", "0.91"); writer.WriteStartElement("channel"); if (navData != null) { writer.WriteElementString("title", navData.NavMenuText); writer.WriteElementString("link", SiteData.CurrentSite.ConstructedCanonicalURL(navData)); writer.WriteElementString("description", navData.PageTextPlainSummary); } writer.WriteElementString("language", ""); writer.WriteEndElement(); writer.WriteEndElement(); writer.WriteEndElement(); writer.Flush(); writer.Close(); }
public void RenderSiteMap(HttpContext context) { HttpRequest request = context.Request; HttpResponse response = context.Response; SiteData site = SiteData.CurrentSite; List <SiteNav> lstNav = new List <SiteNav>(); using (ISiteNavHelper navHelper = SiteNavFactory.GetSiteNavHelper()) { //lstNav = navHelper.GetTwoLevelNavigation(SiteData.CurrentSiteID, true); lstNav = navHelper.GetLevelDepthNavigation(SiteData.CurrentSiteID, 4, true); } lstNav.RemoveAll(x => x.ShowInSiteMap == false); DateTime dtMax = lstNav.Min(x => x.EditDate); string DateFormat = "yyyy-MM-dd"; response.Buffer = false; response.Clear(); response.ContentType = "application/xml"; XmlWriter writer = XmlWriter.Create(response.Output); writer.WriteStartDocument(); writer.WriteRaw("\n"); writer.WriteStartElement("urlset", "http://www.sitemaps.org/schemas/sitemap/0.9"); writer.WriteAttributeString("xmlns", "xsi", null, "http://www.w3.org/2001/XMLSchema-instance"); writer.WriteAttributeString("xsi", "schemaLocation", null, "http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"); writer.WriteRaw("\n"); writer.WriteStartElement("url"); writer.WriteElementString("loc", site.MainURL); writer.WriteElementString("lastmod", dtMax.ToString(DateFormat)); writer.WriteElementString("priority", "1.0"); writer.WriteEndElement(); writer.WriteRaw("\n"); // always, hourly, daily, weekly, monthly, yearly, never foreach (SiteNav n in lstNav) { writer.WriteStartElement("url"); writer.WriteElementString("loc", site.ConstructedCanonicalURL(n)); writer.WriteElementString("lastmod", n.EditDate.ToString(DateFormat)); writer.WriteElementString("changefreq", "weekly"); writer.WriteElementString("priority", n.Parent_ContentID.HasValue ? "0.60" : "0.80"); writer.WriteEndElement(); writer.WriteRaw("\n"); } writer.WriteEndDocument(); writer.Flush(); writer.Close(); }
public string SendTrackback(string sourceURL, Guid siteID, string sTgtURL) { this.DestinationUrl = new Uri(sTgtURL); this.BlogSite = SiteData.GetSiteFromCache(siteID); using (ISiteNavHelper navHelper = SiteNavFactory.GetSiteNavHelper()) { this.SourcePage = navHelper.FindByFilename(siteID, sourceURL); } return(SendTrackback()); }
public string SendTrackback(Guid sourceGuid, Guid siteID, string sTgtURL) { this.DestinationUrl = new Uri(sTgtURL); this.BlogSite = SiteData.GetSiteFromCache(siteID); using (ISiteNavHelper navHelper = SiteNavFactory.GetSiteNavHelper()) { this.SourcePage = navHelper.GetLatestVersion(siteID, sourceGuid); } return(SendTrackback()); }
internal List <SiteNav> GetSiteUpdates(ListContentType contentType, int takeTop, List <Guid> lstCategories, List <string> lstCategorySlugs) { List <SiteNav> _siteUpdates = new List <SiteNav>(); if (lstCategories == null) { lstCategories = new List <Guid>(); } if (lstCategorySlugs == null) { lstCategorySlugs = new List <string>(); } if (lstCategories.Any() || lstCategorySlugs.Any()) { contentType = ListContentType.SpecifiedCategories; } using (ISiteNavHelper navHelper = SiteNavFactory.GetSiteNavHelper()) { switch (contentType) { case ListContentType.Blog: _siteUpdates = navHelper.GetLatestPosts(this.TheSite.SiteID, takeTop, !SecurityData.IsAuthEditor); break; case ListContentType.ContentPage: _siteUpdates = navHelper.GetLatest(this.TheSite.SiteID, takeTop, !SecurityData.IsAuthEditor); break; case ListContentType.SpecifiedCategories: if (takeTop > 0) { _siteUpdates = navHelper.GetFilteredContentByIDPagedList(SiteData.CurrentSite, lstCategories, lstCategorySlugs, !SecurityData.IsAuthEditor, takeTop, 0, "GoLiveDate", "DESC"); } else { _siteUpdates = navHelper.GetFilteredContentByIDPagedList(SiteData.CurrentSite, lstCategories, lstCategorySlugs, !SecurityData.IsAuthEditor, 250000, 0, "NavMenuText", "ASC"); } break; } } if (_siteUpdates == null) { _siteUpdates = new List <SiteNav>(); } _siteUpdates = TweakData(_siteUpdates); return(_siteUpdates); }
private List <SyndicationItem> GetRecentPagesOrPosts(RSSFeedInclude feedData) { List <SyndicationItem> syndRSS = new List <SyndicationItem>(); List <SiteNav> lst = new List <SiteNav>(); ContentPageType PageType = new ContentPageType(); using (ISiteNavHelper navHelper = SiteNavFactory.GetSiteNavHelper()) { if (feedData == RSSFeedInclude.PageOnly || feedData == RSSFeedInclude.BlogAndPages) { List <SiteNav> lst1 = navHelper.GetLatest(this.SiteID, 8, true); lst = lst.Union(lst1).ToList(); List <SiteNav> lst2 = navHelper.GetLatestUpdates(this.SiteID, 10, true); lst = lst.Union(lst2).ToList(); } if (feedData == RSSFeedInclude.BlogOnly || feedData == RSSFeedInclude.BlogAndPages) { List <SiteNav> lst1 = navHelper.GetLatestPosts(this.SiteID, 8, true); lst = lst.Union(lst1).ToList(); List <SiteNav> lst2 = navHelper.GetLatestPostUpdates(this.SiteID, 10, true); lst = lst.Union(lst2).ToList(); } } lst.RemoveAll(x => x.ShowInSiteMap == false && x.ContentType == ContentPageType.PageType.ContentEntry); lst.RemoveAll(x => x.BlockIndex == true); foreach (SiteNav sn in lst) { SyndicationItem si = new SyndicationItem(); string sPageURI = RemoveDupeSlashesURL(this.ConstructedCanonicalURL(sn)); Uri PageURI = new Uri(sPageURI); si.Content = new TextSyndicationContent(sn.PageTextPlainSummaryMedium.ToString()); si.Title = new TextSyndicationContent(sn.NavMenuText); si.Links.Add(SyndicationLink.CreateSelfLink(PageURI)); si.AddPermalink(PageURI); si.LastUpdatedTime = sn.EditDate; si.PublishDate = sn.CreateDate; syndRSS.Add(si); } return(syndRSS.OrderByDescending(p => p.PublishDate).ToList()); }
public SiteNav GetSiteNav() { SiteNav sd = null; if (SiteData.IsPageSampler || !SiteData.IsWebView) { sd = SiteNavHelper.GetSamplerView(); } else { using (ISiteNavHelper navHelper = SiteNavFactory.GetSiteNavHelper()) { sd = navHelper.GetLatestVersion(this.SiteID, this.Root_ContentID); } } return(sd); }
public List <ContentDateTally> GetSiteDates(int takeTop) { List <ContentDateTally> lstNav = new List <ContentDateTally>(); if (takeTop < 0) { takeTop = 100000; } using (ISiteNavHelper navHelper = SiteNavFactory.GetSiteNavHelper()) { lstNav = navHelper.GetMonthBlogUpdateList(this.TheSite.SiteID, takeTop, !SecurityData.IsAuthEditor); } lstNav.RemoveAll(x => x.Count < 1); lstNav = lstNav.OrderByDescending(x => x.TallyDate).ToList(); return(lstNav); }
public List <ContentCategory> GetSiteCategories(int takeTop, bool ShowNonZeroCountOnly) { List <ContentCategory> lstNav = new List <ContentCategory>(); if (takeTop < 0) { takeTop = 100000; } using (ISiteNavHelper navHelper = SiteNavFactory.GetSiteNavHelper()) { lstNav = navHelper.GetCategoryList(this.TheSite.SiteID, takeTop); } lstNav.RemoveAll(x => x.Count < 1 && ShowNonZeroCountOnly); lstNav = lstNav.OrderByDescending(x => x.Count).ToList(); return(lstNav); }
protected override IHttpHandler GetHttpHandler(System.Web.Routing.RequestContext requestCtx) { string requestedUri = (string)requestCtx.RouteData.Values["RequestedUri"]; requestedUri = String.IsNullOrEmpty(requestedUri) ? String.Empty : requestedUri.ToLower(); if (!requestedUri.StartsWith("/")) { requestedUri = String.Format("/{0}", requestedUri); } if (requestedUri.EndsWith("/")) { requestedUri = requestedUri.Substring(0, requestedUri.Length - 1); } if (requestedUri.EndsWith(".ashx")) { if (requestedUri == "/rss.ashx") { requestCtx.RouteData.Values["controller"] = ContentCtrlr; requestCtx.RouteData.Values["action"] = "RSSFeed"; return(base.GetHttpHandler(requestCtx)); } if (requestedUri == "/sitemap.ashx") { requestCtx.RouteData.Values["controller"] = ContentCtrlr; requestCtx.RouteData.Values["action"] = "SiteMap"; return(base.GetHttpHandler(requestCtx)); } //if (requestedUri == "/trackback.ashx") { // will be dead link // requestCtx.RouteData.Values["controller"] = ContentCtrlr; // requestCtx.RouteData.Values["action"] = "Trackback"; // return base.GetHttpHandler(requestCtx); //} requestCtx.RouteData.Values["controller"] = ContentCtrlr; requestCtx.RouteData.Values["action"] = "PageNotFound"; requestCtx.RouteData.Values["id"] = null; SiteData.WriteDebugException("cmsroutehandler ashx not matched", new Exception(String.Format("RequestedUri: {0}", requestedUri))); return(base.GetHttpHandler(requestCtx)); } else if (requestedUri.EndsWith(".aspx")) { //since .aspx is not supported requestCtx.RouteData.Values["controller"] = ContentCtrlr; requestCtx.RouteData.Values["action"] = "PageNotFound"; requestCtx.RouteData.Values["id"] = null; } else { string sCurrentPage = SiteData.CurrentScriptName; try { string sScrubbedURL = SiteData.AlternateCurrentScriptName; if (sScrubbedURL.ToLower() != sCurrentPage.ToLower()) { requestedUri = sScrubbedURL; } SiteNav navData = null; bool bIsHomePage = false; bool bIgnorePublishState = SecurityData.AdvancedEditMode || SecurityData.IsAdmin || SecurityData.IsSiteEditor; using (ISiteNavHelper navHelper = SiteNavFactory.GetSiteNavHelper()) { if (SiteData.IsLikelyHomePage(requestedUri)) { navData = navHelper.FindHome(SiteData.CurrentSiteID, !bIgnorePublishState); if (navData != null) { requestedUri = navData.FileName; bIsHomePage = true; } } if (!bIsHomePage) { navData = navHelper.GetLatestVersion(SiteData.CurrentSiteID, !bIgnorePublishState, requestedUri); } if ((SiteData.IsLikelyHomePage(requestedUri)) && navData == null) { navData = SiteNavHelper.GetEmptyHome(); } requestCtx.RouteData.Values["controller"] = ContentCtrlr; if (navData != null) { SiteData.WriteDebugException("cmsroutehandler != null", new Exception(String.Format("Default: {0}", navData.FileName))); requestCtx.RouteData.Values["action"] = "Default"; } else { SiteData.WriteDebugException("cmsroutehandler == null", new Exception(String.Format("_PageNotFound: {0}", sCurrentPage))); requestCtx.RouteData.Values["action"] = "PageNotFound"; } requestCtx.RouteData.Values["id"] = null; } } catch (Exception ex) { SiteData.WriteDebugException("cmsroutehandler_exception_uri", new Exception(String.Format("Exception: {0}", sCurrentPage))); if (DatabaseUpdate.SystemNeedsChecking(ex) || DatabaseUpdate.AreCMSTablesIncomplete()) { requestCtx.RouteData.Values["controller"] = ContentCtrlr; requestCtx.RouteData.Values["action"] = "Default"; requestCtx.RouteData.Values["id"] = null; SiteData.WriteDebugException("cmsroutehandler_exception_systemneedschecking", ex); } else { //something bad has gone down, toss back the error SiteData.WriteDebugException("cmsroutehandler_exception", ex); throw; } } } return(base.GetHttpHandler(requestCtx)); }
public void ProcessRequest(HttpContext context) { using (ISiteNavHelper navHelper = SiteNavFactory.GetSiteNavHelper()) { SiteNav navData = null; string sFileRequested = context.Request.Path; sRequestedURL = sFileRequested; string sScrubbedURL = sFileRequested; sRequestedURL = SiteData.AppendDefaultPath(sRequestedURL); try { sScrubbedURL = SiteData.AlternateCurrentScriptName; if (sScrubbedURL.ToLower() != sRequestedURL.ToLower()) { sFileRequested = sScrubbedURL; bURLOverride = true; } VirtualDirectory.RegisterRoutes(); } catch (Exception ex) { //assumption is database is probably empty / needs updating, so trigger the under construction view if (DatabaseUpdate.SystemNeedsChecking(ex) || DatabaseUpdate.AreCMSTablesIncomplete()) { if (navData == null) { navData = SiteNavHelper.GetEmptyHome(); } } else { //something bad has gone down, toss back the error throw; } } sFileRequested = SiteData.AppendDefaultPath(sFileRequested); if (context.User.Identity.IsAuthenticated) { try { if (context.Request.UrlReferrer != null && !string.IsNullOrEmpty(context.Request.UrlReferrer.AbsolutePath)) { if (context.Request.UrlReferrer.AbsolutePath.ToLower().Contains(FormsAuthentication.LoginUrl.ToLower()) || FormsAuthentication.LoginUrl.ToLower() == sFileRequested.ToLower()) { if (SiteFilename.DashboardURL.ToLower() != sFileRequested.ToLower() && SiteFilename.SiteInfoURL.ToLower() != sFileRequested.ToLower()) { sFileRequested = SiteData.AdminDefaultFile; } } } } catch (Exception ex) { } } if (sFileRequested.ToLower().EndsWith(".aspx") || SiteData.IsLikelyHomePage(sFileRequested)) { bool bIgnorePublishState = SecurityData.AdvancedEditMode || SecurityData.IsAdmin || SecurityData.IsSiteEditor; string queryString = String.Empty; queryString = context.Request.QueryString.ToString(); if (string.IsNullOrEmpty(queryString)) { queryString = String.Empty; } if (!CMSConfigHelper.CheckRequestedFileExistence(sFileRequested, SiteData.CurrentSiteID) || SiteData.IsLikelyHomePage(sFileRequested)) { context.Items[REQ_PATH] = context.Request.PathInfo; context.Items[REQ_QUERY] = context.Request.QueryString.ToString(); // handle a case where this site was migrated from a format where all pages varied on a consistent querystring // allow this QS parm to be set in a config file. if (SiteData.IsLikelyHomePage(sFileRequested)) { string sParm = String.Empty; if (SiteData.OldSiteQuerystring != string.Empty) { if (context.Request.QueryString[SiteData.OldSiteQuerystring] != null) { sParm = context.Request.QueryString[SiteData.OldSiteQuerystring].ToString(); } } if (!string.IsNullOrEmpty(sParm)) { sFileRequested = "/" + sParm + ".aspx"; SiteData.Show301Message(sFileRequested); context.Response.Redirect(sFileRequested); context.Items[REQ_PATH] = sFileRequested; context.Items[REQ_QUERY] = String.Empty; } } try { //periodic test of database up-to-dated-ness if (DatabaseUpdate.TablesIncomplete) { navData = SiteNavHelper.GetEmptyHome(); } else { bool bIsHomePage = false; if (SiteData.IsLikelyHomePage(sFileRequested)) { navData = navHelper.FindHome(SiteData.CurrentSiteID, !bIgnorePublishState); if (SiteData.IsLikelyHomePage(sFileRequested) && navData != null) { sFileRequested = navData.FileName; bIsHomePage = true; } } if (!bIsHomePage) { string pageName = sFileRequested; navData = navHelper.GetLatestVersion(SiteData.CurrentSiteID, !bIgnorePublishState, pageName); } if (SiteData.IsLikelyHomePage(sFileRequested) && navData == null) { navData = SiteNavHelper.GetEmptyHome(); } } } catch (Exception ex) { //assumption is database is probably empty / needs updating, so trigger the under construction view if (DatabaseUpdate.SystemNeedsChecking(ex) || DatabaseUpdate.AreCMSTablesIncomplete()) { if (navData == null) { navData = SiteNavHelper.GetEmptyHome(); } } else { //something bad has gone down, toss back the error throw; } } if (navData != null) { string sSelectedTemplate = navData.TemplateFile; // selectivly engage the cms helper only if in advance mode if (SecurityData.AdvancedEditMode) { using (CMSConfigHelper cmsHelper = new CMSConfigHelper()) { if (cmsHelper.cmsAdminContent != null) { try { sSelectedTemplate = cmsHelper.cmsAdminContent.TemplateFile.ToLower(); } catch { } } } } if (!CMSConfigHelper.CheckFileExistence(sSelectedTemplate)) { sSelectedTemplate = SiteData.DefaultTemplateFilename; } sVirtualReqFile = sFileRequested; if (bURLOverride) { sVirtualReqFile = sRequestedURL; sFileRequested = sRequestedURL; } RewriteCMSPath(context, sSelectedTemplate, queryString); } else { SiteData.PerformRedirectToErrorPage(404, sFileRequested); SiteData.Show404MessageFull(true); } } else { sVirtualReqFile = sFileRequested; RewriteCMSPath(context, sVirtualReqFile, queryString); } } context.ApplicationInstance.CompleteRequest(); } }