My favorites | Sign in
Project Home Downloads Wiki Issues Source
Checkout   Browse   Changes    
 
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
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153

******************************************************************

ChangeLog for Ra-Ajax

******************************************************************

------------------------------------------------------------------

Version 3.0.0

------------------------------------------------------------------

* Added support for setting the selection for the RichEdit control
through the EffectFocusAndSelect, plus probably also through the
Focus and Select methods.

* Created a new behavior for doing scrolling on iPad and iPhone.

* Completely refactored the DOM structure for the Accordion, this
have significantly improved the speed and DOM structure when using
the Accordion. In addition the Accordion is now much easier to skin
and modify for your own needs.

* Added Caption and Collapse icon support to the AccordionView.

* Completely refactored the DOM structure and the server side
control structure of the Window. This has significantly improved
the speed and reduced the markup and amount of JavaScript and also
reduced the ViewState of the Window control.

* Fixed a bug in the CheckBox which made it render the Label
for the CheckBox inside of the input HTML element which was a
sever bug.

* Fixed a bug in the RadioButton which made it render the Label
for the CheckBox inside of the input HTML element which was a
sever bug.





------------------------------------------------------------------

Version 2.5.0

------------------------------------------------------------------

* Added support to programmatically raise the "GetChildNodes" event
of the "SlidingMenuLevel" by calling the "RaiseGetChildNodes"
method.

* Added a new property to "SlidingMenuLevel" called
"ChildNodesLoaded" to determine whether the dynamic child
menu items of this "SlidingMenuLevel" have been loaded or not.

* Fixed programatically animating the SlidingMenu. There are
breaking changes in this fix though which are changes in the
API of how to use it...

* Completely removed all website code since it's now a Ra-Brix
website. In addition removed the samples and replaces with
a minimalistic sample since the documentation at ra-ajax.org
should be enough now.

* Created a completely fresh skin called "Gold". Removed
previous skins due to not meeting the quality standards in our
Beauty perl.





------------------------------------------------------------------

Version 2.0.4

------------------------------------------------------------------

* Added support for "ExpandTo" on SlidingMenu for making sure some
specific level is initially expanded to. This will NOT work with
dynamically created menu items though...

* Now tracking unload of window and shutting down all future Ajax
requests on page after unloading of Window.

* Seriously revamped the RichEdit widget. It's now actually close
to being useful :)

* Added support for executing scripts contained in contents of
widgets. This means you can add scripts inside of widgets and
they will be executed (on *all* browsers) when the Ajax Request
returns.

* Added support for CTRL keys in the RichEditor which means you
can handle stuff like for instance CTRL+S in your own code.

* Slightly mofified the Ra-Ajax Timer documentation sample.

* Added support for changing the Duration of the Timer during
AJax callbacks.

* Added logic that throws an exception when ReRender is being
called on a Timer to avoid confusion since it doesn't work,
and there are no circumstances where it's needed.

* Fixed a sever bug in RadioButton and CheckBox which made
it not able to set its Checked state if the control wasn't
visble by default on the first rendering of the page.

* Fixed bug that would trigger if no keyboard shortcuts
was given to RichEdit

* In Tree, if ClientSideExpansion is true, a CSS class
called "active" will be added on mouse over and removed
on mouseout on Tree Nodes.

* Fixed a bug in BehaviorDraggable which would not remove
the dragger when mouse left button was released before
doing any actual dragging of the element.

* Added a property on the Tree Widget called
"UseRichAnimations" which if set will turn on rich animations
with the mouse over/out effects on TreeNode items without
being forced to use SingleClickPlusSign expansion
and ClientSideExpansions to set it.

* Changed the InPlaceEdit to be a LinkButton since then it
will obey the tab ordering on the page...
Also made it get focus when esc is clicked to close the
InPlaceEdit.
BREAKING CHANGE!!
Might break existing CSS!

* Fixed a bug in the SlidingMenu that would make links
non-clickable in Chrome...

* Fixed several bugs in the RichEdit widget. It should
be way more stable now.

* Added support for "AppendControl" in Ra Dynamic.

* Fixed a bug that would force "absolute" for
BehaviorDraggable if style was set to "fixed". This
basically means that you can now also set the style
"fixed" for the position of a Window or other draggable
widgets.





------------------------------------------------------------------

Version 2.0.3

------------------------------------------------------------------

* Fixed a bug in form serialization that caused an error when
dealing with an ASP.NET ListBox that has no initial items.

* Fixed a bug in client-side script options for some widgets that
affected 'OnClickClientSide' among other things.

* Added a new effect 'EffectCssClass', developed by Karel Boek. This
effect enables you to easily change the CSS class of a widget as
part of a series of chained or joined effects.


------------------------------------------------------------------

Version 2.0.2

------------------------------------------------------------------

* Completely removed the animation of TreeNodes in IE because in IE
animating the TreeNodes had just too many issues...

