summaryrefslogtreecommitdiff
path: root/HISTORY
blob: 25821714b1ffaf53847100c3af4ca12d1cd52abc (plain)
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
Version 3.2.1 Jan XX, 2013

BUG: Issue  #44 - [895] SDateFormatter cannot parse date earlier than 1970 (ctrlaltca)
ENH: Issue #180 - Integrate XMLRPC web service (rojaro)
BUG: Issue #412 - open_basedir restriction (ctrlaltca)
BUG: Issue #413 - TActiveDatePicker does not fire TCallbackClientSide's events (ctrlaltca)
BUG: Issue #414 - ActiveDatagrid's pager does not fire TCallbackClientSide's events (ctrlaltca)
BUG: Issue #415 - prado-cli throws an error if the application is making use of THttpSession (ctrlaltca)
BUG: Issue #416 - TJsonService reports the wrong content-type (ctrlaltca)
BUG: Issue #417 - TActiveCustomValidator and Display=Dynamic not work anymore (sampsa.saarela)
BUG: Issue #418 - Can't get parameters when friendly url enabled with UrlFormat=Path (sampsa.saarela)
ENH: Issue #419 - CssClass for PushButtons of TPager (ctrlaltca)
ENH: Issue #420 - Permit to easily mock TActiveRecordgateway for unit testing (mvschaik)
BUG: Issue #421 - TAutocomplete not rendering an empty suggestion list (Dario Rigolin)
BUG: Issue #424 - TDefaultButton broken when multiple TDefaultButton are on the same page (ctrlaltca)
BUG: Issue #425 - Error generating WSDL (cezarpirajant)
ENH: Issue #426 - Make TDataFieldAccessor capable to access data in nested arrays (ctrlaltca)
BUG: Issue #427 - Var name mismatch in TActiveFileUpload.php (piotr.knapik)
BUG: Issue #428 - Using a TActiveCustomValidator with a TActiveTextBox and AutoPostBack does not work as expected (ctrlaltca)
BUG: Issue #431 - TReCaptcha does not work well with active controls (Gabor)
BUG: Issue #432 - Double slash with URL Tags in www root (ctrlaltca)

EHN: Permit to change the default cipher in TSecurityManager::setEncryption(); changed the default cipher from 3DES to AES256 (ctrlaltca)
EHN: Added a new UrlFormat for TUrlManager: HiddenPath; works like the 'Path' format, but hides the entryscript.php name (ctrlaltca)
EHN: Use php's hash_hmac() when available in TSecurityManager, and permit the use of all algorithms supported by php (ctrlaltca)
EHN: Use mbstring when available in TSecurityManager to better handle multibyte text (ctrlaltca)
EHN: Updated TinyMCE to 3.5.6 (ctrlaltca)
CHG: Rewrite TDateTimeStamp as a wrapper to php's native DateTime and deprecate it (ctrlaltca)
CHG: Updated prototype to 1.7.1 (ctrlaltca)

Version 3.2.0 Jun 25, 2012
BUG: Fixed an inconsistency in TRegularExpressionValidator
ENH: Update TDraggable::revert property to accept "failure" value (Christophe)
CHG/ENH: Change behavior of THttpRequest::getBaseUrl() & THttpRequest::getAbsoluteApplicationUrl() to make it possible to force either http or https (Yves)
EHN: Add property SecureConnection to TUrlMappingPattern and related enum TUrlMappingPatternSecureConnection to make it possible to to define wether to use http or https on pattern level (Yves)
EHN: Add second parameter to THttpResponse::appendHeader whether the header should replace a previous similar header, or add a second header of the same type (Yves)
ENH: Add THttpSession::regenerate() to update the current session id with a newly generated one (Yves)
CHG: Remove TReflectionClass and all references since equals ReflectionClass (Yves)
CHG: Modify TTemplate::parseAttributes to allow definition of "HTML5 Custom Data Attributes (data-*)" e.g Attributes.data-custom-value="foobar" (Yves)
EHN: Modify TActiveRecordConfig & TActiveRecordManager to allow custom subclassing of System.Data.ActiveRecord.TActiveRecordManager & System.Data.ActiveRecord.TActiveRecordGateway (Yves)
EHN: Add methods quoteTableName, quoteColumnName, quoteColumnAlias to TDbMetaData & TDbConnection and add TDbConnection:getDbMetaData [TODO: customize TOracleMetaData] (Yves)
EHN: Add method getHeaders to THttpRequest & THttpResponse (Yves)
EHN: Modify TThemeManager to allow custom subclassing of TTheme (Yves)
ENH: Performance (micro)optimization in TUrlMapping::loadUrlMappings - invoke `getDefaultMappingClass` outside of loop (Yves)
BUG: TActiveMultiView must update clientside only when necessary to get other active controls work fine inside it (ctrlaltca)
BUG: TListBox doesn't correctly reports selected indices to serverside on callback
BUG: TErrorHandler: avoid an error when trying to hide the file path of a lambda function (ctrlaltca)
BUG: TSecurityManager: avoid a race condition when first generating the encryptionkey or the validationkey (ctrlaltca)
BUG: TActiveFileUpload: urlencode the base64'ed token since it can contain the "+" character (otherway it would be traslated to a space) (ctrlaltca)
BUG: TCaptcha: publish images with image/png content-type (ctrlaltca)
ENH: prado-cli: added generateAll command (darthdaniel85)

BUG: Issue  #35 - [840] Capital letters for the initial letter of the directories name (ctrlaltca)
BUG: Issue  #66 - TButton.CausesValidation=False ignored when pressing Enter on the button within a control with DefaultButton (ctrlaltca)
NEW: Issue  #83 - PHP configuration style (Carl)
BUG: Issue  #91 - TActiveCustomValidator can not be updated in JavaScript callback (ctrlaltca)
ENH: Issue #106 - TJavaScript::jsonEncode and TJavaScript::jsonDecode should use built-in PHP functions (ctrlaltca)
ENH: Issue #173 - Add "dragdropextra" (supergsting) patch, mouse coordinates and key status to drag & drop controls (Christophe, DevWorx)
BUG: Issue #179 - Serialization issues in Prado (ctrlaltca)
BUG: Issue #181 - Reworked a better patch to handle clientside event handling (gabor)
BUG: Issue #203 - Workaround for ->CallbackClient->click under IE<=8 (ctrlaltca)
ENH: Issue #210 - Improvement: Auto-switch for TTabPanel (gabor)
BUG: Issue #232 - Could not change enable-state of TActiveCheckBox via Ajax callback (Christophe)
ENH: Issue #235 - Progressive rendering not possible (Gabor)
BUG: Issue #237 - Log at a long time running process (ctrlaltca)
BUG: Issue #240 - TXCache has wrong flush() implementation (ctrlaltca)
BUG: Issue #243 - Cross-site scripting issue in TForm (ctrlaltca)
BUG: Issue #254 - TDbCache should use hash index for the cache key (ctrlaltca)
BUG: Issue #265 - Using scroll wheel causes NaN values in TDatePicker (Gabor)
BUG: Issue #275 - THttpResponse::writeFile delivers the wrong content type (ctrlaltca)
BUG: Issue #283 - constructUrl does not work as before in TShellApplication (ctrlaltca)
BUG: Issue #284 - Wrong reading of information_schema (ctrlaltca)
BUG: Issue #301 - Fixed a bug in TActiveFileUpload (ctrlaltca)
BUG: Issue #314 - T(Active)FileUpload $_errorCode private vs protected (ctrlaltca)
ENH: Issue #337 - Prado serialization optimizations (Gabor)
BUG: Issue #341 - TSafeHtmlParser messes up UTF8-encoded strings (ctrlaltca)
BUG: Issue #342 - TStyle does no accept style values with ":" (ctrlaltca)
NEW: Issue #345 - Added TReCaptcha control (Gabor)
BUG: Issue #346 - TJavaScript, TJSON documentation missing/misbehaving (ctrlaltca)
BUG: Issue #348 - Scripts for dynamically created controls not registered properly in/after a callback (Gabor)
BUG: Issue #351 - THtmlArea prone to double-registration, doesn't deregister properly (Gabor)
BUG: Issue #353 - Accordion control behaves oddly if clicked too fast (Gabor)
BUG: Issue #354 - Oracle MetaData : Nullable/Not Nullable columns inverted (ctrlaltca)
ENH: Issue #356 - Added a new "Clickable" operating mode to TDatePicker (ctrlaltca)
BUG: Issue #358 - THtmlArea Insert Image Bug (uacaman)
BUG: Issue #361 - TActiveListBox multiple selection bug (ctrlaltca)
BUG: Issue #366 - Use divs instead of spans around tables in TActiveDataGrid (ctrlaltca)
BUG: Issue #365 - [Runtime Notice] Declaration of T${DriverName}MetaData::quoteTableName() should be compatible with that of TDbMetaData::quoteTableName() (Yves)
BUG: Issue #367 - Parameterized RegularExpression property in UrlMapping raise TPhpErrorException in DOMDocument::loadXML() (Yves)
BUG: Issue #368 - Clearing selection of a TActiveDropDownList in callback should select its prompt (ctrlaltca)
CHG: Issue #370 - Deprecated TSqliteCache since it's based on php's sqlite extension (ctrlaltca)
BUG: Issue #371 - Sorting on TActiveDataGrid autogenerated column not work (ctrlaltca)
ENH: Issue #372 - ActiveControls's Visible property should be reflected clientside on ajax requests (ctrlaltca)
BUG: Issue #375 - Iconv error using htmlarea in TActiveDataList and chars like "áéíóúñ" (ctrlaltca)
BUG: Issue #377 - THtmlArea Template Pluggin Options Parse Error (ctrlaltca)
BUG: Issue #379 - JSON float encoding depends on current locale (ctrlaltca)
BUG: Issue #380 - TCustomValidator's ControlToValidate should be optional (ctrlaltca)
BUG: Issue #381 - The property CausesValidation in the TActiveDatePicker not work (ctrlaltca)
BUG: Issue #382	- TJavaScript::quoteString() vulnerable to Unicode strings & TJavaScript::jsonEncode() doesn't check for errors (gabor)
BUG: Issue #383 - Some THttpRequest methods raise NOTICE level errors on missing headers (gabor)
BUG: Issue #388 - Output caching will raise error in Performance mode (gabor)
BUG: Issue #390 - TJavaScript::encode() float encoding depends on current locale (gabor)
BUG: Issue #391 - TJavaScript::encode() provides no simple way to pass strings in an XSS-safe way (gabor, ctrlaltca)
BUG: Issue #393 - THttpResponse::redirect() fails if output buffering has been disabled completely (gabor)
BUG: Issue #394 - TActiveCustomValidator Display Dynamic error or Double Update Value (ctrlaltca)
BUG: Issue #395 - 'TActiveDatePicker' does not support AutoPostBack. (ctrlaltca)
BUG: Issue #396 - TApplication warning with is_file php function (ctrlaltca)
BUG: Issue #399 - ratings.js script always included on pages with postback controls (gabor, ctrlaltca)
BUG: Issue #400 - FastCGI/Exceptions: Status code not sent to browser (ctrlaltca)
BUG: Issue #401 - TClientScript doesn't render correctly itself if set visible in callback (ctrlaltca)
BUG: Issue #402 - Component property 'TDatePickerClientScript.setOnLoading' is not defined. (ctrlaltca)
BUG: Issue #404 - THtmlArea sometimes not loading properly from callbacks (gabor)
BUG: Issue #406 - Prado does not allow extension of the application configuration (gabor)
BUG: Issue #407 - Prado does not allow custom SqlMap data caching strategy/method & has inefficient Basic cache (gabor)
BUG: Issue #408 - Missing script/stylesheet file(s) halt(s) callback processing (gabor)
BUG: Issue #410 - Deferred script rendering does not work well with output caching (gabor)

