private void PopulateControls() { XmlDocument doc = new XmlDocument(); doc.LoadXml("<NewsList></NewsList>"); XmlElement root = doc.DocumentElement; XmlHelper.AddNode(doc, root, "ModuleTitle", this.Title); XmlHelper.AddNode(doc, root, "ZoneTitle", CurrentZone.Name); XmlHelper.AddNode(doc, root, "ViewMore", NewsResources.NewsMoreLinkText); if (ModuleConfiguration.ResourceFileDef.Length > 0 && ModuleConfiguration.ResourceKeyDef.Length > 0) { List <string> lstResourceKeys = ModuleConfiguration.ResourceKeyDef.SplitOnCharAndTrim(';'); foreach (string item in lstResourceKeys) { XmlHelper.AddNode(doc, root, item, ResourceHelper.GetResourceString(ModuleConfiguration.ResourceFileDef, item)); } } CmsBasePage basePage = Page as CmsBasePage; bool userCanUpdate = NewsPermission.CanUpdate; SiteUser currentUser = SiteUtils.GetCurrentSiteUser(); List <News> lstNews = new List <News>(); int languageId = WorkingCulture.LanguageId; if (config.ZoneId > -1 || config.ZoneIds.Length > 0 || config.SortBy > 0) { string zoneRangeIds = string.Empty; if (config.ZoneIds.Length > 0) { zoneRangeIds = config.ZoneIds; } else { int zoneId = config.ZoneId; if (zoneId == 0) { zoneId = CurrentZone.ZoneId; } zoneRangeIds = NewsHelper.GetChildZoneIdToSemiColonSeparatedString(siteSettings.SiteId, zoneId); } lstNews = News.GetPageBySearch2(1, config.MaxItemsToGet, siteSettings.SiteId, zoneRangeIds, 1, languageId, config.NewsType, config.Position, -1, null, null, null, null, null, null, null, config.SortBy); } else { lstNews = News.GetPage(SiteId, -1, languageId, config.NewsType, config.Position, 1, config.MaxItemsToGet); } foreach (News news in lstNews) { XmlElement newsXml = doc.CreateElement("News"); root.AppendChild(newsXml); NewsHelper.BuildNewsDataXml(doc, newsXml, news, timeZone, timeOffset, NewsHelper.BuildEditLink(news, basePage, userCanUpdate, currentUser)); if (config.ShowAllImagesInNewsList) { BuildNewsImagesXml(doc, newsXml, news, languageId); } } XmlHelper.XMLTransform(xmlTransformer, SiteUtils.GetXsltBasePath("news", ModuleConfiguration.XsltFileName), doc); }
public XmlDocument GetPageXml(int zoneId, int pageNumber, int pageSize, out int totalPages) { XmlDocument doc = new XmlDocument(); doc.LoadXml("<NewsList></NewsList>"); XmlElement root = doc.DocumentElement; XmlHelper.AddNode(doc, root, "ModuleTitle", this.moduleTitle); XmlHelper.AddNode(doc, root, "ZoneTitle", basePage.CurrentZone.Name); XmlHelper.AddNode(doc, root, "ZoneDescription", basePage.CurrentZone.Description); XmlHelper.AddNode(doc, root, "ViewMore", NewsResources.NewsMoreLinkText); XmlHelper.AddNode(doc, root, "SiteUrl", basePage.SiteRoot); // add 2013-08-21 Hontam's project XmlHelper.AddNode(doc, root, "PageNumber", pageNumber.ToString()); // add 2014-10-25 RitaCorp's project if (module != null && module.ResourceFileDef.Length > 0 && module.ResourceKeyDef.Length > 0) { List <string> lstResourceKeys = module.ResourceKeyDef.SplitOnCharAndTrim(';'); foreach (string item in lstResourceKeys) { XmlHelper.AddNode(doc, root, item, ResourceHelper.GetResourceString(module.ResourceFileDef, item)); } } int languageId = WorkingCulture.LanguageId; List <News> lstNews = new List <News>(); if (basePage.ViewMode == PageViewMode.WorkInProgress && WebConfigSettings.EnableContentWorkflow && siteSettings.EnableContentWorkflow //&& userCanUpdate && basePage.UserCanAuthorizeZone(zoneId) ) { Guid?userGuid = null; string stateIdList = string.Empty; int workflowId = WorkflowHelper.GetWorkflowId(News.FeatureGuid); int firstWorkflowStateId = WorkflowHelper.GetFirstWorkflowStateId(workflowId); List <WorkflowState> lstWorkflowStates = WorkflowHelper.GetWorkflowStates(workflowId); foreach (WorkflowState wfState in lstWorkflowStates) { if (WorkflowHelper.UserHasStatePermission(lstWorkflowStates, wfState.StateId)) { if (wfState.StateId == firstWorkflowStateId) { userGuid = currentUser.UserGuid; } else { userGuid = null; } stateIdList += wfState.StateId + ";"; } } totalPages = 1; int totalRows = News.GetCountBySearch(siteSettings.SiteId, zoneId.ToString(), config.NewsType, -1, stateIdList, languageId, -1, -1, null, null, null, null, userGuid, string.Empty); if (pageSize > 0) { totalPages = totalRows / pageSize; } if (totalRows <= pageSize) { totalPages = 1; } else if (pageSize > 0) { int remainder; Math.DivRem(totalRows, pageSize, out remainder); if (remainder > 0) { totalPages += 1; } } lstNews = News.GetPageBySearch(siteSettings.SiteId, zoneId.ToString(), config.NewsType, -1, stateIdList, languageId, -1, -1, null, null, null, null, userGuid, string.Empty, pageNumber, pageSize); } else { if (config.ShowAllNews) { string childZoneIds = NewsHelper.GetChildZoneIdToSemiColonSeparatedString(siteSettings.SiteId, zoneId); totalPages = 1; int totalRows = News.GetCountByListZone(siteSettings.SiteId, childZoneIds, config.NewsType, -1, languageId); if (pageSize > 0) { totalPages = totalRows / pageSize; } if (totalRows <= pageSize) { totalPages = 1; } else if (pageSize > 0) { int remainder; Math.DivRem(totalRows, pageSize, out remainder); if (remainder > 0) { totalPages += 1; } } lstNews = News.GetPageByListZone(siteSettings.SiteId, childZoneIds, config.NewsType, -1, languageId, pageNumber, pageSize); } else { totalPages = 1; int totalRows = News.GetCount(siteSettings.SiteId, zoneId, languageId, -1, -1); if (pageSize > 0) { totalPages = totalRows / pageSize; } if (totalRows <= pageSize) { totalPages = 1; } else if (pageSize > 0) { int remainder; Math.DivRem(totalRows, pageSize, out remainder); if (remainder > 0) { totalPages += 1; } } lstNews = News.GetPage(siteSettings.SiteId, zoneId, languageId, -1, -1, pageNumber, pageSize); } } int newsId = WebUtils.ParseInt32FromQueryString("NewsId", -1); foreach (News news in lstNews) { XmlElement newsXml = doc.CreateElement("News"); root.AppendChild(newsXml); NewsHelper.BuildNewsDataXml(doc, newsXml, news, timeZone, timeOffset, NewsHelper.BuildEditLink(news, basePage, userCanUpdate, currentUser)); XmlHelper.AddNode(doc, newsXml, "ApplyText", NewsResources.JobApplyLable); XmlHelper.AddNode(doc, newsXml, "ApplyUrl", this.SiteRoot + "/News/JobApplyDialog.aspx?zoneid=" + zoneId.ToString() + "&NewsID=" + news.NewsID.ToString()); if (newsId > 0) { if (news.NewsID == newsId) { XmlHelper.AddNode(doc, newsXml, "IsActive", "true"); } } if (config.ShowAllImagesInNewsList) { BuildNewsImagesXml(doc, newsXml, news, languageId); } //2015-11-27 if (config.ShowAttributesInNewsList) { BuildNewsAttributesXml(doc, newsXml, news.NewsGuid, languageId); } } if (pageNumber < totalPages) { string pageUrl = SiteUtils.GetCurrentZoneUrl(); if (pageUrl.Contains("?")) { pageUrl += "&pagenumber=" + (pageNumber + 1).ToString(); } else { pageUrl += "?pagenumber=" + (pageNumber + 1).ToString(); } XmlHelper.AddNode(doc, root, "NextPageUrl", pageUrl); } return(doc); }
protected void PopulateControls() { if (parametersAreInvalid) { pnlInnerWrap.Visible = false; return; } if (news.IsDeleted) { if (WebConfigSettings.Custom404Page.Length > 0) { Server.Transfer(WebConfigSettings.Custom404Page); } else { Server.Transfer("~/PageNotFound.aspx"); } return; } if (news.IsPublished && news.EndDate < DateTime.UtcNow) { expired.Visible = true; //http://support.google.com/webmasters/bin/answer.py?hl=en&answer=40132 // 410 means the resource is gone but once existed // google treats it as more permanent than a 404 // and it should result in de-indexing the content Response.StatusCode = 410; Response.StatusDescription = "Content Expired"; if ( !NewsPermission.CanUpdate || !basePage.UserCanAuthorizeZone(news.ZoneID) ) { pnlInnerWrap.Visible = false; return; } } // if not published only the editor can see it if (!news.IsPublished) { bool stopRedirect = false; if (WebConfigSettings.EnableContentWorkflow && basePage.SiteInfo.EnableContentWorkflow) { if (news.StateId.HasValue && WorkflowHelper.UserHasStatePermission(workflowId, news.StateId.Value)) { stopRedirect = true; } } else { if ( (currentUser != null && currentUser.UserGuid == news.UserGuid) || (NewsPermission.CanUpdate && basePage.UserCanAuthorizeZone(news.ZoneID)) ) { stopRedirect = true; } } if (!stopRedirect) { pnlInnerWrap.Visible = false; WebUtils.SetupRedirect(this, SiteUtils.GetCurrentZoneUrl()); return; } } SetupMetaTags(); XmlDocument doc = new XmlDocument(); doc.LoadXml("<NewsDetail></NewsDetail>"); XmlElement root = doc.DocumentElement; //XmlHelper.AddNode(doc, root, "ModuleTitle", module.ModuleTitle); XmlHelper.AddNode(doc, root, "ZoneTitle", basePage.CurrentZone.Name); XmlHelper.AddNode(doc, root, "ZoneDescription", basePage.CurrentZone.Description); XmlHelper.AddNode(doc, root, "ViewMore", NewsResources.NewsMoreLinkText); XmlHelper.AddNode(doc, root, "Title", news.Title); XmlHelper.AddNode(doc, root, "SubTitle", news.SubTitle); XmlHelper.AddNode(doc, root, "ZoneUrl", SiteUtils.GetCurrentZoneUrl()); if (module.ResourceFileDef.Length > 0 && module.ResourceKeyDef.Length > 0) { List <string> lstResourceKeys = module.ResourceKeyDef.SplitOnCharAndTrim(';'); foreach (string item in lstResourceKeys) { XmlHelper.AddNode(doc, root, item, ResourceHelper.GetResourceString(module.ResourceFileDef, item)); } } XmlHelper.AddNode(doc, root, "EditLink", NewsHelper.BuildEditLink(news, basePage, userCanUpdate, currentUser)); //XmlHelper.AddNode(doc, root, "ViewCVLink", GetCVListLink(news.NewsID, news.CommentCount, NewsPermission.CanManageComment)); XmlHelper.AddNode(doc, root, "ApplyText", NewsResources.JobApplyLable); XmlHelper.AddNode(doc, root, "ApplyUrl", this.siteRoot + "/News/JobApplyDialog.aspx?zoneid=" + zoneId.ToString() + "&NewsID=" + newsId.ToString()); XmlHelper.AddNode(doc, root, "ShowOption", news.ShowOption.ToString()); XmlHelper.AddNode(doc, root, "CreatedDate", FormatDate(news.StartDate, NewsResources.NewsDateFormat)); XmlHelper.AddNode(doc, root, "CreatedTime", FormatDate(news.StartDate, NewsResources.NewsTimeFormat)); XmlHelper.AddNode(doc, root, "CreatedDD", FormatDate(news.StartDate, "dd")); XmlHelper.AddNode(doc, root, "CreatedYY", FormatDate(news.StartDate, "yy")); XmlHelper.AddNode(doc, root, "CreatedYYYY", FormatDate(news.StartDate, "yyyy")); XmlHelper.AddNode(doc, root, "CreatedMM", FormatDate(news.StartDate, "MM")); if (WorkingCulture.DefaultName.ToLower() == "vi-vn") { string monthVI = "Tháng " + FormatDate(news.StartDate, "MM"); XmlHelper.AddNode(doc, root, "CreatedMMM", monthVI); XmlHelper.AddNode(doc, root, "CreatedMMMM", monthVI); } else { XmlHelper.AddNode(doc, root, "CreatedMMM", FormatDate(news.StartDate, "MMM")); XmlHelper.AddNode(doc, root, "CreatedMMMM", FormatDate(news.StartDate, "MMMM")); } XmlHelper.AddNode(doc, root, "Code", news.Code); XmlHelper.AddNode(doc, root, "BriefContent", news.BriefContent); XmlHelper.AddNode(doc, root, "FullContent", news.FullContent); XmlHelper.AddNode(doc, root, "ViewCount", news.Viewed.ToString()); XmlHelper.AddNode(doc, root, "FileUrl", news.FileAttachment); if (displaySettings.ShowNextPreviousLink) { BuildNextPreviousXml(doc, root); } XmlHelper.AddNode(doc, root, "FacebookLike", RenderFacebookLike()); XmlHelper.AddNode(doc, root, "PlusOne", RenderPlusOne()); XmlHelper.AddNode(doc, root, "TweetThis", RenderTweetThis()); XmlHelper.AddNode(doc, root, "Print", RenderPrinter()); XmlHelper.AddNode(doc, root, "Email", RenderEmailSubject()); XmlHelper.AddNode(doc, root, "FullUrl", NewsHelper.FormatNewsUrl(news.Url, news.NewsID, news.ZoneID)); if (displaySettings.ShowAttribute) { BuildNewsAttributesXml(doc, root, languageId); } BuildNewsImagesXml(doc, root); #region Start news other BuildNewsOtherXml(doc, root, zoneId, pageNumber, config.RelatedItemsToShow, out totalPages); if (NewsHelper.IsAjaxRequest(Request) && WebUtils.ParseBoolFromQueryString("isajax", false)) { Response.Write(XmlHelper.TransformXML(SiteUtils.GetXsltBasePath("news", config.XsltFileNameDetailPage), doc)); Response.End(); return; } string pageUrlLeaveOutPageNumber = NewsHelper.FormatNewsUrl(news.Url, news.NewsID, news.ZoneID); if (config.HidePaginationOnDetailPage) { divPager.Visible = false; } else { string pageUrl = pageUrlLeaveOutPageNumber; if (WebUtils.ParseInt32FromQueryString("NewsId", -1) == -1 && config.LoadFirstItem) { pageUrl = SiteUtils.GetCurrentZoneUrl(); } if (pageUrl.Contains("?")) { pageUrl += "&pagenumber={0}"; } else { pageUrl += "?pagenumber={0}"; } pgr.PageURLFormat = pageUrl; pgr.ShowFirstLast = true; pgr.PageSize = config.PageSize; pgr.PageCount = totalPages; pgr.CurrentIndex = pageNumber; divPager.Visible = (totalPages > 1); } if (WebUtils.ParseInt32FromQueryString("pagenumber", -1) == 1) { basePage.AdditionalMetaMarkup += "\n<link rel=\"canonical\" href=\"" + pageUrlLeaveOutPageNumber + "\" />"; } #endregion XmlHelper.XMLTransform(xmlTransformer, SiteUtils.GetXsltBasePath("news", config.XsltFileNameDetailPage), doc); News.IncrementViewedCount(news.NewsID); }
private void RenderNode(XmlDocument doc, XmlElement xmlElement, gbSiteMapNode gbNode) { if (!ShouldRender(gbNode)) { return; } XmlElement item = doc.CreateElement("Zone"); xmlElement.AppendChild(item); XmlHelper.AddNode(doc, item, "ZoneId", gbNode.ZoneId.ToInvariantString()); XmlHelper.AddNode(doc, item, "Depth", gbNode.Depth.ToInvariantString()); XmlHelper.AddNode(doc, item, "ChildCount", gbNode.ChildNodes.Count.ToInvariantString()); XmlHelper.AddNode(doc, item, "IsClickable", gbNode.IsClickable.ToString().ToLower()); XmlHelper.AddNode(doc, item, "Url", FormatUrl(gbNode)); XmlHelper.AddNode(doc, item, "Target", (gbNode.OpenInNewWindow == true ? "_blank" : "_self")); XmlHelper.AddNode(doc, item, "Title", GetZoneTitle(gbNode)); XmlHelper.AddNode(doc, item, "Description", GetDescription(gbNode)); XmlHelper.AddNode(doc, item, "ImageUrl", gbNode.PrimaryImage); XmlHelper.AddNode(doc, item, "SecondImageUrl", gbNode.SecondImage); List <News> lstNews = new List <News>(); if (config.ShowAllNews) { string zoneIds = NewsHelper.GetChildZoneIdToSemiColonSeparatedString(siteSettings.SiteId, gbNode.ZoneId); if (config.MaxItemsToGet == 0) { int iCount = News.GetCountByListZone(siteSettings.SiteId, zoneIds, -1, config.NewsPosition, languageId); XmlHelper.AddNode(doc, item, "NewsCount", iCount.ToString()); } else if (config.MaxItemsToGet > 0) { lstNews = News.GetPageByListZone(siteSettings.SiteId, zoneIds, -1, config.NewsPosition, languageId, 1, config.MaxItemsToGet); } else { int iCount = News.GetCountByListZone(siteSettings.SiteId, zoneIds, -1, config.NewsPosition, languageId); XmlHelper.AddNode(doc, item, "NewsCount", iCount.ToString()); lstNews = News.GetPageByListZone(siteSettings.SiteId, zoneIds, -1, config.NewsPosition, languageId, 1, Math.Abs(config.MaxItemsToGet)); } } else { if (config.MaxItemsToGet == 0) { int iCount = News.GetCount(siteSettings.SiteId, gbNode.ZoneId, -1, config.NewsPosition, languageId); XmlHelper.AddNode(doc, item, "NewsCount", iCount.ToString()); } else if (config.MaxItemsToGet > 0) { lstNews = News.GetPage(siteSettings.SiteId, gbNode.ZoneId, languageId, -1, config.NewsPosition, 1, config.MaxItemsToGet); } else { int iCount = News.GetCount(siteSettings.SiteId, gbNode.ZoneId, -1, config.NewsPosition, languageId); XmlHelper.AddNode(doc, item, "NewsCount", iCount.ToString()); lstNews = News.GetPage(siteSettings.SiteId, gbNode.ZoneId, languageId, -1, config.NewsPosition, 1, Math.Abs(config.MaxItemsToGet)); } } foreach (News news in lstNews) { XmlElement newsXml = doc.CreateElement("News"); item.AppendChild(newsXml); NewsHelper.BuildNewsDataXml(doc, newsXml, news, timeZone, timeOffset, NewsHelper.BuildEditLink(news, basePage, userCanUpdate, currentUser)); if (news.NewsID == newsId) { XmlHelper.AddNode(doc, newsXml, "IsActive", "true"); } if (config.ShowAllImagesInNewsList) { BuildNewsImagesXml(doc, newsXml, news, languageId); } } if ((currentNode != null) && (currentNode.ZoneGuid == gbNode.ZoneGuid) // Selected ) { XmlHelper.AddNode(doc, item, "IsActive", "true"); } else { XmlHelper.AddNode(doc, item, "IsActive", "false"); } if (gbNode.ChildNodes.Count > 0) { foreach (SiteMapNode childNode in gbNode.ChildNodes) { gbSiteMapNode gbChildNode = childNode as gbSiteMapNode; if (gbChildNode == null) { continue; } RenderNode(doc, item, gbChildNode); } } }
public void BuildNewsOtherXml( XmlDocument doc, XmlElement root, int zoneId, int pageNumber, int pageSize, out int totalPages) { XmlHelper.AddNode(doc, root, "NewsOtherText", NewsResources.OtherNewsLabel); XmlHelper.AddNode(doc, root, "ProductOtherText", NewsResources.OtherProductLabel); XmlHelper.AddNode(doc, root, "ProjectOtherText", NewsResources.OtherProjectLabel); List <News> lstNews = new List <News>(); if (pageSize < 0) { pageSize = -pageSize; totalPages = 1; int totalRows = News.GetCount(basePage.SiteId, zoneId, languageId, -1, -1); if (pageSize > 0) { totalPages = totalRows / pageSize; } if (totalRows <= pageSize) { totalPages = 1; } else if (pageSize > 0) { int remainder; Math.DivRem(totalRows, pageSize, out remainder); if (remainder > 0) { totalPages += 1; } } lstNews = News.GetPage(basePage.SiteId, zoneId, languageId, -1, -1, pageNumber, pageSize); } else { lstNews = News.GetPageNewsOther(zoneId, news.NewsID, languageId, config.NewsType, pageNumber, pageSize, out totalPages); } foreach (News news in lstNews) { XmlElement newsXml = doc.CreateElement("NewsOther"); root.AppendChild(newsXml); NewsHelper.BuildNewsDataXml(doc, newsXml, news, timeZone, timeOffset, NewsHelper.BuildEditLink(news, basePage, userCanUpdate, currentUser)); if (news.NewsID == newsId) { XmlHelper.AddNode(doc, newsXml, "IsActive", "true"); } } if (pageNumber < totalPages) { string pageUrl = NewsHelper.FormatNewsUrl(news.Url, news.NewsID, news.ZoneID); int iNewsId = WebUtils.ParseInt32FromQueryString("NewsId", -1); if (iNewsId == -1 && config.LoadFirstItem) { pageUrl = SiteUtils.GetCurrentZoneUrl(); } if (pageUrl.Contains("?")) { pageUrl += "&pagenumber=" + (pageNumber + 1).ToString(); } else { pageUrl += "?pagenumber=" + (pageNumber + 1).ToString(); } XmlHelper.AddNode(doc, root, "NextPageUrl", pageUrl); } }