forked from ServiceStack/ServiceStack
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBootstrapScripts.cs
More file actions
126 lines (102 loc) · 7 KB
/
Copy pathBootstrapScripts.cs
File metadata and controls
126 lines (102 loc) · 7 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
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 ssFilters = Context.GetServiceStackFilters();
if (ssFilters == null)
return null;
var errorStatus = ssFilters.getErrorStatus(scope);
if (message == null
|| errorStatus != null
|| ssFilters.req(scope).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(Context.GetServiceStackFilters().req(scope), 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 = Context.GetServiceStackFilters().req(scope).GetUserAttributes();
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();
}
}