Version 3.1.10 Jul 17, 2011
BUG: Added missing timeout on TCacheHttpSession (ctrlaltca)
BUG: Issue#332 - Minor typos (ctrlaltca)
BUG: Issue#333 - Wrong tracker url on quickstart (ctrlaltca)
BUG: Issue#334 - Wrong variable acces in TTemplateControlInheritable (ctrlaltca)
BUG: Issue#335 - setcookie() bug (ctrlaltca)
BUG: Issue#343 - New TTabPanel breaks compatibility (ctrlaltca)
BUG: Issue#349 - Security problem in TActiveFileUpload control (Gabor)
ENH: Merged a bit TPager's view style with TDataGridPager's one adding first/last buttons to TDataGridPagerStyle (ctrlaltca)
ENH: Reworked the patch for #103 so that it actually fixes the use of TActiveCustomValidator with normal Postback controls (ctrlaltca)

Version 3.1.9 June 3, 2011
BUG: Issue#280 - Documentation has been updated
BUG: Issue#311 - TDataList : FooterStyle not used (ctrlaltca)
BUG: Issue#326 - Translation don't work with Prado 3.1.8 (ctrlaltca)
BUG: Issue#327 - TDbCache with PostgreSQL throw a TDbException (ctrlaltca)
NEW: added documentation and samples to the quickstart tutorial to include the active controls (ctrlaltca)
NEW: Added TTemplateControlInheritable control
NEW: Added TActiveDataGrid control (LCS Team, Christophe)
NEW: Added TActiveDataList control (Marcosanobre, Robin)
NEW: Added TActiveMultiView control (LCS Team)
NEW: Added TActiveRepeater control (LCS Team, Christophe)
NEW: Add TActiveTableRow (LCS Team)
NEW: Add TActiveTableCell (LCS Team)

Version 3.1.8 May 29, 2011
BUG: Issue#16  - [684] TDatePicker problems (rojaro)
BUG: Issue#18  - [909] findAllBySql with non-column ORDER BY (rojaro)
BUG: Issue 58  - TWizard defaults to wrong button (ctrlaltca)
BUG: Issue#103 - TActiveCustomValidator CallBack problem (rojaro)
BUG: Issue#133 - Problem with localazing text with entities (rojaro)
BUG: Issue#134 - XLIFF files have hardcoded source language (rojaro)
BUG: Issue#181 - Prado client-side flawed - aka Multiple client-side (JS) object instances created for the same single DOM control (uacaman)
BUG: Issue#226 - TTimerControl fires immediately (rojaro)
BUG: Issue#227 - Clientscript.php return last-modified date header for scripts (rojaro)
BUG: Issue#229 - Typo in TCachePageStatePersister.php (Christophe)
BUG: Issue#230 - TCachingStatement property access not working (rojaro)
BUG: Issue#232 - Could not change enable-state of TActiveCheckBox via Ajax callback (Christophe)
BUG: Issue#233 - THtmlWriter flush() doesn't result the contents of the output buffer (rojaro)
BUG: Issue#234 - Unable to override default HTML writer / pointless THttpResponse::HtmlWriterType (uacaman)
BUG: Issue#236 - Bug in getIsView() in TOracleMetaData (rojaro)
BUG: Issue#239 - set_magic_quotes_runtime is deprecate since php 5.3.0 and will be removed in 6.0 (rojaro)
BUG: Issue#246 - TQueue::peek returns the top not the bottom (Christophe)
BUG: Issue#261 - TRequiredFieldValidator attached to TCheckBox client side implementation broken in 3.1.7 (ctrlaltca)
BUG: Issue#268 - String comparison with "=" does not work in Mysql 5.1 (rojaro)
BUG: Issue#270 - TPage private attribute _restPostData does not allow one to extends TPage (uacaman)
BUG: Issue#273 - Typo in TURLMapping->getPatternMatches UrlFormat="Path" (rojaro)
BUG: Issue#276 - TListItemCollection never existed caused by Warning "PradoBase::include_once(TListItemCollection.php)" (rojaro)
BUG: Issue#277 - Inconsistence in setting 'day' value in TDatePicker (rojaro)
BUG: Issue#278 - Typo in file TActiveRecordRelation (rojaro)
BUG: Issue#281 - THtmlArea bad mapping Japanese language (ctrlaltca)
BUG: Issue#285 - getPathOfNamespace returns cached namespace and ignores ext (rojaro)
BUG: Issue#286 - TBoundColumn->initializeCell bugs (rojaro)
BUG: Issue#287 - Inconsistent behavior in TSimpleDateFormatter->parse() (rojaro)
BUG: Issue#288 - Fixed two bugs in the Translation->init() method (rojaro)
BUG: Issue#294 - Better handling of missing array parameters in SQLMap (rojaro)
BUG: Issue#296 - URL tag not being parsed in component attributes (rojaro)
BUG: Issue#300 - Minor error in TErrorHandler.php (rojaro)
BUG: Issue#301 - TActiveFileUpload problems (rojaro)
BUG: Issue#304 - Possible security issue in cookies (rojaro)
BUG: Issue#305 - Password type TTextBox does not support AutoCompleteType (rojaro)
BUG: Issue#319 - When TPanel's DefaultButton property is set to a TActiveButton it inhibits TButton's postbacks (ctrlaltca)
BUG: Issue#324 - TTabPanel doesn't render properly upon postback if a TTabView's visible property = false (ctrlaltca)
ENH: Security manager: removed the zero byte right trim from the decryption routine and also made some cosmetic changes (rojaro)
ENH: Upgraded the phpunit ini file to work with PHPUnit 3.3 3.4 and 3.5. There are conditionals for 3.3 and 3.4. No more Framework file includes are needed with 3.5. (javalizard)
ENH: Issue#264 - Prado wasting CPU by using ArrayAccess and IteratorAggregate interfaces (uacaman)
ENH: Issue#199/272 - Updated prototype to 1.7 scriptaculous to 1.9.0 and dropped json.js for json2.js. Adds IE9 support (ctrlaltca)
ENH: Updated tinyMCE to latest version (3.4.2). The package size grew up a bit (from 3.7 to 5.5 mb) since the new version is bigger in sizea and adds support for a lot of new localizations. Adds IE9 support (ctrlaltca)