* Fixed a bug with the GlobalUpdater that would not display errors
correctly that occured on the server. E.g. Exceptions thrown or
similar things...

* Added support for having -1 as value for left and top properties
of EffectMove to indicate that particular parts of movement should
be ignored.





------------------------------------------------------------------

Version 2.0.1

------------------------------------------------------------------

* Fixed a bug in setOpacity in Ra.js which for IE based browsers
would make transparent PNGs if they were within the hierarchy
of the element being called setOpacity for would display the
transparent parts of the PNG become black. Notice that this
bug is not fixed, but it's fixed so that once you set the
opacity to 1.0 it will DISABLE the alpha filter for the
element which means that once the element is finished fading
back into 100% opaque it will not show these transparent
regions of the PNG as black.
This bug-fix is especially visible for EffectFadeIn when
you have transparent PNGs within the Control being faded into
view.

* Fixed a bug in the rendering logic on the server for opacity
which made in IE (any versions) if you set the opacity to
1.0 - the text for that element would render "funny". This
is due to the alpha-channeling of IE where it renders text
of HTML elements with alpha transparency to "smoothen" or
"blur" the text. This is fixed by in the StyleCollection
class checking to see if the opacity being set is 1.0, and
if it is then *DISABLE* the alpha channeling.

* Changed the (IE only) implementation of the mouseover
and mouseout to use the native support in IE for
mouseenter and mouseleave instead of the "emulated" once
in Ra. This should make the Ra mouseover and mouseout
faster for IE.

* Made several methods on both Effects and RaControl
protected instead of public to make the API more clean
and less confusing.

* Created support for deep linking in the documentation
system so that you can link to specific tutorials and
classes.

* Interlinked all the tutorials with relevant classes
and so on on the website to make it easier to browse
around and read the tutorials.

* Seriously revamped the Menu widget to be more up to
the quality of the SlidingMenu Widget.

* Added support for hover expanding on the Menu widget.
This comes in addition to the click expansion already
existing and can be set with the property called
"ExpandMethod". Notice that for a large webpage
which have expensive logic or large viewstate
or is intended to run on a narrow wire or something
this is not optimal since due to the logic behind
it will trigger quite many more Ajax Requests which
will increase the bandwidth usage significantly.

* Added a new project called Ra.Builder which is a
helper for creating HTML markup in C# on the server.
It implements the IDisposable pattern to create
guarantees for that the HTML Elements you create
will be closed in the right place.

* Seriously refactored all the core HTML rendering
logic of Ra-Ajax to use the new HtmlBuilder logic
which is new in this release.

* Fixed a severe bug in ResizeHandler which would
create many requests in IE when the viewport was
being resize by dragging the borders of the browser.

* Made the syntax highlightning for the samples way
better to conform with the syntax highlightning of
the documentation.

* Fixed a bug in GlobalUpdater which made consecutive
queued up Ajax Request trigger the Updater even
though they were not supposed to since timer that
triggers the fading of the Updater wouldn't be
correctly reset after an Ajax Request returns.
This had the effect of "flimmering" the updater
if you had several buttons that was slow in server-
side though not on their own slow enough to validate
the showing of the GlobalUpdater and you clicked
all those really fast.





------------------------------------------------------------------

Version 2.0.0

IMPORTANT!
CHANGED LICENSE TO GPL
If this causes problems for you, then
please see our consulting offerings at
http://ra-ajax.org which comes together
with a proprietary license to use Ra-Ajax.

------------------------------------------------------------------

* Added MaxLength property to TextBox to specify the Maximum number
of allowed characters the user can enter.

* Much nicer server error/exception display (less obtrusive). The
user can optionally view the full error details or ignore it.

* Support for setting multiple style values in Ra.Element using
JS object literals with the function Ra.Element.setStyles(). Good
for writing more compact code when setting multiple style values.

* Better cross-browser obscuring solution for BehaviorObscurable
and BehaviorUpdater. Eliminates problems like revealing parts of
the page behind the obscurer while resizing the browser window.
This solution is pure CSS, no JS is used to adjust for resizing,
scrolling etc...

