Exemplo n.º 1
0
        internal static TabsSetup GetTabsSetup(TabsDefinition tabsModel)
        {
            TabsSetup setup = new TabsSetup()
            {
                TabStyle          = Manager.CurrentSite.TabStyle,
                ActiveTabIndex    = tabsModel.ActiveTabIndex,
                ActiveTabHiddenId = null,
            };

            return(setup);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Called by the framework when the component needs to be rendered as HTML.
        /// </summary>
        /// <param name="model">The model being rendered by the component.</param>
        /// <returns>The component rendered as HTML.</returns>
        public async Task <string> RenderAsync(TabsDefinition model)
        {
            HtmlBuilder hb = new HtmlBuilder();

            TabsSetup setup = GetTabsSetup(model);

            string tabsCss = Manager.CurrentSite.TabStyle == YetaWF.Core.Site.TabStyleEnum.JQuery ? "t_jquery" : "t_kendo";

            hb.Append($@"
<div id='{model.Id}' class='yt_tabs t_display {tabsCss}'>
    <ul class='t_tabstrip'>");
            // Render tabs
            int count = 0;

            foreach (TabEntry tabEntry in model.Tabs)
            {
                string tabCss = string.IsNullOrWhiteSpace(tabEntry.TabCssClasses) ? "" : $" class='{tabEntry.TabCssClasses}'";
                if (Manager.CurrentSite.TabStyle == YetaWF.Core.Site.TabStyleEnum.JQuery)
                {
                    string tabId = $"{model.Id}_tab{count}";
                    hb.Append($"<li data-tab='{count}'{tabCss}><a href='#{tabId}' {Basics.CssTooltip}='{Utility.HtmlAttributeEncode(tabEntry.ToolTip?.ToString())}'>{Utility.HtmlEncode(tabEntry.Caption?.ToString())}</a></li>");
                }
                else
                {
                    hb.Append($"<li data-tab='{count}' {Basics.CssTooltip}='{Utility.HtmlAttributeEncode(tabEntry.ToolTip?.ToString())}'{tabCss}>{Utility.HtmlEncode(tabEntry.Caption?.ToString())}</li>");
                }
                ++count;
            }
            hb.Append($@"
    </ul>");

            // Render panes
            count = 0;
            foreach (TabEntry tabEntry in model.Tabs)
            {
                string cssClass = string.IsNullOrWhiteSpace(tabEntry.PaneCssClasses) ? "" : $" {tabEntry.PaneCssClasses}";

                hb.Append($@"
     <div class='t_proptable t_cat t_tabpanel{cssClass}' data-tab='{count}' id='{model.Id}_tab{count}'>");

                if (tabEntry.RenderPaneAsync != null)
                {
                    hb.Append(await tabEntry.RenderPaneAsync(count));
                }


                hb.Append($@"
     </div>");
                ++count;
            }

            setup.ActiveTabHiddenId = Manager.UniqueId();
            hb.Append($@"
    <input name='_ActiveTab' type='hidden' value='{model.ActiveTabIndex}' id='{setup.ActiveTabHiddenId}'>");


            hb.Append($@"
</div>");

            Manager.ScriptManager.AddLast($"new YetaWF_ComponentsHTML.TabsComponent('{model.Id}', {JsonConvert.SerializeObject(setup)});");

            return(hb.ToString());
        }