예제 #1
0
        private SiteMapNodeItem CreateItem(int itemIndex, SiteMapNodeItemType itemType, SiteMapNode node)
        {
            SiteMapNodeItem item = new SiteMapNodeItem(itemIndex, itemType);

            int index = (PathDirection == PathDirection.CurrentToRoot ? 0 : -1);

            SiteMapNodeItemEventArgs e = new SiteMapNodeItemEventArgs(item);

            //Add sitemap nodes so that they are accessible during events.
            item.SiteMapNode = node;
            InitializeItem(item);

            // Notify items
            OnItemCreated(e);

            // Add items based on PathDirection.
            Controls.AddAt(index, item);

            // Databind.
            item.DataBind();

            // Notify items.
            OnItemDataBound(e);

            item.SiteMapNode = null;

            // SiteMapNodeItem is dynamically created each time, don't track viewstate.
            item.EnableViewState = false;

            return(item);
        }
예제 #2
0
        private SiteMapNodeItem CreateItem(int itemIndex, SiteMapNodeItemType itemType, SiteMapNode node)
        {
            SiteMapNodeItem          item  = new SiteMapNodeItem(itemIndex, itemType);
            int                      index = (this.PathDirection == System.Web.UI.WebControls.PathDirection.CurrentToRoot) ? 0 : -1;
            SiteMapNodeItemEventArgs e     = new SiteMapNodeItemEventArgs(item);

            item.SiteMapNode = node;
            this.InitializeItem(item);
            this.OnItemCreated(e);
            this.Controls.AddAt(index, item);
            item.DataBind();
            this.OnItemDataBound(e);
            item.SiteMapNode     = null;
            item.EnableViewState = false;
            return(item);
        }
예제 #3
0
        //[Obsolete]
        //private void CreateControlHierarchyRecursive(ref int index, SiteMapNode node, int parentLevels)
        //{
        //    if (parentLevels != 0)
        //    {
        //        SiteMapNode parentNode = node.ParentNode;
        //        if (parentNode != null)
        //        {
        //            this.CreateControlHierarchyRecursive(ref index, parentNode, parentLevels - 1);
        //            this.CreateItem(index++, SiteMapNodeItemType.Parent, node);
        //        }
        //        else
        //        {
        //            this.CreateItem(index++, SiteMapNodeItemType.Root, node);
        //        }
        //    }
        //}

        private ResSiteMapNodeItem CreateItem(int itemIndex, Control container, SiteMapNodeItemType itemType, SiteMapNode node)
        {
            ResSiteMapNodeItem item = new ResSiteMapNodeItem(itemIndex, itemType);
            int index = -1;
            SiteMapNodeItemEventArgs e = new SiteMapNodeItemEventArgs(item);

            item.SiteMapNode = node;
            this.InitializeItem(item);
            this.OnItemCreated(e);
            container.Controls.AddAt(index, item);
            item.DataBind();
            this.OnItemDataBound(e);
            item.SiteMapNode     = null;
            item.EnableViewState = false;

            return(item);
        }
예제 #4
0
        private void AddNodesToContainerHierarchyRecursive(SiteMapNodeCollection nodes, SiteMapNode currentNode, Control container)
        {
            int i = 0;

            foreach (SiteMapNode node in nodes)
            {
                SiteMapNodeItemType type = SiteMapNodeItemType.Parent;
                if (node == currentNode)
                {
                    type = SiteMapNodeItemType.Current;
                }
                var item = this.CreateItem(i++, container, type, node);

                if (node.HasChildNodes)
                {
                    HtmlGenericControl ul = new HtmlGenericControl("ul");
                    ul.Attributes["class"] = "sidebar-submenu";
                    item.Controls.Add(ul);
                    AddNodesToContainerHierarchyRecursive(Provider.GetChildNodes(node), currentNode, ul);
                }
            }
        }
        private SiteMapNodeItem CreateItemFromCmsPathNode(int itemIndex, SiteMapNodeItemType itemType, CmsPathNode pathNode)
        {
            SiteMapNodeItem          item1 = new SiteMapNodeItem(itemIndex, itemType);
            int                      num1  = (this.PathDirection == PathDirection.CurrentToRoot) ? 0 : -1;
            SiteMapNodeItemEventArgs args1 = new SiteMapNodeItemEventArgs(item1);

            if (pathNode != null)
            {
                string nodeUrl = string.Empty;
                switch (pathNode.NodeType)
                {
                case CatalogNodeType.Category:
                    nodeUrl = "Default.aspx?CategoryId=" + pathNode.NodeId;
                    break;

                case CatalogNodeType.Product:
                    nodeUrl = "../products/editproduct.aspx?ProductId=" + pathNode.NodeId;
                    break;

                case CatalogNodeType.Webpage:
                    nodeUrl = "../webpages/editwebpage.aspx?WebpageId=" + pathNode.NodeId;
                    break;

                case CatalogNodeType.Link:
                    nodeUrl = "viewlink.aspx?LinkId=" + pathNode.NodeId;
                    break;
                }
                SiteMapNode mapNode = new SiteMapNode(new XmlSiteMapProvider(), pathNode.NodeId.ToString(), nodeUrl, pathNode.Title, pathNode.Description);
                item1.SiteMapNode = mapNode;
            }
            this.InitializeItem(item1);
            this.OnItemCreated(args1);
            this.Controls.AddAt(num1, item1);
            item1.DataBind();
            this.OnItemDataBound(args1);
            item1.SiteMapNode     = null;
            item1.EnableViewState = false;
            return(item1);
        }
 public SiteMapNodeItem (int itemIndex, SiteMapNodeItemType itemType)
 {
 }
 protected internal virtual new void SetItemType (SiteMapNodeItemType itemType)
 {
 }