* Support of displaying an image with BehaviorUpdater. Nice for
displaying things like loading.gif image (http://ajaxload.info) or
something similar while the Ajax request is being processed on the
server.

* Fixed a bug that made the Visible property not work in Opera.

* Added zIndex property to BehaviorUpdater.

* Removed unnecessary code from Dynamic.

* Fixed a bug in TreeView which occurred when ClientSideExpansion
was turned on and TreeNodes was either expanding slowly because
of server overhead or nodes was being clicked very fast. If
those criteria was met then sometimes nodes would come out
"empty" and not have content at all which was a bug.

* Added a new Behavior called BehaviorUnveiler which will fade-in
any widget into MaxOpcity on mouse over. And fade-out the widget
to MinOpacity on mouse out.

* New widget - WebPart. A WebPart is kind of like a minimalistic
window. Usage would probably be portal creation and similar
features like IGoogle and such.

* Removed the WindowLight control since the WebPart control is
far better to use for circumstances when you really need
a "lighter window".

* Fixed a bug with Accordion which when set to ClientSideChange
would let the user click an active AccordionView which again
would trigger a JavaScript bug.

* Cleaned up the API significantly an removed unnecessary
and redundant methods and properties for many widgets and
classes.

* Fixed a bug in LinkButton which made it impossible for the
LinkButon to have Child Controls. Now though the LinkButton
can have Child Controls.

* New Widget - SlidingMenu. A SlidingMenu is a cross-over
between a Tree and a Menu. It contains most features from
a TreeView like dynamically loading of items and such, but
at the same time it "appears" more like a Menu in that it
can only display one level of items at any time. It is
heavily inspired by Apple's iPhone/iPod UI.

* Fixed a bug in SelectList that caused the SelectedIndex to
not change when a ListItem's Selected property was set to true.

* Fixed a bug in RaControl that made the JSON serialization fail
if the value passed in is null.

* Added support for dynamic inclusion of JavaScript files
(from resource and file path) on Ajax callbacks. This is
100% transparent which means that there is nothing special
you need to add to your JS files to use this feature. This
also fixes several bugs related to dynamically including
extension controls in Ajax callbacks.

* Minor refactorings in AjaxManager.

* Fixed a bug that caused initial setting of opacity style value
in the ASPX markup to not work properly in IE. And added special
handling of opacity for IE.

* Added support for setting any RaWebControls into "no-queue mode"
which if set (through the QueueMultipleRequests property) will
make sure that all Ajax Requests generated when the control
already have an ongoing Ajax Request will never be queued up.
This is useful e.g. if you have "slow buttons" which are spending
a lot of time on the server and you wish to discard consecutive
clicks on those buttons (can be any widget) since they're just
a result of a reckless user clicking the same button multiple
times.

* Fixed a bug that caused initial setting of opacity style value
in the ASPX markup to not work properly in IE.

* Changed the Views property of the Accordion control to
be a List<AccordionView> property to make it easier to access
the individual views by index of the ActiveAccordionViewIndex
property.

* Fixed a bug in EffectFadeIn which made the element you ran it
on always display with block style while the Effect was running.

* Fixed a bug in EffectFadeOut which made it impossible to
run the effect on a widget which initially was invisible.

* Fixed a bug in EffectRollUp which made it impossible to
run it on a non-block displayed element.

* Fixed a bug in Dynamic that didn't allow specifying no key or
using an empty string as a key. This is useful in simple
scenarios when the user doesn't need to use a key.

* Fixed a ViewState serialization problem between Behaviors
and their associated controls that made them incorrectly
load Style properties they were changing on Widgets. All
though this was a "core bug" it would only manifest itself
as a bug in the BehaviorDraggable as far as we know which
would incorrectly modify the top/left properties of the
owning control when dragged around on screen.

* Added support for changing Behaviors' properties on Ajax
callbacks.

* Added support for enabling/disabling Behaviors through
implementing IDisableableBehavior (implemented only for
BehaviorDraggable for now).

* Renamed CreateExtraControlsAtBottom and
CreateExtraControlsAtBottomEvtArgs to CreateFooterControls and
CreateFooterControlsEventArgs in Calendar.cs
(Breaking Change).

* Renamed CreateNavigationalButtons and
CreateNavigationalButtonsEvtArgs to CreateTitleBarControls and
CreateTitleBarControlsEventArgs in Window.cs
(Breaking Change).

* Fixed a bug in Timer which made it include the JavaScript
file even though it was not visible.

* Fixed a bug in TreeNode which made it include the JavaScript
file even though it was not visible if the JS file was needed.

* Changed license from LGPL to GPL.
BREAKING CHANGE!!

* Fixed a bug in EffectRollDown and EffectRollUp that made
the animated element loose its old overflow values if
overflow-x was different from overflow-y.

* Changed almost every namespace to become far more
intuitive. Note you'll probably going to have to seriously
rewrite usage of Ra-Ajax. Also changed name of assembly
Extensions to Ra.Extensions.dll.
BREAKING CHANGE!!

* Seriously updated the documentation for Ra-Ajax. Now it
should be really versatile and useful.

* Seriously updated the entire website and also samples.
Hopefully to the better :)

* Added a whole bunch of really great new tutorials which
are now an integrated part of the documentation for
Ra-Ajax.





------------------------------------------------------------------

Version 1.1.3

Enhancements to Dynamic

------------------------------------------------------------------

* Added a new method 'ClearControls()' that allows you to reset the
dynamic control and clear its child controls.

* The 'Extra' property of 'ReloadEventArgs' is now persisted between
callbacks.

* Added a new boolean property 'FirstReload' to 'ReloadEventArgs'
This property is very useful in many scenarios, it is only true
the first time the 'Reload' event is fired, i.e. when you call
the 'LoadControls(...)' method on the dynamic control thus
raising the 'Reload' event, otherwise it is false.