Version 3.1.7 February 22, 2010
ENH: Issue#24  - Specify needed fields on demand (Yves)
BUG: Issue#80  - Inconsistencies in TRegularExpressionValidator (Christophe)
BUG: Issue#86  - THttpSession.CookieMode ignored / Session ID leak (Christophe)
BUG: Issue#94  - DataGrid header/footer renderers unable to locate their parent grid in setData() method (Christophe)
BUG: Issue#113/195 - THttpRequest -> getPathInfo doesn't work on servers when cgi.fix_pathinfo=1 (Yves)
BUG: Issue#151 - TTextBox fails to display inital line break (Yves)
BUG: Issue#153 - Bug with calls like MyActiveRedorc->withText()->withUser()->find(...) and null result (Christophe)
BUG: Issue#157 - Enabled does not work properly on TActiveRadioButton/CheckBoxList controls (Bradley, Carl)
BUG: Issue#166 - E_NOTICE level error in TDataGatewayCommand (Carl)
BUG: Issue#169 - FlushOnExecute on Basic CacheModel flushes all Application Cache (E.Letard, Christophe)
BUG: Issue#171 - <connection> tag in SqlMap config ignored in 3.1.5 and above, introduced by solving Issue#68 (Yves)
EHN: Issue#184 - THttpResponse doesn't support custom Content-Type headers, remove charset part of header if THttpResponse.Charset=false (Yves)
BUG: Issue#188 - TDbCache doesn't check if db connection is active. (Yves)
BUG: Issue#189 - Page State corrupted when EnableStateValidation=False (Christophe)
BUG: Issue#191 - Bad parsing of MySQL ENUM type column (Yves)
BUG: Issue#192 - soap-enc:Array not a valid complex type (mosonyi at esix.hu)
BUG: Issue#189 - Page State corrupted when EnableStateValidation=False (Christophe)
BUG: Issue#198 - "Undefined variable: tagName" after error in application configuration. (Christophe)
BUG: Issue#200 - TShellApplication failed when no service are defined in application configuration. (Christophe)
BUG: Issue#208 - TDbConnection.Charset not working properly (googlenew at pcforum.hu, Christophe)
BUG: Issue#209 - SqlMap doesn't escape inline params properly (Yves)
BUG: Issue#212 - Mistaken query executed by TMysqlMetaData (pbenny, Christophe)
BUG: Issue#216 - TTabPanel doesn't preserve active tab on callback request (googlenew at pcforum.hu,Christophe)
BUG: Issue~223 - TXmlElement doesn't support all types in attributes - fails to save (Christophe)
BUG: Typo in TBoundColumn (Robin)
BUG: TActiveDatePicker js error when date format does not have the 3 elements (Christophe)
ENH: Add property ClientScriptManagerClass to TPageService and releated changes in TPage.getClientScript() (Yves)
ENH: Always render clientside counterparts of validation control even if not enabled, but pass-through Enabled property, to allow Enabled/Disable of validator on callback. (Yves)
EHN: Add property TValidationSummary.ScrollToSummary to server-side control since property exists on client-side. (Yves)
EHN: Add property TransactionClass (defaults to System.Data.TDbTransaction) to TDbConnection and modify beginTransaction() (Yves)
ENH: Modify TDbTableInfo::getColumnNames() to store result in private class member (Yves)
ENH: Issue#215 - Add ClientSide property to TDropContainer (googlenew at pcforum.hu, Christophe)
ENH: Issue#222 - Add Columns property to TInPlaceTextBox (Christophe)
CHG: Issue#218 - Change URL of Javascript Logger (Christophe)
EHN: Clientside performance (micro)optimization: Declare local javascript variables explicit as local to avoid scope chain lookups (Yves)

Version 3.1.6 July 22, 2009
BUG: Issue#98 - Missing file in quickstart demo (Chrisotphe)
BUG: Issue#105 - Enabling/disabling TFileUpload on TPanel (Carl)
BUG: Issue#115 - Clientside registry of serverside controls don't cover all controls: Prado.WebUI.TAutoComplete, Prado.WebUI.TInPlaceTextBox (Yves)
BUG: Issue#117 - Consider TValidationSummary.DisplayMode="HeaderOnly" if TValidationSummary.ShowMessageBox is set (Yves)
BUG: Issue#164 - CultureInfo::validCulture should be declared as a static method (Christophe)
BUG: Issue#168 - TSqlMapXmlConfiguration: CacheModel properties are not set (Yves)
BUG: Issue#172 - TDbCache fails to recognize need to re-create cache table (Yves)
BUG: Issue#105 - Enabling/disabling TFileUpload on TPanel (Carl)
BUG: Issue#178 - TActiveFileUpload progress indicator is misleading (Christophe, googlenew-at-pcforum.hu)
ENH: Issue#174 - TErrorHandler: HTTP error messages contains sensitive information (Yves)
ENH: Issue#175 - TBulletedList: Introduce TBulletStyle::None (Yves)
ENH: Issue#176 - THttpResponse::writeFile() add additional parameters to take more influence on behavior (forceDownload, clientFileName, fileSize), add png to defaultMimeTypes (Yves)
BUG: TCallbackErrorHandler::displayException() force HTTP status "500 Internal Server Error" to ensure TCallbackOptions.ClientSide.OnFailure is raised (Yves)
ENH: TAssetManager: introduce protected property "Published" to allow subclasses access (Yves)
ENH: TFirePhpLogRoute: bypass to TBrowserLogRoute if headers already sent / php.ini (output_buffering=Off, implicit_flush=On) (Yves)
EHN: Performance optimization in PradoBase::createComponent() (Yves)
EHN: Add property TPage.EnableStateCompression and related modifications in TPageStateFormatter since it is unnecessary to compress clientstate if TCachePageStatePersister/TSessionPageStatePersister is used (Yves)
ENH: Add property CssClass to TBrowserLog otuput and hide inline CSS (Carl)

Version 3.1.5 May 24, 2009
BUG: Issue#55 - TPropertyAccess.get and has don't recognize magic getter __get (Yves)
BUG: Issue#68 - TSqlMapConfig::createSqlMapGateway(): assign current connection to cached TSqlMapManager to avoid loosing active transaction (Yves)
BUG: Issue#87 - TinyMCE : empty string disapears after encoding JS, that's a problem! (Christophe)
BUG: Issue#88 - SQLMap $Param$ re-evaluation bug (Yves)
BUG: Issue#95 - TMysqlMetaData::getShowCreateTable() throws TPhpErrorException "[Notice] Undefined index: Create Table" if table is a view (Yves)
BUG: Issue#96 - THttpResponse::redirect don't send status code (Christophe)
BUG: Issue#99 - TActiveRecord::save(): confusion with order of keys in table/index (Christophe)
BUG: Issue#108 - clientscripts.php: prepending set_time_limit(0) call with an "@" to suppress PHP warning in safe mode (Yves)
BUG: Issue#107 - typo in TDbConnection::getCharset() (Christophe)
BUG: Issue#120 - TActiveDropDownList PromptText and PromptValue got lost during callback and data rebind (Yves)
BUG: Issue#122 - SqlMap: support for properties in resource filenames, fix sqlmap doc - property "name" instead of "key" (Yves)
BUG: Issue#126 - THtmlArea: boolean options output as strings (Christophe)
BUG: Issue#127 - TDataSourceConfig::findConnectionByID try to access private var (Cristophe)
BUG: Issue#129 - TDbLogRoute::init don't close the sql command (Christophe)
BUG: Issue#130 - TDbLogRoute::processLogs wrong values binding (Christophe)
BUG: Issue#136 - TActiveDatePicker don't callback when ShowCalendar is false (Christophe)
BUG: Issue#139 - add schema support to TActiveRecordRelation::findForeignKeys() (Yves)
BUG: Issue#148 - Bad Oracle Support (E.Letard)
BUG: Issue#150 - Multiple TDropContainers in same namingcontainer give error (Christophe)
Bug: Issue#154 - Bug in TOracleMetaData.php causing SqlMap not work with Oracle database (Christophe)
BUG: Issue#161 - SqlMap add cache dependencies if TApplicationMode Debug/Normal (Yves)
BUG: URL wildcard patterns didn't work with subfolders
BUG: TDbLogRoute::createDbTable: add AUTO_INCREMENT attribute to log_id column if driver is mysql (Yves)
BUG: Ensure rendering of clientID in TActivePanel (Christophe)
BUG: TPgsqlTableInfo::getTableFullName() return void if no schema given
BUG/ENH: TSqlMapCacheModel now consider <flushInterval> tag as described in doc (sqlmap.pdf) - valid attributes are duration in sec or seconds, minutes, hours, days (Yves)
BUG/ENH: Issue#112 - TXmlDocument add support for namespaces: for backward compatibility only if SimpleXml installed (Yves)
ENH: Issue#115 - Registry for Prado generated clientside counterparts of serverside controls (Yves Berkholz)
ENH: Issue#117 - TValidationSummary: new display mode "HeaderOnly" that only render value of HeaderText property (Yves)
ENH: Issue#135 - Add AutoPostBack property to TActiveFileUpload (Bradley)
ENH: Issue#146 - replace deprecated(php5.3>) split with explode in TPgsqlMetaData:getPrimaryKeys(), PradoBase::getUserLanguages() (Yves)
ENH: Issue#141 - TDbCache performance: modify structure of indices, new property 'FlushInterval' to control how often expired items will be removed (Yves)
ENH: Issue#74 - Introduce a new property 'InvalidFinderResult' (related enum TActiveRecordInvalidFinderResult) to TActiveRecordConfig, TActiveRecordManager, TActiveRecord that allows to control how TActiveRecord react if an invalid magic-finder invoked (Yves)
CHG: Issue#7 - Clients Scripts are not combined anymore in Debug application mode (Christophe)
ENH: Added caching of message files to TException (Michael)
ENH: Updated to scriptaculous 1.8.2 & Prototype 1.6.0.3
ENH: clientscripts.php Updated to JSMin 1.1.1 - According to author 15% faster with 94% less memory usage (Yves)
ENH: replace is_null() function calls with native language constuct (Yves)
ENH: replace array_push() function calls with native language constuct if make sense (Yves)
ENH: TBrowserLogRoute: add table-layout:auto and explicit set column with to avoid bad render behavior in table-layout:fixed environment, explicit set text color to increase readability (Yves)
ENH: new log route subclass for FirePHP: TFirePhpLogRoute - FirePHP is ideally suited for AJAX development where clean JSON and XML responses are required (Yves)
ENH: TBaseValidator, TCustomValidator: change visibilty (protected => public) of getValidationTarget() (Yves)

