private void RenderCategoriesIntoTable(Table table, string[] parentPath) { SharedBasePage requestPage = Page as SharedBasePage; int parentPathLength = parentPath.Length; foreach (CategoryCacheEntry categoryEntry in categories) { string[] entryPath = categoryEntry.CategoryPath; int entryPathLength = categoryEntry.CategoryPath.Length; // If the path shorter of equal to the parent path or if // the path is more than one item longer than the parent path, // we can skip this item. We seek for descendants only. if (entryPathLength != parentPathLength + 1) { continue; } bool identicalSubpaths = true; // if we don't have the right subpath, skip as well for (int j = 0; j < parentPath.Length; j++) { if (entryPath[j].Trim().ToUpper() != parentPath[j].Trim().ToUpper()) { identicalSubpaths = false; break; } } if (!identicalSubpaths) { continue; } TableRow row = new TableRow(); TableCell cell = new TableCell(); cell.CssClass = "categoryListCellStyle"; table.Rows.Add(row); row.Cells.Add(cell); HyperLink rssLink = new HyperLink(); if (showFeedBadge) { rssLink.CssClass = "categoryListXmlLinkStyle"; if (requestPage.SiteConfig.UseFeedSchemeForSyndication) { rssLink.NavigateUrl = SiteUtilities.GetFeedCategoryUrl(requestPage.SiteConfig, categoryEntry.Name); } else { rssLink.NavigateUrl = SiteUtilities.GetRssCategoryUrl(requestPage.SiteConfig, categoryEntry.Name); } System.Web.UI.WebControls.Image rssImg = new System.Web.UI.WebControls.Image(); rssImg.ImageUrl = requestPage.GetThemedImageUrl("feedButton"); rssImg.AlternateText = "[RSS]"; rssLink.Attributes.Add("rel", "tag"); rssLink.Controls.Add(rssImg); } /* PARKED * HyperLink atomLink = new HyperLink(); * atomLink.CssClass = "categoryListXmlLinkStyle"; * atomLink.NavigateUrl = Utils.GetAtomCategoryUrl(requestPage.SiteConfig,categoryEntry.Name); * System.Web.UI.WebControls.Image atomImg = new System.Web.UI.WebControls.Image(); * atomImg.ImageUrl = requestPage.GetThemedImageUrl("atomButton"); * atomLink.Controls.Add(atomImg); */ // the entryPath is a leaf on the parentPath ? if (!categories.HasChildrenInCollection(categoryEntry)) { // we just emit the link if (showFeedBadge) { cell.Controls.Add(rssLink); } cell.Controls.Add(new LiteralControl(" ")); /*cell.Controls.Add(atomLink); * cell.Controls.Add( new LiteralControl(" "));*/ HyperLink catLink = new HyperLink(); catLink.CssClass = "categoryListLinkStyle"; catLink.Text = categoryEntry.DisplayName; catLink.NavigateUrl = SiteUtilities.GetCategoryViewUrl(requestPage.SiteConfig, categoryEntry.Name); catLink.Attributes.Add("rel", "tag"); cell.Controls.Add(catLink); } else { // if there are subitems, we ignore this link and render // it as an categoryEntry NamingPanel panel = new NamingPanel(); cell.Controls.Add(panel); Table categoryEntryHead = new Table(); categoryEntryHead.CellPadding = 0; categoryEntryHead.CellSpacing = 0; categoryEntryHead.CssClass = "categoryListNestedOutlineHeaderTableStyle"; panel.Controls.Add(categoryEntryHead); Panel collapsablePanel = new Panel(); Panel containerPanel = new Panel(); panel.Controls.Add(collapsablePanel); containerPanel.CssClass = "categoryListNestedOutlineContainer"; collapsablePanel.Controls.Add(containerPanel); collapsablePanel.CssClass = "categoryListExpanded"; collapsablePanel.ID = "panel"; TableCell categoryEntryBadge; TableCell categoryEntryTitle; categoryEntryHead.Rows.Add(new TableRow()); categoryEntryHead.Rows[0].Cells.Add(categoryEntryBadge = new TableCell()); categoryEntryHead.Rows[0].Cells.Add(categoryEntryTitle = new TableCell()); categoryEntryBadge.CssClass = "categoryListNestedOutlineBadgeCellStyle"; categoryEntryTitle.CssClass = "categoryListNestedOutlineTitleCellStyle"; HyperLink expandableLink = new HyperLink(); categoryEntryBadge.Controls.Add(rssLink); categoryEntryBadge.Controls.Add(new LiteralControl(" ")); categoryEntryBadge.Controls.Add(expandableLink); categoryEntryBadge.Controls.Add(new LiteralControl(" ")); /*categoryEntryBadge.Controls.Add(atomLink); * categoryEntryBadge.Controls.Add( new LiteralControl(" "));*/ expandableLink.CssClass = "categoryListNestedOutlineBadgeStyle"; System.Web.UI.WebControls.Image imgBadge = new System.Web.UI.WebControls.Image(); expandableLink.Controls.Add(imgBadge); imgBadge.ID = "img"; expandableLink.NavigateUrl = "javascript:ct_toggleExpansionStatus( '" + collapsablePanel.ClientID + "', '" + imgBadge.ClientID + "' )"; imgBadge.ImageUrl = requestPage.GetThemedImageUrl("outlinedown"); imgBadge.ToolTip = requestPage.CoreStringTables.GetString("tooltip_expand"); HyperLink hlHead = new HyperLink(); hlHead.CssClass = "categoryListNestedOutlineTitleStyle"; categoryEntryTitle.Controls.Add(hlHead); hlHead.NavigateUrl = SiteUtilities.GetCategoryViewUrl(requestPage.SiteConfig, categoryEntry.Name); hlHead.Text = categoryEntry.DisplayName; Table list = new Table(); list.CellPadding = 0; list.CellSpacing = 0; list.CssClass = "categoryListNestedOutlineBodyTableStyle"; containerPanel.Controls.Add(list); RenderCategoriesIntoTable(list, categoryEntry.CategoryPath); } } }
private void RenderCategoriesIntoTable( Table table, string[] parentPath ) { SharedBasePage requestPage = Page as SharedBasePage; int parentPathLength = parentPath.Length; foreach (CategoryCacheEntry categoryEntry in categories ) { string[] entryPath = categoryEntry.CategoryPath; int entryPathLength = categoryEntry.CategoryPath.Length; // If the path shorter of equal to the parent path or if // the path is more than one item longer than the parent path, // we can skip this item. We seek for descendants only. if ( entryPathLength != parentPathLength+1 ) continue; bool identicalSubpaths = true; // if we don't have the right subpath, skip as well for (int j=0;j<parentPath.Length;j++) { if ( entryPath[j].Trim().ToUpper() != parentPath[j].Trim().ToUpper() ) { identicalSubpaths = false; break; } } if ( !identicalSubpaths ) { continue; } TableRow row = new TableRow(); TableCell cell = new TableCell(); cell.CssClass = "categoryListCellStyle"; table.Rows.Add(row); row.Cells.Add(cell); HyperLink rssLink = new HyperLink(); if(showFeedBadge) { rssLink.CssClass = "categoryListXmlLinkStyle"; if (requestPage.SiteConfig.UseFeedSchemeForSyndication) { rssLink.NavigateUrl = SiteUtilities.GetFeedCategoryUrl(requestPage.SiteConfig,categoryEntry.Name); } else { rssLink.NavigateUrl = SiteUtilities.GetRssCategoryUrl(requestPage.SiteConfig,categoryEntry.Name); } System.Web.UI.WebControls.Image rssImg = new System.Web.UI.WebControls.Image(); rssImg.ImageUrl = requestPage.GetThemedImageUrl("feedButton"); rssImg.AlternateText = "[RSS]"; rssLink.Attributes.Add("rel", "tag"); rssLink.Controls.Add(rssImg); } /* PARKED HyperLink atomLink = new HyperLink(); atomLink.CssClass = "categoryListXmlLinkStyle"; atomLink.NavigateUrl = Utils.GetAtomCategoryUrl(requestPage.SiteConfig,categoryEntry.Name); System.Web.UI.WebControls.Image atomImg = new System.Web.UI.WebControls.Image(); atomImg.ImageUrl = requestPage.GetThemedImageUrl("atomButton"); atomLink.Controls.Add(atomImg); */ // the entryPath is a leaf on the parentPath ? if ( !categories.HasChildrenInCollection( categoryEntry ) ) { // we just emit the link if(showFeedBadge) { cell.Controls.Add(rssLink); } cell.Controls.Add(new LiteralControl(" ")); /*cell.Controls.Add(atomLink); cell.Controls.Add( new LiteralControl(" "));*/ HyperLink catLink = new HyperLink(); catLink.CssClass = "categoryListLinkStyle"; catLink.Text = categoryEntry.DisplayName; catLink.NavigateUrl = SiteUtilities.GetCategoryViewUrl(requestPage.SiteConfig,categoryEntry.Name); catLink.Attributes.Add("rel", "tag"); cell.Controls.Add(catLink); } else { // if there are subitems, we ignore this link and render // it as an categoryEntry NamingPanel panel = new NamingPanel(); cell.Controls.Add(panel); Table categoryEntryHead = new Table(); categoryEntryHead.CellPadding=0;categoryEntryHead.CellSpacing=0; categoryEntryHead.CssClass = "categoryListNestedOutlineHeaderTableStyle"; panel.Controls.Add( categoryEntryHead ); Panel collapsablePanel = new Panel(); Panel containerPanel = new Panel(); panel.Controls.Add( collapsablePanel ); containerPanel.CssClass = "categoryListNestedOutlineContainer"; collapsablePanel.Controls.Add( containerPanel ); collapsablePanel.CssClass = "categoryListExpanded"; collapsablePanel.ID = "panel"; TableCell categoryEntryBadge; TableCell categoryEntryTitle; categoryEntryHead.Rows.Add(new TableRow()); categoryEntryHead.Rows[0].Cells.Add(categoryEntryBadge = new TableCell()); categoryEntryHead.Rows[0].Cells.Add(categoryEntryTitle = new TableCell()); categoryEntryBadge.CssClass = "categoryListNestedOutlineBadgeCellStyle"; categoryEntryTitle.CssClass = "categoryListNestedOutlineTitleCellStyle"; HyperLink expandableLink = new HyperLink(); categoryEntryBadge.Controls.Add(rssLink); categoryEntryBadge.Controls.Add(new LiteralControl(" ")); categoryEntryBadge.Controls.Add(expandableLink); categoryEntryBadge.Controls.Add(new LiteralControl(" ")); /*categoryEntryBadge.Controls.Add(atomLink); categoryEntryBadge.Controls.Add( new LiteralControl(" "));*/ expandableLink.CssClass = "categoryListNestedOutlineBadgeStyle"; System.Web.UI.WebControls.Image imgBadge = new System.Web.UI.WebControls.Image(); expandableLink.Controls.Add(imgBadge); imgBadge.ID = "img"; expandableLink.NavigateUrl = "javascript:ct_toggleExpansionStatus( '"+collapsablePanel.ClientID+"', '"+imgBadge.ClientID+"' )"; imgBadge.ImageUrl = requestPage.GetThemedImageUrl("outlinedown"); imgBadge.ToolTip = requestPage.CoreStringTables.GetString("tooltip_expand"); HyperLink hlHead = new HyperLink(); hlHead.CssClass = "categoryListNestedOutlineTitleStyle"; categoryEntryTitle.Controls.Add(hlHead); hlHead.NavigateUrl = SiteUtilities.GetCategoryViewUrl(requestPage.SiteConfig,categoryEntry.Name); hlHead.Text = categoryEntry.DisplayName; Table list = new Table(); list.CellPadding=0;list.CellSpacing=0; list.CssClass = "categoryListNestedOutlineBodyTableStyle"; containerPanel.Controls.Add( list ); RenderCategoriesIntoTable( list, categoryEntry.CategoryPath ); } } }
private void RenderOutlinesIntoTable(Table table, OpmlOutlineCollection outlines, int depth, bool renderDescription) { SharedBasePage requestPage = Page as SharedBasePage; foreach (OpmlOutline outline in outlines) { TableRow row = new TableRow(); TableCell cell = new TableCell(); cell.CssClass = "blogRollCellStyle"; table.Rows.Add(row); row.Cells.Add(cell); if (outline.outline == null || outline.outline.Count == 0) { // if there are no sub items, we just emit the link if (outline.xmlUrl != null && outline.xmlUrl.Length > 0) { HyperLink xmlLink = new HyperLink(); xmlLink.CssClass = "blogRollXmlLinkStyle"; xmlLink.NavigateUrl = outline.xmlUrl; if (requestPage.SiteConfig.UseFeedSchemeForSyndication) { if (outline.xmlUrl.StartsWith("https")) { xmlLink.NavigateUrl = String.Concat("feed:", new Uri(outline.xmlUrl).ToString()); } else { xmlLink.NavigateUrl = String.Concat("feed:", new Uri(outline.xmlUrl).ToString().Remove(0, 5)); } } System.Web.UI.WebControls.Image img = new System.Web.UI.WebControls.Image(); img.AlternateText = "[Feed]"; switch (outline.type != null ? outline.type.ToLower() : "") { case "rss": img.ImageUrl = requestPage.GetThemedImageUrl("feedButton"); break; case "atom": img.ImageUrl = requestPage.GetThemedImageUrl("atomButton"); break; case "opml": img.ImageUrl = requestPage.GetThemedImageUrl("opmlButton"); break; default: img.ImageUrl = requestPage.GetThemedImageUrl("feedButton"); break; } xmlLink.Controls.Add(img); cell.Controls.Add(xmlLink); } cell.Controls.Add(new LiteralControl(" ")); HyperLink catLink = new HyperLink(); catLink.CssClass = "blogRollLinkStyle"; catLink.Text = outline.title; catLink.NavigateUrl = outline.htmlUrl; cell.Controls.Add(catLink); if (renderDescription) { if (outline.description != null && outline.description.Length > 0) { HtmlGenericControl outlineDesc = new HtmlGenericControl("div"); outlineDesc.Attributes.Add("class", "blogRollDescriptionStyle"); outlineDesc.InnerText = outline.description; cell.Controls.Add(new LiteralControl("<br />")); cell.Controls.Add(outlineDesc); } } } else { // if there are subitems, we ignore this link and render // it as an outline NamingPanel panel = new NamingPanel(); cell.Controls.Add(panel); Table outlineHead = new Table(); outlineHead.CssClass = "blogRollNestedOutlineHeaderTableStyle"; panel.Controls.Add(outlineHead); Panel collapsablePanel = new Panel(); panel.Controls.Add(collapsablePanel); collapsablePanel.CssClass = "blogRollCollapsed"; collapsablePanel.ID = "panel"; TableCell outlineBadge; TableCell outlineTitle; outlineHead.Rows.Add(new TableRow()); outlineHead.Rows[0].Cells.Add(outlineBadge = new TableCell()); outlineHead.Rows[0].Cells.Add(outlineTitle = new TableCell()); outlineBadge.CssClass = "blogRollNestedOutlineBadgeCellStyle"; outlineTitle.CssClass = "blogRollNestedOutlineTitleCellStyle"; if (outline.description != null && outline.description.Length > 0) { TableCell outlineDesc; outlineHead.Rows.Add(new TableRow()); outlineHead.Rows[1].Cells.Add(new TableCell()); outlineHead.Rows[1].Cells.Add(outlineDesc = new TableCell()); outlineDesc.CssClass = "blogRollDescriptionStyle"; outlineDesc.Text = outline.description; } HyperLink hlBadge = new HyperLink(); hlBadge.CssClass = "blogRollNestedOutlineBadgeStyle"; outlineBadge.Controls.Add(hlBadge); System.Web.UI.WebControls.Image imgBadge = new System.Web.UI.WebControls.Image(); hlBadge.Controls.Add(imgBadge); imgBadge.ID = "img"; imgBadge.AlternateText = ""; hlBadge.NavigateUrl = "javascript:br_toggleExpansionStatus( '" + collapsablePanel.ClientID + "', '" + imgBadge.ClientID + "' )"; imgBadge.ImageUrl = requestPage.GetThemedImageUrl("outlinearrow"); imgBadge.ToolTip = requestPage.CoreStringTables.GetString("tooltip_expand"); HyperLink hlHead = new HyperLink(); hlHead.CssClass = "blogRollNestedOutlineTitleStyle"; outlineTitle.Controls.Add(hlHead); hlHead.NavigateUrl = outline.htmlUrl; hlHead.Text = outline.title; Table list = new Table(); list.CssClass = "blogRollNestedOutlineBodyTableStyle"; collapsablePanel.Controls.Add(list); RenderOutlinesIntoTable(list, outline.outline, depth + 1, renderDescription); } } }
private void RenderOutlinesIntoTable( Table table, OpmlOutlineCollection outlines, int depth, bool renderDescription ) { SharedBasePage requestPage = Page as SharedBasePage; foreach (OpmlOutline outline in outlines) { TableRow row = new TableRow(); TableCell cell = new TableCell(); cell.CssClass = "blogRollCellStyle"; table.Rows.Add(row); row.Cells.Add(cell); if ( outline.outline == null || outline.outline.Count == 0 ) { // if there are no sub items, we just emit the link if ( outline.xmlUrl != null && outline.xmlUrl.Length > 0 ) { HyperLink xmlLink = new HyperLink(); xmlLink.CssClass = "blogRollXmlLinkStyle"; xmlLink.NavigateUrl = outline.xmlUrl; if (requestPage.SiteConfig.UseFeedSchemeForSyndication) { if (outline.xmlUrl.StartsWith("https")) { xmlLink.NavigateUrl = String.Concat("feed:", new Uri(outline.xmlUrl).ToString()); } else { xmlLink.NavigateUrl = String.Concat("feed:", new Uri(outline.xmlUrl).ToString().Remove(0,5)); } } System.Web.UI.WebControls.Image img = new System.Web.UI.WebControls.Image(); img.AlternateText = "[Feed]"; switch ( outline.type != null ? outline.type.ToLower() : "" ) { case "rss" : img.ImageUrl = requestPage.GetThemedImageUrl("feedButton");break; case "atom" : img.ImageUrl = requestPage.GetThemedImageUrl("atomButton");break; case "opml" : img.ImageUrl = requestPage.GetThemedImageUrl("opmlButton");break; default: img.ImageUrl = requestPage.GetThemedImageUrl("feedButton");break; } xmlLink.Controls.Add(img); cell.Controls.Add(xmlLink); } cell.Controls.Add( new LiteralControl(" ")); HyperLink catLink = new HyperLink(); catLink.CssClass = "blogRollLinkStyle"; catLink.Text = outline.title; catLink.NavigateUrl = outline.htmlUrl; cell.Controls.Add(catLink); if (renderDescription) { if ( outline.description != null && outline.description.Length > 0 ) { HtmlGenericControl outlineDesc = new HtmlGenericControl("div"); outlineDesc.Attributes.Add("class","blogRollDescriptionStyle"); outlineDesc.InnerText = outline.description; cell.Controls.Add(new LiteralControl("<br>")); cell.Controls.Add(outlineDesc); } } } else { // if there are subitems, we ignore this link and render // it as an outline NamingPanel panel = new NamingPanel(); cell.Controls.Add(panel); Table outlineHead = new Table(); outlineHead.CssClass = "blogRollNestedOutlineHeaderTableStyle"; panel.Controls.Add( outlineHead ); Panel collapsablePanel = new Panel(); panel.Controls.Add( collapsablePanel ); collapsablePanel.CssClass = "blogRollCollapsed"; collapsablePanel.ID = "panel"; TableCell outlineBadge; TableCell outlineTitle; outlineHead.Rows.Add(new TableRow()); outlineHead.Rows[0].Cells.Add(outlineBadge = new TableCell()); outlineHead.Rows[0].Cells.Add(outlineTitle = new TableCell()); outlineBadge.CssClass = "blogRollNestedOutlineBadgeCellStyle"; outlineTitle.CssClass = "blogRollNestedOutlineTitleCellStyle"; if ( outline.description != null && outline.description.Length > 0 ) { TableCell outlineDesc; outlineHead.Rows.Add(new TableRow()); outlineHead.Rows[1].Cells.Add(new TableCell()); outlineHead.Rows[1].Cells.Add(outlineDesc = new TableCell() ); outlineDesc.CssClass = "blogRollDescriptionStyle"; outlineDesc.Text = outline.description; } HyperLink hlBadge = new HyperLink(); hlBadge.CssClass = "blogRollNestedOutlineBadgeStyle"; outlineBadge.Controls.Add(hlBadge); System.Web.UI.WebControls.Image imgBadge = new System.Web.UI.WebControls.Image(); hlBadge.Controls.Add(imgBadge); imgBadge.ID = "img"; hlBadge.NavigateUrl = "javascript:br_toggleExpansionStatus( '"+collapsablePanel.ClientID+"', '"+imgBadge.ClientID+"' )"; imgBadge.ImageUrl = requestPage.GetThemedImageUrl("outlinearrow"); imgBadge.ToolTip = requestPage.CoreStringTables.GetString("tooltip_expand"); HyperLink hlHead = new HyperLink(); hlHead.CssClass = "blogRollNestedOutlineTitleStyle"; outlineTitle.Controls.Add(hlHead); hlHead.NavigateUrl = outline.htmlUrl; hlHead.Text = outline.title; Table list = new Table(); list.CssClass = "blogRollNestedOutlineBodyTableStyle"; collapsablePanel.Controls.Add( list ); RenderOutlinesIntoTable( list, outline.outline, depth+1, renderDescription ); } } }