------------------------------------------------------------------

Version 1.1.2

Bug fixes and Renaming Changes (code breaking)

------------------------------------------------------------------

* Fixed a bug in Ra.AjaxManager.Instance.Redirect(url) that
prevented it from working in Safari.

* Fixed a bug in BehaviorObscurable that made the obscuring div not
resize correctly when the browser window gets resized, revealing
parts of the page beneath it.

* In the Dynamic Control, renamed the event 'LoadControls' to
'Reload' and 'LoadControlsEventArgs' to 'ReloadEventArgs' and
renamed the method 'ReLoadControls' to 'LoadControls'. This is
a code breaking change, you should modify your code to use these
new names.


------------------------------------------------------------------

Version 1.1.1

Bug fixes and minor changes...

------------------------------------------------------------------

* Window will now have a default Caption of "&nbsp;" if you don't
set it. This is because of that the Window will not be draggable
unless you explicitly set its Caption in your own code.

* Added support for the Dynamic Control to take an addition
"initialization" object when being ReLoaded explicitly. Note that
this parameter will not be serialized and given again on next
callback, but will be available when the control is signaled to
ReLoad its controls in your own code. This means that you can
pass in "initialization objects" to the "ReLoadControls" method
which will be passed in to your "LoadControls" event handler.


------------------------------------------------------------------

Version 1.1.0

Bug fixes, some quite severe...!

------------------------------------------------------------------

* Fixed so that Accordion now when is set to ClientSideChange="true"
it won't finish the animation with an explicit height for the
element being shown. This was a bug and would make the Auto-Resize
feature of the Accordion not work fully when animation was being
done on the client.

* Fixed a bug in HTML select form element serialization


------------------------------------------------------------------

Version 1.0.3

Bug fixes and more client-side optimizations...

------------------------------------------------------------------

* Added a new Widget called "Dynamic" which completely takes away
the hassle of creating Dynamically created controls. A great sample
of use is the "Dynamic.aspx" page which is completely rewritten.

* Added support for having TreeView NOT trigger selection of items
at all as an option. This is a *BREAKING CHANGE* since the
"AllowMultipleSelectedItems" property is now obsolete and exchanged
with the "SelectionMode" property. This means that the TreeView can
now be set in MultipleSelection, SingleSelection and NoSelection.

* Fixed a bug in ListItem (SelectList) which made them to never be
"selected".

* Added support for SelectedIndex on SelectList.

* Added overloaded constructor for ListItem taking Text and Value
property.

* Added support for TabIndex on all RaWebControl inherited controls.

- All the above changes should make it easier to port an "existing"
ASP.NET WebControls application to Ra-Ajax ...

* Fixed a bug in Style collection which makes the logic throw an
exception when there's a whitespace at the end of the style
collection.

* Fixed a bug in InPlaceEdit that made it not work properly in
Opera and on Mono.


------------------------------------------------------------------

Version 1.0.2

Bug fixes and more client-side optimizations...

------------------------------------------------------------------

* Fixed a bug which ocassionally made the same scripts be included
more then once in core...

* Added support for having "Client-Side animations" for the Tree
Control. This works so that if the TreeView have fetched child
items already or they have been rendered in the HTML/DOM already
then the animating of the expansion/collapsing of the
child-controls will purely happen on the client without having
to go towards the server. This should seriously make the Tree
control behave more responsive. Note that this feature is
*EXPERIMENTAL* and you should be careful with it in production
environments. Also when the tree control is set in this rendering
mode then no "state" will be preserved if you trigger a conventional
postback for some reasons.
To set the Tree Control in this mode set the "ClientSideExpansion"
property to *true*. The default value is false.
This obviously don't work when Tree control is set so that
Expansion property is "SingleClickEntireRow" unless you also set
the SelectionMode to "NoSelection" since then the
actual expansion of the TreeNodes are the same click DOM
element as the element you click to select nodes. And to
select nodes is obviously an event that should and must trigger
a sever-side event.
Note that even though this works relatively perfect there
are "border cases" where things doesn't work perfect. This
is mostly due to that when client-side expansion/collapsing
is occuring then the DOM is updated but not the server-side
style collection. This means that e.g. when you expand a node
on the client and then later select that same node. Then
there is no way the server can now that that node is expanded
and it will seem like for the server that the newly selected
node is actually *NOT* expanded. Therefore I would encourage
you to only use this for "completely dead" trees which
effectively means Trees that purely live on the client.
Say like for instance a "menu" which can't handle selections
anyway etc...


------------------------------------------------------------------

Version 1.0.1

Client-Side optimizations.
IE6 bug fixes...
+++

------------------------------------------------------------------

* RaWebControl now have a property called "OnClickClientSide"
which if set is expected to be a JavaScript function reference
and will trigger when RaWebControl is clicked.