Version 3.1.4 January 11, 2009
BUG: Issue#9  - Global page properties are ignored when using external configuration (Christophe)
BUG: Issue#59 - TPropertyAccess::has() returns false even if the property of an object was found (Carl)
BUG: Issue#61 - TLogRouter throws exception when using external config file (Michael)
BUG: Issue#62 - Some mistyping: TJavascript or TJavaScript? (Carl)
BUG: Issue#79 - Missing new operator for Exception in TSqlMapObjectCollectionTree::onChildNodesVisited() (Christophe)
BUG: TActiveLinkButton and TActiveRadioButtonList crashes if it's the only active control imported. Added TActiveControlAdapter (Carl)
BUG: TUrlMapping encoded extra parameters twice (Michael)
BUG: Issue#89 - TActiveFileUpload doesn't work (Carl)
CHG: Removal of generator meta tag in THead
ENH: TActiveCheckBox, TActiveRadioButton, TActiveDropDownList, TActiveListBox won't raise callback if AutoPostBack is false (Christophe)
ENH: Issue#36 - Refactored TRatingList/TActiveRatingList, and added some docs (Bradley)
ENH: Issue#52 - Upgraded to TinyMCE 3.2.1
ENH: Issue#72 - Add wildcard support to TUrlMapping (friendly-urls) (Michael)
ENH: Issue#77 - TJsonService missing exception messages (Carl)
ENH: Issue#29 -	Ability to specify position of popup TDatePicker/TActiveDatePicker (Carl)
ENH: Issue#75 - TApplication::setRuntimePath() to update uniqueID and cacheFile (Carl)
ENH: Issue#64 - Don't throw exception on wrong value for TListcontrols (Carl)
ENH: Issue#65 - Improvement of TActiveRecord::populateObjects() (Christophe)
NEW: Issue#51 - Additional template tag (Carl)

Version 3.1.3 November 1, 2008
BUG: Ticket#595 - ControlCssClass not applied correctly if using multiple validators on same control (Michael)
BUG: Ticket#834 - TDbCommandBuilder::applyOrdering(): Add support for function calls in ORDER BY clause (Knut)
BUG: Ticket#836 - TRatingList downgrade (Christophe)
BUG: Ticket#841 - Strange output from THttpResponse (Christophe)
BUG: Ticket#847 - getBaseUrl sometimes fails (Christophe)
BUG: Ticket#843 - TDataList alternatinItem issue after changes in rev 2227 (Christophe)
BUG: Ticket#845 - TCaptchaValidator with TCaptcha.CaseSensitive=false JS Error (Christophe)
BUG: Ticket#849 - TDatePicker selecting current date problem (Christophe)
BUG: Ticket#851 - TPropertyAccess doesn't get properties right if an object has a __call() method (Simon Lehmann, Knut)
BUG: Ticket#855 - TActiveRecord: Make db-connection serializable in __sleep() function (Knut)
BUG: Ticket#856 - Assets PRADO_CHMOD constant missing in several places (Carl)
BUG: Ticket#859 - errorhandler error (stever)
BUG: Ticket#860 - Prado::localize() bug (japplegame)
BUG: Ticket#865 - TActiveLabels always get an id attribute (Michael)
BUG: Ticket#870 - Callback with redirect breaks lifecycle of page (stever)
BUG: Ticket#872 - use PATH_SEPARATOR in phpunit.php (fragmaster b)
BUG: Ticket#886 - TSimpleDateFormatter: One month offset in time stamp with date pattern "yyyy" (Knut)
BUG: Ticket#897 - TSimpleDateFormatter: If no YearPattern is set it should default to current year (Knut)
BUG: Ticket#899 - TSqlCriteria: SQL-statements with limit and offset doesn't work (Knut)
BUG: Ticket#900 - TDataGrid with TRequireFieldValidator and TEditCommandColumn interaction error (Michael)
BUG: Ticket#904 - TDbConnection: Add emulate prepares workaround for boolean compares (Knut)
BUG: Ticket#908 - TDbCache::init / Exception (Knut)
BUG: Ticket#922 - Problem with TUrlMapping and urlencoding (Michael)
BUG: Ticket#938 - TPageStateFormatter EnableStateEncryption causes massive page state (Michael)
BUG: Ticket#942 - MultiLine TInplaceTextBox (Christophe)
BUG: Issue#38 - TValidationSummary, works different when it's showing Javascript Validation than Server Validation (Carl)
CHG: Ticket#844 - Upgraded TinyMCE to 3.1.0.1 (Christophe)
CHG: Ticket#917 - TUrlMapping - change members to protected (Michael)
CHG: Ticket#919 - TUserManager loadUserData function (Michael)
CHG: Issue#39 - Implement validator not requiring ControlToValidate (Carl)
ENH: Workaround for slow meta data retrieval in MySQL<5.1.21 (Michael)
ENH: Ticket#756 - TDateFormat & TNumberFormat - allow settings default text when Value isn't set. (Carl)
ENH: Ticket#823 - PromptText/PromptValue only populated if there is data (Knut)
ENH: Ticket#876 - Assign empty string to CssUrl on TTabPanel to avoid loading extra css (GoDZilla, Knut)
ENH: Ticket#882 - Allow to escape # and $ in sqlmap (Michael)
ENH: Ticket#890 - Minor optimization: Use $var===null over is_null($var) (Knut)
ENH: Ticket#893 - Added page parameter to queryForPagedList() to specify the initial page to load (Michael)
ENH: Ticket#896 - TTheme - enhance for subclassing (Knut)
ENH: Ticket#898 - Minor optimization: Use (int) over intval() (Knut)
ENH: Ticket#813 - (Issue #13) TRegularExpressionValidator has new ClientSidePatternModifier property (Michael)
ENH: Ticket#809 - "LIMIT 1" for ActiveRecord find() and findBy() (Carl)
ENH: Ticket#848 - TCache "set" and "add" with empty values (Carl)
ENH: Ticket#822 - Not receiving emails from TEmailLogRoute (Carl)
ENH: Ticket#901 - Using TDbDataReader directly as a DataSource of TDataBoundControl's like TDataGrid (Knut)
ENH: Ticket#911 - prado-cli: Better error message if database connection fails when generating Active Record skeletons (Knut)
ENH: Ticket#913 - PRADO Copyright notice in HTML source (Carl)
ENH: Ticket#925 - TTimeTriggeredCallback update interval during callback (Brad, Christophe)
ENH: Ticket#941 - Add addRoute() method to TLogRouter (Michael)
ENH: Ticket#46 - TColorPicker - Output is missing alt tag (Carl)
ENH: Issue#32 - Implement ability to specify default service ID (Carl)
ENH: Issue#31 - Consider UTF MessageSource_XLIFF class file (Carl)
NEW: Added Prado.Validation.validateControl(id) on client side to validate a specific control (Michael)
NEW: Added MessageSource_Database to I18N (uses TDbConnection) (Michael)
NEW: Ticket#790 - Added TActiveFileUpload (Bradley, Christophe)
NEW: Ticket#935 - Added TActiveDatePicker (Bradley, Christophe)
NEW: Ticket#857 - Added Authentication expiration support to TAuthManager (Michael)
NEW: Ticket#853 - Added Drag and drop components (Christophe)
NEW: Ticket#891 - Added method that returns table name to TActiveRecord (Michael)