예제 #8
0
 public mojoSiteMapNodeItem(int itemIndex, SiteMapNodeItemType itemType)
     : base(itemIndex, itemType)
 {
 }
 protected internal virtual void SetItemType(SiteMapNodeItemType itemType)
 {
     this._itemType = itemType;
 }
예제 #10
0
 protected internal virtual void SetItemType(SiteMapNodeItemType itemType)
 {
     this.itemType = itemType;
 }
예제 #11
0
        protected virtual void InitializeItem(SiteMapNodeItem item)
        {
            ITemplate           nodeTemplate = null;
            Style               s            = null;
            SiteMapNodeItemType itemType     = item.ItemType;
            SiteMapNode         siteMapNode  = item.SiteMapNode;

            switch (itemType)
            {
            case SiteMapNodeItemType.Root:
                nodeTemplate = (this.RootNodeTemplate != null) ? this.RootNodeTemplate : this.NodeTemplate;
                s            = this._mergedRootNodeStyle;
                break;

            case SiteMapNodeItemType.Parent:
                nodeTemplate = this.NodeTemplate;
                s            = this._nodeStyle;
                break;

            case SiteMapNodeItemType.Current:
                nodeTemplate = (this.CurrentNodeTemplate != null) ? this.CurrentNodeTemplate : this.NodeTemplate;
                s            = this._mergedCurrentNodeStyle;
                break;

            case SiteMapNodeItemType.PathSeparator:
                nodeTemplate = this.PathSeparatorTemplate;
                s            = this._pathSeparatorStyle;
                break;
            }
            if (nodeTemplate == null)
            {
                if (itemType == SiteMapNodeItemType.PathSeparator)
                {
                    Literal child = new Literal {
                        Mode = LiteralMode.Encode,
                        Text = this.PathSeparator
                    };
                    item.Controls.Add(child);
                    item.ApplyStyle(s);
                }
                else if ((itemType == SiteMapNodeItemType.Current) && !this.RenderCurrentNodeAsLink)
                {
                    Literal literal2 = new Literal {
                        Mode = LiteralMode.Encode,
                        Text = siteMapNode.Title
                    };
                    item.Controls.Add(literal2);
                    item.ApplyStyle(s);
                }
                else
                {
                    HyperLink link = new HyperLink();
                    if ((s != null) && s.IsSet(0x2000))
                    {
                        link.Font.Underline = s.Font.Underline;
                    }
                    link.EnableTheming = false;
                    link.Enabled       = this.Enabled;
                    if (siteMapNode.Url.StartsWith(@"\\", StringComparison.Ordinal))
                    {
                        link.NavigateUrl = base.ResolveClientUrl(HttpUtility.UrlPathEncode(siteMapNode.Url));
                    }
                    else
                    {
                        link.NavigateUrl = (this.Context != null) ? this.Context.Response.ApplyAppPathModifier(base.ResolveClientUrl(HttpUtility.UrlPathEncode(siteMapNode.Url))) : siteMapNode.Url;
                    }
                    link.Text = HttpUtility.HtmlEncode(siteMapNode.Title);
                    if (this.ShowToolTips)
                    {
                        link.ToolTip = siteMapNode.Description;
                    }
                    item.Controls.Add(link);
                    link.ApplyStyle(s);
                }
            }
            else
            {
                nodeTemplate.InstantiateIn(item);
                item.ApplyStyle(s);
            }
        }
