Upgrading Instructions for PRADO Framework v3.1.2 ================================================= !!!IMPORTANT!!! The following upgrading instructions are cumulative. That is, if you want to upgrade from version A to version C and there is version B between A and C, you need to following the instructions for both A and B. Upgrading from v3.1.1 --------------------- - The RELATIONS type declaration in Active Record classes for Many-to-Many using an association table was change from "self::HAS_MANY" to "self::MANY_TO_MANY". E.g. change 'albums' => array(self::HAS_MANY, 'Artist', 'album_artists') to 'albums' => array(self::MANY_TO_MANY, 'Artist', 'album_artists') - Active Record no longer automatically adds/removes/updates related objects. Upgrading from v3.1.0 --------------------- - The RELATIONS declaration in Acive Record classes is changed from "protected static $RELATIONS" to "public static $RELATIONS". - IFeedContentProvider adds a new method: getContentType(). This affects any class implementing this interface. - TUrlMapping now only uses the PATH_INFO part of URL for matching, and the matching is for the whole PATH_INFO. - IUserManager adds two new methods: getUserFromCookie() and saveUserToCookie(). This affects classes that implements this interface and does not extend from TUserManager. - The order of application lifecycles is changed. The loadState and loadStateComplete are moved to right after onBeginRequest. - TDropDownList will be in an unselected state if no initial selection is specified. That is, its SelectedIndex will be -1. Previously, the first item will be considered as selected. Upgrading from v3.1b -------------------- - Comment tag <!-- ... ---> (introduced in v3.1a) is changed to <!--- ... ---> - When TDataList.RepeatLayout is Raw, the items will render <div> instead of <span> - TActiveRecord finder methods will always return a new object instance (identity mapping was removed). - TActiveRecord::findBySql() will return an object rather than an array - TActiveRecord::findAllBySql() will return an array of objects. Upgrading from v3.1a --------------------- - The signature of TActiveRecord::finder() is changed. This affects all TActiveRecord-descendant classes that override this method. Please use the following code to override the method: public static function finder($className=__CLASS__) { return parent::finder($className); } - The way to specify the table name for an active record class is changed. Previously, it used the static class member '_tablename'. Now it uses class constant as follows: class UserRecord extends TActiveRecord { const TABLE='users_table'; } - Changed TActiveRatingList's javascript control class name from "Prado.WebUI.TRatingList" to "Prado.WebUI.TActiveRatingList". - PRADO's javascript library locations moved from Web/Javascripts/xxx to Web/Javascripts/source/xxx - IPostBackDataHandler added a new method getDataChanged(). Any control implementing this interface will be required to implement this new method. Upgrading from v3.0.x --------------------- - Validators ClientSide.OnSuccess becomes ClientSide.OnValidationSuccess, - Validators ClientSide.OnError becomes ClientSide.OnValidationError, - Validator OnSuccess event becomes OnValidationSuccess. - Validator OnError event becomes OnValidationError. - Content enclosed in <!-- --> is now parsed as normal template content. Previously, it was not parsed and was rendered as is. Upgrading from v3.0.7 --------------------- Upgrading from v3.0.6 --------------------- Upgrading from v3.0.5 --------------------- - TRepeater does not render <span> anymore for empty item template. - constructUrl() now encodes ampersand by default. This should have minimal impact on any existing PRADO applications, though. - TDataGrid does not generate default table styles. This may affect the appearance of existing PRADO applications that use TDataGrid. - If TUrlMapping is used, you need to set the UrlManager property of THttpRequest to the module ID of TUrlMapping. - TJavascriptLogger toggle key is changed from ALT-D to ALT-J. Use the ToggleKey property chanage to a different key. - Javascript Library rico was REMOVED. Upgrading from v3.0.4 --------------------- - TFileUpload::saveAs() will return false instead of raising an exception if it encounters any error. - TDropDownListColumn.DataField is renamed to DataTextField and DataFormatString is renamed to DataTextFormatString. A new property named DataValueField is added. Upgrading from v3.0.3 --------------------- - The 'Static' value is changed to 'Fixed' for the Display property of all validators as well as TValidationSummary, due to conflict with PHP keywords. - The 'List' value is changed to 'SimpleList' for TValidationSummary.DisplayMode. - The 'List' value is changed to 'DropDownList' for TPager.Mode - This change affects existing client-side javascript handlers such as <com:TRequiredFieldValidator ClientSide.OnSuccess="xxx" /> All ClientSide javascript event handlers (such as ClientSide.OnSuccess) are by default wrapped within the function block. function(sender, parameter){ // handler code } You may override this behaviour by providing your own javascript statement block as "javascript:MyHandlerFunction", e.g. ClientSide.OnSuccess="javascript:MyHandlerFunction" or ClientSide.OnSuccess="javascript:function(validator,sender){ ... }" Upgrading from v3.0.2 --------------------- - The minimum PHP version required is raised to 5.1.0 and above. If your server is installed with a lower version of PHP, you will have to upgrade it in order to run PRADO applications. - The signature of TControl::broadcastEvent() is changed from broadcastEvent($sender,TBroadCastEventParameter $param) to broadcastEvent($name,$sender,$param). This makes the call to broadcastEvent() to be consistent with raiseEvent(). Upgrading from v3.0.1 --------------------- - Postback enabled control will always disable default client-side browser action. This is due to google toolbar's interference of event stopping scheme. This modification should only affect user-derived postback javascripts. Upgrading from v3.0.0 --------------------- - URL format is modified when THttpRequest.UrlFormat=='Path'. This modification affects both the URLs generated by calling constructUrl() and the URLs understood by PRADO. In particular, PRADO now understands the following URL format: /index.php/ServiceID,ServiceParam/Name1,Value1/Name2,Value2/... In v3.0.0, the above URL is written as: /index.php/ServiceID/ServiceParam/Name1/Value1/Name2/Value2/... - TControl::onBubbleEvent() has been changed to TControl::bubbleEvent(). This change only affects user controls that override this method. Upgrading from v2.x and v1.x ---------------------------- PRADO v3.x is not backward compatible with v2.x and v1.x.