Version 3.1.2 April 21, 2008
BUG: Ticket#595 - ControlCssClass not applied correctly if using multiple validators on same control (Christophe)
BUG: Ticket#622 - Changing Display-attribute of a TActiveCheckBox dynamically isn't possible (Michael)
BUG: Ticket#636 - I18N catalogue problem (Christophe)
BUG: Ticket#669 - Strange rendering behaviour with TActivePanel (Christophe)
BUG: Ticket#671 - TActiveCustomValidator Callback Problem (Christophe)
BUG: Ticket#679 - TActiveLabel can't be shown from inside TRepeater. TActiveRadioButton cant be unchecked (Christophe)
BUG: Ticket#695 - ActiveTextBox filled in IE blocks other elements (Michael)
BUG: Ticket#707 - TPropertyAccess sets property twice on object when using setters (Qiang)
BUG: Ticket#718 - prop:ClientSide OnLoading don't work in Opera (Christophe)
BUG: Ticket#719 - TAutoCompleter should not trigger Validation if CausesValidation=False (Christophe)
BUG: Ticket#721 - TActiveCustomValidator + TValidationSummary problem (Christophe)
BUG: Ticket#736 - Files never created in clientscript.php (Qiang)
BUG: Ticket#744 - Callback error handling is improved (Qiang)
BUG: Ticket#747 - TRangeValidator accept letters when type Integer is specified (Christophe)
BUG: Ticket#750 - The "expire" parameter is used inconsistently in cache modules (Qiang)
BUG: Ticket#753 - Themes not allways being set (Qiang)
BUG: Ticket#754 - CultureInfo constructor errors (Qiang)
BUG: Ticket#759 - TSlider wrong layout with horizontal with center horizontal align (Christophe)
BUG: Ticket#769 - Problem with Validator inside TActivePanel (Christophe)
BUG: Ticket#776 - Logout button should not cause validation in blog tutorial (Qiang)
BUG: Ticket#785 - TDatePicker OnDateChanged event problem (Christophe)
BUG: Ticket#787 - Typo in validation3.js (Christophe)
BUG: Ticket#766, #786 - TDbCache does not work with MySQL and PostgreSQL (Qiang)
BUG: Ticket#799 - Fixed several link errors in documentation about PDO (Qiang)
BUG: Ticket#803 - TActiveRecord cannot be serialized/unserialized correctly. (Qiang)
BUG: Ticket#808 - Client side validation should work for file upload. (Qiang)
BUG: Ticket#828 - Validators not working when RepeatLayout="Raw" (Qiang)
BUG: Fixed a bug in TPropertyValue::ensureArray() (Qiang)
CHG: Ticket#819 - TLogRoute now displays GM time instead of local time (Qiang)
CHG: Changed TConditional so that the controls in its template behave like they are in its parent (Qiang)
CHG: Active Record many-to-many relationship change from self::HAS_MANY to self::MANY_TO_MANY (Wei)
CHG: Active Record no longer automatically performs adding/removing/updating related objects (Qiang)
CHG: TJavaScript::encode() will encode data as a list if integer indices are detected (Qiang)
CHG: Ticket#755 - Upgraded to Prototype 1.6 and Scriptaculous 1.8 (j, Christophe)
ENH: Ticket#660 - Using Globalization.Charset in JSON for AJAX Callbacks (Michael)
ENH: Ticket#722 - Added Read Only capabilities to TInPlaceTextBox (Christophe)
ENH: Ticket#741 - Added CDbConnection.currentTransaction property (Qiang)
ENH: Ticket#743 - Added status code header in HTTP response when in error (Qiang)
ENH: Ticket#745 - TWizard action MoveTo - allow specify step ID's (Christophe)
ENH: Ticket#757 - TDateFormat and TNumberFormat now implement IDataRenderer (Qiang)
EHH: Ticket#770 - THttpResponse send HTTP 1.1 Status code to the client (Christophe)
ENH: Ticket#783 - Added date/time type support to soap implementation (Hongliang)
ENH: Ticket#800,#833 - Added database connection charset for MySql and PgSql (donkee)
ENH: Active Record supports multiple foreign references of the same table (Wei)
ENH: Added TDbCommand.queryColumn() (Qiang)
ENH: Active Record now supports implicitly declared related properties (Qiang)
ENH: Active Record now supports query criteria for implicitly declared related properties (Qiang)
ENH: TDataFieldAccessor now supports chained property access without getters. (Qiang)
ENH: TParameterModule added caching support (Qiang)
ENH: Added TAuthManager.switchUser() (Qiang)
NEW: Added TDbLogRoute (Qiang)
NEW: Added TDataRenderer and TItemDataRenderer (Qiang)
NEW: Added THtmlElement (Qiang)
NEW: Ticket#544 - Added TXCache (Wei)
NEW: Ticket#729 - Added TActivePager (Christophe)
NEW: Ticket#791 - Added TFirebugLogRoute (Christophe)

Version 3.1.1 October 1, 2007
BUG: Ticket#340 - Callbacks and Firebug compatibility problem (Christophe)
BUG: Ticket#533 - HttpRequest::getBrowser() throws an error if browsercap.ini is invalid (Carl)
BUG: Ticket#592 - TRadioButton with UniqueGroupName always return false to getChecked (Christophe)
BUG: Ticket#648 - Validation: onClick and onBlur events order (Christophe)
BUG: Ticket#656 - TDatePicker does not return correct value when in callback mode (Christophe)
BUG: Ticket#661 - ActiveRecord PostgreSQL 7.3.2 Support doesn't work (Qiang)
BUG: Ticket#662 - Ensure TForm to properly encode the ampersand in action URL (Qiang)
BUG: Ticket#666 - TActiveRecord::deleteAll() method always requires a criteria or null parameter (Qiang)
BUG: Ticket#670 - TDatePicker: Year Issue (Christophe)
BUG: Ticket#689 - TRangeValidator: Problem in clientscript when MaxValue=<%= 0 %> (Qiang)
ENH: Ticket#370 - TDataGrid now supports grouping cells (Qiang)
ENH: Ticket#577 - Added image button support for TPager (Qiang)
ENH: Ticket#623 - TMemCache to support multiple servers (Carl)
ENH: Ticket#664 - Added support to styling thead, tbody, tfoot of TDataGrid (Qiang)
ENH: Ticket#665 - Added support to column mapping in Active Record (Qiang)
ENH: Ticket#667 - Added TFeedService.ContentType property (Qiang)
ENH: Ticket#672 - ForceSecureConnection to THttpRequest (Carl)
ENH: Ticket#676 - Updated ActiveRecord Oracle Drives (Qiang)
ENH: Ticket#678 - Improved DateTimeFormatInfo performance (Stever)
ENH: Ticket#681 - TUrlMapping can construct custom URLs now (Qiang)
ENH: Ticket#692,700 - Added support to wildcard in pages configuration; added IP filters in auth rules. (Qiang)
ENH: Ticket#709 - Added TDbCache.ConnectionID (Qiang)
ENH: Added THead requirement check (Qiang)
ENH: Added TOutputCache.CacheTime (Qiang)
ENH: Added "remember login" support to TAuthManager and the related modules/classes (Qiang)
ENH: Added prompt text support to TDropDownList and TListBox (Qiang)
CHG: Ticket#685 - Slashes and backslashes mixup in PradoBase (Qiang)
CHG: Ticket#705 - TImage will not set border style by default (Qiang)
CHG: GeSHi is replaced with Text_Highlighter (Christophe)
CHG: Changed the way to declare relationships in Active Record (Qiang)
CHG: Validators will not validate disabled controls (Qiang)
NEW: Ticket#676 - Added primilary Oracle support (Christophe)
NEW: Ticket#680 - Added TCacheHttpSession (Carl, Qiang)
NEW: Added TTabPanel (Qiang)
NEW: Added TKeyboard (Qiang)
NEW: Added TCaptcha and TCaptchaValidator (Qiang)
NEW: Added TCachePageStatePersister (Qiang)
NEW: Added TSlider (Christophe)
NEW: Added TConditional (Qiang)
NEW: Added Indonesian translation to QuickStart, requirements and error messages (Zaenal Mutaqin)
NEW: Added French translation to the blog tutorial (Eric Marchetti)

Version 3.1.0 July 2, 2007
BUG: Ticket#621 - TWizardNavigationButtonStyle could not be found (Qiang)
BUG: Ticket#627 - Logout did not set correct status to the user object (Qiang)
BUG: Ticket#650 - Fixed TMysqlMetaData bug about SHOW FULL TABLES (Qiang)
BUG: Ticket#651 - TUserManager Roles names (from config) should be trimmed (Qiang)
BUG: Ticket#652 - OFFSET must be specified together with LIMIT for TScaffoldView (Qiang)
BUG: Ticket#653 - TUrlMapping: ServiceId irgnored in URL-Map (Qiang)
BUG: Ticket#488 - TActiveCustomValidator Is Bypassing My Callback (Wei)
BUG: Ticket#620 - PRADO should not take over all of Prototype's Callbacks (Wei)
BUG: Ticket#635 - TDatePicker not correctly updating month (Christophe)
BUG: Ticket#649 - Wrong error message in THttpCookieCollection::itemAt() (Knut)
BUG: Ticket#654 - TAssetManager::copyDirectory() do not run closedir on an invalid resource (Knut)
BUG: Ticket#655 - TAssetManager::publishTarFile() exception for 'assetmanager_tarchecksum_invalid' is not thrown on BSD systems (Knut)
BUG: Ticket#659 - Asset is not published correctly for child classes (Qiang)
BUG: TWizard Sidebar using TDataListItemRenderer has error (Qiang)
BUG: TOutputCache crashes when a default button is set (Qiang)
BUG: Fixed several typos in TDbCache (Qiang)
BUG: Fix the bug that <include> tag was ignored in page configurations (Qiang)
ENH: Ticket#625 - Added @ to represent authenticated users in auth rules (Qiang)
ENH: Ticket#631 - Make TQueue implement Countable as the other collection classes (Knut)
ENH: Ticket#634 - Override __toString for TXmlElement and TXmlDocument (Knut)
ENH: Ticket#639 - Added setters for certain properties of TTheme (Qiang)
ENH: Ticket#641 - Added support to find out controls of specified class or parent classes (Qiang)
ENH: Ticket#646 - Implement TAPCCache::add() (Knut)
ENH: Added TAuthManager.ReturnUrlVarName property (Qiang)
ENH: Added TPageService.DefaultPageUrl property (Qiang)
NEW: TActiveHiddenField (Carl)