예제 #12
0
        private ResSiteMapNodeItem CreateItem(int itemIndex, SiteMapNodeItemType itemType, SiteMapNode node)
        {
            ResSiteMapNodeItem item = new ResSiteMapNodeItem(itemIndex, itemType);
            int index = (this.PathDirection == PathDirection.CurrentToRoot) ? 0 : -1;
            SiteMapNodeItemEventArgs e = new SiteMapNodeItemEventArgs(item);
            item.SiteMapNode = node;
            this.InitializeItem(item);
            this.OnItemCreated(e);
            this.Controls.AddAt(index, item);
            item.DataBind();
            this.OnItemDataBound(e);
            item.SiteMapNode = null;
            item.EnableViewState = false;

            return item;
        }
 public SiteMapNodeItem(int itemIndex, SiteMapNodeItemType itemType)
 {
 }
 protected internal virtual new void SetItemType(SiteMapNodeItemType itemType)
 {
 }
예제 #15
0
        protected virtual void InitializeItem(ResSiteMapNodeItem item)
        {
            ITemplate           nodeTemplate = null;
            SiteMapNodeItemType itemType     = item.ItemType;
            SiteMapNode         siteMapNode  = item.SiteMapNode;

            switch (itemType)
            {
            case SiteMapNodeItemType.Root:
                nodeTemplate = (this.RootNodeTemplate != null) ? this.RootNodeTemplate : this.NodeTemplate;
                break;

            case SiteMapNodeItemType.Parent:
                nodeTemplate = this.NodeTemplate;
                break;

            case SiteMapNodeItemType.Current:
                nodeTemplate = (this.CurrentNodeTemplate != null) ? this.CurrentNodeTemplate : this.NodeTemplate;
                break;
            }

            if (nodeTemplate == null)
            {
                if (itemType != SiteMapNodeItemType.PathSeparator)
                {
                    if (itemType == SiteMapNodeItemType.Current)
                    {
                        item.Attributes["class"] = "active";
                    }

                    if ((itemType == SiteMapNodeItemType.Current) && !this.RenderCurrentNodeAsLink)
                    {
                        Literal literal2 = new Literal
                        {
                            Mode = LiteralMode.Encode,
                            Text = siteMapNode.Title
                        };

                        item.Controls.Add(literal2);
                    }
                    else
                    {
                        if (itemType == SiteMapNodeItemType.Root)
                        {
                            item.Controls.Add(new LiteralControl("<i class=\"icon-home\"></i> "));
                        }

                        HyperLink link = new HyperLink();

                        link.EnableTheming = false;
                        link.Enabled       = this.Enabled;

                        if (string.IsNullOrEmpty(siteMapNode.Url))
                        {
                            link.NavigateUrl = "javascript:void(0);";
                            link.Enabled     = false;
                        }
                        else if (siteMapNode.Url.StartsWith(@"\\", StringComparison.Ordinal))
                        {
                            link.NavigateUrl = base.ResolveClientUrl(HttpUtility.UrlPathEncode(siteMapNode.Url));
                        }
                        else
                        {
                            link.NavigateUrl = (this.Context != null) ? this.Context.Response.ApplyAppPathModifier(base.ResolveClientUrl(HttpUtility.UrlPathEncode(siteMapNode.Url))) : siteMapNode.Url;
                        }
                        link.Text = HttpUtility.HtmlEncode(siteMapNode.Title);
                        if (this.ShowToolTips)
                        {
                            link.ToolTip = siteMapNode.Description;
                        }

                        item.Controls.Add(link);
                    }
                }
            }
            else
            {
                nodeTemplate.InstantiateIn(item);
            }
        }
