diff --git a/.gitignore b/.gitignore
index 74d0692e5..3621397c5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,28 +1,14 @@
/.buildpath
/.idea
+/.php_cs.cache
atlassian-ide-plugin.xml
/.project
-/assets
/.settings
/.cache
/build
/vendor
/composer.lock
/.cache
-buildscripts/chmbuilder/classes/Data/classes.data
-buildscripts/classtree/Configuration
-buildscripts/classtree/PRADO.mxi
-buildscripts/texbuilder/quickstart/*.aux
-buildscripts/texbuilder/quickstart/*.png
-buildscripts/texbuilder/quickstart/*.tex
-buildscripts/texbuilder/quickstart/quickstart.log
-buildscripts/texbuilder/quickstart/quickstart.out
-buildscripts/texbuilder/quickstart/quickstart.toc
-demos/quickstart/.cache
-demos/quickstart/.project
-demos/quickstart/.settings
-demos/blog/protected/Data/Blog.db
-demos/chat/protected/App_Code/chat.db
tests/FunctionalTests/results.dat
tests/unit/Data/db/test.db
diff --git a/HISTORY b/HISTORY.md
similarity index 98%
rename from HISTORY
rename to HISTORY.md
index d7d9a4726..7974f97a6 100644
--- a/HISTORY
+++ b/HISTORY.md
@@ -1,4 +1,4 @@
-Version 4.0.1 - in development
+## Version 4.0.1 - in development
CHG: Removed all deprecated code (ctrlaltca)
CHG: Removed deprecated components based on the prototype jajascript library (ctrlaltca)
@@ -9,14 +9,14 @@ ENH: Added html5 charset attribute to meta (frkinta)
BUG: Issue #662 - External links to API manual doesn't work anymore (frkinta)
BUG: Issue #663 - PHP 7.2 warning messages break active controls (ctrlaltca)
-Version 3.3.3 Jan 25, 2018
+## Version 3.3.3 Jan 25, 2018
Backported fixes from master branch:
BUG: Issue #625 - The url tag produce an extra directory separator before the result (ctrlaltca)
BUG: Issue #610 - IIS: Page redirect dosn't work (ctrlaltca)
BUG: Issue #648 - Fix status header in cgi/fpm mode (ctrlaltca)
-Version 4.0.0 - November 20, 2017
+## Version 4.0.0 - November 20, 2017
CHG: Add native php namespace support on all classes (ctrlaltca, david0, LCSKJ)
CHG: Add native composer autoloader support (ctrlaltca, david0, LCSKJ)
@@ -35,7 +35,7 @@ ENH: Added two new cache modules based on key-value stores: Redis and etcd (LCSK
ENH: Issue #93 - Translation storage in php array (ctrlaltca)
ENH: Issue #139 - Add support for xdebug (ctrlaltca)
-Version 3.3.2 August 23, 2016
+## Version 3.3.2 August 23, 2016
BUG: Issue #592 - Fix TActiveMultiView broken on 3.3.1 (ctrlaltca)
BUG: Issue #588 - Fix reading values of controls inside TJuiDialog (ctrlaltca)
@@ -48,7 +48,7 @@ ENH: Issue #591 - Support for hyphenated attributes via templa
ENH: Issue #594 - Added ability to check for subcontrols using isset(), empty() (jojoinside)
ENH: Allow TStyle behaviors (LCSKJ)
-Version 3.3.1 April 19, 2016
+## Version 3.3.1 April 19, 2016
BUG: Issue #540 - Fix TActiveFileUpload on IE11 (ctrlaltca)
BUG: Issue #574 - Fix TActiveCustomValidator validation after error (ctrlaltca)
@@ -71,7 +71,7 @@ ENH: Intercept fatal errors using register_shutdown_function (ctrlaltca)
ENH: Activecontrols: avoid updating client side if the value didn't change (ctrlaltca)
ENH: Added TReCaptcha2 / TReCaptcha2Validator (camilohaze)
-Version 3.3.0 February 15, 2016
+## Version 3.3.0 February 15, 2016
CHG: Added jQuery and rebased PRADO's effect and controls on it (ctrlaltca)
ENH: Added jQueryUI and created new controls (ctrlaltca)
@@ -88,7 +88,7 @@ BUG: Issue #539 - Status Code not send when throwing a THttpException (ctrlaltca
BUG: Issues #528, 538 - Fix errors in Prado.Validation.validateControl (majuca, david0)
ENH: Issue #559 - Add support for memcached (majuca)
-Version 3.2.4 Aug 26, 2014
+## Version 3.2.4 Aug 26, 2014
BUG: Issue #492 - Prado generates json_error when encoding an exception with non UTF-8 data (david0)
ENH: Issue #494 - Adding toArray() and toJSON() to TActiveRecord (dmarko484)
@@ -115,7 +115,7 @@ BUG: Avoid dependency loop between TRadioButton and TRadioButtonList (ctrlaltca)
ENH: Dropped Markdown for Parsedown (ctrlaltca)
ENH: Web site administration tool (WSAT) (Daniel Sampedro)
-Version 3.2.3 Nov 26, 2013
+## Version 3.2.3 Nov 26, 2013
BUG: Issue #467 - TSafeHtml error on php 5.5 (ctrlaltca)
BUG: Issue #470 - Problem escaping characters in TActiveDropDownList (ctrlaltca)
@@ -137,7 +137,7 @@ BUG: TDatePicker can't render css attributes class "datepicker_year_options" (m_
ENH: Added THtmlArea4 based on TinyMCE4 (ctrlaltca)
BUG: TDatePicker renders a spurious TTextBox (ctrlaltca)
-Version 3.2.2 Jul 20, 2013
+## Version 3.2.2 Jul 20, 2013
ENH: Issue #50 - TUrlMapping - implement caching for loadUrlMappings (ctrlaltca)
ENH: Issue #433 - Prado object-creation performance micro-optimizations (gabor)
@@ -161,7 +161,7 @@ ENH: Issue #451 - TRequiredFieldValidator should (automatically?) consider Promp
BUG: Issue #460 - Minor error in TUrlMappingPattern (raoul@bhatia.at)
BUG: Issue #464 - Do not issue a callback request if an ActiveControl is disabled (ctrlaltca)
-Version 3.2.1 Jan 19, 2013
+## Version 3.2.1 Jan 19, 2013
BUG: Issue #44 - [895] SDateFormatter cannot parse date earlier than 1970 (ctrlaltca)
ENH: Issue #180 - Integrate XMLRPC web service (rojaro)
@@ -191,7 +191,7 @@ 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
+## 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)
@@ -278,7 +278,7 @@ BUG: Issue #407 - Prado does not allow custom SqlMap data caching strategy/metho
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
+## 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)
@@ -289,7 +289,7 @@ 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
+## 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)
@@ -303,7 +303,7 @@ NEW: Added TActiveRepeater control (LCS Team, Christophe)
NEW: Add TActiveTableRow (LCS Team)
NEW: Add TActiveTableCell (LCS Team)
-Version 3.1.8 May 29, 2011
+## 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)
@@ -347,7 +347,7 @@ ENH: Issue#264 - Prado wasting CPU by using ArrayAccess and IteratorAggregate in
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
+## 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)
@@ -384,7 +384,7 @@ 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
+## 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)
@@ -404,7 +404,7 @@ 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
+## 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)
@@ -448,7 +448,7 @@ ENH: TBrowserLogRoute: add table-layout:auto and explicit set column with to avo
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
+## 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)
@@ -469,7 +469,7 @@ 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
+## 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)
@@ -529,7 +529,7 @@ NEW: Ticket#857 - Added Authentication expiration support to TAuthManager (Micha
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
+## 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)
@@ -587,7 +587,7 @@ 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
+## 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)
@@ -630,7 +630,7 @@ 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
+## 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)
@@ -658,7 +658,7 @@ ENH: Added TAuthManager.ReturnUrlVarName property (Qiang)
ENH: Added TPageService.DefaultPageUrl property (Qiang)
NEW: TActiveHiddenField (Carl)
-Version 3.1.0 RC May 14, 2007
+## 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)
@@ -687,7 +687,7 @@ 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
+## 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)
@@ -740,7 +740,7 @@ 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
+## 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)
@@ -761,7 +761,7 @@ NEW: TJsonService
NEW: TCacheDependency, TFileCacheDependency, TDirectoryCacheDependency (Qiang)
NEW: TGlobalStateCacheDependency, TChainedCacheDependency, TApplicationStateCacheDependency (Qiang)
-Version 3.0.7 April 2, 2007
+## 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)
@@ -774,7 +774,7 @@ 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
+## 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)
@@ -800,7 +800,7 @@ CHG: TDataBoundControl will not throw exception if CurrentPageIndex is out of ra
NEW: TUrlManager (Qiang)
-Version 3.0.5 October 23, 2006
+## 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)
@@ -815,7 +815,7 @@ 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
+## 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)
@@ -840,7 +840,7 @@ NEW: TDropDownListColumn (Qiang)
NEW: Added TEnumerable and all needed enumerable types (Qiang)
-Version 3.0.3 August 6, 2006
+## 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)
@@ -873,7 +873,7 @@ ENH: TRequireFieldValidator can be used to validate a valid date (Wei).
NEW: Added TStyleSheet (Wei)
-Version 3.0.2 July 2, 2006
+## 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)
@@ -904,7 +904,7 @@ 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
+## 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)
@@ -937,7 +937,7 @@ NEW: TTextProcessor (Qiang)
NEW: TMarkdown (Wei)
NEW: Blog demo (Qiang)
-Version 3.0.0 May 1, 2006
+## 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)
@@ -970,7 +970,7 @@ NEW: TListControlValidator (Wei)
NEW: TClientScript (Wei)
-Version 3.0RC2 April 16, 2006
+## 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)
@@ -986,7 +986,7 @@ 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
+## 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)
@@ -1016,7 +1016,7 @@ NEW: TComponentReflection (Qiang)
NEW: TParameterModule (Qiang)
NEW: TPropelLogRoute (Jason)
-Version 3.0b March 6, 2006
+## 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)
@@ -1027,5 +1027,5 @@ NEW: TAPCCache (Alban)
NEW: TColorPicker, TDatePicker, TRatingList, TAdodbProvider, TCreoleProvider (Wei)
NEW: TMultiView, TView, TControlAdapter, TWebControlAdapter, TPagedList, TAttributeCollection (Qiang)
-Version 3.0a January 18, 2006
+## Version 3.0a January 18, 2006
Starting, main feaures ready (Qiang)
diff --git a/README.md b/README.md
index d4736d694..47dcf51d8 100644
--- a/README.md
+++ b/README.md
@@ -28,7 +28,7 @@ mv composer.phar /usr/local/bin/composer
```
Then, create the application structure using composer:
-```sh
+```sh
composer create-project pradosoft/prado-app app
```
diff --git a/UPGRADE b/UPGRADE.md
similarity index 99%
rename from UPGRADE
rename to UPGRADE.md
index 7c798e35c..8ed0eabfd 100644
--- a/UPGRADE
+++ b/UPGRADE.md
@@ -1,8 +1,6 @@
+# Upgrading Instructions for PRADO Framework v4.0
- Upgrading Instructions for PRADO Framework v4.0
- =================================================
-
-!!!IMPORTANT!!!
+### !!!IMPORTANT!!!
The following upgrading instructions are cumulative. That is,
if you want to upgrade from version A to version C and there is