Version 3.1.0 RC May 14, 2007
BUG: Ticket#525 - SQLMap->queryForList error with offset/limit parameters (Wei)
BUG: Ticket#547 - SQLMap problem with PDO::DBLIB (Wei)
BUG: Ticket#578 - ActiveControls broken by presence of THtmlArea in the .page (Wei)
BUG: Ticket#587 - TActiveDropDownList doesn't work if modified during TAutoComplete callback (Wei)
BUG: Ticket#598 - ClientSide.HasPriority raises JS Exception (Wei)
BUG: Ticket#599 - Searching in QuickStart Tutorial generate TInvalidOperationException (Qiang)
BUG: Ticket#600 - Searching in the Quickstart Tutorial is throwing out the error (Qiang)
BUG: Ticket#602 - DateTimeFormatInfo missing data (Wei)
BUG: Ticket#603 - THtmlArea problem after callback - "this.getDoc() has no properties"
BUG: Ticket#605 - TDatePicker don't works in 3.1.b on linux server (Wei)
BUG: Ticket#606 - TColorPicker bug in Full mode (Wei)
BUG: Ticket#612 - Documentation Problem on THttpResponse:writeFile() (Qiang)
BUG: Ticket#616 - SqlMap properties are not replaced in config files (Wei)
BUG: Ticket#618 - SqlMap's TPreparedCommand needs TDbCommandBuilder (Qiang)
ENH: Ticket#458 - TSqlMap and runQueryForMap method (Wei)
ENH: Ticket#594 - TInPlaceTextBox ESC and ENTER keys behaviour (Wei)
ENH: Ticket#601 - TRectangleHotSpot and javascript onclick handler (Qiang)
ENH: Ticket#609 - TColorPicker event feature and display issue (Wei)
ENH: Ticket#613 - clientscripts.php is made PHP4-compliant (Qiang)
ENH: Ticket#617 - Validators: FocusOnError should focus on the first element of the page (Wei)
ENH: Add javascript references for "slider" and "dragdrop" for TClientScript::PradoScripts (Wei)
ENH: Added PatternModifiers property to TRegularExpressionValidator (Wei)
CHG: <div> tags are used instead of <span> when TDataList.RepeatLayout is Raw (Qiang)
CHG: changed comment tag to <!--- ... ---> (Qiang)
NEW: Active Record relationships (Wei)
NEW: New demos including "address-book", "blog-tutorial", "northwind-db", "chat", "currency-converter", "time-tracker". (Qiang, Wei)


Version 3.1.0 beta April 9, 2007
BUG: Ticket#278 - client-side validator enable/disable (conditional) (Wei)
BUG: Ticket#492 - TDataGridPagerStyle not found error (Qiang)
BUG: Ticket#500 - URL encode in callback (Wei)
BUG: Ticket#517 - Quickstart I18N sample: conflicting module ID (Wei)
BUG: Ticket#521 - comment tag on TActiveButton stop callback (Wei)
BUG: Ticket#526 - TDatePicker Mode="Button" with ActivePanel Enabled="false" (Wei)
BUG: Ticket#535 - TRadioButton->GroupName bug on callback (Wei)
BUG: Ticket#538 - TActiveListBox doesn't support optgroup (Wei)
BUG: Ticket#549 - set/get Timestamp on TDatePicker shound handle "null" values (Qiang)
BUG: Ticket#550 - explicitly include TCallbackClientSide in TCallbackOptions (Qiang)
BUG: Ticket#553 - I18N quickstart sample does not work (Qiang)
BUG: Ticket#555 - TNumberFormat throws exception (Qiang)
BUG: Ticket#557 - TAutoComplete is not fool-proof (Wei)
BUG: Ticket#560 - TActiveImageButton broken (Postback instead of Callback) (Wei)
BUG: Ticket#566 - <%[ tags (localize tags) missing escaping (Qiang)
BUG: Ticket#573 - NumberFormat Bug (Wei)
BUG: Ticket#579 - The rating list lost its Javascript in changeset [1775] (Wei).
BUG: Ticket#584 - Parameter names in TTranslate are case-insensitive (Qiang)
BUG: Ticket#585 - Can't validate TDatePicker with TActiveCustomValidator (Wei)
BUG: Ticket#586 - Default TPanel Button not working without validator (Wei)
BUG: TXmlElement did not encode attribute and text values when being saved as a string (Qiang)
BUG: SelectedIndices not return expected result for ActiveListBox (Wei)
ENH: Ticket#339 - TAutoComplete ID field [handled by the OnSuggestionSelected event] (Wei)
ENH: Ticket#367 - Change default extension for XLIFF files (Wei, changed to support .xlf extension).
ENH: Ticket#430 - clearing the validator errors (Wei)
ENH: Ticket#436 - update script.aculo.us to 1.6.4 (Wei, updated to v 1.7.1beta)
ENH: Ticket#482 - ADD TinyMCE 2.0.8 (Wei, TinyMCE 2.1 added)
ENH: Ticket#503 - Localization and parameter tags can now appear as a substring in a property initial value (Qiang)
ENH: Ticket#513 - Display last modified / revision in quickstart (Wei)
ENH: Ticket#519 - Update TActiveRecord implementation (Wei)
ENH: Ticket#537 - TActiveRecord Pk info ENH [usage: http://trac.pradosoft.com/prado/ticket/537] (Wei)
ENH: Ticket#561 - Powered by PRADO image to become an asset (Qiang)
ENH: Ticket#569 - Added TTextBox.PersistPassword property (Qiang)
ENH: Ticket#571 - Made TPage.ClientSupportsJavaScript property writable (Qiang)
ENH: Ticket#575 - Made TAuthManager.ReturnUrl property writable (Qiang)
ENH: Reduced ViewState size significantly by ignoring initial property values set in template (Qiang)
ENH: Added PRADO_CHMOD constant so that users can specify the permission of PRADO-created directories (Qiang)
ENH: Added Display property to TWebControl (Wei)
ENH: Added TUser.getState() and setState() for storing user session data (Qiang)
ENH: Added renderer feature to TRepeater, TDataList and TDataGrid (Qiang)
ENH: Added support to include external application configuration files (Qiang)
ENH: Added PRADO version info in PRADO-generated directories to avoid upgrading issue (Qiang)
ENH: Improved exception display with hyperlinked keywords (Qiang)
ENH: Improved exception display about template syntax error (Qiang)
CHG: Added getDataChanged() to IPostBackDataHandler (Qiang)
NEW: TShellApplication (Qiang)
NEW: TDbCache (Qiang)
NEW: TDbUserManager and TDbUser (Qiang)
NEW: Active Record driver for IBM DB2 (Cesar Ramos)
NEW: TActiveRecord Scaffold support (Wei)
NEW: TClientScriptLoader combines and loads javascript libraries (Wei)

Version 3.1.0 alpha January 15, 2007
BUG: Ticket#188 - Postback js caused controls not inheritable (Qiang)
ENH: Ticket#99 - TXmlTransform control (Knut)
ENH: Ticket#117 - added support to configure subproperties in a group. (Qiang)
ENH: Ticket#180, #222 - Prado js files are not rendered at the beginning of the form (Qiang)
CHG: Ticket#489 - Contents enclosed within HTML comment tags will now be parsed also (Qiang)
CHG: All validators ClientSide.OnSuccess becomes ClientSide.OnValidationSuccess, and OnSuccess event becomes OnValidationSuccess. (Wei)
CHG: All validators ClientSide.OnError becomes ClientSide.OnValidationError, and OnError event becomes OnValidationError. (Wei)
NEW: Ajax support and active controls (Wei)
NEW: Data abstraction layer based on PDO (Qiang)
NEW: SQLMap (Wei)
NEW: Added a new template comment tag <!-- ---> (Qiang)
NEW: TOutputCache (Qiang)
NEW: TQueue (Qiang)
NEW: TSessionPageStatePersister (Qiang)
NEW: TSoapService, TSoapServer (Knut, Qiang)
NEW: TFeedService, TRssFeedDocument (Knut, Qiang)
NEW: TJsonService
NEW: TCacheDependency, TFileCacheDependency, TDirectoryCacheDependency (Qiang)
NEW: TGlobalStateCacheDependency, TChainedCacheDependency, TApplicationStateCacheDependency (Qiang)

Version 3.0.7 April 2, 2007
BUG: Ticket#481 - Unable to cancel navigation when handling OnSideBarButtonClickEvent (Qiang)
BUG: typo in THttpResponse.writeFile() about sending headers (Qiang)
BUG: Ticket#505 - cultureInfo::getEnglishName does not return an arrary (Wei)
BUG: Ticket#508 - CultureInfo class: PHP Notice because of missing static declaration (Wei)
BUG: Ticket#558 - TRadionButtonList generates a empty onclick attribute (Qiang)
BUG: Ticket#573 - NumberFormat Bug (Wei)
BUG: Event handler specified via subproperty in template does not work (Qiang)
ENH: Ticket#367 - Change default extension for XLIFF files (Wei, changed to support .xlf extension).
ENH: Upgraded javascript library Prototype to version 1.5.0 (Wei)
ENH: Upgraded javascript library Scriptaculous to version 1.7.0 (Wei)
ENH: Upgraded TinyMCE editor to version 2.1 (Wei)

