11using HandlebarsDotNet ;
2+ using Newtonsoft . Json ;
23using SilkierQuartz . Models ;
34using SilkierQuartz . TypeHandlers ;
45using System ;
@@ -51,11 +52,11 @@ void RegisterInternal()
5152 h . RegisterHelper ( "Upper" , ( o , c , a ) => o . Write ( a [ 0 ] . ToString ( ) . ToUpper ( ) ) ) ;
5253 h . RegisterHelper ( "Lower" , ( o , c , a ) => o . Write ( a [ 0 ] . ToString ( ) . ToLower ( ) ) ) ;
5354 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 ( ) ) ) ;
5556 h . RegisterHelper ( "DefaultDateFormat" , ( o , c , a ) => o . Write ( DateTimeSettings . DefaultDateFormat ) ) ;
5657 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 ) ) ) ;
5960 h . RegisterHelper ( "Disabled" , ( o , c , a ) => { if ( IsTrue ( a [ 0 ] ) ) o . Write ( "disabled" ) ; } ) ;
6061 h . RegisterHelper ( "Checked" , ( o , c , a ) => { if ( IsTrue ( a [ 0 ] ) ) o . Write ( "checked" ) ; } ) ;
6162 h . RegisterHelper ( "nvl" , ( o , c , a ) => o . Write ( a [ a [ 0 ] == null ? 1 : 0 ] ) ) ;
@@ -66,7 +67,7 @@ void RegisterInternal()
6667 h . RegisterHelper ( nameof ( RenderJobDataMapValue ) , RenderJobDataMapValue ) ;
6768 h . RegisterHelper ( nameof ( ViewBag ) , ViewBag ) ;
6869 h . RegisterHelper ( nameof ( ActionUrl ) , ActionUrl ) ;
69- h . RegisterHelper ( nameof ( Json ) , Json ) ;
70+ h . RegisterHelper ( nameof ( Json ) , ( o , c , a ) => Json ( o , c , a ) ) ;
7071 h . RegisterHelper ( nameof ( Selected ) , Selected ) ;
7172 h . RegisterHelper ( nameof ( isType ) , isType ) ;
7273 h . RegisterHelper ( nameof ( eachPair ) , eachPair ) ;
@@ -122,18 +123,18 @@ private string AddQueryString(string uri, IEnumerable<KeyValuePair<string, objec
122123 return sb . ToString ( ) ;
123124 }
124125
125- void ViewBag ( TextWriter output , dynamic context , params object [ ] arguments )
126+ void ViewBag ( EncodedTextWriter output , Context context , Arguments arguments )
126127 {
127128 var dict = ( IDictionary < string , object > ) arguments [ 0 ] ;
128- var viewBag = ( IDictionary < string , object > ) context . ViewBag ;
129+ var viewBag = ( IDictionary < string , object > ) context [ " ViewBag" ] ;
129130
130131 foreach ( var pair in dict )
131132 {
132133 viewBag [ pair . Key ] = pair . Value ;
133134 }
134135 }
135136
136- void MenuItemActionLink ( TextWriter output , dynamic context , params object [ ] arguments )
137+ void MenuItemActionLink ( EncodedTextWriter output , Context context , Arguments arguments )
137138 {
138139 var dict = arguments [ 0 ] as IDictionary < string , object > ?? new Dictionary < string , object > ( ) { [ "controller" ] = arguments [ 0 ] } ;
139140
@@ -143,7 +144,7 @@ void MenuItemActionLink(TextWriter output, dynamic context, params object[] argu
143144 }
144145
145146 var classes = "item" ;
146- if ( dict [ "controller" ] . Equals ( context . ControllerName ) )
147+ if ( dict [ "controller" ] . Equals ( context . GetValue < string > ( " ControllerName" ) ) )
147148 classes += " active" ;
148149
149150 var url = BaseUrl + dict [ "controller" ] ;
@@ -152,7 +153,7 @@ void MenuItemActionLink(TextWriter output, dynamic context, params object[] argu
152153 output . WriteSafeString ( $@ "<a href=""{ url } "" class=""{ classes } "">{ title } </a>") ;
153154 }
154155
155- void ActionUrl ( TextWriter output , dynamic context , params object [ ] arguments )
156+ void ActionUrl ( EncodedTextWriter output , Context context , Arguments arguments )
156157 {
157158 if ( arguments . Length < 1 || arguments . Length > 3 )
158159 throw new ArgumentOutOfRangeException ( nameof ( arguments ) ) ;
@@ -175,8 +176,7 @@ void ActionUrl(TextWriter output, dynamic context, params object[] arguments)
175176 if ( arguments . Length == 3 ) // [actionName, controllerName, routeValues]
176177 routeValues = ( IDictionary < string , object > ) arguments [ 2 ] ;
177178
178- if ( controller == null )
179- controller = context . ControllerName ;
179+ controller ??= context . GetValue < string > ( "ControllerName" ) ;
180180
181181 var url = BaseUrl + controller ;
182182
@@ -186,7 +186,7 @@ void ActionUrl(TextWriter output, dynamic context, params object[] arguments)
186186 output . WriteSafeString ( AddQueryString ( url , routeValues ) ) ;
187187 }
188188
189- void Selected ( TextWriter output , dynamic context , params object [ ] arguments )
189+ void Selected ( EncodedTextWriter output , Context context , Arguments arguments )
190190 {
191191 string selected ;
192192 if ( arguments . Length >= 2 )
@@ -198,18 +198,27 @@ void Selected(TextWriter output, dynamic context, params object[] arguments)
198198 output . Write ( "selected" ) ;
199199 }
200200
201- void Json ( TextWriter output , dynamic context , params object [ ] arguments )
201+ void Json ( EncodedTextWriter output , Context context , Arguments arguments , params object [ ] args )
202202 {
203- output . WriteSafeString ( Newtonsoft . Json . JsonConvert . SerializeObject ( arguments [ 0 ] ) ) ;
203+ if ( arguments . Length > 0 )
204+ {
205+ output . WriteSafeString ( JsonConvert . SerializeObject ( arguments [ 0 ] ) ) ;
206+ }
207+
208+ if ( args . Length <= 0 )
209+ {
210+ return ;
211+ }
212+
213+ output . WriteSafeString ( JsonConvert . SerializeObject ( args [ 0 ] ) ) ;
204214 }
205215
206- void RenderJobDataMapValue ( TextWriter output , dynamic context , params object [ ] arguments )
216+ void RenderJobDataMapValue ( EncodedTextWriter output , Context context , Arguments arguments )
207217 {
208- var item = ( JobDataMapItem ) arguments [ 1 ] ;
209- output . WriteSafeString ( item . SelectedType . RenderView ( ( Services ) arguments [ 0 ] , item . Value ) ) ;
218+ var item = ( JobDataMapItem ) arguments [ 0 ] ;
219+ output . WriteSafeString ( item . SelectedType . RenderView ( _services , item . Value ) ) ;
210220 }
211-
212- void isType ( TextWriter writer , HelperOptions options , dynamic context , params object [ ] arguments )
221+ void isType ( EncodedTextWriter writer , BlockHelperOptions options , Context context , Arguments arguments )
213222 {
214223 Type [ ] expectedType ;
215224
@@ -230,12 +239,12 @@ void isType(TextWriter writer, HelperOptions options, dynamic context, params ob
230239 var t = arguments [ 0 ] ? . GetType ( ) ;
231240
232241 if ( expectedType . Any ( x => x . IsAssignableFrom ( t ) ) )
233- options . Template ( writer , ( object ) context ) ;
242+ options . Template ( writer , context . Value ) ;
234243 else
235- options . Inverse ( writer , ( object ) context ) ;
244+ options . Inverse ( writer , context . Value ) ;
236245 }
237246
238- void eachPair ( TextWriter writer , HelperOptions options , dynamic context , params object [ ] arguments )
247+ void eachPair ( EncodedTextWriter writer , BlockHelperOptions options , Context context , Arguments arguments )
239248 {
240249 void OutputElements < T > ( )
241250 {
@@ -250,39 +259,39 @@ void OutputElements<T>()
250259 OutputElements < KeyValuePair < string , object > > ( ) ;
251260 }
252261
253- void eachItems ( TextWriter writer , HelperOptions options , dynamic context , params object [ ] arguments )
262+ void eachItems ( EncodedTextWriter writer , BlockHelperOptions options , Context context , Arguments arguments )
254263 {
255264 eachPair ( writer , options , context , ( ( dynamic ) arguments [ 0 ] ) . GetItems ( ) ) ;
256265 }
257266
258- void ToBase64 ( TextWriter output , dynamic context , params object [ ] arguments )
267+ void ToBase64 ( EncodedTextWriter output , Context context , Arguments arguments )
259268 {
260269 var bytes = ( byte [ ] ) arguments [ 0 ] ;
261270
262271 if ( bytes != null )
263272 output . Write ( Convert . ToBase64String ( bytes ) ) ;
264273 }
265274
266- void footer ( TextWriter writer , HelperOptions options , dynamic context , params object [ ] arguments )
275+ void footer ( EncodedTextWriter writer , BlockHelperOptions options , Context context , Arguments arguments )
267276 {
268- IDictionary < string , object > viewBag = context . ViewBag ;
277+ var viewBag = ( IDictionary < string , object > ) context [ " ViewBag" ] ;
269278
270279 if ( viewBag . TryGetValue ( "ShowFooter" , out var show ) && ( bool ) show == true )
271280 {
272281 options . Template ( writer , ( object ) context ) ;
273282 }
274283 }
275- void SilkierQuartzVersion ( TextWriter output , dynamic context , params object [ ] arguments )
284+ void SilkierQuartzVersion ( EncodedTextWriter output , Context context , Arguments arguments )
276285 {
277286 var v = GetType ( ) . Assembly . GetCustomAttributes < AssemblyInformationalVersionAttribute > ( ) . FirstOrDefault ( ) ;
278287 output . Write ( v . InformationalVersion ) ;
279288 }
280289
281- void Logo ( TextWriter output , dynamic context , params object [ ] arguments )
290+ void Logo ( EncodedTextWriter output , Context context , Arguments arguments )
282291 {
283292 output . Write ( _services . Options . Logo ) ;
284293 }
285- void ProductName ( TextWriter output , dynamic context , params object [ ] arguments )
294+ void ProductName ( EncodedTextWriter output , Context context , Arguments arguments )
286295 {
287296 output . Write ( _services . Options . ProductName ) ;
288297 }
0 commit comments