-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Expand file tree
/
Copy pathBootstrapScripts.cs
More file actions
128 lines (105 loc) · 7.04 KB
/
Copy pathBootstrapScripts.cs
File metadata and controls
128 lines (105 loc) · 7.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using ServiceStack.Script;
namespace ServiceStack
{
// ReSharper disable InconsistentNaming
public class BootstrapScripts : ScriptMethods
{
public IRawString validationSummary(ScriptScopeContext scope) =>
validationSummary(scope, null, null);
public IRawString validationSummary(ScriptScopeContext scope, IEnumerable exceptFields) =>
validationSummary(scope, exceptFields, null);
public IRawString validationSummary(ScriptScopeContext scope, IEnumerable exceptFields, object htmlAttrs)
{
var ssFilters = Context.GetServiceStackFilters();
if (ssFilters == null)
return null;
var errorSummaryMsg = exceptFields != null
? ssFilters.errorResponseExcept(scope, exceptFields) // string | string[]
: ssFilters.errorResponseSummary(scope);
if (string.IsNullOrEmpty(errorSummaryMsg))
return null;
var divAttrs = htmlAttrs.AssertOptions(nameof(validationSummary));
if (!divAttrs.ContainsKey("class") && !divAttrs.ContainsKey("className"))
divAttrs["class"] = "alert alert-danger";
return Context.HtmlMethods.htmlDiv(errorSummaryMsg, divAttrs);
}
public IRawString ValidationSuccess(ScriptScopeContext scope, string message) => ValidationSuccess(scope, message, null);
public IRawString ValidationSuccess(ScriptScopeContext scope, string message, Dictionary<string,object> divAttrs)
{
var errorStatus = scope.GetErrorStatus();
if (message == null
|| errorStatus != null
|| scope.GetRequest().Verb == HttpMethods.Get)
return null;
return ViewUtils.ValidationSuccess(message, divAttrs).ToRawString();
}
public IRawString formTextarea(ScriptScopeContext scope, object args) => formTextarea(scope, args, null);
public IRawString formTextarea(ScriptScopeContext scope, object inputAttrs, object inputOptions) =>
formControl(scope, inputAttrs, "textarea", inputOptions);
public IRawString formSelect(ScriptScopeContext scope, object args) => formSelect(scope, args, null);
public IRawString formSelect(ScriptScopeContext scope, object inputAttrs, object inputOptions) =>
formControl(scope, inputAttrs, "select", inputOptions);
public IRawString formInput(ScriptScopeContext scope, object args) => formInput(scope, args, null);
public IRawString formInput(ScriptScopeContext scope, object inputAttrs, object inputOptions) =>
formControl(scope, inputAttrs, "input", inputOptions);
public IRawString formControl(ScriptScopeContext scope, object inputAttrs, string tagName, object inputOptions) =>
ViewUtils.FormControl(scope.GetRequest(), inputAttrs.AssertOptions(nameof(formControl)), tagName,
(inputOptions as IEnumerable<KeyValuePair<string, object>>).FromObjectDictionary<InputOptions>()).ToRawString();
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;
}
public IRawString nav(ScriptScopeContext scope) => nav(scope, ViewUtils.NavItems);
public IRawString nav(ScriptScopeContext scope, List<NavItem> navItems) => nav(scope, navItems, null);
public IRawString nav(ScriptScopeContext scope, List<NavItem> navItems, Dictionary<string, object> options) =>
ViewUtils.Nav(navItems, ToNavOptions(scope, options).ForNav()).ToRawString();
public IRawString navbar(ScriptScopeContext scope) => navbar(scope, ViewUtils.NavItems);
public IRawString navbar(ScriptScopeContext scope, List<NavItem> navItems) => navbar(scope, navItems, null);
public IRawString navbar(ScriptScopeContext scope, List<NavItem> navItems, Dictionary<string, object> options) =>
ViewUtils.Nav(navItems, ToNavOptions(scope, options).ForNavbar()).ToRawString();
public IRawString navLink(ScriptScopeContext scope, NavItem navItem) => navLink(scope, navItem, null);
public IRawString navLink(ScriptScopeContext scope, NavItem navItem, Dictionary<string, object> options) =>
ViewUtils.NavLink(navItem, ToNavOptions(scope, options).ForNavLink()).ToRawString();
public IRawString navButtonGroup(ScriptScopeContext scope) => navButtonGroup(scope, ViewUtils.NavItems);
public IRawString navButtonGroup(ScriptScopeContext scope, List<NavItem> navItems) => navButtonGroup(scope, navItems, null);
public IRawString navButtonGroup(ScriptScopeContext scope, List<NavItem> navItems, Dictionary<string, object> options) =>
ViewUtils.NavButtonGroup(navItems, ToNavOptions(scope, options).ForNavButtonGroup()).ToRawString();
}
}