Version 3.0.6 December 4, 2006
BUG: Ticket#400 - TJavascriptLogger incompatible with Firefox 2.0 RC1 (Wei)
BUG: Ticket#442 - TPageService getBasePath in namespace form (Qiang)
BUG: Ticket#443 - Template comment tag messed up with HTML comment tag (Qiang)
BUG: Ticket#453 - I18N controls should accept UNIX timestamps (Wei)
BUG: Ticket#463	- TPhpErrorException: Non-static method DateTimeFormatInfo::getInstance() (Wei)
BUG: Ticket#467 - typo in TUrlMapping.php (Qiang)
BUG: Ticket#476 - Problem when adding a new text (translate) with MessageSource_XLIFF (Wei)
BUG: TTableCell should render &nbsp; only when Text is not set and there's no child (Qiang)
BUG: global state was not saved when redirect() is invoked (Qiang)
BUG: TPager would not display if it was invisible previously (Qiang)
ENH: Ticket#446 - Added TMetaTagCollection.getMetaTagByID method (Qiang)
ENH: Ticket#451 - Modified TUrlMapping to extend from TUrlManager (Qiang)
ENH: Ticket#468 - Added support of using all property tags in skins (Qiang)
ENH: Ticket#471 - Added methods in TAssetManager to expose published path and URL (Qiang)
ENH: Add ToggleKey for TJavascriptLogger (Wei)
CHG: Ticket#437 - __autoload is replaced by spl_autoload_register (Qiang)
CHG: Ticket#454 - Redundant PHP Version Check (Qiang)
CHG: Ticket#460 - Validators will not perform validation if parents are disabled (Qiang)
CHG: TDataGrid now does not set default table styles (Qiang)
CHG: TRepeater does not render <span> anymore for empty item template (Qiang)
CHG: THttpRequest.constructUrl() now encodes ampersand by default (Qiang)
CHG: TDataBoundControl will not throw exception if CurrentPageIndex is out of range (Qiang)
NEW: TUrlManager (Qiang)


Version 3.0.5 October 23, 2006
BUG: Ticket#409 - Multiple page services will mess up page caching (Qiang)
BUG: Ticket#417 - SelectedIndex in template incorrect caused by bug in TList (Qiang)
CHG: Ticket#358 - TFileUpload::saveAs() now returns false instead of exception when error (Qiang)
ENH: Ticket#361 - Introduced include template tag that supports including external templates (Qiang)
ENH: Ticket#366 - white spaces are now allowed around attribute names in template (Qiang)
ENH: Ticket#378 - PRADO applications can now run in command line (Qiang)
ENH: Ticket#379 - TAuthorizationRule performance enhancement (Qiang)
ENH: Ticket#382 - Untranslated messages can be marked now (Wei)
ENH: Ticket#394 - Enhancing TDropDownListColumn to allow specifying both text and value (Qiang)
ENH: Easier to customize the TDatePicker using CssClass (Wei)
ENH: Added an interactive PHP shell, usage: "prado-cli.php shell" (Wei)
NEW: TLiteralColumn (Qiang)
NEW: TUrlMapping (Wei)

Version 3.0.4 September 4, 2006
BUG: Fixed a bug that would prevent from using <prop:> tag in skins (Qiang)
BUG: Fixed a typo in TControl::setCustomData() (Qiang)
ENH: Ticket#336 - Speed up TSqliteCache with LIMIT SQL clause (Qiang)
ENH: Ticket#348 - Added THead.ShortcutIcon (Qiang)
ENH: Ticket#349 - Derived control classes now show trace logs when databinding (Qiang)
ENH: Ticket#357 - Added TListControl.DataGroupField to allow setting optgroup via databinding (Qiang)
ENH: TListControl.SelectedValues and SelectedIndices can now be set before databinding (Qiang)
ENH: Upgrade Scriptaculous javascript library to 1.6.2 (Wei)
ENH: Uses uncompressed javascript in debug mode. (Wei)
ENH: Cells in TDataGrid rows can now be accessed via the corresponding column IDs (Qiang)
ENH: Input controls in some datagrid columns can now be accessed in a named fashion (Qiang)
ENH: Prado::fatalError() now displays function parameter information (Qiang)
ENH: TEditCommandColumn now supports image buttons (Qiang)
CHG: Ticket#356 - TLabel will not render if its associated control is invisible (Qiang)
CHG: Validator the error message visibility before raising events OnError and OnSuccess (Wei)
CHG: Unify all client-side javascript event handler syntax. (Wei)
CHG: Added more conditions in the requirement checker (Qiang)
CHG: TControl::findControlsByType() now only returns objects of the specified type (Qiang)
CHG: Moved createdOnTemplate() and addParsedObject() from TControl to TComponent (Qiang)
NEW: TDateTimeStamp class for supporting time stamps outside 1970-2038 using float (Wei)
NEW: TDropDownListColumn (Qiang)
NEW: Added TEnumerable and all needed enumerable types (Qiang)


Version 3.0.3 August 6, 2006
BUG: Ticket#264 - Typos in some exception throw statements (Knut)
BUG: Ticket#268 - THttpResponse.redirect() may fail for some browsers (Qiang)
BUG: Ticket#271 - Page method setFocus doesn't work (Wei)
BUG: Ticket#285 - NumberFormat Rounding Bug (Wei)
BUG: Ticket#297 - THttpRequest::constructUrl() encoding bug about array GET parameters (Qiang)
BUG: Ticket#320 - Typo in calling TDataList::setSelectedItemIndex and a bug in inserting wizard steps (Qiang)
BUG: TDataGrid may complain getting ItemType on a non-object if the grid is not data-bound (Qiang)
BUG: TCheckBox.Value should be converted to string (Qiang)
BUG: Ticket#302 - TDatePicker's bug with AutoPostBack set to "true" (Wei)
BUG: Ticket#306 - Prado::localize function may fail when localized string passed as parameter (Wei)
BUG: Ticket#311 - Several bugs in TDatePicker (Wei)
BUG: Ticket#312 - TDatePicker's ReadOnly property bug (Wei)
CHG: Ticket#206 - TBaseValidator.OnValidate is raised only when the validator is visible (Qiang)
CHG: Raised PHP version requirement to 5.1 and above (Qiang)
ENH: Ticket#178 - Added TRadioButton.UniqueGroupName property (Qiang)
ENH: Ticket#220 - TClientScripts method to import custom javascript files (Wei)
ENH: Ticket#225 - TRadioButton::getRadioButtonsInGroup() added (Wei)
ENH: Ticket#223 - Use TRequiredFieldValidator for TRadioButtons with GroupName property (Wei)
ENH: StringLength, multi-byte, check in TRangeValidator (Wei)
ENH: Ticket#263 - TListBox and TDropDownList support optgroup now (Qiang)
ENH: Ticket#277 - Added TControl.CustomData property (Qiang)
ENH: Ticket#278 - client-side validator enable/disable (conditional) (Wei)
ENH: Ticket#287 - TControl::broadcastEvent() may raise events now (Qiang)
ENH: Ticket#292 - Added THttpRequest::parseUrl() so that it is easier to be extended (Qiang)
ENH: Ticket#309 - Added THttpRequest.UrlParamSeparator property (Qiang)
ENH: Ticket#313 - Added TTableStyle.BorderCollapse property (Qiang)
ENH: Ticket#316 - Added media type support to CSS files in a theme (Qiang)
ENH: Validating TDatePicker does not need to explictly specific the DateFormat in validators. (Wei)
ENH: TRequireFieldValidator can be used to validate a valid date (Wei).
NEW: Added TStyleSheet (Wei)


Version 3.0.2 July 2, 2006
BUG: Ticket#182 - List and validator controls cause problem in child classes (Qiang)
BUG: Ticket#191 - Duplicated postbacks occur when using TButton with validators (Qiang)
BUG: Ticket#207 - Validators ClientSide.OnError triggered twice (Wei)
BUG: Ticket#213 - PRADO Requirements Checker charset error (Qiang)
BUG: Ticket#227 - Enabled property doesn't works with THtmlArea (Wei)
BUG: Ticket#234 - Postback target could be out of date (Qiang)
BUG: Ticket#239 - Ondeactivate handler for the first View of MultiView is always fired (Qiang)
BUG: Ticket#244 - redirect() needs absolute URL (Qiang)
BUG: Ticket#245 - getIsSecureConnection() is not working correctly (Qiang)
BUG: Ticket#246 - TDatePicker wrong popup position in scrolled div (Wei)
BUG: Ticket#260 - Wrong value of a configuration option in setUseTransparentSessionID (Qiang)
CHG: ensureChildControls() is now invoked in TControl::initRecursive (Qiang)
CHG: Postback enabled control will always disable default client-side browser action. (Qiang)
CHG: CSS and JS files in a theme are now included in page in alphabetic order (Qiang)
ENH: Ticket#206 - Added OnValidate, OnError, OnSuccess events to validators (Qiang)
ENH: Ticket#230 - Added TDataList.EmptyTemplate property (Qiang)
ENH: Ticket#231 - Added TButton.ButtonType property to allow reset button (Qiang)
ENH: Ticket#232 - Allow <%# %> and <%= %> embedded within property values (Qiang)
ENH: Ticket#256 - Datagrid columns can now be accessed via IDs (Qiang)
ENH: Ticket#257 - OnSelectedIndexChanged event of TDataList and TDataGrid now passes the original command parameter (Qiang)
ENH: Ticket#262 - Added TCheckBox.Value property (Qiang)
ENH: TRepeater, TDataList and TDataGrid will store data indices in DataKeys if DataKeyField is not set. (Qiang)
ENH: Added TPageService.BasePageClass property (Qiang)
ENH: Added TDataGrid.EmptyTemplate property (Qiang)
ENH: Added paging feature to all TDataBoundControl-derived controls (Qiang)
ENH: ClientSide.ObserveChanges="false" to only revalidate client side validator when control changes (Wei)
NEW: Added TPager (Qiang)
NEW: Added Dreamweaver taglib extension (Stanislav, Qiang)
NEW: Prado Command line script to create a new project, see framework/prado-cli.php (Wei)

