1
1
using HandlebarsDotNet ;
2
+ using Newtonsoft . Json ;
2
3
using SilkierQuartz . Models ;
3
4
using SilkierQuartz . TypeHandlers ;
4
5
using System ;
@@ -51,11 +52,11 @@ void RegisterInternal()
51
52
h . RegisterHelper ( "Upper" , ( o , c , a ) => o . Write ( a [ 0 ] . ToString ( ) . ToUpper ( ) ) ) ;
52
53
h . RegisterHelper ( "Lower" , ( o , c , a ) => o . Write ( a [ 0 ] . ToString ( ) . ToLower ( ) ) ) ;
53
54
h . RegisterHelper ( "LocalTimeZoneInfoId" , ( o , c , a ) => o . Write ( TimeZoneInfo . Local . Id ) ) ;
54
- h . RegisterHelper ( "SystemTimeZonesJson" , ( o , c , a ) => Json ( o , c , TimeZoneInfo . GetSystemTimeZones ( ) . ToDictionary ( ) ) ) ;
55
+ h . RegisterHelper ( "SystemTimeZonesJson" , ( o , c , a ) => Json ( o , c , a , TimeZoneInfo . GetSystemTimeZones ( ) . ToDictionary ( ) ) ) ;
55
56
h . RegisterHelper ( "DefaultDateFormat" , ( o , c , a ) => o . Write ( DateTimeSettings . DefaultDateFormat ) ) ;
56
57
h . RegisterHelper ( "DefaultTimeFormat" , ( o , c , a ) => o . Write ( DateTimeSettings . DefaultTimeFormat ) ) ;
57
- h . RegisterHelper ( "DoLayout" , ( o , c , a ) => c . Layout ( ) ) ;
58
- h . RegisterHelper ( "SerializeTypeHandler" , ( o , c , a ) => o . WriteSafeString ( ( ( Services ) a [ 0 ] ) . TypeHandlers . Serialize ( ( TypeHandlerBase ) c ) ) ) ;
58
+ h . RegisterHelper ( "DoLayout" , ( o , c , a ) => ( c . Value as Histogram ) ? . Layout ( ) ) ;
59
+ h . RegisterHelper ( "SerializeTypeHandler" , ( o , c , a ) => o . WriteSafeString ( _services . TypeHandlers . Serialize ( ( TypeHandlerBase ) c . Value ) ) ) ;
59
60
h . RegisterHelper ( "Disabled" , ( o , c , a ) => { if ( IsTrue ( a [ 0 ] ) ) o . Write ( "disabled" ) ; } ) ;
60
61
h . RegisterHelper ( "Checked" , ( o , c , a ) => { if ( IsTrue ( a [ 0 ] ) ) o . Write ( "checked" ) ; } ) ;
61
62
h . RegisterHelper ( "nvl" , ( o , c , a ) => o . Write ( a [ a [ 0 ] == null ? 1 : 0 ] ) ) ;
@@ -66,7 +67,7 @@ void RegisterInternal()
66
67
h . RegisterHelper ( nameof ( RenderJobDataMapValue ) , RenderJobDataMapValue ) ;
67
68
h . RegisterHelper ( nameof ( ViewBag ) , ViewBag ) ;
68
69
h . RegisterHelper ( nameof ( ActionUrl ) , ActionUrl ) ;
69
- h . RegisterHelper ( nameof ( Json ) , Json ) ;
70
+ h . RegisterHelper ( nameof ( Json ) , ( o , c , a ) => Json ( o , c , a ) ) ;
70
71
h . RegisterHelper ( nameof ( Selected ) , Selected ) ;
71
72
h . RegisterHelper ( nameof ( isType ) , isType ) ;
72
73
h . RegisterHelper ( nameof ( eachPair ) , eachPair ) ;
@@ -120,18 +121,18 @@ private string AddQueryString(string uri, IEnumerable<KeyValuePair<string, objec
120
121
return sb . ToString ( ) ;
121
122
}
122
123
123
- void ViewBag ( TextWriter output , dynamic context , params object [ ] arguments )
124
+ void ViewBag ( EncodedTextWriter output , Context context , Arguments arguments )
124
125
{
125
126
var dict = ( IDictionary < string , object > ) arguments [ 0 ] ;
126
- var viewBag = ( IDictionary < string , object > ) context . ViewBag ;
127
+ var viewBag = ( IDictionary < string , object > ) context [ " ViewBag" ] ;
127
128
128
129
foreach ( var pair in dict )
129
130
{
130
131
viewBag [ pair . Key ] = pair . Value ;
131
132
}
132
133
}
133
134
134
- void MenuItemActionLink ( TextWriter output , dynamic context , params object [ ] arguments )
135
+ void MenuItemActionLink ( EncodedTextWriter output , Context context , Arguments arguments )
135
136
{
136
137
var dict = arguments [ 0 ] as IDictionary < string , object > ?? new Dictionary < string , object > ( ) { [ "controller" ] = arguments [ 0 ] } ;
137
138
@@ -141,7 +142,7 @@ void MenuItemActionLink(TextWriter output, dynamic context, params object[] argu
141
142
}
142
143
143
144
var classes = "item" ;
144
- if ( dict [ "controller" ] . Equals ( context . ControllerName ) )
145
+ if ( dict [ "controller" ] . Equals ( context . GetValue < string > ( " ControllerName" ) ) )
145
146
classes += " active" ;
146
147
147
148
var url = BaseUrl + dict [ "controller" ] ;
@@ -150,7 +151,7 @@ void MenuItemActionLink(TextWriter output, dynamic context, params object[] argu
150
151
output . WriteSafeString ( $@ "<a href=""{ url } "" class=""{ classes } "">{ title } </a>") ;
151
152
}
152
153
153
- void ActionUrl ( TextWriter output , dynamic context , params object [ ] arguments )
154
+ void ActionUrl ( EncodedTextWriter output , Context context , Arguments arguments )
154
155
{
155
156
if ( arguments . Length < 1 || arguments . Length > 3 )
156
157
throw new ArgumentOutOfRangeException ( nameof ( arguments ) ) ;
@@ -173,8 +174,7 @@ void ActionUrl(TextWriter output, dynamic context, params object[] arguments)
173
174
if ( arguments . Length == 3 ) // [actionName, controllerName, routeValues]
174
175
routeValues = ( IDictionary < string , object > ) arguments [ 2 ] ;
175
176
176
- if ( controller == null )
177
- controller = context . ControllerName ;
177
+ controller ??= context . GetValue < string > ( "ControllerName" ) ;
178
178
179
179
var url = BaseUrl + controller ;
180
180
@@ -184,7 +184,7 @@ void ActionUrl(TextWriter output, dynamic context, params object[] arguments)
184
184
output . WriteSafeString ( AddQueryString ( url , routeValues ) ) ;
185
185
}
186
186
187
- void Selected ( TextWriter output , dynamic context , params object [ ] arguments )
187
+ void Selected ( EncodedTextWriter output , Context context , Arguments arguments )
188
188
{
189
189
string selected ;
190
190
if ( arguments . Length >= 2 )
@@ -196,18 +196,27 @@ void Selected(TextWriter output, dynamic context, params object[] arguments)
196
196
output . Write ( "selected" ) ;
197
197
}
198
198
199
- void Json ( TextWriter output , dynamic context , params object [ ] arguments )
199
+ void Json ( EncodedTextWriter output , Context context , Arguments arguments , params object [ ] args )
200
200
{
201
- output . WriteSafeString ( Newtonsoft . Json . JsonConvert . SerializeObject ( arguments [ 0 ] ) ) ;
201
+ if ( arguments . Length > 0 )
202
+ {
203
+ output . WriteSafeString ( JsonConvert . SerializeObject ( arguments [ 0 ] ) ) ;
204
+ }
205
+
206
+ if ( args . Length <= 0 )
207
+ {
208
+ return ;
209
+ }
210
+
211
+ output . WriteSafeString ( JsonConvert . SerializeObject ( args [ 0 ] ) ) ;
202
212
}
203
213
204
- void RenderJobDataMapValue ( TextWriter output , dynamic context , params object [ ] arguments )
214
+ void RenderJobDataMapValue ( EncodedTextWriter output , Context context , Arguments arguments )
205
215
{
206
- var item = ( JobDataMapItem ) arguments [ 1 ] ;
207
- output . WriteSafeString ( item . SelectedType . RenderView ( ( Services ) arguments [ 0 ] , item . Value ) ) ;
216
+ var item = ( JobDataMapItem ) arguments [ 0 ] ;
217
+ output . WriteSafeString ( item . SelectedType . RenderView ( _services , item . Value ) ) ;
208
218
}
209
-
210
- void isType ( TextWriter writer , HelperOptions options , dynamic context , params object [ ] arguments )
219
+ void isType ( EncodedTextWriter writer , BlockHelperOptions options , Context context , Arguments arguments )
211
220
{
212
221
Type [ ] expectedType ;
213
222
@@ -228,12 +237,12 @@ void isType(TextWriter writer, HelperOptions options, dynamic context, params ob
228
237
var t = arguments [ 0 ] ? . GetType ( ) ;
229
238
230
239
if ( expectedType . Any ( x => x . IsAssignableFrom ( t ) ) )
231
- options . Template ( writer , ( object ) context ) ;
240
+ options . Template ( writer , context . Value ) ;
232
241
else
233
- options . Inverse ( writer , ( object ) context ) ;
242
+ options . Inverse ( writer , context . Value ) ;
234
243
}
235
244
236
- void eachPair ( TextWriter writer , HelperOptions options , dynamic context , params object [ ] arguments )
245
+ void eachPair ( EncodedTextWriter writer , BlockHelperOptions options , Context context , Arguments arguments )
237
246
{
238
247
void OutputElements < T > ( )
239
248
{
@@ -248,39 +257,39 @@ void OutputElements<T>()
248
257
OutputElements < KeyValuePair < string , object > > ( ) ;
249
258
}
250
259
251
- void eachItems ( TextWriter writer , HelperOptions options , dynamic context , params object [ ] arguments )
260
+ void eachItems ( EncodedTextWriter writer , BlockHelperOptions options , Context context , Arguments arguments )
252
261
{
253
262
eachPair ( writer , options , context , ( ( dynamic ) arguments [ 0 ] ) . GetItems ( ) ) ;
254
263
}
255
264
256
- void ToBase64 ( TextWriter output , dynamic context , params object [ ] arguments )
265
+ void ToBase64 ( EncodedTextWriter output , Context context , Arguments arguments )
257
266
{
258
267
var bytes = ( byte [ ] ) arguments [ 0 ] ;
259
268
260
269
if ( bytes != null )
261
270
output . Write ( Convert . ToBase64String ( bytes ) ) ;
262
271
}
263
272
264
- void footer ( TextWriter writer , HelperOptions options , dynamic context , params object [ ] arguments )
273
+ void footer ( EncodedTextWriter writer , BlockHelperOptions options , Context context , Arguments arguments )
265
274
{
266
- IDictionary < string , object > viewBag = context . ViewBag ;
275
+ var viewBag = ( IDictionary < string , object > ) context [ " ViewBag" ] ;
267
276
268
277
if ( viewBag . TryGetValue ( "ShowFooter" , out var show ) && ( bool ) show == true )
269
278
{
270
279
options . Template ( writer , ( object ) context ) ;
271
280
}
272
281
}
273
- void SilkierQuartzVersion ( TextWriter output , dynamic context , params object [ ] arguments )
282
+ void SilkierQuartzVersion ( EncodedTextWriter output , Context context , Arguments arguments )
274
283
{
275
284
var v = GetType ( ) . Assembly . GetCustomAttributes < AssemblyInformationalVersionAttribute > ( ) . FirstOrDefault ( ) ;
276
285
output . Write ( v . InformationalVersion ) ;
277
286
}
278
287
279
- void Logo ( TextWriter output , dynamic context , params object [ ] arguments )
288
+ void Logo ( EncodedTextWriter output , Context context , Arguments arguments )
280
289
{
281
290
output . Write ( _services . Options . Logo ) ;
282
291
}
283
- void ProductName ( TextWriter output , dynamic context , params object [ ] arguments )
292
+ void ProductName ( EncodedTextWriter output , Context context , Arguments arguments )
284
293
{
285
294
output . Write ( _services . Options . ProductName ) ;
286
295
}
0 commit comments