* Accordion can now be set to Client-Side change mode by setting
the property "ClientSideChange" to true. If this property is
true then no Ajax Request will be triggered when you change
the active AccordionView by clicking the headers - but instead
the change logic will entirely run on the client. This means
that among other things no "ActiveAccordionViewChanged" event
will be raised when you switch active AccordionView. Though it
should also optimize the switching of accordions since no Ajax
request is necessary when switching active View.

* TabControl can now be set to Client-Side change mode by setting
the property "ClientSideChange" to true. If this property is
true then no Ajax Request will be triggered when you change
the active TabView by clicking the headers - but instead
the change logic will entirely run on the client. This means
that among other things no "ActiveTabViewChanged" event
will be raised when you switch active TabView. Though it
should also optimize the switching of tabs since no Ajax
request is necessary when switching active View.

* Ra-Ajax now have basic WYSIWYG and Design Time support.
It's not a fully fledged design time support. But at
least it's good enough to ge a "rough picture" of how the
controls will look like in real life. And it also makes
the setting of properties easier.

* Fixed a bug in Ra.js - getDimensions which made among other
things the accordion animation not work for IE6. This have
implications only for IE6.

* There's now a pretty nice JS addition to Ra-Ajax in Ra.js
which should pretty accurately figure out the browser
version. It even have a "special case" for IE6 which
should work as good as browser sniffing is possible to
get to work...

* Changed the previous and next hover background-color
buttons for the skins that supports them in Window
to give "visual clues" that they are "clickable"...

* Added some "effect candy" for the VB.NET DataGrid
Starter-Kit when paging the DataGrid.


------------------------------------------------------------------

Version 1.0.0

Releasing the first stable version of Ra-Ajax

------------------------------------------------------------------

* Ra-Ajax now has 100% Mono compatibility with all its samples


------------------------------------------------------------------

Version 0.9.2

LOTS of optimizations...
Plus some bug-fixes...

------------------------------------------------------------------

* Changed the ViewState logic for Window so that it will roughly use
170 bytes less ViewState (depending upon what you choose as the
name of your skin)

* Fixed a bug that made in-visible Behaviors to render. Note there
is still some problems when adding and removing behaviors to
controls, but this is scheduled for a later release...

* Changed the ViewState logic for Calendar so that it now consumes
roughly 200-300 bytes less ViewState per Calendar instance.

* Optimized the Style ViewState serialization logic to use less
ViewState size when saving Style values into the ViewState.
This should optimize quite a lot of ViewState away if you're
using the Style property heavily in Callbacks and Postbacks...
Note that even though this makes the Style collection more
"lightweight" to use we still encourage our users to use the
CssClass properties as much as possible still...

* Changed some of the samples to be slightly more "relevant".
E.g. the Button, CheckBox and TreeView samples are changed
to not show that much off topic features.

* Added up a new "CodeProject Forum-like" Starter-Kit which
demonstrates how to create an Ajax Forum. Kind of like the
CodeProject.com forums, only 100 times better ... ;)

* In the release build there will only be created one JS file
for inclusion on your pages. This was chosen since due to
the extremely small amounts of JavaScript in Ra-Ajax anyway
there is no point in "modularizing" them anyway.

* We are now "packing" the ViewState which means that we only
return ViewState from the server from the first point where
the ViewState has changed. This should theoretically save
a little less then 25% (maybe 20% in average) of ViewState
bandwidth in total since roughly estimated only 60%
of the ViewState will be returned from the server.
Though the numbers will vary depending on which parts of
the page the user is interacting with and where in the
ViewState changes occurs etc...
This is because we find the *first byte* where a change
occurs and we return everything from *that* point. Though
our guess is that about 40% in average of the ViewState will
be returned fromj the server which means you're saving 20%
of ViewState bandwidth in total...


------------------------------------------------------------------

Version 0.9.1

MessageBox, Xtra "tag" property ++++

------------------------------------------------------------------

* Changed the "Button" property of the TabView to public since it's
the only way to add up BehaviorUpdater to it. This means that you
can now have BehaviorUpdater attached to specific TabViews to ease
the experience on the user for tabview changes that might take
some time.

* Made a couple of extra constructors for BehaviorUpdater since it
is often created in code and thereby it's easier to add them up
with properties when there are constructors taking their
properties.

* Fixed bug in BehaviorUpdater that made it sometimes lock the
entire screen until a browser refresh was executed. This was
especially happening in combination with that some container
wrapping the widget with the obscurer was being ReRendered.
This is a severe bug in the previous version, if you are using
BehaviorUpdater.

* You can now add up more then one CssClass to the Window by e.g.
doing something like this; CssClass="window myCustomClass".
The Window will only use the first CssClass (window above) to
figure out the skin parts. The second CssClass will only
affect the root DOM node of your Window. This makes it possible
to completely eliminate the usage of the style property in
the Window.