Version 3.0.1 June 4, 2006
BUG: Ticket#28 - OnClick does not work with Safari/KHTML (Wei)
BUG: Ticket#37 - Changes of config files do not trigger cache update (Qiang)
BUG: Ticket#44 - THtmlArea (tiny_mce) not working on some systems (Qiang)
BUG: Ticket#162 - Missing currency sign in TNumberFormat if Value is 0 (Wei)
BUG: Ticket#167 - TSecurityManager issues warning when trying to encrypt/decrypt strings (Qiang)
BUG: Ticket#169 - Validation of subclass of THtmlArea/TDatePicker fails (Wei)
BUG: Ticket#179 - CGI incompatibility causing clientscripts.php failure (Qiang)
BUG: Ticket#181 - Unable to change Content-Type in response header if charset is not set (Qiang)
BUG: Ticket#200 - onClick javascript event triggered twice on CheckBox label (Qiang)
BUG: newly created controls during postbacks might get their initial states reset during loadStateRecursive. (Qiang)
ENH: Ticket#150 - TDataGrid and TDataList now render table section tags (Qiang)
ENH: Ticket#152 - constituent parts of TWizard are exposed (Qiang)
ENH: Ticket#184 - added TUserManager.Users and Roles properties (Qiang)
ENH: Ticket#197 - sanity check for datagrid header and footer (Qiang)
ENH: added sanity check to calling event handlers (Qiang)
ENH: added search for quickstart tutorials (Wei)
ENH: added support to property tags for template owner control (Qiang)
ENH: added Bulgarian requirement checker messages (StanProg)
ENH: added TTheme.BaseUrl and TTheme.BasePath property (Qiang)
ENH: added TListControl.SelectedValues property (Qiang)
ENH: added TThemeManager.AvailableThemes property (Qiang)
ENH: refactored TUserManager and TAuthManager so that they are easier to be extended (Qiang)
ENH: template syntax now supports setting event handler via subproperties (Qiang)
CHG: Ticket#151 - URL format is modified to handle empty GET values (Qiang)
CHG: Ticket#153 - TAssetManager now ignores .svn directories (Qiang)
CHG: Changed TControl::onBubbleEvent() to TControl::bubbleEvent() (Qiang)
NEW: TTableHeaderRow, TTableFooterRow and table section support (Qiang)
NEW: TCompositeControl (Qiang)
NEW: TTextProcessor (Qiang)
NEW: TMarkdown (Wei)
NEW: Blog demo (Qiang)

Version 3.0.0 May 1, 2006
BUG: Ticket#68  - 2 TButtons with THtmlArea causes second button to fail to function (Wei)
BUG: Ticket#70  - Javascript for TDataTypeValidator added (Wei)
BUG: Ticket#131 - TImageMap and TLinkButton continue to postback even client validator fails (Wei)
BUG: Ticket#135 - TBrowserLogRoute reports wrong timings (Qiang)
BUG: Ticket#137 - The JavasciptLogger does not work (Qiang)
BUG: Ticket#138 - missing file in TDataGrid (Qiang)
BUG: Ticket#139 - TThemeManager::setBasePath() should understand an alias path (Qiang)
BUG: Non-control components can now use expressions in their properties (Qiang)
BUG: TControl.Visible did not make use of overriden getVisible() (Qiang)
BUG: TWizard did not stop navigation upon a validation failure (Qiang)
BUG: NumberFormat will now zero-fill numbers base on the pattern. (Wei)
ENH: TButton, TImageButton and TLinkButton now implement IButtonControl interface (Qiang)
ENH: TResponse::writeFile takes three additional parameters to allow sending memory data (Qiang)
ENH: TButtonColumn can now be a column of image buttons (Qiang)
ENH: TLiteral will display body content if Text is empty (Qiang)
ENH: Format string in classes extending TDataGridColumn can now evaluate an expression (Qiang)
ENH: Format string in classes extending TListControl can now evaluate an expression (Qiang)
ENH: Added THttpResponse::reload() (Qiang)
ENH: Custom visual effects can be added to client-side validators via ClientSide property in validators. (Wei)
ENH: TJavascript::encode() allows raw javascript code when string begins with "javascript:" (Wei)
ENH: Update TinyMCE to 2.0.5.1
CHG: Rewrote client-side javascript validators, check your client-side validation behaviour (Wei)
CHG: Updated the javascript Prototype library, a few utilties functions REMOVED, may break your existing javascript code. (Wei)
CHG: Build javascript without compression, only comments are removed. (Wei)
CHG: TDatePicker's date can be set using Date property, it value must be in same format as DateFormat, TimeStamp must be set as integer (wei)
CHG: TSimpleDateFormatter::parse() now return an integer or null on parse error (Wei)
CHG: TControl::createControls() is changed to public. (Qiang)
CHG: Template comment tag is changed from <! ... !> to <!-- ... --!> (Qiang)
NEW: TListControlValidator (Wei)
NEW: TClientScript (Wei)


Version 3.0RC2 April 16, 2006
BUG: Ticket#54 - recursive reverse() definition (Wei)
BUG: Ticket#93 - ValidationGroup not working in TImageMap for js validator (Wei)
BUG: Ticket#97 - Invalid return type value for TSimpleDateFormatter::parse (Wei)
BUG: Ticket#118 - Variables that may not have been initialized (Qiang)
BUG: Ticket#121 - OnClick don't fire with TImageButton and TRequiredFieldValidator (Wei)
BUG: Ticket#129 - TRadioButtonList in TWizard step does not postback correctly (Qiang)
CHG: Moved localize() into PradoBase (Qiang)
CHG: List controls now use array keys as list item values even if the array is integer-indexed (Qiang)
CHG: THttpUtility::htmlEncode and htmlDecode now do not deal with & (Qiang)
CHG: Expressions appeared in a template are evaluated in PreRender stage (Qiang)
CHG: The context of expressions appeared in a template is changed to the template control (Qiang)
ENH: Optimized the representation and evaluation of template expressions (Qiang)
ENH: Added Raw layout to TDataList (Qiang)
ENH: Added TRepeater.DataKeys and TRepeater.DataKeyField (Qiang)

Version 3.0RC1 April 5, 2006
BUG: Ticket#85 - Undefined TDataGrid::setSelectedIndex (Qiang)
BUG: Ticket#87 - Typo in IDbConnection (Qiang)
BUG: Ticket#88 - Unclosed HTML tag in TDatePicker and TColorPicker (Qiang)
BUG: Ticket#89 - TInlineFrame::ScrollBars wrong behaviour expected (Qiang)
BUG: Ticket#95 - Typo in TTemplateControl::registerContentPlaceHolder (Qiang)
BUG: Ticket#103 - Typo in TStyle::setVerticalAlign (Qiang)
BUG: Ticket#107 - ListControls not respect parent disabling (Qiang)
BUG: SF#1432624 - Incorrect documentation about caching expiry (Qiang)
BUG: SF#1446846 - Typo in THead (Qiang)
BUG: THttpSession fails when user storage module is used (Qiang)
CHG: TTextHighlighter.EnableCopyCode defaults to false (Qiang)
CHG: Reorganized quickstart tutorial demo, added new sections (Qiang)
CHG: Reorganized folders under framework (Qiang)
CHG: Modified THtmlArea default toolbar and size. (Qiang)
CHG: Pagers in TDataGrid are now enclosed within panels (Qiang)
ENH: Ticket#92 - Support for user exception message file (Qiang)
ENH: Ticket#106 - Support for validation on THiddenField (Qiang)
ENH: Ticket#110 - Support for TVarDump with syntax highlight (Qiang)
ENH: TDataFieldAccessor can access public class variables (Qiang)
ENH: TPhpErrorException now shows the actual error lines (Qiang)
ENH: Refactored cache classes with support for cache dependency (Qiang)
NEW: TStack component (Qiang)
NEW: TImageMap control (Qiang)
NEW: TWizard control (Qiang)
NEW: TVarDumper and PradoBase::varDump() (Qiang)
NEW: TComponentReflection (Qiang)
NEW: TParameterModule (Qiang)
NEW: TPropelLogRoute (Jason)

Version 3.0b March 6, 2006
BUG: fixed many
CHG: event names must be prefixed with 'On' (Qiang)
CHG: values of properties whose name ends with 'Template' are parsed directly by template parser (Qiang)
ENH: template parser reports exact error location (Qiang)
ENH: cookie HMAC check (Qiang)
NEW: TInlineFrame (Jason)
NEW: TAPCCache (Alban)
NEW: TColorPicker, TDatePicker, TRatingList, TAdodbProvider, TCreoleProvider (Wei)
NEW: TMultiView, TView, TControlAdapter, TWebControlAdapter, TPagedList, TAttributeCollection (Qiang)

Version 3.0a January 18, 2006
Starting, main feaures ready (Qiang)