-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathChanges.txt
1615 lines (1059 loc) · 59.5 KB
/
Changes.txt
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
2.1 RC
==========
- Updated to AR 3 RC and NHibernate 3.1.0 GA
- Updated to Windsor 2.5.3
- Updated to Auto Tx 2.5.1
- Wrapped regular expression in quotes in the jQuery validation generator
- DefaultControllerFactory initializing controller logger
2.1 Beta
==========
- Major code cleanup + reformatting
- Updated to Core and Windsor 2.5.2
- Updated to AR 3 Beta and NHibernate 3
- Updated to Binder 2.5, Template Engine 1.1.2 and Validator 2.5
- Merged Castle.MonoRail.TestSupport.dll into Castle.MonoRail.Framework.dll
- IInitializable usage dropped and replaced by the IServiceEnabledComponent. (Most related to viewengines implementations)
- Fixed: AsyncAction does not take care of transform filters (MR-564)
- Fixed: DefaultCacheProvider throws NullReferenceExceptio (MR-565)
- Fixed: JQueryHelper cannot be used without its default ctor (MR-559)
- Fixed: Delete operations (Scaffolding) do not work if used with NHibernate SessionScope with FlushAction.Never (MR-463)
- Fixed: FormHelper's disablevalidation parameter only works when in Push command and on field (MR-346)
- Fixed: Security ViewComponent allow content on success but not failure. (MR-558)
- Fixed: Async action & LocalizationFilter (MR-507)
- Fixed: Can't parse ?var1, ${var1}, !{var1}, ${?var1} in .brailjs (MR-504)
- Fixed: AspView and the IDictionaryAdapterFactory (MR-522)
- Fixed: Custom scaffolded views are broken (MR-537)
Added Convenience functions for configuration (ViewEngineConfig and SmtpConfig). (MR-467)
Added support for inferred actions, If you have controller actions that their sole purpose is to render a view, then you are going to love this.
You no longer have to declare empty actions, MR will look in your views folder and display that view automatically. If view is not found a 404 is thrown.
Added new helper called ActionHelper that invokes the specified child action and returns the result inline or as an HTML string, aka MS MVC Html.RenderAction and Html.Action.
Added support for Action Filter attributes. Filters for dynamic action aren't support atm.
Added the ForHelper.
2.0
==========
- Updated ActiveRecord + TemplateEngine to release versions
- Applied Alwin's patchfixing MR-ISSUE-557
"SmtpUseSsl="true" can be specified in monorail config file"
- Updated dependecies to latest released versions
- Removed dependency on Castle.Components.Common.EmailSender.dll and is now using IEmailSender from Castle.Core.dll
- Applied Michael Davis patch fixing MR-ISSUE-494
"AbstractPaginationViewComponent with PreserveQueryString = true double-encodes query string parameters"
- Updated Newtonsoft.Json.dll to v3.5.0.0
- Removed HtmlHelper and ValidationHelper
- Fixed MR-ISSUE-554
"Image url's in single quotes get rewritten as empty strings by JSCombine View Component"
- Applied Alex's patch fixing MR-ISSUE-553
"IRoutingEngine service when present in parent container is not used by DefaultMonoRailContainer"
- Applied Rich Prior's patch fixing MR-ISSUE-550
"AspView can't find view when accessing paths with a capital 'I' when set to Turkish locale"
- Applied John Simons' patch fixing MR-ISSUE-546
"Check for route name before UseCurrentRouteParams on DefaultUrlBuilder"
- Applied John Simons' patch fixing MR-ISSUE-545
"UrlHelper.ButtonLink produces wrong HTML"
- Applied patch by Gildas fixing MR-ISSUE-522
"AspView and the IDictionaryAdapterFactory"
This patch integrate the IDictionaryAdapterFactory into the IMonoRailServices interface and its implementations.
- Applied patch by Martin Nilsson fixing MR-ISSUE-515
"Priorize view engines."
MR now guarantees that the view engines are resolved in the order of engine registrations.
- Applied John Simons' patch fixing MR-ISSUE-531
"update Monorail Wizard framework to support routing"
- Fixed missing parameter in function definition for JSON bound parameters.
- JSONBinder EntryKey is now respected as a serverside parameter name when specified in the attribute.
- Added JQuery proxy generator.
- Refactored the proxy generator to an abstract class making it easier for clients to plugin.
- The path supplied in <path location="" /> is now relative to the site root.
ASPView engine supports loading and recompiling views from different view locations
- Applied Gauthier Segay's patch fixing CONTRIB-ISSUE-116
(AspView) allow the use of .master files in the layouts viewtemplate's folder
- Added additional path support to the view engine configuration
<viewEngine
viewPathRoot="views"
customEngine="ViewEngine.Type.Name, Assembly">
<additionalSources>
<assembly name="" namespace="" />
<path location="" />
</additionalSources>
</viewEngine>
Breaking change; the additional assemlby sources property on FileAssemblyViewSourceLoader is now named 'AssemblySources'.
the paths are loaded into 'PathSources'
- Applied Robert Ream's patch fixing MR-438
"FormHelper element methods "defaultValue" attribute."
From description: This patch adds the "defaultValue" attribute to most of the FormHelper element generator methods.
- Applied Victor Kornov's patch fixing MR-448
"Make JSONReturnBinderAttribute open for extension"
- Applied Steven Radack's patch fixing MR-449
"Change ResourceFileHandler to add HTTP cache headers"
Used some of Andre Loker's suggestions. Wont use Assembly CodeBase as I think that might
introduce security checks that are hard to deal on shared hosts
- Applied Andre Loker's patch fixing MR-453
"FormHelper.PasswordNumberField/PasswordField: option to decide whether to fill value attribute"
- Applied Mike Nichols's patch fixing MR-455
DefaultUrlBuilder doesn't persist route parameters when using RedirectUsingNamedRoute
- Applied Andre Loker's patch fixing MR-456
"Routing Engine: support for root-routing + excluding MonoRail resource files from routing"
- Applied Mike Nichols's patch fixing MR-396
Get WindsorIntegration on DynamicActionProviders.
- Applied Gildas's patch fixing MR-433
Support for the jQuery Validation plugin.
- Applied Fixed MR-428
Transformation Filters didn't work in trunk
- Applied Aaron Jensen's adding call to RaiseUnhandledError when a controller fails to be created.
- Applied Roger Chapman's patch adding the pascalcasetoword option to FormHelper.Select options dictionary.
- Applied Dan Goldstein's patch fixing MR-346
"FormHelper's disablevalidation parameter only works when in Push command and on field"
- Fixed MR-409
Introduced IMonoRailContainerEvents and IMonoRailConfigurationEvents that might be implemented by the
HttpApplication subclass
- Fixed MR-412
"When applying a layout attribute over an Action, layout doesn't render for the rendered view."
- Applied James Curran's patch fixing MR-391
"ViewComponentDetailsAttribute use could lead to duplicate names."
- Applied Mike Nichols' patch fixing MR-392
"FormHelper.LiteralFor feature addition"
- Applied Alwin's patch fixing MR-398
"Could not save <model>. Ambiguous match found. (AmbiguousMatchException
when using Scaffolding and ActiveRecordValidationBase<T>)"
- Applied James Curran's patch fixing MR-419
"Improving initializing Service Enabled Components"
- Added FormHelper.TextFieldAutoComplete for combining AJAX AutoCompletion and FormHelper's round trip
support.
- Added possibility to create labels in CheckboxLists.
- Applied James Curran's patch fixing MR-390
"Adding AbstractHelper(IEngineContext) ctor"
- Applied Gauthier Segay's patch fixing MR-388
"There should be a way to preserve url query string arguments while using DiggStylePagination"
- Applied Mike Nichols' patch adding two more events to the extension manager.
- Applied Felix Gartsman's patch fixing MR-387
"ViewComponent selective caching"
- Applied Felix Gartsman's patch fixing MR-368
"Added DetachedCriteria support to ARPaginationHelper/ARPaginableCriteria"
- Applied Gauthier Segay's patch fixing MR-384
"GenericCustomPage<T> should rely on IEnumerable<T> instead of IList<T> for it's datasource"
- Applied James Curran's patch fixing MR-347
"Cannot specify a default value for ViewComponentParameterAttribute"
- Applied Adam Tybor's patch fixing MR-370
"RouteContext and Http Method Filtering for PatternRule"
- Applied Daniel Jin's patch fixing MR-372
"add monorail configuration section to set the useExtensions option on DefaultUrlBuilder"
- Fixed MR-84
"Nested classes are mapped wrongly to form fields"
- Applied Kode Khan's patch changing logger creation to use type instead of controller's name
- Implemented support for view component caching. Just use the attribute
ViewComponentDetails and its properties (cache, cachekeygenerator)
- Applied Michael Sanford's patch which adds image button support to FormHelper.
- Applied Rafael Teixeira's patch fixing MR-357
"ViewEngineBase.IsTemplateForJSGeneration(String templateName) returns
true for a templateName with an incorrect extension"
- Added support for Composite Key in Formhelper select
- Applied Chris Ortman's patch with changes for the REST support (MR-333)
- Applied Nick Hemsley's patch adding support for rescue controllers (MR-332)
"add RescueController to RescueAttribute"
- Applied suggestion by Daniel D to fix MR-329
"Impossible to Context.Response.Redirect to any controller in empty Area from controller placed in some Area."
- Applied minor patch by Ken Egozi fixing MR-328
"In PrototypeWebValidation, SameAsValidator and NotSameAsValidator
are forcing a locase id for text fields"
- Applied minor patch by Nick Hemsley fixing MR-325
"DictHelper.FromNameValueCollection: persist arrays correctly"
- Added LocalExceptionFilterHandler
- Applied Robert Ream's patch which allows [DefaultAction] to be applied to Actions. This means that no strings are required.
- BaseControllerTest supports the ContextInitializer delegate, which makes it easier to modify the MockRailsEngineContext
Release Candidate 3
===================
- Added IDisposable/Dispose back to the controller
- Applied Lee Henson's patch adding generic overloads to ReflectionHelper
- Added a few more RenderView overloads that take a mimeType to configure the Response.ContentType
- If the controller cannot be found, MR searches for a special rescue "rescues/404" before throwing throwing an exception.
- If an action could not be found, we go through normal path an use a general rescue if it can be found for the controller.
- UrlHelper change: Now if the param encode wasn't set, UrlHelper assumes it's true.
- Applied patch by Oleg Snurnikov fixing MR-319
"MockResponse - basic implementation of Redirect, Write, BinaryWrite and Clear overloads"
- Applied patch by Chirs Ortman fixing MR-296
"Dont get validation summary when binding with AR attribute but controller inherits smart dispatcher controller"
- Applied patch by Rafael Teixeira fixing MR-298
"ColumnRenderer with an empty enumeration still renders table start and end sections"
- Fixed MR-300
"DataBindAttribute in a ARSmartDispatcherController inherit the behavior from ARDataBinder"
- Applied minor patch by James Su fixing MR-303
"Behavior is not consistent between FormToAttributed and LinkToAttributed in HtmlHelper"
- Applied goodwill's patch adding cookie support to BaseControllerTest MR-304
- Applied goodwill's patch fixing MR-305
"fValidate fix a bug on unassociated label for element"
- Applied Oleg Snurnikov's patch fixing MR-306
"PrototypeWebValidator - regular expression validation"
- Fixed MR-311
"The '\' character in templates goes unescaped when processed via NJS"
- The DefaultUrlBuilder now accepts a basePath parameter, which basically overrides the path information.
- Fixed MR-317
"ARDataBind handles BelongsTo attribute in Nested component incorrectly."
- FlashBinderAttribute was removed as I doesnt work with the new
MonoRail design (changed to make the cache support work)
- Applied Tim Haines' patch adding TextAreaValue to FormHelper
- Fixed MR-281
"View components params problem"
- Applied Markus Zywitza's patch adding a Fold method to TextHelper.
His description "Shortens a text to the specified length (using full words only and
adding an ellipsis at the end) and wraps it into a span-element that
has the title-property with the full text associated. This is
convenient for displaying properties in tables that might have very
much content (desription fields etc.) without destroying the table's
layout. Due to the title-property of the surrounding span-element, the
full text is displayed in the browser while hovering over the
shortened text."
- Applied Aaron Jensen's patch fixing MR-288
"ApplicationPhysicalPath returns request path instead of / path"
- Fixed MR-284
"MockServerUtility.MapPath throws NotImplementedException"
- Applied Bill Pierce's patch fixing MR-278
"Add UrlDecode to IServerUtility"
- Applied Bryan Brown's patch fixing MR-273. This one adds a new attribute to
the routing configuration node: 'excludeAppPath'
"Automatically handle ApplicationPath in the routing module"
- Applied goodwill's patch fixing MR-275
"DefaultRailsEngineContext triggers RTE on ApplicationPhysicalPath
when running under ASPX Dev Server with virtual directory"
- Changed the BaseControllerTest vdir to "" instead "/"
- Added the Declare(String variable) to IJSGenerator inteface
- Applied Tim Haines' patch changing FormHelper to make calls to FormatIfNecessary
- Applied chris ortman's patch fixing MR-271
"AdditionalSources not loaded when using the viewEngines element"
- Applied Ricardo Stuven's patch fixing MR-258
"JSON serialization in Ajax calls"
- Applied goodwill's patch fixing MR-212
"Script Helpers (e.g. $Scriptaculous) installscript function clear flash unexpected"
- Applied Georges Benatti's patch
adding the attribute matchHostNameAndPath to the routing node on the configuration.
If set to 'true', the regular expression is matched against the whole url. Defaults to 'false'
- Added ability to customise Next/Prev links in DiggStylePagination.
Patch from Markus Zywitza.
- Applied Mathias Doenitz's patch fixing MR-265
"(Re)enable initialization of Controller.AreaName, Controller.Name and Controller.Action before invoking Controller.Initialize()."
- Applied Adam Tybor's patch fixing MR-266
"Fix for GetErrorSummary() throwing an KeyNotFoundException for SmartDispatch Controller and Binder"
- Fixed MR-260
"PropertyBag in WizardStep is null when access via key"
- Applied Kyle Marshall's patch fixing MR-261
"The default ValidatorRegistry is not overriddable in the monorail configuration"
- Add support to BaseControllerTest (well MockRequest actually) for Mocking Url Referer. Patch from Colin Ramsay.
- Fix SupportsSection implementation in ViewComponent (was comparing section name equality against StringComparer.InvariantCultureIgnoreCase).
Also add a SupportsSection implementation to DiggStylePagination. Patches from Tim Haines.
- Small change to DiggStylePagination to allow supplying querystring parameters in the url. Suggested by [email protected].
- Applied Tim Haines' patch adding BindObject overloads that accept the AutoLoadBehavior enum,
to the ARSmartDispatcherController
- Changes from Lee Henson to add WizardStep support to TestSupport and provide a Generic BaseControllerTest.
- Patch from Maruis Marais allowing BuildFormRemoteTag to gracefully degrade when JavaScript is disabled.
- Patch from Lee Henson fixing regression introduced in 3783 in Prototype Validator. (Could not use hyphens in element id's).
- Fixed MR-241
"When Windsor integration is enabled, the ControllerTree is empty"
- Apply patches from Tim Haynes.
"add a renderIfOnlyOnePage property to the DiggStylePagination View Component"
"Add NewRootInstanceIfInvalidKey AutoloadBehaviour to Castle.MonoRail.ActiveRecordSupport"
- Applied Goodwill's patch adding PersisteFlashFilter and the fValidate's localization support. Fixed MR-246.
- Fixed the use of Scaffolding without Layouts (MR-251).
- Added support for eager fetching of lazy collections, in [ARFetch] attribute.
- Added support for auto load bevahior configuration when invokling the BindObject in the ARSmartDispatcherController
- Added support for different access and naming strategies in the ARDatabind attribute.
- Applied Matt Berther's patch adding LoggingExceptionHandler and FilteredExceptionHandler.
- Applied chris ortman's patch fixing MR-242
"FormHelper.LabelFor does not generate valid HTML when attributes are supplied"
- Applied bonskijr's patch fixing MR-234
"Under some circunstances ColumnRenderer generates invalid html"
- Applied Marc-André's patch fixing MR-238
"HtmlHelper.LinkTo: bugs- don't function when existing a area"
- Applied Aaron Jensen's patch fixing the Resource Manager usage
Changed from ResourceSet to ResourceManager
- Applied Lee Henson's patch adding the 'onCreateAdvice'
to PrototypeWebValidator
- Applied Chris Ortman's patch fixing MR-235
"Allow overriding of select generation in FormHelper"
- Added Item(string id) overload to Checkboxlist
Used to generate a checkbox with the specified id. Useful to label for='id' constructions
- Added the Expect property to the ARDataBindAttr. Now it will clear the collections
that are declared as expected, if not can be found on the resquest params. (MR-163)
- Applied Colin Ramsay's patch fixing MR-232
"HtmlHelper.InputButton should create <button> not <input type="button">"
- Fixed MR-228
"incorrect component configuration results in an 'The container seems to be unavailable
in your HttpApplication subclass' exception"
- Applied Bart Reyserhove's patch fixing MR-226
"ARDataBinder has problems when using generic collections"
- Applied Jacob Lewallen's patch adding a new attribute (ViewComponentAttribute) used
to name view components. The behavior is changed to strip the 'Component' suffix from the class name as well.
- Applied Ernst Naezer's patch fixing MR-191
"Add TransformFilter support to MR"
- Applied Lee Henson's patch fixing MR-222
"Use of IRailsEngineContext.Items"
- Fixed MR-224
"ARDataBindAttribute does not set the Controllers validator on it's DataBinder"
- Fixed MR-219
"FormHelper.Select with an interface datasource throws an Object mismatch exception."
- Applied chris ortman's patch fixing MR-188
"Allow the #component directive to support variables for the component name"
- Fixed MR-208
"Using a lazy loaded nested object, "Ambiguous match found" exception occures when
trying to use FormHelper to render control for the nested objects property."
- Applied goodwill's patch fixing MR-213
"DiggStylePagination has a typo which prevents the code from build"
- Applied Edward Kreis' patch fixing MR-214
"ARDataBinding and joined subclasses with derived BelongsTo, HasMany, HasAndBelongsToMany proeprties"
- Fixed MR-217
"fValidate box message contains <BR/> if being triggered twice"
- Fixed MR-221
"HtmlHelper.LinkToAttributed bug"
- Applied Jacob Lewallen's patch adding an optional attribute to define a view component's name
The patch also introduces a IViewComponentTree.
- Added 'noaction' parameter to FormHelper.FormTag to prevent action attribute generation
- Added Select list from Enum.
in controller:
PropertyBag.Add("colors",Enum.GetValues(typeof(ColorEnum)));
in view:
$Form.Select("Color", $colors)
- Applied Chris Ortman's patch adding MooHelper/JS generation based on it.
- Applied Jacob Lewallen's patch adding virtuals to some FormHelper methods
- Applied Patrick McEvoy's patch with a new approach to delete cookies
- Added
SmartDispatcherController.ValidationSummaryPerInstance : IDictionary
SmartDispatcherController.GetErrorSummary(object instance) : ErrorSummary
SmartDispatcherController.HasValidationError(object instance) : bool
Those can be used if DataBinder is configured to validate
- Added Controller.RedirectToReferer
- Configuration changed, added defaultUrls section (see monorail_configuration_ref.txt)
- Added Controller.RenderMailMessage(string templateName, bool doNotApplyLayout) overload
- Added static accessor support to NVelocity view engine. Default helpers are
the Common System Types in dotnet (i.e. Double, String, Decimal, etc.)
In your template: $String.Concat("foo","bar","me","please:",$Double.Epsilon)
(dotnet 2 only.)
- Added better ControllerBinder support for indexed property expressions.
This allows you to pass DataKeys as your action arguments
- Applied Freyr Magnússon's patch fixing MR-206
"ARBadaBinder does not resolve primary key for discriminator subclass from parent"
- Retrieve target properties on demand for ControllerBinders ActionArgument editor
- Added ControllerBinder Extender Control for WebForm views to eliminate the
need to add event handlers in the codebehind that call Controller.Send
- Brail now has Ruby's like symbols, using @symbol.
For instance, component DiggStylePagination, ${ @useInlineStyle : true }
- Brail can now accept " inside a ${ }, which used to break the parser previously.
- Added IViewComponentContext.RenderView(name, textwriter)
- Fixed MR-201
"DiggStylePagination.Initialize() doesn't check useInlineStyle parameter"
- Added FormHelper.HiddenField("key", value) overload
- Added 'valueformat' to SetOperations (affects FormHelper.Select, Checkboxlist)
- Fixed MR-197
"Exception thrown by AccessibleThrough are not caught by rescues"
- Added 'textformat' support to the all FormHelper operations (that create input elements).
- Added BrailJS Support, allowing to generate javascript via brail scripts.
Note; BrailJS scripts do not need <?brail ?> and any output statements there will be ignored.
They are used strictly to create the generator.
- Changed Brail extention from Boo to Brail / BrailJS
- Added mask support to FormHelper field elements
- Added FormHelper.PasswordNumberField
- Refactored FormHelper to support other approaches to extract values from instance.
Now it supports DataRows, DataRowViews and reflection
- Added ColumnRenderer view component
- Added DiggStylePagination ViewComponent, based on Alex Henderson work.
See http://blog.bittercoder.com/PermaLink,guid,579711a8-0b16-481b-b52b-ebdfa1a7e225.aspx
- Added PaginationHelper.CreateCustomPage
This is only useful if the application code takes care of slicing (select top and etc)
- Added formatting support to SetOperations (affects FormHelper.Select, Checkboxlist)
Example:
$Form.Select("price", [1..100], "%{textformat='C'}")
This will render a select with options like
<option value="1">$1.00</option>
<option value="2">$2.00</option>
<option value="3">$3.00</option>
...
- Added ScriptaculousHelper, deprecated Effects2Helper
- Extract Behaviour related operations from AjaxHelper into BehaviourHelper
- Added BehaviourHelper
- Added UpdatePage and UpdatePageTag ViewComponents. Both allow you to have a "page"
which is a JS generator. It evaluates the view component body to generate the JS.
Example:
#blockcomponent(UpdatePageTag)
$page.el('products').style.bgcolor.set('"white"')
#end
#blockcomponent(UpdatePage)
$page.el('products').style.bgcolor.set('"white"')
#end
- Added FormHelper.NumberField() which renders a 'input text' with a javascript that
prevents chars other than numbers (and period) from being entered.
You can optionally pass an <c>exceptions</c> value through the dictionary.
It must be a comma separated list of chars that can be accepted on the field.
- Added FormHelper scripts:
View must use FormHelper.InstallScripts()
- Refactored generation of script blocks
- Created stub for UrlForHelper
- Helpers are added with a less verbose name
FormHelper and Form, AjaxHelper and Ajax are made available to the view
- Added AuthenticatedContent ViewComponent that allows context to be
render based on the user state (authenticated or anonymous)
- Removed CompositeViewEngine as it's useless now that we support multiple view engines
- Multiple view engine support:
Configuration schema changed, see monorail_configuration_ref.txt for more information
- Introduced IViewEngineManager that sits between the controller and the view engines
deciding which view engine will be used output the contents
- Applied patch by Luke Melia for MR-192:
"Add TextHelper"
- Introduced IPaginatedPage.HasPage(), useful for Google-like pagination.
- PaginationHelper.CreatePagination<T>() now accepts ICollection<T> as a parameter.
- New method PaginationHelper.CreatePageLinkWithCurrentQueryString().
Creates a page link, copying the current QueryString parameters as well.
- Enhanced AbstractHelper.BuildQueryString to support multi-value query strings:
IDictionary dict = new Hashtable();
dict.Add("id", 5);
dict.Add("selectedItem", new int[] { 2, 4, 99 });
string queryString = BuildQueryString(dict);
// should result in: "id=5&selectedItem=2&selectedItem=4&selectedItem=99&"
- FormHelper.Select() - applied patch from James Sapara allowing firstoptionvalue to be set to
something other than null.
- Restored property IsPostback checking (For use with WebFormViewEngine).
- Restored support for passing additional arguments to a controller
via Send and use a dictionary to supply that information.
- Applied patch by Andrew Peters fixing MR-182
"Adds FormTo and LinkToWithPost methods to HtmlHelper"
- Fixed MR-180
"Url Tokenizer Bug at Turkish Culture Info"
- Properly quote file/directory arguments in Pre/Post Build Events to accomodate
names with spaces.
Also added some missing files to TestSiteWindsor-vs2005 Project
- Removed DetermineIfPostBack due to side effects when using a custom upload approach
Also removed PreRequestHandler setting the session as it wasn't really necessary using
this event for that. Moved to the handler.
- Included abstract Filter class, just as a helper to implement filters
with a better interface (instead of IFilter.Process)
- Fixed MR-165 "DataBind doesn't bind NullableDateTime"
- Fixed MR-169
"Scarfold record modification results exception Can't edit without
the proper id when validation is failed in the defined validation rule"
- Fixed MR-168
"ValidateEmail attribute does not work properly in Monorail Scarfold"
- Introduced CacheAttribute which can be used on actions to configure
the underlying HttpCachePolicy
- Modified WizardActionProvider to use ControllerLifecycleExecutor
- Modified EngineContextModule a MonoRailHttpHandler to use ControllerLifecycleExecutor
- Refactored controller. Extracted process to ControllerLifecycleExecutor
- Changed ExecuteEnum.Always to include 'StartRequest'
- Added Filter step: StartRequest
This step runs on the ResolveRequestCache, and is suitable
for authentication. However, a session will not be available.
- Fixed MR-158
"IRequest/Controller must expose the Http method"
Added the following properties to the Controller class:
IsPost/IsGet/IsPut/IsHead
- Fixed problem with view components reported by Ernst Naezer. The problem
is that the view component were cached, and instances shared during
template executions.
- Introduced smtpPort, smtpUsername, smtpPassword configuration to <monorail> node
- Introduced a PageSize property on the IPaginatedPage.
Release Candidate 2
===================
- Applied patch by Ivan Porto Carrero fixing MR-158
"Validation throws errors when using group box."
Quoting description:
"When validating with the option of using a group box then the valdation routine throws an error.
The error is only thrown after the valdation failed for a couple of controls in the form. And when those errors are corrected and the form gets validated again that's when the error occurs
"I also added functionality to have a header in the group error box. I also added the possibility to have a separate error label to append to.
For this I added 2 properties to the config of the validation library.
The first property is boxErrorHeadingClass and the second one is errorSelectorCssClass
"In the core script I added 5 lines or so to add this functionality. "
- Applied patch by Nick Hemsley fixing MR-157
"add fromNameValueCollection method for creating IDictionary instances from (i.e.) Context.Params, or Request.QueryString"
Method was renamed to FromNameValueCollection
- Introduced ARPagination.CreatePagination<T>(SimpleQuery<T>). Looks like it can be
extended later for the non-generic SimpleQuery.
- Made all Helpers that install javascript code use the same signature Helper.InstallScripts(). Should we mandate an interface?
- Fixed the GenerateJSProxy(string proxyName, string controller), which was passing a null areaName;
- Fixed the conflict between the Array.reduce function of Prototype e fValidate scripts (MR-166).
Release Candidate 1
===================
- ARDataBinder was ovewriting ids on belongs to relations causing
NHibernate to throw exception. Fixed and added test cases
- Fixed binder problem (MR-161)
- Fixed Perfomance issue with Brail and sub views due to cache key normalization issues.
- Added logging to Brail, configured using the normal Castle's cofniguration mechansim
- Added support to passing parameters from the view to the layout, enabling a captureFor component in the view to be used in the layout
- Started refactoring ARScaffold to rely on FormHelper
- Small refactor on ARScaffold support to make it work with
. ARDataBinder
. The new Binder implementation
- Changed MonoRailContainer to save the configuration. On mono
a copy is created everytime the config is requested, leading a big problems
- Fixed MR-155
"Cast exception with configuration"
- Added two more events to ExtensionManager: Authorize and Authenticate.
That allows authentication/authorization extensions to MonoRail that won't
rely on filters
- Applied Jochen Grefe's patch fixing NVelocity-3
"#include not working for nvelocity"
- Another attempt to MR-152 "Error while initializing MonoRail services"
Separated container implementation from module. But it's important that
the module subscribe the events, so the container can delegate event invocations
to the extension manager
- Fixed MR-152 "Error while initializing MonoRail services"
- Applied midas's patch fixing MR-113
"change collected view name in assembly to lower"
- Applied Don Morrison's patch fixing MR-150
"Patch to fix problem with ARDataBinder and ARFetcher when dealing with joined subclasses."
- Added support for null property handling in Brail.
${objMayBeNull.Name} -- will throw if null
${ IgnoreNull(objMayBeNull).Name } -- will return empty string when null
-- Breaking change in Brail. Removed <? ?> as markers for code blocks. This was done to allow handling of xml processing instructions (<?xml ?> for instnace).
Use <?brail ?> markers instead.
- Applied Marc-André's patch fixing MR-149
"[TestSupport] Verb not specified for Get request"
- Applied Ernst Naezer's patch that fixes MR-95
"Update ProtoType/Scriptaculous js libraries to latest version"
Prototype library updated to version 1.5.0_rc1
script.aculo.us updated to 1.6.4
- Added watir tests for JS proxies (fixes MR-142 "Write test cases for AjaxHelper.GenerateJSProxy()")
- Added watir tests for Ajax support
- Changed Ajax helper to default to parameters:'value=' + value instead of parameters:value.
This old way was causing null keys on the form dictionary and thus being ignored by
the databinder
- Fixed MR-106
"Apply Sean's suggestions"
Component 'ChildContentComponent' introduced, plus a few test cases for it.
- Fixed MR-101
"Seems Wizard Controller can't define Area"
- Fixed MR-128
"Introduce the notion of conditions to WizardStepPage"
Introduced IsPreConditionSatisfied to WizardStepPage
- Fixed MR-129
"Add log support as discussed on the mailing list"
- Added Logger property to Controller
- Added more logging information to the request lifecycle
- Logging support: Important services are now logging what they are doing.
Verbose logging happens at Debug Level. Error level is used for exceptions
- Refactored: The EngineContextModule was simplified. Now its duty is to
instantiate the services and invoke the lifecycle methods. Each service uses
its lifecycle methods to reference other services and obtain its configuration
- Refactored: replaceable services were moved to Services namespace
- Refactored: interfaces meant to be public were moved from Internal
namespace to the root
- Fixed MR-126
"PaginationHelper must support IList<T>"
- Fixed MR-146
"FormHelper must be able to handle IList<T>"
- Fixed MR-145
"Change node/section name from monoRail to monorail on configuration file"
Now on the configuration, use <monorail> instead of <monoRail>
- Included Test site for ActiveRecord support project, watir tests included
- Refactored ARDataBinder to support HasMany and HasAndBelongsToMany
- Applied Ernst Naezer <[email protected]>'s patch fixing build
- Introduced [AjaxAction] attribute. Any action marked with this attribute
can be accessed on client-side scripting using a JavaScript proxy, like
this:
$ajaxHelper.getJavascriptFunctions()
## MANDATORY, must come before any call to generateJSProxy
$ajaxHelper.generateJSProxy('thisController')
## will declare an object named "thisController", allowing access
## to all [AjaxAction]s on the current controller
$ajaxHelper.generateJSProxy('util', 'lists', 'myLists')
## will declare an object named "myLists", allowing access
## to all [AjaxAction]s on the controller named 'lists', in the 'util' area
Note that proxies can perform synchronous (blocking) or asynchronous (non-blocking) calls.
For asynchronous calls, you must always supply a JavaScript function as an additional
last parameter. When that parameter is absent, the proxy will perform a synchronous call.
[AjaxAction] public void Sum(int num1, int num2) { RenderText(Convert.ToString(num1 + num2)); }
You can write:
// synchronous call
$('result').value = myLists.sum($('num1').value, $('num2').value);
Or:
// asynchronous call
myLists.sum($('num1').value, $('num2').value, function(t) { $('result').value = t.responseText; });
Being:
$('num1').value = the value of an input with id=num1
$('num2').value = the value of an input with id=num2
function(t) { ... } = the callback
t.responseText = any text that the action could have rendered
- Applied Marc-André's patch fixing MR-140
"ARDataBindAttribute doesn't use the controller's DataBinder"
- Updated AbstractServiceContainer to support adding/removing services.
- MonoRails services now accept and IServiceContainer instead of an
IServiceProvider to be able to add services if desired.
- Small refactor of Controller to to accomodate passing action arguments.
- Updated SmartDispatchController to utilize HttpRequest parameters when
additional arguments are supplied via a Send.
- Applied patch by Freyr Magnússon <[email protected]> fixing MR-139
"ExceptionChainingExtension doesn´t handle unhandled exceptions"
Which also introduces a new feature:
Controllers can request IExceptionProcessor through IServiceProvider
and invoke the handlers to process an exception. For example:
public void BuyMercedes()
{
try
{
...
}
catch(Exception ex)
{
IExceptionProcessor exProcessor = (IExceptionProcessor) ServiceProvider.GetService(typeof(IExceptionProcessor));
exProcessor.ProcessException(ex);
RenderView("CouldNotBuyMercedes");
}
}
- Changed DataBinder behavior to return empty arrays, instead of null arrays,
when the IBindingDataSourceNode is null
- Applied patch by Bryan Brown fixing MR-138
"patch to fix formhelper.LabelFor to use IDictionary"
- Applied Freyr Magnússon's patch fixing MR-137
"Databinding through DataBindAttribute does not register errors with SmartDispatcherController"
- Applied peter dol's patch fixing MR-136
"An overload for ButtonToRemote that accepts htmloptions"
- WizardStepPage: added more redirect overloads to allow parameters to be
specified
- AR Support: Added support to deal with ICollection<T> containers
- Applied Marc-Andre's patch fixing MR-133
"TestSupport not working under Mono"
- Removed PropertyBag.Clear() in Controller.cs to restore the ability to
update the PropertyBag in filters.
- Applied Colin Ramsay <[email protected]> patch making
the _selectedViewName field accessible through a public property.
- Checked in changes to better support ASP.NET Views
- Refactor FormHelper to use a common code to CheckboxList and Select.
Added support mentioned in MR-130
- Introduced CreateCheckboxList. See preliminary documentation at
http://www.castleproject.org/index.php/MonoRail:FormHelper#CheckboxList
- Applied Colin Ramsay <[email protected]> patch adding more
asserts to TestSupport.AbstractMRTestCase and refactored some other things
- MR-125 testsupport doesn't handle posting to smart dispatcher controller
Fixed by Andrei Shires <[email protected]>
- FormHelper: Now it can fill parameters with the values from the Request.Params
- FormHelper: fixed Checkbox behavior with databinder by adding a hidden
field with the same name but carrying the 'false' value. The false value
can be overriden with a key 'falseValue' if you're working with a non-boolean
For example
FormHelper.CheckboxField("some.property")
Will render
<input type="checkbox" id="some_property" name="some.property" value="true" />
<input type="hidden" id="some_propertyH" name="some.property" value="false" />
FormHelper.CheckboxField("acceptDisclaimer", %{trueValue = 'accept', hiddenValue = 'reject'})
Will render
<input type="checkbox" id="acceptDisclaimer" name="acceptDisclaimer" value="accept" />
<input type="hidden" id="acceptDisclaimerH" name="acceptDisclaimer" value="reject" />
- Applied Ernst Naezer's patch to allow MR to throw a descriptive
exception message when two helpers are registered using the same key
- Added a hack to the WebFormsViewEngine to accomodate different behavior
with respect to invoking PageParser.GetCompiledInstance on ASP.NET 2.0
- Added support for defaultValue attribute to FormHelper, which specificy
what the value should be if the target evaluates to null.
- Added indexed properties support to FormHelper
When the target is an array you can
PropertyBag.Add("roles", Roles.FindAll());
--
FormHelper.TextField("roles[0].Id")
Which will output
<input type="text" id="roles_0_Id" name="roles[0].Id" value="1" />
The indexed property can be nested