* You can now add up more then one CssClass to the AutoCompleter
by e.g. doing something like this; CssClass="auto myCustomClass".
The AutoCompleter will only use the first CssClass (auto above) to
figure out the skin parts. The second CssClass will only
affect the root DOM node of your AutoCompleter. This makes it
possible to completely eliminate the usage of the style property
in the AutoCompleter.

* Added the possibility of DENYING expansion of TreeNode items in
the Tree Control. If this is set there is nothing the user can
do which will trigger "expansion". Might be useful for scenarios
where you either don't want to allow user exansion or you want
"something else" to trigger the expansion of TreeNode items...

* Added up an extra property called "Xtra" on RaControl (meaning
all controls in Ra-Ajax) which is meant to be extra information
that controls can store which is only meant for being handled on
the server. This is especially useful in scenarios where you're
e.g. through databinding creating controls in e.g. a GridView or
a Repeater and you need to know the ID of the "current record"
for a "Delete record" LinkButton etc. But be CAREFUL with it since
it adds to the ViewState of your page. So DON'T misuse it!

* Created a new Widgets - MessageBox which does exactly what you
think it does - and more. You can also in addition to the Yes, No,
Cancel and OK buttons also create it in "get simple user input"
mode. Just a nifty shorthand around a modal Ajax Window with a
couple of buttons and text areas within. But it'll decrease the
amount of coding needed on your behalf when needing a simple
MessageBox.

* Implemented sane defaults for the CssClass of every widget which
are "skinned". This means that for instance for the Window the
default CssClass will no longer be "", but rather "window" and
so on. This makes it easier to start using Ra-Ajax since you
don't have to supply these values yourself - which sometimes
will make it harder to start using Ra-Ajax and confuse you in
the beginning. This was also done in the combination with making
the CssClass in the RaWebControl virtual. So no you can override
that property. Which also makes kind of sense...

* Changed the Text of the today button to "Today" since the date
showing was not that intuitive (thank you Matt)

* Fixed so that both disabled tabs and active tabs no longer have
the pointer cursor in addition to that they also don't animate
the colors (that much) as previously. This makes the appearance
of that they're "less interactive" then previously.


------------------------------------------------------------------

Version 0.9.0

Fixed some serious bugs and also added up a new
recursive FindControl which is quite powerful.

------------------------------------------------------------------

* Fixed a bug in Style serialization logic (again) unfortunately
a small rendering bug came into the 0.8.6 release which was that
the "GetStylesForResponse" method in StyleCollection.cs would
actually serialize BOTH the ViewState value AND the
"AfterViewStateTracking" value which would occassionally make
the same style appear *twice* in the style attribute of the
control. This is fixed now.

* Fixed a bug that renders Style value even if they're "empty".
In Ajax callbacks this should happen, though when rendering
HTML for some reasons it should never render "empty" value
like e.g. "display:;" etc. This is now fixed.

* Fixed a bug which didn't apply the 'autocomplete="off"'
attribute for Firefox on Debian installations which in turn
made the whole Ajax engine for Ra-Ajax go into "undefined state"
when user clicked Back, Forward or Refresh buttons...
This is actually due to a copyright issue between Mozilla and
Debian which made them re-brand the browser to a different name
in their (Debian) distribution...

* Fixed a bug that made it impossible to style the WHOLE CheckBox
and RadioButton. Previously the RadioButton and the CheckBox
would apply the style and CssClass properties to only the input
element itself and not the entire span wrapping the whole thing.
This made it impossible to style the "whole thing". Note that
this might render compatibility problems for you if you have
"walk arounds" already for this problem. If your CheckBoxes
and RadioButtons looks funny, then this is the reason. To fix
this in existing projects realize that the style and class
attributes are now applied ONLY for a SPAN element which
actually WRAPS the entire control.

* Added Text property for AutoCompleter which can be set and
retrieved.

* AutoCompleter now works when setting Focus and Select on it.

* Created a new project which is a "selector engine" for the
server-side. Kind of like the jQuery version for server-side
WebControl and Control traversal and selection.
This project is called RaSelector and can be thought of like
an "advanced version" of a recursive FindControl
implementation...


------------------------------------------------------------------

Version 0.8.6

This is more of a feature release then the previous one,
though we are still mainly focusing on bug fixes - we
still had the time for more features this time then in the
previous release.

------------------------------------------------------------------

* Changed the inheritance chain of the Menu widget. The MenuItems
is now inheriting from Panel and the MenuItem is now inheriting
from Label. This should make it easier for you to construct
"dummy" Menus which only contains text and nothing more due to
that the Label have the Text property. You can still add Child
Controls to MenuItem controls, but if you don't need anything
else then a Text property for your menu items then you can
create smaller and easier understood code by not being forced
to create a Literal control to contain the Text but rather use
the Text property directly from the MenuItem control.
The DOM structure for the Menu however is completely unchanged...
Check out the Ajax-Menu.aspx for a sample of using the Text
property directly instead of adding Literal child controls...
This doesn't render incompatible changes in any way, but it makes
it easier to create Menus in the future and if you wish you also
have the opportunity to change your code to a far easier to
understand code-model.

