NavOptions ToNavOptions(ScriptScopeContext scope, Dictionary <string, object> options)
        {
            var navOptions = new NavOptions();

            if (options != null)
            {
                if (options.TryGetValue("attributes", out var oAttributes))
                {
                    navOptions.Attributes = ViewUtils.ToStrings(nameof(ToNavOptions), oAttributes).ToHashSet();
                }
                if (options.TryGetValue("activePath", out var oActive))
                {
                    navOptions.ActivePath = (string)oActive;
                }
                if (options.TryGetValue("baseHref", out var oBaseHref))
                {
                    navOptions.BaseHref = (string)oBaseHref;
                }
                if (options.TryGetValue("navClass", out var oNavClass))
                {
                    navOptions.NavClass = (string)oNavClass;
                }
                if (options.TryGetValue("navItemClass", out var oNavItemClass))
                {
                    navOptions.NavItemClass = (string)oNavItemClass;
                }
                if (options.TryGetValue("navLinkClass", out var oNavLinkClass))
                {
                    navOptions.NavLinkClass = (string)oNavLinkClass;
                }
                if (options.TryGetValue("childNavItemClass", out var oChildNavItemClass))
                {
                    navOptions.ChildNavItemClass = (string)oChildNavItemClass;
                }
                if (options.TryGetValue("childNavLinkClass", out var oChildNavLinkClass))
                {
                    navOptions.ChildNavLinkClass = (string)oChildNavLinkClass;
                }
                if (options.TryGetValue("childNavMenuClass", out var oChildNavMenuClass))
                {
                    navOptions.ChildNavMenuClass = (string)oChildNavMenuClass;
                }
                if (options.TryGetValue("childNavMenuItemClass", out var oChildNavMenuItemClass))
                {
                    navOptions.ChildNavMenuItemClass = (string)oChildNavMenuItemClass;
                }
            }

            if (navOptions.ActivePath == null)
            {
                navOptions.ActivePath = scope.GetValue("PathInfo")?.ToString();
            }
            if (navOptions.Attributes == null)
            {
                navOptions.Attributes = Context.GetServiceStackFilters().req(scope).GetUserAttributes();
            }

            return(navOptions);
        }
 public static NavOptions WithDefaults(this NavOptions options, IRequest request)
 {
     if (options == null)
         options = new NavOptions();
     if (options.ActivePath == null)
         options.ActivePath = request.PathInfo;
     if (options.Attributes == null)
         options.Attributes = request.GetUserAttributes();
         
     return options;
 }
        public static NavOptions WithDefaults(this NavOptions options, IRequest request)
        {
            if (options == null)
            {
                options = new NavOptions();
            }
            if (options.ActivePath == null)
            {
                options.ActivePath = request.PathInfo;
            }
            if (options.Attributes == null)
            {
                options.Attributes = request.GetUserAttributes();
            }
            var pathBase = HostContext.Config.PathBase;

            if (!string.IsNullOrEmpty(pathBase))
            {
                options.BaseHref = pathBase;
            }

            return(options);
        }
예제 #4
0
        NavOptions ToNavOptions(ScriptScopeContext scope, Dictionary <string, object> options)
        {
            var navOptions = new NavOptions();

            if (options != null)
            {
                if (options.TryGetValue("attributes", out var oAttributes))
                {
                    navOptions.Attributes = ViewUtils.ToStrings(nameof(ToNavOptions), oAttributes).ToHashSet();
                }
                if (options.TryGetValue("activePath", out var oActive))
                {
                    navOptions.ActivePath = (string)oActive;
                }
                if (options.TryGetValue("baseHref", out var oBaseHref))
                {
                    navOptions.BaseHref = (string)oBaseHref;
                }
                if (options.TryGetValue("navClass", out var oNavClass))
                {
                    navOptions.NavClass = (string)oNavClass;
                }
                if (options.TryGetValue("navItemClass", out var oNavItemClass))
                {
                    navOptions.NavItemClass = (string)oNavItemClass;
                }
                if (options.TryGetValue("navLinkClass", out var oNavLinkClass))
                {
                    navOptions.NavLinkClass = (string)oNavLinkClass;
                }
                if (options.TryGetValue("childNavItemClass", out var oChildNavItemClass))
                {
                    navOptions.ChildNavItemClass = (string)oChildNavItemClass;
                }
                if (options.TryGetValue("childNavLinkClass", out var oChildNavLinkClass))
                {
                    navOptions.ChildNavLinkClass = (string)oChildNavLinkClass;
                }
                if (options.TryGetValue("childNavMenuClass", out var oChildNavMenuClass))
                {
                    navOptions.ChildNavMenuClass = (string)oChildNavMenuClass;
                }
                if (options.TryGetValue("childNavMenuItemClass", out var oChildNavMenuItemClass))
                {
                    navOptions.ChildNavMenuItemClass = (string)oChildNavMenuItemClass;
                }
            }

            if (navOptions.ActivePath == null)
            {
                navOptions.ActivePath = scope.GetValue("PathInfo")?.ToString();
            }
            if (navOptions.Attributes == null)
            {
                navOptions.Attributes = scope.GetRequest().GetUserAttributes();
            }
            if (navOptions.BaseHref == null)
            {
                var pathBase = HostContext.Config.PathBase;
                if (!string.IsNullOrEmpty(pathBase))
                {
                    navOptions.BaseHref = pathBase;
                }
            }

            return(navOptions);
        }
예제 #5
0
 public static HtmlString NavButtonGroup(this IHtmlHelper html, List <NavItem> navItems, NavOptions options) =>
 ViewUtils.NavButtonGroup(navItems, options.ForNavButtonGroup().WithDefaults(html.GetRequest())).ToHtmlString();
예제 #6
0
 public static HtmlString NavButtonGroup(this IHtmlHelper html, NavOptions options) => html.NavButtonGroup(ViewUtils.NavItems, options);
예제 #7
0
 public static HtmlString NavLink(this IHtmlHelper html, NavItem navItem, NavOptions options) =>
 ViewUtils.NavLink(navItem, options.ForNavLink().WithDefaults(html.GetRequest())).ToHtmlString();
예제 #8
0
 public static HtmlString Navbar(this IHtmlHelper html, NavOptions options) => html.Navbar(ViewUtils.NavItems, options);