Inheritance: System.Web.UI.WebControls.Panel, INamingContainer
Exemplo n.º 1
0
        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("&nbsp;"));

                    /*cell.Controls.Add(atomLink);
                     * cell.Controls.Add( new LiteralControl("&nbsp;"));*/

                    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("&nbsp;"));
                    categoryEntryBadge.Controls.Add(expandableLink);
                    categoryEntryBadge.Controls.Add(new LiteralControl("&nbsp;"));

                    /*categoryEntryBadge.Controls.Add(atomLink);
                     * categoryEntryBadge.Controls.Add( new LiteralControl("&nbsp;"));*/


                    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);
                }
            }
        }
Exemplo n.º 2
0
        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("&nbsp;"));
                    /*cell.Controls.Add(atomLink);
                    cell.Controls.Add( new LiteralControl("&nbsp;"));*/

                    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("&nbsp;"));
                    categoryEntryBadge.Controls.Add(expandableLink);
                    categoryEntryBadge.Controls.Add(new LiteralControl("&nbsp;"));
                    /*categoryEntryBadge.Controls.Add(atomLink);
                    categoryEntryBadge.Controls.Add( new LiteralControl("&nbsp;"));*/

                    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 );
                }
            }
        }
Exemplo n.º 3
0
        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("&nbsp;"));
                    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);
                }
            }
        }
Exemplo n.º 4
0
        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("&nbsp;"));
                    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 );

                }
            }
        }