* Changed the inheritance chain also for the Tree widget. This
means that for Tree Nodes you can just set the Text property
instead of fiddling with Literal controls like you previously
had to. TreeNodes inherits from Panel now and TreeNode
inherits from Label. There are noe changes to the DOM
structure due to this however. See sample of usage in our
Ajax-TreeView.aspx sample. We reduced the amount of code in the
.ASPX page by roughly 20 with this logic and in the C# codebehind
file with roughly 30 lines of code by introducing this logic.
Not to mention the logic is far easier to understand now...
This doesn't render incompatible changes in any way, but it makes
it easier to create Menus in the future and if you wish you also
have the opportunity to change your code to a far easier to
understand code-model.

* Fixed a severe bug in the Style serialization logic which makes
the styles rendered by effects also render into the style
attribute of the control occassionally. This made it impossible
to e.g make a Window initially in-visible while at the same time
fade it into view with an effect since the Window would "flash"
and be initially visible until the effect started running on
the page. This was a pretty obscur and hard to track bug which
would occassionally make the Style serialization logic not work
as intended. If you had problems with Styles serialization logic
previously then this is highly likely the reason. This should
also probably make some of your "advanced logic" render a
*smaller* ViewState for you since often this would fail in such
a way that it would render ViewState value it didn't have to
render as in render changes done before tracking of ViewState
was triggered into the ViewState.

* Added up a new effect called "EffectFocusAndSelect" which is
useful for times when you have something which fades in but
you still want to give focus to some control inside of that
control. The Focus and Select methods will *fail* in such
circumstances and for such scenarios the EffectFocusAndSelect
might come in handy.

* Fixed the Viewport-Sample.aspx so that it have the Login Window
initially IN-visible and fades it into view as the sample is
finished loading.

* Fixed the SelectList so that you can now change it without
experiencing bugs in Ajax Callbacks. Though this means that
the default value of the Size property is now "1" and not "-1"
as it was previously. This fixed it so that you can change the
Size property of it in IE in addition to that you can change it
in Chrome without experiencing funny rendering bugs or errors.