예제 #16
0
        /// <devdoc>
        /// <para>A protected method. Populates iteratively the specified <see cref='System.Web.UI.WebControls.SiteMapNodeItem'/> with a
        ///    sub-hierarchy of child controls.</para>
        /// </devdoc>
        protected virtual void InitializeItem(SiteMapNodeItem item)
        {
            Debug.Assert(_mergedCurrentNodeStyle != null && _mergedRootNodeStyle != null);

            ITemplate           template = null;
            Style               style    = null;
            SiteMapNodeItemType itemType = item.ItemType;
            SiteMapNode         node     = item.SiteMapNode;

            switch (itemType)
            {
            case SiteMapNodeItemType.Root:
                template = RootNodeTemplate != null ? RootNodeTemplate : NodeTemplate;
                style    = _mergedRootNodeStyle;
                break;

            case SiteMapNodeItemType.Parent:
                template = NodeTemplate;
                style    = _nodeStyle;
                break;

            case SiteMapNodeItemType.Current:
                template = CurrentNodeTemplate != null ? CurrentNodeTemplate : NodeTemplate;
                style    = _mergedCurrentNodeStyle;
                break;

            case SiteMapNodeItemType.PathSeparator:
                template = PathSeparatorTemplate;
                style    = _pathSeparatorStyle;
                break;
            }

            if (template == null)
            {
                if (itemType == SiteMapNodeItemType.PathSeparator)
                {
                    Literal separatorLiteral = new Literal();
                    separatorLiteral.Mode = LiteralMode.Encode;
                    separatorLiteral.Text = PathSeparator;
                    item.Controls.Add(separatorLiteral);
                    item.ApplyStyle(style);
                }
                else if (itemType == SiteMapNodeItemType.Current && !RenderCurrentNodeAsLink)
                {
                    Literal currentNodeLiteral = new Literal();
                    currentNodeLiteral.Mode = LiteralMode.Encode;
                    currentNodeLiteral.Text = node.Title;
                    item.Controls.Add(currentNodeLiteral);
                    item.ApplyStyle(style);
                }
                else
                {
                    HyperLink link = new HyperLink();

                    if (style != null && style.IsSet(System.Web.UI.WebControls.Style.PROP_FONT_UNDERLINE))
                    {
                        link.Font.Underline = style.Font.Underline;
                    }

                    link.EnableTheming = false;
                    link.Enabled       = this.Enabled;
                    // VSWhidbey 281869 Don't modify input when url pointing to unc share
                    if (node.Url.StartsWith("\\\\", StringComparison.Ordinal))
                    {
                        link.NavigateUrl = ResolveClientUrl(HttpUtility.UrlPathEncode(node.Url));
                    }
                    else
                    {
                        link.NavigateUrl = Context != null?
                                           Context.Response.ApplyAppPathModifier(ResolveClientUrl(HttpUtility.UrlPathEncode(node.Url))) : node.Url;
                    }
                    link.Text = HttpUtility.HtmlEncode(node.Title);
                    if (ShowToolTips)
                    {
                        link.ToolTip = node.Description;
                    }
                    item.Controls.Add(link);
                    link.ApplyStyle(style);
                }
            }
            else
            {
                template.InstantiateIn(item);
                item.ApplyStyle(style);
            }
        }
예제 #17
0
        protected virtual void InitializeItem(ResSiteMapNodeItem item)
        {
            ITemplate           nodeTemplate = null;
            SiteMapNodeItemType itemType     = item.ItemType;
            SiteMapNode         siteMapNode  = item.SiteMapNode;

            switch (itemType)
            {
            case SiteMapNodeItemType.Root:
                nodeTemplate = (this.RootNodeTemplate != null) ? this.RootNodeTemplate : this.NodeTemplate;
                break;

            case SiteMapNodeItemType.Parent:
                nodeTemplate = this.NodeTemplate;
                break;

            case SiteMapNodeItemType.Current:
                nodeTemplate = (this.CurrentNodeTemplate != null) ? this.CurrentNodeTemplate : this.NodeTemplate;
                break;
            }

            if (nodeTemplate == null)
            {
                if (itemType != SiteMapNodeItemType.PathSeparator)
                {
                    HtmlGenericControl iconSpan = null;
                    string             iconCss  = item.SiteMapNode["iconCss"];
                    if (string.IsNullOrEmpty(iconCss) == false)
                    {
                        iconSpan = new HtmlGenericControl("span");
                        iconSpan.Attributes["class"] = iconCss;
                    }

                    HyperLink link = new HyperLink();

                    item.Attributes["class"] = "list-group-item";

                    if (itemType == SiteMapNodeItemType.Current)
                    {
                        item.Attributes["class"] += " active";
                    }

                    link.EnableTheming = false;
                    link.Enabled       = this.Enabled;

                    if (string.IsNullOrEmpty(siteMapNode.Url))
                    {
                        link.NavigateUrl = "javascript:void(0);";
                    }
                    else
                    {
                        if (siteMapNode.Url.StartsWith(@"\\", StringComparison.Ordinal))
                        {
                            link.NavigateUrl = base.ResolveClientUrl(HttpUtility.UrlPathEncode(siteMapNode.Url));
                        }
                        else
                        {
                            link.NavigateUrl = (this.Context != null) ? this.Context.Response.ApplyAppPathModifier(base.ResolveClientUrl(HttpUtility.UrlPathEncode(siteMapNode.Url))) : siteMapNode.Url;
                        }
                    }

                    if (iconSpan != null)
                    {
                        link.Controls.Add(iconSpan);
                        link.Controls.Add(new LiteralControl(" "));
                    }

                    HtmlGenericControl strong = new HtmlGenericControl("strong");
                    strong.InnerText           = siteMapNode.Title;
                    strong.Attributes["class"] = "menu-label";
                    link.Controls.Add(strong);
                    if (this.ShowToolTips)
                    {
                        link.ToolTip = siteMapNode.Description;
                    }

                    string badgeKey = item.SiteMapNode["badgeKey"];
                    if (string.IsNullOrEmpty(badgeKey) == false)
                    {
                        var span = new HtmlGenericControl("span");
                        span.Attributes["class"]         = "badge";
                        span.Attributes["data-badgekey"] = badgeKey;
                        link.Controls.Add(span);
                    }

                    if (item.SiteMapNode.HasChildNodes)
                    {
                        var b = new HtmlGenericControl("b");
                        b.Attributes["class"] = "arrow icon-angle-down";
                        link.Controls.Add(b);

                        item.Attributes["role"] = "dropdown-toggle";
                    }

                    string target = item.SiteMapNode["target"];
                    if (string.IsNullOrEmpty(target) == false)
                    {
                        link.Target = target;
                    }

                    item.Controls.Add(link);
                }
            }
            else
            {
                nodeTemplate.InstantiateIn(item);
            }
        }
