Example #1
0
        /// <summary>
        /// Генерировать HTML-код атрибутов данных
        /// </summary>
        protected string GenDataAttrsHtml(IWebTreeNode webTreeNode)
        {
            const string DataAttrTemplate = " data-{0}='{1}'";

            StringBuilder sbHtml = new StringBuilder();

            sbHtml.Append(string.Format(DataAttrTemplate, "script", webTreeNode.Script));
            sbHtml.Append(string.Format(DataAttrTemplate, "level", webTreeNode.Level));

            if (webTreeNode.DataAttrs != null)
            {
                foreach (KeyValuePair <string, string> pair in webTreeNode.DataAttrs)
                {
                    if (!string.IsNullOrWhiteSpace(pair.Key))
                    {
                        sbHtml.Append(string.Format(DataAttrTemplate, pair.Key, pair.Value));
                    }
                }
            }

            return(sbHtml.ToString());
        }
Example #2
0
        /// <summary>
        /// Renders HTML for the node data attributes.
        /// </summary>
        protected string RenderDataAttrs(IWebTreeNode webTreeNode)
        {
            const string DataAttrTemplate = " data-{0}='{1}'";

            StringBuilder sbAttr = new();

            sbAttr.AppendFormat(DataAttrTemplate, "level", webTreeNode.Level);

            if (webTreeNode.DataAttrs != null)
            {
                foreach (KeyValuePair <string, string> pair in webTreeNode.DataAttrs)
                {
                    if (!string.IsNullOrWhiteSpace(pair.Key))
                    {
                        string val = pair.Key.EndsWith("url", StringComparison.OrdinalIgnoreCase)
                            ? urlHelper.Content(pair.Value)
                            : pair.Value;
                        sbAttr.AppendFormat(DataAttrTemplate, pair.Key, val);
                    }
                }
            }

            return(sbAttr.ToString());
        }
Example #3
0
        /// <summary>
        /// Рекурсивно генерировать HTML-код дерева
        /// </summary>
        protected string GenTreeViewHtml(IList treeNodes, object selObj, Options options, bool topLevel)
        {
            const string NodeTemplate =
                "<a class='node{0}' href='{1}' {2}>" +
                "<div class='node-items'>" +
                "<div class='indent'></div>" +
                "<div class='expander left{3}'></div>" +
                "<div class='stateIcon'></div>" +
                "<div class='icon'>{4}</div>" +
                "<div class='text'>{5}</div>" +
                "<div class='expander right{3}'></div>" +
                "</div></a>";
            const string IconTemplate = "<img src='{0}' alt='' />";

            StringBuilder sbHtml = new StringBuilder();

            sbHtml.AppendLine(topLevel ?
                              "<div class='tree-view'>" :
                              "<div class='child-nodes'>");

            if (treeNodes != null)
            {
                foreach (object treeNode in treeNodes)
                {
                    IWebTreeNode webTreeNode = treeNode as IWebTreeNode;
                    if (webTreeNode != null)
                    {
                        bool   containsSubitems = webTreeNode.Children.Count > 0;
                        bool   urlIsEmpty       = string.IsNullOrEmpty(webTreeNode.Url);
                        string nodeCssClass     = (webTreeNode.IsSelected(selObj) ? " selected" : "") +
                                                  (!containsSubitems && urlIsEmpty ? " disabled" : "");
                        string dataAttrs        = GenDataAttrsHtml(webTreeNode);
                        string expanderCssClass = containsSubitems ? "" : " empty";

                        string icon;
                        if (options.ShowIcons)
                        {
                            string iconUrl = string.IsNullOrEmpty(webTreeNode.IconUrl) ?
                                             (containsSubitems ? options.FolderImageUrl : options.DocumentImageUrl) :
                                             webTreeNode.IconUrl;
                            icon = string.Format(IconTemplate, iconUrl);
                        }
                        else
                        {
                            icon = "";
                        }

                        sbHtml.AppendLine(string.Format(NodeTemplate,
                                                        nodeCssClass, webTreeNode.Url, dataAttrs, expanderCssClass, icon, HttpUtility.HtmlEncode(webTreeNode.Text)));

                        if (containsSubitems)
                        {
                            sbHtml.Append(GenTreeViewHtml(webTreeNode.Children, selObj, options, false));
                        }
                    }
                }
            }

            sbHtml.AppendLine("</div>");
            return(sbHtml.ToString());
        }
Example #4
0
        /// <summary>
        /// Рекурсивно генерировать HTML-код дерева
        /// </summary>
        protected string GenTreeViewHtml(IList treeNodes, object selObj, Options options, bool topLevel)
        {
            /*const string NodeTemplate =
             *  "<a class='node{0}' href='{1}' {2}>" +
             *  "<div class='node-items'>" +
             *  "<div class='indent'></div>" +
             *  "<div class='expander left{3}'></div>" +
             *  "<div class='stateIcon'></div>" +
             *  "<div class='icon'>{4}</div>" +
             *  "<div class='text'>{5}</div>" +
             *  "<div class='expander right{3}'></div>" +
             *  "</div></a>";*/
            const string NodeTemplate = "<a href='{0}' ><i>{1}</i> {2} {3}</a>";
            const string IconTemplate = "<img src='{0}' alt='' />";

            StringBuilder sbHtml = new StringBuilder();


            if (treeNodes != null)
            {
                foreach (object treeNode in treeNodes)
                {
                    IWebTreeNode webTreeNode = treeNode as IWebTreeNode;
                    if (webTreeNode != null)
                    {
                        bool   containsSubitems = webTreeNode.Children.Count > 0;
                        bool   urlIsEmpty       = string.IsNullOrEmpty(webTreeNode.Url);
                        string nodeCssClass     = (webTreeNode.IsSelected(selObj) ? "active" : "") +
                                                  (!containsSubitems && urlIsEmpty ? " disabled" : "");
                        string childs = "";
                        if (containsSubitems)
                        {
                            childs = GenTreeViewHtml(webTreeNode.Children, selObj, options, false);

                            if (childs.Contains("active"))
                            {
                                nodeCssClass = "active";
                            }
                        }
                        sbHtml.AppendLine("<li class='").Append(nodeCssClass).Append("' >");


                        string dataAttrs        = GenDataAttrsHtml(webTreeNode);
                        string expanderCssClass = containsSubitems ? "" : " empty";

                        string icon;
                        if (options.ShowIcons)
                        {
                            string iconUrl = string.IsNullOrEmpty(webTreeNode.IconUrl) ?
                                             (containsSubitems ? options.FolderImageUrl : options.DocumentImageUrl) :
                                             webTreeNode.IconUrl;
                            icon = string.Format(IconTemplate, iconUrl);
                        }
                        else
                        {
                            icon = "";
                        }

                        /*sbHtml.AppendLine(string.Format(NodeTemplate,
                         *  nodeCssClass, webTreeNode.Url, dataAttrs, expanderCssClass, icon, HttpUtility.HtmlEncode(webTreeNode.Text)));*/

                        sbHtml.AppendLine(string.Format(NodeTemplate,
                                                        webTreeNode.Url, icon, HttpUtility.HtmlEncode(webTreeNode.Text), containsSubitems?
                                                        "<span class='pull-right-container'><i class='fa fa-angle-left pull-right'></i></span>"
                            :""));

                        if (containsSubitems)
                        {
                            sbHtml.AppendLine("<ul class='treeview-menu'>");

                            sbHtml.Append(childs);
                            sbHtml.AppendLine("</ul>");
                        }
                        sbHtml.AppendLine("</li>");
                    }
                }
            }


            return(sbHtml.ToString());
        }