Version 3.1.0 To be released ============================ 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: 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: TOutputCache (Qiang) NEW: TQueue (Qiang) NEW: TSessionPageStatePersister (Qiang) NEW: TFeedService, TRssFeedDocument (Knut, Qiang) NEW: TJsonService NEW: TCacheDependency, TFileCacheDependency, TDirectoryCacheDependency, TGlobalStateCacheDependency, TChainedCacheDependency Version 3.0.6 December 4, 2006 ============================== BUG: Ticket#442 - TPageService getBasePath in namespace form (Qiang) BUG: Ticket#443 - Template comment tag messed up with HTML comment tag (Qiang) BUG: Ticket#467 - typo in TUrlMapping.php (Qiang) BUG: TTableCell should render   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) 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 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 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)