* Added up exceptions for the Tree Control hierarchy in such a way
that you will now get intelligent exceptions if you mess up your
Tree hierarchy by e.g. adding more then one TreeNodes per TreeNode
or have a Tree Control without a TreeNodes collection etc.
This is being done in the rendering phase though so you're still
free to dynamically add up controls in codebehind without
experiencing false positives (exceptions where there shouldn't be)

* Now RadioButton and CheckBox will trigger MouseOver and MouseOut
events also when hovering over/out of the label parts of them.

* You can now trap "EnterPressed" event for TextBox. This will
actually stop the propagating of the event back up and stop the
default action which is submitting the form.

* You can now click carriage return (enter) in InPlaceEdit to submit
the changes you've done without having the form postback.

* Steel skin didn't work on Linux due to a casing bug in inclusion
of CSS file. This is fixed now.

* Added "EscPressed" event for TextBox.

* Added support for clicking Escape key in InPlaceEdit. This will
disable the editing and discard the newly written value.

* Slightly optimized the serialization of forms when initiating an
Ajax callback...

* You can now call RollDown and RollUp on TreeNodes from your own
code which means that you can programmatically expand and collapse
TreeNodes in codebehind. This also means that you can
programmatically (easily) check if a node is expanded or not by
checking the Expanded property since this property now is public.

* Added a new Ajax Starter-Kit - an RSS reader. Sample is called
Viewport-RSS-Starter-Kit.aspx. It features an RSS reader where
you can add and delete RSS feeds and read (fully ajaxified) news
items from those RSS endpoints. Note it currently only support
RSS 2.0 and not Atom or RSS 1.0.

* Added the "CreateExtraControlsAtBottom" event for the Calendar
which if handled can create "extra controls" and append in
between the calendar surface and the "today button". This is
being used in the newly created DateTimePicker...

* Created an Ajax DateTimePicker which can fetch time values in
addition to the date values.

* Added up keyboard shortcuts for most Starter-Kits where it
makes sense. E.g. GridView uses ALT+SHIFT+N/P for next and
previous. Calendar Starter-Kit have ALT+SHIFT+C for creating
a new Activity and ESCAPE for closing "new activity window".
Etc...

* Fixed a bug which made it impossible to enable a timer which
was disabled during an Ajax Callback

* Added support for AccessKey for AutoCompleter.

* Added support for Tooltips for AutoCompleter


-------------------------------------------------------------------------------

Version 0.8.5

This version have been a seriously "stabilizer" which means that we
haven't added up much features but probably all users will feel that
some parts of Ra-Ajax which had some bugs for them are now better and
far more stable in usage.

-------------------------------------------------------------------------------

* Added a more "formal process" to our development cycle. This changelog is one
example of that.
- This means we'll have (standardly) one release maximum per week, this will be
on Fridays. Hopefully every Friday. These are "maintenance releases".
- Then every first Friday of every month we will have a "major release" where
we will increase the major version number. This will make the 1.0 release hit
the download area first Friday in January 2009 if we succeed.

* Fixed a bug with setting focus which makes IE fail if DOM element is not visible
for some reasons (ancestor node might have display:none)
It still fails, but at least it fails without shutting down all future Ajax and
giving error messages.
Relevant for Calendar Starter-Kit.

* Fixed a display bug with IE in Calendar Starter-Kit which made the "Create new
Activity" window show up "skewed"...

* Changed the number of nodes in our "Huge Nodes Collection" TreeView - TreeNode
in the TreeView sample from 500 to 200 nodes since 500 has a bad tendency of
crashing IE...

* Brushed up some of the styles for the sample website. Blue borders around thumbs
etc...

* Fixed styling bug with Calendar in Combining Controls sample.

* Fixed a severe bug in InPlaceEdit which made the Text property being rendered
twice. This happened due to inheriting the InPlaceEdit from Label. It is now
inheriting from Panel.

* Added support for overriding the Tag property of the Panel - just as we've had
for a long time for the Label property. This means you can have a Panel render
as e.g. <p></p> etc...

* Fixed a bug in Window which makes all declaratively created Behaviors (including
BehaviorObscurer) attach to the Content control collection instead of the Window
itself. This creates "skewed visuals" for Obscurers on Window. This means BTW
that there is probably few if any reasons for giving the Obscurer an explicit
ZIndex property...

* Fixed a bug in BehaviorObscurer which made it obscure also the Control it was
ment to make modal if there's an HTML element in the page below the Form element
with absolute or relative position. Applies only for IE.

* Fixed a bug in BehaviorObscurer which made it not obscure the entire document
viewport in FireFox (and possibly other browsers too)

* Fixed a bug in BehaviorObscurer which made the obscurer NOT cover the entire
browser Viewport (always)
The Obscurer now should cover the Browser Viewport for ALL browser in ALL
scenarios!

* Fixed a bug in EffectMove which made IE fail if element did not have an
explicit top or left style before effect was initiated.

* Fixed hovering bugs in IE in Accordion skins "Sapphire" and "Steel". When
hovering in IE the skin changed to a color background which was not
intentionally.

* BehaviorObscurer will resize itself when browser is being resized.
Previously the Obscurer would never resize itself when browser was being
resized. This would previously make it possible to get to controls actually
behind the obscurer. The only part left to figure out is when scrolling
vertically...!

* Fixed height of "Create new activity" on Calendar Starter-Kit since some Safari
doesn't respect height style of input form elements...!

* You can now change the Visible property of TabViews inside of TabControls
in Ajax Callbacks

* You can now change the Caption property of TabViews in Ajax Callbacks

* The TabView now have an "Enabled" property which defaults to true. If
it is false then the TabView *cannot* bet set to the ActiveTab by
clicking it. You will also get visual clues in the skins of the TabControl
if you set this property to false...

* Added DefaultWidget property for Ra Panel (and therefore also Window etc)
which if defined will target the widget with the given ID for being clicked
when Enter key is pressed when something inside that Panel has focus.
Very useful for having default buttons being triggered when user clicks
enter inside a Panel. Kind of the same as DefaultButton from normal ASP.NET
Controls. Though DefaultWidget can target ANY type of Widget, including
CheckBoxes, DropDownLists etc in addition to Buttons. This ie because in
Ra-Ajax also non-button controls can observe the Click event...
When DefaultWidget is being triggered that Widget will also gain Focus.

* Fixed a bug in the internals of Ra-Ajax which made stopping events on both
Safari and Chrome not work. This means that everything in Ra-Ajax which
relied on being able to stop a DOM event from bubbling now works in both
Safari and Chrome (it wasn't really that much that relied on being abl to
stop events though)
Note that this only happens if you return "double false" from your JS event
handlers as in; [false, false]...!

* Fixed so that MouseOut does NOT trigger when mouse enters a child element
of the one handling the MouseOut event.

* Fixed so that MouseOver does NOT trigger when mouse re-enters from a child
element and back into the main surface of the control.

Change log

r1622 by ferasman on Apr 26, 2010   Diff
support for rtl Languages as Arabic
Go to: 
Project members, sign in to write a code review

Older revisions

r1617 by polterguy on Apr 9, 2010   Diff
Apple Scrolling
r1615 by polterguy on Mar 17, 2010   Diff
RichEdit Select and Focus support
r1614 by polterguy on Mar 16, 2010   Diff
[No log message]
All revisions of this file

File info

Size: 49391 bytes, 1153 lines
Powered by Google Project Hosting