예제 #18
0
 /// <devdoc>
 /// <para>Initializes a new instance of the <see cref='System.Web.UI.WebControls.SiteMapNodeItem'/> class.</para>
 /// </devdoc>
 public SiteMapNodeItem(int itemIndex, SiteMapNodeItemType itemType)
 {
     this._itemIndex = itemIndex;
     this._itemType  = itemType;
 }
예제 #19
0
 public SiteMapNodeItem(int itemIndex, SiteMapNodeItemType itemType)
 {
     this.itemIndex = itemIndex;
     SetItemType(itemType);
 }
예제 #20
0
		public SiteMapNodeItem (int itemIndex, SiteMapNodeItemType itemType)
		{
			this.itemIndex = itemIndex;
			SetItemType (itemType);
		}
 public SiteMapNodeItem(int itemIndex, SiteMapNodeItemType itemType)
 {
     this._itemIndex = itemIndex;
     this._itemType = itemType;
 }
예제 #22
0
 public mojoSiteMapNodeItem(int itemIndex, SiteMapNodeItemType itemType)
     : base(itemIndex, itemType)
 {
 }
예제 #23
0
        private SiteMapNodeItem CreateItem(int itemIndex, SiteMapNodeItemType itemType, SiteMapNode node) {
            SiteMapNodeItem item = new SiteMapNodeItem(itemIndex, itemType);

            int index = (PathDirection == PathDirection.CurrentToRoot ? 0 : -1);

            SiteMapNodeItemEventArgs e = new SiteMapNodeItemEventArgs(item);

            //Add sitemap nodes so that they are accessible during events.
            item.SiteMapNode = node;
            InitializeItem(item);

            // Notify items
            OnItemCreated(e);

            // Add items based on PathDirection.
            Controls.AddAt(index, item);

            // Databind.
            item.DataBind();

            // Notify items.
            OnItemDataBound(e);

            item.SiteMapNode = null;

            // SiteMapNodeItem is dynamically created each time, don't track viewstate.
            item.EnableViewState = false;

            return item;
        }
예제 #24
0
        //[Obsolete]
        //private void CreateControlHierarchyRecursive(ref int index, SiteMapNode node, int parentLevels)
        //{
        //    if (parentLevels != 0)
        //    {
        //        SiteMapNode parentNode = node.ParentNode;
        //        if (parentNode != null)
        //        {
        //            this.CreateControlHierarchyRecursive(ref index, parentNode, parentLevels - 1);
        //            this.CreateItem(index++, SiteMapNodeItemType.Parent, node);
        //        }
        //        else
        //        {
        //            this.CreateItem(index++, SiteMapNodeItemType.Root, node);
        //        }
        //    }
        //}

        private ResSiteMapNodeItem CreateItem(int itemIndex, Control container, SiteMapNodeItemType itemType, SiteMapNode node)
        {
            ResSiteMapNodeItem item = new ResSiteMapNodeItem(itemIndex, itemType);
            int index = -1;
            SiteMapNodeItemEventArgs e = new SiteMapNodeItemEventArgs(item);
            item.SiteMapNode = node;
            this.InitializeItem(item);
            this.OnItemCreated(e);
            container.Controls.AddAt(index, item);
            item.DataBind();
            this.OnItemDataBound(e);
            item.SiteMapNode = null;
            item.EnableViewState = false;

            return item;
        }