summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorctrlaltca <ctrlaltca@gmail.com>2014-08-26 16:59:21 +0200
committerctrlaltca <ctrlaltca@gmail.com>2014-08-26 16:59:21 +0200
commit74b31be9515eddfa63005d6760614badfaba9fea (patch)
tree47c952901dcb5eccd6dd8b7c6ee7e0b6bf176510
parent2b11341614ac4a15be697fa8acad07055154ac54 (diff)
parent0c5026b55cde5c104f10686afd8b441568175d38 (diff)
Merge pull request #530 from pradosoft/prado-3.2.43.2.4prado-3.2
Backports for Prado 3.2.4
-rw-r--r--.gitignore3
-rw-r--r--.travis.yml5
-rw-r--r--COPYRIGHT2
-rw-r--r--HISTORY27
-rw-r--r--README.md2
-rw-r--r--UPGRADE6
-rwxr-xr-xbin/prado-cli.php22
-rw-r--r--build.xml2
-rw-r--r--buildscripts/apigen/pradosoft/@layout.latte2
-rw-r--r--buildscripts/classtree/DWExtension.php1
-rw-r--r--buildscripts/index/build.php2
-rw-r--r--buildscripts/index/quickstart_index.php1
-rw-r--r--buildscripts/index/search.php4
-rw-r--r--buildscripts/phing/tasks/PradoPearTask.php2
-rw-r--r--buildscripts/phpbuilder/build.php2
-rw-r--r--buildscripts/setup.php39
-rw-r--r--buildscripts/texbuilder/Page2Tex.php2
-rw-r--r--buildscripts/texbuilder/quickstart/build.php3
-rw-r--r--buildscripts/texbuilder/quickstart/pages.php16
-rw-r--r--buildscripts/texbuilder/quickstart/quickstart.tex6
-rw-r--r--buildscripts/texbuilder/sqlmap/build.php3
-rw-r--r--buildscripts/texbuilder/sqlmap/pages.php2
-rw-r--r--buildscripts/texbuilder/time-tracker/pages.php2
-rw-r--r--composer.json12
-rwxr-xr-xdemos/blog-tutorial/protected/pages/Day1/CreateContact.page31
-rwxr-xr-xdemos/blog-tutorial/protected/pages/Day1/Setup.page5
-rwxr-xr-xdemos/blog-tutorial/protected/pages/Day1/ShareLayout.page2
-rwxr-xr-xdemos/blog-tutorial/protected/pages/Day1/fr/CreateContact.page33
-rwxr-xr-xdemos/blog-tutorial/protected/pages/Day1/fr/Setup.page7
-rwxr-xr-xdemos/blog-tutorial/protected/pages/Day1/fr/ShareLayout.page4
-rwxr-xr-xdemos/blog-tutorial/protected/pages/Day1/id/CreateContact.page31
-rwxr-xr-xdemos/blog-tutorial/protected/pages/Day1/id/Setup.page5
-rwxr-xr-xdemos/blog-tutorial/protected/pages/Day1/id/ShareLayout.page2
-rw-r--r--[-rwxr-xr-x]demos/blog-tutorial/protected/pages/Day2/CreateAR.page303
-rw-r--r--demos/blog-tutorial/protected/pages/Day2/blog_wsat_generate_ar.pngbin0 -> 69184 bytes
-rw-r--r--demos/blog-tutorial/protected/pages/Day2/wsat_login.pngbin0 -> 47951 bytes
-rwxr-xr-xdemos/blog/protected/Common/BlogDataModule.php7
-rwxr-xr-xdemos/blog/protected/Common/BlogErrorHandler.php1
-rwxr-xr-xdemos/blog/protected/Common/BlogException.php1
-rwxr-xr-xdemos/blog/protected/Common/BlogPage.php1
-rwxr-xr-xdemos/blog/protected/Common/BlogUser.php1
-rwxr-xr-xdemos/blog/protected/Common/BlogUserManager.php1
-rwxr-xr-xdemos/blog/protected/Common/XListMenu.php1
-rwxr-xr-xdemos/blog/protected/Layouts/MainLayout.php1
-rwxr-xr-xdemos/blog/protected/Pages/Admin/AdminMenu.php1
-rwxr-xr-xdemos/blog/protected/Pages/Admin/ConfigMan.php1
-rwxr-xr-xdemos/blog/protected/Pages/Admin/PostMan.php1
-rwxr-xr-xdemos/blog/protected/Pages/Admin/UserMan.php1
-rwxr-xr-xdemos/blog/protected/Pages/ErrorReport.php1
-rwxr-xr-xdemos/blog/protected/Pages/Posts/EditCategory.php1
-rwxr-xr-xdemos/blog/protected/Pages/Posts/EditPost.php1
-rwxr-xr-xdemos/blog/protected/Pages/Posts/ListPost.php1
-rwxr-xr-xdemos/blog/protected/Pages/Posts/MyPost.php1
-rwxr-xr-xdemos/blog/protected/Pages/Posts/NewCategory.php1
-rwxr-xr-xdemos/blog/protected/Pages/Posts/NewPost.php1
-rwxr-xr-xdemos/blog/protected/Pages/Posts/ViewPost.php1
-rwxr-xr-xdemos/blog/protected/Pages/Users/EditUser.php1
-rwxr-xr-xdemos/blog/protected/Pages/Users/NewUser.php1
-rwxr-xr-xdemos/blog/protected/Pages/Users/ViewUser.php1
-rwxr-xr-xdemos/blog/protected/Portlets/AccountPortlet.php1
-rwxr-xr-xdemos/blog/protected/Portlets/ArchivePortlet.php1
-rwxr-xr-xdemos/blog/protected/Portlets/CategoryPortlet.php1
-rwxr-xr-xdemos/blog/protected/Portlets/CommentPortlet.php1
-rwxr-xr-xdemos/blog/protected/Portlets/LoginPortlet.php1
-rwxr-xr-xdemos/blog/protected/Portlets/Portlet.php1
-rwxr-xr-xdemos/blog/protected/Portlets/SearchPortlet.php1
-rwxr-xr-xdemos/chat/protected/pages/Home.page9
-rwxr-xr-xdemos/quickstart/protected/controls/Layout.tpl2
-rwxr-xr-xdemos/quickstart/protected/controls/SampleLayout.tpl2
-rwxr-xr-xdemos/quickstart/protected/controls/TopicList.tpl8
-rwxr-xr-xdemos/quickstart/protected/controls/es/SampleLayout.tpl2
-rwxr-xr-xdemos/quickstart/protected/controls/es/TopicList.tpl7
-rwxr-xr-xdemos/quickstart/protected/controls/fr/SampleLayout.tpl2
-rwxr-xr-xdemos/quickstart/protected/controls/fr/TopicList.tpl5
-rwxr-xr-xdemos/quickstart/protected/controls/id/TopicList.tpl5
-rwxr-xr-xdemos/quickstart/protected/controls/ja/TopicList.tpl5
-rwxr-xr-xdemos/quickstart/protected/controls/pl/TopicList.tpl6
-rwxr-xr-xdemos/quickstart/protected/controls/zh/TopicList.tpl5
-rwxr-xr-xdemos/quickstart/protected/pages/ActiveControls/ActiveButton.page66
-rwxr-xr-xdemos/quickstart/protected/pages/ActiveControls/Home.page93
-rwxr-xr-xdemos/quickstart/protected/pages/ActiveControls/Introduction.page203
-rwxr-xr-xdemos/quickstart/protected/pages/ActiveControls/Samples/TActiveButton/Home.page1
-rwxr-xr-xdemos/quickstart/protected/pages/ActiveControls/Samples/TActiveCheckBox/Home.page1
-rwxr-xr-xdemos/quickstart/protected/pages/ActiveControls/Samples/TActiveCustomValidator/Home.page1
-rwxr-xr-xdemos/quickstart/protected/pages/ActiveControls/Samples/TActiveHyperLink/Home.page1
-rwxr-xr-xdemos/quickstart/protected/pages/ActiveControls/Samples/TActivePager/Home.page18
-rwxr-xr-xdemos/quickstart/protected/pages/ActiveControls/Samples/TActivePanel/Home.page1
-rwxr-xr-xdemos/quickstart/protected/pages/ActiveControls/Samples/TActiveTableRow/Home.page1
-rwxr-xr-xdemos/quickstart/protected/pages/ActiveControls/Samples/TCallbackClientScript/Home.page35
-rwxr-xr-xdemos/quickstart/protected/pages/ActiveControls/Samples/TCallbackClientScript/Home.php39
-rwxr-xr-xdemos/quickstart/protected/pages/ActiveControls/Samples/TCallbackClientSide/Home.page1
-rwxr-xr-xdemos/quickstart/protected/pages/ActiveControls/Samples/TCallbackOptions/Home.page1
-rwxr-xr-xdemos/quickstart/protected/pages/Advanced/Error.page2
-rwxr-xr-xdemos/quickstart/protected/pages/Advanced/Samples/I18N/LanguageList.php6
-rwxr-xr-xdemos/quickstart/protected/pages/Configurations/Templates1.page2
-rwxr-xr-xdemos/quickstart/protected/pages/Controls/Data.page6
-rwxr-xr-xdemos/quickstart/protected/pages/Controls/HtmlArea4.page2
-rw-r--r--demos/quickstart/protected/pages/Controls/Markdown.page40
-rwxr-xr-xdemos/quickstart/protected/pages/Controls/NewControl.page2
-rwxr-xr-xdemos/quickstart/protected/pages/Controls/Samples/TConditional/Home.page4
-rwxr-xr-xdemos/quickstart/protected/pages/Controls/Samples/THtmlArea/Home.page8
-rwxr-xr-xdemos/quickstart/protected/pages/Controls/Samples/THtmlArea4/Home.page8
-rwxr-xr-xdemos/quickstart/protected/pages/Controls/Samples/TMarkdown/Home.page31
-rwxr-xr-xdemos/quickstart/protected/pages/Controls/Samples/TPanel/Home.page1
-rwxr-xr-xdemos/quickstart/protected/pages/Controls/Samples/TTextHighlighter/Home.page1
-rwxr-xr-xdemos/quickstart/protected/pages/Controls/Standard.page8
-rwxr-xr-xdemos/quickstart/protected/pages/Controls/TextHighlighter.page1
-rwxr-xr-xdemos/quickstart/protected/pages/Controls/id/NewControl.page2
-rwxr-xr-xdemos/quickstart/protected/pages/Controls/id/TextHighlighter.page1
-rwxr-xr-xdemos/quickstart/protected/pages/Database/ActiveRecord.page6
-rwxr-xr-xdemos/quickstart/protected/pages/Database/id/ActiveRecord.page140
-rwxr-xr-xdemos/quickstart/protected/pages/Database/pl/ActiveRecord.page66
-rwxr-xr-xdemos/quickstart/protected/pages/Fundamentals/Applications.page4
-rwxr-xr-xdemos/quickstart/protected/pages/Fundamentals/Architecture.page25
-rwxr-xr-xdemos/quickstart/protected/pages/Fundamentals/Components.page360
-rwxr-xr-xdemos/quickstart/protected/pages/Fundamentals/Components1.page157
-rw-r--r--demos/quickstart/protected/pages/Fundamentals/Components2.page207
-rwxr-xr-xdemos/quickstart/protected/pages/Fundamentals/Pages.page16
-rwxr-xr-xdemos/quickstart/protected/pages/Fundamentals/Services.page5
-rwxr-xr-xdemos/quickstart/protected/pages/GettingStarted/AboutPrado.page10
-rwxr-xr-xdemos/quickstart/protected/pages/GettingStarted/CommandLine.page48
-rwxr-xr-xdemos/quickstart/protected/pages/GettingStarted/HelloWorld.page2
-rwxr-xr-xdemos/quickstart/protected/pages/GettingStarted/Installation.page41
-rwxr-xr-xdemos/quickstart/protected/pages/GettingStarted/NewFeatures.page7
-rw-r--r--demos/quickstart/protected/pages/GettingStarted/Wsat.page64
-rw-r--r--demos/quickstart/protected/pages/GettingStarted/wsat_generate_ar.pngbin0 -> 75503 bytes
-rw-r--r--demos/quickstart/protected/pages/GettingStarted/wsat_login.pngbin0 -> 47951 bytes
-rwxr-xr-xdemos/quickstart/protected/pages/Tutorial/AddressBook.page9
-rwxr-xr-xdemos/quickstart/protected/pages/Tutorial/AjaxChat.page8
-rwxr-xr-xdemos/quickstart/protected/pages/Tutorial/CurrencyConverter.page63
-rwxr-xr-xdemos/quickstart/protected/pages/Tutorial/fr/AjaxChat.page6
-rwxr-xr-xdemos/quickstart/protected/pages/Tutorial/fr/CurrencyConverter.page63
-rwxr-xr-xdemos/quickstart/protected/pages/Tutorial/id/AjaxChat.page1
-rwxr-xr-xdemos/quickstart/protected/pages/Tutorial/id/CurrencyConverter.page73
-rwxr-xr-xdemos/sqlmap/protected/pages/Manual/Tutorial/TestFirst.page7
-rwxr-xr-xdemos/sqlmap/protected/pages/Manual/Tutorial/TestSecond.page2
-rwxr-xr-xdemos/time-tracker/protected/App_Code/Dao/BaseDao.php2
-rwxr-xr-xdemos/time-tracker/protected/App_Code/Dao/ProjectDao.php2
-rwxr-xr-xdemos/time-tracker/protected/App_Code/Dao/ProjectRecord.php2
-rwxr-xr-xdemos/time-tracker/protected/App_Code/Dao/UserDao.php2
-rwxr-xr-xdemos/time-tracker/protected/App_Code/DaoManager.php2
-rwxr-xr-xdemos/time-tracker/protected/App_Code/TimeTrackerException.php4
-rwxr-xr-xdemos/time-tracker/protected/App_Code/TimeTrackerUser.php6
-rwxr-xr-xdemos/time-tracker/protected/App_Code/TrackerAuthManager.php19
-rwxr-xr-xdemos/time-tracker/protected/App_Code/UserManager.php2
-rwxr-xr-xdemos/time-tracker/protected/App_Data/TimeTrackerUserTypeHandler.php2
-rwxr-xr-xdemos/time-tracker/protected/pages/TimeTracker/Login.php10
-rwxr-xr-xdemos/time-tracker/protected/pages/TimeTracker/Logout.php4
-rwxr-xr-xdemos/time-tracker/protected/pages/TimeTracker/SiteMap.php6
-rwxr-xr-xdemos/time-tracker/protected/pages/TimeTracker/UserCreate.php20
-rwxr-xr-xdemos/time-tracker/protected/pages/TimeTracker/UserList.php4
-rw-r--r--framework/3rdParty/Markdown/License.text34
-rw-r--r--framework/3rdParty/Markdown/MarkdownParser.php1256
-rw-r--r--framework/3rdParty/Parsedown/LICENSE.txt20
-rwxr-xr-xframework/3rdParty/Parsedown/Parsedown.php1135
-rw-r--r--framework/3rdParty/SafeHtml/HTMLSax3.php5
-rw-r--r--framework/3rdParty/SafeHtml/HTMLSax3/Decorators.php1
-rw-r--r--framework/3rdParty/SafeHtml/HTMLSax3/States.php11
-rw-r--r--framework/3rdParty/WsdlGen/Wsdl.php1
-rw-r--r--framework/3rdParty/WsdlGen/WsdlGenerator.php1
-rw-r--r--framework/3rdParty/WsdlGen/WsdlMessage.php1
-rw-r--r--framework/3rdParty/WsdlGen/WsdlOperation.php1
-rw-r--r--framework/3rdParty/readme.html16
-rw-r--r--framework/Caching/TAPCCache.php10
-rw-r--r--framework/Caching/TCache.php11
-rw-r--r--framework/Caching/TDbCache.php4
-rw-r--r--framework/Caching/TEACache.php2
-rw-r--r--framework/Caching/TMemCache.php28
-rw-r--r--framework/Caching/TSqliteCache.php4
-rw-r--r--framework/Caching/TXCache.php4
-rw-r--r--framework/Collections/TAttributeCollection.php4
-rw-r--r--framework/Collections/TDummyDataSource.php5
-rw-r--r--framework/Collections/TList.php21
-rw-r--r--framework/Collections/TListItemCollection.php4
-rw-r--r--framework/Collections/TMap.php7
-rw-r--r--framework/Collections/TPagedDataSource.php6
-rw-r--r--framework/Collections/TPagedList.php6
-rw-r--r--framework/Collections/TPriorityList.php140
-rw-r--r--framework/Collections/TPriorityMap.php72
-rw-r--r--framework/Collections/TQueue.php4
-rw-r--r--framework/Collections/TStack.php7
-rw-r--r--framework/Data/ActiveRecord/Exceptions/TActiveRecordException.php5
-rw-r--r--framework/Data/ActiveRecord/Relations/TActiveRecordBelongsTo.php2
-rw-r--r--framework/Data/ActiveRecord/Relations/TActiveRecordHasMany.php2
-rw-r--r--framework/Data/ActiveRecord/Relations/TActiveRecordHasManyAssociation.php2
-rw-r--r--framework/Data/ActiveRecord/Relations/TActiveRecordHasOne.php2
-rw-r--r--framework/Data/ActiveRecord/Relations/TActiveRecordRelation.php2
-rw-r--r--framework/Data/ActiveRecord/Relations/TActiveRecordRelationContext.php2
-rw-r--r--framework/Data/ActiveRecord/Scaffold/InputBuilder/TIbmScaffoldInput.php2
-rw-r--r--framework/Data/ActiveRecord/Scaffold/InputBuilder/TMssqlScaffoldInput.php2
-rw-r--r--framework/Data/ActiveRecord/Scaffold/InputBuilder/TMysqlScaffoldInput.php2
-rw-r--r--framework/Data/ActiveRecord/Scaffold/InputBuilder/TPgsqlScaffoldInput.php2
-rw-r--r--framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputBase.php2
-rw-r--r--framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputCommon.php2
-rw-r--r--framework/Data/ActiveRecord/Scaffold/InputBuilder/TSqliteScaffoldInput.php2
-rw-r--r--framework/Data/ActiveRecord/Scaffold/TScaffoldBase.php4
-rw-r--r--framework/Data/ActiveRecord/Scaffold/TScaffoldEditView.php5
-rw-r--r--framework/Data/ActiveRecord/Scaffold/TScaffoldListView.php4
-rw-r--r--framework/Data/ActiveRecord/Scaffold/TScaffoldSearch.php2
-rw-r--r--framework/Data/ActiveRecord/Scaffold/TScaffoldView.php4
-rw-r--r--framework/Data/ActiveRecord/TActiveRecord.php29
-rw-r--r--framework/Data/ActiveRecord/TActiveRecordConfig.php4
-rw-r--r--framework/Data/ActiveRecord/TActiveRecordCriteria.php4
-rw-r--r--framework/Data/ActiveRecord/TActiveRecordGateway.php4
-rw-r--r--framework/Data/ActiveRecord/TActiveRecordManager.php4
-rw-r--r--framework/Data/Common/Mssql/TMssqlCommandBuilder.php4
-rw-r--r--framework/Data/Common/Mssql/TMssqlMetaData.php34
-rw-r--r--framework/Data/Common/Mssql/TMssqlTableColumn.php4
-rw-r--r--framework/Data/Common/Mssql/TMssqlTableInfo.php4
-rw-r--r--framework/Data/Common/Mysql/TMysqlCommandBuilder.php4
-rw-r--r--framework/Data/Common/Mysql/TMysqlMetaData.php25
-rw-r--r--framework/Data/Common/Mysql/TMysqlTableColumn.php4
-rw-r--r--framework/Data/Common/Mysql/TMysqlTableInfo.php4
-rw-r--r--framework/Data/Common/Oracle/TOracleCommandBuilder.php10
-rw-r--r--framework/Data/Common/Oracle/TOracleMetaData.php44
-rw-r--r--framework/Data/Common/Oracle/TOracleTableColumn.php6
-rw-r--r--framework/Data/Common/Oracle/TOracleTableInfo.php4
-rw-r--r--framework/Data/Common/Pgsql/TPgsqlCommandBuilder.php4
-rw-r--r--framework/Data/Common/Pgsql/TPgsqlMetaData.php32
-rw-r--r--framework/Data/Common/Pgsql/TPgsqlTableColumn.php4
-rw-r--r--framework/Data/Common/Pgsql/TPgsqlTableInfo.php4
-rw-r--r--framework/Data/Common/Sqlite/TSqliteCommandBuilder.php4
-rw-r--r--framework/Data/Common/Sqlite/TSqliteMetaData.php32
-rw-r--r--framework/Data/Common/Sqlite/TSqliteTableColumn.php4
-rw-r--r--framework/Data/Common/Sqlite/TSqliteTableInfo.php4
-rw-r--r--framework/Data/Common/TDbCommandBuilder.php4
-rw-r--r--framework/Data/Common/TDbMetaData.php14
-rw-r--r--framework/Data/Common/TDbTableColumn.php4
-rw-r--r--framework/Data/Common/TDbTableInfo.php4
-rw-r--r--framework/Data/DataGateway/TDataGatewayCommand.php2
-rw-r--r--framework/Data/DataGateway/TSqlCriteria.php4
-rw-r--r--framework/Data/DataGateway/TTableGateway.php2
-rw-r--r--framework/Data/SqlMap/Configuration/TDiscriminator.php5
-rw-r--r--framework/Data/SqlMap/Configuration/TInlineParameterMapParser.php8
-rw-r--r--framework/Data/SqlMap/Configuration/TParameterMap.php10
-rw-r--r--framework/Data/SqlMap/Configuration/TParameterProperty.php6
-rw-r--r--framework/Data/SqlMap/Configuration/TResultMap.php4
-rw-r--r--framework/Data/SqlMap/Configuration/TResultProperty.php6
-rw-r--r--framework/Data/SqlMap/Configuration/TSimpleDynamicParser.php4
-rw-r--r--framework/Data/SqlMap/Configuration/TSqlMapCacheModel.php6
-rw-r--r--framework/Data/SqlMap/Configuration/TSqlMapStatement.php11
-rw-r--r--framework/Data/SqlMap/Configuration/TSqlMapXmlConfiguration.php6
-rw-r--r--framework/Data/SqlMap/DataMapper/TFastSqlMapApplicationCache.php16
-rw-r--r--framework/Data/SqlMap/DataMapper/TLazyLoadList.php5
-rw-r--r--framework/Data/SqlMap/DataMapper/TPropertyAccess.php4
-rw-r--r--framework/Data/SqlMap/DataMapper/TSqlMapCache.php7
-rw-r--r--framework/Data/SqlMap/DataMapper/TSqlMapException.php5
-rw-r--r--framework/Data/SqlMap/DataMapper/TSqlMapPagedList.php4
-rw-r--r--framework/Data/SqlMap/DataMapper/TSqlMapTypeHandlerRegistry.php5
-rw-r--r--framework/Data/SqlMap/Statements/IMappedStatement.php2
-rw-r--r--framework/Data/SqlMap/Statements/TCachingStatement.php4
-rw-r--r--framework/Data/SqlMap/Statements/TDeleteMappedStatement.php4
-rw-r--r--framework/Data/SqlMap/Statements/TInsertMappedStatement.php4
-rw-r--r--framework/Data/SqlMap/Statements/TMappedStatement.php14
-rw-r--r--framework/Data/SqlMap/Statements/TPreparedCommand.php4
-rw-r--r--framework/Data/SqlMap/Statements/TPreparedStatement.php16
-rw-r--r--framework/Data/SqlMap/Statements/TPreparedStatementFactory.php4
-rw-r--r--framework/Data/SqlMap/Statements/TSelectMappedStatement.php4
-rw-r--r--framework/Data/SqlMap/Statements/TSimpleDynamicSql.php4
-rw-r--r--framework/Data/SqlMap/Statements/TStaticSql.php4
-rw-r--r--framework/Data/SqlMap/Statements/TUpdateMappedStatement.php4
-rw-r--r--framework/Data/SqlMap/TSqlMapConfig.php4
-rw-r--r--framework/Data/SqlMap/TSqlMapGateway.php4
-rw-r--r--framework/Data/SqlMap/TSqlMapManager.php4
-rw-r--r--framework/Data/TDataSourceConfig.php4
-rw-r--r--framework/Data/TDbCommand.php8
-rw-r--r--framework/Data/TDbConnection.php8
-rw-r--r--framework/Data/TDbDataReader.php4
-rw-r--r--framework/Data/TDbTransaction.php4
-rw-r--r--framework/Exceptions/TErrorHandler.php4
-rw-r--r--framework/Exceptions/TException.php19
-rw-r--r--framework/I18N/TChoiceFormat.php5
-rw-r--r--framework/I18N/TDateFormat.php9
-rw-r--r--framework/I18N/TGlobalization.php3
-rw-r--r--framework/I18N/TGlobalizationAutoDetect.php4
-rw-r--r--framework/I18N/TI18NControl.php3
-rw-r--r--framework/I18N/TNumberFormat.php5
-rw-r--r--framework/I18N/TTranslate.php5
-rw-r--r--framework/I18N/TTranslateParameter.php3
-rw-r--r--framework/I18N/Translation.php5
-rw-r--r--framework/I18N/core/CultureInfo.php2
-rw-r--r--framework/I18N/core/Gettext/TGettext.php66
-rw-r--r--framework/I18N/core/MessageCache.php48
-rw-r--r--framework/I18N/core/TCache_Lite.php1
-rw-r--r--framework/IO/TTarFileExtractor.php2
-rw-r--r--framework/IO/TTextWriter.php4
-rw-r--r--framework/PradoBase.php6
-rw-r--r--framework/Security/IUserManager.php4
-rw-r--r--framework/Security/TAuthManager.php12
-rw-r--r--framework/Security/TAuthorizationRule.php5
-rw-r--r--framework/Security/TDbUserManager.php5
-rw-r--r--framework/Security/TSecurityManager.php5
-rw-r--r--framework/Security/TUser.php4
-rw-r--r--framework/Security/TUserManager.php9
-rw-r--r--framework/TApplication.php31
-rw-r--r--framework/TApplicationComponent.php4
-rw-r--r--framework/TComponent.php394
-rw-r--r--framework/TModule.php4
-rw-r--r--framework/TService.php4
-rw-r--r--framework/TShellApplication.php4
-rw-r--r--framework/Util/TBehavior.php1
-rw-r--r--framework/Util/TCallChain.php35
-rw-r--r--framework/Util/TClassBehavior.php3
-rw-r--r--framework/Util/TDataFieldAccessor.php6
-rw-r--r--framework/Util/TDateTimeStamp.php8
-rw-r--r--framework/Util/TLogRouter.php23
-rw-r--r--framework/Util/TLogger.php12
-rw-r--r--framework/Util/TParameterModule.php4
-rw-r--r--framework/Util/TRpcClient.php9
-rw-r--r--framework/Util/TSimpleDateFormatter.php8
-rw-r--r--framework/Util/TVarDumper.php4
-rw-r--r--framework/Web/Javascripts/TJavaScript.php33
-rw-r--r--framework/Web/Javascripts/source/prado/activecontrols/ajax3.js8
-rw-r--r--framework/Web/Javascripts/source/prado/controls/slider.js35
-rw-r--r--framework/Web/Javascripts/source/prado/prado.js2
-rw-r--r--framework/Web/Javascripts/source/prado/validator/validation3.js2
-rw-r--r--framework/Web/Services/TFeedService.php4
-rw-r--r--framework/Web/Services/TJsonService.php7
-rw-r--r--framework/Web/Services/TPageService.php15
-rw-r--r--framework/Web/Services/TRpcService.php3
-rw-r--r--framework/Web/Services/TSoapService.php6
-rw-r--r--framework/Web/TAssetManager.php4
-rw-r--r--framework/Web/TCacheHttpSession.php4
-rw-r--r--framework/Web/THttpRequest.php10
-rw-r--r--framework/Web/THttpResponse.php4
-rw-r--r--framework/Web/THttpResponseAdapter.php2
-rw-r--r--framework/Web/THttpSession.php8
-rw-r--r--framework/Web/THttpUtility.php4
-rw-r--r--framework/Web/TUrlManager.php4
-rw-r--r--framework/Web/TUrlMapping.php8
-rw-r--r--framework/Web/UI/ActiveControls/TActiveButton.php6
-rw-r--r--framework/Web/UI/ActiveControls/TActiveCheckBox.php8
-rw-r--r--framework/Web/UI/ActiveControls/TActiveCheckBoxList.php4
-rwxr-xr-xframework/Web/UI/ActiveControls/TActiveClientScript.php10
-rw-r--r--framework/Web/UI/ActiveControls/TActiveControlAdapter.php9
-rw-r--r--framework/Web/UI/ActiveControls/TActiveCustomValidator.php5
-rw-r--r--framework/Web/UI/ActiveControls/TActiveDataGrid.php4
-rw-r--r--framework/Web/UI/ActiveControls/TActiveDataList.php21
-rwxr-xr-xframework/Web/UI/ActiveControls/TActiveDatePicker.php31
-rw-r--r--framework/Web/UI/ActiveControls/TActiveDropDownList.php4
-rwxr-xr-xframework/Web/UI/ActiveControls/TActiveFileUpload.php115
-rw-r--r--framework/Web/UI/ActiveControls/TActiveHiddenField.php2
-rw-r--r--framework/Web/UI/ActiveControls/TActiveHyperLink.php4
-rw-r--r--framework/Web/UI/ActiveControls/TActiveImage.php4
-rw-r--r--framework/Web/UI/ActiveControls/TActiveImageButton.php4
-rw-r--r--framework/Web/UI/ActiveControls/TActiveLabel.php4
-rw-r--r--framework/Web/UI/ActiveControls/TActiveLinkButton.php6
-rw-r--r--framework/Web/UI/ActiveControls/TActiveListBox.php4
-rw-r--r--framework/Web/UI/ActiveControls/TActiveListControlAdapter.php5
-rw-r--r--framework/Web/UI/ActiveControls/TActivePageAdapter.php27
-rw-r--r--framework/Web/UI/ActiveControls/TActivePager.php50
-rw-r--r--framework/Web/UI/ActiveControls/TActivePanel.php6
-rw-r--r--framework/Web/UI/ActiveControls/TActiveRadioButton.php6
-rw-r--r--framework/Web/UI/ActiveControls/TActiveRadioButtonList.php4
-rw-r--r--framework/Web/UI/ActiveControls/TActiveRatingList.php4
-rw-r--r--framework/Web/UI/ActiveControls/TActiveRepeater.php1
-rw-r--r--framework/Web/UI/ActiveControls/TActiveTextBox.php4
-rw-r--r--framework/Web/UI/ActiveControls/TAutoComplete.php6
-rw-r--r--framework/Web/UI/ActiveControls/TBaseActiveControl.php5
-rw-r--r--framework/Web/UI/ActiveControls/TCallback.php4
-rw-r--r--framework/Web/UI/ActiveControls/TCallbackClientScript.php15
-rw-r--r--framework/Web/UI/ActiveControls/TCallbackClientSide.php8
-rw-r--r--framework/Web/UI/ActiveControls/TCallbackEventParameter.php3
-rw-r--r--framework/Web/UI/ActiveControls/TCallbackOptions.php4
-rwxr-xr-xframework/Web/UI/ActiveControls/TCallbackResponseAdapter.php5
-rwxr-xr-xframework/Web/UI/ActiveControls/TDraggable.php37
-rwxr-xr-xframework/Web/UI/ActiveControls/TDropContainer.php4
-rw-r--r--framework/Web/UI/ActiveControls/TEventTriggeredCallback.php4
-rw-r--r--framework/Web/UI/ActiveControls/TInPlaceTextBox.php10
-rw-r--r--framework/Web/UI/ActiveControls/TTimeTriggeredCallback.php4
-rw-r--r--framework/Web/UI/ActiveControls/TTriggeredCallback.php4
-rw-r--r--framework/Web/UI/ActiveControls/TValueTriggeredCallback.php4
-rw-r--r--framework/Web/UI/TCachePageStatePersister.php4
-rw-r--r--framework/Web/UI/TClientScriptManager.php21
-rw-r--r--framework/Web/UI/TCompositeControl.php4
-rw-r--r--framework/Web/UI/TControl.php18
-rw-r--r--framework/Web/UI/TControlAdapter.php4
-rw-r--r--framework/Web/UI/TForm.php6
-rw-r--r--framework/Web/UI/THtmlWriter.php6
-rw-r--r--framework/Web/UI/TPage.php11
-rw-r--r--framework/Web/UI/TPageStatePersister.php4
-rw-r--r--framework/Web/UI/TSessionPageStatePersister.php4
-rw-r--r--framework/Web/UI/TTemplateControl.php4
-rw-r--r--framework/Web/UI/TTemplateManager.php5
-rw-r--r--framework/Web/UI/TThemeManager.php5
-rw-r--r--framework/Web/UI/WebControls/TAccordion.php22
-rw-r--r--framework/Web/UI/WebControls/TBaseDataList.php4
-rw-r--r--framework/Web/UI/WebControls/TBaseValidator.php9
-rw-r--r--framework/Web/UI/WebControls/TBoundColumn.php4
-rw-r--r--framework/Web/UI/WebControls/TBulletedList.php7
-rw-r--r--framework/Web/UI/WebControls/TButton.php5
-rw-r--r--framework/Web/UI/WebControls/TButtonColumn.php4
-rw-r--r--framework/Web/UI/WebControls/TCaptcha.php4
-rw-r--r--framework/Web/UI/WebControls/TCaptchaValidator.php4
-rw-r--r--framework/Web/UI/WebControls/TCheckBox.php9
-rw-r--r--framework/Web/UI/WebControls/TCheckBoxColumn.php4
-rw-r--r--framework/Web/UI/WebControls/TCheckBoxList.php18
-rw-r--r--framework/Web/UI/WebControls/TClientScript.php6
-rw-r--r--framework/Web/UI/WebControls/TColorPicker.php12
-rw-r--r--framework/Web/UI/WebControls/TCompareValidator.php5
-rw-r--r--framework/Web/UI/WebControls/TConditional.php4
-rw-r--r--framework/Web/UI/WebControls/TContent.php4
-rw-r--r--framework/Web/UI/WebControls/TContentPlaceHolder.php4
-rw-r--r--framework/Web/UI/WebControls/TCustomValidator.php5
-rw-r--r--framework/Web/UI/WebControls/TDataBoundControl.php6
-rw-r--r--framework/Web/UI/WebControls/TDataGrid.php18
-rw-r--r--framework/Web/UI/WebControls/TDataGridColumn.php5
-rw-r--r--framework/Web/UI/WebControls/TDataGridItemRenderer.php4
-rw-r--r--framework/Web/UI/WebControls/TDataGridPagerStyle.php4
-rw-r--r--framework/Web/UI/WebControls/TDataList.php8
-rw-r--r--framework/Web/UI/WebControls/TDataListItemRenderer.php4
-rw-r--r--framework/Web/UI/WebControls/TDataRenderer.php4
-rw-r--r--framework/Web/UI/WebControls/TDataSourceControl.php6
-rw-r--r--framework/Web/UI/WebControls/TDataSourceView.php6
-rw-r--r--framework/Web/UI/WebControls/TDataTypeValidator.php4
-rw-r--r--framework/Web/UI/WebControls/TDatePicker.php11
-rw-r--r--framework/Web/UI/WebControls/TDropDownList.php6
-rw-r--r--framework/Web/UI/WebControls/TDropDownListColumn.php4
-rw-r--r--framework/Web/UI/WebControls/TEditCommandColumn.php4
-rw-r--r--framework/Web/UI/WebControls/TEmailAddressValidator.php4
-rw-r--r--framework/Web/UI/WebControls/TExpression.php4
-rw-r--r--framework/Web/UI/WebControls/TFileUpload.php6
-rw-r--r--framework/Web/UI/WebControls/TFlushOutput.php10
-rw-r--r--framework/Web/UI/WebControls/TFont.php4
-rw-r--r--framework/Web/UI/WebControls/THead.php6
-rw-r--r--framework/Web/UI/WebControls/THeader1.php12
-rw-r--r--framework/Web/UI/WebControls/THeader2.php12
-rw-r--r--framework/Web/UI/WebControls/THeader3.php12
-rw-r--r--framework/Web/UI/WebControls/THeader4.php12
-rw-r--r--framework/Web/UI/WebControls/THeader5.php12
-rw-r--r--framework/Web/UI/WebControls/THeader6.php12
-rw-r--r--framework/Web/UI/WebControls/THiddenField.php6
-rw-r--r--framework/Web/UI/WebControls/THtmlArea.php8
-rw-r--r--framework/Web/UI/WebControls/THtmlArea4.php15
-rw-r--r--framework/Web/UI/WebControls/THtmlElement.php12
-rw-r--r--framework/Web/UI/WebControls/THyperLink.php12
-rw-r--r--framework/Web/UI/WebControls/THyperLinkColumn.php12
-rw-r--r--framework/Web/UI/WebControls/TImage.php4
-rw-r--r--framework/Web/UI/WebControls/TImageButton.php5
-rw-r--r--framework/Web/UI/WebControls/TImageMap.php11
-rw-r--r--framework/Web/UI/WebControls/TInlineFrame.php6
-rw-r--r--framework/Web/UI/WebControls/TItemDataRenderer.php4
-rw-r--r--framework/Web/UI/WebControls/TJavascriptLogger.php6
-rw-r--r--framework/Web/UI/WebControls/TKeyboard.php4
-rw-r--r--framework/Web/UI/WebControls/TLabel.php4
-rw-r--r--framework/Web/UI/WebControls/TLinkButton.php4
-rw-r--r--framework/Web/UI/WebControls/TListBox.php7
-rw-r--r--framework/Web/UI/WebControls/TListControl.php6
-rw-r--r--framework/Web/UI/WebControls/TListControlValidator.php4
-rw-r--r--framework/Web/UI/WebControls/TListItem.php4
-rw-r--r--framework/Web/UI/WebControls/TLiteral.php4
-rw-r--r--framework/Web/UI/WebControls/TLiteralColumn.php21
-rw-r--r--framework/Web/UI/WebControls/TMarkdown.php13
-rw-r--r--framework/Web/UI/WebControls/TMultiView.php6
-rw-r--r--framework/Web/UI/WebControls/TOutputCache.php11
-rw-r--r--framework/Web/UI/WebControls/TPager.php9
-rw-r--r--framework/Web/UI/WebControls/TPanel.php11
-rw-r--r--framework/Web/UI/WebControls/TPanelStyle.php6
-rw-r--r--framework/Web/UI/WebControls/TPlaceHolder.php4
-rw-r--r--framework/Web/UI/WebControls/TRadioButton.php10
-rw-r--r--framework/Web/UI/WebControls/TRadioButtonList.php4
-rw-r--r--framework/Web/UI/WebControls/TRangeValidator.php5
-rw-r--r--framework/Web/UI/WebControls/TRatingList.php8
-rw-r--r--framework/Web/UI/WebControls/TRegularExpressionValidator.php4
-rw-r--r--framework/Web/UI/WebControls/TRepeatInfo.php7
-rw-r--r--framework/Web/UI/WebControls/TRepeater.php8
-rw-r--r--framework/Web/UI/WebControls/TRepeaterItemRenderer.php4
-rw-r--r--framework/Web/UI/WebControls/TRequiredFieldValidator.php10
-rw-r--r--framework/Web/UI/WebControls/TSafeHtml.php4
-rw-r--r--framework/Web/UI/WebControls/TSlider.php20
-rw-r--r--framework/Web/UI/WebControls/TStatements.php4
-rw-r--r--framework/Web/UI/WebControls/TStyle.php10
-rw-r--r--framework/Web/UI/WebControls/TStyleSheet.php3
-rw-r--r--framework/Web/UI/WebControls/TTabPanel.php12
-rw-r--r--framework/Web/UI/WebControls/TTable.php6
-rw-r--r--framework/Web/UI/WebControls/TTableCell.php4
-rw-r--r--framework/Web/UI/WebControls/TTableFooterRow.php4
-rw-r--r--framework/Web/UI/WebControls/TTableHeaderCell.php5
-rw-r--r--framework/Web/UI/WebControls/TTableHeaderRow.php4
-rw-r--r--framework/Web/UI/WebControls/TTableRow.php6
-rw-r--r--framework/Web/UI/WebControls/TTemplateColumn.php4
-rw-r--r--framework/Web/UI/WebControls/TTextBox.php6
-rw-r--r--framework/Web/UI/WebControls/TTextHighlighter.php5
-rw-r--r--framework/Web/UI/WebControls/TTextProcessor.php4
-rw-r--r--framework/Web/UI/WebControls/TValidationSummary.php7
-rw-r--r--framework/Web/UI/WebControls/TWebControl.php18
-rw-r--r--framework/Web/UI/WebControls/TWebControlAdapter.php4
-rw-r--r--framework/Web/UI/WebControls/TWebControlDecorator.php134
-rw-r--r--framework/Web/UI/WebControls/TWizard.php18
-rw-r--r--framework/Web/UI/WebControls/TWizardNavigationButtonStyle.php3
-rw-r--r--framework/Web/UI/WebControls/TXmlTransform.php2
-rw-r--r--framework/Web/UI/WebControls/assets/captcha.php5
-rw-r--r--framework/Wsat/TWsatARGenerator.php283
-rw-r--r--framework/Wsat/TWsatService.php81
-rw-r--r--framework/Wsat/pages/TWsatGenerateAR.page56
-rw-r--r--framework/Wsat/pages/TWsatGenerateAR.php57
-rw-r--r--framework/Wsat/pages/TWsatHome.page17
-rw-r--r--framework/Wsat/pages/TWsatHome.php17
-rw-r--r--framework/Wsat/pages/TWsatLogin.page45
-rw-r--r--framework/Wsat/pages/TWsatLogin.php33
-rw-r--r--framework/Wsat/pages/TWsatScaffolding.page3
-rw-r--r--framework/Wsat/pages/TWsatScaffolding.php17
-rw-r--r--framework/Wsat/pages/config.xml9
-rw-r--r--framework/Wsat/pages/layout/TWsatLayout.php36
-rw-r--r--framework/Wsat/pages/layout/TWsatLayout.tpl53
-rw-r--r--framework/Wsat/themes/.htaccess1
-rw-r--r--framework/Wsat/themes/PradoSoft/imgs/arrowdown.gifbin0 -> 836 bytes
-rw-r--r--framework/Wsat/themes/PradoSoft/imgs/mantisbg.jpgbin0 -> 4043 bytes
-rw-r--r--framework/Wsat/themes/PradoSoft/imgs/pradologo.gifbin0 -> 3039 bytes
-rw-r--r--framework/Wsat/themes/PradoSoft/main.css152
-rw-r--r--framework/Xml/TXmlDocument.php8
-rw-r--r--framework/interfaces.php16
-rw-r--r--framework/prado.php4
-rw-r--r--framework/pradolite.php61
-rw-r--r--index.html6
-rw-r--r--requirements/index.php3
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/ActiveBricksTest.page6
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/ActiveButtonTest.page6
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/ActiveCheckBoxTest.page5
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/ActiveControlExpressionTag.page5
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/ActiveControlWithTinyMce.page5
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/ActiveDatePicker.page11
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/ActiveDropDownList.page6
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/ActiveHiddenFieldTest.page9
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/ActiveHyperLinkTest.page8
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/ActiveImageButtonTest.page6
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/ActiveLinkButtonTest.page6
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/ActiveListBoxMasterTest.page2
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/ActiveListBoxTest.page6
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/ActivePanelTest.page11
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/ActivePanelVisibleTest.page5
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/ActiveRadioButtonListTest.page6
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/ActiveRadioButtonTest.page5
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/ActiveRatingListAllowInputTest.page5
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/ActiveRatingListAutoPostBackTest.page5
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/ActiveRatingListCheckBoxesTest.page5
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/ActiveRatingListEnabledTest.page5
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/ActiveRatingListHoverCaptionTest.page5
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/ActiveRatingListRatingTest.page5
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/ActiveRatingListReadOnlyTest.page5
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/ActiveRatingListSelectedIndexTest.page5
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/ActiveRedirectionTest.page5
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/ActiveTextBoxCallback.page5
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/AutoCompleteTest.page9
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/Calculator.page18
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/Callback.page14
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/CallbackCustomValidatorTest.page6
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/CallbackOptionsTest.page4
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/ClientSideDispatch.page15
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/ControlAdapterTest.page9
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/CustomTemplateControlTest.page7
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/CustomValidatorByPass.page17
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/DatePickerInCallback.page4
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/DelayedCallback.page5
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/DisplayStyleTest.page5
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/DynamicRepeaterDataTest.page5
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/EventTriggeredCallback.page5
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/FeatureList.page6
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/GerTurno2.page7
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/InPlaceWithValidator.page18
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/LargePageStateTest.page5
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/LargePageStateTest2.page5
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/Layout.php5
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/Layout.tpl38
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/MessagesPanelTest.page5
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/MyTabPanelTest.page5
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/NestedActiveControls.page15
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/NullStateTest.page5
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/PopulateActiveList.page5
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/PostLoadingTest.page11
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/RadioButtonListTest.page13
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/RatingList.page6
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/RepeaterWithActiveControls.page5
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/ReplaceContentTest.page5
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/Sessioned/PageStateTest.page8
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/TActiveCheckBoxListTest.page6
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/TActiveFileUploadAutoPostBackTest.page12
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/TInPlaceTextBoxTest.page9
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/TextBoxValidationCallback.page5
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/TimeTriggeredCallbackTest.page5
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/ValueTriggerCallbackTest.page6
-rwxr-xr-xtests/FunctionalTests/active-controls/protected/pages/config.xml5
-rwxr-xr-xtests/FunctionalTests/active-controls/tests/ActiveButtonTestCase.php13
-rwxr-xr-xtests/FunctionalTests/active-controls/tests/ActiveCheckBoxListTestCase.php32
-rwxr-xr-xtests/FunctionalTests/active-controls/tests/ActiveCheckBoxTestCase.php53
-rwxr-xr-xtests/FunctionalTests/active-controls/tests/ActiveControlExpressTagTestCase.php17
-rwxr-xr-xtests/FunctionalTests/active-controls/tests/ActiveDatePickerTestCase.php179
-rwxr-xr-xtests/FunctionalTests/active-controls/tests/ActiveDropDownListTestCase.php41
-rwxr-xr-xtests/FunctionalTests/active-controls/tests/ActiveHiddenFieldTestCase.php21
-rwxr-xr-xtests/FunctionalTests/active-controls/tests/ActiveHyperLinkTestCase.php13
-rwxr-xr-xtests/FunctionalTests/active-controls/tests/ActiveImageButtonTestCase.php13
-rwxr-xr-xtests/FunctionalTests/active-controls/tests/ActiveLinkButtonTestCase.php13
-rwxr-xr-xtests/FunctionalTests/active-controls/tests/ActiveListBoxMasterTestCase.php42
-rwxr-xr-xtests/FunctionalTests/active-controls/tests/ActiveListBoxTestCase.php43
-rwxr-xr-xtests/FunctionalTests/active-controls/tests/ActivePanelTestCase.php13
-rwxr-xr-xtests/FunctionalTests/active-controls/tests/ActiveRadioButtonListTestCase.php28
-rwxr-xr-xtests/FunctionalTests/active-controls/tests/ActiveRadioButtonTestCase.php63
-rwxr-xr-xtests/FunctionalTests/active-controls/tests/AutoCompleteTestCase.php57
-rwxr-xr-xtests/FunctionalTests/active-controls/tests/CalculatorTestCase.php29
-rwxr-xr-xtests/FunctionalTests/active-controls/tests/CallbackAdapterTestCase.php66
-rwxr-xr-xtests/FunctionalTests/active-controls/tests/CallbackOptionsTestCase.php13
-rwxr-xr-xtests/FunctionalTests/active-controls/tests/CustomTemplateTestCase.php19
-rwxr-xr-xtests/FunctionalTests/active-controls/tests/DelayedCallbackTestCase.php17
-rwxr-xr-xtests/FunctionalTests/active-controls/tests/EventTriggerTestCase.php17
-rwxr-xr-xtests/FunctionalTests/active-controls/tests/NestedActiveControlsTestCase.php27
-rwxr-xr-xtests/FunctionalTests/active-controls/tests/PopulateListTestCase.php21
-rwxr-xr-xtests/FunctionalTests/active-controls/tests/PostLoadingTestCase.php17
-rwxr-xr-xtests/FunctionalTests/active-controls/tests/ReplaceContentTestCase.php88
-rwxr-xr-xtests/FunctionalTests/active-controls/tests/TextBoxCallbackTestCase.php13
-rwxr-xr-xtests/FunctionalTests/active-controls/tests/TextBoxGroupValidationTestCase.php21
-rwxr-xr-xtests/FunctionalTests/active-controls/tests/TimeTriggeredCallbackTestCase.php13
-rwxr-xr-xtests/FunctionalTests/active-controls/tests/ValueTriggerCallbackTestCase.php17
-rwxr-xr-xtests/FunctionalTests/active-controlstests/ActiveRatingListTestCase.php310
-rwxr-xr-xtests/FunctionalTests/features/protected/controls/Layout.tpl1
-rwxr-xr-xtests/FunctionalTests/features/protected/pages/I18N/BasicI18N.php18
-rwxr-xr-xtests/FunctionalTests/features/tests/MyTestCase.php6
-rwxr-xr-xtests/FunctionalTests/issues/assets/.gitignore2
-rwxr-xr-xtests/FunctionalTests/issues/index.php6
-rwxr-xr-xtests/FunctionalTests/issues/protected/application.xml12
-rwxr-xr-xtests/FunctionalTests/issues/protected/controls/Layout.php6
-rwxr-xr-xtests/FunctionalTests/issues/protected/controls/Layout.tpl32
-rwxr-xr-xtests/FunctionalTests/issues/protected/pages/Issue504.page14
-rwxr-xr-xtests/FunctionalTests/issues/protected/pages/Issue504.php14
-rw-r--r--tests/FunctionalTests/issues/protected/pages/Issue516.page50
-rw-r--r--tests/FunctionalTests/issues/protected/pages/Issue516.php115
-rwxr-xr-xtests/FunctionalTests/issues/protected/pages/Issue524.page7
-rwxr-xr-xtests/FunctionalTests/issues/protected/pages/Issue524.php20
-rwxr-xr-xtests/FunctionalTests/issues/protected/runtime/.gitignore2
-rwxr-xr-xtests/FunctionalTests/issues/tests/Issue504TestCase.php16
-rw-r--r--tests/FunctionalTests/issues/tests/Issue516TestCase.php37
-rwxr-xr-xtests/FunctionalTests/issues/tests/Issue524TestCase.php20
-rwxr-xr-xtests/FunctionalTests/quickstart/ActiveControls/ActiveButtonTestCase.php32
-rwxr-xr-xtests/FunctionalTests/quickstart/ActiveControls/ActiveCheckBoxTestCase.php69
-rwxr-xr-xtests/FunctionalTests/quickstart/ActiveControls/ActiveCustomValidatorTestCase.php12
-rwxr-xr-xtests/FunctionalTests/quickstart/Advanced/I18N.php86
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/BulletedListTestCase.php38
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/ButtonTestCase.php30
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/CheckBoxListTestCase.php40
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/CheckBoxTestCase.php56
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/DataGrid1TestCase.php36
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/DataGrid2TestCase.php56
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/DataGrid3TestCase.php66
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/DataGrid4TestCase.php34
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/DataGrid5TestCase.php166
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/DataGrid6TestCase.php68
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/DataList1TestCase.php26
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/DataList2TestCase.php74
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/DropDownListTestCase.php62
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/ExpressionTestCase.php8
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/HtmlAreaTestCase.php6
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/HyperLinkTestCase.php16
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/ImageButtonTestCase.php24
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/ImageTestCase.php16
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/LabelTestCase.php18
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/LinkButtonTestCase.php28
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/ListBoxTestCase.php79
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/MultiViewTestCase.php34
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/PagerTestCase.php82
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/PanelTestCase.php18
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/RadioButtonListTestCase.php40
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/RadioButtonTestCase.php64
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/Repeater1TestCase.php32
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/Repeater2TestCase.php48
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/Repeater3TestCase.php32
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/StatementsTestCase.php8
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/TabPanelTestCase.php52
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/TableTestCase.php18
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/TextBoxTestCase.php72
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/Wizard1TestCase.php24
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/Wizard2TestCase.php24
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/Wizard3TestCase.php40
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/Wizard4TestCase.php36
-rwxr-xr-xtests/FunctionalTests/quickstart/Controls/Wizard5TestCase.php30
-rwxr-xr-xtests/FunctionalTests/quickstart/Fundamentals/HangmanTestCase.php50
-rwxr-xr-xtests/FunctionalTests/tickets/protected/controls/ToggleImageButton.php1
-rwxr-xr-xtests/FunctionalTests/tickets/protected/pages/ExtendedToggleImageButton.php7
-rwxr-xr-xtests/FunctionalTests/tickets/protected/pages/Layout.tpl9
-rwxr-xr-xtests/FunctionalTests/tickets/protected/pages/Ticket220.page4
-rwxr-xr-xtests/FunctionalTests/tickets/protected/pages/Ticket290.page9
-rwxr-xr-xtests/FunctionalTests/tickets/protected/pages/Ticket586.page1
-rwxr-xr-xtests/FunctionalTests/tickets/protected/pages/Ticket653/Layout.tpl9
-rwxr-xr-xtests/FunctionalTests/tickets/protected/pages/Ticket659.php5
-rwxr-xr-xtests/FunctionalTests/tickets/protected/pages/Ticket703/Ticket703.php10
-rwxr-xr-xtests/FunctionalTests/tickets/protected/pages/Ticket719.page3
-rwxr-xr-x[-rw-r--r--]tests/FunctionalTests/tickets/protected/pages/ToggleTest.page0
-rwxr-xr-x[-rw-r--r--]tests/FunctionalTests/tickets/protected/pages/ToggleTest.php8
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Issue120TestCase.php12
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Issue216TestCase.php14
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket121TestCase.php16
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket163TestCase.php10
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket169TestCase.php6
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket191TestCase.php10
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket205TestCase.php28
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket207TestCase.php26
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket21TestCase.php14
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket220TestCase.php10
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket225TestCase.php14
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket227TestCase.php6
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket239TestCase.php72
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket246TestCase.php6
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket274TestCase.php10
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket278TestCase.php20
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket27TestCase.php16
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket284TestCase.php10
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket285TestCase.php8
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket28TestCase.php12
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket290TestCase.php21
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket433TestCase.php8
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket439TestCase.php11
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket463TestCase.php8
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket470TestCase.php18
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket477TestCase.php10
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket488TestCase.php39
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket504TestCase.php14
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket507TestCase.php8
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket521TestCase.php8
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket526TestCase.php8
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket528TestCase.php6
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket535TestCase.php30
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket538TestCase.php10
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket54TestCase.php6
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket573TestCase.php6
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket578TestCase.php21
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket585TestCase.php10
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket586TestCase.php8
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket587TestCase.php13
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket592TestCase.php46
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket595TestCase.php32
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket622TestCase.php17
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket653TestCase.php6
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket656TestCase.php19
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket659TestCase.php10
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket660TestCase.php14
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket669TestCase.php68
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket670TestCase.php14
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket671TestCase.php40
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket671_reopenedTestCase.php34
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket679TestCase.php30
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket691TestCase.php14
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket698TestCase.php12
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket700TestCase.php96
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket703TestCase.php17
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket708TestCase.php22
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket719TestCase.php35
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket722TestCase.php34
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket72TestCase.php10
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket745TestCase.php13
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket769TestCase.php25
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket785TestCase.php24
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket823TestCase.php8
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket828TestCase.php32
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket849TestCase.php10
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket876TestCase.php24
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket886TestCase.php10
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket897TestCase.php14
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket900TestCase.php14
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket922TestCase.php10
-rwxr-xr-xtests/FunctionalTests/tickets/tests/Ticket93TestCase.php8
-rwxr-xr-xtests/FunctionalTests/validators/protected/pages/Layout.tpl1
-rwxr-xr-xtests/FunctionalTests/validators/protected/pages/ListControl.page28
-rwxr-xr-xtests/FunctionalTests/validators/tests/ButtonTestCase.php72
-rwxr-xr-xtests/FunctionalTests/validators/tests/CheckBoxTestCase.php76
-rwxr-xr-xtests/FunctionalTests/validators/tests/CompareValidatorTestCase.php28
-rwxr-xr-xtests/FunctionalTests/validators/tests/ConditionalValidationTestCase.php60
-rwxr-xr-xtests/FunctionalTests/validators/tests/CustomValidatorTestCase.php12
-rwxr-xr-xtests/FunctionalTests/validators/tests/DataTypeValidatorTestCase.php30
-rwxr-xr-xtests/FunctionalTests/validators/tests/DatePickerTestCase.php84
-rwxr-xr-xtests/FunctionalTests/validators/tests/ImageButtonTestCase.php72
-rwxr-xr-xtests/FunctionalTests/validators/tests/LinkButtonTestCase.php72
-rwxr-xr-xtests/FunctionalTests/validators/tests/ListControlTestCase.php33
-rwxr-xr-xtests/FunctionalTests/validators/tests/RangeValidatorTestCase.php198
-rwxr-xr-xtests/FunctionalTests/validators/tests/RegExpValidatorTestCase.php34
-rwxr-xr-xtests/FunctionalTests/validators/tests/RequiredFieldTestCase.php52
-rwxr-xr-xtests/FunctionalTests/validators/tests/RequiredListTestCase.php32
-rwxr-xr-xtests/FunctionalTests/validators/tests/ValidationSummaryTestCase.php46
-rw-r--r--tests/simple_unit/ActiveRecord/ActiveRecordDynamicCallTestCase.php2
-rw-r--r--tests/simple_unit/ActiveRecord/ActiveRecordFinderTestCase.php2
-rw-r--r--tests/simple_unit/ActiveRecord/ActiveRecordMySql5TestCase.php3
-rw-r--r--tests/simple_unit/ActiveRecord/ActiveRecordRegistryTestCase.php2
-rw-r--r--tests/simple_unit/ActiveRecord/BaseActiveRecordTestCase.php2
-rw-r--r--tests/simple_unit/ActiveRecord/CountRecordsTestCase.php2
-rw-r--r--tests/simple_unit/ActiveRecord/CriteriaTestCase.php2
-rw-r--r--tests/simple_unit/ActiveRecord/DeleteByPkTestCase.php3
-rw-r--r--tests/simple_unit/ActiveRecord/FindByPksTestCase.php2
-rw-r--r--tests/simple_unit/ActiveRecord/FindBySqlTestCase.php2
-rw-r--r--tests/simple_unit/ActiveRecord/ForeignKeyTestCase.php2
-rw-r--r--tests/simple_unit/ActiveRecord/ForeignObjectUpdateTest.php2
-rw-r--r--tests/simple_unit/ActiveRecord/MultipleForeignKeyTestCase.php2
-rw-r--r--tests/simple_unit/ActiveRecord/RecordEventTestCase.php2
-rw-r--r--tests/simple_unit/ActiveRecord/SqliteTestCase.php2
-rw-r--r--tests/simple_unit/ActiveRecord/UserRecordTestCase.php2
-rw-r--r--tests/simple_unit/ActiveRecord/ViewRecordTestCase.php3
-rw-r--r--tests/simple_unit/ActiveRecord/records/Blogs.php2
-rw-r--r--tests/simple_unit/ActiveRecord/records/DepSections.php2
-rw-r--r--tests/simple_unit/ActiveRecord/records/DepartmentRecord.php2
-rw-r--r--tests/simple_unit/ActiveRecord/records/ItemRecord.php2
-rw-r--r--tests/simple_unit/ActiveRecord/records/SimpleUser.php2
-rw-r--r--tests/simple_unit/ActiveRecord/records/SqliteUsers.php2
-rw-r--r--tests/simple_unit/ActiveRecord/records/UserRecord.php2
-rw-r--r--tests/simple_unit/DbCommon/CommandBuilderMssqlTest.php2
-rw-r--r--tests/simple_unit/DbCommon/CommandBuilderMysqlTest.php2
-rw-r--r--tests/simple_unit/DbCommon/CommandBuilderPgsqlTest.php2
-rw-r--r--tests/simple_unit/DbCommon/MssqlColumnTest.php2
-rw-r--r--tests/simple_unit/DbCommon/Mysql4ColumnTest.php2
-rw-r--r--tests/simple_unit/DbCommon/MysqlColumnTest.php2
-rw-r--r--tests/simple_unit/DbCommon/PgsqlColumnTest.php2
-rw-r--r--tests/simple_unit/DbCommon/SqliteColumnTest.php3
-rw-r--r--tests/simple_unit/I18N/MysqlMessageSourceTestCase.php2
-rw-r--r--tests/simple_unit/Soap/ContactManager.php34
-rw-r--r--tests/simple_unit/Soap/SoapTestCase.php3
-rw-r--r--tests/simple_unit/SqlMap/ActiveRecordSqlMapTest.php2
-rw-r--r--tests/simple_unit/SqlMap/BaseCase.php2
-rw-r--r--tests/simple_unit/SqlMap/CacheTest.php2
-rw-r--r--tests/simple_unit/SqlMap/DelegateTest.php2
-rw-r--r--tests/simple_unit/SqlMap/Dynamic/DynamicTest.php2
-rw-r--r--tests/simple_unit/SqlMap/GroupByTest.php2
-rw-r--r--tests/simple_unit/SqlMap/InheritanceTest.php3
-rw-r--r--tests/simple_unit/SqlMap/ParameterMapTest.php2
-rw-r--r--tests/simple_unit/SqlMap/PropertyAccessTest.php2
-rw-r--r--tests/simple_unit/SqlMap/ResultClassTest.php2
-rw-r--r--tests/simple_unit/SqlMap/ResultMapTest.php2
-rw-r--r--tests/simple_unit/SqlMap/SelectKeyTest.php2
-rw-r--r--tests/simple_unit/SqlMap/SqlMapCacheTest.php2
-rw-r--r--tests/simple_unit/SqlMap/StatementExtendsTest.php2
-rw-r--r--tests/simple_unit/SqlMap/StatementTest.php2
-rw-r--r--tests/simple_unit/SqlMap/TestQueryForMap.php2
-rw-r--r--tests/simple_unit/SqlMap/common.php2
-rw-r--r--tests/simple_unit/SqlMap/domain/A.php2
-rw-r--r--tests/simple_unit/SqlMap/domain/Account.php2
-rw-r--r--tests/simple_unit/SqlMap/domain/AccountBis.php2
-rw-r--r--tests/simple_unit/SqlMap/domain/AccountCollection.php2
-rw-r--r--tests/simple_unit/SqlMap/domain/B.php2
-rw-r--r--tests/simple_unit/SqlMap/domain/Book.php4
-rw-r--r--tests/simple_unit/SqlMap/domain/C.php2
-rw-r--r--tests/simple_unit/SqlMap/domain/Category.php2
-rw-r--r--tests/simple_unit/SqlMap/domain/Complex.php2
-rw-r--r--tests/simple_unit/SqlMap/domain/D.php2
-rw-r--r--tests/simple_unit/SqlMap/domain/Document.php2
-rw-r--r--tests/simple_unit/SqlMap/domain/DocumentCollection.php2
-rw-r--r--tests/simple_unit/SqlMap/domain/E.php2
-rw-r--r--tests/simple_unit/SqlMap/domain/F.php2
-rw-r--r--tests/simple_unit/SqlMap/domain/LineItem.php2
-rw-r--r--tests/simple_unit/SqlMap/domain/LineItemCollection.php2
-rw-r--r--tests/simple_unit/SqlMap/domain/Newspaper.php2
-rw-r--r--tests/simple_unit/SqlMap/domain/Order.php2
-rw-r--r--tests/simple_unit/SqlMap/domain/Other.php2
-rw-r--r--tests/simple_unit/SqlMap/domain/Sample.php2
-rw-r--r--tests/simple_unit/SqlMap/domain/Search.php2
-rw-r--r--tests/simple_unit/SqlMap/domain/User.php2
-rw-r--r--tests/simple_unit/SqlMap/gen.php2
-rw-r--r--tests/simple_unit/SqlMap/queryForListLimitTest.php2
-rw-r--r--tests/simple_unit/TableGateway/BaseGatewayTest.php3
-rw-r--r--tests/simple_unit/TableGateway/CountTest.php3
-rw-r--r--tests/simple_unit/TableGateway/DeleteByPkTest.php3
-rw-r--r--tests/simple_unit/TableGateway/MagicCallTest.php3
-rw-r--r--tests/simple_unit/TableGateway/TableGatewayPgsqlTest.php3
-rw-r--r--tests/simple_unit/TableGateway/TableInfoGatewayTest.php3
-rw-r--r--tests/simple_unit/TableGateway/TestFindByPk.php3
-rw-r--r--tests/simple_unit/Tickets/Ticket589Test.php2
-rw-r--r--tests/simple_unit/unit.php2
-rw-r--r--tests/simple_unit/ws.php2
-rwxr-xr-xtests/test_tools/PradoGenericSelenium2Test.php230
-rw-r--r--tests/test_tools/PradoGenericSeleniumTest.php42
-rw-r--r--tests/test_tools/README.txt90
-rw-r--r--tests/test_tools/phpunit_bootstrap.php2
-rw-r--r--tests/test_tools/simpletest/HtmlReporterWithCoverage.php65
-rw-r--r--tests/test_tools/simpletest/authentication.php3
-rw-r--r--tests/test_tools/simpletest/browser.php9
-rw-r--r--tests/test_tools/simpletest/collector.php28
-rw-r--r--tests/test_tools/simpletest/compatibility.php1
-rw-r--r--tests/test_tools/simpletest/cookies.php51
-rw-r--r--tests/test_tools/simpletest/detached.php3
-rw-r--r--tests/test_tools/simpletest/dumper.php3
-rw-r--r--tests/test_tools/simpletest/encoding.php91
-rw-r--r--tests/test_tools/simpletest/errors.php3
-rw-r--r--tests/test_tools/simpletest/exceptions.php3
-rw-r--r--tests/test_tools/simpletest/expectation.php1
-rw-r--r--tests/test_tools/simpletest/form.php49
-rw-r--r--tests/test_tools/simpletest/frames.php3
-rw-r--r--tests/test_tools/simpletest/http.php89
-rw-r--r--tests/test_tools/simpletest/invoker.php1
-rw-r--r--tests/test_tools/simpletest/mock_objects.php3
-rw-r--r--tests/test_tools/simpletest/options.php1
-rw-r--r--tests/test_tools/simpletest/page.php5
-rw-r--r--tests/test_tools/simpletest/parser.php3
-rw-r--r--tests/test_tools/simpletest/reflection_php4.php3
-rw-r--r--tests/test_tools/simpletest/reflection_php5.php7
-rw-r--r--tests/test_tools/simpletest/remote.php13
-rw-r--r--tests/test_tools/simpletest/reporter.php3
-rw-r--r--tests/test_tools/simpletest/runner.php49
-rw-r--r--tests/test_tools/simpletest/scorer.php3
-rw-r--r--tests/test_tools/simpletest/selector.php3
-rw-r--r--tests/test_tools/simpletest/shell_tester.php7
-rw-r--r--tests/test_tools/simpletest/simple_test.php1
-rw-r--r--tests/test_tools/simpletest/simpletest.php3
-rw-r--r--tests/test_tools/simpletest/socket.php3
-rw-r--r--tests/test_tools/simpletest/tag.php235
-rw-r--r--tests/test_tools/simpletest/test_case.php1
-rw-r--r--tests/test_tools/simpletest/unit_tester.php1
-rw-r--r--tests/test_tools/simpletest/url.php3
-rw-r--r--tests/test_tools/simpletest/user_agent.php49
-rw-r--r--tests/test_tools/simpletest/web_tester.php213
-rw-r--r--tests/test_tools/simpletest/xml.php1
-rw-r--r--tests/unit/AllTests.php2
-rw-r--r--tests/unit/Caching/AllTests.php7
-rw-r--r--tests/unit/Caching/TAPCCacheTest.php15
-rw-r--r--tests/unit/Caching/TDirectoryCacheDependencyTest.php2
-rw-r--r--tests/unit/Caching/TFileCacheDependencyTest.php2
-rw-r--r--tests/unit/Caching/TMemCacheTest.php13
-rw-r--r--tests/unit/Caching/TSqliteCacheTest.php17
-rw-r--r--tests/unit/Collections/AllTests.php7
-rw-r--r--tests/unit/Collections/TAttributeCollectionTest.php19
-rw-r--r--tests/unit/Collections/TListTest.php68
-rw-r--r--tests/unit/Collections/TMapTest.php3
-rw-r--r--tests/unit/Collections/TPagedDataSourceTest.php25
-rw-r--r--tests/unit/Collections/TPagedListTest.php53
-rw-r--r--tests/unit/Collections/TPriorityMapTest.php161
-rw-r--r--tests/unit/Collections/TQueueTest.php13
-rw-r--r--tests/unit/Collections/TStackTest.php13
-rw-r--r--tests/unit/Data/DataGateway/AllTests.php7
-rw-r--r--tests/unit/Data/DataGateway/TSqlCriteriaTest.php25
-rw-r--r--tests/unit/Data/SqlMap/AllTests.php1
-rw-r--r--tests/unit/Data/SqlMap/DataMapper/AllTests.php3
-rw-r--r--tests/unit/Data/SqlMap/DataMapper/TPropertyAccessTest.php2
-rw-r--r--tests/unit/Data/SqlMap/DynamicParameterTest.php2
-rw-r--r--tests/unit/Data/TDbCommandTest.php6
-rw-r--r--tests/unit/Data/TDbConnectionTest.php6
-rw-r--r--tests/unit/Data/TDbDataReaderTest.php6
-rw-r--r--tests/unit/Data/TDbTransactionTest.php6
-rw-r--r--tests/unit/Data/runtime/.gitignore2
-rw-r--r--tests/unit/I18N/core/AllTests.php7
-rw-r--r--tests/unit/I18N/core/ChoiceFormatTest.php2
-rw-r--r--tests/unit/I18N/core/CultureInfoTest.php22
-rw-r--r--tests/unit/I18N/core/DateFormatTest.php56
-rw-r--r--tests/unit/I18N/core/DateTimeFormatInfoTest.php67
-rw-r--r--tests/unit/I18N/core/NumberFormatInfoTest.php36
-rw-r--r--tests/unit/I18N/core/NumberFormatTest.php52
-rw-r--r--tests/unit/IO/AllTests.php7
-rw-r--r--tests/unit/IO/TTarFileExtractorTest.php5
-rw-r--r--tests/unit/IO/TTextWriterTest.php3
-rw-r--r--tests/unit/Security/AllTests.php7
-rw-r--r--tests/unit/Security/TAuthManagerTest.php35
-rw-r--r--tests/unit/Security/TAuthorizationRuleTest.php15
-rw-r--r--tests/unit/Security/TSecurityManagerTest.php31
-rw-r--r--tests/unit/Security/TUserManagerTest.php31
-rw-r--r--tests/unit/Security/TUserTest.php21
-rw-r--r--tests/unit/TComponentTest.php970
-rw-r--r--tests/unit/Util/AllTests.php7
-rw-r--r--tests/unit/Util/TDateTimeStampTest.php3
-rw-r--r--tests/unit/Util/TLoggerTest.php3
-rw-r--r--tests/unit/Util/TSimpleDateFormatterTest.php21
-rw-r--r--tests/unit/Web/AllTests.php9
-rw-r--r--tests/unit/Web/TAssetManagerTest.php57
-rw-r--r--tests/unit/Web/TCacheHttpSessionTest.php31
-rw-r--r--tests/unit/Web/THttpCookieCollectionTest.php5
-rw-r--r--tests/unit/Web/THttpCookieTest.php3
-rw-r--r--tests/unit/Web/THttpRequestTest.php3
-rw-r--r--tests/unit/Web/THttpResponseTest.php21
-rw-r--r--tests/unit/Web/THttpSessionTest.php3
-rw-r--r--tests/unit/Web/THttpUtilityTest.php3
-rw-r--r--tests/unit/Web/TUriTest.php13
-rw-r--r--tests/unit/Web/UI/ActiveControls/AllTests.php7
-rw-r--r--tests/unit/Web/UI/ActiveControls/TActiveHiddenFieldTest.php2
-rw-r--r--tests/unit/Web/UI/AllTests.php7
-rw-r--r--tests/unit/Web/UI/TClientScriptManagerTest.php3
-rw-r--r--tests/unit/Web/UI/TControlAdapterTest.php23
-rw-r--r--tests/unit/Web/UI/TControlTest.php133
-rw-r--r--tests/unit/Web/UI/TFormTest.php11
-rw-r--r--tests/unit/Web/UI/THtmlWriterTest.php13
-rw-r--r--tests/unit/Web/UI/TPageStatePersisterTest.php9
-rw-r--r--tests/unit/Web/UI/TPageTest.php83
-rw-r--r--tests/unit/Web/UI/TSessionPageStatePersisterTest.php11
-rw-r--r--tests/unit/Web/UI/TTemplateControlTest.php17
-rw-r--r--tests/unit/Web/UI/TTemplateManagerTest.php11
-rw-r--r--tests/unit/Web/UI/TTemplateTest.php23
-rw-r--r--tests/unit/Web/UI/TThemeManagerTest.php13
-rw-r--r--tests/unit/Web/UI/TThemeTest.php17
-rw-r--r--tests/unit/Web/UI/WebControls/AllTests.php7
-rw-r--r--tests/unit/Web/UI/WebControls/TDropDownListTest.php1
-rw-r--r--tests/unit/Web/UI/WebControls/TLabelTest.php2
-rw-r--r--tests/unit/Web/UI/WebControls/TRequiredFieldValidatorTest.php2
-rw-r--r--tests/unit/Web/UI/WebControls/TXmlTransformTest.php5
-rw-r--r--tests/unit/Xml/AllTests.php7
-rw-r--r--tests/unit/Xml/TXmlDocumentTest.php7
-rw-r--r--tests/unit/Xml/TXmlElementListTest.php3
-rw-r--r--tests/unit/Xml/TXmlElementTest.php3
-rw-r--r--travis.php.ini1
987 files changed, 10275 insertions, 9708 deletions
diff --git a/.gitignore b/.gitignore
index 93cbf3f5..f5479d19 100644
--- a/.gitignore
+++ b/.gitignore
@@ -33,4 +33,5 @@ bin/coveralls
bin/dbunit.php
#OSX
-.DS_Store \ No newline at end of file
+.DS_Store
+bin/dbunit
diff --git a/.travis.yml b/.travis.yml
index f9d65a82..b6badb3d 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -9,10 +9,9 @@ before_script:
- composer self-update
- composer install --prefer-source --dev
- export PATH=./bin/:$PATH
- - phpenv config-add travis.php.ini
script:
- - ./bin/phing coverage
+ - bash -c 'if [ "$TRAVIS_PHP_VERSION" == "5.3" ]; then phing test; else phing coverage ; fi;'
after_script:
- - php ./bin/coveralls -v \ No newline at end of file
+ - php ./bin/coveralls -v
diff --git a/COPYRIGHT b/COPYRIGHT
index daa3d02c..4d7a65d8 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -1,7 +1,7 @@
The PRADO framework and the included demos are free software.
They are released under the terms of the following BSD License.
-Copyright 2004-2013, The PRADO Group (http://www.pradosoft.com)
+Copyright 2004-2014, The PRADO Group (http://www.pradosoft.com)
All rights reserved.
Redistribution and use in source and binary forms, with or without
diff --git a/HISTORY b/HISTORY
index ef7b7d60..4ba7d972 100644
--- a/HISTORY
+++ b/HISTORY
@@ -1,3 +1,30 @@
+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)
+BUG: Issue #498 - Typo in TActiveFileUpload (Jens-mB)
+BUG: Issue #499 - Avoid scrolling when calling TControl::focus() (david0)
+BUG: Issue #502 - TSlider behaves strangely in TTabView (ctrlaltca)
+BUG: Issue #504 - Default Button cannot be referenced by <subControlId>.<controlId> (ctrlaltca)
+BUG: Issue #506 - Unused lines of code in TLiteralColumn::initializeCell (cross)
+BUG: Issue #511 - TActivePager's ButtonCssClass property is not rendered in buttons (ctrlaltca)
+BUG: Issue #515 - THtmlArea should override Readonly property (ctrlaltca)
+BUG: Issue #516 - Check Validators in TActiveEditCommandColumn (ctrlaltca)
+BUG: Issue #517 - TXmlDocument adjustment (gnit)
+BUG: Issue #518 - Runtime Notice in Gettext::factory() (ctrlaltca)
+BUG: Issue #519 - For MySQL in case PDO::CASE_LOWER creating table info does not work (ganiuszka)
+BUG: Issue #246 - Refix: User date() instead of gmdate() in TLogRoute (drigolin)
+BUG: Issue #520 - Unknown runtime error with Internet Explorer 8 (david0)
+BUG: Issue #524 - JSON error (5): Malformed UTF-8 characters when encoding callback response (david0)
+BUG: Issue #526 - TJsonRpcProtocol::callMethod, requested method is called twice (jojoinside)
+BUG: Issue #527 - TJsonRpcProtocol::callMethod, semicolon must be removed (jojoinside)
+ENH: Ported tests to Selenium2
+BUG: Avoid an exception loop on callback error when headers have already been sent (ctrlaltca)
+BUG: Avoid rendering <script> blocks in callbacks (ctrlaltca)
+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
BUG: Issue #467 - TSafeHtml error on php 5.5 (ctrlaltca)
diff --git a/README.md b/README.md
index 8257dcdf..36d0bc19 100644
--- a/README.md
+++ b/README.md
@@ -5,7 +5,7 @@ PRADO stands for PHP Rapid Application Development Object-oriented.
[![Build Status](https://travis-ci.org/pradosoft/prado.png?branch=master)](https://travis-ci.org/pradosoft/prado)
[![Coverage Status](https://coveralls.io/repos/pradosoft/prado/badge.png?branch=master)](https://coveralls.io/r/pradosoft/prado?branch=master)
-[![Dependencies Status](https://d2xishtp1ojlk0.cloudfront.net/d/8499593)](http://depending.in/pradosoft/prado)
+[![Dependencies Status](http://depending.in/pradosoft/prado.png)](http://depending.in/pradosoft/prado)
[![Total Downloads](https://poser.pugx.org/pradosoft/prado/downloads.png)](https://packagist.org/packages/pradosoft/prado)
[![Latest Stable Version](https://poser.pugx.org/pradosoft/prado/v/stable.png)](https://packagist.org/packages/pradosoft/prado)
diff --git a/UPGRADE b/UPGRADE
index 51f0304d..541c9cfb 100644
--- a/UPGRADE
+++ b/UPGRADE
@@ -1,5 +1,5 @@
- Upgrading Instructions for PRADO Framework v3.2.3
+ Upgrading Instructions for PRADO Framework v3.2.4
=================================================
!!!IMPORTANT!!!
@@ -9,9 +9,11 @@ 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.2.2
+Upgrading from v3.2.3
---------------------
+- TMarkdown is using Parsedown instead of Markdown, adding GitHub Flavored Markdown support.
+
Upgrading from v3.2.1
---------------------
- TEmailAddressValidator's CheckMXRecord property now defaults to false.
diff --git a/bin/prado-cli.php b/bin/prado-cli.php
index b4b43062..1906946b 100755
--- a/bin/prado-cli.php
+++ b/bin/prado-cli.php
@@ -5,9 +5,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: prado-cli.php 3316 2013-08-20 13:51:25Z ctrlaltca $
*/
if(!isset($_SERVER['argv']) || php_sapi_name()!=='cli')
@@ -58,7 +57,6 @@ PradoCommandLineInterpreter::getInstance()->run($_SERVER['argv']);
* Command line interface, configures the action classes and dispatches the command actions.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: prado-cli.php 3316 2013-08-20 13:51:25Z ctrlaltca $
* @since 3.0.5
*/
class PradoCommandLineInterpreter
@@ -136,7 +134,6 @@ class PradoCommandLineInterpreter
* Base class for command line actions.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: prado-cli.php 3316 2013-08-20 13:51:25Z ctrlaltca $
* @since 3.0.5
*/
abstract class PradoCommandLineAction
@@ -227,7 +224,6 @@ EOD;
* Create a Prado project skeleton, including directories and files.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: prado-cli.php 3316 2013-08-20 13:51:25Z ctrlaltca $
* @since 3.0.5
*/
class PradoCommandLineCreateProject extends PradoCommandLineAction
@@ -305,8 +301,7 @@ require_once($frameworkPath);
$application=new TApplication;
$application->run();
-
-?>';
+';
}
protected function renderConfigFile($appName)
@@ -379,7 +374,6 @@ EOD;
* Creates test fixtures for a Prado application.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: prado-cli.php 3316 2013-08-20 13:51:25Z ctrlaltca $
* @since 3.0.5
*/
class PradoCommandLineCreateTests extends PradoCommandLineAction
@@ -431,8 +425,7 @@ $test_cases = dirname(__FILE__)."/unit";
$tester = new PradoUnitTester($test_cases, $app_directory);
$tester->run(new HtmlReporter());
-
-?>';
+';
}
protected function renderFunctionalTestFixture()
@@ -446,8 +439,7 @@ $test_cases = dirname(__FILE__)."/functional";
$tester=new PradoFunctionalTester($test_cases);
$tester->run(new SimpleReporter());
-
-?>';
+';
}
}
@@ -456,7 +448,6 @@ $tester->run(new SimpleReporter());
* Creates and run a Prado application in a PHP Shell.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: prado-cli.php 3316 2013-08-20 13:51:25Z ctrlaltca $
* @since 3.0.5
*/
class PradoCommandLinePhpShell extends PradoCommandLineAction
@@ -478,7 +469,6 @@ class PradoCommandLinePhpShell extends PradoCommandLineAction
* Runs unit test cases.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: prado-cli.php 3316 2013-08-20 13:51:25Z ctrlaltca $
* @since 3.0.5
*/
class PradoCommandLineUnitTest extends PradoCommandLineAction
@@ -594,7 +584,6 @@ class PradoCommandLineUnitTest extends PradoCommandLineAction
* Create active record skeleton
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: prado-cli.php 3316 2013-08-20 13:51:25Z ctrlaltca $
* @since 3.1
*/
class PradoCommandLineActiveRecordGen extends PradoCommandLineAction
@@ -737,7 +726,7 @@ $props
return parent::finder(\$className);
}
}
-?>
+
EOD;
}
}
@@ -747,7 +736,6 @@ EOD;
*
* @author Matthias Endres <me[at]me23[dot]de>
* @author Daniel Sampedro Bello <darthdaniel85[at]gmail[dot]com>
- * @version $Id: prado-cli.php 3316 2013-08-20 13:51:25Z ctrlaltca $
* @since 3.2
*/
class PradoCommandLineActiveRecordGenAll extends PradoCommandLineAction {
diff --git a/build.xml b/build.xml
index 023debe2..6ffdc523 100644
--- a/build.xml
+++ b/build.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
- PRADO 3.2 build file - Copyright (C) 2013 PradoSoft
+ PRADO 3.2 build file - Copyright (C) 2014 PradoSoft
Requirements
============
diff --git a/buildscripts/apigen/pradosoft/@layout.latte b/buildscripts/apigen/pradosoft/@layout.latte
index 2790d92c..266f0e17 100644
--- a/buildscripts/apigen/pradosoft/@layout.latte
+++ b/buildscripts/apigen/pradosoft/@layout.latte
@@ -182,7 +182,7 @@ the file LICENSE.md that was distributed with this source code.
<a href="/support/">Contact Us</a>
<br/>
{$config->title} API documentation generated by <a href="http://apigen.org">{$generator} {$version}</a>
- <br/>Copyright &copy; 2006-2013 by the PRADO Group.<br/>
+ <br/>Copyright &copy; 2006-2014 by the PRADO Group.<br/>
<a title="Powered by PRADO" href="http://www.pradosoft.com/"><img src="http://www.pradosoft.com/images/powered2.gif" style="border-width:0px;" alt="Powered by PRADO" /></a>
</div>
diff --git a/buildscripts/classtree/DWExtension.php b/buildscripts/classtree/DWExtension.php
index 8849efea..a7a1ca30 100644
--- a/buildscripts/classtree/DWExtension.php
+++ b/buildscripts/classtree/DWExtension.php
@@ -252,4 +252,3 @@ class PradoTagChooser
return $this->_document->saveXML();
}
}
-?> \ No newline at end of file
diff --git a/buildscripts/index/build.php b/buildscripts/index/build.php
index bbe151e6..a2e57286 100644
--- a/buildscripts/index/build.php
+++ b/buildscripts/index/build.php
@@ -61,5 +61,3 @@ else
{
echo "Usage: 'php build.php quickstart' or 'php build.php api'\n";
}
-
-?>
diff --git a/buildscripts/index/quickstart_index.php b/buildscripts/index/quickstart_index.php
index 61e21514..5df0f549 100644
--- a/buildscripts/index/quickstart_index.php
+++ b/buildscripts/index/quickstart_index.php
@@ -104,4 +104,3 @@ class quickstart_index
echo "\nSaving search index ({$count}) to {$this->_dir}\n\n";
}
}
-?> \ No newline at end of file
diff --git a/buildscripts/index/search.php b/buildscripts/index/search.php
index 23948ca5..ff83e629 100644
--- a/buildscripts/index/search.php
+++ b/buildscripts/index/search.php
@@ -11,7 +11,7 @@ require_once('Zend/Search/Lucene.php');
if($keyword!=='')
{
- $search=new Zend_Search_Lucene(realpath(dirname(__FILE__)));
+ $search=new Zend_Search_Lucene(realpath(dirname(__FILE__)));
$results=$search->find(strtolower($keyword));
$content='';
foreach($results as $entry)
@@ -32,5 +32,3 @@ $page=preg_replace('/<!-- content begin -->.*<!-- content end -->/ms',$content,$
if($keyword!=='')
$page=preg_replace('/<input type="text" name="keyword"/','<input type="text" name="keyword" value="'.htmlentities($keyword).'"',$page);
echo $page;
-
-?> \ No newline at end of file
diff --git a/buildscripts/phing/tasks/PradoPearTask.php b/buildscripts/phing/tasks/PradoPearTask.php
index 5d615084..541c972e 100644
--- a/buildscripts/phing/tasks/PradoPearTask.php
+++ b/buildscripts/phing/tasks/PradoPearTask.php
@@ -129,5 +129,3 @@ class PradoPearTask extends Task
echo $e->getMessage();
}
}
-
-?> \ No newline at end of file
diff --git a/buildscripts/phpbuilder/build.php b/buildscripts/phpbuilder/build.php
index 17e02806..47b7bec4 100644
--- a/buildscripts/phpbuilder/build.php
+++ b/buildscripts/phpbuilder/build.php
@@ -144,5 +144,3 @@ function unfold_file($fileName)
}
return $content;
}
-
-?> \ No newline at end of file
diff --git a/buildscripts/setup.php b/buildscripts/setup.php
deleted file mode 100644
index 59d636b8..00000000
--- a/buildscripts/setup.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-/**
- * Setup script for build system. You could run this script to install or upgrade Phing
- * with dependencies. Please make sure to change the PEAR_CMD constant to how you want
- * to execute the PEAR installer.
- *
- * @author Knut Urdalen
- */
-
-// Where to find the PEAR installer
-define('PEAR_CMD', 'sudo pear');
-
-// Storing your preferred_state
-$preferred_state = exec(PEAR_CMD.' config-get preferred_state');
-
-// Setting preferred state temporary to development to automatically get all dependencies
-system(PEAR_CMD.' config-set preferred_state devel');
-
-// Ensure that the PEAR channel protocol is updated
-system(PEAR_CMD.' channel-update pear.php.net');
-
-// Ensure that the Phing PEAR channel is added
-system(PEAR_CMD.' channel-discover pear.phing.info');
-
-// and channel protocol is updated
-system(PEAR_CMD.' channel-update pear.phing.info');
-
-// Checking if Phing is already installed
-$result = exec(PEAR_CMD.' info phing/phing');
-if(strstr($result, 'No information found for')) { // Install
- system(PEAR_CMD.' install --alldeps phing/phing');
-} else { // Try to upgrade
- system(PEAR_CMD.' upgrade --alldeps phing/phing');
-}
-
-// Setting your preferred state back to what it was
-system(PEAR_CMD.' config-set preferred_state '.$preferred_state);
-
-?> \ No newline at end of file
diff --git a/buildscripts/texbuilder/Page2Tex.php b/buildscripts/texbuilder/Page2Tex.php
index b0d37149..ce2ece7f 100644
--- a/buildscripts/texbuilder/Page2Tex.php
+++ b/buildscripts/texbuilder/Page2Tex.php
@@ -343,5 +343,3 @@ class Page2Tex
return "<p id=\"".($page + (++self::$p_count))."\" class=\"block-content\">";
}
}
-
-?>
diff --git a/buildscripts/texbuilder/quickstart/build.php b/buildscripts/texbuilder/quickstart/build.php
index a42d6be3..6a824125 100644
--- a/buildscripts/texbuilder/quickstart/build.php
+++ b/buildscripts/texbuilder/quickstart/build.php
@@ -76,6 +76,3 @@ if($argv[1] == 'pdf')
echo " Unable to find pdfLatex executable $pdflatexExec";
}
}
-
-
-?>
diff --git a/buildscripts/texbuilder/quickstart/pages.php b/buildscripts/texbuilder/quickstart/pages.php
index cd11c4b1..d16878c9 100644
--- a/buildscripts/texbuilder/quickstart/pages.php
+++ b/buildscripts/texbuilder/quickstart/pages.php
@@ -9,13 +9,14 @@ $pages['Getting Started'] = array(
'GettingStarted/AboutPrado.page',
'GettingStarted/Installation.page',
'GettingStarted/NewFeatures.page',
- 'GettingStarted/Upgrading.page'
+ 'GettingStarted/Upgrading.page',
+ 'GettingStarted/Wsat.page',
+ 'GettingStarted/CommandLine.page'
);
$pages['Tutorials'] = array(
'GettingStarted/HelloWorld.page',
'Fundamentals/Hangman.page',
- 'GettingStarted/CommandLine.page'
);
$pages['Tutorial: Currency Converter'] = array(
@@ -26,13 +27,10 @@ $pages['Tutorial: Building an AJAX Chat Application'] = array(
'Tutorial/AjaxChat.page'
);
-$pages['Tutorial: Addressbook'] = array(
- 'Tutorial/AddressBook.page'
- );
-
$pages['Fundamentals'] = array(
'Fundamentals/Architecture.page',
- 'Fundamentals/Components.page',
+ 'Fundamentals/Components1.page',
+ 'Fundamentals/Components2.page',
'Fundamentals/Controls.page',
'Fundamentals/Pages.page',
'Fundamentals/Modules.page',
@@ -66,6 +64,7 @@ $pages['Control Reference : Standard Controls'] = array(
'Controls/Head.page',
'Controls/HiddenField.page',
'Controls/HtmlArea.page',
+ 'Controls/HtmlArea4.page',
'Controls/HyperLink.page',
'Controls/Image.page',
'Controls/ImageButton.page',
@@ -76,6 +75,7 @@ $pages['Control Reference : Standard Controls'] = array(
'Controls/Label.page',
'Controls/LinkButton.page',
'Controls/Literal.page',
+ 'Controls/Markdown.page',
'Controls/MultiView.page',
'Controls/OutputCache.page',
'Controls/Pager.page',
@@ -177,5 +177,3 @@ $pages['Client-side Scripting'] = array(
return $pages;
//-------------- END CONFIG ----------------
-
-?> \ No newline at end of file
diff --git a/buildscripts/texbuilder/quickstart/quickstart.tex b/buildscripts/texbuilder/quickstart/quickstart.tex
index 41258800..396f7bb3 100644
--- a/buildscripts/texbuilder/quickstart/quickstart.tex
+++ b/buildscripts/texbuilder/quickstart/quickstart.tex
@@ -52,8 +52,8 @@
%----------------- TITLE --------------
-\title{\Huge \bfseries PRADO v3.2.3 Quickstart Tutorial
- \thanks{Copyright 2004-2013. All Rights Reserved.}
+\title{\Huge \bfseries PRADO v3.2.4 Quickstart Tutorial
+ \thanks{Copyright 2004-2014. All Rights Reserved.}
}
\author{Qiang Xue and Wei Zhuo}
\date{\today}
@@ -78,7 +78,7 @@ Prado quick start doc
\chapter*{License}
\addcontentsline{toc}{chapter}{License}
PRADO is free software released under the terms of the following BSD license.\\
-Copyright 2004-2013, The PRADO Group (http://www.pradosoft.com)
+Copyright 2004-2014, The PRADO Group (http://www.pradosoft.com)
All rights reserved.
Redistribution and use in source and binary forms, with or without
diff --git a/buildscripts/texbuilder/sqlmap/build.php b/buildscripts/texbuilder/sqlmap/build.php
index 4ea4d75e..066af486 100644
--- a/buildscripts/texbuilder/sqlmap/build.php
+++ b/buildscripts/texbuilder/sqlmap/build.php
@@ -76,6 +76,3 @@ if($argv[1] == 'pdf')
echo " Unable to find pdfLatex executable $pdflatexExec";
}
}
-
-
-?>
diff --git a/buildscripts/texbuilder/sqlmap/pages.php b/buildscripts/texbuilder/sqlmap/pages.php
index 57fff767..b0b7bca0 100644
--- a/buildscripts/texbuilder/sqlmap/pages.php
+++ b/buildscripts/texbuilder/sqlmap/pages.php
@@ -58,5 +58,3 @@ $pages['Advanced Topics'] = array(
);
return $pages;
-
-?> \ No newline at end of file
diff --git a/buildscripts/texbuilder/time-tracker/pages.php b/buildscripts/texbuilder/time-tracker/pages.php
index 732f675d..a9c32347 100644
--- a/buildscripts/texbuilder/time-tracker/pages.php
+++ b/buildscripts/texbuilder/time-tracker/pages.php
@@ -14,5 +14,3 @@ $pages['Testing Business Code'] = array(
'Docs/UserClassAndExceptions.page'
);
return $pages;
-
-?> \ No newline at end of file
diff --git a/composer.json b/composer.json
index 26c41985..baabd17a 100644
--- a/composer.json
+++ b/composer.json
@@ -22,6 +22,16 @@
"role" : "Developer"
},
{
+ "name": "Daniel Sampedro Bello",
+ "email": "darthdaniel85@gmail.com",
+ "role" : "Developer"
+ },
+ {
+ "name": "David Otto",
+ "email": "ottodavid@gmx.net",
+ "role" : "Developer"
+ },
+ {
"name": "Ciro Mattia Gonano",
"email": "ciromattia@gmail.com",
"role" : "Github/Packagist Maintainer"
@@ -47,7 +57,7 @@
"satooshi/php-coveralls": "dev-master"
},
"provide" : {
- "pradosoft/prado" : "3.2.3"
+ "pradosoft/prado" : "3.2.4"
},
"suggest" : {
"ext-apc" : "*",
diff --git a/demos/blog-tutorial/protected/pages/Day1/CreateContact.page b/demos/blog-tutorial/protected/pages/Day1/CreateContact.page
index 28ad4b21..0d9fc026 100755
--- a/demos/blog-tutorial/protected/pages/Day1/CreateContact.page
+++ b/demos/blog-tutorial/protected/pages/Day1/CreateContact.page
@@ -45,11 +45,11 @@ We use template to organize the presentational layout of the feedback form. In t
<h1>Contact</h1>
<p>Please fill out the following form to let me know your feedback on my blog. Thanks!</p>
-&lt;com:TForm>
+&lt;com:TForm>
<span>Your Name:</span>
&lt;com:TRequiredFieldValidator ControlToValidate="Name"
- ErrorMessage="Please provide your name."
+ ErrorMessage="Please provide your name."
Display="Dynamic" />
<br/>
&lt;com:TTextBox ID="Name" />
@@ -57,10 +57,10 @@ We use template to organize the presentational layout of the feedback form. In t
<br/>
<span>Your Email:</span>
&lt;com:TRequiredFieldValidator ControlToValidate="Email"
- ErrorMessage="Please provide your email address."
+ ErrorMessage="Please provide your email address."
Display="Dynamic" />
&lt;com:TEmailAddressValidator ControlToValidate="Email"
- ErrorMessage="You entered an invalid email address."
+ ErrorMessage="You entered an invalid email address."
Display="Dynamic" />
<br/>
&lt;com:TTextBox ID="Email" />
@@ -68,11 +68,11 @@ We use template to organize the presentational layout of the feedback form. In t
<br/>
<span>Feedback:</span>
&lt;com:TRequiredFieldValidator ControlToValidate="Feedback"
- ErrorMessage="Please provide your feedback."
+ ErrorMessage="Please provide your feedback."
Display="Dynamic" />
<br/>
-&lt;com:TTextBox ID="Feedback"
- TextMode="MultiLine"
+&lt;com:TTextBox ID="Feedback"
+ TextMode="MultiLine"
Rows="10"
Columns="40" />
@@ -99,13 +99,13 @@ Besides <tt>TTextBox</tt> controls, the template also uses many validator contro
<com:TTextHighlighter CssClass="source" Language="prado">
<span>Your Email:</span>
-&lt;com:TRequiredFieldValidator
+&lt;com:TRequiredFieldValidator
ControlToValidate="Email"
- ErrorMessage="Please provide your email address."
+ ErrorMessage="Please provide your email address."
Display="Dynamic" />
-&lt;com:TEmailAddressValidator
+&lt;com:TEmailAddressValidator
ControlToValidate="Email"
- ErrorMessage="You entered an invalid email address."
+ ErrorMessage="You entered an invalid email address."
Display="Dynamic" />
<br/>
&lt;com:TTextBox ID="Email" />
@@ -152,28 +152,27 @@ class Contact extends TPage
/**
* Event handler for the OnClick event of the submit button.
* @param TButton the button triggering the event
- * @param TEventParameter event parameter (null here)
+ * @param TEventParameter event parameter (null here)
*/
public function submitButtonClicked($sender, $param)
{
if ($this->IsValid) // check if input validation is successful
{
// obtain the user name, email, feedback from the textboxes
- $name = $this->Name->Text;
+ $name = $this->Name->Text;
$email = $this->Email->Text;
$feedback = $this->Feedback->Text;
-
+
// send an email to administrator with the above information
$this->mailFeedback($name, $email, $feedback);
}
}
-
+
protected function mailFeedback($name, $email, $feedback)
{
// implementation of sending the feedback email
}
}
-?>
</com:TTextHighlighter>
<p>
diff --git a/demos/blog-tutorial/protected/pages/Day1/Setup.page b/demos/blog-tutorial/protected/pages/Day1/Setup.page
index e8316253..582d0399 100755
--- a/demos/blog-tutorial/protected/pages/Day1/Setup.page
+++ b/demos/blog-tutorial/protected/pages/Day1/Setup.page
@@ -52,7 +52,6 @@ require_once('path/to/prado.php');
$application = new TApplication;
// run the application and handle user requests
$application->run();
-?>
</com:TTextHighlighter>
<com:InfoBox>
@@ -148,8 +147,8 @@ To change the location of the root page directory and change the name of homepag
<?xml version="1.0" encoding="utf-8"?>
<application id="blog" mode="Debug">
<services>
- <service id="page"
- class="TPageService"
+ <service id="page"
+ class="TPageService"
BasePath="path.to.pages"
DefaultPage="NewHome"
/>
diff --git a/demos/blog-tutorial/protected/pages/Day1/ShareLayout.page b/demos/blog-tutorial/protected/pages/Day1/ShareLayout.page
index 9cd0410b..6115ef22 100755
--- a/demos/blog-tutorial/protected/pages/Day1/ShareLayout.page
+++ b/demos/blog-tutorial/protected/pages/Day1/ShareLayout.page
@@ -66,7 +66,6 @@ The class file <tt>MainLayout.php</tt> is very simple:
class MainLayout extends TTemplateControl
{
}
-?>
</com:TTextHighlighter>
<com:InfoBox>
@@ -145,7 +144,6 @@ class Contact extends TPage
// ...
}
-?>
</com:TTextHighlighter>
<p>
diff --git a/demos/blog-tutorial/protected/pages/Day1/fr/CreateContact.page b/demos/blog-tutorial/protected/pages/Day1/fr/CreateContact.page
index e85d8bfe..0105f656 100755
--- a/demos/blog-tutorial/protected/pages/Day1/fr/CreateContact.page
+++ b/demos/blog-tutorial/protected/pages/Day1/fr/CreateContact.page
@@ -45,11 +45,11 @@ Nous utilisons un fichier gabarit pour organiser la présentation de notre formu
<h1>Contact</h1>
<p>Veuillez remplir le formulaire suivant pour me laisser vos impressions au sujet de mon blog. Merci !</p>
-&lt;com:TForm>
+&lt;com:TForm>
<span>Votre nom:</span>
&lt;com:TRequiredFieldValidator ControlToValidate="Name"
- ErrorMessage="Veuillez indiquer votre nom."
+ ErrorMessage="Veuillez indiquer votre nom."
Display="Dynamic" />
<br/>
&lt;com:TTextBox ID="Name" />
@@ -57,10 +57,10 @@ Nous utilisons un fichier gabarit pour organiser la présentation de notre formu
<br/>
<span>Votre email:</span>
&lt;com:TRequiredFieldValidator ControlToValidate="Email"
- ErrorMessage="Veuillez indiquer votre email."
+ ErrorMessage="Veuillez indiquer votre email."
Display="Dynamic" />
&lt;com:TEmailAddressValidator ControlToValidate="Email"
- ErrorMessage="Vous avez saisi un email invalide."
+ ErrorMessage="Vous avez saisi un email invalide."
Display="Dynamic" />
<br/>
&lt;com:TTextBox ID="Email" />
@@ -68,11 +68,11 @@ Nous utilisons un fichier gabarit pour organiser la présentation de notre formu
<br/>
<span>Commentaires:</span>
&lt;com:TRequiredFieldValidator ControlToValidate="Feedback"
- ErrorMessage="Veuillez saisir un commentaire."
+ ErrorMessage="Veuillez saisir un commentaire."
Display="Dynamic" />
<br/>
-&lt;com:TTextBox ID="Feedback"
- TextMode="MultiLine"
+&lt;com:TTextBox ID="Feedback"
+ TextMode="MultiLine"
Rows="10"
Columns="40" />
@@ -99,13 +99,13 @@ Avant le contrôle <tt>TTextBox</tt>, le gabarit utilise aussi plusieurs validat
<com:TTextHighlighter CssClass="source" Language="prado">
<span>Your Email:</span>
-&lt;com:TRequiredFieldValidator
+&lt;com:TRequiredFieldValidator
ControlToValidate="Email"
- ErrorMessage="Veuillez indiquer votre email."
+ ErrorMessage="Veuillez indiquer votre email."
Display="Dynamic" />
-&lt;com:TEmailAddressValidator
+&lt;com:TEmailAddressValidator
ControlToValidate="Email"
- ErrorMessage="Vous avez saisi un email invalide."
+ ErrorMessage="Vous avez saisi un email invalide."
Display="Dynamic" />
<br/>
&lt;com:TTextBox ID="Email" />
@@ -152,28 +152,27 @@ class Contact extends TPage
/**
* Gestionnaire d'évènement pour OnClick (bouton submit).
* @param TButton le bouton qui a générer l'évènement
- * @param TEventParameter les paramètres de l'évènement (null dans ce cas)
+ * @param TEventParameter les paramètres de l'évènement (null dans ce cas)
*/
public function submitButtonClicked($sender, $param)
{
if ($this->IsValid) // vérifie que les validations sont Ok
{
// récupère le nom de l'utilisateur, son email et son commentaire
- $name = $this->Name->Text;
+ $name = $this->Name->Text;
$email = $this->Email->Text;
$feedback = $this->Feedback->Text;
-
- // envoie un email à l'administrateur avec les informations
+
+ // envoie un email à l'administrateur avec les informations
$this->mailFeedback($name, $email, $feedback);
}
}
-
+
protected function mailFeedback($name, $email, $feedback)
{
// implémentation de l'envoi de l'email
}
}
-?>
</com:TTextHighlighter>
<p>
diff --git a/demos/blog-tutorial/protected/pages/Day1/fr/Setup.page b/demos/blog-tutorial/protected/pages/Day1/fr/Setup.page
index 22a7891c..0be1c1f0 100755
--- a/demos/blog-tutorial/protected/pages/Day1/fr/Setup.page
+++ b/demos/blog-tutorial/protected/pages/Day1/fr/Setup.page
@@ -49,11 +49,10 @@ require_once('path/to/prado.php');
$application = new TApplication;
// run the application and handle user requests
$application->run();
-?>
</com:TTextHighlighter>
<com:InfoBox>
-Le nom du script ne doit pas être obligatoirement <tt>index.php</tt>. Il peut porter n'importe quel nom à partir du moment ou le serveur peut l'interpréter comme étant un script PHP5. Par exemple, sur certains hébergements mutualisés, le script devra porter le nom <tt>index.php5</tt>, ce qui permettra au serveur Web de le traiter correctement.
+Le nom du script ne doit pas être obligatoirement <tt>index.php</tt>. Il peut porter n'importe quel nom à partir du moment ou le serveur peut l'interpréter comme étant un script PHP5. Par exemple, sur certains hébergements mutualisés, le script devra porter le nom <tt>index.php5</tt>, ce qui permettra au serveur Web de le traiter correctement.
</com:InfoBox>
<h3>Le fichier de configuration de l'application</h3>
@@ -145,8 +144,8 @@ Pour changer l'emplacement du dossier racine des pages et le nom de la page d'ac
<?xml version="1.0" encoding="utf-8"?>
<application id="blog" mode="Debug">
<services>
- <service id="page"
- class="TPageService"
+ <service id="page"
+ class="TPageService"
BasePath="path.to.pages"
DefaultPage="NewHome"
/>
diff --git a/demos/blog-tutorial/protected/pages/Day1/fr/ShareLayout.page b/demos/blog-tutorial/protected/pages/Day1/fr/ShareLayout.page
index cefff770..539b8376 100755
--- a/demos/blog-tutorial/protected/pages/Day1/fr/ShareLayout.page
+++ b/demos/blog-tutorial/protected/pages/Day1/fr/ShareLayout.page
@@ -68,7 +68,6 @@ Le fichier de classe <tt>MainLayout.php</tt> est très simple :
class MainLayout extends TTemplateControl
{
}
-?>
</com:TTextHighlighter>
<com:InfoBox>
@@ -147,13 +146,12 @@ class Contact extends TPage
// ...
}
-?>
</com:TTextHighlighter>
<p>
Ci-dessus, nous indiquons d'utiliser le gabarit principal <tt>MasterClass</tt> dans la méthode <tt>onPreInit()</tt> qui est héritée de <tt>TPage</tt>. Cette méthode est appelé par PRADO juste après que l'instance de la page soit créée. Nous pouvons ainsi déclarer au moment où la page est requise quel gabarit principal utiliser. Par exemple, quand la page est requise par un utilisateur enregistré, nous pouvons utiliser le gabarit A, et le gabarit B si l'utilisateur qui demande la page est un invité.
</p>
-
+
<p>
Nous pouvons aussi spécifier quel gabarit principal utiliser dans le fichier de <a href="http://www.pradosoft.com/demos/quickstart/?page=Configurations.AppConfig">configuration de l'application</a> ou encore dans le fichier de <a href="http://www.pradosoft.com/demos/quickstart/?page=Configurations.PageConfig">configuration de la page</a>. Ci-dessous, le fichier de configuration de l'application modifié pour notre blog.
</p>
diff --git a/demos/blog-tutorial/protected/pages/Day1/id/CreateContact.page b/demos/blog-tutorial/protected/pages/Day1/id/CreateContact.page
index 65be6417..caee30d0 100755
--- a/demos/blog-tutorial/protected/pages/Day1/id/CreateContact.page
+++ b/demos/blog-tutorial/protected/pages/Day1/id/CreateContact.page
@@ -45,11 +45,11 @@ Kita menggunakan template untuk menghatur tata letak penyajian terhadap formulir
<h1>Contact</h1>
<p>Please fill out the following form to let me know your feedback on my blog. Thanks!</p>
-&lt;com:TForm>
+&lt;com:TForm>
<span>Your Name:</span>
&lt;com:TRequiredFieldValidator ControlToValidate="Name"
- ErrorMessage="Please provide your name."
+ ErrorMessage="Please provide your name."
Display="Dynamic" />
<br/>
&lt;com:TTextBox ID="Name" />
@@ -57,10 +57,10 @@ Kita menggunakan template untuk menghatur tata letak penyajian terhadap formulir
<br/>
<span>Your Email:</span>
&lt;com:TRequiredFieldValidator ControlToValidate="Email"
- ErrorMessage="Please provide your email address."
+ ErrorMessage="Please provide your email address."
Display="Dynamic" />
&lt;com:TEmailAddressValidator ControlToValidate="Email"
- ErrorMessage="You entered an invalid email address."
+ ErrorMessage="You entered an invalid email address."
Display="Dynamic" />
<br/>
&lt;com:TTextBox ID="Email" />
@@ -68,11 +68,11 @@ Kita menggunakan template untuk menghatur tata letak penyajian terhadap formulir
<br/>
<span>Feedback:</span>
&lt;com:TRequiredFieldValidator ControlToValidate="Feedback"
- ErrorMessage="Please provide your feedback."
+ ErrorMessage="Please provide your feedback."
Display="Dynamic" />
<br/>
-&lt;com:TTextBox ID="Feedback"
- TextMode="MultiLine"
+&lt;com:TTextBox ID="Feedback"
+ TextMode="MultiLine"
Rows="10"
Columns="40" />
@@ -99,13 +99,13 @@ Selain kontrol <tt>TTextBox</tt>, template juga menggunakan banyak kontrol valid
<com:TTextHighlighter CssClass="source" Language="prado">
<span>Your Email:</span>
-&lt;com:TRequiredFieldValidator
+&lt;com:TRequiredFieldValidator
ControlToValidate="Email"
- ErrorMessage="Please provide your email address."
+ ErrorMessage="Please provide your email address."
Display="Dynamic" />
-&lt;com:TEmailAddressValidator
+&lt;com:TEmailAddressValidator
ControlToValidate="Email"
- ErrorMessage="You entered an invalid email address."
+ ErrorMessage="You entered an invalid email address."
Display="Dynamic" />
<br/>
&lt;com:TTextBox ID="Email" />
@@ -152,28 +152,27 @@ class Contact extends TPage
/**
* Pengendali event untuk event OnClick pada tombol submit.
* @param TButton tombol yang memicu event
- * @param TEventParameter parameter event (null di sini)
+ * @param TEventParameter parameter event (null di sini)
*/
public function submitButtonClicked($sender, $param)
{
if ($this->IsValid) // memeriksa apakan validasi input berhasil
{
// mendapatkan nama pengguna, email, umpan balik dari kotak teks
- $name = $this->Name->Text;
+ $name = $this->Name->Text;
$email = $this->Email->Text;
$feedback = $this->Feedback->Text;
-
+
// mengirimkan email ke administrator dengan informasi di atas
$this->mailFeedback($name, $email, $feedback);
}
}
-
+
protected function mailFeedback($name, $email, $feedback)
{
// implementasi pengiriman email umpan balik
}
}
-?>
</com:TTextHighlighter>
<p>
diff --git a/demos/blog-tutorial/protected/pages/Day1/id/Setup.page b/demos/blog-tutorial/protected/pages/Day1/id/Setup.page
index edc469d5..45ae8cf5 100755
--- a/demos/blog-tutorial/protected/pages/Day1/id/Setup.page
+++ b/demos/blog-tutorial/protected/pages/Day1/id/Setup.page
@@ -52,7 +52,6 @@ require_once('path/to/prado.php');
$application = new TApplication;
// jalankan aplikasi dan tangani permintaan pengguna
$application->run();
-?>
</com:TTextHighlighter>
<com:InfoBox>
@@ -148,8 +147,8 @@ Untuk membuat lokasi akar direktori halaman dan mengubah nama homepage, seseoran
<?xml version="1.0" encoding="utf-8"?>
<application id="blog" mode="Debug">
<services>
- <service id="page"
- class="TPageService"
+ <service id="page"
+ class="TPageService"
BasePath="path.to.pages"
DefaultPage="NewHome"
/>
diff --git a/demos/blog-tutorial/protected/pages/Day1/id/ShareLayout.page b/demos/blog-tutorial/protected/pages/Day1/id/ShareLayout.page
index d505beed..0c40181b 100755
--- a/demos/blog-tutorial/protected/pages/Day1/id/ShareLayout.page
+++ b/demos/blog-tutorial/protected/pages/Day1/id/ShareLayout.page
@@ -66,7 +66,6 @@ File kelas <tt>MainLayout.php</tt> sangat sederhana:
class MainLayout extends TTemplateControl
{
}
-?>
</com:TTextHighlighter>
<com:InfoBox>
@@ -145,7 +144,6 @@ class Contact extends TPage
// ...
}
-?>
</com:TTextHighlighter>
<p>
diff --git a/demos/blog-tutorial/protected/pages/Day2/CreateAR.page b/demos/blog-tutorial/protected/pages/Day2/CreateAR.page
index 1d7838a2..99e91d5a 100755..100644
--- a/demos/blog-tutorial/protected/pages/Day2/CreateAR.page
+++ b/demos/blog-tutorial/protected/pages/Day2/CreateAR.page
@@ -1,178 +1,127 @@
-<com:TContent ID="Main">
-
-<h1>Creating Active Record Classes</h1>
-
-<p>
-We need to create two <a href="http://www.pradosoft.com/demos/quickstart/?page=Database.ActiveRecord">Active Record</a> classes, <tt>UserRecord</tt> and <tt>PostRecord</tt>, to represent data records in the <tt>users</tt> and <tt>posts</tt> tables, respectively. Active Record classes must extend from the base class <tt>ActiveRecord</tt>, and must define property names that matches with the field names of the corresponding table.
-</p>
-
-<p>
-To better organize our directories, we create a new directory <tt>protected/database</tt> to hold the class files. We also modify our application configuration by inserting the following lines. It is equivalent to adding the directory <tt>protected/database</tt> to PHP include_path, which allows us to use the classes without explicitly including them.
-</p>
-
-<com:TTextHighlighter CssClass="source" Language="xml">
-<paths>
- <using namespace="Application.database.*" />
-</paths>
-</com:TTextHighlighter>
-
-<p>
-Instead of writing the classes manually, we will use the <a href="http://www.pradosoft.com/demos/quickstart/?page=GettingStarted.CommandLine">PRADO command line tool</a> again to generate the classes for us.
-</p>
-
-<p>
-Under the <tt>blog</tt> directory, run the following command to enter into the interactive mode of the command line tool:
-</p>
-
-<com:TTextHighlighter CssClass="source cli" Language="text">
-php path/to/prado-cli.php shell .
-</com:TTextHighlighter>
-
-<p>
-We should see
-</p>
-
-<com:TTextHighlighter CssClass="source cli" Language="text">
-Command line tools for Prado 3.1.0.
-** Loaded PRADO appplication in directory "protected".
-PHP-Shell - Version 0.3.1
-(c) 2006, Jan Kneschke <jan@kneschke.de>
-
->> use '?' to open the inline help
-
->>
-</com:TTextHighlighter>
-
-<p>
-At the prompt, enter the following two commands to create <tt>UserRecord</tt> and <tt>PostRecord</tt> classes:
-</p>
-
-<com:TTextHighlighter CssClass="source cli" Language="text">
->> generate users Application.database.UserRecord
-
->> generate posts Application.database.PostRecord
-</com:TTextHighlighter>
-
-<p>
-Here we used the <a href="http://www.pradosoft.com/demos/quickstart/?page=Fundamentals.Components">namespace format</a> again to specify the classes to be created. The path <tt>Application.database.UserRecord</tt> indicates that we want the <tt>UserRecord</tt> class file to be <tt>protected/database/UserRecord.php</tt>.
-</p>
-
-<p>
-We should see the following directory structure with two new files under <tt>protected/database</tt>:
-</p>
-
-<img src="<%~ directories2.gif %>" class="output" />
-
-<p>
-If we check the <tt>PostRecord</tt> class file, we should see the following content.
-</p>
-
-<com:TTextHighlighter CssClass="source" Language="php">
-class PostRecord extends TActiveRecord
-{
- const TABLE='posts';
- public $post_id;
- public $author_id;
- public $create_time;
- public $title;
- public $content;
- public $status;
-
- public static function finder($className=__CLASS__)
- {
- return parent::finder($className);
- }
-}
-</com:TTextHighlighter>
-
-<p>
-As we see, for each field in the <tt>posts</tt> table, the class has a corresponding data member. The constant <tt>TABLE</tt> specifies the table name for the <tt>PostRecord</tt>. The static method <tt>finder()</tt> allows us to perform query and retrieve post data in terms of <tt>PostRecord</tt> objects.
-</p>
-
-<p>
-We can use the command line tool to do some testing with our newly created Active Record classes. Still in the interactive mode of the command line tool, we enter a PHP statement and should see the following. Interested readers may try some other PHP statements, such as <tt>UserRecord::finder()->findAll()</tt>.
-</p>
-
-<com:TTextHighlighter CssClass="source cli" Language="text">
->> PostRecord::finder()->findAll()
-array
-(
- [0] => PostRecord#1
- (
- [post_id] => '1'
- [author_id] => 'admin'
- [create_time] => '1175708482'
- [title] => 'first post'
- [content] => 'this is my first post'
- [status] => '0'
- [TActiveRecord:_readOnly] => false
- [TActiveRecord:_connection] => null
- [TComponent:_e] => array()
- )
-)
-</com:TTextHighlighter>
-
-<h1>Relationship Between Posts and Users</h1>
-<p>
-Recall that there was a foreign key relationship between the <tt>users</tt> and <tt>posts</tt> table. The entity-relationship diagram is shown below for convienence.
-</p>
-
-<img src="<%~ ER.gif %>" class="output" />
-
-<p>
-From the entity-relationship diagram above, we see that the <tt>posts</tt> table contains a field named <tt>author_id</tt>. This <tt>author_id</tt> field is a foreign key to the reference table <tt>users</tt>. In particular, the values in the <tt>author_id</tt> field should be of that from the <tt>users</tt> table's <tt>username</tt> field. One of the consequence of this relationship, thinking in terms of objects, is that each "post" belongs to an "author" and one "author" may have many "posts".
-</p>
-
-<p>
-We can model the relationship between <tt>posts</tt> and <tt>users</tt> table in Active Record by modifying the <tt>PostRecord</tt> and <tt>UserRecord</tt> classes as follows.
-</p>
-
-<com:TTextHighlighter CssClass="source" Language="php">
-class PostRecord extends TActiveRecord
-{
- //... properties and methods as before
-
- public $author; //holds an UserRecord
-
- public static $RELATIONS=array
- (
- 'author' => array(self::BELONGS_TO, 'UserRecord'),
- );
-}
-</com:TTextHighlighter>
-
-<p>
-The static <tt>$RELATIONS</tt> property of <tt>PostRecord</tt> defines that the property <tt>$author</tt> belongs to an <tt>UserRecord</tt>. In <tt>array(self::BELONGS_TO, 'UserRecord')</tt>, the first element defines the relationship type, in this case <tt>self::BELONGS_TO</tt>. The second element is the name of related record, in this case an <tt>UserRecord</tt>. The <tt>UserRecord</tt> is defined similarly below, the difference is that, the user record has many <tt>PostRecord</tt>s.
-</p>
-
-<com:TTextHighlighter CssClass="source" Language="php">
-class UserRecord extends TActiveRecord
-{
- //... properties and methods as before
-
- public $posts=array(); //holds an array of PostRecord
-
- public static $RELATIONS=array
- (
- 'posts' => array(self::HAS_MANY, 'PostRecord'),
- );
-}
-</com:TTextHighlighter>
-
-<p>
-An array of <tt>UserRecord</tt> with and its corresponding posts may be fetched as follows.
-</p>
-
-<com:TTextHighlighter CssClass="source" Language="php">
-$users = UserRecord::finder()->withPosts()->findAll();
-</com:TTextHighlighter>
-
-<com:TipBox>
-The method <tt>withXXX()</tt> (where XXX is the relationship property name, in this case, <tt>Posts</tt>) fetches the corresponding <tt>PostRecords</tt> using a second query (not by using a join). The <tt>withXXX()</tt> method accepts the same arguments as other finder methods of TActiveRecord, e.g. <tt>withPosts('status = ?', 0)</tt>.
-</com:TipBox>
-
-<p>
-Further detailed documentation can be found in the quickstart <a href="http://www.pradosoft.com/demos/quickstart/?page=Database.ActiveRecord">Active Record</a> docs.
-</p>
-
+<com:TContent ID="Main">
+
+<h1>Creating Active Record Classes</h1>
+
+<p>
+We need to create two <a href="http://www.pradosoft.com/demos/quickstart/?page=Database.ActiveRecord">Active Record</a> classes, <tt>UserRecord</tt> and <tt>PostRecord</tt>, to represent data records in the <tt>users</tt> and <tt>posts</tt> tables, respectively. Active Record classes must extend from the base class <tt>ActiveRecord</tt>, and must define property names that matches with the field names of the corresponding table.
+</p>
+
+<p>
+To better organize our directories, we create a new directory <tt>protected/database</tt> to hold the class files. We also modify our application configuration by inserting the following lines. It is equivalent to adding the directory <tt>protected/database</tt> to PHP include_path, which allows us to use the classes without explicitly including them.
+</p>
+
+<com:TTextHighlighter CssClass="source" Language="xml">
+<paths>
+ <using namespace="Application.database.*" />
+</paths>
+</com:TTextHighlighter>
+
+<p>
+Instead of writing the classes manually, we will use the <a href="?page=GettingStarted.Wsat">PRADO Web Site Administration Tool</a> to generate the classes for us.
+So we need to modify again our application configuration in the services section like follows:
+</p>
+
+ <p class="block-content">
+<com:TTextHighlighter CssClass="source" Language="xml">
+<services>
+ ...
+ <service id="wsat" class="System.Wsat.TWsatService" Password="my_secret_password" />
+</services>
+</com:TTextHighlighter>
+</p>
+
+<p class="block-content">
+ Then you are ready to go to: http://localhost/yoursite/index.php?wsat=TWsatLogin where you should see
+ the following page:
+</p>
+<img src="<%~wsat_login.png%>" style="width: 700px;" />
+<p class="block-content">
+ In the text field you need to type the password previosly specified in the service inclusion. This
+ is part of a basic security system to avoid undesirable persons to use this tool.
+</p>
+
+ <p class="block-content">
+ In order to generate AR classes you need to go to: http://localhost/divermania/index.php?wsat=TWsatGenerateAR
+ by clicking the proper links in the welcome page. Then you should see the following page:
+</p>
+<img src="<%~blog_wsat_generate_ar.png%>" style="width: 700px;" />
+
+<p>
+ In the <tt>Output Folder</tt> field we used the <a href="http://www.pradosoft.com/demos/quickstart/?page=Fundamentals.Components">namespace format</a> again, the path <tt>Application.database</tt> indicates that we want to put our class's files in the <tt>protected/database/</tt> folder.
+ The <tt>*</tt> in the <tt>Table Name</tt> field means that we want to generate all AR classes, you can specify a table name instead if you want to generate just a specific AR class.
+</p>
+
+<p>
+Afterward we should see the following directory structure with two new files under <tt>protected/database</tt>:
+</p>
+
+<img src="<%~ directories2.gif %>" class="output" />
+
+<p>
+If we check the <tt>PostRecord</tt> class file, we should see something similar to the following content:
+</p>
+
+<com:TTextHighlighter CssClass="source" Language="php">
+class PostRecord extends TActiveRecord
+{
+ const TABLE='posts';
+
+ public $post_id;
+ public $author_id;
+ public $create_time;
+ public $title;
+ public $content;
+ public $status;
+
+ public static function finder($className=__CLASS__)
+ {
+ return parent::finder($className);
+ }
+
+ public static $RELATIONS = array (
+ 'author' => array(self::BELONGS_TO, 'UserRecord', 'author_id')
+ );
+
+ public function __toString()
+ {
+ return $this->title;
+ }
+}
+</com:TTextHighlighter>
+
+<p>
+As we see, for each field in the <tt>posts</tt> table, the class has a corresponding data member. The constant <tt>TABLE</tt> specifies the table name for the <tt>PostRecord</tt>. The static method <tt>finder()</tt> allows us to perform query and retrieve post data in terms of <tt>PostRecord</tt> objects.
+</p>
+
+<h1>Relationship Between Posts and Users</h1>
+<p>
+Recall that there was a foreign key relationship between the <tt>users</tt> and <tt>posts</tt> table. The entity-relationship diagram is shown below for convienence.
+</p>
+
+<img src="<%~ ER.gif %>" class="output" />
+
+<p>
+From the entity-relationship diagram above, we see that the <tt>posts</tt> table contains a field named <tt>author_id</tt>. This <tt>author_id</tt> field is a foreign key to the reference table <tt>users</tt>. In particular, the values in the <tt>author_id</tt> field should be of that from the <tt>users</tt> table's <tt>username</tt> field. One of the consequence of this relationship, thinking in terms of objects, is that each "post" belongs to an "author" and one "author" may have many "posts".
+</p>
+
+<p>
+The static <tt>$RELATIONS</tt> property of <tt>PostRecord</tt> defines that the property <tt>$author</tt> belongs to an <tt>UserRecord</tt>. In <tt>array(self::BELONGS_TO, 'UserRecord')</tt>, the first element defines the relationship type, in this case <tt>self::BELONGS_TO</tt>. The second element is the name of related record, in this case an <tt>UserRecord</tt>.
+</p>
+
+<p>
+An array of <tt>UserRecord</tt> with and its corresponding posts may be fetched as follows.
+</p>
+
+<com:TTextHighlighter CssClass="source" Language="php">
+$users = UserRecord::finder()->withPosts()->findAll();
+</com:TTextHighlighter>
+
+<com:TipBox>
+The method <tt>withXXX()</tt> (where XXX is the relationship property name, in this case, <tt>Posts</tt>) fetches the corresponding <tt>PostRecords</tt> using a second query (not by using a join). The <tt>withXXX()</tt> method accepts the same arguments as other finder methods of TActiveRecord, e.g. <tt>withPosts('status = ?', 0)</tt>.
+</com:TipBox>
+
+<p>
+Further detailed documentation can be found in the quickstart <a href="http://www.pradosoft.com/demos/quickstart/?page=Database.ActiveRecord">Active Record</a> docs.
+</p>
+
</com:TContent> \ No newline at end of file
diff --git a/demos/blog-tutorial/protected/pages/Day2/blog_wsat_generate_ar.png b/demos/blog-tutorial/protected/pages/Day2/blog_wsat_generate_ar.png
new file mode 100644
index 00000000..433c1230
--- /dev/null
+++ b/demos/blog-tutorial/protected/pages/Day2/blog_wsat_generate_ar.png
Binary files differ
diff --git a/demos/blog-tutorial/protected/pages/Day2/wsat_login.png b/demos/blog-tutorial/protected/pages/Day2/wsat_login.png
new file mode 100644
index 00000000..dbe1ad8b
--- /dev/null
+++ b/demos/blog-tutorial/protected/pages/Day2/wsat_login.png
Binary files differ
diff --git a/demos/blog/protected/Common/BlogDataModule.php b/demos/blog/protected/Common/BlogDataModule.php
index a6312dcb..384ee83d 100755
--- a/demos/blog/protected/Common/BlogDataModule.php
+++ b/demos/blog/protected/Common/BlogDataModule.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: BlogDataModule.php 3189 2012-07-12 12:16:21Z ctrlaltca $
*/
/**
@@ -236,7 +235,7 @@ class BlogDataModule extends TModule
public function queryPosts($postFilter,$categoryFilter,$orderBy,$limit)
{
- //FIXME this is insecure by design since it misses proper escaping
+ //FIXME this is insecure by design since it misses proper escaping
$filter='';
if($postFilter!=='')
$filter.=" AND $postFilter";
@@ -301,7 +300,7 @@ class BlogDataModule extends TModule
public function queryPostCount($postFilter,$categoryFilter)
{
- //FIXME this is insecure by design since it misses proper escaping
+ //FIXME this is insecure by design since it misses proper escaping
$filter='';
if($postFilter!=='')
$filter.=" AND $postFilter";
@@ -424,7 +423,7 @@ class BlogDataModule extends TModule
public function queryComments($filter,$orderBy,$limit)
{
- //FIXME this is insecure by design since it misses proper escaping
+ //FIXME this is insecure by design since it misses proper escaping
if($filter!=='')
$filter='WHERE '.$filter;
$sql="SELECT * FROM tblComments $filter $orderBy $limit";
diff --git a/demos/blog/protected/Common/BlogErrorHandler.php b/demos/blog/protected/Common/BlogErrorHandler.php
index fd5a7044..5446a5ee 100755
--- a/demos/blog/protected/Common/BlogErrorHandler.php
+++ b/demos/blog/protected/Common/BlogErrorHandler.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: BlogErrorHandler.php 3189 2012-07-12 12:16:21Z ctrlaltca $
*/
Prado::using('System.Exceptions.TErrorHandler');
diff --git a/demos/blog/protected/Common/BlogException.php b/demos/blog/protected/Common/BlogException.php
index 39825f4f..e857cc3d 100755
--- a/demos/blog/protected/Common/BlogException.php
+++ b/demos/blog/protected/Common/BlogException.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: BlogException.php 3189 2012-07-12 12:16:21Z ctrlaltca $
*/
/**
diff --git a/demos/blog/protected/Common/BlogPage.php b/demos/blog/protected/Common/BlogPage.php
index e6da9a8c..2c394e46 100755
--- a/demos/blog/protected/Common/BlogPage.php
+++ b/demos/blog/protected/Common/BlogPage.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: BlogPage.php 3189 2012-07-12 12:16:21Z ctrlaltca $
*/
/**
diff --git a/demos/blog/protected/Common/BlogUser.php b/demos/blog/protected/Common/BlogUser.php
index 93990f69..3ce8af1b 100755
--- a/demos/blog/protected/Common/BlogUser.php
+++ b/demos/blog/protected/Common/BlogUser.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: BlogUser.php 3189 2012-07-12 12:16:21Z ctrlaltca $
*/
Prado::using('System.Security.TUser');
diff --git a/demos/blog/protected/Common/BlogUserManager.php b/demos/blog/protected/Common/BlogUserManager.php
index 898402fa..c9419d73 100755
--- a/demos/blog/protected/Common/BlogUserManager.php
+++ b/demos/blog/protected/Common/BlogUserManager.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: BlogUserManager.php 3189 2012-07-12 12:16:21Z ctrlaltca $
*/
Prado::using('System.Security.IUserManager');
diff --git a/demos/blog/protected/Common/XListMenu.php b/demos/blog/protected/Common/XListMenu.php
index a3ad4308..5289167f 100755
--- a/demos/blog/protected/Common/XListMenu.php
+++ b/demos/blog/protected/Common/XListMenu.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: XListMenu.php 3189 2012-07-12 12:16:21Z ctrlaltca $
*/
Prado::using('System.Web.UI.WebControls.TListControl');
diff --git a/demos/blog/protected/Layouts/MainLayout.php b/demos/blog/protected/Layouts/MainLayout.php
index c2fbe04c..618691a1 100755
--- a/demos/blog/protected/Layouts/MainLayout.php
+++ b/demos/blog/protected/Layouts/MainLayout.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: MainLayout.php 3189 2012-07-12 12:16:21Z ctrlaltca $
*/
/**
diff --git a/demos/blog/protected/Pages/Admin/AdminMenu.php b/demos/blog/protected/Pages/Admin/AdminMenu.php
index f4c89724..01ca60c0 100755
--- a/demos/blog/protected/Pages/Admin/AdminMenu.php
+++ b/demos/blog/protected/Pages/Admin/AdminMenu.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: AdminMenu.php 3189 2012-07-12 12:16:21Z ctrlaltca $
*/
/**
diff --git a/demos/blog/protected/Pages/Admin/ConfigMan.php b/demos/blog/protected/Pages/Admin/ConfigMan.php
index be5e3983..4a938c94 100755
--- a/demos/blog/protected/Pages/Admin/ConfigMan.php
+++ b/demos/blog/protected/Pages/Admin/ConfigMan.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: ConfigMan.php 3189 2012-07-12 12:16:21Z ctrlaltca $
*/
/**
diff --git a/demos/blog/protected/Pages/Admin/PostMan.php b/demos/blog/protected/Pages/Admin/PostMan.php
index 9fa6b7d4..c69788c1 100755
--- a/demos/blog/protected/Pages/Admin/PostMan.php
+++ b/demos/blog/protected/Pages/Admin/PostMan.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: PostMan.php 3189 2012-07-12 12:16:21Z ctrlaltca $
*/
/**
diff --git a/demos/blog/protected/Pages/Admin/UserMan.php b/demos/blog/protected/Pages/Admin/UserMan.php
index 44fd2fc7..de3f7065 100755
--- a/demos/blog/protected/Pages/Admin/UserMan.php
+++ b/demos/blog/protected/Pages/Admin/UserMan.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: UserMan.php 3189 2012-07-12 12:16:21Z ctrlaltca $
*/
/**
diff --git a/demos/blog/protected/Pages/ErrorReport.php b/demos/blog/protected/Pages/ErrorReport.php
index dc92c887..e8614943 100755
--- a/demos/blog/protected/Pages/ErrorReport.php
+++ b/demos/blog/protected/Pages/ErrorReport.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: ErrorReport.php 3189 2012-07-12 12:16:21Z ctrlaltca $
*/
/**
diff --git a/demos/blog/protected/Pages/Posts/EditCategory.php b/demos/blog/protected/Pages/Posts/EditCategory.php
index 67c03204..01beee7f 100755
--- a/demos/blog/protected/Pages/Posts/EditCategory.php
+++ b/demos/blog/protected/Pages/Posts/EditCategory.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: EditCategory.php 3189 2012-07-12 12:16:21Z ctrlaltca $
*/
/**
diff --git a/demos/blog/protected/Pages/Posts/EditPost.php b/demos/blog/protected/Pages/Posts/EditPost.php
index 7345a3cc..d2cc119b 100755
--- a/demos/blog/protected/Pages/Posts/EditPost.php
+++ b/demos/blog/protected/Pages/Posts/EditPost.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: EditPost.php 3189 2012-07-12 12:16:21Z ctrlaltca $
*/
/**
diff --git a/demos/blog/protected/Pages/Posts/ListPost.php b/demos/blog/protected/Pages/Posts/ListPost.php
index eba9f675..51e581d3 100755
--- a/demos/blog/protected/Pages/Posts/ListPost.php
+++ b/demos/blog/protected/Pages/Posts/ListPost.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: ListPost.php 3189 2012-07-12 12:16:21Z ctrlaltca $
*/
/**
diff --git a/demos/blog/protected/Pages/Posts/MyPost.php b/demos/blog/protected/Pages/Posts/MyPost.php
index e1851772..c0724f92 100755
--- a/demos/blog/protected/Pages/Posts/MyPost.php
+++ b/demos/blog/protected/Pages/Posts/MyPost.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: MyPost.php 3189 2012-07-12 12:16:21Z ctrlaltca $
*/
/**
diff --git a/demos/blog/protected/Pages/Posts/NewCategory.php b/demos/blog/protected/Pages/Posts/NewCategory.php
index 98eba96d..3043d657 100755
--- a/demos/blog/protected/Pages/Posts/NewCategory.php
+++ b/demos/blog/protected/Pages/Posts/NewCategory.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: NewCategory.php 3189 2012-07-12 12:16:21Z ctrlaltca $
*/
/**
diff --git a/demos/blog/protected/Pages/Posts/NewPost.php b/demos/blog/protected/Pages/Posts/NewPost.php
index c1127547..d4e2f855 100755
--- a/demos/blog/protected/Pages/Posts/NewPost.php
+++ b/demos/blog/protected/Pages/Posts/NewPost.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: NewPost.php 3189 2012-07-12 12:16:21Z ctrlaltca $
*/
/**
diff --git a/demos/blog/protected/Pages/Posts/ViewPost.php b/demos/blog/protected/Pages/Posts/ViewPost.php
index 05890794..3c549673 100755
--- a/demos/blog/protected/Pages/Posts/ViewPost.php
+++ b/demos/blog/protected/Pages/Posts/ViewPost.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: ViewPost.php 3189 2012-07-12 12:16:21Z ctrlaltca $
*/
/**
diff --git a/demos/blog/protected/Pages/Users/EditUser.php b/demos/blog/protected/Pages/Users/EditUser.php
index 862539f9..e3e2e1b0 100755
--- a/demos/blog/protected/Pages/Users/EditUser.php
+++ b/demos/blog/protected/Pages/Users/EditUser.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: EditUser.php 3189 2012-07-12 12:16:21Z ctrlaltca $
*/
/**
diff --git a/demos/blog/protected/Pages/Users/NewUser.php b/demos/blog/protected/Pages/Users/NewUser.php
index 24932f03..f407c44b 100755
--- a/demos/blog/protected/Pages/Users/NewUser.php
+++ b/demos/blog/protected/Pages/Users/NewUser.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: NewUser.php 3189 2012-07-12 12:16:21Z ctrlaltca $
*/
/**
diff --git a/demos/blog/protected/Pages/Users/ViewUser.php b/demos/blog/protected/Pages/Users/ViewUser.php
index 671e2c0a..61e4c689 100755
--- a/demos/blog/protected/Pages/Users/ViewUser.php
+++ b/demos/blog/protected/Pages/Users/ViewUser.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: ViewUser.php 3189 2012-07-12 12:16:21Z ctrlaltca $
*/
/**
diff --git a/demos/blog/protected/Portlets/AccountPortlet.php b/demos/blog/protected/Portlets/AccountPortlet.php
index 89a2294f..1ef0b820 100755
--- a/demos/blog/protected/Portlets/AccountPortlet.php
+++ b/demos/blog/protected/Portlets/AccountPortlet.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: AccountPortlet.php 3189 2012-07-12 12:16:21Z ctrlaltca $
*/
Prado::using('Application.Portlets.Portlet');
diff --git a/demos/blog/protected/Portlets/ArchivePortlet.php b/demos/blog/protected/Portlets/ArchivePortlet.php
index 9deb36f1..858b6b3f 100755
--- a/demos/blog/protected/Portlets/ArchivePortlet.php
+++ b/demos/blog/protected/Portlets/ArchivePortlet.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: ArchivePortlet.php 3189 2012-07-12 12:16:21Z ctrlaltca $
*/
Prado::using('Application.Portlets.Portlet');
diff --git a/demos/blog/protected/Portlets/CategoryPortlet.php b/demos/blog/protected/Portlets/CategoryPortlet.php
index df243df3..c5ed10d3 100755
--- a/demos/blog/protected/Portlets/CategoryPortlet.php
+++ b/demos/blog/protected/Portlets/CategoryPortlet.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: CategoryPortlet.php 3189 2012-07-12 12:16:21Z ctrlaltca $
*/
Prado::using('Application.Portlets.Portlet');
diff --git a/demos/blog/protected/Portlets/CommentPortlet.php b/demos/blog/protected/Portlets/CommentPortlet.php
index df07fb1e..6225ff45 100755
--- a/demos/blog/protected/Portlets/CommentPortlet.php
+++ b/demos/blog/protected/Portlets/CommentPortlet.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: CommentPortlet.php 3189 2012-07-12 12:16:21Z ctrlaltca $
*/
Prado::using('Application.Portlets.Portlet');
diff --git a/demos/blog/protected/Portlets/LoginPortlet.php b/demos/blog/protected/Portlets/LoginPortlet.php
index 8b118390..de48363e 100755
--- a/demos/blog/protected/Portlets/LoginPortlet.php
+++ b/demos/blog/protected/Portlets/LoginPortlet.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: LoginPortlet.php 3189 2012-07-12 12:16:21Z ctrlaltca $
*/
Prado::using('Application.Portlets.Portlet');
diff --git a/demos/blog/protected/Portlets/Portlet.php b/demos/blog/protected/Portlets/Portlet.php
index 0df8ce2e..ae1b04c1 100755
--- a/demos/blog/protected/Portlets/Portlet.php
+++ b/demos/blog/protected/Portlets/Portlet.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: Portlet.php 3189 2012-07-12 12:16:21Z ctrlaltca $
*/
/**
diff --git a/demos/blog/protected/Portlets/SearchPortlet.php b/demos/blog/protected/Portlets/SearchPortlet.php
index 018ad883..9c6646a8 100755
--- a/demos/blog/protected/Portlets/SearchPortlet.php
+++ b/demos/blog/protected/Portlets/SearchPortlet.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: SearchPortlet.php 3189 2012-07-12 12:16:21Z ctrlaltca $
*/
Prado::using('Application.Portlets.Portlet');
diff --git a/demos/chat/protected/pages/Home.page b/demos/chat/protected/pages/Home.page
index b896cd28..7740c062 100755
--- a/demos/chat/protected/pages/Home.page
+++ b/demos/chat/protected/pages/Home.page
@@ -1,5 +1,5 @@
<!doctype html public "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Prado Chat Demo</title>
@@ -17,14 +17,14 @@
<com:TPlaceHolder ID="userList" />
</div>
<div class="message-input">
- <com:TActiveTextBox ID="userinput"
+ <com:TActiveTextBox ID="userinput"
Columns="40" Rows="2" TextMode="MultiLine" />
- <com:TActiveImageButton ID="sendButton" CssClass="send-button"
+ <com:TActiveImageButton ID="sendButton" CssClass="send-button"
ImageUrl=<%~ send.gif %> OnClick="processMessage"/>
</div>
-<com:TTimeTriggeredCallback OnCallback="refresh"
+<com:TTimeTriggeredCallback OnCallback="refresh"
Interval="2" StartTimerOnLoad="true" />
<com:TClientScript>
@@ -39,7 +39,6 @@
});
</com:TClientScript>
</com:TForm>
- <com:TJavascriptLogger Visible="false"/>
<div id="footer">
Copyright &copy; 2007 <a href="http://www.pradosoft.com">PradoSoft</a>.
diff --git a/demos/quickstart/protected/controls/Layout.tpl b/demos/quickstart/protected/controls/Layout.tpl
index b9e36e40..c3e67272 100755
--- a/demos/quickstart/protected/controls/Layout.tpl
+++ b/demos/quickstart/protected/controls/Layout.tpl
@@ -50,7 +50,7 @@
</table>
<div id="footer">
-Copyright &copy; 2005-2013 <a href="http://www.pradosoft.com">PradoSoft</a>.
+Copyright &copy; 2005-2014 <a href="http://www.pradosoft.com">PradoSoft</a>.
<br/><br/>
<%= Prado::poweredByPrado() %>
<a href="http://validator.w3.org/check?uri=referer"><img border="0" src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0 Transitional" height="31" width="88" /></a>
diff --git a/demos/quickstart/protected/controls/SampleLayout.tpl b/demos/quickstart/protected/controls/SampleLayout.tpl
index 5a5ca898..ba286f0f 100755
--- a/demos/quickstart/protected/controls/SampleLayout.tpl
+++ b/demos/quickstart/protected/controls/SampleLayout.tpl
@@ -19,7 +19,7 @@
</div>
<div class="samplemenu">
<div class="copyright">
- Copyright &copy; 2005-2013 <a href="http://www.pradosoft.com">PradoSoft</a>
+ Copyright &copy; 2005-2014 <a href="http://www.pradosoft.com">PradoSoft</a>
</div>
</div>
diff --git a/demos/quickstart/protected/controls/TopicList.tpl b/demos/quickstart/protected/controls/TopicList.tpl
index adcdff4a..de10398c 100755
--- a/demos/quickstart/protected/controls/TopicList.tpl
+++ b/demos/quickstart/protected/controls/TopicList.tpl
@@ -8,6 +8,8 @@
<li><a href="?page=GettingStarted.Installation">Installation</a></li>
<li><a href="?page=GettingStarted.NewFeatures">New Features</a></li>
<li><a href="?page=GettingStarted.Upgrading">Upgrading from v2.x and v1.x</a></li>
+ <li><a href="?page=GettingStarted.Wsat">Web Site Administration Tool</a></li>
+ <li><a href="?page=GettingStarted.CommandLine">Command Line Tool</a></li>
</ul>
</div>
@@ -17,9 +19,7 @@
<li><a href="?page=GettingStarted.HelloWorld">Creating First PRADO Application</a></li>
<li><a href="?page=Fundamentals.Hangman">Sample: Hangman Game</a></li>
<li><a href="?page=Tutorial.CurrencyConverter">Currency Converter</a></li>
- <li><a href="?page=Tutorial.AddressBook">Address Book</a></li>
<li><a href="?page=Tutorial.AjaxChat">AJAX Chat Client</a></li>
- <li><a href="?page=GettingStarted.CommandLine">Command Line Tool</a></li>
</ul>
</div>
@@ -27,7 +27,8 @@
<div>Fundamentals</div>
<ul>
<li><a href="?page=Fundamentals.Architecture">Architecture</a></li>
- <li><a href="?page=Fundamentals.Components">Components</a></li>
+ <li><a href="?page=Fundamentals.Components1">Components: Part I</a></li>
+ <li><a href="?page=Fundamentals.Components2">Components: Part II</a></li>
<li><a href="?page=Fundamentals.Controls">Controls</a></li>
<li><a href="?page=Fundamentals.Pages">Pages</a></li>
<li><a href="?page=Fundamentals.Modules">Modules</a></li>
@@ -56,6 +57,7 @@
<li><a href="?page=Controls.Validation">Validation Controls</a></li>
<li><a href="?page=Controls.List">List Controls</a></li>
<li><a href="?page=Controls.Data">Data Controls</a></li>
+ <li><a href="?page=ActiveControls.Introduction">AJAX: Introduction</a></li>
<li><a href="?page=ActiveControls.Home">Active Controls (AJAX)</a></li>
<li><a href="?page=Controls.NewControl">Writing New Controls</a></li>
</ul>
diff --git a/demos/quickstart/protected/controls/es/SampleLayout.tpl b/demos/quickstart/protected/controls/es/SampleLayout.tpl
index 24f0575a..d6d4d9b4 100755
--- a/demos/quickstart/protected/controls/es/SampleLayout.tpl
+++ b/demos/quickstart/protected/controls/es/SampleLayout.tpl
@@ -19,7 +19,7 @@
</div>
<div class="samplemenu">
<div class="copyright">
- Copyright &copy; 2005-2013 <a href="http://www.pradosoft.com">PradoSoft</a>
+ Copyright &copy; 2005-2014 <a href="http://www.pradosoft.com">PradoSoft</a>
</div>
</div>
diff --git a/demos/quickstart/protected/controls/es/TopicList.tpl b/demos/quickstart/protected/controls/es/TopicList.tpl
index be4be752..c7b90a47 100755
--- a/demos/quickstart/protected/controls/es/TopicList.tpl
+++ b/demos/quickstart/protected/controls/es/TopicList.tpl
@@ -1,13 +1,15 @@
<div id="toc">
<div class="topic">
-<div>Comenzar</div>
+<div>Comenzar</div>
<ul>
<li><a href="?page=GettingStarted.Introduction">Introducción</a></li>
<li><a href="?page=GettingStarted.AboutPrado">¿Que es PRADO?</a></li>
<li><a href="?page=GettingStarted.Installation">Instalación</a></li>
<li><a href="?page=GettingStarted.NewFeatures">Nuevas Funcionalidades</a></li>
<li><a href="?page=GettingStarted.Upgrading">Actualizar desde la version v2.x y v1.x</a></li>
+ <li><a href="?page=GettingStarted.Wsat">Web Site Administration Tool</a></li>
+ <li><a href="?page=GettingStarted.CommandLine">Command Line Tool</a></li>
</ul>
</div>
@@ -19,7 +21,6 @@
<li><a href="?page=Tutorial.CurrencyConverter">Convertidor de Monedas</a></li>
<li><a href="?page=Tutorial.AddressBook">Libreta de direcciones</a></li>
<li><a href="?page=Tutorial.AjaxChat">Cliente Chat en AJAX </a></li>
- <li><a href="?page=GettingStarted.CommandLine">Command Line Tool</a></li>
</ul>
</div>
@@ -27,7 +28,7 @@
<div>Básicos</div>
<ul>
<li><a href="?page=Fundamentals.Architecture">Arquitectura</a></li>
- <li><a href="?page=Fundamentals.Components">Componentes</a></li>
+ <li><a href="?page=Fundamentals.Components1">Componentes</a></li>
<li><a href="?page=Fundamentals.Controls">Controles</a></li>
<li><a href="?page=Fundamentals.Pages">Páginas</a></li>
<li><a href="?page=Fundamentals.Modules">Mádulos</a></li>
diff --git a/demos/quickstart/protected/controls/fr/SampleLayout.tpl b/demos/quickstart/protected/controls/fr/SampleLayout.tpl
index e421604c..e6fd2347 100755
--- a/demos/quickstart/protected/controls/fr/SampleLayout.tpl
+++ b/demos/quickstart/protected/controls/fr/SampleLayout.tpl
@@ -19,7 +19,7 @@
</div>
<div class="samplemenu">
<div class="copyright">
- Copyright &copy; 2005-2013 <a href="http://www.pradosoft.com">PradoSoft</a>
+ Copyright &copy; 2005-2014 <a href="http://www.pradosoft.com">PradoSoft</a>
</div>
</div>
diff --git a/demos/quickstart/protected/controls/fr/TopicList.tpl b/demos/quickstart/protected/controls/fr/TopicList.tpl
index 44bb0b16..0e28ff40 100755
--- a/demos/quickstart/protected/controls/fr/TopicList.tpl
+++ b/demos/quickstart/protected/controls/fr/TopicList.tpl
@@ -8,6 +8,8 @@
<li><a href="?page=GettingStarted.Installation">Installation</a></li>
<li><a href="?page=GettingStarted.NewFeatures">Nouvelles fonctionnalités</a></li>
<li><a href="?page=GettingStarted.Upgrading">Mise à jour de v2.x et v1.x</a></li>
+ <li><a href="?page=GettingStarted.Wsat">Web Site Administration Tool</a></li>
+ <li><a href="?page=GettingStarted.CommandLine">Outil en ligne de commande</a></li>
</ul>
</div>
@@ -18,7 +20,6 @@
<li><a href="?page=Fundamentals.Hangman">Exemple : Jeu du pendu</a></li>
<li><a href="?page=Tutorial.CurrencyConverter">Convertisseur monétaire</a></li>
<li><a href="?page=Tutorial.AjaxChat">Chat AJAX</a></li>
- <li><a href="?page=GettingStarted.CommandLine">Outil en ligne de commande</a></li>
</ul>
</div>
@@ -26,7 +27,7 @@
<div>Fundamentaux</div>
<ul>
<li><a href="?page=Fundamentals.Architecture">Architecture</a></li>
- <li><a href="?page=Fundamentals.Components">Composants</a></li>
+ <li><a href="?page=Fundamentals.Components1">Composants</a></li>
<li><a href="?page=Fundamentals.Controls">Contrôles</a></li>
<li><a href="?page=Fundamentals.Pages">Pages</a></li>
<li><a href="?page=Fundamentals.Modules">Modules</a></li>
diff --git a/demos/quickstart/protected/controls/id/TopicList.tpl b/demos/quickstart/protected/controls/id/TopicList.tpl
index bfc6ed64..d362dc19 100755
--- a/demos/quickstart/protected/controls/id/TopicList.tpl
+++ b/demos/quickstart/protected/controls/id/TopicList.tpl
@@ -8,6 +8,8 @@
<li><a href="?page=GettingStarted.Installation">Instalasi</a></li>
<li><a href="?page=GettingStarted.NewFeatures">Fitur Baru</a></li>
<li><a href="?page=GettingStarted.Upgrading">Meningkatkan dari v2.x dan v1.x</a></li>
+ <li><a href="?page=GettingStarted.Wsat">Web Site Administration Tool</a></li>
+ <li><a href="?page=GettingStarted.CommandLine">Piranti Baris Perintah</a></li>
</ul>
</div>
@@ -19,7 +21,6 @@
<li><a href="?page=Tutorial.CurrencyConverter">Pengubah Kurs</a></li>
<li><a href="?page=Tutorial.AddressBook">Buku Alamat</a></li>
<li><a href="?page=Tutorial.AjaxChat">Klient Obrolan AJAX</a></li>
- <li><a href="?page=GettingStarted.CommandLine">Piranti Baris Perintah</a></li>
</ul>
</div>
@@ -27,7 +28,7 @@
<div>Fundamental</div>
<ul>
<li><a href="?page=Fundamentals.Architecture">Arsitektur</a></li>
- <li><a href="?page=Fundamentals.Components">Komponen</a></li>
+ <li><a href="?page=Fundamentals.Components1">Komponen</a></li>
<li><a href="?page=Fundamentals.Controls">Kontrol</a></li>
<li><a href="?page=Fundamentals.Pages">Halaman</a></li>
<li><a href="?page=Fundamentals.Modules">Modul</a></li>
diff --git a/demos/quickstart/protected/controls/ja/TopicList.tpl b/demos/quickstart/protected/controls/ja/TopicList.tpl
index ccaf5c63..d9ded44a 100755
--- a/demos/quickstart/protected/controls/ja/TopicList.tpl
+++ b/demos/quickstart/protected/controls/ja/TopicList.tpl
@@ -8,6 +8,8 @@
<li><a href="?page=GettingStarted.Installation">インストール</a></li>
<li><a href="?page=GettingStarted.NewFeatures">新機能</a></li>
<li><a href="?page=GettingStarted.Upgrading">v2.x v1.x からのバージョンアップ</a></li>
+ <li><a href="?page=GettingStarted.Wsat">Web Site Administration Tool</a></li>
+ <li><a href="?page=GettingStarted.CommandLine">コマンドラインツール</a></li>
</ul>
</div>
@@ -19,7 +21,6 @@
<li><a href="?page=Tutorial.CurrencyConverter">通貨コンバーター</a></li>
<li><a href="?page=Tutorial.AddressBook">アドレス帳</a></li>
<li><a href="?page=Tutorial.AjaxChat">Ajax チャット</a></li>
- <li><a href="?page=GettingStarted.CommandLine">コマンドラインツール</a></li>
</ul>
</div>
@@ -27,7 +28,7 @@
<div>動作原理</div>
<ul>
<li><a href="?page=Fundamentals.Architecture">アーキテクチャ</a></li>
- <li><a href="?page=Fundamentals.Components">コンポーネント</a></li>
+ <li><a href="?page=Fundamentals.Components1">コンポーネント</a></li>
<li><a href="?page=Fundamentals.Controls">コントロール</a></li>
<li><a href="?page=Fundamentals.Pages">ページ</a></li>
<li><a href="?page=Fundamentals.Modules">モジュール</a></li>
diff --git a/demos/quickstart/protected/controls/pl/TopicList.tpl b/demos/quickstart/protected/controls/pl/TopicList.tpl
index 93052b36..1e0ff347 100755
--- a/demos/quickstart/protected/controls/pl/TopicList.tpl
+++ b/demos/quickstart/protected/controls/pl/TopicList.tpl
@@ -8,6 +8,8 @@
<li><a href="?page=GettingStarted.Installation">Instalacja</a></li>
<li><a href="?page=GettingStarted.NewFeatures">Nowe możliwości</a></li>
<li><a href="?page=GettingStarted.Upgrading">Aktualizacja z wersji 2.x oraz 1.x</a></li>
+ <li><a href="?page=GettingStarted.Wsat">Web Site Administration Tool</a></li>
+ <li><a href="?page=GettingStarted.CommandLine">Narzędzie linii poleceń</a></li>
</ul>
</div>
@@ -17,9 +19,7 @@
<li><a href="?page=GettingStarted.HelloWorld">Tworzenie pierwszej aplikacji PRADO</a></li>
<li><a href="?page=Fundamentals.Hangman">Przykład: gra wisielec</a></li>
<li><a href="?page=Tutorial.CurrencyConverter">Konwenter walut</a></li>
- <li><a href="?page=Tutorial.AddressBook">Książka adresowa</a></li>
<li><a href="?page=Tutorial.AjaxChat">AJAX-owy klient czat</a></li>
- <li><a href="?page=GettingStarted.CommandLine">Narzędzie linii poleceń</a></li>
</ul>
</div>
@@ -27,7 +27,7 @@
<div>Postawy</div>
<ul>
<li><a href="?page=Fundamentals.Architecture">Architektura</a></li>
- <li><a href="?page=Fundamentals.Components">Komponenty</a></li>
+ <li><a href="?page=Fundamentals.Components1">Komponenty</a></li>
<li><a href="?page=Fundamentals.Controls">Kontrolki</a></li>
<li><a href="?page=Fundamentals.Pages">Strony</a></li>
<li><a href="?page=Fundamentals.Modules">Moduły</a></li>
diff --git a/demos/quickstart/protected/controls/zh/TopicList.tpl b/demos/quickstart/protected/controls/zh/TopicList.tpl
index 00fa2280..023eb01a 100755
--- a/demos/quickstart/protected/controls/zh/TopicList.tpl
+++ b/demos/quickstart/protected/controls/zh/TopicList.tpl
@@ -8,6 +8,8 @@
<li><a href="?page=GettingStarted.Installation">安装</a></li>
<li><a href="?page=GettingStarted.NewFeatures">版本新功能</a></li>
<li><a href="?page=GettingStarted.Upgrading">从v2.x和v1.x升级</a></li>
+ <li><a href="?page=GettingStarted.Wsat">Web Site Administration Tool</a></li>
+ <li><a href="?page=GettingStarted.CommandLine">命令行工具</a></li>
</ul>
</div>
@@ -18,7 +20,6 @@
<li><a href="?page=Fundamentals.Hangman">Hangman游戏</a></li>
<li><a href="?page=Tutorial.CurrencyConverter">货币转换程序</a></li>
<li><a href="?page=Tutorial.AjaxChat">AJAX聊天程序</a></li>
- <li><a href="?page=GettingStarted.CommandLine">命令行工具</a></li>
</ul>
</div>
@@ -26,7 +27,7 @@
<div>基础概念</div>
<ul>
<li><a href="?page=Fundamentals.Architecture">框架结构</a></li>
- <li><a href="?page=Fundamentals.Components">部件</a></li>
+ <li><a href="?page=Fundamentals.Components1">部件</a></li>
<li><a href="?page=Fundamentals.Controls">控件</a></li>
<li><a href="?page=Fundamentals.Pages">页面</a></li>
<li><a href="?page=Fundamentals.Modules">模块</a></li>
diff --git a/demos/quickstart/protected/pages/ActiveControls/ActiveButton.page b/demos/quickstart/protected/pages/ActiveControls/ActiveButton.page
index d4167f6e..6385b658 100755
--- a/demos/quickstart/protected/pages/ActiveControls/ActiveButton.page
+++ b/demos/quickstart/protected/pages/ActiveControls/ActiveButton.page
@@ -24,70 +24,4 @@ events of an <tt>TActiveButton</tt>.</p>
<com:RunBar PagePath="ActiveControls.Samples.TActiveButton.Home" />
-<h2 id="122027">TActiveButton Class Diagram</h2>
-<p id="610414" class="block-content">The class diagram for <tt>TActiveButton</tt> is illustrated in the figure below.
-Most active control that can perform callback request have a similar structure.
-</p>
-
-<img src=<%~ TActiveButtonClass.png %> class="figure"
- alt="TActiveButton class diagram" title="TActiveButton class diagram" />
-
-<p id="610415" class="block-content"><tt>TActiveButton</tt> is an extension of <a href="?page=Controls.Button">TButton</a>
-and implements two additional interfaces <tt>ICallbackEventHandler</tt> and
-<tt>IActiveControl</tt>. The <tt>TActiveButton</tt> contains an instance of
-<a href="?page=ActiveControls.BaseActiveControl">TBaseActiveCallbackControl</a>
-available through the <tt>ActiveControl</tt> property of <tt>TActiveButton</tt>.
-The following example set the callback parameter of the <tt>TActiveButton</tt> when
-a callback request is dispatched.
-</p>
-<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code1">
-&lt;com:TActiveButton
- Text="Click Me"
- OnCallback="button_callback"
- ActiveControl.CallbackParameter="value" /&gt;
-</com:TTextHighlighter>
-<p id="610416" class="block-content">In the <tt>OnCallback</tt> event handler method, the <tt>CallbackParameter</tt>
-is available in the <tt>$param</tt> object.</p>
-<com:TTextHighlighter Language="php" CssClass="source block-content" id="code2">
-public function button_callback($sender, $param)
-{
- echo $param->CallbackParameter; //outputs "value"
-}
-</com:TTextHighlighter>
-
-<h2 id="122028">Adding Client Side Behaviour</h2>
-
-<p id="610417" class="block-content">With in the <tt>ActiveControl</tt> property is an instance of
-<a href="?page=ActiveControls.CallbackClientSide">TCallbackClientSide</a> available
-as a property <tt>ClientSide</tt> of <tt>TActiveButton</tt>.
-The <tt>ClientSide</tt> property contains sub-properties, such as <tt>RequestTimeOut</tt>,
-and client-side javascript event handler, such as <tt>OnLoading</tt>,
-that are used by the client-side when making a callback request.
-The following example demonstrates the toggling of a "loading" indicator
-when the client-side is making a callback request.
-</p>
-
-<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code3">
-&lt;com:TClientScript PradoScripts="effects" /&gt;
-<span id="callback_status">Loading...</span>
-
-&lt;com:TActiveButton
- Text="Click Me"
- OnCallback="button_callback"
- ActiveControl.CallbackParameter="value" &gt;
- &lt;prop:ClientSide
- OnLoading="Element.show('callback_status')"
- OnComplete="Element.hide('callback_status')" /&gt;
-&lt;/com:TActiveButton&gt;
-</com:TTextHighlighter>
-
-<p id="610418" class="block-content">The example loads the "effects" javascript library using the
-<a href="?page=Controls.ClientScript">TClientScript</a> component.
-The <tt>ClientSide.OnLoading</tt> property value contains
-javascript statement that uses the "effects" library to show the "Loading..."
-span tag. Similarly, <tt>ClientSide.OnComplete</tt> property
-value contains the javascript statement that hides the "Loading..." span tag.
-See <a href="?page=ActiveControls.CallbackClientSide">TCallbackClientSide</a> for
-further details on client-side property details.
-</p>
</com:TContent>
diff --git a/demos/quickstart/protected/pages/ActiveControls/Home.page b/demos/quickstart/protected/pages/ActiveControls/Home.page
index 9586f421..4a180620 100755
--- a/demos/quickstart/protected/pages/ActiveControls/Home.page
+++ b/demos/quickstart/protected/pages/ActiveControls/Home.page
@@ -1,12 +1,13 @@
<com:TContent ID="body" >
<h1 id="128031">Active Controls (AJAX enabled Controls)</h1>
-<p id="640423" class="block-content">See the <a href="?page=ActiveControls.Introduction">Introduction</a>
+<p id="640423" class="block-content">
+Active controls extends standard PRADO controls adding the ability to automatically update themselves on callbacks without the need of ad-hoc javascript calls. See the <a href="?page=ActiveControls.Introduction">Introduction</a>
for a quick overview of the concept behind active controls (AJAX enabled controls).
Most active controls have a property of
<a href="?page=ActiveControls.BaseActiveControl">ActiveControl</a> and
a sub-property <a href="?page=ActiveControls.CallbackClientSide">ClientSide</a>
that provides many properties to customize the controls. The
-<a href="?page=TCallbackClientScript">CallbackClient</a> property of the
+<a href="?page=ActiveControls.CallbackClientScript">CallbackClient</a> property of the
<tt>TPage</tt> class provides many methods to update and alter the client-side content
during a callback request. Active controls is reliant on a collection
of <a href="?page=ActiveControl.ClientSideJavascript">javascript classes</a>.
@@ -373,92 +374,4 @@ if Javascript was disabled on the client's browser.</p>
</table>
-<h2 id="128036">Active Control Basic Infrastructure Classes</h2>
-<p id="640427" class="block-content">The following classes provide the basic infrastructure classes required to
-realize the active controls. They can be useful to develop new active controls, but Prado users tipically don't need
-to use them.</p>
-<ul id="u4" class="block-content">
- <li>
- <h3 id="190038">TActiveControlAdapter</h3>
- <com:DocLink ClassPath="System.Web.UI.ActiveControls.TActiveControlAdapter" />
- <p class="block-content">
- <tt>TActiveControlAdapter</tt> customizes the parent TControl class for active control classes.
- It tracks changes in the viewstate values of the control and update
- differences of the client-side HTML element attributes.
- </p>
- </li>
-
- <li>
- <h3 id="190039">TActiveListControlAdapter</h3>
- <com:DocLink ClassPath="System.Web.UI.ActiveControls.TActiveListControlAdapter" />
- <p class="block-content">
- <tt>TActiveListControlAdapter</tt> allows the adapted list controls to change the selections
- on the client-side during a callback request.
- </p>
- </li>
-
- <li>
- <h3 id="190040">TActivePageAdapter</h3>
- <com:DocLink ClassPath="System.Web.UI.ActiveControls.TActivePageAdapter" />
- <p class="block-content">
- <tt>TActivePageAdapter</tt> process the page life-cycle for callback requests.
- </p>
- </li>
-
- <li>
- <h3 id="190041">TBaseActiveControl</h3>
- <com:DocLink ClassPath="System.Web.UI.ActiveControls.TBaseActiveControl" />
- <p class="block-content">
- <tt>TBaseActiveControl</tt> class provided additional basic properties common for every
- active control. An instance of <tt>TBaseActiveControl</tt> or its decendent
- <tt>TBaseActiveCallbackControl</tt> is created by <tt>TActiveControlAdapter::getBaseActiveControl()</tt>
- method.
- The <tt>EnableUpdate</tt> property determines wether the active
- control is allowed to update the contents of the client-side when the callback
- response returns.
- </p>
- </li>
-
- <li>
- <h3 id="190042">TCallbackResponseAdapter</h3>
- <com:DocLink ClassPath="System.Web.UI.ActiveControls.TCallbackResponseAdapter" />
- <p class="block-content">
- <tt>TCallbackResponseAdapter</tt> alters the <tt>THttpResponse</tt>'s outputs.
- A <tt>TCallbackResponseWriter</tt> is used instead of the <tt>TTextWrite</tt> when
- <tt>createHtmlWriter</tt> is called. Each call to createHtmlWriter will create
- a new <tt>TCallbackResponseWriter</tt>. When <tt>flushContent()</tt> is called each
- instance of <tt>TCallbackResponseWriter</tt>'s content is flushed.
- The callback response data can be set using the <tt>ResponseData</tt> property.
- </p>
- </li>
-
-</ul>
-
-<h2 id="190037">Active Control Infrastructure Advanced Classes</h2>
-<p class="block-content">The following classes provide advanced properties and events needed to realize the active controls.
-A Prado user can use them to customize active controls behaviour and interact directly with the client side during a callback.
-</p>
-<ul class="block-content">
- <li>
- <a href="?page=ActiveControls.CallbackClientScript">TCallbackClientScript</a>
- methods to manipulate the client-side HTML elements, also includes methods
- to invoke javascript Effects on HTML elements.
- </li>
-
- <li>
- <a href="?page=ActiveControls.CallbackClientSide">TCallbackClientSide</a>
- is used to specify client-side callback request options and client-side event handlers.
- </li>
-
- <li>
- <a href="?page=ActiveControls.CallbackEventParameter">TCallbackEventParameter</a>
- provides the parameter passed during the callback request.
- </li>
-
- <li>
- <a href="?page=ActiveControls.CallbackOptions">TCallbackOptions</a>
- allows a common set of callback client-side options to be attached to one or more active controls.
- </li>
-</ul>
-
</com:TContent>
diff --git a/demos/quickstart/protected/pages/ActiveControls/Introduction.page b/demos/quickstart/protected/pages/ActiveControls/Introduction.page
index 70cb9cbf..7edb96d2 100755
--- a/demos/quickstart/protected/pages/ActiveControls/Introduction.page
+++ b/demos/quickstart/protected/pages/ActiveControls/Introduction.page
@@ -1,7 +1,204 @@
<com:TContent ID="body">
-<h1 id="130037">Overview of Active Controls</h1>
-
-TODO:
+<h1 id="130037">AJAX: Introduction</h1>
+<p class="block-content">
+A classic webpage can only transfer data back to the server using an http postback request that requires a full page reload. This is a problem for web applications, since a synchronous page reload breaks the user interaction: the user must wait for the response to arrive and the page will lose its current status (the scrolling position, the currently focused control, etc..).
+</p>
<img src=<%~ postback-callback.png %> class="figure" />
+<p class="block-content">
+A common solution to this problem is the use of AJAX (Asynchronous JavaScript and XML) callbacks. After the first full page load, the web application can make subsequents requests using javascript. The callback requests are asynchronous, so the user can continue to interact with the page while the response is loading. The response contains a list of changes that will be applied to the page "on the fly", like replacing existing elements with new content or add some css style to an existing element.
+</p>
+
+<h2 id="218012">Interacting with a page on callback</h2>
+
+<p class="block-content">
+PRADO has builtin support for AJAX callbacks in the form of <i>Active Controls</i>. These controls can trigger a callback request and have their properties (value, css style, attributes, ..) updated during a callback.
+Before digging inside the list of Active Controls, it's good to have a look to how a page can be aware if the current request is a callback and how to interact with the page rendered on the client browser.
+<br/>
+The <tt>IsCallBack</tt> property of the <tt>TPage</tt> class exposes whether the current request being handled is the consequence of a callback, and the <a href="?page=ActiveControls.CallbackClientScript">CallbackClient</a> property provides many methods to update and alter the client-side content during a callback request.
+</p>
+
+<com:TTextHighlighter CssClass="source block-content">
+public function onClick($sender, $param)
+{
+ if($this->IsCallback)
+ {
+ $this->getCallbackClient()->hide($this->TextBox1);
+ }
+}
+</com:TTextHighlighter>
+
+<h1 id="218011">Active Controls (AJAX enabled Controls)</h1>
+<p class="block-content">
+Active controls extends standard PRADO controls adding the ability to automatically update themselves on callbacks without the need of ad-hoc javascript calls. Active controls are reliant on a collection of javascript classes that gets added to the page automatically when needed.
+</p>
+
+<p class="block-content">
+Most active controls have a <tt>ActiveControl.EnableUpdate</tt> property that determines whether the active control is allowed to update the contents of the client-side when the callback response returns. Depending on the control different properties can be updated.
+</p>
+
+<p class="block-content">
+Some active controls can trigger a callback as a consequence of a clientside event (a button click, a checkbox being checked, a DOM event). The callback will first raise the normal serverside event associated to the control (eg: OnClick for a <tt>TButton</tt> or OnSelectedIndexChanged for a <tt>TRadioButtonList</tt>) and then the <tt>OnCallBack</tt> event.
+The <tt>AutoPostBack</tt> property typically defaults to true for these controls.
+</p>
+</p>
+
+<p class="block-content">
+Active controls have a <a href="?page=ActiveControls.CallbackClientSide">ClientSide</a> property that provides many subproperties to customize the controls and to hook some javascript code to the callback lifecycle, like showing a "Loading" logo at the start of a callback and hide it at the end.
+</p>
+
+<h2 id="122027">TActiveButton Class Diagram</h2>
+<p id="610414" class="block-content">The class diagram for <tt>TActiveButton</tt> is illustrated in the figure below.
+Most active control that can perform callback request have a similar structure.
+</p>
+
+<img src=<%~ TActiveButtonClass.png %> class="figure"
+ alt="TActiveButton class diagram" title="TActiveButton class diagram" />
+
+<p id="610415" class="block-content"><tt>TActiveButton</tt> is an extension of <a href="?page=Controls.Button">TButton</a>
+and implements two additional interfaces <tt>ICallbackEventHandler</tt> and
+<tt>IActiveControl</tt>. The <tt>TActiveButton</tt> contains an instance of
+<a href="?page=ActiveControls.BaseActiveControl">TBaseActiveCallbackControl</a>
+available through the <tt>ActiveControl</tt> property of <tt>TActiveButton</tt>.
+The following example set the callback parameter of the <tt>TActiveButton</tt> when
+a callback request is dispatched.
+</p>
+<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code1">
+&lt;com:TActiveButton
+ Text="Click Me"
+ OnCallback="button_callback"
+ ActiveControl.CallbackParameter="value" /&gt;
+</com:TTextHighlighter>
+<p id="610416" class="block-content">In the <tt>OnCallback</tt> event handler method, the <tt>CallbackParameter</tt>
+is available in the <tt>$param</tt> object.</p>
+<com:TTextHighlighter Language="php" CssClass="source block-content" id="code2">
+public function button_callback($sender, $param)
+{
+ echo $param->CallbackParameter; //outputs "value"
+}
+</com:TTextHighlighter>
+
+<h2 id="122028">Adding Client Side Behaviour</h2>
+
+<p id="610417" class="block-content">With in the <tt>ActiveControl</tt> property is an instance of
+<a href="?page=ActiveControls.CallbackClientSide">TCallbackClientSide</a> available
+as a property <tt>ClientSide</tt> of <tt>TActiveButton</tt>.
+The <tt>ClientSide</tt> property contains sub-properties, such as <tt>RequestTimeOut</tt>,
+and client-side javascript event handler, such as <tt>OnLoading</tt>,
+that are used by the client-side when making a callback request.
+The following example demonstrates the toggling of a "loading" indicator
+when the client-side is making a callback request.
+</p>
+
+<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code3">
+&lt;com:TClientScript PradoScripts="effects" /&gt;
+<span id="callback_status">Loading...</span>
+
+&lt;com:TActiveButton
+ Text="Click Me"
+ OnCallback="button_callback"
+ ActiveControl.CallbackParameter="value" &gt;
+ &lt;prop:ClientSide
+ OnLoading="Element.show('callback_status')"
+ OnComplete="Element.hide('callback_status')" /&gt;
+&lt;/com:TActiveButton&gt;
+</com:TTextHighlighter>
+
+<p id="610418" class="block-content">The example loads the "effects" javascript library using the
+<a href="?page=Controls.ClientScript">TClientScript</a> component.
+The <tt>ClientSide.OnLoading</tt> property value contains
+javascript statement that uses the "effects" library to show the "Loading..."
+span tag. Similarly, <tt>ClientSide.OnComplete</tt> property
+value contains the javascript statement that hides the "Loading..." span tag.
+See <a href="?page=ActiveControls.CallbackClientSide">TCallbackClientSide</a> for
+further details on client-side property details.
+</p>
+
+<h2 id="128036">Active Control Basic Infrastructure Classes</h2>
+<p id="640427" class="block-content">The following classes provide the basic infrastructure classes required to
+realize the active controls. They can be useful to develop new active controls, but Prado users tipically don't need
+to use them.</p>
+<ul id="u4" class="block-content">
+ <li>
+ <h3 id="190038">TActiveControlAdapter</h3>
+ <com:DocLink ClassPath="System.Web.UI.ActiveControls.TActiveControlAdapter" />
+ <p class="block-content">
+ <tt>TActiveControlAdapter</tt> customizes the parent TControl class for active control classes.
+ It tracks changes in the viewstate values of the control and update
+ differences of the client-side HTML element attributes.
+ </p>
+ </li>
+
+ <li>
+ <h3 id="190039">TActiveListControlAdapter</h3>
+ <com:DocLink ClassPath="System.Web.UI.ActiveControls.TActiveListControlAdapter" />
+ <p class="block-content">
+ <tt>TActiveListControlAdapter</tt> allows the adapted list controls to change the selections
+ on the client-side during a callback request.
+ </p>
+ </li>
+
+ <li>
+ <h3 id="190040">TActivePageAdapter</h3>
+ <com:DocLink ClassPath="System.Web.UI.ActiveControls.TActivePageAdapter" />
+ <p class="block-content">
+ <tt>TActivePageAdapter</tt> process the page life-cycle for callback requests.
+ </p>
+ </li>
+
+ <li>
+ <h3 id="190041">TBaseActiveControl</h3>
+ <com:DocLink ClassPath="System.Web.UI.ActiveControls.TBaseActiveControl" />
+ <p class="block-content">
+ <tt>TBaseActiveControl</tt> class provided additional basic properties common for every
+ active control. An instance of <tt>TBaseActiveControl</tt> or its decendent
+ <tt>TBaseActiveCallbackControl</tt> is created by <tt>TActiveControlAdapter::getBaseActiveControl()</tt>
+ method.
+ The <tt>EnableUpdate</tt> property determines wether the active
+ control is allowed to update the contents of the client-side when the callback
+ response returns.
+ </p>
+ </li>
+
+ <li>
+ <h3 id="190042">TCallbackResponseAdapter</h3>
+ <com:DocLink ClassPath="System.Web.UI.ActiveControls.TCallbackResponseAdapter" />
+ <p class="block-content">
+ <tt>TCallbackResponseAdapter</tt> alters the <tt>THttpResponse</tt>'s outputs.
+ A <tt>TCallbackResponseWriter</tt> is used instead of the <tt>TTextWrite</tt> when
+ <tt>createHtmlWriter</tt> is called. Each call to createHtmlWriter will create
+ a new <tt>TCallbackResponseWriter</tt>. When <tt>flushContent()</tt> is called each
+ instance of <tt>TCallbackResponseWriter</tt>'s content is flushed.
+ The callback response data can be set using the <tt>ResponseData</tt> property.
+ </p>
+ </li>
+
+</ul>
+
+<h2 id="190037">Active Control Infrastructure Advanced Classes</h2>
+<p class="block-content">The following classes provide advanced properties and events needed to realize the active controls.
+A Prado user can use them to customize active controls behaviour and interact directly with the client side during a callback.
+</p>
+<ul class="block-content">
+ <li>
+ <a href="?page=ActiveControls.CallbackClientScript">TCallbackClientScript</a>
+ methods to manipulate the client-side HTML elements, also includes methods
+ to invoke javascript Effects on HTML elements.
+ </li>
+
+ <li>
+ <a href="?page=ActiveControls.CallbackClientSide">TCallbackClientSide</a>
+ is used to specify client-side callback request options and client-side event handlers.
+ </li>
+
+ <li>
+ <a href="?page=ActiveControls.CallbackEventParameter">TCallbackEventParameter</a>
+ provides the parameter passed during the callback request.
+ </li>
+
+ <li>
+ <a href="?page=ActiveControls.CallbackOptions">TCallbackOptions</a>
+ allows a common set of callback client-side options to be attached to one or more active controls.
+ </li>
+</ul>
</com:TContent>
diff --git a/demos/quickstart/protected/pages/ActiveControls/Samples/TActiveButton/Home.page b/demos/quickstart/protected/pages/ActiveControls/Samples/TActiveButton/Home.page
index 1e030102..8482ae14 100755
--- a/demos/quickstart/protected/pages/ActiveControls/Samples/TActiveButton/Home.page
+++ b/demos/quickstart/protected/pages/ActiveControls/Samples/TActiveButton/Home.page
@@ -43,5 +43,4 @@ A button causing validation with <tt>OnCallback</tt>:
</table>
-<com:TJavascriptLogger />
</com:TContent>
diff --git a/demos/quickstart/protected/pages/ActiveControls/Samples/TActiveCheckBox/Home.page b/demos/quickstart/protected/pages/ActiveControls/Samples/TActiveCheckBox/Home.page
index 139306f6..89543ef0 100755
--- a/demos/quickstart/protected/pages/ActiveControls/Samples/TActiveCheckBox/Home.page
+++ b/demos/quickstart/protected/pages/ActiveControls/Samples/TActiveCheckBox/Home.page
@@ -71,6 +71,5 @@ A checkbox validated by a required field validator:
</table>
-<com:TJavascriptLogger />
</com:TContent>
diff --git a/demos/quickstart/protected/pages/ActiveControls/Samples/TActiveCustomValidator/Home.page b/demos/quickstart/protected/pages/ActiveControls/Samples/TActiveCustomValidator/Home.page
index 8ef69a9a..1d16235e 100755
--- a/demos/quickstart/protected/pages/ActiveControls/Samples/TActiveCustomValidator/Home.page
+++ b/demos/quickstart/protected/pages/ActiveControls/Samples/TActiveCustomValidator/Home.page
@@ -16,6 +16,5 @@ Custom validator using callbacks:
</td></tr>
</table>
-<com:TJavascriptLogger />
</com:TContent>
diff --git a/demos/quickstart/protected/pages/ActiveControls/Samples/TActiveHyperLink/Home.page b/demos/quickstart/protected/pages/ActiveControls/Samples/TActiveHyperLink/Home.page
index a3f10613..a7767e2d 100755
--- a/demos/quickstart/protected/pages/ActiveControls/Samples/TActiveHyperLink/Home.page
+++ b/demos/quickstart/protected/pages/ActiveControls/Samples/TActiveHyperLink/Home.page
@@ -66,5 +66,4 @@ Body contents
</tr>
</table>
-<com:TJavascriptLogger />
</com:TContent>
diff --git a/demos/quickstart/protected/pages/ActiveControls/Samples/TActivePager/Home.page b/demos/quickstart/protected/pages/ActiveControls/Samples/TActivePager/Home.page
index e38486d1..eb5ef821 100755
--- a/demos/quickstart/protected/pages/ActiveControls/Samples/TActivePager/Home.page
+++ b/demos/quickstart/protected/pages/ActiveControls/Samples/TActivePager/Home.page
@@ -99,5 +99,21 @@ Choose page:
Element.hide('wait')
</prop:ClientSide.OnComplete>
</com:TActivePager>
-<com:TJavascriptLogger/>
+<br/>
+Use of a css class for buttons:
+<com:TStyleSheet>
+.greenbold_button {
+ background-color: #0f0;
+ font-weight: bold;
+}
+</com:TStyleSheet>
+<com:TActivePager ID="Pager4"
+ ControlToPaginate="DataList"
+ PageButtonCount="3"
+ Mode="Numeric"
+ ButtonType="PushButton"
+ OnPageIndexChanged="pageChanged"
+ OnCallBack="RenderCallback"
+ ButtonCssClass="greenbold_button"
+ />
</com:TContent>
diff --git a/demos/quickstart/protected/pages/ActiveControls/Samples/TActivePanel/Home.page b/demos/quickstart/protected/pages/ActiveControls/Samples/TActivePanel/Home.page
index 360b6b0f..f3bfe843 100755
--- a/demos/quickstart/protected/pages/ActiveControls/Samples/TActivePanel/Home.page
+++ b/demos/quickstart/protected/pages/ActiveControls/Samples/TActivePanel/Home.page
@@ -20,5 +20,4 @@ anyway since they are placed inside the active panel.
</com:TActivePanel>
</td></tr>
</table>
-<com:TJavascriptLogger />
</com:TContent>
diff --git a/demos/quickstart/protected/pages/ActiveControls/Samples/TActiveTableRow/Home.page b/demos/quickstart/protected/pages/ActiveControls/Samples/TActiveTableRow/Home.page
index 0b3f84fb..49b5bcb6 100755
--- a/demos/quickstart/protected/pages/ActiveControls/Samples/TActiveTableRow/Home.page
+++ b/demos/quickstart/protected/pages/ActiveControls/Samples/TActiveTableRow/Home.page
@@ -14,6 +14,5 @@
</com:TTable>
<com:TActiveLabel id="lblResult"/>
-<com:TJavascriptLogger />
</com:TContent>
diff --git a/demos/quickstart/protected/pages/ActiveControls/Samples/TCallbackClientScript/Home.page b/demos/quickstart/protected/pages/ActiveControls/Samples/TCallbackClientScript/Home.page
index 539909a9..dfec4755 100755
--- a/demos/quickstart/protected/pages/ActiveControls/Samples/TCallbackClientScript/Home.page
+++ b/demos/quickstart/protected/pages/ActiveControls/Samples/TCallbackClientScript/Home.page
@@ -7,12 +7,28 @@
</p>
<h2>Actions</h2>
-<com:TRadioButtonList ID="radio1">
- <com:TListItem Value="1" Text="alert() me of something" />
+<com:TClientScript PradoScripts="effects" />
+<com:TStyleSheet>
+ .red_background {
+ background-color: red;
+ }
+</com:TStyleSheet>
+
+<com:TRadioButtonList ID="radio1" RepeatColumns="2">
<com:TListItem Value="2" Text="toggle Checkbox 1" />
<com:TListItem Value="3" Text="hide Label 1" />
<com:TListItem Value="4" Text="show Label 1" />
- <com:TListItem Value="5" Text="focus TextBox 1" />
+ <com:TListItem Value="9" Text="focus TextBox 1" />
+ <com:TListItem Value="10" Text="scroll to CheckBox 1" />
+ <com:TListItem Value="11" Text="add red_background class to TextBox 1" />
+ <com:TListItem Value="12" Text="remove red_background class from TextBox 1" />
+ <com:TListItem Value="14" Text="set the 'disable' attribute on TextBox 1" />
+ <com:TListItem Value="15" Text="change the background color of Panel 1" />
+ <com:TListItem Value="16" Text="prepend and append some content inside Panel 1" />
+ <com:TListItem Value="17" Text="prepend and append some content outside Panel 1" />
+ <com:TListItem Value="18" Text="replace Panel 1 with some plain text" />
+ <com:TListItem Value="19" Text="remove TextBox 1" />
+ <com:TListItem Value="22" Text="trigger a click event on Panel 1" />
</com:TRadioButtonList>
<br/><com:TActiveButton ID="button1" OnCallback="buttonCallback" Text="callback!" />
@@ -32,8 +48,17 @@
<td>TextBox 1:</td>
<td><com:TTextBox ID="txt1" Text="Sample text" /></td>
</tr>
+ <tr>
+ <td>Panel 1:</td>
+ <td>
+ <com:TPanel ID="pan1" Style="width:100px;height:100px;background:green" Attributes.OnClick="alert('clicked on Panel1')" >
+ Panel contents
+ </com:TPanel>
+ </td>
+ </tr>
</table>
-<com:TJavascriptLogger />
-
+<div style="height:900px">
+Thw following space is intentionally left blank for the scrolling test
+</div>
</com:TContent>
diff --git a/demos/quickstart/protected/pages/ActiveControls/Samples/TCallbackClientScript/Home.php b/demos/quickstart/protected/pages/ActiveControls/Samples/TCallbackClientScript/Home.php
index eeacb660..4cd655ef 100755
--- a/demos/quickstart/protected/pages/ActiveControls/Samples/TCallbackClientScript/Home.php
+++ b/demos/quickstart/protected/pages/ActiveControls/Samples/TCallbackClientScript/Home.php
@@ -7,9 +7,6 @@ class Home extends TPage
{
switch($this->radio1->SelectedValue)
{
- case 1:
- $this->getCallbackClient()->evaluateScript("<script> alert('something'); </script>");
- break;
case 2:
$this->getCallbackClient()->check($this->check1, !$this->check1->Checked);
break;
@@ -19,9 +16,43 @@ class Home extends TPage
case 4:
$this->getCallbackClient()->show($this->label1);
break;
- case 5:
+ case 9:
$this->getCallbackClient()->focus($this->txt1);
break;
+ case 10:
+ $this->getCallbackClient()->scrollTo($this->check1, array('duration' => 1000, 'offset' => 10));
+ break;
+ case 11:
+ $this->getCallbackClient()->addCssClass($this->txt1, 'red_background');
+ break;
+ case 12:
+ $this->getCallbackClient()->removeCssClass($this->txt1, 'red_background');
+ break;
+ case 14:
+ $this->getCallbackClient()->setAttribute($this->txt1, 'disabled', true);
+ break;
+ case 15:
+ $this->getCallbackClient()->setStyle($this->pan1, array('background-color' => 'blue'));
+ break;
+ case 16:
+ $this->getCallbackClient()->prependContent($this->pan1, 'prepend<br/>');
+ $this->getCallbackClient()->appendContent($this->pan1, '<br/>append');
+ break;
+ case 17:
+ $this->getCallbackClient()->insertContentBefore($this->pan1, 'before');
+ $this->getCallbackClient()->insertContentAfter($this->pan1, 'after');
+ break;
+ case 18:
+ $this->getCallbackClient()->replaceContent($this->pan1, 'No more Panel 1');
+ break;
+ case 19:
+ $this->getCallbackClient()->remove($this->txt1);
+ break;
+ case 22:
+ $this->getCallbackClient()->click($this->pan1);
+ // alternative
+ // $this->getCallbackClient()->raiseClientEvent($this->pan1, 'click');
+ break;
}
}
}
diff --git a/demos/quickstart/protected/pages/ActiveControls/Samples/TCallbackClientSide/Home.page b/demos/quickstart/protected/pages/ActiveControls/Samples/TCallbackClientSide/Home.page
index 0d13bb90..0f94fd79 100755
--- a/demos/quickstart/protected/pages/ActiveControls/Samples/TCallbackClientSide/Home.page
+++ b/demos/quickstart/protected/pages/ActiveControls/Samples/TCallbackClientSide/Home.page
@@ -68,6 +68,5 @@ connection error has occured.
</table>
-<com:TJavascriptLogger />
</com:TContent>
diff --git a/demos/quickstart/protected/pages/ActiveControls/Samples/TCallbackOptions/Home.page b/demos/quickstart/protected/pages/ActiveControls/Samples/TCallbackOptions/Home.page
index cfb041ea..8c6ccd02 100755
--- a/demos/quickstart/protected/pages/ActiveControls/Samples/TCallbackOptions/Home.page
+++ b/demos/quickstart/protected/pages/ActiveControls/Samples/TCallbackOptions/Home.page
@@ -72,6 +72,5 @@ The same TCallbackOptions can be shared among different controls, even of differ
</td></tr>
</table>
-<com:TJavascriptLogger />
</com:TContent>
diff --git a/demos/quickstart/protected/pages/Advanced/Error.page b/demos/quickstart/protected/pages/Advanced/Error.page
index 24c7ead0..391997fb 100755
--- a/demos/quickstart/protected/pages/Advanced/Error.page
+++ b/demos/quickstart/protected/pages/Advanced/Error.page
@@ -71,7 +71,7 @@ The naming convention for the template files used for all other exceptions is as
Again, if the preferred language is not found, PRADO will try to use <tt>exception.html</tt>, instead.
</p>
<div class="note">
-<b class="tip">CAUTION:</b> When saving a template file, please make sure the file is saved using UTF-8 encoding. On Windows, you may use <tt>Notepad.exe</tt> to accomplish such saving.
+<b class="tip">CAUTION:</b> When saving a template file, please make sure the file is saved using UTF-8 encoding. On Windows, you may use <tt>Notepad++</tt> to accomplish such saving.
</div>
</com:TContent>
diff --git a/demos/quickstart/protected/pages/Advanced/Samples/I18N/LanguageList.php b/demos/quickstart/protected/pages/Advanced/Samples/I18N/LanguageList.php
index 4eba37ee..0fea7ac2 100755
--- a/demos/quickstart/protected/pages/Advanced/Samples/I18N/LanguageList.php
+++ b/demos/quickstart/protected/pages/Advanced/Samples/I18N/LanguageList.php
@@ -2,17 +2,15 @@
/**
* Language List
* @author $Author: weizhuo $
- * @version $Id: LanguageList.php 3189 2012-07-12 12:16:21Z ctrlaltca $
* @package prado.examples
*/
/**
*
* @author $Author: weizhuo $
- * @version $Id: LanguageList.php 3189 2012-07-12 12:16:21Z ctrlaltca $
*/
-class LanguageList extends TTemplateControl
+class LanguageList extends TTemplateControl
{
-
+
}
diff --git a/demos/quickstart/protected/pages/Configurations/Templates1.page b/demos/quickstart/protected/pages/Configurations/Templates1.page
index 22b693a6..6c2870f2 100755
--- a/demos/quickstart/protected/pages/Configurations/Templates1.page
+++ b/demos/quickstart/protected/pages/Configurations/Templates1.page
@@ -3,7 +3,7 @@
<p id="180166" class="block-content">
Templates are used to specify the presentational layout of controls. A template can contain static text, components, or controls that contribute to the ultimate presentation of the associated control. By default, an instance of <tt>TTemplateControl</tt> or its subclass may automatically load and instantiate a template from a file whose name is the same as the control class name. For page templates, the file name suffix must be <tt>.page</tt>; for other regular template controls, the suffix is <tt>.tpl</tt>.
</p>
-<p id="180167" class="block-content">The template format is like HTML, with a few PRADO-specifc tags, including <a href="#ct">component tags</a>, <a href="#tct">template control tags</a>, <a href="#cot">comment tags</a>, <a href="?page=Configurations.Templates2#dct">dynamic content tags</a>, and <a href="?page=Configurations.Templates3#dpt">dynamic property tags</a>. .
+<p id="180167" class="block-content">The template format is like HTML, with a few PRADO-specifc tags, including <a href="#ct">component tags</a>, <a href="#tct">template control tags</a>, <a href="#cot">comment tags</a>, <a href="?page=Configurations.Templates2#dct">dynamic content tags</a>, and <a href="?page=Configurations.Templates3#dpt">dynamic property tags</a>.
</p>
<a name="ct"></a>
diff --git a/demos/quickstart/protected/pages/Controls/Data.page b/demos/quickstart/protected/pages/Controls/Data.page
index 3843b332..829a4ef5 100755
--- a/demos/quickstart/protected/pages/Controls/Data.page
+++ b/demos/quickstart/protected/pages/Controls/Data.page
@@ -2,6 +2,12 @@
<h1 id="5001">Data Controls</h1>
+<p class="block-content">
+Data controls are used to display a repeated content like a list or a table. The content is generated from a collection of items containing the data, called the <tt>DataSource</tt>, and a template describing the appearance, called <tt>Renderer</tt>.
+<br/>
+The process of assigning a DataSource to a Data control and render the template for each item is called <tt>data binding</tt>.
+</p>
+
<ul id="u1" class="block-content">
<li>
<a href="?page=Controls.DataList">TDataList</a> is used to display or modify a list of data items.
diff --git a/demos/quickstart/protected/pages/Controls/HtmlArea4.page b/demos/quickstart/protected/pages/Controls/HtmlArea4.page
index 1fa33424..f7092230 100755
--- a/demos/quickstart/protected/pages/Controls/HtmlArea4.page
+++ b/demos/quickstart/protected/pages/Controls/HtmlArea4.page
@@ -1,6 +1,6 @@
<com:TContent ID="body" >
-<h1>THtmlArea4</h1>
+<h1 id="84009">THtmlArea4</h1>
<com:DocLink ClassPath="System.Web.UI.WebControls.THtmlArea4" />
<p class="block-content">
diff --git a/demos/quickstart/protected/pages/Controls/Markdown.page b/demos/quickstart/protected/pages/Controls/Markdown.page
new file mode 100644
index 00000000..2fea9fc2
--- /dev/null
+++ b/demos/quickstart/protected/pages/Controls/Markdown.page
@@ -0,0 +1,40 @@
+<com:TContent ID="body" >
+
+<h1 id="106010">TMarkdown</h1>
+<com:DocLink ClassPath="System.Web.UI.WebControls.TMarkdown" />
+
+<p class="block-content">
+<tt>TMarkdown</tt> is a text formatter that produces html content from plain text. The formatter follows the <a href="http://www.wikipedia.org/wiki/Markdown">Markdown</a> syntax and the <a href="https://help.github.com/articles/github-flavored-markdown">GFM</a> (GitHub Flavored Markdown) extension.
+</p>
+<p class="block-content">
+Any content in the body of <tt>TMarkdown</tt>, including both static text and the rendering results of its child controls, is first converted using the Markdown syntax. Then, to any code block found in the html, syntax highlighting is applied. The code being highlighted follows the syntax of the specified <tt>Language</tt>, which can be 'php' (default), 'prado', 'css', 'html', etc. Here, 'prado' stands for the syntax of PRADO control templates. If the language is not specified in the <tt>Language</tt> property, it can be evinced from the Markdown syntax.
+</p>
+<p class="block-content">
+If line numbers are desired in front of each line, set <tt>ShowLineNumbers</tt> to true.
+</p>
+<p class="block-content">
+To use <tt>TMarkdown</tt>, simply enclose the contents to be formatted within the body of a <tt>TMarkdown</tt> control. The following example formats some text and piece of PHP code,
+</p>
+<com:TTextHighlighter Language="prado" CssClass="source block-content" >
+&lt;com:TMarkdown ShowLineNumbers="true" &gt;
+PRADO Markdown Test
+===================
+
+Some text and a list:
+* item 1
+* item 2
+
+Now, some code:
+
+```php
+public function test() {
+ // comment
+ echo "look me i'm colorful";
+}
+```
+&lt;/com:TMarkdown&gt;
+</com:TTextHighlighter>
+
+<com:RunBar PagePath="Controls.Samples.TMarkdown.Home" />
+
+</com:TContent>
diff --git a/demos/quickstart/protected/pages/Controls/NewControl.page b/demos/quickstart/protected/pages/Controls/NewControl.page
index 10c789db..9a680f43 100755
--- a/demos/quickstart/protected/pages/Controls/NewControl.page
+++ b/demos/quickstart/protected/pages/Controls/NewControl.page
@@ -10,7 +10,7 @@ In general, there are two ways of writing new controls: composition of existing
<h2 id="5402">Composition of Existing Controls</h2>
<p id="660430" class="block-content">
-Composition is the easiest way of creating new controls. It mainly involves instantiating existing controls, configuring them and making them the constituent components. The properties of the constituent components are exposed through <a href="?page=Fundamentals.Components">subproperties</a>.
+Composition is the easiest way of creating new controls. It mainly involves instantiating existing controls, configuring them and making them the constituent components. The properties of the constituent components are exposed through <a href="?page=Fundamentals.Components1">subproperties</a>.
</p>
<p id="660431" class="block-content">
One can compose a new control in two ways. One is to extend <tt>TCompositeControl</tt> and override the <tt>TControl::createChildControls()</tt> method. The other is to extend <tt>TTemplateControl</tt> (or its child classes) and write a control template. The latter is easier to use and can organize the layout constituent components more intuitively, while the former is more efficient because it does not require parsing of the template.
diff --git a/demos/quickstart/protected/pages/Controls/Samples/TConditional/Home.page b/demos/quickstart/protected/pages/Controls/Samples/TConditional/Home.page
index 5702970a..a7383e8d 100755
--- a/demos/quickstart/protected/pages/Controls/Samples/TConditional/Home.page
+++ b/demos/quickstart/protected/pages/Controls/Samples/TConditional/Home.page
@@ -1,9 +1,9 @@
<com:TContent ID="body">
<h1>TConditional Samples</h1>
-<com:TConditional Condition="Prado::getVersion()==='3.2.3'">
+<com:TConditional Condition="Prado::getVersion()==='3.2.4'">
<prop:TrueTemplate>
- <com:TLabel Text="You are using PRADO 3.2.3" />
+ <com:TLabel Text="You are using PRADO 3.2.4" />
</prop:TrueTemplate>
<prop:FalseTemplate>
<com:TLabel Text="You are using PRADO <%= Prado::getVersion() %>" />
diff --git a/demos/quickstart/protected/pages/Controls/Samples/THtmlArea/Home.page b/demos/quickstart/protected/pages/Controls/Samples/THtmlArea/Home.page
index 5150922f..5f01c07e 100755
--- a/demos/quickstart/protected/pages/Controls/Samples/THtmlArea/Home.page
+++ b/demos/quickstart/protected/pages/Controls/Samples/THtmlArea/Home.page
@@ -29,7 +29,7 @@ THtmlArea with manually set options
</td></tr>
<tr><td class="samplenote">
-THtmlArea with visual editting disabled:
+THtmlArea with visual editing disabled:
</td><td class="sampleaction">
<com:THtmlArea ID="HtmlArea3" EnableVisualEdit="false" />
<br/>
@@ -38,6 +38,12 @@ THtmlArea with visual editting disabled:
<com:TLiteral Encode="true" ID="Result3" />
</td></tr>
+<tr><td class="samplenote">
+Read-only THtmlArea:
+</td><td class="sampleaction">
+<com:THtmlArea ID="HtmlArea4" ReadOnly="true" Text="Sample html text: <b>bold</b> <i>italic</i>" />
+</td></tr>
+
</table>
</com:TContent>
diff --git a/demos/quickstart/protected/pages/Controls/Samples/THtmlArea4/Home.page b/demos/quickstart/protected/pages/Controls/Samples/THtmlArea4/Home.page
index 6bb6449c..2b6c7a7a 100755
--- a/demos/quickstart/protected/pages/Controls/Samples/THtmlArea4/Home.page
+++ b/demos/quickstart/protected/pages/Controls/Samples/THtmlArea4/Home.page
@@ -29,7 +29,7 @@ THtmlArea4 with manually set options
</td></tr>
<tr><td class="samplenote">
-THtmlArea4 with visual editting disabled:
+THtmlArea4 with visual editing disabled:
</td><td class="sampleaction">
<com:THtmlArea4 ID="HtmlArea3" EnableVisualEdit="false" />
<br/>
@@ -38,6 +38,12 @@ THtmlArea4 with visual editting disabled:
<com:TLiteral Encode="true" ID="Result3" />
</td></tr>
+<tr><td class="samplenote">
+Read-only THtmlArea:
+</td><td class="sampleaction">
+<com:THtmlArea4 ID="HtmlArea4" ReadOnly="true" Text="Sample html text: <b>bold</b> <i>italic</i>" />
+</td></tr>
+
</table>
</com:TContent>
diff --git a/demos/quickstart/protected/pages/Controls/Samples/TMarkdown/Home.page b/demos/quickstart/protected/pages/Controls/Samples/TMarkdown/Home.page
new file mode 100755
index 00000000..4cd0f86b
--- /dev/null
+++ b/demos/quickstart/protected/pages/Controls/Samples/TMarkdown/Home.page
@@ -0,0 +1,31 @@
+<com:TContent ID="body">
+
+<h1>TMarkdown Samples</h1>
+
+<table class="sampletable">
+
+<tr><td class="samplenote">
+Formatting text and code:
+</td><td class="sampleaction">
+<com:TMarkdown ShowLineNumbers="true">
+PRADO Markdown Test
+===================
+
+Some text and a list:
+* item 1
+* item 2
+
+Now, some code:
+
+```php
+public function test() {
+ // comment
+ echo "look me i'm colorful";
+}
+```
+</com:TMarkdown>
+</td></tr>
+
+</table>
+
+</com:TContent>
diff --git a/demos/quickstart/protected/pages/Controls/Samples/TPanel/Home.page b/demos/quickstart/protected/pages/Controls/Samples/TPanel/Home.page
index de419172..6e6cb54d 100755
--- a/demos/quickstart/protected/pages/Controls/Samples/TPanel/Home.page
+++ b/demos/quickstart/protected/pages/Controls/Samples/TPanel/Home.page
@@ -67,6 +67,5 @@ will be clicked because it is set as the default button of the panel.
</com:TPanel>
</td></tr>
</table>
-<com:TJavascriptLogger />
</com:TContent>
diff --git a/demos/quickstart/protected/pages/Controls/Samples/TTextHighlighter/Home.page b/demos/quickstart/protected/pages/Controls/Samples/TTextHighlighter/Home.page
index 9bd86078..c7506c67 100755
--- a/demos/quickstart/protected/pages/Controls/Samples/TTextHighlighter/Home.page
+++ b/demos/quickstart/protected/pages/Controls/Samples/TTextHighlighter/Home.page
@@ -12,7 +12,6 @@ Highlighting PHP statements:
$str = 'one|two|three|four';
// will output an array
print_r(explode('|', $str, 2));
-?>
</com:TTextHighlighter>
</td></tr>
diff --git a/demos/quickstart/protected/pages/Controls/Standard.page b/demos/quickstart/protected/pages/Controls/Standard.page
index 463f90a5..43fecfb3 100755
--- a/demos/quickstart/protected/pages/Controls/Standard.page
+++ b/demos/quickstart/protected/pages/Controls/Standard.page
@@ -1,7 +1,9 @@
<com:TContent ID="body" >
<h1 id="52001">Standard Controls</h1>
-<p id="260001" class="block-content">* the tutorial for this control is not completed yet.</p>
+<p class="block-content">
+ Standard controls are the most basic controls in PRADO. They can represent a simple html tag like an &lt;input&gt; or even more comple controls like a date picker or a WYSIWYG text area. Standard controls are in the <tt>System.Web.UI.WebControls</tt> namespace.
+</p>
<ul id="u1" class="block-content">
<li>
<a href="?page=Controls.Accordion">TAccordion</a> displays an accordion consisting of multiple views. At any time, only one view is visible.
@@ -104,6 +106,10 @@
</li>
<li>
+ <a href="?page=Controls.Markdown">TMarkdown</a> formats its body content following the <a href="http://www.wikipedia.org/wiki/Markdown">Markdown</a> syntax.
+ </li>
+
+ <li>
<a href="?page=Controls.MultiView">TMultiView</a> represents a container for a group of <tt>TView</tt> controls, each of which is container for other controls. At any time, at most one <tt>TView</tt> is visible.
</li>
diff --git a/demos/quickstart/protected/pages/Controls/TextHighlighter.page b/demos/quickstart/protected/pages/Controls/TextHighlighter.page
index 1babbb33..5d3428f9 100755
--- a/demos/quickstart/protected/pages/Controls/TextHighlighter.page
+++ b/demos/quickstart/protected/pages/Controls/TextHighlighter.page
@@ -17,7 +17,6 @@ To use <tt>TTextHighlighter</tt>, simply enclose the contents to be syntax highl
<?php
$str = 'one|two|three|four';
print_r(explode('|', $str, 2)); // will output an array
-?>
&lt;/com:TTextHighlighter&gt;
</com:TTextHighlighter>
diff --git a/demos/quickstart/protected/pages/Controls/id/NewControl.page b/demos/quickstart/protected/pages/Controls/id/NewControl.page
index ea083f6c..85c6eff0 100755
--- a/demos/quickstart/protected/pages/Controls/id/NewControl.page
+++ b/demos/quickstart/protected/pages/Controls/id/NewControl.page
@@ -10,7 +10,7 @@ Secara umum, ada dua cara penulisan kontrol baru: komposisi kontrol yang sudah a
<h2 id="5402">Komposisi Kontrol yang Sudah Ada</h2>
<p id="660430" class="block-content">
-Komposisi adalah cara termudah membuat kontrol baru. Ia melibatkan terutama penurunan kontrol yang sudah ada, mengkonfigurasinya dan menjadikannya unsur komponen. Properti dari unsur komponen diperlihatkan melalui <a href="?page=Fundamentals.Components">subproperti</a>.
+Komposisi adalah cara termudah membuat kontrol baru. Ia melibatkan terutama penurunan kontrol yang sudah ada, mengkonfigurasinya dan menjadikannya unsur komponen. Properti dari unsur komponen diperlihatkan melalui <a href="?page=Fundamentals.Components1">subproperti</a>.
</p>
<p id="660431" class="block-content">
Seseorang dapat menciptakan sebuah kontrol baru dalam dua cara. Pertama adalah memperluas <tt>TCompositeControl</tt> dan mengganti metode <tt>TControl::createChildControls()</tt>. Kedua adalah memperluas <tt>TTemplateControl</tt> (atau kelas anaknya) dan menulis template kontrol. Yang terakhir lebih mudah digunakan dan bisa mengatur tata letak unsur komponen lebih intuitif, sementara pembentuk lebih efisien karena ia tidak perlu menguraikan template.
diff --git a/demos/quickstart/protected/pages/Controls/id/TextHighlighter.page b/demos/quickstart/protected/pages/Controls/id/TextHighlighter.page
index b2b500b0..b1bb4ce7 100755
--- a/demos/quickstart/protected/pages/Controls/id/TextHighlighter.page
+++ b/demos/quickstart/protected/pages/Controls/id/TextHighlighter.page
@@ -17,7 +17,6 @@ Untuk menggunakan <tt>TTextHighlighter</tt>, cukup kurung konten yang sintaksnya
<?php
$str = 'one|two|three|four';
print_r(explode('|', $str, 2)); // akan mengeluarkan array
-?>
&lt;/com:TTextHighlighter&gt;
</com:TTextHighlighter>
diff --git a/demos/quickstart/protected/pages/Database/ActiveRecord.page b/demos/quickstart/protected/pages/Database/ActiveRecord.page
index 537c65e0..cf1485bd 100755
--- a/demos/quickstart/protected/pages/Database/ActiveRecord.page
+++ b/demos/quickstart/protected/pages/Database/ActiveRecord.page
@@ -129,7 +129,7 @@ You may specify qualified table names. E.g. for MySQL, <tt>TABLE = "`database1`.
</div>
<div class="note"><b class="note">Note:</b>
-Since version <b>3.1.3</b> you can also use a method <tt>table()</tt> to define the table name.
+Since version <b>3.1.3</b> you can also use a method <tt>table()</tt> to define the table name.
This allows you to dynamically specify which table should be used by the ActiveRecord.
<com:TTextHighlighter Language="php" CssClass="source block-content">
class TeamRecord extends TActiveRecord
@@ -159,7 +159,7 @@ class UserRecord extends TActiveRecord {
}
}
</com:TTextHighlighter>
-<p id="710010" class="block-content">More details regarding TComponent can be found in the <a href="?page=Fundamentals.Components">Components documentation</a>.
+<p id="710010" class="block-content">More details regarding TComponent can be found in the <a href="?page=Fundamentals.Components1">Components documentation</a>.
Later we shall use the getter/setters to allow for lazy loading of relationship objects.
</p>
@@ -1128,7 +1128,7 @@ class PlayerRecord extends BaseFkRecord
<p id="710046" class="block-content">We first need to change the <tt>$skills=array()</tt> declaration to a private property
<tt>$_skills</tt> (notice the underscore) and set it to null instead. This allows us
to define the <tt>skills</tt> property using getter/setter methods
-(see <a href="?page=Fundamentals.Components">Components</a> for details). The <tt>getSkills()</tt>
+(see <a href="?page=Fundamentals.Components1">Components</a> for details). The <tt>getSkills()</tt>
getter method for the <tt>skills</tt> property will lazy load the corresponding skills foreign record
when it is used as follows. Notice that we only do a lazy load when its <tt>$player_id</tt> is
not null (that is, when the record is already fetched from the database or player id was already set).
diff --git a/demos/quickstart/protected/pages/Database/id/ActiveRecord.page b/demos/quickstart/protected/pages/Database/id/ActiveRecord.page
index 454aa3f9..8e81678e 100755
--- a/demos/quickstart/protected/pages/Database/id/ActiveRecord.page
+++ b/demos/quickstart/protected/pages/Database/id/ActiveRecord.page
@@ -3,7 +3,7 @@
<com:SinceVersion Version="3.1a" />
<p id="690478" class="block-content">Rekaman Aktif adalah obyek yang melapisi baris dalam tabel atau view database,
melindungi akses database dan menambahkan logika domain pada data tersebut.
- Dasar dari Rekaman Aktif adalah kelas bisnis, sebagai contoh, kelas
+ Dasar dari Rekaman Aktif adalah kelas bisnis, sebagai contoh, kelas
<tt>Products</tt>, yang hampir menyamai struktur rekaman dari tabel database
dibawahnya. Setiap Rekaman Aktif akan bertanggung jawab atas
penyimpanan dan pengambilan data ke dan dari database. </p>
@@ -14,22 +14,22 @@
</div>
<h2 id="138047">Kapan Menggunakannya</h2>
-<p id="690479" class="block-content">Rekaman Aktif adalah pilihan yang baik untuk logika domain yang tidak terlalu rumit,
+<p id="690479" class="block-content">Rekaman Aktif adalah pilihan yang baik untuk logika domain yang tidak terlalu rumit,
seperti membuat, membaca, memutakhirkan, dan menghapus. Derivasi dan validasi
didasarkan pada satu rekaman yang bekerja denga baik dalam struktur ini. Rekaman Aktif mempunyai kuntungan utama dalam hal kesederhanaan. Mudah untuk membangun Rekaman Aktif, dan mudah untuk dimengerti.</p>
<p id="690480" class="block-content">Akan tetapi, seiring dengan perkembangan logika bisnis Anda dalm hal kompleksitas, Anda akan segera ingin menggunakan hubungan langsung obyek Anda, koleksi, turunan, dan seterusnya. Ini tidak mudah diterapkan ke dalam Rekaman Aktif, dan menambahkannya sedikit demi sedikit menjadi sangat kacau.
Argumen lain terhadap Rekaman Aktif adalah kenyataan bahwa ia menyandingkan desin obyek ke desain database. Ini menjadikannya lebih sulit untuk merefraktorisasi karena proyek terus berjalan.</p>
-
- <p id="690481" class="block-content">Alternatifnya adalah menggunakan Pemeta Data yang yang memisahkan aturan dari obyek bisnis dan bagaimana obyek ini disimpan.
+
+ <p id="690481" class="block-content">Alternatifnya adalah menggunakan Pemeta Data yang yang memisahkan aturan dari obyek bisnis dan bagaimana obyek ini disimpan.
Prado menyediakan pilihan tambahan antara Rekaman Aktif dan
- <a href="?page=Database.SqlMap">Pemeta Data SqlMap</a>.
- Pemeta Data SqlMap bisa dipakai untuk mengambil obyek Rekaman Aktif, hasilnya; obyek Rekaman Aktif ini bisa dipakai untuk memutakhirkan database.
+ <a href="?page=Database.SqlMap">Pemeta Data SqlMap</a>.
+ Pemeta Data SqlMap bisa dipakai untuk mengambil obyek Rekaman Aktif, hasilnya; obyek Rekaman Aktif ini bisa dipakai untuk memutakhirkan database.
"Hubungan" antara Rekaman Aktif dan <a href="?page=Database.SqlMap">SqlMap</a> digambarkan dalam diagram berikut. Lebih rinci mengenai Pemeta Data SqlMap dapat ditemukan dalam
<a href="http://www.pradosoft.com/demos/sqlmap/">Manual SqlMap</a>.
<img src=<%~ sqlmap_active_record.png %> alt="Rekaman Aktif dan SqlMap DataMapper" id="fig:diagram.png" class="figure"/>
</p>
-
+
<p id="690482" class="block-content">
Kelas Rekaman Aktif berfungsi untuk melakukan tugas-tugas berikut.
</p>
@@ -41,22 +41,22 @@
</ul>
<h2>Implikasi Desain</h2>
<p>
-Implementasi Prado terhadap Rekaman Aktif tidak memelihara identitas referensial. Setiap obyek diperoleh menggunakan Rekaman Aktif pada data dalam database. Sebagai contoh, jika Anda meminta kustomer tertentu dan mendapatkan kembali obyek <tt>Customer</tt>, kali berikutnya Anda meminta kustomer itu, Anda akan kembali mendapatkan turunan lain dari obyek <tt>Customer</tt>. Ini berarti bahwa perbandingan tepat (misalnya menggunakan <tt>===</tt>) akan mengembalikan false, sementara perbandingan bebas (misalnya menggunakan <tt>==</tt>) akan mengembalikan true jika nilai obyek sama menurut perbandingan bebas.
+Implementasi Prado terhadap Rekaman Aktif tidak memelihara identitas referensial. Setiap obyek diperoleh menggunakan Rekaman Aktif pada data dalam database. Sebagai contoh, jika Anda meminta kustomer tertentu dan mendapatkan kembali obyek <tt>Customer</tt>, kali berikutnya Anda meminta kustomer itu, Anda akan kembali mendapatkan turunan lain dari obyek <tt>Customer</tt>. Ini berarti bahwa perbandingan tepat (misalnya menggunakan <tt>===</tt>) akan mengembalikan false, sementara perbandingan bebas (misalnya menggunakan <tt>==</tt>) akan mengembalikan true jika nilai obyek sama menurut perbandingan bebas.
<p>
<p>
Implikasi desain ini terkait dengan pertanyaan berikut.
-<i>"Anda pikir kustomer sebagai obyek, di mana hanya satu,
+<i>"Anda pikir kustomer sebagai obyek, di mana hanya satu,
atau Anda pikir obyek yang Anda operasikan sebagai <b>duplikat</b> dari database?"</i>
-Pemetaan O/R lain akan mengartikan bahwa hanya ada satu obyek Kustomer dengan custID 100, dan secara literal ia adalah kustomer.
-Jika Anda mendapatkan kustomer dan mengubah field-nya, maka Anda sekarang telah mengubah kustomer itu.
-<i>"Itu berbatasan dengan: Anda telah mengubah duplikat kustomer ini, tapi bukan pada duplikat itu.
+Pemetaan O/R lain akan mengartikan bahwa hanya ada satu obyek Kustomer dengan custID 100, dan secara literal ia adalah kustomer.
+Jika Anda mendapatkan kustomer dan mengubah field-nya, maka Anda sekarang telah mengubah kustomer itu.
+<i>"Itu berbatasan dengan: Anda telah mengubah duplikat kustomer ini, tapi bukan pada duplikat itu.
Dan jika dua orang memutakhirkan kustomer pada dua duplikat obyek, siapapun yang memutakhirkan pertama kali, atau mungkin yang terakhir yang menang."</i> [A. Hejlsberg 2003]
</p>
<h2 id="142010">Database yang Didukung</h2>
<p id="p1" class="block-content">
-Implementasi Rekaman Aktif memanfaatkan kelas <a href="?page=Database.DAO">Prado DAO</a> untuk akses data.
-Implementasi Rekaman Aktif saat ini mendukung database sebagai berikut.
+Implementasi Rekaman Aktif memanfaatkan kelas <a href="?page=Database.DAO">Prado DAO</a> untuk akses data.
+Implementasi Rekaman Aktif saat ini mendukung database sebagai berikut.
</p>
<ul>
<li><a href="http://www.mysql.com">MySQL 4.1 atau lebih tinggi</a></li>
@@ -69,8 +69,8 @@ Implementasi Rekaman Aktif saat ini mendukung database sebagai berikut.
<h1 id="138048">Mendefinisikan Rekaman Aktif</h1>
<p id="690483" class="block-content">Mari kita anggap tabel
- "<tt>users</tt>" berikut yang berisi dua kolom bernama "<tt>username</tt>" dan "<tt>email</tt>",
- di mana "<tt>username</tt>" juga merupakan kunci primer.
+ "<tt>users</tt>" berikut yang berisi dua kolom bernama "<tt>username</tt>" dan "<tt>email</tt>",
+ di mana "<tt>username</tt>" juga merupakan kunci primer.
<com:TTextHighlighter Language="sql" CssClass="source block-content" id="code_690147">
CREATE TABLE users
(
@@ -88,7 +88,7 @@ class UserRecord extends TActiveRecord
public $username; //kolom bernama "username" dalam tabel "users"
public $email;
-
+
/**
* @return TActiveRecord active record finder instance
*/
@@ -116,7 +116,7 @@ Anda dapat menetapkan nama-nama tabel yang memenuhi syarat. Contohnya untuk MySQ
<com:TTextHighlighter Language="php" CssClass="source block-content" id="code_690149">
class UserRecord extends TActiveRecord {
... //definisi yang sudah ada seprti di atas
-
+
private $_level;
public function setLevel($value) {
$this->_level=TPropertyValue::ensureInteger($value,0);
@@ -126,18 +126,18 @@ class UserRecord extends TActiveRecord {
}
}
</com:TTextHighlighter>
-<p id="710010" class="block-content">Lebih jelas mengenai TComponent dapat ditemukan dalam <a href="?page=Fundamentals.Components">Dokumentasi komponen</a>.
+<p id="710010" class="block-content">Lebih jelas mengenai TComponent dapat ditemukan dalam <a href="?page=Fundamentals.Components1">Dokumentasi komponen</a>.
Nantinya kita harus dapat menggunakan pengambil/penyetel guna membolehkan pengambilan malas atas obyek yang berhubungan.
</p>
<div class="info"><b class="note">Info:</b>
<tt>TActiveRecord</tt> juga dapat bekerja dengan view database dengan menetapkan konstan <tt>TABLE</tt> terkait ke nama view. Akan tetapi,
obyek yang dikembalikan dari view hanya-baca, memanggil metode
-<tt>save()</tt> atau <tt>delete()</tt> akan memunculkan eksepsi.
+<tt>save()</tt> atau <tt>delete()</tt> akan memunculkan eksepsi.
</div>
<p id="690486" class="block-content">
- Metode statis <tt>finder()</tt> mengembalilkan turunan <tt>UserRecord</tt>
+ Metode statis <tt>finder()</tt> mengembalilkan turunan <tt>UserRecord</tt>
yang dapat dipakai untuk mengambil rekaman dari database. Pengambilan rekaman menggunakan metode finder akan didiskusikan nanti. Metode statis <tt>TActiveRecord::finder()</tt> mengambil nama kelas Rekaman Aktif sebagai parameter.
</p>
@@ -152,7 +152,7 @@ obyek yang dikembalikan dari view hanya-baca, memanggil metode
$dsn = 'pgsql:host=localhost;dbname=test'; //Postgres SQL
$conn = new TDbConnection($dsn, 'dbuser','dbpass');
TActiveRecordManager::getInstance()->setDbConnection($conn);
-</com:TTextHighlighter>
+</com:TTextHighlighter>
<p id="710011" class="block-content">Alternatifnya, Anda dapat membuat basis kelas dan mengganti metode <tt>getDbConnection()</tt> untuk mengembalikan
koneksi database. Ini adalah cara sederhana untuk mengijinkan koneksi database multipel. Kode berikut mendemonstrasikan penetapan koneksi database dalam sebuah basis kelas (tidak perlu menyetel koneksi DB di manapun juga).
@@ -178,13 +178,13 @@ class MyDb2Record extends TActiveRecord
return $conn;
}
}
-</com:TTextHighlighter>
+</com:TTextHighlighter>
<h3 class="prado-specific">Menggunakan <tt>application.xml</tt> di dalam Kerangka Kerja Prado</h3>
<div class="prado-specific">
<p id="690488" class="block-content">
- Koneksi database standar dapat juga dikonfigurasi menggunakan tag <tt>&lt;module&gt;</tt> dalam <a href="?page=Configurations.AppConfig">application.xml</a>
+ Koneksi database standar dapat juga dikonfigurasi menggunakan tag <tt>&lt;module&gt;</tt> dalam <a href="?page=Configurations.AppConfig">application.xml</a>
atau <a href="?page=Configurations.PageConfig">config.xml</a> seperti berikut.
<com:TTextHighlighter Language="xml" CssClass="source block-content" id="code_690151">
<modules>
@@ -192,8 +192,8 @@ class MyDb2Record extends TActiveRecord
<database ConnectionString="pgsql:host=localhost;dbname=test"
Username="dbuser" Password="dbpass" />
</module>
-</modules>
-</com:TTextHighlighter>
+</modules>
+</com:TTextHighlighter>
<div class="tip"><b class="note">Tip:</b>
Atribut <tt>EnableCache</tt> ketika disetel ke "true" akan melakukan cache meta data tabel, yakni nama kolom tabel, indeks dan batasan yang disimpan dalam cache dan dipakai ulang. Anda harus membersihkan atau mematikan cache jika Anda ingin melihat perubahan terhadap definisi tabel Anda. <a href="?page=Advanced.Performance#6402">Modul cache</a> juga harus didefinisikan agar cache berfungsi.
</div>
@@ -207,13 +207,13 @@ class MyDb2Record extends TActiveRecord
Username="dbuser" Password="dbpass" />
</module>
- <module class="System.Data.ActiveRecord.TActiveRecordConfig"
+ <module class="System.Data.ActiveRecord.TActiveRecordConfig"
ConnectionID="db1" EnableCache="true" />
<module class="System.Data.SqlMap.TSqlMapConfig"
ConnectionID="db1" ... />
-</modules>
-</com:TTextHighlighter>
+</modules>
+</com:TTextHighlighter>
</p>
</div>
@@ -299,10 +299,10 @@ $criteria->Offset = 20;
<div class="note"><b class="note">Catatan:</b>
Untuk MSSQL dan saat <tt>Limit</tt> serta <tt>Offset</tt> berisi nilai integer positif. Query aktual yang dijalankan diubah oleh kelas
-<com:DocLink ClassPath="System.Data.ActiveRecord.Common.Mssql.TMssqlCommandBuilder"
+<com:DocLink ClassPath="System.Data.ActiveRecord.Common.Mssql.TMssqlCommandBuilder"
Text="TMssqlCommandBuilder"
/>
-berdasarkan pada
+berdasarkan pada
<a href="http://troels.arvin.dk/db/rdbms/#select-limit-offset">http://troels.arvin.dk/db/rdbms/</a>
untuk mengemulasikan kondisi <tt>Limit</tt> dan <tt>Offset</tt>.
</div>
@@ -332,11 +332,11 @@ $finder->find('Username = ? AND Password = ?', $name, $pass);
$finder->findAllByAge($age);
$finder->findAll('Age = ?', $age);
</com:TTextHighlighter>
-
+
<div class="tip"><b class="note">Tip:</b>
Anda juga dapat menggunakan kombinasi <tt>AND</tt> dan <tt>OR</tt> sebagai kondisi dalam metode dinamis.
</div>
-
+
<h3 id="138060"><tt>findBySql()</tt> dan <tt>findAllBySql()</tt></h3>
<p id="690497" class="block-content">Mencari rekaman menggunakan SQL penuh di mana <tt>findBySql()</tt> mengembalikan Rekaman Aktif dan <tt>findAllBySql()</tt>mengembalikan array obyek rekaman.
Untuk setiap kolom yang dikembalikan, kelas Rekaman Aktif terkait harus mendefinisikan variabel atau properti untuk setiap nama kolom terkait.
@@ -371,7 +371,7 @@ Obyek dimutakhirkan dengan kunci primer dari tabel itu yang berisi definisi yang
Sebagai contoh, jika Anda menyisipkan sebuah rekaman baru ke dalam tabel MySQL yang kolomnya didefinisikan dengan "autoincrement", obyek Rekaman Aktif akan dimutakhirkan dengan nilai yang ditambahkan.</div>
<p id="690500" class="block-content">
-Untuk memutakhirkan rekaman dalam database, cukup ubah satu atau lebih properti obyek Rekaman Aktif yang sudah diambil dari database dan kemudian panggil metode <tt>save()</tt>.
+Untuk memutakhirkan rekaman dalam database, cukup ubah satu atau lebih properti obyek Rekaman Aktif yang sudah diambil dari database dan kemudian panggil metode <tt>save()</tt>.
<com:TTextHighlighter Language="php" CssClass="source block-content" id="code_690162">
$user = UserRecord::finder()->findByName('admin');
@@ -392,7 +392,7 @@ Kapan saja Anda memanggil metode <tt>save()</tt> pada obyek TActiveRecord, obyek
<h2 id="138052">Menghapus rekaman yang sudah ada</h2>
<p id="690502" class="block-content">
Untuk menghapus rekaman yang sudah ada dan diambil, cukup panggil metode <tt>delete()</tt>.
- Anda juga dapat menghapus rekaman dalam database dengan kunci primer tanpa mengambil rekaman apapun menggunakan metode <tt>deleteByPk()</tt> (dan metode yang sama <tt>deleteAllByPks()</tt>).
+ Anda juga dapat menghapus rekaman dalam database dengan kunci primer tanpa mengambil rekaman apapun menggunakan metode <tt>deleteByPk()</tt> (dan metode yang sama <tt>deleteAllByPks()</tt>).
Sebagai contoh, untuk menghapus satu atau beberapa rekaman dengan menggunakan satu atau lebih kunci primer.
</p>
<com:TTextHighlighter Language="php" CssClass="source block-content" id="code_690163">
@@ -457,8 +457,8 @@ TActiveRecord menawarkan dua event, <tt>OnCreateCommand</tt> dan <tt>OnExecuteCo
</p>
<p id="710015" class="block-content">
-Event <tt>OnExecuteCommand</tt> dimunculkan ketika perintah dijalankan dan hasil dari database dikembalikan. Obyek parameter <tt>TDataGatewayResultEventParameter</tt>
-dari properti <tt>Result</tt> berisi data yang dikembalikan dari database.
+Event <tt>OnExecuteCommand</tt> dimunculkan ketika perintah dijalankan dan hasil dari database dikembalikan. Obyek parameter <tt>TDataGatewayResultEventParameter</tt>
+dari properti <tt>Result</tt> berisi data yang dikembalikan dari database.
Data yang dikembalikan dapat diubah dengan setelan properti <tt>Result</tt>.
</p>
@@ -491,7 +491,7 @@ function logger($sender,$param)
}
TActiveRecord::finder('MyRecord')->OnExecuteCommand[] = 'logger';
$obj->OnExecuteCommand[] = array($logger, 'log'); //setiap PHP callback yg benar.
-</com:TTextHighlighter>
+</com:TTextHighlighter>
<h1 id="ar_relations">Hubungan Rekaman Aktif</h1>
<com:SinceVersion Version="3.1rc1" />
@@ -507,7 +507,7 @@ Dalam bagian berikut kita akan menganggap hubungan tabel antara
<img src=<%~ ar_relations.png %> class="figure" />
-<p id="710018" class="block-content">Tujuannya adalah untuk mendapatkan model obyek yang mewakili ke beberapa derajat hubungan entitas dalam gambar di atas.
+<p id="710018" class="block-content">Tujuannya adalah untuk mendapatkan model obyek yang mewakili ke beberapa derajat hubungan entitas dalam gambar di atas.
</p>
<img src=<%~ ar_objects.png %> class="figure" />
@@ -534,7 +534,7 @@ CREATE TABLE bar
</div>
<h2 id="142012">Pemetaan Kunci Asing</h2>
-<p class="block-content">Hubungan entitas antara tabel <tt>Teams</tt> dan <tt>Players</tt> adalah apa yang dikenal sebagai hubungan 1-M. Yaitu, satu Tim dapat berisi 0 atau lebih Pemain. Dalam batasan hubungan obyek, kita katakan bahwa obyek <tt>TeamRecord</tt> <b>memiliki banyak</b> obyek <tt>PlayerRecord</tt>.
+<p class="block-content">Hubungan entitas antara tabel <tt>Teams</tt> dan <tt>Players</tt> adalah apa yang dikenal sebagai hubungan 1-M. Yaitu, satu Tim dapat berisi 0 atau lebih Pemain. Dalam batasan hubungan obyek, kita katakan bahwa obyek <tt>TeamRecord</tt> <b>memiliki banyak</b> obyek <tt>PlayerRecord</tt>.
(Perhatikan kebalikan dari arah hubungan antara tabel dan obyek.)
<p id="710019" class="block-content">
@@ -548,7 +548,7 @@ class TeamRecord extends TActiveRecord
const TABLE='Teams';
public $name;
public $location;
-
+
public $players=array(); // deklarasi ini tidak diperlukan lagi sejak v3.1.2
//mendefinisikan anggota $player yang memiliki hubungan banyak dengan PlayerRecord
@@ -616,7 +616,7 @@ Metode <tt>with_xxx()</tt> (di mana <tt>xxx</tt> adalah nama properti hubungan,
<div class="note"><b class="note">Catatan:</b>
Penting untuk dimengerti bahwa obyek terkait diambil menggunakan query tambahan. Query pertama mengambil obyek sumber, misalnya <tt>TeamRecord</tt> dalam contoh kode di atas.
-Query kedua dipakai untuk mengambil obyek <tt>PlayerRecord</tt> terkait.
+Query kedua dipakai untuk mengambil obyek <tt>PlayerRecord</tt> terkait.
Penggunaan dua query mirip dengan query tunggal menggunakan Left-Outer join dengan eksepsi bahwa hasil null pada tabel kanan tidak dikembalikan. Konsekuensi pemakaian dua tau lebih query adalah kondisi agregat dan join tidak layak menggunakan Rekaman Aktif. Untuk query di luar lingkup Rekaman Aktif, <a href="?page=Database.SqlMap">Pemeta Data SqlMap</a> diapat dupertimbangkan.
</div>
@@ -634,9 +634,9 @@ Kode berikut mendefinisikan kelas <tt>PlayerRecord</tt> lengkap dengan 3 hubunga
class PlayerRecord extends TActiveRecord
{
const TABLE='Players';
- public $player_id;
- public $age;
- public $team_name;
+ public $player_id;
+ public $age;
+ public $team_name;
public $team; // deklarasi ini tidak diperlukan lagi sejak v3.1.2
public $skills=array(); // deklarasi ini tidak diperlukan lagi sejak v3.1.2
@@ -656,9 +656,9 @@ class PlayerRecord extends TActiveRecord
}
</com:TTextHighlighter>
<p id="710026" class="block-content">
-Properti <tt>$RELATIONS</tt> dari <tt>PlayerRecord</tt> mendefinisikan properti <tt>$team</tt> <b>milik</b> <tt>TeamRecord</tt>.
-Array <tt>$RELATIONS</tt> juga mendefinisikan dua hubungan lainnya yang nanti akan kita uji dalam seksi di bawah ini.
-Dalam <tt>array(self::BELONGS_TO, 'TeamRecord')</tt>, elemen pertama mendefinisikan tipe hubungan, dalam hal ini <strong><tt>self::BELONGS_TO</tt></strong> dan
+Properti <tt>$RELATIONS</tt> dari <tt>PlayerRecord</tt> mendefinisikan properti <tt>$team</tt> <b>milik</b> <tt>TeamRecord</tt>.
+Array <tt>$RELATIONS</tt> juga mendefinisikan dua hubungan lainnya yang nanti akan kita uji dalam seksi di bawah ini.
+Dalam <tt>array(self::BELONGS_TO, 'TeamRecord')</tt>, elemen pertama mendefinisikan tipe hubungan, dalam hal ini <strong><tt>self::BELONGS_TO</tt></strong> dan
elemen kedua adalah string <tt>'TeamRecord'</tt> yang terkait ke nama kelas dari kelas <tt>TeamRecord</tt>.
Obyek pemain dengan obyek tim terkait dapat diambil serperti berikut.
</p>
@@ -703,7 +703,7 @@ class ProfileRecord extends TActiveRecord
<p id="710029" class="block-content">Intinya, ada hubungan "<b>belongs to</b>" untuk obyek yang mengaitkan entitas yang memmpunyai kolom yakni kunci asing. Dalam keadaan tertentu, kita melihat bahwa tabel <tt>Profiles</tt> mempunyai batasan kunci asing pada kolom <tt>player_id</tt> yang terkait ke tabel
<tt>Players</tt> kolom <tt>player_id</tt>. Selanjutnya, obyek <tt>ProfileRecord</tt>
memiliki properti (<tt>$player</tt>) yang adalah <b>milik</b> obyek <tt>PlayerRecord</tt>.
-Demikian juga, tabel <tt>Players</tt> mempunyai batasan kunci asing pada kolom <tt>team_name</tt> yang terkait ke tabel <tt>Teams</tt> kolom <tt>name</tt>.
+Demikian juga, tabel <tt>Players</tt> mempunyai batasan kunci asing pada kolom <tt>team_name</tt> yang terkait ke tabel <tt>Teams</tt> kolom <tt>name</tt>.
Kemudian, obyek <tt>PlayerRecord</tt> mempunyai properti (<tt>$team</tt>) yang adalah <b>milik</b> obyek <tt>TeamRecord</tt>.
</p>
@@ -756,13 +756,13 @@ dua elemen tambahan ini mirip seperti parameter yang dikirimkan ke metode <tt>fi
Obyek dapat dengan mudah menangani field multi nilai dengan menggunakan koleksi sebagai nilai field. Database relasional tidak memiliki fitur ini dan dibatasi hanya ke field nilai-tunggal. Ketika Anda memetakan asosiasi satu-ke-banyak, Anda bisa menangani ini menggunakan hubungan <b>has many</b>, intinya menggunakan kunci asing untuk nilai-tunggal akhir dari asosiasi. Tapi asosiasi banyak-ke-banyak tidak bisa melakukan ini karena tidak ada nilai-tunggal akhir ke kunci asing yang dipegangnya.
</p>
<p id="710033" class="block-content">
-Jawabannya adalah resolusi klasik yang telah dipakai oleh orang selama dekade ini yakni: buat tabel ekstra (tabel asosiasi) untuk merekam asosiasi.
+Jawabannya adalah resolusi klasik yang telah dipakai oleh orang selama dekade ini yakni: buat tabel ekstra (tabel asosiasi) untuk merekam asosiasi.
Ide dasarnya adalah menggunakan tabel asosiasi untuk menyimpan asosiasi. Tabel ini memiliki ID kunci asing untuk dua tabel yang dikaitkan bersama, masing-masing memiliki pasangan dari obyek yang diasosiasikan.
</p>
<p id="710034" class="block-content">
Tabel asosiasi tidak mempunyai kaitan obyek dalam-memori dan kunci primernya adalah gabungan dari dua kunci primer dari tabel yang diasosiasikan.
-Dalam batasan yang sederhana, tuntuk mengambil data dari tabel asosiasi, Anda melakukan dua query (secara umum, ini juga bisa dicapai menggunakan satu query yang terdiri dari join).
-Anggap pengambilan koleksi <tt>SkillRecord</tt> untuk daftar obyek <tt>PlayerRecord</tt>.
+Dalam batasan yang sederhana, tuntuk mengambil data dari tabel asosiasi, Anda melakukan dua query (secara umum, ini juga bisa dicapai menggunakan satu query yang terdiri dari join).
+Anggap pengambilan koleksi <tt>SkillRecord</tt> untuk daftar obyek <tt>PlayerRecord</tt>.
Dalam hal ini, Anda melakukan query dalam dua tahap. Tahap pertama meng-query tabel <tt>Players</tt> untuk mencari seluruh baris dari pemain yang Anda inginkan. Tahap kedua mencari obyek <tt>SkillRecord</tt> ID pemain terkait untuk setiap barisnya dalam tabel asosiasi <tt>Player_Skills</tt> menggunakan sebuah inner join.
</p>
@@ -794,7 +794,7 @@ class SkillRecord extends TActiveRecord
<p id="710036" class="block-content">
Properti statis <tt>$RELATIONS</tt> dari SkillRecord mendefinisikan bahwa properti <tt>$players</tt> memiliki banyak <tt>PlayerRecord</tt>s melalui tabel asosiasi '<tt>Player_Skills</tt>'.
Dalam <tt>array(self::MANY_TO_MANY, 'PlayerRecord', 'Player_Skills')</tt>, elemen pertama mendefinisikan tipe hubungan, dalam hal ini <strong><tt>self::HAS_MANY</tt></strong>,
-elemen kedua adalah string <tt>'PlayerRecord'</tt> yang terkait ke nama kelas dari kelas <tt>PlayerRecord</tt>, dan elemen ketiga adalah nama dari nama tabel asosiasi.
+elemen kedua adalah string <tt>'PlayerRecord'</tt> yang terkait ke nama kelas dari kelas <tt>PlayerRecord</tt>, dan elemen ketiga adalah nama dari nama tabel asosiasi.
</p>
<div class="note"><b class="note">Catatan:</b>
@@ -815,22 +815,22 @@ Metode <tt>with_xxx()</tt> (di mana <tt>xxx</tt> adalah nama properti hubungan,
<p id="710039" class="block-content">
Untuk tabel asosiasi yang mererefensi dirinya sendiri, yaitu titik asosiasi ke tabel yang sama. Sebagai contoh, anggap tabel <tt>items</tt> dengan item terkait M-N melalui tabel asosiasi <tt>related_items</tt>. Sintaks dalam contoh berikut adalah benar untuk database PostgreSQL. Untuk database lain, lihat dokumentasinya masing-masing untuk mendefinisikan batasan kunci asing.
<com:TTextHighlighter Language="sql" CssClass="source block-content">
-CREATE TABLE items
+CREATE TABLE items
(
- "item_id" SERIAL,
+ "item_id" SERIAL,
"name" VARCHAR(128) NOT NULL,
PRIMARY KEY("item_id")
);
-CREATE TABLE "related_items"
+CREATE TABLE "related_items"
(
- "item_id" INTEGER NOT NULL,
- "related_item_id" INTEGER NOT NULL,
- CONSTRAINT "related_items_pkey" PRIMARY KEY("item_id", "related_item_id"),
+ "item_id" INTEGER NOT NULL,
+ "related_item_id" INTEGER NOT NULL,
+ CONSTRAINT "related_items_pkey" PRIMARY KEY("item_id", "related_item_id"),
CONSTRAINT "related_items_item_id_fkey" FOREIGN KEY ("item_id")
REFERENCES "items"("item_id")
ON DELETE CASCADE
ON UPDATE NO ACTION
- NOT DEFERRABLE,
+ NOT DEFERRABLE,
CONSTRAINT "related_items_related_item_id_fkey" FOREIGN KEY ("related_item_id")
REFERENCES "items"("item_id")
ON DELETE CASCADE
@@ -839,7 +839,7 @@ CREATE TABLE "related_items"
);
</com:TTextHighlighter>
-<p id="710040" class="block-content">Nama tabel asosiasi dalam elemen ketiga dari array hubungan dapat berisi nama kolom tabel asing. Kolom yang didefinisikan dalam tabel asosiasi harus juga didefinisikan dalam kelas rekaman (contohnya properti <tt>$related_item_id</tt> terkait ke kolom <tt>related_item_id</tt> dalam tabel <tt>related_items</tt>).
+<p id="710040" class="block-content">Nama tabel asosiasi dalam elemen ketiga dari array hubungan dapat berisi nama kolom tabel asing. Kolom yang didefinisikan dalam tabel asosiasi harus juga didefinisikan dalam kelas rekaman (contohnya properti <tt>$related_item_id</tt> terkait ke kolom <tt>related_item_id</tt> dalam tabel <tt>related_items</tt>).
</p>
<com:TTextHighlighter Language="php" CssClass="source block-content">
class Item extends TActiveRecord
@@ -849,18 +849,18 @@ class Item extends TActiveRecord
public $details;
//id item asing tambahan didefinisikan dalam tabel asosiasi
- public $related_item_id;
+ public $related_item_id;
public $related_items=array(); // deklarasi ini tidak diperlukan lagi sejak v3.1.2
public static $RELATIONS=array
(
- 'related_items' => array(self::MANY_TO_MANY,
+ 'related_items' => array(self::MANY_TO_MANY,
'Item', 'related_items.related_item_id'),
);
}
</com:TTextHighlighter>
<div class="tip"><b class="note">Tip:</b>
-Kunci gabungan dalam tabel asing dapat ditetapkan sebagai nilai dipisahkan koma diantara kurung buka/tutup. Contohnya <tt>'related_items.(id1,id2)'</tt>.
+Kunci gabungan dalam tabel asing dapat ditetapkan sebagai nilai dipisahkan koma diantara kurung buka/tutup. Contohnya <tt>'related_items.(id1,id2)'</tt>.
</div>
<!---
@@ -882,7 +882,7 @@ Karena kelas <tt>TeamRecord</tt> berisi hubungan <b>has many</b> dengan <tt>Play
</p>
<p id="710043" class="block-content">Untuk menghapus obyek asing tertentu (atau setiap obyek Rekaman Aktif), cukup panggil metode obyek <tt>delete()</tt>. Anda dapat menyiapkan batas kunci asing tabel database seperti saat menghapus data tertentu dalam database ia akan menghapus data yang direferensi juga (ia juga dapat dicapai dengan menggunakan pemicu database). Contohnya seperti mempunyai batasan "<tt>ON DELETE CASCADE</tt>".
-Menghapus kunci obyek asing dengan menyetel nilai properti ke null atau menghapus obyek dari array <b>TIDAK</b> akan menghapus data terkait dalam database.
+Menghapus kunci obyek asing dengan menyetel nilai properti ke null atau menghapus obyek dari array <b>TIDAK</b> akan menghapus data terkait dalam database.
</p>
<p id="710044" class="block-content">Untuk menghapus asosiasi hubungan banyak-ke-banyak melalui tabel asosiasi, Rekaman Aktif yang terkait tabel asosiasi yang bisas dipakai. Kemudian asosiasi dapat dihapus dengan memanggil metode <tt>deleteByPk()</tt>, sebagai contoh:
@@ -908,7 +908,7 @@ class PlayerRecord extends BaseFkRecord
//... properti dan metode lainnya seperti sebelumnya
private $_skills; //ubah ke private dan standar sebagai null
-
+
public function getSkills()
{
if($this->_skills===null && $this->player_id !==null)
@@ -932,7 +932,7 @@ class PlayerRecord extends BaseFkRecord
}
</com:TTextHighlighter>
<p id="710046" class="block-content">Pertama kita perlu mengubah deklarasi <tt>$skills=array()</tt> ke properti private <tt>$_skills</tt> (perhatikan garis bawah) dan sebaliknya setel ke null. Ini membolehkan kita untuk mendefinisikan properti <tt>skills</tt> menggunakan metode pengambil/penyetel
-(lihat <a href="?page=Fundamentals.Components">Komponen</a> untuk lebih jelasnya). Metode pengambil <tt>getSkills()</tt> untuk properti <tt>skills</tt> akan mengambil malas rekaman skill terkait saat ia dipakai sebagai berikut. Catatan bahwa kita hanya melakukan pengambilan malas ketika <tt>$player_id</tt> tidak null (yakni, ketika rekaman sudah diambil dari database ataau id player sudah disetel).
+(lihat <a href="?page=Fundamentals.Components1">Komponen</a> untuk lebih jelasnya). Metode pengambil <tt>getSkills()</tt> untuk properti <tt>skills</tt> akan mengambil malas rekaman skill terkait saat ia dipakai sebagai berikut. Catatan bahwa kita hanya melakukan pengambilan malas ketika <tt>$player_id</tt> tidak null (yakni, ketika rekaman sudah diambil dari database ataau id player sudah disetel).
</p>
<com:TTextHighlighter Language="php" CssClass="source block-content">
$player = PlayerRecord::finder()->findByPk(1);
@@ -943,13 +943,13 @@ $player->skills[] = new SkillRecord(); //menambah skill
<p id="710047" class="block-content">The <tt>setSkills()</tt> memastikan bahwa properti <tt>skills</tt> akan selalu berupa TList.
Menggunakan TList yang membolehkan kita untuk menyetel elemen properti <tt>skills</tt> seolah-olah mereka
-sebuah array. Contohnya <tt>$player->skills[] = new SkillRecord()</tt>. Jika <tt>array</tt> dipakai, kesalahan PHP
-akan dikeluarkan.
+sebuah array. Contohnya <tt>$player->skills[] = new SkillRecord()</tt>. Jika <tt>array</tt> dipakai, kesalahan PHP
+akan dikeluarkan.
</p>
<h2>Pemetaan Kolom</h2>
<p>
-Sejak v3.1.1, Rekaman Aktif mulai mendukung pemetaan kolom. Pemetaan kolom membolehkan para
+Sejak v3.1.1, Rekaman Aktif mulai mendukung pemetaan kolom. Pemetaan kolom membolehkan para
pengembang untuk mengalamatkan kolom dalam Rekaman Aktif menggunakan konvensi penamaan lebih
konsisten. Dalam keadaan tertentu, menggunakan pemetaan kolom, seseorang dapat mengakses kolom
menggunakan apapun namanya yang disukainya, daripada nama terbatas yang didefinisikan dalam
diff --git a/demos/quickstart/protected/pages/Database/pl/ActiveRecord.page b/demos/quickstart/protected/pages/Database/pl/ActiveRecord.page
index 97a054fe..3a073e57 100755
--- a/demos/quickstart/protected/pages/Database/pl/ActiveRecord.page
+++ b/demos/quickstart/protected/pages/Database/pl/ActiveRecord.page
@@ -2,7 +2,7 @@
<h1 id="138046">Rekord Aktywny (ang. Active Record)</h1>
<com:SinceVersion Version="3.1a" />
<p id="690478" class="block-content">Rekordy Aktywne są obiektami, które opakowują wiersz w bazie danych lub widoku,
- obudowują (ang. encapsulate) dostęp do bazy danych oraz dziedziny logiki dla tych danych.
+ obudowują (ang. encapsulate) dostęp do bazy danych oraz dziedziny logiki dla tych danych.
Podstawą Rekordu Aktywnego są klasy biznesowe np. klasa
<tt>Produkty</tt>, które są bardzo podobne do struktury rekordu należącego do bazy danych. Każdy Rekord Aktywny jest odpowiedzialny
za zapisywanie i łądowanie danych do i z bazy danych.</p>
@@ -13,18 +13,18 @@
<h2 id="138047">Kiedy używać?</h2>
<p id="690479" class="block-content">Rekord Aktywne jest dobrym wyborem dla dziedziny logiki, która nie jest zbyt złożona, tak jak tworzenie, odczyty, aktualizacje oraz usuwanie.
- Pochocne (ang. derivations) oraz sprawdzenia bazujące na pojedyńczym rekordzie sprawdzają się dobrze w tej konstrukcji.
+ Pochocne (ang. derivations) oraz sprawdzenia bazujące na pojedyńczym rekordzie sprawdzają się dobrze w tej konstrukcji.
Rekord Aktywne ma podstawową zaletę, którą jest prostota. Łatwo jest stworzyć Rekord Aktywny, łatwo go również zrozuieć.
</p>
- <p id="690480" class="block-content">Jednakże, jeśli twoja logika biznesowa staje się coraz bardziej złożona, wkrótce będziesz chciał
+ <p id="690480" class="block-content">Jednakże, jeśli twoja logika biznesowa staje się coraz bardziej złożona, wkrótce będziesz chciał
używać bezpośrednich relacji, zbiorów, dziedziczenia twojego obiektu i tak dalej. Nie da się tego łatwo odwzorować za pomocą Rekordu Aktywnego,
a dodawanie ich po kawałku staje się bardzo kłopotliwe. Innym argumentem przeciw Rekordowi Aktywnemu jest fakt, że łączy model obiektowy z modelem baz danych.
To czyni trudniejszym refaktoring, gdy projekt idzie naprzód.
</p>
<p id="690481" class="block-content">Alternatywą jest używanie wzorca Data Mapper (mapa danych), który odseparowuje role obiektu biznesowego od tego jak te obiekty są przechowywane.
- Prado dostarcza
+ Prado dostarcza
Prado provides a darmowy wybór pomiędzy rekordem aktywnym a <a href="?page=Database.SqlMap">SqlMap Data Mapper</a>.
SqlMap Data Mapper może być uzywany do wczytania obiektów Rekordu Aktywnego, i na odwrót, te Rekordy Aktywne mogą zostać użyte do aktualizacji bazy danych.
Związek pomiędzy Rekordem Aktywnym a <a href="?page=Database.SqlMap">SqlMap</a> przedstawiony jest na kolejnym diagramie. Więcej informacji związanych z SqlMap Data Mapper można znaleźć w
@@ -33,7 +33,7 @@
</p>
<p id="690482" class="block-content">
- Klasa Rekordu aktywnego posiada funkcjonalność do przeprowadzenia następujących zadań:
+ Klasa Rekordu aktywnego posiada funkcjonalność do przeprowadzenia następujących zadań:
</p>
<ul id="u1" class="block-content">
<li>Tworzenie, zwracanie, aktualizowani i usuwanie recordów (CRUD)</li>
@@ -51,16 +51,16 @@ zwróci fałsz, natomiast luźne porównianie (np. używając <tt>==</tt>) zwró
<p>
Jest to implikacja modelu wynikająca z następującego pytania:
<i>"Czy myślisz o kliencie jako o obiekcie, którego któy jest tylko jeden, czy też myślisz o obiekcie na którym działasz jako o <b>kopii</b> bazy danych.</i>
-Inne mapowania O/R implikują, że istnieje tylko jeden obiekt Klienta z KlientID 100
+Inne mapowania O/R implikują, że istnieje tylko jeden obiekt Klienta z KlientID 100
Other O/R mappings will imply that there is only one Customer object with custID 100 i to dosłownie jest ten klient.
-Jeśli pobierzesz klienta i zmienisz pole w nim, wtedy masz zmienionego tego klienta.
+Jeśli pobierzesz klienta i zmienisz pole w nim, wtedy masz zmienionego tego klienta.
<i>"To kontroastuje z: zmieniłeś tą kopię klienta ale nie tamtą kopię.
Jeśli dwóch ludzi zaktualizuje kleinta z dwóch kopii obiektu, kto zaktualizuje pierwszy lub być może ostanie wygrywa."</i> [A. Hejlsberg 2003]
</p>
<h2 id="142010">Wspierane bazy danych</h2>
<p id="p1" class="block-content">
-Implementacja Aktywnego Rekordu wykorzystuje kalsy <a href="?page=Database.DAO">Prado DAO</a> by uzyskać dostęp do danych. Aktualna implementacja Aktywnego Rekordu wspiera następujace bazy danych
+Implementacja Aktywnego Rekordu wykorzystuje kalsy <a href="?page=Database.DAO">Prado DAO</a> by uzyskać dostęp do danych. Aktualna implementacja Aktywnego Rekordu wspiera następujace bazy danych
</p>
<ul>
<li><a href="http://www.mysql.com">MySQL 4.1 i wyższe</a></li>
@@ -104,7 +104,7 @@ class UserRecord extends TActiveRecord
</p>
<p id="690485" class="block-content">Każda kolumna tablicy "<tt>users</tt>" musi posiadać odpowiadającą jej właściwość o tej samej nazwie co kolumna w tablicy w klasie <tt>UserRecord</tt>.
Oczywiście, możesz zdefiniować dodatkowe zmienne lub właściwości, które nie istnieją w strukturze tablicy.
- Stała <tt>TABLE</tt> jest opcjonalna w klasie , kiedy nazwa klasy jest taka sama jak nazwa tablicy w bazie danych, w przeciwnym przypadku <tt>TABLE</tt>
+ Stała <tt>TABLE</tt> jest opcjonalna w klasie , kiedy nazwa klasy jest taka sama jak nazwa tablicy w bazie danych, w przeciwnym przypadku <tt>TABLE</tt>
musi określać nazwę tablicy, która odpowiada klasie Rekordu Aktywnego.
</p>
@@ -114,7 +114,7 @@ Możesz określić kwalifikowane (ang. qualified) nazwy tablic np dla MySQL, <tt
<p class="block-content" id="ar_as_component">
Odkąd <tt>TActiveRecord</tt> rozszerza <tt>TComponent</tt>, metody setter i getter mogą zostać zdefiniowane
- by umożliwić kontrolę nad tym jak zmienne są ustawiane i zwracane. Na przykłąd dodanie właściwości <tt>$level</tt>
+ by umożliwić kontrolę nad tym jak zmienne są ustawiane i zwracane. Na przykłąd dodanie właściwości <tt>$level</tt>
do klasy UserRecord:
</p>
<com:TTextHighlighter Language="php" CssClass="source block-content" id="code_690149">
@@ -130,13 +130,13 @@ class UserRecord extends TActiveRecord {
}
}
</com:TTextHighlighter>
-<p id="710010" class="block-content">Więcej szczegółów dotyczących TComponent można znaleźć <a href="?page=Fundamentals.Components">dokumentacji komponentów</a>.
+<p id="710010" class="block-content">Więcej szczegółów dotyczących TComponent można znaleźć <a href="?page=Fundamentals.Components1">dokumentacji komponentów</a>.
Później użyjemy metod getter/setters by umożliwić opóźnione ładowanie (ang. lazy loading) obiektów relacji.
</p>
<div class="info"><b class="note">Info:</b>
<tt>TActiveRecord</tt> może również działać z widokami poprzez przypisanie do stałej <tt>TABLE</tt>
- odpowiedniej nazwy widoku. Jednakże obiektu zwracane przez widoki są tylko do odczytu, wywołanie metod <tt>save()</tt> lub <tt>delete()</tt>
+ odpowiedniej nazwy widoku. Jednakże obiektu zwracane przez widoki są tylko do odczytu, wywołanie metod <tt>save()</tt> lub <tt>delete()</tt>
spowoduje wywołanie wyjątku.
</div>
@@ -149,7 +149,7 @@ spowoduje wywołanie wyjątku.
<h2 id="138049">Ustanawianie połączenia z bazą danych</h2>
<p id="690487" class="block-content">
Domyślne połączenie z bazą dla Rekordu Aktywnego może zostać ustawione następujaco.
- Zobacz <a href="?page=Database.DAO">Ustanawianie połączenia z bazą</a>
+ Zobacz <a href="?page=Database.DAO">Ustanawianie połączenia z bazą</a>
by uzyskać ogólnie dalsze szczegóły odnośnie tworzenia połączenia z bazą danych.
</p>
<com:TTextHighlighter Language="php" CssClass="source block-content" id="code_690150">
@@ -160,7 +160,7 @@ TActiveRecordManager::getInstance()->setDbConnection($conn);
</com:TTextHighlighter>
<p id="710011" class="block-content">Alternatywnie, możesz stworzyć klasę bazową i nadpisać metodę <tt>getDbConnection()</tt>
-do zwracania połączenia z bazą. To jest prosty spodób, by umożliwić wielkokrotne połączenia do wielu baz danych.
+do zwracania połączenia z bazą. To jest prosty spodób, by umożliwić wielkokrotne połączenia do wielu baz danych.
Następujący kod demonstruje definiowanie połączenia z bazą danych w klasie bazowej (nie ma potrzeby by ustawiać połączenie DB gdziekolwiek indziej).
</p>
<com:TTextHighlighter Language="php" CssClass="source block-content">
@@ -203,7 +203,7 @@ class MyDb2Record extends TActiveRecord
</com:TTextHighlighter>
<div class="tip"><b class="note">Wskazówka:</b>
Atrybut <tt>EnableCache</tt> gdy ustawiony na "true" będzie keszował metadane tablicy, to oznacza, że nazwy kolumn, indeksy i ograniczenia (ang. constraints)
- są zapisywane w keszu i używane ponownie. Musisz wyczyścić lub wyłączyć kesz jeśli chcesz zobaczyć wprowadzone zmiany do definicji twoich tablic.
+ są zapisywane w keszu i używane ponownie. Musisz wyczyścić lub wyłączyć kesz jeśli chcesz zobaczyć wprowadzone zmiany do definicji twoich tablic.
<a href="?page=Advanced.Performance#6402">Moduł keszowania</a> musi być również zdefiniowany dla keszu by zadziałał.
</div>
</p>
@@ -229,14 +229,14 @@ class MyDb2Record extends TActiveRecord
<h2 id="138050">Ładowanie danych z tablicy</h2>
<p id="690490" class="block-content">
- Klasa <tt>TActiveRecord</tt> dostarcza wielu wygodnych metod do wyszukiwania rekordów z bazy danych.
+ Klasa <tt>TActiveRecord</tt> dostarcza wielu wygodnych metod do wyszukiwania rekordów z bazy danych.
Najprostszym jest znajdowanie jednego rekordu poprzez dopasowanie klucza głównego lub klucza złożonego (ang. composite key)
(klucz główny skłądający się z wielu kolumn).
Zobacz <com:DocLink ClassPath="System.Data.ActiveRecord.TActiveRecord" /> by dowiedzieć się więcej.
</p>
<div class="info"><b class="note">Info:</b>
-Wszystkie metody wyszukujące, które mogą zwrócić tylko 1 rekord zwrócą <tt>null</tt> jeśli nie znajdą pasujących danych.
+Wszystkie metody wyszukujące, które mogą zwrócić tylko 1 rekord zwrócą <tt>null</tt> jeśli nie znajdą pasujących danych.
Wszystkie metody wyszukujące, które zwracają tablicę rekordów zwrócą pustą tablicęm jeśli nie znajdą pasujących danych.
</div>
@@ -352,8 +352,8 @@ Możesz również użyć połączenia <tt>AND</tt> oraz <tt>OR</tt> jako warunek
</div>
<h3 id="138060"><tt>findBySql()</tt> oraz <tt>findAllBySql()</tt></h3>
-<p id="690497" class="block-content">Znajdują rekordy używając pełnego zapytania SQL z tym, że <tt>findBySql()</tt>
-zwraca Rekord Aktywny a <tt>findAllBySql()</tt>zwraca tablicę obiektów rekordów.
+<p id="690497" class="block-content">Znajdują rekordy używając pełnego zapytania SQL z tym, że <tt>findBySql()</tt>
+zwraca Rekord Aktywny a <tt>findAllBySql()</tt>zwraca tablicę obiektów rekordów.
Dla każdej zwróconej kolumny, odpowiadająca klasa Rekordu Aktywnego musi posiadać zdefiniowaną zmienną lub właściwość odpowiadającą nazwie kolumny.
<com:TTextHighlighter Language="php" CssClass="source block-content">
class UserRecord2 extends UserRecord
@@ -382,7 +382,7 @@ $user2 = new UserRecord($data); //stwórz przekazując istniejące dane
$user2->save(); //wstaw nowy rekord
</com:TTextHighlighter>
<div class="tip"><b class="note">Wskazówka:</b>
-Obiekty są aktualizowe automatycznie o wartość klucza głównego dla tych tablic, które zawierają definicję
+Obiekty są aktualizowe automatycznie o wartość klucza głównego dla tych tablic, które zawierają definicję
określającą automatyczne tworzenie klucza głównego dla nowo tworzonych rekordów (przyp. tłum. autoincrement).
Na przykład jeśli wstawiasz nowy rekord do tablicy MySQL która posiada kolumnę zdefiniowaną jako to obiekt Rekordu Aktywnego
zostanie zaktualizowant o nową zwiększoną wartość.</div>
@@ -403,10 +403,10 @@ Obiekt Rekordu Aktywnego posiada prosty cykl życia zilustrowany następujący d
<img src=<%~ object_states.png %> alt="Active Records Life Cycle" id="fig:cycle.png" class="figure"/>
<p id="690501" class="block-content">
Widzimy, że nowe obiekty Rekordu Aktywnego są tworzone zarówno przez jedną z metod <tt>find*()</tt>
-lub poprzez stworzenie nowej instancji poprzez użycie polecenia PHP <tt>new</tt>. Obiekty stworzone przez metodę <tt>find*()</tt>
+lub poprzez stworzenie nowej instancji poprzez użycie polecenia PHP <tt>new</tt>. Obiekty stworzone przez metodę <tt>find*()</tt>
zaczynają ze stanem <tt>czysty (ang. clean)</tt>. Nowa instancja TActiveRecord stworzona inaczej niż za pomocą metod <tt>find*()</tt> zaczyna ze stanem <tt>nowy (ang. new)</tt>.
-Kiedykolwiek wywołasz metodę <tt>save()</tt> na obiekcie TActiveRecord, obiekt przyjmuje stan <tt>czysty</tt>.
-Obiekty będące <tt>czystymi</tt> stają się <tt>brudne (ang. dirty)</tt> kiedy jeden lub więcej ze stwoich wewnętrznych stanów ulegnie zmianie.
+Kiedykolwiek wywołasz metodę <tt>save()</tt> na obiekcie TActiveRecord, obiekt przyjmuje stan <tt>czysty</tt>.
+Obiekty będące <tt>czystymi</tt> stają się <tt>brudne (ang. dirty)</tt> kiedy jeden lub więcej ze stwoich wewnętrznych stanów ulegnie zmianie.
Wywoałanie metody <tt>delete()</tt> obiektu kończy cykl życia, żadne inne akcje nie mogą być wywołane na obiekcie.
</p>
@@ -451,7 +451,7 @@ $finder->deleteBy_Username_And_Password($name,$pass);
</com:TTextHighlighter>
<h2 id="138053">Tranzakcje</h2>
-<p id="690504" class="block-content">Wszystkie obiekkty Rekordu Aktywnego zawierają właściwość <tt>DbConnection</tt>,
+<p id="690504" class="block-content">Wszystkie obiekkty Rekordu Aktywnego zawierają właściwość <tt>DbConnection</tt>,
która może być używana by uzyskać obiekt tranzakcyjny.
<com:TTextHighlighter Language="php" CssClass="source block-content" id="code_690165">
$finder = UserRecord::finder();
@@ -486,8 +486,8 @@ Zdarzenie <tt>OnExecuteCommand</tt> jest wywoływane kiedy polecenie jest wykona
</p>
<h3 id="142016">Przykład z logowaniem</h3>
-<p id="710016" class="block-content">Używając <tt>OnExecuteCommand</tt> możemy przypiąć uchwyt zdarzenia by logować całe
-zapytanie SQL wwywoływane dla danej instancji lub klasy TActiveRecord. Na przykład definiujemy klasę bazową i nadpisujemy
+<p id="710016" class="block-content">Używając <tt>OnExecuteCommand</tt> możemy przypiąć uchwyt zdarzenia by logować całe
+zapytanie SQL wwywoływane dla danej instancji lub klasy TActiveRecord. Na przykład definiujemy klasę bazową i nadpisujemy
metodę <tt>getDbConnection()</tt> lub konstruktor.
</p>
@@ -537,12 +537,12 @@ W następnych sekcjach będziemy rozważać nastepujące relacje pomiędzy tabel
<img src=<%~ ar_objects.png %> class="figure" />
<p class="block-content">
-Istnieje rozbieżność pomiędzy relacjami w obiektach i relacjami w tablicach.
+Istnieje rozbieżność pomiędzy relacjami w obiektach i relacjami w tablicach.
Po pierwsze jest różnica w reprezentacji. Obiekty trzymają powiązanie poprzez przechowywanie referencji,
które są trzymane poprzez zarządzające pamięcią środowiko uruchomieniowe. Bazy relacyjne trzymają powiązanie poprzez utworzenie klucza do innej tablicy.
- Po drugie, obiekty mogą łatwo uzywać kolekcji by trzymać wielokrotnie referencje z jednego pola,
-to handle multiple references from a single field, gdyż normalizacja zmusza wszystkie powiązania relacji encji by były pojedyńczymi wartościami.
-To prowadzi do odwrócenia struktury danych pomiędzy obiektami i tablicami.
+ Po drugie, obiekty mogą łatwo uzywać kolekcji by trzymać wielokrotnie referencje z jednego pola,
+to handle multiple references from a single field, gdyż normalizacja zmusza wszystkie powiązania relacji encji by były pojedyńczymi wartościami.
+To prowadzi do odwrócenia struktury danych pomiędzy obiektami i tablicami.
Podejście zastosowane w modelu Rekordu Aktywnego Prado uzywa ograniczeń kluczów obcych tablicy do wyprowadzenia relacji obiektów.
To implikuje fakt wspierania ograniczeń kluczów obcych dla bazy danych.
</p>
@@ -564,8 +564,8 @@ CREATE TABLE bar
</com:TTextHighlighter>
</div>
-<h2 id="142012">Mapowanie kluczów obcych</h2>
-<p class="block-content">Relacja pól pomiędzy tablicami <tt>Teams</tt> and <tt>Players</tt> jest znana jako relacja jeden-do-wielu (ang. 1-M). Oznacza to, że jeden Team moze zawierać zero lub więcej Players. Z punktu widzenia relacji obiektów
+<h2 id="142012">Mapowanie kluczów obcych</h2>
+<p class="block-content">Relacja pól pomiędzy tablicami <tt>Teams</tt> and <tt>Players</tt> jest znana jako relacja jeden-do-wielu (ang. 1-M). Oznacza to, że jeden Team moze zawierać zero lub więcej Players. Z punktu widzenia relacji obiektów
powiemy, że obiekt <tt>TeamRecord</tt> <b>posiada wiele</b> (ang. has many) obiektów <tt>PlayerRecord</tt>.
(Zauważ odwrócenie kierunku relacji pomiędzy tablicami a obiektami)
</p>
@@ -1074,7 +1074,7 @@ class PlayerRecord extends BaseFkRecord
<p id="710046" class="block-content">We first need to change the <tt>$skills=array()</tt> declaration to a private property
<tt>$_skills</tt> (notice the underscore) and set it to null instead. This allows us
to define the <tt>skills</tt> property using getter/setter methods
-(see <a href="?page=Fundamentals.Components">Components</a> for details). The <tt>getSkills()</tt>
+(see <a href="?page=Fundamentals.Components1">Components</a> for details). The <tt>getSkills()</tt>
getter method for the <tt>skills</tt> property will lazy load the corresponding skills foreign record
when it is used as follows. Notice that we only do a lazy load when its <tt>$player_id</tt> is
not null (that is, when the record is already fetched from the database or player id was already set).
diff --git a/demos/quickstart/protected/pages/Fundamentals/Applications.page b/demos/quickstart/protected/pages/Fundamentals/Applications.page
index 8e0b9e9a..71901170 100755
--- a/demos/quickstart/protected/pages/Fundamentals/Applications.page
+++ b/demos/quickstart/protected/pages/Fundamentals/Applications.page
@@ -7,7 +7,11 @@ An application is an instance of <tt>TApplication</tt> or its derived class. It
<p id="160158" class="block-content">
Applications are configured via <a href="?page=Configurations.AppConfig">application configurations</a>. They are usually created in entry scripts like the following,
<com:TTextHighlighter CssClass="source block-content" id="code_160071">
+// load the prado entry script
require_once('/path/to/prado.php');
+// or, if using composer:
+require_once('vendor/autoload.php');
+
$application = new TApplication;
$application->run();
</com:TTextHighlighter>
diff --git a/demos/quickstart/protected/pages/Fundamentals/Architecture.page b/demos/quickstart/protected/pages/Fundamentals/Architecture.page
index 10f16c3f..c6bee7de 100755
--- a/demos/quickstart/protected/pages/Fundamentals/Architecture.page
+++ b/demos/quickstart/protected/pages/Fundamentals/Architecture.page
@@ -2,12 +2,31 @@
<h1 id="601">Architecture</h1>
<p id="100111" class="block-content">
-PRADO is primarily a presentational framework, although it is not limited to be so. The framework focuses on making Web programming, which deals most of the time with user interactions, to be component-based and event-driven so that developers can be more productive. The following class tree depicts some of the major classes provided by PRADO,
+PRADO is primarily a presentational framework, although it is not limited to be so. The framework focuses on making Web programming, which deals most of the time with user interactions, to be component-based and event-driven so that developers can be more productive. The following class tree depicts some of the major classes provided by PRADO:
</p>
<img src="<%~classtree.gif%>" />
<p id="100112" class="block-content">
-When a PRADO application is processing a page request, its static object diagram can be shown as follows,
+When a PRADO application is processing a page request, its static object diagram can be shown as follows:
</p>
<img src="<%~objectdiagram.gif%>" />
-</com:TContent>
+
+<p class="block-content">
+Once the main <tt>Application</tt> object gets created, it load the <a href="?page=Configurations.AppConfig">application configuration</a>.
+The minimal configuration defines a set of basic <a href="?page=Fundamentals.Modules">modules</a> to parse the <tt>Request</tt>, create a proper <tt>Response</tt>, mantain the user <tt>Session</tt>, handle any <tt>Error</tt> and publish the needed <tt>Assets</tt> (images, css, javascript, etc). These helpers module will be available from anywhere inside the application code.
+<br/>
+Additionally, any 3rd-party or <tt>custom module</tt> can be loaded, and external <tt>Parameters</tt> can be loaded from external configurations.
+</p>
+
+<p class="block-content">
+Once the basic infrastructure has been set up, the <tt>Request</tt> module parses the request trying to identify the requested route. Different routes can be handled by different services, but the default route for http requests is the <tt>Page Service</tt>.
+<br/>
+The <a href="?page=Configurations.AppConfig">Page Service</a>'s role is to instanciate the requested <tt>Page</tt>, run it, apply any defined <tt>Theme</tt> and grab the result in order to build the <tt>Response</tt>.
+</p>
+
+<p class="block-content">
+A <a href="?page=Fundamentals.Pages">Page</a> can be a simple script (.php), a <tt>Template</tt> (.page), or both. PRADO uses a very powerful <a href="?page=Configurations.Templates1">template engine</a> where <tt>Controls</tt> can be instanciated directly.
+<br/>
+A <a href="?page=Fundamentals.Controls">Control</a> is an self-contained widget that fullfills a specific task; they can be a simple script (.php), a <tt>Template</tt> (.page), or both.
+</p>
+</com:TContent> \ No newline at end of file
diff --git a/demos/quickstart/protected/pages/Fundamentals/Components.page b/demos/quickstart/protected/pages/Fundamentals/Components.page
deleted file mode 100755
index 11235b56..00000000
--- a/demos/quickstart/protected/pages/Fundamentals/Components.page
+++ /dev/null
@@ -1,360 +0,0 @@
-<com:TContent ID="body" >
-<h1 id="701">Components</h1>
-<p id="110113" class="block-content">
-A component is an instance of <tt>TComponent</tt> or its child class. The base class <tt>TComponent</tt> implements the mechanism of component properties and events.
-</p>
-
-<h2 id="702">Component Properties</h2>
-<p id="110114" class="block-content">
-A component property can be viewed as a public variable describing a specific aspect of the component, such as the background color, the font size, etc. A property is defined by the existence of a getter and/or a setter method in the component class. For example, in <tt>TControl</tt>, we define its <tt>ID</tt> property using the following getter and setter methods,
-<com:TTextHighlighter CssClass="source block-content" id="code_110056">
-class TControl extends TComponent {
- public function getID() {
- ...
- }
- public function setID($value) {
- ...
- }
-}
-</com:TTextHighlighter>
-</p>
-<p id="110115" class="block-content">
-To get or set the <tt>ID</tt> property, do as follows, just like working with a variable,
-<com:TTextHighlighter CssClass="source block-content" id="code_110057">
-$id = $component->ID;
-$component->ID = $id;
-</com:TTextHighlighter>
-This is equivalent to the following,
-<com:TTextHighlighter CssClass="source block-content" id="code_110058">
-$id = $component->getID();
-$component->setID( $id );
-</com:TTextHighlighter>
-</p>
-<p id="110116" class="block-content">
-A property is read-only if it has a getter method but no setter method. Since PHP method names are case-insensitive, property names are also case-insensitive. A component class inherits all its ancestor classes' properties.
-</p>
-
-<h3 id="706">Subproperties</h3>
-<p id="110117" class="block-content">
-A subproperty is a property of some object-typed property. For example, <tt>TWebControl</tt> has a <tt>Font</tt> property which is of <tt>TFont</tt> type. Then the <tt>Name</tt> property of <tt>Font</tt> is referred to as a subproperty (with respect to <tt>TWebControl</tt>).
-</p>
-<p id="110118" class="block-content">
-To get or set the <tt>Name</tt> subproperty, use the following method,
-<com:TTextHighlighter CssClass="source block-content" id="code_110059">
-$name = $component-&gt;getSubProperty('Font.Name');
-$component->setSubProperty('Font.Name', $name);
-</com:TTextHighlighter>
-This is equivalent to the following,
-<com:TTextHighlighter CssClass="source block-content" id="code_110060">
-$name = $component->getFont()->getName();
-$component-&gt;getFont()-&gt;setName( $name );
-</com:TTextHighlighter>
-</p>
-
-<h3 id="26001">Js-friendly properties</h3>
-<p class="block-content">
-A JavaScript-friendly property is a property that can accept both simple strings and raw javascript.
-Prado automatically encodes all properties sent clientside inside javascript blocks to avoid security problems (like injections or cross site scripting).
-If a property is known to always contain only safe javascript code and its value needs to bypass this encoding, that property can be defined in a special way that will make Prado mark its value as "safe".
-Js-friendly properties are identified by their name starting with 'js' (case insensitive):
-<com:TTextHighlighter CssClass="source block-content">
-// getter, defines a readable property 'Text'
-function getJsText() { … }
-// setter, defines a writable property 'Text', with $value being the value to be set to the property
-function setJsText(TJavaScriptLiteral $value) { … }
-</com:TTextHighlighter>
-Js-friendly properties can be accessed using both their Js-less name and their Js-enabled name:
-<com:TTextHighlighter CssClass="source block-content">
-// set some simple text as property value
-$component-&gt;Text = 'text';
-// set some javascript code as property value
-$component-&gt;JsText = 'raw javascript';
-</com:TTextHighlighter>
-In the first case, the property value will automatically gets encoded when sent clientside inside a javascript block.
-In the second case, the property will be 'marked' as being a safe javascript statement and will not be encoded when rendered inside a javascript block.
-This special handling makes use of the <tt>TJavaScriptLiteral</tt> class.
-</p>
-
-
-<h2 id="703">Component Events</h2>
-<p id="110119" class="block-content">
-Component events are special properties that take method names as their values. Attaching (setting) a method to an event will hook up the method to the places at which the event is raised. Therefore, the behavior of a component can be modified in a way that may not be foreseen during the development of the component.
-</p>
-<p id="110120" class="block-content">
-A component event is defined by the existence of a method whose name starts with the word <tt>on</tt>. The event name is the method name and is thus case-insensitve. For example, in <tt>TButton</tt>, we have
-<com:TTextHighlighter CssClass="source block-content" id="code_110061">
-class TButton extends TWebControl {
- public function onClick( $param ) {
- ...
- }
-}
-</com:TTextHighlighter>
-This defines an event named <tt>OnClick</tt>, and a handler can be attached to the event using one of the following ways,
-<com:TTextHighlighter CssClass="source block-content" id="code_110062">
-$button->OnClick = $callback;
-$button->OnClick->add( $callback );
-$button->OnClick[] = $callback;
-$button->attachEventHandler( 'OnClick' , $callback );
-</com:TTextHighlighter>
-</p>
- The variable <tt>$callback</tt> contains the definition of the event handler that can be either a string referring to a global function name, or an array whose first element refers to an object and second element a method name/path that is reachable by the object, e.g.
- </p>
-<ul>
-<li>'buttonClicked' : buttonClicked($sender,$param);</li>
-<li>array($object,'buttonClicked') : $object->buttonClicked($sender,$param);</li>
-<li>array($object,'MainContent.SubmitButton.buttonClicked') : $object->MainContent->SubmitButton->buttonClicked($sender,$param);</li>
-</ul>
-<com:SinceVersion Version="3.2.3" />
-<h2 id="26001">Global events</h2>
-<p id="130001" class="block-content">
-With the addition of behaviors, a more expansive event model is needed. There
-are two new event types (global and dynamic events) as well as a more comprehensive
-behavior model that includes class wide behaviors.
-</p>
-<p id="130002" class="block-content">
-A global event is defined by all events whose name starts with 'fx'.
-The event name is potentially a method name and is thus case-insensitive. All 'fx' events
-are valid as the whole 'fx' event/method space is global in nature. Any object may patch into
-any global event by defining that event as a method. Global events have priorities
-just like 'on' events; so as to be able to order the event execution. Due to the
-nature of all events which start with 'fx' being valid, in effect, every object
-has every 'fx' global event. It is simply an issue of tapping into the desired
-global event.
-</p>
-<p id="130003" class="block-content">
-A global event that starts with 'fx' can be called even if the object does not
-implement the method of the global event. A call to a non-existing 'fx' method
-will, at minimal, function and return null. If a method argument list has a first
-parameter, it will be returned instead of null. This allows filtering and chaining.
-'fx' methods do not automatically install and uninstall. To install and uninstall an
-object's global event listeners, call the object's <tt>listen</tt> and
-<tt>unlisten</tt> methods, respectively. An object may auto-install its global event
-during <tt>__construct</tt> by overriding <tt>getAutoGlobalListen</tt> and returning true.
-</p>
-<p id="130004" class="block-content">
-As of PHP version 5.3, nulled objects without code references will still continue to persist
-in the global event queue because <tt>__destruct</tt> is not automatically called. In the common
-__destruct method, if an object is listening to global events, then <tt>unlisten</tt> is called.
-<tt>unlisten</tt> is required to be manually called before an object is
-left without references if it is currently listening to any global events. This includes
-class wide behaviors.
-</p>
-<p id="130005" class="block-content">
-An object that contains a method that starts with 'fx' will have those functions
-automatically receive those events of the same name after <tt>listen</tt> is called on the object.
-</p>
-<p id="130006" class="block-content">
-An object may listen to a global event without defining an 'fx' method of the same name by
-adding an object method to the global event list. For example
-</p>
-<com:TTextHighlighter CssClass="source block-content">
-$component->fxGlobalCheck=$callback; // or $component->OnClick->add($callback);
-$component->attachEventHandler('fxGlobalCheck',array($object, 'someMethod'));
-</com:TTextHighlighter>
-<h2 id="26002">Events between Objects and their behaviors, Dynamic Events</h2>
-<p id="130007" class="block-content">
-An intra-object/behavior event is defined by methods that start with 'dy'. Just as with
-'fx' global events, every object has every dynamic event. Any call to a method that
-starts with 'dy' will be handled, regardless of whether it is implemented. These
-events are for communicating with attached behaviors.
-</p>
-<p id="130008" class="block-content">
-Dynamic events can be used in a variety of ways. They can be used to tell behaviors
-when a non-behavior method is called. Dynamic events could be used as data filters.
-They could also be used to specify when a piece of code is to be run, eg. should the
-loop process be performed on a particular piece of data. In this way, some control
-is handed to the behaviors over the process and/or data.
-</p>
-<p id="130009" class="block-content">
-If there are no handlers for an 'fx' or 'dy' event, it will return the first
-parameter of the argument list. If there are no arguments, these events
-will return null. If there are handlers an 'fx' method will be called directly
-within the object. Global 'fx' events are triggered by calling <tt>raiseEvent</tt>.
-For dynamic events where there are behaviors that respond to the dynamic events, a
-<tt>TCallChain</tt> is developed. A call chain allows the behavior dynamic event
-implementations to call further implementing behaviors within a chain.
-</p>
-<p id="130010" class="block-content">
-If an object implements <tt>IDynamicMethods</tt>, all global and object dynamic
-events will be sent to <tt>__dycall</tt>. In the case of global events, all
-global events will trigger this method. In the case of behaviors, all undefined
-dynamic events which are called will be passed through to this method.
-</p>
-<p id="130011" class="block-content">
-<h2 id="26003">Behaviors</h2>
-<p id="130012" class="block-content">
-There are two types of behaviors. There are individual object behaviors and
-there are class wide behaviors. Class behaviors depend upon object behaviors.
-</p>
-<p id="130013" class="block-content">
-When a new class implements <tt>IBehavior</tt> or <tt>IClassBehavior</tt> or
-extends <tt>TBehavior</tt> or <tt>TClassBehavior</tt>, it may be added to an
-object by calling the object's <tt>attachBehavior</tt>. The behaviors associated
-name can then be used to <tt>enableBehavior</tt> or <tt>disableBehavior</tt>
-the specific behavior.
-</p>
-<p id="130014" class="block-content">
-All behaviors may be turned on and off via <tt>enableBehaviors</tt> and
-<tt>disableBehaviors</tt>, respectively. To check if behaviors are on or off
-a call to <tt>getBehaviorsEnabled</tt> will provide the variable.
-</p>
-<p id="130015" class="block-content">
-Attaching and detaching whole sets of behaviors is done using
-<tt>attachBehaviors</tt> and <tt>detachBehaviors</tt>. <tt>clearBehaviors</tt>
-removes all of an object's behaviors.
-</p>
-<p id="130016" class="block-content">
-<tt>asa</tt> returns a behavior of a specific name. <tt>isa</tt> is the
-behavior inclusive function that acts as the PHP operator <tt>instanceof</tt>.
-A behavior could provide the functionality of a specific class thus causing
-the host object to act similarly to a completely different class. A behavior
-would then implement <tt>IInstanceCheck</tt> to provide the identity of the
-different class.
-</p>
-<p id="130017" class="block-content">
-Class behaviors are similar to object behaviors except that the class behavior
-is the implementation for all instances of the class. A class behavior
-will have the object upon which is being called be prepended to the parameter
-list. This way the object is known across the class behavior implementation.
-</p>
-<p id="130018" class="block-content">
-Class behaviors are attached using <tt>attachClassBehavior</tt> and detached
-using <tt>detachClassBehavior</tt>. Class behaviors are important in that
-they will be applied to all new instances of a particular class. In this way
-class behaviors become default behaviors to a new instances of a class in
-<tt>__construct</tt>. Detaching a class behavior will remove the behavior
-from the default set of behaviors created for an object when the object
-is instanced.
-</p>
-<p id="130019" class="block-content">
-Class behaviors are also added to all existing instances via the global 'fx'
-event mechanism. When a new class behavior is added, the event
-<tt>fxAttachClassBehavior</tt> is raised and all existing instances that are
-listening to this global event (primarily after <tt>listen</tt> is called)
-will have this new behavior attached. A similar process is used when
-detaching class behaviors. Any objects listening to the global 'fx' event
-<tt>fxDetachClassBehavior</tt> will have a class behavior removed.
-</p>
-<h2 id="26004">Dynamic Intra-Object Events</h2>
-<p id="130020" class="block-content">
-Dynamic events start with 'dy'. This mechanism is used to allow objects
-to communicate with their behaviors directly. The entire 'dy' event space
-is valid. All attached, enabled behaviors that implement a dynamic event
-are called when the host object calls the dynamic event. If there is no
-implementation or behaviors, this returns null when no parameters are
-supplied and will return the first parameter when there is at least one
-parameter in the dynamic event.
-</p>
-<com:TTextHighlighter CssClass="source block-content">
- null == $this->dyBehaviorEvent();
- 5 == $this->dyBehaviorEvent(5); //when no behaviors implement this dynamic event
-</com:TTextHighlighter>
-<p id="130021" class="block-content">
-Dynamic events can be chained together within behaviors to allow for data
-filtering. Dynamic events are implemented within behaviors by defining the
-event as a method.
-</p>
-<com:TTextHighlighter CssClass="source block-content">
-class TObjectBehavior extends TBehavior {
- public function dyBehaviorEvent($param1, $callchain) {
- //Do something, eg: $param1 += 13;
- return $callchain->dyBehaviorEvent($param1);
- }
-}
-</com:TTextHighlighter>
-<p id="130022" class="block-content">
-This implementation of a behavior and dynamic event will flow through to the
-next behavior implementing the dynamic event. The first parameter is always
-return when it is supplied. Otherwise a dynamic event returns null.
-</p>
-<p id="130023" class="block-content">
-In the case of a class behavior, the object is also prepended to the dynamic
-event.
-</p>
-<com:TTextHighlighter CssClass="source block-content">
-class TObjectClassBehavior extends TClassBehavior {
- public function dyBehaviorEvent($hostobject, $param1, $callchain) {
- //Do something, eg: $param1 += $hostobject->getNumber();
- return $callchain->dyBehaviorEvent($param1);
- }
-}
-</com:TTextHighlighter>
-</p>
-<p id="130024" class="block-content">
-When calling a dynamic event, only the parameters are passed. The host object
-and the call chain are built into the framework.
-</p>
-
-<h2 id="26005">Global Event and Dynamic event catching</h2>
-
-<p id="130025" class="block-content">
-Given that all global 'fx' events and dynamic 'dy' events are valid and
-operational, there is a mechanism for catching events called that are not
-implemented (similar to the built-in PHP method <tt>__call</tt>). When
-a dynamic or global event is called but a behavior does not implement it,
-yet desires to know when an undefined dynamic event is run, the behavior
-implements the interface <tt>IDynamicMethods</tt> and method <tt>__dycall</tt>.
-</p>
-<p id="130026" class="block-content">
-In the case of dynamic events, <tt>__dycall</tt> is supplied with the method
-name and its parameters. When a global event is raised, via <tt>raiseEvent</tt>,
-the method is the event name and the parameters are supplied.
-</p>
-<p id="130027" class="block-content">
-When implemented, this catch-all mechanism is called for event global event event
-when implemented outside of a behavior. Within a behavior, it will also be called
-when the object to which the behavior is attached calls any unimplemented dynamic
-event. This is the fall-back mechanism for informing a class and/or behavior
-of when an global and/or undefined dynamic event is executed.
-</p>
-
-<h2 id="704">Namespaces</h2>
-<p id="110121" class="block-content">
-A namespace refers to a logical grouping of some class names so that they can be differentiated from other class names even if their names are the same. Since PHP does not support namespace intrinsically, you cannot create instances of two classes who have the same name but with different definitions. To differentiate from user defined classes, all PRADO classes are prefixed with a letter 'T' (meaning 'Type'). Users are advised not to name their classes like this. Instead, they may prefix their class names with any other letter(s).
-</p>
-<p id="110122" class="block-content">
-A namespace in PRADO is considered as a directory containing one or several class files. A class may be specified without ambiguity using such a namespace followed by the class name. Each namespace in PRADO is specified in the following format,
-<div class="source">
-PathAlias.Dir1.Dir2
-</div>
-where <tt>PathAlias</tt> is an alias of some directory, while <tt>Dir1</tt> and <tt>Dir2</tt> are subdirectories under that directory. A class named <tt>MyClass</tt> defined under <tt>Dir2</tt> may now be fully qualified as <tt>PathAlias.Dir1.Dir2.MyClass</tt>.
-</p>
-<p id="110123" class="block-content">
-To use a namespace in code, do as follows,
-<com:TTextHighlighter CssClass="source block-content" id="code_110063">
-Prado::using('PathAlias.Dir1.Dir2.*');
-</com:TTextHighlighter>
-which appends the directory referred to by <tt>PathAlias.Dir1.Dir2</tt> into PHP include path so that classes defined under that directory may be instantiated without the namespace prefix. You may also include an individual class definition by
-<com:TTextHighlighter CssClass="source block-content" id="code_110064">
-Prado::using('PathAlias.Dir1.Dir2.MyClass');
-</com:TTextHighlighter>
-which will include the class file if <tt>MyClass</tt> is not defined.
-</p>
-<p id="110124" class="block-content">
-For more details about defining path aliases, see <a href="?page=Configurations.AppConfig">application configuration</a> section.
-</p>
-
-<h2 id="705">Component Instantiation</h2>
-<p id="110125" class="block-content">
-Component instantiation means creating instances of component classes. There are two types of component instantation: static instantiation and dynamic instantiation. The created components are called static components and dynamic components, respectively.
-</p>
-
-<h3 id="707">Dynamic Component Instantiation</h3>
-<p id="110126" class="block-content">
-Dynamic component instantiation means creating component instances in PHP code. It is the same as the commonly referred object creation in PHP. A component can be dynamically created using one of the following two methods in PHP,
-<com:TTextHighlighter CssClass="source block-content" id="code_110065">
-$component = new ComponentClassName;
-$component = Prado::createComponent('ComponentType');
-</com:TTextHighlighter>
-where <tt>ComponentType</tt> refers to a class name or a type name in namespace format (e.g. <tt>System.Web.UI.TControl</tt>). The second approach is introduced to compensate for the lack of namespace support in PHP.
-</p>
-
-<h3 id="708">Static Component Instantiation</h3>
-<p id="110127" class="block-content">
-Static component instantiation is about creating components via <a href="?page=Configurations.Overview">configurations</a>. The actual creation work is done by the PRADO framework. For example, in an <a href="?page=Configurations.AppConfig">application configuration</a>, one can configure a module to be loaded when the application runs. The module is thus a static component created by the framework. Static component instantiation is more commonly used in <a href="?page=Configurations.Templates1">templates</a>. Every component tag in a template specifies a component that will be automatically created by the framework when the template is loaded. For example, in a page template, the following tag will lead to the creation of a <tt>TButton</tt> component on the page,
-<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code_110066">
-&lt;com:TButton Text="Register" /&gt;
-</com:TTextHighlighter>
-</p>
-
-</com:TContent>
diff --git a/demos/quickstart/protected/pages/Fundamentals/Components1.page b/demos/quickstart/protected/pages/Fundamentals/Components1.page
new file mode 100755
index 00000000..a610045d
--- /dev/null
+++ b/demos/quickstart/protected/pages/Fundamentals/Components1.page
@@ -0,0 +1,157 @@
+<com:TContent ID="body" >
+<h1 id="701">Components: Part I</h1>
+<p id="110113" class="block-content">
+A component is an instance of <tt>TComponent</tt> or its child class. The base class <tt>TComponent</tt> implements the mechanism of component properties and events.
+</p>
+
+<h2 id="702">Component Properties</h2>
+<p id="110114" class="block-content">
+A component property can be viewed as a public variable describing a specific aspect of the component, such as the background color, the font size, etc. A property is defined by the existence of a getter and/or a setter method in the component class. For example, in <tt>TControl</tt>, we define its <tt>ID</tt> property using the following getter and setter methods,
+<com:TTextHighlighter CssClass="source block-content" id="code_110056">
+class TControl extends TComponent {
+ public function getID() {
+ ...
+ }
+ public function setID($value) {
+ ...
+ }
+}
+</com:TTextHighlighter>
+</p>
+<p id="110115" class="block-content">
+To get or set the <tt>ID</tt> property, do as follows, just like working with a variable,
+<com:TTextHighlighter CssClass="source block-content" id="code_110057">
+$id = $component->ID;
+$component->ID = $id;
+</com:TTextHighlighter>
+This is equivalent to the following,
+<com:TTextHighlighter CssClass="source block-content" id="code_110058">
+$id = $component->getID();
+$component->setID( $id );
+</com:TTextHighlighter>
+</p>
+<p id="110116" class="block-content">
+A property is read-only if it has a getter method but no setter method. Since PHP method names are case-insensitive, property names are also case-insensitive. A component class inherits all its ancestor classes' properties.
+</p>
+
+<h3 id="706">Subproperties</h3>
+<p id="110117" class="block-content">
+A subproperty is a property of some object-typed property. For example, <tt>TWebControl</tt> has a <tt>Font</tt> property which is of <tt>TFont</tt> type. Then the <tt>Name</tt> property of <tt>Font</tt> is referred to as a subproperty (with respect to <tt>TWebControl</tt>).
+</p>
+<p id="110118" class="block-content">
+To get or set the <tt>Name</tt> subproperty, use the following method,
+<com:TTextHighlighter CssClass="source block-content" id="code_110059">
+$name = $component-&gt;getSubProperty('Font.Name');
+$component->setSubProperty('Font.Name', $name);
+</com:TTextHighlighter>
+This is equivalent to the following,
+<com:TTextHighlighter CssClass="source block-content" id="code_110060">
+$name = $component->getFont()->getName();
+$component-&gt;getFont()-&gt;setName( $name );
+</com:TTextHighlighter>
+</p>
+
+<h3 id="26001">Js-friendly properties</h3>
+<p class="block-content">
+A JavaScript-friendly property is a property that can accept both simple strings and raw javascript.
+Prado automatically encodes all properties sent clientside inside javascript blocks to avoid security problems (like injections or cross site scripting).
+If a property is known to always contain only safe javascript code and its value needs to bypass this encoding, that property can be defined in a special way that will make Prado mark its value as "safe".
+Js-friendly properties are identified by their name starting with 'js' (case insensitive):
+<com:TTextHighlighter CssClass="source block-content">
+// getter, defines a readable property 'Text'
+function getJsText() { … }
+// setter, defines a writable property 'Text', with $value being the value to be set to the property
+function setJsText(TJavaScriptLiteral $value) { … }
+</com:TTextHighlighter>
+Js-friendly properties can be accessed using both their Js-less name and their Js-enabled name:
+<com:TTextHighlighter CssClass="source block-content">
+// set some simple text as property value
+$component-&gt;Text = 'text';
+// set some javascript code as property value
+$component-&gt;JsText = 'raw javascript';
+</com:TTextHighlighter>
+In the first case, the property value will automatically gets encoded when sent clientside inside a javascript block.
+In the second case, the property will be 'marked' as being a safe javascript statement and will not be encoded when rendered inside a javascript block.
+This special handling makes use of the <tt>TJavaScriptLiteral</tt> class.
+</p>
+
+
+<h2 id="703">Component Events</h2>
+<p id="110119" class="block-content">
+Component events are special properties that take method names as their values. Attaching (setting) a method to an event will hook up the method to the places at which the event is raised. Therefore, the behavior of a component can be modified in a way that may not be foreseen during the development of the component.
+</p>
+<p id="110120" class="block-content">
+A component event is defined by the existence of a method whose name starts with the word <tt>on</tt>. The event name is the method name and is thus case-insensitve. For example, in <tt>TButton</tt>, we have
+<com:TTextHighlighter CssClass="source block-content" id="code_110061">
+class TButton extends TWebControl {
+ public function onClick( $param ) {
+ ...
+ }
+}
+</com:TTextHighlighter>
+This defines an event named <tt>OnClick</tt>, and a handler can be attached to the event using one of the following ways,
+<com:TTextHighlighter CssClass="source block-content" id="code_110062">
+$button->OnClick = $callback;
+$button->OnClick->add( $callback );
+$button->OnClick[] = $callback;
+$button->attachEventHandler( 'OnClick' , $callback );
+</com:TTextHighlighter>
+</p>
+ The variable <tt>$callback</tt> contains the definition of the event handler that can be either a string referring to a global function name, or an array whose first element refers to an object and second element a method name/path that is reachable by the object, e.g.
+ </p>
+<ul>
+<li>'buttonClicked' : buttonClicked($sender,$param);</li>
+<li>array($object,'buttonClicked') : $object->buttonClicked($sender,$param);</li>
+<li>array($object,'MainContent.SubmitButton.buttonClicked') : $object->MainContent->SubmitButton->buttonClicked($sender,$param);</li>
+</ul>
+
+<h2 id="704">Namespaces</h2>
+<p id="110121" class="block-content">
+A namespace refers to a logical grouping of some class names so that they can be differentiated from other class names even if their names are the same. Since PHP does not support namespace intrinsically, you cannot create instances of two classes who have the same name but with different definitions. To differentiate from user defined classes, all PRADO classes are prefixed with a letter 'T' (meaning 'Type'). Users are advised not to name their classes like this. Instead, they may prefix their class names with any other letter(s).
+</p>
+<p id="110122" class="block-content">
+A namespace in PRADO is considered as a directory containing one or several class files. A class may be specified without ambiguity using such a namespace followed by the class name. Each namespace in PRADO is specified in the following format,
+<div class="source">
+PathAlias.Dir1.Dir2
+</div>
+where <tt>PathAlias</tt> is an alias of some directory, while <tt>Dir1</tt> and <tt>Dir2</tt> are subdirectories under that directory. A class named <tt>MyClass</tt> defined under <tt>Dir2</tt> may now be fully qualified as <tt>PathAlias.Dir1.Dir2.MyClass</tt>.
+</p>
+<p id="110123" class="block-content">
+To use a namespace in code, do as follows,
+<com:TTextHighlighter CssClass="source block-content" id="code_110063">
+Prado::using('PathAlias.Dir1.Dir2.*');
+</com:TTextHighlighter>
+which appends the directory referred to by <tt>PathAlias.Dir1.Dir2</tt> into PHP include path so that classes defined under that directory may be instantiated without the namespace prefix. You may also include an individual class definition by
+<com:TTextHighlighter CssClass="source block-content" id="code_110064">
+Prado::using('PathAlias.Dir1.Dir2.MyClass');
+</com:TTextHighlighter>
+which will include the class file if <tt>MyClass</tt> is not defined.
+</p>
+<p id="110124" class="block-content">
+For more details about defining path aliases, see <a href="?page=Configurations.AppConfig">application configuration</a> section.
+</p>
+
+<h2 id="705">Component Instantiation</h2>
+<p id="110125" class="block-content">
+Component instantiation means creating instances of component classes. There are two types of component instantation: static instantiation and dynamic instantiation. The created components are called static components and dynamic components, respectively.
+</p>
+
+<h3 id="707">Dynamic Component Instantiation</h3>
+<p id="110126" class="block-content">
+Dynamic component instantiation means creating component instances in PHP code. It is the same as the commonly referred object creation in PHP. A component can be dynamically created using one of the following two methods in PHP,
+<com:TTextHighlighter CssClass="source block-content" id="code_110065">
+$component = new ComponentClassName;
+$component = Prado::createComponent('ComponentType');
+</com:TTextHighlighter>
+where <tt>ComponentType</tt> refers to a class name or a type name in namespace format (e.g. <tt>System.Web.UI.TControl</tt>). The second approach is introduced to compensate for the lack of namespace support in PHP.
+</p>
+
+<h3 id="708">Static Component Instantiation</h3>
+<p id="110127" class="block-content">
+Static component instantiation is about creating components via <a href="?page=Configurations.Overview">configurations</a>. The actual creation work is done by the PRADO framework. For example, in an <a href="?page=Configurations.AppConfig">application configuration</a>, one can configure a module to be loaded when the application runs. The module is thus a static component created by the framework. Static component instantiation is more commonly used in <a href="?page=Configurations.Templates1">templates</a>. Every component tag in a template specifies a component that will be automatically created by the framework when the template is loaded. For example, in a page template, the following tag will lead to the creation of a <tt>TButton</tt> component on the page,
+<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code_110066">
+&lt;com:TButton Text="Register" /&gt;
+</com:TTextHighlighter>
+</p>
+
+</com:TContent>
diff --git a/demos/quickstart/protected/pages/Fundamentals/Components2.page b/demos/quickstart/protected/pages/Fundamentals/Components2.page
new file mode 100644
index 00000000..7fc3e010
--- /dev/null
+++ b/demos/quickstart/protected/pages/Fundamentals/Components2.page
@@ -0,0 +1,207 @@
+<com:TContent ID="body" >
+<h1 id="701">Components: Part II</h1>
+<com:SinceVersion Version="3.2.3" />
+<h2 id="26001">Global events</h2>
+<p id="130001" class="block-content">
+With the addition of behaviors, a more expansive event model is needed. There
+are two new event types (global and dynamic events) as well as a more comprehensive
+behavior model that includes class wide behaviors.
+</p>
+<p id="130002" class="block-content">
+A global event is defined by all events whose name starts with 'fx'.
+The event name is potentially a method name and is thus case-insensitive. All 'fx' events
+are valid as the whole 'fx' event/method space is global in nature. Any object may patch into
+any global event by defining that event as a method. Global events have priorities
+just like 'on' events; so as to be able to order the event execution. Due to the
+nature of all events which start with 'fx' being valid, in effect, every object
+has every 'fx' global event. It is simply an issue of tapping into the desired
+global event.
+</p>
+<p id="130003" class="block-content">
+A global event that starts with 'fx' can be called even if the object does not
+implement the method of the global event. A call to a non-existing 'fx' method
+will, at minimal, function and return null. If a method argument list has a first
+parameter, it will be returned instead of null. This allows filtering and chaining.
+'fx' methods do not automatically install and uninstall. To install and uninstall an
+object's global event listeners, call the object's <tt>listen</tt> and
+<tt>unlisten</tt> methods, respectively. An object may auto-install its global event
+during <tt>__construct</tt> by overriding <tt>getAutoGlobalListen</tt> and returning true.
+</p>
+<p id="130004" class="block-content">
+As of PHP version 5.3, nulled objects without code references will still continue to persist
+in the global event queue because <tt>__destruct</tt> is not automatically called. In the common
+__destruct method, if an object is listening to global events, then <tt>unlisten</tt> is called.
+<tt>unlisten</tt> is required to be manually called before an object is
+left without references if it is currently listening to any global events. This includes
+class wide behaviors.
+</p>
+<p id="130005" class="block-content">
+An object that contains a method that starts with 'fx' will have those functions
+automatically receive those events of the same name after <tt>listen</tt> is called on the object.
+</p>
+<p id="130006" class="block-content">
+An object may listen to a global event without defining an 'fx' method of the same name by
+adding an object method to the global event list. For example
+</p>
+<com:TTextHighlighter CssClass="source block-content">
+$component->fxGlobalCheck=$callback; // or $component->OnClick->add($callback);
+$component->attachEventHandler('fxGlobalCheck',array($object, 'someMethod'));
+</com:TTextHighlighter>
+<h2 id="26002">Events between Objects and their behaviors, Dynamic Events</h2>
+<p id="130007" class="block-content">
+An intra-object/behavior event is defined by methods that start with 'dy'. Just as with
+'fx' global events, every object has every dynamic event. Any call to a method that
+starts with 'dy' will be handled, regardless of whether it is implemented. These
+events are for communicating with attached behaviors.
+</p>
+<p id="130008" class="block-content">
+Dynamic events can be used in a variety of ways. They can be used to tell behaviors
+when a non-behavior method is called. Dynamic events could be used as data filters.
+They could also be used to specify when a piece of code is to be run, eg. should the
+loop process be performed on a particular piece of data. In this way, some control
+is handed to the behaviors over the process and/or data.
+</p>
+<p id="130009" class="block-content">
+If there are no handlers for an 'fx' or 'dy' event, it will return the first
+parameter of the argument list. If there are no arguments, these events
+will return null. If there are handlers an 'fx' method will be called directly
+within the object. Global 'fx' events are triggered by calling <tt>raiseEvent</tt>.
+For dynamic events where there are behaviors that respond to the dynamic events, a
+<tt>TCallChain</tt> is developed. A call chain allows the behavior dynamic event
+implementations to call further implementing behaviors within a chain.
+</p>
+<p id="130010" class="block-content">
+If an object implements <tt>IDynamicMethods</tt>, all global and object dynamic
+events will be sent to <tt>__dycall</tt>. In the case of global events, all
+global events will trigger this method. In the case of behaviors, all undefined
+dynamic events which are called will be passed through to this method.
+</p>
+<p id="130011" class="block-content">
+<h2 id="26003">Behaviors</h2>
+<p id="130012" class="block-content">
+There are two types of behaviors. There are individual object behaviors and
+there are class wide behaviors. Class behaviors depend upon object behaviors.
+</p>
+<p id="130013" class="block-content">
+When a new class implements <tt>IBehavior</tt> or <tt>IClassBehavior</tt> or
+extends <tt>TBehavior</tt> or <tt>TClassBehavior</tt>, it may be added to an
+object by calling the object's <tt>attachBehavior</tt>. The behaviors associated
+name can then be used to <tt>enableBehavior</tt> or <tt>disableBehavior</tt>
+the specific behavior.
+</p>
+<p id="130014" class="block-content">
+All behaviors may be turned on and off via <tt>enableBehaviors</tt> and
+<tt>disableBehaviors</tt>, respectively. To check if behaviors are on or off
+a call to <tt>getBehaviorsEnabled</tt> will provide the variable.
+</p>
+<p id="130015" class="block-content">
+Attaching and detaching whole sets of behaviors is done using
+<tt>attachBehaviors</tt> and <tt>detachBehaviors</tt>. <tt>clearBehaviors</tt>
+removes all of an object's behaviors.
+</p>
+<p id="130016" class="block-content">
+<tt>asa</tt> returns a behavior of a specific name. <tt>isa</tt> is the
+behavior inclusive function that acts as the PHP operator <tt>instanceof</tt>.
+A behavior could provide the functionality of a specific class thus causing
+the host object to act similarly to a completely different class. A behavior
+would then implement <tt>IInstanceCheck</tt> to provide the identity of the
+different class.
+</p>
+<p id="130017" class="block-content">
+Class behaviors are similar to object behaviors except that the class behavior
+is the implementation for all instances of the class. A class behavior
+will have the object upon which is being called be prepended to the parameter
+list. This way the object is known across the class behavior implementation.
+</p>
+<p id="130018" class="block-content">
+Class behaviors are attached using <tt>attachClassBehavior</tt> and detached
+using <tt>detachClassBehavior</tt>. Class behaviors are important in that
+they will be applied to all new instances of a particular class. In this way
+class behaviors become default behaviors to a new instances of a class in
+<tt>__construct</tt>. Detaching a class behavior will remove the behavior
+from the default set of behaviors created for an object when the object
+is instanced.
+</p>
+<p id="130019" class="block-content">
+Class behaviors are also added to all existing instances via the global 'fx'
+event mechanism. When a new class behavior is added, the event
+<tt>fxAttachClassBehavior</tt> is raised and all existing instances that are
+listening to this global event (primarily after <tt>listen</tt> is called)
+will have this new behavior attached. A similar process is used when
+detaching class behaviors. Any objects listening to the global 'fx' event
+<tt>fxDetachClassBehavior</tt> will have a class behavior removed.
+</p>
+<h2 id="26004">Dynamic Intra-Object Events</h2>
+<p id="130020" class="block-content">
+Dynamic events start with 'dy'. This mechanism is used to allow objects
+to communicate with their behaviors directly. The entire 'dy' event space
+is valid. All attached, enabled behaviors that implement a dynamic event
+are called when the host object calls the dynamic event. If there is no
+implementation or behaviors, this returns null when no parameters are
+supplied and will return the first parameter when there is at least one
+parameter in the dynamic event.
+</p>
+<com:TTextHighlighter CssClass="source block-content">
+ null == $this->dyBehaviorEvent();
+ 5 == $this->dyBehaviorEvent(5); //when no behaviors implement this dynamic event
+</com:TTextHighlighter>
+<p id="130021" class="block-content">
+Dynamic events can be chained together within behaviors to allow for data
+filtering. Dynamic events are implemented within behaviors by defining the
+event as a method.
+</p>
+<com:TTextHighlighter CssClass="source block-content">
+class TObjectBehavior extends TBehavior {
+ public function dyBehaviorEvent($param1, $callchain) {
+ //Do something, eg: $param1 += 13;
+ return $callchain->dyBehaviorEvent($param1);
+ }
+}
+</com:TTextHighlighter>
+<p id="130022" class="block-content">
+This implementation of a behavior and dynamic event will flow through to the
+next behavior implementing the dynamic event. The first parameter is always
+return when it is supplied. Otherwise a dynamic event returns null.
+</p>
+<p id="130023" class="block-content">
+In the case of a class behavior, the object is also prepended to the dynamic
+event.
+</p>
+<com:TTextHighlighter CssClass="source block-content">
+class TObjectClassBehavior extends TClassBehavior {
+ public function dyBehaviorEvent($hostobject, $param1, $callchain) {
+ //Do something, eg: $param1 += $hostobject->getNumber();
+ return $callchain->dyBehaviorEvent($param1);
+ }
+}
+</com:TTextHighlighter>
+</p>
+<p id="130024" class="block-content">
+When calling a dynamic event, only the parameters are passed. The host object
+and the call chain are built into the framework.
+</p>
+
+<h2 id="26005">Global Event and Dynamic event catching</h2>
+
+<p id="130025" class="block-content">
+Given that all global 'fx' events and dynamic 'dy' events are valid and
+operational, there is a mechanism for catching events called that are not
+implemented (similar to the built-in PHP method <tt>__call</tt>). When
+a dynamic or global event is called but a behavior does not implement it,
+yet desires to know when an undefined dynamic event is run, the behavior
+implements the interface <tt>IDynamicMethods</tt> and method <tt>__dycall</tt>.
+</p>
+<p id="130026" class="block-content">
+In the case of dynamic events, <tt>__dycall</tt> is supplied with the method
+name and its parameters. When a global event is raised, via <tt>raiseEvent</tt>,
+the method is the event name and the parameters are supplied.
+</p>
+<p id="130027" class="block-content">
+When implemented, this catch-all mechanism is called for event global event event
+when implemented outside of a behavior. Within a behavior, it will also be called
+when the object to which the behavior is attached calls any unimplemented dynamic
+event. This is the fall-back mechanism for informing a class and/or behavior
+of when an global and/or undefined dynamic event is executed.
+</p>
+
+</com:TContent>
diff --git a/demos/quickstart/protected/pages/Fundamentals/Pages.page b/demos/quickstart/protected/pages/Fundamentals/Pages.page
index 19900937..d52dccf5 100755
--- a/demos/quickstart/protected/pages/Fundamentals/Pages.page
+++ b/demos/quickstart/protected/pages/Fundamentals/Pages.page
@@ -5,13 +5,27 @@
Pages are top-most controls that have no parent. The presentation of pages are directly displayed to end-users. Users access pages by sending page service requests.
</p>
<p id="130138" class="block-content">
-Each page must have a <a href="?page=Configurations.Templates1">template</a> file. The file name suffix must be <tt>.page</tt>. The file name (without suffix) is the page name. PRADO will try to locate a page class file under the directory containing the page template file. Such a page class file must have the same file name (suffixed with <tt>.php</tt>) as the template file. If the class file is not found, the page will take class <tt>TPage</tt>.
+Each page can have a <a href="?page=Configurations.Templates1">template</a> file. The file name suffix must be <tt>.page</tt>. The file name (without suffix) is the page name. PRADO will try to locate a page class file under the directory containing the page template file. Such a page class file must have the same file name (suffixed with <tt>.php</tt>) as the template file. If the class file is not found, the page will take class <tt>TPage</tt>.
</p>
<h2 id="902">PostBack</h2>
<p id="130139" class="block-content">
A form submission is called <i>postback</i> if the submission is made to the page containing the form. Postback can be considered an event happened on the client side, raised by the user. PRADO will try to identify which control on the server side is responsible for a postback event. If one is determined, for example, a <tt>TButton</tt>, we call it the postback event sender which will translate the postback event into some specific server-side event (e.g. <tt>OnClick</tt> and <tt>OnCommand</tt> events for <tt>TButton</tt>).
+<br/>
+<tt>TPage</tt> has a <tt>IsPostBack</tt> property exposing whether the current request being handled is the first request for this page or the consequence of a postback.
+</p>
+<h2 id="32008">CallBack</h2>
+<p class="block-content">
+A <i>callback</i> is a special form submission that, instead of requiring a full page reload on the browser, gets executed in the background through an ajax call. So, a callback is considered a postback too, but not vice versa.
+<br/>
+A callback is handled as a normal postback but, instead of re-rendering the entire page, only the specific changes occured on the page gets sent back to the client and merged with the current browser page. A typical callback response consists of:
+<ol>
+ <li>one or more pieces of html code that will replace existing content on the page;</li>
+ <li>the javascript instructions needed to update the page;</li>
+ <li>some specific fields used by prado to mantain the pagestate and add the needed external resources (stylesheets, javascript files, etc..).</li>
+</ol>
+<tt>TPage</tt> has a <tt>IsCallBack</tt> property exposing whether the current request being handled is the consequence of a callback. Since a callback is also a postback, both <tt>IsPostBack</tt> and <tt>IsCallBack</tt> are true during callback requests.
</p>
<h2 id="903">Page Lifecycles</h2>
diff --git a/demos/quickstart/protected/pages/Fundamentals/Services.page b/demos/quickstart/protected/pages/Fundamentals/Services.page
index 5e5889df..ee19a159 100755
--- a/demos/quickstart/protected/pages/Fundamentals/Services.page
+++ b/demos/quickstart/protected/pages/Fundamentals/Services.page
@@ -16,7 +16,7 @@ Developers may implement additional services for their applications. To make a s
<h2 id="1102">Page Service</h2>
<p id="150154" class="block-content">
-PRADO implements <tt>TPageService</tt> to process users' page requests. Pages are stored under a directory specified by the <tt>BasePath</tt> property of the page service. The property defaults to <tt>pages</tt> directory under the application base path. You may change this default by configuring the service in the application configuration.
+PRADO implements <tt>TPageService</tt> to process users' page requests. Pages are stored under a directory specified by the <tt>BasePath</tt> property of the page service. The property defaults to <tt>Pages</tt> directory under the application base path. You may change this default by configuring the service in the application configuration.
</p>
<p id="150155" class="block-content">
Pages may be organized into subdirectories under the <tt>BasePath</tt>. In each directory, there may be a page configuration file named <tt>config.xml</tt>, which contains configurations effective only when a page under that directory or a sub-directory is requested. For more details, see the <a href="?page=Configurations.PageConfig">page configuration</a> section.
@@ -30,5 +30,8 @@ http://hostname/index.php?page=Users.Register
</com:TTextHighlighter>
where the first example takes advantage of the fact that the page service is the default service and <tt>Home</tt> is the default page.
</p>
+<p class="block-content">
+More advanced url routes, like masking real page names and permitting the use of dynamic parameters can be created using the <a href="?page=Configurations.UrlMapping">Url mapping</a> module.
+</p>
</com:TContent>
diff --git a/demos/quickstart/protected/pages/GettingStarted/AboutPrado.page b/demos/quickstart/protected/pages/GettingStarted/AboutPrado.page
index 22437158..1a416a32 100755
--- a/demos/quickstart/protected/pages/GettingStarted/AboutPrado.page
+++ b/demos/quickstart/protected/pages/GettingStarted/AboutPrado.page
@@ -51,12 +51,12 @@ Most PHP frameworks mainly focuses on separating presentation and logic and prom
<h2 id="4004">Is PRADO Stable Enough?</h2>
<p id="20004" class="block-content">
-Yes. PRADO was initially released in August 2004. Many test suites have been written and conducted frequently to ensure its quality. It has been used by thousands of developers and many Web applications have been developed based on it. Bugs and feature requests are managed through TRAC system and we have a great user community and development team to ensure all questions are answered in a timely fashion.
+Yes. PRADO was initially released in August 2004. Many test suites have been written and conducted frequently to ensure its quality. It has been used by thousands of developers and many Web applications have been developed based on it. Bugs and feature requests are managed through GitHub and we have a great user community and development team to ensure all questions are answered in a timely fashion.
</p>
<h2 id="205">History of PRADO</h2>
<p id="20014" class="block-content">
-The very original inspiration of PRADO came from Apache Tapestry. During the design and implementation, I borrowed many ideas from Borland Delphi and Microsoft ASP.NET. The first version of PRADO came out in June 2004 and was written in PHP 4. Driven by the Zend PHP 5 coding contest, I rewrote PRADO in PHP 5, which proved to be a wise move, thanks to the new object model provided by PHP 5. PRADO won the grand prize in the Zend contest, earning the highest votes from both the public and the judges' panel.
+The very original inspiration of PRADO came from Apache Tapestry. During the design and implementation, Qiang Xue borrowed many ideas from Borland Delphi and Microsoft ASP.NET. The first version of PRADO came out in June 2004 and was written in PHP 4. Driven by the Zend PHP 5 coding contest, Qiang rewrote PRADO in PHP 5, which proved to be a wise move, thanks to the new object model provided by PHP 5. PRADO won the grand prize in the Zend contest, earning the highest votes from both the public and the judges' panel.
</p>
<p id="20015" class="block-content">
In August 2004, PRADO started to be hosted on SourceForge as an open source project. Soon after, the project site <a href="http://www.xisc.com/">xisc.com</a> was announced to public. With the fantastic support of PRADO developer team and PRADO users, PRADO evolved to version 2.0 in mid 2005. In this version, Wei Zhuo contributed to PRADO with the excellent I18N and L10N support.
@@ -64,6 +64,12 @@ In August 2004, PRADO started to be hosted on SourceForge as an open source proj
<p id="20016" class="block-content">
In May 2005, we decided to completely rewrite the PRADO framework to resolve a few fundamental issues found in version 2.0 and to catch up with some cool features available in Microsoft ASP.NET 2.0. After nearly a year's hard work with over 50,000 lines of new code, version 3.0 was finally made available in April 2006.
</p>
+<p class="block-content">
+In October 2008, the original development team released a new framework called <a href="http://www.yiiframework.com/">Yii</a>. Inheriting most of the PRADO code, Yii left the pages/events concept, focusing on a pure MVC design pattern. Since 2009 a lot of people contributed to PRADO fixing issues, developing new features or backporting them from Yii.
+</p>
+<p class="block-content">
+To promote a model of community-driven development, the project repositories were moved first on <a href="http://code.google.com/p/prado3/">Google Code</a> and then, in September 2013, on <a href="http://github.com/pradosoft/prado">GitHub</a>.
+</p>
<p id="20017" class="block-content">
Starting from version 3.0, significant efforts are allocated to ensure the quality and stability of PRADO. If we say PRADO v2.x and v1.x are proof-of-concept work, we can say PRADO 3.x has grown up to a project that is suitable for serious business application development.
</p>
diff --git a/demos/quickstart/protected/pages/GettingStarted/CommandLine.page b/demos/quickstart/protected/pages/GettingStarted/CommandLine.page
index 5f5dacb9..e3626bcc 100755
--- a/demos/quickstart/protected/pages/GettingStarted/CommandLine.page
+++ b/demos/quickstart/protected/pages/GettingStarted/CommandLine.page
@@ -1,6 +1,12 @@
<com:TContent ID="body" >
<h1 id="501">Command Line Tool</h1>
-<p id="70046" class="block-content">The optional <tt>prado-cli.php</tt> PHP script file in the <tt>framework</tt>
+
+<div class="Note">
+<b class="tip">Note:</b> With Prado version 3.2.3 prado-cli.php location changed from framework
+to bin directory. If you're using Prado 3.2.2 or earlier, replace bin with framework in examples below.
+</div>
+
+<p id="70046" class="block-content">The optional <tt>prado-cli.php</tt> PHP script file in the <tt>bin</tt>
directory provides command line tools to perform various tedious takes in Prado.
The <tt>prado-cli.php</tt> can be used to create Prado project skeletons, create
initial test fixtures, and access to an interactive PHP shell.
@@ -14,7 +20,7 @@ the command line.
<h2 id="503">Usage</h2>
<p id="70048" class="block-content">
-If you type <tt>php path/to/framework/prado-cli.php</tt>, you should see
+If you type <tt>php path/to/bin/prado-cli.php</tt>, you should see
the following information. Alternatively, if you are not on Windows,
you may try to change the <tt>prado-cli.php</tt> into an executable
and execute it as a script</p>
@@ -43,9 +49,9 @@ are optional parameters. </p>
<p id="70050" class="block-content">To create a Prado project skeleton, do the following:</p>
<ol>
<li>Change to the directory where you want to create the project skeleton.</li>
- <li>Type, <tt>php ../prado/framework/prado-cli.php -c helloworld</tt>, where
+ <li>Type, <tt>php ../prado/bin/prado-cli.php -c helloworld</tt>, where
<tt>helloworld</tt> is the directory name that you want to create the project skeleton files.</li>
- <li>Type, <tt>php ../prado/framework/prado-cli.php <b>-t</b> helloworld</tt> to create
+ <li>Type, <tt>php ../prado/bin/prado-cli.php <b>-t</b> helloworld</tt> to create
the test fixtures for the <tt>helloworld</tt> project.</li>
</ol>
@@ -58,7 +64,7 @@ command line is in the <tt>prado</tt> distribution directory and you type.
</p>
<p id="70052" class="block-content">
<com:TTextHighlighter Language="cli" CssClass="source block-content cli" id="code_70007">
-$: php framework/prado-cli.php shell demos/blog
+$: php bin/prado-cli.php shell demos/blog
</com:TTextHighlighter>
The output should be
<com:TTextHighlighter Language="cli" CssClass="source block-content cli" id="code_70008">
@@ -85,7 +91,7 @@ we <b>leave out the semicolon</b> to show the results.
<com:TTextHighlighter Language="cli" CssClass="source block-content cli" id="code_70010">
>> $db->queryPostByID(1)
</com:TTextHighlighter>
-There should not be any errors and you should see the following.
+There should not be any errors and you should see the following.
<com:TTextHighlighter Language="cli" CssClass="source block-content cli" id="code_70011">
PostRecord#1
(
@@ -103,4 +109,34 @@ PostRecord#1
)
</com:TTextHighlighter>
</p>
+
+<h2 id="14007">Creating Active Record Classes</h2>
+<p id="70001" class="block-content">
+In the blog demo project, we need to create two <a href="?page=Database.ActiveRecord">Active Record</a> classes, <tt>UserRecord</tt> and <tt>PostRecord</tt>, to represent data records in the <tt>users</tt> and <tt>posts</tt> tables, respectively. Active Record classes must extend from the base class <tt>ActiveRecord</tt>, and must define property names that matches with the field names of the corresponding table.
+</p>
+
+<p id="70002" class="block-content">
+To better organize our directories, we create a new directory <tt>protected/database</tt> to hold the class files. We also modify our application configuration by inserting the following lines. It is equivalent to adding the directory <tt>protected/database</tt> to PHP include_path, which allows us to use the classes without explicitly including them.
+</p>
+
+<com:TTextHighlighter CssClass="source block-content" id="code-70014" Language="xml">
+<paths>
+ <using namespace="Application.database.*" />
+</paths>
+</com:TTextHighlighter>
+
+<p id="70003" class="block-content">
+At the prompt, enter the following two commands to create <tt>UserRecord</tt> and <tt>PostRecord</tt> classes:
+</p>
+
+<com:TTextHighlighter CssClass="source cli" Language="text">
+>> generate users Application.database.UserRecord
+
+>> generate posts Application.database.PostRecord
+</com:TTextHighlighter>
+
+<p id="70004" class="block-content">
+Here we used the <a href="?page=Fundamentals.Components1">namespace format</a> again to specify the classes to be created. The path <tt>Application.database.UserRecord</tt> indicates that we want the <tt>UserRecord</tt> class file to be <tt>protected/database/UserRecord.php</tt>.
+</p>
+
</com:TContent>
diff --git a/demos/quickstart/protected/pages/GettingStarted/HelloWorld.page b/demos/quickstart/protected/pages/GettingStarted/HelloWorld.page
index 557aa46d..d65cf7f8 100755
--- a/demos/quickstart/protected/pages/GettingStarted/HelloWorld.page
+++ b/demos/quickstart/protected/pages/GettingStarted/HelloWorld.page
@@ -29,7 +29,7 @@ where each directory is explained as follows. Note, the above directory structur
</ul>
<div class="tip">
-<b class="tip">Tip:</b>You may also use the <tt>framework/prado-cli.php</tt>
+<b class="tip">Tip:</b>You may also use the <tt>bin/prado-cli.php (framework/prado-cli.php for Prado < 3.2.3)</tt>
<a href="?page=GettingStarted.CommandLine">command line script</a>
to create the Prado project directory structure. For example, type the command
<tt>php path/to/prado-cli.php -c helloworld</tt> in the directory
diff --git a/demos/quickstart/protected/pages/GettingStarted/Installation.page b/demos/quickstart/protected/pages/GettingStarted/Installation.page
index 7919e733..f59eed70 100755
--- a/demos/quickstart/protected/pages/GettingStarted/Installation.page
+++ b/demos/quickstart/protected/pages/GettingStarted/Installation.page
@@ -5,16 +5,17 @@
If you are viewing this page from your own Web server, you are already done with the installation.
</p>
<p id="30019">
-The minimum requirement by PRADO is that the Web server support PHP 5.2. PRADO has been tested with Apache Web server on Windows and Linux. Highly possibly it may also run on other platforms with other Web servers, as long as PHP 5.2 is supported.
+The minimum requirement by PRADO is that the Web server support PHP 5.3.3. PRADO has been tested with Apache Web server on Windows, MacOSX and various Linux distro. Highly possibly it may also run on other platforms with other Web servers, as long as PHP 5.3.3 is supported.
</p>
</div>
-<div id="install-steps" class="block-content">
<p id="30020">
-Installation of PRADO mainly involves downloading and unpacking.
+PRADO can be installed as a standalone package or using <a href="http://getcomposer.org/">composer</a>
</p>
+<div id="install-steps" class="block-content">
+<h3 id="6001">Standalone package</h3>
<ol>
-<li>Go to <a href="http://www.pradosoft.com/">pradosoft.com</a> to grab the latest version of PRADO.</li>
+<li>Go to <a href="http://www.pradosoft.com/download/">pradosoft.com</a> to grab the latest version of PRADO.</li>
<li>Unpack the PRADO release file to a Web-accessible directory.
</ol>
</div>
@@ -25,5 +26,37 @@ Your installation of PRADO is done and you can start to play with the demo appli
<p id="30022">
If you encounter any problems with the demo applications, please use the PRADO requirement checker script, accessible via <tt>http://web-server-address/prado/requirements/index.php</tt>, to check first if your server configuration fulfills the conditions required by PRADO.
</p>
+
+<div id="install-steps" class="block-content">
+<h3 id="6002">Composer install</h3>
+<ol>
+<li>If you don't have installed composer already, install it globally:
+<com:TTextHighlighter CssClass="source block-content">
+$ curl -s http://getcomposer.org/installer | php
+$ php composer.phar install
+</com:TTextHighlighter>
+</li>
+<li>Create a composer.json file for your project:
+<com:TTextHighlighter CssClass="source block-content">
+{
+ "require": {
+ "pradosoft/prado": "~3.2"
+ }
+}
+</com:TTextHighlighter>
+</li>
+<li>Now run the actual installation:
+<com:TTextHighlighter CssClass="source block-content">
+$ composer install
+</com:TTextHighlighter>
+</li>
+<li>In your project include the autoloader, and you will have access to the library classes:
+<com:TTextHighlighter CssClass="source block-content">
+<?php
+require_once('vendor/autoload.php');
+</com:TTextHighlighter>
+</li>
+</ol>
</div>
+
</com:TContent>
diff --git a/demos/quickstart/protected/pages/GettingStarted/NewFeatures.page b/demos/quickstart/protected/pages/GettingStarted/NewFeatures.page
index 95bcc57f..4b2ba083 100755
--- a/demos/quickstart/protected/pages/GettingStarted/NewFeatures.page
+++ b/demos/quickstart/protected/pages/GettingStarted/NewFeatures.page
@@ -6,6 +6,13 @@
This page summarizes the main new features that are introduced in each PRADO release.
</p>
+<h2 id="8001">Version 3.2.4</h2>
+<ul>
+<li>Added Adding toArray() and toJSON() to TActiveRecord</li>
+<li>Dropped Markdown for Parsedown, supporting GitHub Flavored Markdown's extension</li>
+<li>Web site administration tool (<a href="?page=GettingStarted.Wsat">WSAT</a>)</li>
+</ul>
+
<h2 id="8001">Version 3.2.3</h2>
<ul>
<li>Added <a href="?page=Controls.HtmlArea4">THtmlArea4 control</a> based on TinyMCE4</li>
diff --git a/demos/quickstart/protected/pages/GettingStarted/Wsat.page b/demos/quickstart/protected/pages/GettingStarted/Wsat.page
new file mode 100644
index 00000000..6d7ddb37
--- /dev/null
+++ b/demos/quickstart/protected/pages/GettingStarted/Wsat.page
@@ -0,0 +1,64 @@
+<com:TContent ID="body">
+ <h1 id="12003">Web Site Administration Tool</h1>
+ <p class="block-content">
+ Web Site Administration Tool (WSAT) is a development tool which allows you to perform several
+ tedious tasks of a PRADO project in a GUI fashion. Its inspired in both Asp.Net - Web Site Administration Tool and Yii's Gii.
+ WSAT will continue gaining new features along the time, at the moment it bring you the followings:
+
+ <ul>
+ <li>Generate one or all <a href="?page=Database.ActiveRecord">Active Record Classes.</a></li>
+ <li>Optionally generate all relationships in Active Record Classes.</li>
+ <li>Generate the magic __toString() method in all AR Classes.</li>
+ </ul>
+ </p>
+
+ <h2 id="12004">Requirements</h2>
+ <p class="block-content">
+ To use WSAT, you need to add in your project configuration file: <tt>application.xml</tt>,
+ in the services section the wsat service like follows:
+
+<com:TTextHighlighter CssClass="source block-content" id="code-60007" Language="xml">
+<services>
+ ...
+ <service id="wsat" class="System.Wsat.TWsatService" Password="my_secret_password" />
+</services>
+</com:TTextHighlighter>
+ </p>
+
+ <h2 id="12005">Usage</h2>
+ <p class="block-content">
+ Then you are ready to go to: http://localhost/yoursite/index.php?wsat=TWsatLogin and doing so you should see
+ the following page:
+ </p>
+ <img src="<%~wsat_login.png%>" style="width: 700px;" />
+ <p class="block-content">
+ Where in the text field you need to type the password previosly specified in the service inclusion. This
+ is part of a basic security system to avoid undesirable persons to use this tool.
+ </p>
+
+ <h2 id="12006">Active Record classes generation</h2>
+ <p class="block-content">
+ In order to generate AR classes you need to go to: http://localhost/yoursite/index.php?wsat=TWsatGenerateAR
+ by clicking the proper links in the welcome page. Then you should see the following page:
+ </p>
+ <img src="<%~wsat_generate_ar.png%>" style="width: 700px;" />
+ <p class="block-content">
+ In which you can find a basic usage documentation in a light green panel
+ and then some proper fields in order to generate active record classes. These fields are:
+ </p>
+
+ <ul>
+ <li><b>Table Name: </b> refers to the table name in your database for which you want to generate an AR class.
+ Let it as come by default with an * to generate them all.</li>
+ <li><b>Output Folder: </b> refers to the folder where you want to save your generated classes.
+ It only accepts namespace format which means that you need to specify your path separated with points in between.
+ It default value is: "Application.App_Data.AR_Classes" which references the protected/App_Data/AR_Classes
+ file of your project, if you haven't created them yet and you want to, don't bother, WSAT will do it for you.</li>
+ <li><b>Class Prefix: </b> refers to the prefix that you whish to specify in front of every class name.
+ Clear the field to specify no prefix.</li>
+ <li><b>Class Suffix: </b> refers to the suffix that you whish to specify at the end of every class name.
+ Clear the field to specify no suffix.</li>
+ <li><b>Build Relations: </b> whether or not you want to add relationships to AR classes generation.</li>
+ </ul>
+
+</com:TContent> \ No newline at end of file
diff --git a/demos/quickstart/protected/pages/GettingStarted/wsat_generate_ar.png b/demos/quickstart/protected/pages/GettingStarted/wsat_generate_ar.png
new file mode 100644
index 00000000..8f0f59e7
--- /dev/null
+++ b/demos/quickstart/protected/pages/GettingStarted/wsat_generate_ar.png
Binary files differ
diff --git a/demos/quickstart/protected/pages/GettingStarted/wsat_login.png b/demos/quickstart/protected/pages/GettingStarted/wsat_login.png
new file mode 100644
index 00000000..dbe1ad8b
--- /dev/null
+++ b/demos/quickstart/protected/pages/GettingStarted/wsat_login.png
Binary files differ
diff --git a/demos/quickstart/protected/pages/Tutorial/AddressBook.page b/demos/quickstart/protected/pages/Tutorial/AddressBook.page
deleted file mode 100755
index f028a636..00000000
--- a/demos/quickstart/protected/pages/Tutorial/AddressBook.page
+++ /dev/null
@@ -1,9 +0,0 @@
-<com:TContent ID="body">
- <h1 id="22007">A Simple Address Book</h1>
- <p id="110006" class="block-content">This tutorial introduces the basics of connecting to a database
- using <a href="?page=Database.ActiveRecord">ActiveRecord</a>
- and using <a href="?page=Database.Scaffold">Active Record scaffolds </a>to quickly
- build a simple address book.
- </p>
-
-</com:TContent> \ No newline at end of file
diff --git a/demos/quickstart/protected/pages/Tutorial/AjaxChat.page b/demos/quickstart/protected/pages/Tutorial/AjaxChat.page
index d94dfa89..92118720 100755
--- a/demos/quickstart/protected/pages/Tutorial/AjaxChat.page
+++ b/demos/quickstart/protected/pages/Tutorial/AjaxChat.page
@@ -59,7 +59,6 @@ php prado/framework/prado-cli.php -c chat
class Login extends TPage
{
}
-?&gt;
</com:TTextHighlighter>
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code_90029">
<!doctype html public "-//W3C//DTD XHTML 1.0 Strict//EN"
@@ -170,7 +169,7 @@ as <tt>App_Code/chat.db</tt>.
class ChatUserRecord extends TActiveRecord
{
const TABLE='chat_users';
-
+
public $username;
public $last_activity;
@@ -431,7 +430,6 @@ and a button to send the message.
Text="Send" /&gt;
</div>
&lt;/com:TForm&gt;
-&lt;com:TJavascriptLogger /&gt;
</body>
</html>
</com:TTextHighlighter>
@@ -572,7 +570,7 @@ public function getUserMessages($user)
$content = '';
foreach($this->findAll('for_user = ?', $user) as $message)
$content .= $this->formatMessage($message);
- $this->deleteAll('for_user = ? OR created_on < ?',
+ $this->deleteAll('for_user = ? OR created_on < ?',
$user, time() - 300); //5 min inactivity
return $content;
}
@@ -581,7 +579,7 @@ protected function formatMessage($message)
{
$user = htmlspecialchars($message->from_user);
$content = htmlspecialchars($message->message);
- return "<div class=\"message\"><strong>{$user}:</strong>"
+ return "<div class=\"message\"><strong>{$user}:</strong>"
." <span>{$content}</span></div>";
}
</com:TTextHighlighter>
diff --git a/demos/quickstart/protected/pages/Tutorial/CurrencyConverter.page b/demos/quickstart/protected/pages/Tutorial/CurrencyConverter.page
index 4bec2a28..1abd68b9 100755
--- a/demos/quickstart/protected/pages/Tutorial/CurrencyConverter.page
+++ b/demos/quickstart/protected/pages/Tutorial/CurrencyConverter.page
@@ -34,9 +34,9 @@
<tt>currency-converter</tt> in your current working directory.
You may need to change to the appropriate directory
first.
- See the <a href="?page=GettingStarted.CommandLine">Command Line Tool</a>
- for more details.
- </p>
+ See the <a href="?page=GettingStarted.CommandLine">Command Line Tool</a>
+ for more details.
+ </p>
<com:TTextHighlighter Language="text" CssClass="source block-content" id="code111">
php prado/framework/prado-cli.php -c currency-converter
</com:TTextHighlighter>
@@ -52,7 +52,7 @@ php prado/framework/prado-cli.php -c currency-converter
<p id="80058" class="block-content">We start by editing the <tt>Home.page</tt> file found in the
<tt>currency-converter/protected/pages/</tt> directory. Files ending
with ".page" are page templates that contains HTML and Prado controls.
- We simply add two textboxes, three labels and one button as follows.
+ We simply add two textboxes, three labels and one button as follows.
</p>
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="form1">
&lt;com:TForm&gt;
@@ -75,7 +75,7 @@ php prado/framework/prado-cli.php -c currency-converter
</div>
</fieldset>
&lt;/com:TForm&gt;
-</com:TTextHighlighter>
+</com:TTextHighlighter>
<p id="refresh" class="block-content">
If you refresh the page, you should see something similar to the following figure.
It may not look very pretty or orderly, but we shall change that later using CSS.
@@ -125,7 +125,7 @@ php prado/framework/prado-cli.php -c currency-converter
to add a "Home.php" to where "Home.page" is. The <tt>Home</tt> class
should extends the
<com:DocLink ClassPath="System.Web.UI.TPage" Text="TPage" />, the default base
- class for all Prado pages.
+ class for all Prado pages.
</p>
<com:TTextHighlighter Language="php" CssClass="source block-content" id="code3">
&lt;?php
@@ -133,8 +133,7 @@ class Home extends TPage
{
}
-?&gt;
-</com:TTextHighlighter>
+</com:TTextHighlighter>
<p id="1111" class="block-content">
Prado uses PHP's <tt>__autoload</tt> method to load classes. The convention
is to use the class name with ".php" extension as filename.
@@ -151,15 +150,15 @@ class Home extends TPage
the converted total. To handle the user clicking of the "Convert" button
we simply add an <tt>OnClick</tt> property to the "Convert" button in
the "Home.page" template and add a corresponding event handler method
- in the "Home.php".
+ in the "Home.php".
</p>
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code4">
&lt;com:TButton Text="Convert" OnClick="convert_clicked" /&gt;
</com:TTextHighlighter>
- <p id="222" class="block-content">
+ <p id="222" class="block-content">
The value of the <tt>OnClick</tt>, "<tt>convert_clicked</tt>", will be the method
name in the "Home.php" that will called when the user clicks on the
- "Convert" button.
+ "Convert" button.
</p>
<com:TTextHighlighter Language="php" CssClass="source block-content" id="code5">
class Home extends TPage
@@ -171,8 +170,8 @@ class Home extends TPage
$this->total->Text = $rate * $dollars;
}
}
-</com:TTextHighlighter>
-<div id="3332" class="block-content">
+</com:TTextHighlighter>
+<div id="3332" class="block-content">
<p id="333">
If you run the application in your web browser, enter some values and click
the "Convert" button then you should see that calculated value displayed next
@@ -186,24 +185,24 @@ class Home extends TPage
</p>
<p id="80067">We shall now examine, the three lines that implements the simply currency
- conversion in the "<tt>convert_clicked</tt>" method.
- </p>
+ conversion in the "<tt>convert_clicked</tt>" method.
+ </p>
</div>
<com:TTextHighlighter Language="php" CssClass="source block-content" id="code6" >
$rate = floatval($this->currencyRate->Text);
-</com:TTextHighlighter>
+</com:TTextHighlighter>
<p id="444" class="block-content">
The statement <tt>$this->currencyRate</tt> corresponds to the
<tt>TTextBox</tt> component with <tt>ID</tt> value "currencyRate" in the
"Home.page" template. The <tt>Text</tt> property of the <tt>TTextBox</tt>
contains the value that the user entered. So, we obtain this
value by <tt>$this->currencyRate->Text</tt> which we convert the
- value to a float value.
+ value to a float value.
</p>
<com:TTextHighlighter Language="php" CssClass="source block-content" id="code7">
$dollars = floatval($this->dollars->Text);
-</com:TTextHighlighter>
-<div id="5551" class="block-content">
+</com:TTextHighlighter>
+<div id="5551" class="block-content">
<p id="555">
The next line does a similar things, it takes the user value from
the <tt>TTextBox</tt> with <tt>ID</tt> value "dollars and converts it to
@@ -212,9 +211,9 @@ $dollars = floatval($this->dollars->Text);
<p id="80068">The third line calculates the new amount and set this value in the
<tt>Text</tt> property of the <tt>TLabel</tt> with <tt>ID="total"</tt>.
- Thus, we display the new amount to the user in the label.
+ Thus, we display the new amount to the user in the label.
</p>
-</div>
+</div>
<com:TTextHighlighter Language="php" CssClass="source block-content" id="code8">
$this->total->Text = $rate * $dollars;
</com:TTextHighlighter>
@@ -233,14 +232,14 @@ $this->total->Text = $rate * $dollars;
<li>the user enters a value,</li>
<li>the currency rate is a valid number,</li>
<li>the currency rate is positive.</li>
- </ol>
+ </ol>
<p id="666" class="block-content">
To ensure 1 we add one
<com:DocLink ClassPath="System.Web.UI.WebControls.TRequiredFieldValidator" Text="TRequiredFieldValidator" />. To ensure 2 and 3, we add one
<com:DocLink ClassPath="System.Web.UI.WebControls.TCompareValidator" Text="TCompareValidator" />. We may add these validators any where within
the "Home.page" template. Further details regarding these validator and other
validators can be found in the
- <a href="?page=Controls.Validation">Validation Controls</a> page.
+ <a href="?page=Controls.Validation">Validation Controls</a> page.
</p>
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code9">
&lt;com:TRequiredFieldValidator
@@ -258,12 +257,12 @@ $this->total->Text = $rate * $dollars;
<ol id="o222" class="block-content">
<li>the user enters a value,</li>
<li>the value is a valid number (not including any currency or dollar signs).</li>
- </ol>
+ </ol>
<p id="777" class="block-content">
To ensure 1 we just add another <tt>TRequiredFieldValidator</tt>, for 2
we could use a
<com:DocLink ClassPath="System.Web.UI.WebControls.TDataTypeValidator" Text="TDataTypeValidator" />. For simplicity we only allow the user to enter
- a number for the amount they wish to convert.
+ a number for the amount they wish to convert.
</p>
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code9a">
&lt;com:TRequiredFieldValidator
@@ -283,7 +282,7 @@ $this->total->Text = $rate * $dollars;
using both javascript and server side. The server side validation
is <b>always performed</b>. For the server side, we
should skip the calculation if the validators are not satisfied. This can
- done as follows.
+ done as follows.
</p>
<com:TTextHighlighter Language="php" CssClass="source block-content" id="code10" >
public function convert_clicked($sender, $param)
@@ -313,7 +312,7 @@ public function convert_clicked($sender, $param)
In addition, we can change the "totals" <tt>TLabel</tt> with the
Active Control counter part,
<com:DocLink ClassPath="System.Web.UI.ActiveControls.TActiveLabel" Text="TActiveLabel" />, such that the server side can update the browser without
- reloading the page.
+ reloading the page.
</p>
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code11">
<div class="total-field">
@@ -323,11 +322,11 @@ public function convert_clicked($sender, $param)
<div class="convert-button">
&lt;com:TActiveButton Text="Convert" OnClick="convert_clicked" /&gt;
</div>
-</com:TTextHighlighter>
+</com:TTextHighlighter>
<p id="1232" class="block-content">
The server side logic remains the same, we just need to import the
Active Controls name space as they are not included by default. We
- add the following line to the begin of "Home.php".
+ add the following line to the begin of "Home.php".
</p>
<com:TTextHighlighter Language="php" CssClass="source block-content" id="code12">
Prado::using('System.Web.UI.ActiveControls.*');
@@ -345,7 +344,7 @@ Prado::using('System.Web.UI.ActiveControls.*');
<p id="80076" class="block-content">To indicate that the calculation is in progress, we can change the text
of the "total" label as follows. We add a <tt>ClientSide.OnLoading</tt> property
to the "Convert" button (since this button is responsible for requesting
- the calculation).
+ the calculation).
</p>
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code13">
&lt;com:TActiveButton Text="Convert" OnClick="convert_clicked" &gt;
@@ -383,7 +382,7 @@ Prado::using('System.Web.UI.ActiveControls.*');
<p id="80080" class="block-content">We simply create a CSS file named "common.css" and save it in the
<tt>themes/Basic</tt> directory. Then we add the following code
- to the beginning of "Home.page" (we add a little more HTML as well).
+ to the beginning of "Home.page" (we add a little more HTML as well).
</p>
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code14">
&lt;%@ Theme="Basic" %&gt;
@@ -392,7 +391,7 @@ Prado::using('System.Web.UI.ActiveControls.*');
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
&lt;com:THead Title="Currency Converter" /&gt;
<body>
-</com:TTextHighlighter>
+</com:TTextHighlighter>
<p id="4334" class="block-content">
The first line <tt>&lt;%@ Theme="Basic" %&gt;</tt> defines the
theme to be used for this page. The
diff --git a/demos/quickstart/protected/pages/Tutorial/fr/AjaxChat.page b/demos/quickstart/protected/pages/Tutorial/fr/AjaxChat.page
index 66bb0e43..568e920f 100755
--- a/demos/quickstart/protected/pages/Tutorial/fr/AjaxChat.page
+++ b/demos/quickstart/protected/pages/Tutorial/fr/AjaxChat.page
@@ -58,7 +58,6 @@ php prado/framework/prado-cli.php -c chat
class Login extends TPage
{
}
-?&gt;
</com:TTextHighlighter>
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code_90029">
<!doctype html public "-//W3C//DTD XHTML 1.0 Strict//EN"
@@ -430,7 +429,6 @@ and a button to send the message.
Text="Send" /&gt;
</div>
&lt;/com:TForm&gt;
-&lt;com:TJavascriptLogger /&gt;
</body>
</html>
</com:TTextHighlighter>
@@ -571,7 +569,7 @@ public function getUserMessages($user)
$content = '';
foreach($this->findAll('for_user = ?', $user) as $message)
$content .= $this->formatMessage($message);
- $this->deleteAll('for_user = ? OR created_on < ?',
+ $this->deleteAll('for_user = ? OR created_on < ?',
$user, time() - 300); //5 min inactivity
return $content;
}
@@ -580,7 +578,7 @@ protected function formatMessage($message)
{
$user = htmlspecialchars($message->from_user);
$content = htmlspecialchars($message->message);
- return "<div class=\"message\"><strong>{$user}:</strong>"
+ return "<div class=\"message\"><strong>{$user}:</strong>"
." <span>{$content}</span></div>";
}
</com:TTextHighlighter>
diff --git a/demos/quickstart/protected/pages/Tutorial/fr/CurrencyConverter.page b/demos/quickstart/protected/pages/Tutorial/fr/CurrencyConverter.page
index 2cce2336..6b8c7bc3 100755
--- a/demos/quickstart/protected/pages/Tutorial/fr/CurrencyConverter.page
+++ b/demos/quickstart/protected/pages/Tutorial/fr/CurrencyConverter.page
@@ -34,9 +34,9 @@
<tt>currency-converter</tt> in your current working directory.
You may need to change to the appropriate directory
first.
- See the <a href="?page=GettingStarted.CommandLine">Command Line Tool</a>
- for more details.
- </p>
+ See the <a href="?page=GettingStarted.CommandLine">Command Line Tool</a>
+ for more details.
+ </p>
<com:TTextHighlighter Language="text" CssClass="source block-content" id="code111">
php prado/framework/prado-cli.php -c currency-converter
</com:TTextHighlighter>
@@ -52,7 +52,7 @@ php prado/framework/prado-cli.php -c currency-converter
<p id="80058" class="block-content">We start by editing the <tt>Home.page</tt> file found in the
<tt>currency-converter/protected/pages/</tt> directory. Files ending
with ".page" are page templates that contains HTML and Prado controls.
- We simply add two textboxes, three labels and one button as follows.
+ We simply add two textboxes, three labels and one button as follows.
</p>
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="form1">
&lt;com:TForm&gt;
@@ -75,7 +75,7 @@ php prado/framework/prado-cli.php -c currency-converter
</div>
</fieldset>
&lt;/com:TForm&gt;
-</com:TTextHighlighter>
+</com:TTextHighlighter>
<p id="refresh" class="block-content">
If you refresh the page, you should see something similar to the following figure.
It may not look very pretty or orderly, but we shall change that later using CSS.
@@ -125,7 +125,7 @@ php prado/framework/prado-cli.php -c currency-converter
to add a "Home.php" to where "Home.page" is. The <tt>Home</tt> class
should extends the
<com:DocLink ClassPath="System.Web.UI.TPage" Text="TPage" />, the default base
- class for all Prado pages.
+ class for all Prado pages.
</p>
<com:TTextHighlighter Language="php" CssClass="source block-content" id="code3">
&lt;?php
@@ -133,8 +133,7 @@ class Home extends TPage
{
}
-?&gt;
-</com:TTextHighlighter>
+</com:TTextHighlighter>
<p id="1111" class="block-content">
Prado uses PHP's <tt>__autoload</tt> method to load classes. The convention
is to use the class name with ".php" extension as filename.
@@ -151,15 +150,15 @@ class Home extends TPage
the converted total. To handle the user clicking of the "Convert" button
we simply add an <tt>OnClick</tt> property to the "Convert" button in
the "Home.page" template and add a corresponding event handler method
- in the "Home.php".
+ in the "Home.php".
</p>
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code4">
&lt;com:TButton Text="Convert" OnClick="convert_clicked" /&gt;
</com:TTextHighlighter>
- <p id="222" class="block-content">
+ <p id="222" class="block-content">
The value of the <tt>OnClick</tt>, "<tt>convert_clicked</tt>", will be the method
name in the "Home.php" that will called when the user clicks on the
- "Convert" button.
+ "Convert" button.
</p>
<com:TTextHighlighter Language="php" CssClass="source block-content" id="code5">
class Home extends TPage
@@ -171,8 +170,8 @@ class Home extends TPage
$this->total->Text = $rate * $dollars;
}
}
-</com:TTextHighlighter>
-<div id="3332" class="block-content">
+</com:TTextHighlighter>
+<div id="3332" class="block-content">
<p id="333">
If you run the application in your web browser, enter some values and click
the "Convert" button then you should see that calculated value displayed next
@@ -186,24 +185,24 @@ class Home extends TPage
</p>
<p id="80067">We shall now examine, the three lines that implements the simply currency
- conversion in the "<tt>convert_clicked</tt>" method.
- </p>
+ conversion in the "<tt>convert_clicked</tt>" method.
+ </p>
</div>
<com:TTextHighlighter Language="php" CssClass="source block-content" id="code6" >
$rate = floatval($this->currencyRate->Text);
-</com:TTextHighlighter>
+</com:TTextHighlighter>
<p id="444" class="block-content">
The statement <tt>$this->currencyRate</tt> corresponds to the
<tt>TTextBox</tt> component with <tt>ID</tt> value "currencyRate" in the
"Home.page" template. The <tt>Text</tt> property of the <tt>TTextBox</tt>
contains the value that the user entered. So, we obtain this
value by <tt>$this->currencyRate->Text</tt> which we convert the
- value to a float value.
+ value to a float value.
</p>
<com:TTextHighlighter Language="php" CssClass="source block-content" id="code7">
$dollars = floatval($this->dollars->Text);
-</com:TTextHighlighter>
-<div id="5551" class="block-content">
+</com:TTextHighlighter>
+<div id="5551" class="block-content">
<p id="555">
The next line does a similar things, it takes the user value from
the <tt>TTextBox</tt> with <tt>ID</tt> value "dollars and converts it to
@@ -212,9 +211,9 @@ $dollars = floatval($this->dollars->Text);
<p id="80068">The third line calculates the new amount and set this value in the
<tt>Text</tt> property of the <tt>TLabel</tt> with <tt>ID="total"</tt>.
- Thus, we display the new amount to the user in the label.
+ Thus, we display the new amount to the user in the label.
</p>
-</div>
+</div>
<com:TTextHighlighter Language="php" CssClass="source block-content" id="code8">
$this->total->Text = $rate * $dollars;
</com:TTextHighlighter>
@@ -233,14 +232,14 @@ $this->total->Text = $rate * $dollars;
<li>the user enters a value,</li>
<li>the currency rate is a valid number,</li>
<li>the currency rate is positive.</li>
- </ol>
+ </ol>
<p id="666" class="block-content">
To ensure 1 we add one
<com:DocLink ClassPath="System.Web.UI.WebControls.TRequiredFieldValidator" Text="TRequiredFieldValidator" />. To ensure 2 and 3, we add one
<com:DocLink ClassPath="System.Web.UI.WebControls.TCompareValidator" Text="TCompareValidator" />. We may add these validators any where within
the "Home.page" template. Further details regarding these validator and other
validators can be found in the
- <a href="?page=Controls.Validation">Validation Controls</a> page.
+ <a href="?page=Controls.Validation">Validation Controls</a> page.
</p>
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code9">
&lt;com:TRequiredFieldValidator
@@ -258,12 +257,12 @@ $this->total->Text = $rate * $dollars;
<ol id="o222" class="block-content">
<li>the user enters a value,</li>
<li>the value is a valid number (not including any currency or dollar signs).</li>
- </ol>
+ </ol>
<p id="777" class="block-content">
To ensure 1 we just add another <tt>TRequiredFieldValidator</tt>, for 2
we could use a
<com:DocLink ClassPath="System.Web.UI.WebControls.TDataTypeValidator" Text="TDataTypeValidator" />. For simplicity we only allow the user to enter
- a number for the amount they wish to convert.
+ a number for the amount they wish to convert.
</p>
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code9a">
&lt;com:TRequiredFieldValidator
@@ -283,7 +282,7 @@ $this->total->Text = $rate * $dollars;
using both javascript and server side. The server side validation
is <b>always performed</b>. For the server side, we
should skip the calculation if the validators are not satisfied. This can
- done as follows.
+ done as follows.
</p>
<com:TTextHighlighter Language="php" CssClass="source block-content" id="code10" >
public function convert_clicked($sender, $param)
@@ -310,7 +309,7 @@ public function convert_clicked($sender, $param)
In addition, we can change the "totals" <tt>TLabel</tt> with the
Active Control counter part,
<com:DocLink ClassPath="System.Web.UI.ActiveControls.TActiveLabel" Text="TActiveLabel" />, such that the server side can update the browser without
- reloading the page.
+ reloading the page.
</p>
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code11">
<div class="total-field">
@@ -320,11 +319,11 @@ public function convert_clicked($sender, $param)
<div class="convert-button">
&lt;com:TActiveButton Text="Convert" OnClick="convert_clicked" /&gt;
</div>
-</com:TTextHighlighter>
+</com:TTextHighlighter>
<p id="1232" class="block-content">
The server side logic remains the same, we just need to import the
Active Controls name space as they are not included by default. We
- add the following line to the begin of "Home.php".
+ add the following line to the begin of "Home.php".
</p>
<com:TTextHighlighter Language="php" CssClass="source block-content" id="code12">
Prado::using('System.Web.UI.ActiveControls.*');
@@ -342,7 +341,7 @@ Prado::using('System.Web.UI.ActiveControls.*');
<p id="80076" class="block-content">To indicate that the calculation is in progress, we can change the text
of the "total" label as follows. We add a <tt>ClientSide.OnLoading</tt> property
to the "Convert" button (since this button is responsible for requesting
- the calculation).
+ the calculation).
</p>
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code13">
&lt;com:TActiveButton Text="Convert" OnClick="convert_clicked" &gt;
@@ -380,7 +379,7 @@ Prado::using('System.Web.UI.ActiveControls.*');
<p id="80080" class="block-content">We simply create a CSS file named "common.css" and save it in the
<tt>themes/Basic</tt> directory. Then we add the following code
- to the beginning of "Home.page" (we add a little more HTML as well).
+ to the beginning of "Home.page" (we add a little more HTML as well).
</p>
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code14">
&lt;%@ Theme="Basic" %&gt;
@@ -389,7 +388,7 @@ Prado::using('System.Web.UI.ActiveControls.*');
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
&lt;com:THead Title="Currency Converter" /&gt;
<body>
-</com:TTextHighlighter>
+</com:TTextHighlighter>
<p id="4334" class="block-content">
The first line <tt>&lt;%@ Theme="Basic" %&gt;</tt> defines the
theme to be used for this page. The
diff --git a/demos/quickstart/protected/pages/Tutorial/id/AjaxChat.page b/demos/quickstart/protected/pages/Tutorial/id/AjaxChat.page
index 00222bca..50759868 100755
--- a/demos/quickstart/protected/pages/Tutorial/id/AjaxChat.page
+++ b/demos/quickstart/protected/pages/Tutorial/id/AjaxChat.page
@@ -55,7 +55,6 @@ php prado/framework/prado-cli.php -c chat
class Login extends TPage
{
}
-?&gt;
</com:TTextHighlighter>
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code_90029">
<!doctype html public "-//W3C//DTD XHTML 1.0 Strict//EN"
diff --git a/demos/quickstart/protected/pages/Tutorial/id/CurrencyConverter.page b/demos/quickstart/protected/pages/Tutorial/id/CurrencyConverter.page
index d8f8e2b4..c1eae035 100755
--- a/demos/quickstart/protected/pages/Tutorial/id/CurrencyConverter.page
+++ b/demos/quickstart/protected/pages/Tutorial/id/CurrencyConverter.page
@@ -1,8 +1,8 @@
<com:TContent ID="body">
<h1 id="16001">Membangun Pengubah Kurs Sederhana</h1>
<p id="80053" class="block-content">Tutorial ini memperkenalkan kerangka kerja aplikasi web Prado dan mengajarkan Anda bagaimana untuk
- membangun aplikasi web sederhana dalam beberapa langkah sederhana. Tutorial
- ini menganggap bahwa Anda terbiasa dengan PHP dan Anda telah mengakses
+ membangun aplikasi web sederhana dalam beberapa langkah sederhana. Tutorial
+ ini menganggap bahwa Anda terbiasa dengan PHP dan Anda telah mengakses
server web yang dapat melayani naskah PHP5.
</p>
@@ -25,9 +25,9 @@
<p id="80056" class="block-content">Cara tercepat dan termudah untuk membuat aplikasi web Prado baru adalah menggunakan piranti perintah <tt>prado-cli.php</tt> yang ditemukan dalam direktori <tt>framework</tt>
pada distribusi Prado. Kita membuat aplikasi baru dengan menjalankan perintah berikut dalam prompt perintah atau konsol Anda. Perintah membuat direktori baru bernama <tt>currency-converter</tt> dalam direktori kerja Anda saat ini.
Anda perlu mengubahnya ke direktori yang benar terlebih dahulu.
- Lihat <a href="?page=GettingStarted.CommandLine">Piranti Baris Perintah</a>
- untuk lebih jelasnya.
- </p>
+ Lihat <a href="?page=GettingStarted.CommandLine">Piranti Baris Perintah</a>
+ untuk lebih jelasnya.
+ </p>
<com:TTextHighlighter Language="text" CssClass="source block-content" id="code111">
php prado/framework/prado-cli.php -c currency-converter
</com:TTextHighlighter>
@@ -39,7 +39,7 @@ php prado/framework/prado-cli.php -c currency-converter
<h1 id="16003">Membuat Antarmuka Pengguna Pengubah Kurs</h1>
<p id="80058" class="block-content">Kita mulai dengan mengedit file <tt>Home.page</tt> yang ditemukan dalam direktori <tt>currency-converter/protected/pages/</tt>. File yang berakhiran dengan ".page" adalah template halaman yang berisi HTML dan kontrol Prado.
- Kita cukup menambah dua kotak teks, tiga label dan satu tombol seperti berikut.
+ Kita cukup menambah dua kotak teks, tiga label dan satu tombol seperti berikut.
</p>
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="form1">
&lt;com:TForm&gt;
@@ -62,7 +62,7 @@ php prado/framework/prado-cli.php -c currency-converter
</div>
</fieldset>
&lt;/com:TForm&gt;
-</com:TTextHighlighter>
+</com:TTextHighlighter>
<p id="refresh" class="block-content">
Jika Anda menyegarkan halaman, Anda akan melihat sesuatu mirip dengan gambar berikut.
Ia mungkin terlihat tidak cukup bagus atau berurut, tapi kita akan mengubahnya nanti dengan menggunakan CSS.
@@ -82,7 +82,7 @@ php prado/framework/prado-cli.php -c currency-converter
<com:DocLink ClassPath="System.Web.UI.WebControls.TTextBox" Text="TTextBox" />
yang pada dasarnya mendefinisikan sebuah label dan kotak teks bagi pengguna aplikasi
untuk memasukan nilai pertukaran kurs.
- Nilai properti <tt>ForControl</tt> property menentukan komponen mana label
+ Nilai properti <tt>ForControl</tt> property menentukan komponen mana label
diperuntukan. Ini membolehkan pengguna aplikasi mengklik pada label
untuk memfokuskan pada field (hal yang baik). Anda mungkin telah menggunakan elemen
biasa HTML <tt>&lt;label&gt;</tt> untuk melakukan hal yang sama, tapi
@@ -109,7 +109,7 @@ php prado/framework/prado-cli.php -c currency-converter
<p id="80063" class="block-content">Jika Anda mencoba mengklik pada tombol "Convert" kemudian halaman akan menyegarkan
dan tidak melakukan apapun. Agar tombol melakukan beberapa pekerjaan, kita perlu
menambahkan "Home.php" ke di mana "Home.page" berada. Kelas <tt>Home</tt> harus
- memperluas <com:DocLink ClassPath="System.Web.UI.TPage" Text="TPage" />, basis kelas standar untuk semua halaman Prado.
+ memperluas <com:DocLink ClassPath="System.Web.UI.TPage" Text="TPage" />, basis kelas standar untuk semua halaman Prado.
</p>
<com:TTextHighlighter Language="php" CssClass="source block-content" id="code3">
&lt;?php
@@ -117,8 +117,7 @@ class Home extends TPage
{
}
-?&gt;
-</com:TTextHighlighter>
+</com:TTextHighlighter>
<p id="1111" class="block-content">
Prado menggunakan metode PHP <tt>__autoload</tt> untuk mengambil kelas. Konvensi
adalah untuk menggunakan nama kelas dengan ekstensi ".php" sebagai nama file.
@@ -134,14 +133,14 @@ class Home extends TPage
nilai dalam kotak teks, melakukan beberapa perhitungan dan menyajikan kepada pengguna dengan
total nilai yang dikonversi. Untuk menangani pengguna mengklik pada tombo "Convert",
kita cukup menambahkan sebuah properti <tt>OnClick</tt> ke tombol "Convert" dalam
- template "Home.page" dan menambahkan metode pengendali event terkait dalam "Home.php".
+ template "Home.page" dan menambahkan metode pengendali event terkait dalam "Home.php".
</p>
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code4">
&lt;com:TButton Text="Convert" OnClick="convert_clicked" /&gt;
</com:TTextHighlighter>
- <p id="222" class="block-content">
+ <p id="222" class="block-content">
Nilai dari <tt>OnClick</tt>, "<tt>convert_clicked</tt>", akan menjadi nama metode
- dalam "Home.php" yang akan dipanggil saat pengguna mengklik tombol "Convert".
+ dalam "Home.php" yang akan dipanggil saat pengguna mengklik tombol "Convert".
</p>
<com:TTextHighlighter Language="php" CssClass="source block-content" id="code5">
class Home extends TPage
@@ -153,8 +152,8 @@ class Home extends TPage
$this->total->Text = $rate * $dollars;
}
}
-</com:TTextHighlighter>
-<div id="3332" class="block-content">
+</com:TTextHighlighter>
+<div id="3332" class="block-content">
<p id="333">
Jika Anda menjalankan aplikasi dalam web browser Anda, masukkan beberapa nilai
dan klik tombol "Convert" kemudian Anda akan melihat nilai yang dihitung ditampilkan
@@ -168,24 +167,24 @@ class Home extends TPage
</p>
<p id="80067">Sekarang kita akan memeriksa, tiga baris yang mengimplementasikan konversi
- kurs sederhana dalam metode "<tt>convert_clicked</tt>".
- </p>
+ kurs sederhana dalam metode "<tt>convert_clicked</tt>".
+ </p>
</div>
<com:TTextHighlighter Language="php" CssClass="source block-content" id="code6" >
$rate = floatval($this->currencyRate->Text);
-</com:TTextHighlighter>
+</com:TTextHighlighter>
<p id="444" class="block-content">
Pernyataan <tt>$this->currencyRate</tt> berhubungan dengan komponen
<tt>TTextBox</tt> dengan nilai <tt>ID</tt> "currencyRate" dalam template
"Home.page". Properti <tt>Text</tt> dari <tt>TTextBox</tt> berisi
nilai yang dimasukan oleh pengguna. Maka kita memperoleh nilai ini dengan
<tt>$this->currencyRate->Text</tt> yang kita konversi nilainya ke nilai
- pecahan.
+ pecahan.
</p>
<com:TTextHighlighter Language="php" CssClass="source block-content" id="code7">
$dollars = floatval($this->dollars->Text);
-</com:TTextHighlighter>
-<div id="5551" class="block-content">
+</com:TTextHighlighter>
+<div id="5551" class="block-content">
<p id="555">
Baris berikutnya melakukan hal yang mirip, ia mengambil nilai pengguna
dari <tt>TTextBox</tt> dengan nilai <tt>ID</tt> "dollars dang mengubahnya
@@ -194,9 +193,9 @@ $dollars = floatval($this->dollars->Text);
<p id="80068">Baris ketiga menghitung jumlah baru dan menyetel nilai ini dalam properti
<tt>Text</tt> dari <tt>TLabel</tt> dengan <tt>ID="total"</tt>.
- Selanjutnya, kita tampilkan jumlah baru ke pengguna dalam label.
+ Selanjutnya, kita tampilkan jumlah baru ke pengguna dalam label.
</p>
-</div>
+</div>
<com:TTextHighlighter Language="php" CssClass="source block-content" id="code8">
$this->total->Text = $rate * $dollars;
</com:TTextHighlighter>
@@ -210,11 +209,11 @@ $this->total->Text = $rate * $dollars;
<li>pengguna memasukan sebuah nilai,</li>
<li>kurs mata uang adalah angka yang benar,</li>
<li>kurs mata uang adalah positif.</li>
- </ol>
+ </ol>
<p id="666" class="block-content">
Untuk memastikan poin 1 kita menambahkan satu
<com:DocLink ClassPath="System.Web.UI.WebControls.TRequiredFieldValidator" Text="TRequiredFieldValidator" />. Untuk memastikan poin 2 dan 3, kita menambahkan satu <com:DocLink ClassPath="System.Web.UI.WebControls.TCompareValidator" Text="TCompareValidator" />. Kita dapat menambahkan validator ini di mana saja di dalam template "Home.page". Perincian selanjutnya mengenai validator ini dan validator lainnya dapat ditemukan dalam halaman
- <a href="?page=Controls.Validation">Validation Controls</a>.
+ <a href="?page=Controls.Validation">Validation Controls</a>.
</p>
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code9">
&lt;com:TRequiredFieldValidator
@@ -232,11 +231,11 @@ $this->total->Text = $rate * $dollars;
<ol id="o222" class="block-content">
<li>pengguna memasukan sebuah nilai,</li>
<li>nilai adalah angka yang benar (tidak menyertakan tanda kurs atau dolar).</li>
- </ol>
+ </ol>
<p id="777" class="block-content">
Untuk memastikan 1 kita cukup menambahkan <tt>TRequiredFieldValidator</tt> lainnya, untuk 2
kita dapat menggunakan
- <com:DocLink ClassPath="System.Web.UI.WebControls.TDataTypeValidator" Text="TDataTypeValidator" />. Untuk memudahkan kita hanya membolehkan pengguna untuk memasukan sebuah angka untuk jumlah yang ingin mereka ubah.
+ <com:DocLink ClassPath="System.Web.UI.WebControls.TDataTypeValidator" Text="TDataTypeValidator" />. Untuk memudahkan kita hanya membolehkan pengguna untuk memasukan sebuah angka untuk jumlah yang ingin mereka ubah.
</p>
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code9a">
&lt;com:TRequiredFieldValidator
@@ -249,8 +248,8 @@ $this->total->Text = $rate * $dollars;
</com:TTextHighlighter>
</p>
- <p id="80072" class="block-content">Sekarang jika Anda mencoba memasukan beberapa data tidak benar dalam aplikasi atau membiarkan field kosong
- validators akan diaktifkan dan menyajikan pesan kesalahan kepada pengguna. Catatan bahwa pesan kesalahan disajikan tanpa mengambil ulang halaman. Validator Prado standarnya memvalidasi javascript dan di dalam server. Validasi di dalam server <b>selalu dilakukan</b>. Untuk sisi server, kita harus melewati perhitungan jika validator tidak memuaskan. Ini dapat dilakukan seperti berikut.
+ <p id="80072" class="block-content">Sekarang jika Anda mencoba memasukan beberapa data tidak benar dalam aplikasi atau membiarkan field kosong
+ validators akan diaktifkan dan menyajikan pesan kesalahan kepada pengguna. Catatan bahwa pesan kesalahan disajikan tanpa mengambil ulang halaman. Validator Prado standarnya memvalidasi javascript dan di dalam server. Validasi di dalam server <b>selalu dilakukan</b>. Untuk sisi server, kita harus melewati perhitungan jika validator tidak memuaskan. Ini dapat dilakukan seperti berikut.
</p>
<com:TTextHighlighter Language="php" CssClass="source block-content" id="code10" >
public function convert_clicked($sender, $param)
@@ -276,7 +275,7 @@ memperbaiki pengalaman pengguna dengan meningkatkan tanggapan aplikasi. Satu car
<com:DocLink ClassPath="System.Web.UI.ActiveControls.TActiveButton" Text="TActiveButton" />,
yang dapat memicu event klik di dalam server tanpa mengambil ulang halaman.
Sebagai tambahan, kita dapat mengubah "total" <tt>TLabel</tt> dengan pasangan Kontrol Aktif,
- <com:DocLink ClassPath="System.Web.UI.ActiveControls.TActiveLabel" Text="TActiveLabel" />, dengan demikian di dalam server dapat memutakhirkan browser tanpa mengambil ulang halaman.
+ <com:DocLink ClassPath="System.Web.UI.ActiveControls.TActiveLabel" Text="TActiveLabel" />, dengan demikian di dalam server dapat memutakhirkan browser tanpa mengambil ulang halaman.
</p>
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code11">
<div class="total-field">
@@ -286,10 +285,10 @@ memperbaiki pengalaman pengguna dengan meningkatkan tanggapan aplikasi. Satu car
<div class="convert-button">
&lt;com:TActiveButton Text="Convert" OnClick="convert_clicked" /&gt;
</div>
-</com:TTextHighlighter>
+</com:TTextHighlighter>
<p id="1232" class="block-content">
Logika di dalam server tetap sama, kita hanya perlu mengimpor
- ruang nama Kontrol Aktif karena secara standar tidak disertakan. Kita menambahkan baris berikut ke awal "Home.php".
+ ruang nama Kontrol Aktif karena secara standar tidak disertakan. Kita menambahkan baris berikut ke awal "Home.php".
</p>
<com:TTextHighlighter Language="php" CssClass="source block-content" id="code12">
Prado::using('System.Web.UI.ActiveControls.*');
@@ -300,7 +299,7 @@ Prado::using('System.Web.UI.ActiveControls.*');
Selanjutnya kita bisa memperbaiki pengalaman pengguna dengan mengunah label teks "total" menjadi "calculating..." saat pengguna mengklik tombol "Convert". Label teks "total" masih dimutakhirkan dengan jumlah perhitungan baru seperti sebelumnya.
</p>
- <p id="80076" class="block-content">Untuk mengindikasikan bahwa perhitungan sedang berlangsung, kita dapat mengubah label teks "total" sebagai berikut. Kita menambahkan properti <tt>ClientSide.OnLoading</tt> ke tombol "Convert" (karena tombol ini bertanggung jawab terhadap permintaan perhitungan).
+ <p id="80076" class="block-content">Untuk mengindikasikan bahwa perhitungan sedang berlangsung, kita dapat mengubah label teks "total" sebagai berikut. Kita menambahkan properti <tt>ClientSide.OnLoading</tt> ke tombol "Convert" (karena tombol ini bertanggung jawab terhadap permintaan perhitungan).
</p>
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code13">
&lt;com:TActiveButton Text="Convert" OnClick="convert_clicked" &gt;
@@ -325,7 +324,7 @@ Prado::using('System.Web.UI.ActiveControls.*');
</p>
<p id="80080" class="block-content">Kita cukup dengan membuat file CSS bernama "common.css" dan menyimpannya dalam direktori
- <tt>themes/Basic</tt>. Kemudian kita menambahkan kode berikut ke awal "Home.page" (kita menambahkan sedikit kode HTML juga).
+ <tt>themes/Basic</tt>. Kemudian kita menambahkan kode berikut ke awal "Home.page" (kita menambahkan sedikit kode HTML juga).
</p>
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code14">
&lt;%@ Theme="Basic" %&gt;
@@ -334,10 +333,10 @@ Prado::using('System.Web.UI.ActiveControls.*');
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
&lt;com:THead Title="Currency Converter" /&gt;
<body>
-</com:TTextHighlighter>
+</com:TTextHighlighter>
<p id="4334" class="block-content">
Baris pertama <tt>&lt;%@ Theme="Basic" %&gt;</tt> mendefinisikan tema
- yang dipakai untuk halaman ini.
+ yang dipakai untuk halaman ini.
<com:DocLink ClassPath="System.Web.UI.WebControls.THead" Text="THead" />
merujuk ke elemen HTML <tt>&lt;head&gt;</tt>. Sebagai tambahan terhadap
tampilan properti <tt>Title</tt> pada <tt>THead</tt>, semua file CSS
diff --git a/demos/sqlmap/protected/pages/Manual/Tutorial/TestFirst.page b/demos/sqlmap/protected/pages/Manual/Tutorial/TestFirst.page
index 80a155cb..55d55c31 100755
--- a/demos/sqlmap/protected/pages/Manual/Tutorial/TestFirst.page
+++ b/demos/sqlmap/protected/pages/Manual/Tutorial/TestFirst.page
@@ -46,7 +46,6 @@ class PersonTest extends UnitTestCase
$this->assertNotNull($person, "Person not returned");
}
}
-?&gt;
</com:TTextHighlighter>
<p>Well, the example sure looks easy enough! We ask a method to "select all", and
@@ -54,7 +53,7 @@ it returns a list of person objects. But, what code do we need to write to
pass this test?</p>
<div class="note"><b class="tip">Note:</b>
- Save the <tt>PersonTest.php</tt> into a <tt>tests</tt> directory.
+ Save the <tt>PersonTest.php</tt> into a <tt>tests</tt> directory.
The unit tests are written for the <a href="http://simpletest.sf.net">SimpleTest Unit Testing framework</a>.
</div>
@@ -74,7 +73,6 @@ error_reporting(E_ALL);
$test = new GroupTest('All tests');
$test->addTestFile('Tests/PersonTest.php'); $test->run(new HtmlReporter());
-?&gt;
</com:TTextHighlighter>
<p>To run the tests, point your browser to the "<tt>run_test.php</tt>" script file
@@ -108,7 +106,6 @@ class Person
$this->_birthDate = $value;
}
}
-?&gt;
</com:TTextHighlighter>
<p>OK, that was fun! The <tt>$this->assertXXX(...)</tt> methods are built into
@@ -125,7 +122,7 @@ method executes our SQL statement (or stored procedure) and returns the result
as a list. Each row in the result becomes an entry in the list. Along with
<tt>queryForList()</tt>, there are also <tt>delete()</tt>, <tt>insert()</tt>,
<tt>queryForObject()</tt>, <tt>queryForPagedList()</tt> and a few other methods in the
-<a href="?page=Manual.DataMapperAPI">SQLMap API</a>.
+<a href="?page=Manual.DataMapperAPI">SQLMap API</a>.
<p>Looking at unit test example, we see that the <tt>queryForList()</tt> method
takes the name of the statement we want to run. OK. Easy enough. But where
diff --git a/demos/sqlmap/protected/pages/Manual/Tutorial/TestSecond.page b/demos/sqlmap/protected/pages/Manual/Tutorial/TestSecond.page
index 706b5220..b128c413 100755
--- a/demos/sqlmap/protected/pages/Manual/Tutorial/TestSecond.page
+++ b/demos/sqlmap/protected/pages/Manual/Tutorial/TestSecond.page
@@ -58,7 +58,6 @@ error_reporting(E_ALL);
require_once('/path/to/prado/framework/prado.php');
$application=new TApplication;
$application->run();
-?>
</com:TTextHighlighter>
<p>Now we are ready to setup a page to display our list of people.
@@ -106,7 +105,6 @@ class Home extends TPage
$this->loadData();
}
}
-?&gt;
</com:TTextHighlighter>
<p>If we run this now, we'll get a list like the one shown the figure below.</p>
diff --git a/demos/time-tracker/protected/App_Code/Dao/BaseDao.php b/demos/time-tracker/protected/App_Code/Dao/BaseDao.php
index b37fb5df..571a9d1a 100755
--- a/demos/time-tracker/protected/App_Code/Dao/BaseDao.php
+++ b/demos/time-tracker/protected/App_Code/Dao/BaseDao.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2005-2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: BaseDao.php 3189 2012-07-12 12:16:21Z ctrlaltca $
* @package Demos
*/
@@ -14,7 +13,6 @@
* Base DAO class.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: BaseDao.php 3189 2012-07-12 12:16:21Z ctrlaltca $
* @package Demos
* @since 3.1
*/
diff --git a/demos/time-tracker/protected/App_Code/Dao/ProjectDao.php b/demos/time-tracker/protected/App_Code/Dao/ProjectDao.php
index dbaf0e80..0110ae5e 100755
--- a/demos/time-tracker/protected/App_Code/Dao/ProjectDao.php
+++ b/demos/time-tracker/protected/App_Code/Dao/ProjectDao.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2005-2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: ProjectDao.php 3189 2012-07-12 12:16:21Z ctrlaltca $
* @package Demos
*/
@@ -14,7 +13,6 @@
* Project DAO class.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: ProjectDao.php 3189 2012-07-12 12:16:21Z ctrlaltca $
* @package Demos
* @since 3.1
*/
diff --git a/demos/time-tracker/protected/App_Code/Dao/ProjectRecord.php b/demos/time-tracker/protected/App_Code/Dao/ProjectRecord.php
index 631b1f8c..c02a78a5 100755
--- a/demos/time-tracker/protected/App_Code/Dao/ProjectRecord.php
+++ b/demos/time-tracker/protected/App_Code/Dao/ProjectRecord.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2005-2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: ProjectRecord.php 3189 2012-07-12 12:16:21Z ctrlaltca $
* @package Demos
*/
@@ -14,7 +13,6 @@
* Time Tracker Project class.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: ProjectRecord.php 3189 2012-07-12 12:16:21Z ctrlaltca $
* @package Demos
* @since 3.1
*/
diff --git a/demos/time-tracker/protected/App_Code/Dao/UserDao.php b/demos/time-tracker/protected/App_Code/Dao/UserDao.php
index 495da072..51d04c58 100755
--- a/demos/time-tracker/protected/App_Code/Dao/UserDao.php
+++ b/demos/time-tracker/protected/App_Code/Dao/UserDao.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2005-2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: UserDao.php 3189 2012-07-12 12:16:21Z ctrlaltca $
* @package Demos
*/
@@ -17,7 +16,6 @@
* this token can be used to perform persistent cookie login.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: UserDao.php 3189 2012-07-12 12:16:21Z ctrlaltca $
* @package Demos
* @since 3.1
*/
diff --git a/demos/time-tracker/protected/App_Code/DaoManager.php b/demos/time-tracker/protected/App_Code/DaoManager.php
index 9602ced0..90655ac8 100755
--- a/demos/time-tracker/protected/App_Code/DaoManager.php
+++ b/demos/time-tracker/protected/App_Code/DaoManager.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2005-2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: DaoManager.php 3189 2012-07-12 12:16:21Z ctrlaltca $
* @package Demos
*/
@@ -18,7 +17,6 @@ Prado::using('System.Data.SqlMap.TSqlMapConfig');
* A Registry for Dao and an implementation of that type.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: DaoManager.php 3189 2012-07-12 12:16:21Z ctrlaltca $
* @package Demos
* @since 3.1
*/
diff --git a/demos/time-tracker/protected/App_Code/TimeTrackerException.php b/demos/time-tracker/protected/App_Code/TimeTrackerException.php
index 424c7d30..87398952 100755
--- a/demos/time-tracker/protected/App_Code/TimeTrackerException.php
+++ b/demos/time-tracker/protected/App_Code/TimeTrackerException.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2005-2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TimeTrackerException.php 3189 2012-07-12 12:16:21Z ctrlaltca $
* @package Demos
*/
@@ -15,7 +14,6 @@
* "exceptions.txt"
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TimeTrackerException.php 3189 2012-07-12 12:16:21Z ctrlaltca $
* @package Demos
* @since 3.1
*/
@@ -27,6 +25,6 @@ class TimeTrackerException extends TException
protected function getErrorMessageFile()
{
return dirname(__FILE__).'/exceptions.txt';
- }
+ }
}
diff --git a/demos/time-tracker/protected/App_Code/TimeTrackerUser.php b/demos/time-tracker/protected/App_Code/TimeTrackerUser.php
index da98e786..5215b31c 100755
--- a/demos/time-tracker/protected/App_Code/TimeTrackerUser.php
+++ b/demos/time-tracker/protected/App_Code/TimeTrackerUser.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2005-2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TimeTrackerUser.php 3189 2012-07-12 12:16:21Z ctrlaltca $
* @package Demos
*/
@@ -20,14 +19,13 @@ Prado::using('System.Security.TUserManager');
* User class for Time Tracker application.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TimeTrackerUser.php 3189 2012-07-12 12:16:21Z ctrlaltca $
* @package Demos
* @since 3.1
*/
class TimeTrackerUser extends TUser
{
private $_emailAddress;
-
+
/**
* @param string user email address
*/
@@ -35,7 +33,7 @@ class TimeTrackerUser extends TUser
{
$this->_emailAddress = $value;
}
-
+
/**
* @return string user email address
*/
diff --git a/demos/time-tracker/protected/App_Code/TrackerAuthManager.php b/demos/time-tracker/protected/App_Code/TrackerAuthManager.php
index 48962167..08daae3f 100755
--- a/demos/time-tracker/protected/App_Code/TrackerAuthManager.php
+++ b/demos/time-tracker/protected/App_Code/TrackerAuthManager.php
@@ -4,7 +4,6 @@
* a string token saved in the cookie.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TrackerAuthManager.php 3189 2012-07-12 12:16:21Z ctrlaltca $
* @package Demos
* @since 3.1
*/
@@ -14,24 +13,24 @@ class TrackerAuthManager extends TAuthManager
* @const string signon token cookie name.
*/
const SignonCookieName = 'time-tracker-signon';
-
+
/**
* Performs the real authentication work. Overrides and calls parent
- * implementation. Trys to authenticate using token saved in cookie.
+ * implementation. Trys to authenticate using token saved in cookie.
* @param mixed parameter to be passed to OnAuthenticate event
*/
public function onAuthenticate($param)
{
parent::onAuthenticate($param);
- $currentUser = $this->Application->User;
+ $currentUser = $this->Application->User;
if(!$currentUser || $currentUser->IsGuest)
$this->authenticateFromCookie($param);
}
-
+
/**
* If the user is not set or is still a guest, try to authenticate the user
* using a string token saved in the cookie if any.
- * @param mixed parameter to be passed to OnAuthenticate event
+ * @param mixed parameter to be passed to OnAuthenticate event
*/
protected function authenticateFromCookie($param)
{
@@ -45,7 +44,7 @@ class TrackerAuthManager extends TAuthManager
$this->updateCredential($user);
}
}
-
+
/**
* Changes the user credentials.
* @param TUser new user details.
@@ -54,9 +53,9 @@ class TrackerAuthManager extends TAuthManager
{
$user->IsGuest = false;
$this->updateSessionUser($user);
- $this->Application->User = $user;
+ $this->Application->User = $user;
}
-
+
/**
* Generate a token to be saved in the cookie for later authentication.
* @param TimeTrackerUser user details.
@@ -70,7 +69,7 @@ class TrackerAuthManager extends TAuthManager
$cookie->Expire = strtotime('+1 month');
$this->Response->Cookies[] = $cookie;
}
-
+
/**
* Logs out the user and delete the token from cookie.
*/
diff --git a/demos/time-tracker/protected/App_Code/UserManager.php b/demos/time-tracker/protected/App_Code/UserManager.php
index 20b34d47..eabbe315 100755
--- a/demos/time-tracker/protected/App_Code/UserManager.php
+++ b/demos/time-tracker/protected/App_Code/UserManager.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2005-2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: UserManager.php 3189 2012-07-12 12:16:21Z ctrlaltca $
* @package Demos
*/
@@ -14,7 +13,6 @@
* User manager module class for time tracker application.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: UserManager.php 3189 2012-07-12 12:16:21Z ctrlaltca $
* @package Demos
* @since 3.1
*/
diff --git a/demos/time-tracker/protected/App_Data/TimeTrackerUserTypeHandler.php b/demos/time-tracker/protected/App_Data/TimeTrackerUserTypeHandler.php
index 3a67afb0..12a8a23e 100755
--- a/demos/time-tracker/protected/App_Data/TimeTrackerUserTypeHandler.php
+++ b/demos/time-tracker/protected/App_Data/TimeTrackerUserTypeHandler.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2005-2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TimeTrackerUserTypeHandler.php 3189 2012-07-12 12:16:21Z ctrlaltca $
* @package Demos
*/
@@ -15,7 +14,6 @@
* The TimeTrackerUser requires an instance of IUserManager in constructor.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TimeTrackerUserTypeHandler.php 3189 2012-07-12 12:16:21Z ctrlaltca $
* @package Demos
* @since 3.1
*/
diff --git a/demos/time-tracker/protected/pages/TimeTracker/Login.php b/demos/time-tracker/protected/pages/TimeTracker/Login.php
index 941cb4b7..8de63ad8 100755
--- a/demos/time-tracker/protected/pages/TimeTracker/Login.php
+++ b/demos/time-tracker/protected/pages/TimeTracker/Login.php
@@ -6,18 +6,16 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2005-2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: Login.php 3189 2012-07-12 12:16:21Z ctrlaltca $
* @package Demos
*/
/**
* Login page class.
- *
- * Validate the user credentials and redirect to requested page
+ *
+ * Validate the user credentials and redirect to requested page
* if successful.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: Login.php 3189 2012-07-12 12:16:21Z ctrlaltca $
* @package Demos
* @since 3.1
*/
@@ -26,7 +24,7 @@ class Login extends TPage
/**
* Validates the username and password.
* @param TControl custom validator that created the event.
- * @param TServerValidateEventParameter validation parameters.
+ * @param TServerValidateEventParameter validation parameters.
*/
public function validateUser($sender, $param)
{
@@ -34,7 +32,7 @@ class Login extends TPage
if(!$authManager->login($this->username->Text,$this->password->Text))
$param->IsValid=false;;
}
-
+
/**
* Redirect to the requested page if login is successful.
* @param TControl button control that created the event.
diff --git a/demos/time-tracker/protected/pages/TimeTracker/Logout.php b/demos/time-tracker/protected/pages/TimeTracker/Logout.php
index 9f4de556..bab924f2 100755
--- a/demos/time-tracker/protected/pages/TimeTracker/Logout.php
+++ b/demos/time-tracker/protected/pages/TimeTracker/Logout.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2005-2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: Logout.php 3189 2012-07-12 12:16:21Z ctrlaltca $
* @package Demos
*/
@@ -14,7 +13,6 @@
* Logout page class.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: Logout.php 3189 2012-07-12 12:16:21Z ctrlaltca $
* @package Demos
* @since 3.1
*/
@@ -27,7 +25,7 @@ class Logout extends TPage
{
$this->Application->getModule('auth')->logout();
$url = $this->Service->constructUrl($this->Service->DefaultPage);
- $this->Response->redirect($url);
+ $this->Response->redirect($url);
}
}
diff --git a/demos/time-tracker/protected/pages/TimeTracker/SiteMap.php b/demos/time-tracker/protected/pages/TimeTracker/SiteMap.php
index 51df0583..ab612baf 100755
--- a/demos/time-tracker/protected/pages/TimeTracker/SiteMap.php
+++ b/demos/time-tracker/protected/pages/TimeTracker/SiteMap.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2005-2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: SiteMap.php 3189 2012-07-12 12:16:21Z ctrlaltca $
* @package Demos
*/
@@ -14,7 +13,6 @@
* SiteMap menu is rendered depending on user roles.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: SiteMap.php 3189 2012-07-12 12:16:21Z ctrlaltca $
* @package Demos
* @since 3.1
*/
@@ -26,7 +24,7 @@ class SiteMap extends TTemplateControl
public function onPreRender($param)
{
parent::onPreRender($param);
-
+
$page = explode('.',$this->Request->ServiceParameter);
$active = null;
switch($page[count($page)-1])
@@ -47,7 +45,7 @@ class SiteMap extends TTemplateControl
$active = $this->LogMenu;
break;
}
-
+
//add 'active' string to place holder body.
if(!is_null($active))
$active->Controls[] = 'active';
diff --git a/demos/time-tracker/protected/pages/TimeTracker/UserCreate.php b/demos/time-tracker/protected/pages/TimeTracker/UserCreate.php
index 2c73752a..34e69713 100755
--- a/demos/time-tracker/protected/pages/TimeTracker/UserCreate.php
+++ b/demos/time-tracker/protected/pages/TimeTracker/UserCreate.php
@@ -6,18 +6,16 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2005-2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: UserCreate.php 3189 2012-07-12 12:16:21Z ctrlaltca $
* @package Demos
*/
/**
* Create new user wizard page class. Validate that the usernames are unique and
* set the new user credentials as the current application credentials.
- *
+ *
* If logged in as admin, the user role can be change during creation.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: UserCreate.php 3189 2012-07-12 12:16:21Z ctrlaltca $
* @package Demos
* @since 3.1
*/
@@ -30,11 +28,11 @@ class UserCreate extends TPage
{
if(!$this->IsPostBack)
{
- $this->role->SelectedValue =
+ $this->role->SelectedValue =
$this->Application->Parameters['NewUserRoles'];
}
}
-
+
/**
* Verify that the username is not taken.
* @param TControl custom validator that created the event.
@@ -46,11 +44,11 @@ class UserCreate extends TPage
if($userDao->usernameExists($this->username->Text))
{
$param->IsValid = false;
- $sender->ErrorMessage =
+ $sender->ErrorMessage =
"The user name is already taken, try '{$this->username->Text}01'";
}
}
-
+
/**
* Skip the role assignment step if not admin.
*/
@@ -66,7 +64,7 @@ class UserCreate extends TPage
}
}
}
-
+
/**
* Create a new user if all data entered are valid.
* The default user roles are obtained from "config.xml". The new user
@@ -84,11 +82,11 @@ class UserCreate extends TPage
$newUser->Name = $this->username->Text;
$newUser->IsGuest = false;
$newUser->Roles = $this->role->SelectedValue;
-
+
//save the user
$userDao = $this->Application->Modules['daos']->getDao('UserDao');
$userDao->addNewUser($newUser, $this->password->Text);
-
+
//update the user credentials if not admin
if(!$this->User->isInRole('admin'))
{
@@ -97,7 +95,7 @@ class UserCreate extends TPage
}
}
}
-
+
/**
* Continue with requested page.
*/
diff --git a/demos/time-tracker/protected/pages/TimeTracker/UserList.php b/demos/time-tracker/protected/pages/TimeTracker/UserList.php
index 9dc3ab5f..71b41add 100755
--- a/demos/time-tracker/protected/pages/TimeTracker/UserList.php
+++ b/demos/time-tracker/protected/pages/TimeTracker/UserList.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2005-2006 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: UserList.php 3189 2012-07-12 12:16:21Z ctrlaltca $
* @package Demos
*/
@@ -14,7 +13,6 @@
* List all users in a repeater.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: UserList.php 3189 2012-07-12 12:16:21Z ctrlaltca $
* @package Demos
* @since 3.1
*/
@@ -27,7 +25,7 @@ class UserList extends TPage
{
$userDao = $this->Application->Modules['daos']->getDao('UserDao');
$this->list->DataSource = $userDao->getAllUsers();
- $this->list->dataBind();
+ $this->list->dataBind();
}
}
diff --git a/framework/3rdParty/Markdown/License.text b/framework/3rdParty/Markdown/License.text
deleted file mode 100644
index ea6a6a1a..00000000
--- a/framework/3rdParty/Markdown/License.text
+++ /dev/null
@@ -1,34 +0,0 @@
-Copyright (c) 2004-2005, John Gruber
-<http://daringfireball.net/>
-All rights reserved.
-
-Copyright (c) 2004-2005, Michel Fortin
-<http://www.michelf.com/>
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-* Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
-* Neither the name "Markdown" nor the names of its contributors may
- be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-This software is provided by the copyright holders and contributors "as
-is" and any express or implied warranties, including, but not limited
-to, the implied warranties of merchantability and fitness for a
-particular purpose are disclaimed. In no event shall the copyright owner
-or contributors be liable for any direct, indirect, incidental, special,
-exemplary, or consequential damages (including, but not limited to,
-procurement of substitute goods or services; loss of use, data, or
-profits; or business interruption) however caused and on any theory of
-liability, whether in contract, strict liability, or tort (including
-negligence or otherwise) arising in any way out of the use of this
-software, even if advised of the possibility of such damage.
diff --git a/framework/3rdParty/Markdown/MarkdownParser.php b/framework/3rdParty/Markdown/MarkdownParser.php
deleted file mode 100644
index b581dcb5..00000000
--- a/framework/3rdParty/Markdown/MarkdownParser.php
+++ /dev/null
@@ -1,1256 +0,0 @@
-<?php
-
-#
-# Markdown - A text-to-HTML conversion tool for web writers
-#
-# Copyright (c) 2004-2005 John Gruber
-# <http://daringfireball.net/projects/markdown/>
-#
-# Copyright (c) 2004-2005 Michel Fortin - PHP Port
-# <http://www.michelf.com/projects/php-markdown/>
-#
-
-/**
- * PHP5 version of the markdown parser.
- * Usage:
- * <code>
- * $markdown = new MarkdownParser;
- * echo $markdown->parse($text);
- * </code>
- */
-class MarkdownParser
-{
- private static $md_nested_brackets;
- private static $md_escape_table = array();
- private static $md_backslash_escape_table = array();
- private static $md_nested_brackets_depth = 6;
-
- protected $md_empty_element_suffix = " />"; # Change to ">" for HTML output
- protected $md_tab_width = 4;
-
- private $md_list_level = 0;
- private $md_urls = array();
- private $md_titles = array();
- private $md_html_blocks = array();
-
- public function __construct()
- {
- if(is_null(self::$md_nested_brackets))
- $this->initialize();
- }
-
- private function initialize()
- {
- self::$md_nested_brackets =
- str_repeat('(?>[^\[\]]+|\[', self::$md_nested_brackets_depth).
- str_repeat('\])*', self::$md_nested_brackets_depth);
-
- self::$md_escape_table = array(
- "\\" => md5("\\"),
- "`" => md5("`"),
- "*" => md5("*"),
- "_" => md5("_"),
- "{" => md5("{"),
- "}" => md5("}"),
- "[" => md5("["),
- "]" => md5("]"),
- "(" => md5("("),
- ")" => md5(")"),
- ">" => md5(">"),
- "#" => md5("#"),
- "+" => md5("+"),
- "-" => md5("-"),
- "." => md5("."),
- "!" => md5("!")
- );
-
- # Table of hash values for escaped characters:
- # Create an identical table but for escaped characters.
- foreach (self::$md_escape_table as $key => $char)
- self::$md_backslash_escape_table["\\$key"] = $char;
- }
-
- public function parse($text)
- {
- #
- # Main function. The order in which other subs are called here is
- # essential. Link and image substitutions need to happen before
- # _EscapeSpecialCharsWithinTagAttributes(), so that any *'s or _'s in the <a>
- # and <img> tags get encoded.
- #
- # Clear the hashes. If we don't clear these, you get conflicts
- # from other articles when generating a page which contains more than
- # one article (e.g. an index page that shows the N most recent
- # articles):
- $this->md_urls = array();
- $this->md_titles = array();
- $this->md_html_blocks = array();
-
- # Standardize line endings:
- # DOS to Unix and Mac to Unix
- $text = str_replace(array("\r\n", "\r"), "\n", $text);
-
- # Make sure $text ends with a couple of newlines:
- $text .= "\n\n";
-
- # Convert all tabs to spaces.
- $text = $this->_Detab($text);
-
- # Strip any lines consisting only of spaces and tabs.
- # This makes subsequent regexen easier to write, because we can
- # match consecutive blank lines with /\n+/ instead of something
- # contorted like /[ \t]*\n+/ .
- $text = preg_replace('/^[ \t]+$/m', '', $text);
-
- # Turn block-level HTML blocks into hash entries
- $text = $this->_HashHTMLBlocks($text);
-
- # Strip link definitions, store in hashes.
- $text = $this->_StripLinkDefinitions($text);
-
- $text = $this->_RunBlockGamut($text);
-
- $text = $this->_UnescapeSpecialChars($text);
-
- return $text . "\n";
- }
-
-
- private function _StripLinkDefinitions($text) {
- #
- # Strips link definitions from text, stores the URLs and titles in
- # hash references.
- #
- $less_than_tab = $this->md_tab_width - 1;
-
- # Link defs are in the form: ^[id]: url "optional title"
- $text = preg_replace_callback('{
- ^[ ]{0,'.$less_than_tab.'}\[(.+)\]: # id = $1
- [ \t]*
- \n? # maybe *one* newline
- [ \t]*
- <?(\S+?)>? # url = $2
- [ \t]*
- \n? # maybe one newline
- [ \t]*
- (?:
- (?<=\s) # lookbehind for whitespace
- ["(]
- (.+?) # title = $3
- [")]
- [ \t]*
- )? # title is optional
- (?:\n+|\Z)
- }xm',
- array($this,'_StripLinkDefinitions_callback'),
- $text);
- return $text;
- }
-
- private function _StripLinkDefinitions_callback($matches) {
- $link_id = strtolower($matches[1]);
- $this->md_urls[$link_id] = $this->_EncodeAmpsAndAngles($matches[2]);
- if (isset($matches[3]))
- $this->md_titles[$link_id] = str_replace('"', '&quot;', $matches[3]);
- return ''; # String that will replace the block
- }
-
-
- private function _HashHTMLBlocks($text) {
- $less_than_tab = $this->md_tab_width - 1;
-
- # Hashify HTML blocks:
- # We only want to do this for block-level HTML tags, such as headers,
- # lists, and tables. That's because we still want to wrap <p>s around
- # "paragraphs" that are wrapped in non-block-level tags, such as anchors,
- # phrase emphasis, and spans. The list of tags we're looking for is
- # hard-coded:
- $block_tags_a = 'p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|'.
- 'script|noscript|form|fieldset|iframe|math|ins|del';
- $block_tags_b = 'p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|'.
- 'script|noscript|form|fieldset|iframe|math';
-
- # First, look for nested blocks, e.g.:
- # <div>
- # <div>
- # tags for inner block must be indented.
- # </div>
- # </div>
- #
- # The outermost tags must start at the left margin for this to match, and
- # the inner nested divs must be indented.
- # We need to do this before the next, more liberal match, because the next
- # match will start at the first `<div>` and stop at the first `</div>`.
- $text = preg_replace_callback("{
- ( # save in $1
- ^ # start of line (with /m)
- <($block_tags_a) # start tag = $2
- \\b # word break
- (.*\\n)*? # any number of lines, minimally matching
- </\\2> # the matching end tag
- [ \\t]* # trailing spaces/tabs
- (?=\\n+|\\Z) # followed by a newline or end of document
- )
- }xm",
- array($this,'_HashHTMLBlocks_callback'),
- $text);
-
- #
- # Now match more liberally, simply from `\n<tag>` to `</tag>\n`
- #
- $text = preg_replace_callback("{
- ( # save in $1
- ^ # start of line (with /m)
- <($block_tags_b) # start tag = $2
- \\b # word break
- (.*\\n)*? # any number of lines, minimally matching
- .*</\\2> # the matching end tag
- [ \\t]* # trailing spaces/tabs
- (?=\\n+|\\Z) # followed by a newline or end of document
- )
- }xm",
- array($this,'_HashHTMLBlocks_callback'),
- $text);
-
- # Special case just for <hr />. It was easier to make a special case than
- # to make the other regex more complicated.
- $text = preg_replace_callback('{
- (?:
- (?<=\n\n) # Starting after a blank line
- | # or
- \A\n? # the beginning of the doc
- )
- ( # save in $1
- [ ]{0,'.$less_than_tab.'}
- <(hr) # start tag = $2
- \b # word break
- ([^<>])*? #
- /?> # the matching end tag
- [ \t]*
- (?=\n{2,}|\Z) # followed by a blank line or end of document
- )
- }x',
- array($this,'_HashHTMLBlocks_callback'),
- $text);
-
- # Special case for standalone HTML comments:
- $text = preg_replace_callback('{
- (?:
- (?<=\n\n) # Starting after a blank line
- | # or
- \A\n? # the beginning of the doc
- )
- ( # save in $1
- [ ]{0,'.$less_than_tab.'}
- (?s:
- <!
- (--.*?--\s*)+
- >
- )
- [ \t]*
- (?=\n{2,}|\Z) # followed by a blank line or end of document
- )
- }x',
- array($this,'_HashHTMLBlocks_callback'),
- $text);
-
- return $text;
- }
- private function _HashHTMLBlocks_callback($matches) {
- $text = $matches[1];
- $key = md5($text);
- $this->md_html_blocks[$key] = $text;
- return "\n\n$key\n\n"; # String that will replace the block
- }
-
-
- private function _RunBlockGamut($text) {
- #
- # These are all the transformations that form block-level
- # tags like paragraphs, headers, and list items.
- #
- $text = $this->_DoHeaders($text);
-
- # Do Horizontal Rules:
- $text = preg_replace(
- array('{^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$}mx',
- '{^[ ]{0,2}([ ]? -[ ]?){3,}[ \t]*$}mx',
- '{^[ ]{0,2}([ ]? _[ ]?){3,}[ \t]*$}mx'),
- "\n<hr{$this->md_empty_element_suffix}\n",
- $text);
-
- $text = $this->_DoLists($text);
- $text = $this->_DoCodeBlocks($text);
- $text = $this->_DoBlockQuotes($text);
-
- # We already ran _HashHTMLBlocks() before, in Markdown(), but that
- # was to escape raw HTML in the original Markdown source. This time,
- # we're escaping the markup we've just created, so that we don't wrap
- # <p> tags around block-level tags.
- $text = $this->_HashHTMLBlocks($text);
- $text = $this->_FormParagraphs($text);
-
- return $text;
- }
-
-
- private function _RunSpanGamut($text) {
- #
- # These are all the transformations that occur *within* block-level
- # tags like paragraphs, headers, and list items.
- #
-
- $text = $this->_DoCodeSpans($text);
-
- $text = $this->_EscapeSpecialChars($text);
-
- # Process anchor and image tags. Images must come first,
- # because ![foo][f] looks like an anchor.
- $text = $this->_DoImages($text);
- $text = $this->_DoAnchors($text);
-
- # Make links out of things like `<http://example.com/>`
- # Must come after _DoAnchors(), because you can use < and >
- # delimiters in inline links like [this](<url>).
- $text = $this->_DoAutoLinks($text);
- $text = $this->_EncodeAmpsAndAngles($text);
- $text = $this->_DoItalicsAndBold($text);
-
- # Do hard breaks:
- $text = preg_replace('/ {2,}\n/', "<br{$this->md_empty_element_suffix}\n", $text);
-
- return $text;
- }
-
-
- private function _EscapeSpecialChars($text) {
- $tokens = $this->_TokenizeHTML($text);
-
- $text = ''; # rebuild $text from the tokens
- # $in_pre = 0; # Keep track of when we're inside <pre> or <code> tags.
- # $tags_to_skip = "!<(/?)(?:pre|code|kbd|script|math)[\s>]!";
-
- foreach ($tokens as $cur_token) {
- if ($cur_token[0] == 'tag') {
- # Within tags, encode * and _ so they don't conflict
- # with their use in Markdown for italics and strong.
- # We're replacing each such character with its
- # corresponding MD5 checksum value; this is likely
- # overkill, but it should prevent us from colliding
- # with the escape values by accident.
- $cur_token[1] = str_replace(array('*', '_'),
- array(self::$md_escape_table['*'], self::$md_escape_table['_']),
- $cur_token[1]);
- $text .= $cur_token[1];
- } else {
- $t = $cur_token[1];
- $t = $this->_EncodeBackslashEscapes($t);
- $text .= $t;
- }
- }
- return $text;
- }
-
-
- private function _DoAnchors($text) {
- #
- # Turn Markdown link shortcuts into XHTML <a> tags.
- #
- #
- # First, handle reference-style links: [link text] [id]
- #
- $bracket = self::$md_nested_brackets;
- $text = preg_replace_callback("{
- ( # wrap whole match in $1
- \\[
- ({$bracket}) # link text = $2
- \\]
-
- [ ]? # one optional space
- (?:\\n[ ]*)? # one optional newline followed by spaces
-
- \\[
- (.*?) # id = $3
- \\]
- )
- }xs",
- array($this,'_DoAnchors_reference_callback'), $text);
-
- #
- # Next, inline-style links: [link text](url "optional title")
- #
- $text = preg_replace_callback("{
- ( # wrap whole match in $1
- \\[
- ({$bracket}) # link text = $2
- \\]
- \\( # literal paren
- [ \\t]*
- <?(.*?)>? # href = $3
- [ \\t]*
- ( # $4
- (['\"]) # quote char = $5
- (.*?) # Title = $6
- \\5 # matching quote
- )? # title is optional
- \\)
- )
- }xs",
- array($this,'_DoAnchors_inline_callback'), $text);
-
- return $text;
- }
- private function _DoAnchors_reference_callback($matches) {
- $whole_match = $matches[1];
- $link_text = $matches[2];
- $link_id = strtolower($matches[3]);
-
- if ($link_id == "") {
- $link_id = strtolower($link_text); # for shortcut links like [this][].
- }
-
- if (isset($this->md_urls[$link_id])) {
- $url = $this->md_urls[$link_id];
- # We've got to encode these to avoid conflicting with italics/bold.
- $url = str_replace(array('*', '_'),
- array(self::$md_escape_table['*'], self::$md_escape_table['_']),
- $url);
- $result = "<a href=\"$url\"";
- if ( isset( $this->md_titles[$link_id] ) ) {
- $title = $this->md_titles[$link_id];
- $title = str_replace(array('*', '_'),
- array(self::$md_escape_table['*'],
- self::$md_escape_table['_']), $title);
- $result .= " title=\"$title\"";
- }
- $result .= ">$link_text</a>";
- }
- else {
- $result = $whole_match;
- }
- return $result;
- }
- private function _DoAnchors_inline_callback($matches) {
- $whole_match = $matches[1];
- $link_text = $matches[2];
- $url = $matches[3];
- $title =& $matches[6];
-
- # We've got to encode these to avoid conflicting with italics/bold.
- $url = str_replace(array('*', '_'),
- array(self::$md_escape_table['*'], self::$md_escape_table['_']),
- $url);
- $result = "<a href=\"$url\"";
- if (isset($title)) {
- $title = str_replace('"', '&quot;', $title);
- $title = str_replace(array('*', '_'),
- array(self::$md_escape_table['*'], self::$md_escape_table['_']),
- $title);
- $result .= " title=\"$title\"";
- }
-
- $result .= ">$link_text</a>";
-
- return $result;
- }
-
-
- private function _DoImages($text) {
- #
- # Turn Markdown image shortcuts into <img> tags.
- #
- #
- # First, handle reference-style labeled images: ![alt text][id]
- #
- $text = preg_replace_callback('{
- ( # wrap whole match in $1
- !\[
- ('.self::$md_nested_brackets.') # alt text = $2
- \]
-
- [ ]? # one optional space
- (?:\n[ ]*)? # one optional newline followed by spaces
-
- \[
- (.*?) # id = $3
- \]
-
- )
- }xs',
- array($this,'_DoImages_reference_callback'), $text);
-
- #
- # Next, handle inline images: ![alt text](url "optional title")
- # Don't forget: encode * and _
-
- $text = preg_replace_callback('{
- ( # wrap whole match in $1
- !\[
- ('.self::$md_nested_brackets.') # alt text = $2
- \]
- \( # literal paren
- [ \t]*
- <?(\S+?)>? # src url = $3
- [ \t]*
- ( # $4
- ([\'"]) # quote char = $5
- (.*?) # title = $6
- \5 # matching quote
- [ \t]*
- )? # title is optional
- \)
- )
- }xs',
- array($this,'_DoImages_inline_callback'), $text);
-
- return $text;
- }
- private function _DoImages_reference_callback($matches) {
- $whole_match = $matches[1];
- $alt_text = $matches[2];
- $link_id = strtolower($matches[3]);
-
- if ($link_id == "") {
- $link_id = strtolower($alt_text); # for shortcut links like ![this][].
- }
-
- $alt_text = str_replace('"', '&quot;', $alt_text);
- if (isset($this->md_urls[$link_id])) {
- $url = $this->md_urls[$link_id];
- # We've got to encode these to avoid conflicting with italics/bold.
- $url = str_replace(array('*', '_'),
- array(self::$md_escape_table['*'], self::$md_escape_table['_']),
- $url);
- $result = "<img src=\"$url\" alt=\"$alt_text\"";
- if (isset($this->md_titles[$link_id])) {
- $title = $this->md_titles[$link_id];
- $title = str_replace(array('*', '_'),
- array(self::$md_escape_table['*'],
- self::$md_escape_table['_']), $title);
- $result .= " title=\"$title\"";
- }
- $result .= $this->md_empty_element_suffix;
- }
- else {
- # If there's no such link ID, leave intact:
- $result = $whole_match;
- }
-
- return $result;
- }
- private function _DoImages_inline_callback($matches) {
- $whole_match = $matches[1];
- $alt_text = $matches[2];
- $url = $matches[3];
- $title = '';
- if (isset($matches[6])) {
- $title = $matches[6];
- }
-
- $alt_text = str_replace('"', '&quot;', $alt_text);
- $title = str_replace('"', '&quot;', $title);
- # We've got to encode these to avoid conflicting with italics/bold.
- $url = str_replace(array('*', '_'),
- array(self::$md_escape_table['*'], self::$md_escape_table['_']),
- $url);
- $result = "<img src=\"$url\" alt=\"$alt_text\"";
- if (isset($title)) {
- $title = str_replace(array('*', '_'),
- array(self::$md_escape_table['*'], self::$md_escape_table['_']),
- $title);
- $result .= " title=\"$title\""; # $title already quoted
- }
- $result .= $this->md_empty_element_suffix;
-
- return $result;
- }
-
-
- private function _DoHeaders($text) {
- # Setext-style headers:
- # Header 1
- # ========
- #
- # Header 2
- # --------
- #
- $text = preg_replace(
- array('{ ^(.+)[ \t]*\n=+[ \t]*\n+ }emx',
- '{ ^(.+)[ \t]*\n-+[ \t]*\n+ }emx'),
- array("'<h1>'.\$this->_RunSpanGamut(\$this->_UnslashQuotes('\\1')).'</h1>\n\n'",
- "'<h2>'.\$this->_RunSpanGamut(\$this->_UnslashQuotes('\\1')).'</h2>\n\n'"),
- $text);
-
- # atx-style headers:
- # # Header 1
- # ## Header 2
- # ## Header 2 with closing hashes ##
- # ...
- # ###### Header 6
- #
- $text = preg_replace("{
- ^(\\#{1,6}) # $1 = string of #'s
- [ \\t]*
- (.+?) # $2 = Header text
- [ \\t]*
- \\#* # optional closing #'s (not counted)
- \\n+
- }xme",
- "'<h'.strlen('\\1').'>'.\$this->_RunSpanGamut(\$this->_UnslashQuotes('\\2')).'</h'.strlen('\\1').'>\n\n'",
- $text);
-
- return $text;
- }
-
-
- private function _DoLists($text) {
- #
- # Form HTML ordered (numbered) and unordered (bulleted) lists.
- #
- $less_than_tab = $this->md_tab_width - 1;
-
- # Re-usable patterns to match list item bullets and number markers:
- $marker_ul = '[*+-]';
- $marker_ol = '\d+[.]';
- $marker_any = "(?:$marker_ul|$marker_ol)";
-
- $markers = array($marker_ul, $marker_ol);
-
- foreach ($markers as $marker) {
- # Re-usable pattern to match any entirel ul or ol list:
- $whole_list = '
- ( # $1 = whole list
- ( # $2
- [ ]{0,'.$less_than_tab.'}
- ('.$marker.') # $3 = first list item marker
- [ \t]+
- )
- (?s:.+?)
- ( # $4
- \z
- |
- \n{2,}
- (?=\S)
- (?! # Negative lookahead for another list item marker
- [ \t]*
- '.$marker.'[ \t]+
- )
- )
- )
- '; // mx
-
- # We use a different prefix before nested lists than top-level lists.
- # See extended comment in _ProcessListItems().
-
- if ($this->md_list_level) {
- $text = preg_replace_callback('{
- ^
- '.$whole_list.'
- }mx',
- array($this,'_DoLists_callback_top'), $text);
- }
- else {
- $text = preg_replace_callback('{
- (?:(?<=\n\n)|\A\n?)
- '.$whole_list.'
- }mx',
- array($this,'_DoLists_callback_nested'), $text);
- }
- }
-
- return $text;
- }
- private function _DoLists_callback_top($matches) {
- # Re-usable patterns to match list item bullets and number markers:
- $marker_ul = '[*+-]';
- $marker_ol = '\d+[.]';
- $marker_any = "(?:$marker_ul|$marker_ol)";
-
- $list = $matches[1];
- $list_type = preg_match("/$marker_ul/", $matches[3]) ? "ul" : "ol";
-
- $marker_any = ( $list_type == "ul" ? $marker_ul : $marker_ol );
-
- # Turn double returns into triple returns, so that we can make a
- # paragraph for the last item in a list, if necessary:
- $list = preg_replace("/\n{2,}/", "\n\n\n", $list);
- $result = $this->_ProcessListItems($list, $marker_any);
-
- # Trim any trailing whitespace, to put the closing `</$list_type>`
- # up on the preceding line, to get it past the current stupid
- # HTML block parser. This is a hack to work around the terrible
- # hack that is the HTML block parser.
- $result = rtrim($result);
- $result = "<$list_type>" . $result . "</$list_type>\n";
- return $result;
- }
- private function _DoLists_callback_nested($matches) {
- # Re-usable patterns to match list item bullets and number markers:
- $marker_ul = '[*+-]';
- $marker_ol = '\d+[.]';
- $marker_any = "(?:$marker_ul|$marker_ol)";
-
- $list = $matches[1];
- $list_type = preg_match("/$marker_ul/", $matches[3]) ? "ul" : "ol";
-
- $marker_any = ( $list_type == "ul" ? $marker_ul : $marker_ol );
-
- # Turn double returns into triple returns, so that we can make a
- # paragraph for the last item in a list, if necessary:
- $list = preg_replace("/\n{2,}/", "\n\n\n", $list);
- $result = $this->_ProcessListItems($list, $marker_any);
- $result = "<$list_type>\n" . $result . "</$list_type>\n";
- return $result;
- }
-
-
- private function _ProcessListItems($list_str, $marker_any) {
- #
- # Process the contents of a single ordered or unordered list, splitting it
- # into individual list items.
- #
-
- # The $md_list_level keeps track of when we're inside a list.
- # Each time we enter a list, we increment it; when we leave a list,
- # we decrement. If it's zero, we're not in a list anymore.
- #
- # We do this because when we're not inside a list, we want to treat
- # something like this:
- #
- # I recommend upgrading to version
- # 8. Oops, now this line is treated
- # as a sub-list.
- #
- # As a single paragraph, despite the fact that the second line starts
- # with a digit-period-space sequence.
- #
- # Whereas when we're inside a list (or sub-list), that line will be
- # treated as the start of a sub-list. What a kludge, huh? This is
- # an aspect of Markdown's syntax that's hard to parse perfectly
- # without resorting to mind-reading. Perhaps the solution is to
- # change the syntax rules such that sub-lists must start with a
- # starting cardinal number; e.g. "1." or "a.".
-
- $this->md_list_level++;
-
- # trim trailing blank lines:
- $list_str = preg_replace("/\n{2,}\\z/", "\n", $list_str);
-
- $list_str = preg_replace_callback('{
- (\n)? # leading line = $1
- (^[ \t]*) # leading whitespace = $2
- ('.$marker_any.') [ \t]+ # list marker = $3
- ((?s:.+?) # list item text = $4
- (\n{1,2}))
- (?= \n* (\z | \2 ('.$marker_any.') [ \t]+))
- }xm',
- array($this,'_ProcessListItems_callback'), $list_str);
-
- $this->md_list_level--;
- return $list_str;
- }
- private function _ProcessListItems_callback($matches) {
- $item = $matches[4];
- $leading_line =& $matches[1];
- $leading_space =& $matches[2];
-
- if ($leading_line || preg_match('/\n{2,}/', $item)) {
- $item = $this->_RunBlockGamut($this->_Outdent($item));
- }
- else {
- # Recursion for sub-lists:
- $item = $this->_DoLists($this->_Outdent($item));
- $item = preg_replace('/\n+$/', '', $item);
- $item = $this->_RunSpanGamut($item);
- }
-
- return "<li>" . $item . "</li>\n";
- }
-
-
- private function _DoCodeBlocks($text) {
- #
- # Process Markdown `<pre><code>` blocks.
- #
- $text = preg_replace_callback('{
- (?:\n\n|\A)
- ( # $1 = the code block -- one or more lines, starting with a space/tab
- (?:
- (?:[ ]{'.$this->md_tab_width.'} | \t) # Lines must start with a tab or a tab-width of spaces
- .*\n+
- )+
- )
- ((?=^[ ]{0,'.$this->md_tab_width.'}\S)|\Z) # Lookahead for non-space at line-start, or end of doc
- }xm',
- array($this,'_DoCodeBlocks_callback'), $text);
-
- return $text;
- }
- private function _DoCodeBlocks_callback($matches) {
- $codeblock = $matches[1];
-
- $codeblock = $this->_EncodeCode($this->_Outdent($codeblock));
- // $codeblock = _Detab($codeblock);
- # trim leading newlines and trailing whitespace
- $codeblock = preg_replace(array('/\A\n+/', '/\s+\z/'), '', $codeblock);
-
- $result = "\n\n<pre><code>" . $codeblock . "\n</code></pre>\n\n";
-
- return $result;
- }
-
-
- private function _DoCodeSpans($text) {
- #
- # * Backtick quotes are used for <code></code> spans.
- #
- # * You can use multiple backticks as the delimiters if you want to
- # include literal backticks in the code span. So, this input:
- #
- # Just type ``foo `bar` baz`` at the prompt.
- #
- # Will translate to:
- #
- # <p>Just type <code>foo `bar` baz</code> at the prompt.</p>
- #
- # There's no arbitrary limit to the number of backticks you
- # can use as delimters. If you need three consecutive backticks
- # in your code, use four for delimiters, etc.
- #
- # * You can use spaces to get literal backticks at the edges:
- #
- # ... type `` `bar` `` ...
- #
- # Turns to:
- #
- # ... type <code>`bar`</code> ...
- #
- $text = preg_replace_callback('@
- (?<!\\\) # Character before opening ` can\'t be a backslash
- (`+) # $1 = Opening run of `
- (.+?) # $2 = The code block
- (?<!`)
- \1 # Matching closer
- (?!`)
- @xs',
- array($this,'_DoCodeSpans_callback'), $text);
-
- return $text;
- }
- private function _DoCodeSpans_callback($matches) {
- $c = $matches[2];
- $c = preg_replace('/^[ \t]*/', '', $c); # leading whitespace
- $c = preg_replace('/[ \t]*$/', '', $c); # trailing whitespace
- $c = $this->_EncodeCode($c);
- return "<code>$c</code>";
- }
-
-
- private function _EncodeCode($_) {
- #
- # Encode/escape certain characters inside Markdown code runs.
- # The point is that in code, these characters are literals,
- # and lose their special Markdown meanings.
- #
- # Encode all ampersands; HTML entities are not
- # entities within a Markdown code span.
- $_ = str_replace('&', '&amp;', $_);
-
- # Do the angle bracket song and dance:
- $_ = str_replace(array('<', '>'),
- array('&lt;', '&gt;'), $_);
-
- # Now, escape characters that are magic in Markdown:
- $_ = str_replace(array_keys(self::$md_escape_table),
- array_values(self::$md_escape_table), $_);
-
- return $_;
- }
-
-
- private function _DoItalicsAndBold($text) {
- # <strong> must go first:
- $text = preg_replace('{
- ( # $1: Marker
- (?<!\*\*) \*\* | # (not preceded by two chars of
- (?<!__) __ # the same marker)
- )
- (?=\S) # Not followed by whitespace
- (?!\1) # or two others marker chars.
- ( # $2: Content
- (?:
- [^*_]+? # Anthing not em markers.
- |
- # Balence any regular emphasis inside.
- ([*_]) (?=\S) .+? (?<=\S) \3 # $3: em char (* or _)
- |
- (?! \1 ) . # Allow unbalenced * and _.
- )+?
- )
- (?<=\S) \1 # End mark not preceded by whitespace.
- }sx',
- '<strong>\2</strong>', $text);
- # Then <em>:
- $text = preg_replace(
- '{ ( (?<!\*)\* | (?<!_)_ ) (?=\S) (?! \1) (.+?) (?<=\S) \1 }sx',
- '<em>\2</em>', $text);
-
- return $text;
- }
-
-
- private function _DoBlockQuotes($text) {
- $text = preg_replace_callback('/
- ( # Wrap whole match in $1
- (
- ^[ \t]*>[ \t]? # ">" at the start of a line
- .+\n # rest of the first line
- (.+\n)* # subsequent consecutive lines
- \n* # blanks
- )+
- )
- /xm',
- array($this,'_DoBlockQuotes_callback'), $text);
-
- return $text;
- }
- private function _DoBlockQuotes_callback($matches) {
- $bq = $matches[1];
- # trim one level of quoting - trim whitespace-only lines
- $bq = preg_replace(array('/^[ \t]*>[ \t]?/m', '/^[ \t]+$/m'), '', $bq);
- $bq = $this->_RunBlockGamut($bq); # recurse
-
- $bq = preg_replace('/^/m', " ", $bq);
- # These leading spaces screw with <pre> content, so we need to fix that:
- $bq = preg_replace_callback('{(\s*<pre>.+?</pre>)}sx',
- array($this,'_DoBlockQuotes_callback2'), $bq);
-
- return "<blockquote>\n$bq\n</blockquote>\n\n";
- }
- private function _DoBlockQuotes_callback2($matches) {
- $pre = $matches[1];
- $pre = preg_replace('/^ /m', '', $pre);
- return $pre;
- }
-
-
- private function _FormParagraphs($text) {
- #
- # Params:
- # $text - string to process with html <p> tags
- #
- # Strip leading and trailing lines:
- $text = preg_replace(array('/\A\n+/', '/\n+\z/'), '', $text);
-
- $grafs = preg_split('/\n{2,}/', $text, -1, PREG_SPLIT_NO_EMPTY);
-
- #
- # Wrap <p> tags.
- #
- foreach ($grafs as $key => $value) {
- if (!isset( $this->md_html_blocks[$value] )) {
- $value = $this->_RunSpanGamut($value);
- $value = preg_replace('/^([ \t]*)/', '<p>', $value);
- $value .= "</p>";
- $grafs[$key] = $value;
- }
- }
-
- #
- # Unhashify HTML blocks
- #
- foreach ($grafs as $key => $value) {
- if (isset( $this->md_html_blocks[$value] )) {
- $grafs[$key] = $this->md_html_blocks[$value];
- }
- }
-
- return implode("\n\n", $grafs);
- }
-
-
- private function _EncodeAmpsAndAngles($text) {
- # Smart processing for ampersands and angle brackets that need to be encoded.
-
- # Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin:
- # http://bumppo.net/projects/amputator/
- $text = preg_replace('/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/',
- '&amp;', $text);;
-
- # Encode naked <'s
- $text = preg_replace('{<(?![a-z/?\$!])}i', '&lt;', $text);
-
- return $text;
- }
-
-
- private function _EncodeBackslashEscapes($text) {
- #
- # Parameter: String.
- # Returns: The string, with after processing the following backslash
- # escape sequences.
- #
- # Must process escaped backslashes first.
- return str_replace(array_keys(self::$md_backslash_escape_table),
- array_values(self::$md_backslash_escape_table), $text);
- }
-
-
- private function _DoAutoLinks($text) {
- $text = preg_replace("!<((https?|ftp):[^'\">\\s]+)>!",
- '<a href="\1">\1</a>', $text);
-
- # Email addresses: <address@domain.foo>
- $text = preg_replace('{
- <
- (?:mailto:)?
- (
- [-.\w]+
- \@
- [-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+
- )
- >
- }exi',
- "\$this->_EncodeEmailAddress(\$this->_UnescapeSpecialChars(\$this->_UnslashQuotes('\\1')))",
- $text);
-
- return $text;
- }
-
-
- private function _EncodeEmailAddress($addr) {
- #
- # Input: an email address, e.g. "foo@example.com"
- #
- # Output: the email address as a mailto link, with each character
- # of the address encoded as either a decimal or hex entity, in
- # the hopes of foiling most address harvesting spam bots. E.g.:
- #
- # <a href="&#x6D;&#97;&#105;&#108;&#x74;&#111;:&#102;&#111;&#111;&#64;&#101;
- # x&#x61;&#109;&#x70;&#108;&#x65;&#x2E;&#99;&#111;&#109;">&#102;&#111;&#111;
- # &#64;&#101;x&#x61;&#109;&#x70;&#108;&#x65;&#x2E;&#99;&#111;&#109;</a>
- #
- # Based by a filter by Matthew Wickline, posted to the BBEdit-Talk
- # mailing list: <http://tinyurl.com/yu7ue>
- #
- $addr = "mailto:" . $addr;
- $length = strlen($addr);
-
- # leave ':' alone (to spot mailto: later)
- $addr = preg_replace_callback('/([^\:])/',
- array($this,'_EncodeEmailAddress_callback'), $addr);
-
- $addr = "<a href=\"$addr\">$addr</a>";
- # strip the mailto: from the visible part
- $addr = preg_replace('/">.+?:/', '">', $addr);
-
- return $addr;
- }
- private function _EncodeEmailAddress_callback($matches) {
- $char = $matches[1];
- $r = rand(0, 100);
- # roughly 10% raw, 45% hex, 45% dec
- # '@' *must* be encoded. I insist.
- if ($r > 90 && $char != '@') return $char;
- if ($r < 45) return '&#x'.dechex(ord($char)).';';
- return '&#'.ord($char).';';
- }
-
-
- private function _UnescapeSpecialChars($text) {
- #
- # Swap back in all the special characters we've hidden.
- #
- return str_replace(array_values(self::$md_escape_table),
- array_keys(self::$md_escape_table), $text);
- }
-
-
- # _TokenizeHTML is shared between PHP Markdown and PHP SmartyPants.
- # We only define it if it is not already defined.
-
- private function _TokenizeHTML($str) {
- #
- # Parameter: String containing HTML markup.
- # Returns: An array of the tokens comprising the input
- # string. Each token is either a tag (possibly with nested,
- # tags contained therein, such as <a href="<MTFoo>">, or a
- # run of text between tags. Each element of the array is a
- # two-element array; the first is either 'tag' or 'text';
- # the second is the actual value.
- #
- #
- # Regular expression derived from the _tokenize() subroutine in
- # Brad Choate's MTRegex plugin.
- # <http://www.bradchoate.com/past/mtregex.php>
- #
- $index = 0;
- $tokens = array();
-
- $match = '(?s:<!(?:--.*?--\s*)+>)|'. # comment
- '(?s:<\?.*?\?>)|'. # processing instruction
- # regular tags
- '(?:<[/!$]?[-a-zA-Z0-9:]+\b(?>[^"\'>]+|"[^"]*"|\'[^\']*\')*>)';
-
- $parts = preg_split("{($match)}", $str, -1, PREG_SPLIT_DELIM_CAPTURE);
-
- foreach ($parts as $part) {
- if (++$index % 2 && $part != '')
- $tokens[] = array('text', $part);
- else
- $tokens[] = array('tag', $part);
- }
-
- return $tokens;
- }
-
- private function _Outdent($text) {
- #
- # Remove one level of line-leading tabs or spaces
- #
- return preg_replace("/^(\\t|[ ]{1,".$this->md_tab_width."})/m", "", $text);
- }
-
-
- private function _Detab($text) {
- #
- # Replace tabs with the appropriate amount of space.
- #
- # For each line we separate the line in blocks delemited by
- # tab characters. Then we reconstruct every line by adding the
- # appropriate number of space between each blocks.
-
- $lines = explode("\n", $text);
- $text = "";
-
- foreach ($lines as $line) {
- # Split in blocks.
- $blocks = explode("\t", $line);
- # Add each blocks to the line.
- $line = $blocks[0];
- unset($blocks[0]); # Do not add first block twice.
- foreach ($blocks as $block) {
- # Calculate amount of space, insert spaces, insert block.
- $amount = $this->md_tab_width - strlen($line) % $this->md_tab_width;
- $line .= str_repeat(" ", $amount) . $block;
- }
- $text .= "$line\n";
- }
- return $text;
- }
-
-
- private function _UnslashQuotes($text) {
- #
- # This function is useful to remove automaticaly slashed double quotes
- # when using preg_replace and evaluating an expression.
- # Parameter: String.
- # Returns: The string with any slash-double-quote (\") sequence replaced
- # by a single double quote.
- #
- return str_replace('\"', '"', $text);
- }
-}
-
-/*
-
-PHP Markdown
-============
-
-Description
------------
-
-This is a PHP translation of the original Markdown formatter written in
-Perl by John Gruber.
-
-Markdown is a text-to-HTML filter; it translates an easy-to-read /
-easy-to-write structured text format into HTML. Markdown's text format
-is most similar to that of plain text email, and supports features such
-as headers, *emphasis*, code blocks, blockquotes, and links.
-
-Markdown's syntax is designed not as a generic markup language, but
-specifically to serve as a front-end to (X)HTML. You can use span-level
-HTML tags anywhere in a Markdown document, and you can use block level
-HTML tags (like <div> and <table> as well).
-
-For more information about Markdown's syntax, see:
-
-<http://daringfireball.net/projects/markdown/>
-
-
-Bugs
-----
-
-To file bug reports please send email to:
-
-<michel.fortin@michelf.com>
-
-Please include with your report: (1) the example input; (2) the output you
-expected; (3) the output Markdown actually produced.
-
-
-Version History
----------------
-
-See the readme file for detailed release notes for this version.
-
-1.0.1c - 9 Dec 2005
-
-1.0.1b - 6 Jun 2005
-
-1.0.1a - 15 Apr 2005
-
-1.0.1 - 16 Dec 2004
-
-1.0 - 21 Aug 2004
-
-
-Author & Contributors
----------------------
-
-Original Perl version by John Gruber
-<http://daringfireball.net/>
-
-PHP port and other contributions by Michel Fortin
-<http://www.michelf.com/>
-
-
-Copyright and License
----------------------
-
-Copyright (c) 2004-2005 Michel Fortin
-<http://www.michelf.com/>
-All rights reserved.
-
-Copyright (c) 2003-2004 John Gruber
-<http://daringfireball.net/>
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-* Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
-* Neither the name "Markdown" nor the names of its contributors may
- be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-This software is provided by the copyright holders and contributors "as
-is" and any express or implied warranties, including, but not limited
-to, the implied warranties of merchantability and fitness for a
-particular purpose are disclaimed. In no event shall the copyright owner
-or contributors be liable for any direct, indirect, incidental, special,
-exemplary, or consequential damages (including, but not limited to,
-procurement of substitute goods or services; loss of use, data, or
-profits; or business interruption) however caused and on any theory of
-liability, whether in contract, strict liability, or tort (including
-negligence or otherwise) arising in any way out of the use of this
-software, even if advised of the possibility of such damage.
-
-*/
diff --git a/framework/3rdParty/Parsedown/LICENSE.txt b/framework/3rdParty/Parsedown/LICENSE.txt
new file mode 100644
index 00000000..baca86f5
--- /dev/null
+++ b/framework/3rdParty/Parsedown/LICENSE.txt
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2013 Emanuil Rusev, erusev.com
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file
diff --git a/framework/3rdParty/Parsedown/Parsedown.php b/framework/3rdParty/Parsedown/Parsedown.php
new file mode 100755
index 00000000..ebc80974
--- /dev/null
+++ b/framework/3rdParty/Parsedown/Parsedown.php
@@ -0,0 +1,1135 @@
+<?php
+
+#
+#
+# Parsedown
+# http://parsedown.org
+#
+# (c) Emanuil Rusev
+# http://erusev.com
+#
+# For the full license information, view the LICENSE file that was distributed
+# with this source code.
+#
+#
+
+class Parsedown
+{
+ # Multiton
+
+ static function instance($name = 'default')
+ {
+ if (isset(self::$instances[$name]))
+ {
+ return self::$instances[$name];
+ }
+
+ $instance = new Parsedown();
+
+ self::$instances[$name] = $instance;
+
+ return $instance;
+ }
+
+ private static $instances = array();
+
+ #
+ # Setters
+ #
+
+ # Enables GFM line breaks.
+
+ function set_breaks_enabled($breaks_enabled)
+ {
+ $this->breaks_enabled = $breaks_enabled;
+
+ return $this;
+ }
+
+ private $breaks_enabled = false;
+
+ #
+ # Synopsis
+ #
+
+ # Markdown is intended to be easy-to-read by humans - those of us who read
+ # line by line, left to right, top to bottom. In order to take advantage of
+ # this, Parsedown tries to read in a similar way. It breaks texts into
+ # lines, it iterates through them and it looks at how they start and relate
+ # to each other.
+
+ #
+ # Methods
+ #
+
+ function parse($text)
+ {
+ # standardize line breaks
+ $text = str_replace("\r\n", "\n", $text);
+ $text = str_replace("\r", "\n", $text);
+
+ # replace tabs with spaces
+ $text = str_replace("\t", ' ', $text);
+
+ # remove surrounding line breaks
+ $text = trim($text, "\n");
+
+ # split text into lines
+ $lines = explode("\n", $text);
+
+ # convert lines into html
+ $text = $this->parse_block_elements($lines);
+
+ # remove trailing line breaks
+ $text = chop($text, "\n");
+
+ return $text;
+ }
+
+ #
+ # Private
+
+ private function parse_block_elements(array $lines, $context = '')
+ {
+ $blocks = array();
+
+ $block = array(
+ 'type' => '',
+ );
+
+ foreach ($lines as $line)
+ {
+ # context
+
+ switch ($block['type'])
+ {
+ case 'fenced':
+
+ if ( ! isset($block['closed']))
+ {
+ if (preg_match('/^[ ]*'.$block['fence'][0].'{3,}[ ]*$/', $line))
+ {
+ $block['closed'] = true;
+ }
+ else
+ {
+ if ($block['text'] !== '')
+ {
+ $block['text'] .= "\n";
+ }
+
+ $block['text'] .= $line;
+ }
+
+ continue 2;
+ }
+
+ break;
+
+ case 'markup':
+
+ if ( ! isset($block['closed']))
+ {
+ if (strpos($line, $block['start']) !== false) # opening tag
+ {
+ $block['depth']++;
+ }
+
+ if (strpos($line, $block['end']) !== false) # closing tag
+ {
+ if ($block['depth'] > 0)
+ {
+ $block['depth']--;
+ }
+ else
+ {
+ $block['closed'] = true;
+ }
+ }
+
+ $block['text'] .= "\n".$line;
+
+ continue 2;
+ }
+
+ break;
+ }
+
+ # ~
+
+ $indentation = 0;
+
+ while(isset($line[$indentation]) and $line[$indentation] === ' ')
+ {
+ $indentation++;
+ }
+
+ $outdented_line = $indentation > 0 ? ltrim($line) : $line;
+
+ # blank
+
+ if ($outdented_line === '')
+ {
+ $block['interrupted'] = true;
+
+ continue;
+ }
+
+ # context
+
+ switch ($block['type'])
+ {
+ case 'quote':
+
+ if ( ! isset($block['interrupted']))
+ {
+ $line = preg_replace('/^[ ]*>[ ]?/', '', $line);
+
+ $block['lines'] []= $line;
+
+ continue 2;
+ }
+
+ break;
+
+ case 'li':
+
+ if ($block['indentation'] === $indentation and preg_match('/^'.$block['marker'].'[ ]+(.*)/', $outdented_line, $matches))
+ {
+ unset($block['last']);
+
+ $blocks []= $block;
+
+ $block['last'] = true;
+ $block['lines'] = array($matches[1]);
+
+ unset($block['first']);
+ unset($block['interrupted']);
+
+ continue 2;
+ }
+
+ if ( ! isset($block['interrupted']))
+ {
+ $line = preg_replace('/^[ ]{0,'.$block['baseline'].'}/', '', $line);
+
+ $block['lines'] []= $line;
+
+ continue 2;
+ }
+ elseif ($line[0] === ' ')
+ {
+ $block['lines'] []= '';
+
+ $line = preg_replace('/^[ ]{0,'.$block['baseline'].'}/', '', $line);
+
+ $block['lines'] []= $line;
+
+ unset($block['interrupted']);
+
+ continue 2;
+ }
+
+ break;
+ }
+
+ # indentation sensitive types
+
+ switch ($line[0])
+ {
+ case ' ':
+
+ # code
+
+ if ($indentation >= 4)
+ {
+ $code_line = substr($line, 4);
+
+ if ($block['type'] === 'code')
+ {
+ if (isset($block['interrupted']))
+ {
+ $block['text'] .= "\n";
+
+ unset($block['interrupted']);
+ }
+
+ $block['text'] .= "\n".$code_line;
+ }
+ else
+ {
+ $blocks []= $block;
+
+ $block = array(
+ 'type' => 'code',
+ 'text' => $code_line,
+ );
+ }
+
+ continue 2;
+ }
+
+ break;
+
+ case '#':
+
+ # atx heading (#)
+
+ if (isset($line[1]))
+ {
+ $blocks []= $block;
+
+ $level = 1;
+
+ while (isset($line[$level]) and $line[$level] === '#')
+ {
+ $level++;
+ }
+
+ $block = array(
+ 'type' => 'heading',
+ 'text' => trim($line, '# '),
+ 'level' => $level,
+ );
+
+ continue 2;
+ }
+
+ break;
+
+ case '-':
+ case '=':
+
+ # setext heading (===)
+
+ if ($block['type'] === 'paragraph' and isset($block['interrupted']) === false)
+ {
+ $chopped_line = chop($line);
+
+ $i = 1;
+
+ while (isset($chopped_line[$i]))
+ {
+ if ($chopped_line[$i] !== $line[0])
+ {
+ break 2;
+ }
+
+ $i++;
+ }
+
+ $block['type'] = 'heading';
+
+ $block['level'] = $line[0] === '-' ? 2 : 1;
+
+ continue 2;
+ }
+
+ break;
+ }
+
+ # indentation insensitive types
+
+ switch ($outdented_line[0])
+ {
+ case '<':
+
+ $position = strpos($outdented_line, '>');
+
+ if ($position > 1)
+ {
+ $substring = substr($outdented_line, 1, $position - 1);
+
+ $substring = chop($substring);
+
+ if (substr($substring, -1) === '/')
+ {
+ $is_self_closing = true;
+
+ $substring = substr($substring, 0, -1);
+ }
+
+ $position = strpos($substring, ' ');
+
+ if ($position)
+ {
+ $name = substr($substring, 0, $position);
+ }
+ else
+ {
+ $name = $substring;
+ }
+
+ if ( ! ctype_alpha($name))
+ {
+ break;
+ }
+
+ if (in_array($name, self::$text_level_elements))
+ {
+ break;
+ }
+
+ $blocks []= $block;
+
+ if (isset($is_self_closing))
+ {
+ $block = array(
+ 'type' => 'self-closing tag',
+ 'text' => $outdented_line,
+ );
+
+ unset($is_self_closing);
+
+ continue 2;
+ }
+
+ $block = array(
+ 'type' => 'markup',
+ 'text' => $outdented_line,
+ 'start' => '<'.$name.'>',
+ 'end' => '</'.$name.'>',
+ 'depth' => 0,
+ );
+
+ if (strpos($outdented_line, $block['end']))
+ {
+ $block['closed'] = true;
+ }
+
+ continue 2;
+ }
+
+ break;
+
+ case '>':
+
+ # quote
+
+ if (preg_match('/^>[ ]?(.*)/', $outdented_line, $matches))
+ {
+ $blocks []= $block;
+
+ $block = array(
+ 'type' => 'quote',
+ 'lines' => array(
+ $matches[1],
+ ),
+ );
+
+ continue 2;
+ }
+
+ break;
+
+ case '[':
+
+ # reference
+
+ $position = strpos($outdented_line, ']:');
+
+ if ($position)
+ {
+ $reference = array();
+
+ $label = substr($outdented_line, 1, $position - 1);
+ $label = strtolower($label);
+
+ $substring = substr($outdented_line, $position + 2);
+ $substring = trim($substring);
+
+ if ($substring === '')
+ {
+ break;
+ }
+
+ if ($substring[0] === '<')
+ {
+ $position = strpos($substring, '>');
+
+ if ($position === false)
+ {
+ break;
+ }
+
+ $reference['»'] = substr($substring, 1, $position - 1);
+
+ $substring = substr($substring, $position + 1);
+ }
+ else
+ {
+ $position = strpos($substring, ' ');
+
+ if ($position === false)
+ {
+ $reference['»'] = $substring;
+
+ $substring = false;
+ }
+ else
+ {
+ $reference['»'] = substr($substring, 0, $position);
+
+ $substring = substr($substring, $position + 1);
+ }
+ }
+
+ if ($substring !== false)
+ {
+ if ($substring[0] !== '"' and $substring[0] !== "'" and $substring[0] !== '(')
+ {
+ break;
+ }
+
+ $last_char = substr($substring, -1);
+
+ if ($last_char !== '"' and $last_char !== "'" and $last_char !== ')')
+ {
+ break;
+ }
+
+ $reference['#'] = substr($substring, 1, -1);
+ }
+
+ $this->reference_map[$label] = $reference;
+
+ continue 2;
+ }
+
+ break;
+
+ case '`':
+ case '~':
+
+ # fenced code block
+
+ if (preg_match('/^([`]{3,}|[~]{3,})[ ]*(\S+)?[ ]*$/', $outdented_line, $matches))
+ {
+ $blocks []= $block;
+
+ $block = array(
+ 'type' => 'fenced',
+ 'text' => '',
+ 'fence' => $matches[1],
+ );
+
+ if (isset($matches[2]))
+ {
+ $block['language'] = $matches[2];
+ }
+
+ continue 2;
+ }
+
+ break;
+
+ case '*':
+ case '+':
+ case '-':
+ case '_':
+
+ # hr
+
+ if (preg_match('/^([-*_])([ ]{0,2}\1){2,}[ ]*$/', $outdented_line))
+ {
+ $blocks []= $block;
+
+ $block = array(
+ 'type' => 'rule',
+ );
+
+ continue 2;
+ }
+
+ # li
+
+ if (preg_match('/^([*+-][ ]+)(.*)/', $outdented_line, $matches))
+ {
+ $blocks []= $block;
+
+ $baseline = $indentation + strlen($matches[1]);
+
+ $block = array(
+ 'type' => 'li',
+ 'indentation' => $indentation,
+ 'baseline' => $baseline,
+ 'marker' => '[*+-]',
+ 'first' => true,
+ 'last' => true,
+ 'lines' => array(),
+ );
+
+ $block['lines'] []= preg_replace('/^[ ]{0,4}/', '', $matches[2]);
+
+ continue 2;
+ }
+ }
+
+ # li
+
+ if ($outdented_line[0] <= '9' and preg_match('/^(\d+[.][ ]+)(.*)/', $outdented_line, $matches))
+ {
+ $blocks []= $block;
+
+ $baseline = $indentation + strlen($matches[1]);
+
+ $block = array(
+ 'type' => 'li',
+ 'indentation' => $indentation,
+ 'baseline' => $baseline,
+ 'marker' => '\d+[.]',
+ 'first' => true,
+ 'last' => true,
+ 'ordered' => true,
+ 'lines' => array(),
+ );
+
+ $block['lines'] []= preg_replace('/^[ ]{0,4}/', '', $matches[2]);
+
+ continue;
+ }
+
+ # paragraph
+
+ if ($block['type'] === 'paragraph')
+ {
+ if (isset($block['interrupted']))
+ {
+ $blocks []= $block;
+
+ $block['text'] = $line;
+
+ unset($block['interrupted']);
+ }
+ else
+ {
+ if ($this->breaks_enabled)
+ {
+ $block['text'] .= ' ';
+ }
+
+ $block['text'] .= "\n".$line;
+ }
+ }
+ else
+ {
+ $blocks []= $block;
+
+ $block = array(
+ 'type' => 'paragraph',
+ 'text' => $line,
+ );
+ }
+ }
+
+ $blocks []= $block;
+
+ unset($blocks[0]);
+
+ # $blocks » HTML
+
+ $markup = '';
+
+ foreach ($blocks as $block)
+ {
+ switch ($block['type'])
+ {
+ case 'paragraph':
+
+ $text = $this->parse_span_elements($block['text']);
+
+ if ($context === 'li' and $markup === '')
+ {
+ if (isset($block['interrupted']))
+ {
+ $markup .= "\n".'<p>'.$text.'</p>'."\n";
+ }
+ else
+ {
+ $markup .= $text;
+
+ if (isset($blocks[2]))
+ {
+ $markup .= "\n";
+ }
+ }
+ }
+ else
+ {
+ $markup .= '<p>'.$text.'</p>'."\n";
+ }
+
+ break;
+
+ case 'quote':
+
+ $text = $this->parse_block_elements($block['lines']);
+
+ $markup .= '<blockquote>'."\n".$text.'</blockquote>'."\n";
+
+ break;
+
+ case 'code':
+
+ $text = htmlspecialchars($block['text'], ENT_NOQUOTES, 'UTF-8');
+
+ $markup .= '<pre><code>'.$text.'</code></pre>'."\n";
+
+ break;
+
+ case 'fenced':
+
+ $text = htmlspecialchars($block['text'], ENT_NOQUOTES, 'UTF-8');
+
+ $markup .= '<pre><code';
+
+ if (isset($block['language']))
+ {
+ $markup .= ' class="language-'.$block['language'].'"';
+ }
+
+ $markup .= '>'.$text.'</code></pre>'."\n";
+
+ break;
+
+ case 'heading':
+
+ $text = $this->parse_span_elements($block['text']);
+
+ $markup .= '<h'.$block['level'].'>'.$text.'</h'.$block['level'].'>'."\n";
+
+ break;
+
+ case 'rule':
+
+ $markup .= '<hr />'."\n";
+
+ break;
+
+ case 'li':
+
+ if (isset($block['first']))
+ {
+ $type = isset($block['ordered']) ? 'ol' : 'ul';
+
+ $markup .= '<'.$type.'>'."\n";
+ }
+
+ if (isset($block['interrupted']) and ! isset($block['last']))
+ {
+ $block['lines'] []= '';
+ }
+
+ $text = $this->parse_block_elements($block['lines'], 'li');
+
+ $markup .= '<li>'.$text.'</li>'."\n";
+
+ if (isset($block['last']))
+ {
+ $type = isset($block['ordered']) ? 'ol' : 'ul';
+
+ $markup .= '</'.$type.'>'."\n";
+ }
+
+ break;
+
+ case 'markup':
+
+ $markup .= $block['text']."\n";
+
+ break;
+
+ default:
+
+ $markup .= $block['text']."\n";
+ }
+ }
+
+ return $markup;
+ }
+
+ private function parse_span_elements($text, $markers = array(" \n", '![', '&', '*', '<', '[', '\\', '_', '`', 'http', '~~'))
+ {
+ if (isset($text[1]) === false or $markers === array())
+ {
+ return $text;
+ }
+
+ # ~
+
+ $markup = '';
+
+ while ($markers)
+ {
+ $closest_marker = null;
+ $closest_marker_index = 0;
+ $closest_marker_position = null;
+
+ foreach ($markers as $index => $marker)
+ {
+ $marker_position = strpos($text, $marker);
+
+ if ($marker_position === false)
+ {
+ unset($markers[$index]);
+
+ continue;
+ }
+
+ if ($closest_marker === null or $marker_position < $closest_marker_position)
+ {
+ $closest_marker = $marker;
+ $closest_marker_index = $index;
+ $closest_marker_position = $marker_position;
+ }
+ }
+
+ # ~
+
+ if ($closest_marker === null or isset($text[$closest_marker_position + 1]) === false)
+ {
+ $markup .= $text;
+
+ break;
+ }
+ else
+ {
+ $markup .= substr($text, 0, $closest_marker_position);
+ }
+
+ $text = substr($text, $closest_marker_position);
+
+ # ~
+
+ unset($markers[$closest_marker_index]);
+
+ # ~
+
+ switch ($closest_marker)
+ {
+ case " \n":
+
+ $markup .= '<br />'."\n";
+
+ $offset = 3;
+
+ break;
+
+ case '![':
+ case '[':
+
+ if (strpos($text, ']') and preg_match('/\[((?:[^][]|(?R))*)\]/', $text, $matches))
+ {
+ $element = array(
+ '!' => $text[0] === '!',
+ 'a' => $matches[1],
+ );
+
+ $offset = strlen($matches[0]);
+
+ if ($element['!'])
+ {
+ $offset++;
+ }
+
+ $remaining_text = substr($text, $offset);
+
+ if ($remaining_text[0] === '(' and preg_match('/\([ ]*(.*?)(?:[ ]+[\'"](.+?)[\'"])?[ ]*\)/', $remaining_text, $matches))
+ {
+ $element['»'] = $matches[1];
+
+ if (isset($matches[2]))
+ {
+ $element['#'] = $matches[2];
+ }
+
+ $offset += strlen($matches[0]);
+ }
+ elseif ($this->reference_map)
+ {
+ $reference = $element['a'];
+
+ if (preg_match('/^\s*\[(.*?)\]/', $remaining_text, $matches))
+ {
+ $reference = $matches[1] ? $matches[1] : $element['a'];
+
+ $offset += strlen($matches[0]);
+ }
+
+ $reference = strtolower($reference);
+
+ if (isset($this->reference_map[$reference]))
+ {
+ $element['»'] = $this->reference_map[$reference]['»'];
+
+ if (isset($this->reference_map[$reference]['#']))
+ {
+ $element['#'] = $this->reference_map[$reference]['#'];
+ }
+ }
+ else
+ {
+ unset($element);
+ }
+ }
+ else
+ {
+ unset($element);
+ }
+ }
+
+ if (isset($element))
+ {
+ $element['»'] = str_replace('&', '&amp;', $element['»']);
+ $element['»'] = str_replace('<', '&lt;', $element['»']);
+
+ if ($element['!'])
+ {
+ $markup .= '<img alt="'.$element['a'].'" src="'.$element['»'].'"';
+
+ if (isset($element['#']))
+ {
+ $markup .= ' title="'.$element['#'].'"';
+ }
+
+ $markup .= ' />';
+ }
+ else
+ {
+ $element['a'] = $this->parse_span_elements($element['a'], $markers);
+
+ $markup .= '<a href="'.$element['»'].'"';
+
+ if (isset($element['#']))
+ {
+ $markup .= ' title="'.$element['#'].'"';
+ }
+
+ $markup .= '>'.$element['a'].'</a>';
+ }
+
+ unset($element);
+ }
+ else
+ {
+ $markup .= $closest_marker;
+
+ $offset = $closest_marker === '![' ? 2 : 1;
+ }
+
+ break;
+
+ case '&':
+
+ if (preg_match('/^&#?\w+;/', $text, $matches))
+ {
+ $markup .= $matches[0];
+
+ $offset = strlen($matches[0]);
+ }
+ else
+ {
+ $markup .= '&amp;';
+
+ $offset = 1;
+ }
+
+ break;
+
+ case '*':
+ case '_':
+
+ if ($text[1] === $closest_marker and preg_match(self::$strong_regex[$closest_marker], $text, $matches))
+ {
+ $markers[] = $closest_marker;
+ $matches[1] = $this->parse_span_elements($matches[1], $markers);
+
+ $markup .= '<strong>'.$matches[1].'</strong>';
+ }
+ elseif (preg_match(self::$em_regex[$closest_marker], $text, $matches))
+ {
+ $markers[] = $closest_marker;
+ $matches[1] = $this->parse_span_elements($matches[1], $markers);
+
+ $markup .= '<em>'.$matches[1].'</em>';
+ }
+
+ if (isset($matches) and $matches)
+ {
+ $offset = strlen($matches[0]);
+ }
+ else
+ {
+ $markup .= $closest_marker;
+
+ $offset = 1;
+ }
+
+ break;
+
+ case '<':
+
+ if (strpos($text, '>') !== false)
+ {
+ if ($text[1] === 'h' and preg_match('/^<(https?:[\/]{2}[^\s]+?)>/i', $text, $matches))
+ {
+ $element_url = $matches[1];
+ $element_url = str_replace('&', '&amp;', $element_url);
+ $element_url = str_replace('<', '&lt;', $element_url);
+
+ $markup .= '<a href="'.$element_url.'">'.$element_url.'</a>';
+
+ $offset = strlen($matches[0]);
+ }
+ elseif (strpos($text, '@') > 1 and preg_match('/<(\S+?@\S+?)>/', $text, $matches))
+ {
+ $markup .= '<a href="mailto:'.$matches[1].'">'.$matches[1].'</a>';
+
+ $offset = strlen($matches[0]);
+ }
+ elseif (preg_match('/^<\/?\w.*?>/', $text, $matches))
+ {
+ $markup .= $matches[0];
+
+ $offset = strlen($matches[0]);
+ }
+ else
+ {
+ $markup .= '&lt;';
+
+ $offset = 1;
+ }
+ }
+ else
+ {
+ $markup .= '&lt;';
+
+ $offset = 1;
+ }
+
+ break;
+
+ case '\\':
+
+ if (in_array($text[1], self::$special_characters))
+ {
+ $markup .= $text[1];
+
+ $offset = 2;
+ }
+ else
+ {
+ $markup .= '\\';
+
+ $offset = 1;
+ }
+
+ break;
+
+ case '`':
+
+ if (preg_match('/^(`+)[ ]*(.+?)[ ]*(?<!`)\1(?!`)/', $text, $matches))
+ {
+ $element_text = $matches[2];
+ $element_text = htmlspecialchars($element_text, ENT_NOQUOTES, 'UTF-8');
+
+ $markup .= '<code>'.$element_text.'</code>';
+
+ $offset = strlen($matches[0]);
+ }
+ else
+ {
+ $markup .= '`';
+
+ $offset = 1;
+ }
+
+ break;
+
+ case 'http':
+
+ if (preg_match('/^https?:[\/]{2}[^\s]+\b\/*/ui', $text, $matches))
+ {
+ $element_url = $matches[0];
+ $element_url = str_replace('&', '&amp;', $element_url);
+ $element_url = str_replace('<', '&lt;', $element_url);
+
+ $markup .= '<a href="'.$element_url.'">'.$element_url.'</a>';
+
+ $offset = strlen($matches[0]);
+ }
+ else
+ {
+ $markup .= 'http';
+
+ $offset = 4;
+ }
+
+ break;
+
+ case '~~':
+
+ if (preg_match('/^~~(?=\S)(.+?)(?<=\S)~~/', $text, $matches))
+ {
+ $matches[1] = $this->parse_span_elements($matches[1], $markers);
+
+ $markup .= '<del>'.$matches[1].'</del>';
+
+ $offset = strlen($matches[0]);
+ }
+ else
+ {
+ $markup .= '~~';
+
+ $offset = 2;
+ }
+
+ break;
+ }
+
+ if (isset($offset))
+ {
+ $text = substr($text, $offset);
+ }
+
+ $markers[$closest_marker_index] = $closest_marker;
+ }
+
+ return $markup;
+ }
+
+ #
+ # Fields
+ #
+
+ private $reference_map = array();
+
+ #
+ # Read-only
+
+ private static $strong_regex = array(
+ '*' => '/^[*]{2}((?:[^*]|[*][^*]*[*])+?)[*]{2}(?![*])/s',
+ '_' => '/^__((?:[^_]|_[^_]*_)+?)__(?!_)/us',
+ );
+
+ private static $em_regex = array(
+ '*' => '/^[*]((?:[^*]|[*][*][^*]+?[*][*])+?)[*](?![*])/s',
+ '_' => '/^_((?:[^_]|__[^_]*__)+?)_(?!_)\b/us',
+ );
+
+ private static $special_characters = array(
+ '\\', '`', '*', '_', '{', '}', '[', ']', '(', ')', '>', '#', '+', '-', '.', '!',
+ );
+
+ private static $text_level_elements = array(
+ 'a', 'br', 'bdo', 'abbr', 'blink', 'nextid', 'acronym', 'basefont',
+ 'b', 'em', 'big', 'cite', 'small', 'spacer', 'listing',
+ 'i', 'rp', 'sub', 'code', 'strike', 'marquee',
+ 'q', 'rt', 'sup', 'font', 'strong',
+ 's', 'tt', 'var', 'mark',
+ 'u', 'xm', 'wbr', 'nobr',
+ 'ruby',
+ 'span',
+ 'time',
+ );
+}
diff --git a/framework/3rdParty/SafeHtml/HTMLSax3.php b/framework/3rdParty/SafeHtml/HTMLSax3.php
index ff0bad63..262cf2ac 100644
--- a/framework/3rdParty/SafeHtml/HTMLSax3.php
+++ b/framework/3rdParty/SafeHtml/HTMLSax3.php
@@ -24,7 +24,6 @@
/**
* Main parser components
* @package System.Security.SafeHtml
-* @version $Id: HTMLSax3.php 3188 2012-07-12 12:13:23Z ctrlaltca $
*/
/**
* Required classes
@@ -367,7 +366,7 @@ class TSax3_StateParser_Lt430 extends TSax3_StateParser {
* @return void
*/
function ignoreWhitespace() {
- while ($this->position < $this->length &&
+ while ($this->position < $this->length &&
strpos(" \n\r\t", $this->rawtext{$this->position}) !== FALSE) {
$this->position++;
}
@@ -536,7 +535,7 @@ class TSax3 {
* <li>XML_OPTION_ENTITIES_UNPARSED: XML entities are returned as
* seperate data handler calls in unparsed form</li>
* <li>XML_OPTION_ENTITIES_PARSED: (PHP 4.3.0+ only) XML entities are
- * returned as seperate data handler calls and are parsed with
+ * returned as seperate data handler calls and are parsed with
* PHP's html_entity_decode() function</li>
* <li>XML_OPTION_STRIP_ESCAPES: strips out the -- -- comment markers
* or CDATA markup inside an XML escape, if found.</li>
diff --git a/framework/3rdParty/SafeHtml/HTMLSax3/Decorators.php b/framework/3rdParty/SafeHtml/HTMLSax3/Decorators.php
index 8a33c983..d300ae65 100644
--- a/framework/3rdParty/SafeHtml/HTMLSax3/Decorators.php
+++ b/framework/3rdParty/SafeHtml/HTMLSax3/Decorators.php
@@ -24,7 +24,6 @@
/**
* Decorators for dealing with parser options
* @package System.Security.SafeHtml
-* @version $Id: Decorators.php 3188 2012-07-12 12:13:23Z ctrlaltca $
* @see TSax3::set_option
*/
/**
diff --git a/framework/3rdParty/SafeHtml/HTMLSax3/States.php b/framework/3rdParty/SafeHtml/HTMLSax3/States.php
index 8afc5fb5..5001bb76 100644
--- a/framework/3rdParty/SafeHtml/HTMLSax3/States.php
+++ b/framework/3rdParty/SafeHtml/HTMLSax3/States.php
@@ -24,7 +24,6 @@
/**
* Parsing states.
* @package System.Security.SafeHtml
-* @version $Id: States.php 3188 2012-07-12 12:13:23Z ctrlaltca $
*/
/**
* Define parser states
@@ -133,7 +132,7 @@ class TSax3_OpeningTagState {
*/
function parseAttributes(&$context) {
$Attributes = array();
-
+
$context->ignoreWhitespace();
$attributename = $context->scanUntilCharacters("=/> \n\r\t");
while ($attributename != '') {
@@ -159,7 +158,7 @@ class TSax3_OpeningTagState {
$context->unscanCharacter();
}
$Attributes[$attributename] = $attributevalue;
-
+
$context->ignoreWhitespace();
$attributename = $context->scanUntilCharacters("=/> \n\r\t");
}
@@ -183,14 +182,14 @@ class TSax3_OpeningTagState {
$context->unscanCharacter();
}
$context->handler_object_element->
- {$context->handler_method_opening}($context->htmlsax, $tag,
+ {$context->handler_method_opening}($context->htmlsax, $tag,
$Attributes, TRUE);
$context->handler_object_element->
- {$context->handler_method_closing}($context->htmlsax, $tag,
+ {$context->handler_method_closing}($context->htmlsax, $tag,
TRUE);
} else {
$context->handler_object_element->
- {$context->handler_method_opening}($context->htmlsax, $tag,
+ {$context->handler_method_opening}($context->htmlsax, $tag,
$Attributes, FALSE);
}
}
diff --git a/framework/3rdParty/WsdlGen/Wsdl.php b/framework/3rdParty/WsdlGen/Wsdl.php
index 8cfee9cc..7344812b 100644
--- a/framework/3rdParty/WsdlGen/Wsdl.php
+++ b/framework/3rdParty/WsdlGen/Wsdl.php
@@ -12,7 +12,6 @@
*
* @author Marcus Nyeholt <tanus@users.sourceforge.net>
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: Wsdl.php 3314 2013-08-20 10:00:47Z ctrlaltca $
* @package System.Web.Services.SOAP
*/
diff --git a/framework/3rdParty/WsdlGen/WsdlGenerator.php b/framework/3rdParty/WsdlGen/WsdlGenerator.php
index 0bc2e6d4..e4624ef4 100644
--- a/framework/3rdParty/WsdlGen/WsdlGenerator.php
+++ b/framework/3rdParty/WsdlGen/WsdlGenerator.php
@@ -11,7 +11,6 @@
* This file is part of the PRADO framework from {@link http://www.xisc.com}
*
* @author Marcus Nyeholt <tanus@users.sourceforge.net>
- * @version $Id: WsdlGenerator.php 3314 2013-08-20 10:00:47Z ctrlaltca $
* @package System.Web.Services.SOAP
*/
diff --git a/framework/3rdParty/WsdlGen/WsdlMessage.php b/framework/3rdParty/WsdlGen/WsdlMessage.php
index 5e0391ef..3597c977 100644
--- a/framework/3rdParty/WsdlGen/WsdlMessage.php
+++ b/framework/3rdParty/WsdlGen/WsdlMessage.php
@@ -12,7 +12,6 @@
*
* @author Marcus Nyeholt <tanus@users.sourceforge.net>
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: WsdlMessage.php 3188 2012-07-12 12:13:23Z ctrlaltca $
* @package System.Web.Services.SOAP
*/
diff --git a/framework/3rdParty/WsdlGen/WsdlOperation.php b/framework/3rdParty/WsdlGen/WsdlOperation.php
index 5c9b4be5..91adbda4 100644
--- a/framework/3rdParty/WsdlGen/WsdlOperation.php
+++ b/framework/3rdParty/WsdlGen/WsdlOperation.php
@@ -12,7 +12,6 @@
*
* @author Marcus Nyeholt <tanus@users.sourceforge.net>
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: WsdlOperation.php 3188 2012-07-12 12:13:23Z ctrlaltca $
* @package System.Web.Services.SOAP
*/
diff --git a/framework/3rdParty/readme.html b/framework/3rdParty/readme.html
index 2855ba74..23f398bb 100644
--- a/framework/3rdParty/readme.html
+++ b/framework/3rdParty/readme.html
@@ -113,19 +113,11 @@ projects.
</tr>
<tr>
- <td><a href="adodb">adodb</a></td>
- <td><a href="http://adodb.sourceforge.net/">ADOdb Database Abstraction Library for PHP</a></td>
- <td><a href="adodb/license.txt">Dual licensed using BSD and LGPL.</a></td>
- <td>Provides one database access abstraction layer.</td>
- <td>Slightly modified to work nicely with E_STRICT in php 5.</td>
-</tr>
-
-<tr>
- <td><a href="Markdown">Markdown</a></td>
- <td><a href="http://www.michelf.com/projects/php-markdown/">PHP Markdown</a></td>
- <td><a href="Markdown/License.text">BSD</a></td>
+ <td><a href="Parsedown">Parsedown</a></td>
+ <td><a href="https://github.com/erusev/parsedown">Markdown Parser for PHP</a></td>
+ <td><a href="Parsedown/LICENSE.txt">MIT</a></td>
<td>System.Web.UI.WebControls.TMarkdown</td>
- <td>PHP5 class implementation of the PHP Markdown.</td>
+ <td>PHP implementation of Markdown, GitHub Flavored.</td>
</tr>
<tr>
diff --git a/framework/Caching/TAPCCache.php b/framework/Caching/TAPCCache.php
index 8826fac6..ec0aa35c 100644
--- a/framework/Caching/TAPCCache.php
+++ b/framework/Caching/TAPCCache.php
@@ -4,9 +4,8 @@
*
* @author Alban Hanry <compte_messagerie@hotmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TAPCCache.php 3281 2013-03-13 21:01:40Z ctrlaltca $
* @package System.Caching
*/
@@ -41,7 +40,6 @@
*
* @author Alban Hanry <compte_messagerie@hotmail.com>
* @author Knut Urdalen <knut.urdalen@gmail.com>
- * @version $Id: TAPCCache.php 3281 2013-03-13 21:01:40Z ctrlaltca $
* @package System.Caching
* @since 3.0b
*/
@@ -57,10 +55,10 @@ class TAPCCache extends TCache
{
if(!extension_loaded('apc'))
throw new TConfigurationException('apccache_extension_required');
-
+
if(ini_get('apc.enabled') == false)
- throw new TConfigurationException('apccache_extension_not_enabled');
-
+ throw new TConfigurationException('apccache_extension_not_enabled');
+
if(substr(php_sapi_name(), 0, 3) === 'cli' and ini_get('apc.enable_cli') == false)
throw new TConfigurationException('apccache_extension_not_enabled_cli');
diff --git a/framework/Caching/TCache.php b/framework/Caching/TCache.php
index 0a0ca2db..99b3f24c 100644
--- a/framework/Caching/TCache.php
+++ b/framework/Caching/TCache.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TCache.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Caching
*/
@@ -42,7 +41,6 @@ Prado::using('System.Collections.TList');
* the cache acts as an array.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TCache.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Caching
* @since 3.0
*/
@@ -313,7 +311,6 @@ abstract class TCache extends TModule implements ICache, ArrayAccess
* - {@link TChainedCacheDependency}: checks whether any of a list of dependencies is changed or not
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TCache.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Caching
* @since 3.1.0
*/
@@ -331,7 +328,6 @@ abstract class TCacheDependency extends TComponent implements ICacheDependency
* last modification time remains unchanged.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TCache.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Caching
* @since 3.1.0
*/
@@ -400,7 +396,6 @@ class TFileCacheDependency extends TCacheDependency
* to a certain depth of the subdirectories.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TCache.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Caching
* @since 3.1.0
*/
@@ -556,7 +551,6 @@ class TDirectoryCacheDependency extends TCacheDependency
* set {@link setStateName StateName} to the name of the global state.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TCache.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Caching
* @since 3.1.0
*/
@@ -617,7 +611,6 @@ class TGlobalStateCacheDependency extends TCacheDependency
* (see {@link TList} for more details}).
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TCache.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Caching
* @since 3.1.0
*/
@@ -667,7 +660,6 @@ class TChainedCacheDependency extends TCacheDependency
* will be checked.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TCache.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Caching
* @since 3.1.0
*/
@@ -694,7 +686,6 @@ class TApplicationStateCacheDependency extends TCacheDependency
* for more details.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TCache.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Caching
* @since 3.1.0
*/
diff --git a/framework/Caching/TDbCache.php b/framework/Caching/TDbCache.php
index 01962a55..deb95f25 100644
--- a/framework/Caching/TDbCache.php
+++ b/framework/Caching/TDbCache.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDbCache.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Caching
*/
@@ -82,7 +81,6 @@ Prado::using('System.Data.TDbConnection');
* </code>
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDbCache.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Caching
* @since 3.1.0
*/
diff --git a/framework/Caching/TEACache.php b/framework/Caching/TEACache.php
index 6a20f63b..f57011a6 100644
--- a/framework/Caching/TEACache.php
+++ b/framework/Caching/TEACache.php
@@ -1 +1 @@
-<?php /** * TEACache class file * * @author Dario rigolin <drigolin@e-portaltech.it> * @link http://www.pradosoft.com/ * @copyright Copyright &copy; 2005-2013 PradoSoft * @license http://www.pradosoft.com/license/ * @version $Id: TEACache.php 3281 2013-03-13 19:31:03Z xue $ * @package System.Caching */ /** * TEACache class * * TEACache implements a cache application module based on {@link http://eaccelerator.net/ eAccelerator}. * * By definition, cache does not ensure the existence of a value * even if it never expires. Cache is not meant to be an persistent storage. * * To use this module, the eAccelerator PHP extension must be loaded and enabled * * Please note that as of v0.9.6, eAccelerator no longer supports data caching. * This means if you still want to use this component, your eAccelerator should be of 0.9.5.x or lower version. * * Some usage examples of TEACache are as follows, * <code> * $cache=new TEACache; // TEACache may also be loaded as a Prado application module * $cache->init(null); * $cache->add('object',$object); * $object2=$cache->get('object'); * </code> * * If loaded, TEACache will register itself with {@link TApplication} as the * cache module. It can be accessed via {@link TApplication::getCache()}. * * TEACache may be configured in application configuration file as follows * <code> * <module id="cache" class="System.Caching.TEACache" /> * </code> * * @author Dario Rigolin <drigolin@e-portaltech.it> * @version $Id: TEACache.php 3281 2013-03-13 19:31:03Z xue $ * @package System.Caching * @since 3.2.2 */ class TEACache extends TCache { /** * Initializes this module. * This method is required by the IModule interface. * @param TXmlElement configuration for this module, can be null * @throws TConfigurationException if eaccelerator extension is not installed or not started, check your php.ini */ public function init($config) { if(!function_exists('eaccelerator_get')) throw new TConfigurationException('eacceleratorcache_extension_required'); parent::init($config); } /** * Retrieves a value from cache with a specified key. * This is the implementation of the method declared in the parent class. * @param string a unique key identifying the cached value * @return string the value stored in cache, false if the value is not in the cache or expired. */ protected function getValue($key) { $value = eaccelerator_get($key); return ($value === null) ? false : $value; } /** * Stores a value identified by a key in cache. * This is the implementation of the method declared in the parent class. * * @param string the key identifying the value to be cached * @param string the value to be cached * @param integer the number of seconds in which the cached value will expire. 0 means never expire. * @return boolean true if the value is successfully stored into cache, false otherwise */ protected function setValue($key,$value,$expire) { return eaccelerator_put($key,$value,$expire); } /** * Stores a value identified by a key into cache if the cache does not contain this key. * This is the implementation of the method declared in the parent class. * * @param string the key identifying the value to be cached * @param string the value to be cached * @param integer the number of seconds in which the cached value will expire. 0 means never expire. * @return boolean true if the value is successfully stored into cache, false otherwise */ protected function addValue($key,$value,$expire) { return (null === eaccelerator_get($key)) ? $this->setValue($key,$value,$expire) : false; } /** * Deletes a value with the specified key from cache * This is the implementation of the method declared in the parent class. * @param string the key of the value to be deleted * @return boolean if no error happens during deletion */ protected function deleteValue($key) { return eaccelerator_rm($key); } /** * Deletes all values from cache. * Be careful of performing this operation if the cache is shared by multiple applications. */ public function flush() { // first, remove expired content from cache eaccelerator_gc(); // now, remove leftover cache-keys $keys = eaccelerator_list_keys(); foreach($keys as $key) $this->deleteValue(substr($key['name'], 1)); return true; } } \ No newline at end of file
+<?php /** * TEACache class file * * @author Dario rigolin <drigolin@e-portaltech.it> * @link http://www.pradosoft.com/ * @copyright Copyright &copy; 2005-2014 PradoSoft * @license http://www.pradosoft.com/license/ * @package System.Caching */ /** * TEACache class * * TEACache implements a cache application module based on {@link http://eaccelerator.net/ eAccelerator}. * * By definition, cache does not ensure the existence of a value * even if it never expires. Cache is not meant to be an persistent storage. * * To use this module, the eAccelerator PHP extension must be loaded and enabled * * Please note that as of v0.9.6, eAccelerator no longer supports data caching. * This means if you still want to use this component, your eAccelerator should be of 0.9.5.x or lower version. * * Some usage examples of TEACache are as follows, * <code> * $cache=new TEACache; // TEACache may also be loaded as a Prado application module * $cache->init(null); * $cache->add('object',$object); * $object2=$cache->get('object'); * </code> * * If loaded, TEACache will register itself with {@link TApplication} as the * cache module. It can be accessed via {@link TApplication::getCache()}. * * TEACache may be configured in application configuration file as follows * <code> * <module id="cache" class="System.Caching.TEACache" /> * </code> * * @author Dario Rigolin <drigolin@e-portaltech.it> * @package System.Caching * @since 3.2.2 */ class TEACache extends TCache { /** * Initializes this module. * This method is required by the IModule interface. * @param TXmlElement configuration for this module, can be null * @throws TConfigurationException if eaccelerator extension is not installed or not started, check your php.ini */ public function init($config) { if(!function_exists('eaccelerator_get')) throw new TConfigurationException('eacceleratorcache_extension_required'); parent::init($config); } /** * Retrieves a value from cache with a specified key. * This is the implementation of the method declared in the parent class. * @param string a unique key identifying the cached value * @return string the value stored in cache, false if the value is not in the cache or expired. */ protected function getValue($key) { $value = eaccelerator_get($key); return ($value === null) ? false : $value; } /** * Stores a value identified by a key in cache. * This is the implementation of the method declared in the parent class. * * @param string the key identifying the value to be cached * @param string the value to be cached * @param integer the number of seconds in which the cached value will expire. 0 means never expire. * @return boolean true if the value is successfully stored into cache, false otherwise */ protected function setValue($key,$value,$expire) { return eaccelerator_put($key,$value,$expire); } /** * Stores a value identified by a key into cache if the cache does not contain this key. * This is the implementation of the method declared in the parent class. * * @param string the key identifying the value to be cached * @param string the value to be cached * @param integer the number of seconds in which the cached value will expire. 0 means never expire. * @return boolean true if the value is successfully stored into cache, false otherwise */ protected function addValue($key,$value,$expire) { return (null === eaccelerator_get($key)) ? $this->setValue($key,$value,$expire) : false; } /** * Deletes a value with the specified key from cache * This is the implementation of the method declared in the parent class. * @param string the key of the value to be deleted * @return boolean if no error happens during deletion */ protected function deleteValue($key) { return eaccelerator_rm($key); } /** * Deletes all values from cache. * Be careful of performing this operation if the cache is shared by multiple applications. */ public function flush() { // first, remove expired content from cache eaccelerator_gc(); // now, remove leftover cache-keys $keys = eaccelerator_list_keys(); foreach($keys as $key) $this->deleteValue(substr($key['name'], 1)); return true; } } \ No newline at end of file
diff --git a/framework/Caching/TMemCache.php b/framework/Caching/TMemCache.php
index 8d2e6a4b..c2d4901b 100644
--- a/framework/Caching/TMemCache.php
+++ b/framework/Caching/TMemCache.php
@@ -5,9 +5,8 @@
* @author Qiang Xue <qiang.xue@gmail.com>
* @author Carl G. Mathisen <carlgmathisen@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TMemCache.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Caching
*/
@@ -77,7 +76,6 @@
* NB : MemCache server(s) must be restarted to apply settings. Require (PECL memcache >= 2.0.0).
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TMemCache.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Caching
* @since 3.0
*/
@@ -109,11 +107,11 @@ class TMemCache extends TCache
private $_persistence = true;
/**
* @var integer number of buckets to create for this server which in turn control its
- * probability of it being selected. The probability is relative to the total weight
+ * probability of it being selected. The probability is relative to the total weight
* of all servers.
*/
private $_weight = 1;
-
+
private $_timeout = 360;
private $_retryInterval = 15;
@@ -126,9 +124,9 @@ class TMemCache extends TCache
* @var float Specifies the minimum amount of savings to actually store the value compressed. The supplied value must be between 0 and 1. Default value is 0.2 giving a minimum 20% compression savings.
*/
private $_minSavings=0.0;
-
+
private $_status = true;
-
+
private $_failureCallback = null;
/**
@@ -176,13 +174,13 @@ class TMemCache extends TCache
Prado::trace('Adding server '.$this->_host, 'System.Caching.TMemCache');
if($this->_cache->addServer($this->_host,$this->_port)===false)
throw new TConfigurationException('memcache_connection_failed',$this->_host,$this->_port);
- }
+ }
if($this->_threshold!==0)
- $this->_cache->setCompressThreshold($this->_threshold,$this->_minSavings);
+ $this->_cache->setCompressThreshold($this->_threshold,$this->_minSavings);
$this->_initialized=true;
parent::init($config);
}
-
+
/**
* Loads configuration from an XML element
* @param TXmlElement configuration node
@@ -209,7 +207,7 @@ class TMemCache extends TCache
);
foreach($checks as $property=>$exception)
{
- $value=$properties->remove($property);
+ $value=$properties->remove($property);
if($value!==null && is_numeric($value))
$server[$property]=$value;
else if($value!==null)
@@ -268,7 +266,7 @@ class TMemCache extends TCache
{
return $this->_threshold;
}
-
+
/**
* @param integer minimum value length before attempting to compress
* @throws TInvalidOperationException if the module is already initialized
@@ -280,7 +278,7 @@ class TMemCache extends TCache
else
$this->_threshold=TPropertyValue::ensureInteger($value);
}
-
+
/**
* @return float minimum amount of savings to actually store the value compressed
*/
@@ -288,7 +286,7 @@ class TMemCache extends TCache
{
return $this->_minSavings;
}
-
+
/**
* @param float minimum amount of savings to actually store the value compressed
* @throws TInvalidOperationException if the module is already initialized
@@ -300,7 +298,7 @@ class TMemCache extends TCache
else
$this->_minSavings=TPropertyValue::ensureFloat($value);
}
-
+
/**
* Retrieves a value from cache with a specified key.
* This is the implementation of the method declared in the parent class.
diff --git a/framework/Caching/TSqliteCache.php b/framework/Caching/TSqliteCache.php
index a00a8472..7689b58e 100644
--- a/framework/Caching/TSqliteCache.php
+++ b/framework/Caching/TSqliteCache.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TSqliteCache.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Caching
*/
@@ -67,7 +66,6 @@
* SQLite DB file (in the namespace format).
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TSqliteCache.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Caching
* @since 3.0
*/
diff --git a/framework/Caching/TXCache.php b/framework/Caching/TXCache.php
index e86c8fa9..b29fd38c 100644
--- a/framework/Caching/TXCache.php
+++ b/framework/Caching/TXCache.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TXCache.php 1994 2007-06-11 16:02:28Z knut $
* @package System.Caching
*/
@@ -37,7 +36,6 @@
* </code>
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TXCache.php 1994 2007-06-11 16:02:28Z knut $
* @package System.Caching
* @since 3.1.1
*/
diff --git a/framework/Collections/TAttributeCollection.php b/framework/Collections/TAttributeCollection.php
index d72640f2..775ad054 100644
--- a/framework/Collections/TAttributeCollection.php
+++ b/framework/Collections/TAttributeCollection.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TAttributeCollection.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Collections
*/
@@ -38,7 +37,6 @@ Prado::using('System.Collections.TMap');
* in the collection storage.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TAttributeCollection.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Collections
* @since 3.0
*/
diff --git a/framework/Collections/TDummyDataSource.php b/framework/Collections/TDummyDataSource.php
index bf74dbec..7345982a 100644
--- a/framework/Collections/TDummyDataSource.php
+++ b/framework/Collections/TDummyDataSource.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDummyDataSource.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Collections
*/
@@ -22,7 +21,6 @@
* </code>
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDummyDataSource.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Collections
* @since 3.0
*/
@@ -76,7 +74,6 @@ class TDummyDataSource extends TComponent implements IteratorAggregate, Countabl
* for traversing its dummy items.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDummyDataSource.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Collections
* @since 3.0
*/
diff --git a/framework/Collections/TList.php b/framework/Collections/TList.php
index b82f676e..765fa2ce 100644
--- a/framework/Collections/TList.php
+++ b/framework/Collections/TList.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Collections
*/
@@ -32,7 +31,6 @@
* operation, override {@link insertAt()}, and {@link removeAt()}.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Collections
* @since 3.0
*/
@@ -252,7 +250,7 @@ class TList extends TComponent implements IteratorAggregate,ArrayAccess,Countabl
}
/**
- * Finds the base item. If found, the item is inserted before it.
+ * Finds the base item. If found, the item is inserted before it.
* @param mixed the base item which will be pushed back by the second parameter
* @param mixed the item
* @return int the index where the item is inserted
@@ -266,9 +264,9 @@ class TList extends TComponent implements IteratorAggregate,ArrayAccess,Countabl
{
if(($index = $this->indexOf($baseitem)) == -1)
throw new TInvalidDataValueException('list_item_inexistent');
-
+
$this->insertAt($index, $item);
-
+
return $index;
}
else
@@ -276,7 +274,7 @@ class TList extends TComponent implements IteratorAggregate,ArrayAccess,Countabl
}
/**
- * Finds the base item. If found, the item is inserted after it.
+ * Finds the base item. If found, the item is inserted after it.
* @param mixed the base item which comes before the second parameter when added to the list
* @param mixed the item
* @return int the index where the item is inserted
@@ -290,9 +288,9 @@ class TList extends TComponent implements IteratorAggregate,ArrayAccess,Countabl
{
if(($index = $this->indexOf($baseitem)) == -1)
throw new TInvalidDataValueException('list_item_inexistent');
-
+
$this->insertAt($index + 1, $item);
-
+
return $index + 1;
}
else
@@ -402,10 +400,9 @@ class TList extends TComponent implements IteratorAggregate,ArrayAccess,Countabl
*
* TListIterator is used by TList. It allows TList to return a new iterator
* for traversing the items in the list.
- *
- * @deprecated Issue 264 : ArrayIterator should be used instead
+ *
+ * @deprecated Issue 264 : ArrayIterator should be used instead
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Collections
* @since 3.0
*/
diff --git a/framework/Collections/TListItemCollection.php b/framework/Collections/TListItemCollection.php
index 23d5ade8..90a1fbf1 100644
--- a/framework/Collections/TListItemCollection.php
+++ b/framework/Collections/TListItemCollection.php
@@ -6,9 +6,8 @@
* @author Robin J. Rogge <rojaro@gmail.com>
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TListControl.php 2624 2009-03-19 21:20:47Z godzilla80@gmx.net $
* @package System.Collections
*/
@@ -24,7 +23,6 @@ Prado::using('System.Web.UI.WebControls.TListItem');
* TListItemCollection maintains a list of {@link TListItem} for {@link TListControl}.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TListControl.php 2624 2009-03-19 21:20:47Z godzilla80@gmx.net $
* @package System.Collections
* @since 3.0
*/
diff --git a/framework/Collections/TMap.php b/framework/Collections/TMap.php
index d5f2ffce..a0ae8d5b 100644
--- a/framework/Collections/TMap.php
+++ b/framework/Collections/TMap.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TMap.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Collections
*/
@@ -28,7 +27,6 @@
* </code>
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TMap.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Collections
* @since 3.0
*/
@@ -272,9 +270,8 @@ class TMap extends TComponent implements IteratorAggregate,ArrayAccess,Countable
* TMapIterator is used by TMap. It allows TMap to return a new iterator
* for traversing the items in the map.
*
- * @deprecated Issue 264 : ArrayIterator should be used instead
+ * @deprecated Issue 264 : ArrayIterator should be used instead
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TMap.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Collections
* @since 3.0
*/
diff --git a/framework/Collections/TPagedDataSource.php b/framework/Collections/TPagedDataSource.php
index 60d2736b..745fc052 100644
--- a/framework/Collections/TPagedDataSource.php
+++ b/framework/Collections/TPagedDataSource.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TPagedDataSource.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Collections
*/
@@ -24,7 +23,6 @@
* within the specified page will be returned and traversed.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TPagedDataSource.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Collections
* @since 3.0
*/
@@ -277,7 +275,6 @@ class TPagedDataSource extends TComponent implements IteratorAggregate,Countable
* to return a new iterator for traversing the items in a {@link TList} object.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TPagedDataSource.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Collections
* @since 3.0
*/
@@ -363,7 +360,6 @@ class TPagedListIterator implements Iterator
* to return a new iterator for traversing the items in a {@link TMap} object.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TPagedDataSource.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Collections
* @since 3.0
*/
diff --git a/framework/Collections/TPagedList.php b/framework/Collections/TPagedList.php
index ff03606f..57e567e0 100644
--- a/framework/Collections/TPagedList.php
+++ b/framework/Collections/TPagedList.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TPagedList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Collections
*/
@@ -51,7 +50,6 @@
*
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TPagedList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Collections
* @since 3.0
*/
@@ -372,7 +370,6 @@ class TPagedList extends TList
* To obtain the page index before it was changed, use {@link getOldPageIndex OldPageIndex}.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TPagedList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Collections
* @since 3.0
*/
@@ -410,7 +407,6 @@ class TPagedListPageChangedEventParameter extends TEventParameter
* Newly fetched data should be saved in {@link setData Data} property.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TPagedList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Collections
* @since 3.0
*/
diff --git a/framework/Collections/TPriorityList.php b/framework/Collections/TPriorityList.php
index 1ccbd9ce..6a66b5be 100644
--- a/framework/Collections/TPriorityList.php
+++ b/framework/Collections/TPriorityList.php
@@ -4,21 +4,20 @@
*
* @author Brad Anderson <javalizard@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TPriorityList.php 2541 2008-10-21 15:05:13Z javalizard $
* @package System.Collections
*/
/**
* TPriorityList class
*
- * TPriorityList implements a priority ordered list collection class. It allows you to specify
- * any numeric for priorities down to a specific precision. The lower the numeric, the high the priority of the item in the
- * list. Thus -10 has a higher priority than -5, 0, 10 (the default), 18, 10005, etc. Per {@link round}, precision may be negative and
- * thus rounding can go by 10, 100, 1000, etc, instead of just .1, .01, .001, etc. The default precision allows for 8 decimal
- * places. There is also a default priority of 10, if no different default priority is specified or no item specific priority is indicated.
- * If you replace TList with this class it will work exactly the same with items inserted set to the default priority, until you start
+ * TPriorityList implements a priority ordered list collection class. It allows you to specify
+ * any numeric for priorities down to a specific precision. The lower the numeric, the high the priority of the item in the
+ * list. Thus -10 has a higher priority than -5, 0, 10 (the default), 18, 10005, etc. Per {@link round}, precision may be negative and
+ * thus rounding can go by 10, 100, 1000, etc, instead of just .1, .01, .001, etc. The default precision allows for 8 decimal
+ * places. There is also a default priority of 10, if no different default priority is specified or no item specific priority is indicated.
+ * If you replace TList with this class it will work exactly the same with items inserted set to the default priority, until you start
* using different priorities than the default priority.
*
* As you access the PHP array features of this class, it flattens and caches the results. If at all possible, this
@@ -39,15 +38,14 @@
* $n=count($list); // returns the number of items in the list
* </code>
*
- * To extend TPriorityList for doing your own operations with each addition or removal,
+ * To extend TPriorityList for doing your own operations with each addition or removal,
* override {@link insertAtIndexInPriority()} and {@link removeAtIndexInPriority()} and then call the parent.
*
* @author Brad Anderson <javalizard@gmail.com>
- * @version $Id: TPriorityList.php 2541 2008-10-21 15:05:13Z javalizard $
* @package System.Collections
* @since 3.2a
*/
-class TPriorityList extends TList
+class TPriorityList extends TList
{
/**
* @var array internal data storage
@@ -73,7 +71,7 @@ class TPriorityList extends TList
* @var integer the precision of the numeric priorities within this priority list.
*/
private $_p=8;
-
+
/**
* Constructor.
* Initializes the list with an array or an iterable object.
@@ -92,7 +90,7 @@ class TPriorityList extends TList
$this->setPrecision($precision);
$this->setDefaultPriority($defaultPriority);
}
-
+
/**
* Returns the number of items in the list.
* This method is required by Countable interface.
@@ -102,7 +100,7 @@ class TPriorityList extends TList
{
return $this->getCount();
}
-
+
/**
* Returns the total number of items in the list
* @return integer the number of items in the list
@@ -111,7 +109,7 @@ class TPriorityList extends TList
{
return $this->_c;
}
-
+
/**
* Gets the number of items at a priority within the list
* @param numeric optional priority at which to count items. if no parameter, it will be set to the default {@link getDefaultPriority}
@@ -122,12 +120,12 @@ class TPriorityList extends TList
if($priority===null)
$priority=$this->getDefaultPriority();
$priority=(string)round(TPropertyValue::ensureFloat($priority),$this->_p);
-
+
if(!isset($this->_d[$priority]) || !is_array($this->_d[$priority]))
return false;
return count($this->_d[$priority]);
}
-
+
/**
* @return numeric gets the default priority of inserted items without a specified priority
*/
@@ -135,7 +133,7 @@ class TPriorityList extends TList
{
return $this->_dp;
}
-
+
/**
* This must be called internally or when instantiated.
* @param numeric sets the default priority of inserted items without a specified priority
@@ -144,7 +142,7 @@ class TPriorityList extends TList
{
$this->_dp=(string)round(TPropertyValue::ensureFloat($value),$this->_p);
}
-
+
/**
* @return integer The precision of numeric priorities, defaults to 8
*/
@@ -152,7 +150,7 @@ class TPriorityList extends TList
{
return $this->_p;
}
-
+
/**
* This must be called internally or when instantiated.
* @param integer The precision of numeric priorities.
@@ -161,7 +159,7 @@ class TPriorityList extends TList
{
$this->_p=TPropertyValue::ensureInteger($value);
}
-
+
/**
* Returns an iterator for traversing the items in the list.
* This method is required by the interface IteratorAggregate.
@@ -171,7 +169,7 @@ class TPriorityList extends TList
{
return new ArrayIterator($this->flattenPriorities());
}
-
+
/**
* This returns a list of the priorities within this list, ordered lowest to highest.
* @return array the array of priority numerics in decreasing priority order
@@ -181,8 +179,8 @@ class TPriorityList extends TList
$this->sortPriorities();
return array_keys($this->_d);
}
-
-
+
+
/**
* This orders the priority list internally.
*/
@@ -194,20 +192,20 @@ class TPriorityList extends TList
}
/**
- * This flattens the priority list into a flat array [0,...,n-1]
+ * This flattens the priority list into a flat array [0,...,n-1]
* @return array array of items in the list in priority and index order
*/
protected function flattenPriorities() {
if(is_array($this->_fd))
return $this->_fd;
-
+
$this->sortPriorities();
$this->_fd=array();
foreach($this->_d as $priority => $itemsatpriority)
$this->_fd=array_merge($this->_fd,$itemsatpriority);
return $this->_fd;
}
-
+
/**
* Returns the item at the index of a flattened priority list.
@@ -235,7 +233,7 @@ class TPriorityList extends TList
if($priority===null)
$priority=$this->getDefaultPriority();
$priority=(string)round(TPropertyValue::ensureFloat($priority),$this->_p);
-
+
return isset($this->_d[$priority])?$this->_d[$priority]:null;
}
@@ -250,14 +248,14 @@ class TPriorityList extends TList
if($priority===null)
$priority=$this->getDefaultPriority();
$priority=(string)round(TPropertyValue::ensureFloat($priority), $this->_p);
-
+
return !isset($this->_d[$priority])?false:(
isset($this->_d[$priority][$index])?$this->_d[$priority][$index]:false
);
}
/**
- * Appends an item into the list at the end of the specified priority. The position of the added item may
+ * Appends an item into the list at the end of the specified priority. The position of the added item may
* not be at the end of the list.
* @param mixed item to add into the list at priority
* @param numeric priority blank or null for the default priority
@@ -268,7 +266,7 @@ class TPriorityList extends TList
{
if($this->getReadOnly())
throw new TInvalidOperationException('list_readonly',get_class($this));
-
+
return $this->insertAtIndexInPriority($item,false,$priority,true);
}
@@ -284,7 +282,7 @@ class TPriorityList extends TList
{
if($this->getReadOnly())
throw new TInvalidOperationException('list_readonly',get_class($this));
-
+
if(($priority=$this->priorityAt($index,true))!==false)
$this->insertAtIndexInPriority($item,$priority[1],$priority[0]);
else
@@ -292,7 +290,7 @@ class TPriorityList extends TList
}
/**
- * Inserts an item at the specified index within a priority. Override and call this method to
+ * Inserts an item at the specified index within a priority. Override and call this method to
* insert your own functionality.
* @param mixed item to add within the list.
* @param integer index within the priority to add the item, defaults to false which appends the item at the priority
@@ -305,11 +303,11 @@ class TPriorityList extends TList
{
if($this->getReadOnly())
throw new TInvalidOperationException('list_readonly',get_class($this));
-
+
if($priority===null)
$priority=$this->getDefaultPriority();
$priority=(string)round(TPropertyValue::ensureFloat($priority), $this->_p);
-
+
if($preserveCache) {
$this->sortPriorities();
$cc=0;
@@ -318,7 +316,7 @@ class TPriorityList extends TList
break;
else
$cc+=count($items);
-
+
if($index===false&&isset($this->_d[$priority])) {
$c=count($this->_d[$priority]);
$c+=$cc;
@@ -331,7 +329,7 @@ class TPriorityList extends TList
$this->_o = false;
$this->_d[$priority]=array($item);
}
-
+
if($this->_fd&&is_array($this->_fd)) // if there is a flattened array cache
array_splice($this->_fd,$c,0,array($item));
} else {
@@ -352,13 +350,13 @@ class TPriorityList extends TList
else
$this->_fd=null;
}
-
+
$this->_c++;
-
+
return $c;
-
+
}
-
+
/**
* Removes an item from the priority list.
@@ -373,14 +371,14 @@ class TPriorityList extends TList
{
if($this->getReadOnly())
throw new TInvalidOperationException('list_readonly',get_class($this));
-
+
if(($p=$this->priorityOf($item,true))!==false)
{
if($priority!==false) {
if($priority===null)
$priority=$this->getDefaultPriority();
$priority=(string)round(TPropertyValue::ensureFloat($priority),$this->_p);
-
+
if($p[0]!=$priority)
throw new TInvalidDataValueException('list_item_inexistent');
}
@@ -402,14 +400,14 @@ class TPriorityList extends TList
{
if($this->getReadOnly())
throw new TInvalidOperationException('list_readonly',get_class($this));
-
+
if(($priority=$this->priorityAt($index, true))!==false)
return $this->removeAtIndexInPriority($priority[1],$priority[0]);
throw new TInvalidDataValueException('list_index_invalid',$index);
}
/**
- * Removes the item at a specific index within a priority. Override
+ * Removes the item at a specific index within a priority. Override
* and call this method to insert your own functionality.
* @param integer index of item to remove within the priority.
* @param numeric priority of the item to remove, defaults to null, or left blank, it is then set to the default priority
@@ -420,21 +418,21 @@ class TPriorityList extends TList
{
if($this->getReadOnly())
throw new TInvalidOperationException('list_readonly',get_class($this));
-
+
if($priority===null)
$priority=$this->getDefaultPriority();
$priority=(string)round(TPropertyValue::ensureFloat($priority),$this->_p);
-
+
if(!isset($this->_d[$priority])||$index<0||$index>=count($this->_d[$priority]))
throw new TInvalidDataValueException('list_item_inexistent');
-
+
// $value is an array of elements removed, only one
$value=array_splice($this->_d[$priority],$index,1);
$value=$value[0];
-
+
if(!count($this->_d[$priority]))
unset($this->_d[$priority]);
-
+
$this->_c--;
$this->_fd=null;
return $value;
@@ -447,7 +445,7 @@ class TPriorityList extends TList
{
if($this->getReadOnly())
throw new TInvalidOperationException('list_readonly',get_class($this));
-
+
$d=array_reverse($this->_d,true);
foreach($this->_d as $priority=>$items) {
for($index=count($items)-1;$index>=0;$index--)
@@ -489,17 +487,17 @@ class TPriorityList extends TList
public function priorityOf($item,$withindex = false)
{
$this->sortPriorities();
-
+
$absindex = 0;
foreach($this->_d as $priority=>$items) {
if(($index=array_search($item,$items,true))!==false) {
$absindex+=$index;
- return $withindex?array($priority,$index,$absindex,
+ return $withindex?array($priority,$index,$absindex,
'priority'=>$priority,'index'=>$index,'absindex'=>$absindex):$priority;
} else
$absindex+=count($items);
}
-
+
return false;
}
@@ -516,21 +514,21 @@ class TPriorityList extends TList
{
if($index<0||$index>=$this->getCount())
throw new TInvalidDataValueException('list_index_invalid',$index);
-
+
$absindex=$index;
$this->sortPriorities();
foreach($this->_d as $priority=>$items) {
if($index>=($c=count($items)))
$index-=$c;
else
- return $withindex?array($priority,$index,$absindex,
+ return $withindex?array($priority,$index,$absindex,
'priority'=>$priority,'index'=>$index,'absindex'=>$absindex):$priority;
}
return false;
}
/**
- * This inserts an item before another item within the list. It uses the same priority as the
+ * This inserts an item before another item within the list. It uses the same priority as the
* found index item and places the new item before it.
* @param mixed indexitem the item to index
* @param mixed the item to add before indexitem
@@ -541,17 +539,17 @@ class TPriorityList extends TList
{
if($this->getReadOnly())
throw new TInvalidOperationException('list_readonly',get_class($this));
-
+
if(($priority=$this->priorityOf($indexitem,true))===false)
throw new TInvalidDataValueException('list_item_inexistent');
-
+
$this->insertAtIndexInPriority($item,$priority[1],$priority[0]);
-
+
return $priority[2];
}
/**
- * This inserts an item after another item within the list. It uses the same priority as the
+ * This inserts an item after another item within the list. It uses the same priority as the
* found index item and places the new item after it.
* @param mixed indexitem the item to index
* @param mixed the item to add after indexitem
@@ -562,12 +560,12 @@ class TPriorityList extends TList
{
if($this->getReadOnly())
throw new TInvalidOperationException('list_readonly',get_class($this));
-
+
if(($priority=$this->priorityOf($indexitem,true))===false)
throw new TInvalidDataValueException('list_item_inexistent');
-
+
$this->insertAtIndexInPriority($item,$priority[1]+1,$priority[0]);
-
+
return $priority[2]+1;
}
@@ -592,7 +590,7 @@ class TPriorityList extends TList
* Combines the map elements which have a priority below the parameter value
* @param numeric the cut-off priority. All items of priority less than this are returned.
* @param boolean whether or not the input cut-off priority is inclusive. Default: false, not inclusive.
- * @return array the array of priorities keys with values of arrays of items that are below a specified priority.
+ * @return array the array of priorities keys with values of arrays of items that are below a specified priority.
* The priorities are sorted so important priorities, lower numerics, are first.
*/
public function toArrayBelowPriority($priority,$inclusive=false)
@@ -612,7 +610,7 @@ class TPriorityList extends TList
* Combines the map elements which have a priority above the parameter value
* @param numeric the cut-off priority. All items of priority greater than this are returned.
* @param boolean whether or not the input cut-off priority is inclusive. Default: true, inclusive.
- * @return array the array of priorities keys with values of arrays of items that are above a specified priority.
+ * @return array the array of priorities keys with values of arrays of items that are above a specified priority.
* The priorities are sorted so important priorities, lower numerics, are first.
*/
public function toArrayAbovePriority($priority,$inclusive=true)
@@ -627,7 +625,7 @@ class TPriorityList extends TList
}
return $items;
}
-
+
/**
* Copies iterable data into the priority list.
@@ -658,7 +656,7 @@ class TPriorityList extends TList
/**
* Merges iterable data into the priority list.
* New data will be appended to the end of the existing data. If another TPriorityList is merged,
- * the incoming parameter items will be appended at the priorities they are present. These items will be added
+ * the incoming parameter items will be appended at the priorities they are present. These items will be added
* to the end of the existing items with equal priorities, if there are any.
* @param mixed the data to be merged with, must be an array or object implementing Traversable
* @throws TInvalidDataTypeException If data is neither an array nor an iterator.
@@ -677,7 +675,7 @@ class TPriorityList extends TList
{
foreach($data as $priority=>$item)
$this->add($item);
-
+
}
else if($data!==null)
throw new TInvalidDataTypeException('map_data_not_iterable');
@@ -707,12 +705,12 @@ class TPriorityList extends TList
/**
* Sets the element at the specified offset. This method is required by the interface ArrayAccess.
- * Setting elements in a priority list is not straight forword when appending and setting at the
+ * Setting elements in a priority list is not straight forword when appending and setting at the
* end boundary. When appending without an offset (a null offset), the item will be added at
* the default priority. The item may not be the last item in the list. When appending with an
* offset equal to the count of the list, the item will get be appended with the last items priority.
*
- * All together, when setting the location of an item, the item stays in that location, but appending
+ * All together, when setting the location of an item, the item stays in that location, but appending
* an item into a priority list doesn't mean the item is at the end of the list.
* @param integer the offset to set element
* @param mixed the element value
diff --git a/framework/Collections/TPriorityMap.php b/framework/Collections/TPriorityMap.php
index 46f05e9e..352e56ff 100644
--- a/framework/Collections/TPriorityMap.php
+++ b/framework/Collections/TPriorityMap.php
@@ -4,27 +4,26 @@
*
* @author Brad Anderson <javalizard@mac.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TPriorityMap.php 2817 2010-04-18 04:25:03Z javalizard $
* @package System.Collections
*/
/**
* TPriorityMap class
*
- * TPriorityMap implements a collection that takes key-value pairs with
- * a priority to allow key-value pairs to be ordered. This ordering is
+ * TPriorityMap implements a collection that takes key-value pairs with
+ * a priority to allow key-value pairs to be ordered. This ordering is
* important when flattening the map. When flattening the map, if some
- * key-value pairs are required to be before or after others, use this
+ * key-value pairs are required to be before or after others, use this
* class to keep order to your map.
*
* You can access, add or remove an item with a key by using
- * {@link itemAt}, {@link add}, and {@link remove}. These functions
- * can optionally take a priority parameter to allow access to specific
- * priorities. TPriorityMap is functionally backward compatible
+ * {@link itemAt}, {@link add}, and {@link remove}. These functions
+ * can optionally take a priority parameter to allow access to specific
+ * priorities. TPriorityMap is functionally backward compatible
* with {@link TMap}.
- *
+ *
* To get the number of the items in the map, use {@link getCount}.
* TPriorityMap can also be used like a regular array as follows,
* <code>
@@ -39,19 +38,18 @@
*
* An item that doesn't specify a priority will receive the default
* priority. The default priority is set during the instantiation
- * of a new TPriorityMap. If no custom default priority is specified,
+ * of a new TPriorityMap. If no custom default priority is specified,
* the standard default priority of 10 is used.
*
* Priorities with significant digits below precision will be rounded.
*
- * A priority may also be a numeric with decimals. This is set
- * during the instantiation of a new TPriorityMap.
+ * A priority may also be a numeric with decimals. This is set
+ * during the instantiation of a new TPriorityMap.
* The default is 8 decimal places for a priority. If a negative number
* is used, rounding occurs into the integer space rather than in
* the decimal space. See {@link round}.
*
* @author Brad Anderson <javalizard@mac.com>
- * @version $Id: TPriorityMap.php 2817 2010-04-18 04:25:03Z javalizard $
* @package System.Collections
* @since 3.2a
*/
@@ -121,7 +119,7 @@ class TPriorityMap extends TMap
{
$this->_r=TPropertyValue::ensureBoolean($value);
}
-
+
/**
* @return numeric gets the default priority of inserted items without a specified priority
*/
@@ -129,7 +127,7 @@ class TPriorityMap extends TMap
{
return $this->_dp;
}
-
+
/**
* This must be called internally or when instantiated.
* @param numeric sets the default priority of inserted items without a specified priority
@@ -138,7 +136,7 @@ class TPriorityMap extends TMap
{
$this->_dp = (string)round(TPropertyValue::ensureFloat($value), $this->_p);
}
-
+
/**
* @return integer The precision of numeric priorities, defaults to 8
*/
@@ -146,7 +144,7 @@ class TPriorityMap extends TMap
{
return $this->_p;
}
-
+
/**
* This must be called internally or when instantiated.
* @param integer The precision of numeric priorities.
@@ -165,8 +163,8 @@ class TPriorityMap extends TMap
{
return new ArrayIterator($this->flattenPriorities());
}
-
-
+
+
/**
* Orders the priority list internally.
*/
@@ -184,7 +182,7 @@ class TPriorityMap extends TMap
protected function flattenPriorities() {
if(is_array($this->_fd))
return $this->_fd;
-
+
$this->sortPriorities();
$this->_fd = array();
foreach($this->_d as $priority => $itemsatpriority)
@@ -209,10 +207,10 @@ class TPriorityMap extends TMap
{
return $this->_c;
}
-
+
/**
* Gets the number of items at a priority within the map.
- * @param numeric optional priority at which to count items. if no parameter,
+ * @param numeric optional priority at which to count items. if no parameter,
* it will be set to the default {@link getDefaultPriority}
* @return integer the number of items in the map at the specified priority
*/
@@ -221,12 +219,12 @@ class TPriorityMap extends TMap
if($priority===null)
$priority=$this->getDefaultPriority();
$priority=(string)round(TPropertyValue::ensureFloat($priority),$this->_p);
-
+
if(!isset($this->_d[$priority])||!is_array($this->_d[$priority]))
return false;
return count($this->_d[$priority]);
}
-
+
/**
* This returns a list of the priorities within this map, ordered lowest to highest.
* @return array the array of priority numerics in decreasing priority order
@@ -250,7 +248,7 @@ class TPriorityMap extends TMap
* Returns the item with the specified key. If a priority is specified, only items
* within that specific priority will be selected
* @param mixed the key
- * @param mixed the priority. null is the default priority, false is any priority,
+ * @param mixed the priority. null is the default priority, false is any priority,
* and numeric is a specific priority. default: false, any priority.
* @return mixed the element at the offset, null if no element is found at the offset
*/
@@ -279,7 +277,7 @@ class TPriorityMap extends TMap
if($priority===null)
$priority=$this->getDefaultPriority();
$priority=(string)round(TPropertyValue::ensureFloat($priority),$this->_p);
-
+
$oldpriority=$this->priorityAt($key);
if($oldpriority!==false&&$oldpriority!=$priority) {
$value=$this->remove($key,$oldpriority);
@@ -298,7 +296,7 @@ class TPriorityMap extends TMap
if($priority===null)
$priority=$this->getDefaultPriority();
$priority=(string)round(TPropertyValue::ensureFloat($priority),$this->_p);
-
+
return isset($this->_d[$priority])?$this->_d[$priority]:null;
}
@@ -348,7 +346,7 @@ class TPriorityMap extends TMap
if($priority===null)
$priority=$this->getDefaultPriority();
$priority=(string)round(TPropertyValue::ensureFloat($priority),$this->_p);
-
+
if(!$this->_r)
{
foreach($this->_d as $innerpriority=>$items)
@@ -376,11 +374,11 @@ class TPriorityMap extends TMap
/**
* Removes an item from the map by its key. If no priority, or false, is specified
* then priority is irrelevant. If null is used as a parameter for priority, then
- * the priority will be the default priority. If a priority is specified, or
+ * the priority will be the default priority. If a priority is specified, or
* the default priority is specified, only key-value pairs in that priority
* will be affected.
* @param mixed the key of the item to be removed
- * @param numeric|false|null priority. False is any priority, null is the
+ * @param numeric|false|null priority. False is any priority, null is the
* default priority, and numeric is a specific priority
* @return mixed the removed value, null if no such key exists.
* @throws TInvalidOperationException if the map is read-only
@@ -391,7 +389,7 @@ class TPriorityMap extends TMap
{
if($priority===null)
$priority=$this->getDefaultPriority();
-
+
if($priority===false)
{
$this->sortPriorities();
@@ -455,8 +453,8 @@ class TPriorityMap extends TMap
}
/**
- * When the map is flattened into an array, the priorities are taken into
- * account and elements of the map are ordered in the array according to
+ * When the map is flattened into an array, the priorities are taken into
+ * account and elements of the map are ordered in the array according to
* their priority.
* @return array the list of items in array
*/
@@ -469,7 +467,7 @@ class TPriorityMap extends TMap
* Combines the map elements which have a priority below the parameter value
* @param numeric the cut-off priority. All items of priority less than this are returned.
* @param boolean whether or not the input cut-off priority is inclusive. Default: false, not inclusive.
- * @return array the array of priorities keys with values of arrays of items that are below a specified priority.
+ * @return array the array of priorities keys with values of arrays of items that are below a specified priority.
* The priorities are sorted so important priorities, lower numerics, are first.
*/
public function toArrayBelowPriority($priority,$inclusive=false)
@@ -489,7 +487,7 @@ class TPriorityMap extends TMap
* Combines the map elements which have a priority above the parameter value
* @param numeric the cut-off priority. All items of priority greater than this are returned.
* @param boolean whether or not the input cut-off priority is inclusive. Default: true, inclusive.
- * @return array the array of priorities keys with values of arrays of items that are above a specified priority.
+ * @return array the array of priorities keys with values of arrays of items that are above a specified priority.
* The priorities are sorted so important priorities, lower numerics, are first.
*/
public function toArrayAbovePriority($priority,$inclusive=true)
@@ -508,7 +506,7 @@ class TPriorityMap extends TMap
/**
* Copies iterable data into the map.
* Note, existing data in the map will be cleared first.
- * @param mixed the data to be copied from, must be an array, object implementing
+ * @param mixed the data to be copied from, must be an array, object implementing
* Traversable, or a TPriorityMap
* @throws TInvalidDataTypeException If data is neither an array nor an iterator.
*/
@@ -538,7 +536,7 @@ class TPriorityMap extends TMap
/**
* Merges iterable data into the map.
* Existing data in the map will be kept and overwritten if the keys are the same.
- * @param mixed the data to be merged with, must be an array, object implementing
+ * @param mixed the data to be merged with, must be an array, object implementing
* Traversable, or a TPriorityMap
* @throws TInvalidDataTypeException If data is neither an array nor an iterator.
*/
diff --git a/framework/Collections/TQueue.php b/framework/Collections/TQueue.php
index 077b9b2f..ffa81b95 100644
--- a/framework/Collections/TQueue.php
+++ b/framework/Collections/TQueue.php
@@ -4,7 +4,7 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
* @version $Id$
* @package System.Collections
@@ -161,7 +161,7 @@ class TQueue extends TComponent implements IteratorAggregate,Countable
{
return $this->_c;
}
-
+
/**
* Returns the number of items in the queue.
* This method is required by Countable interface.
diff --git a/framework/Collections/TStack.php b/framework/Collections/TStack.php
index 06c97046..91996aaa 100644
--- a/framework/Collections/TStack.php
+++ b/framework/Collections/TStack.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TStack.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Collections
*/
@@ -27,7 +26,6 @@
* </code>
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TStack.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Collections
* @since 3.0
*/
@@ -180,9 +178,8 @@ class TStack extends TComponent implements IteratorAggregate,Countable
* TStackIterator is used by TStack. It allows TStack to return a new iterator
* for traversing the items in the list.
*
- * @deprecated Issue 264 : ArrayIterator should be used instead
+ * @deprecated Issue 264 : ArrayIterator should be used instead
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TStack.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Collections
* @since 3.0
*/
diff --git a/framework/Data/ActiveRecord/Exceptions/TActiveRecordException.php b/framework/Data/ActiveRecord/Exceptions/TActiveRecordException.php
index 7dd69641..11fb796b 100644
--- a/framework/Data/ActiveRecord/Exceptions/TActiveRecordException.php
+++ b/framework/Data/ActiveRecord/Exceptions/TActiveRecordException.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TActiveRecordException.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.ActiveRecord
*/
@@ -14,7 +13,6 @@
* Base exception class for Active Records.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TActiveRecordException.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.ActiveRecord
* @since 3.1
*/
@@ -38,7 +36,6 @@ class TActiveRecordException extends TDbException
* TActiveRecordConfigurationException class.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TActiveRecordException.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.ActiveRecord
* @since 3.1
*/
diff --git a/framework/Data/ActiveRecord/Relations/TActiveRecordBelongsTo.php b/framework/Data/ActiveRecord/Relations/TActiveRecordBelongsTo.php
index 32e27742..2197b48c 100644
--- a/framework/Data/ActiveRecord/Relations/TActiveRecordBelongsTo.php
+++ b/framework/Data/ActiveRecord/Relations/TActiveRecordBelongsTo.php
@@ -4,7 +4,7 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
* @version $Id$
* @package System.Data.ActiveRecord.Relations
diff --git a/framework/Data/ActiveRecord/Relations/TActiveRecordHasMany.php b/framework/Data/ActiveRecord/Relations/TActiveRecordHasMany.php
index e41dc806..92fe495a 100644
--- a/framework/Data/ActiveRecord/Relations/TActiveRecordHasMany.php
+++ b/framework/Data/ActiveRecord/Relations/TActiveRecordHasMany.php
@@ -4,7 +4,7 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
* @version $Id$
* @package System.Data.ActiveRecord.Relations
diff --git a/framework/Data/ActiveRecord/Relations/TActiveRecordHasManyAssociation.php b/framework/Data/ActiveRecord/Relations/TActiveRecordHasManyAssociation.php
index d845d372..1b58f112 100644
--- a/framework/Data/ActiveRecord/Relations/TActiveRecordHasManyAssociation.php
+++ b/framework/Data/ActiveRecord/Relations/TActiveRecordHasManyAssociation.php
@@ -4,7 +4,7 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
* @version $Id$
* @package System.Data.ActiveRecord.Relations
diff --git a/framework/Data/ActiveRecord/Relations/TActiveRecordHasOne.php b/framework/Data/ActiveRecord/Relations/TActiveRecordHasOne.php
index 4f20f12f..46c4d9fb 100644
--- a/framework/Data/ActiveRecord/Relations/TActiveRecordHasOne.php
+++ b/framework/Data/ActiveRecord/Relations/TActiveRecordHasOne.php
@@ -4,7 +4,7 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
* @version $Id$
* @package System.Data.ActiveRecord.Relations
diff --git a/framework/Data/ActiveRecord/Relations/TActiveRecordRelation.php b/framework/Data/ActiveRecord/Relations/TActiveRecordRelation.php
index 2fe6dcb1..7fe2d468 100644
--- a/framework/Data/ActiveRecord/Relations/TActiveRecordRelation.php
+++ b/framework/Data/ActiveRecord/Relations/TActiveRecordRelation.php
@@ -4,7 +4,7 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
* @version $Id$
* @package System.Data.ActiveRecord.Relations
diff --git a/framework/Data/ActiveRecord/Relations/TActiveRecordRelationContext.php b/framework/Data/ActiveRecord/Relations/TActiveRecordRelationContext.php
index 6c1dcd4f..961dcd91 100644
--- a/framework/Data/ActiveRecord/Relations/TActiveRecordRelationContext.php
+++ b/framework/Data/ActiveRecord/Relations/TActiveRecordRelationContext.php
@@ -4,7 +4,7 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
* @version $Id$
* @package System.Data.ActiveRecord.Relations
diff --git a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TIbmScaffoldInput.php b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TIbmScaffoldInput.php
index 71f015b8..0a2c0cd3 100644
--- a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TIbmScaffoldInput.php
+++ b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TIbmScaffoldInput.php
@@ -4,7 +4,7 @@
*
* @author Cesar Ramos <cramos[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
* @package System.Data.ActiveRecord.Scaffold.InputBuilder
*/
diff --git a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TMssqlScaffoldInput.php b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TMssqlScaffoldInput.php
index b9d133a2..1cb73438 100644
--- a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TMssqlScaffoldInput.php
+++ b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TMssqlScaffoldInput.php
@@ -3,7 +3,7 @@
* TMssqlScaffoldInput class file.
*
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
* @package System.Data.ActiveRecord.Scaffold.InputBuilder
*/
diff --git a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TMysqlScaffoldInput.php b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TMysqlScaffoldInput.php
index 74eddbd8..e2e75318 100644
--- a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TMysqlScaffoldInput.php
+++ b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TMysqlScaffoldInput.php
@@ -3,7 +3,7 @@
* TMysqlScaffoldInput class file.
*
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
* @package System.Data.ActiveRecord.Scaffold.InputBuilder
*/
diff --git a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TPgsqlScaffoldInput.php b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TPgsqlScaffoldInput.php
index 088bbd42..6d10874a 100644
--- a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TPgsqlScaffoldInput.php
+++ b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TPgsqlScaffoldInput.php
@@ -3,7 +3,7 @@
* TPgsqlScaffoldInput class file.
*
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
* @package System.Data.ActiveRecord.Scaffold.InputBuilder
*/
diff --git a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputBase.php b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputBase.php
index 611cfdfb..14244b4c 100644
--- a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputBase.php
+++ b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputBase.php
@@ -3,7 +3,7 @@
* TScaffoldInputBase class file.
*
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
* @package System.Data.ActiveRecord.Scaffold.InputBuilder
*/
diff --git a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputCommon.php b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputCommon.php
index 68404adb..3394680e 100644
--- a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputCommon.php
+++ b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputCommon.php
@@ -3,7 +3,7 @@
* TScaffoldInputCommon class file.
*
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
* @package System.Data.ActiveRecord.Scaffold.InputBuilder
*/
diff --git a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TSqliteScaffoldInput.php b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TSqliteScaffoldInput.php
index 302f320b..441d2770 100644
--- a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TSqliteScaffoldInput.php
+++ b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TSqliteScaffoldInput.php
@@ -3,7 +3,7 @@
* TSqliteScaffoldInput class file.
*
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
* @package System.Data.ActiveRecord.Scaffold.InputBuilder
*/
diff --git a/framework/Data/ActiveRecord/Scaffold/TScaffoldBase.php b/framework/Data/ActiveRecord/Scaffold/TScaffoldBase.php
index 41dbb240..122dfbd2 100644
--- a/framework/Data/ActiveRecord/Scaffold/TScaffoldBase.php
+++ b/framework/Data/ActiveRecord/Scaffold/TScaffoldBase.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TScaffoldBase.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.ActiveRecord.Scaffold
*/
@@ -26,7 +25,6 @@ Prado::using('System.Data.ActiveRecord.TActiveRecord');
* file explicitly.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TScaffoldBase.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.ActiveRecord.Scaffold
* @since 3.1
*/
diff --git a/framework/Data/ActiveRecord/Scaffold/TScaffoldEditView.php b/framework/Data/ActiveRecord/Scaffold/TScaffoldEditView.php
index ff1c65c7..74e79eaa 100644
--- a/framework/Data/ActiveRecord/Scaffold/TScaffoldEditView.php
+++ b/framework/Data/ActiveRecord/Scaffold/TScaffoldEditView.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TScaffoldEditView.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.ActiveRecord.Scaffold
*/
@@ -43,7 +42,6 @@ Prado::using('System.Data.ActiveRecord.Scaffold.TScaffoldBase');
* xxx is the property name).
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TScaffoldEditView.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.ActiveRecord.Scaffold
* @since 3.1
*/
@@ -294,7 +292,6 @@ class TScaffoldEditView extends TScaffoldBase
* that is called before the save() method is called on the TActiveRecord.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TScaffoldEditView.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.ActiveRecord.Scaffold
* @since 3.1
*/
diff --git a/framework/Data/ActiveRecord/Scaffold/TScaffoldListView.php b/framework/Data/ActiveRecord/Scaffold/TScaffoldListView.php
index 2cd2def5..afdb126c 100644
--- a/framework/Data/ActiveRecord/Scaffold/TScaffoldListView.php
+++ b/framework/Data/ActiveRecord/Scaffold/TScaffoldListView.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TScaffoldListView.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.ActiveRecord.Scaffold
*/
@@ -44,7 +43,6 @@ Prado::using('System.Data.ActiveRecord.Scaffold.TScaffoldBase');
* Parameters property of TActiveRecordCriteria.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TScaffoldListView.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.ActiveRecord.Scaffold
* @since 3.1
*/
diff --git a/framework/Data/ActiveRecord/Scaffold/TScaffoldSearch.php b/framework/Data/ActiveRecord/Scaffold/TScaffoldSearch.php
index 5505977f..ea2d2c94 100644
--- a/framework/Data/ActiveRecord/Scaffold/TScaffoldSearch.php
+++ b/framework/Data/ActiveRecord/Scaffold/TScaffoldSearch.php
@@ -4,7 +4,7 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
* @version $Id$
* @package System.Data.ActiveRecord.Scaffold
diff --git a/framework/Data/ActiveRecord/Scaffold/TScaffoldView.php b/framework/Data/ActiveRecord/Scaffold/TScaffoldView.php
index 63dea8dd..acc78fd2 100644
--- a/framework/Data/ActiveRecord/Scaffold/TScaffoldView.php
+++ b/framework/Data/ActiveRecord/Scaffold/TScaffoldView.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TScaffoldView.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.ActiveRecord.Scaffold
*/
@@ -35,7 +34,6 @@ Prado::using('System.Data.ActiveRecord.Scaffold.TScaffoldSearch');
* the Active Record class to be displayed/edited/added.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TScaffoldView.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.ActiveRecord.Scaffold
* @since 3.0
*/
diff --git a/framework/Data/ActiveRecord/TActiveRecord.php b/framework/Data/ActiveRecord/TActiveRecord.php
index 24fa41ce..735579cd 100644
--- a/framework/Data/ActiveRecord/TActiveRecord.php
+++ b/framework/Data/ActiveRecord/TActiveRecord.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TActiveRecord.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.ActiveRecord
*/
@@ -142,7 +141,6 @@ Prado::using('System.Data.ActiveRecord.Relations.TActiveRecordRelationContext');
* </code>
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TActiveRecord.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.ActiveRecord
* @since 3.1
*/
@@ -1025,6 +1023,29 @@ abstract class TActiveRecord extends TComponent
{
return isset(self::$_relations[get_class($this)][strtolower($property)]);
}
+
+ /**
+ * Return record data as array
+ * @return array of column name and column values
+ * @since 3.2.4
+ */
+ public function toArray(){
+ $result=array();
+ foreach($this->getRecordTableInfo()->getLowerCaseColumnNames() as $columnName){
+ $result[$columnName]=$this->getColumnValue($columnName);
+ }
+
+ return $result;
+ }
+
+ /**
+ * Return record data as JSON
+ * @return JSON
+ * @since 3.2.4
+ */
+ public function toJSON(){
+ return json_encode($this->toArray());
+ }
}
/**
@@ -1037,7 +1058,6 @@ abstract class TActiveRecord extends TComponent
* be set to false to prevent the requested change event to be performed.
*
* @author Wei Zhuo<weizhuo@gmail.com>
- * @version $Id: TActiveRecord.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.ActiveRecord
* @since 3.1.2
*/
@@ -1072,7 +1092,6 @@ class TActiveRecordChangeEventParameter extends TEventParameter
* - Exception: throws a TActiveRecordException
*
* @author Yves Berkholz <godzilla80@gmx.net>
- * @version $Id: TActiveRecord.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.ActiveRecord
* @see TActiveRecordManager::setInvalidFinderResult
* @see TActiveRecordConfig::setInvalidFinderResult
diff --git a/framework/Data/ActiveRecord/TActiveRecordConfig.php b/framework/Data/ActiveRecord/TActiveRecordConfig.php
index 7421d08b..6e726df0 100644
--- a/framework/Data/ActiveRecord/TActiveRecordConfig.php
+++ b/framework/Data/ActiveRecord/TActiveRecordConfig.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TActiveRecordConfig.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.ActiveRecord
*/
@@ -66,7 +65,6 @@ Prado::using('System.Data.ActiveRecord.TActiveRecordManager');
* </code>
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TActiveRecordConfig.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.ActiveRecord
* @since 3.1
*/
diff --git a/framework/Data/ActiveRecord/TActiveRecordCriteria.php b/framework/Data/ActiveRecord/TActiveRecordCriteria.php
index afa76c51..aec3ce53 100644
--- a/framework/Data/ActiveRecord/TActiveRecordCriteria.php
+++ b/framework/Data/ActiveRecord/TActiveRecordCriteria.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TActiveRecordCriteria.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.ActiveRecord
*/
@@ -28,7 +27,6 @@ Prado::using('System.Data.DataGateway.TSqlCriteria');
* </code>
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TActiveRecordCriteria.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.ActiveRecord
* @since 3.1
*/
diff --git a/framework/Data/ActiveRecord/TActiveRecordGateway.php b/framework/Data/ActiveRecord/TActiveRecordGateway.php
index c61cdd18..4d4fdac1 100644
--- a/framework/Data/ActiveRecord/TActiveRecordGateway.php
+++ b/framework/Data/ActiveRecord/TActiveRecordGateway.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TActiveRecordGateway.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.ActiveRecord
*/
@@ -15,7 +14,6 @@
* record as arrays (for most finder methods).
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TActiveRecordGateway.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.ActiveRecord
* @since 3.1
*/
diff --git a/framework/Data/ActiveRecord/TActiveRecordManager.php b/framework/Data/ActiveRecord/TActiveRecordManager.php
index 26c04e87..4aa2cde9 100644
--- a/framework/Data/ActiveRecord/TActiveRecordManager.php
+++ b/framework/Data/ActiveRecord/TActiveRecordManager.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TActiveRecordManager.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.ActiveRecord
*/
@@ -31,7 +30,6 @@ Prado::using('System.Data.ActiveRecord.TActiveRecordGateway');
* the active record gateway to cache the table meta data information.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TActiveRecordManager.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.ActiveRecord
* @since 3.1
*/
diff --git a/framework/Data/Common/Mssql/TMssqlCommandBuilder.php b/framework/Data/Common/Mssql/TMssqlCommandBuilder.php
index efee34f9..ac718bcb 100644
--- a/framework/Data/Common/Mssql/TMssqlCommandBuilder.php
+++ b/framework/Data/Common/Mssql/TMssqlCommandBuilder.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDbCommandBuilder.php 1863 2007-04-12 12:43:49Z wei $
* @package System.Data.Common
*/
@@ -17,7 +16,6 @@ Prado::using('System.Data.Common.TDbCommandBuilder');
* for MSSQL servers.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TDbCommandBuilder.php 1863 2007-04-12 12:43:49Z wei $
* @package System.Data.Common
* @since 3.1
*/
diff --git a/framework/Data/Common/Mssql/TMssqlMetaData.php b/framework/Data/Common/Mssql/TMssqlMetaData.php
index 3ff7ac7f..21571428 100644
--- a/framework/Data/Common/Mssql/TMssqlMetaData.php
+++ b/framework/Data/Common/Mssql/TMssqlMetaData.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TPgsqlMetaData.php 1866 2007-04-14 05:02:29Z wei $
* @package System.Data.Common.Mssql
*/
@@ -20,12 +19,11 @@ Prado::using('System.Data.Common.Mssql.TMssqlTableInfo');
* TMssqlMetaData loads MSSQL database table and column information.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TPgsqlMetaData.php 1866 2007-04-14 05:02:29Z wei $
* @package System.Data.Common.Mssql
* @since 3.1
*/
class TMssqlMetaData extends TDbMetaData
-{
+{
/**
* @return string TDbTableInfo class name.
*/
@@ -260,5 +258,33 @@ EOD;
}
return false;
}
+
+ /**
+ * Returns all table names in the database.
+ * @param string $schema the schema of the tables. Defaults to empty string, meaning the current or default schema.
+ * If not empty, the returned table names will be prefixed with the schema name.
+ * @return array all table names in the database.
+ */
+ public function findTableNames($schema='dbo')
+ {
+ $condition="TABLE_TYPE='BASE TABLE'";
+ $sql=<<<EOD
+SELECT TABLE_NAME, TABLE_SCHEMA FROM [INFORMATION_SCHEMA].[TABLES]
+WHERE TABLE_SCHEMA=:schema AND $condition
+EOD;
+ $command=$this->getDbConnection()->createCommand($sql);
+ $command->bindParam(":schema", $schema);
+ $rows=$command->queryAll();
+ $names=array();
+ foreach ($rows as $row)
+ {
+ if ($schema == self::DEFAULT_SCHEMA)
+ $names[]=$row['TABLE_NAME'];
+ else
+ $names[]=$schema.'.'.$row['TABLE_SCHEMA'].'.'.$row['TABLE_NAME'];
+ }
+
+ return $names;
+ }
}
diff --git a/framework/Data/Common/Mssql/TMssqlTableColumn.php b/framework/Data/Common/Mssql/TMssqlTableColumn.php
index 7976c28a..e3bd431e 100644
--- a/framework/Data/Common/Mssql/TMssqlTableColumn.php
+++ b/framework/Data/Common/Mssql/TMssqlTableColumn.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TMssqlTableColumn.php 1863 2007-04-12 12:43:49Z wei $
* @package System.Data.Common.Mssql
*/
@@ -19,7 +18,6 @@ Prado::using('System.Data.Common.TDbTableColumn');
* Describes the column metadata of the schema for a Mssql database table.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TMssqlTableColumn.php 1863 2007-04-12 12:43:49Z wei $
* @package System.Data.Common.Mssql
* @since 3.1
*/
diff --git a/framework/Data/Common/Mssql/TMssqlTableInfo.php b/framework/Data/Common/Mssql/TMssqlTableInfo.php
index 0db446b1..d003b336 100644
--- a/framework/Data/Common/Mssql/TMssqlTableInfo.php
+++ b/framework/Data/Common/Mssql/TMssqlTableInfo.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TMssqlTableInfo.php 1861 2007-04-12 08:05:03Z wei $
* @package System.Data.Common.Mssql
*/
@@ -20,7 +19,6 @@ Prado::using('System.Data.Common.Mssql.TMssqlTableColumn');
* TMssqlTableInfo class provides additional table information for Mssql database.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TMssqlTableInfo.php 1861 2007-04-12 08:05:03Z wei $
* @package System.Data.Common.Mssql
* @since 3.1
*/
diff --git a/framework/Data/Common/Mysql/TMysqlCommandBuilder.php b/framework/Data/Common/Mysql/TMysqlCommandBuilder.php
index 8492c537..38e98b4f 100644
--- a/framework/Data/Common/Mysql/TMysqlCommandBuilder.php
+++ b/framework/Data/Common/Mysql/TMysqlCommandBuilder.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDbCommandBuilder.php 1863 2007-04-12 12:43:49Z wei $
* @package System.Data.Common
*/
@@ -16,7 +15,6 @@ Prado::using('System.Data.Common.TDbCommandBuilder');
* TMysqlCommandBuilder implements default TDbCommandBuilder
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TDbCommandBuilder.php 1863 2007-04-12 12:43:49Z wei $
* @package System.Data.Common
* @since 3.1
*/
diff --git a/framework/Data/Common/Mysql/TMysqlMetaData.php b/framework/Data/Common/Mysql/TMysqlMetaData.php
index 9dc995fc..71c75501 100644
--- a/framework/Data/Common/Mysql/TMysqlMetaData.php
+++ b/framework/Data/Common/Mysql/TMysqlMetaData.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TMysqlMetaData.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.Common.Mysql
*/
@@ -23,7 +22,6 @@ Prado::using('System.Data.Common.Mysql.TMysqlTableInfo');
* See http://netevil.org/node.php?nid=795&SC=1
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TMysqlMetaData.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.Common.Mysql
* @since 3.1
*/
@@ -78,6 +76,9 @@ class TMysqlMetaData extends TDbMetaData
{
list($schemaName,$tableName) = $this->getSchemaTableName($table);
$find = $schemaName===null ? "`{$tableName}`" : "`{$schemaName}`.`{$tableName}`";
+ $colCase = $this->getDbConnection()->getColumnCase();
+ if($colCase != TDbColumnCaseMode::Preserved)
+ $this->getDbConnection()->setColumnCase('Preserved');
$this->getDbConnection()->setActive(true);
$sql = "SHOW FULL FIELDS FROM {$find}";
$command = $this->getDbConnection()->createCommand($sql);
@@ -90,6 +91,8 @@ class TMysqlMetaData extends TDbMetaData
}
if($index===0)
throw new TDbException('dbmetadata_invalid_table_view', $table);
+ if($colCase != TDbColumnCaseMode::Preserved)
+ $this->getDbConnection()->setColumnCase($colCase);
return $tableInfo;
}
@@ -382,5 +385,21 @@ EOD;
}
return false;
}
+
+ /**
+ * Returns all table names in the database.
+ * @param string $schema the schema of the tables. Defaults to empty string, meaning the current or default schema.
+ * If not empty, the returned table names will be prefixed with the schema name.
+ * @return array all table names in the database.
+ */
+ public function findTableNames($schema='')
+ {
+ if($schema==='')
+ return $this->getDbConnection()->createCommand('SHOW TABLES')->queryColumn();
+ $names=$this->getDbConnection()->createCommand('SHOW TABLES FROM '.$this->quoteTableName($schema))->queryColumn();
+ foreach($names as &$name)
+ $name=$schema.'.'.$name;
+ return $names;
+ }
}
diff --git a/framework/Data/Common/Mysql/TMysqlTableColumn.php b/framework/Data/Common/Mysql/TMysqlTableColumn.php
index 6f482537..dd62f0f6 100644
--- a/framework/Data/Common/Mysql/TMysqlTableColumn.php
+++ b/framework/Data/Common/Mysql/TMysqlTableColumn.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TMysqlTableColumn.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.Common.Mysql
*/
@@ -19,7 +18,6 @@ Prado::using('System.Data.Common.TDbTableColumn');
* Describes the column metadata of the schema for a Mysql database table.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TMysqlTableColumn.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.Common.Mysql
* @since 3.1
*/
diff --git a/framework/Data/Common/Mysql/TMysqlTableInfo.php b/framework/Data/Common/Mysql/TMysqlTableInfo.php
index b190e961..17b32aa9 100644
--- a/framework/Data/Common/Mysql/TMysqlTableInfo.php
+++ b/framework/Data/Common/Mysql/TMysqlTableInfo.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TMysqlTableInfo.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.Common.Mysql
*/
@@ -20,7 +19,6 @@ Prado::using('System.Data.Common.Mysql.TMysqlTableColumn');
* TMysqlTableInfo class provides additional table information for MySQL database.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TMysqlTableInfo.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.Common.Mysql
* @since 3.1
*/
diff --git a/framework/Data/Common/Oracle/TOracleCommandBuilder.php b/framework/Data/Common/Oracle/TOracleCommandBuilder.php
index 26490d54..56173c3a 100644
--- a/framework/Data/Common/Oracle/TOracleCommandBuilder.php
+++ b/framework/Data/Common/Oracle/TOracleCommandBuilder.php
@@ -5,9 +5,8 @@
*
* @author Marcos Nobre <marconobre[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TOracleCommandBuilder.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.Common
*/
@@ -18,7 +17,6 @@ Prado :: using('System.Data.Common.TDbCommandBuilder');
* for Oracle database.
*
* @author Marcos Nobre <marconobre[at]gmail[dot]com>
- * @version $Id: TOracleCommandBuilder.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.Common
* @since 3.1
*/
@@ -134,14 +132,14 @@ class TOracleCommandBuilder extends TDbCommandBuilder {
" SELECT rownum as {$pradoNUMLIN} {$aliasedFields} FROM ".
" ($sql) {$fieldsALIAS} WHERE rownum <= {$limit} ".
") WHERE {$pradoNUMLIN} >= {$offset} ";
-
+
************************* */
$offset=(int)$offset;
$toReg = $offset + $limit ;
$fullTableName = $this->getTableInfo()->getTableFullName();
- if (empty ($sORDERBY))
+ if (empty ($sORDERBY))
$sORDERBY="ROWNUM";
-
+
$newSql = " SELECT $fields FROM " .
"( " .
" SELECT ROW_NUMBER() OVER ( ORDER BY {$sORDERBY} ) -1 as {$pradoNUMLIN} {$aliasedFields} " .
diff --git a/framework/Data/Common/Oracle/TOracleMetaData.php b/framework/Data/Common/Oracle/TOracleMetaData.php
index 793070ed..7b5bd195 100644
--- a/framework/Data/Common/Oracle/TOracleMetaData.php
+++ b/framework/Data/Common/Oracle/TOracleMetaData.php
@@ -4,9 +4,8 @@
*
* @author Marcos Nobre <marconobre[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TOracleMetaData.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.Common.Oracle
*/
@@ -21,7 +20,6 @@ Prado::using('System.Data.Common.Oracle.TOracleTableColumn');
* TOracleMetaData loads Oracle database table and column information.
*
* @author Marcos Nobre <marconobre[at]gmail[dot]com>
- * @version $Id: TOracleMetaData.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.Common.Oracle
* @since 3.1
*/
@@ -29,7 +27,7 @@ class TOracleMetaData extends TDbMetaData
{
private $_defaultSchema = 'system';
-
+
/**
* @return string TDbTableInfo class name.
*/
@@ -336,5 +334,41 @@ EOD;
}
return false;
}
-}
+
+ /**
+ * Returns all table names in the database.
+ * @param string $schema the schema of the tables. Defaults to empty string, meaning the current or default schema.
+ * If not empty, the returned table names will be prefixed with the schema name.
+ * @return array all table names in the database.
+ */
+ public function findTableNames($schema='')
+ {
+ if($schema==='')
+ {
+ $sql=<<<EOD
+SELECT table_name, '{$schema}' as table_schema FROM user_tables
+EOD;
+ $command=$this->getDbConnection()->createCommand($sql);
+ }
+ else
+ {
+ $sql=<<<EOD
+SELECT object_name as table_name, owner as table_schema FROM all_objects
+WHERE object_type = 'TABLE' AND owner=:schema
+EOD;
+ $command=$this->getDbConnection()->createCommand($sql);
+ $command->bindParam(':schema',$schema);
+ }
+ $rows=$command->queryAll();
+ $names=array();
+ foreach($rows as $row)
+ {
+ if($schema===$this->getDefaultSchema() || $schema==='')
+ $names[]=$row['TABLE_NAME'];
+ else
+ $names[]=$row['TABLE_SCHEMA'].'.'.$row['TABLE_NAME'];
+ }
+ return $names;
+ }
+}
diff --git a/framework/Data/Common/Oracle/TOracleTableColumn.php b/framework/Data/Common/Oracle/TOracleTableColumn.php
index bbd7212c..bc89d8c5 100644
--- a/framework/Data/Common/Oracle/TOracleTableColumn.php
+++ b/framework/Data/Common/Oracle/TOracleTableColumn.php
@@ -4,9 +4,8 @@
*
* @author Marcos Nobre <marconobre[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TOracleTableColumn.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.Common.Oracle
*/
@@ -19,14 +18,13 @@ Prado::using('System.Data.Common.TDbTableColumn');
* Describes the column metadata of the schema for a PostgreSQL database table.
*
* @author Marcos Nobre <marconobre[at]gmail[dot]com>
- * @version $Id: TOracleTableColumn.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.Common.Oracle
* @since 3.1
*/
class TOracleTableColumn extends TDbTableColumn
{
private static $types=array(
- 'numeric' => array( 'numeric' )
+ 'numeric' => array( 'numeric' )
// 'integer' => array('bit', 'bit varying', 'real', 'serial', 'int', 'integer'),
// 'boolean' => array('boolean'),
// 'float' => array('bigint', 'bigserial', 'double precision', 'money', 'numeric')
diff --git a/framework/Data/Common/Oracle/TOracleTableInfo.php b/framework/Data/Common/Oracle/TOracleTableInfo.php
index 6aa31fd8..4a2e31fd 100644
--- a/framework/Data/Common/Oracle/TOracleTableInfo.php
+++ b/framework/Data/Common/Oracle/TOracleTableInfo.php
@@ -5,9 +5,8 @@
*
* @author Marcos Nobre <marconobre[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TOracleTableInfo.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.Common
*/
@@ -15,7 +14,6 @@
* TDbTableInfo class describes the meta data of a database table.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TOracleTableInfo.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.Common
* @since 3.1
*/
diff --git a/framework/Data/Common/Pgsql/TPgsqlCommandBuilder.php b/framework/Data/Common/Pgsql/TPgsqlCommandBuilder.php
index eb975a1a..851dabb5 100644
--- a/framework/Data/Common/Pgsql/TPgsqlCommandBuilder.php
+++ b/framework/Data/Common/Pgsql/TPgsqlCommandBuilder.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDbCommandBuilder.php 1863 2007-04-12 12:43:49Z wei $
* @package System.Data.Common
*/
@@ -17,7 +16,6 @@ Prado::using('System.Data.Common.TDbCommandBuilder');
* for Pgsql database.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TDbCommandBuilder.php 1863 2007-04-12 12:43:49Z wei $
* @package System.Data.Common
* @since 3.1
*/
diff --git a/framework/Data/Common/Pgsql/TPgsqlMetaData.php b/framework/Data/Common/Pgsql/TPgsqlMetaData.php
index dd91dfdc..595f46e8 100644
--- a/framework/Data/Common/Pgsql/TPgsqlMetaData.php
+++ b/framework/Data/Common/Pgsql/TPgsqlMetaData.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TPgsqlMetaData.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.Common.Pgsql
*/
@@ -20,7 +19,6 @@ Prado::using('System.Data.Common.Pgsql.TPgsqlTableInfo');
* TPgsqlMetaData loads PostgreSQL database table and column information.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TPgsqlMetaData.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.Common.Pgsql
* @since 3.1
*/
@@ -418,5 +416,33 @@ EOD;
}
return false;
}
+
+ /**
+ * Returns all table names in the database.
+ * @param string $schema the schema of the tables. Defaults to empty string, meaning the current or default schema.
+ * If not empty, the returned table names will be prefixed with the schema name.
+ * @return array all table names in the database.
+ */
+ public function findTableNames($schema='public')
+ {
+ if($schema==='')
+ $schema=self::DEFAULT_SCHEMA;
+ $sql=<<<EOD
+SELECT table_name, table_schema FROM information_schema.tables
+WHERE table_schema=:schema AND table_type='BASE TABLE'
+EOD;
+ $command=$this->getDbConnection()->createCommand($sql);
+ $command->bindParam(':schema',$schema);
+ $rows=$command->queryAll();
+ $names=array();
+ foreach($rows as $row)
+ {
+ if($schema===self::DEFAULT_SCHEMA)
+ $names[]=$row['table_name'];
+ else
+ $names[]=$row['table_schema'].'.'.$row['table_name'];
+ }
+ return $names;
+ }
}
diff --git a/framework/Data/Common/Pgsql/TPgsqlTableColumn.php b/framework/Data/Common/Pgsql/TPgsqlTableColumn.php
index da17a7d3..fd0fd23c 100644
--- a/framework/Data/Common/Pgsql/TPgsqlTableColumn.php
+++ b/framework/Data/Common/Pgsql/TPgsqlTableColumn.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TPgsqlTableColumn.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.Common.Pgsql
*/
@@ -19,7 +18,6 @@ Prado::using('System.Data.Common.TDbTableColumn');
* Describes the column metadata of the schema for a PostgreSQL database table.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TPgsqlTableColumn.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.Common.Pgsql
* @since 3.1
*/
diff --git a/framework/Data/Common/Pgsql/TPgsqlTableInfo.php b/framework/Data/Common/Pgsql/TPgsqlTableInfo.php
index ef2b4575..43298ffa 100644
--- a/framework/Data/Common/Pgsql/TPgsqlTableInfo.php
+++ b/framework/Data/Common/Pgsql/TPgsqlTableInfo.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TPgsqlTableInfo.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.Common.Pgsql
*/
@@ -20,7 +19,6 @@ Prado::using('System.Data.Common.Pgsql.TPgsqlTableColumn');
* TPgsqlTableInfo class provides additional table information for PostgreSQL database.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TPgsqlTableInfo.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.Common.Pgsql
* @since 3.1
*/
diff --git a/framework/Data/Common/Sqlite/TSqliteCommandBuilder.php b/framework/Data/Common/Sqlite/TSqliteCommandBuilder.php
index 396ec7c5..b442f7b4 100644
--- a/framework/Data/Common/Sqlite/TSqliteCommandBuilder.php
+++ b/framework/Data/Common/Sqlite/TSqliteCommandBuilder.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDbCommandBuilder.php 1863 2007-04-12 12:43:49Z wei $
* @package System.Data.Common
*/
@@ -17,7 +16,6 @@ Prado::using('System.Data.Common.TDbCommandBuilder');
* for Sqlite database.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TDbCommandBuilder.php 1863 2007-04-12 12:43:49Z wei $
* @package System.Data.Common
* @since 3.1
*/
diff --git a/framework/Data/Common/Sqlite/TSqliteMetaData.php b/framework/Data/Common/Sqlite/TSqliteMetaData.php
index 3d789500..9bc345f3 100644
--- a/framework/Data/Common/Sqlite/TSqliteMetaData.php
+++ b/framework/Data/Common/Sqlite/TSqliteMetaData.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TSqliteMetaData.php 1861 2007-04-12 08:05:03Z wei $
* @package System.Data.Common.Sqlite
*/
@@ -20,7 +19,6 @@ Prado::using('System.Data.Common.Sqlite.TSqliteTableInfo');
* TSqliteMetaData loads SQLite database table and column information.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TSqliteMetaData.php 1861 2007-04-12 08:05:03Z wei $
* @package System.Data.Commom.Sqlite
* @since 3.1
*/
@@ -190,21 +188,15 @@ class TSqliteMetaData extends TDbMetaData
}
return false;
}
+
+ /**
+ * Returns all table names in the database.
+ * @param string $schema the schema of the tables. This is not used for sqlite database.
+ * @return array all table names in the database.
+ */
+ public function findTableNames($schema='')
+ {
+ $sql="SELECT DISTINCT tbl_name FROM sqlite_master WHERE tbl_name<>'sqlite_sequence'";
+ return $this->getDbConnection()->createCommand($sql)->queryColumn();
+ }
}
-
-/**
-
-CREATE TABLE foo
-(
- id INTEGER NOT NULL PRIMARY KEY,
- id2 CHAR(2)
-);
-
-CREATE TABLE bar
-(
- id INTEGER NOT NULL PRIMARY KEY,
- foo_id INTEGER
- CONSTRAINT fk_foo_id REFERENCES foo(id) ON DELETE CASCADE
-);
-*/
-
diff --git a/framework/Data/Common/Sqlite/TSqliteTableColumn.php b/framework/Data/Common/Sqlite/TSqliteTableColumn.php
index d8fd1966..f54b6f59 100644
--- a/framework/Data/Common/Sqlite/TSqliteTableColumn.php
+++ b/framework/Data/Common/Sqlite/TSqliteTableColumn.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TSqliteTableColumn.php 1861 2007-04-12 08:05:03Z wei $
* @package System.Data.Common.Sqlite
*/
@@ -19,7 +18,6 @@ Prado::using('System.Data.Common.TDbTableColumn');
* Describes the column metadata of the schema for a PostgreSQL database table.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TSqliteTableColumn.php 1861 2007-04-12 08:05:03Z wei $
* @package System.Data.Common.Sqlite
* @since 3.1
*/
diff --git a/framework/Data/Common/Sqlite/TSqliteTableInfo.php b/framework/Data/Common/Sqlite/TSqliteTableInfo.php
index 52fb3530..e15f050a 100644
--- a/framework/Data/Common/Sqlite/TSqliteTableInfo.php
+++ b/framework/Data/Common/Sqlite/TSqliteTableInfo.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TSqliteTableInfo.php 1861 2007-04-12 08:05:03Z wei $
* @package System.Data.Common.Sqlite
*/
@@ -20,7 +19,6 @@ Prado::using('System.Data.Common.Sqlite.TSqliteTableColumn');
* TSqliteTableInfo class provides additional table information for PostgreSQL database.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TSqliteTableInfo.php 1861 2007-04-12 08:05:03Z wei $
* @package System.Data.Common.Sqlite
* @since 3.1
*/
diff --git a/framework/Data/Common/TDbCommandBuilder.php b/framework/Data/Common/TDbCommandBuilder.php
index fdaa3bfe..7a7b75d4 100644
--- a/framework/Data/Common/TDbCommandBuilder.php
+++ b/framework/Data/Common/TDbCommandBuilder.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDbCommandBuilder.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.Common
*/
@@ -15,7 +14,6 @@
* giving by {@link setTableInfo TableInfo} the property.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TDbCommandBuilder.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.Common
* @since 3.1
*/
diff --git a/framework/Data/Common/TDbMetaData.php b/framework/Data/Common/TDbMetaData.php
index 2ad5c592..5b4568cb 100644
--- a/framework/Data/Common/TDbMetaData.php
+++ b/framework/Data/Common/TDbMetaData.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDbMetaData.php 3284 2013-04-11 07:14:59Z ctrlaltca $
* @package System.Data.Common
*/
@@ -17,7 +16,6 @@
* Use the {@link getTableInfo} method to retrieve a table information.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TDbMetaData.php 3284 2013-04-11 07:14:59Z ctrlaltca $
* @package System.Data.Common
* @since 3.1
*/
@@ -180,5 +178,15 @@ abstract class TDbMetaData extends TComponent
return $lft . str_replace(self::$delimiterIdentifier, '', $name) . $rgt;
}
+
+ /**
+ * Returns all table names in the database.
+ * This method should be overridden by child classes in order to support this feature
+ * because the default implementation simply throws an exception.
+ * @param string $schema the schema of the tables. Defaults to empty string, meaning the current or default schema.
+ * If not empty, the returned table names will be prefixed with the schema name.
+ * @return array all table names in the database.
+ */
+ abstract public function findTableNames($schema='');
}
diff --git a/framework/Data/Common/TDbTableColumn.php b/framework/Data/Common/TDbTableColumn.php
index 27cfb7c5..fe96e12a 100644
--- a/framework/Data/Common/TDbTableColumn.php
+++ b/framework/Data/Common/TDbTableColumn.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDbTableColumn.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.Common
*/
@@ -14,7 +13,6 @@
* TDbTableColumn class describes the column meta data of the schema for a database table.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TDbTableColumn.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.Common
* @since 3.1
*/
diff --git a/framework/Data/Common/TDbTableInfo.php b/framework/Data/Common/TDbTableInfo.php
index fbfcf46d..5060845b 100644
--- a/framework/Data/Common/TDbTableInfo.php
+++ b/framework/Data/Common/TDbTableInfo.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDbTableInfo.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.Common
*/
@@ -14,7 +13,6 @@
* TDbTableInfo class describes the meta data of a database table.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TDbTableInfo.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.Common
* @since 3.1
*/
diff --git a/framework/Data/DataGateway/TDataGatewayCommand.php b/framework/Data/DataGateway/TDataGatewayCommand.php
index f51097c7..fb0f5df0 100644
--- a/framework/Data/DataGateway/TDataGatewayCommand.php
+++ b/framework/Data/DataGateway/TDataGatewayCommand.php
@@ -4,7 +4,7 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
* @version $Id$
* @package System.Data.DataGateway
diff --git a/framework/Data/DataGateway/TSqlCriteria.php b/framework/Data/DataGateway/TSqlCriteria.php
index fb8a3a98..bc1bbbbb 100644
--- a/framework/Data/DataGateway/TSqlCriteria.php
+++ b/framework/Data/DataGateway/TSqlCriteria.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDbSqlCriteria.php 1835 2007-04-03 01:38:15Z wei $
* @package System.Data.DataGateway
*/
@@ -25,7 +24,6 @@
* </code>
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TDbSqlCriteria.php 1835 2007-04-03 01:38:15Z wei $
* @package System.Data.DataGateway
* @since 3.1
*/
diff --git a/framework/Data/DataGateway/TTableGateway.php b/framework/Data/DataGateway/TTableGateway.php
index 1d6385cf..b527fbb4 100644
--- a/framework/Data/DataGateway/TTableGateway.php
+++ b/framework/Data/DataGateway/TTableGateway.php
@@ -4,7 +4,7 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
* @version $Id$
* @package System.Data.DataGateway
diff --git a/framework/Data/SqlMap/Configuration/TDiscriminator.php b/framework/Data/SqlMap/Configuration/TDiscriminator.php
index 278ef2d3..1f7347ae 100644
--- a/framework/Data/SqlMap/Configuration/TDiscriminator.php
+++ b/framework/Data/SqlMap/Configuration/TDiscriminator.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDiscriminator.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Configuration
*/
@@ -21,7 +20,6 @@
* the object data.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TDiscriminator.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Configuration
* @since 3.1
*/
@@ -187,7 +185,6 @@ class TDiscriminator extends TComponent
* is used inplace of the current result map.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TDiscriminator.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Configuration
* @since 3.1
*/
diff --git a/framework/Data/SqlMap/Configuration/TInlineParameterMapParser.php b/framework/Data/SqlMap/Configuration/TInlineParameterMapParser.php
index a2abab3a..e8977b0d 100644
--- a/framework/Data/SqlMap/Configuration/TInlineParameterMapParser.php
+++ b/framework/Data/SqlMap/Configuration/TInlineParameterMapParser.php
@@ -4,21 +4,19 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TInlineParameterMapParser.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Configuration
*/
/**
* TInlineParameterMapParser class.
*
- * The inline parameter map syntax lets you embed the property name,
- * the property type, the column type, and a null value replacement into a
+ * The inline parameter map syntax lets you embed the property name,
+ * the property type, the column type, and a null value replacement into a
* parametrized SQL statement.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TInlineParameterMapParser.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Configuration
* @since 3.1
*/
diff --git a/framework/Data/SqlMap/Configuration/TParameterMap.php b/framework/Data/SqlMap/Configuration/TParameterMap.php
index e24648d2..2eaad9a3 100644
--- a/framework/Data/SqlMap/Configuration/TParameterMap.php
+++ b/framework/Data/SqlMap/Configuration/TParameterMap.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TParameterMap.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Configuration
*/
@@ -26,7 +25,6 @@
* The <parameterMap> element accepts two attributes: id (required) and extends (optional).
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TParameterMap.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Configuration
* @since 3.1
*/
@@ -150,8 +148,8 @@ class TParameterMap extends TComponent
return $value;
}
-
-
+
+
/**
* Create type handler from {@link Type setType()} or {@link TypeHandler setTypeHandler}.
* @param TParameterProperty parameter property
@@ -166,7 +164,7 @@ class TParameterMap extends TComponent
$handler = Prado::createComponent($type);
return $handler;
}
-
+
/**
* @param mixed object to obtain the property from.
diff --git a/framework/Data/SqlMap/Configuration/TParameterProperty.php b/framework/Data/SqlMap/Configuration/TParameterProperty.php
index 255ec690..84007a28 100644
--- a/framework/Data/SqlMap/Configuration/TParameterProperty.php
+++ b/framework/Data/SqlMap/Configuration/TParameterProperty.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TParameterProperty.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Configuration
*/
@@ -25,7 +24,6 @@
* will be written to the database instead of the value.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TParameterProperty.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Configuration
* @since 3.1
*/
@@ -137,7 +135,7 @@ class TParameterProperty extends TComponent
public function __sleep()
{
- $exprops = array(); $cn = 'TParameterProperty';
+ $exprops = array(); $cn = 'TParameterProperty';
if ($this->_typeHandler===null) $exprops[] = "\0$cn\0_typeHandler";
if ($this->_type===null) $exprops[] = "\0$cn\0_type";
if ($this->_column===null) $exprops[] = "\0$cn\0_column";
diff --git a/framework/Data/SqlMap/Configuration/TResultMap.php b/framework/Data/SqlMap/Configuration/TResultMap.php
index 65f149df..e35faf28 100644
--- a/framework/Data/SqlMap/Configuration/TResultMap.php
+++ b/framework/Data/SqlMap/Configuration/TResultMap.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TResultMap.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Configuration
*/
@@ -32,7 +31,6 @@
* from the "parent" <resultMap> are set before any values specified by this <resultMap>.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TResultMap.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Configuration
* @since 3.1
*/
diff --git a/framework/Data/SqlMap/Configuration/TResultProperty.php b/framework/Data/SqlMap/Configuration/TResultProperty.php
index 54ba832d..796060ae 100644
--- a/framework/Data/SqlMap/Configuration/TResultProperty.php
+++ b/framework/Data/SqlMap/Configuration/TResultProperty.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TResultProperty.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Configuration
*/
@@ -29,7 +28,6 @@
* with the {@link Select setSelect()} .
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TResultProperty.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Configuration
* @since 3.1
*/
@@ -327,7 +325,7 @@ class TResultProperty extends TComponent
public function __sleep()
{
- $exprops = array(); $cn = 'TResultProperty';
+ $exprops = array(); $cn = 'TResultProperty';
if ($this->_nullValue===null) $exprops[] = "\0$cn\0_nullValue";
if ($this->_propertyName===null) $exprops[] = "\0$cn\0_propertyNama";
if ($this->_columnName===null) $exprops[] = "\0$cn\0_columnName";
diff --git a/framework/Data/SqlMap/Configuration/TSimpleDynamicParser.php b/framework/Data/SqlMap/Configuration/TSimpleDynamicParser.php
index ac7eb059..29260036 100644
--- a/framework/Data/SqlMap/Configuration/TSimpleDynamicParser.php
+++ b/framework/Data/SqlMap/Configuration/TSimpleDynamicParser.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TSimpleDynamicParser.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Configuration
*/
@@ -15,7 +14,6 @@
* it with a TSimpleDynamicParser::DYNAMIC_TOKEN.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TSimpleDynamicParser.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Configuration
* @since 3.1
*/
diff --git a/framework/Data/SqlMap/Configuration/TSqlMapCacheModel.php b/framework/Data/SqlMap/Configuration/TSqlMapCacheModel.php
index b560fe41..271db675 100644
--- a/framework/Data/SqlMap/Configuration/TSqlMapCacheModel.php
+++ b/framework/Data/SqlMap/Configuration/TSqlMapCacheModel.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TSqlMapCacheModel.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Configuration
*/
@@ -28,7 +27,6 @@
* the current request.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TSqlMapCacheModel.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Configuration
* @since 3.1
*/
@@ -193,7 +191,6 @@ class TSqlMapCacheModel extends TComponent
* Implemented cache are 'Basic', 'FIFO' and 'LRU'.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TSqlMapCacheModel.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Configuration
* @since 3.1
*/
@@ -210,7 +207,6 @@ class TSqlMapCacheTypes extends TEnumerable
* Provides a hash of the object to be cached.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TSqlMapCacheModel.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Configuration
* @since 3.1
*/
diff --git a/framework/Data/SqlMap/Configuration/TSqlMapStatement.php b/framework/Data/SqlMap/Configuration/TSqlMapStatement.php
index efa16484..0efcc5b6 100644
--- a/framework/Data/SqlMap/Configuration/TSqlMapStatement.php
+++ b/framework/Data/SqlMap/Configuration/TSqlMapStatement.php
@@ -5,9 +5,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TSqlMapStatement.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Configuration
*/
@@ -24,7 +23,6 @@
* statement can return a database-generated key.)
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TSqlMapStatement.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Configuration
* @since 3.1
*/
@@ -295,7 +293,7 @@ class TSqlMapStatement extends TComponent
public function __sleep()
{
- $cn = __CLASS__;
+ $cn = __CLASS__;
$exprops = array("\0$cn\0_resultMap");
if (!$this->_parameterMapName) $exprops[] = "\0$cn\0_parameterMapName";
if (!$this->_parameterMap) $exprops[] = "\0$cn\0_parameterMap";
@@ -319,7 +317,6 @@ class TSqlMapStatement extends TComponent
* TSqlMapSelect class file.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TSqlMapStatement.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Statements
* @since 3.1
*/
@@ -338,7 +335,6 @@ class TSqlMapSelect extends TSqlMapStatement
* to generate a key to be used for the insert command.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TSqlMapStatement.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Configuration
* @since 3.1
*/
@@ -367,7 +363,6 @@ class TSqlMapInsert extends TSqlMapStatement
* TSqlMapUpdate class corresponds to <update> element.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TSqlMapStatement.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Configuration
* @since 3.1
*/
@@ -379,7 +374,6 @@ class TSqlMapUpdate extends TSqlMapStatement
* TSqlMapDelete class corresponds to the <delete> element.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TSqlMapStatement.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Configuration
* @since 3.1
*/
@@ -391,7 +385,6 @@ class TSqlMapDelete extends TSqlMapUpdate
* TSqlMapSelect corresponds to the <selectKey> element.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TSqlMapStatement.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Configuration
* @since 3.1
*/
diff --git a/framework/Data/SqlMap/Configuration/TSqlMapXmlConfiguration.php b/framework/Data/SqlMap/Configuration/TSqlMapXmlConfiguration.php
index abe9b588..db178f70 100644
--- a/framework/Data/SqlMap/Configuration/TSqlMapXmlConfiguration.php
+++ b/framework/Data/SqlMap/Configuration/TSqlMapXmlConfiguration.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TSqlMapXmlConfiguration.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Configuration
*/
@@ -16,7 +15,6 @@ Prado::using('System.Data.SqlMap.Configuration.TSqlMapStatement');
* TSqlMapXmlConfig class file.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TSqlMapXmlConfiguration.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Configuration
*/
abstract class TSqlMapXmlConfigBuilder
@@ -128,7 +126,6 @@ abstract class TSqlMapXmlConfigBuilder
* Configures the TSqlMapManager using xml configuration file.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TSqlMapXmlConfiguration.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Configuration
* @since 3.1
*/
@@ -301,7 +298,6 @@ class TSqlMapXmlConfiguration extends TSqlMapXmlConfigBuilder
* description
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TSqlMapXmlConfiguration.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Configuration
* @since 3.1
*/
diff --git a/framework/Data/SqlMap/DataMapper/TFastSqlMapApplicationCache.php b/framework/Data/SqlMap/DataMapper/TFastSqlMapApplicationCache.php
index ae6aa200..d2e3d014 100644
--- a/framework/Data/SqlMap/DataMapper/TFastSqlMapApplicationCache.php
+++ b/framework/Data/SqlMap/DataMapper/TFastSqlMapApplicationCache.php
@@ -4,19 +4,17 @@
*
* @author Berczi Gabor <gabor.berczi@devworx.hu>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TFastSqlMapApplicationCache.php 2996 2011-06-20 15:24:57Z ctrlaltca@gmail.com $
* @package System.Data.SqlMap
*/
/**
* TFastSqlMapApplicationCache class file
- *
+ *
* Fast SqlMap result cache class with minimal-concurrency get/set and atomic flush operations
- *
+ *
* @author Berczi Gabor <gabor.berczi@devworx.hu>
- * @version $Id: TFastSqlMapApplicationCache.php 2996 2011-06-20 15:24:57Z ctrlaltca@gmail.com $
* @package System.Data.SqlMap
* @since 3.2
*/
@@ -30,12 +28,12 @@ class TFastSqlMapApplicationCache implements ICache
{
$this->_cacheModel = $cacheModel;
}
-
+
protected function getBaseKeyKeyName()
{
return 'SqlMapCacheBaseKey::'.$this->_cacheModel->getId();
}
-
+
protected function getBaseKey()
{
$cache = $this->getCache();
@@ -48,7 +46,7 @@ class TFastSqlMapApplicationCache implements ICache
}
return $basekey;
}
-
+
protected function getCacheKey($key)
{
return $this->getBaseKey().'###'.$key;
@@ -63,7 +61,7 @@ class TFastSqlMapApplicationCache implements ICache
{
$this->getCache()->delete($this->getBaseKeyKeyName());
}
-
+
public function get($key)
{
$result = $this->getCache()->get($this->getCacheKey($key));
diff --git a/framework/Data/SqlMap/DataMapper/TLazyLoadList.php b/framework/Data/SqlMap/DataMapper/TLazyLoadList.php
index c512ef92..d50c1b84 100644
--- a/framework/Data/SqlMap/DataMapper/TLazyLoadList.php
+++ b/framework/Data/SqlMap/DataMapper/TLazyLoadList.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TLazyLoadList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap
*/
@@ -14,7 +13,6 @@
* TLazyLoadList executes mapped statements when the proxy collection is first accessed.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TLazyLoadList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap
* @since 3.1
*/
@@ -107,7 +105,6 @@ class TLazyLoadList
* particular object and relays the call to handler object.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TLazyLoadList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap
* @since 3.1
*/
diff --git a/framework/Data/SqlMap/DataMapper/TPropertyAccess.php b/framework/Data/SqlMap/DataMapper/TPropertyAccess.php
index 20a853c4..c19b77ab 100644
--- a/framework/Data/SqlMap/DataMapper/TPropertyAccess.php
+++ b/framework/Data/SqlMap/DataMapper/TPropertyAccess.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TPropertyAccess.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap
*/
@@ -37,7 +36,6 @@
* </code>
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TPropertyAccess.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap
* @since 3.1
*/
diff --git a/framework/Data/SqlMap/DataMapper/TSqlMapCache.php b/framework/Data/SqlMap/DataMapper/TSqlMapCache.php
index 15e148fe..aa853b6c 100644
--- a/framework/Data/SqlMap/DataMapper/TSqlMapCache.php
+++ b/framework/Data/SqlMap/DataMapper/TSqlMapCache.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TSqlMapCache.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap
*/
@@ -16,7 +15,6 @@
* a least-recently-used cache implementation.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TSqlMapCache.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap
* @since 3.1
*/
@@ -89,7 +87,6 @@ abstract class TSqlMapCache implements ICache
* object that was first added when the cache is full.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TSqlMapCache.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap
* @since 3.1
*/
@@ -126,7 +123,6 @@ class TSqlMapFifoCache extends TSqlMapCache
* object that was accessed last when the cache is full.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TSqlMapCache.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap
* @since 3.1
*/
@@ -168,7 +164,6 @@ class TSqlMapLruCache extends TSqlMapCache
* caching SqlMap results.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TSqlMapCache.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap
* @since 3.1
*/
diff --git a/framework/Data/SqlMap/DataMapper/TSqlMapException.php b/framework/Data/SqlMap/DataMapper/TSqlMapException.php
index d308768f..bce03a5c 100644
--- a/framework/Data/SqlMap/DataMapper/TSqlMapException.php
+++ b/framework/Data/SqlMap/DataMapper/TSqlMapException.php
@@ -4,7 +4,6 @@
* TSqlMapException is the base exception class for all SqlMap exceptions.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TSqlMapException.php 3187 2012-07-12 11:21:01Z ctrlaltca $
* @package System.Data.SqlMap
* @since 3.1
*/
@@ -63,7 +62,6 @@ class TSqlMapException extends TException
* TSqlMapConfigurationException, raised during configuration file parsing.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TSqlMapException.php 3187 2012-07-12 11:21:01Z ctrlaltca $
* @package System.Data.SqlMap
* @since 3.1
*/
@@ -76,7 +74,6 @@ class TSqlMapConfigurationException extends TSqlMapException
* TSqlMapUndefinedException, raised when mapped statemented are undefined.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TSqlMapException.php 3187 2012-07-12 11:21:01Z ctrlaltca $
* @package System.Data.SqlMap
* @since 3.1
*/
@@ -89,7 +86,6 @@ class TSqlMapUndefinedException extends TSqlMapException
* TSqlMapDuplicateException, raised when a duplicate mapped statement is found.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TSqlMapException.php 3187 2012-07-12 11:21:01Z ctrlaltca $
* @package System.Data.SqlMap
* @since 3.1
*/
@@ -101,7 +97,6 @@ class TSqlMapDuplicateException extends TSqlMapException
* TInvalidPropertyException, raised when setting or getting an invalid property.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TSqlMapException.php 3187 2012-07-12 11:21:01Z ctrlaltca $
* @package System.Data.SqlMap
* @since 3.1
*/
diff --git a/framework/Data/SqlMap/DataMapper/TSqlMapPagedList.php b/framework/Data/SqlMap/DataMapper/TSqlMapPagedList.php
index f3d67d47..d789471d 100644
--- a/framework/Data/SqlMap/DataMapper/TSqlMapPagedList.php
+++ b/framework/Data/SqlMap/DataMapper/TSqlMapPagedList.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TSqlMapPagedList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap
*/
@@ -23,7 +22,6 @@ Prado::using('System.Collections.TPagedList');
* The paged list does not need to know about the total number of records.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TSqlMapPagedList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap
* @since 3.1
*/
diff --git a/framework/Data/SqlMap/DataMapper/TSqlMapTypeHandlerRegistry.php b/framework/Data/SqlMap/DataMapper/TSqlMapTypeHandlerRegistry.php
index 9d743b82..18b8ef99 100644
--- a/framework/Data/SqlMap/DataMapper/TSqlMapTypeHandlerRegistry.php
+++ b/framework/Data/SqlMap/DataMapper/TSqlMapTypeHandlerRegistry.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TSqlMapTypeHandlerRegistry.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap
*/
@@ -15,7 +14,6 @@
* to PHP types and vice versa.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TSqlMapTypeHandlerRegistry.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap
* @since 3.1
*/
@@ -121,7 +119,6 @@ class TSqlMapTypeHandlerRegistry
* booleans using "Y" and "N" instead of the more typical 0/1.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TSqlMapTypeHandlerRegistry.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap
* @since 3.1
*/
diff --git a/framework/Data/SqlMap/Statements/IMappedStatement.php b/framework/Data/SqlMap/Statements/IMappedStatement.php
index 175b6f39..859d2ee3 100644
--- a/framework/Data/SqlMap/Statements/IMappedStatement.php
+++ b/framework/Data/SqlMap/Statements/IMappedStatement.php
@@ -3,7 +3,6 @@
* IMappedStatement interface file.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: IMappedStatement.php 3187 2012-07-12 11:21:01Z ctrlaltca $
* @package System.Data.SqlMap.Statements
*/
@@ -11,7 +10,6 @@
* Interface for all mapping statements.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: IMappedStatement.php 3187 2012-07-12 11:21:01Z ctrlaltca $
* @package System.Data.SqlMap.Statements
* @since 3.1
*/
diff --git a/framework/Data/SqlMap/Statements/TCachingStatement.php b/framework/Data/SqlMap/Statements/TCachingStatement.php
index b01280de..ad22b84f 100644
--- a/framework/Data/SqlMap/Statements/TCachingStatement.php
+++ b/framework/Data/SqlMap/Statements/TCachingStatement.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TCachingStatement.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Statements
*/
@@ -14,7 +13,6 @@
* TCacheingStatement class.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TCachingStatement.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Statements
* @since 3.1
*/
diff --git a/framework/Data/SqlMap/Statements/TDeleteMappedStatement.php b/framework/Data/SqlMap/Statements/TDeleteMappedStatement.php
index 4b023dc7..119beb39 100644
--- a/framework/Data/SqlMap/Statements/TDeleteMappedStatement.php
+++ b/framework/Data/SqlMap/Statements/TDeleteMappedStatement.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDeleteMappedStatement.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Statements
*/
@@ -14,7 +13,6 @@
* TDeleteMappedStatement class.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TDeleteMappedStatement.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Statements
* @since 3.1
*/
diff --git a/framework/Data/SqlMap/Statements/TInsertMappedStatement.php b/framework/Data/SqlMap/Statements/TInsertMappedStatement.php
index 02bd4a68..de785b94 100644
--- a/framework/Data/SqlMap/Statements/TInsertMappedStatement.php
+++ b/framework/Data/SqlMap/Statements/TInsertMappedStatement.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TInsertMappedStatement.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Statements
*/
@@ -14,7 +13,6 @@
* TInsertMappedStatement class.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TInsertMappedStatement.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Statements
* @since 3.1
*/
diff --git a/framework/Data/SqlMap/Statements/TMappedStatement.php b/framework/Data/SqlMap/Statements/TMappedStatement.php
index 40caf4f7..4d3b6355 100644
--- a/framework/Data/SqlMap/Statements/TMappedStatement.php
+++ b/framework/Data/SqlMap/Statements/TMappedStatement.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TMappedStatement.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Statements
*/
@@ -17,7 +16,6 @@
* This class is usualy instantiated during SQLMap configuration by TSqlDomBuilder.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TMappedStatement.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Statements
* @since 3.0
*/
@@ -924,10 +922,10 @@ class TMappedStatement extends TComponent implements IMappedStatement
parent::__wakeup();
if (is_null($this->_selectQueue)) $this->_selectQueue = array();
}
-
+
public function __sleep()
{
- $exprops = array(); $cn = __CLASS__;
+ $exprops = array(); $cn = __CLASS__;
if (!count($this->_selectQueue)) $exprops[] = "\0$cn\0_selectQueue";
if (is_null($this->_groupBy)) $exprops[] = "\0$cn\0_groupBy";
if (!$this->_IsRowDataFound) $exprops[] = "\0$cn\0_IsRowDataFound";
@@ -939,7 +937,6 @@ class TMappedStatement extends TComponent implements IMappedStatement
* TPostSelectBinding class.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TMappedStatement.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Statements
* @since 3.1
*/
@@ -975,7 +972,6 @@ class TPostSelectBinding
* build using the {@link collect} method.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TMappedStatement.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Statements
* @since 3.1
*/
@@ -1151,7 +1147,7 @@ class TSqlMapObjectCollectionTree extends TComponent
public function __sleep()
{
- $exprops = array(); $cn = __CLASS__;
+ $exprops = array(); $cn = __CLASS__;
if (!count($this->_tree)) $exprops[] = "\0$cn\0_tree";
if (!count($this->_entries)) $exprops[] = "\0$cn\0_entries";
if (!count($this->_list)) $exprops[] = "\0$cn\0_list";
@@ -1163,7 +1159,6 @@ class TSqlMapObjectCollectionTree extends TComponent
* TResultSetListItemParameter class
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TMappedStatement.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Statements
* @since 3.1
*/
@@ -1200,7 +1195,6 @@ class TResultSetListItemParameter extends TComponent
* TResultSetMapItemParameter class.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TMappedStatement.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Statements
* @since 3.1
*/
diff --git a/framework/Data/SqlMap/Statements/TPreparedCommand.php b/framework/Data/SqlMap/Statements/TPreparedCommand.php
index 1e6906a1..8b4bdbcc 100644
--- a/framework/Data/SqlMap/Statements/TPreparedCommand.php
+++ b/framework/Data/SqlMap/Statements/TPreparedCommand.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TPreparedCommand.php 3261 2013-01-22 22:36:51Z ctrlaltca $
* @package System.Data.SqlMap.Statements
*/
@@ -17,7 +16,6 @@ Prado::using('System.Data.Common.TDbCommandBuilder');
* TPreparedCommand class.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TPreparedCommand.php 3261 2013-01-22 22:36:51Z ctrlaltca $
* @package System.Data.SqlMap.Statements
* @since 3.1
*/
diff --git a/framework/Data/SqlMap/Statements/TPreparedStatement.php b/framework/Data/SqlMap/Statements/TPreparedStatement.php
index 4127eae0..79f39aea 100644
--- a/framework/Data/SqlMap/Statements/TPreparedStatement.php
+++ b/framework/Data/SqlMap/Statements/TPreparedStatement.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TPreparedStatement.php 3261 2013-01-22 22:36:51Z ctrlaltca $
* @package System.Data.SqlMap.Statements
*/
@@ -14,7 +13,6 @@
* TpreparedStatement class.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TPreparedStatement.php 3261 2013-01-22 22:36:51Z ctrlaltca $
* @package System.Data.SqlMap.Statements
* @since 3.1
*/
@@ -28,26 +26,26 @@ class TPreparedStatement extends TComponent
public function setPreparedSql($value){ $this->_sqlString = $value; }
public function getParameterNames($needed = true)
- {
+ {
if (!$this->_parameterNames and $needed)
$this->_parameterNames = new TList;
- return $this->_parameterNames;
+ return $this->_parameterNames;
}
public function setParameterNames($value){ $this->_parameterNames = $value; }
public function getParameterValues($needed = true)
- {
+ {
if (!$this->_parameterValues and $needed)
$this->_parameterValues=new TMap;
- return $this->_parameterValues;
+ return $this->_parameterValues;
}
public function setParameterValues($value){ $this->_parameterValues = $value; }
-
+
public function __sleep()
{
- $exprops = array(); $cn = __CLASS__;
+ $exprops = array(); $cn = __CLASS__;
if (!$this->_parameterNames or !$this->_parameterNames->getCount()) $exprops[] = "\0$cn\0_parameterNames";
if (!$this->_parameterValues or !$this->_parameterValues->getCount()) $exprops[] = "\0$cn\0_parameterValues";
return array_diff(parent::__sleep(),$exprops);
diff --git a/framework/Data/SqlMap/Statements/TPreparedStatementFactory.php b/framework/Data/SqlMap/Statements/TPreparedStatementFactory.php
index 5fdd16b5..6eef27c3 100644
--- a/framework/Data/SqlMap/Statements/TPreparedStatementFactory.php
+++ b/framework/Data/SqlMap/Statements/TPreparedStatementFactory.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TPreparedStatementFactory.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Statements
*/
@@ -14,7 +13,6 @@
* TPreparedStatementFactory class.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TPreparedStatementFactory.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Statements
* @since 3.1
*/
diff --git a/framework/Data/SqlMap/Statements/TSelectMappedStatement.php b/framework/Data/SqlMap/Statements/TSelectMappedStatement.php
index b0926c41..8e6ea75e 100644
--- a/framework/Data/SqlMap/Statements/TSelectMappedStatement.php
+++ b/framework/Data/SqlMap/Statements/TSelectMappedStatement.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TSelectMappedStatement.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Statements
*/
@@ -14,7 +13,6 @@
* TSelectMappedStatment class.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TSelectMappedStatement.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Statements
* @since 3.1
*/
diff --git a/framework/Data/SqlMap/Statements/TSimpleDynamicSql.php b/framework/Data/SqlMap/Statements/TSimpleDynamicSql.php
index 3fce2e3a..b2e0356d 100644
--- a/framework/Data/SqlMap/Statements/TSimpleDynamicSql.php
+++ b/framework/Data/SqlMap/Statements/TSimpleDynamicSql.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TSimpleDynamicSql.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Statements
*/
@@ -14,7 +13,6 @@
* TSimpleDynamicSql class.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TSimpleDynamicSql.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Statements
* @since 3.1
*/
diff --git a/framework/Data/SqlMap/Statements/TStaticSql.php b/framework/Data/SqlMap/Statements/TStaticSql.php
index 1da6330e..f0110332 100644
--- a/framework/Data/SqlMap/Statements/TStaticSql.php
+++ b/framework/Data/SqlMap/Statements/TStaticSql.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TStaticSql.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Statements
*/
@@ -14,7 +13,6 @@
* TStaticSql class.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TStaticSql.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Statements
* @since 3.1
*/
diff --git a/framework/Data/SqlMap/Statements/TUpdateMappedStatement.php b/framework/Data/SqlMap/Statements/TUpdateMappedStatement.php
index d3c3acc4..9ba2458d 100644
--- a/framework/Data/SqlMap/Statements/TUpdateMappedStatement.php
+++ b/framework/Data/SqlMap/Statements/TUpdateMappedStatement.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TUpdateMappedStatement.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Statements
*/
@@ -14,7 +13,6 @@
* TUpdateMappedStatement class.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TUpdateMappedStatement.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap.Statements
* @since 3.1
*/
diff --git a/framework/Data/SqlMap/TSqlMapConfig.php b/framework/Data/SqlMap/TSqlMapConfig.php
index c6bd4754..d99b99d5 100644
--- a/framework/Data/SqlMap/TSqlMapConfig.php
+++ b/framework/Data/SqlMap/TSqlMapConfig.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TSqlMapConfig.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap
*/
@@ -18,7 +17,6 @@ Prado::using('System.Data.TDataSourceConfig');
* Database connection and TSqlMapManager configuration.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TSqlMapConfig.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap
* @since 3.1
*/
diff --git a/framework/Data/SqlMap/TSqlMapGateway.php b/framework/Data/SqlMap/TSqlMapGateway.php
index a0cebd9c..8ce09ee4 100644
--- a/framework/Data/SqlMap/TSqlMapGateway.php
+++ b/framework/Data/SqlMap/TSqlMapGateway.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TSqlMapGateway.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap
*/
@@ -23,7 +22,6 @@ Prado::using('System.Data.SqlMap.TSqlMapManager');
* This class should be instantiated from a TSqlMapManager instance.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TSqlMapGateway.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap
* @since 3.1
*/
diff --git a/framework/Data/SqlMap/TSqlMapManager.php b/framework/Data/SqlMap/TSqlMapManager.php
index 29234920..0fa6fd57 100644
--- a/framework/Data/SqlMap/TSqlMapManager.php
+++ b/framework/Data/SqlMap/TSqlMapManager.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TSqlMapManager.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap
*/
@@ -37,7 +36,6 @@ Prado::using('System.Caching.TCache');
* </code>
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TSqlMapManager.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data.SqlMap
* @since 3.1
*/
diff --git a/framework/Data/TDataSourceConfig.php b/framework/Data/TDataSourceConfig.php
index aff5f1af..ecece8c4 100644
--- a/framework/Data/TDataSourceConfig.php
+++ b/framework/Data/TDataSourceConfig.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDataSourceConfig.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data
*/
@@ -42,7 +41,6 @@ Prado::using('System.Data.TDbConnection');
* that extends the TDbConnection class.
*
* @author Wei Zhuo <weizho[at]gmail[dot]com>
- * @version $Id: TDataSourceConfig.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data
* @since 3.1
*/
diff --git a/framework/Data/TDbCommand.php b/framework/Data/TDbCommand.php
index e80d7704..43472ea4 100644
--- a/framework/Data/TDbCommand.php
+++ b/framework/Data/TDbCommand.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDbCommand.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data
*/
@@ -32,7 +31,6 @@
* You may also call {@link prepare} to explicitly prepare an SQL statement.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDbCommand.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data
* @since 3.0
*/
@@ -58,7 +56,7 @@ class TDbCommand extends TComponent
*/
public function __sleep()
{
- return array_diff(parent::__sleep(),array("\0TDbCommand\0_statement"));
+ return array_diff(parent::__sleep(),array("\0TDbCommand\0_statement"));
}
/**
@@ -134,7 +132,7 @@ class TDbCommand extends TComponent
* the form :name. For a prepared statement using question mark
* placeholders, this will be the 1-indexed position of the parameter.
* Unlike {@link bindValue}, the variable is bound as a reference and will
- * only be evaluated at the time that {@link execute} or {@link query} is called.
+ * only be evaluated at the time that {@link execute} or {@link query} is called.
* @param mixed Name of the PHP variable to bind to the SQL statement parameter
* @param int SQL data type of the parameter
* @param int length of the data type
diff --git a/framework/Data/TDbConnection.php b/framework/Data/TDbConnection.php
index fe04188c..b475c059 100644
--- a/framework/Data/TDbConnection.php
+++ b/framework/Data/TDbConnection.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDbConnection.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data
*/
@@ -77,7 +76,6 @@ Prado::using('System.Data.TDbCommand');
* of certain DBMS attributes, such as {@link getNullConversion NullConversion}.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDbConnection.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data
* @since 3.0
*/
@@ -136,7 +134,7 @@ class TDbConnection extends TComponent
public function __sleep()
{
// $this->close(); - DO NOT CLOSE the current connection as serializing doesn't neccessarily mean we don't this connection anymore in the current session
- return array_diff(parent::__sleep(),array("\0TDbConnection\0_pdo","\0TDbConnection\0_active"));
+ return array_diff(parent::__sleep(),array("\0TDbConnection\0_pdo","\0TDbConnection\0_active"));
}
/**
@@ -638,7 +636,6 @@ class TDbConnection extends TComponent
* TDbColumnCaseMode
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDbConnection.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data
* @since 3.0
*/
@@ -662,7 +659,6 @@ class TDbColumnCaseMode extends TEnumerable
* TDbNullConversionMode
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDbConnection.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data
* @since 3.0
*/
diff --git a/framework/Data/TDbDataReader.php b/framework/Data/TDbDataReader.php
index 718d355a..b28cd490 100644
--- a/framework/Data/TDbDataReader.php
+++ b/framework/Data/TDbDataReader.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDbDataReader.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data
*/
@@ -30,7 +29,6 @@
* for more details.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDbDataReader.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data
* @since 3.0
*/
diff --git a/framework/Data/TDbTransaction.php b/framework/Data/TDbTransaction.php
index f1be4e0b..8a2a0821 100644
--- a/framework/Data/TDbTransaction.php
+++ b/framework/Data/TDbTransaction.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDbTransaction.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data
*/
@@ -35,7 +34,6 @@ Prado::using('System.Data.TDbDataReader');
* </code>
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDbTransaction.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Data
* @since 3.0
*/
diff --git a/framework/Exceptions/TErrorHandler.php b/framework/Exceptions/TErrorHandler.php
index 3c9d8514..ad5fe662 100644
--- a/framework/Exceptions/TErrorHandler.php
+++ b/framework/Exceptions/TErrorHandler.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TErrorHandler.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Exceptions
*/
@@ -45,7 +44,6 @@
* <module id="error" class="TErrorHandler" ErrorTemplatePath="System.Exceptions" />
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TErrorHandler.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Exceptions
* @since 3.0
*/
diff --git a/framework/Exceptions/TException.php b/framework/Exceptions/TException.php
index c4fe62b4..24dbdb0f 100644
--- a/framework/Exceptions/TException.php
+++ b/framework/Exceptions/TException.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TException.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Exceptions
*/
@@ -28,7 +27,6 @@
* "message.txt" will be used instead.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TException.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Exceptions
* @since 3.0
*/
@@ -67,7 +65,7 @@ class TException extends Exception
$msgFile=$this->getErrorMessageFile();
// Cache messages
- if (!isset(self::$_messageCache[$msgFile]))
+ if (!isset(self::$_messageCache[$msgFile]))
{
if(($entries=@file($msgFile))!==false)
{
@@ -132,7 +130,6 @@ class TException extends Exception
* TSystemException is the base class for all framework-level exceptions.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TException.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Exceptions
* @since 3.0
*/
@@ -146,7 +143,6 @@ class TSystemException extends TException
* TApplicationException is the base class for all user application-level exceptions.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TException.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Exceptions
* @since 3.0
*/
@@ -160,7 +156,6 @@ class TApplicationException extends TException
* TInvalidOperationException represents an exception caused by invalid operations.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TException.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Exceptions
* @since 3.0
*/
@@ -174,7 +169,6 @@ class TInvalidOperationException extends TSystemException
* TInvalidDataTypeException represents an exception caused by invalid data type.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TException.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Exceptions
* @since 3.0
*/
@@ -188,7 +182,6 @@ class TInvalidDataTypeException extends TSystemException
* TInvalidDataValueException represents an exception caused by invalid data value.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TException.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Exceptions
* @since 3.0
*/
@@ -203,7 +196,6 @@ class TInvalidDataValueException extends TSystemException
* such as error in an application configuration file or control template file.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TException.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Exceptions
* @since 3.0
*/
@@ -217,7 +209,6 @@ class TConfigurationException extends TSystemException
* TTemplateException represents an exception caused by invalid template syntax.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TException.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Exceptions
* @since 3.1
*/
@@ -282,7 +273,6 @@ class TTemplateException extends TConfigurationException
* TIOException represents an exception related with improper IO operations.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TException.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Exceptions
* @since 3.0
*/
@@ -296,7 +286,6 @@ class TIOException extends TSystemException
* TDbException represents an exception related with DB operations.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TException.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Exceptions
* @since 3.0
*/
@@ -310,7 +299,6 @@ class TDbException extends TSystemException
* TDbConnectionException represents an exception caused by DB connection failure.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TException.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Exceptions
* @since 3.0
*/
@@ -324,7 +312,6 @@ class TDbConnectionException extends TDbException
* TNotSupportedException represents an exception caused by using an unsupported PRADO feature.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TException.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Exceptions
* @since 3.0
*/
@@ -339,7 +326,6 @@ class TNotSupportedException extends TSystemException
* This exception is mainly thrown within a PHP error handler.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TException.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Exceptions
* @since 3.0
*/
@@ -382,7 +368,6 @@ class TPhpErrorException extends TSystemException
* It is used by {@link TErrorHandler} to provide different error output to users.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TException.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Exceptions
* @since 3.0
*/
diff --git a/framework/I18N/TChoiceFormat.php b/framework/I18N/TChoiceFormat.php
index ad9a4500..4525aaad 100644
--- a/framework/I18N/TChoiceFormat.php
+++ b/framework/I18N/TChoiceFormat.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TChoiceFormat.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.I18N
*/
@@ -65,7 +64,7 @@ Prado::using('System.I18N.TTranslate');
* # <tt>&amp;</tt> -- conditional AND.
* # <tt>&amp;&amp;</tt> -- condition AND with short circuit.
* # <tt>|</tt> -- conditional OR.
- * # <tt>||</tt> -- conditional OR with short circuit.
+ * # <tt>||</tt> -- conditional OR with short circuit.
* # <tt>!</tt> -- negation.
*
* Additional round brackets can also be used to perform grouping.
diff --git a/framework/I18N/TDateFormat.php b/framework/I18N/TDateFormat.php
index 544e4973..e7846be7 100644
--- a/framework/I18N/TDateFormat.php
+++ b/framework/I18N/TDateFormat.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDateFormat.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.I18N
*/
@@ -165,7 +164,7 @@ class TDateFormat extends TI18NControl implements IDataRenderer
{
$this->setViewState('Value',$value,'');
}
-
+
/**
* Get the default text value for this control.
* @return string default text value
@@ -174,7 +173,7 @@ class TDateFormat extends TI18NControl implements IDataRenderer
{
return $this->getViewState('DefaultText','');
}
-
+
/**
* Set the default text value for this control.
* @param string default text value
@@ -222,7 +221,7 @@ class TDateFormat extends TI18NControl implements IDataRenderer
$defaultText = $this->getDefaultText();
if(empty($value) && !empty($defaultText))
return $this->getDefaultText();
-
+
$app = $this->getApplication()->getGlobalization();
//initialized the default class wide formatter
diff --git a/framework/I18N/TGlobalization.php b/framework/I18N/TGlobalization.php
index 6638af22..3fbaa2b4 100644
--- a/framework/I18N/TGlobalization.php
+++ b/framework/I18N/TGlobalization.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo<weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TGlobalization.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.I18N
*/
diff --git a/framework/I18N/TGlobalizationAutoDetect.php b/framework/I18N/TGlobalizationAutoDetect.php
index ad786401..a79a128d 100644
--- a/framework/I18N/TGlobalizationAutoDetect.php
+++ b/framework/I18N/TGlobalizationAutoDetect.php
@@ -4,7 +4,7 @@
*
* @author Wei Zhuo<weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
* @version $Revision: 1.66 $ $Date: ${DATE} ${TIME} $
* @package System.I18N
@@ -32,7 +32,7 @@ class TGlobalizationAutoDetect extends TGlobalization
parent::init($xml);
//set the culture according to browser language settings
- $http = new HTTPNegotiator();
+ $http = new HTTPNegotiator();
$languages = $http->getLanguages();
if(count($languages) > 0)
{
diff --git a/framework/I18N/TI18NControl.php b/framework/I18N/TI18NControl.php
index 97a7268a..96fc8b62 100644
--- a/framework/I18N/TI18NControl.php
+++ b/framework/I18N/TI18NControl.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TI18NControl.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.I18N
*/
diff --git a/framework/I18N/TNumberFormat.php b/framework/I18N/TNumberFormat.php
index 27c124f7..89eab245 100644
--- a/framework/I18N/TNumberFormat.php
+++ b/framework/I18N/TNumberFormat.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TNumberFormat.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.I18N
*/
@@ -116,7 +115,7 @@ class TNumberFormat extends TI18NControl implements IDataRenderer
{
return $this->getViewState('DefaultText','');
}
-
+
/**
* Set the default text value for this control.
* @param string default text value
diff --git a/framework/I18N/TTranslate.php b/framework/I18N/TTranslate.php
index 3382f925..1365b937 100644
--- a/framework/I18N/TTranslate.php
+++ b/framework/I18N/TTranslate.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TTranslate.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.I18N
*/
@@ -243,7 +242,7 @@ class TTranslate extends TI18NControl
$catalogue = $config['catalogue'];
if (empty($catalogue)) $catalogue='messages';
Translation::init($catalogue);
-
+
$key = $this->getKey();
if(!empty($key)) $text = $key;
diff --git a/framework/I18N/TTranslateParameter.php b/framework/I18N/TTranslateParameter.php
index b461a36a..d5c41230 100644
--- a/framework/I18N/TTranslateParameter.php
+++ b/framework/I18N/TTranslateParameter.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TTranslateParameter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.I18N
*/
diff --git a/framework/I18N/Translation.php b/framework/I18N/Translation.php
index 5219e132..9592ef53 100644
--- a/framework/I18N/Translation.php
+++ b/framework/I18N/Translation.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: Translation.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.I18N
*/
@@ -40,7 +39,7 @@ class Translation extends TComponent
public static function init($catalogue='messages')
{
static $saveEventHandlerAttached=false;
-
+
//initialized the default class wide formatter
if(!isset(self::$formatters[$catalogue]))
{
diff --git a/framework/I18N/core/CultureInfo.php b/framework/I18N/core/CultureInfo.php
index c22ed5c4..fc20b833 100644
--- a/framework/I18N/core/CultureInfo.php
+++ b/framework/I18N/core/CultureInfo.php
@@ -13,7 +13,6 @@
* {@link http://prado.sourceforge.net/}
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: CultureInfo.php 3187 2012-07-12 11:21:01Z ctrlaltca $
* @package System.I18N.core
*/
@@ -44,7 +43,6 @@
* For example, Australian English is "en_AU".
*
* @author Xiang Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: CultureInfo.php 3187 2012-07-12 11:21:01Z ctrlaltca $
* @package System.I18N.core
*/
class CultureInfo
diff --git a/framework/I18N/core/Gettext/TGettext.php b/framework/I18N/core/Gettext/TGettext.php
index abf32392..2c5f91c7 100644
--- a/framework/I18N/core/Gettext/TGettext.php
+++ b/framework/I18N/core/Gettext/TGettext.php
@@ -32,7 +32,7 @@
/**
* File::Gettext
- *
+ *
* @author Michael Wallner <mike@php.net>
* @license PHP License
*/
@@ -42,11 +42,11 @@
*/
//ini_set('track_errors', true);
-/**
+/**
* File_Gettext
- *
+ *
* GNU gettext file reader and writer.
- *
+ *
* #################################################################
* # All protected members of this class are public in its childs. #
* #################################################################
@@ -54,15 +54,15 @@
* @author Michael Wallner <mike@php.net>
* @version $Revision: 1.4 $
* @access public
- * @package System.I18N.core
+ * @package System.I18N.core
*/
class TGettext
{
/**
* strings
- *
+ *
* associative array with all [msgid => msgstr] entries
- *
+ *
* @access protected
* @var array
*/
@@ -70,40 +70,40 @@ class TGettext
/**
* meta
- *
- * associative array containing meta
+ *
+ * associative array containing meta
* information like project name or content type
- *
+ *
* @access protected
* @var array
*/
protected $meta = array();
-
+
/**
* file path
- *
+ *
* @access protected
* @var string
*/
protected $file = '';
-
+
/**
* Factory
*
* @static
* @access public
- * @return object Returns File_Gettext_PO or File_Gettext_MO on success
+ * @return object Returns File_Gettext_PO or File_Gettext_MO on success
* or PEAR_Error on failure.
* @param string $format MO or PO
* @param string $file path to GNU gettext file
*/
- function factory($format, $file = '')
+ static function factory($format, $file = '')
{
$format = strToUpper($format);
$filename = dirname(__FILE__).'/'.$format.'.php';
if(is_file($filename) == false)
throw new Exception ("Class file $file not found");
-
+
include_once $filename;
$class = 'TGettext_' . $format;
@@ -115,35 +115,35 @@ class TGettext
*
* That's a simple fake of the 'msgfmt' console command. It reads the
* contents of a GNU PO file and saves them to a GNU MO file.
- *
+ *
* @static
* @access public
* @return mixed Returns true on success or PEAR_Error on failure.
* @param string $pofile path to GNU PO file
* @param string $mofile path to GNU MO file
*/
- function poFile2moFile($pofile, $mofile)
+ static function poFile2moFile($pofile, $mofile)
{
if (!is_file($pofile)) {
throw new Exception("File $pofile doesn't exist.");
}
-
+
include_once dirname(__FILE__).'/PO.php';
-
+
$PO = new TGettext_PO($pofile);
if (true !== ($e = $PO->load())) {
return $e;
}
-
+
$MO = $PO->toMO();
if (true !== ($e = $MO->save($mofile))) {
return $e;
}
unset($PO, $MO);
-
+
return true;
}
-
+
/**
* prepare
*
@@ -153,7 +153,7 @@ class TGettext
* @param string $string
* @param bool $reverse
*/
- function prepare($string, $reverse = false)
+ static function prepare($string, $reverse = false)
{
if ($reverse) {
$smap = array('"', "\n", "\t", "\r");
@@ -166,7 +166,7 @@ class TGettext
return (string) str_replace($smap, $rmap, $string);
}
}
-
+
/**
* meta2array
*
@@ -175,7 +175,7 @@ class TGettext
* @return array
* @param string $meta
*/
- function meta2array($meta)
+ static function meta2array($meta)
{
$array = array();
foreach (explode("\n", $meta) as $info) {
@@ -189,7 +189,7 @@ class TGettext
/**
* toArray
- *
+ *
* Returns meta info and strings as an array of a structure like that:
* <code>
* array(
@@ -206,7 +206,7 @@ class TGettext
* )
* )
* </code>
- *
+ *
* @see fromArray()
* @access protected
* @return array
@@ -215,10 +215,10 @@ class TGettext
{
return array('meta' => $this->meta, 'strings' => $this->strings);
}
-
+
/**
* fromArray
- *
+ *
* Assigns meta info and strings from an array of a structure like that:
* <code>
* array(
@@ -235,7 +235,7 @@ class TGettext
* )
* )
* </code>
- *
+ *
* @see toArray()
* @access protected
* @return bool
@@ -255,7 +255,7 @@ class TGettext
}
return true;
}
-
+
/**
* toMO
*
@@ -269,7 +269,7 @@ class TGettext
$MO->fromArray($this->toArray());
return $MO;
}
-
+
/**
* toPO
*
diff --git a/framework/I18N/core/MessageCache.php b/framework/I18N/core/MessageCache.php
index 3bd21704..ad310258 100644
--- a/framework/I18N/core/MessageCache.php
+++ b/framework/I18N/core/MessageCache.php
@@ -2,7 +2,6 @@
/**
* Translation table cache.
* @author $Author: weizhuo $
- * @version $Id: MessageCache.php 3188 2012-07-12 12:13:23Z ctrlaltca $
* @package System.I18N.core
*/
@@ -16,9 +15,8 @@ require_once(dirname(__FILE__).'/TCache_Lite.php');
* It can cache each cataloug+variant or just the whole section.
* @package System.I18N.core
* @author $Author: weizhuo $
- * @version $Id: MessageCache.php 3188 2012-07-12 12:13:23Z ctrlaltca $
*/
-class MessageCache
+class MessageCache
{
/**
@@ -31,16 +29,16 @@ class MessageCache
* Caceh life time, default is 1 year.
*/
protected $lifetime = 3153600;
-
+
/**
* Create a new Translation cache.
* @param string $cacheDir Directory to store the cache files.
*/
public function __construct($cacheDir)
- {
+ {
$cacheDir = $cacheDir.'/';
-
+
if(!is_dir($cacheDir))
throw new Exception(
'The cache directory '.$cacheDir.' does not exists.'.
@@ -49,7 +47,7 @@ class MessageCache
throw new Exception(
'The cache directory '.$cacheDir.' must be writable '.
'by the server.');
-
+
$options = array(
'cacheDir' => $cacheDir,
'lifeTime' => $this->getLifeTime(),
@@ -102,31 +100,31 @@ class MessageCache
* @param string $catalogue The translation section.
* @param string $culture The translation locale, e.g. "en_AU".
* @param string $filename If the source is a file, this file's modified
- * time is newer than the cache's modified time, no cache hit.
+ * time is newer than the cache's modified time, no cache hit.
* @return mixed Boolean FALSE if no cache hit. Otherwise, translation
* table data for the specified section and locale.
*/
- public function get($catalogue, $culture, $lastmodified=0)
+ public function get($catalogue, $culture, $lastmodified=0)
{
$ID = $this->getID($catalogue, $culture);
- $group = $this->getGroup($catalogue, $culture);
+ $group = $this->getGroup($catalogue, $culture);
$this->cache->_setFileName($ID, $group);
$cache = $this->cache->getCacheFile();
-
- if(is_file($cache) == false)
+
+ if(is_file($cache) == false)
return false;
$lastmodified = (int)$lastmodified;
-
+
if($lastmodified <= 0 || $lastmodified > filemtime($cache))
- return false;
-
+ return false;
+
//echo '@@ Cache hit: "'.$ID.'" : "'.$group.'"';
//echo "<br>\n";
-
+
return $this->cache->get($ID, $group);
}
@@ -136,28 +134,28 @@ class MessageCache
* @param string $catalogue The translation section.
* @param string $culture The translation locale, e.g. "en_AU".
*/
- public function save($data, $catalogue, $culture)
- {
+ public function save($data, $catalogue, $culture)
+ {
$ID = $this->getID($catalogue, $culture);
- $group = $this->getGroup($catalogue, $culture);
-
+ $group = $this->getGroup($catalogue, $culture);
+
//echo '## Cache save: "'.$ID.'" : "'.$group.'"';
//echo "<br>\n";
-
+
return $this->cache->save($data, $ID, $group);
}
-
+
/**
* Clean up the cache for the specified section and locale.
* @param string $catalogue The translation section.
* @param string $culture The translation locale, e.g. "en_AU".
*/
- public function clean($catalogue, $culture)
+ public function clean($catalogue, $culture)
{
- $group = $this->getGroup($catalogue, $culture);
+ $group = $this->getGroup($catalogue, $culture);
$this->cache->clean($group);
}
-
+
/**
* Flush the cache. Deletes all the cache files.
*/
diff --git a/framework/I18N/core/TCache_Lite.php b/framework/I18N/core/TCache_Lite.php
index a0629bd1..69e1c308 100644
--- a/framework/I18N/core/TCache_Lite.php
+++ b/framework/I18N/core/TCache_Lite.php
@@ -38,7 +38,6 @@
* Mike BENOIT <ipso@snappymail.ca>
*
* @package System.I18N.core
-* @version $Id: TCache_Lite.php 3188 2012-07-12 12:13:23Z ctrlaltca $
* @author Fabien MARTY <fab@php.net>
* @copyright 1997-2005 The PHP Group
* @license http://www.gnu.org/copyleft/lesser.html GNU LGPL
diff --git a/framework/IO/TTarFileExtractor.php b/framework/IO/TTarFileExtractor.php
index ca67320d..cb613fff 100644
--- a/framework/IO/TTarFileExtractor.php
+++ b/framework/IO/TTarFileExtractor.php
@@ -4,7 +4,6 @@
*
* @author Vincent Blavet <vincent@phpconcept.net>
* @copyright Copyright &copy; 1997-2003 The PHP Group
- * @version $Id: TTarFileExtractor.php 3188 2012-07-12 12:13:23Z ctrlaltca $
* @package System.IO
*/
@@ -31,7 +30,6 @@
* TTarFileExtractor class
*
* @author Vincent Blavet <vincent@phpconcept.net>
- * @version $Id: TTarFileExtractor.php 3188 2012-07-12 12:13:23Z ctrlaltca $
* @package System.IO
* @since 3.0
*/
diff --git a/framework/IO/TTextWriter.php b/framework/IO/TTextWriter.php
index f5930a73..f888083d 100644
--- a/framework/IO/TTextWriter.php
+++ b/framework/IO/TTextWriter.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TTextWriter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.IO
*/
@@ -18,7 +17,6 @@
* and can be obtained by calling {@link flush()}.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TTextWriter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.IO
* @since 3.0
*/
diff --git a/framework/PradoBase.php b/framework/PradoBase.php
index 6e884cec..407411b7 100644
--- a/framework/PradoBase.php
+++ b/framework/PradoBase.php
@@ -7,9 +7,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: PradoBase.php 3325 2013-09-13 08:19:04Z ctrlaltca $
* @package System
*/
@@ -34,7 +33,6 @@ if(!defined('PRADO_CHMOD'))
* rewritten for customization.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: PradoBase.php 3325 2013-09-13 08:19:04Z ctrlaltca $
* @package System
* @since 3.0
*/
@@ -71,7 +69,7 @@ class PradoBase
*/
public static function getVersion()
{
- return '3.2.3';
+ return '3.2.4';
}
/**
diff --git a/framework/Security/IUserManager.php b/framework/Security/IUserManager.php
index 390189cb..0ca65929 100644
--- a/framework/Security/IUserManager.php
+++ b/framework/Security/IUserManager.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: IUserManager.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Security
*/
@@ -18,7 +17,6 @@
* and {@link TUser}.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: IUserManager.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Security
* @since 3.0
*/
diff --git a/framework/Security/TAuthManager.php b/framework/Security/TAuthManager.php
index e30b0bcb..2bf6a5b1 100644
--- a/framework/Security/TAuthManager.php
+++ b/framework/Security/TAuthManager.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TAuthManager.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Security
*/
@@ -26,7 +25,7 @@ Prado::using('System.Security.IUserManager');
* To login or logout a user, call {@link login} or {@link logout}, respectively.
*
* The {@link setAuthExpire AuthExpire} property can be used to define the time
- * in seconds after which the authentication should expire.
+ * in seconds after which the authentication should expire.
* {@link setAllowAutoLogin AllowAutoLogin} specifies if the login information
* should be stored in a cookie to perform automatic login. Enabling this
* feature will cause that {@link setAuthExpire AuthExpire} has no effect
@@ -37,7 +36,6 @@ Prado::using('System.Security.IUserManager');
* <module id="users" class="System.Security.TUserManager" />
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TAuthManager.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Security
* @since 3.0
*/
@@ -290,7 +288,7 @@ class TAuthManager extends TModule
$user=$this->_userManager->getUser(null)->loadFromString($sessionInfo);
// check for authentication expiration
- $isAuthExpired = $this->_authExpire>0 && !$user->getIsGuest() &&
+ $isAuthExpired = $this->_authExpire>0 && !$user->getIsGuest() &&
($expiretime=$session->itemAt('AuthExpireTime')) && $expiretime<time();
// try authenticating through cookie if possible
@@ -321,7 +319,7 @@ class TAuthManager extends TModule
if($this->hasEventHandler('OnAuthenticate'))
$this->raiseEvent('OnAuthenticate',$this,$application);
}
-
+
/**
* Performs user logout on authentication expiration.
* An 'OnAuthExpire' event will be raised if there is any handler attached to it.
@@ -333,7 +331,7 @@ class TAuthManager extends TModule
if($this->hasEventHandler('OnAuthExpire'))
$this->raiseEvent('OnAuthExpire',$this,$param);
}
-
+
/**
* Performs the real authorization work.
* Authorization rules obtained from the application will be used to check
diff --git a/framework/Security/TAuthorizationRule.php b/framework/Security/TAuthorizationRule.php
index cae28bfb..aa9bed90 100644
--- a/framework/Security/TAuthorizationRule.php
+++ b/framework/Security/TAuthorizationRule.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TAuthorizationRule.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Security
*/
/**
@@ -25,7 +24,6 @@
* IP rules are separated by comma ',' and can contain wild card in the rules (e.g. '192.132.23.33, 192.122.*.*')
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TAuthorizationRule.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Security
* @since 3.0
*/
@@ -249,7 +247,6 @@ class TAuthorizationRule extends TComponent
* To check if a user is allowed, call {@link isUserAllowed}.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TAuthorizationRule.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Security
* @since 3.0
*/
diff --git a/framework/Security/TDbUserManager.php b/framework/Security/TDbUserManager.php
index aabd6e5c..0832dfe5 100644
--- a/framework/Security/TDbUserManager.php
+++ b/framework/Security/TDbUserManager.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDbUserManager.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Security
*/
@@ -44,7 +43,6 @@ Prado::using('System.Security.TUser');
* which specifies how to establish database connection to retrieve user information.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDbUserManager.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Security
* @since 3.1.0
*/
@@ -216,7 +214,6 @@ class TDbUserManager extends TModule implements IUserManager
* - {@link createUser()}: creates a new user instance given the username
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDbUserManager.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Security
* @since 3.1.0
*/
diff --git a/framework/Security/TSecurityManager.php b/framework/Security/TSecurityManager.php
index b5267db1..bdb85564 100644
--- a/framework/Security/TSecurityManager.php
+++ b/framework/Security/TSecurityManager.php
@@ -5,9 +5,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TSecurityManager.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Security
*/
@@ -36,7 +35,6 @@
* Note, to use encryption, the PHP Mcrypt extension must be loaded.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TSecurityManager.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Security
* @since 3.0
*/
@@ -354,7 +352,6 @@ class TSecurityManager extends TModule
* - SHA1: an SHA1 hash is generated from the data and used for validation.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TSecurityManager.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Security
* @since 3.0.4
*/
diff --git a/framework/Security/TUser.php b/framework/Security/TUser.php
index 3a7a3fa0..8a229b1a 100644
--- a/framework/Security/TUser.php
+++ b/framework/Security/TUser.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TUser.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Security
*/
@@ -27,7 +26,6 @@ Prado::using('System.Security.IUserManager');
* TUser is meant to be used together with {@link IUserManager}.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TUser.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Security
* @since 3.0
*/
diff --git a/framework/Security/TUserManager.php b/framework/Security/TUserManager.php
index 5cb716dd..4ad67a15 100644
--- a/framework/Security/TUserManager.php
+++ b/framework/Security/TUserManager.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TUserManager.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Security
*/
@@ -64,7 +63,6 @@ Prado::using('System.Security.TUser');
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @author Carl Mathisen <carl@kamikazemedia.no>
- * @version $Id: TUserManager.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Security
* @since 3.0
*/
@@ -108,7 +106,7 @@ class TUserManager extends TModule implements IUserManager
*/
public function init($config)
{
- $this->loadUserData($config);
+ $this->loadUserData($config);
if($this->_userFile!==null)
{
if($this->getApplication()->getConfigurationType()==TApplication::CONFIG_TYPE_PHP)
@@ -125,7 +123,7 @@ class TUserManager extends TModule implements IUserManager
}
$this->_initialized=true;
}
-
+
/*
* Loads user/role information
* @param mixed the variable containing the user information
@@ -389,7 +387,6 @@ class TUserManager extends TModule implements IUserManager
* - SHA1: the password is recorded as the SHA1 hash value of the original password
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TUserManager.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Security
* @since 3.0.4
*/
diff --git a/framework/TApplication.php b/framework/TApplication.php
index 7769a9e0..bb5d1d7a 100644
--- a/framework/TApplication.php
+++ b/framework/TApplication.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TApplication.php 3317 2013-09-03 10:19:09Z ctrlaltca $
* @package System
*/
@@ -105,7 +104,6 @@ Prado::using('System.I18N.TGlobalization');
* </code>
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TApplication.php 3317 2013-09-03 10:19:09Z ctrlaltca $
* @package System
* @since 3.0
*/
@@ -131,7 +129,7 @@ class TApplication extends TComponent
/**
* File extension for external config files
*/
- const CONFIG_FILE_EXT_XML='.xml';
+ const CONFIG_FILE_EXT_XML='.xml';
/**
* Configuration file type, application.xml and config.xml
*/
@@ -296,7 +294,7 @@ class TApplication extends TComponent
* @var TApplicationMode application mode
*/
private $_mode=TApplicationMode::Debug;
-
+
/**
* @var string Customizable page service ID
*/
@@ -334,7 +332,7 @@ class TApplication extends TComponent
$this->_uniqueID=md5($this->_runtimePath);
$this->_parameters=new TMap;
$this->_services=array($this->getPageServiceID()=>array('TPageService',array(),null));
-
+
Prado::setPathOfAlias('Application',$this->_basePath);
}
@@ -521,7 +519,7 @@ class TApplication extends TComponent
{
$this->_id=$value;
}
-
+
/**
* @return string page service ID
*/
@@ -609,7 +607,7 @@ class TApplication extends TComponent
{
$this->_configType = $value;
}
-
+
/**
* @return string the application configuration type. default is 'xml'
*/
@@ -628,7 +626,7 @@ class TApplication extends TComponent
}
return $this->_configFileExt;
}
-
+
/**
* @return string the default configuration file name
*/
@@ -999,7 +997,7 @@ class TApplication extends TComponent
foreach($config->getProperties() as $name=>$value)
$this->setSubProperty($name,$value);
}
-
+
if(empty($this->_services))
$this->_services=array($this->getPageServiceID()=>array('TPageService',array(),null));
@@ -1081,7 +1079,7 @@ class TApplication extends TComponent
if(($serviceID=$this->getRequest()->resolveRequest(array_keys($this->_services)))===null)
$serviceID=$this->getPageServiceID();
-
+
$this->startService($serviceID);
}
@@ -1280,7 +1278,6 @@ class TApplication extends TComponent
* - Normal: the application is running in normal production mode.
* - Performance: the application is running in performance mode.
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TApplication.php 3317 2013-09-03 10:19:09Z ctrlaltca $
* @package System
* @since 3.0.4
*/
@@ -1300,7 +1297,6 @@ class TApplicationMode extends TEnumerable
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @author Carl G. Mathisen <carlgmathisen@gmail.com>
- * @version $Id: TApplication.php 3317 2013-09-03 10:19:09Z ctrlaltca $
* @package System
* @since 3.0
*/
@@ -1382,7 +1378,7 @@ class TApplicationConfiguration extends TComponent
$this->_properties[$name]=$value;
}
$this->_empty = false;
- }
+ }
if(isset($config['paths']) && is_array($config['paths']))
$this->loadPathsPhp($config['paths'],$configPath);
@@ -1395,7 +1391,7 @@ class TApplicationConfiguration extends TComponent
if(isset($config['parameters']) && is_array($config['parameters']))
$this->loadParametersPhp($config['parameters'], $configPath);
-
+
if(isset($config['includes']) && is_array($config['includes']))
$this->loadExternalXml($config['includes'],$configPath);
}
@@ -1541,7 +1537,7 @@ class TApplicationConfiguration extends TComponent
$properties['id'] = $id;
$this->_modules[$id]=array($type,$properties,$module);
$this->_empty=false;
- }
+ }
}
/**
@@ -1589,7 +1585,7 @@ class TApplicationConfiguration extends TComponent
$properties['id'] = $id;
$this->_services[$id] = array($type,$properties,$service);
$this->_empty = false;
- }
+ }
}
/**
@@ -1809,7 +1805,6 @@ class TApplicationConfiguration extends TComponent
* Cache will be exploited if it is enabled.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TApplication.php 3317 2013-09-03 10:19:09Z ctrlaltca $
* @package System
* @since 3.0
*/
diff --git a/framework/TApplicationComponent.php b/framework/TApplicationComponent.php
index a307d54b..a906a232 100644
--- a/framework/TApplicationComponent.php
+++ b/framework/TApplicationComponent.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TApplicationComponent.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System
*/
@@ -28,7 +27,6 @@
* publishing private files: {@link publishAsset} and {@link publishFilePath}.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TApplicationComponent.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System
* @since 3.0
*/
diff --git a/framework/TComponent.php b/framework/TComponent.php
index e9fa5a65..484a3186 100644
--- a/framework/TComponent.php
+++ b/framework/TComponent.php
@@ -3,14 +3,13 @@
* TComponent, TPropertyValue classes
*
* @author Qiang Xue <qiang.xue@gmail.com>
- *
+ *
* Global Events, intra-object events, Class behaviors, expanded behaviors
* @author Brad Anderson <javalizard@mac.com>
- *
+ *
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TComponent.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System
*/
@@ -56,7 +55,7 @@
* </code>
* Js-friendly properties can be accessed using both their Js-less name and their Js-enabled name:
* <code>
- * // set some simple text as property value
+ * // set some simple text as property value
* $component->Text = 'text';
* // set some javascript code as property value
* $component->JsText = 'raw javascript';
@@ -65,7 +64,7 @@
* clientside inside a javascript block.
* In the second case, the property will be 'marked' as being a safe javascript
* statement and will not be encoded when rendered inside a javascript block.
- * This special handling makes use of the {@link TJavaScriptLiteral} class.
+ * This special handling makes use of the {@link TJavaScriptLiteral} class.
*
* Events
*
@@ -100,40 +99,40 @@
* - array($object,'buttonClicked') : $object->buttonClicked($sender,$param);
* - array($object,'MainContent.SubmitButton.buttonClicked') :
* $object->MainContent->SubmitButton->buttonClicked($sender,$param);
- *
- * With the addition of behaviors, a more expansive event model is needed. There
- * are two new event types (global and dynamic events) as well as a more comprehensive
+ *
+ * With the addition of behaviors, a more expansive event model is needed. There
+ * are two new event types (global and dynamic events) as well as a more comprehensive
* behavior model that includes class wide behaviors.
*
* A global event is defined by all events whose name starts with 'fx'.
- * The event name is potentially a method name and is thus case-insensitive. All 'fx' events
+ * The event name is potentially a method name and is thus case-insensitive. All 'fx' events
* are valid as the whole 'fx' event/method space is global in nature. Any object may patch into
- * any global event by defining that event as a method. Global events have priorities
- * just like 'on' events; so as to be able to order the event execution. Due to the
- * nature of all events which start with 'fx' being valid, in effect, every object
- * has every 'fx' global event. It is simply an issue of tapping into the desired
+ * any global event by defining that event as a method. Global events have priorities
+ * just like 'on' events; so as to be able to order the event execution. Due to the
+ * nature of all events which start with 'fx' being valid, in effect, every object
+ * has every 'fx' global event. It is simply an issue of tapping into the desired
* global event.
*
* A global event that starts with 'fx' can be called even if the object does not
* implement the method of the global event. A call to a non-existing 'fx' method
- * will, at minimal, function and return null. If a method argument list has a first
+ * will, at minimal, function and return null. If a method argument list has a first
* parameter, it will be returned instead of null. This allows filtering and chaining.
* 'fx' methods do not automatically install and uninstall. To install and uninstall an
- * object's global event listeners, call the object's {@link listen} and
+ * object's global event listeners, call the object's {@link listen} and
* {@link unlisten} methods, respectively. An object may auto-install its global event
* during {@link __construct} by overriding {@link getAutoGlobalListen} and returning true.
- *
+ *
* As of PHP version 5.3, nulled objects without code references will still continue to persist
* in the global event queue because {@link __destruct} is not automatically called. In the common
* __destruct method, if an object is listening to global events, then {@link unlisten} is called.
* {@link unlisten} is required to be manually called before an object is
- * left without references if it is currently listening to any global events. This includes
+ * left without references if it is currently listening to any global events. This includes
* class wide behaviors.
*
- * An object that contains a method that starts with 'fx' will have those functions
+ * An object that contains a method that starts with 'fx' will have those functions
* automatically receive those events of the same name after {@link listen} is called on the object.
*
- * An object may listen to a global event without defining an 'fx' method of the same name by
+ * An object may listen to a global event without defining an 'fx' method of the same name by
* adding an object method to the global event list. For example
* <code>
* $component->fxGlobalCheck=$callback; // or $component->OnClick->add($callback);
@@ -142,27 +141,27 @@
*
* Events between Objects and their behaviors, Dynamic Events
*
- * An intra-object/behavior event is defined by methods that start with 'dy'. Just as with
+ * An intra-object/behavior event is defined by methods that start with 'dy'. Just as with
* 'fx' global events, every object has every dynamic event. Any call to a method that
- * starts with 'dy' will be handled, regardless of whether it is implemented. These
+ * starts with 'dy' will be handled, regardless of whether it is implemented. These
* events are for communicating with attached behaviors.
- *
+ *
* Dynamic events can be used in a variety of ways. They can be used to tell behaviors
* when a non-behavior method is called. Dynamic events could be used as data filters.
- * They could also be used to specify when a piece of code is to be run, eg. should the
+ * They could also be used to specify when a piece of code is to be run, eg. should the
* loop process be performed on a particular piece of data. In this way, some control
* is handed to the behaviors over the process and/or data.
- *
+ *
* If there are no handlers for an 'fx' or 'dy' event, it will return the first
* parameter of the argument list. If there are no arguments, these events
* will return null. If there are handlers an 'fx' method will be called directly
* within the object. Global 'fx' events are triggered by calling {@link raiseEvent}.
- * For dynamic events where there are behaviors that respond to the dynamic events, a
+ * For dynamic events where there are behaviors that respond to the dynamic events, a
* {@link TCallChain} is developed. A call chain allows the behavior dynamic event
* implementations to call further implementing behaviors within a chain.
- *
- * If an object implements {@link IDynamicMethods}, all global and object dynamic
- * events will be sent to {@link __dycall}. In the case of global events, all
+ *
+ * If an object implements {@link IDynamicMethods}, all global and object dynamic
+ * events will be sent to {@link __dycall}. In the case of global events, all
* global events will trigger this method. In the case of behaviors, all undefined
* dynamic events which are called will be passed through to this method.
*
@@ -171,29 +170,29 @@
*
* There are two types of behaviors. There are individual object behaviors and
* there are class wide behaviors. Class behaviors depend upon object behaviors.
- *
+ *
* When a new class implements {@link IBehavior} or {@link IClassBehavior} or
- * extends {@link TBehavior} or {@link TClassBehavior}, it may be added to an
+ * extends {@link TBehavior} or {@link TClassBehavior}, it may be added to an
* object by calling the object's {@link attachBehavior}. The behaviors associated
- * name can then be used to {@link enableBehavior} or {@link disableBehavior}
+ * name can then be used to {@link enableBehavior} or {@link disableBehavior}
* the specific behavior.
*
- * All behaviors may be turned on and off via {@link enableBehaviors} and
+ * All behaviors may be turned on and off via {@link enableBehaviors} and
* {@link disableBehaviors}, respectively. To check if behaviors are on or off
* a call to {@link getBehaviorsEnabled} will provide the variable.
- *
- * Attaching and detaching whole sets of behaviors is done using
+ *
+ * Attaching and detaching whole sets of behaviors is done using
* {@link attachBehaviors} and {@link detachBehaviors}. {@link clearBehaviors}
* removes all of an object's behaviors.
*
* {@link asa} returns a behavior of a specific name. {@link isa} is the
* behavior inclusive function that acts as the PHP operator {@link instanceof}.
* A behavior could provide the functionality of a specific class thus causing
- * the host object to act similarly to a completely different class. A behavior
- * would then implement {@link IInstanceCheck} to provide the identity of the
+ * the host object to act similarly to a completely different class. A behavior
+ * would then implement {@link IInstanceCheck} to provide the identity of the
* different class.
*
- * Class behaviors are similar to object behaviors except that the class behavior
+ * Class behaviors are similar to object behaviors except that the class behavior
* is the implementation for all instances of the class. A class behavior
* will have the object upon which is being called be prepended to the parameter
* list. This way the object is known across the class behavior implementation.
@@ -202,12 +201,12 @@
* using {@link detachClassBehavior}. Class behaviors are important in that
* they will be applied to all new instances of a particular class. In this way
* class behaviors become default behaviors to a new instances of a class in
- * {@link __construct}. Detaching a class behavior will remove the behavior
+ * {@link __construct}. Detaching a class behavior will remove the behavior
* from the default set of behaviors created for an object when the object
* is instanced.
*
- * Class behaviors are also added to all existing instances via the global 'fx'
- * event mechanism. When a new class behavior is added, the event
+ * Class behaviors are also added to all existing instances via the global 'fx'
+ * event mechanism. When a new class behavior is added, the event
* {@link fxAttachClassBehavior} is raised and all existing instances that are
* listening to this global event (primarily after {@link listen} is called)
* will have this new behavior attached. A similar process is used when
@@ -218,8 +217,8 @@
*
* Dynamic events start with 'dy'. This mechanism is used to allow objects
* to communicate with their behaviors directly. The entire 'dy' event space
- * is valid. All attached, enabled behaviors that implement a dynamic event
- * are called when the host object calls the dynamic event. If there is no
+ * is valid. All attached, enabled behaviors that implement a dynamic event
+ * are called when the host object calls the dynamic event. If there is no
* implementation or behaviors, this returns null when no parameters are
* supplied and will return the first parameter when there is at least one
* parameter in the dynamic event.
@@ -228,7 +227,7 @@
* 5 == $this->dyBehaviorEvent(5); //when no behaviors implement this dynamic event
* </code>
*
- * Dynamic events can be chained together within behaviors to allow for data
+ * Dynamic events can be chained together within behaviors to allow for data
* filtering. Dynamic events are implemented within behaviors by defining the
* event as a method.
* <code>
@@ -239,8 +238,8 @@
* }
* }
* </code>
- * This implementation of a behavior and dynamic event will flow through to the
- * next behavior implementing the dynamic event. The first parameter is always
+ * This implementation of a behavior and dynamic event will flow through to the
+ * next behavior implementing the dynamic event. The first parameter is always
* return when it is supplied. Otherwise a dynamic event returns null.
*
* In the case of a class behavior, the object is also prepended to the dynamic
@@ -258,26 +257,25 @@
*
* Global Event and Dynamic event catching
*
- * Given that all global 'fx' events and dynamic 'dy' events are valid and
+ * Given that all global 'fx' events and dynamic 'dy' events are valid and
* operational, there is a mechanism for catching events called that are not
* implemented (similar to the built-in PHP method {@link __call}). When
- * a dynamic or global event is called but a behavior does not implement it,
- * yet desires to know when an undefined dynamic event is run, the behavior
+ * a dynamic or global event is called but a behavior does not implement it,
+ * yet desires to know when an undefined dynamic event is run, the behavior
* implements the interface {@link IDynamicMethods} and method {@link __dycall}.
*
- * In the case of dynamic events, {@link __dycall} is supplied with the method
+ * In the case of dynamic events, {@link __dycall} is supplied with the method
* name and its parameters. When a global event is raised, via {@link raiseEvent},
* the method is the event name and the parameters are supplied.
*
* When implemented, this catch-all mechanism is called for event global event event
* when implemented outside of a behavior. Within a behavior, it will also be called
- * when the object to which the behavior is attached calls any unimplemented dynamic
- * event. This is the fall-back mechanism for informing a class and/or behavior
+ * when the object to which the behavior is attached calls any unimplemented dynamic
+ * event. This is the fall-back mechanism for informing a class and/or behavior
* of when an global and/or undefined dynamic event is executed.
- *
+ *
* @author Qiang Xue <qiang.xue@gmail.com>
* @author Brad Anderson <javalizard@mac.com>
- * @version $Id: TComponent.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System
* @since 3.0
*/
@@ -287,18 +285,18 @@ class TComponent
* @var array event handler lists
*/
private $_e=array();
-
+
/**
- * @var boolean if listening is enabled. Automatically turned on or off in
+ * @var boolean if listening is enabled. Automatically turned on or off in
* constructor according to {@link getAutoGlobalListen}. Default false, off
*/
private $_listeningenabled=false;
-
+
/**
* @var array static registered global event handler lists
*/
private static $_ue=array();
-
+
/**
* @var boolean if object behaviors are on or off. default true, on
*/
@@ -308,13 +306,13 @@ class TComponent
* @var TPriorityMap list of object behaviors
*/
private $_m=null;
-
+
/**
* @var array static global class behaviors, these behaviors are added upon instantiation of a class
*/
private static $_um=array();
-
-
+
+
/**
* @const string the name of the global {@link raiseEvent} listener
*/
@@ -323,7 +321,7 @@ class TComponent
/**
* The common __construct
- * If desired by the new object, this will auto install and listen to global event functions
+ * If desired by the new object, this will auto install and listen to global event functions
* as defined by the object via 'fx' methods. This also attaches any predefined behaviors.
* This function installs all class behaviors in a class hierarchy from the deepest subclass
* through each parent to the top most class, TComponent.
@@ -331,22 +329,22 @@ class TComponent
public function __construct() {
if($this->getAutoGlobalListen())
$this->listen();
-
+
$classes=array_reverse($this->getClassHierarchy(true));
foreach($classes as $class) {
if(isset(self::$_um[$class]))
$this->attachBehaviors(self::$_um[$class]);
}
}
-
-
+
+
/**
* Tells TComponent whether or not to automatically listen to global events.
* Defaults to false because PHP variable cleanup is affected if this is true.
* When unsetting a variable that is listening to global events, {@link unlisten}
* must explicitly be called when cleaning variables allocation or else the global
* event registry will contain references to the old object. This is true for PHP 5.4
- *
+ *
* Override this method by a subclass to change the setting. When set to true, this
* will enable {@link __construct} to call {@link listen}.
*
@@ -368,19 +366,19 @@ class TComponent
if($this->_listeningenabled)
$this->unlisten();
}
-
-
+
+
/**
- * This utility function is a private array filter method. The array values
+ * This utility function is a private array filter method. The array values
* that start with 'fx' are filtered in.
*/
private function filter_prado_fx($name) {
return strncasecmp($name,'fx',2)===0;
}
-
-
+
+
/**
- * This returns an array of the class name and the names of all its parents. The base object first,
+ * This returns an array of the class name and the names of all its parents. The base object first,
* {@link TComponent}, and the deepest subclass is last.
* @param boolean optional should the names be all lowercase true/false
* @return array array of strings being the class hierarchy of $this.
@@ -394,10 +392,10 @@ class TComponent
return array_map('strtolower',$classes);
return $classes;
}
-
-
+
+
/**
- * This adds an object's fx event handlers into the global broadcaster to listen into any
+ * This adds an object's fx event handlers into the global broadcaster to listen into any
* broadcast global events called through {@link raiseEvent}
*
* Behaviors may implement the function:
@@ -413,24 +411,24 @@ class TComponent
public function listen() {
if($this->_listeningenabled)
return;
-
+
$fx=array_filter(get_class_methods($this),array($this,'filter_prado_fx'));
-
+
foreach($fx as $func)
$this->attachEventHandler($func,array($this,$func));
-
+
if(is_a($this,'IDynamicMethods')) {
$this->attachEventHandler(TComponent::GLOBAL_RAISE_EVENT_LISTENER,array($this,'__dycall'));
array_push($fx,TComponent::GLOBAL_RAISE_EVENT_LISTENER);
}
-
+
$this->_listeningenabled=true;
-
+
$this->dyListen($fx);
-
+
return count($fx);
}
-
+
/**
* this removes an object's fx events from the global broadcaster
*
@@ -447,24 +445,24 @@ class TComponent
public function unlisten() {
if(!$this->_listeningenabled)
return;
-
+
$fx=array_filter(get_class_methods($this),array($this,'filter_prado_fx'));
-
+
foreach($fx as $func)
$this->detachEventHandler($func,array($this,$func));
-
+
if(is_a($this,'IDynamicMethods')) {
$this->detachEventHandler(TComponent::GLOBAL_RAISE_EVENT_LISTENER,array($this,'__dycall'));
array_push($fx,TComponent::GLOBAL_RAISE_EVENT_LISTENER);
}
-
+
$this->_listeningenabled=false;
-
+
$this->dyUnlisten($fx);
-
+
return count($fx);
}
-
+
/**
* Gets the state of listening to global events
* @return boolean is Listening to global broadcast enabled
@@ -473,12 +471,12 @@ class TComponent
{
return $this->_listeningenabled;
}
-
+
/**
* Calls a method.
* Do not call this method directly. This is a PHP magic method that we override
- * to allow behaviors, dynamic events (intra-object/behavior events),
+ * to allow behaviors, dynamic events (intra-object/behavior events),
* undefined dynamic and global events, and
* to allow using the following syntax to call a property setter or getter.
* <code>
@@ -495,7 +493,7 @@ class TComponent
* @param mixed method parameters
* @throws TInvalidOperationException If the property is not defined or read-only or
* method is undefined
- * @return mixed result of the method call, or false if 'fx' or 'dy' function but
+ * @return mixed result of the method call, or false if 'fx' or 'dy' function but
* is not found in the class, otherwise it runs
*/
public function __call($method, $args)
@@ -516,7 +514,7 @@ class TComponent
if (($getset=='set')&&method_exists($this,'getjs'.$propname))
throw new TInvalidOperationException('component_property_readonly',get_class($this),$method);
}
-
+
if($this->_m!==null&&$this->_behaviorsenabled)
{
if(strncasecmp($method,'dy',2)===0)
@@ -531,7 +529,7 @@ class TComponent
array_unshift($behavior_args,$this);
$callchain->addCall(array($behavior,$method),$behavior_args);
}
-
+
}
if($callchain->getCount()>0)
return call_user_func_array(array($callchain,'call'),$args);
@@ -549,14 +547,14 @@ class TComponent
}
}
}
-
+
if(strncasecmp($method,'dy',2)===0||strncasecmp($method,'fx',2)===0)
{
if($this instanceof IDynamicMethods)
return $this->__dycall($method,$args);
return isset($args[0])?$args[0]:null;
}
-
+
throw new TApplicationException('component_method_undefined',get_class($this),$method);
}
@@ -675,9 +673,9 @@ class TComponent
}
}
if($sets)return $value;
-
+
}
-
+
if(method_exists($this,'get'.$name)||method_exists($this,'getjs'.$name))
{
throw new TInvalidOperationException('component_property_readonly',get_class($this),$name);
@@ -690,12 +688,12 @@ class TComponent
/**
* Checks if a property value is null, there are no events in the object
- * event list or global event list registered under the name, and, if
- * behaviors are enabled,
+ * event list or global event list registered under the name, and, if
+ * behaviors are enabled,
* Do not call this method. This is a PHP magic method that we override
* to allow using isset() to detect if a component property is set or not.
- * This also works for global events. When behaviors are enabled, it
- * will check for a behavior of the specified name, and also check
+ * This also works for global events. When behaviors are enabled, it
+ * will check for a behavior of the specified name, and also check
* the behavior for events and properties.
* @param string the property name or the event name
* @since 3.2.3
@@ -725,7 +723,7 @@ class TComponent
if((!($behavior instanceof IBehavior)||$behavior->getEnabled()))
return isset($behavior->$name);
}
-
+
}
else
return false;
@@ -733,7 +731,7 @@ class TComponent
/**
* Sets a component property to be null. Clears the object or global
- * events. When enabled, loops through all behaviors and unsets the
+ * events. When enabled, loops through all behaviors and unsets the
* property or event.
* Do not call this method. This is a PHP magic method that we override
* to allow using unset() to set a component property to be null.
@@ -874,9 +872,9 @@ class TComponent
/**
* Determines whether an event is defined.
- * An event is defined if the class has a method whose name is the event name
+ * An event is defined if the class has a method whose name is the event name
* prefixed with 'on', 'fx', or 'dy'.
- * Every object responds to every 'fx' and 'dy' event as they are in a universally
+ * Every object responds to every 'fx' and 'dy' event as they are in a universally
* accepted event space. 'on' event must be declared by the object.
* When enabled, this will loop through all active behaviors for 'on' events
* defined by the behavior.
@@ -888,7 +886,7 @@ class TComponent
{
if((strncasecmp($name,'on',2)===0&&method_exists($this,$name))||strncasecmp($name,'fx',2)===0||strncasecmp($name,'dy',2)===0)
return true;
-
+
else if($this->_m!==null&&$this->_behaviorsenabled)
{
foreach($this->_m->toArray() as $behavior)
@@ -901,9 +899,9 @@ class TComponent
}
/**
- * Checks if an event has any handlers. This function also checks through all
+ * Checks if an event has any handlers. This function also checks through all
* the behaviors for 'on' events when behaviors are enabled.
- * 'dy' dynamic events are not handled by this function.
+ * 'dy' dynamic events are not handled by this function.
* @param string the event name
* @return boolean whether an event has been attached one or several handlers
*/
@@ -928,7 +926,7 @@ class TComponent
}
/**
- * Returns the list of attached event handlers for an 'on' or 'fx' event. This function also
+ * Returns the list of attached event handlers for an 'on' or 'fx' event. This function also
* checks through all the behaviors for 'on' event lists when behaviors are enabled.
* @return TPriorityList list of attached event handlers for an event
* @throws TInvalidOperationException if the event is not defined
@@ -976,7 +974,7 @@ class TComponent
* function handlerName($sender, $param, $name) {}
* </code>
* where $sender represents the object that raises the event,
- * and $param is the event parameter. $name refers to the event name
+ * and $param is the event parameter. $name refers to the event name
* being handled.
*
* This is a convenient method to add an event handler.
@@ -1001,7 +999,7 @@ class TComponent
*
* @param string the event name
* @param callback the event handler
- * @param numeric|null the priority of the handler, defaults to null which translates into the
+ * @param numeric|null the priority of the handler, defaults to null which translates into the
* default priority of 10.0 within {@link TPriorityList}
* @throws TInvalidOperationException if the event does not exist
*/
@@ -1012,11 +1010,11 @@ class TComponent
/**
* Detaches an existing event handler.
- * This method is the opposite of {@link attachEventHandler}. It will detach
+ * This method is the opposite of {@link attachEventHandler}. It will detach
* any 'on' events definedb by an objects active behaviors as well.
* @param string event name
* @param callback the event handler to be removed
- * @param numeric|false|null the priority of the handler, defaults to false which translates
+ * @param numeric|false|null the priority of the handler, defaults to false which translates
* to an item of any priority within {@link TPriorityList}; null means the default priority
* @return boolean if the removal is successful
*/
@@ -1041,10 +1039,10 @@ class TComponent
* This method represents the happening of an event and will
* invoke all attached event handlers for the event in {@link TPriorityList} order.
* This method does not handle intra-object/behavior dynamic 'dy' events.
- *
- * There are ways to handle event responses. By defailt {@link EVENT_RESULT_FILTER},
- * all event responses are stored in an array, filtered for null responses, and returned.
- * If {@link EVENT_RESULT_ALL} is specified, all returned results will be stored along
+ *
+ * There are ways to handle event responses. By defailt {@link EVENT_RESULT_FILTER},
+ * all event responses are stored in an array, filtered for null responses, and returned.
+ * If {@link EVENT_RESULT_ALL} is specified, all returned results will be stored along
* with the sender and param in an array
* <code>
* $result[] = array('sender'=>$sender,'param'=>$param,'response'=>$response);
@@ -1054,14 +1052,14 @@ class TComponent
* fed forward as the parameters for the next event. This allows for events to filter data
* directly by affecting the event parameters
*
- * If a callable function is set in the response type or the post function filter is specified then the
+ * If a callable function is set in the response type or the post function filter is specified then the
* result of each called event handler is post processed by the callable function. Used in
* combination with {@link EVENT_RESULT_FEED_FORWARD}, any event (and its result) can be chained.
*
- * When raising a global 'fx' event, registered handlers in the global event list for
+ * When raising a global 'fx' event, registered handlers in the global event list for
* {@link GLOBAL_RAISE_EVENT_LISTENER} are always added into the set of event handlers. In this way,
- * these global events are always raised for every global 'fx' event. The registered handlers for global
- * raiseEvent events have priorities. Any registered global raiseEvent event handlers with a priority less than zero
+ * these global events are always raised for every global 'fx' event. The registered handlers for global
+ * raiseEvent events have priorities. Any registered global raiseEvent event handlers with a priority less than zero
* are added before the main event handlers being raised and any registered global raiseEvent event handlers
* with a priority equal or greater than zero are added after the main event handlers being raised. In this way
* all {@link GLOBAL_RAISE_EVENT_LISTENER} handlers are always called for every raised 'fx' event.
@@ -1087,22 +1085,22 @@ class TComponent
* dyPreRaiseEvent has the effect of being able to change the event being raised. This intra
* object/behavior event returns the name of the desired event to be raised. It will pass through
* if no dynamic event is specified, or if the original event name is returned.
- * dyIntraRaiseEventTestHandler returns true or false as to whether a specific handler should be
+ * dyIntraRaiseEventTestHandler returns true or false as to whether a specific handler should be
* called for a specific raised event (and associated event arguments)
* dyIntraRaiseEventPostHandler does not return anything. This allows behaviors to access the results
* of an event handler in the per handler loop.
* dyPostRaiseEvent returns the responses. This allows for any post processing of the event
* results from the sum of all event handlers
*
- * When handling a catch-all {@link __dycall}, the method name is the name of the event
+ * When handling a catch-all {@link __dycall}, the method name is the name of the event
* and the parameters are the sender, the param, and then the name of the event.
- *
+ *
* @param string the event name
* @param mixed the event sender object
* @param TEventParameter the event parameter
* @param numeric how the results of the event are tabulated. default: {@link EVENT_RESULT_FILTER} The default filters out
* null responses. optional
- * @param function any per handler filtering of the response result needed is passed through
+ * @param function any per handler filtering of the response result needed is passed through
* this if not null. default: null. optional
* @return mixed the results of the event
* @throws TInvalidOperationException if the event is undefined
@@ -1116,15 +1114,15 @@ class TComponent
$postfunction=$responsetype;
$responsetype=null;
}
-
+
if($responsetype===null)
$responsetype=TEventResults::EVENT_RESULT_FILTER;
-
+
$name=strtolower($name);
$responses=array();
-
+
$name=$this->dyPreRaiseEvent($name,$sender,$param,$responsetype,$postfunction);
-
+
if($this->hasEventHandler($name)||$this->hasEventHandler(TComponent::GLOBAL_RAISE_EVENT_LISTENER))
{
$handlers=$this->getEventHandlers($name);
@@ -1139,7 +1137,7 @@ class TComponent
{
if($this->dyIntraRaiseEventTestHandler($handler,$sender,$param,$name)===false)
continue;
-
+
if(is_string($handler))
{
if(($pos=strrpos($handler,'.'))!==false)
@@ -1184,30 +1182,30 @@ class TComponent
}
else
throw new TInvalidDataValueException('component_eventhandler_invalid',get_class($this),$name,gettype($handler));
-
+
$this->dyIntraRaiseEventPostHandler($name,$sender,$param,$handler,$response);
-
+
if($postfunction)
$response=call_user_func_array($postfunction,array($sender,$param,$this,$response));
-
+
if($responsetype&TEventResults::EVENT_RESULT_ALL)
$responses[]=array('sender'=>$sender,'param'=>$param,'response'=>$response);
else
$responses[]=$response;
-
+
if($response!==null&&($responsetype&TEventResults::EVENT_RESULT_FEED_FORWARD))
$param=$response;
-
+
}
}
else if(strncasecmp($name,'on',2)===0&&!$this->hasEvent($name))
throw new TInvalidOperationException('component_event_undefined',get_class($this),$name);
-
+
if($responsetype&TEventResults::EVENT_RESULT_FILTER)
$responses=array_filter($responses);
-
+
$responses=$this->dyPostRaiseEvent($responses,$name,$sender,$param,$responsetype,$postfunction);
-
+
return $responses;
}
@@ -1220,7 +1218,7 @@ class TComponent
* return $chain->dyEvaluateExpressionFilter(str_replace('foo', 'bar', $expression)); //example
* }
* </code>
- * to be executed when evaluateExpression is called. All attached behaviors are notified through
+ * to be executed when evaluateExpression is called. All attached behaviors are notified through
* dyEvaluateExpressionFilter. The chaining is important in this function due to the filtering
* pass-through effect.
*
@@ -1252,7 +1250,7 @@ class TComponent
* return $chain->dyEvaluateStatementsFilter(str_replace('foo', 'bar', $statements)); //example
* }
* </code>
- * to be executed when evaluateStatements is called. All attached behaviors are notified through
+ * to be executed when evaluateStatements is called. All attached behaviors are notified through
* dyEvaluateStatementsFilter. The chaining is important in this function due to the filtering
* pass-through effect.
*
@@ -1291,7 +1289,7 @@ class TComponent
* return $chain->dyCreatedOnTemplate($parent); //example
* }
* </code>
- * to be executed when createdOnTemplate is called. All attached behaviors are notified through
+ * to be executed when createdOnTemplate is called. All attached behaviors are notified through
* dyCreatedOnTemplate.
*
* @param TComponent potential parent of this control
@@ -1314,7 +1312,7 @@ class TComponent
* public function dyAddParsedObject($object[, $chain]) {
* }
* </code>
- * to be executed when addParsedObject is called. All attached behaviors are notified through
+ * to be executed when addParsedObject is called. All attached behaviors are notified through
* dyAddParsedObject.
*
* @param string|TComponent text string or component parsed and instantiated in template
@@ -1324,10 +1322,10 @@ class TComponent
{
$this->dyAddParsedObject($object);
}
-
-
+
+
/**
- * This is the method registered for all instanced objects should a class behavior be added after
+ * This is the method registered for all instanced objects should a class behavior be added after
* the class is instanced. Only when the class to which the behavior is being added is in this
* object's class hierarchy, via {@link getClassHierarchy}, is the behavior added to this instance.
* @param $sender the application
@@ -1338,10 +1336,10 @@ class TComponent
if(in_array($param->getClass(),$this->getClassHierarchy(true)))
return $this->attachBehavior($param->getName(),$param->getBehavior(),$param->getPriority());
}
-
-
+
+
/**
- * This is the method registered for all instanced objects should a class behavior be removed after
+ * This is the method registered for all instanced objects should a class behavior be removed after
* the class is instanced. Only when the class to which the behavior is being added is in this
* object's class hierarchy, via {@link getClassHierarchy}, is the behavior removed from this instance.
* @param $sender the application
@@ -1352,17 +1350,17 @@ class TComponent
if(in_array($param->getClass(),$this->getClassHierarchy(true)))
return $this->detachBehavior($param->getName(),$param->getPriority());
}
-
-
+
+
/**
- * This will add a class behavior to all classes instanced (that are listening) and future newly instanced objects.
- * This registers the behavior for future instances and pushes the changes to all the instances that are listening as well.
+ * This will add a class behavior to all classes instanced (that are listening) and future newly instanced objects.
+ * This registers the behavior for future instances and pushes the changes to all the instances that are listening as well.
* The universal class behaviors are stored in an inverted stack with the latest class behavior being at the first position in the array.
* This is done so class behaviors are added last first.
* @param string name the key of the class behavior
* @param object|string class behavior or name of the object behavior per instance
* @param string|class string of class or class on which to attach this behavior. Defaults to null which will error
- * but more important, if this is on PHP 5.3 it will use Late Static Binding to derive the class
+ * but more important, if this is on PHP 5.3 it will use Late Static Binding to derive the class
* it should extend.
* <code>
* TPanel::attachClassBehavior('javascripts', (new TJsPanelBehavior())->init($this));
@@ -1377,7 +1375,7 @@ class TComponent
$class=get_called_class();
if(!$class)
throw new TInvalidOperationException('component_no_class_provided_nor_late_binding');
-
+
if(!is_string($name))
$name=get_class($name);
$class=strtolower($class);
@@ -1392,16 +1390,16 @@ class TComponent
$behaviorObject=is_string($behavior)?new $behavior:$behavior;
return $behaviorObject->raiseEvent('fxAttachClassBehavior',null,$param);
}
-
-
+
+
/**
* This will remove a behavior from a class. It unregisters it from future instances and
* pulls the changes from all the instances that are listening as well.
* PHP 5.3 uses Late Static Binding to derive the static class upon which this method is called.
* @param $name the key of the class behavior
- * @param $class string class on which to attach this behavior. Defaults to null.
- * @param $priority numeric|null|false priority. false is any priority, null is default
- * {@link TPriorityList} priority, and numeric is a specific priority.
+ * @param $class string class on which to attach this behavior. Defaults to null.
+ * @param $priority numeric|null|false priority. false is any priority, null is default
+ * {@link TPriorityList} priority, and numeric is a specific priority.
* @throws Exception if the the class cannot be derived from Late Static Binding and is not
* not supplied as a parameter.
* @since 3.2.3
@@ -1411,7 +1409,7 @@ class TComponent
$class=get_called_class();
if(!$class)
throw new TInvalidOperationException('component_no_class_provided_nor_late_binding');
-
+
$class=strtolower($class);
if(!is_string($name))
$name=get_class($name);
@@ -1443,8 +1441,8 @@ class TComponent
* then the behavior can determine what it is an instanceof. If this behavior function returns true,
* then this method returns true. If the behavior instance checking function returns false,
* then no further checking is performed as it is assumed to be correct.
- *
- * If the behavior instance check function returns nothing or null or the behavior
+ *
+ * If the behavior instance check function returns nothing or null or the behavior
* doesn't implement the {@link IInstanceCheck} interface, then the default instanceof occurs.
* The default isa behavior is to check if the behavior is an instanceof the class.
*
@@ -1463,7 +1461,7 @@ class TComponent
foreach($this->_m->toArray() as $behavior){
if(($behavior instanceof IBehavior)&&!$behavior->getEnabled())
continue;
-
+
$check = null;
if(($behavior->isa('IInstanceCheck'))&&$check=$behavior->isinstanceof($class,$this))
return true;
@@ -1535,7 +1533,7 @@ class TComponent
* public function dyAttachBehavior($name,$behavior[, $chain]) {
* }
* </code>
- * to be executed when attachBehavior is called. All attached behaviors are notified through
+ * to be executed when attachBehavior is called. All attached behaviors are notified through
* dyAttachBehavior.
*
* @param string the behavior's name. It should uniquely identify this behavior.
@@ -1569,7 +1567,7 @@ class TComponent
* public function dyDetachBehavior($name,$behavior[, $chain]) {
* }
* </code>
- * to be executed when detachBehavior is called. All attached behaviors are notified through
+ * to be executed when detachBehavior is called. All attached behaviors are notified through
* dyDetachBehavior.
*
* @param string the behavior's name. It uniquely identifies the behavior.
@@ -1597,7 +1595,7 @@ class TComponent
* public function dyEnableBehaviors($name,$behavior[, $chain]) {
* }
* </code>
- * to be executed when enableBehaviors is called. All attached behaviors are notified through
+ * to be executed when enableBehaviors is called. All attached behaviors are notified through
* dyEnableBehaviors.
* @since 3.2.3
*/
@@ -1618,7 +1616,7 @@ class TComponent
* public function dyDisableBehaviors($name,$behavior[, $chain]) {
* }
* </code>
- * to be executed when disableBehaviors is called. All attached behaviors are notified through
+ * to be executed when disableBehaviors is called. All attached behaviors are notified through
* dyDisableBehaviors.
* @since 3.2.3
*/
@@ -1630,7 +1628,7 @@ class TComponent
$this->_behaviorsenabled=false;
}
}
-
+
/**
* Returns if all the behaviors are turned on or off for the object.
@@ -1652,7 +1650,7 @@ class TComponent
* public function dyEnableBehavior($name,$behavior[, $chain]) {
* }
* </code>
- * to be executed when enableBehavior is called. All attached behaviors are notified through
+ * to be executed when enableBehavior is called. All attached behaviors are notified through
* dyEnableBehavior.
*
* @param string the behavior's name. It uniquely identifies the behavior.
@@ -1680,7 +1678,7 @@ class TComponent
* public function dyDisableBehavior($name,$behavior[, $chain]) {
* }
* </code>
- * to be executed when disableBehavior is called. All attached behaviors are notified through
+ * to be executed when disableBehavior is called. All attached behaviors are notified through
* dyDisableBehavior.
*
* @param string the behavior's name. It uniquely identifies the behavior.
@@ -1718,11 +1716,11 @@ class TComponent
{
$a = (array)$this;
$a = array_keys($a);
- $exprops = array();
+ $exprops = array();
if($this->_listeningenabled===false)
- $exprops[] = "\0TComponent\0_listeningenabled";
+ $exprops[] = "\0TComponent\0_listeningenabled";
if($this->_behaviorsenabled===true)
- $exprops[] = "\0TComponent\0_behaviorsenabled";
+ $exprops[] = "\0TComponent\0_behaviorsenabled";
if ($this->_e===array())
$exprops[] = "\0TComponent\0_e";
if ($this->_m===null)
@@ -1763,7 +1761,7 @@ class TClassBehaviorEventParameter extends TEventParameter
private $_name;
private $_behavior;
private $_priority;
-
+
/**
* Holds the parameters for the Class Behavior Events
* @param string $class this is the class to get the behavior
@@ -1777,7 +1775,7 @@ class TClassBehaviorEventParameter extends TEventParameter
$this->_behavior=$behavior;
$this->_priority=$priority;
}
-
+
/**
* This is the class to get the behavior
* @return string the class to get the behavior
@@ -1786,7 +1784,7 @@ class TClassBehaviorEventParameter extends TEventParameter
{
return $this->_class;
}
-
+
/**
* name of the behavior
* @return string the name to get the behavior
@@ -1795,19 +1793,19 @@ class TClassBehaviorEventParameter extends TEventParameter
{
return $this->_name;
}
-
+
/**
* This is the behavior which the class is to get
- * @return object the behavior to implement
+ * @return object the behavior to implement
*/
public function getBehavior()
{
return $this->_behavior;
}
-
+
/**
* This is the priority which the behavior is to get
- * @return numeric the priority of the behavior
+ * @return numeric the priority of the behavior
*/
public function getPriority()
{
@@ -1834,7 +1832,6 @@ class TClassBehaviorEventParameter extends TEventParameter
* TTextAlign::Right.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TComponent.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System
* @since 3.0
*/
@@ -1897,7 +1894,6 @@ class TEnumerable implements Iterator
* - enum: enumerable type, represented by an array of strings.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TComponent.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System
* @since 3.0
*/
@@ -2050,7 +2046,6 @@ class TPropertyValue
* TEventParameter is the base class for all event parameter classes.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TComponent.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System
* @since 3.0
*/
@@ -2078,7 +2073,6 @@ class TEventResults extends TEnumerable {
* </code>
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TComponent.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System
* @since 3.0
*/
@@ -2247,9 +2241,9 @@ class TComponentReflection extends TComponent
}
/**
- * IBaseBehavior interface is the base behavior class from which all other
+ * IBaseBehavior interface is the base behavior class from which all other
* behaviors types are derived
- *
+ *
* @author Brad Anderson <javalizard@mac.com>
* @version $Id$
* @package System
@@ -2272,7 +2266,7 @@ interface IBaseBehavior {
* IBehavior interfaces is implemented by instance behavior classes.
*
* A behavior is a way to enhance a component with additional methods and
- * events that are defined in the behavior class and not available in the
+ * events that are defined in the behavior class and not available in the
* class. Objects may signal behaviors through dynamic events.
*
* @author Brad Anderson <javalizard@mac.com>
@@ -2294,11 +2288,11 @@ interface IBehavior extends IBaseBehavior
/**
- * IClassBehavior interface is implements behaviors across all instances of
+ * IClassBehavior interface is implements behaviors across all instances of
* a particular class
*
- * Any calls to functions not present in the original object but to behaviors
- * derived from this class, will have inserted as the first argument parameter
+ * Any calls to functions not present in the original object but to behaviors
+ * derived from this class, will have inserted as the first argument parameter
* the object containing the behavior.
*
* For example:
@@ -2329,9 +2323,9 @@ interface IClassBehavior extends IBaseBehavior {
/**
- * IInstanceCheck This interface allows objects to determine their own
- * 'instanceof' results when {@link TComponent::isa} is called. This is
- * important with behaviors because behaviors may want to look like
+ * IInstanceCheck This interface allows objects to determine their own
+ * 'instanceof' results when {@link TComponent::isa} is called. This is
+ * important with behaviors because behaviors may want to look like
* particular objects other than themselves.
*
* @author Brad Anderson <javalizard@mac.com>
@@ -2341,20 +2335,20 @@ interface IClassBehavior extends IBaseBehavior {
*/
interface IInstanceCheck {
/**
- * The method checks $this or, if needed, the parameter $instance is of type
- * class. In the case of a Class Behavior, the instance to which the behavior
+ * The method checks $this or, if needed, the parameter $instance is of type
+ * class. In the case of a Class Behavior, the instance to which the behavior
* is attached may be important to determine if $this is an instance
* of a particular class.
* @param class|string the component that this behavior is checking if it is an instanceof.
* @param object the object which the behavior is attached to. default: null
- * @return boolean|null if the this or the instance is of type class. When null, no information could be derived and
+ * @return boolean|null if the this or the instance is of type class. When null, no information could be derived and
* the default mechanisms take over.
*/
public function isinstanceof($class,$instance=null);
}
/**
- * TJavaScriptLiteral class that encloses string literals that are not
+ * TJavaScriptLiteral class that encloses string literals that are not
* supposed to be escaped by {@link TJavaScript::encode() }
*
* Since Prado 3.2 all the data that gets sent clientside inside a javascript statement
@@ -2371,7 +2365,6 @@ interface IInstanceCheck {
* $raw=_js($js);
* </code>
*
- * @version $Id: TComponent.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System
* @since 3.2.0
*/
@@ -2397,9 +2390,8 @@ class TJavaScriptLiteral
/**
* TJavaScriptString class is an internal class that marks strings that will be
- * forcibly encoded when rendered inside a javascript block
+ * forcibly encoded when rendered inside a javascript block
*
- * @version $Id: TComponent.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System
* @since 3.2.0
*/
diff --git a/framework/TModule.php b/framework/TModule.php
index fee51016..7c149962 100644
--- a/framework/TModule.php
+++ b/framework/TModule.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TModule.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System
*/
@@ -17,7 +16,6 @@
* used as the basic class for application modules.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TModule.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System
* @since 3.0
*/
diff --git a/framework/TService.php b/framework/TService.php
index 1ec20017..9c51eb5a 100644
--- a/framework/TService.php
+++ b/framework/TService.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TService.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System
*/
@@ -17,7 +16,6 @@
* used as the basic class for application services.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TService.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System
* @since 3.0
*/
diff --git a/framework/TShellApplication.php b/framework/TShellApplication.php
index 3552d8a7..e989ed9f 100644
--- a/framework/TShellApplication.php
+++ b/framework/TShellApplication.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TShellApplication.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System
*/
@@ -29,7 +28,6 @@
* accessibility to resources as the PRADO Web applications.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TShellApplication.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System
* @since 3.1.0
*/
diff --git a/framework/Util/TBehavior.php b/framework/Util/TBehavior.php
index 951a758f..56a81a87 100644
--- a/framework/Util/TBehavior.php
+++ b/framework/Util/TBehavior.php
@@ -11,7 +11,6 @@
/**
* TBehavior is a convenient base class for behavior classes.
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TBehaviour.php 3211 2012-10-31 02:35:01Z javalizard@gmail.com $
* @package System.Util
* @since 3.2.3
*/
diff --git a/framework/Util/TCallChain.php b/framework/Util/TCallChain.php
index 9d6144b3..a6d99a61 100644
--- a/framework/Util/TCallChain.php
+++ b/framework/Util/TCallChain.php
@@ -4,16 +4,15 @@
*
* @author Brad Anderson <javalizard@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2008-2013 Pradosoft
+ * @copyright Copyright &copy; 2008-2014 Pradosoft
* @license http://www.pradosoft.com/license/
*/
/**
* TCallChain is a recursive event calling mechanism. This class implements
* the {@link IDynamicMethods} class so that any 'dy' event calls can be caught
- * and patched through to the intended recipient
+ * and patched through to the intended recipient
* @author Brad Anderson <javalizard@gmail.com>
- * @version $Id: TCallChain.php 564 2009-01-21 22:07:10Z javalizard $
* @package System.Util
* @since 3.2.3
*/
@@ -23,12 +22,12 @@ class TCallChain extends TList implements IDynamicMethods
* @var {@link TListIterator} for moving through the chained method calls
*/
private $_iterator=null;
-
+
/**
* @var string the method name of the call chain
*/
private $_method=null;
-
+
/**
* This initializes the list and the name of the method to be called
* @param string the name of the function call
@@ -37,11 +36,11 @@ class TCallChain extends TList implements IDynamicMethods
$this->_method=$method;
parent::__construct();
}
-
-
+
+
/**
* This initializes the list and the name of the method to be called
- * @param string|array this is a callable function as a string or array with
+ * @param string|array this is a callable function as a string or array with
* the object and method name as string
* @param array The array of arguments to the function call chain
*/
@@ -49,12 +48,12 @@ class TCallChain extends TList implements IDynamicMethods
{
$this->add(array($method,$args));
}
-
+
/**
* This method calls the next Callable in the list. All of the method arguments
- * coming into this method are substituted into the original method argument of
+ * coming into this method are substituted into the original method argument of
* call in the chain.
- *
+ *
* If the original method call has these parameters
* <code>
* $originalobject->dyExampleMethod('param1', 'param2', 'param3')
@@ -71,7 +70,7 @@ class TCallChain extends TList implements IDynamicMethods
* list in 'dy' event calls is always the object containing the behavior. This modifies
* the parameter replacement mechanism slightly to leave the object containing the behavior
* alone and only replacing the other parameters in the argument list. As per {@link __call},
- * any calls to a 'dy' event do not need the object containing the behavior as the addition of
+ * any calls to a 'dy' event do not need the object containing the behavior as the addition of
* the object to the argument list as the first element is automatic for IClassBehaviors.
*
* The last parameter of the method parameter list for any callable in the call chain
@@ -87,14 +86,14 @@ class TCallChain extends TList implements IDynamicMethods
*
* When there are no handlers or no handlers left, it returns the first parameter of the
* argument list.
- *
+ *
*/
public function call()
{
$args=func_get_args();
if($this->getCount()===0)
return isset($args[0])?$args[0]:null;
-
+
if(!$this->_iterator)
{
$chain_array=array_reverse($this->toArray());
@@ -115,12 +114,12 @@ class TCallChain extends TList implements IDynamicMethods
$result = $args[0];
return $result;
}
-
-
+
+
/**
* This catches all the unpatched dynamic events. When the method call matches the
- * call chain method, it passes the arguments to the original __call (of the dynamic
- * event being unspecified in TCallChain) and funnels into the method {@link call},
+ * call chain method, it passes the arguments to the original __call (of the dynamic
+ * event being unspecified in TCallChain) and funnels into the method {@link call},
* so the next dynamic event handler can be called.
* If the original method call has these parameters
* <code>
diff --git a/framework/Util/TClassBehavior.php b/framework/Util/TClassBehavior.php
index 9d29dbf4..03ea0c57 100644
--- a/framework/Util/TClassBehavior.php
+++ b/framework/Util/TClassBehavior.php
@@ -11,7 +11,6 @@
/**
* TClassBehavior is a convenient base class for whole class behaviors.
* @author Brad Anderson <javalizard@gmail.com>
- * @version $Id: TClassBehavior.php 564 2009-01-21 22:07:10Z javalizard $
* @package System.Util
* @since 3.2.3
*/
@@ -25,7 +24,7 @@ class TClassBehavior extends TComponent implements IClassBehavior
public function attach($component)
{
}
-
+
/**
* Detaches the behavior object from the component.
* @param TComponent the component that this behavior is to be detached from.
diff --git a/framework/Util/TDataFieldAccessor.php b/framework/Util/TDataFieldAccessor.php
index ae9df57b..1bead02e 100644
--- a/framework/Util/TDataFieldAccessor.php
+++ b/framework/Util/TDataFieldAccessor.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDataFieldAccessor.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Util
*/
@@ -26,7 +25,6 @@
* then field 'MyValue.MySubValue' will return that method call result.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDataFieldAccessor.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Util
* @since 3.0
*/
@@ -36,7 +34,7 @@ class TDataFieldAccessor
* Evaluates the data value at the specified field.
* - If the data is an array, then the field is treated as an array index
* and the corresponding element value is returned; the field name can also include
- * dots to access subarrays. For example a field named 'MyField.MySubField' will
+ * dots to access subarrays. For example a field named 'MyField.MySubField' will
* first try to access $data['MyField.MySubField'], then try $data['MyField']['MySubField'].
* - If the data is a TMap or TList object, then the field is treated as a key
* into the map or list, and the corresponding value is returned.
diff --git a/framework/Util/TDateTimeStamp.php b/framework/Util/TDateTimeStamp.php
index 7a995b00..fcbd573f 100644
--- a/framework/Util/TDateTimeStamp.php
+++ b/framework/Util/TDateTimeStamp.php
@@ -4,9 +4,8 @@
* @author Fabio Bas ctrlaltca[AT]gmail[DOT]com
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDateTimeStamp.php 3246 2013-01-07 21:07:38Z ctrlaltca $
* @package System.Util
*/
@@ -20,7 +19,6 @@
* julian dates anymore.
*
* @author Fabio Bas ctrlaltca[AT]gmail[DOT]com
- * @version $Id: TDateTimeStamp.php 3246 2013-01-07 21:07:38Z ctrlaltca $
* @package System.Util
* @since 3.0.4
* @deprecated since 3.2.1
@@ -194,8 +192,8 @@ class TDateTimeStamp
$dt = new DateTime();
if($is_gmt)
$dt->setTimeZone(new DateTimeZone('UTC'));
- $dt->setDate($year!==false ? $year : date('Y'),
- $mon!==false ? $mon : date('m'),
+ $dt->setDate($year!==false ? $year : date('Y'),
+ $mon!==false ? $mon : date('m'),
$day!==false ? $day : date('d'));
$dt->setTime($hr, $min, $sec);
return (int) $dt->format('U');
diff --git a/framework/Util/TLogRouter.php b/framework/Util/TLogRouter.php
index 32273c0c..4682e9ef 100644
--- a/framework/Util/TLogRouter.php
+++ b/framework/Util/TLogRouter.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TLogRouter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Util
*/
@@ -29,14 +28,13 @@ Prado::using('System.Data.TDbConnection');
* </code>
* PHP configuration style:
* <code>
- *
+ *
* </code>
* You can specify multiple routes with different filtering conditions and different
* targets, even if the routes are of the same type.
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @author Carl G. Mathisen <carlgmathisen@gmail.com>
- * @version $Id: TLogRouter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Util
* @since 3.0
*/
@@ -128,8 +126,8 @@ class TLogRouter extends TModule
/**
* Adds a TLogRoute instance to the log router.
- *
- * @param TLogRoute $route
+ *
+ * @param TLogRoute $route
* @throws TInvalidDataTypeException if the route object is invalid
*/
public function addRoute($route)
@@ -190,7 +188,6 @@ class TLogRouter extends TModule
* satisfying both filter conditions will they be returned.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TLogRouter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Util
* @since 3.0
*/
@@ -322,7 +319,7 @@ abstract class TLogRoute extends TApplicationComponent
*/
protected function formatLogMessage($message,$level,$category,$time)
{
- return @gmdate('M d H:i:s',$time).' ['.$this->getLevelName($level).'] ['.$category.'] '.$message."\n";
+ return @date('M d H:i:s',$time).' ['.$this->getLevelName($level).'] ['.$category.'] '.$message."\n";
}
/**
@@ -363,7 +360,6 @@ abstract class TLogRoute extends TApplicationComponent
* specifies how many files to be kept.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TLogRouter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Util
* @since 3.0
*/
@@ -503,7 +499,6 @@ class TFileLogRoute extends TLogRoute
* {@link setSentFrom SentFrom} address.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TLogRouter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Util
* @since 3.0
*/
@@ -629,7 +624,6 @@ class TEmailLogRoute extends TLogRoute
* TBrowserLogRoute prints selected log messages in the response.
*
* @author Xiang Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TLogRouter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Util
* @since 3.0
*/
@@ -639,7 +633,7 @@ class TBrowserLogRoute extends TLogRoute
* @var string css class for indentifying the table structure in the dom tree
*/
private $_cssClass=null;
-
+
public function processLogs($logs)
{
if(empty($logs) || $this->getApplication()->getMode()==='Performance') return;
@@ -664,7 +658,7 @@ class TBrowserLogRoute extends TLogRoute
}
$response->write($this->renderFooter());
}
-
+
/**
* @param string the css class of the control
*/
@@ -816,7 +810,6 @@ EOD;
* </code>
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TLogRouter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Util
* @since 3.1.2
*/
@@ -1022,7 +1015,6 @@ class TDbLogRoute extends TLogRoute
* {@link http://www.getfirebug.com/ FireBug Website}
*
* @author Enrico Stahn <mail@enricostahn.com>, Christophe Boulain <Christophe.Boulain@gmail.com>
- * @version $Id: TLogRouter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Util
* @since 3.1.2
*/
@@ -1099,7 +1091,6 @@ EOD;
* {@link http://www.firephp.org/ FirePHP Website}
*
* @author Yves Berkholz <godzilla80[at]gmx[dot]net>
- * @version $Id: TLogRouter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Util
* @since 3.1.5
*/
diff --git a/framework/Util/TLogger.php b/framework/Util/TLogger.php
index 74fa22bf..6fd12ccf 100644
--- a/framework/Util/TLogger.php
+++ b/framework/Util/TLogger.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TLogger.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Util
*/
@@ -18,7 +17,6 @@
* log categories, and by control.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TLogger.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Util
* @since 3.0
*/
@@ -82,14 +80,14 @@ class TLogger extends TComponent
* Messages may be filtered by log levels and/or categories and/or control client ids and/or timestamp.
* A level filter is specified by an integer, whose bits indicate the levels interested.
* For example, (TLogger::INFO | TLogger::WARNING) specifies INFO and WARNING levels.
- * A category filter is specified by an array of categories to filter.
+ * A category filter is specified by an array of categories to filter.
* A message whose category name starts with any filtering category
* will be returned. For example, a category filter array('System.Web','System.IO')
* will return messages under categories such as 'System.Web', 'System.IO',
* 'System.Web.UI', 'System.Web.UI.WebControls', etc.
* A control client id filter is specified by an array of control client id
* A message whose control client id starts with any filtering naming panels
- * will be returned. For example, a category filter array('ctl0_body_header',
+ * will be returned. For example, a category filter array('ctl0_body_header',
* 'ctl0_body_content_sidebar')
* will return messages under categories such as 'ctl0_body_header', 'ctl0_body_content_sidebar',
* 'ctl0_body_header_title', 'ctl0_body_content_sidebar_savebutton', etc.
@@ -135,14 +133,14 @@ class TLogger extends TComponent
* Messages may be filtered by log levels and/or categories and/or control client ids and/or timestamp.
* A level filter is specified by an integer, whose bits indicate the levels interested.
* For example, (TLogger::INFO | TLogger::WARNING) specifies INFO and WARNING levels.
- * A category filter is specified by an array of categories to filter.
+ * A category filter is specified by an array of categories to filter.
* A message whose category name starts with any filtering category
* will be deleted. For example, a category filter array('System.Web','System.IO')
* will delete messages under categories such as 'System.Web', 'System.IO',
* 'System.Web.UI', 'System.Web.UI.WebControls', etc.
* A control client id filter is specified by an array of control client id
* A message whose control client id starts with any filtering naming panels
- * will be deleted. For example, a category filter array('ctl0_body_header',
+ * will be deleted. For example, a category filter array('ctl0_body_header',
* 'ctl0_body_content_sidebar')
* will delete messages under categories such as 'ctl0_body_header', 'ctl0_body_content_sidebar',
* 'ctl0_body_header_title', 'ctl0_body_content_sidebar_savebutton', etc.
diff --git a/framework/Util/TParameterModule.php b/framework/Util/TParameterModule.php
index 5b345b4e..84616c63 100644
--- a/framework/Util/TParameterModule.php
+++ b/framework/Util/TParameterModule.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TParameterModule.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Util
*/
@@ -41,7 +40,6 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @author Carl G. Mathisen <carlgmathisen@gmail.com>
- * @version $Id: TParameterModule.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Util
* @since 3.0
*/
diff --git a/framework/Util/TRpcClient.php b/framework/Util/TRpcClient.php
index fbfb528a..91b27b52 100644
--- a/framework/Util/TRpcClient.php
+++ b/framework/Util/TRpcClient.php
@@ -5,7 +5,6 @@
* @link http://www.pradosoft.com/
* @copyright 2010 Bigpoint GmbH
* @license http://www.pradosoft.com/license/
- * @version $Id: TRpcClient.php 137 2010-03-27 22:13:36Z rrogge $
* @since 3.2
* @package System.Util
*/
@@ -158,7 +157,7 @@ class TRpcClient extends TApplicationComponent
* @package System.Util
* @since 3.2
*/
-
+
class TRpcClientTypesEnumerable extends TEnumerable
{
const JSON = 'TJsonRpcClient';
@@ -176,7 +175,7 @@ class TRpcClientTypesEnumerable extends TEnumerable
* @package System.Util
* @since 3.2
*/
-
+
class TRpcClientRequestException extends TApplicationException
{
}
@@ -184,7 +183,7 @@ class TRpcClientRequestException extends TApplicationException
/**
* TRpcClientResponseException class
*
- * This Exception is fired when the
+ * This Exception is fired when the
*
* @author Robin J. Rogge <rrogge@bigpoint.net>
* @version $Id$
@@ -323,7 +322,7 @@ class TXmlRpcClient extends TRpcClient
// skip response handling if the request was just a notification request
if($this->isNotification)
return true;
-
+
// decode response
if(($_response = xmlrpc_decode($_response)) === null)
throw new TRpcClientResponseException('Empty response received');
diff --git a/framework/Util/TSimpleDateFormatter.php b/framework/Util/TSimpleDateFormatter.php
index 295a2d60..18e71529 100644
--- a/framework/Util/TSimpleDateFormatter.php
+++ b/framework/Util/TSimpleDateFormatter.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TSimpleDateFormatter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Util
*/
@@ -40,7 +39,6 @@
* </code>
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TSimpleDateFormatter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Util
* @since 3.0
*/
@@ -177,7 +175,7 @@ class TSimpleDateFormatter
if(is_numeric($value))
return $s->getDate($value);
else
- return $s->parseDate($value);
+ return $s->parseDate($value);
}
/**
@@ -302,7 +300,7 @@ class TSimpleDateFormatter
if(!$defaultToCurrentTime && ($month === null || $day === null || $year === null))
return null;
else
- {
+ {
if(empty($year)) {
$year = date('Y');
}
diff --git a/framework/Util/TVarDumper.php b/framework/Util/TVarDumper.php
index f49a1274..c89b205a 100644
--- a/framework/Util/TVarDumper.php
+++ b/framework/Util/TVarDumper.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TVarDumper.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Util
*/
@@ -24,7 +23,6 @@
* </code>
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TVarDumper.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Util
* @since 3.0
*/
diff --git a/framework/Web/Javascripts/TJavaScript.php b/framework/Web/Javascripts/TJavaScript.php
index 0f6fef1c..d7703bfd 100644
--- a/framework/Web/Javascripts/TJavaScript.php
+++ b/framework/Web/Javascripts/TJavaScript.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo<weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TJavaScript.php 3291 2013-05-09 17:44:58Z ctrlaltca $
* @package System.Web.Javascripts
*/
@@ -17,7 +16,6 @@
* functions.
*
* @author Wei Zhuo<weizhuo[at]gmail[dot]com>
- * @version $Id: TJavaScript.php 3291 2013-05-09 17:44:58Z ctrlaltca $
* @package System.Web.Javascripts
* @since 3.0
*/
@@ -206,7 +204,6 @@ class TJavaScript
else
return '';
}
-
/**
* Encodes a PHP variable into javascript string.
* This method invokes json_encode to perform the encoding.
@@ -215,16 +212,32 @@ class TJavaScript
*/
public static function jsonEncode($value, $options = 0)
{
- if (is_string($value) &&
- ($g=Prado::getApplication()->getGlobalization(false))!==null &&
- strtoupper($enc=$g->getCharset())!='UTF-8')
- $value=iconv($enc, 'UTF-8', $value);
+ if (($g=Prado::getApplication()->getGlobalization(false))!==null &&
+ strtoupper($enc=$g->getCharset())!='UTF-8') {
+ self::convertToUtf8($value, $enc);
+ }
+
$s = @json_encode($value,$options);
self::checkJsonError();
return $s;
}
/**
+ * Encodes an string or the content of an array to UTF8
+ * @param string|array|mixed $value
+ * @param string $sourceEncoding
+ */
+ private static function convertToUtf8(&$value, $sourceEncoding) {
+ if(is_string($value))
+ $value=iconv($sourceEncoding, 'UTF-8', $value);
+ else if (is_array($value))
+ {
+ foreach($value as &$element)
+ self::convertToUtf8($element, $sourceEncoding);
+ }
+ }
+
+ /**
* Decodes a javascript string into PHP variable.
* This method invokes json_decode to perform the decoding.
* @param string string to be decoded
@@ -238,7 +251,7 @@ class TJavaScript
self::checkJsonError();
return $s;
}
-
+
private static function checkJsonError()
{
switch ($err = json_last_error())
@@ -271,7 +284,7 @@ class TJavaScript
/**
* Minimize the size of a javascript script.
* This method is based on Douglas Crockford's JSMin.
- * @param string code that you want to minimzie
+ * @param string code that you want to minimzie
* @return minimized version of the code
*/
public static function JSMin($code)
diff --git a/framework/Web/Javascripts/source/prado/activecontrols/ajax3.js b/framework/Web/Javascripts/source/prado/activecontrols/ajax3.js
index e19f5d49..648f3e76 100644
--- a/framework/Web/Javascripts/source/prado/activecontrols/ajax3.js
+++ b/framework/Web/Javascripts/source/prado/activecontrols/ajax3.js
@@ -1154,7 +1154,13 @@ if (typeof(Prado.AssetManagerClass)=="undefined") {
createStyleSheetCode: function(code) {
var asset = document.createElement('style');
asset.setAttribute('type', 'text/css');
- asset.innerText = code;
+
+ if(asset.styleSheet)
+ asset.styleSheet.cssText = code; // IE7+IE8
+ else {
+ var cssCodeNode = document.createTextNode(code);
+ asset.appendChild(cssCodeNode);
+ }
var head = document.getElementsByTagName('head')[0];
head.appendChild(asset);
diff --git a/framework/Web/Javascripts/source/prado/controls/slider.js b/framework/Web/Javascripts/source/prado/controls/slider.js
index 2e26ee51..ba65de3b 100644
--- a/framework/Web/Javascripts/source/prado/controls/slider.js
+++ b/framework/Web/Javascripts/source/prado/controls/slider.js
@@ -18,17 +18,9 @@ Prado.WebUI.TSlider = Class.extend(Prado.WebUI.PostBackControl,
this.maximum = this.options.maximum || this.range.end;
this.minimum = this.options.minimum || this.range.start;
this.hiddenField=$(this.options.ID+'_1');
+ this.trackInitialized=false;
- // Will be used to align the handle onto the track, if necessary
- this.alignX = parseInt(this.options.alignX || - this.track.offsetLeft);
- this.alignY = parseInt(this.options.alignY || - this.track.offsetTop);
-
- this.trackLength = this.maximumOffset() - this.minimumOffset();
- this.handleLength = this.isVertical() ?
- (this.handle.offsetHeight != 0 ?
- this.handle.offsetHeight : this.handles.style.height.replace(/px$/,"")) :
- (this.handle.offsetWidth != 0 ? this.handle.offsetWidth :
- this.handle.style.width.replace(/px$/,""));
+ this.initializeTrack();
this.active = false;
this.dragging = false;
@@ -63,8 +55,26 @@ Prado.WebUI.TSlider = Class.extend(Prado.WebUI.PostBackControl,
if(this.options['AutoPostBack']==true)
this.observe(this.hiddenField, "change", Prado.PostBack.bindEvent(this,options));
-
},
+
+ initializeTrack : function()
+ {
+ if(this.trackInitialized || !$(this.track).is(":visible"))
+ return;
+
+ // Will be used to align the handle onto the track, if necessary
+ this.alignX = parseInt(this.options.alignX || - this.track.offsetLeft);
+ this.alignY = parseInt(this.options.alignY || - this.track.offsetTop);
+
+ this.trackLength = this.maximumOffset() - this.minimumOffset();
+ this.handleLength = this.isVertical() ?
+ (this.handle.offsetHeight != 0 ?
+ this.handle.offsetHeight : this.handles.style.height.replace(/px$/,"")) :
+ (this.handle.offsetWidth != 0 ? this.handle.offsetWidth :
+ this.handle.style.width.replace(/px$/,""));
+ this.trackInitialized=true;
+ },
+
setDisabled: function(){
this.disabled = true;
@@ -151,6 +161,7 @@ Prado.WebUI.TSlider = Class.extend(Prado.WebUI.PostBackControl,
startDrag: function(event) {
if(Event.isLeftClick(event)) {
+ this.initializeTrack();
if(!this.disabled){
this.active = true;
var handle = Event.element(event);
@@ -223,4 +234,4 @@ Prado.WebUI.TSlider = Class.extend(Prado.WebUI.PostBackControl,
}
}
-}); \ No newline at end of file
+});
diff --git a/framework/Web/Javascripts/source/prado/prado.js b/framework/Web/Javascripts/source/prado/prado.js
index 05f11dcd..1b3bd7c8 100644
--- a/framework/Web/Javascripts/source/prado/prado.js
+++ b/framework/Web/Javascripts/source/prado/prado.js
@@ -8,7 +8,7 @@ var Prado =
* Version of Prado clientscripts
* @var Version
*/
- Version: '3.2.3',
+ Version: '3.2.4',
/**
* Registry for Prado components
diff --git a/framework/Web/Javascripts/source/prado/validator/validation3.js b/framework/Web/Javascripts/source/prado/validator/validation3.js
index 0361389f..483c7ec2 100644
--- a/framework/Web/Javascripts/source/prado/validator/validation3.js
+++ b/framework/Web/Javascripts/source/prado/validator/validation3.js
@@ -979,7 +979,7 @@ Prado.WebUI.TBaseValidator = Class.create(Prado.WebUI.Control,
if(!this.control)
this.control = $(this.options.ControlToValidate);
- if(!this.control || this.control.disabled)
+ if(!this.control || this.control.disabled || !this.control.descendantOf(document))
{
this.isValid = true;
return this.isValid;
diff --git a/framework/Web/Services/TFeedService.php b/framework/Web/Services/TFeedService.php
index a1518d4e..75775f49 100644
--- a/framework/Web/Services/TFeedService.php
+++ b/framework/Web/Services/TFeedService.php
@@ -5,7 +5,7 @@
* @author Qiang Xue <qiang.xue@gmail.com>
* @author Knut Urdalen <knut.urdalen@gmail.com>
* @link http://www.pradosoft.com
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
* @version $Id$
* @package System.Web.Services
@@ -132,7 +132,7 @@ class TFeedService extends TService
else
throw new TConfigurationException('feedservice_class_required',$id);
}
-
+
// init feed properties
foreach($properties as $name=>$value)
$feed->setSubproperty($name,$value);
diff --git a/framework/Web/Services/TJsonService.php b/framework/Web/Services/TJsonService.php
index 15701a9a..e3b9b1cb 100644
--- a/framework/Web/Services/TJsonService.php
+++ b/framework/Web/Services/TJsonService.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TJsonService.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.Services
*/
@@ -47,7 +46,6 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @author Carl G. Mathisen <carlgmathisen@gmail.com>
- * @version $Id: TJsonService.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.Services
* @since 3.1
*/
@@ -132,7 +130,7 @@ class TJsonService extends TService
throw new TConfigurationException('jsonservice_response_type_invalid',$id);
}
else
- throw new TConfigurationException('jsonservice_class_required',$id);
+ throw new TConfigurationException('jsonservice_class_required',$id);
}
}
else
@@ -172,7 +170,6 @@ class TJsonService extends TService
* will be empty if the returned content is null.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TJsonService.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.Services
* @since 3.1
*/
diff --git a/framework/Web/Services/TPageService.php b/framework/Web/Services/TPageService.php
index 8e052693..f0dd8c1a 100644
--- a/framework/Web/Services/TPageService.php
+++ b/framework/Web/Services/TPageService.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TPageService.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.Services
*/
@@ -70,7 +69,6 @@ Prado::using('System.Web.UI.TThemeManager');
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @author Carl G. Mathisen <carlgmathisen@gmail.com>
- * @version $Id: TPageService.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.Services
* @since 3.0
*/
@@ -547,7 +545,6 @@ class TPageService extends TService
* Configurations along this path are merged together to be provided for the page.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TPageService.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.Services
* @since 3.0
*/
@@ -657,14 +654,14 @@ class TPageConfiguration extends TComponent
Prado::trace("Loading page configuration file $fname",'System.Web.Services.TPageService');
if(empty($fname) || !is_file($fname))
return;
-
+
if(Prado::getApplication()->getConfigurationType()==TApplication::CONFIG_TYPE_PHP)
{
$fcontent = include $fname;
$this->loadFromPhp($fcontent,dirname($fname),$configPagePath);
}
else
- {
+ {
$dom=new TXmlDocument;
if($dom->loadFromFile($fname))
$this->loadFromXml($dom,dirname($fname),$configPagePath);
@@ -692,7 +689,7 @@ class TPageConfiguration extends TComponent
$this->loadApplicationConfigurationFromXml($dom,$configPath);
$this->loadPageConfigurationFromXml($dom,$configPath,$configPagePath);
}
-
+
public function loadApplicationConfigurationFromPhp($config,$configPath)
{
$appConfig=new TApplicationConfiguration;
@@ -775,7 +772,7 @@ class TPageConfiguration extends TComponent
if(isset($page['properties']))
{
$properties=$page['properties'];
- unset($page['properties']);
+ unset($page['properties']);
}
$matching=false;
$id=($configPagePath==='')?$id:$configPagePath.'.'.$id;
@@ -787,7 +784,7 @@ class TPageConfiguration extends TComponent
$this->_properties=array_merge($this->_properties,$properties);
}
}
-
+
// external configurations
if(isset($config['includes']) && is_array($config['includes']))
{
diff --git a/framework/Web/Services/TRpcService.php b/framework/Web/Services/TRpcService.php
index a2691af4..a4ed3d7c 100644
--- a/framework/Web/Services/TRpcService.php
+++ b/framework/Web/Services/TRpcService.php
@@ -480,7 +480,6 @@ class TJsonRpcProtocol extends TRpcProtocol
if(!is_array($parameters))
$parameters = array($parameters);
- $ret = $this->callApiMethod($_request['method'], $parameters);
// a request without an id is a notification that doesn't need a response
if($this->_id !== null)
{
@@ -489,7 +488,7 @@ class TJsonRpcProtocol extends TRpcProtocol
return $this->encode(array(
'jsonrpc' => '2.0',
'id' => $this->_id,
- 'result' => $ret
+ 'result' => $this->callApiMethod($_request['method'], $parameters),
));
} else {
return $this->encode(array(
diff --git a/framework/Web/Services/TSoapService.php b/framework/Web/Services/TSoapService.php
index 2d59f462..c928dc06 100644
--- a/framework/Web/Services/TSoapService.php
+++ b/framework/Web/Services/TSoapService.php
@@ -5,9 +5,8 @@
* @author Knut Urdalen <knut.urdalen@gmail.com>
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TSoapService.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.Services
*/
@@ -156,7 +155,7 @@ class TSoapService extends TService
* @throws TConfigurationException if soap server id is not specified or duplicated
*/
private function loadConfig($config)
- {
+ {
if($this->getApplication()->getConfigurationType()==TApplication::CONFIG_TYPE_PHP)
{
if(is_array($config))
@@ -296,7 +295,6 @@ class TSoapService extends TService
* It also manages the URI for the SOAP service and WSDL.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TSoapService.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.Services
* @since 3.1
*/
diff --git a/framework/Web/TAssetManager.php b/framework/Web/TAssetManager.php
index f29b0707..272d4400 100644
--- a/framework/Web/TAssetManager.php
+++ b/framework/Web/TAssetManager.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TAssetManager.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web
*/
@@ -38,7 +37,6 @@
* pointing to a valid directory writable by the Web server process.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TAssetManager.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web
* @since 3.0
*/
diff --git a/framework/Web/TCacheHttpSession.php b/framework/Web/TCacheHttpSession.php
index d658c0f3..02e84e22 100644
--- a/framework/Web/TCacheHttpSession.php
+++ b/framework/Web/TCacheHttpSession.php
@@ -5,9 +5,8 @@
* @author Carl G. Mathisen <carlgmathisen@gmail.com>
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TCacheHttpSession.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web
* @since 3.1.1
*/
@@ -36,7 +35,6 @@
*
* @author Carl G. Mathisen <carlgmathisen@gmail.com>
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TCacheHttpSession.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web
* @since 3.1.1
*/
diff --git a/framework/Web/THttpRequest.php b/framework/Web/THttpRequest.php
index f621d1eb..5d77ba60 100644
--- a/framework/Web/THttpRequest.php
+++ b/framework/Web/THttpRequest.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: THttpRequest.php 3273 2013-02-13 21:51:21Z ctrlaltca $
* @package System.Web
*/
@@ -64,7 +63,6 @@ Prado::using('System.Web.TUrlManager');
* request module. It can be accessed via {@link TApplication::getRequest()}.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: THttpRequest.php 3273 2013-02-13 21:51:21Z ctrlaltca $
* @package System.Web
* @since 3.0
*/
@@ -267,7 +265,7 @@ class THttpRequest extends TApplicationComponent implements IteratorAggregate,Ar
if($this->getEnableCache())
{
$cache = $this->getApplication()->getCache();
- if($cache !== null)
+ if($cache !== null)
{
$dependencies = null;
if($this->getApplication()->getMode() !== TApplicationMode::Performance)
@@ -969,7 +967,6 @@ class THttpRequest extends TApplicationComponent implements IteratorAggregate,Ar
* </code>
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: THttpRequest.php 3273 2013-02-13 21:51:21Z ctrlaltca $
* @package System.Web
* @since 3.0
*/
@@ -1057,7 +1054,6 @@ class THttpCookieCollection extends TList
* domain, path, expire, and secure.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: THttpRequest.php 3273 2013-02-13 21:51:21Z ctrlaltca $
* @package System.Web
* @since 3.0
*/
@@ -1232,7 +1228,6 @@ class THttpCookie extends TComponent
* - fragment: anchor
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: THttpRequest.php 3273 2013-02-13 21:51:21Z ctrlaltca $
* @package System.Web
* @since 3.0
*/
@@ -1399,7 +1394,6 @@ class TUri extends TComponent
* - HiddenPath: the URL format is like /path/to/name1,value1/name2,value2...
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: THttpRequest.php 3273 2013-02-13 21:51:21Z ctrlaltca $
* @package System.Web
* @since 3.0.4
*/
diff --git a/framework/Web/THttpResponse.php b/framework/Web/THttpResponse.php
index ebcb9cc7..75563ef9 100644
--- a/framework/Web/THttpResponse.php
+++ b/framework/Web/THttpResponse.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: THttpResponse.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web
*/
@@ -60,7 +59,6 @@ Prado::using('System.Web.THttpResponseAdapter');
* will force the browser to ask for a username and a password.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: THttpResponse.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web
* @since 3.0
*/
diff --git a/framework/Web/THttpResponseAdapter.php b/framework/Web/THttpResponseAdapter.php
index 635752ed..3411e71c 100644
--- a/framework/Web/THttpResponseAdapter.php
+++ b/framework/Web/THttpResponseAdapter.php
@@ -4,7 +4,7 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
* @version $Id$
* @package System.Web
diff --git a/framework/Web/THttpSession.php b/framework/Web/THttpSession.php
index f32b7063..79c6e6df 100644
--- a/framework/Web/THttpSession.php
+++ b/framework/Web/THttpSession.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: THttpSession.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web
*/
@@ -57,7 +56,6 @@
* and {@link getTimeout TimeOut} are configurable properties of THttpSession.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: THttpSession.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web
* @since 3.0
*/
@@ -159,7 +157,7 @@ class THttpSession extends TApplicationComponent implements IteratorAggregate,Ar
$this->_started=false;
}
}
-
+
/**
* Update the current session id with a newly generated one
*
@@ -628,7 +626,6 @@ class THttpSession extends TApplicationComponent implements IteratorAggregate,Ar
* for traversing the session variables.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: THttpSession.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web
* @since 3.0
*/
@@ -717,7 +714,6 @@ class TSessionIterator implements Iterator
* - Only: using cookie only.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: THttpSession.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web
* @since 3.0.4
*/
diff --git a/framework/Web/THttpUtility.php b/framework/Web/THttpUtility.php
index 128dee55..f41060f7 100644
--- a/framework/Web/THttpUtility.php
+++ b/framework/Web/THttpUtility.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: THttpUtility.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web
*/
@@ -14,7 +13,6 @@
* THttpUtility class
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: THttpUtility.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web
* @since 3.0
*/
diff --git a/framework/Web/TUrlManager.php b/framework/Web/TUrlManager.php
index 75abdcf1..2d3fa572 100644
--- a/framework/Web/TUrlManager.php
+++ b/framework/Web/TUrlManager.php
@@ -4,7 +4,7 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
* @version $Id $
* @package System.Web
@@ -50,7 +50,7 @@ class TUrlManager extends TModule
* In order to use the 'HiddenPath' format you need proper url rewrite configuration;
* here's an example for Apache's .htaccess:
* <cdde>
- * Options +FollowSymLinks
+ * Options +FollowSymLinks
* RewriteEngine On
* RewriteCond %{REQUEST_FILENAME} !-d
* RewriteCond %{REQUEST_FILENAME} !-f
diff --git a/framework/Web/TUrlMapping.php b/framework/Web/TUrlMapping.php
index 929a873e..4c93f004 100644
--- a/framework/Web/TUrlMapping.php
+++ b/framework/Web/TUrlMapping.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TUrlMapping.php 3290 2013-05-06 08:32:15Z ctrlaltca $
* @package System.Web
*/
@@ -63,7 +62,6 @@ Prado::using('System.Collections.TAttributeCollection');
* in the GET variables.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TUrlMapping.php 3290 2013-05-06 08:32:15Z ctrlaltca $
* @package System.Web
* @since 3.0.5
*/
@@ -477,7 +475,7 @@ class TUrlMapping extends TUrlManager
* Since 3.2.2 you can also add a list of "constants" parameters that can be used just
* like the original "parameters" parameters, except that the supplied value will be treated
* as a simple string constant instead of a regular expression. For example
- *
+ *
* <url ServiceParameter="MyPage" pattern="/mypage/mypath/list/detail/{pageidx}" parameters.pageidx="\d+" constants.listtype="detailed"/>
* <url ServiceParameter="MyPage" pattern="/mypage/mypath/list/summary/{pageidx}" parameters.pageidx="\d+" constants.listtype="summarized"/>
*
@@ -486,7 +484,6 @@ class TUrlMapping extends TUrlManager
* The constants is practically a table-based validation and translation of specified, fixed-set parameter values.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TUrlMapping.php 3290 2013-05-06 08:32:15Z ctrlaltca $
* @package System.Web
* @since 3.0.5
*/
@@ -1003,7 +1000,6 @@ class TUrlMappingPattern extends TComponent
* URL prefix behavior that can be used by {@link TUrlMappingPattern::constructUrl()}.
*
* @author Yves Berkholz <godzilla80[at]gmx[dot]net>
- * @version $Id: TUrlMapping.php 3290 2013-05-06 08:32:15Z ctrlaltca $
* @package System.Web
* @since 3.2
*/
diff --git a/framework/Web/UI/ActiveControls/TActiveButton.php b/framework/Web/UI/ActiveControls/TActiveButton.php
index 16ba5339..697e96f1 100644
--- a/framework/Web/UI/ActiveControls/TActiveButton.php
+++ b/framework/Web/UI/ActiveControls/TActiveButton.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TActiveButton.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -29,7 +28,6 @@ Prado::using('System.Web.UI.ActiveControls.TActiveControlAdapter');
* will update the button's caption upon callback response completion.
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
- * @version $Id: TActiveButton.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
@@ -63,7 +61,7 @@ class TActiveButton extends TButton implements ICallbackEventHandler, IActiveCon
}
/**
- * Raises the callback event. This method is required by
+ * Raises the callback event. This method is required by
* {@link ICallbackEventHandler} interface. If {@link getCausesValidation CausesValidation}
* is true, it will invoke the page's {@link TPage::validate validate}
* method first. It will raise {@link onClick OnClick} event first
diff --git a/framework/Web/UI/ActiveControls/TActiveCheckBox.php b/framework/Web/UI/ActiveControls/TActiveCheckBox.php
index 6221150d..b5d7393c 100644
--- a/framework/Web/UI/ActiveControls/TActiveCheckBox.php
+++ b/framework/Web/UI/ActiveControls/TActiveCheckBox.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TActiveCheckBox.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -26,7 +25,6 @@ Prado::using('System.Web.UI.ActiveControls.TActiveControlAdapter');
* changed during a callback.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TActiveCheckBox.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
@@ -121,9 +119,9 @@ class TActiveCheckBox extends TCheckBox implements ICallbackEventHandler, IActiv
/**
* Ensure that the ID attribute is rendered and registers the javascript code
* for initializing the active control.
- *
+ *
* Since 3.1.4, the javascript code is not rendered if {@link setAutoPostBack AutoPostBack} is false
- *
+ *
* @param THtmlWriter the writer for the rendering purpose
* @param string checkbox id
* @param string onclick js
diff --git a/framework/Web/UI/ActiveControls/TActiveCheckBoxList.php b/framework/Web/UI/ActiveControls/TActiveCheckBoxList.php
index a42044fb..aa2d5f94 100644
--- a/framework/Web/UI/ActiveControls/TActiveCheckBoxList.php
+++ b/framework/Web/UI/ActiveControls/TActiveCheckBoxList.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TActiveCheckBoxList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -30,7 +29,6 @@ Prado::using('System.Web.UI.ActiveControls.TActiveListControlAdapter');
* List items can not be changed dynamically during a callback request.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TActiveCheckBoxList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
diff --git a/framework/Web/UI/ActiveControls/TActiveClientScript.php b/framework/Web/UI/ActiveControls/TActiveClientScript.php
index 8fce726a..4443ea30 100755
--- a/framework/Web/UI/ActiveControls/TActiveClientScript.php
+++ b/framework/Web/UI/ActiveControls/TActiveClientScript.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TActiveClientScript.php 3144 2012-05-19 10:07:03Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -15,13 +14,13 @@
*
* This is the active counterpart of the {@link TClientScript} class.
*
- * TActiveClientScript has the ability to render itself on ajax
+ * TActiveClientScript has the ability to render itself on ajax
* callbacks. This means that every variable or function declared in javascript
* code will be available to the page.
*
* Beware that when rendered on normal (postback) or ajax callbacks, some
- * javascript code won't behave in the same way.
- * When rendered as part of a normal/postback response, scripts will execute instantly
+ * javascript code won't behave in the same way.
+ * When rendered as part of a normal/postback response, scripts will execute instantly
* where they are in the page and in a synchronous fashion.
* Instead, when they are rendered as part of a callback response,
* they will be executed when all DOM modifications are complete and any dynamic
@@ -30,7 +29,6 @@
* This can potentially hurt compatibility and graceful fallback.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TActiveClientScript.php 3144 2012-05-19 10:07:03Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.2
*/
diff --git a/framework/Web/UI/ActiveControls/TActiveControlAdapter.php b/framework/Web/UI/ActiveControls/TActiveControlAdapter.php
index ab15f091..91c17f92 100644
--- a/framework/Web/UI/ActiveControls/TActiveControlAdapter.php
+++ b/framework/Web/UI/ActiveControls/TActiveControlAdapter.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TActiveControlAdapter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -29,7 +28,6 @@ Prado::using('System.Web.UI.ActiveControls.TBaseActiveControl');
* corresponding client-side properties.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TActiveControlAdapter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
@@ -197,7 +195,6 @@ class TActiveControlAdapter extends TControlAdapter
* Tracking changes to the page state during callback.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TActiveControlAdapter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
@@ -387,7 +384,6 @@ class TCallbackPageStateTracker
* Calculates the viewstate changes during the request.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TActiveControlAdapter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
@@ -431,7 +427,6 @@ abstract class TViewStateDiff
* Calculate the changes to a scalar value.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TActiveControlAdapter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
@@ -456,7 +451,6 @@ class TScalarDiff extends TViewStateDiff
* Calculates the changes to the Style properties.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TActiveControlAdapter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
@@ -548,7 +542,6 @@ class TStyleDiff extends TViewStateDiff
* Calculate the changes to attributes collection.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TActiveControlAdapter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
diff --git a/framework/Web/UI/ActiveControls/TActiveCustomValidator.php b/framework/Web/UI/ActiveControls/TActiveCustomValidator.php
index cc2a54a1..f05704fc 100644
--- a/framework/Web/UI/ActiveControls/TActiveCustomValidator.php
+++ b/framework/Web/UI/ActiveControls/TActiveCustomValidator.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TActiveCustomValidator.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -28,7 +27,6 @@ Prado::using('System.Web.UI.ActiveControls.TCallbackClientSide');
* will be true when validation is made during a callback request.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TActiveCustomValidator.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
@@ -186,7 +184,6 @@ class TActiveCustomValidator extends TCustomValidator
* Custom Validator callback client side options class.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TActiveCustomValidator.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
diff --git a/framework/Web/UI/ActiveControls/TActiveDataGrid.php b/framework/Web/UI/ActiveControls/TActiveDataGrid.php
index 00c9cb49..d5084e2d 100644
--- a/framework/Web/UI/ActiveControls/TActiveDataGrid.php
+++ b/framework/Web/UI/ActiveControls/TActiveDataGrid.php
@@ -107,7 +107,7 @@ class TActiveDataGrid extends TDataGrid implements IActiveControl, ISurroundable
* If it is enabled (clickable), its command name and parameter will also be set.
* It overrides the datagrid's original method to create active controls instead, thus
* the pager will do callbacks instead of the regular postbacks.
- * @param mixed the container pager instance of TActiveDatagridPager
+ * @param mixed the container pager instance of TActiveDatagridPager
* @param string button type, either LinkButton or PushButton
* @param boolean whether the button should be enabled
* @param string caption of the button
@@ -786,7 +786,6 @@ class TActiveLiteralColumn extends TLiteralColumn {
* TActiveDataGridPager represents a pager in an activedatagrid.
*
* @author Fabio Bas <ctrlaltca@gmail.com>
- * @version $Id: TDataGrid.php 3057 2011-11-09 12:35:57Z ctrlaltca@gmail.com $
* @package System.Web.UI.ActiveControls
* @since 3.2.1
*/
@@ -813,7 +812,6 @@ class TActiveDataGridPager extends TDataGridPager
* The {@link getPager Pager} property indicates the datagrid pager related with the event.
*
* @author Fabio Bas <ctrlaltca@gmail.com>
- * @version $Id: TActiveDataGrid.php 3057 2011-11-09 12:35:57Z ctrlaltca@gmail.com $
* @package System.Web.UI.ActiveControls
* @since 3.2.1
*/
diff --git a/framework/Web/UI/ActiveControls/TActiveDataList.php b/framework/Web/UI/ActiveControls/TActiveDataList.php
index dbf70067..6b749b40 100644
--- a/framework/Web/UI/ActiveControls/TActiveDataList.php
+++ b/framework/Web/UI/ActiveControls/TActiveDataList.php
@@ -1,12 +1,11 @@
<?php
/**
* TActiveDataList class file
- *
+ *
* @author Marcos Aurelio Nobre <marconobre@gmail.com>
* @copyright Copyright &copy; 2008, PradoSoft
* @license http://www.pradosoft.com/license
* @package System.Web.UI.ActiveControls
- * @version $Id: TActiveDataList.php 2706 2009-09-24 14:42:30Z rojaro $
*/
/**
@@ -14,7 +13,7 @@
*
* TActiveDataList represents a data bound and updatable grid control which is the
* active counterpart to the original {@link TDataList} control.
- *
+ *
* This component can be used in the same way as the regular datalist, the only
* difference is that the active datalist uses callbacks instead of postbacks
* for interaction.
@@ -25,10 +24,10 @@
* @package System.Web.UI.ActiveControls
*/
class TActiveDataList extends TDataList implements IActiveControl {
-
+
/**
* Creates a new callback control, sets the adapter to
- * TActiveControlAdapter.
+ * TActiveControlAdapter.
*/
public function __construct()
{
@@ -43,7 +42,7 @@ class TActiveDataList extends TDataList implements IActiveControl {
{
return $this->getAdapter()->getBaseActiveControl();
}
-
+
/**
* Sets the data source object associated with the repeater control.
* In addition, the render method of all connected pagers is called so they
@@ -59,7 +58,7 @@ class TActiveDataList extends TDataList implements IActiveControl {
$this->getPage()->getAdapter()->registerControlToRender($this,$this->getResponse()->createHtmlWriter());
}
}
-
+
/**
* Returns the id of the surrounding container (span).
* @return string container id
@@ -68,7 +67,7 @@ class TActiveDataList extends TDataList implements IActiveControl {
{
return $this->ClientID.'_Container';
}
-
+
/**
* Renders the repeater.
* If the repeater did not pass the prerender phase yet, it will register itself for rendering later.
@@ -85,10 +84,10 @@ class TActiveDataList extends TDataList implements IActiveControl {
$this->getPage()->getAdapter()->registerControlToRender($this,$writer);
}
}
-
+
/**
* Loops through all {@link TActivePager} on the page and registers the ones which are set to paginate
- * the repeater for rendering. This is to ensure that the connected pagers are also rendered if the
+ * the repeater for rendering. This is to ensure that the connected pagers are also rendered if the
* data source changed.
*/
private function renderPager()
@@ -102,7 +101,7 @@ class TActiveDataList extends TDataList implements IActiveControl {
}
}
}
-
+
/**
* Renders the repeater by writing a span tag with the container id obtained from {@link getContainerID()}
* which will be called by the replacement method of the client script to update it's content.
diff --git a/framework/Web/UI/ActiveControls/TActiveDatePicker.php b/framework/Web/UI/ActiveControls/TActiveDatePicker.php
index 279739a8..ad363d9c 100755
--- a/framework/Web/UI/ActiveControls/TActiveDatePicker.php
+++ b/framework/Web/UI/ActiveControls/TActiveDatePicker.php
@@ -1,13 +1,12 @@
<?php
/**
* TActiveDatePicker class file
- *
+ *
* @author Bradley Booms <Bradley.Booms@nsighttel.com>
* @author Christophe Boulain <Christophe.Boulain@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TActiveDatePicker.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -18,20 +17,19 @@ Prado::using('System.Web.UI.ActiveControls.TActiveControlAdapter');
/**
* TActiveDatePicker class
- *
+ *
* The active control counter part to date picker control.
* When the date selection is changed, the {@link onCallback OnCallback} event is
* raised.
- *
+ *
* @author Bradley Booms <Bradley.Booms@nsighttel.com>
* @author Christophe Boulain <Christophe.Boulain@gmail.com>
- * @version $Id: TActiveDatePicker.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1.3
*/
class TActiveDatePicker extends TDatePicker implements ICallbackEventHandler, IActiveControl
{
-
+
/**
* @return boolean a value indicating whether an automatic postback to the server
* will occur whenever the user modifies the text in the TActiveDatePicker control and
@@ -67,7 +65,7 @@ class TActiveDatePicker extends TDatePicker implements ICallbackEventHandler, I
$options['AutoPostBack'] = $this->getAutoPostBack();
return $options;
}
-
+
/**
* Creates a new callback control, sets the adapter to
* TActiveControlAdapter. If you override this class, be sure to set the
@@ -78,7 +76,7 @@ class TActiveDatePicker extends TDatePicker implements ICallbackEventHandler, I
parent::__construct();
$this->setAdapter(new TActiveControlAdapter($this));
}
-
+
/**
* @return TBaseActiveCallbackControl standard callback control options.
*/
@@ -103,21 +101,21 @@ class TActiveDatePicker extends TDatePicker implements ICallbackEventHandler, I
$cb->select($id.TControl::CLIENT_ID_SEPARATOR.'day', 'Value', $date['mday'], 'select');
$cb->select($id.TControl::CLIENT_ID_SEPARATOR.'month', 'Value', $date['mon']-1, 'select');
$cb->select($id.TControl::CLIENT_ID_SEPARATOR.'year', 'Value', $date['year'], 'select');
-
+
}
}
}
-
+
/**
* Raises the callback event. This method is required by {@link
- * ICallbackEventHandler} interface.
+ * ICallbackEventHandler} interface.
* This method is mainly used by framework and control developers.
* @param TCallbackEventParameter the event parameter
*/
public function raiseCallbackEvent($param){
$this->onCallback($param);
- }
-
+ }
+
/**
* This method is invoked when a callback is requested. The method raises
* 'OnCallback' event to fire up the event handlers. If you override this
@@ -128,7 +126,7 @@ class TActiveDatePicker extends TDatePicker implements ICallbackEventHandler, I
public function onCallback($param){
$this->raiseEvent('OnCallback', $this, $param);
}
-
+
/**
* Registers the javascript code to initialize the date picker.
*/
@@ -174,9 +172,8 @@ class TActiveDatePicker extends TDatePicker implements ICallbackEventHandler, I
* is changed.
* The formatted date according to {@link TDatePicker::getDateFormat DateFormat} is sent
* as parameter to this event
- *
+ *
* @author Fabio Bas <ctrlaltca[at]gmail[dot]com>
- * @version $Id: TActiveDatePicker.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.2.1
*/
diff --git a/framework/Web/UI/ActiveControls/TActiveDropDownList.php b/framework/Web/UI/ActiveControls/TActiveDropDownList.php
index f0f8bba2..0de95078 100644
--- a/framework/Web/UI/ActiveControls/TActiveDropDownList.php
+++ b/framework/Web/UI/ActiveControls/TActiveDropDownList.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TActiveDropDownList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -31,7 +30,6 @@ Prado::using('System.Web.UI.ActiveControls.TActiveListControlAdapter');
* List items can be changed dynamically during a callback request.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TActiveDropDownList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
diff --git a/framework/Web/UI/ActiveControls/TActiveFileUpload.php b/framework/Web/UI/ActiveControls/TActiveFileUpload.php
index 10aa2ed3..b478e119 100755
--- a/framework/Web/UI/ActiveControls/TActiveFileUpload.php
+++ b/framework/Web/UI/ActiveControls/TActiveFileUpload.php
@@ -1,11 +1,10 @@
<?php
/**
* TActiveFileUpload.php
- *
+ *
* @author Bradley Booms <Bradley.Booms@nsighttel.com>
* @author Christophe Boulain <Christophe.Boulain@gmail.com>
* @author Gabor Berczi <gabor.berczi@devworx.hu> (issue 349 remote vulnerability fix)
- * @version $Id: TActiveFileUpload.php 3232 2013-01-02 14:42:24Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -17,7 +16,7 @@ Prado::using('System.Web.UI.WebControls.TFileUpload');
/**
* TActiveFileUpload
- *
+ *
* TActiveFileUpload displays a file upload field on a page. Upon postback,
* the text entered into the field will be treated as the name of the file
* that will be uploaded to the server. The property {@link getHasFile HasFile}
@@ -31,22 +30,21 @@ Prado::using('System.Web.UI.WebControls.TFileUpload');
*
* TActiveFileUpload raises {@link onFileUpload OnFileUpload} event if a file is uploaded
* (whether it succeeds or not).
- *
+ *
* TActiveFileUpload actually does a postback in a hidden IFrame, and then does a callback.
* This callback then raises the {@link onFileUpload OnFileUpload} event. After the postback
* a status icon is displayed; either a green checkmark if the upload is successful,
* or a red x if there was an error.
- *
+ *
* @author Bradley Booms <Bradley.Booms@nsighttel.com>
* @author Christophe Boulain <Christophe.Boulain@gmail.com>
- * @version $Id: TActiveFileUpload.php 3232 2013-01-02 14:42:24Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
-class TActiveFileUpload extends TFileUpload implements IActiveControl, ICallbackEventHandler, INamingContainer
+class TActiveFileUpload extends TFileUpload implements IActiveControl, ICallbackEventHandler, INamingContainer
{
-
+
const SCRIPT_PATH = 'prado/activefileupload';
-
+
/**
* @var THiddenField a flag to tell which component is doing the callback.
*/
@@ -68,7 +66,7 @@ class TActiveFileUpload extends TFileUpload implements IActiveControl, ICallback
*/
private $_target;
-
+
/**
* Creates a new callback control, sets the adapter to
* TActiveControlAdapter. If you override this class, be sure to set the
@@ -78,8 +76,8 @@ class TActiveFileUpload extends TFileUpload implements IActiveControl, ICallback
parent::__construct();
$this->setAdapter(new TActiveControlAdapter($this));
}
-
-
+
+
/**
* @param string asset file in the self::SCRIPT_PATH directory.
* @return string asset file url.
@@ -89,8 +87,8 @@ class TActiveFileUpload extends TFileUpload implements IActiveControl, ICallback
$base = $this->getPage()->getClientScript()->getPradoScriptAssetUrl();
return $base.'/'.self::SCRIPT_PATH.'/'.$file;
}
-
-
+
+
/**
* This method is invoked when a file is uploaded.
* If you override this method, be sure to call the parent implementation to ensure
@@ -103,10 +101,10 @@ class TActiveFileUpload extends TFileUpload implements IActiveControl, ICallback
// save the file so that it will persist past the end of this return.
$localName = str_replace('\\', '/', tempnam(Prado::getPathOfNamespace($this->getTempPath()),''));
parent::saveAs($localName);
-
+
$filename=addslashes($this->getFileName());
-
-
+
+
$params = new TActiveFileUploadCallbackParams;
$params->localName = $localName;
$params->fileName = $filename;
@@ -128,11 +126,11 @@ class TActiveFileUpload extends TFileUpload implements IActiveControl, ICallback
parent.Prado.WebUI.TActiveFileUpload.onFileUpload(Options);
</script>
EOS;
-
+
exit();
}
}
-
+
/**
* @return string the path where the uploaded file will be stored temporarily, in namespace format
* default "Application.runtime.*"
@@ -140,7 +138,7 @@ EOS;
public function getTempPath(){
return $this->getViewState('TempPath', 'Application.runtime.*');
}
-
+
/**
* @param string the path where the uploaded file will be stored temporarily in namespace format
* default "Application.runtime.*"
@@ -148,7 +146,7 @@ EOS;
public function setTempPath($value){
$this->setViewState('TempPath',$value,'Application.runtime.*');
}
-
+
/**
* @return boolean a value indicating whether an automatic callback to the server will occur whenever the user modifies the text in the TTextBox control and then tabs out of the component. Defaults to true.
* Note: When set to false, you will need to trigger the callback yourself.
@@ -156,7 +154,7 @@ EOS;
public function getAutoPostBack(){
return $this->getViewState('AutoPostBack', true);
}
-
+
/**
* @param boolean a value indicating whether an automatic callback to the server will occur whenever the user modifies the text in the TTextBox control and then tabs out of the component. Defaults to true.
* Note: When set to false, you will need to trigger the callback yourself.
@@ -164,49 +162,49 @@ EOS;
public function setAutoPostBack($value){
$this->setViewState('AutoPostBack',TPropertyValue::ensureBoolean($value),true);
}
-
+
/**
* @return string A chuck of javascript that will need to be called if {{@link getAutoPostBack AutoPostBack} is set to false}
- */
+ */
public function getCallbackJavascript(){
return "Prado.WebUI.TActiveFileUpload.fileChanged(\"{$this->getClientID()}\")";
}
-
+
/**
* @throws TInvalidDataValueException if the {@link getTempPath TempPath} is not writable.
*/
public function onInit($sender){
parent::onInit($sender);
-
+
if (!Prado::getApplication()->getCache())
if (!Prado::getApplication()->getSecurityManager())
throw new Exception('TActiveFileUpload needs either an application level cache or a security manager to work securely');
-
+
if (!is_writable(Prado::getPathOfNamespace($this->getTempPath()))){
throw new TInvalidDataValueException("activefileupload_temppath_invalid", $this->getTempPath());
}
}
-
+
/**
* Raises <b>OnFileUpload</b> event.
- *
- * This method is required by {@link ICallbackEventHandler} interface.
+ *
+ * This method is required by {@link ICallbackEventHandler} interface.
* This method is mainly used by framework and control developers.
* @param TCallbackEventParameter the event parameter
*/
public function raiseCallbackEvent($param){
$cp = $param->getCallbackParameter();
if ($key = $cp->targetID == $this->_target->getUniqueID()){
-
+
$params = $this->popParamsByToken($cp->callbackToken);
-
+
$_FILES[$key]['name'] = $params->fileName;
$_FILES[$key]['size'] = intval($params->fileSize);
$_FILES[$key]['type'] = $params->fileType;
$_FILES[$key]['error'] = intval($params->errorCode);
$_FILES[$key]['tmp_name'] = $params->localName;
$this->loadPostData($key, null);
-
+
$this->raiseEvent('OnFileUpload', $this, $param);
}
}
@@ -220,7 +218,7 @@ EOS;
{
$this->onFileUpload($this->getPage()->getRequest()->itemAt('TActiveFileUpload_TargetId'));
}
-
+
protected function pushParamsAndGetToken(TActiveFileUploadCallbackParams $params)
{
if ($cache = Prado::getApplication()->getCache())
@@ -237,10 +235,10 @@ EOS;
}
else
throw new Exception('TActiveFileUpload needs either an application level cache or a security manager to work securely');
-
+
return $token;
}
-
+
protected function popParamsByToken($token)
{
if ($cache = Prado::getApplication()->getCache())
@@ -260,7 +258,7 @@ EOS;
throw new Exception('TActiveFileUpload needs either an application level cache or a security manager to work securely');
assert($params instanceof TActiveFileUploadCallbackParams);
-
+
return $params;
}
@@ -277,14 +275,14 @@ EOS;
$this->_errorCode = UPLOAD_ERR_FORM_SIZE;
$localName = str_replace('\\', '/', tempnam(Prado::getPathOfNamespace($this->getTempPath()),''));
$fileName = addslashes($this->getFileName());
-
+
$params = new TActiveFileUploadCallbackParams;
$params->localName = $localName;
$params->fileName = $fileName;
$params->fileSize = $this->getFileSize();
$params->fileType = $this->getFileType();
$params->errorCode = $this->getErrorCode();
-
+
echo <<<EOS
<script language="Javascript">
Options = new Object();
@@ -295,35 +293,35 @@ EOS;
Options.fileType = '{$params->fileType}';
Options.errorCode = '{$params->errorCode}';
Options.callbackToken = '{$this->pushParamsAndGetToken($params)}';
- parent.Prado.WebUI.TactiveFileUpload.onFileUpload(Options);
+ parent.Prado.WebUI.TActiveFileUpload.onFileUpload(Options);
</script>
EOS;
}
}
-
+
public function createChildControls(){
$this->_flag = Prado::createComponent('THiddenField');
$this->_flag->setID('Flag');
$this->getControls()->add($this->_flag);
-
+
$this->_busy = Prado::createComponent('TImage');
$this->_busy->setID('Busy');
$this->_busy->setImageUrl($this->getAssetUrl('ActiveFileUploadIndicator.gif'));
$this->_busy->setStyle("display:none");
$this->getControls()->add($this->_busy);
-
+
$this->_success = Prado::createComponent('TImage');
$this->_success->setID('Success');
$this->_success->setImageUrl($this->getAssetUrl('ActiveFileUploadComplete.png'));
$this->_success->setStyle("display:none");
$this->getControls()->add($this->_success);
-
+
$this->_error = Prado::createComponent('TImage');
$this->_error->setID('Error');
$this->_error->setImageUrl($this->getAssetUrl('ActiveFileUploadError.png'));
$this->_error->setStyle("display:none");
$this->getControls()->add($this->_error);
-
+
$this->_target = Prado::createComponent('TInlineFrame');
$this->_target->setID('Target');
$this->_target->setFrameUrl($this->getAssetUrl('ActiveFileUploadBlank.html'));
@@ -331,14 +329,14 @@ EOS;
$this->_target->setShowBorder(false);
$this->getControls()->add($this->_target);
}
-
-
+
+
/**
- * Removes localfile on ending of the callback.
+ * Removes localfile on ending of the callback.
*/
public function onUnload($param){
- if ($this->getPage()->getIsCallback() &&
- $this->getHasFile() &&
+ if ($this->getPage()->getIsCallback() &&
+ $this->getHasFile() &&
file_exists($this->getLocalName())){
unlink($this->getLocalName());
}
@@ -367,7 +365,7 @@ EOS;
public function addAttributesToRender($writer){
parent::addAttributesToRender($writer);
$writer->addAttribute('id',$this->getClientID());
-
+
$this->getPage()->getClientScript()->registerPradoScript('activefileupload');
$this->getActiveControl()->registerCallbackClientScript($this->getClientClassName(),$this->getClientOptions());
}
@@ -392,7 +390,7 @@ EOS;
protected function getClientOptions(){
$options['ID'] = $this->getClientID();
$options['EventTarget'] = $this->getUniqueID();
-
+
$options['inputID'] = $this->getClientID();
$options['flagID'] = $this->_flag->getClientID();
$options['targetID'] = $this->_target->getUniqueID();
@@ -422,25 +420,25 @@ EOS;
}
/**
- * @return TImage the image displayed when an upload
+ * @return TImage the image displayed when an upload
* completes successfully.
*/
public function getSuccessImage(){
$this->ensureChildControls();
return $this->_success;
}
-
+
/**
- * @return TImage the image displayed when an upload
+ * @return TImage the image displayed when an upload
* does not complete successfully.
*/
public function getErrorImage(){
$this->ensureChildControls();
return $this->_error;
}
-
+
/**
- * @return TImage the image displayed when an upload
+ * @return TImage the image displayed when an upload
* is in progress.
*/
public function getBusyImage(){
@@ -451,10 +449,9 @@ EOS;
/**
* TActiveFileUploadCallbackParams is an internal class used by {@link TActiveFileUpload}.
- *
+ *
* @author Bradley Booms <Bradley.Booms@nsighttel.com>
* @author Christophe Boulain <Christophe.Boulain@gmail.com>
- * @version $Id: TActiveFileUpload.php 3232 2013-01-02 14:42:24Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
class TActiveFileUploadCallbackParams
diff --git a/framework/Web/UI/ActiveControls/TActiveHiddenField.php b/framework/Web/UI/ActiveControls/TActiveHiddenField.php
index 0d4b3737..28be574a 100644
--- a/framework/Web/UI/ActiveControls/TActiveHiddenField.php
+++ b/framework/Web/UI/ActiveControls/TActiveHiddenField.php
@@ -4,7 +4,7 @@
*
* @author Carl G. Mathisen <carlgmathisen@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
* @version $Id$
* @package System.Web.UI.ActiveControls
diff --git a/framework/Web/UI/ActiveControls/TActiveHyperLink.php b/framework/Web/UI/ActiveControls/TActiveHyperLink.php
index 6ba8a801..13161eec 100644
--- a/framework/Web/UI/ActiveControls/TActiveHyperLink.php
+++ b/framework/Web/UI/ActiveControls/TActiveHyperLink.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TActiveHyperLink.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -21,7 +20,6 @@
* {@link setNavigateUrl NavigateUrl} and {@link setTarget Target}.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TActiveHyperLink.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
diff --git a/framework/Web/UI/ActiveControls/TActiveImage.php b/framework/Web/UI/ActiveControls/TActiveImage.php
index 752c7a04..27ec337e 100644
--- a/framework/Web/UI/ActiveControls/TActiveImage.php
+++ b/framework/Web/UI/ActiveControls/TActiveImage.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TActiveImage.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -19,7 +18,6 @@
* a callback request.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TActiveImage.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
diff --git a/framework/Web/UI/ActiveControls/TActiveImageButton.php b/framework/Web/UI/ActiveControls/TActiveImageButton.php
index b2aa9960..e8f1d054 100644
--- a/framework/Web/UI/ActiveControls/TActiveImageButton.php
+++ b/framework/Web/UI/ActiveControls/TActiveImageButton.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TActiveImageButton.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -21,7 +20,6 @@
* and it is raise <b>after</b> the {@link onClick OnClick} event.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TActiveImageButton.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
diff --git a/framework/Web/UI/ActiveControls/TActiveLabel.php b/framework/Web/UI/ActiveControls/TActiveLabel.php
index 4fd19a56..0a20e2b0 100644
--- a/framework/Web/UI/ActiveControls/TActiveLabel.php
+++ b/framework/Web/UI/ActiveControls/TActiveLabel.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TActiveLabel.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -26,7 +25,6 @@ Prado::using('System.Web.UI.ActiveControls.TActiveControlAdapter');
* the client-side "for" attribute on the label.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TActiveLabel.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
diff --git a/framework/Web/UI/ActiveControls/TActiveLinkButton.php b/framework/Web/UI/ActiveControls/TActiveLinkButton.php
index d8a8ffcb..304d1cef 100644
--- a/framework/Web/UI/ActiveControls/TActiveLinkButton.php
+++ b/framework/Web/UI/ActiveControls/TActiveLinkButton.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TActiveLinkButton.php 3292 2013-05-31 08:51:42Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -29,7 +28,6 @@ Prado::using('System.Web.UI.ActiveControls.TActiveControlAdapter');
* will update the link text upon callback response completion.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TActiveLinkButton.php 3292 2013-05-31 08:51:42Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
@@ -145,7 +143,7 @@ class TActiveLinkButton extends TLinkButton implements IActiveControl, ICallback
$this->getClientClassName(), $this->getPostBackOptions());
} else {
- $this->getPage()->getCallbackClient()->setAttribute($this, 'href', false);
+ $this->getPage()->getCallbackClient()->setAttribute($this, 'href', false);
}
}
}
diff --git a/framework/Web/UI/ActiveControls/TActiveListBox.php b/framework/Web/UI/ActiveControls/TActiveListBox.php
index dfb4bf6e..36335cf6 100644
--- a/framework/Web/UI/ActiveControls/TActiveListBox.php
+++ b/framework/Web/UI/ActiveControls/TActiveListBox.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TActiveListBox.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -21,7 +20,6 @@ Prado::using('System.Web.UI.ActiveControls.TActiveListControlAdapter');
* List items can be added dynamically during a callback request.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TActiveListBox.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
diff --git a/framework/Web/UI/ActiveControls/TActiveListControlAdapter.php b/framework/Web/UI/ActiveControls/TActiveListControlAdapter.php
index e48b9364..ca88477d 100644
--- a/framework/Web/UI/ActiveControls/TActiveListControlAdapter.php
+++ b/framework/Web/UI/ActiveControls/TActiveListControlAdapter.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TActiveListControlAdapter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -23,7 +22,6 @@ Prado::using('System.Web.UI.WebControls.TListControl');
* during callback response.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TActiveListControlAdapter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
@@ -170,7 +168,6 @@ class TActiveListControlAdapter extends TActiveControlAdapter implements IListCo
* repopulate the client-side options.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TActiveListControlAdapter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
diff --git a/framework/Web/UI/ActiveControls/TActivePageAdapter.php b/framework/Web/UI/ActiveControls/TActivePageAdapter.php
index 03fe2f16..cc32376a 100644
--- a/framework/Web/UI/ActiveControls/TActivePageAdapter.php
+++ b/framework/Web/UI/ActiveControls/TActivePageAdapter.php
@@ -5,9 +5,8 @@
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
* @author Gabor Berczi <gabor.berczi@devworx.hu> (lazyload additions & progressive rendering)
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TActivePageAdapter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -25,7 +24,6 @@ Prado::using('System.Web.UI.ActiveControls.TCallbackEventParameter');
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
* @author Gabor Berczi <gabor.berczi@devworx.hu> (lazyload additions & progressive rendering)
- * @version $Id: TActivePageAdapter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
@@ -150,7 +148,6 @@ class TActivePageAdapter extends TControlAdapter
{
Prado::trace("ActivePage redirect()",'System.Web.UI.ActiveControls.TActivePageAdapter');
$this->appendContentPart($this->getResponse(), self::CALLBACK_REDIRECT, $url);
- //$this->getResponse()->appendHeader(self::CALLBACK_REDIRECT.': '.$url);
}
/**
@@ -176,7 +173,6 @@ class TActivePageAdapter extends TControlAdapter
$data = TJavaScript::jsonEncode($responseData);
$this->appendContentPart($response, self::CALLBACK_DATA_HEADER, $data);
- //$response->appendHeader(self::CALLBACK_DATA_HEADER.': '.$data);
}
}
@@ -187,7 +183,6 @@ class TActivePageAdapter extends TControlAdapter
{
$pagestate = $this->getPage()->getClientState();
$this->appendContentPart($response, self::CALLBACK_PAGESTATE_HEADER, $pagestate);
- //$response->appendHeader(self::CALLBACK_PAGESTATE_HEADER.': '.$pagestate);
}
}
@@ -206,7 +201,6 @@ class TActivePageAdapter extends TControlAdapter
$executeJavascript = $this->getCallbackClientHandler()->getClientFunctionsToExecute();
$actions = TJavaScript::jsonEncode($executeJavascript);
$this->appendContentPart($response, self::CALLBACK_ACTION_HEADER, $actions);
- //$response->appendHeader(self::CALLBACK_ACTION_HEADER.': '.$actions);
$cs = $this->Page->getClientScript();
@@ -296,7 +290,7 @@ class TActivePageAdapter extends TControlAdapter
}
/**
- * Gets callback parameter. JSON encoding is assumed.
+ * Gets callback parameter.
* @return string postback event parameter
*/
public function getCallbackEventParameter()
@@ -304,8 +298,7 @@ class TActivePageAdapter extends TControlAdapter
if($this->_callbackEventParameter===null)
{
$param = $this->getRequest()->itemAt(TPage::FIELD_CALLBACK_PARAMETER);
- if(strlen($param) > 0)
- $this->_callbackEventParameter=TJavaScript::jsonDecode((string)$param);
+ $this->_callbackEventParameter=$param;
}
return $this->_callbackEventParameter;
}
@@ -340,7 +333,6 @@ class TActivePageAdapter extends TControlAdapter
* the error stack trace.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TActivePageAdapter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
@@ -357,14 +349,22 @@ class TCallbackErrorHandler extends TErrorHandler
{
$response = $this->getApplication()->getResponse();
$trace = $this->getExceptionStackTrace($exception);
+ // avoid error on non-utf8 strings
try {
$trace = TJavaScript::jsonEncode($trace);
} catch (Exception $e) {
// strip everythin not 7bit ascii
$trace = preg_replace('/[^(\x20-\x7F)]*/','', serialize($trace));
}
- $response->setStatusCode(500, 'Internal Server Error');
- $response->appendHeader(TActivePageAdapter::CALLBACK_ERROR_HEADER.': '.$trace);
+
+ // avoid exception loop if headers have already been sent
+ try {
+ $response->setStatusCode(500, 'Internal Server Error');
+ } catch (Exception $e) { }
+
+ $content = $response->createHtmlWriter();
+ $content->getWriter()->setBoundary(TActivePageAdapter::CALLBACK_ERROR_HEADER);
+ $content->write($trace);
}
else
{
@@ -406,7 +406,6 @@ class TCallbackErrorHandler extends TErrorHandler
* TInvalidCallbackException class.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TActivePageAdapter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
diff --git a/framework/Web/UI/ActiveControls/TActivePager.php b/framework/Web/UI/ActiveControls/TActivePager.php
index 7dcd3212..078bd5be 100644
--- a/framework/Web/UI/ActiveControls/TActivePager.php
+++ b/framework/Web/UI/ActiveControls/TActivePager.php
@@ -4,9 +4,8 @@
*
* @author "gevik" (forum contributor) and Christophe Boulain (Christophe.Boulain@gmail.com)
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TActivePager.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -17,15 +16,14 @@ Prado::using('System.Web.UI.ActiveControls.TActiveControlAdapter');
/**
* TActivePager is the active control counter part of TPager.
- *
+ *
* When a page change is requested, TActivePager raises a callback instead of the
* traditional postback.
*
* The {@link onCallback OnCallback} event is raised during a callback request
* and it is raise <b>after</b> the {@link onPageIndexChanged OnPageIndexChanged} event.
- *
+ *
* @author "gevik" (forum contributor) and Christophe Boulain (Christophe.Boulain@gmail.com)
- * @version $Id: TActivePager.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1.2
*/
@@ -41,7 +39,7 @@ class TActivePager extends TPager implements IActiveControl, ICallbackEventHandl
parent::__construct();
$this->setAdapter(new TActiveControlAdapter($this));
}
-
+
/**
* @return TBaseActiveControl standard active control options.
*/
@@ -60,11 +58,11 @@ class TActivePager extends TPager implements IActiveControl, ICallbackEventHandl
/**
* Raises the callback event. This method is required by {@link
- * ICallbackEventHandler} interface.
+ * ICallbackEventHandler} interface.
* This method is mainly used by framework and control developers.
* @param TCallbackEventParameter the event parameter
*/
-
+
public function raiseCallbackEvent($param)
{
$this->onCallback($param);
@@ -82,7 +80,7 @@ class TActivePager extends TPager implements IActiveControl, ICallbackEventHandl
{
$this->raiseEvent('OnCallback', $this, $param);
}
-
+
/**
* Builds a dropdown list pager
* Override parent implementation to build Active dropdown lists.
@@ -90,25 +88,25 @@ class TActivePager extends TPager implements IActiveControl, ICallbackEventHandl
protected function buildListPager()
{
$list=new TActiveDropDownList;
-
+
$list->getAdapter()->getBaseActiveControl()->setClientSide(
$this->getClientSide()
);
-
+
$this->getControls()->add($list);
$list->setDataSource(range(1,$this->getPageCount()));
$list->dataBind();
$list->setSelectedIndex($this->getCurrentPageIndex());
$list->setAutoPostBack(true);
$list->attachEventHandler('OnSelectedIndexChanged',array($this,'listIndexChanged'));
- $list->attachEventHandler('OnCallback', array($this, 'handleCallback'));
- }
-
+ $list->attachEventHandler('OnCallback', array($this, 'handleCallback'));
+ }
+
/**
* Creates a pager button.
* Override parent implementation to create, depending on the button type, a TActiveLinkButton,
* a TActiveButton or a TActiveImageButton may be created.
- *
+ *
* @param string button type, either LinkButton or PushButton
* @param boolean whether the button should be enabled
* @param string caption of the button
@@ -126,6 +124,7 @@ class TActivePager extends TPager implements IActiveControl, ICallbackEventHandl
{
$button=new TLabel;
$button->setText($text);
+ $button->setCssClass($this->getButtonCssClass());
return $button;
}
}
@@ -144,28 +143,29 @@ class TActivePager extends TPager implements IActiveControl, ICallbackEventHandl
if(!$enabled)
$button->setEnabled(false);
}
-
+
if($buttonType===TPagerButtonType::ImageButton)
{
$button->ImageUrl = $text;
}
-
+
$button->setText($text);
$button->setCommandName($commandName);
$button->setCommandParameter($commandParameter);
$button->setCausesValidation(false);
-
- $button->attachEventHandler('OnCallback', array($this, 'handleCallback'));
+ $button->setCssClass($this->getButtonCssClass());
+
+ $button->attachEventHandler('OnCallback', array($this, 'handleCallback'));
$button->getAdapter()->getBaseActiveControl()->setClientSide(
$this->getClientSide()
);
-
+
return $button;
}
-
+
/**
* Event handler to the OnCallback active buttons or active dropdownlist.
- * This handler will raise the {@link onCallback OnCallback} event
+ * This handler will raise the {@link onCallback OnCallback} event
*
* @param mixed $sender
* @param TCallbackEventParameter $param
@@ -181,14 +181,14 @@ class TActivePager extends TPager implements IActiveControl, ICallbackEventHandl
{
$control->render($param->getNewWriter());
// FIXME : With some very fast machine, the getNewWriter() consecutive calls are in the same microsecond, resulting
- // of getting the same boundaries in ajax response. Wait 1 microsecond to avoid this.
+ // of getting the same boundaries in ajax response. Wait 1 microsecond to avoid this.
usleep(1);
}
}
// Raise callback event
$this->onCallback($param);
- }
-
+ }
+
public function render ($writer)
{
if($this->getHasPreRendered())
diff --git a/framework/Web/UI/ActiveControls/TActivePanel.php b/framework/Web/UI/ActiveControls/TActivePanel.php
index 39636cad..4b00b013 100644
--- a/framework/Web/UI/ActiveControls/TActivePanel.php
+++ b/framework/Web/UI/ActiveControls/TActivePanel.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TActivePanel.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -32,7 +31,6 @@ Prado::using('System.Web.UI.ActiveControls.TActiveControlAdapter');
* </code>
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TActivePanel.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
@@ -87,7 +85,7 @@ class TActivePanel extends TPanel implements IActiveControl
if ($this->getHasControls())
{
// If we update a TActivePanel on callback,
- // We shouldn't update all childs, because the whole content will be replaced by
+ // We shouldn't update all childs, because the whole content will be replaced by
// the parent
foreach ($this->findControlsByType('IActiveControl', false) as $control)
{
diff --git a/framework/Web/UI/ActiveControls/TActiveRadioButton.php b/framework/Web/UI/ActiveControls/TActiveRadioButton.php
index d192536a..46dbbaf7 100644
--- a/framework/Web/UI/ActiveControls/TActiveRadioButton.php
+++ b/framework/Web/UI/ActiveControls/TActiveRadioButton.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TActiveRadioButton.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -25,7 +24,6 @@
* and can not be changed using javascript.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TActiveRadioButton.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
@@ -121,7 +119,7 @@ class TActiveRadioButton extends TRadioButton implements IActiveControl, ICallba
* Ensure that the ID attribute is rendered and registers the javascript code
* for initializing the active control.
* Since 3.1.4, the javascript code is not rendered if {@link setAutoPostBack AutoPostBack} is false
- *
+ *
*/
protected function renderInputTag($writer,$clientID,$onclick)
{
diff --git a/framework/Web/UI/ActiveControls/TActiveRadioButtonList.php b/framework/Web/UI/ActiveControls/TActiveRadioButtonList.php
index 3244ce11..5c76aed1 100644
--- a/framework/Web/UI/ActiveControls/TActiveRadioButtonList.php
+++ b/framework/Web/UI/ActiveControls/TActiveRadioButtonList.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TActiveRadioButtonList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -31,7 +30,6 @@ Prado::using('System.Web.UI.ActiveControls.TActiveRadioButton');
* List items can not be changed dynamically during a callback request.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TActiveRadioButtonList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
diff --git a/framework/Web/UI/ActiveControls/TActiveRatingList.php b/framework/Web/UI/ActiveControls/TActiveRatingList.php
index 022efe65..2b1c764c 100644
--- a/framework/Web/UI/ActiveControls/TActiveRatingList.php
+++ b/framework/Web/UI/ActiveControls/TActiveRatingList.php
@@ -5,7 +5,7 @@
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
* @author Bradley Booms <bradley[dot]booms[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
* @version $Id$
* @package System.Web.UI.ActiveControls
@@ -116,7 +116,7 @@ class TActiveRatingList extends TRatingList implements IActiveControl, ICallback
public function setCaption($value)
{
parent::setCaption($value);
- // if it's an active control, this should not be needed.
+ // if it's an active control, this should not be needed.
$this->callClientFunction('setCaption',$value);
}
diff --git a/framework/Web/UI/ActiveControls/TActiveRepeater.php b/framework/Web/UI/ActiveControls/TActiveRepeater.php
index 08e6f93a..08aeefab 100644
--- a/framework/Web/UI/ActiveControls/TActiveRepeater.php
+++ b/framework/Web/UI/ActiveControls/TActiveRepeater.php
@@ -5,7 +5,6 @@
* @author LANDWEHR Computer und Software GmbH <programmierung@landwehr-software.de>
* @package System.Web.UI.ActiveControls
* @since 3.1.9
- * @version $Id: TActiveRepeater.php 2707 2009-09-29 10:33:30Z Christophe.Boulain $
*/
/**
diff --git a/framework/Web/UI/ActiveControls/TActiveTextBox.php b/framework/Web/UI/ActiveControls/TActiveTextBox.php
index 5f96ff29..1b8791fd 100644
--- a/framework/Web/UI/ActiveControls/TActiveTextBox.php
+++ b/framework/Web/UI/ActiveControls/TActiveTextBox.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TActiveTextBox.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -25,7 +24,6 @@ Prado::using('System.Web.UI.ActiveControls.TActiveControlAdapter');
* event.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TActiveTextBox.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
diff --git a/framework/Web/UI/ActiveControls/TAutoComplete.php b/framework/Web/UI/ActiveControls/TAutoComplete.php
index 5e144040..88b98172 100644
--- a/framework/Web/UI/ActiveControls/TAutoComplete.php
+++ b/framework/Web/UI/ActiveControls/TAutoComplete.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TAutoComplete.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -77,7 +76,6 @@ Prado::using('System.Web.UI.ActiveControls.TCallbackEventParameter');
* "informal" are ignored as text for suggestions.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TAutoComplete.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
@@ -375,7 +373,6 @@ class TAutoComplete extends TActiveTextBox implements INamingContainer
* suggestion selected by the user, -1 if not suggestion is selected.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TAutoComplete.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
@@ -416,7 +413,6 @@ class TAutoCompleteEventParameter extends TCallbackEventParameter
* item template.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TAutoComplete.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
diff --git a/framework/Web/UI/ActiveControls/TBaseActiveControl.php b/framework/Web/UI/ActiveControls/TBaseActiveControl.php
index 61230719..3c0a938e 100644
--- a/framework/Web/UI/ActiveControls/TBaseActiveControl.php
+++ b/framework/Web/UI/ActiveControls/TBaseActiveControl.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TBaseActiveControl.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -23,7 +22,6 @@ Prado::using('System.Web.UI.ActiveControls.TCallbackClientSide');
* response returns.
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
- * @version $Id: TBaseActiveControl.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
@@ -155,7 +153,6 @@ class TBaseActiveControl extends TComponent
* </code>
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TBaseActiveControl.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
diff --git a/framework/Web/UI/ActiveControls/TCallback.php b/framework/Web/UI/ActiveControls/TCallback.php
index 2c20567c..557001b2 100644
--- a/framework/Web/UI/ActiveControls/TCallback.php
+++ b/framework/Web/UI/ActiveControls/TCallback.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TCallback.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -37,7 +36,6 @@ Prado::using('System.Web.UI.ActiveControls.TActiveControlAdapter');
* </code>
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TCallback.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
diff --git a/framework/Web/UI/ActiveControls/TCallbackClientScript.php b/framework/Web/UI/ActiveControls/TCallbackClientScript.php
index 40051f76..5496470f 100644
--- a/framework/Web/UI/ActiveControls/TCallbackClientScript.php
+++ b/framework/Web/UI/ActiveControls/TCallbackClientScript.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TCallbackClientScript.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -28,7 +27,6 @@
* </code>
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
- * @version $Id: TCallbackClientScript.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
@@ -127,7 +125,7 @@ class TCallbackClientScript extends TApplicationComponent
/**
* Client script to click on an element. <b>This client-side function is unpredictable.</b>
- *
+ *
* @param TControl control element or element id
*/
public function click($control)
@@ -182,14 +180,14 @@ class TCallbackClientScript extends TApplicationComponent
{
$promptText = $control->getPromptText();
$promptValue = $control->getPromptValue();
-
+
if($promptValue==='')
$promptValue = $promptText;
-
+
if($promptValue!=='')
$options[] = array($promptText, $promptValue);
}
-
+
foreach($items as $item)
{
if($item->getHasAttributes())
@@ -301,6 +299,7 @@ class TCallbackClientScript extends TApplicationComponent
/**
* Scroll the top of the browser viewing area to the location of the
* element.
+ *
* @param TControl control element or element id
*/
public function scrollTo($element)
@@ -449,7 +448,7 @@ class TCallbackClientScript extends TApplicationComponent
{
$boundary = $this->getResponseContentBoundary($content);
}
-
+
$this->callClientFunction('Prado.Element.appendScriptBlock', array($boundary));
}
diff --git a/framework/Web/UI/ActiveControls/TCallbackClientSide.php b/framework/Web/UI/ActiveControls/TCallbackClientSide.php
index ec993c14..449bea80 100644
--- a/framework/Web/UI/ActiveControls/TCallbackClientSide.php
+++ b/framework/Web/UI/ActiveControls/TCallbackClientSide.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TCallbackClientSide.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -28,8 +27,8 @@
*
* * Note that theses 2 events are not fired correctly by Opera. To make
* them work in this browser, Prado will fire them just after onPreDispatch.
- *
- * In a general way, onUninitialized, onLoading, onLoaded and onInteractive events
+ *
+ * In a general way, onUninitialized, onLoading, onLoaded and onInteractive events
* are not implemented consistently in all browsers.When cross browser compatibility is
* needed, it is best to avoid use them
*
@@ -46,7 +45,6 @@
* viewstate update. This will automatically set HasPriority to true when enabled.
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
- * @version $Id: TCallbackClientSide.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
diff --git a/framework/Web/UI/ActiveControls/TCallbackEventParameter.php b/framework/Web/UI/ActiveControls/TCallbackEventParameter.php
index 728ebbba..2d4451a8 100644
--- a/framework/Web/UI/ActiveControls/TCallbackEventParameter.php
+++ b/framework/Web/UI/ActiveControls/TCallbackEventParameter.php
@@ -4,7 +4,7 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
* @version $Id$
* @package System.Web.UI.ActiveControls
@@ -28,7 +28,6 @@
* callback handler function) can be set using {@link setResponseData ResponseData} property.
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
- * @version $Id: TActivePageAdapter.php 1648 2007-01-24 05:52:22Z wei $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
diff --git a/framework/Web/UI/ActiveControls/TCallbackOptions.php b/framework/Web/UI/ActiveControls/TCallbackOptions.php
index 19d53aeb..0d929ed1 100644
--- a/framework/Web/UI/ActiveControls/TCallbackOptions.php
+++ b/framework/Web/UI/ActiveControls/TCallbackOptions.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TCallbackOptions.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -17,7 +16,6 @@
* to be attached to other active controls.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TCallbackOptions.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
diff --git a/framework/Web/UI/ActiveControls/TCallbackResponseAdapter.php b/framework/Web/UI/ActiveControls/TCallbackResponseAdapter.php
index 47b5fae4..cad3c9ee 100755
--- a/framework/Web/UI/ActiveControls/TCallbackResponseAdapter.php
+++ b/framework/Web/UI/ActiveControls/TCallbackResponseAdapter.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TCallbackResponseAdapter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -22,7 +21,6 @@
* property.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TCallbackResponseAdapter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
@@ -110,7 +108,6 @@ class TCallbackResponseAdapter extends THttpResponseAdapter
* is generated using microtime.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TCallbackResponseAdapter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
diff --git a/framework/Web/UI/ActiveControls/TDraggable.php b/framework/Web/UI/ActiveControls/TDraggable.php
index df92bec5..fe2ac4cc 100755
--- a/framework/Web/UI/ActiveControls/TDraggable.php
+++ b/framework/Web/UI/ActiveControls/TDraggable.php
@@ -1,17 +1,16 @@
<?php
/**
* TDraggable class file
- *
+ *
* @author Christophe BOULAIN (Christophe.Boulain@gmail.com)
* @copyright Copyright &copy; 2008, PradoSoft
* @license http://www.pradosoft.com/license
* @package System.Web.UI.ActiveControls
- * @version $Id: TDraggable.php 3285 2013-04-11 07:28:07Z ctrlaltca $
*/
/**
* TDraggable is a control which can be dragged
- *
+ *
* This control will make "draggable" control.
* Properties :
*
@@ -21,14 +20,13 @@
* <b>{@link setRevert Revert}</b>: Set to True if you want your dragged element to revert to its initial position if not dropped on a valid area.
* <b>{@link setConstraint Constraint}</b>: Set this to Horizontal or Vertical if you want to constraint your move in one direction.
* <b>{@link setHandle Handle}</b>:
- *
+ *
* @author Christophe BOULAIN (Christophe.Boulain@gmail.com)
* @copyright Copyright &copy; 2008, PradoSoft
* @license http://www.pradosoft.com/license
* @package System.Web.UI.ActiveControls
- * @version $Id: TDraggable.php 3285 2013-04-11 07:28:07Z ctrlaltca $
*/
-class TDraggable extends TPanel
+class TDraggable extends TPanel
{
/**
* Set the handle id or css class
@@ -38,7 +36,7 @@ class TDraggable extends TPanel
{
$this->setViewState('DragHandle', TPropertyValue::ensureString($value), null);
}
-
+
/**
* Get the handle id or css class
* @return string
@@ -47,7 +45,7 @@ class TDraggable extends TPanel
{
return $this->getViewState('DragHandle', null);
}
-
+
/**
* Determine if draggable element should revert to it orginal position
* upon release in an non-droppable container.
@@ -61,7 +59,7 @@ class TDraggable extends TPanel
{
return $this->getViewState('Revert', TDraggableRevertOptions::Revert);
}
-
+
/**
* Sets whether the draggable element should revert to it orginal position
* upon release in an non-droppable container.
@@ -79,7 +77,7 @@ class TDraggable extends TPanel
$value=TDraggableRevertOptions::None;
$this->setViewState('Revert', TPropertyValue::ensureEnum($value, 'TDraggableRevertOptions'), true);
}
-
+
/**
* Determine if the element should be cloned when dragged
* If true, Clones the element and drags the clone, leaving the original in place until the clone is dropped.
@@ -96,7 +94,7 @@ class TDraggable extends TPanel
{
return $this->getViewState('Ghosting', TDraggableGhostingOptions::None);
}
-
+
/**
* Sets wether the element should be cloned when dragged
* If true, Clones the element and drags the clone, leaving the original in place until the clone is dropped.
@@ -117,7 +115,7 @@ class TDraggable extends TPanel
$value=TDraggableGhostingOptions::None;
$this->setViewState('Ghosting', TPropertyValue::ensureEnum($value, 'TDraggableGhostingOptions'), TDraggableGhostingOptions::None);
}
-
+
/**
* Determine if the element should be constrainted in one direction or not
* @return CDraggableConstraint
@@ -126,7 +124,7 @@ class TDraggable extends TPanel
{
return $this->getViewState('Constraint', TDraggableConstraint::None);
}
-
+
/**
* Set wether the element should be constrainted in one direction
* @param CDraggableConstraint
@@ -135,7 +133,7 @@ class TDraggable extends TPanel
{
$this->setViewState('Constraint', TPropertyValue::ensureEnum($value, 'TDraggableConstraint'), TDraggableConstraint::None);
}
-
+
/**
* Registers clientscripts
*
@@ -166,7 +164,7 @@ class TDraggable extends TPanel
$code="new {$class}('{$this->getClientId()}', {$options}) ";
$cs->registerEndScript(sprintf('%08X', crc32($code)), $code);
}
-
+
/**
* Gets the name of the javascript class responsible for performing postback for this control.
* This method overrides the parent implementation.
@@ -176,7 +174,7 @@ class TDraggable extends TPanel
{
return 'Draggable';
}
-
+
/**
* Gets the post back options for this textbox.
* @return array
@@ -193,7 +191,7 @@ class TDraggable extends TPanel
else
$options['revert']=strtolower($revert);
if (($constraint=$this->getConstraint())!==TDraggableConstraint::None) $options['constraint']=strtolower($constraint);
- switch ($this->getGhosting())
+ switch ($this->getGhosting())
{
case TDraggableGhostingOptions::SuperGhosting:
$options['superghosting']=true;
@@ -205,7 +203,7 @@ class TDraggable extends TPanel
return $options;
}
-
+
}
/**
@@ -213,7 +211,6 @@ class TDraggable extends TPanel
* @copyright Copyright &copy; 2008, PradoSoft
* @license http://www.pradosoft.com/license
* @package System.Web.UI.ActiveControls
- * @version $Id: TDraggable.php 3285 2013-04-11 07:28:07Z ctrlaltca $
*/
class TDraggableConstraint extends TEnumerable
{
@@ -227,7 +224,6 @@ class TDraggableConstraint extends TEnumerable
* @copyright Copyright &copy; 2008, PradoSoft
* @license http://www.pradosoft.com/license
* @package System.Web.UI.ActiveControls
- * @version $Id: TDraggable.php 3285 2013-04-11 07:28:07Z ctrlaltca $
*/
class TDraggableGhostingOptions extends TEnumerable
{
@@ -241,7 +237,6 @@ class TDraggableGhostingOptions extends TEnumerable
* @copyright Copyright &copy; 2008, PradoSoft
* @license http://www.pradosoft.com/license
* @package System.Web.UI.ActiveControls
- * @version $Id: TDraggable.php 3285 2013-04-11 07:28:07Z ctrlaltca $
*/
class TDraggableRevertOptions extends TEnumerable
{
diff --git a/framework/Web/UI/ActiveControls/TDropContainer.php b/framework/Web/UI/ActiveControls/TDropContainer.php
index 43e8017c..00ebf461 100755
--- a/framework/Web/UI/ActiveControls/TDropContainer.php
+++ b/framework/Web/UI/ActiveControls/TDropContainer.php
@@ -5,9 +5,7 @@
* @author Christophe BOULAIN (Christophe.Boulain@gmail.com)
* @copyright Copyright &copy; 2008, PradoSoft
* @license http://www.pradosoft.com/license
- * @version $Id: TDropContainer.php 3159 2012-2013 PradoSoft
* @license http://www.pradosoft.com/license
- * @version $Id: TDropContainer.php 3285 2013-04-11 07:28:07Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -40,7 +38,6 @@ Prado::using('System.Web.UI.ActiveControls.TActivePanel');
* @author Christophe BOULAIN (Christophe.Boulain@gmail.com)
* @copyright Copyright &copy; 2008, PradoSoft
* @license http://www.pradosoft.com/license
- * @version $Id: TDropContainer.php 3285 2013-04-11 07:28:07Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
class TDropContainer extends TPanel implements IActiveControl, ICallbackEventHandler
@@ -258,7 +255,6 @@ class TDropContainer extends TPanel implements IActiveControl, ICallbackEventHan
* @author Christophe BOULAIN (Christophe.Boulain@ceram.fr)
* @copyright Copyright &copy; 2008, PradoSoft
* @license http://www.pradosoft.com/license
- * @version $Id: TDropContainer.php 3285 2013-04-11 07:28:07Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
class TDropContainerEventParameter extends TEventParameter
diff --git a/framework/Web/UI/ActiveControls/TEventTriggeredCallback.php b/framework/Web/UI/ActiveControls/TEventTriggeredCallback.php
index 4f1dbbf8..53d6aead 100644
--- a/framework/Web/UI/ActiveControls/TEventTriggeredCallback.php
+++ b/framework/Web/UI/ActiveControls/TEventTriggeredCallback.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TEventTriggeredCallback.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -22,7 +21,6 @@ Prado::using('System.Web.UI.ActiveControls.TTriggeredCallback');
* {@link setPreventDefaultAction PreventDefaultAction} is set to true.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TEventTriggeredCallback.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
diff --git a/framework/Web/UI/ActiveControls/TInPlaceTextBox.php b/framework/Web/UI/ActiveControls/TInPlaceTextBox.php
index 5309b7e8..012f2da3 100644
--- a/framework/Web/UI/ActiveControls/TInPlaceTextBox.php
+++ b/framework/Web/UI/ActiveControls/TInPlaceTextBox.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TInPlaceTextBox.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -38,9 +37,8 @@ Prado::using('System.Web.UI.ActiveControls.TActiveTextBox');
*
* Since 3.1.2, you can set the {@link setReadOnly ReadOnly} property to make
* the control not editable. This property can be also changed on callback
- *
+ *
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TInPlaceTextBox.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
@@ -145,7 +143,7 @@ class TInPlaceTextBox extends TActiveTextBox
$client->setValue($this, $value);
}
}
-
+
/**
* Update ClientSide Readonly property
* @param boolean value
@@ -232,7 +230,7 @@ class TInPlaceTextBox extends TActiveTextBox
if($this->hasEventHandler('OnLoadingText'))
$options['LoadTextOnEdit'] = true;
-
+
$options['ReadOnly']=$this->getReadOnly();
return $options;
}
diff --git a/framework/Web/UI/ActiveControls/TTimeTriggeredCallback.php b/framework/Web/UI/ActiveControls/TTimeTriggeredCallback.php
index 46df7a22..bc250521 100644
--- a/framework/Web/UI/ActiveControls/TTimeTriggeredCallback.php
+++ b/framework/Web/UI/ActiveControls/TTimeTriggeredCallback.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TTimeTriggeredCallback.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -26,7 +25,6 @@ Prado::using('System.Web.UI.ActiveControls.TCallback');
* {@link setStartTimerOnLoad StartTimerOnLoad} is true.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TTimeTriggeredCallback.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
diff --git a/framework/Web/UI/ActiveControls/TTriggeredCallback.php b/framework/Web/UI/ActiveControls/TTriggeredCallback.php
index 2365326b..544707b0 100644
--- a/framework/Web/UI/ActiveControls/TTriggeredCallback.php
+++ b/framework/Web/UI/ActiveControls/TTriggeredCallback.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TTriggeredCallback.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -18,7 +17,6 @@ Prado::using('System.Web.UI.ActiveControls.TCallback');
* property sets the control ID to observe the trigger.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TTriggeredCallback.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
diff --git a/framework/Web/UI/ActiveControls/TValueTriggeredCallback.php b/framework/Web/UI/ActiveControls/TValueTriggeredCallback.php
index e9db1bed..0b323066 100644
--- a/framework/Web/UI/ActiveControls/TValueTriggeredCallback.php
+++ b/framework/Web/UI/ActiveControls/TValueTriggeredCallback.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TValueTriggeredCallback.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
*/
@@ -25,7 +24,6 @@ Prado::using('System.Web.UI.ActiveControls.TTriggeredCallback');
* observed, the polling interval is reset to the original value.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TValueTriggeredCallback.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.ActiveControls
* @since 3.1
*/
diff --git a/framework/Web/UI/TCachePageStatePersister.php b/framework/Web/UI/TCachePageStatePersister.php
index 4f3d60cc..0914c650 100644
--- a/framework/Web/UI/TCachePageStatePersister.php
+++ b/framework/Web/UI/TCachePageStatePersister.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TCachePageStatePersister.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
*/
@@ -54,7 +53,6 @@
* </code>
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TCachePageStatePersister.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
* @since 3.1.1
*/
diff --git a/framework/Web/UI/TClientScriptManager.php b/framework/Web/UI/TClientScriptManager.php
index ea828187..cc59292a 100644
--- a/framework/Web/UI/TClientScriptManager.php
+++ b/framework/Web/UI/TClientScriptManager.php
@@ -5,9 +5,8 @@
* @author Qiang Xue <qiang.xue@gmail.com>
* @author Gabor Berczi <gabor.berczi@devworx.hu> (lazyload additions & progressive rendering)
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TClientScriptManager.php 3280 2013-03-13 20:19:30Z ctrlaltca $
* @package System.Web.UI
*/
@@ -18,7 +17,6 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @author Gabor Berczi <gabor.berczi@devworx.hu> (lazyload additions & progressive rendering)
- * @version $Id: TClientScriptManager.php 3280 2013-03-13 20:19:30Z ctrlaltca $
* @package System.Web.UI
* @since 3.0
*/
@@ -150,7 +148,7 @@ class TClientScriptManager extends TApplicationComponent
$this->_registeredPradoScripts[$name]=true;
else
throw new TInvalidOperationException('csmanager_pradoscript_invalid',$name);
-
+
if(($packages=array_keys($this->_registeredPradoScripts))!==array())
{
$base = Prado::getFrameworkPath().DIRECTORY_SEPARATOR.self::SCRIPT_PATH;
@@ -347,7 +345,7 @@ class TClientScriptManager extends TApplicationComponent
if($target instanceof TControl)
$target=$target->getClientID();
$id = TJavaScript::quoteString($target);
- $this->_endScripts['prado:focus'] = 'new Effect.ScrollTo('.$id.'); Prado.Element.focus('.$id.');';
+ $this->_endScripts['prado:focus'] = 'Prado.Element.focus('.$id.');';
$params=func_get_args();
$this->_page->registerCachingAction('Page.ClientScript','registerFocusControl',$params);
@@ -369,7 +367,6 @@ class TClientScriptManager extends TApplicationComponent
* $this->Page->ClientScript->registerStyleSheetFile($url, $url);
* }
* }
- * ?>
* </code>
*
* @param string a unique key identifying the file
@@ -466,7 +463,7 @@ class TClientScriptManager extends TApplicationComponent
public function registerScriptFile($key, $url)
{
$this->_scriptFiles[$key]=$url;
-
+
$params=func_get_args();
$this->_page->registerCachingAction('Page.ClientScript','registerScriptFile',$params);
}
@@ -717,8 +714,11 @@ class TClientScriptManager extends TApplicationComponent
*/
public function flushScriptFiles($writer, $control=null)
{
- $this->_page->ensureRenderInForm($control);
- $this->renderAllPendingScriptFiles($writer);
+ if(!$this->_page->getIsCallback())
+ {
+ $this->_page->ensureRenderInForm($control);
+ $this->renderAllPendingScriptFiles($writer);
+ }
}
/**
@@ -747,7 +747,7 @@ class TClientScriptManager extends TApplicationComponent
$writer->write("<div style=\"visibility:hidden;\">\n".$str."</div>\n");
}
- public function getHiddenFields()
+ public function getHiddenFields()
{
return $this->_hiddenFields;
}
@@ -770,7 +770,6 @@ class TClientScriptManager extends TApplicationComponent
* between ActiveControls and validators.
*
* @author <weizhuo[at]gmail[dot]com>
- * @version $Id: TClientScriptManager.php 3280 2013-03-13 20:19:30Z ctrlaltca $
* @package System.Web.UI
* @since 3.0
*/
diff --git a/framework/Web/UI/TCompositeControl.php b/framework/Web/UI/TCompositeControl.php
index 21e4c46f..5a54271d 100644
--- a/framework/Web/UI/TCompositeControl.php
+++ b/framework/Web/UI/TCompositeControl.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TCompositeControl.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
*/
@@ -16,7 +15,6 @@
* by other controls.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TCompositeControl.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
* @since 3.0
*/
diff --git a/framework/Web/UI/TControl.php b/framework/Web/UI/TControl.php
index 5ee20d61..3037a4d9 100644
--- a/framework/Web/UI/TControl.php
+++ b/framework/Web/UI/TControl.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TControl.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
*/
@@ -64,7 +63,6 @@ Prado::using('System.Web.UI.TControlAdapter');
* They work together with page lifecycles to process a page request.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TControl.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
* @since 3.0
*/
@@ -1771,7 +1769,6 @@ class TControl extends TApplicationComponent implements IRenderable, IBindable
* controls to maintain a list of their child controls.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TControl.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
* @since 3.0
*/
@@ -1856,7 +1853,6 @@ class TControlCollection extends TList
* controls to it. This is useful for controls that do not allow child controls.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TControl.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
* @since 3.0
*/
@@ -1889,7 +1885,6 @@ class TEmptyControlCollection extends TControlCollection
* INamingContainer marks a control as a naming container.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TControl.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
* @since 3.0
*/
@@ -1903,7 +1898,6 @@ interface INamingContainer
* If a control wants to respond to postback event, it must implement this interface.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TControl.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
* @since 3.0
*/
@@ -1924,7 +1918,6 @@ interface IPostBackEventHandler
* If a control wants to load post data, it must implement this interface.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TControl.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
* @since 3.0
*/
@@ -1958,7 +1951,6 @@ interface IPostBackDataHandler
* If a control wants to validate user input, it must implement this interface.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TControl.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
* @since 3.0
*/
@@ -1996,7 +1988,6 @@ interface IValidator
* If a control wants to be validated by a validator, it must implement this interface.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TControl.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
* @since 3.0
*/
@@ -2022,7 +2013,6 @@ interface IValidatable
* If a control wants to check broadcast event, it must implement this interface.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TControl.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
* @since 3.0
*/
@@ -2046,7 +2036,6 @@ interface IBroadcastEventReceiver
* This interface must be implemented by theme.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TControl.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
* @since 3.0
*/
@@ -2066,7 +2055,6 @@ interface ITheme
* parsed template structures.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TControl.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
* @since 3.0
*/
@@ -2089,7 +2077,6 @@ interface ITemplate
* {@link TImageButton}.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TControl.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
* @since 3.0
*/
@@ -2194,7 +2181,6 @@ interface ISurroundable
* {@link setParameter Parameter} property.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TControl.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
* @since 3.0
*/
@@ -2256,7 +2242,6 @@ class TBroadcastEventParameter extends TEventParameter
* with the command via {@link getCommandParameter CommandParameter} property.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TControl.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
* @since 3.0
*/
@@ -2301,7 +2286,6 @@ class TCommandEventParameter extends TEventParameter
* consecutive static strings, expressions and statements.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TControl.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
* @since 3.0
*/
diff --git a/framework/Web/UI/TControlAdapter.php b/framework/Web/UI/TControlAdapter.php
index 1ef2d1fb..2e89e5e7 100644
--- a/framework/Web/UI/TControlAdapter.php
+++ b/framework/Web/UI/TControlAdapter.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TControlAdapter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
*/
@@ -17,7 +16,6 @@
* various behaviors for the control to which the adapter is attached.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TControlAdapter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
* @since 3.0
*/
diff --git a/framework/Web/UI/TForm.php b/framework/Web/UI/TForm.php
index 9db8682c..c9280e9a 100644
--- a/framework/Web/UI/TForm.php
+++ b/framework/Web/UI/TForm.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TForm.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
*/
@@ -23,7 +22,6 @@
* URLs.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TForm.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
* @since 3.0
*/
@@ -87,7 +85,7 @@ class TForm extends TControl
$this->renderChildren($writer);
$cs->renderHiddenFieldsEnd($writer);
$page->endFormRender($writer);
-
+
$cs->renderScriptFilesEnd($writer);
$cs->renderEndScripts($writer);
}
diff --git a/framework/Web/UI/THtmlWriter.php b/framework/Web/UI/THtmlWriter.php
index 9f070d5f..0339ac83 100644
--- a/framework/Web/UI/THtmlWriter.php
+++ b/framework/Web/UI/THtmlWriter.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: THtmlWriter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
*/
@@ -32,7 +31,6 @@
* tags in HTML and XHTML.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: THtmlWriter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
* @since 3.0
*/
@@ -87,7 +85,7 @@ class THtmlWriter extends TApplicationComponent implements ITextWriter
{
return $this->_writer;
}
-
+
public function setWriter($writer)
{
$this->_writer = $writer;
diff --git a/framework/Web/UI/TPage.php b/framework/Web/UI/TPage.php
index 39656e13..412d14b6 100644
--- a/framework/Web/UI/TPage.php
+++ b/framework/Web/UI/TPage.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TPage.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
*/
@@ -22,7 +21,6 @@ Prado::using('System.Web.UI.TClientScriptManager');
* TPage class
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TPage.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
* @since 3.0
*/
@@ -297,7 +295,7 @@ class TPage extends TTemplateControl
return $data;
}
}
-
+
/**
* Sets Adapter to TActivePageAdapter and calls apter to process the
* callback request.
@@ -308,6 +306,10 @@ class TPage extends TTemplateControl
$this->setAdapter(new TActivePageAdapter($this));
+ $callbackEventParameter = $this->getRequest()->itemAt(TPage::FIELD_CALLBACK_PARAMETER);
+ if(strlen($callbackEventParameter) > 0)
+ $this->_postData[TPage::FIELD_CALLBACK_PARAMETER]=TJavaScript::jsonDecode((string)$callbackEventParameter);
+
// Decode Callback postData from UTF-8 to current Charset
if (($g=$this->getApplication()->getGlobalization(false))!==null &&
strtoupper($enc=$g->getCharset())!='UTF-8')
@@ -1245,7 +1247,6 @@ class TPage extends TTemplateControl
* classes.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TPage.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
* @since 3.1
*/
diff --git a/framework/Web/UI/TPageStatePersister.php b/framework/Web/UI/TPageStatePersister.php
index 7d2330b7..bbb20098 100644
--- a/framework/Web/UI/TPageStatePersister.php
+++ b/framework/Web/UI/TPageStatePersister.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TPageStatePersister.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
*/
@@ -22,7 +21,6 @@
* traffic for transmitting bulky page state.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TPageStatePersister.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
* @since 3.0
*/
diff --git a/framework/Web/UI/TSessionPageStatePersister.php b/framework/Web/UI/TSessionPageStatePersister.php
index 5448fd22..a1a1f601 100644
--- a/framework/Web/UI/TSessionPageStatePersister.php
+++ b/framework/Web/UI/TSessionPageStatePersister.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TSessionPageStatePersister.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
*/
@@ -39,7 +38,6 @@
* </code>
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TSessionPageStatePersister.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
* @since 3.1
*/
diff --git a/framework/Web/UI/TTemplateControl.php b/framework/Web/UI/TTemplateControl.php
index f5780928..df6482c6 100644
--- a/framework/Web/UI/TTemplateControl.php
+++ b/framework/Web/UI/TTemplateControl.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TTemplateControl.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
*/
@@ -23,7 +22,6 @@ Prado::using('System.Web.UI.TCompositeControl');
* different extension name. For template file, the extension name is ".tpl".
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TTemplateControl.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
* @since 3.0
*/
diff --git a/framework/Web/UI/TTemplateManager.php b/framework/Web/UI/TTemplateManager.php
index 91630241..0ffb6bec 100644
--- a/framework/Web/UI/TTemplateManager.php
+++ b/framework/Web/UI/TTemplateManager.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TTemplateManager.php 3251 2013-01-15 18:37:04Z ctrlaltca $
* @package System.Web.UI
*/
@@ -32,7 +31,6 @@ Prado::using('System.Web.UI.WebControls.TOutputCache');
* template manager module that can be accessed via {@link TPageService::getTemplateManager()}.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TTemplateManager.php 3251 2013-01-15 18:37:04Z ctrlaltca $
* @package System.Web.UI
* @since 3.0
*/
@@ -162,7 +160,6 @@ class TTemplateManager extends TModule
* set their parent as $control.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TTemplateManager.php 3251 2013-01-15 18:37:04Z ctrlaltca $
* @package System.Web.UI
* @since 3.0
*/
diff --git a/framework/Web/UI/TThemeManager.php b/framework/Web/UI/TThemeManager.php
index ba007dc0..f8c86bb7 100644
--- a/framework/Web/UI/TThemeManager.php
+++ b/framework/Web/UI/TThemeManager.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TThemeManager.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
*/
@@ -34,7 +33,6 @@ Prado::using('System.Web.Services.TPageService');
* and {@link getBufferOutput BufferOutput} are configurable properties of THttpResponse.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TThemeManager.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
* @since 3.0
*/
@@ -206,7 +204,6 @@ class TThemeManager extends TModule
* To apply a theme to a particular control, call {@link applySkin}.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TThemeManager.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TAccordion.php b/framework/Web/UI/WebControls/TAccordion.php
index dbf761a2..fc794cd4 100644
--- a/framework/Web/UI/WebControls/TAccordion.php
+++ b/framework/Web/UI/WebControls/TAccordion.php
@@ -4,9 +4,8 @@
*
* @author Gabor Berczi, DevWorx Hungary <gabor.berczi@devworx.hu>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TAccordion.php 2915 2011-05-15 16:26:11Z ctrlaltca@gmail.com $
* @package System.Web.UI.WebControls
* @since 3.2
*/
@@ -59,7 +58,6 @@
* </code>
*
* @author Gabor Berczi, DevWorx Hungary <gabor.berczi@devworx.hu>
- * @version $Id: TAccordion.php 2915 2011-05-15 16:26:11Z ctrlaltca@gmail.com $
* @package System.Web.UI.WebControls
* @since 3.2
*/
@@ -198,7 +196,7 @@ class TAccordion extends TWebControl implements IPostBackDataHandler
}
/**
- * @return string CSS class for the whole accordion control div.
+ * @return string CSS class for the whole accordion control div.
*/
public function getCssClass()
{
@@ -426,15 +424,15 @@ class TAccordion extends TWebControl implements IPostBackDataHandler
protected function registerStyleSheet()
{
$url = $this->getCssUrl();
-
+
if($url === '') {
return;
}
-
+
if($url === 'default') {
$url = $this->getApplication()->getAssetManager()->publishFilePath(dirname(__FILE__).DIRECTORY_SEPARATOR.'assets'.DIRECTORY_SEPARATOR.'accordion.css');
}
-
+
if($url !== '') {
$this->getPage()->getClientScript()->registerStyleSheetFile($url, $url);
}
@@ -540,13 +538,12 @@ class TAccordion extends TWebControl implements IPostBackDataHandler
* Class TAccordionView.
*
* TAccordionView represents a single view in a {@link TAccordion}.
- *
+ *
* TAccordionView is represented inside the {@link TAccordion} with an header label whose text is defined by
* the {@link setCaption Caption} property; optionally the label can be an hyperlink: use the
* {@link setNavigateUrl NavigateUrl} property to define the destination url.
*
* @author Gabor Berczi, DevWorx Hungary <gabor.berczi@devworx.hu>
- * @version $Id: TAccordion.php 2915 2011-05-15 16:26:11Z ctrlaltca@gmail.com $
* @package System.Web.UI.WebControls
* @since 3.2
*/
@@ -669,7 +666,7 @@ class TAccordionView extends TWebControl
$writer->addAttribute('id',$this->getClientID().'_0');
$style=$this->getActive()?$this->getParent()->getActiveHeaderStyle():$this->getParent()->getHeaderStyle();
-
+
$style->addAttributesToRender($writer);
$writer->renderBeginTag($this->getTagName());
@@ -690,7 +687,7 @@ class TAccordionView extends TWebControl
$url = $this->getNavigateUrl();
if(($caption=$this->getCaption())==='')
$caption='&nbsp;';
-
+
if ($url!='')
$writer->write("<a href=\"{$url}\">");
$writer->write("{$caption}");
@@ -703,9 +700,8 @@ class TAccordionView extends TWebControl
* Class TAccordionViewCollection.
*
* TAccordionViewCollection is a collection of {@link TAccordionView} to be used inside a {@link TAccordion}.
- *
+ *
* @author Gabor Berczi, DevWorx Hungary <gabor.berczi@devworx.hu>
- * @version $Id: TAccordion.php 2915 2011-05-15 16:26:11Z ctrlaltca@gmail.com $
* @package System.Web.UI.WebControls
* @since 3.2
*/
diff --git a/framework/Web/UI/WebControls/TBaseDataList.php b/framework/Web/UI/WebControls/TBaseDataList.php
index 0ef22752..9ebe551e 100644
--- a/framework/Web/UI/WebControls/TBaseDataList.php
+++ b/framework/Web/UI/WebControls/TBaseDataList.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TBaseDataList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -37,7 +36,6 @@ Prado::using('System.Util.TDataFieldAccessor');
* content can be specified via {@link setHorizontalAlign HorizontalAlign}.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TBaseDataList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TBaseValidator.php b/framework/Web/UI/WebControls/TBaseValidator.php
index 074939c1..a23e2104 100644
--- a/framework/Web/UI/WebControls/TBaseValidator.php
+++ b/framework/Web/UI/WebControls/TBaseValidator.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TBaseValidator.php 3319 2013-09-08 20:59:44Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -70,7 +69,6 @@ Prado::using('System.Web.UI.WebControls.TLabel');
* override the method {@link evaluateIsValid}.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TBaseValidator.php 3319 2013-09-08 20:59:44Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -513,7 +511,7 @@ abstract class TBaseValidator extends TLabel implements IValidator
$target=$this->getValidationTarget();
// if the target is not a disabled web control
if($target===null ||
- ($target!==null &&
+ ($target!==null &&
!($target instanceof TWebControl && !$target->getEnabled(true))))
{
if($this->evaluateIsValid())
@@ -625,7 +623,6 @@ abstract class TBaseValidator extends TLabel implements IValidator
* See the quickstart documentation for further details.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TBaseValidator.php 3319 2013-09-08 20:59:44Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -715,7 +712,6 @@ class TValidatorClientSide extends TClientSideOptions
* - Fixed: Similar to Dynamic except that the error message physically occupies the page layout (even though it may not be visible)
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TBaseValidator.php 3319 2013-09-08 20:59:44Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
@@ -738,7 +734,6 @@ class TValidatorDisplayStyle extends TEnumerable
* - String
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TBaseValidator.php 3319 2013-09-08 20:59:44Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
diff --git a/framework/Web/UI/WebControls/TBoundColumn.php b/framework/Web/UI/WebControls/TBoundColumn.php
index 7534fcbc..d7ac7750 100644
--- a/framework/Web/UI/WebControls/TBoundColumn.php
+++ b/framework/Web/UI/WebControls/TBoundColumn.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TBoundColumn.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -42,7 +41,6 @@ Prado::using('System.Web.UI.WebControls.TDataGridColumn');
* For more details, see {@link TRepeater} and {@link TDataList}.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TBoundColumn.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TBulletedList.php b/framework/Web/UI/WebControls/TBulletedList.php
index e5c17b38..9cd3654e 100644
--- a/framework/Web/UI/WebControls/TBulletedList.php
+++ b/framework/Web/UI/WebControls/TBulletedList.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TBulletedList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -33,7 +32,6 @@ Prado::using('System.Web.UI.WebControls.TListControl');
* will be raised under such a circumstance.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TBulletedList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -414,7 +412,6 @@ class TBulletedList extends TListControl implements IPostBackEventHandler
* of the item that is currently being clicked.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TBulletedList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -449,7 +446,6 @@ class TBulletedListEventParameter extends TEventParameter
* for a {@link TBulletedList} control.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TBulletedList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
@@ -479,7 +475,6 @@ class TBulletStyle extends TEnumerable
* - LinkButton: the bulleted list items are displayed as link buttons that can cause postbacks
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TBulletedList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
diff --git a/framework/Web/UI/WebControls/TButton.php b/framework/Web/UI/WebControls/TButton.php
index e7d0f5bf..f24985e6 100644
--- a/framework/Web/UI/WebControls/TButton.php
+++ b/framework/Web/UI/WebControls/TButton.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TButton.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -43,7 +42,6 @@
* if the button does not cause a postback.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TButton.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -355,7 +353,6 @@ class TButton extends TWebControl implements IPostBackEventHandler, IButtonContr
* - Button: a client button (normally does not perform form submission)
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TButton.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
diff --git a/framework/Web/UI/WebControls/TButtonColumn.php b/framework/Web/UI/WebControls/TButtonColumn.php
index 258fecf2..939fc721 100644
--- a/framework/Web/UI/WebControls/TButtonColumn.php
+++ b/framework/Web/UI/WebControls/TButtonColumn.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TButtonColumn.php 3287 2013-04-30 10:10:16Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -48,7 +47,6 @@ Prado::using('System.Web.UI.WebControls.TImageButton');
* datagrid cell is the first child.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TButtonColumn.php 3287 2013-04-30 10:10:16Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TCaptcha.php b/framework/Web/UI/WebControls/TCaptcha.php
index 79f402a5..4523ea40 100644
--- a/framework/Web/UI/WebControls/TCaptcha.php
+++ b/framework/Web/UI/WebControls/TCaptcha.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TCaptcha.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -57,7 +56,6 @@ Prado::using('System.Web.UI.WebControls.TImage');
* </code>
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TCaptcha.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.1.1
*/
diff --git a/framework/Web/UI/WebControls/TCaptchaValidator.php b/framework/Web/UI/WebControls/TCaptchaValidator.php
index c8cc7aea..2758cac7 100644
--- a/framework/Web/UI/WebControls/TCaptchaValidator.php
+++ b/framework/Web/UI/WebControls/TCaptchaValidator.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TCaptchaValidator.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -31,7 +30,6 @@ Prado::using('System.Web.UI.WebControls.TCaptcha');
* the CAPTCHA control that the user input should be compared with.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TCaptchaValidator.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.1.1
*/
diff --git a/framework/Web/UI/WebControls/TCheckBox.php b/framework/Web/UI/WebControls/TCheckBox.php
index e12946be..a28beac7 100644
--- a/framework/Web/UI/WebControls/TCheckBox.php
+++ b/framework/Web/UI/WebControls/TCheckBox.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TCheckBox.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -36,7 +35,6 @@
* that may bring security vulnerabilities.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TCheckBox.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -127,7 +125,7 @@ class TCheckBox extends TWebControl implements IPostBackDataHandler, IValidatabl
}
/**
- * Returns true if this control validated successfully.
+ * Returns true if this control validated successfully.
* Defaults to true.
* @return bool wether this control validated successfully.
*/
@@ -412,7 +410,7 @@ class TCheckBox extends TWebControl implements IPostBackDataHandler, IValidatabl
/**
* Check if we need a span tag to surround this control. The span tag will be created if
- * the Text property is set for this control.
+ * the Text property is set for this control.
*
* @return bool wether this control needs a surrounding span tag
*/
@@ -519,7 +517,6 @@ class TCheckBox extends TWebControl implements IPostBackDataHandler, IValidatabl
* - Right: right aligned
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TCheckBox.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
diff --git a/framework/Web/UI/WebControls/TCheckBoxColumn.php b/framework/Web/UI/WebControls/TCheckBoxColumn.php
index c0206676..8f67df55 100644
--- a/framework/Web/UI/WebControls/TCheckBoxColumn.php
+++ b/framework/Web/UI/WebControls/TCheckBoxColumn.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TCheckBoxColumn.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -38,7 +37,6 @@ Prado::using('System.Web.UI.WebControls.TCheckBox');
* datagrid cell is the first child.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TCheckBoxColumn.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TCheckBoxList.php b/framework/Web/UI/WebControls/TCheckBoxList.php
index 5122432c..af59545c 100644
--- a/framework/Web/UI/WebControls/TCheckBoxList.php
+++ b/framework/Web/UI/WebControls/TCheckBoxList.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TCheckBoxList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -43,7 +42,6 @@ Prado::using('System.Web.UI.WebControls.TCheckBox');
* The alignment of the text besides each checkbox can be specified via {@link setTextAlign TextAlign}.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TCheckBoxList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -256,7 +254,7 @@ class TCheckBoxList extends TListControl implements IRepeatInfoUser, INamingCont
{
return false;
}
-
+
/**
* @param boolean whether the control is to be enabled.
*/
@@ -264,8 +262,8 @@ class TCheckBoxList extends TListControl implements IRepeatInfoUser, INamingCont
{
parent::setEnabled($value);
$value = !TPropertyValue::ensureBoolean($value);
- // if this is an active control,
- // and it's a callback,
+ // if this is an active control,
+ // and it's a callback,
// and we can update clientside,
// then update the 'disabled' attribute of the items.
if(($this instanceof IActiveControl) &&
@@ -389,14 +387,14 @@ class TCheckBoxList extends TListControl implements IRepeatInfoUser, INamingCont
/**
* Wether the list should be rendered inside a span or not
- *
+ *
*@return boolean true if we need a span
*/
protected function getSpanNeeded ()
{
return $this->getRepeatLayout()===TRepeatLayout::Raw;
}
-
+
/**
* Renders the checkbox list control.
* This method overrides the parent implementation.
@@ -459,7 +457,7 @@ class TCheckBoxList extends TListControl implements IRepeatInfoUser, INamingCont
}
/**
- * Returns true if this control validated successfully.
+ * Returns true if this control validated successfully.
* Defaults to true.
* @return bool wether this control validated successfully.
*/
@@ -498,6 +496,6 @@ class TCheckBoxList extends TListControl implements IRepeatInfoUser, INamingCont
$options['ItemCount'] = $this->getItemCount();
return $options;
}
-
+
}
diff --git a/framework/Web/UI/WebControls/TClientScript.php b/framework/Web/UI/WebControls/TClientScript.php
index f28a507a..6fca14d3 100644
--- a/framework/Web/UI/WebControls/TClientScript.php
+++ b/framework/Web/UI/WebControls/TClientScript.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TClientScript.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -38,9 +37,8 @@
* set the {@link setFlushScriptFiles FlushScriptFiles} property to false, so Prado
* can postpone the loading of all the referenced script files further down the page
* generation cycle.
- *
+ *
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TClientScript.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TColorPicker.php b/framework/Web/UI/WebControls/TColorPicker.php
index fcb129b9..7b20318c 100644
--- a/framework/Web/UI/WebControls/TColorPicker.php
+++ b/framework/Web/UI/WebControls/TColorPicker.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TColorPicker.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -23,17 +22,16 @@
* # <b>Simple</b> - Grid with 12 simple colors.
* # <b>Basic</b> - Grid with the most common 70 colors. This is the default mode.
* # <b>Full</b> - Full-featured color picker.
- *
+ *
* The <b>CssClass</b> property can be used to override the CSS class name
* for the color picker panel. The <b>ColorStyle</b> property sets the packages
* styles available. E.g. <b>default</b>.
- *
+ *
* If the <b>Mode</b> property is set to <b>Full</b>, the color picker panel will
* display an "Ok" and "Cancel" buttons. You can customize the button labels setting the <b>OKButtonText</b>
* and <b>CancelButtonText</b> properties.
- *
+ *
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TColorPicker.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -248,7 +246,6 @@ class TColorPicker extends TTextBox
* # Full - Full-featured color picker.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TColorPicker.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
@@ -265,7 +262,6 @@ class TColorPickerMode extends TEnumerable
* Client-side javascript code options.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TColorPicker.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.1
*/
diff --git a/framework/Web/UI/WebControls/TCompareValidator.php b/framework/Web/UI/WebControls/TCompareValidator.php
index eaaa8f51..b902b67b 100644
--- a/framework/Web/UI/WebControls/TCompareValidator.php
+++ b/framework/Web/UI/WebControls/TCompareValidator.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TCompareValidator.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -40,7 +39,6 @@ Prado::using('System.Web.UI.WebControls.TBaseValidator');
* LessThan and LessThanEqual.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TCompareValidator.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -249,7 +247,6 @@ class TCompareValidator extends TBaseValidator
* - LessThanEqual
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TCompareValidator.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
diff --git a/framework/Web/UI/WebControls/TConditional.php b/framework/Web/UI/WebControls/TConditional.php
index 054e1a76..61cc3988 100644
--- a/framework/Web/UI/WebControls/TConditional.php
+++ b/framework/Web/UI/WebControls/TConditional.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TConditional.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -39,7 +38,6 @@
* or {@link getFalseTemplate FalseTemplate}, but never both. And the condition is evaluated only once.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TConditional.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.1.1
*/
diff --git a/framework/Web/UI/WebControls/TContent.php b/framework/Web/UI/WebControls/TContent.php
index f0a67674..a2f15e3d 100644
--- a/framework/Web/UI/WebControls/TContent.php
+++ b/framework/Web/UI/WebControls/TContent.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TContent.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -25,7 +24,6 @@
* {@link TContent} and {@link TContentPlaceHolder} controls.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TContent.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TContentPlaceHolder.php b/framework/Web/UI/WebControls/TContentPlaceHolder.php
index d9464fa3..8a4d7284 100644
--- a/framework/Web/UI/WebControls/TContentPlaceHolder.php
+++ b/framework/Web/UI/WebControls/TContentPlaceHolder.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TContentPlaceHolder.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -24,7 +23,6 @@
* {@link TContent} and {@link TContentPlaceHolder} controls.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TContentPlaceHolder.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TCustomValidator.php b/framework/Web/UI/WebControls/TCustomValidator.php
index b4987f06..6966a075 100644
--- a/framework/Web/UI/WebControls/TCustomValidator.php
+++ b/framework/Web/UI/WebControls/TCustomValidator.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TCustomValidator.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -48,7 +47,6 @@ Prado::using('System.Web.UI.WebControls.TBaseValidator');
* with the TCustomValidator.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TCustomValidator.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -153,7 +151,6 @@ class TCustomValidator extends TBaseValidator
* <b>OnServerValidate</b> event of TCustomValidator components.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TCustomValidator.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TDataBoundControl.php b/framework/Web/UI/WebControls/TDataBoundControl.php
index 08d130c1..2a287aac 100644
--- a/framework/Web/UI/WebControls/TDataBoundControl.php
+++ b/framework/Web/UI/WebControls/TDataBoundControl.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDataBoundControl.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -39,7 +38,6 @@ Prado::using('System.Collections.TPagedDataSource');
* custom paging, set {@link setAllowCustomPaging AllowCustomPaging} to true.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDataBoundControl.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -527,7 +525,6 @@ abstract class TDataBoundControl extends TWebControl
* - Pager: pager
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDataBoundControl.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
@@ -553,7 +550,6 @@ class TListItemType extends TEnumerable
* {@link getItemType ItemType} property.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDataBoundControl.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.1.0
*/
diff --git a/framework/Web/UI/WebControls/TDataGrid.php b/framework/Web/UI/WebControls/TDataGrid.php
index 249d8108..96e799aa 100644
--- a/framework/Web/UI/WebControls/TDataGrid.php
+++ b/framework/Web/UI/WebControls/TDataGrid.php
@@ -9,9 +9,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDataGrid.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -145,7 +144,6 @@ Prado::using('System.Web.UI.WebControls.TDataGridPagerStyle');
* - Save the data in viewstate and get it back during postbacks.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDataGrid.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -1233,7 +1231,7 @@ class TDataGrid extends TBaseDataList implements INamingContainer
* Depending on the button type, a TLinkButton or a TButton may be created.
* If it is enabled (clickable), its command name and parameter will also be set.
* Derived classes may override this method to create additional types of buttons, such as TImageButton.
- * @param mixed the container pager instance of TActiveDatagridPager
+ * @param mixed the container pager instance of TActiveDatagridPager
* @param string button type, either LinkButton or PushButton
* @param boolean whether the button should be enabled
* @param string caption of the button
@@ -1680,7 +1678,6 @@ class TDataGrid extends TBaseDataList implements INamingContainer
* The {@link getItem Item} property indicates the datagrid item related with the event.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDataGrid.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -1718,7 +1715,6 @@ class TDataGridItemEventParameter extends TEventParameter
* The {@link getPager Pager} property indicates the datagrid pager related with the event.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDataGrid.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -1759,7 +1755,6 @@ class TDataGridPagerEventParameter extends TEventParameter
* raises the Command event.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDataGrid.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -1815,7 +1810,6 @@ class TDataGridCommandEventParameter extends TCommandEventParameter
* gives the sort expression carried with the sort command.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDataGrid.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -1869,7 +1863,6 @@ class TDataGridSortCommandEventParameter extends TEventParameter
* returns the new page index carried with the page command.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDataGrid.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -1923,7 +1916,6 @@ class TDataGridPageChangedEventParameter extends TEventParameter
* gives the index of the item from the bound data source.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDataGrid.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -2060,7 +2052,6 @@ class TDataGridItem extends TTableRow implements INamingContainer
* TDataGridPager represents a datagrid pager.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDataGrid.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -2119,7 +2110,6 @@ class TDataGridPager extends TPanel implements INamingContainer
* TDataGridItemCollection represents a collection of data grid items.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDataGrid.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -2147,7 +2137,6 @@ class TDataGridItemCollection extends TList
* TDataGridColumnCollection represents a collection of data grid columns.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDataGrid.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -2204,7 +2193,6 @@ class TDataGridColumnCollection extends TList
* - Numeric: pager buttons are displayed as numeric page numbers
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDataGrid.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
@@ -2224,7 +2212,6 @@ class TDataGridPagerMode extends TEnumerable
* - PushButton: form submit buttons
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDataGrid.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
@@ -2245,7 +2232,6 @@ class TDataGridPagerButtonType extends TEnumerable
* - TopAndBottom: pager appears on both top and bottom of the data grid.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDataGrid.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
diff --git a/framework/Web/UI/WebControls/TDataGridColumn.php b/framework/Web/UI/WebControls/TDataGridColumn.php
index ad3be81f..1c8831d2 100644
--- a/framework/Web/UI/WebControls/TDataGridColumn.php
+++ b/framework/Web/UI/WebControls/TDataGridColumn.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDataGridColumn.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -58,7 +57,6 @@ Prado::using('System.Web.UI.WebControls.TDataGrid');
* which is the major logic for managing the data and presentation of cells in the column.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDataGridColumn.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -554,7 +552,6 @@ abstract class TDataGridColumn extends TApplicationComponent
* - ImageButton: image buttons
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDataGridColumn.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
diff --git a/framework/Web/UI/WebControls/TDataGridItemRenderer.php b/framework/Web/UI/WebControls/TDataGridItemRenderer.php
index 6e37a739..376eea17 100644
--- a/framework/Web/UI/WebControls/TDataGridItemRenderer.php
+++ b/framework/Web/UI/WebControls/TDataGridItemRenderer.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDataGridItemRenderer.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -20,7 +19,6 @@ Prado::using('System.Web.UI.WebControls.TItemDataRenderer');
* define an item renderer class specific for {@link TDataGrid}.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDataGridItemRenderer.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.1.0
*/
diff --git a/framework/Web/UI/WebControls/TDataGridPagerStyle.php b/framework/Web/UI/WebControls/TDataGridPagerStyle.php
index 31c0380b..4e143e05 100644
--- a/framework/Web/UI/WebControls/TDataGridPagerStyle.php
+++ b/framework/Web/UI/WebControls/TDataGridPagerStyle.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDataGridPagerStyle.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -18,7 +17,6 @@ Prado::using('System.Web.UI.WebControls.TDataGrid');
* TDataGridPagerStyle specifies the styles available for a datagrid pager.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDataGridPagerStyle.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TDataList.php b/framework/Web/UI/WebControls/TDataList.php
index 6b3c4a73..021fdf6d 100644
--- a/framework/Web/UI/WebControls/TDataList.php
+++ b/framework/Web/UI/WebControls/TDataList.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDataList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -146,7 +145,6 @@ Prado::using('System.Web.UI.WebControls.TRepeatInfo');
* complex data may also have serializing problem if saved in viewstate.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDataList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -1499,7 +1497,6 @@ class TDataList extends TBaseDataList implements INamingContainer, IRepeatInfoUs
* The {@link getItem Item} property indicates the DataList item related with the event.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDataList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -1540,7 +1537,6 @@ class TDataListItemEventParameter extends TEventParameter
* raises the Command event.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDataList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -1595,7 +1591,6 @@ class TDataListCommandEventParameter extends TCommandEventParameter
* is given by {@link getItemType ItemType} property.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDataList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -1742,7 +1737,6 @@ class TDataListItem extends TWebControl implements INamingContainer, IItemDataRe
* TDataListItemCollection represents a collection of data list items.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDataList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TDataListItemRenderer.php b/framework/Web/UI/WebControls/TDataListItemRenderer.php
index df63c1f2..cf42c9a4 100644
--- a/framework/Web/UI/WebControls/TDataListItemRenderer.php
+++ b/framework/Web/UI/WebControls/TDataListItemRenderer.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDataListItemRenderer.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -26,7 +25,6 @@ Prado::using('System.Web.UI.WebControls.TItemDataRenderer');
* which allows TDataList to apply CSS styles to the renders.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDataListItemRenderer.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.1.0
*/
diff --git a/framework/Web/UI/WebControls/TDataRenderer.php b/framework/Web/UI/WebControls/TDataRenderer.php
index 8bde0152..0e98a1b4 100644
--- a/framework/Web/UI/WebControls/TDataRenderer.php
+++ b/framework/Web/UI/WebControls/TDataRenderer.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDataRenderer.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.1.2
*/
@@ -22,7 +21,6 @@
* - {@link getData Data}: data associated with this renderer.
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDataRenderer.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.1.2
*/
diff --git a/framework/Web/UI/WebControls/TDataSourceControl.php b/framework/Web/UI/WebControls/TDataSourceControl.php
index 93037c03..afe4de2d 100644
--- a/framework/Web/UI/WebControls/TDataSourceControl.php
+++ b/framework/Web/UI/WebControls/TDataSourceControl.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDataSourceControl.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -14,7 +13,6 @@
* IDataSource class
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDataSourceControl.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -29,7 +27,6 @@ interface IDataSource
* TDataSourceControl class
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDataSourceControl.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -90,7 +87,6 @@ abstract class TDataSourceControl extends TControl implements IDataSource
* TDataSourceControl class
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDataSourceControl.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TDataSourceView.php b/framework/Web/UI/WebControls/TDataSourceView.php
index 1e1ad7a9..b9a76a32 100644
--- a/framework/Web/UI/WebControls/TDataSourceView.php
+++ b/framework/Web/UI/WebControls/TDataSourceView.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDataSourceView.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -14,7 +13,6 @@
* TDataSourceSelectParameters class
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDataSourceView.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -76,7 +74,6 @@ class TDataSourceSelectParameters extends TComponent
* TDataSourceView class
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDataSourceView.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -179,7 +176,6 @@ abstract class TDataSourceView extends TComponent
* TReadOnlyDataSourceView class
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDataSourceView.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TDataTypeValidator.php b/framework/Web/UI/WebControls/TDataTypeValidator.php
index b9ddbf6c..3881bb84 100644
--- a/framework/Web/UI/WebControls/TDataTypeValidator.php
+++ b/framework/Web/UI/WebControls/TDataTypeValidator.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDataTypeValidator.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -30,7 +29,6 @@ Prado::using('System.Web.UI.WebControls.TBaseValidator');
* provided, the string will be assumed to be in GNU datetime format.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TDataTypeValidator.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TDatePicker.php b/framework/Web/UI/WebControls/TDatePicker.php
index 0e8d7bda..112b2f74 100644
--- a/framework/Web/UI/WebControls/TDatePicker.php
+++ b/framework/Web/UI/WebControls/TDatePicker.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDatePicker.php 3318 2013-09-04 14:04:51Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -73,7 +72,6 @@ Prado::using('System.Web.UI.WebControls.TTextBox');
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @author Carl G. Mathisen <carlgmathisen@gmail.com>
- * @version $Id: TDatePicker.php 3318 2013-09-04 14:04:51Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -276,7 +274,7 @@ class TDatePicker extends TTextBox
{
return $this->getViewState('UpToYear', intval(@date('Y'))+10);
}
-
+
/**
* @param TDatePickerPositionMode calendar UI position
*/
@@ -902,9 +900,8 @@ class TDatePicker extends TTextBox
* is changed.
* The formatted date according to {@link TDatePicker::getDateFormat DateFormat} is sent
* as parameter to this event
- *
+ *
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TDatePicker.php 3318 2013-09-04 14:04:51Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
@@ -938,7 +935,6 @@ class TDatePickerClientScript extends TClientSideOptions
* - DropDownList: dropdown lists are used to pick up date values
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDatePicker.php 3318 2013-09-04 14:04:51Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
@@ -960,7 +956,6 @@ class TDatePickerInputMode extends TEnumerable
* - ImageButton: Shows an image next to the text input, clicking on the image shows the date picker,
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDatePicker.php 3318 2013-09-04 14:04:51Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
diff --git a/framework/Web/UI/WebControls/TDropDownList.php b/framework/Web/UI/WebControls/TDropDownList.php
index 8dda857b..ab56bc7a 100644
--- a/framework/Web/UI/WebControls/TDropDownList.php
+++ b/framework/Web/UI/WebControls/TDropDownList.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDropDownList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -39,7 +38,6 @@ Prado::using('System.Web.UI.WebControls.TListControl');
* available item in the dropdown list will be selected.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDropDownList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -136,7 +134,7 @@ class TDropDownList extends TListControl implements IPostBackDataHandler, IValid
}
/**
- * Returns true if this control validated successfully.
+ * Returns true if this control validated successfully.
* Defaults to true.
* @return bool wether this control validated successfully.
*/
diff --git a/framework/Web/UI/WebControls/TDropDownListColumn.php b/framework/Web/UI/WebControls/TDropDownListColumn.php
index 40e07aef..13a47aa7 100644
--- a/framework/Web/UI/WebControls/TDropDownListColumn.php
+++ b/framework/Web/UI/WebControls/TDropDownListColumn.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDropDownListColumn.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -54,7 +53,6 @@ Prado::using('System.Web.UI.WebControls.TDropDownList');
* datagrid cell is the first child.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDropDownListColumn.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
diff --git a/framework/Web/UI/WebControls/TEditCommandColumn.php b/framework/Web/UI/WebControls/TEditCommandColumn.php
index 2f69c001..d8db8059 100644
--- a/framework/Web/UI/WebControls/TEditCommandColumn.php
+++ b/framework/Web/UI/WebControls/TEditCommandColumn.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TEditCommandColumn.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -47,7 +46,6 @@ Prado::using('System.Web.UI.WebControls.TDataGridColumn');
* datagrid cell is the first child.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TEditCommandColumn.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TEmailAddressValidator.php b/framework/Web/UI/WebControls/TEmailAddressValidator.php
index dffe912e..b5ed78c6 100644
--- a/framework/Web/UI/WebControls/TEmailAddressValidator.php
+++ b/framework/Web/UI/WebControls/TEmailAddressValidator.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TEmailAddressValidator.php 3283 2013-03-24 10:19:08Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -24,7 +23,6 @@ Prado::using('System.Web.UI.WebControls.TRegularExpressionValidator');
* checkdnsrr() is available in the installed PHP.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TEmailAddressValidator.php 3283 2013-03-24 10:19:08Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TExpression.php b/framework/Web/UI/WebControls/TExpression.php
index 3cb1aa8c..f1fea77b 100644
--- a/framework/Web/UI/WebControls/TExpression.php
+++ b/framework/Web/UI/WebControls/TExpression.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TExpression.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -22,7 +21,6 @@
* make sure {@link setExpression Expression} does not come directly from user input.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TExpression.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TFileUpload.php b/framework/Web/UI/WebControls/TFileUpload.php
index c6dc595a..af2ad3f2 100644
--- a/framework/Web/UI/WebControls/TFileUpload.php
+++ b/framework/Web/UI/WebControls/TFileUpload.php
@@ -4,9 +4,8 @@
*
* @author Marcus Nyeholt <tanus@users.sourceforge.net>, Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TFileUpload.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -28,7 +27,6 @@
* (whether it succeeds or not).
*
* @author Marcus Nyeholt <tanus@users.sourceforge.net>, Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TFileUpload.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -261,7 +259,7 @@ class TFileUpload extends TWebControl implements IPostBackDataHandler, IValidata
}
/**
- * Returns true if this control validated successfully.
+ * Returns true if this control validated successfully.
* Defaults to true.
* @return bool wether this control validated successfully.
*/
diff --git a/framework/Web/UI/WebControls/TFlushOutput.php b/framework/Web/UI/WebControls/TFlushOutput.php
index dba35c79..0dbe0692 100644
--- a/framework/Web/UI/WebControls/TFlushOutput.php
+++ b/framework/Web/UI/WebControls/TFlushOutput.php
@@ -5,7 +5,6 @@
* @author Berczi Gabor <gabor.berczi@devworx.hu>
* @link http://www.pradosoft.com/
* @license http://www.pradosoft.com/license/
- * @version $Id: TFlushOutput.php $
* @package System.Web.UI.WebControls
*/
@@ -23,17 +22,16 @@
* <com:TFlushOutput />
* </code>
*
- * You can specify whether you want to keep buffering of the output
+ * You can specify whether you want to keep buffering of the output
* (if it was enabled) till the next occourence of a <com: TFlushOutput />
- * or the end of the page rendering, or stop buffering, by using the
+ * or the end of the page rendering, or stop buffering, by using the
* {@link setContinueBuffering ContinueBuffering}.
*
* @author Berczi Gabor <gabor.berczi@devworx.hu>
- * @version $Id: TFlushOutput.php $
* @package System.Web.UI.WebControls
* @since 3.1
*/
-class TFlushOutput extends TControl
+class TFlushOutput extends TControl
{
/**
* @var boolean whether to continue buffering of output
@@ -73,7 +71,7 @@ class TFlushOutput extends TControl
public function render($writer)
{
//$writer->write('<!-- flush -->');
- // ajax responses can't be parsed by the client side before loaded and returned completely,
+ // ajax responses can't be parsed by the client side before loaded and returned completely,
// so don't bother with flushing output somewhere mid-page if refreshing in a callback
if (!$this->Page->IsCallback)
{
diff --git a/framework/Web/UI/WebControls/TFont.php b/framework/Web/UI/WebControls/TFont.php
index 12da993b..a07b8621 100644
--- a/framework/Web/UI/WebControls/TFont.php
+++ b/framework/Web/UI/WebControls/TFont.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TFont.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -16,7 +15,6 @@
* TFont encapsulates the CSS style fields related with font settings.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TFont.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/THead.php b/framework/Web/UI/WebControls/THead.php
index 52ce3013..707bbfcc 100644
--- a/framework/Web/UI/WebControls/THead.php
+++ b/framework/Web/UI/WebControls/THead.php
@@ -4,9 +4,8 @@
*
* @author Marcus Nyeholt <tanus@users.sourceforge.net> and Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: THead.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
*/
@@ -37,7 +36,6 @@
* theme will not be rendered.
*
* @author Marcus Nyeholt <tanus@users.sourceforge.net> and Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: THead.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
* @since 3.0
*/
@@ -186,7 +184,6 @@ class THead extends TControl
* attributes for a meta tag, respectively.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: THead.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -321,7 +318,6 @@ class TMetaTag extends TComponent
* contained in a {@link THead} control.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: THead.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/THeader1.php b/framework/Web/UI/WebControls/THeader1.php
index db516679..8aa635b5 100644
--- a/framework/Web/UI/WebControls/THeader1.php
+++ b/framework/Web/UI/WebControls/THeader1.php
@@ -4,9 +4,8 @@
*
* @author Brad Anderson <javalizard@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: THeader1.php 2590 2008-12-10 11:34:24Z carlgmathisen $
* @package System.Web.UI.WebControls
*/
@@ -18,13 +17,12 @@
* This is also useful for the {@link TWebControlDecorator} (used by themes).
*
* @author Brad Anderson <javalizard@gmail.com>
- * @version $Id: THeader1.php 2541 2008-10-21 15:05:13Z javalizard $
* @package System.Web.UI.WebControls
* @since 3.2a
*/
-
-class THeader1 extends THtmlElement {
-
+
+class THeader1 extends THtmlElement {
+
/**
* @return string tag name
*/
@@ -32,5 +30,5 @@ class THeader1 extends THtmlElement {
{
return 'h1';
}
-
+
}
diff --git a/framework/Web/UI/WebControls/THeader2.php b/framework/Web/UI/WebControls/THeader2.php
index be1d76ae..16631312 100644
--- a/framework/Web/UI/WebControls/THeader2.php
+++ b/framework/Web/UI/WebControls/THeader2.php
@@ -4,9 +4,8 @@
*
* @author Brad Anderson <javalizard@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: THeader2.php 2590 2008-12-10 11:34:24Z carlgmathisen $
* @package System.Web.UI.WebControls
*/
@@ -18,13 +17,12 @@
* This is also useful for the {@link TWebControlDecorator} (used by themes).
*
* @author Brad Anderson <javalizard@gmail.com>
- * @version $Id: THeader2.php 2541 2008-10-21 15:05:13Z javalizard $
* @package System.Web.UI.WebControls
* @since 3.2a
*/
-
-class THeader2 extends THtmlElement {
-
+
+class THeader2 extends THtmlElement {
+
/**
* @return string tag name
*/
@@ -32,5 +30,5 @@ class THeader2 extends THtmlElement {
{
return 'h2';
}
-
+
}
diff --git a/framework/Web/UI/WebControls/THeader3.php b/framework/Web/UI/WebControls/THeader3.php
index ff96a190..64e48366 100644
--- a/framework/Web/UI/WebControls/THeader3.php
+++ b/framework/Web/UI/WebControls/THeader3.php
@@ -4,9 +4,8 @@
*
* @author Brad Anderson <javalizard@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: THeader3.php 2590 2008-12-10 11:34:24Z carlgmathisen $
* @package System.Web.UI.WebControls
*/
@@ -18,13 +17,12 @@
* This is also useful for the {@link TWebControlDecorator} (used by themes).
*
* @author Brad Anderson <javalizard@gmail.com>
- * @version $Id: THeader3.php 2541 2008-10-21 15:05:13Z javalizard $
* @package System.Web.UI.WebControls
* @since 3.2a
*/
-
-class THeader3 extends THtmlElement {
-
+
+class THeader3 extends THtmlElement {
+
/**
* @return string tag name
*/
@@ -32,5 +30,5 @@ class THeader3 extends THtmlElement {
{
return 'h3';
}
-
+
}
diff --git a/framework/Web/UI/WebControls/THeader4.php b/framework/Web/UI/WebControls/THeader4.php
index 1374c700..6622dd34 100644
--- a/framework/Web/UI/WebControls/THeader4.php
+++ b/framework/Web/UI/WebControls/THeader4.php
@@ -4,9 +4,8 @@
*
* @author Brad Anderson <javalizard@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: THeader4.php 2590 2008-12-10 11:34:24Z carlgmathisen $
* @package System.Web.UI.WebControls
*/
@@ -18,13 +17,12 @@
* This is also useful for the {@link TWebControlDecorator} (used by themes).
*
* @author Brad Anderson <javalizard@gmail.com>
- * @version $Id: THeader4.php 2541 2008-10-21 15:05:13Z javalizard $
* @package System.Web.UI.WebControls
* @since 3.2
*/
-
-class THeader4 extends THtmlElement {
-
+
+class THeader4 extends THtmlElement {
+
/**
* @return string tag name
*/
@@ -32,5 +30,5 @@ class THeader4 extends THtmlElement {
{
return 'h4';
}
-
+
}
diff --git a/framework/Web/UI/WebControls/THeader5.php b/framework/Web/UI/WebControls/THeader5.php
index 911e17ed..4d061943 100644
--- a/framework/Web/UI/WebControls/THeader5.php
+++ b/framework/Web/UI/WebControls/THeader5.php
@@ -4,9 +4,8 @@
*
* @author Brad Anderson <javalizard@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: THeader5.php 2590 2008-12-10 11:34:24Z carlgmathisen $
* @package System.Web.UI.WebControls
*/
@@ -18,13 +17,12 @@
* This is also useful for the {@link TWebControlDecorator} (used by themes).
*
* @author Brad Anderson <javalizard@gmail.com>
- * @version $Id: THeader5.php 2541 2008-10-21 15:05:13Z javalizard $
* @package System.Web.UI.WebControls
* @since 3.2
*/
-
-class THeader5 extends THtmlElement {
-
+
+class THeader5 extends THtmlElement {
+
/**
* @return string tag name
*/
@@ -32,5 +30,5 @@ class THeader5 extends THtmlElement {
{
return 'h5';
}
-
+
}
diff --git a/framework/Web/UI/WebControls/THeader6.php b/framework/Web/UI/WebControls/THeader6.php
index a2891c3f..164c391c 100644
--- a/framework/Web/UI/WebControls/THeader6.php
+++ b/framework/Web/UI/WebControls/THeader6.php
@@ -4,9 +4,8 @@
*
* @author Brad Anderson <javalizard@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: THeader6.php 2590 2008-12-10 11:34:24Z carlgmathisen $
* @package System.Web.UI.WebControls
*/
@@ -18,13 +17,12 @@
* This is also useful for the {@link TWebControlDecorator} (used by themes).
*
* @author Brad Anderson <javalizard@gmail.com>
- * @version $Id: THeader6.php 2541 2008-10-21 15:05:13Z javalizard $
* @package System.Web.UI.WebControls
* @since 3.2
*/
-
-class THeader6 extends THtmlElement {
-
+
+class THeader6 extends THtmlElement {
+
/**
* @return string tag name
*/
@@ -32,5 +30,5 @@ class THeader6 extends THtmlElement {
{
return 'h6';
}
-
+
}
diff --git a/framework/Web/UI/WebControls/THiddenField.php b/framework/Web/UI/WebControls/THiddenField.php
index 041acdb2..d887a5e6 100644
--- a/framework/Web/UI/WebControls/THiddenField.php
+++ b/framework/Web/UI/WebControls/THiddenField.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.xisc.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.opensource.org/licenses/bsd-license.php BSD License
- * @version $Id: THiddenField.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -19,7 +18,6 @@
* event will be raised.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: THiddenField.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -113,7 +111,7 @@ class THiddenField extends TControl implements IPostBackDataHandler, IValidatabl
}
/**
- * Returns true if this control validated successfully.
+ * Returns true if this control validated successfully.
* Defaults to true.
* @return bool wether this control validated successfully.
*/
diff --git a/framework/Web/UI/WebControls/THtmlArea.php b/framework/Web/UI/WebControls/THtmlArea.php
index 9d9ff3fa..6c2985f8 100644
--- a/framework/Web/UI/WebControls/THtmlArea.php
+++ b/framework/Web/UI/WebControls/THtmlArea.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: THtmlArea.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -72,7 +71,6 @@ Prado::using('System.Web.UI.WebControls.TTextBox');
* </code>
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: THtmlArea.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -471,6 +469,8 @@ class THtmlArea extends TTextBox
$options['theme_advanced_toolbar_align'] = 'left';
$options['theme_advanced_path_location'] = 'bottom';
$options['extended_valid_elements'] = 'a[name|href|target|title|onclick],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name],hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]';
+ if($this->getReadOnly())
+ $options['readonly'] = true;
$options = array_merge($options, $this->parseEditorOptions($this->getOptions()));
return $options;
@@ -491,7 +491,7 @@ class THtmlArea extends TTextBox
if(count($option) == 2)
{
$value=trim(trim($option[1]),"'\"");
- if (($s=strtolower($value))==='false')
+ if (($s=strtolower($value))==='false')
$value=false;
elseif ($s==='true')
$value=true;
diff --git a/framework/Web/UI/WebControls/THtmlArea4.php b/framework/Web/UI/WebControls/THtmlArea4.php
index f98c2ddf..d5410eae 100644
--- a/framework/Web/UI/WebControls/THtmlArea4.php
+++ b/framework/Web/UI/WebControls/THtmlArea4.php
@@ -4,9 +4,8 @@
*
* @author Fabio Bas <ctrlaltca[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: THtmlArea4.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -20,7 +19,7 @@ Prado::using('System.Web.UI.WebControls.TTextBox');
*
* THtmlArea4 wraps the visual editing functionalities provided by the
* version 4 of TinyMCE project {@link http://tinymce.com/}. It has been
- * developed as a plug'n'play substitute for {@link THtmlArea}, that is
+ * developed as a plug'n'play substitute for {@link THtmlArea}, that is
* based on the previous iteration (version 3) of the same project.
* Please note that both components can't be used together in the same page.
*
@@ -53,7 +52,6 @@ Prado::using('System.Web.UI.WebControls.TTextBox');
* </code>
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: THtmlArea.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -408,6 +406,13 @@ class THtmlArea4 extends TTextBox
$options['height'] = $this->getHeight();
$options['resize'] = 'both';
$options['menubar'] = false;
+ if($this->getReadOnly())
+ {
+ $options['readonly'] = true;
+ $options['toolbar'] = false;
+ $options['menubar'] = false;
+ $options['statusbar'] = false;
+ }
$options['extended_valid_elements'] = 'a[name|href|target|title|onclick],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name],hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]';
@@ -430,7 +435,7 @@ class THtmlArea4 extends TTextBox
if(count($option) == 2)
{
$value=trim(trim($option[1]),"'\"");
- if (($s=strtolower($value))==='false')
+ if (($s=strtolower($value))==='false')
$value=false;
elseif ($s==='true')
$value=true;
diff --git a/framework/Web/UI/WebControls/THtmlElement.php b/framework/Web/UI/WebControls/THtmlElement.php
index 5646a6ff..f5bee915 100644
--- a/framework/Web/UI/WebControls/THtmlElement.php
+++ b/framework/Web/UI/WebControls/THtmlElement.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: THtmlElement.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -23,7 +22,6 @@ Prado::using('System.Web.UI.WebControls.TWebControl');
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @author Brad Anderson <javalizard@gmail.com>
- * @version $Id: THtmlElement.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.1.2
*/
@@ -49,18 +47,18 @@ class THtmlElement extends TWebControl
{
$this->_tagName=TPropertyValue::ensureString($value);
}
-
+
/**
* This is the default tag when no other is specified
- * @return string the default tag
+ * @return string the default tag
*/
public function getDefaultTagName() {
return 'span';
}
-
+
/**
* This tells you if this TagName has deviated from the original
- * @return boolean true if TagName has deviated from the default.
+ * @return boolean true if TagName has deviated from the default.
*/
public function getIsMutated() {
return $this->_tagName !== null && $this->_tagName != $this->getDefaultTagName();
diff --git a/framework/Web/UI/WebControls/THyperLink.php b/framework/Web/UI/WebControls/THyperLink.php
index 56aa5391..3cda0c48 100644
--- a/framework/Web/UI/WebControls/THyperLink.php
+++ b/framework/Web/UI/WebControls/THyperLink.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.xisc.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.opensource.org/licenses/bsd-license.php BSD License
- * @version $Id: THyperLink.php 3286 2013-04-18 06:09:19Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -20,13 +19,12 @@
* the alignment of the image displayed is set by the
* {@link setImageAlign ImageAlign} property and {@link getText Text} is
* displayed as the alternate text of the image.
- *
+ *
* The link target is specified via the {@link setTarget Target} property.
* If both {@link getImageUrl ImageUrl} and {@link getText Text} are empty,
* the content enclosed within the control tag will be rendered.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: THyperLink.php 3286 2013-04-18 06:09:19Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -145,7 +143,7 @@ class THyperLink extends TWebControl implements IDataRenderer
{
return $this->getViewState('ImageHeight','');
}
-
+
/**
* Sets the height of the image in the THyperLink
* @param string height of the image in the THyperLink
@@ -171,7 +169,7 @@ class THyperLink extends TWebControl implements IDataRenderer
{
$this->setViewState('ImageUrl',$value,'');
}
-
+
/**
* @return string width of the image in the THyperLink
*/
@@ -179,7 +177,7 @@ class THyperLink extends TWebControl implements IDataRenderer
{
return $this->getViewState('ImageWidth','');
}
-
+
/**
* Sets the width of the image in the THyperLink
* @param string width of the image
diff --git a/framework/Web/UI/WebControls/THyperLinkColumn.php b/framework/Web/UI/WebControls/THyperLinkColumn.php
index 171accad..05060ea6 100644
--- a/framework/Web/UI/WebControls/THyperLinkColumn.php
+++ b/framework/Web/UI/WebControls/THyperLinkColumn.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: THyperLinkColumn.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -45,7 +44,6 @@ Prado::using('System.Web.UI.WebControls.THyperLink');
* datagrid cell is the first child.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: THyperLinkColumn.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -107,7 +105,7 @@ class THyperLinkColumn extends TDataGridColumn
{
return $this->getViewState('ImageHeight','');
}
-
+
/**
* @param string height of the image in the THyperLink
*/
@@ -123,7 +121,7 @@ class THyperLinkColumn extends TDataGridColumn
{
return $this->getViewState('ImageUrl','');
}
-
+
/**
* @param string url of the image in the THyperLink
*/
@@ -131,7 +129,7 @@ class THyperLinkColumn extends TDataGridColumn
{
$this->setViewState('ImageUrl',$value,'');
}
-
+
/**
* @return string width of the image in the THyperLink
*/
@@ -139,7 +137,7 @@ class THyperLinkColumn extends TDataGridColumn
{
return $this->getViewState('ImageWidth','');
}
-
+
/**
* @param string width of the image in the THyperLink
*/
diff --git a/framework/Web/UI/WebControls/TImage.php b/framework/Web/UI/WebControls/TImage.php
index 04a6d116..6ebbca5d 100644
--- a/framework/Web/UI/WebControls/TImage.php
+++ b/framework/Web/UI/WebControls/TImage.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TImage.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -21,7 +20,6 @@
* or {@link setDescriptionUrl DescriptionUrl} property, respectively.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TImage.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TImageButton.php b/framework/Web/UI/WebControls/TImageButton.php
index 0ee52a94..ff876b07 100644
--- a/framework/Web/UI/WebControls/TImageButton.php
+++ b/framework/Web/UI/WebControls/TImageButton.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TImageButton.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -52,7 +51,6 @@ Prado::using('System.Web.UI.WebControls.TImage');
* TImageButton displays the {@link setText Text} property as the hint text to the displayed image.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TImageButton.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -378,7 +376,6 @@ class TImageButton extends TImage implements IPostBackDataHandler, IPostBackEven
* {@link TImageButton::onClick Click} event of {@link TImageButton} controls.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TImageButton.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TImageMap.php b/framework/Web/UI/WebControls/TImageMap.php
index 340f5089..23409b1c 100644
--- a/framework/Web/UI/WebControls/TImageMap.php
+++ b/framework/Web/UI/WebControls/TImageMap.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TImageMap.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -33,7 +32,6 @@ Prado::using('System.Web.UI.WebControls.TImage');
* </code>
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TImageMap.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -230,7 +228,6 @@ class TImageMap extends TImage implements IPostBackEventHandler
* access {@link getPostBackValue PostBackValue}.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TImageMap.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -262,7 +259,6 @@ class TImageMapEventParameter extends TEventParameter
* THotSpotCollection represents a collection of hotspots in an imagemap.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TImageMap.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -293,7 +289,6 @@ class THotSpotCollection extends TList
* and {@link TRectangleHotSpot}.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TImageMap.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -604,7 +599,6 @@ abstract class THotSpot extends TComponent
* control.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TImageMap.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -682,7 +676,6 @@ class TCircleHotSpot extends THotSpot
* TImageMap} control.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TImageMap.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -776,7 +769,6 @@ class TRectangleHotSpot extends THotSpot
* TImageMap} control.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TImageMap.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -823,7 +815,6 @@ class TPolygonHotSpot extends THotSpot
* - Inactive: the hotspot is inactive (not clickable)
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TImageMap.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
diff --git a/framework/Web/UI/WebControls/TInlineFrame.php b/framework/Web/UI/WebControls/TInlineFrame.php
index 2c1371aa..09e82315 100644
--- a/framework/Web/UI/WebControls/TInlineFrame.php
+++ b/framework/Web/UI/WebControls/TInlineFrame.php
@@ -5,9 +5,8 @@
* @author Jason Ragsdale <jrags@jasrags.net>
* @author Harry Pottash <hpottash@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TInlineFrame.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -27,7 +26,6 @@
* Original Prado v2 IFrame Author Information
* @author Jason Ragsdale <jrags@jasrags.net>
* @author Harry Pottash <hpottash@gmail.com>
- * @version $Id: TInlineFrame.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -239,7 +237,6 @@ class TInlineFrame extends TWebControl implements IDataRenderer
* - Bottom: bottom aligned
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TInlineFrame.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
@@ -264,7 +261,6 @@ class TInlineFrameAlign extends TEnumerable
* - Both: show both horizontal and vertical scroll bars all the time.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TInlineFrame.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
diff --git a/framework/Web/UI/WebControls/TItemDataRenderer.php b/framework/Web/UI/WebControls/TItemDataRenderer.php
index 2809e046..eb6fabef 100644
--- a/framework/Web/UI/WebControls/TItemDataRenderer.php
+++ b/framework/Web/UI/WebControls/TItemDataRenderer.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TItemDataRenderer.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.1.2
*/
@@ -28,7 +27,6 @@ Prado::using('System.Web.UI.WebControls.TDataRenderer');
* - {@link getData Data}: data associated with this renderer
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TItemDataRenderer.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.1.2
*/
diff --git a/framework/Web/UI/WebControls/TJavascriptLogger.php b/framework/Web/UI/WebControls/TJavascriptLogger.php
index a2f1c1c2..f9f9a37d 100644
--- a/framework/Web/UI/WebControls/TJavascriptLogger.php
+++ b/framework/Web/UI/WebControls/TJavascriptLogger.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TJavascriptLogger.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -26,14 +25,13 @@
* http://web.archive.org/web/20060512041505/gleepglop.com/javascripts/logger/
*
* @author Wei Zhuo<weizhuo[at]gmail[dot]com>
- * @version $Id: TJavascriptLogger.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
class TJavascriptLogger extends TWebControl
{
private static $_keyCodes = array(
- '0'=>48, '1'=>49, '2'=>50, '3'=>51, '4'=>52, '5'=>53, '6'=>54, '7'=>55, '8'=>56, '9'=>57,
+ '0'=>48, '1'=>49, '2'=>50, '3'=>51, '4'=>52, '5'=>53, '6'=>54, '7'=>55, '8'=>56, '9'=>57,
'a'=>65, 'b'=>66, 'c'=>67, 'd'=>68, 'e'=>69, 'f'=>70, 'g'=>71, 'h'=>72,
'i'=>73, 'j'=>74, 'k'=>75, 'l'=>76, 'm'=>77, 'n'=>78, 'o'=>79, 'p'=>80,
'q'=>81, 'r'=>82, 's'=>83, 't'=>84, 'u'=>85, 'v'=>86, 'w'=>87, 'x'=>88, 'y'=>89, 'z'=>90);
diff --git a/framework/Web/UI/WebControls/TKeyboard.php b/framework/Web/UI/WebControls/TKeyboard.php
index 1260c5af..d423107a 100644
--- a/framework/Web/UI/WebControls/TKeyboard.php
+++ b/framework/Web/UI/WebControls/TKeyboard.php
@@ -4,9 +4,8 @@
*
* @author Sergey Morkovkin <sergeymorkovkin@mail.ru> and Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TKeyboard.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.1.1
*/
@@ -33,7 +32,6 @@
* also be changed by specifying {@link setKeyboardCssClass KeyboardCssClass}.
*
* @author Sergey Morkovkin <sergeymorkovkin@mail.ru> and Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TKeyboard.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.1.1
*/
diff --git a/framework/Web/UI/WebControls/TLabel.php b/framework/Web/UI/WebControls/TLabel.php
index 4552b1a5..6ffd025b 100644
--- a/framework/Web/UI/WebControls/TLabel.php
+++ b/framework/Web/UI/WebControls/TLabel.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TLabel.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -26,7 +25,6 @@
* Make sure it does not contain dangerous characters that you want to avoid.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TLabel.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TLinkButton.php b/framework/Web/UI/WebControls/TLinkButton.php
index a9e6f4cf..fe1ae33b 100644
--- a/framework/Web/UI/WebControls/TLinkButton.php
+++ b/framework/Web/UI/WebControls/TLinkButton.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TLinkButton.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -50,7 +49,6 @@
* as an image button by enclosing an &lt;img&gt; tag as the body of TLinkButton.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TLinkButton.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TListBox.php b/framework/Web/UI/WebControls/TListBox.php
index a616a2be..1d72f0c2 100644
--- a/framework/Web/UI/WebControls/TListBox.php
+++ b/framework/Web/UI/WebControls/TListBox.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TListBox.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -32,7 +31,6 @@ Prado::using('System.Web.UI.WebControls.TListControl');
* </code>
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TListBox.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -223,7 +221,7 @@ class TListBox extends TListControl implements IPostBackDataHandler, IValidatabl
}
/**
- * Returns true if this control validated successfully.
+ * Returns true if this control validated successfully.
* Defaults to true.
* @return bool wether this control validated successfully.
*/
@@ -250,7 +248,6 @@ class TListBox extends TListControl implements IPostBackDataHandler, IValidatabl
* - Multiple: allow multiple selection
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TListBox.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
diff --git a/framework/Web/UI/WebControls/TListControl.php b/framework/Web/UI/WebControls/TListControl.php
index f9fdd77f..f8655761 100644
--- a/framework/Web/UI/WebControls/TListControl.php
+++ b/framework/Web/UI/WebControls/TListControl.php
@@ -6,9 +6,8 @@
* @author Robin J. Rogge <rojaro@gmail.com>
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TListControl.php 3288 2013-04-30 10:36:50Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -79,7 +78,6 @@ Prado::using('System.Util.TDataFieldAccessor');
* be used to add a dummy list item that will be rendered first.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TListControl.php 3288 2013-04-30 10:36:50Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -794,7 +792,7 @@ abstract class TListControl extends TDataBoundControl implements IDataRenderer
public function renderContents($writer)
{
$this->renderPrompt($writer);
-
+
if($this->_items)
{
$writer->writeLine();
diff --git a/framework/Web/UI/WebControls/TListControlValidator.php b/framework/Web/UI/WebControls/TListControlValidator.php
index 7d9801ef..04cc6ef6 100644
--- a/framework/Web/UI/WebControls/TListControlValidator.php
+++ b/framework/Web/UI/WebControls/TListControlValidator.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TListControlValidator.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -57,7 +56,6 @@ Prado::using('System.Web.UI.WebControls.TBaseValidator');
* </code>
*
* @author Xiang Wei Zhuo <weizhuo[at]gmail.com>
- * @version $Id: TListControlValidator.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TListItem.php b/framework/Web/UI/WebControls/TListItem.php
index e9bfa175..cf5e487a 100644
--- a/framework/Web/UI/WebControls/TListItem.php
+++ b/framework/Web/UI/WebControls/TListItem.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TListItem.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -21,7 +20,6 @@
* if the list control supports so.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TListItem.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TLiteral.php b/framework/Web/UI/WebControls/TLiteral.php
index da195f50..35d35e02 100644
--- a/framework/Web/UI/WebControls/TLiteral.php
+++ b/framework/Web/UI/WebControls/TLiteral.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TLiteral.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -27,7 +26,6 @@
* does not contain unwanted characters that may bring security vulnerabilities.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TLiteral.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TLiteralColumn.php b/framework/Web/UI/WebControls/TLiteralColumn.php
index f40f8f4e..4b2c39fc 100644
--- a/framework/Web/UI/WebControls/TLiteralColumn.php
+++ b/framework/Web/UI/WebControls/TLiteralColumn.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TLiteralColumn.php 1397 2006-09-07 07:55:53Z wei $
* @package System.Web.UI.WebControls
*/
@@ -29,7 +28,6 @@ Prado::using('System.Web.UI.WebControls.TDataGridColumn');
* If {@link setEncode Encode} is true, the static texts will be HTML-encoded.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TLiteralColumn.php 1397 2006-09-07 07:55:53Z wei $
* @package System.Web.UI.WebControls
* @since 3.0.5
*/
@@ -111,18 +109,13 @@ class TLiteralColumn extends TDataGridColumn
if($itemType===TListItemType::Item || $itemType===TListItemType::AlternatingItem || $itemType===TListItemType::EditItem || $itemType===TListItemType::SelectedItem)
{
if($this->getDataField()!=='')
- $cell->attachEventHandler('OnDataBinding',array($this,'dataBindColumn'));
- else
{
- if(($dataField=$this->getDataField())!=='')
- $control->attachEventHandler('OnDataBinding',array($this,'dataBindColumn'));
- else
- {
- $text=$this->getText();
- if($this->getEncode())
- $text=THttpUtility::htmlEncode($text);
- $cell->setText($text);
- }
+ $cell->attachEventHandler('OnDataBinding',array($this,'dataBindColumn'));
+ } else {
+ $text=$this->getText();
+ if($this->getEncode())
+ $text=THttpUtility::htmlEncode($text);
+ $cell->setText($text);
}
}
else
diff --git a/framework/Web/UI/WebControls/TMarkdown.php b/framework/Web/UI/WebControls/TMarkdown.php
index 1a2855eb..75c8ec1b 100644
--- a/framework/Web/UI/WebControls/TMarkdown.php
+++ b/framework/Web/UI/WebControls/TMarkdown.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TMarkdown.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -14,7 +13,7 @@
* Using TTextHighlighter and MarkdownParser classes
*/
Prado::using('System.Web.UI.WebControls.TTextHighlighter');
-Prado::using('System.3rdParty.Markdown.MarkdownParser');
+Prado::using('System.3rdParty.Parsedown.Parsedown');
/**
* TMarkdown class
@@ -30,7 +29,7 @@ Prado::using('System.3rdParty.Markdown.MarkdownParser');
* To use TMarkdown, simply enclose the content to be rendered within
* the body of TMarkdown in a template.
*
- * See http://www.pradosoft.com/demos/quickstart/?page=Markdown for
+ * See https://daringfireball.net/projects/markdown/basics for
* details on the Markdown syntax usage.
*
* TMarkdown also performs syntax highlighting for code blocks whose language
@@ -39,7 +38,6 @@ Prado::using('System.3rdParty.Markdown.MarkdownParser');
* and enclosed within a pair of square brackets (e.g. [php]).
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TMarkdown.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.1
*/
@@ -53,10 +51,9 @@ class TMarkdown extends TTextHighlighter
*/
public function processText($text)
{
- $renderer = new MarkdownParser;
- $result = $renderer->parse($text);
+ $result = Parsedown::instance()->parse($text);
return preg_replace_callback(
- '/<pre><code>\[\s*(\w+)\s*\]\n+((.|\n)*?)\s*<\\/code><\\/pre>/im',
+ '/<pre><code class="language-(\w+)">((.|\n)*?)<\\/code><\\/pre>/im',
array($this, 'highlightCode'), $result);
}
diff --git a/framework/Web/UI/WebControls/TMultiView.php b/framework/Web/UI/WebControls/TMultiView.php
index 286f4e95..05725ff7 100644
--- a/framework/Web/UI/WebControls/TMultiView.php
+++ b/framework/Web/UI/WebControls/TMultiView.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TMultiView.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -32,7 +31,6 @@
* when its active view is changed during a postback.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TMultiView.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -272,7 +270,6 @@ class TMultiView extends TControl
* TViewCollection represents a collection that only takes {@link TView} instances
* as collection elements.
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TMultiView.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -307,7 +304,6 @@ class TViewCollection extends TControlCollection
* and when a view is deactivated, it raises {@link onDeactivate OnDeactivate}.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TMultiView.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TOutputCache.php b/framework/Web/UI/WebControls/TOutputCache.php
index 89c0c849..2a5ce734 100644
--- a/framework/Web/UI/WebControls/TOutputCache.php
+++ b/framework/Web/UI/WebControls/TOutputCache.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TOutputCache.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -63,7 +62,6 @@
* to determine whether the content is cached or not.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TOutputCache.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.1
*/
@@ -481,7 +479,7 @@ class TOutputCache extends TControl implements INamingContainer
$textwriter = new TTextWriter();
$multiwriter = new TOutputCacheTextWriterMulti(array($writer->getWriter(),$textwriter));
$htmlWriter = Prado::createComponent($this->GetResponse()->getHtmlWriterType(), $multiwriter);
-
+
$stack=$this->getPage()->getCachingStack();
$stack->push($this);
parent::render($htmlWriter);
@@ -503,7 +501,6 @@ class TOutputCache extends TControl implements INamingContainer
* <b>OnCheckDependency</b> event of {@link TOutputCache} control.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TOutputCache.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -555,7 +552,6 @@ class TOutputCacheCheckDependencyEventParameter extends TEventParameter
* <b>OnCalculateKey</b> event of {@link TOutputCache} control.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TOutputCache.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -591,7 +587,6 @@ class TOutputCacheCalculateKeyEventParameter extends TEventParameter
*
* @author Gabor Berczi, DevWorx Hungary <gabor.berczi@devworx.hu>
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TOutputCache.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.2
*/
@@ -604,7 +599,7 @@ class TOutputCacheTextWriterMulti extends TTextWriter
//parent::__construct();
$this->_writers = $writers;
}
-
+
public function write($s)
{
foreach($this->_writers as $writer)
diff --git a/framework/Web/UI/WebControls/TPager.php b/framework/Web/UI/WebControls/TPager.php
index 6379fedd..b4b9c2b0 100644
--- a/framework/Web/UI/WebControls/TPager.php
+++ b/framework/Web/UI/WebControls/TPager.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TPager.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -34,7 +33,7 @@
*
* Since Prado 3.2.1, you can use the {@link setButtonCssClass ButtonCssClass} property to specify a css class
* that will be applied to each button created by the pager in NextPrev or Numeric mode.
- *
+ *
* TPager raises an {@link onPageIndexChanged OnPageIndexChanged} event when
* the end-user interacts with it and specifies a new page (e.g. clicking
* on a page button that leads to a new page.) The new page index may be obtained
@@ -45,7 +44,6 @@
* Multiple pagers can be associated with the same data-bound control.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TPager.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.2
*/
@@ -727,7 +725,6 @@ class TPager extends TWebControl implements INamingContainer
* returns the new page index carried with the page command.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TPager.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.2
*/
@@ -781,7 +778,6 @@ class TPagerPageChangedEventParameter extends TEventParameter
* - DropDownList: a dropdown list is used to select pages
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TPager.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
@@ -802,7 +798,6 @@ class TPagerMode extends TEnumerable
* - PushButton: form submit buttons
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TPager.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
diff --git a/framework/Web/UI/WebControls/TPanel.php b/framework/Web/UI/WebControls/TPanel.php
index cf20a864..2bf1b40d 100644
--- a/framework/Web/UI/WebControls/TPanel.php
+++ b/framework/Web/UI/WebControls/TPanel.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TPanel.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -35,7 +34,6 @@ Prado::using('System.Web.UI.WebControls.TPanelStyle');
* by setting the {@link setDefaultButton DefaultButton} property.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TPanel.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -231,12 +229,7 @@ class TPanel extends TWebControl
if(($butt=$this->getDefaultButton())!=='')
{
- $buttons = $this->findControlsByID($butt);
- if (count($buttons)>0)
- $button = reset($buttons);
- else
- $button = null;
- if($button===null)
+ if(($button=$this->findControl($butt))===null)
throw new TInvalidDataValueException('panel_defaultbutton_invalid',$butt);
else
$this->getPage()->getClientScript()->registerDefaultButton($this, $button);
diff --git a/framework/Web/UI/WebControls/TPanelStyle.php b/framework/Web/UI/WebControls/TPanelStyle.php
index cb49b715..d1dfe62e 100644
--- a/framework/Web/UI/WebControls/TPanelStyle.php
+++ b/framework/Web/UI/WebControls/TPanelStyle.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TPanelStyle.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -20,7 +19,6 @@ Prado::using('System.Web.UI.WebControls.TStyle');
* TPanelStyle represents the CSS style specific for panel HTML tag.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TPanelStyle.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -239,7 +237,6 @@ class TPanelStyle extends TStyle
* - RightToLeft: content in a panel is right to left
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TPanelStyle.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
@@ -263,7 +260,6 @@ class TContentDirection extends TEnumerable
* - Vertical: vertical scroll bar only
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TPanelStyle.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
diff --git a/framework/Web/UI/WebControls/TPlaceHolder.php b/framework/Web/UI/WebControls/TPlaceHolder.php
index 020141cf..6809a402 100644
--- a/framework/Web/UI/WebControls/TPlaceHolder.php
+++ b/framework/Web/UI/WebControls/TPlaceHolder.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TPlaceHolder.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -18,7 +17,6 @@
* by manipulating the {@link TControl::getControls Controls} property.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TPlaceHolder.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TRadioButton.php b/framework/Web/UI/WebControls/TRadioButton.php
index 144704b4..bb12a2ff 100644
--- a/framework/Web/UI/WebControls/TRadioButton.php
+++ b/framework/Web/UI/WebControls/TRadioButton.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TRadioButton.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -14,10 +13,6 @@
* Using TCheckBox parent class
*/
Prado::using('System.Web.UI.WebControls.TCheckBox');
-/**
- * Using TRadioButtonList class
- */
-Prado::using('System.Web.UI.WebControls.TRadioButtonList');
/**
* TRadioButton class
@@ -49,7 +44,6 @@ Prado::using('System.Web.UI.WebControls.TRadioButtonList');
* that may bring security vulnerabilities.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TRadioButton.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -182,7 +176,7 @@ class TRadioButton extends TCheckBox
{
if($groupName!=='')
$groupName=substr($uniqueID,0,$pos+1).$groupName;
- else if($this->getNamingContainer() instanceof TRadioButtonList)
+ else if(is_a($this->getNamingContainer(), 'TRadioButtonList'))
$groupName=substr($uniqueID,0,$pos);
}
if($groupName==='')
diff --git a/framework/Web/UI/WebControls/TRadioButtonList.php b/framework/Web/UI/WebControls/TRadioButtonList.php
index d93caaa2..bead3582 100644
--- a/framework/Web/UI/WebControls/TRadioButtonList.php
+++ b/framework/Web/UI/WebControls/TRadioButtonList.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TRadioButtonList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -29,7 +28,6 @@ Prado::using('System.Web.UI.WebControls.TCheckBoxList');
* one radiobutton can be selected at a time.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TRadioButtonList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TRangeValidator.php b/framework/Web/UI/WebControls/TRangeValidator.php
index 8b7550c8..8a3c0e35 100644
--- a/framework/Web/UI/WebControls/TRangeValidator.php
+++ b/framework/Web/UI/WebControls/TRangeValidator.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TRangeValidator.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -46,7 +45,6 @@ Prado::using('System.Web.UI.WebControls.TBaseValidator');
* defaulted as UTF-8.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TRangeValidator.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -350,7 +348,6 @@ class TRangeValidator extends TBaseValidator
* - StringLength
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TRangeValidator.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
diff --git a/framework/Web/UI/WebControls/TRatingList.php b/framework/Web/UI/WebControls/TRatingList.php
index f4d4adcf..09d7fc6a 100644
--- a/framework/Web/UI/WebControls/TRatingList.php
+++ b/framework/Web/UI/WebControls/TRatingList.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TRatingList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -22,7 +21,6 @@ Prado::using('System.Web.UI.WebControls.TRadioButtonList');
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @author Bradley Booms <bradley[dot]booms[at]gmail[dot]com>
- * @version $Id: TRatingList.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -125,7 +123,7 @@ class TRatingList extends TRadioButtonList
$index = $this->getRatingIndex($value);
parent::setSelectedIndex($index);
}
-
+
public function setSelectedIndex($value)
{
$this->setRating($value+1);
@@ -213,7 +211,7 @@ class TRatingList extends TRadioButtonList
{
return $this->getViewState('RatingStyle', 'default');
}
-
+
/**
* @return string rating style css class name.
*/
diff --git a/framework/Web/UI/WebControls/TRegularExpressionValidator.php b/framework/Web/UI/WebControls/TRegularExpressionValidator.php
index 890fb56e..2c155e28 100644
--- a/framework/Web/UI/WebControls/TRegularExpressionValidator.php
+++ b/framework/Web/UI/WebControls/TRegularExpressionValidator.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TRegularExpressionValidator.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -43,7 +42,6 @@ Prado::using('System.Web.UI.WebControls.TBaseValidator');
* Use a {@link TRequiredFieldValidator} to ensure the input is not empty.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TRegularExpressionValidator.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TRepeatInfo.php b/framework/Web/UI/WebControls/TRepeatInfo.php
index 929d31e7..7b65b3b3 100644
--- a/framework/Web/UI/WebControls/TRepeatInfo.php
+++ b/framework/Web/UI/WebControls/TRepeatInfo.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TRepeatInfo.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -17,7 +16,6 @@ Prado::using('System.Web.UI.WebControls.TTable');
* This interface must be implemented by classes who want to use {@link TRepeatInfo}.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TRepeatInfo.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -70,7 +68,6 @@ interface IRepeatInfoUser
* the column and repeat direction settings.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TRepeatInfo.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -526,7 +523,6 @@ class TRepeatInfo extends TComponent
* - Horizontal
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TRepeatInfo.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
@@ -547,7 +543,6 @@ class TRepeatDirection extends TEnumerable
* - Raw: the repeated contents are stacked together without any additional decorations
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TRepeatInfo.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
diff --git a/framework/Web/UI/WebControls/TRepeater.php b/framework/Web/UI/WebControls/TRepeater.php
index c32636fd..a563a12d 100644
--- a/framework/Web/UI/WebControls/TRepeater.php
+++ b/framework/Web/UI/WebControls/TRepeater.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TRepeater.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -87,7 +86,6 @@ Prado::using('System.Util.TDataFieldAccessor');
* complex data may also have serializing problem if saved in viewstate.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TRepeater.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -784,7 +782,6 @@ class TRepeater extends TDataBoundControl implements INamingContainer
* The {@link getItem Item} property indicates the repeater item related with the event.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TRepeater.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -825,7 +822,6 @@ class TRepeaterItemEventParameter extends TEventParameter
* raises the Command event.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TRepeater.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -880,7 +876,6 @@ class TRepeaterCommandEventParameter extends TCommandEventParameter
* is given by {@link getItemType ItemType} property.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TRepeater.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -1001,7 +996,6 @@ class TRepeaterItem extends TControl implements INamingContainer, IItemDataRende
* TRepeaterItemCollection represents a collection of repeater items.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TRepeater.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TRepeaterItemRenderer.php b/framework/Web/UI/WebControls/TRepeaterItemRenderer.php
index 0e39e765..1c41e65f 100644
--- a/framework/Web/UI/WebControls/TRepeaterItemRenderer.php
+++ b/framework/Web/UI/WebControls/TRepeaterItemRenderer.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TRepeaterItemRenderer.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -23,7 +22,6 @@ Prado::using('System.Web.UI.WebControls.TItemDataRenderer');
* the bubbling scheme for the OnCommand event of repeater items.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TRepeaterItemRenderer.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.1.0
*/
diff --git a/framework/Web/UI/WebControls/TRequiredFieldValidator.php b/framework/Web/UI/WebControls/TRequiredFieldValidator.php
index 7a0bad8c..3db2457d 100644
--- a/framework/Web/UI/WebControls/TRequiredFieldValidator.php
+++ b/framework/Web/UI/WebControls/TRequiredFieldValidator.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TRequiredFieldValidator.php 3288 2013-04-30 10:36:50Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -29,7 +28,6 @@ Prado::using('System.Web.UI.WebControls.TBaseValidator');
* set, it will be automatically considered as the validator's {@link setInitialValue InitialValue}.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TRequiredFieldValidator.php 3288 2013-04-30 10:36:50Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -99,7 +97,7 @@ class TRequiredFieldValidator extends TBaseValidator
else
return $this->validateStandardControl($control);
}
-
+
private function validateListControl($control)
{
$initial = trim($this->getInitialValue());
@@ -111,7 +109,7 @@ class TRequiredFieldValidator extends TBaseValidator
}
return $count > 0;
}
-
+
private function validateRadioButtonGroup($control)
{
$initial = trim($this->getInitialValue());
@@ -127,7 +125,7 @@ class TRequiredFieldValidator extends TBaseValidator
}
return false;
}
-
+
private function validateStandardControl($control)
{
$initial = trim($this->getInitialValue());
diff --git a/framework/Web/UI/WebControls/TSafeHtml.php b/framework/Web/UI/WebControls/TSafeHtml.php
index 775086b4..b7b14f79 100644
--- a/framework/Web/UI/WebControls/TSafeHtml.php
+++ b/framework/Web/UI/WebControls/TSafeHtml.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TSafeHtml.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -34,7 +33,6 @@
* to ensure the contents gets parsed correctly.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TSafeHtml.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TSlider.php b/framework/Web/UI/WebControls/TSlider.php
index dcf34bfc..c0d76559 100644
--- a/framework/Web/UI/WebControls/TSlider.php
+++ b/framework/Web/UI/WebControls/TSlider.php
@@ -4,9 +4,8 @@
*
* @author Christophe Boulain <Christophe.Boulain@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TSlider.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.1.1
*/
@@ -26,10 +25,10 @@
* You can also provide the allowed values by setting the {@link SetValues Values} array.
*
* A 'Progress Indicator' can be displayed within the track with the {@link SetProgressIndicator ProgressIndicator} property.
- *
+ *
* The TSlider control can be easily customized using CssClasses. You can provide your own css file, using the
* {@link SetCssUrl CssUrl} property.
- * The css class for TSlider can be set by the {@link setCssClass CssClass} property. Default value is "Slider HorizontalSlider"
+ * The css class for TSlider can be set by the {@link setCssClass CssClass} property. Default value is "Slider HorizontalSlider"
* for an horizontal slider, and "Slider VerticalSlider" for a vertical one.
*
* If {@link SetAutoPostBack AutoPostBack} property is true, postback is sent as soon as the value changed.
@@ -42,7 +41,6 @@
* - ClientSide.onChange is called when the slider value has changed (at the end of a move).
*
* @author Christophe Boulain <Christophe.Boulain@gmail.com>
- * @version $Id: TSlider.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.1.1
*/
@@ -145,7 +143,7 @@ class TSlider extends TWebControl implements IPostBackDataHandler, IDataRenderer
{
$this->setViewState('StepSize', $value, 1.0);
}
-
+
/**
* @return boolean wether to display a progress indicator or not. Defaults to true.
*/
@@ -219,7 +217,7 @@ class TSlider extends TWebControl implements IPostBackDataHandler, IDataRenderer
{
$this->setViewState('Values', TPropertyValue::ensureArray($value), array());
}
-
+
/**
* @return boolean a value indicating whether an automatic postback to the server
* will occur whenever the user modifies the slider value. Defaults to false.
@@ -351,7 +349,7 @@ class TSlider extends TWebControl implements IPostBackDataHandler, IDataRenderer
$class=($this->getDirection()==TSliderDirection::Horizontal)?'HorizontalSlider':'VerticalSlider';
$writer->addAttribute('class', 'Slider '.$class);
}
-
+
}
/**
@@ -387,9 +385,9 @@ class TSlider extends TWebControl implements IPostBackDataHandler, IDataRenderer
}
$writer->renderEndTag();
*/
-
+
$writer->renderEndTag();
-
+
// Render the 'Handle'
$writer->addAttribute('class', 'Handle');
$writer->addAttribute('id', $this->getClientID().'_handle');
@@ -508,7 +506,6 @@ class TSlider extends TWebControl implements IPostBackDataHandler, IDataRenderer
* The <tt>OnChange</tt> event is raised when the slider value is changed (or at the end of a move)
*
* @author Christophe Boulain <Christophe.Boulain@gmail.com>
- * @version $Id: TSlider.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.1.1
*/
@@ -561,7 +558,6 @@ class TSliderClientScript extends TClientSideOptions
* - Vertical : Vertical slider
*
* @author Christophe Boulain <Christophe.Boulain@gmail.com>
- * @version $Id: TSlider.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.1.1
*/
diff --git a/framework/Web/UI/WebControls/TStatements.php b/framework/Web/UI/WebControls/TStatements.php
index 32f98296..0602732b 100644
--- a/framework/Web/UI/WebControls/TStatements.php
+++ b/framework/Web/UI/WebControls/TStatements.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TStatements.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -23,7 +22,6 @@
* make sure {@link setStatements Statements} does not come directly from user input.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TStatements.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TStyle.php b/framework/Web/UI/WebControls/TStyle.php
index 4ba37d53..f30b3461 100644
--- a/framework/Web/UI/WebControls/TStyle.php
+++ b/framework/Web/UI/WebControls/TStyle.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TStyle.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -21,7 +20,6 @@ Prado::using('System.Web.UI.WebControls.TFont');
* TStyle encapsulates the CSS style applied to a control.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TStyle.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -418,7 +416,6 @@ class TStyle extends TComponent
* - Hidden: the control is not displayed and is included in the layout.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TStyle.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.1
*/
@@ -435,7 +432,6 @@ class TDisplayStyle extends TEnumerable
* TTableStyle represents the CSS style specific for HTML table.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TStyle.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -676,7 +672,6 @@ class TTableStyle extends TStyle
* TTableItemStyle represents the CSS style specific for HTML table item.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TStyle.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -831,7 +826,6 @@ class TTableItemStyle extends TStyle
* - Justify: the begin and end are justified
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TStyle.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
@@ -855,7 +849,6 @@ class THorizontalAlign extends TEnumerable
* - Middle: middle aligned
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TStyle.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
@@ -879,7 +872,6 @@ class TVerticalAlign extends TEnumerable
* - Both: both horizontal and vertical grid lines are shown
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TStyle.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
diff --git a/framework/Web/UI/WebControls/TStyleSheet.php b/framework/Web/UI/WebControls/TStyleSheet.php
index 5faf52f0..32c0faf1 100644
--- a/framework/Web/UI/WebControls/TStyleSheet.php
+++ b/framework/Web/UI/WebControls/TStyleSheet.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TStyleSheet.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
diff --git a/framework/Web/UI/WebControls/TTabPanel.php b/framework/Web/UI/WebControls/TTabPanel.php
index 0c6128f1..8f1564db 100644
--- a/framework/Web/UI/WebControls/TTabPanel.php
+++ b/framework/Web/UI/WebControls/TTabPanel.php
@@ -4,9 +4,8 @@
*
* @author Tomasz Wolny <tomasz.wolny@polecam.to.pl> and Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TTabPanel.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.1.1
*/
@@ -54,7 +53,6 @@
* </code>
*
* @author Tomasz Wolny <tomasz.wolny@polecam.to.pl> and Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TTabPanel.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.1.1
*/
@@ -408,15 +406,15 @@ class TTabPanel extends TWebControl implements IPostBackDataHandler
protected function registerStyleSheet()
{
$url = $this->getCssUrl();
-
+
if($url === '') {
return;
}
-
+
if($url === 'default') {
$url = $this->getApplication()->getAssetManager()->publishFilePath(dirname(__FILE__).DIRECTORY_SEPARATOR.'assets'.DIRECTORY_SEPARATOR.'tabpanel.css');
}
-
+
if($url !== '') {
$this->getPage()->getClientScript()->registerStyleSheetFile($url, $url);
}
@@ -540,7 +538,6 @@ class TTabPanel extends TWebControl implements IPostBackDataHandler
* setting the {@link setActive Active} property.
*
* @author Tomasz Wolny <tomasz.wolny@polecam.to.pl> and Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TTabPanel.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.1.1
*/
@@ -694,7 +691,6 @@ class TTabView extends TWebControl
* TTabViewCollection is used to maintain a list of views belong to a {@link TTabPanel}.
*
* @author Tomasz Wolny <tomasz.wolny@polecam.to.pl> and Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TTabPanel.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.1.1
*/
diff --git a/framework/Web/UI/WebControls/TTable.php b/framework/Web/UI/WebControls/TTable.php
index 5be68cbd..4102cd4b 100644
--- a/framework/Web/UI/WebControls/TTable.php
+++ b/framework/Web/UI/WebControls/TTable.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TTable.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -61,7 +60,6 @@ Prado::using('System.Web.UI.WebControls.TTableRow');
* </code>
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TTable.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -358,7 +356,6 @@ class TTable extends TWebControl
* TTableRowCollection is used to maintain a list of rows belong to a table.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TTable.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -395,7 +392,6 @@ class TTableRowCollection extends TControlCollection
* - Right: right aligned
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TTable.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
diff --git a/framework/Web/UI/WebControls/TTableCell.php b/framework/Web/UI/WebControls/TTableCell.php
index 96254e62..d78aebbd 100644
--- a/framework/Web/UI/WebControls/TTableCell.php
+++ b/framework/Web/UI/WebControls/TTableCell.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TTableCell.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -28,7 +27,6 @@
* indicates whether the contents in the cell should be wrapped.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TTableCell.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TTableFooterRow.php b/framework/Web/UI/WebControls/TTableFooterRow.php
index 46d1a3be..32be1e12 100644
--- a/framework/Web/UI/WebControls/TTableFooterRow.php
+++ b/framework/Web/UI/WebControls/TTableFooterRow.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TTableFooterRow.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -21,7 +20,6 @@ Prado::using('System.Web.UI.WebControls.TTableRow');
* TTableFooterRow displays a table footer row.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TTableFooterRow.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.1
*/
diff --git a/framework/Web/UI/WebControls/TTableHeaderCell.php b/framework/Web/UI/WebControls/TTableHeaderCell.php
index 80036d41..43b21b45 100644
--- a/framework/Web/UI/WebControls/TTableHeaderCell.php
+++ b/framework/Web/UI/WebControls/TTableHeaderCell.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TTableHeaderCell.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -22,7 +21,6 @@ Prado::using('System.Web.UI.WebControls.TTableCell');
* TTableHeaderCell displays a table header cell on a Web page.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TTableHeaderCell.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -111,7 +109,6 @@ class TTableHeaderCell extends TTableCell
* - Column: the scope is column-wise
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TTableHeaderCell.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
diff --git a/framework/Web/UI/WebControls/TTableHeaderRow.php b/framework/Web/UI/WebControls/TTableHeaderRow.php
index 166a20e4..0e42a416 100644
--- a/framework/Web/UI/WebControls/TTableHeaderRow.php
+++ b/framework/Web/UI/WebControls/TTableHeaderRow.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TTableHeaderRow.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -21,7 +20,6 @@ Prado::using('System.Web.UI.WebControls.TTableRow');
* TTableHeaderRow displays a table header row.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TTableHeaderRow.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.1
*/
diff --git a/framework/Web/UI/WebControls/TTableRow.php b/framework/Web/UI/WebControls/TTableRow.php
index a998e6fb..d0bc6bfb 100644
--- a/framework/Web/UI/WebControls/TTableRow.php
+++ b/framework/Web/UI/WebControls/TTableRow.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TTableRow.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -24,7 +23,6 @@ Prado::using('System.Web.UI.WebControls.TTableCell');
* {@link setVerticalAlign VerticalAlign} properties, respectively.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TTableRow.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -160,7 +158,6 @@ class TTableRow extends TWebControl
* TTableCellCollection is used to maintain a list of cells belong to a table row.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TTableRow.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -195,7 +192,6 @@ class TTableCellCollection extends TControlCollection
* - Footer: in table footer
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TTableRow.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
diff --git a/framework/Web/UI/WebControls/TTemplateColumn.php b/framework/Web/UI/WebControls/TTemplateColumn.php
index 173476f2..947f0c47 100644
--- a/framework/Web/UI/WebControls/TTemplateColumn.php
+++ b/framework/Web/UI/WebControls/TTemplateColumn.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TTemplateColumn.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -34,7 +33,6 @@ Prado::using('System.Web.UI.WebControls.TDataGridColumn');
* takes precedence.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TTemplateColumn.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TTextBox.php b/framework/Web/UI/WebControls/TTextBox.php
index 969d2969..0d14dd7c 100644
--- a/framework/Web/UI/WebControls/TTextBox.php
+++ b/framework/Web/UI/WebControls/TTextBox.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TTextBox.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -44,7 +43,6 @@
* Currently, no alternatives are available.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TTextBox.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -593,7 +591,6 @@ class TTextBox extends TWebControl implements IPostBackDataHandler, IValidatable
* - Password: the textbox will hide user input like a password input box
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TTextBox.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
@@ -610,7 +607,6 @@ class TTextBoxMode extends TEnumerable
* by a {@link TTextBox} control.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TTextBox.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
diff --git a/framework/Web/UI/WebControls/TTextHighlighter.php b/framework/Web/UI/WebControls/TTextHighlighter.php
index 64878d49..a10171db 100644
--- a/framework/Web/UI/WebControls/TTextHighlighter.php
+++ b/framework/Web/UI/WebControls/TTextHighlighter.php
@@ -4,9 +4,8 @@
*
* @author Wei Zhuo<weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TTextHighlighter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -31,7 +30,6 @@ Prado::using('System.Web.UI.WebControls.TTextProcessor');
* because it needs to insert some CSS styles.
*
* @author Wei Zhuo<weizhuo[at]gmail[dot]com>
- * @version $Id: TTextHighlighter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -202,7 +200,6 @@ class TTextHighlighter extends TTextProcessor
/**
* @author Wei Zhuo<weizhuo[at]gmail[dot]com>
- * @version $Id: TTextHighlighter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TTextProcessor.php b/framework/Web/UI/WebControls/TTextProcessor.php
index e569e780..daba9b46 100644
--- a/framework/Web/UI/WebControls/TTextProcessor.php
+++ b/framework/Web/UI/WebControls/TTextProcessor.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TTextProcessor.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -23,7 +22,6 @@
* Note, all child classes must implement {@link processText} method.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TTextProcessor.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI
* @since 3.0.1
*/
diff --git a/framework/Web/UI/WebControls/TValidationSummary.php b/framework/Web/UI/WebControls/TValidationSummary.php
index 00c96c90..3d5b61ca 100644
--- a/framework/Web/UI/WebControls/TValidationSummary.php
+++ b/framework/Web/UI/WebControls/TValidationSummary.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TValidationSummary.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -30,7 +29,6 @@
* {@link setEnableClientScript EnableClientScript} is true.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TValidationSummary.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -430,7 +428,6 @@ class TValidationSummary extends TWebControl
* See the quickstart documentation for further details.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TValidationSummary.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -499,7 +496,6 @@ class TClientSideValidationSummaryOptions extends TClientSideOptions
* - HeaderOnly: only the HeaderText will be display.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TValidationSummary.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
@@ -523,7 +519,6 @@ class TValidationSummaryDisplayMode extends TEnumerable
* - Fixed: Similar to Dynamic except that the error messages physically occupy the page layout (even though they may not be visible)
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TValidationSummary.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
diff --git a/framework/Web/UI/WebControls/TWebControl.php b/framework/Web/UI/WebControls/TWebControl.php
index 0da4d88c..e0bd6194 100644
--- a/framework/Web/UI/WebControls/TWebControl.php
+++ b/framework/Web/UI/WebControls/TWebControl.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TWebControl.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -35,7 +34,6 @@ Prado::using('System.Web.UI.WebControls.TWebControlDecorator');
* the body contents enclosed within the HTML tag.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TWebControl.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -45,12 +43,12 @@ class TWebControl extends TControl implements IStyleable
* @var boolean ensures the inclusion the id in the tag rendering.
*/
private $_ensureid=false;
-
+
/**
* @var TWebControlDecorator this render things before and after both the open and close tag
*/
protected $_decorator;
-
+
/**
* Subclasses can override getEnsureId or just set this property. eg. If your subclass
@@ -80,7 +78,7 @@ class TWebControl extends TControl implements IStyleable
$this->_decorator = Prado::createComponent('TWebControlDecorator', $this);
return $this->_decorator;
}
-
+
/**
* Copies basic control attributes from another control.
* Properties including AccessKey, ToolTip, TabIndex, Enabled
@@ -397,10 +395,10 @@ class TWebControl extends TControl implements IStyleable
{
$this->getStyle()->setWidth($value);
}
-
+
/**
- * If your subclass overrides the onPreRender method be sure to call
+ * If your subclass overrides the onPreRender method be sure to call
* this method through parent::onPreRender($param); so your sub-class can be decorated,
* among other things.
* @param TEventParameter event parameter to be passed to the event handlers
@@ -408,7 +406,7 @@ class TWebControl extends TControl implements IStyleable
public function onPreRender($param) {
if($decorator = $this->getDecorator(false))
$decorator->instantiate();
-
+
parent::onPreRender($param);
}
@@ -494,7 +492,7 @@ class TWebControl extends TControl implements IStyleable
$decorator->renderPostContentsText($writer);
$writer->renderEndTag();
$decorator->renderPostTagText($writer);
- } else
+ } else
$writer->renderEndTag($writer);
}
}
diff --git a/framework/Web/UI/WebControls/TWebControlAdapter.php b/framework/Web/UI/WebControls/TWebControlAdapter.php
index 5de15419..6b969456 100644
--- a/framework/Web/UI/WebControls/TWebControlAdapter.php
+++ b/framework/Web/UI/WebControls/TWebControlAdapter.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TWebControlAdapter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -19,7 +18,6 @@
* browsers.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TWebControlAdapter.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TWebControlDecorator.php b/framework/Web/UI/WebControls/TWebControlDecorator.php
index 9b1c3652..d08d9c82 100644
--- a/framework/Web/UI/WebControls/TWebControlDecorator.php
+++ b/framework/Web/UI/WebControls/TWebControlDecorator.php
@@ -4,23 +4,22 @@
*
* @author Brad Anderson <javalizard@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TWebControlDecorator.php 2541 2008-10-21 15:05:13Z qiang.xue $
* @package System.Web.UI.WebControls
*/
/**
* TWebControlDecorator class
- *
+ *
* A TWebControlDecorator can be applied to a {@link TWebControl} to customize its rendering.
- * TWebControlDecorator can add custom html code before and after both the open and close
+ * TWebControlDecorator can add custom html code before and after both the open and close
* tag of a {@link TWebControl}.
* The html code can be an user-defined text or an external template file that will be
* instantiated and rendered in place.
- *
- * This is an easy way to have your look and feel depend upon the theme instead of writing
+ *
+ * This is an easy way to have your look and feel depend upon the theme instead of writing
* specific html in your templates to achieve your website desires.
* Here is an example of how to code your theme skin:
* <code>
@@ -51,40 +50,39 @@
*
*
* @author Brad Anderson <javalizard@gmail.com>
- * @version $Id: TWebControlDecorator.php 2541 2008-10-21 15:05:13Z qiang.xue $
* @package System.Web.UI.WebControls
* @since 3.2
*/
class TWebControlDecorator extends TComponent {
-
+
/**
* @var boolean tells if there should only be decoration around the inner content
*/
private $_internalonly;
-
+
/**
* @var boolean tells if the decoration uses state in its templates. If there are no templates
- * in the instance of the decoration this variable is unused.
+ * in the instance of the decoration this variable is unused.
*/
private $_usestate = false;
-
+
/**
* @var TWebControl the control to decorate
*/
private $_control;
-
+
/**
* @var TControl to tell the decorator where to place the outer controls
*/
private $_outercontrol;
-
+
/**
- * @var boolean This tells if the Templates have been
+ * @var boolean This tells if the Templates have been
*/
private $_addedTemplateDecoration=false;
-
-
+
+
/**
* @var string the text that goes before the open tag
*/
@@ -101,9 +99,9 @@ class TWebControlDecorator extends TComponent {
* @var string the text that goes after the close tag
*/
private $_posttagtext = '';
-
-
-
+
+
+
/**
* @var TTemplate the template that goes before the open tag
*/
@@ -120,7 +118,7 @@ class TWebControlDecorator extends TComponent {
* @var TTemplate the template that goes after the close tag
*/
private $_posttagtemplate;
-
+
/**
* Constructor.
* Initializes the control .
@@ -131,7 +129,7 @@ class TWebControlDecorator extends TComponent {
$this->_control = $control;
$this->_internalonly = $onlyinternal;
}
-
+
/**
* @return boolean if the templates in this decoration need state. This defaults to false
*/
@@ -139,23 +137,23 @@ class TWebControlDecorator extends TComponent {
{
return $this->_usestate;
}
-
+
/**
- * @param boolean $value true to tell the decoration that the templates need state and should be
+ * @param boolean $value true to tell the decoration that the templates need state and should be
* placed in a control step before the state is saved.
*/
public function setUseState($value)
{
$this->_usestate = TPropertyValue::ensureBoolean($value);
}
-
+
/**
* @return string gets the text before the open tag in the TWebControl
*/
public function getPreTagText() {
return $this->_pretagtext;
}
-
+
/**
* @param string sets the text before the open tag in the TWebControl
*/
@@ -163,15 +161,15 @@ class TWebControlDecorator extends TComponent {
if(!$this->_internalonly && !$this->_control->getIsSkinApplied())
$this->_pretagtext = TPropertyValue::ensureString($value);
}
-
-
+
+
/**
* @return string the text after the open tag in the TWebControl
*/
public function getPreContentsText() {
return $this->_precontentstext;
}
-
+
/**
* @param string sets the text after the open tag in the TWebControl
*/
@@ -179,15 +177,15 @@ class TWebControlDecorator extends TComponent {
if(!$this->_control->getIsSkinApplied())
$this->_precontentstext = TPropertyValue::ensureString($value);
}
-
-
+
+
/**
* @return string the text before the close tag in the TWebControl
*/
public function getPostContentsText() {
return $this->_postcontentstext;
}
-
+
/**
* @param string sets the text before the close tag in the TWebControl
*/
@@ -195,15 +193,15 @@ class TWebControlDecorator extends TComponent {
if(!$this->_control->getIsSkinApplied())
$this->_postcontentstext = TPropertyValue::ensureString($value);
}
-
-
+
+
/**
* @return string the text before the close tag in the TWebControl
*/
public function getPostTagText() {
return $this->_posttagtext;
}
-
+
/**
* @param string sets the text after the close tag in the TWebControl
*/
@@ -211,15 +209,15 @@ class TWebControlDecorator extends TComponent {
if(!$this->_internalonly && !$this->_control->getIsSkinApplied())
$this->_posttagtext = TPropertyValue::ensureString($value);
}
-
-
+
+
/**
* @return TTemplate|null the template before the open tag in the TWebControl. Defaults to null.
*/
public function getPreTagTemplate() {
return $this->_pretagtemplate;
}
-
+
/**
* @param TTemplate sets the template before the open tag in the TWebControl
*/
@@ -227,15 +225,15 @@ class TWebControlDecorator extends TComponent {
if(!$this->_internalonly && !$this->_control->getIsSkinApplied())
$this->_pretagtemplate = $value;
}
-
-
+
+
/**
* @return TTemplate|null the template after the open tag in the TWebControl. Defaults to null.
*/
public function getPreContentsTemplate() {
return $this->_precontentstemplate;
}
-
+
/**
* @param TTemplate sets the template after the open tag in the TWebControl
*/
@@ -243,15 +241,15 @@ class TWebControlDecorator extends TComponent {
if(!$this->_control->getIsSkinApplied())
$this->_precontentstemplate = $value;
}
-
-
+
+
/**
* @return TTemplate|null the template before the close tag in the TWebControl. Defaults to null.
*/
public function getPostContentsTemplate() {
return $this->_postcontentstemplate;
}
-
+
/**
* @param TTemplate sets the template before the close tag in the TWebControl
*/
@@ -259,15 +257,15 @@ class TWebControlDecorator extends TComponent {
if(!$this->_control->getIsSkinApplied())
$this->_postcontentstemplate = $value;
}
-
-
+
+
/**
* @return TTemplate|null the template after the close tag in the TWebControl. Defaults to null.
*/
public function getPostTagTemplate() {
return $this->_posttagtemplate;
}
-
+
/**
* @param TTemplate sets the template before the close tag in the TWebControl
*/
@@ -275,17 +273,17 @@ class TWebControlDecorator extends TComponent {
if(!$this->_internalonly && !$this->_control->getIsSkinApplied())
$this->_posttagtemplate = $value;
}
-
+
/**
- * this is a framework call. The Text decoration can't
+ * this is a framework call. The Text decoration can't
* influence the object hierarchy because they are rendered into into the writer directly.
- * This call attaches the ensureTemplateDecoration to the TPage onSaveStateComplete so
+ * This call attaches the ensureTemplateDecoration to the TPage onSaveStateComplete so
* these controls don't have page states. This is as close to not influencing the page as possible.
*/
public function instantiate($outercontrol = null) {
- if($this->getPreTagTemplate() || $this->getPreContentsTemplate() ||
+ if($this->getPreTagTemplate() || $this->getPreContentsTemplate() ||
$this->getPostContentsTemplate() || $this->getPostTagTemplate()) {
-
+
$this->_outercontrol = $outercontrol;
if($this->getUseState())
$this->ensureTemplateDecoration();
@@ -293,53 +291,53 @@ class TWebControlDecorator extends TComponent {
$this->_control->getPage()->onSaveStateComplete[] = array($this, 'ensureTemplateDecoration');
}
}
-
-
+
+
/**
* This method places the templates around the open and close tag. This takes a parameter which is
* to specify the control to get the outer template decoration. If no outer control is specified
- * @param TComponent this indicates the component or control to get the outer tag elements, just in case it's
+ * @param TComponent this indicates the component or control to get the outer tag elements, just in case it's
* different than attached TWebControl. If none is provided, the outer templates default to the attached
* control
* @return boolean returns true if the template decorations have been added
*/
public function ensureTemplateDecoration($sender=null, $param=null) {
-
+
$control = $this->_control;
$outercontrol = $this->_outercontrol;
if($outercontrol === null)
$outercontrol = $control;
-
+
if($this->_addedTemplateDecoration)
return $this->_addedTemplateDecoration;
-
+
$this->_addedTemplateDecoration = true;
-
+
if($this->getPreContentsTemplate())
{
$precontents = Prado::createComponent('TCompositeControl');
$this->getPreContentsTemplate()->instantiateIn($precontents);
$control->getControls()->insertAt(0, $precontents);
}
-
+
if($this->getPostContentsTemplate())
{
$postcontents = Prado::createComponent('TCompositeControl');
$this->getPostContentsTemplate()->instantiateIn($postcontents);
$control->getControls()->add($postcontents);
}
-
+
if(!$outercontrol->getParent())
return $this->_addedTemplateDecoration;
-
-
+
+
if($this->getPreTagTemplate())
{
$pretag = Prado::createComponent('TCompositeControl');
$this->getPreTagTemplate()->instantiateIn($pretag);
$outercontrol->getParent()->getControls()->insertBefore($outercontrol, $pretag);
}
-
+
if($this->getPostTagTemplate())
{
$posttag = Prado::createComponent('TCompositeControl');
@@ -348,8 +346,8 @@ class TWebControlDecorator extends TComponent {
}
return true;
}
-
-
+
+
/**
* This method places the pre tag text into the {@link TTextWriter}
* @param {@link TTextWriter} the writer to which the text is written
@@ -357,7 +355,7 @@ class TWebControlDecorator extends TComponent {
public function renderPreTagText($writer) {
$writer->write($this->getPreTagText());
}
-
+
/**
* This method places the pre contents text into the {@link TTextWriter}
* @param {@link TTextWriter} the writer to which the text is written
@@ -365,7 +363,7 @@ class TWebControlDecorator extends TComponent {
public function renderPreContentsText($writer) {
$writer->write($this->getPreContentsText());
}
-
+
/**
* This method places the post contents text into the {@link TTextWriter}
* @param {@link TTextWriter} the writer to which the text is written
@@ -373,7 +371,7 @@ class TWebControlDecorator extends TComponent {
public function renderPostContentsText($writer) {
$writer->write($this->getPostContentsText());
}
-
+
/**
* This method places the post tag text into the {@link TTextWriter}
* @param {@link TTextWriter} the writer to which the text is written
diff --git a/framework/Web/UI/WebControls/TWizard.php b/framework/Web/UI/WebControls/TWizard.php
index 67cbc4e4..6b82a691 100644
--- a/framework/Web/UI/WebControls/TWizard.php
+++ b/framework/Web/UI/WebControls/TWizard.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TWizard.php 3274 2013-02-15 08:32:25Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -77,7 +76,6 @@ Prado::using('System.Web.UI.WebControls.TWizardNavigationButtonStyle');
* - side bar: {@link getSideBarStyle SideBarStyle} and {@link getSideBarButtonStyle SideBarButtonStyle}.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TWizard.php 3274 2013-02-15 08:32:25Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -1449,7 +1447,6 @@ class TWizard extends TWebControl implements INamingContainer
* set {@link setAllowReturn AllowReturn} to true.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TWizard.php 3274 2013-02-15 08:32:25Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -1539,7 +1536,6 @@ class TWizardStep extends TView
* TCompleteWizardStep represents a wizard step of type TWizardStepType::Complete.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TWizard.php 3274 2013-02-15 08:32:25Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -1574,7 +1570,6 @@ class TCompleteWizardStep extends TWizardStep
* if the navigation template is not specified, default navigation will be used.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TWizard.php 3274 2013-02-15 08:32:25Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -1676,7 +1671,6 @@ class TTemplatedWizardStep extends TWizardStep implements INamingContainer
* by a {@link TWizard}.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TWizard.php 3274 2013-02-15 08:32:25Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -1740,7 +1734,6 @@ class TWizardStepCollection extends TList
* {@link getCancelButton CancelButton}, {@link getCompleteButton CompleteButton}.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TWizard.php 3274 2013-02-15 08:32:25Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -1832,7 +1825,6 @@ class TWizardNavigationContainer extends TControl implements INamingContainer
* to true.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TWizard.php 3274 2013-02-15 08:32:25Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -1897,7 +1889,6 @@ class TWizardNavigationEventParameter extends TEventParameter
* TWizardSideBarTemplate class.
* TWizardSideBarTemplate is the default template for wizard sidebar.
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TWizard.php 3274 2013-02-15 08:32:25Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -1922,7 +1913,6 @@ class TWizardSideBarTemplate extends TComponent implements ITemplate
* TWizardSideBarListItemTemplate class.
* TWizardSideBarListItemTemplate is the default template for each item in the sidebar datalist.
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TWizard.php 3274 2013-02-15 08:32:25Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -1945,7 +1935,6 @@ class TWizardSideBarListItemTemplate extends TComponent implements ITemplate
* TWizardNavigationTemplate class.
* TWizardNavigationTemplate is the base class for various navigation templates.
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TWizard.php 3274 2013-02-15 08:32:25Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -2017,7 +2006,6 @@ class TWizardNavigationTemplate extends TComponent implements ITemplate
* TWizardStartNavigationTemplate is the template used as default wizard start navigation panel.
* It consists of two buttons, Next and Cancel.
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TWizard.php 3274 2013-02-15 08:32:25Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -2047,7 +2035,6 @@ class TWizardStartNavigationTemplate extends TWizardNavigationTemplate
* TWizardFinishNavigationTemplate is the template used as default wizard finish navigation panel.
* It consists of three buttons, Previous, Complete and Cancel.
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TWizard.php 3274 2013-02-15 08:32:25Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -2081,7 +2068,6 @@ class TWizardFinishNavigationTemplate extends TWizardNavigationTemplate
* TWizardStepNavigationTemplate is the template used as default wizard step navigation panel.
* It consists of three buttons, Previous, Next and Cancel.
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TWizard.php 3274 2013-02-15 08:32:25Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -2122,7 +2108,6 @@ class TWizardStepNavigationTemplate extends TWizardNavigationTemplate
* - Link: a hyperlink button
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TWizard.php 3274 2013-02-15 08:32:25Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
@@ -2146,7 +2131,6 @@ class TWizardNavigationButtonType extends TEnumerable
* - Finish: the last step before the Complete step.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TWizard.php 3274 2013-02-15 08:32:25Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
diff --git a/framework/Web/UI/WebControls/TWizardNavigationButtonStyle.php b/framework/Web/UI/WebControls/TWizardNavigationButtonStyle.php
index f0873df8..c84f28a1 100644
--- a/framework/Web/UI/WebControls/TWizardNavigationButtonStyle.php
+++ b/framework/Web/UI/WebControls/TWizardNavigationButtonStyle.php
@@ -4,7 +4,7 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
* @version $Id $
* @package System.Web.UI.WebControls
@@ -25,7 +25,6 @@ Prado::using('System.Web.UI.WebControls.TStyle');
* Otherwise, {@link setButtonText ButtonText} will be displayed as the button caption.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TWizardNavigationButtonStyle.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
diff --git a/framework/Web/UI/WebControls/TXmlTransform.php b/framework/Web/UI/WebControls/TXmlTransform.php
index 7b4d5cf7..c32ab440 100644
--- a/framework/Web/UI/WebControls/TXmlTransform.php
+++ b/framework/Web/UI/WebControls/TXmlTransform.php
@@ -5,7 +5,7 @@
* @author Knut Urdalen <knut.urdalen@gmail.com>
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
* @package System.Web.UI.WebControls
*/
diff --git a/framework/Web/UI/WebControls/assets/captcha.php b/framework/Web/UI/WebControls/assets/captcha.php
index ac71d696..1c35e6eb 100644
--- a/framework/Web/UI/WebControls/assets/captcha.php
+++ b/framework/Web/UI/WebControls/assets/captcha.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: captcha.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Web.UI.WebControls.assets
*/
@@ -116,7 +115,7 @@ function displayToken($token,$fontSize,$theme)
imagettftext($image,$size,$angle,$x+2,$y+2,$color,$font,$token[$i]);
imagecolordeallocate($image,$color);
}
-
+
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
diff --git a/framework/Wsat/TWsatARGenerator.php b/framework/Wsat/TWsatARGenerator.php
new file mode 100644
index 00000000..7ae5e46e
--- /dev/null
+++ b/framework/Wsat/TWsatARGenerator.php
@@ -0,0 +1,283 @@
+<?php
+
+/**
+ * @author Daniel Sampedro Bello <darthdaniel85@gmail.com>
+ * @link http://www.pradosoft.com/
+ * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @license http://www.pradosoft.com/license/
+ * @version $Id$
+ * @since 3.3
+ * @package Wsat
+ */
+
+Prado::using('System.Data.Common.TDbMetaData');
+
+class TWsatARGenerator
+{
+
+ /**
+ * @return TDbMetaData for retrieving metadata information, such as
+ * table and columns information, from a database connection.
+ */
+ private $_dbMetaData;
+
+ /**
+ * Output folder where AR classes will be saved.
+ */
+ private $_opFile;
+
+ /**
+ * Class name prefix
+ */
+ private $_clasPrefix;
+
+ /**
+ * Class name sufix
+ */
+ private $_classSufix;
+
+ /**
+ * all table relations array
+ */
+ private $_relations;
+
+ /**
+ * unquote chars
+ * @var array
+ */
+ private $uqChars = array('[', ']', '"', '`', "'");
+
+ function __construct()
+ {
+ if(!class_exists("TActiveRecordManager", false))
+ throw new Exception("You need to enable the ActiveRecord module in your application configuration file.");
+ $ar_manager = TActiveRecordManager::getInstance();
+ $_conn = $ar_manager->getDbConnection();
+ $_conn->Active = true;
+ $this->_dbMetaData = TDbMetaData::getInstance($_conn);
+ }
+
+ public function setOpFile($op_file_namespace)
+ {
+ $op_file = Prado::getPathOfNamespace($op_file_namespace);
+ if (empty($op_file))
+ throw new Exception("You need to fix your output folder namespace.");
+ if (!is_dir($op_file))
+ mkdir($op_file, 0777, true);
+ $this->_opFile = $op_file;
+ }
+
+ public function setClasPrefix($_clas_prefix)
+ {
+ $this->_clasPrefix = $_clas_prefix;
+ }
+
+ public function setClassSufix($_clas_sufix)
+ {
+ $this->_classSufix = $_clas_sufix;
+ }
+
+//-----------------------------------------------------------------------------
+ // <editor-fold defaultstate="collapsed" desc="Main APIs">
+ public function generate($tableName)
+ {
+ $tableInfo = $this->_dbMetaData->getTableInfo($tableName);
+ $this->_commonGenerate($tableName, $tableInfo);
+ }
+
+ public function generateAll()
+ {
+ foreach ($this->_dbMetaData->findTableNames() as $tableName)
+ {
+ if ($tableName == "pradocache")
+ continue;
+ $tableInfo = $this->_dbMetaData->getTableInfo($tableName);
+ if (!empty($this->_relations))
+ {
+ // Cancel generation of M-M relationships middle table
+ if (count($tableInfo->getPrimaryKeys()) === 2 && count($tableInfo->getColumns()) === 2)//M-M relationships
+ continue;
+ }
+ $this->_commonGenerate($tableName, $tableInfo);
+ }
+ }
+
+ public function buildRelations()
+ {
+ $this->_relations = array();
+ foreach ($this->_dbMetaData->findTableNames() as $table_name)
+ {
+ $tableInfo = $this->_dbMetaData->getTableInfo($table_name);
+ $pks = $tableInfo->getPrimaryKeys();
+ $fks = $tableInfo->getForeignKeys();
+
+ if (count($pks) === 2 && count($tableInfo->getColumns()) === 2)//M-M relationships
+ {
+ $table_name_mm = $fks[0]["table"];
+ $table_name_mm2 = $fks[1]["table"];
+
+ $this->_relations[$table_name_mm][] = array(
+ "prop_name" => strtolower($table_name_mm2),
+ "rel_type" => "self::MANY_TO_MANY",
+ "ref_class_name" => $this->_getProperClassName($table_name_mm2),
+ "prop_ref" => $table_name
+ );
+
+ $this->_relations[$table_name_mm2][] = array(
+ "prop_name" => strtolower($table_name_mm),
+ "rel_type" => "self::MANY_TO_MANY",
+ "ref_class_name" => $this->_getProperClassName($table_name_mm),
+ "prop_ref" => $table_name
+ );
+ continue;
+ }
+ foreach ($fks as $fk_data)//1-M relationships
+ {
+ $owner_table = $fk_data["table"];
+ $slave_table = $table_name;
+ $fk_prop = key($fk_data["keys"]);
+
+ $this->_relations[$owner_table][] = array(
+ "prop_name" => strtolower($slave_table),
+ "rel_type" => "self::HAS_MANY",
+ "ref_class_name" => $this->_getProperClassName($slave_table),
+ "prop_ref" => $fk_prop
+ );
+
+ $this->_relations[$slave_table][] = array(
+ "prop_name" => strtolower($owner_table),
+ "rel_type" => "self::BELONGS_TO",
+ "ref_class_name" => $this->_getProperClassName($owner_table),
+ "prop_ref" => $fk_prop
+ );
+ }
+ }
+ }
+
+// </editor-fold>
+//-----------------------------------------------------------------------------
+ // <editor-fold defaultstate="collapsed" desc="Common Methods">
+
+ private function _commonGenerate($tableName, $tableInfo)
+ {
+ if (count($tableInfo->getColumns()) === 0)
+ throw new Exception("Unable to find table or view $tableName in " . $this->_dbMetaData->getDbConnection()->getConnectionString() . ".");
+ else
+ {
+ $properties = array();
+ foreach ($tableInfo->getColumns() as $field => $column)
+ $properties[] = $this->generateProperty($field, $column);
+ $toString = $this->_buildSmartToString($tableInfo);
+ }
+
+ $clasName = $this->_getProperClassName($tableName);
+ $class = $this->generateClass($properties, $tableName, $clasName, $toString);
+ $output = $this->_opFile . DIRECTORY_SEPARATOR . $clasName . ".php";
+ file_put_contents($output, $class);
+ }
+
+ private function _getProperClassName($tableName)
+ {
+ $table_name_words = str_replace("_", " ", strtolower($tableName));
+ $final_conversion = str_replace(" ", "", ucwords($table_name_words));
+ return $this->_clasPrefix . $final_conversion . $this->_classSufix;
+ }
+
+ public function renderAllTablesInformation()
+ {
+ foreach ($this->_dbMetaData->findTableNames() as $table_name)
+ {
+ echo $table_name . "<br>";
+
+ $tableInfo = $this->_dbMetaData->getTableInfo($table_name);
+ echo "Table info:" . "<br>";
+ echo "<pre>";
+ var_dump($tableInfo);
+ echo "</pre>";
+ }
+ }
+
+//-----------------------------------------------------------------------------
+
+ protected function generateProperty($field, $column)
+ {
+ $prop = '';
+ $name = '$' . $field;
+
+ /* TODO use in version 2.0 */
+ // $type = $column->getPHPType();
+
+ $prop .= "\tpublic $name;";
+ return $prop;
+ }
+
+ private function _renderRelations($tablename)
+ {
+ if (!isset($this->_relations[$tablename]))
+ return "";
+
+ $code = "\tpublic static \$RELATIONS = array (";
+ foreach ($this->_relations[$tablename] as $rel_data)
+ $code .= "\n\t\t'" . $rel_data["prop_name"] . "' => array(" . $rel_data["rel_type"] . ", '" . $rel_data["ref_class_name"] . "', '" . $rel_data["prop_ref"] . "'),";
+
+ $code = substr($code, 0, -1);
+ $code .= "\n\t);";
+ return $code;
+ }
+
+ private function _buildSmartToString($tableInfo)
+ {
+ $code = "\tpublic function __toString() {";
+ $property = "throw new THttpException(500, 'Not implemented yet.');";
+ try
+ {
+ foreach ($tableInfo->getColumns() as $column)
+ {
+ if (isset($column->IsPrimaryKey) && $column->IsPrimaryKey)
+ $property = str_replace($this->uqChars, "", $column->ColumnName);
+ elseif ($column->PdoType == PDO::PARAM_STR && $column->DBType != "date")
+ {
+ $property = str_replace($this->uqChars, "", $column->ColumnName);
+ break;
+ }
+ }
+ } catch (Exception $ex)
+ {
+ Prado::trace($ex->getMessage());
+ }
+ $code .= "\n\t\treturn \$this->$property;";
+ $code .= "\n\t}";
+ return $code;
+ }
+
+ protected function generateClass($properties, $tablename, $classname, $toString)
+ {
+ $props = implode("\n", $properties);
+ $relations = $this->_renderRelations($tablename);
+ $date = date('Y-m-d h:i:s');
+ $env_user = getenv("username");
+ return <<<EOD
+<?php
+/**
+ * Auto generated by PRADO - WSAT on $date.
+ * @author $env_user
+ */
+class $classname extends TActiveRecord
+{
+ const TABLE='$tablename';
+
+$props
+
+ public static function finder(\$className=__CLASS__) {
+ return parent::finder(\$className);
+ }
+
+$relations
+
+$toString
+}
+EOD;
+ }
+
+// </editor-fold>
+} \ No newline at end of file
diff --git a/framework/Wsat/TWsatService.php b/framework/Wsat/TWsatService.php
new file mode 100644
index 00000000..63bfebc7
--- /dev/null
+++ b/framework/Wsat/TWsatService.php
@@ -0,0 +1,81 @@
+<?php
+
+/**
+ * @author Daniel Sampedro Bello <darthdaniel85@gmail.com>
+ * @link http://www.pradosoft.com/
+ * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @license http://www.pradosoft.com/license/
+ * @version $Id$
+ * @since 3.3
+ * @package Wsat
+ */
+
+/**
+ * TWsatService class
+ *
+ * Wsat is inspired in both Asp.Net - Web Site Administration Tool(WSAT) and Yii's Gii.
+ * Wsat enables you to generate code saving your time in too many tedious tasks in a GUI fashion.
+ *
+ * Current options:
+ * 1- Generate one or all Active Record Classes from your DataBase.
+ * 1.1- Automatically generate all relations between the AR Classes (new).
+ * 1.2- Automatically generate the __toString() magic method in a smart way (new).
+ *
+ * To use TWsatService, configure it in the application configuration file like following:
+ * <code>
+ * <services>
+ * ...
+ * <service id="wsat" class="System.Wsat.TWsatService" Password="my_secret_password" />
+ * </services>
+ * </code>
+ * ...and then you need to go to http://localhost/yoursite/index.php?wsat=TWsatLogin
+ * and generate code and configure your site.
+ *
+ * Warning: You should only use Wsat in development mode.
+ */
+class TWsatService extends TPageService
+{
+
+ private $_pass = '';
+
+ public function init($config)
+ {
+ if ($this->getApplication()->getMode() === TApplicationMode::Performance || $this->getApplication()->getMode() === TApplicationMode::Normal)
+ throw new TInvalidOperationException("You should not use Prado WSAT in any of the production modes.");
+
+ if (empty($this->_pass))
+ throw new TConfigurationException("You need to specify the Password attribute.");
+
+ $this->setDefaultPage("TWsatHome");
+ $this->_startThemeManager();
+ parent::init($config);
+ }
+
+ public function getBasePath()
+ {
+ $basePath = Prado::getPathOfNamespace("System.Wsat.pages");
+ return realpath($basePath);
+ }
+
+ private function _startThemeManager()
+ {
+ $themeManager = new TThemeManager;
+ $themeManager->BasePath = "System.Wsat.themes";
+ $url = Prado::getApplication()->getAssetManager()->publishFilePath(Prado::getPathOfNamespace('System.Wsat'));
+ $themeManager->BaseUrl = "$url/themes";
+
+ $themeManager->init(null);
+ $this->setThemeManager($themeManager);
+ }
+
+ public function getPassword()
+ {
+ return $this->_pass;
+ }
+
+ public function setPassword($_pass)
+ {
+ $this->_pass = $_pass;
+ }
+
+} \ No newline at end of file
diff --git a/framework/Wsat/pages/TWsatGenerateAR.page b/framework/Wsat/pages/TWsatGenerateAR.page
new file mode 100644
index 00000000..926d6b0f
--- /dev/null
+++ b/framework/Wsat/pages/TWsatGenerateAR.page
@@ -0,0 +1,56 @@
+<com:TContent ID="Content">
+ <div style="margin: 10px; font-size: 16px; font-weight: bold">Active Record Classes Generator</div>
+ <div class="green_panel" style="text-align: left; font-size: 14px; margin: 15px 5px">
+ <label>This generator generates an AR class for the specified database table.</label><br/>
+ <label>Fields with <b style="color: red">*</b> are required.</label>
+ <hr/>
+ <div style="font-size: 12px; font-style: italic">
+ <ul>
+ <li>If you want to generate all AR Classes, keep the "Table Name" field as appears by default.</li>
+ <li>"Output Folder" field refers to the directory that the new AR class file should be generated under... where Application refers to the protected folder of your project. You can let this default field value and PRADO will create the proper folders for you.</li>
+ </ul>
+ </div>
+ </div>
+
+ <div style="font-size: 14px">
+ <div class="form_row">
+ <com:TLabel Text="Table Name:" ForControl="table_name" style="margin-right: 24px" />
+ <com:TTextBox ID="table_name" Text="*" CssClass="in_text" />
+ <label style="color: red">*</label>
+ <com:TRequiredFieldValidator ControlToValidate="table_name" Text="Table name cannot be blank." Display="Dynamic" />
+ </div>
+
+ <div class="form_row">
+ <com:TLabel Text="Output Folder:" ForControl="output_folder" style="margin-right: 8px"/>
+ <com:TTextBox ID="output_folder" Text="Application.App_Data.AR_Classes" CssClass="in_text" />
+ <label style="color: red">*</label>
+ <com:TRequiredFieldValidator ControlToValidate="output_folder" Text="Output folder cannot be blank." Display="Dynamic" />
+ </div>
+
+ <div class="form_row">
+ <com:TLabel Text="Class Prefix:" ForControl="class_prefix" style="margin-right: 25px"/>
+ <com:TTextBox ID="class_prefix" Text="AR_" CssClass="in_text" />
+ </div>
+
+ <div class="form_row">
+ <com:TLabel Text="Class Suffix:" ForControl="class_suffix" style="margin-right: 27px"/>
+ <com:TTextBox ID="class_suffix" CssClass="in_text" />
+ </div>
+
+ <div class="form_row">
+ <com:TLabel Text="Build Relations:" ForControl="build_rel"/>
+ <com:TCheckBox ID="build_rel" Checked="true" />
+ </div>
+
+ <com:TPanel ID="feedback_panel" Visible="false" style="width: 400px">
+ <com:TLabel ID="generation_msg" />
+ </com:TPanel>
+
+ <br/>
+ <div style="text-align: center; width: 400px">
+ <com:TButton Text="Preview" OnClick="preview" Visible="false" />
+ <com:TButton Text="Generate" OnClick="generate" />
+ </div>
+ </div>
+
+</com:TContent>
diff --git a/framework/Wsat/pages/TWsatGenerateAR.php b/framework/Wsat/pages/TWsatGenerateAR.php
new file mode 100644
index 00000000..f0ce8430
--- /dev/null
+++ b/framework/Wsat/pages/TWsatGenerateAR.php
@@ -0,0 +1,57 @@
+<?php
+
+/**
+ * @author Daniel Sampedro Bello <darthdaniel85@gmail.com>
+ * @link http://www.pradosoft.com/
+ * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @license http://www.pradosoft.com/license/
+ * @version $Id$
+ * @since 3.3
+ * @package Wsat.pages
+ */
+Prado::using("System.Wsat.TWsatARGenerator");
+
+class TWsatGenerateAR extends TPage
+{
+
+ public function generate($sender)
+ {
+ if ($this->IsValid)
+ {
+ $tableName = $this->table_name->Text;
+ $outputFolderNs = $this->output_folder->Text;
+ $classPrefix = $this->class_prefix->Text;
+ $classSuffix = $this->class_suffix->Text;
+
+ try
+ {
+ $ar_generator = new TWsatARGenerator();
+ $ar_generator->setOpFile($outputFolderNs);
+ $ar_generator->setClasPrefix($classPrefix);
+ $ar_generator->setClassSufix($classSuffix);
+
+ if ($this->build_rel->Checked)
+ $ar_generator->buildRelations();
+
+ if ($tableName != "*")
+ $ar_generator->generate($tableName);
+ else
+ $ar_generator->generateAll();
+
+ $this->feedback_panel->CssClass = "green_panel";
+ $this->generation_msg->Text = "The code has been generated successfully.";
+ } catch (Exception $ex)
+ {
+ $this->feedback_panel->CssClass = "red_panel";
+ $this->generation_msg->Text = $ex->getMessage();
+ }
+ $this->feedback_panel->Visible = true;
+ }
+ }
+
+ public function preview($sender)
+ {
+// throw new THttpException(500, "Not implemented yet.");
+ }
+
+} \ No newline at end of file
diff --git a/framework/Wsat/pages/TWsatHome.page b/framework/Wsat/pages/TWsatHome.page
new file mode 100644
index 00000000..e8796ccd
--- /dev/null
+++ b/framework/Wsat/pages/TWsatHome.page
@@ -0,0 +1,17 @@
+<com:TContent ID="Content">
+ <label style="font-size: 18px; font-weight: bold">Welcome to the Web Site Administration Tool</label>
+
+ <div style="margin-top: 25px"><b>Application Dir:</b> <%= Prado::getPathOfNamespace('Application') %></div>
+
+ <br/>
+ <table>
+ <tr style="background-color: #cccccc">
+ <td style="padding: 5px; width: 100px">
+ <com:THyperLink NavigateUrl="<%= $this->Service->constructUrl('TWsatGenerateAR') %>" Text="AR Classes" />
+ </td>
+ <td style="padding: 5px">
+ Enables you to generate all Active Record Classes with relations included.
+ </td>
+ </tr>
+ </table>
+</com:TContent>
diff --git a/framework/Wsat/pages/TWsatHome.php b/framework/Wsat/pages/TWsatHome.php
new file mode 100644
index 00000000..b5ae1bb4
--- /dev/null
+++ b/framework/Wsat/pages/TWsatHome.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * @author Daniel Sampedro Bello <darthdaniel85@gmail.com>
+ * @link http://www.pradosoft.com/
+ * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @license http://www.pradosoft.com/license/
+ * @version $Id$
+ * @since 3.3
+ * @package Wsat.pages
+ */
+Prado::using("System.Wsat.TWsatARGenerator");
+
+class TWsatHome extends TPage
+{
+
+} \ No newline at end of file
diff --git a/framework/Wsat/pages/TWsatLogin.page b/framework/Wsat/pages/TWsatLogin.page
new file mode 100644
index 00000000..79578f59
--- /dev/null
+++ b/framework/Wsat/pages/TWsatLogin.page
@@ -0,0 +1,45 @@
+<%@ MasterClass="" %>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <com:THead Title="PRADO - WSAT">
+ <com:TMetaTag HttpEquiv="Content-Type" Content="text/html; charset=utf-8" />
+ <com:TMetaTag HttpEquiv="Content-Language" Content="en" />
+ </com:THead>
+
+ <body>
+ <com:TForm>
+
+ <div id="header">
+ <a href="<%= $this->Service->DefaultPageUrl %>">
+ <div class="logo"></div>
+ <div style="float: left; margin-top: 17px">PRADO <br /> Web Site Administration Tool</div>
+ </a>
+ <div class="mantisbg"></div>
+ <div style="clear: both"></div>
+ </div>
+
+ <div class="mainmenu">
+ <div style="float: right"><com:THyperLink NavigateUrl="http://www.pradosoft.com/" Text="PradoSoft.com" Target="_blank" />&nbsp;|&nbsp;</div>
+ <div style="float: right"><com:THyperLink NavigateUrl="<%= $this->Service->DefaultPageUrl %>" Text="Web App" Target="_blank" />&nbsp;|&nbsp;</div>
+ <div style="float: right"><com:THyperLink NavigateUrl="http://www.pradosoft.com/forum/" Text="Help" Target="_blank" />&nbsp;|&nbsp;</div>
+ <div style="clear: both"></div>
+ </div>
+
+ <div class="login_form">
+ <com:TLabel Text="Please enter your password:" ForControl="password"/><br/>
+ <com:TTextBox ID="password" TextMode="Password" style="margin: 5px" /><br/>
+ <com:TRequiredFieldValidator ControlToValidate="password" ValidationGroup="loginGroup" Text="Password cannot be blank." Display="Dynamic" /><br/>
+ <com:TCustomValidator ControlToValidate="password" ValidationGroup="loginGroup" OnServerValidate="validatePassword" Text="Incorrect password." Display="Dynamic" />
+
+ <div><com:TButton Text="Enter" ValidationGroup="loginGroup" OnClick="login" /></div>
+ </div>
+
+ <div id="footer">
+ Copyright &copy; 2005-<%= date('Y') %> <a href="http://www.pradosoft.com">PradoSoft</a>.
+ <br/><br/>
+ <%= Prado::poweredByPrado() %>
+ </div>
+ </com:TForm>
+ </body>
+</html>
diff --git a/framework/Wsat/pages/TWsatLogin.php b/framework/Wsat/pages/TWsatLogin.php
new file mode 100644
index 00000000..21994c07
--- /dev/null
+++ b/framework/Wsat/pages/TWsatLogin.php
@@ -0,0 +1,33 @@
+<?php
+
+/**
+ * @author Daniel Sampedro Bello <darthdaniel85@gmail.com>
+ * @link http://www.pradosoft.com/
+ * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @license http://www.pradosoft.com/license/
+ * @version $Id$
+ * @since 3.3
+ * @package Wsat.pages
+ */
+class TWsatLogin extends TPage
+{
+
+ public function login()
+ {
+ if ($this->IsValid)
+ {
+ $this->Session["wsat_password"] = $this->getService()->getPassword();
+
+ $url = $this->Service->constructUrl('TWsatHome');
+ $this->Response->redirect($url);
+ }
+ }
+
+ public function validatePassword($sender, $param)
+ {
+ $config_pass = $this->Service->Password;
+ $user_pass = $this->password->Text;
+ $param->IsValid = $user_pass === $config_pass;
+ }
+
+} \ No newline at end of file
diff --git a/framework/Wsat/pages/TWsatScaffolding.page b/framework/Wsat/pages/TWsatScaffolding.page
new file mode 100644
index 00000000..cce1d5c9
--- /dev/null
+++ b/framework/Wsat/pages/TWsatScaffolding.page
@@ -0,0 +1,3 @@
+<com:TContent ID="Content">
+ Scaffolding will be available in Prado 3.4
+</com:TContent>
diff --git a/framework/Wsat/pages/TWsatScaffolding.php b/framework/Wsat/pages/TWsatScaffolding.php
new file mode 100644
index 00000000..b8e28b03
--- /dev/null
+++ b/framework/Wsat/pages/TWsatScaffolding.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * @author Daniel Sampedro Bello <darthdaniel85@gmail.com>
+ * @link http://www.pradosoft.com/
+ * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @license http://www.pradosoft.com/license/
+ * @version $Id$
+ * @since 3.3
+ * @package Wsat.pages
+ */
+Prado::using("System.Wsat.TWsatARGenerator");
+
+class TWsatScaffolding extends TPage
+{
+
+} \ No newline at end of file
diff --git a/framework/Wsat/pages/config.xml b/framework/Wsat/pages/config.xml
new file mode 100644
index 00000000..727e8eab
--- /dev/null
+++ b/framework/Wsat/pages/config.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<configuration>
+ <modules>
+ <module id="session" class="THttpSession" CookieMode="Allow" UseCustomStorage="false"
+ AutoStart="true" GCProbability="1" UseTransparentSessionID="true" TimeOut="3600" />
+ </modules>
+ <pages Theme="PradoSoft" MasterClass="System.Wsat.pages.layout.TWsatLayout" />
+</configuration> \ No newline at end of file
diff --git a/framework/Wsat/pages/layout/TWsatLayout.php b/framework/Wsat/pages/layout/TWsatLayout.php
new file mode 100644
index 00000000..67caa77d
--- /dev/null
+++ b/framework/Wsat/pages/layout/TWsatLayout.php
@@ -0,0 +1,36 @@
+<?php
+
+/**
+ * Description of MainLayout
+ *
+ * @author daniels
+ */
+class TWsatLayout extends TTemplateControl
+{
+
+ public function onLoad($param)
+ {
+ parent::onLoad($param);
+ $this->validateSecurity();
+ }
+
+ private function validateSecurity()
+ {
+ if ($this->Session["wsat_password"] !== $this->getService()->getPassword())
+ {
+ if (!$this->getPage() instanceof TWsatLogin)
+ {
+ $url = $this->Service->constructUrl('TWsatLogin');
+ $this->Response->redirect($url);
+ }
+ }
+ }
+
+ public function logout()
+ {
+ $this->Session["wsat_password"] = "";
+ $url = $this->Service->constructUrl('TWsatLogin');
+ $this->Response->redirect($url);
+ }
+
+} \ No newline at end of file
diff --git a/framework/Wsat/pages/layout/TWsatLayout.tpl b/framework/Wsat/pages/layout/TWsatLayout.tpl
new file mode 100644
index 00000000..d91ff333
--- /dev/null
+++ b/framework/Wsat/pages/layout/TWsatLayout.tpl
@@ -0,0 +1,53 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <com:THead Title="PRADO - WSAT">
+ <com:TMetaTag HttpEquiv="Content-Type" Content="text/html; charset=utf-8" />
+ <com:TMetaTag HttpEquiv="Content-Language" Content="en" />
+ </com:THead>
+
+ <body>
+ <com:TForm>
+
+ <div id="header">
+ <a href="<%= $this->Service->DefaultPageUrl %>">
+ <div class="logo"></div>
+ <div style="float: left; margin-top: 17px">PRADO <br /> Web Site Administration Tool</div>
+ </a>
+ <div class="mantisbg"></div>
+ <div style="clear: both"></div>
+ </div>
+
+ <div class="mainmenu">
+ <div style="float: right"><com:TLinkButton Text="Logout" OnClick="logout" /></div>
+ <div style="float: right"><com:THyperLink NavigateUrl="http://www.pradosoft.com/" Text="PradoSoft.com" Target="_blank" />&nbsp;|&nbsp;</div>
+ <div style="float: right"><com:THyperLink NavigateUrl="<%= $this->Service->DefaultPageUrl %>" Text="Web App" Target="_blank" />&nbsp;|&nbsp;</div>
+ <div style="float: right"><com:THyperLink NavigateUrl="http://www.pradosoft.com/forum/" Text="Help" Target="_blank" />&nbsp;|&nbsp;</div>
+ <div style="clear: both"></div>
+ </div>
+
+ <div id="central_div">
+ <div id="toc">
+ <div class="topic">
+ <div>Code Generation</div>
+ <ul>
+ <li><com:THyperLink NavigateUrl="<%= $this->Service->constructUrl('TWsatGenerateAR') %>" Text="AR Classes" /></li>
+ <li><com:THyperLink NavigateUrl="<%= $this->Service->constructUrl('TWsatScaffolding') %>" Text="Scaffolding" /></li>
+ </ul>
+ </div>
+ </div>
+
+ <div id="content">
+ <com:TContentPlaceHolder ID="Content" />
+ </div>
+
+ <div style="clear: both"></div>
+ </div>
+
+ <div id="footer">
+ Copyright &copy; 2005-<%= date('Y') %> <a href="http://www.pradosoft.com">PradoSoft</a>.
+ <br/><br/>
+ <%= Prado::poweredByPrado() %>
+ </div>
+ </com:TForm>
+ </body>
+</html> \ No newline at end of file
diff --git a/framework/Wsat/themes/.htaccess b/framework/Wsat/themes/.htaccess
new file mode 100644
index 00000000..f7661d04
--- /dev/null
+++ b/framework/Wsat/themes/.htaccess
@@ -0,0 +1 @@
+allow from all
diff --git a/framework/Wsat/themes/PradoSoft/imgs/arrowdown.gif b/framework/Wsat/themes/PradoSoft/imgs/arrowdown.gif
new file mode 100644
index 00000000..1b508cd6
--- /dev/null
+++ b/framework/Wsat/themes/PradoSoft/imgs/arrowdown.gif
Binary files differ
diff --git a/framework/Wsat/themes/PradoSoft/imgs/mantisbg.jpg b/framework/Wsat/themes/PradoSoft/imgs/mantisbg.jpg
new file mode 100644
index 00000000..ee06998d
--- /dev/null
+++ b/framework/Wsat/themes/PradoSoft/imgs/mantisbg.jpg
Binary files differ
diff --git a/framework/Wsat/themes/PradoSoft/imgs/pradologo.gif b/framework/Wsat/themes/PradoSoft/imgs/pradologo.gif
new file mode 100644
index 00000000..3b073b80
--- /dev/null
+++ b/framework/Wsat/themes/PradoSoft/imgs/pradologo.gif
Binary files differ
diff --git a/framework/Wsat/themes/PradoSoft/main.css b/framework/Wsat/themes/PradoSoft/main.css
new file mode 100644
index 00000000..9970c88b
--- /dev/null
+++ b/framework/Wsat/themes/PradoSoft/main.css
@@ -0,0 +1,152 @@
+html, body{
+ margin: 0px;
+ padding: 0px;
+ font-family: 'Lucida Grande', Verdana, Geneva, Lucida, Helvetica, Arial, sans-serif;
+ font-weight: normal;
+}
+
+#header {
+ font-size:25px;
+ font-weight:bold;
+ color: #666;
+}
+
+.logo{
+ width: 204px;
+ height:100px;
+ background-image: url('imgs/pradologo.gif');
+ background-repeat: no-repeat;
+ float: left;
+}
+
+.mantisbg{
+ width: 221px;
+ height: 100px;
+ background-image: url('imgs/mantisbg.jpg');
+ background-repeat: no-repeat;
+ float: right;
+}
+
+.mainmenu {
+ padding:10px;
+ padding-right:10px;
+ background:#EDEDED;
+ border-bottom: 1px solid #A6A6A6;
+ border-top: 1px solid #DCDCDC;
+ color:white;
+ text-align:right;
+ font-size: 10pt;
+}
+
+.mainmenu a {
+ color:#737373;
+ text-decoration:none;
+}
+
+.mainmenu a:hover {
+ color: #FF0000;
+}
+
+#toc {
+ background-color: #F3F3F3;
+ width:220px;
+ padding:0px 10px 0px 10px;
+ float: left;
+}
+
+#content {
+ padding: 1em 1em 1em 1em;
+ line-height: 135%;
+ float: left;
+ width: 700px;
+}
+
+.topic {
+ font-size: 9pt;
+ padding: 0px 0px 0px 0px;
+}
+
+.topic div {
+ background-image: url('imgs/arrowdown.gif');
+ background-repeat: no-repeat;
+ background-position: left center;
+ margin: 0px;
+ font-size: 8pt;
+ font-weight:bold;
+ color:#2A480A;
+ padding: 5px;
+ padding-left: 15px;
+ border-top: 1px solid #fff;
+ border-bottom: 1px solid #E2E2E2;
+}
+
+.topic ul
+{
+ margin: 0px;
+ padding: 0px;
+}
+
+.topic ul li
+{
+ list-style: none;
+ margin: 0px;
+ padding: 5px;
+ padding-left: 15px;
+ border-bottom: 1px dotted #D8D8D8;
+}
+
+.topic a {
+ color:#4F811A;
+ font-size: 8pt;
+ text-decoration: none;
+}
+
+.topic a:hover {
+ color:#2A480A;
+}
+
+/* form styles */
+.form_row{
+ margin: 10px;
+}
+
+.in_text{
+ width: 250px;
+}
+
+.login_form{
+ text-align: center;
+ margin: 30px auto;
+ border: 1px solid red;
+ border-radius: 5px;
+ padding: 10px;
+ width: 250px;
+ font-size: 11px;
+}
+
+.green_panel{
+ background-color: #C5FBBD;
+ border: 1px solid #76C376;
+ padding: 10px;
+ margin: 10px 0;
+ border-radius: 5px;
+ text-align: center;
+}
+
+.red_panel{
+ background-color: #ff6666;
+ border: 1px solid red;
+ padding: 10px;
+ margin: 10px 0;
+ border-radius: 5px;
+ text-align: center;
+}
+
+#footer {
+ clear:both;
+ color: gray;
+ font-size:8pt;
+ text-align:center;
+ margin-top:25px;
+ padding:10px;
+} \ No newline at end of file
diff --git a/framework/Xml/TXmlDocument.php b/framework/Xml/TXmlDocument.php
index b0252ae8..69017660 100644
--- a/framework/Xml/TXmlDocument.php
+++ b/framework/Xml/TXmlDocument.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TXmlDocument.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Xml
*/
@@ -22,7 +21,6 @@
* TBD: xpath
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TXmlDocument.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Xml
* @since 3.0
*/
@@ -300,7 +298,6 @@ class TXmlElement extends TComponent
* </code>
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TXmlDocument.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Xml
* @since 3.0
*/
@@ -478,7 +475,7 @@ class TXmlDocument extends TXmlElement
* @param DOMXmlNode the node to be converted
* @return TXmlElement the converted TXmlElement
*/
- private function buildElement($node)
+ protected function buildElement($node)
{
$element=new TXmlElement($node->tagName);
$element->setValue($node->nodeValue);
@@ -502,7 +499,6 @@ class TXmlDocument extends TXmlElement
* You may manipulate the collection with the operations defined in {@link TList}.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TXmlDocument.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System.Xml
* @since 3.0
*/
diff --git a/framework/interfaces.php b/framework/interfaces.php
index d05123ba..1c2bbc19 100644
--- a/framework/interfaces.php
+++ b/framework/interfaces.php
@@ -4,9 +4,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: interfaces.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System
*/
@@ -16,7 +15,6 @@
* This interface must be implemented by application modules.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: interfaces.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System
* @since 3.0
*/
@@ -43,7 +41,6 @@ interface IModule
* This interface must be implemented by services.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: interfaces.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System
* @since 3.0
*/
@@ -82,7 +79,6 @@ interface IService
* This interface must be implemented by writers.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: interfaces.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System
* @since 3.0
*/
@@ -106,7 +102,6 @@ interface ITextWriter
* This interface must be implemented by user objects.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: interfaces.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System
* @since 3.0
*/
@@ -159,7 +154,6 @@ interface IUser
* {@link TPageStatePersister}, {@link TApplicationStatePersister}.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: interfaces.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System
* @since 3.0
*/
@@ -184,7 +178,6 @@ interface IStatePersister
* This interface must be implemented by cache managers.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: interfaces.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System
* @since 3.0
*/
@@ -240,7 +233,6 @@ interface ICache
* Classes implementing this interface must support serialization and unserialization.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: interfaces.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System
* @since 3.0
*/
@@ -259,7 +251,6 @@ interface ICacheDependency
* to end-users.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: interfaces.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System
* @since 3.0
*/
@@ -278,7 +269,6 @@ interface IRenderable
* This interface must be implemented by classes that are capable of performing databinding.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: interfaces.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System
* @since 3.0
*/
@@ -296,7 +286,6 @@ interface IBindable
* This interface should be implemented by classes that support CSS styles.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: interfaces.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System
* @since 3.1.0
*/
@@ -322,7 +311,6 @@ interface IStyleable
* Active controls must implement IActiveControl interface.
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
- * @version $Id: interfaces.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System
* @since 3.1
*/
@@ -341,7 +329,6 @@ interface IActiveControl
* interface.
*
* @author Wei Zhuo <weizhuo[at]gamil[dot]com>
- * @version $Id: interfaces.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System
* @since 3.1
*/
@@ -363,7 +350,6 @@ interface ICallbackEventHandler
* this interface must be implemented.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: interfaces.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System
* @since 3.1
*/
diff --git a/framework/prado.php b/framework/prado.php
index 0bb11789..1dd4bb47 100644
--- a/framework/prado.php
+++ b/framework/prado.php
@@ -12,9 +12,8 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @copyright Copyright &copy; 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: prado.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System
*/
@@ -32,7 +31,6 @@ if(!class_exists('Prado',false))
* Prado class.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: prado.php 3245 2013-01-07 20:23:32Z ctrlaltca $
* @package System
* @since 3.0
*/
diff --git a/framework/pradolite.php b/framework/pradolite.php
index d9627d13..a01c3f98 100644
--- a/framework/pradolite.php
+++ b/framework/pradolite.php
@@ -1,7 +1,7 @@
<?php
/**
* File Name: pradolite.php
- * Last Update: 2013/11/26 10:04:34
+ * Last Update: 2014/08/26 16:44:14
* Generated By: buildscripts/phpbuilder/build.php
*
* This file is used in lieu of prado.php to boost PRADO application performance.
@@ -25,7 +25,7 @@ class PradoBase
protected static $classExists = array();
public static function getVersion()
{
- return '3.2.3';
+ return '3.2.4';
}
public static function initErrorHandlers()
{
@@ -1248,7 +1248,7 @@ class TTextWriter extends TComponent implements ITextWriter
$this->write($str."\n");
}
}
-class TPriorityList extends TList
+class TPriorityList extends TList
{
private $_d=array();
private $_o=false;
@@ -1483,7 +1483,7 @@ class TPriorityList extends TList
foreach($this->_d as $priority=>$items) {
if(($index=array_search($item,$items,true))!==false) {
$absindex+=$index;
- return $withindex?array($priority,$index,$absindex,
+ return $withindex?array($priority,$index,$absindex,
'priority'=>$priority,'index'=>$index,'absindex'=>$absindex):$priority;
} else
$absindex+=count($items);
@@ -1500,7 +1500,7 @@ class TPriorityList extends TList
if($index>=($c=count($items)))
$index-=$c;
else
- return $withindex?array($priority,$index,$absindex,
+ return $withindex?array($priority,$index,$absindex,
'priority'=>$priority,'index'=>$index,'absindex'=>$absindex):$priority;
}
return false;
@@ -2393,7 +2393,7 @@ class TXmlDocument extends TXmlElement
{
return $this->saveToString();
}
- private function buildElement($node)
+ protected function buildElement($node)
{
$element=new TXmlElement($node->tagName);
$element->setValue($node->nodeValue);
@@ -2895,14 +2895,23 @@ class TJavaScript
}
public static function jsonEncode($value, $options = 0)
{
- if (is_string($value) &&
- ($g=Prado::getApplication()->getGlobalization(false))!==null &&
- strtoupper($enc=$g->getCharset())!='UTF-8')
- $value=iconv($enc, 'UTF-8', $value);
+ if (($g=Prado::getApplication()->getGlobalization(false))!==null &&
+ strtoupper($enc=$g->getCharset())!='UTF-8') {
+ self::convertToUtf8($value, $enc);
+ }
$s = @json_encode($value,$options);
self::checkJsonError();
return $s;
}
+ private static function convertToUtf8(&$value, $sourceEncoding) {
+ if(is_string($value))
+ $value=iconv($sourceEncoding, 'UTF-8', $value);
+ else if (is_array($value))
+ {
+ foreach($value as &$element)
+ self::convertToUtf8($element, $sourceEncoding);
+ }
+ }
public static function jsonDecode($value, $assoc = false, $depth = 512)
{
$s= @json_decode($value, $assoc, $depth);
@@ -3129,7 +3138,7 @@ class THttpRequest extends TApplicationComponent implements IteratorAggregate,Ar
if($this->getEnableCache())
{
$cache = $this->getApplication()->getCache();
- if($cache !== null)
+ if($cache !== null)
{
$dependencies = null;
if($this->getApplication()->getMode() !== TApplicationMode::Performance)
@@ -6385,7 +6394,7 @@ class TWebControlDecorator extends TComponent {
$this->_posttagtemplate = $value;
}
public function instantiate($outercontrol = null) {
- if($this->getPreTagTemplate() || $this->getPreContentsTemplate() ||
+ if($this->getPreTagTemplate() || $this->getPreContentsTemplate() ||
$this->getPostContentsTemplate() || $this->getPostTagTemplate()) {
$this->_outercontrol = $outercontrol;
if($this->getUseState())
@@ -6684,7 +6693,7 @@ class TWebControl extends TControl implements IStyleable
$decorator->renderPostContentsText($writer);
$writer->renderEndTag();
$decorator->renderPostTagText($writer);
- } else
+ } else
$writer->renderEndTag($writer);
}
}
@@ -7089,7 +7098,7 @@ class TClientScriptManager extends TApplicationComponent
if($target instanceof TControl)
$target=$target->getClientID();
$id = TJavaScript::quoteString($target);
- $this->_endScripts['prado:focus'] = 'new Effect.ScrollTo('.$id.'); Prado.Element.focus('.$id.');';
+ $this->_endScripts['prado:focus'] = 'Prado.Element.focus('.$id.');';
$params=func_get_args();
$this->_page->registerCachingAction('Page.ClientScript','registerFocusControl',$params);
}
@@ -7281,8 +7290,11 @@ class TClientScriptManager extends TApplicationComponent
}
public function flushScriptFiles($writer, $control=null)
{
- $this->_page->ensureRenderInForm($control);
- $this->renderAllPendingScriptFiles($writer);
+ if(!$this->_page->getIsCallback())
+ {
+ $this->_page->ensureRenderInForm($control);
+ $this->renderAllPendingScriptFiles($writer);
+ }
}
protected function renderHiddenFieldsInt($writer, $initial)
{
@@ -7306,7 +7318,7 @@ class TClientScriptManager extends TApplicationComponent
if($str!=='')
$writer->write("<div style=\"visibility:hidden;\">\n".$str."</div>\n");
}
- public function getHiddenFields()
+ public function getHiddenFields()
{
return $this->_hiddenFields;
}
@@ -7465,6 +7477,9 @@ class TPage extends TTemplateControl
{
Prado::using('System.Web.UI.ActiveControls.TActivePageAdapter');
$this->setAdapter(new TActivePageAdapter($this));
+ $callbackEventParameter = $this->getRequest()->itemAt(TPage::FIELD_CALLBACK_PARAMETER);
+ if(strlen($callbackEventParameter) > 0)
+ $this->_postData[TPage::FIELD_CALLBACK_PARAMETER]=TJavaScript::jsonDecode((string)$callbackEventParameter);
if (($g=$this->getApplication()->getGlobalization(false))!==null &&
strtoupper($enc=$g->getCharset())!='UTF-8')
foreach ($this->_postData as $k=>$v)
@@ -9672,7 +9687,7 @@ class TPageConfiguration extends TComponent
$this->loadFromPhp($fcontent,dirname($fname),$configPagePath);
}
else
- {
+ {
$dom=new TXmlDocument;
if($dom->loadFromFile($fname))
$this->loadFromXml($dom,dirname($fname),$configPagePath);
@@ -9759,7 +9774,7 @@ class TPageConfiguration extends TComponent
if(isset($page['properties']))
{
$properties=$page['properties'];
- unset($page['properties']);
+ unset($page['properties']);
}
$matching=false;
$id=($configPagePath==='')?$id:$configPagePath.'.'.$id;
@@ -10173,7 +10188,7 @@ class TApplication extends TComponent
const STATE_PERFORMANCE='Performance';
const PAGE_SERVICE_ID='page';
const CONFIG_FILE_XML='application.xml';
- const CONFIG_FILE_EXT_XML='.xml';
+ const CONFIG_FILE_EXT_XML='.xml';
const CONFIG_TYPE_XML = 'xml';
const CONFIG_FILE_PHP='application.php';
const CONFIG_FILE_EXT_PHP='.php';
@@ -10822,7 +10837,7 @@ class TApplicationConfiguration extends TComponent
$this->_properties[$name]=$value;
}
$this->_empty = false;
- }
+ }
if(isset($config['paths']) && is_array($config['paths']))
$this->loadPathsPhp($config['paths'],$configPath);
if(isset($config['modules']) && is_array($config['modules']))
@@ -10946,7 +10961,7 @@ class TApplicationConfiguration extends TComponent
$properties['id'] = $id;
$this->_modules[$id]=array($type,$properties,$module);
$this->_empty=false;
- }
+ }
}
protected function loadModulesXml($modulesNode,$configPath)
{
@@ -10982,7 +10997,7 @@ class TApplicationConfiguration extends TComponent
$properties['id'] = $id;
$this->_services[$id] = array($type,$properties,$service);
$this->_empty = false;
- }
+ }
}
protected function loadServicesXml($servicesNode,$configPath)
{
diff --git a/index.html b/index.html
index 37a2a60d..e35a5d63 100644
--- a/index.html
+++ b/index.html
@@ -8,8 +8,8 @@
<body>
<h1>PRADO Framework for PHP 5 </h1>
-<p>Version 3.2.3<br>
-Copyright&copy; 2004-2013 by <a href="http://www.pradosoft.com/">Prado Software</a><br>
+<p>Version 3.2.4<br>
+Copyright&copy; 2004-2014 by <a href="http://www.pradosoft.com/">Prado Software</a><br>
All Rights Reserved.
</p>
@@ -152,7 +152,7 @@ The PRADO framework and the included demos are free software. They are released
the terms of the following BSD License.
</p>
<p>
-Copyright 2004-2013 by The PRADO Group (http://www.pradosoft.com)<br/>
+Copyright 2004-2014 by The PRADO Group (http://www.pradosoft.com)<br/>
All rights reserved.
</p>
<p>
diff --git a/requirements/index.php b/requirements/index.php
index b5b6dc82..2fd392ba 100644
--- a/requirements/index.php
+++ b/requirements/index.php
@@ -6,7 +6,6 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2005 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: index.php 3281 2013-03-13 21:01:40Z ctrlaltca $
* @package prado
*/
@@ -291,5 +290,3 @@ function getPradoVersion()
}
return '';
}
-
-?> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/ActiveBricksTest.page b/tests/FunctionalTests/active-controls/protected/pages/ActiveBricksTest.page
index 7cb8c6b3..f3df76a2 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/ActiveBricksTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/ActiveBricksTest.page
@@ -1,4 +1,4 @@
-<com:TForm>
+<com:TContent ID="Content">
<h3 class="ContentAlternating">Some AJAX Tests</h3>
<com:TPanel CssClass="Content">
@@ -37,6 +37,4 @@
AIP
</com:TActivePanel>
- <com:TJavascriptLogger />
-
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/ActiveButtonTest.page b/tests/FunctionalTests/active-controls/protected/pages/ActiveButtonTest.page
index 2e192c19..9e293934 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/ActiveButtonTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/ActiveButtonTest.page
@@ -1,4 +1,4 @@
-<com:TForm ID="form1">
+<com:TContent ID="Content">
<h1>TActiveButton Functional Test</h1>
<com:TActiveButton ID="button2" Text="Button 1"
@@ -6,6 +6,4 @@
<com:TActiveLabel ID="label1" Text="Label 1" />
- <com:TJavascriptLogger />
-
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/ActiveCheckBoxTest.page b/tests/FunctionalTests/active-controls/protected/pages/ActiveCheckBoxTest.page
index 431d42f2..297cde15 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/ActiveCheckBoxTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/ActiveCheckBoxTest.page
@@ -1,4 +1,4 @@
-<com:TForm ID="form1">
+<com:TContent ID="Content">
<h1>Active CheckBox Test</h1>
<com:TActiveCheckBox ID="checkbox1" Text="CheckBox 1" OnCallback="checkbox_requested" />
<com:TActiveCheckBox ID="checkbox2" Text="CheckBox 2" OnCallback="checkbox_requested">
@@ -25,5 +25,4 @@
position: absolute; right: 0; top: 0">
Loading...
</div>
- <com:TJavascriptLogger />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/ActiveControlExpressionTag.page b/tests/FunctionalTests/active-controls/protected/pages/ActiveControlExpressionTag.page
index 7b983cd7..5a1c5023 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/ActiveControlExpressionTag.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/ActiveControlExpressionTag.page
@@ -1,4 +1,4 @@
-<com:TForm>
+<com:TContent ID="Content">
<h1>Active Control With Expression Tag Test</h1>
@@ -22,6 +22,5 @@
<com:TActiveButton ID="button2" Text="Show More!" Enabled="false"
OnCallback="button2_callback" />
-<com:TJavascriptLogger />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/ActiveControlWithTinyMce.page b/tests/FunctionalTests/active-controls/protected/pages/ActiveControlWithTinyMce.page
index aa3be754..9a561458 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/ActiveControlWithTinyMce.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/ActiveControlWithTinyMce.page
@@ -1,4 +1,4 @@
-<com:TForm>
+<com:TContent ID="Content">
<h1>Active Control with TinyMCE</h1>
<com:THtmlArea ID="text1" />
@@ -7,5 +7,4 @@
<com:TActiveLabel ID="label1" />
-<com:TJavascriptLogger />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/ActiveDatePicker.page b/tests/FunctionalTests/active-controls/protected/pages/ActiveDatePicker.page
index 88117744..ce40e1cb 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/ActiveDatePicker.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/ActiveDatePicker.page
@@ -1,15 +1,12 @@
-<html>
-<com:THead/>
-<body>
-<com:TForm>
+<com:TContent ID="Content">
<h1>TActiveDatePicker test</h1>
<p>
-<com:TActiveDatePicker ID="datepicker" DateFormat="MM-dd-yyyy" OnCallback="testDatePicker"/>
<com:TActiveLabel ID="status" /><br/>
<com:TActiveButton ID="decreaseButton" OnClick="decrease" Text="-1" OnCallback="testDatePicker"/>
<com:TActiveButton ID="todayButton" OnClick="today" Text="Today" OnCallback="testDatePicker"/>
<com:TActiveButton ID="increaseButton" OnClick="increase" Text="+1" OnCallback="testDatePicker"/>
<com:TButton ID="toggleButton" OnClick="toggleMode" Text="Toggle input mode (postback)"/>
+<com:TActiveDatePicker ID="datepicker" DateFormat="MM-dd-yyyy" OnCallback="testDatePicker"/>
</p>
<p>
ShowCalendar=false
@@ -23,6 +20,4 @@ ShowCalendar=false
<com:TActiveDatePicker ID="datepicker3" DateFormat="MMMM/yyyy" OnCallback="testDatePicker3" InputMode="DropDownList" ShowCalendar="true"/>
<com:TActiveLabel ID="status3" /><br/>
-</com:TForm>
-</body>
-</html> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/ActiveDropDownList.page b/tests/FunctionalTests/active-controls/protected/pages/ActiveDropDownList.page
index dc71a228..bf15ba0e 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/ActiveDropDownList.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/ActiveDropDownList.page
@@ -1,4 +1,4 @@
-<com:TForm ID="form1">
+<com:TContent ID="Content">
<h1>Active Drop Down List Test Case</h1>
<com:TActiveDropDownList ID="list1" AutoPostBack="true" SelectedIndex="0" OnSelectedIndexChanged="list1_changed">
@@ -26,6 +26,4 @@
<com:TButton ID="button5" Text="Post Back" OnClick="do_postback"/>
</div>
- <com:TJavascriptLogger />
-
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/ActiveHiddenFieldTest.page b/tests/FunctionalTests/active-controls/protected/pages/ActiveHiddenFieldTest.page
index f0fc4b92..317da643 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/ActiveHiddenFieldTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/ActiveHiddenFieldTest.page
@@ -1,9 +1,9 @@
-<com:TForm ID="form1">
+<com:TContent ID="Content">
<h1>Active HiddenField Test Case</h1>
-
+
<com:TActiveHiddenField ID="HiddenFieldEmpty" />
<com:TActiveHiddenField ID="HiddenFieldUsed" Value="My value" />
-
+
<div>
<com:TActiveButton ID="Button1" Text="Set value to HiddenFieldEmpty" OnClick="onSetValue" />
<com:TActiveButton ID="Button2" Text="Get value from HiddenFieldUsed" OnClick="onGetValue" />
@@ -12,5 +12,4 @@
<div>
<com:TActiveLabel ID="ResponseLabel" Text="Value of current hidden field" />
</div>
- <com:TJavascriptLogger />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/ActiveHyperLinkTest.page b/tests/FunctionalTests/active-controls/protected/pages/ActiveHyperLinkTest.page
index 59098052..9b149b45 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/ActiveHyperLinkTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/ActiveHyperLinkTest.page
@@ -1,6 +1,6 @@
-<com:TForm ID="form1">
+<com:TContent ID="Content">
<h1>Active HyperLink Test Case</h1>
-
+
<div style="margin:1em; padding:1em; border:1px solid #ccc; text-align:center;">
<com:TActiveHyperLink ID="link1" Text="Link 1" NavigateUrl="http://www.pradosoft.com" />
</div>
@@ -8,6 +8,4 @@
<com:TActiveButton ID="button2" Text="Change Image" OnClick="change_image" />
<com:TActiveButton ID="button3" Text="Change Target" OnClick="change_target" />
<com:TActiveButton ID="button4" Text="Change URL" OnClick="change_url" />
-
- <com:TJavascriptLogger />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/ActiveImageButtonTest.page b/tests/FunctionalTests/active-controls/protected/pages/ActiveImageButtonTest.page
index 7696261a..15cf2380 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/ActiveImageButtonTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/ActiveImageButtonTest.page
@@ -1,4 +1,4 @@
-<com:TForm ID="form1">
+<com:TContent ID="Content">
<h1>TActiveImageButton Functional Test</h1>
@@ -19,6 +19,4 @@
<com:TActiveButton ID="button3" Text="Change Align" OnClick="change_align" />
<com:TActiveButton ID="button4" Text="Change Description" OnClick="change_description" />
- <com:TJavascriptLogger />
-
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/ActiveLinkButtonTest.page b/tests/FunctionalTests/active-controls/protected/pages/ActiveLinkButtonTest.page
index cb9f0322..16ea578d 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/ActiveLinkButtonTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/ActiveLinkButtonTest.page
@@ -1,4 +1,4 @@
-<com:TForm ID="form1">
+<com:TContent ID="Content">
<h1>TActiveLinkButton Functional Test</h1>
<com:TActiveLinkButton ID="button2" Text="Button 1"
@@ -6,6 +6,4 @@
<com:TActiveLabel ID="label1" Text="Label 1" />
- <com:TJavascriptLogger />
-
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/ActiveListBoxMasterTest.page b/tests/FunctionalTests/active-controls/protected/pages/ActiveListBoxMasterTest.page
index f7c6baaf..115b833a 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/ActiveListBoxMasterTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/ActiveListBoxMasterTest.page
@@ -23,6 +23,4 @@
<com:TActiveButton ID="button6" Text="Change to Multi-Select" OnClick="change_to_multiple" />
<com:TActiveButton ID="button7" Text="Change to Single-Select" OnClick="change_to_single" />
</div>
-
- <com:TJavascriptLogger />
</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/ActiveListBoxTest.page b/tests/FunctionalTests/active-controls/protected/pages/ActiveListBoxTest.page
index 318d53c3..2bf480b4 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/ActiveListBoxTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/ActiveListBoxTest.page
@@ -1,4 +1,4 @@
-<com:TForm ID="form1">
+<com:TContent ID="Content">
<h1>Active List Box Functional Test</h1>
@@ -22,6 +22,4 @@
<com:TActiveButton ID="button6" Text="Change to Multi-Select" OnClick="change_to_multiple" />
<com:TActiveButton ID="button7" Text="Change to Single-Select" OnClick="change_to_single" />
</div>
-
- <com:TJavascriptLogger />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/ActivePanelTest.page b/tests/FunctionalTests/active-controls/protected/pages/ActivePanelTest.page
index 7ab4bab9..5eadcb77 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/ActivePanelTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/ActivePanelTest.page
@@ -1,4 +1,4 @@
-<com:TForm ID="form1">
+<com:TContent ID="Content">
<h1>Active Panel replacement tests </h1>
<com:TCallback ID="callback1" OnCallback="callback1_requested" />
<com:TActivePanel ID="panel1">
@@ -9,14 +9,13 @@
<div id="div1" style="border:1px solid #666; background-color: #ffe; text-align: center; padding:3em">
Click Me!
</div>
- <script type="text/javascript">
+ <com:TClientScript>
Event.OnLoad(function()
{
Event.observe($("div1"), "click", function()
{
Prado.Callback("<%= $this->callback1->UniqueID %>")
})
- })
- </script>
- <com:TJavascriptLogger />
-</com:TForm> \ No newline at end of file
+ });
+ </com:TClientScript>
+</com:TContent>
diff --git a/tests/FunctionalTests/active-controls/protected/pages/ActivePanelVisibleTest.page b/tests/FunctionalTests/active-controls/protected/pages/ActivePanelVisibleTest.page
index 0795e46b..93684bef 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/ActivePanelVisibleTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/ActivePanelVisibleTest.page
@@ -1,4 +1,4 @@
-<com:TForm>
+<com:TContent ID="Content">
<h1>ActivePanel Visible Test</h1>
@@ -12,6 +12,5 @@
<com:TActivePanel ID="pnlB">bar</com:TActivePanel>
-<com:TJavascriptLogger />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/ActiveRadioButtonListTest.page b/tests/FunctionalTests/active-controls/protected/pages/ActiveRadioButtonListTest.page
index 26feb594..e222a70f 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/ActiveRadioButtonListTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/ActiveRadioButtonListTest.page
@@ -1,4 +1,4 @@
-<com:TForm ID="form1">
+<com:TContent ID="Content">
<h1>TActiveRadioButtonList Test Case</h1>
<com:TActiveRadioButtonList ID="list1" OnCallback="list1_callback">
@@ -17,6 +17,4 @@
<com:TActiveButton ID="button4" Text="Select Index 4" OnClick="select_index_4" />
</div>
- <com:TJavascriptLogger />
-
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/ActiveRadioButtonTest.page b/tests/FunctionalTests/active-controls/protected/pages/ActiveRadioButtonTest.page
index 2bb4c9de..66587943 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/ActiveRadioButtonTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/ActiveRadioButtonTest.page
@@ -1,4 +1,4 @@
-<com:TForm ID="form1">
+<com:TContent ID="Content">
<h1>Active Radio Button Test</h1>
<com:TActiveRadioButton ID="radio1"
GroupName="group1" Text="Radio Button 1"
@@ -34,5 +34,4 @@
position: absolute; right: 0; top: 0">
Loading...
</div>
- <com:TJavascriptLogger />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/ActiveRatingListAllowInputTest.page b/tests/FunctionalTests/active-controls/protected/pages/ActiveRatingListAllowInputTest.page
index 35fcadc7..d3c551b4 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/ActiveRatingListAllowInputTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/ActiveRatingListAllowInputTest.page
@@ -1,5 +1,4 @@
-<com:THead />
-<com:TForm ID="form1">
+<com:TContent ID="Content">
<h1>TActiveRatingList AllowInput Test Case</h1>
<com:TActiveRatingList ID="RatingList" AllowInput="false"
OnSelectedIndexChanged="ratingChanged">
@@ -11,4 +10,4 @@
<com:TListItem Text="Super" />
</com:TActiveRatingList>
<com:TActiveLabel ID="Status" Text="AllowInput=false" />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/ActiveRatingListAutoPostBackTest.page b/tests/FunctionalTests/active-controls/protected/pages/ActiveRatingListAutoPostBackTest.page
index 84ce4ef3..e0d3cbbe 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/ActiveRatingListAutoPostBackTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/ActiveRatingListAutoPostBackTest.page
@@ -1,5 +1,4 @@
-<com:THead />
-<com:TForm ID="form1">
+<com:TContent ID="Content">
<h1>TActiveRatingList AutoPostBack Test Case</h1>
<com:TActiveRatingList ID="RatingList" AutoPostback="false"
OnSelectedIndexChanged="ratingChanged">
@@ -13,4 +12,4 @@
<com:TActiveLabel ID="Status" Text="AutoPostback=false" />
<br />
<com:TActiveButton ID="Submit" Text="Submit" />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/ActiveRatingListCheckBoxesTest.page b/tests/FunctionalTests/active-controls/protected/pages/ActiveRatingListCheckBoxesTest.page
index 36f4404d..cba50947 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/ActiveRatingListCheckBoxesTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/ActiveRatingListCheckBoxesTest.page
@@ -1,5 +1,4 @@
-<com:THead />
-<com:TForm ID="form1">
+<com:TContent ID="Content">
<h1>TActiveRatingList Check Boxes Test Case</h1>
<com:TActiveRatingList ID="RatingList">
<com:TListItem Text="Poor" />
@@ -9,4 +8,4 @@
<com:TListItem Text="Excellent" />
<com:TListItem Text="Super" />
</com:TActiveRatingList>
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/ActiveRatingListEnabledTest.page b/tests/FunctionalTests/active-controls/protected/pages/ActiveRatingListEnabledTest.page
index 5f732e0d..791176df 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/ActiveRatingListEnabledTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/ActiveRatingListEnabledTest.page
@@ -1,5 +1,4 @@
-<com:THead />
-<com:TForm ID="form1">
+<com:TContent ID="Content">
<h1>TActiveRatingList Enabled Test Case</h1>
<com:TActiveRatingList ID="RatingList" Enabled="false"
OnSelectedIndexChanged="ratingChanged">
@@ -14,4 +13,4 @@
<br />
<com:TActiveButton ID="Enable" Text="Enable" OnClick="enable" />
<com:TActiveButton ID="Disable" Text="Disable" OnClick="disable" />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/ActiveRatingListHoverCaptionTest.page b/tests/FunctionalTests/active-controls/protected/pages/ActiveRatingListHoverCaptionTest.page
index 01e47a34..0a2a5f50 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/ActiveRatingListHoverCaptionTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/ActiveRatingListHoverCaptionTest.page
@@ -1,5 +1,4 @@
-<com:THead />
-<com:TForm ID="form1">
+<com:TContent ID="Content">
<h1>TActiveRatingList Hover Caption Test Case</h1>
<com:TActiveRatingList ID="RatingList" CaptionID="Status"
OnSelectedIndexChanged="ratingChanged" Rating="3.5">
@@ -11,4 +10,4 @@
<com:TListItem Text="Super" />
</com:TActiveRatingList>
<com:TActiveLabel ID="Status" Text="CaptionID='Status'" />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/ActiveRatingListRatingTest.page b/tests/FunctionalTests/active-controls/protected/pages/ActiveRatingListRatingTest.page
index 942a5b45..c9aed5b4 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/ActiveRatingListRatingTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/ActiveRatingListRatingTest.page
@@ -1,5 +1,4 @@
-<com:THead />
-<com:TForm ID="form1">
+<com:TContent ID="Content">
<h1>TActiveRatingList Rating Test Case</h1>
<com:TActiveRatingList ID="RatingList" Rating="5"
OnSelectedIndexChanged="ratingChanged">
@@ -14,4 +13,4 @@
<br />
<com:TActiveButton ID="SetRating" Text="Set Rating=3"
OnClick="setRating" />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/ActiveRatingListReadOnlyTest.page b/tests/FunctionalTests/active-controls/protected/pages/ActiveRatingListReadOnlyTest.page
index dad3fd6e..70220e58 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/ActiveRatingListReadOnlyTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/ActiveRatingListReadOnlyTest.page
@@ -1,5 +1,4 @@
-<com:THead />
-<com:TForm ID="form1">
+<com:TContent ID="Content">
<h1>TActiveRatingList ReadOnly Test Case</h1>
<com:TActiveRatingList ID="RatingList" ReadOnly="true"
OnSelectedIndexChanged="ratingChanged">
@@ -14,4 +13,4 @@
<br />
<com:TActiveButton ID="Writable" Text="Writable" OnClick="writable" />
<com:TActiveButton ID="ReadOnly" Text="ReadOnly" OnClick="readOnly" />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/ActiveRatingListSelectedIndexTest.page b/tests/FunctionalTests/active-controls/protected/pages/ActiveRatingListSelectedIndexTest.page
index 6fb52822..ee26568d 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/ActiveRatingListSelectedIndexTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/ActiveRatingListSelectedIndexTest.page
@@ -1,5 +1,4 @@
-<com:THead />
-<com:TForm ID="form1">
+<com:TContent ID="Content">
<h1>TActiveRatingList SelectedIndex Test Case</h1>
<com:TActiveRatingList ID="RatingList" SelectedIndex="1"
OnSelectedIndexChanged="ratingChanged">
@@ -14,4 +13,4 @@
<br />
<com:TActiveButton ID="SetSelectedIndex" Text="Set SelectedIndex=5"
OnClick="setSelectedIndex" />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/ActiveRedirectionTest.page b/tests/FunctionalTests/active-controls/protected/pages/ActiveRedirectionTest.page
index 5f7959c5..8f4e175d 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/ActiveRedirectionTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/ActiveRedirectionTest.page
@@ -1,8 +1,7 @@
-<com:TForm>
+<com:TContent ID="Content">
<h1>Redirection Test</h1>
<com:TActiveButton Text="Redirect to Default Page" OnClick="button_clicked" />
-<com:TJavascriptLogger />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/ActiveTextBoxCallback.page b/tests/FunctionalTests/active-controls/protected/pages/ActiveTextBoxCallback.page
index b05ce62e..50b244b5 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/ActiveTextBoxCallback.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/ActiveTextBoxCallback.page
@@ -1,6 +1,5 @@
-<com:TForm ID="form1">
+<com:TContent ID="Content">
<h1>ActiveTextBox Callback Test</h1>
<com:TActiveTextBox ID="textbox1" AutoPostBack="true" OnCallback="textbox1_callback" />
<com:TActiveLabel ID="label1" Text="Label 1" />
- <com:TJavascriptLogger />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/AutoCompleteTest.page b/tests/FunctionalTests/active-controls/protected/pages/AutoCompleteTest.page
index 477764c3..98745b55 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/AutoCompleteTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/AutoCompleteTest.page
@@ -1,4 +1,4 @@
-<com:TForm ID="form1">
+<com:TContent ID="Content">
<style>
.autocomplete
@@ -58,7 +58,7 @@
<li>
&lt;&lt;
<span class="select"><%# $this->Data %></span>
- &gt;&gt;
+ &gt;&gt;
</li>
</prop:Suggestions.ItemTemplate>
</com:TAutoComplete>
@@ -79,7 +79,7 @@
OnSuggest="suggestCountries"
OnCallback="callback_requested"
OnSuggestionSelected="suggestion_selected"
- ResultPanel.CssClass="autocomplete"
+ ResultPanel.CssClass="autocomplete"
MinChars="4" Frequency="2" />
<p><br /></p>
@@ -91,5 +91,4 @@
<p><br /></p>
<p><br /></p>
<p><br /></p>
- <com:TJavascriptLogger />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/Calculator.page b/tests/FunctionalTests/active-controls/protected/pages/Calculator.page
index 7a565658..e7b1f180 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/Calculator.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/Calculator.page
@@ -1,17 +1,17 @@
-<com:TForm ID="form1">
+<com:TContent ID="Content">
<h1>Callback Enabled Calculator</h1>
-
+
<com:TActiveTextBox id="a" />
+
<com:TActiveTextBox id="b" />
=
<com:TActiveTextBox id="c" />
-
- <com:TActiveButton id="sum"
- onclick="do_sum"
+
+ <com:TActiveButton id="sum"
+ onclick="do_sum"
text="Calculate!" />
-
- <com:TRequiredFieldValidator
+
+ <com:TRequiredFieldValidator
ControlToValidate="a"
ErrorMessage="left summand is required."
ControlCssClass="required"
@@ -27,5 +27,5 @@
ID="summary"
HeaderText="Unable to calculate because" />
</div>
-
-</com:TForm> \ No newline at end of file
+
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/Callback.page b/tests/FunctionalTests/active-controls/protected/pages/Callback.page
index d8744760..f8489af3 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/Callback.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/Callback.page
@@ -1,15 +1,13 @@
-<com:TForm>
+<com:TContent ID="Content">
<com:TCallback ID="callback1" OnCallback="callback1_Requested" />
- <script type="text/javascript">
+ <script type="text/javascript">
function do_callback1()
- {
+ {
var callback = <%= $this->callback1->ActiveControl->Javascript %>;
callback.dispatch();
- }
- </script>
+ }
+ </script>
<div onclick="do_callback1()">Click Me!</div>
- <com:TJavascriptLogger />
-
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/CallbackCustomValidatorTest.page b/tests/FunctionalTests/active-controls/protected/pages/CallbackCustomValidatorTest.page
index a99fbf55..134e45cb 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/CallbackCustomValidatorTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/CallbackCustomValidatorTest.page
@@ -1,4 +1,4 @@
-<com:TForm ID="form1">
+<com:TContent ID="Content">
<style>
.loader
{
@@ -37,6 +37,4 @@
<span id="loader" style="display:none;" onfocus="alert('ok')" class="loader">Loading...</span>
- <com:TJavascriptLogger />
-
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/CallbackOptionsTest.page b/tests/FunctionalTests/active-controls/protected/pages/CallbackOptionsTest.page
index 3cecbade..a82a0d0a 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/CallbackOptionsTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/CallbackOptionsTest.page
@@ -1,4 +1,4 @@
-<com:TForm ID="form1">
+<com:TContent ID="Content">
<h1>TCallbackOptions Test</h1>
<com:TCallbackOptions ID="options1">
@@ -31,4 +31,4 @@
<div id="status" style="display:none; background-color: #c00; color:white; text-align:center; padding: 1em" >
Loading...
</div>
-</com:TForm> \ No newline at end of file
+</com:TContent>
diff --git a/tests/FunctionalTests/active-controls/protected/pages/ClientSideDispatch.page b/tests/FunctionalTests/active-controls/protected/pages/ClientSideDispatch.page
index acf56bfe..3b5ed15f 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/ClientSideDispatch.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/ClientSideDispatch.page
@@ -1,4 +1,4 @@
-<com:TForm>
+<com:TContent ID="Content">
<com:TCallback ID="callback1" OnCallback="method1" />
@@ -7,21 +7,20 @@
var link1 = Prado.CallbackRequest.getRequestById('<%= $this->link1->ClientID %>');
Prado.Callback('<%= $this->callback1->UniqueID %>', link1.getCallbackParameter());
</prop:ClientSide.OnSuccess>
-
+
</com:TCallbackOptions>
- <com:TActiveLinkButton
+ <com:TActiveLinkButton
ID="link1"
- Text="Tab 1"
- OnCallback="method2"
- ActiveControl.CallbackParameter="test"
+ Text="Tab 1"
+ OnCallback="method2"
+ ActiveControl.CallbackParameter="test"
ActiveControl.CallbackOptions="options1"/>
<com:TActiveLabel ID="status1" />
<com:TActiveLabel ID="status2" />
-<com:TJavascriptLogger />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/ControlAdapterTest.page b/tests/FunctionalTests/active-controls/protected/pages/ControlAdapterTest.page
index f0f3044d..2dc07852 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/ControlAdapterTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/ControlAdapterTest.page
@@ -1,10 +1,10 @@
-<com:TForm ID="form1">
+<com:TContent ID="Content">
<h1>Control Adapter - State Tracking Tests</h1>
<com:TActiveButton ID="button1" Text="Test Button 1" />
- <com:TActiveButton ID="button2" Text="Test Button 2"
+ <com:TActiveButton ID="button2" Text="Test Button 2"
Attributes.onclick="alert('ok')"
Style.Font.Size="12" Style.BackColor="blue" Style.Height="2em" />
-
+
<div style="margin:1em; padding: 0.5em; border:1px solid #ccc; text-align:center">
<com:TActiveButton ID="test1" Text="Enable/Disable Button 1" OnClick="change_enabled"/>
<com:TActiveButton ID="test2" Text="Hide/Show Button 1" OnClick="change_visible"/>
@@ -19,5 +19,4 @@
<com:TActiveButton ID="test8" Text="Change Button 1 Attributes" OnClick="change_attributes1"/>
<com:TActiveButton ID="test9" Text="Change Button 2 Attributes" OnClick="change_attributes2"/>
</div>
- <com:TJavascriptLogger />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/CustomTemplateControlTest.page b/tests/FunctionalTests/active-controls/protected/pages/CustomTemplateControlTest.page
index 3bed7d5b..cd34ff98 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/CustomTemplateControlTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/CustomTemplateControlTest.page
@@ -1,4 +1,4 @@
-<com:TForm ID="form1">
+<com:TContent ID="Content">
<h1>Add Dynamic Custom TTemplateControl Test</h1>
<com:TActivePanel ID="Foo">
@@ -10,7 +10,4 @@
<com:TActivePanel ID="placeholder" />
<com:TActiveLabel ID="label1" Text="Label 1" />
-
-
- <com:TJavascriptLogger />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/CustomValidatorByPass.page b/tests/FunctionalTests/active-controls/protected/pages/CustomValidatorByPass.page
index 08b7bb3e..b1fd18ff 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/CustomValidatorByPass.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/CustomValidatorByPass.page
@@ -1,4 +1,4 @@
-<com:TForm>
+<com:TContent ID="Content">
<h1>Custom Login</h1>
@@ -10,19 +10,19 @@
</div>
<span>Username:</span><br />
<com:TActiveTextBox ID="Username" />
- <com:TRequiredFieldValidator
+ <com:TRequiredFieldValidator
ID="validator1"
- ControlToValidate="Username"
- ValidationGroup="login"
+ ControlToValidate="Username"
+ ValidationGroup="login"
Text="...is required" Display="Dynamic"/>
<br />
<span>Password:</span><br />
<com:TActiveTextBox TextMode="Password" ID="Password" />
- <com:TActiveCustomValidator
- ID="validator2"
- ControlToValidate="Password"
+ <com:TActiveCustomValidator
+ ID="validator2"
+ ControlToValidate="Password"
Text="*"
OnServerValidate="validateUser" ValidationGroup="login" />
@@ -33,6 +33,5 @@
</div>
-<com:TJavascriptLogger />
-</com:TForm> \ No newline at end of file
+</com:TContent>
diff --git a/tests/FunctionalTests/active-controls/protected/pages/DatePickerInCallback.page b/tests/FunctionalTests/active-controls/protected/pages/DatePickerInCallback.page
index 8b39dc55..2f51eff2 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/DatePickerInCallback.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/DatePickerInCallback.page
@@ -1,7 +1,7 @@
-<com:TForm>
+<com:TContent ID="Content">
<h1>DatePicker in Callback</h1>
<com:TDatePicker ID="datepicker" />
<com:TActiveLinkButton OnCallback="testDatePicker" Text="testDatePicker" />
<com:TActiveLabel ID="status" />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/DelayedCallback.page b/tests/FunctionalTests/active-controls/protected/pages/DelayedCallback.page
index b8fba648..f858e8eb 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/DelayedCallback.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/DelayedCallback.page
@@ -1,7 +1,6 @@
-<com:TForm>
+<com:TContent ID="Content">
<h1>Delayed Callback Test</h1>
<com:TActiveButton ID="button1" Text="Delayed 4000" OnCallback="callback1" />
<com:TActiveButton ID="button2" Text="Delayed 2000" OnCallback="callback2" />
<com:TActiveLabel ID="status" />
-<com:TJavascriptLogger />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/DisplayStyleTest.page b/tests/FunctionalTests/active-controls/protected/pages/DisplayStyleTest.page
index df1db27a..c27ea397 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/DisplayStyleTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/DisplayStyleTest.page
@@ -1,4 +1,4 @@
-<com:TForm>
+<com:TContent ID="Content">
<h1>Display Style Test</h1>
<div>
@@ -17,6 +17,5 @@ here.
<com:TActiveLabel ID="status" />
-<com:TJavascriptLogger />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/DynamicRepeaterDataTest.page b/tests/FunctionalTests/active-controls/protected/pages/DynamicRepeaterDataTest.page
index 913f6a17..26407827 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/DynamicRepeaterDataTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/DynamicRepeaterDataTest.page
@@ -1,4 +1,4 @@
-<com:TForm>
+<com:TContent ID="Content">
<h1>Dynamic Repeater Data Test</h1>
<com:TActiveButton Text="Click Me!" OnClick="button_clicked" OnCallback="button_callback"/>
@@ -11,6 +11,5 @@
</com:TRepeater>
</com:TActivePanel>
-<com:TJavascriptLogger />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/EventTriggeredCallback.page b/tests/FunctionalTests/active-controls/protected/pages/EventTriggeredCallback.page
index 889636f3..1adbaac1 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/EventTriggeredCallback.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/EventTriggeredCallback.page
@@ -1,4 +1,4 @@
-<com:TForm ID="form1">
+<com:TContent ID="Content">
<h1>Event Triggered Callback Test</h1>
@@ -27,5 +27,4 @@
<div style="padding: 2em; border:1px solid #ccc; margin-top:2em">
<com:TActiveLabel ID="label1" Text="Label 1" />
</div>
- <com:TJavascriptLogger />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/FeatureList.page b/tests/FunctionalTests/active-controls/protected/pages/FeatureList.page
index eab14a87..a01e6b5e 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/FeatureList.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/FeatureList.page
@@ -1,3 +1,3 @@
-<com:TForm ID="form1">
- <com:TBulletedList ID="List" DisplayMode="HyperLink"/>
-</com:TForm>
+<com:TContent ID="Content">
+ <com:TBulletedList ID="List" DisplayMode="HyperLink"/>
+</com:TContent>
diff --git a/tests/FunctionalTests/active-controls/protected/pages/GerTurno2.page b/tests/FunctionalTests/active-controls/protected/pages/GerTurno2.page
index f4bf644c..bf2b48b7 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/GerTurno2.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/GerTurno2.page
@@ -1,7 +1,7 @@
-<com:TForm>
+<com:TContent ID="Content">
<com:TLabel ForControl="DDropTurno" Text="Turno:"/>
-<com:TActiveDropDownList ID="DDropTurno"
+<com:TActiveDropDownList ID="DDropTurno"
onSelectedIndexChanged="trocaTurno" AutoPostBack="true"/>
<com:TLabel Text="Código:" ForControl="Codigo"/>
@@ -11,6 +11,5 @@
<com:TActiveTextBox ID="Descricao" MaxLength="25" Columns="25"/>
-<com:TJavascriptLogger />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/InPlaceWithValidator.page b/tests/FunctionalTests/active-controls/protected/pages/InPlaceWithValidator.page
index ba3a35db..e4fd93e9 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/InPlaceWithValidator.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/InPlaceWithValidator.page
@@ -1,4 +1,4 @@
-
+<com:TContent ID="Content">
<style>
.textbox
{
@@ -35,7 +35,6 @@
}
</style>
-<com:TForm>
<com:TInPlaceTextBox
ID="Firstname"
Text="firstname"
@@ -60,19 +59,18 @@
ValidationGroup="Group"
/>
<br />
- <com:TActiveButton ID="active_button"
- Text="Active Submit"
+ <com:TActiveButton ID="active_button"
+ Text="Active Submit"
ValidationGroup="Group"
CausesValidation="true"
OnCallback="button_valid"
- />
- <com:TButton ID="passive_button"
- Text="Passive Submit"
+ />
+ <com:TButton ID="passive_button"
+ Text="Passive Submit"
ValidationGroup="Group"
CausesValidation="true"
OnClick="button_valid"
- />
+ />
<br />
<com:TActiveLabel ID="status" Text="Status:" />
- <com:TJavascriptLogger />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/LargePageStateTest.page b/tests/FunctionalTests/active-controls/protected/pages/LargePageStateTest.page
index 701bd74c..b4798fe1 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/LargePageStateTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/LargePageStateTest.page
@@ -1,12 +1,11 @@
-<com:TForm>
+<com:TContent ID="Content">
<h1>Large Page State Test</h1>
<com:TActiveButton Text="Show Changes" OnClick="button_clicked"/>
<com:TActiveLabel ID="status" />
-<com:TJavascriptLogger />
<com:TPanel ID="Panel1">
</com:TPanel>
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/LargePageStateTest2.page b/tests/FunctionalTests/active-controls/protected/pages/LargePageStateTest2.page
index 0b662617..56ad075e 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/LargePageStateTest2.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/LargePageStateTest2.page
@@ -1,13 +1,12 @@
<%@ StatePersisterClass="System.Web.UI.TSessionPageStatePersister" %>
-<com:TForm>
+<com:TContent ID="Content">
<h1>Large Page State Test (using Session page state)</h1>
<com:TActiveButton Text="Show Changes" OnClick="button_clicked"/>
<com:TActiveLabel ID="status" />
-<com:TJavascriptLogger />
<com:TPanel ID="Panel1">
</com:TPanel>
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/Layout.php b/tests/FunctionalTests/active-controls/protected/pages/Layout.php
new file mode 100755
index 00000000..723f200c
--- /dev/null
+++ b/tests/FunctionalTests/active-controls/protected/pages/Layout.php
@@ -0,0 +1,5 @@
+<?php
+
+class Layout extends TTemplateControl
+{
+}
diff --git a/tests/FunctionalTests/active-controls/protected/pages/Layout.tpl b/tests/FunctionalTests/active-controls/protected/pages/Layout.tpl
new file mode 100755
index 00000000..ead6c66f
--- /dev/null
+++ b/tests/FunctionalTests/active-controls/protected/pages/Layout.tpl
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC
+ "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<com:THead Title="PRADO Functional Tests">
+ <meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
+ <style type="text/css">
+ /*<![CDATA[*/
+ .defect
+ {
+ color: #c00;
+ font-size: 1.15em;
+ }
+ body
+ {
+ font-family: Georgia, "Times New Roman", Times, serif;
+ }
+ .w3c
+ {
+ margin-top: 2em;
+ display: block;
+ }
+ .required
+ {
+ border: 1px solid red;
+ background-color: pink;
+ }
+ /*]]>*/
+ </style>
+</com:THead>
+<body>
+<com:TForm>
+<com:TContentPlaceHolder ID="Content" />
+<hr style="margin-top: 2em" />
+</com:TForm>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/MessagesPanelTest.page b/tests/FunctionalTests/active-controls/protected/pages/MessagesPanelTest.page
index ab4798a8..33868332 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/MessagesPanelTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/MessagesPanelTest.page
@@ -1,7 +1,6 @@
-<com:TForm>
+<com:TContent ID="Content">
<com:Application.pages.DMessagesPanel ID="panel1" PanelCssClass="one1" />
<com:TActiveButton Text="Show" OnClick="show_clicked" />
<com:TActiveButton Text="Hide" OnClick="hide_clicked" />
-<com:TJavascriptLogger />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/MyTabPanelTest.page b/tests/FunctionalTests/active-controls/protected/pages/MyTabPanelTest.page
index 7371086a..c877c083 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/MyTabPanelTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/MyTabPanelTest.page
@@ -1,4 +1,4 @@
-<com:TForm ID="form1">
+<com:TContent ID="Content">
<h1>My Tab Panel Test</h1>
@@ -36,6 +36,5 @@
This is the contents of panel C
</com:TActivePanel>
-<com:TJavascriptLogger />
-</com:TForm>
+</com:TContent>
diff --git a/tests/FunctionalTests/active-controls/protected/pages/NestedActiveControls.page b/tests/FunctionalTests/active-controls/protected/pages/NestedActiveControls.page
index 9d3a3d61..9534f0c0 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/NestedActiveControls.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/NestedActiveControls.page
@@ -1,12 +1,12 @@
-<com:TForm ID="form1">
+<com:TContent ID="Content">
<h1>Nested Active Controls Test</h1>
<com:TCallback ID="callback1" OnCallback="callback1_requested" />
<com:TActivePanel ID="panel1">
<com:TPlaceHolder ID="content1" Visible="false">
- Something lalala
+ Something lalala
<com:TActiveButton ID="button1" Text="Button 1" OnClick="button1_clicked" />
<com:TActiveLabel ID="label3" Text="Label 3" />
-
+
</com:TPlaceHolder>
<com:TActiveLabel ID="label1" Text="Label 1" />
</com:TActivePanel>
@@ -14,7 +14,7 @@
Click Me!
</div>
<com:TActiveLabel ID="label2" Text="Label 2" />
- <script type="text/javascript">
+ <com:TClientScript>
Event.OnLoad(function()
{
Event.observe($("div1"), "click", function()
@@ -22,7 +22,6 @@
Prado.Callback("<%= $this->callback1->UniqueID %>")
})
})
- </script>
- <com:TJavascriptLogger />
-
-</com:TForm>
+ </com:TClientScript>
+
+</com:TContent>
diff --git a/tests/FunctionalTests/active-controls/protected/pages/NullStateTest.page b/tests/FunctionalTests/active-controls/protected/pages/NullStateTest.page
index 2ce98f5b..6b5ed334 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/NullStateTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/NullStateTest.page
@@ -1,10 +1,9 @@
-<com:TForm>
+<com:TContent ID="Content">
<h1>Null State Test</h1>
<com:TActiveLabel ID="lblTest"/>
<com:TActiveButton OnCallback="btnTest_OnCallback" Text="Clickme"/>
-<com:TJavascriptLogger />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/PopulateActiveList.page b/tests/FunctionalTests/active-controls/protected/pages/PopulateActiveList.page
index c7bf0952..3ab9d8fb 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/PopulateActiveList.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/PopulateActiveList.page
@@ -1,4 +1,4 @@
-<com:TForm>
+<com:TContent ID="Content">
<h1>Populate active list controls</h1>
<com:TActiveListBox ID="list1" OnCallback="list_changed" />
@@ -12,6 +12,5 @@
<com:TActiveButton ID="button2" Text="populate list 2" OnClick="populate_list2" />
-<com:TJavascriptLogger />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/PostLoadingTest.page b/tests/FunctionalTests/active-controls/protected/pages/PostLoadingTest.page
index 09ab2fbc..0a8167c8 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/PostLoadingTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/PostLoadingTest.page
@@ -1,4 +1,4 @@
-<com:TForm>
+<com:TContent ID="Content">
<h1 id="heading">PostLoading Test</h1>
<com:TCallback ID="callback1" OnCallback="Page.callback1_requested" />
@@ -9,7 +9,7 @@
Click Me!
</div>
- <script type="text/javascript">
+ <com:TClientScript>
Event.OnLoad(function()
{
Event.observe($("div1"), "click", function()
@@ -17,8 +17,5 @@
Prado.Callback("<%= $this->callback1->UniqueID %>")
})
})
- </script>
-
- <com:TJavascriptLogger />
-
-</com:TForm> \ No newline at end of file
+ </com:TClientScript>
+</com:TContent>
diff --git a/tests/FunctionalTests/active-controls/protected/pages/RadioButtonListTest.page b/tests/FunctionalTests/active-controls/protected/pages/RadioButtonListTest.page
index 7de9c6ab..e1a2cb93 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/RadioButtonListTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/RadioButtonListTest.page
@@ -1,4 +1,4 @@
-<com:TForm>
+<com:TContent ID="Content">
<com:TRequiredFieldValidator
ControlToValidate="rad_button_list"
@@ -6,8 +6,8 @@
Display="Dynamic"
ValidationGroup="Group"
/>
- <br />
- <com:TActiveRadioButtonList
+ <br />
+ <com:TActiveRadioButtonList
ID="rad_button_list"
OnCallback="radChange">
<com:TListItem Value="yes" Text="Yes" />
@@ -16,15 +16,14 @@
</com:TActiveRadioButtonList>
<br />
<com:TActiveLabel
- ID="label"
+ ID="label"
Text="Choice : " />
<br /><br /><br />
<com:TActiveButton
ID="action_button"
Text="action"
OnCallback="action"
- ValidationGroup="Group" />
+ ValidationGroup="Group" />
-<com:TJavascriptLogger />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/RatingList.page b/tests/FunctionalTests/active-controls/protected/pages/RatingList.page
index ba9c2e5d..6cb9d34a 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/RatingList.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/RatingList.page
@@ -1,5 +1,4 @@
-<com:THead/>
-<com:TForm>
+<com:TContent ID="Content">
<style>
.more td
{
@@ -93,6 +92,5 @@
Loading...
</div>
-<com:TJavascriptLogger />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/RepeaterWithActiveControls.page b/tests/FunctionalTests/active-controls/protected/pages/RepeaterWithActiveControls.page
index b94fdbfb..52fdea2d 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/RepeaterWithActiveControls.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/RepeaterWithActiveControls.page
@@ -1,4 +1,4 @@
-<com:TForm>
+<com:TContent ID="Content">
<style>
.textbox
{
@@ -56,6 +56,5 @@
<com:TActiveLabel ID="label1" />
-<com:TJavascriptLogger />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/ReplaceContentTest.page b/tests/FunctionalTests/active-controls/protected/pages/ReplaceContentTest.page
index 7842cde9..c946d5fd 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/ReplaceContentTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/ReplaceContentTest.page
@@ -1,4 +1,4 @@
-<com:TForm>
+<com:TContent ID="Content">
<h1>Callback Replace Content Test</h1>
@@ -26,6 +26,5 @@ Main Panel
<com:TActiveButton id="btn_replace" Text="Replace" OnCallback="replaceContent"/>
-<com:TJavascriptLogger />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/Sessioned/PageStateTest.page b/tests/FunctionalTests/active-controls/protected/pages/Sessioned/PageStateTest.page
index fdd4a604..48d1207f 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/Sessioned/PageStateTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/Sessioned/PageStateTest.page
@@ -1,5 +1,4 @@
-<com:THead />
-<com:TForm>
+<com:TContent ID="Content">
<com:TActiveButton ID="button1"
CustomData="0"
@@ -41,7 +40,4 @@
Loading...
</div>
-
-<com:TJavascriptLogger />
-
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/TActiveCheckBoxListTest.page b/tests/FunctionalTests/active-controls/protected/pages/TActiveCheckBoxListTest.page
index f3332bad..915092d2 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/TActiveCheckBoxListTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/TActiveCheckBoxListTest.page
@@ -1,4 +1,4 @@
-<com:TForm ID="form1">
+<com:TContent ID="Content">
<h1>TActiveCheckBoxList Test Case</h1>
<com:TActiveCheckBoxList ID="list1" OnCallback="list1_callback">
@@ -19,6 +19,4 @@
<com:TActiveButton ID="button5" Text="Select Values 'value 2', 'value 5'" OnClick="select_values_25" />
</div>
- <com:TJavascriptLogger />
-
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/TActiveFileUploadAutoPostBackTest.page b/tests/FunctionalTests/active-controls/protected/pages/TActiveFileUploadAutoPostBackTest.page
index 41390e52..e126f34a 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/TActiveFileUploadAutoPostBackTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/TActiveFileUploadAutoPostBackTest.page
@@ -1,14 +1,12 @@
-<com:TForm ID="form1">
+<com:TContent ID="Content">
<h1 id="heading">TActiveFileUpload AutoPostBack Functional Test</h1>
<com:TActiveFileUpload ID='uploader' OnFileUpload="uploadComplete" AutoPostBack="false"/>
-
+
<com:TActiveButton ID="button1" Text="Submit File"/>
-
+
<com:TActiveButton ID="button2" Text="This won't submit the file"/>
-
- <com:TActiveLabel ID="label1" Text="Label 1" />
- <com:TJavascriptLogger />
+ <com:TActiveLabel ID="label1" Text="Label 1" />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/TInPlaceTextBoxTest.page b/tests/FunctionalTests/active-controls/protected/pages/TInPlaceTextBoxTest.page
index 8c0a0d71..6b0c5109 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/TInPlaceTextBoxTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/TInPlaceTextBoxTest.page
@@ -1,6 +1,5 @@
<%@ Application.Globalization.Charset="UTF-8" %>
-<com:TForm ID="form1">
-
+<com:TContent ID="Content">
<style>
.textbox
{
@@ -61,7 +60,7 @@
<com:TActiveLabel ID="status" Text="Status:" />
- <com:TInPlaceTextBox
+ <com:TInPlaceTextBox
id="lblNewPackageTitle"
OnTextChanged="NewPackageSubject"
CssClass="textbox"
@@ -72,6 +71,4 @@
<com:TActiveButton Text="ad" OnCallback="button_clicked" />
- <com:TJavascriptLogger />
-
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/TextBoxValidationCallback.page b/tests/FunctionalTests/active-controls/protected/pages/TextBoxValidationCallback.page
index 79fc17e0..b9d2c6f3 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/TextBoxValidationCallback.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/TextBoxValidationCallback.page
@@ -1,4 +1,4 @@
-<com:TForm>
+<com:TContent ID="Content">
<h1>TextBox AutoPostBack With Group Validation</h1>
<com:TTextBox ID="Address" Columns="60" Maxlength="128" />
<com:TRequiredFieldValidator
@@ -14,8 +14,7 @@
Maxlength="12"
ValidationGroup="post"
OnCallback="lookupZipCode"/>
-<com:TJavascriptLogger />
<com:TActiveTextBox ID="City" Columns="60" Maxlength="128" />
-</com:TForm>
+</com:TContent>
diff --git a/tests/FunctionalTests/active-controls/protected/pages/TimeTriggeredCallbackTest.page b/tests/FunctionalTests/active-controls/protected/pages/TimeTriggeredCallbackTest.page
index a285f03d..050f6681 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/TimeTriggeredCallbackTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/TimeTriggeredCallbackTest.page
@@ -1,4 +1,4 @@
-<com:TForm ID="form1">
+<com:TContent ID="Content">
<h1>TTimeTriggeredCallback + ViewState Tests</h1>
<com:TActiveButton id="button1" Text="Start Timer" OnCallback="start_timer" />
<com:TActiveButton Text="Stop Timer" OnCallback="stop_timer" />
@@ -17,5 +17,4 @@
position: absolute; right: 0; top: 0">
Loading...
</div>
- <com:TJavascriptLogger />
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/ValueTriggerCallbackTest.page b/tests/FunctionalTests/active-controls/protected/pages/ValueTriggerCallbackTest.page
index 1281cc5c..a164afc9 100755
--- a/tests/FunctionalTests/active-controls/protected/pages/ValueTriggerCallbackTest.page
+++ b/tests/FunctionalTests/active-controls/protected/pages/ValueTriggerCallbackTest.page
@@ -1,4 +1,4 @@
-<com:TForm>
+<com:TContent ID="Content">
<h1>Value Trigger Callback Test</h1>
<com:TTextBox ID="text1" />
@@ -9,6 +9,4 @@
<com:TActiveLabel ID="label1" Text="Label 1" />
-<com:TJavascriptLogger />
-
-</com:TForm> \ No newline at end of file
+</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/protected/pages/config.xml b/tests/FunctionalTests/active-controls/protected/pages/config.xml
new file mode 100755
index 00000000..05909075
--- /dev/null
+++ b/tests/FunctionalTests/active-controls/protected/pages/config.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<configuration>
+ <pages MasterClass="Application.pages.Layout" />
+</configuration> \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/tests/ActiveButtonTestCase.php b/tests/FunctionalTests/active-controls/tests/ActiveButtonTestCase.php
index c8fcfa57..acbdbb2a 100755
--- a/tests/FunctionalTests/active-controls/tests/ActiveButtonTestCase.php
+++ b/tests/FunctionalTests/active-controls/tests/ActiveButtonTestCase.php
@@ -1,14 +1,15 @@
<?php
-class ActiveButtonTestCase extends PradoGenericSeleniumTest
+class ActiveButtonTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("active-controls/index.php?page=ActiveButtonTest");
- $this->verifyTextPresent("TActiveButton Functional Test");
- $this->assertText("label1", "Label 1");
- $this->click("button2");
+ $base='ctl0_Content_';
+ $this->url("active-controls/index.php?page=ActiveButtonTest");
+ $this->assertContains("TActiveButton Functional Test", $this->source());
+ $this->assertText("{$base}label1", "Label 1");
+ $this->clickOnElement("{$base}button2");
$this->pause(800);
- $this->assertText("label1", "Button 1 was clicked using callback!");
+ $this->assertText("{$base}label1", "Button 1 was clicked using callback!");
}
}
diff --git a/tests/FunctionalTests/active-controls/tests/ActiveCheckBoxListTestCase.php b/tests/FunctionalTests/active-controls/tests/ActiveCheckBoxListTestCase.php
index 312b8443..c032c084 100755
--- a/tests/FunctionalTests/active-controls/tests/ActiveCheckBoxListTestCase.php
+++ b/tests/FunctionalTests/active-controls/tests/ActiveCheckBoxListTestCase.php
@@ -1,55 +1,57 @@
<?php
-class ActiveCheckBoxListTestCase extends PradoGenericSeleniumTest
+class ActiveCheckBoxListTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("active-controls/index.php?page=TActiveCheckBoxListTest");
- $this->verifyTextPresent("TActiveCheckBoxList Test Case");
+ $base='ctl0_Content_';
+ $this->url("active-controls/index.php?page=TActiveCheckBoxListTest");
+ $this->assertContains("TActiveCheckBoxList Test Case", $this->source());
- $this->assertText("label1", "Label 1");
+ $this->assertText("{$base}label1", "Label 1");
- $this->click("button1");
+ $this->byId("{$base}button1")->click();
$this->pause(800);
$this->assertCheckBoxes(array(1,2,3));
- $this->click("button2");
+ $this->byId("{$base}button2")->click();
$this->pause(800);
$this->assertCheckBoxes(array());
- $this->click("button3");
+ $this->byId("{$base}button3")->click();
$this->pause(800);
$this->assertCheckBoxes(array(0));
- $this->click("button4");
+ $this->byId("{$base}button4")->click();
$this->pause(800);
$this->assertCheckBoxes(array(4));
- $this->click("button5");
+ $this->byId("{$base}button5")->click();
$this->pause(800);
$this->assertCheckBoxes(array(1,4));
- $this->click("list1_c2");
+ $this->byId("{$base}list1_c2")->click();
$this->pause(800);
- $this->assertText("label1", "Selection: value 2, value 3, value 5");
+ $this->assertText("{$base}label1", "Selection: value 2, value 3, value 5");
- $this->click("list1_c2");
+ $this->byId("{$base}list1_c2")->click();
$this->pause(800);
- $this->assertText("label1", "Selection: value 2, value 5");
+ $this->assertText("{$base}label1", "Selection: value 2, value 5");
}
function assertCheckBoxes($checks, $total = 5)
{
+ $base='ctl0_Content_';
for($i = 0; $i < $total; $i++)
{
if(in_array($i, $checks))
- $this->assertChecked("list1_c{$i}");
+ $this->assertTrue($this->byId("{$base}list1_c{$i}")->selected());
else
- $this->assertNotChecked("list1_c{$i}");
+ $this->assertFalse($this->byId("{$base}list1_c{$i}")->selected());
}
}
}
diff --git a/tests/FunctionalTests/active-controls/tests/ActiveCheckBoxTestCase.php b/tests/FunctionalTests/active-controls/tests/ActiveCheckBoxTestCase.php
index 6f235273..782b35be 100755
--- a/tests/FunctionalTests/active-controls/tests/ActiveCheckBoxTestCase.php
+++ b/tests/FunctionalTests/active-controls/tests/ActiveCheckBoxTestCase.php
@@ -1,59 +1,60 @@
<?php
-class ActiveCheckBoxTestCase extends PradoGenericSeleniumTest
+class ActiveCheckBoxTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("active-controls/index.php?page=ActiveCheckBoxTest");
- $this->verifyTextPresent("Active CheckBox Test");
+ $base='ctl0_Content_';
+ $this->url("active-controls/index.php?page=ActiveCheckBoxTest");
+ $this->assertContains("Active CheckBox Test", $this->source());
- $this->assertText("checkbox1_label", "CheckBox 1");
- $this->assertText("checkbox2_label", "CheckBox 2");
- $this->assertText('label1', 'Label 1');
+ $this->assertText("{$base}checkbox1_label", "CheckBox 1");
+ $this->assertText("{$base}checkbox2_label", "CheckBox 2");
+ $this->assertText("{$base}label1", 'Label 1');
- $this->click("change_text1");
+ $this->byId("{$base}change_text1")->click();
$this->pause(800);
- $this->assertText('checkbox1_label', 'Hello CheckBox 1');
+ $this->assertText("{$base}checkbox1_label", 'Hello CheckBox 1');
- $this->click("change_text2");
+ $this->byId("{$base}change_text2")->click();
$this->pause(800);
- $this->assertText('checkbox2_label', 'CheckBox 2 World');
+ $this->assertText("{$base}checkbox2_label", 'CheckBox 2 World');
//check box 1
- $this->click('change_checked1');
+ $this->byId("{$base}change_checked1")->click();
$this->pause(800);
- $this->assertChecked('checkbox1');
+ $this->assertTrue($this->byId("{$base}checkbox1")->selected());
- $this->click('change_checked1');
+ $this->byId("{$base}change_checked1")->click();
$this->pause(800);
- $this->assertNotChecked('checkbox1');
+ $this->assertFalse($this->byId("{$base}checkbox1")->selected());
//check box 2
- $this->click('change_checked2');
+ $this->byId("{$base}change_checked2")->click();
$this->pause(800);
- $this->assertChecked('checkbox2');
+ $this->assertTrue($this->byId("{$base}checkbox2")->selected());
- $this->click('change_checked2');
+ $this->byId("{$base}change_checked2")->click();
$this->pause(800);
- $this->assertNotChecked('checkbox2');
+ $this->assertFalse($this->byId("{$base}checkbox2")->selected());
//click checkbox 1
- $this->click("checkbox1");
+ $this->byId("{$base}checkbox1")->click();
$this->pause(800);
- $this->assertText("label1", "Label 1:Hello CheckBox 1 Checked");
+ $this->assertText("{$base}label1", "Label 1:Hello CheckBox 1 Checked");
- $this->click("checkbox1");
+ $this->byId("{$base}checkbox1")->click();
$this->pause(800);
- $this->assertText("label1", "Label 1:Hello CheckBox 1 Not Checked");
+ $this->assertText("{$base}label1", "Label 1:Hello CheckBox 1 Not Checked");
//click checkbox 2
- $this->click("checkbox2");
+ $this->byId("{$base}checkbox2")->click();
$this->pause(800);
- $this->assertText("label1", "Label 1:CheckBox 2 World Checked");
+ $this->assertText("{$base}label1", "Label 1:CheckBox 2 World Checked");
- $this->click("checkbox2");
+ $this->byId("{$base}checkbox2")->click();
$this->pause(800);
- $this->assertText("label1", "Label 1:CheckBox 2 World Not Checked");
+ $this->assertText("{$base}label1", "Label 1:CheckBox 2 World Not Checked");
}
}
diff --git a/tests/FunctionalTests/active-controls/tests/ActiveControlExpressTagTestCase.php b/tests/FunctionalTests/active-controls/tests/ActiveControlExpressTagTestCase.php
index 75b86e19..c41988cc 100755
--- a/tests/FunctionalTests/active-controls/tests/ActiveControlExpressTagTestCase.php
+++ b/tests/FunctionalTests/active-controls/tests/ActiveControlExpressTagTestCase.php
@@ -1,18 +1,19 @@
<?php
-class ActiveControlExpressionTagTestCase extends PradoGenericSeleniumTest
+class ActiveControlExpressionTagTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open('active-controls/index.php?page=ActiveControlExpressionTag');
- $this->assertTextPresent('Active Control With Expression Tag Test');
- $this->assertTextNotPresent('Text box content:');
+ $base='ctl0_Content_';
+ $this->url('active-controls/index.php?page=ActiveControlExpressionTag');
+ $this->assertContains('Active Control With Expression Tag Test', $this->source());
+ $this->assertNotContains('Text box content:', $this->source());
- $this->type('textbox1', 'Hello world');
- $this->click('button1');
+ $this->type("{$base}textbox1", 'Hello world');
+ $this->byId("{$base}button1")->click();
$this->pause(800);
- $this->assertText('repeats', 'result - 1 result - two');
- $this->assertText('contents', 'Text box content: Hello world');
+ $this->assertText("repeats", 'result - 1 result - two');
+ $this->assertText("contents", 'Text box content: Hello world');
}
}
diff --git a/tests/FunctionalTests/active-controls/tests/ActiveDatePickerTestCase.php b/tests/FunctionalTests/active-controls/tests/ActiveDatePickerTestCase.php
index be0a6fb4..570a6717 100755
--- a/tests/FunctionalTests/active-controls/tests/ActiveDatePickerTestCase.php
+++ b/tests/FunctionalTests/active-controls/tests/ActiveDatePickerTestCase.php
@@ -1,118 +1,119 @@
<?php
-class ActiveDatePickerTestCase extends PradoGenericSeleniumTest
+class ActiveDatePickerTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("active-controls/index.php?page=ActiveDatePicker");
- $this->verifyTextPresent("TActiveDatePicker test");
- $this->verifyText("status", "");
- $this->verifyValue("datepicker", date('m-d-Y'));
- $this->click("increaseButton");
- $this->pause(800);
- $this->verifyValue("datepicker", date('m-d-Y', strtotime('+ 1 day')));
- $this->verifyText("status", date('m-d-Y', strtotime('+ 1 day')));
- $this->click("increaseButton");
- $this->pause(800);
- $this->verifyValue("datepicker", date('m-d-Y', strtotime('+ 2 day')));
- $this->verifyText("status", date('m-d-Y', strtotime('+ 2 day')));
- $this->click("todayButton");
- $this->pause(800);
- $this->verifyValue("datepicker", date('m-d-Y'));
- $this->verifyText("status", date('m-d-Y'));
- $this->click("decreaseButton");
- $this->pause(800);
- $this->verifyValue("datepicker", date('m-d-Y', strtotime('- 1 day')));
- $this->verifyText("status", date('m-d-Y', strtotime('- 1 day')));
- $this->click("datepicker");
- $this->pause(800);
- $this->click("css=input.todayButton");
- $this->pause(800);
- $this->verifyValue("datepicker", date('m-d-Y'));
- $this->verifyText("status", date('m-d-Y'));
- $this->click("css=input.nextMonthButton");
- $this->pause(800);
- $this->verifyValue("datepicker", date('m-d-Y', strtotime('+ 1 month')));
- $this->verifyText("status", date('m-d-Y', strtotime('+1 month')));
-
- $this->click('toggleButton');
+ $base='ctl0_Content_';
+ $this->url("active-controls/index.php?page=ActiveDatePicker");
+ $this->assertContains("TActiveDatePicker test", $this->source());
+ $this->assertText("{$base}status", "");
+ $this->assertValue("{$base}datepicker", date('m-d-Y'));
+ $this->byId("{$base}increaseButton")->click();
+ $this->pause(800);
+ $this->assertValue("{$base}datepicker", date('m-d-Y', strtotime('+ 1 day')));
+ $this->assertText("{$base}status", date('m-d-Y', strtotime('+ 1 day')));
+ $this->byId("{$base}increaseButton")->click();
+ $this->pause(800);
+ $this->assertValue("{$base}datepicker", date('m-d-Y', strtotime('+ 2 day')));
+ $this->assertText("{$base}status", date('m-d-Y', strtotime('+ 2 day')));
+ $this->byId("{$base}todayButton")->click();
+ $this->pause(800);
+ $this->assertValue("{$base}datepicker", date('m-d-Y'));
+ $this->assertText("{$base}status", date('m-d-Y'));
+ $this->byId("{$base}decreaseButton")->click();
+ $this->pause(800);
+ $this->assertValue("{$base}datepicker", date('m-d-Y', strtotime('- 1 day')));
+ $this->assertText("{$base}status", date('m-d-Y', strtotime('- 1 day')));
+ $this->byId("{$base}datepicker")->click();
+ $this->pause(800);
+ $this->byCssSelector("input.todayButton")->click();
+ $this->pause(800);
+ $this->assertValue("{$base}datepicker", date('m-d-Y'));
+ $this->assertText("{$base}status", date('m-d-Y'));
+ $this->byCssSelector("input.nextMonthButton")->click();
+ $this->pause(800);
+ $this->assertValue("{$base}datepicker", date('m-d-Y', strtotime('+ 1 month')));
+ $this->assertText("{$base}status", date('m-d-Y', strtotime('+1 month')));
+
+ $this->byId("{$base}toggleButton")->click();
$this->pause(2000);
-
- $this->click("todayButton");
+
+ $this->byId("{$base}todayButton")->click();
$this->pause(800);
- $this->assertSelected("datepicker_month", date('m'));
- $this->verifyText("status", date('m-d-Y'));
-
- $this->click("increaseButton");
+ $this->assertSelected("{$base}datepicker_month", date('m'));
+ $this->assertText("{$base}status", date('m-d-Y'));
+
+ $this->byId("{$base}increaseButton")->click();
$this->pause(800);
$dateToCheck=strtotime('+ 1 day');
- $this->assertSelected("datepicker_month", date('m', $dateToCheck));
- $this->assertSelected("datepicker_day", date('d', $dateToCheck));
- $this->assertSelected("datepicker_year", date('Y', $dateToCheck));
- $this->verifyText("status", date('m-d-Y', $dateToCheck));
-
- $this->click("increaseButton");
+ $this->assertSelected("{$base}datepicker_month", date('m', $dateToCheck));
+ $this->assertSelected("{$base}datepicker_day", date('d', $dateToCheck));
+ $this->assertSelected("{$base}datepicker_year", date('Y', $dateToCheck));
+ $this->assertText("{$base}status", date('m-d-Y', $dateToCheck));
+
+ $this->byId("{$base}increaseButton")->click();
$this->pause(800);
$dateToCheck=strtotime('+ 2 day');
- $this->assertSelected("datepicker_month", date('m', $dateToCheck));
- $this->assertSelected("datepicker_day", date('d', $dateToCheck));
- $this->assertSelected("datepicker_year", date('Y', $dateToCheck));
- $this->verifyText("status", date('m-d-Y', $dateToCheck));
-
- $this->click("todayButton");
+ $this->assertSelected("{$base}datepicker_month", date('m', $dateToCheck));
+ $this->assertSelected("{$base}datepicker_day", date('d', $dateToCheck));
+ $this->assertSelected("{$base}datepicker_year", date('Y', $dateToCheck));
+ $this->assertText("{$base}status", date('m-d-Y', $dateToCheck));
+
+ $this->byId("{$base}todayButton")->click();
$this->pause(800);
$dateToCheck=time();
- $this->assertSelected("datepicker_month", date('m', $dateToCheck));
- $this->assertSelected("datepicker_day", date('d', $dateToCheck));
- $this->assertSelected("datepicker_year", date('Y', $dateToCheck));
- $this->verifyText("status", date('m-d-Y', $dateToCheck));
-
- $this->click("decreaseButton");
+ $this->assertSelected("{$base}datepicker_month", date('m', $dateToCheck));
+ $this->assertSelected("{$base}datepicker_day", date('d', $dateToCheck));
+ $this->assertSelected("{$base}datepicker_year", date('Y', $dateToCheck));
+ $this->assertText("{$base}status", date('m-d-Y', $dateToCheck));
+
+ $this->byId("{$base}decreaseButton")->click();
$this->pause(800);
$dateToCheck=strtotime('- 1 day');
- $this->assertSelected("datepicker_month", date('m', $dateToCheck));
- $this->assertSelected("datepicker_day", date('d', $dateToCheck));
- $this->assertSelected("datepicker_year", date('Y', $dateToCheck));
- $this->verifyText("status", date('m-d-Y', $dateToCheck));
-
- $this->click("datepickerbutton");
+ $this->assertSelected("{$base}datepicker_month", date('m', $dateToCheck));
+ $this->assertSelected("{$base}datepicker_day", date('d', $dateToCheck));
+ $this->assertSelected("{$base}datepicker_year", date('Y', $dateToCheck));
+ $this->assertText("{$base}status", date('m-d-Y', $dateToCheck));
+
+ $this->byId("{$base}datepickerbutton")->click();
$this->pause(800);
- $this->click("css=input.todayButton");
+ $this->byCssSelector("input.todayButton")->click();
$this->pause(800);
$dateToCheck=time();
- $this->assertSelected("datepicker_month", date('m', $dateToCheck));
- $this->assertSelected("datepicker_day", date('d', $dateToCheck));
- $this->assertSelected("datepicker_year", date('Y', $dateToCheck));
- $this->verifyText("status", date('m-d-Y', $dateToCheck));
-
- $this->click("css=input.nextMonthButton");
+ $this->assertSelected("{$base}datepicker_month", date('m', $dateToCheck));
+ $this->assertSelected("{$base}datepicker_day", date('d', $dateToCheck));
+ $this->assertSelected("{$base}datepicker_year", date('Y', $dateToCheck));
+ $this->assertText("{$base}status", date('m-d-Y', $dateToCheck));
+
+ $this->byCssSelector("input.nextMonthButton")->click();
$this->pause(800);
$dateToCheck=strtotime('+ 1 month');
- $this->assertSelected("datepicker_month", date('m', $dateToCheck));
- $this->assertSelected("datepicker_day", date('d', $dateToCheck));
- $this->assertSelected("datepicker_year", date('Y', $dateToCheck));
- $this->verifyText("status", date('m-d-Y', $dateToCheck));
-
- $this->click('ctl1');
- $this->pause(800);
-
- $this->verifyText("status2", "");
+ $this->assertSelected("{$base}datepicker_month", date('m', $dateToCheck));
+ $this->assertSelected("{$base}datepicker_day", date('d', $dateToCheck));
+ $this->assertSelected("{$base}datepicker_year", date('Y', $dateToCheck));
+ $this->assertText("{$base}status", date('m-d-Y', $dateToCheck));
+
+ $this->byId('ctl0_ctl1')->click();
+ $this->pause(800);
+
+ $this->assertText("{$base}status2", "");
$dateToCheck=time();
- $this->assertSelected("datepicker2_month", date('m', $dateToCheck));
- $this->assertSelected("datepicker2_day", date('d', $dateToCheck));
- $this->assertSelected("datepicker2_year", date('Y', $dateToCheck));
- $this->select("datepicker2_year", date('Y')+1);
+ $this->assertSelected("{$base}datepicker2_month", date('m', $dateToCheck));
+ $this->assertSelected("{$base}datepicker2_day", date('d', $dateToCheck));
+ $this->assertSelected("{$base}datepicker2_year", date('Y', $dateToCheck));
+ $this->select("{$base}datepicker2_year", date('Y')+1);
$this->pause(800);
$dateToCheck=mktime(0,0,0,(int)date('m'),(int)date('d'), date('Y')+1);
- $this->verifyText("status2", date('m-d-Y', $dateToCheck));
+ $this->assertText("{$base}status2", date('m-d-Y', $dateToCheck));
- $this->verifyText("status3", "");
+ $this->assertText("{$base}status3", "");
$dateToCheck=time();
- $this->assertSelected("datepicker3_month", date('F', $dateToCheck));
- $this->assertSelected("datepicker3_year", date('Y', $dateToCheck));
- $this->select("datepicker3_year", date('Y')+1);
+ $this->assertSelected("{$base}datepicker3_month", date('F', $dateToCheck));
+ $this->assertSelected("{$base}datepicker3_year", date('Y', $dateToCheck));
+ $this->select("{$base}datepicker3_year", date('Y')+1);
$this->pause(800);
$dateToCheck=mktime(0,0,0,(int)date('m'),(int)date('d'), date('Y')+1);
- $this->verifyText("status3", date('m/Y', $dateToCheck));
+ $this->assertText("{$base}status3", date('m/Y', $dateToCheck));
}
}
diff --git a/tests/FunctionalTests/active-controls/tests/ActiveDropDownListTestCase.php b/tests/FunctionalTests/active-controls/tests/ActiveDropDownListTestCase.php
index a54cbd75..cb8c953f 100755
--- a/tests/FunctionalTests/active-controls/tests/ActiveDropDownListTestCase.php
+++ b/tests/FunctionalTests/active-controls/tests/ActiveDropDownListTestCase.php
@@ -1,45 +1,46 @@
<?php
-class ActiveDropDownListTestCase extends PradoGenericSeleniumTest
+class ActiveDropDownListTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("active-controls/index.php?page=ActiveDropDownList");
- $this->assertTextPresent('Active Drop Down List Test Case');
+ $base='ctl0_Content_';
+ $this->url("active-controls/index.php?page=ActiveDropDownList");
+ $this->assertContains('Active Drop Down List Test Case', $this->source());
- $this->assertText("label1", "Label 1");
+ $this->assertText("{$base}label1", "Label 1");
- $this->click("button1");
+ $this->byId("{$base}button1")->click();
$this->pause(800);
- $this->assertSelected("list1", "item 4");
+ $this->assertSelected("{$base}list1", "item 4");
- $this->click("button2");
+ $this->byId("{$base}button2")->click();
$this->pause(800);
- $this->assertSelectedIndex("list1", 0);
+ $this->assertSelectedValue("{$base}list1", 'value 1');
- $this->click("button3");
+ $this->byId("{$base}button3")->click();
$this->pause(800);
- $this->assertSelected("list1", "item 2");
+ $this->assertSelected("{$base}list1", "item 2");
- $this->assertText("label1", "Selection 1: value 1");
+ $this->assertText("{$base}label1", "Selection 1: value 1");
- $this->select("list1", "item 1");
+ $this->select("{$base}list1", "item 1");
$this->pause(800);
- $this->select("list2", "value 1 - item 4");
+ $this->select("{$base}list2", "value 1 - item 4");
$this->pause(800);
- $this->assertText("label2", "Selection 2: value 1 - item 4");
+ $this->assertText("{$base}label2", "Selection 2: value 1 - item 4");
- $this->select("list1", "item 3");
+ $this->select("{$base}list1", "item 3");
$this->pause(800);
- $this->select("list2", "value 3 - item 5");
+ $this->select("{$base}list2", "value 3 - item 5");
$this->pause(800);
- $this->assertText("label2", "Selection 2: value 3 - item 5");
+ $this->assertText("{$base}label2", "Selection 2: value 3 - item 5");
- $this->click('button4');
+ $this->byId("{$base}button4")->click();
$this->pause(800);
- $this->assertSelected('list1', 'item 3');
+ $this->assertSelected("{$base}list1", 'item 3');
$this->pause(300);
- $this->assertSelected('list2', 'value 3 - item 3');
+ $this->assertSelected("{$base}list2", 'value 3 - item 3');
}
}
diff --git a/tests/FunctionalTests/active-controls/tests/ActiveHiddenFieldTestCase.php b/tests/FunctionalTests/active-controls/tests/ActiveHiddenFieldTestCase.php
index b8c02868..d4b82068 100755
--- a/tests/FunctionalTests/active-controls/tests/ActiveHiddenFieldTestCase.php
+++ b/tests/FunctionalTests/active-controls/tests/ActiveHiddenFieldTestCase.php
@@ -1,22 +1,23 @@
<?php
-class ActiveHiddenFieldTestCase extends PradoGenericSeleniumTest
+class ActiveHiddenFieldTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("active-controls/index.php?page=ActiveHiddenFieldTest");
+ $base='ctl0_Content_';
+ $this->url("active-controls/index.php?page=ActiveHiddenFieldTest");
$fieldEmpty = 'No longer empty';
$fieldUsed = 'My value';
-
- $this->verifyTextPresent('Value of current hidden field');
- $this->click('Button1');
+
+ $this->assertContains('Value of current hidden field', $this->source());
+ $this->byId("{$base}Button1")->click();
$this->pause(800);
- $this->assertText('ResponseLabel', $fieldEmpty);
- $this->click('Button2');
+ $this->assertText("{$base}ResponseLabel", $fieldEmpty);
+ $this->byId("{$base}Button2")->click();
$this->pause(800);
- $this->assertText('ResponseLabel', $fieldUsed);
- $this->click('Button3');
+ $this->assertText("{$base}ResponseLabel", $fieldUsed);
+ $this->byId("{$base}Button3")->click();
$this->pause(800);
- $this->assertText('ResponseLabel', $fieldEmpty.'|'.$fieldUsed);
+ $this->assertText("{$base}ResponseLabel", $fieldEmpty.'|'.$fieldUsed);
}
}
diff --git a/tests/FunctionalTests/active-controls/tests/ActiveHyperLinkTestCase.php b/tests/FunctionalTests/active-controls/tests/ActiveHyperLinkTestCase.php
index bfcdd206..6329d826 100755
--- a/tests/FunctionalTests/active-controls/tests/ActiveHyperLinkTestCase.php
+++ b/tests/FunctionalTests/active-controls/tests/ActiveHyperLinkTestCase.php
@@ -1,16 +1,17 @@
<?php
-class ActiveHyperLinkTestCase extends PradoGenericSeleniumTest
+class ActiveHyperLinkTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("active-controls/index.php?page=ActiveHyperLinkTest");
- $this->assertTextPresent("Active HyperLink Test Case");
+ $base='ctl0_Content_';
+ $this->url("active-controls/index.php?page=ActiveHyperLinkTest");
+ $this->assertContains("Active HyperLink Test Case", $this->source());
- $this->assertText("link1", "Link 1");
+ $this->assertText("{$base}link1", "Link 1");
- $this->click("button1");
+ $this->byId("{$base}button1")->click();
$this->pause(800);
- $this->assertText("link1", "Pradosoft.com");
+ $this->assertText("{$base}link1", "Pradosoft.com");
}
}
diff --git a/tests/FunctionalTests/active-controls/tests/ActiveImageButtonTestCase.php b/tests/FunctionalTests/active-controls/tests/ActiveImageButtonTestCase.php
index 2989ab27..0ef2e082 100755
--- a/tests/FunctionalTests/active-controls/tests/ActiveImageButtonTestCase.php
+++ b/tests/FunctionalTests/active-controls/tests/ActiveImageButtonTestCase.php
@@ -1,15 +1,16 @@
<?php
-class ActiveImageButtonTestCase extends PradoGenericSeleniumTest
+class ActiveImageButtonTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("active-controls/index.php?page=ActiveImageButtonTest");
- $this->assertTextPresent("TActiveImageButton Functional Test");
- $this->assertText("label1", "Label 1");
- $this->click("image1");
+ $base='ctl0_Content_';
+ $this->url("active-controls/index.php?page=ActiveImageButtonTest");
+ $this->assertContains("TActiveImageButton Functional Test", $this->source());
+ $this->assertText("{$base}label1", "Label 1");
+ $this->byId("{$base}image1")->click();
$this->pause(800);
//unable to determine mouse position
- $this->assertTextPresent("regexp:Image clicked at x=\d+, y=\d+");
+ $this->assertRegExp('/Image clicked at x=\d+, y=\d+/', $this->source());
}
}
diff --git a/tests/FunctionalTests/active-controls/tests/ActiveLinkButtonTestCase.php b/tests/FunctionalTests/active-controls/tests/ActiveLinkButtonTestCase.php
index 88cdf15e..1f7c40ea 100755
--- a/tests/FunctionalTests/active-controls/tests/ActiveLinkButtonTestCase.php
+++ b/tests/FunctionalTests/active-controls/tests/ActiveLinkButtonTestCase.php
@@ -1,14 +1,15 @@
<?php
-class ActiveLinkButtonTestCase extends PradoGenericSeleniumTest
+class ActiveLinkButtonTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("active-controls/index.php?page=ActiveLinkButtonTest");
- $this->verifyTextPresent("TActiveLinkButton Functional Test");
- $this->assertText("label1", "Label 1");
- $this->click("button2");
+ $base='ctl0_Content_';
+ $this->url("active-controls/index.php?page=ActiveLinkButtonTest");
+ $this->assertContains("TActiveLinkButton Functional Test", $this->source());
+ $this->assertText("{$base}label1", "Label 1");
+ $this->byId("{$base}button2")->click();
$this->pause(800);
- $this->assertText("label1", "Button 1 was clicked using callback!");
+ $this->assertText("{$base}label1", "Button 1 was clicked using callback!");
}
}
diff --git a/tests/FunctionalTests/active-controls/tests/ActiveListBoxMasterTestCase.php b/tests/FunctionalTests/active-controls/tests/ActiveListBoxMasterTestCase.php
index 911e3cc7..be2bf174 100755
--- a/tests/FunctionalTests/active-controls/tests/ActiveListBoxMasterTestCase.php
+++ b/tests/FunctionalTests/active-controls/tests/ActiveListBoxMasterTestCase.php
@@ -1,48 +1,48 @@
<?php
-class ActiveListBoxMasterTestCase extends PradoGenericSeleniumTest
+class ActiveListBoxMasterTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("active-controls/index.php?page=ActiveListBoxMasterTest");
- $this->assertTextPresent('Active List Box Functional Test');
+ $this->url("active-controls/index.php?page=ActiveListBoxMasterTest");
+ $this->assertContains('Active List Box Functional Test', $this->source());
$base = 'ctl0_body_';
- $this->assertText($base."label1", "Label 1");
+ $this->assertText("{$base}label1", "Label 1");
- $this->click($base."button1");
+ $this->byId("{$base}button1")->click();
$this->pause(800);
- $this->assertEquals($this->getSelectedLabels($base.'list1'), array('item 2', 'item 3', 'item 4'));
+ $this->assertEquals($this->getSelectedLabels("{$base}list1"), array('item 2', 'item 3', 'item 4'));
- $this->click($base.'button3');
+ $this->byId("{$base}button3")->click();
$this->pause(800);
- $this->assertEquals($this->getSelectedLabels($base.'list1'), array('item 1'));
+ $this->assertEquals($this->getSelectedLabels("{$base}list1"), array('item 1'));
- $this->click($base.'button4');
+ $this->byId("{$base}button4")->click();
$this->pause(800);
- $this->assertEquals($this->getSelectedLabels($base.'list1'), array('item 5'));
+ $this->assertEquals($this->getSelectedLabels("{$base}list1"), array('item 5'));
- $this->click($base.'button5');
+ $this->byId("{$base}button5")->click();
$this->pause(800);
- $this->assertEquals($this->getSelectedLabels($base.'list1'), array('item 2', 'item 5'));
+ $this->assertEquals($this->getSelectedLabels("{$base}list1"), array('item 2', 'item 5'));
- $this->click($base.'button2');
+ $this->byId("{$base}button2")->click();
$this->pause(800);
- $this->assertNotSomethingSelected($base."list1");
+ $this->assertNotSomethingSelected("{$base}list1");
- $this->click($base.'button6');
+ $this->byId("{$base}button6")->click();
$this->pause(800);
- $this->click($base."button1");
+ $this->byId("{$base}button1")->click();
$this->pause(800);
- $this->assertEquals($this->getSelectedLabels($base.'list1'), array('item 2', 'item 3', 'item 4'));
+ $this->assertEquals($this->getSelectedLabels("{$base}list1"), array('item 2', 'item 3', 'item 4'));
- $this->select($base."list1", "item 1");
+ $this->select("{$base}list1", "item 1");
$this->pause(800);
- $this->assertText($base.'label1', 'Selection: value 1');
+ $this->assertText("{$base}label1", 'Selection: value 1');
- $this->addSelection($base."list1", "item 4");
+ $this->addSelection("{$base}list1", "item 4");
$this->pause(800);
- $this->assertText($base.'label1', 'Selection: value 1, value 4');
+ $this->assertText("{$base}label1", 'Selection: value 1, value 4');
}
} \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/tests/ActiveListBoxTestCase.php b/tests/FunctionalTests/active-controls/tests/ActiveListBoxTestCase.php
index d45cb42c..1830f5ab 100755
--- a/tests/FunctionalTests/active-controls/tests/ActiveListBoxTestCase.php
+++ b/tests/FunctionalTests/active-controls/tests/ActiveListBoxTestCase.php
@@ -1,46 +1,47 @@
<?php
-class ActiveListBoxTestCase extends PradoGenericSeleniumTest
+class ActiveListBoxTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("active-controls/index.php?page=ActiveListBoxTest");
- $this->assertTextPresent('Active List Box Functional Test');
+ $base='ctl0_Content_';
+ $this->url("active-controls/index.php?page=ActiveListBoxTest");
+ $this->assertContains('Active List Box Functional Test', $this->source());
- $this->assertText("label1", "Label 1");
+ $this->assertText("{$base}label1", "Label 1");
- $this->click("button1");
+ $this->byId("{$base}button1")->click();
$this->pause(800);
- $this->assertEquals($this->getSelectedLabels('list1'), array('item 2', 'item 3', 'item 4'));
+ $this->assertEquals($this->getSelectedLabels("{$base}list1"), array('item 2', 'item 3', 'item 4'));
- $this->click('button3');
+ $this->byId("{$base}button3")->click();
$this->pause(800);
- $this->assertEquals($this->getSelectedLabels('list1'), array('item 1'));
+ $this->assertEquals($this->getSelectedLabels("{$base}list1"), array('item 1'));
- $this->click('button4');
+ $this->byId("{$base}button4")->click();
$this->pause(800);
- $this->assertEquals($this->getSelectedLabels('list1'), array('item 5'));
+ $this->assertEquals($this->getSelectedLabels("{$base}list1"), array('item 5'));
- $this->click('button5');
+ $this->byId("{$base}button5")->click();
$this->pause(800);
- $this->assertEquals($this->getSelectedLabels('list1'), array('item 2', 'item 5'));
+ $this->assertEquals($this->getSelectedLabels("{$base}list1"), array('item 2', 'item 5'));
- $this->click('button2');
+ $this->byId("{$base}button2")->click();
$this->pause(800);
- $this->assertNotSomethingSelected("list1");
+ $this->assertNotSomethingSelected("{$base}list1");
- $this->click('button6');
+ $this->byId("{$base}button6")->click();
$this->pause(800);
- $this->click("button1");
+ $this->byId("{$base}button1")->click();
$this->pause(800);
- $this->assertEquals($this->getSelectedLabels('list1'), array('item 2', 'item 3', 'item 4'));
+ $this->assertEquals($this->getSelectedLabels("{$base}list1"), array('item 2', 'item 3', 'item 4'));
- $this->select("list1", "item 1");
+ $this->select("{$base}list1", "item 1");
$this->pause(800);
- $this->assertText('label1', 'Selection: value 1');
+ $this->assertText("{$base}label1", 'Selection: value 1');
- $this->addSelection("list1", "item 4");
+ $this->addSelection("{$base}list1", "item 4");
$this->pause(800);
- $this->assertText('label1', 'Selection: value 1, value 4');
+ $this->assertText("{$base}label1", 'Selection: value 1, value 4');
}
} \ No newline at end of file
diff --git a/tests/FunctionalTests/active-controls/tests/ActivePanelTestCase.php b/tests/FunctionalTests/active-controls/tests/ActivePanelTestCase.php
index 9b069a14..73ab3ad0 100755
--- a/tests/FunctionalTests/active-controls/tests/ActivePanelTestCase.php
+++ b/tests/FunctionalTests/active-controls/tests/ActivePanelTestCase.php
@@ -1,14 +1,15 @@
<?php
-class ActivePanelTestCase extends PradoGenericSeleniumTest
+class ActivePanelTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("active-controls/index.php?page=ActivePanelTest");
- $this->verifyTextPresent("Active Panel replacement tests");
- $this->assertTextNotPresent('Something lalala');
- $this->click("div1");
+ $base='ctl0_Content_';
+ $this->url("active-controls/index.php?page=ActivePanelTest");
+ $this->assertContains("Active Panel replacement tests", $this->source());
+ $this->assertNotContains('Something lalala', $this->source());
+ $this->byId("div1")->click();
$this->pause(800);
- $this->assertTextPresent("Something lalala");
+ $this->assertContains("Something lalala", $this->source());
}
}
diff --git a/tests/FunctionalTests/active-controls/tests/ActiveRadioButtonListTestCase.php b/tests/FunctionalTests/active-controls/tests/ActiveRadioButtonListTestCase.php
index b0942ffa..82408732 100755
--- a/tests/FunctionalTests/active-controls/tests/ActiveRadioButtonListTestCase.php
+++ b/tests/FunctionalTests/active-controls/tests/ActiveRadioButtonListTestCase.php
@@ -1,45 +1,47 @@
<?php
-class ActiveRadioButtonListTestCase extends PradoGenericSeleniumTest
+class ActiveRadioButtonListTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("active-controls/index.php?page=ActiveRadioButtonListTest");
- $this->verifyTextPresent("TActiveRadioButtonList Test Case");
+ $base='ctl0_Content_';
+ $this->url("active-controls/index.php?page=ActiveRadioButtonListTest");
+ $this->assertContains("TActiveRadioButtonList Test Case", $this->source());
- $this->assertText("label1", "Label 1");
+ $this->assertText("{$base}label1", "Label 1");
- $this->click("button3");
+ $this->byId("{$base}button3")->click();
$this->pause(800);
$this->assertCheckBoxes(array(0));
- $this->click("button2");
+ $this->byId("{$base}button2")->click();
$this->pause(800);
$this->assertCheckBoxes(array());
- $this->click("button4");
+ $this->byId("{$base}button4")->click();
$this->pause(800);
$this->assertCheckBoxes(array(4));
- $this->click("list1_c2");
+ $this->byId("{$base}list1_c2")->click();
$this->pause(800);
- $this->assertText("label1", "Selection: value 3");
+ $this->assertText("{$base}label1", "Selection: value 3");
- $this->click("list1_c3");
+ $this->byId("{$base}list1_c3")->click();
$this->pause(800);
- $this->assertText("label1", "Selection: value 4");
+ $this->assertText("{$base}label1", "Selection: value 4");
}
function assertCheckBoxes($checks, $total = 5)
{
+ $base='ctl0_Content_';
for($i = 0; $i < $total; $i++)
{
if(in_array($i, $checks))
- $this->assertChecked("list1_c{$i}");
+ $this->assertTrue($this->byId("{$base}list1_c{$i}")->selected());
else
- $this->assertNotChecked("list1_c{$i}");
+ $this->assertFalse($this->byId("{$base}list1_c{$i}")->selected());
}
}
}
diff --git a/tests/FunctionalTests/active-controls/tests/ActiveRadioButtonTestCase.php b/tests/FunctionalTests/active-controls/tests/ActiveRadioButtonTestCase.php
index fceb2e21..7606e46b 100755
--- a/tests/FunctionalTests/active-controls/tests/ActiveRadioButtonTestCase.php
+++ b/tests/FunctionalTests/active-controls/tests/ActiveRadioButtonTestCase.php
@@ -1,52 +1,53 @@
<?php
-class ActiveRadioButtonTestCase extends PradoGenericSeleniumTest
+class ActiveRadioButtonTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("active-controls/index.php?page=ActiveRadioButtonTest");
- $this->verifyTextPresent("Active Radio Button Test");
- $this->assertText('label1', 'Label 1');
+ $base='ctl0_Content_';
+ $this->url("active-controls/index.php?page=ActiveRadioButtonTest");
+ $this->assertContains("Active Radio Button Test", $this->source());
+ $this->assertText("{$base}label1", 'Label 1');
- $this->assertNotChecked('radio1');
- $this->assertNotChecked('radio2');
- $this->assertNotChecked('radio3');
+ $this->assertFalse($this->byId("{$base}radio1")->selected());
+ $this->assertFalse($this->byId("{$base}radio2")->selected());
+ $this->assertFalse($this->byId("{$base}radio3")->selected());
- $this->assertText('radio1_label', 'Radio Button 1');
- $this->assertText('radio2_label', 'Radio Button 2');
- $this->assertText('radio3_label', 'Radio Button 3');
+ $this->assertText("{$base}radio1_label", 'Radio Button 1');
+ $this->assertText("{$base}radio2_label", 'Radio Button 2');
+ $this->assertText("{$base}radio3_label", 'Radio Button 3');
- $this->click('change_text1');
+ $this->byId("{$base}change_text1")->click();
$this->pause(800);
- $this->assertText('radio1_label', 'Hello Radio Button 1');
- $this->assertText('radio2_label', 'Radio Button 2');
- $this->assertText('radio3_label', 'Radio Button 3');
+ $this->assertText("{$base}radio1_label", 'Hello Radio Button 1');
+ $this->assertText("{$base}radio2_label", 'Radio Button 2');
+ $this->assertText("{$base}radio3_label", 'Radio Button 3');
- $this->click('change_text2');
+ $this->byId("{$base}change_text2")->click();
$this->pause(800);
- $this->assertText('radio1_label', 'Hello Radio Button 1');
- $this->assertText('radio2_label', 'Radio Button 2 World');
- $this->assertText('radio3_label', 'Radio Button 3');
+ $this->assertText("{$base}radio1_label", 'Hello Radio Button 1');
+ $this->assertText("{$base}radio2_label", 'Radio Button 2 World');
+ $this->assertText("{$base}radio3_label", 'Radio Button 3');
- $this->click('change_radio1');
+ $this->byId("{$base}change_radio1")->click();
$this->pause(800);
- $this->assertChecked('radio1');
- $this->assertNotChecked('radio2');
- $this->assertNotChecked('radio3');
+ $this->assertTrue($this->byId("{$base}radio1")->selected());
+ $this->assertFalse($this->byId("{$base}radio2")->selected());
+ $this->assertFalse($this->byId("{$base}radio3")->selected());
- $this->click('change_radio2');
+ $this->byId("{$base}change_radio2")->click();
$this->pause(800);
- $this->assertNotChecked('radio1');
- $this->assertChecked('radio2');
- $this->assertNotChecked('radio3');
+ $this->assertFalse($this->byId("{$base}radio1")->selected());
+ $this->assertTrue($this->byId("{$base}radio2")->selected());
+ $this->assertFalse($this->byId("{$base}radio3")->selected());
- $this->click('radio3');
+ $this->byId("{$base}radio3")->click();
$this->pause(800);
- $this->assertNotChecked('radio1');
- $this->assertChecked('radio2');
- $this->assertChecked('radio3');
- $this->assertText('label1', 'Label 1:Radio Button 3 Checked');
+ $this->assertFalse($this->byId("{$base}radio1")->selected());
+ $this->assertTrue($this->byId("{$base}radio2")->selected());
+ $this->assertTrue($this->byId("{$base}radio3")->selected());
+ $this->assertText("{$base}label1", 'Label 1:Radio Button 3 Checked');
}
diff --git a/tests/FunctionalTests/active-controls/tests/AutoCompleteTestCase.php b/tests/FunctionalTests/active-controls/tests/AutoCompleteTestCase.php
index 2033d6ff..3fbf1e5e 100755
--- a/tests/FunctionalTests/active-controls/tests/AutoCompleteTestCase.php
+++ b/tests/FunctionalTests/active-controls/tests/AutoCompleteTestCase.php
@@ -1,42 +1,43 @@
<?php
-class AutoCompleteTestCase extends PradoGenericSeleniumTest
+class AutoCompleteTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("active-controls/index.php?page=AutoCompleteTest");
- $this->verifyTextPresent("TAutoComplete Test");
+ $base='ctl0_Content_';
+ $this->url("active-controls/index.php?page=AutoCompleteTest");
+ $this->assertContains("TAutoComplete Test", $this->source());
- $this->assertText("label1", "Label 1");
+ $this->assertText("{$base}label1", "Label 1");
- $this->type("textbox3", 'a');
- $this->runScript('Prado.Registry.get(\'textbox3\').onKeyPress({})');
- $this->pause(500);
- $this->verifyTextPresent('Andorra');
- $this->assertText("label1", "suggestion for a");
+ $this->byId("{$base}textbox3")->click();
+ $this->keys('a');
+ $this->pause(800);
+ $this->assertContains('Andorra', $this->source());
+ $this->assertText("{$base}label1", "suggestion for a");
- $this->type("textbox3", 'au');
- $this->runScript('Prado.Registry.get(\'textbox3\').onKeyPress({})');
- $this->pause(500);
- $this->verifyTextPresent('Australia');
- $this->assertText("label1", "suggestion for au");
+ $this->keys('u');
+ $this->pause(800);
+ $this->assertContains('Australia', $this->source());
+ $this->assertText("{$base}label1", "suggestion for au");
- $this->click("css=#textbox3_result ul li");
- $this->pause(500);
- $this->assertText("label1", "Label 1: Austria");
+ $this->byCssSelector("#{$base}textbox3_result ul li")->click();
+ $this->pause(800);
+ $this->assertText("{$base}label1", "Label 1: Austria");
- $this->type("textbox2", "cu");
- $this->runScript('Prado.Registry.get(\'textbox2\').onKeyPress({})');
- $this->pause(500);
- $this->click('css=#textbox2_result ul li');
- $this->pause(500);
- $this->assertText("label1", "Label 1: Cuba");
- $this->type("textbox2", "Cuba,me");
- $this->runScript('Prado.Registry.get(\'textbox2\').onKeyPress({})');
- $this->pause(500);
- $this->click('css=#textbox2_result ul li');
+ $this->byId("{$base}textbox2")->click();
+ $this->keys('cu');
+ $this->pause(800);
+ $this->byCssSelector("#{$base}textbox2_result ul li")->click();
+ $this->pause(800);
+ $this->assertText("{$base}label1", "Label 1: Cuba");
+
+ $this->keys(PHPUnit_Extensions_Selenium2TestCase_Keys::END);
+ $this->keys(',me');
+ $this->pause(800);
+ $this->byCssSelector("#{$base}textbox2_result ul li")->click();
$this->pause(500);
- $this->assertText("label1", "Label 1: Cuba,Mexico");
+ $this->assertText("{$base}label1", "Label 1: Cuba,Mexico");
}
}
diff --git a/tests/FunctionalTests/active-controls/tests/CalculatorTestCase.php b/tests/FunctionalTests/active-controls/tests/CalculatorTestCase.php
index 48960d39..9bef7d00 100755
--- a/tests/FunctionalTests/active-controls/tests/CalculatorTestCase.php
+++ b/tests/FunctionalTests/active-controls/tests/CalculatorTestCase.php
@@ -1,23 +1,24 @@
<?php
-class CalculatorTestCase extends PradoGenericSeleniumTest
+class CalculatorTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("active-controls/index.php?page=Calculator");
- $this->assertTextPresent("Callback Enabled Calculator");
- $this->assertNotVisible("summary");
-
- $this->click("sum");
- $this->assertVisible("summary");
-
- $this->type("a", "2");
- $this->type("b", "5");
-
- $this->click("sum");
+ $base='ctl0_Content_';
+ $this->url("active-controls/index.php?page=Calculator");
+ $this->assertContains("Callback Enabled Calculator", $this->source());
+ $this->assertNotVisible("{$base}summary");
+
+ $this->byId("{$base}sum")->click();
+ $this->assertVisible("{$base}summary");
+
+ $this->type("{$base}a", "2");
+ $this->type("{$base}b", "5");
+
+ $this->byId("{$base}sum")->click();
$this->pause(500);
- $this->assertNotVisible("summary");
- $this->assertValue("c", "7");
+ $this->assertNotVisible("{$base}summary");
+ $this->assertValue("{$base}c", "7");
}
}
diff --git a/tests/FunctionalTests/active-controls/tests/CallbackAdapterTestCase.php b/tests/FunctionalTests/active-controls/tests/CallbackAdapterTestCase.php
index c495935a..d5d112d8 100755
--- a/tests/FunctionalTests/active-controls/tests/CallbackAdapterTestCase.php
+++ b/tests/FunctionalTests/active-controls/tests/CallbackAdapterTestCase.php
@@ -1,58 +1,66 @@
<?php
-class CallbackAdapterTestCase extends PradoGenericSeleniumTest
+class CallbackAdapterTestCase extends PradoGenericSelenium2Test
{
function test()
{
+ $base='ctl0_Content_';
+ $this->url("active-controls/index.php?page=ControlAdapterTest");
+ $this->assertContains('Control Adapter - State Tracking Tests', $this->source());
- $this->open("active-controls/index.php?page=ControlAdapterTest");
- $this->assertTextPresent('Control Adapter - State Tracking Tests');
+ $this->byId("{$base}button2")->click();
+ $this->assertEquals('ok', $this->alertText());
+ $this->acceptAlert();
- $this->click('button2');
- $this->assertAlert('ok');
-
- $this->click('test6');
+ $this->byId("{$base}test6")->click();
$this->pause(800);
- $this->click('test7');
+ $this->byId("{$base}test7")->click();
$this->pause(800);
- $this->click('test8');
+ $this->byId("{$base}test8")->click();
$this->pause(800);
- $this->click('test9');
+ $this->byId("{$base}test9")->click();
$this->pause(800);
- $this->click('button1');
- $this->assertAlert('haha!');
-
- $this->click('button2');
- $this->assertAlert('ok');
- $this->assertAlert('baz!');
+ $this->byId("{$base}button1")->click();
+ $this->assertEquals('haha!', $this->alertText());
+ $this->acceptAlert();
+ $this->byId("{$base}button2")->click();
+ $this->assertEquals('ok', $this->alertText());
+ $this->acceptAlert();
+ $this->pause(500);
+ $this->assertEquals('baz!', $this->alertText());
+ $this->acceptAlert();
}
/*
function testIE()
{
- $this->open("active-controls/index.php?page=ControlAdapterTest");
- $this->assertTextPresent('Control Adapter - State Tracking Tests');
+ $this->url("active-controls/index.php?page=ControlAdapterTest");
+ $this->assertContains('Control Adapter - State Tracking Tests', $this->source());
- $this->click('button2');
- $this->assertAlert('ok');
+ $this->byId("{$base}button2")->click();
+ $this->assertEquals('ok', $this->alertText());
+ $this->acceptAlert();
- $this->click('test6');
+ $this->byId('test6')->click();
$this->pause(800);
- $this->click('test7');
+ $this->byId('test7')->click();
$this->pause(800);
- $this->click('test8');
+ $this->byId('test8')->click();
$this->pause(800);
- $this->click('test9');
+ $this->byId('test9')->click();
$this->pause(800);
- $this->click('button1');
- $this->assertAlert('haha!');
+ $this->byId("{$base}button1")->click();
+ $this->assertEquals('haha!', $this->alertText());
+ $this->acceptAlert();
//IE alerts in diffrent order
- $this->click('button2');
- $this->assertAlert('baz!');
- $this->assertAlert('ok');
+ $this->byId("{$base}button2")->click();
+ $this->assertEquals('baz!', $this->alertText());
+ $this->acceptAlert();
+ $this->assertEquals('ok', $this->alertText());
+ $this->acceptAlert();
}
*/
}
diff --git a/tests/FunctionalTests/active-controls/tests/CallbackOptionsTestCase.php b/tests/FunctionalTests/active-controls/tests/CallbackOptionsTestCase.php
index d1f48cf3..4c2c7070 100755
--- a/tests/FunctionalTests/active-controls/tests/CallbackOptionsTestCase.php
+++ b/tests/FunctionalTests/active-controls/tests/CallbackOptionsTestCase.php
@@ -1,29 +1,30 @@
<?php
-class CallbackOptionsTestCase extends PradoGenericSeleniumTest
+class CallbackOptionsTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("active-controls/index.php?page=CallbackOptionsTest");
- $this->verifyTextPresent("TCallbackOptions Test");
+ $base='ctl0_Content_';
+ $this->url("active-controls/index.php?page=CallbackOptionsTest");
+ $this->assertContains("TCallbackOptions Test", $this->source());
$this->assertText("label1", "Label 1");
$this->assertText("label2", "Label 2");
$this->assertText("label3", "Label 3");
- $this->click("button1");
+ $this->byId("{$base}button1")->click();
$this->pause(800);
$this->assertText("label1", "Button 1 has returned");
$this->assertText("label2", "Label 2");
$this->assertText("label3", "Label 3");
- $this->click("button2");
+ $this->byId("{$base}button2")->click();
$this->pause(800);
$this->assertText("label1", "Button 1 has returned");
$this->assertText("label2", "Button 2 has returned");
$this->assertText("label3", "Label 3");
- $this->click("button3");
+ $this->byId("{$base}button3")->click();
$this->pause(800);
$this->assertText("label1", "Button 1 has returned");
$this->assertText("label2", "Button 2 has returned");
diff --git a/tests/FunctionalTests/active-controls/tests/CustomTemplateTestCase.php b/tests/FunctionalTests/active-controls/tests/CustomTemplateTestCase.php
index 7e38423e..3b594b39 100755
--- a/tests/FunctionalTests/active-controls/tests/CustomTemplateTestCase.php
+++ b/tests/FunctionalTests/active-controls/tests/CustomTemplateTestCase.php
@@ -1,20 +1,21 @@
<?php
-class CustomTemplateTestCase extends PradoGenericSeleniumTest
+class CustomTemplateTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open('active-controls/index.php?page=CustomTemplateControlTest');
- $this->assertTextPresent('Add Dynamic Custom TTemplateControl Test');
- $this->assertText('label1', 'Label 1');
+ $base='ctl0_Content_';
+ $this->url('active-controls/index.php?page=CustomTemplateControlTest');
+ $this->assertContains('Add Dynamic Custom TTemplateControl Test', $this->source());
+ $this->assertText("{$base}label1", 'Label 1');
- $this->type('foo', 'Foo Bar!');
- $this->click('button2');
+ $this->type("{$base}foo", 'Foo Bar!');
+ $this->byId("{$base}button2")->click();
$this->pause(800);
- $this->assertVisible('ctl1_ThePanel');
- $this->assertTextPresent('Client ID: ctl1_ThePanel');
+ $this->assertVisible("{$base}ctl0_ThePanel");
+ $this->assertContains("Client ID: {$base}ctl0_ThePanel", $this->source());
- $this->assertText('label1', 'Button 1 was clicked Foo Bar! using callback!... and this is the textbox text: Foo Bar!');
+ $this->assertText("{$base}label1", 'Button 1 was clicked Foo Bar! using callback!... and this is the textbox text: Foo Bar!');
}
}
diff --git a/tests/FunctionalTests/active-controls/tests/DelayedCallbackTestCase.php b/tests/FunctionalTests/active-controls/tests/DelayedCallbackTestCase.php
index 841de5aa..49c268ad 100755
--- a/tests/FunctionalTests/active-controls/tests/DelayedCallbackTestCase.php
+++ b/tests/FunctionalTests/active-controls/tests/DelayedCallbackTestCase.php
@@ -1,20 +1,21 @@
<?php
-class DelayedCallbackTestCase extends PradoGenericSeleniumTest
+class DelayedCallbackTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("active-controls/index.php?page=DelayedCallback");
- $this->verifyTextPresent("Delayed Callback Test");
+ $base='ctl0_Content_';
+ $this->url("active-controls/index.php?page=DelayedCallback");
+ $this->assertContains("Delayed Callback Test", $this->source());
- $this->assertText("status", "");
- $this->click("button1");
- $this->click("button2");
+ $this->assertText("{$base}status", "");
+ $this->byId("{$base}button1")->click();
+ $this->byId("{$base}button2")->click();
$this->pause("5000");
- $this->assertText("status", "Callback 1 returned after 4s");
+ $this->assertText("{$base}status", "Callback 1 returned after 4s");
$this->pause("3000");
- $this->assertText("status", "Callback 2 delayed 2s");
+ $this->assertText("{$base}status", "Callback 2 delayed 2s");
}
}
diff --git a/tests/FunctionalTests/active-controls/tests/EventTriggerTestCase.php b/tests/FunctionalTests/active-controls/tests/EventTriggerTestCase.php
index 30678786..7cc9a3bd 100755
--- a/tests/FunctionalTests/active-controls/tests/EventTriggerTestCase.php
+++ b/tests/FunctionalTests/active-controls/tests/EventTriggerTestCase.php
@@ -1,20 +1,21 @@
<?php
-class EventTriggerTestCase extends PradoGenericSeleniumTest
+class EventTriggerTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("active-controls/index.php?page=EventTriggeredCallback");
- $this->verifyTextPresent("Event Triggered Callback Test");
+ $base = "ctl0_Content_";
+ $this->url("active-controls/index.php?page=EventTriggeredCallback");
+ $this->assertContains("Event Triggered Callback Test", $this->source());
- $this->assertText('label1', 'Label 1');
+ $this->assertText("{$base}label1", 'Label 1');
- $this->click('button1');
+ $this->byId("button1")->click();
$this->pause(800);
- $this->assertText('label1', 'button 1 clicked');
+ $this->assertText("{$base}label1", 'button 1 clicked');
- $this->type('text1', 'test');
+ $this->byId("{$base}text1")->value('test');
$this->pause(800);
- $this->assertText('label1', 'text 1 focused');
+ $this->assertText("{$base}label1", 'text 1 focused');
}
}
diff --git a/tests/FunctionalTests/active-controls/tests/NestedActiveControlsTestCase.php b/tests/FunctionalTests/active-controls/tests/NestedActiveControlsTestCase.php
index e2ceb33e..f08a6f78 100755
--- a/tests/FunctionalTests/active-controls/tests/NestedActiveControlsTestCase.php
+++ b/tests/FunctionalTests/active-controls/tests/NestedActiveControlsTestCase.php
@@ -1,24 +1,25 @@
<?php
-class NestedActiveControlsTestCase extends PradoGenericSeleniumTest
+class NestedActiveControlsTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("active-controls/index.php?page=NestedActiveControls");
- $this->verifyTextPresent("Nested Active Controls Test");
- $this->assertText("label1", "Label 1");
- $this->assertText("label2", "Label 2");
- $this->assertTextNotPresent("Label 3");
+ $base='ctl0_Content_';
+ $this->url("active-controls/index.php?page=NestedActiveControls");
+ $this->assertContains("Nested Active Controls Test", $this->source());
+ $this->assertText("{$base}label1", "Label 1");
+ $this->assertText("{$base}label2", "Label 2");
+ $this->assertNotContains("Label 3", $this->source());
- $this->click("div1");
+ $this->byId("div1")->click();
$this->pause(800);
- $this->assertTextPresent("Something lalala");
- $this->assertText("label3", "Label 3");
+ $this->assertContains("Something lalala", $this->source());
+ $this->assertText("{$base}label3", "Label 3");
- $this->click("button1");
+ $this->byId("{$base}button1")->click();
$this->pause(800);
- $this->assertText("label1", "Label 1: Button 1 Clicked");
- $this->assertText("label2", "Label 2: Button 1 Clicked");
- $this->assertText("label3", "Label 3: Button 1 Clicked");
+ $this->assertText("{$base}label1", "Label 1: Button 1 Clicked");
+ $this->assertText("{$base}label2", "Label 2: Button 1 Clicked");
+ $this->assertText("{$base}label3", "Label 3: Button 1 Clicked");
}
}
diff --git a/tests/FunctionalTests/active-controls/tests/PopulateListTestCase.php b/tests/FunctionalTests/active-controls/tests/PopulateListTestCase.php
index adb5a3a5..e7f7f287 100755
--- a/tests/FunctionalTests/active-controls/tests/PopulateListTestCase.php
+++ b/tests/FunctionalTests/active-controls/tests/PopulateListTestCase.php
@@ -1,23 +1,24 @@
<?php
-class PopulateListTestCase extends PradoGenericSeleniumTest
+class PopulateListTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("active-controls/index.php?page=PopulateActiveList");
- $this->verifyTextPresent("Populate active list controls");
- $this->assertText("label1", "");
+ $base='ctl0_Content_';
+ $this->url("active-controls/index.php?page=PopulateActiveList");
+ $this->assertContains("Populate active list controls", $this->source());
+ $this->assertText("{$base}label1", "");
- $this->click("button1");
+ $this->byId("{$base}button1")->click();
$this->pause(800);
- $this->select("list1", "World");
+ $this->select("{$base}list1", "World");
$this->pause(800);
- $this->assertText("label1", "list1: World");
+ $this->assertText("{$base}label1", "list1: World");
- $this->click("button2");
+ $this->byId("{$base}button2")->click();
$this->pause(800);
- $this->select("list2", "Prado");
+ $this->select("{$base}list2", "Prado");
$this->pause(800);
- $this->assertText("label1", "list2: Prado");
+ $this->assertText("{$base}label1", "list2: Prado");
}
}
diff --git a/tests/FunctionalTests/active-controls/tests/PostLoadingTestCase.php b/tests/FunctionalTests/active-controls/tests/PostLoadingTestCase.php
index 21a5128d..271a2ffb 100755
--- a/tests/FunctionalTests/active-controls/tests/PostLoadingTestCase.php
+++ b/tests/FunctionalTests/active-controls/tests/PostLoadingTestCase.php
@@ -1,20 +1,21 @@
<?php
-class PostLoadingTestCase extends PradoGenericSeleniumTest
+class PostLoadingTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open('active-controls/index.php?page=PostLoadingTest');
- $this->assertTextPresent('PostLoading Test');
+ $base="ctl0_Content_";
+ $this->url('active-controls/index.php?page=PostLoadingTest');
+ $this->assertContains('PostLoading Test', $this->source());
- $this->assertTextNotPresent('Hello World');
+ $this->assertNotContains('Hello World', $this->source());
- $this->click('div1');
+ $this->byId('div1')->click();
$this->pause(800);
- $this->type('MyTextBox', 'Hello World');
- $this->click('MyButton');
+ $this->type("{$base}MyTextBox", 'Hello World');
+ $this->byId("{$base}MyButton")->click();
$this->pause(800);
- $this->assertTextPresent('Result is Hello World');
+ $this->assertContains('Result is Hello World', $this->source());
}
}
diff --git a/tests/FunctionalTests/active-controls/tests/ReplaceContentTestCase.php b/tests/FunctionalTests/active-controls/tests/ReplaceContentTestCase.php
index fd273ae7..c3345d6a 100755
--- a/tests/FunctionalTests/active-controls/tests/ReplaceContentTestCase.php
+++ b/tests/FunctionalTests/active-controls/tests/ReplaceContentTestCase.php
@@ -1,90 +1,90 @@
<?php
-class ReplaceContentTestCase extends PradoGenericSeleniumTest
+class ReplaceContentTestCase extends PradoGenericSelenium2Test
{
function test()
{
+ $base='ctl0_Content_';
+ $this->url('active-controls/index.php?page=ReplaceContentTest');
+ $this->assertContains('Callback Replace Content Test', $this->source());
- $this->open('active-controls/index.php?page=ReplaceContentTest');
- $this->assertTextPresent('Callback Replace Content Test');
+ $this->assertText("{$base}subpanel", 'Sub Panel');
+ $this->assertText("{$base}panel1", "Main Panel\nSub Panel");
- $this->assertText('subpanel', 'Sub Panel');
- $this->assertText('panel1', 'Main Panel Sub Panel');
+ $this->type("{$base}content", 'something');
- $this->type('content', 'something');
-
- $this->click('btn_append');
+ $this->byId("{$base}btn_append")->click();
$this->pause(800);
- $this->assertText('subpanel', 'Sub Panel something');
- $this->assertText('panel1', 'Main Panel Sub Panel something');
+ $this->assertText("{$base}subpanel", 'Sub Panel something');
+ $this->assertText("{$base}panel1", "Main Panel\nSub Panel something");
- $this->type('content', 'more');
- $this->click('btn_prepend');
+ $this->type("{$base}content", 'more');
+ $this->byId("{$base}btn_prepend")->click();
$this->pause(800);
- $this->assertText('subpanel', 'more Sub Panel something');
- $this->assertText('panel1', 'Main Panel more Sub Panel something');
+ $this->assertText("{$base}subpanel", 'more Sub Panel something');
+ $this->assertText("{$base}panel1", "Main Panel\nmore Sub Panel something");
- $this->type('content', 'prado');
- $this->click('btn_before');
+ $this->type("{$base}content", 'prado');
+ $this->byId("{$base}btn_before")->click();
$this->pause(800);
- $this->assertText('subpanel', 'more Sub Panel something');
- $this->assertText('panel1', 'Main Panel pradomore Sub Panel something');
+ $this->assertText("{$base}subpanel", 'more Sub Panel something');
+ $this->assertText("{$base}panel1", "Main Panel prado\nmore Sub Panel something");
- $this->type('content', ' php ');
- $this->click('btn_after');
+ $this->type("{$base}content", ' php ');
+ $this->byId("{$base}btn_after")->click();
$this->pause(800);
- $this->type('content', 'mauahahaha');
- $this->click('btn_replace');
+ $this->type("{$base}content", 'mauahahaha');
+ $this->byId("{$base}btn_replace")->click();
$this->pause(1000);
- $this->assertText('panel1', 'Main Panel pradomauahahahaphp');
+ $this->assertText("{$base}panel1", 'Main Panel pradomauahahaha php');
}
/*
function testIE()
{
- $this->open('active-controls/index.php?page=ReplaceContentTest');
- $this->assertTextPresent('Callback Replace Content Test');
+ $this->url('active-controls/index.php?page=ReplaceContentTest');
+ $this->assertContains('Callback Replace Content Test', $this->source());
- $this->assertText('subpanel', 'Sub Panel');
- $this->assertText('panel1', 'regexp:Main Panel\s*Sub Panel');
+ $this->assertText("{$base}subpanel", 'Sub Panel');
+ $this->assertText("{$base}panel1", 'regexp:Main Panel\s*Sub Panel');
- $this->type('content', 'something');
+ $this->type("{$base}content", 'something');
- $this->click('btn_append');
+ $this->byId('btn_append')->click();
$this->pause(800);
- $this->assertText('subpanel', 'Sub Panel something');
- $this->assertText('panel1', 'regexp:Main Panel\s*Sub Panel\s*something');
+ $this->assertText("{$base}subpanel", 'Sub Panel something');
+ $this->assertText("{$base}panel1", 'regexp:Main Panel\s*Sub Panel\s*something');
- $this->type('content', 'more');
- $this->click('btn_prepend');
+ $this->type("{$base}content", 'more');
+ $this->byId('btn_prepend')->click();
$this->pause(800);
- $this->assertText('subpanel', 'regexp:more\s*Sub Panel\s*something');
- $this->assertText('panel1', 'regexp:Main Panel\s*moreSub Panel\s*something');
+ $this->assertText("{$base}subpanel", 'regexp:more\s*Sub Panel\s*something');
+ $this->assertText("{$base}panel1", 'regexp:Main Panel\s*moreSub Panel\s*something');
- $this->type('content', 'prado');
- $this->click('btn_before');
+ $this->type("{$base}content", 'prado');
+ $this->byId('btn_before')->click();
$this->pause(800);
- $this->assertText('subpanel', 'regexp:more\s*Sub Panel\s*something');
- $this->assertText('panel1', 'regexp:Main Panel\s*prado\s*more\s*Sub Panel\s*something');
+ $this->assertText("{$base}subpanel", 'regexp:more\s*Sub Panel\s*something');
+ $this->assertText("{$base}panel1", 'regexp:Main Panel\s*prado\s*more\s*Sub Panel\s*something');
- $this->type('content', ' php ');
- $this->click('btn_after');
+ $this->type("{$base}content", ' php ');
+ $this->byId('btn_after')->click();
$this->pause(800);
- $this->type('content', 'mauahahaha');
- $this->click('btn_replace');
+ $this->type("{$base}content", 'mauahahaha');
+ $this->byId('btn_replace')->click();
$this->pause(1000);
- $this->assertText('panel1', 'Main Panel pradomauahahahaphp');
+ $this->assertText("{$base}panel1", 'Main Panel pradomauahahahaphp');
}
*/
}
diff --git a/tests/FunctionalTests/active-controls/tests/TextBoxCallbackTestCase.php b/tests/FunctionalTests/active-controls/tests/TextBoxCallbackTestCase.php
index 14d575fe..559c80a6 100755
--- a/tests/FunctionalTests/active-controls/tests/TextBoxCallbackTestCase.php
+++ b/tests/FunctionalTests/active-controls/tests/TextBoxCallbackTestCase.php
@@ -1,15 +1,16 @@
<?php
-class TextBoxCallbackTestCase extends PradoGenericSeleniumTest
+class TextBoxCallbackTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("active-controls/index.php?page=ActiveTextBoxCallback");
- $this->verifyTextPresent("ActiveTextBox Callback Test");
- $this->assertText("label1", "Label 1");
+ $base='ctl0_Content_';
+ $this->url("active-controls/index.php?page=ActiveTextBoxCallback");
+ $this->assertContains("ActiveTextBox Callback Test", $this->source());
+ $this->assertText("{$base}label1", "Label 1");
- $this->type("textbox1", "hello!");
+ $this->type("{$base}textbox1", "hello!");
$this->pause(800);
- $this->assertText("label1", "Label 1: hello!");
+ $this->assertText("{$base}label1", "Label 1: hello!");
}
}
diff --git a/tests/FunctionalTests/active-controls/tests/TextBoxGroupValidationTestCase.php b/tests/FunctionalTests/active-controls/tests/TextBoxGroupValidationTestCase.php
index ffc1ac72..2562a18b 100755
--- a/tests/FunctionalTests/active-controls/tests/TextBoxGroupValidationTestCase.php
+++ b/tests/FunctionalTests/active-controls/tests/TextBoxGroupValidationTestCase.php
@@ -1,22 +1,23 @@
<?php
-class TextBoxGroupValidationTestCase extends PradoGenericSeleniumTest
+class TextBoxGroupValidationTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("active-controls/index.php?page=TextBoxValidationCallback");
- $this->assertTextPresent('TextBox AutoPostBack With Group Validation');
- $this->assertNotVisible('validator1');
+ $base="ctl0_Content_";
+ $this->url("active-controls/index.php?page=TextBoxValidationCallback");
+ $this->assertContains('TextBox AutoPostBack With Group Validation', $this->source());
+ $this->assertNotVisible("{$base}validator1");
- $this->type('ZipCode', 'test');
- $this->assertVisible('validator1');
+ $this->type("{$base}ZipCode", 'test');
+ $this->assertVisible("{$base}validator1");
- $this->type('Address', 'Sydney');
- $this->type('ZipCode', '2000');
+ $this->type("{$base}Address", 'Sydney');
+ $this->type("{$base}ZipCode", '2000');
- $this->assertNotVisible('validator1');
+ $this->assertNotVisible("{$base}validator1");
$this->pause(800);
- $this->assertValue('City', 'City: Sydney Zip: 2000');
+ $this->assertValue("{$base}City", 'City: Sydney Zip: 2000');
}
}
diff --git a/tests/FunctionalTests/active-controls/tests/TimeTriggeredCallbackTestCase.php b/tests/FunctionalTests/active-controls/tests/TimeTriggeredCallbackTestCase.php
index de0ecad8..741c7a2d 100755
--- a/tests/FunctionalTests/active-controls/tests/TimeTriggeredCallbackTestCase.php
+++ b/tests/FunctionalTests/active-controls/tests/TimeTriggeredCallbackTestCase.php
@@ -1,19 +1,20 @@
<?php
-class TimeTriggeredCallbackTestCase extends PradoGenericSeleniumTest
+class TimeTriggeredCallbackTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("active-controls/index.php?page=TimeTriggeredCallbackTest");
- $this->verifyTextPresent("TimeTriggeredCallback + ViewState Tests");
+ $base='ctl0_Content_';
+ $this->url("active-controls/index.php?page=TimeTriggeredCallbackTest");
+ $this->assertContains("TimeTriggeredCallback + ViewState Tests", $this->source());
- $this->assertText("label1", "ViewState Counter :");
+ $this->assertText("{$base}label1", "ViewState Counter :");
- $this->click("button1");
+ $this->byId("{$base}button1")->click();
$this->pause(8000);
- $this->assertText("label1", "ViewState Counter : 1 2 3 4 5 6 7 8 9 10");
+ $this->assertText("{$base}label1", "ViewState Counter : 1 2 3 4 5 6 7 8 9 10");
}
}
diff --git a/tests/FunctionalTests/active-controls/tests/ValueTriggerCallbackTestCase.php b/tests/FunctionalTests/active-controls/tests/ValueTriggerCallbackTestCase.php
index 5113cc92..8b0428a9 100755
--- a/tests/FunctionalTests/active-controls/tests/ValueTriggerCallbackTestCase.php
+++ b/tests/FunctionalTests/active-controls/tests/ValueTriggerCallbackTestCase.php
@@ -1,20 +1,21 @@
<?php
-class ValueTriggerTestCase extends PradoGenericSeleniumTest
+class ValueTriggerTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("active-controls/index.php?page=ValueTriggerCallbackTest");
- $this->verifyTextPresent("Value Trigger Callback Test");
+ $base='ctl0_Content_';
+ $this->url("active-controls/index.php?page=ValueTriggerCallbackTest");
+ $this->assertContains("Value Trigger Callback Test", $this->source());
- $this->assertText('label1', 'Label 1');
+ $this->assertText("{$base}label1", 'Label 1');
- $this->type('text1', 'test');
+ $this->type("{$base}text1", 'test');
$this->pause(2000);
- $this->assertText('label1', 'Old = : New Value = test');
+ $this->assertText("{$base}label1", 'Old = : New Value = test');
- $this->type('text1', 'more');
+ $this->type("{$base}text1", 'more');
$this->pause(3000);
- $this->assertText('label1', 'Old = test : New Value = more');
+ $this->assertText("{$base}label1", 'Old = test : New Value = more');
}
}
diff --git a/tests/FunctionalTests/active-controlstests/ActiveRatingListTestCase.php b/tests/FunctionalTests/active-controlstests/ActiveRatingListTestCase.php
index ef82eaa3..2b9a0166 100755
--- a/tests/FunctionalTests/active-controlstests/ActiveRatingListTestCase.php
+++ b/tests/FunctionalTests/active-controlstests/ActiveRatingListTestCase.php
@@ -1,242 +1,250 @@
<?php
/**
* ActiveRatingListTestCase.php
- *
+ *
* @author Bradley Booms <Bradley.Booms@nsighttel.com>
* @version Creation Date: Oct 22, 2008
*/
/**
* ActiveRatingListTestCase.php class
- *
- *
- *
+ *
+ *
+ *
* Properties
* -
- *
+ *
* @author Bradley Booms <Bradley.Booms@nsighttel.com>
* @version Modified Date: Oct 22, 2008
- *
+ *
* Modifications:
*/
-class ActiveRatingListTestCase extends PradoGenericSeleniumTest
+class ActiveRatingListTestCase extends PradoGenericSelenium2Test
{
function testCheckBoxes()
{
+ $base='ctl0_Content_';
// Verify we're on the right page.
- $this->open("active-controls/index.php?page=ActiveRatingListCheckBoxesTest");
- $this->verifyTextPresent("TActiveRatingList Check Boxes Test Case");
- $this->assertCheckBoxes("RatingList", array(2), 6);
-
+ $this->url("active-controls/index.php?page=ActiveRatingListCheckBoxesTest");
+ $this->assertContains("TActiveRatingList Check Boxes Test Case", $this->source());
+ $this->assertCheckBoxes("{$base}RatingList", array(2), 6);
+
// Change the list and make sure the radio buttons get updated properly.
- $this->clickTD("RatingList_c4");
+ $this->clickTD("{$base}RatingList_c4");
$this->pause(800);
- $this->assertCheckBoxes("RatingList", array(4), 6);
-
- $this->clickTD("RatingList_c2");
+ $this->assertCheckBoxes("{$base}RatingList", array(4), 6);
+
+ $this->clickTD("{$base}RatingList_c2");
$this->pause(800);
- $this->assertCheckBoxes("RatingList", array(2), 6);
+ $this->assertCheckBoxes("{$base}RatingList", array(2), 6);
}
function testRating()
{
+ $base='ctl0_Content_';
// Verify we're on the right page.
- $this->open("active-controls/index.php?page=ActiveRatingListRatingTest");
- $this->verifyTextPresent("TActiveRatingList Rating Test Case");
-
+ $this->url("active-controls/index.php?page=ActiveRatingListRatingTest");
+ $this->assertContains("TActiveRatingList Rating Test Case", $this->source());
+
// Check the list, make sure it starts out with 5 stars.
- $this->assertText("Status", "Rating: 5");
-
+ $this->assertText("{$base}Status", "Rating: 5");
+
// Click on 1 star and make sure the Rating property updates.
- $this->clickTD("RatingList_c0");
+ $this->clickTD("{$base}RatingList_c0");
$this->pause(800);
- $this->assertText("Status", "Rating: 1");
-
+ $this->assertText("{$base}Status", "Rating: 1");
+
// Then set Rating to three on the server side and make sure it's correct.
- $this->click("SetRating");
+ $this->byId("{$base}SetRating")->click();
$this->pause(800);
- $this->assertText("Status", "Rating: 3");
+ $this->assertText("{$base}Status", "Rating: 3");
}
function testSelectedIndex()
{
+ $base='ctl0_Content_';
// Verify we're on the right page.
- $this->open("active-controls/index.php?page=ActiveRatingListSelectedIndexTest");
- $this->verifyTextPresent("TActiveRatingList SelectedIndex Test Case");
- $this->assertText("Status", " SelectedIndex: 1");
-
+ $this->url("active-controls/index.php?page=ActiveRatingListSelectedIndexTest");
+ $this->assertContains("TActiveRatingList SelectedIndex Test Case", $this->source());
+ $this->assertText("{$base}Status", "SelectedIndex: 1");
+
// Click on 5 stars and make sure the SelectedIndex property updates.
- $this->clickTD("RatingList_c4");
+ $this->clickTD("{$base}RatingList_c4");
$this->pause(800);
- $this->assertText("Status", " SelectedIndex: 4");
-
+ $this->assertText("{$base}Status", "SelectedIndex: 4");
+
// Then set SelectedIndex to 5 on the server side and make sure it's correct.
- $this->click("SetSelectedIndex");
+ $this->byId("{$base}SetSelectedIndex")->click();
$this->pause(800);
- $this->assertText("Status", " SelectedIndex: 5");
+ $this->assertText("{$base}Status", "SelectedIndex: 5");
}
function testAutoPostBack()
{
+ $base='ctl0_Content_';
// Verify we're on the right page.
- $this->open("active-controls/index.php?page=ActiveRatingListAutoPostBackTest");
- $this->verifyTextPresent("TActiveRatingList AutoPostBack Test Case");
- $this->assertText("Status", "AutoPostback=false");
-
+ $this->url("active-controls/index.php?page=ActiveRatingListAutoPostBackTest");
+ $this->assertContains("TActiveRatingList AutoPostBack Test Case", $this->source());
+ $this->assertText("{$base}Status", "AutoPostback=false");
+
// Make sure that it doesn't auto post when clicked.
- $this->clickTD("RatingList_c3");
+ $this->clickTD("{$base}RatingList_c3");
$this->pause(800);
- $this->assertText("Status", "AutoPostback=false");
-
+ $this->assertText("{$base}Status", "AutoPostback=false");
+
// Then submit with an active button and make sure it updates.
- $this->click("Submit");
+ $this->byId("{$base}Submit")->click();
$this->pause(800);
- $this->assertText("Status", "4 : Good");
+ $this->assertText("{$base}Status", "4 : Good");
}
function testAllowInput()
{
+ $base='ctl0_Content_';
// Verify we're on the right page.
- $this->open("active-controls/index.php?page=ActiveRatingListAllowInputTest");
- $this->verifyTextPresent("TActiveRatingList AllowInput Test Case");
- $this->assertText("Status", "AllowInput=false");
- $this->assertCheckBoxes("RatingList", array(3), 6);
+ $this->url("active-controls/index.php?page=ActiveRatingListAllowInputTest");
+ $this->assertContains("TActiveRatingList AllowInput Test Case", $this->source());
+ $this->assertText("{$base}Status", "AllowInput=false");
+ $this->assertCheckBoxes("{$base}RatingList", array(3), 6);
// Make sure that clicking doesn't change anything.
- $this->clickTD("RatingList_c5");
+ $this->clickTD("{$base}RatingList_c5");
$this->pause(800);
- $this->assertText("Status", "AllowInput=false");
- $this->assertCheckBoxes("RatingList", array(3), 6);
+ $this->assertText("{$base}Status", "AllowInput=false");
+ $this->assertCheckBoxes("{$base}RatingList", array(3), 6);
}
function testReadOnly()
{
+ $base='ctl0_Content_';
// Verify we're on the right page.
- $this->open("active-controls/index.php?page=ActiveRatingListReadOnlyTest");
- $this->verifyTextPresent("TActiveRatingList ReadOnly Test Case");
- $this->assertText("Status", "ReadOnly=true");
- $this->assertCheckBoxes("RatingList", array(0), 6);
+ $this->url("active-controls/index.php?page=ActiveRatingListReadOnlyTest");
+ $this->assertContains("TActiveRatingList ReadOnly Test Case", $this->source());
+ $this->assertText("{$base}Status", "ReadOnly=true");
+ $this->assertCheckBoxes("{$base}RatingList", array(0), 6);
- $this->clickTD("RatingList_c4");
+ $this->clickTD("{$base}RatingList_c4");
$this->pause(800);
- $this->assertText("Status", "ReadOnly=true");
- $this->assertCheckBoxes("RatingList", array(0), 6);
-
+ $this->assertText("{$base}Status", "ReadOnly=true");
+ $this->assertCheckBoxes("{$base}RatingList", array(0), 6);
+
// Then set ReadOnly to false, and make sure it works.
- $this->click("Writable");
+ $this->byId("{$base}Writable")->click();
$this->pause(800);
- $this->assertText("Status", "ReadOnly=false");
- $this->assertCheckBoxes("RatingList", array(0), 6);
-
-
- $this->clickTD("RatingList_c1");
+ $this->assertText("{$base}Status", "ReadOnly=false");
+ $this->assertCheckBoxes("{$base}RatingList", array(0), 6);
+
+
+ $this->clickTD("{$base}RatingList_c1");
$this->pause(800);
- $this->assertText("Status", "2 : Fair");
- $this->assertCheckBoxes("RatingList", array(1), 6);
-
+ $this->assertText("{$base}Status", "2 : Fair");
+ $this->assertCheckBoxes("{$base}RatingList", array(1), 6);
+
// Then set ReadOnly to true, and make sure it doesn't work anymore.
- $this->click("ReadOnly");
+ $this->byId("{$base}ReadOnly")->click();
$this->pause(800);
- $this->assertText("Status", "ReadOnly=true");
- $this->assertCheckBoxes("RatingList", array(1), 6);
-
-
- $this->clickTD("RatingList_c2");
+ $this->assertText("{$base}Status", "ReadOnly=true");
+ $this->assertCheckBoxes("{$base}RatingList", array(1), 6);
+
+
+ $this->clickTD("{$base}RatingList_c2");
$this->pause(800);
- $this->assertText("Status", "ReadOnly=true");
- $this->assertCheckBoxes("RatingList", array(1), 6);
+ $this->assertText("{$base}Status", "ReadOnly=true");
+ $this->assertCheckBoxes("{$base}RatingList", array(1), 6);
}
function testEnabled()
{
+ $base='ctl0_Content_';
// Verify we're on the right page.
- $this->open("active-controls/index.php?page=ActiveRatingListEnabledTest");
- $this->verifyTextPresent("TActiveRatingList Enabled Test Case");
- $this->assertText("Status", "Enabled=false");
- $this->assertCheckBoxes("RatingList", array(5), 6);
+ $this->url("active-controls/index.php?page=ActiveRatingListEnabledTest");
+ $this->assertContains("TActiveRatingList Enabled Test Case", $this->source());
+ $this->assertText("{$base}Status", "Enabled=false");
+ $this->assertCheckBoxes("{$base}RatingList", array(5), 6);
- $this->clickTD("RatingList_c4");
+ $this->clickTD("{$base}RatingList_c4");
$this->pause(800);
- $this->assertText("Status", "Enabled=false");
- $this->assertCheckBoxes("RatingList", array(5), 6);
-
+ $this->assertText("{$base}Status", "Enabled=false");
+ $this->assertCheckBoxes("{$base}RatingList", array(5), 6);
+
// Then set Enable to true, and make sure it works.
- $this->click("Enable");
+ $this->byId("{$base}Enable")->click();
$this->pause(800);
- $this->assertText("Status", "Enabled=true");
- $this->assertCheckBoxes("RatingList", array(5), 6);
-
-
- $this->clickTD("RatingList_c3");
+ $this->assertText("{$base}Status", "Enabled=true");
+ $this->assertCheckBoxes("{$base}RatingList", array(5), 6);
+
+
+ $this->clickTD("{$base}RatingList_c3");
$this->pause(800);
- $this->assertText("Status", "4 : Good");
- $this->assertCheckBoxes("RatingList", array(3), 6);
-
+ $this->assertText("{$base}Status", "4 : Good");
+ $this->assertCheckBoxes("{$base}RatingList", array(3), 6);
+
// Then set Enable to false, and make sure it doesn't work anymore.
- $this->click("Disable");
+ $this->byId("{$base}Disable")->click();
$this->pause(800);
- $this->assertText("Status", "Enabled=false");
- $this->assertCheckBoxes("RatingList", array(3), 6);
-
-
- $this->clickTD("RatingList_c5");
+ $this->assertText("{$base}Status", "Enabled=false");
+ $this->assertCheckBoxes("{$base}RatingList", array(3), 6);
+
+
+ $this->clickTD("{$base}RatingList_c5");
$this->pause(800);
- $this->assertText("Status", "Enabled=false");
- $this->assertCheckBoxes("RatingList", array(3), 6);
+ $this->assertText("{$base}Status", "Enabled=false");
+ $this->assertCheckBoxes("{$base}RatingList", array(3), 6);
}
-
+
function testHoverCaption()
{
+ $base='ctl0_Content_';
// Verify we're on the right page.
- $this->open("active-controls/index.php?page=ActiveRatingListHoverCaptionTest");
- $this->verifyTextPresent("TActiveRatingList Hover Caption Test Case");
- $this->assertText("Status", "CaptionID='Status'");
- $this->assertElementPresent("//input[@id='RatingList_c0']/../../../td[contains(@class, 'rating_selected')]");
- $this->assertElementPresent("//input[@id='RatingList_c1']/../../../td[contains(@class, 'rating_selected')]");
- $this->assertElementPresent("//input[@id='RatingList_c2']/../../../td[contains(@class, 'rating_selected')]");
- $this->assertElementPresent("//input[@id='RatingList_c3']/../../../td[contains(@class, 'rating_half')]");
- $this->assertElementPresent("//input[@id='RatingList_c3']/../../../td[contains(@class, 'rating')]");
- $this->assertElementPresent("//input[@id='RatingList_c4']/../../../td[contains(@class, 'rating')]");
- $this->assertElementPresent("//input[@id='RatingList_c5']/../../../td[contains(@class, 'rating')]");
-
- $this->mouseOver("//input[@id='RatingList_c4']/../../");
- $this->assertText("Status", "Excellent");
- $this->assertElementPresent("//input[@id='RatingList_c0']/../../../td[contains(@class, 'rating_hover')]");
- $this->assertElementPresent("//input[@id='RatingList_c1']/../../../td[contains(@class, 'rating_hover')]");
- $this->assertElementPresent("//input[@id='RatingList_c2']/../../../td[contains(@class, 'rating_hover')]");
- $this->assertElementPresent("//input[@id='RatingList_c3']/../../../td[contains(@class, 'rating_hover')]");
- $this->assertElementPresent("//input[@id='RatingList_c4']/../../../td[contains(@class, 'rating_hover')]");
- $this->assertElementPresent("//input[@id='RatingList_c5']/../../../td[not(contains(@class, 'rating_hover'))]");
- $this->assertElementPresent("//input[@id='RatingList_c5']/../../../td[contains(@class, 'rating')]");
-
- $this->mouseOut("//input[@id='RatingList_c4']/../../");
- $this->assertText("Status", "CaptionID='Status'");
- $this->assertElementPresent("//input[@id='RatingList_c0']/../../../td[contains(@class, 'rating_selected')]");
- $this->assertElementPresent("//input[@id='RatingList_c1']/../../../td[contains(@class, 'rating_selected')]");
- $this->assertElementPresent("//input[@id='RatingList_c2']/../../../td[contains(@class, 'rating_selected')]");
- $this->assertElementPresent("//input[@id='RatingList_c3']/../../../td[not(contains(@class, 'rating_selected'))]");
- $this->assertElementPresent("//input[@id='RatingList_c3']/../../../td[contains(@class, 'rating')]");
- $this->assertElementPresent("//input[@id='RatingList_c4']/../../../td[contains(@class, 'rating')]");
- $this->assertElementPresent("//input[@id='RatingList_c5']/../../../td[contains(@class, 'rating')]");
-
-
- $this->mouseOver("//input[@id='RatingList_c1']/../../");
- $this->assertText("Status", "Fair");
-
- $this->click("//input[@id='RatingList_c1']/../../");
- $this->pause(800);
- $this->assertText("Status", "2 : Fair");
- $this->assertElementPresent("//input[@id='RatingList_c0']/../../../td[contains(@class, 'rating_selected')]");
- $this->assertElementPresent("//input[@id='RatingList_c1']/../../../td[contains(@class, 'rating_selected')]");
- $this->assertElementPresent("//input[@id='RatingList_c2']/../../../td[not(contains(@class, 'rating_selected'))]");
- $this->assertElementPresent("//input[@id='RatingList_c2']/../../../td[contains(@class, 'rating')]");
- $this->assertElementPresent("//input[@id='RatingList_c3']/../../../td[contains(@class, 'rating')]");
- $this->assertElementPresent("//input[@id='RatingList_c4']/../../../td[contains(@class, 'rating')]");
- $this->assertElementPresent("//input[@id='RatingList_c5']/../../../td[contains(@class, 'rating')]");
+ $this->url("active-controls/index.php?page=ActiveRatingListHoverCaptionTest");
+ $this->assertContains("TActiveRatingList Hover Caption Test Case", $this->source());
+ $this->assertText("{$base}Status", "CaptionID='Status'");
+ $this->assertElementPresent("//input[@id='{$base}RatingList_c0']/../../../td[contains(@class, 'rating_selected')]");
+ $this->assertElementPresent("//input[@id='{$base}RatingList_c1']/../../../td[contains(@class, 'rating_selected')]");
+ $this->assertElementPresent("//input[@id='{$base}RatingList_c2']/../../../td[contains(@class, 'rating_selected')]");
+ $this->assertElementPresent("//input[@id='{$base}RatingList_c3']/../../../td[contains(@class, 'rating_half')]");
+ $this->assertElementPresent("//input[@id='{$base}RatingList_c3']/../../../td[contains(@class, 'rating')]");
+ $this->assertElementPresent("//input[@id='{$base}RatingList_c4']/../../../td[contains(@class, 'rating')]");
+ $this->assertElementPresent("//input[@id='{$base}RatingList_c5']/../../../td[contains(@class, 'rating')]");
+
+ $this->moveto($this->byXPath("//input[@id='{$base}RatingList_c4']/../.."));
+ $this->assertText("{$base}Status", "Excellent");
+ $this->assertElementPresent("//input[@id='{$base}RatingList_c0']/../../../td[contains(@class, 'rating_hover')]");
+ $this->assertElementPresent("//input[@id='{$base}RatingList_c1']/../../../td[contains(@class, 'rating_hover')]");
+ $this->assertElementPresent("//input[@id='{$base}RatingList_c2']/../../../td[contains(@class, 'rating_hover')]");
+ $this->assertElementPresent("//input[@id='{$base}RatingList_c3']/../../../td[contains(@class, 'rating_hover')]");
+ $this->assertElementPresent("//input[@id='{$base}RatingList_c4']/../../../td[contains(@class, 'rating_hover')]");
+ $this->assertElementPresent("//input[@id='{$base}RatingList_c5']/../../../td[not(contains(@class, 'rating_hover'))]");
+ $this->assertElementPresent("//input[@id='{$base}RatingList_c5']/../../../td[contains(@class, 'rating')]");
+
+ $this->moveto($this->byCssSelector('body'));
+ $this->assertText("{$base}Status", "CaptionID='Status'");
+ $this->assertElementPresent("//input[@id='{$base}RatingList_c0']/../../../td[contains(@class, 'rating_selected')]");
+ $this->assertElementPresent("//input[@id='{$base}RatingList_c1']/../../../td[contains(@class, 'rating_selected')]");
+ $this->assertElementPresent("//input[@id='{$base}RatingList_c2']/../../../td[contains(@class, 'rating_selected')]");
+ $this->assertElementPresent("//input[@id='{$base}RatingList_c3']/../../../td[not(contains(@class, 'rating_selected'))]");
+ $this->assertElementPresent("//input[@id='{$base}RatingList_c3']/../../../td[contains(@class, 'rating')]");
+ $this->assertElementPresent("//input[@id='{$base}RatingList_c4']/../../../td[contains(@class, 'rating')]");
+ $this->assertElementPresent("//input[@id='{$base}RatingList_c5']/../../../td[contains(@class, 'rating')]");
+
+
+ $this->moveto($this->byXPath("//input[@id='{$base}RatingList_c1']/../.."));
+ $this->assertText("{$base}Status", "Fair");
+
+ $this->byXPath("//input[@id='{$base}RatingList_c1']/../..")->click();
+ $this->pause(800);
+ $this->assertText("{$base}Status", "2 : Fair");
+ $this->assertElementPresent("//input[@id='{$base}RatingList_c0']/../../../td[contains(@class, 'rating_selected')]");
+ $this->assertElementPresent("//input[@id='{$base}RatingList_c1']/../../../td[contains(@class, 'rating_selected')]");
+ $this->assertElementPresent("//input[@id='{$base}RatingList_c2']/../../../td[not(contains(@class, 'rating_selected'))]");
+ $this->assertElementPresent("//input[@id='{$base}RatingList_c2']/../../../td[contains(@class, 'rating')]");
+ $this->assertElementPresent("//input[@id='{$base}RatingList_c3']/../../../td[contains(@class, 'rating')]");
+ $this->assertElementPresent("//input[@id='{$base}RatingList_c4']/../../../td[contains(@class, 'rating')]");
+ $this->assertElementPresent("//input[@id='{$base}RatingList_c5']/../../../td[contains(@class, 'rating')]");
}
-
+
function clickTD($clientID){
- $this->click("//input[@id='{$clientID}']/../..");
+ $this->byXPath("//input[@id='{$clientID}']/../..")->click();
}
function assertCheckBoxes($clientID, $checks, $total = 5)
@@ -244,9 +252,9 @@ class ActiveRatingListTestCase extends PradoGenericSeleniumTest
for($i = 0; $i < $total; $i++)
{
if(in_array($i, $checks))
- $this->assertChecked("{$clientID}_c{$i}");
+ $this->assertTrue($this->byId("{$clientID}_c{$i}")->selected());
else
- $this->assertNotChecked("{$clientID}_c{$i}");
+ $this->assertFalse($this->byId("{$clientID}_c{$i}")->selected());
}
}
} \ No newline at end of file
diff --git a/tests/FunctionalTests/features/protected/controls/Layout.tpl b/tests/FunctionalTests/features/protected/controls/Layout.tpl
index dbd433b8..66b42f6c 100755
--- a/tests/FunctionalTests/features/protected/controls/Layout.tpl
+++ b/tests/FunctionalTests/features/protected/controls/Layout.tpl
@@ -27,7 +27,6 @@
<body>
<com:TForm>
<com:TContentPlaceHolder ID="Content" />
-<com:TJavascriptLogger />
</com:TForm>
</body>
</html> \ No newline at end of file
diff --git a/tests/FunctionalTests/features/protected/pages/I18N/BasicI18N.php b/tests/FunctionalTests/features/protected/pages/I18N/BasicI18N.php
index d4a98e26..5292affb 100755
--- a/tests/FunctionalTests/features/protected/pages/I18N/BasicI18N.php
+++ b/tests/FunctionalTests/features/protected/pages/I18N/BasicI18N.php
@@ -22,23 +22,23 @@ class BasicI18N extends TPage
* @version $Revision: 1.66 $ $Date: ${DATE} ${TIME} $
* @package ${package}
*//*
-class BasicI18NTestCase extends PradoGenericSeleniumTest
+class BasicI18NTestCase extends PradoGenericSelenium2Test
{
function setup()
{
$page = Prado::getApplication()->getTestPage(__FILE__);
- $this->open($page);
+ $this->url($page);
}
function testI18N()
{
- $this->verifyTitle("Basic I18N Test", "");
- $this->verifyTextPresent("Hello", "");
- $this->verifyTextPresent("US$10,000.00", "");
- $this->verifyTextPresent("2006年1月15日 上午12时00分00秒", "");
- $this->verifyTextPresent("None", "");
- $this->verifyTextPresent("One thing.", "");
- $this->verifyTextPresent("Many things.", "");
+ $this->assertEquals("Basic I18N Test", $this->title());
+ $this->assertContains("Hello", $this->source());
+ $this->assertContains("US$10,000.00", $this->source());
+ $this->assertContains("2006年1月15日 上午12时00分00秒", $this->source());
+ $this->assertContains("None", $this->source());
+ $this->assertContains("One thing.", $this->source());
+ $this->assertContains("Many things.", $this->source());
}
}
*/ \ No newline at end of file
diff --git a/tests/FunctionalTests/features/tests/MyTestCase.php b/tests/FunctionalTests/features/tests/MyTestCase.php
index 92b0886a..d748b6b0 100755
--- a/tests/FunctionalTests/features/tests/MyTestCase.php
+++ b/tests/FunctionalTests/features/tests/MyTestCase.php
@@ -1,10 +1,10 @@
<?php
-class MyTestCase extends PradoGenericSeleniumTest
+class MyTestCase extends PradoGenericSelenium2Test
{
function test1()
{
- $this->open('http://127.0.0.1');
- $this->assertTextNotPresent('asd');
+ $this->url('http://127.0.0.1');
+ $this->assertNotContains('asd', $this->source());
}
}
diff --git a/tests/FunctionalTests/issues/assets/.gitignore b/tests/FunctionalTests/issues/assets/.gitignore
new file mode 100755
index 00000000..d6b7ef32
--- /dev/null
+++ b/tests/FunctionalTests/issues/assets/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
diff --git a/tests/FunctionalTests/issues/index.php b/tests/FunctionalTests/issues/index.php
new file mode 100755
index 00000000..77ddf367
--- /dev/null
+++ b/tests/FunctionalTests/issues/index.php
@@ -0,0 +1,6 @@
+<?php
+
+require_once(dirname(__FILE__).'/../../../framework/prado.php');
+
+$app=new TApplication;
+$app->run();
diff --git a/tests/FunctionalTests/issues/protected/application.xml b/tests/FunctionalTests/issues/protected/application.xml
new file mode 100755
index 00000000..a396dea5
--- /dev/null
+++ b/tests/FunctionalTests/issues/protected/application.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<application id="FeatureTests" Mode="Debug">
+ <paths>
+ <using namespace="Application.controls.*" />
+ </paths>
+ <services>
+ <service id="page" class="TPageService">
+ <pages MasterClass="Application.controls.Layout" />
+ </service>
+ </services>
+</application> \ No newline at end of file
diff --git a/tests/FunctionalTests/issues/protected/controls/Layout.php b/tests/FunctionalTests/issues/protected/controls/Layout.php
new file mode 100755
index 00000000..0ac4d6b3
--- /dev/null
+++ b/tests/FunctionalTests/issues/protected/controls/Layout.php
@@ -0,0 +1,6 @@
+<?php
+
+class Layout extends TTemplateControl
+{
+
+}
diff --git a/tests/FunctionalTests/issues/protected/controls/Layout.tpl b/tests/FunctionalTests/issues/protected/controls/Layout.tpl
new file mode 100755
index 00000000..5234c565
--- /dev/null
+++ b/tests/FunctionalTests/issues/protected/controls/Layout.tpl
@@ -0,0 +1,32 @@
+<!DOCTYPE html PUBLIC
+ "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<com:THead Title="PRADO Feature Tests">
+ <meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
+ <style type="text/css">
+ /*<![CDATA[*/
+ body
+ {
+ font-family: Georgia, "Times New Roman", Times, serif;
+ }
+ .w3c
+ {
+ margin-top: 2em;
+ display: block;
+ }
+ .required
+ {
+ border:1px solid red;
+ background-color: #fdd;
+ }
+ /*]]>*/
+ </style>
+</com:THead>
+<body>
+<com:TForm>
+<com:TContentPlaceHolder ID="Content" />
+</com:TForm>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/FunctionalTests/issues/protected/pages/Issue504.page b/tests/FunctionalTests/issues/protected/pages/Issue504.page
new file mode 100755
index 00000000..ed29b358
--- /dev/null
+++ b/tests/FunctionalTests/issues/protected/pages/Issue504.page
@@ -0,0 +1,14 @@
+ <com:TContent ID="Content">
+ <h1>Issue 504 Test</h1>
+
+ <com:TPanel ID="dlg" DefaultButton="subPanel.buttonOk" >
+ <com:TTextBox ID="textbox1" />
+ <com:TButton ID="buttonDummy" OnCommand="buttonDummyClick" Text="Dummy button" />
+ Panel Content
+ <com:TLabel ID="label1" />
+ <com:TPanel ID="subPanel" >
+ <com:TButton ID="buttonOk" OnCommand="buttonOkClick" Text="Ok button" />
+ </com:TPanel>
+ </com:TPanel>
+ </com:TContent>
+
diff --git a/tests/FunctionalTests/issues/protected/pages/Issue504.php b/tests/FunctionalTests/issues/protected/pages/Issue504.php
new file mode 100755
index 00000000..dd12c960
--- /dev/null
+++ b/tests/FunctionalTests/issues/protected/pages/Issue504.php
@@ -0,0 +1,14 @@
+<?php
+
+class Issue504 extends TPage
+{
+ function buttonOkClick($sender, $param)
+ {
+ $this->label1->Text="buttonOkClick";
+ }
+
+ function buttonDummyClick($sender, $param)
+ {
+ $this->label1->Text="buttonDummyClick";
+ }
+}
diff --git a/tests/FunctionalTests/issues/protected/pages/Issue516.page b/tests/FunctionalTests/issues/protected/pages/Issue516.page
new file mode 100644
index 00000000..c922c6e1
--- /dev/null
+++ b/tests/FunctionalTests/issues/protected/pages/Issue516.page
@@ -0,0 +1,50 @@
+ <com:TContent ID="Content">
+
+<h1>Issue 516 Test</h1>
+
+<com:TActiveDataGrid
+ Width="800px"
+ CellPadding="2"
+ ID="DataGrid"
+ DataKeyField="ISBN"
+ AutoGenerateColumns="false"
+ HeaderStyle.BackColor="black"
+ HeaderStyle.ForeColor="white"
+ ItemStyle.BackColor="#BFCFFF"
+ ItemStyle.Font.Italic="true"
+ AlternatingItemStyle.BackColor="#E6ECFF"
+ EditItemStyle.BackColor="lightyellow"
+ OnEditCommand="editItem"
+ OnUpdateCommand="saveItem"
+ OnCancelCommand="cancelItem"
+ >
+ <com:TTemplateColumn
+ ID="BookTitleColumn"
+ HeaderText="Book Title"
+ HeaderStyle.Width="400px"
+ >
+ <prop:ItemTemplate>
+ <com:TLiteral Text="<%# $this->Parent->Data['title'] %>" Encode="true" />
+ </prop:ItemTemplate>
+ <prop:EditItemTemplate>
+ <com:TTextBox ID="TextBox" Text="<%# $this->Parent->Data['title'] %>" />
+ <com:TRequiredFieldValidator
+ ControlToValidate="TextBox"
+ Display="Dynamic"
+ ErrorMessage="<br/>Please provide a title."
+ ValidationGroup = "Group1"
+ />
+ </prop:EditItemTemplate>
+ </com:TTemplateColumn>
+ <com:TActiveEditCommandColumn
+ HeaderText="Edit"
+ HeaderStyle.Width="100px"
+ UpdateText="Save"
+ ItemStyle.HorizontalAlign="Center"
+ ItemStyle.Font.Italic="false"
+ ValidationGroup = "Group1"
+ />
+</com:TActiveDataGrid>
+
+ </com:TContent>
+
diff --git a/tests/FunctionalTests/issues/protected/pages/Issue516.php b/tests/FunctionalTests/issues/protected/pages/Issue516.php
new file mode 100644
index 00000000..bd3e7a72
--- /dev/null
+++ b/tests/FunctionalTests/issues/protected/pages/Issue516.php
@@ -0,0 +1,115 @@
+<?php
+
+Prado::using('System.Web.UI.ActiveControls.*');
+
+class Issue516 extends TPage
+{
+ private $_data=null;
+
+ protected function getData()
+ {
+ if($this->_data===null)
+ $this->loadData();
+ return $this->_data;
+ }
+
+ protected function loadData()
+ {
+ // We use viewstate keep track of data.
+ // In real applications, data should come from database using an SQL SELECT statement.
+ // In the following tabular data, field 'ISBN' is the primary key.
+ // All update and delete operations should come with an 'id' value in order to go through.
+ if(($this->_data=$this->getViewState('Data',null))===null)
+ {
+ $this->_data=array(
+ array(
+ 'ISBN'=>'0596007124',
+ 'title'=>'',
+ ),
+ array(
+ 'ISBN'=>'0201633612',
+ 'title'=>'Design Patterns: Elements of Reusable Object-Oriented Software',
+ ),
+ array(
+ 'ISBN'=>'0321247140',
+ 'title'=>'Design Patterns Explained : A New Perspective on Object-Oriented Design',
+ ),
+ array(
+ 'ISBN'=>'0201485672',
+ 'title'=>'Refactoring: Improving the Design of Existing Code',
+ ),
+ array(
+ 'ISBN'=>'0321213351',
+ 'title'=>'Refactoring to Patterns',
+ ),
+ array(
+ 'ISBN'=>'0735619670',
+ 'title'=>'Code Complete',
+ ),
+ array(
+ 'ISBN'=>'0321278658 ',
+ 'title'=>'Extreme Programming Explained : Embrace Change',
+ ),
+ );
+ $this->saveData();
+ }
+ }
+
+ protected function saveData()
+ {
+ $this->setViewState('Data',$this->_data);
+ }
+
+ protected function updateBook($isbn,$title)
+ {
+ // In real applications, data should be saved to database using an SQL UPDATE statement
+ if($this->_data===null)
+ $this->loadData();
+ $updateRow=null;
+ foreach($this->_data as $index=>$row)
+ if($row['ISBN']===$isbn)
+ $updateRow=&$this->_data[$index];
+ if($updateRow!==null)
+ {
+ $updateRow['title']=$title;
+ $this->saveData();
+ }
+ }
+
+ public function onLoad($param)
+ {
+ parent::onLoad($param);
+ if(!$this->IsPostBack && !$this->IsCallBack)
+ {
+ $this->DataGrid->DataSource=$this->Data;
+ $this->DataGrid->dataBind();
+ }
+ }
+
+ public function editItem($sender,$param)
+ {
+ $this->DataGrid->EditItemIndex=$param->Item->ItemIndex;
+ $this->DataGrid->DataSource=$this->Data;
+ $this->DataGrid->dataBind();
+ }
+
+ public function saveItem($sender,$param)
+ {
+ $item=$param->Item;
+ $this->updateBook(
+ $this->DataGrid->DataKeys[$item->ItemIndex], // ISBN
+ $item->BookTitleColumn->TextBox->Text // title
+ );
+ $this->DataGrid->EditItemIndex=-1;
+ $this->DataGrid->DataSource=$this->Data;
+ $this->DataGrid->dataBind();
+ }
+
+ public function cancelItem($sender,$param)
+ {
+ $this->DataGrid->EditItemIndex=-1;
+ $this->DataGrid->DataSource=$this->Data;
+ $this->DataGrid->dataBind();
+ }
+
+}
diff --git a/tests/FunctionalTests/issues/protected/pages/Issue524.page b/tests/FunctionalTests/issues/protected/pages/Issue524.page
new file mode 100755
index 00000000..08ac1814
--- /dev/null
+++ b/tests/FunctionalTests/issues/protected/pages/Issue524.page
@@ -0,0 +1,7 @@
+<com:TContent ID="Content">
+ <h1>Issue 524 Test</h1>
+ <com:TTextBox ID="textbox1" />
+ <com:TActiveButton ID="buttonOk" Text="Ok button" />
+ <com:TActiveCustomValidator ID="Validator" ControlToValidate="textbox1" OnServerValidate="validateText" Text="Input is invalid." />
+</com:TContent>
+
diff --git a/tests/FunctionalTests/issues/protected/pages/Issue524.php b/tests/FunctionalTests/issues/protected/pages/Issue524.php
new file mode 100755
index 00000000..851ff45a
--- /dev/null
+++ b/tests/FunctionalTests/issues/protected/pages/Issue524.php
@@ -0,0 +1,20 @@
+<?php
+
+Prado::using('System.Web.UI.ActiveControls.*');
+
+class Issue524 extends TPage
+{
+
+ public function __construct() {
+ Prado::getApplication()->getGlobalization()->setCharset('ISO-8859-1');
+ parent::__construct();
+ }
+
+ public function validateText($sender, $param)
+ {
+ $param->IsValid = false;
+ $iso8859text=iconv('utf-8', 'iso-8859-1', 'fünf');
+ $this->Validator->ErrorMessage = $iso8859text;
+ }
+
+}
diff --git a/tests/FunctionalTests/issues/protected/runtime/.gitignore b/tests/FunctionalTests/issues/protected/runtime/.gitignore
new file mode 100755
index 00000000..d6b7ef32
--- /dev/null
+++ b/tests/FunctionalTests/issues/protected/runtime/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
diff --git a/tests/FunctionalTests/issues/tests/Issue504TestCase.php b/tests/FunctionalTests/issues/tests/Issue504TestCase.php
new file mode 100755
index 00000000..dff27339
--- /dev/null
+++ b/tests/FunctionalTests/issues/tests/Issue504TestCase.php
@@ -0,0 +1,16 @@
+<?php
+
+class Issue504TestCase extends PradoGenericSelenium2Test
+{
+ function test()
+ {
+ $this->url('issues/index.php?page=Issue504');
+ $this->assertContains('Issue 504 Test', $this->source());
+ $base='ctl0_Content_';
+
+ $this->byID("{$base}textbox1")->click();
+ $this->keys(PHPUnit_Extensions_Selenium2TestCase_Keys::ENTER);
+
+ $this->assertText("{$base}label1", "buttonOkClick");
+ }
+}
diff --git a/tests/FunctionalTests/issues/tests/Issue516TestCase.php b/tests/FunctionalTests/issues/tests/Issue516TestCase.php
new file mode 100644
index 00000000..363e9f84
--- /dev/null
+++ b/tests/FunctionalTests/issues/tests/Issue516TestCase.php
@@ -0,0 +1,37 @@
+<?php
+
+class Issue516TestCase extends PradoGenericSelenium2Test
+{
+ function test()
+ {
+ $this->url('issues/index.php?page=Issue516');
+ $this->assertContains('Issue 516 Test', $this->source());
+ $base='ctl0_Content_';
+ $row1='DataGrid_ctl1_';
+ $row2='DataGrid_ctl2_';
+
+ // click "edit" and check for textbox
+ $this->byID("{$base}{$row1}ctl3")->click();
+ $this->pause(800);
+ $this->assertElementPresent("{$base}{$row1}TextBox");
+ // click "save" and check for validator
+ $this->byID("{$base}{$row1}ctl3")->click();
+ $this->pause(800);
+ $this->assertEquals('Please provide a title.', $this->getElement("{$base}{$row1}ctl1")->text());
+ // click "cancel" and ensure validator has disappeared
+ $this->byID("{$base}{$row1}ctl4")->click();
+ $this->pause(800);
+ $this->assertElementNotPresent("{$base}{$row1}ctl1");
+
+ // click "edit" and check for textbox on the second row
+ $this->byID("{$base}{$row2}ctl3")->click();
+ $this->pause(800);
+ $this->assertTrue($this->getElement("{$base}{$row2}TextBox")!==null);
+ // click "save" and ensure bvalidation has been successfull
+ $this->byID("{$base}{$row2}ctl3")->click();
+ $this->pause(800);
+ $this->assertElementNotPresent("{$base}{$row2}ctl1");
+ $this->assertElementNotPresent("{$base}{$row2}TextBox");
+ $this->assertEquals('Edit', $this->getElement("{$base}{$row2}ctl3")->text());
+ }
+}
diff --git a/tests/FunctionalTests/issues/tests/Issue524TestCase.php b/tests/FunctionalTests/issues/tests/Issue524TestCase.php
new file mode 100755
index 00000000..b7b022b2
--- /dev/null
+++ b/tests/FunctionalTests/issues/tests/Issue524TestCase.php
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * Testcase for Issue 524
+ * Encoding issues caused an error when serializing the
+ * response
+ **/
+class Issue524TestCase extends PradoGenericSelenium2Test
+{
+ function test()
+ {
+ $this->url('issues/index.php?page=Issue524');
+ $this->assertContains('Issue 524 Test', $this->source());
+ $base='ctl0_Content_';
+
+ $this->byID("{$base}buttonOk")->click();
+ $this->pause(800);
+ $this->assertText("{$base}Validator", "fünf");
+ }
+}
diff --git a/tests/FunctionalTests/quickstart/ActiveControls/ActiveButtonTestCase.php b/tests/FunctionalTests/quickstart/ActiveControls/ActiveButtonTestCase.php
index 03861440..9d816978 100755
--- a/tests/FunctionalTests/quickstart/ActiveControls/ActiveButtonTestCase.php
+++ b/tests/FunctionalTests/quickstart/ActiveControls/ActiveButtonTestCase.php
@@ -1,36 +1,36 @@
<?php
//$Id: ActiveButtonTestCase.php 3187 2012-07-12 11:21:01Z ctrlaltca $
-class QuickstartActiveButtonTestCase extends PradoGenericSeleniumTest
+class QuickstartActiveButtonTestCase extends PradoGenericSelenium2Test
{
function test ()
{
- $this->open("../../demos/quickstart/index.php?page=ActiveControls.Samples.TActiveButton.Home&amp;notheme=true&amp;lang=en");
+ $this->url("../../demos/quickstart/index.php?page=ActiveControls.Samples.TActiveButton.Home&amp;notheme=true&amp;lang=en");
- $this->verifyTitle("PRADO QuickStart Sample", "");
+ $this->assertEquals("PRADO QuickStart Sample", $this->title());
- $this->assertTextPresent('TActiveButton Samples (AJAX)');
+ $this->assertContains('TActiveButton Samples (AJAX)', $this->source());
// a click button
- $this->verifyElementNotPresent("//input[@type='submit' and @value=\"I'm clicked\"]");
- $this->click("//input[@type='submit' and @value='click me']", "");
+ $this->assertElementNotPresent("//input[@type='submit' and @value=\"I'm clicked\"]");
+ $this->byXPath("//input[@type='submit' and @value='click me']")->click();
$this->pause(800);
- $this->verifyElementPresent("//input[@type='submit' and @value=\"I'm clicked\"]");
+ $this->assertElementPresent("//input[@type='submit' and @value=\"I'm clicked\"]");
// a command button
- $this->verifyElementNotPresent("//input[@type='submit' and @value=\"Name: test, Param: value using callback\"]");
- $this->click("//input[@type='submit' and @value='click me']", "");
+ $this->assertElementNotPresent("//input[@type='submit' and @value=\"Name: test, Param: value using callback\"]");
+ $this->byXPath("//input[@type='submit' and @value='click me']")->click();
$this->pause(800);
- $this->verifyElementPresent("//input[@type='submit' and @value=\"Name: test, Param: value using callback\"]");
+ $this->assertElementPresent("//input[@type='submit' and @value=\"Name: test, Param: value using callback\"]");
// a button causing validation
- $this->verifyNotVisible('ctl0_body_ctl2');
- $this->click("//input[@type='submit' and @value='submit']", "");
+ $this->assertNotVisible('ctl0_body_ctl2');
+ $this->byXPath("//input[@type='submit' and @value='submit']")->click();
$this->pause(800);
- $this->verifyVisible('ctl0_body_ctl2');
+ $this->assertVisible('ctl0_body_ctl2');
$this->type("ctl0\$body\$TextBox", "test");
- $this->click("//input[@type='submit' and @value='submit']", "");
+ $this->byXPath("//input[@type='submit' and @value='submit']")->click();
$this->pause(800);
- $this->verifyNotVisible('ctl0_body_ctl2');
- $this->verifyElementPresent("//input[@type='submit' and @value=\"I'm clicked using callback\"]", "");
+ $this->assertNotVisible('ctl0_body_ctl2');
+ $this->assertElementPresent("//input[@type='submit' and @value=\"I'm clicked using callback\"]", "");
}
}
diff --git a/tests/FunctionalTests/quickstart/ActiveControls/ActiveCheckBoxTestCase.php b/tests/FunctionalTests/quickstart/ActiveControls/ActiveCheckBoxTestCase.php
index 257917ec..9e537abd 100755
--- a/tests/FunctionalTests/quickstart/ActiveControls/ActiveCheckBoxTestCase.php
+++ b/tests/FunctionalTests/quickstart/ActiveControls/ActiveCheckBoxTestCase.php
@@ -1,58 +1,57 @@
<?php
//$Id: ActiveCheckBoxTestCase.php 3187 2012-07-12 11:21:01Z ctrlaltca $
-class QuickstartActiveCheckBoxTestCase extends PradoGenericSeleniumTest
+class QuickstartActiveCheckBoxTestCase extends PradoGenericSelenium2Test
{
function test ()
{
- $this->setSpeed(500);
- $this->open("../../demos/quickstart/index.php?page=ActiveControls.Samples.TActiveCheckBox.Home&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=ActiveControls.Samples.TActiveCheckBox.Home&amp;notheme=true&amp;lang=en");
- $this->verifyTitle("PRADO QuickStart Sample", "");
+ $this->assertEquals("PRADO QuickStart Sample", $this->title());
- $this->assertTextPresent('TActiveCheckBox Samples (AJAX)');
+ $this->assertContains('TActiveCheckBox Samples (AJAX)', $this->source());
// an auto postback checkbox
- $this->verifyTextNotPresent("ctl0_body_ctl0 clicked using callback");
- $this->click("//input[@name='ctl0\$body\$ctl0']");
+ $this->assertNotContains("ctl0_body_ctl0 clicked using callback", $this->source());
+ $this->byXPath("//input[@name='ctl0\$body\$ctl0']")->click();
$this->pause(800);
- $this->assertChecked("//input[@name='ctl0\$body\$ctl0']");
- $this->verifyTextPresent("ctl0_body_ctl0 clicked using callback");
- $this->click("//input[@name='ctl0\$body\$ctl0']");
+ $this->assertTrue($this->byXPath("//input[@name='ctl0\$body\$ctl0']")->selected());
+ $this->assertContains("ctl0_body_ctl0 clicked using callback", $this->source());
+ $this->byXPath("//input[@name='ctl0\$body\$ctl0']")->click();
$this->pause(800);
- $this->verifyTextPresent("ctl0_body_ctl0 clicked using callback");
- $this->assertNotChecked("//input[@name='ctl0\$body\$ctl0']");
+ $this->assertContains("ctl0_body_ctl0 clicked using callback", $this->source());
+ $this->assertFalse($this->byXPath("//input[@name='ctl0\$body\$ctl0']")->selected());
// a checkbox causing validation on a textbox
- $this->verifyNotVisible('ctl0_body_ctl1');
- $this->click("//input[@name='ctl0\$body\$ctl2']");
- $this->verifyVisible('ctl0_body_ctl1');
- $this->click("//input[@name='ctl0\$body\$ctl2']", "");
- $this->verifyVisible('ctl0_body_ctl3');
+ $this->assertNotVisible('ctl0_body_ctl1');
+ $this->byXPath("//input[@name='ctl0\$body\$ctl2']")->click();
+ $this->assertVisible('ctl0_body_ctl1');
+ $this->byXPath("//input[@name='ctl0\$body\$ctl2']")->click();
+ $this->assertVisible('ctl0_body_ctl3');
$this->type("ctl0\$body\$TextBox", "test");
- $this->click("//input[@name='ctl0\$body\$ctl2']", "");
+ $this->byXPath("//input[@name='ctl0\$body\$ctl2']")->click();
$this->pause(800);
- $this->verifyNotVisible('ctl0_body_ctl1');
- $this->assertTextPresent("ctl0_body_ctl2 clicked using callback");
+ $this->assertNotVisible('ctl0_body_ctl1');
+ $this->assertContains("ctl0_body_ctl2 clicked using callback", $this->source());
// a checkbox validated by a required field validator
- $this->assertNotChecked("//input[@name='ctl0\$body\$CheckBox']");
- $this->verifyNotVisible('ctl0_body_ctl4');
- $this->click("//input[@type='submit' and @value='Submit']", "");
- $this->verifyVisible('ctl0_body_ctl4');
- $this->click("//input[@name='ctl0\$body\$CheckBox']", "");
- $this->assertChecked("//input[@name='ctl0\$body\$CheckBox']");
- $this->click("//input[@type='submit' and @value='Submit']", "");
- $this->verifyNotVisible('ctl0_body_ctl4');
- $this->assertTextPresent("ctl0_body_CheckBox clicked");
+ $this->assertFalse($this->byXPath("//input[@name='ctl0\$body\$CheckBox']")->selected());
+ $this->assertNotVisible('ctl0_body_ctl4');
+ $this->byXPath("//input[@type='submit' and @value='Submit']")->click();
+ $this->assertVisible('ctl0_body_ctl4');
+ $this->byXPath("//input[@name='ctl0\$body\$CheckBox']")->click();
+ $this->assertTrue($this->byXPath("//input[@name='ctl0\$body\$CheckBox']")->selected());
+ $this->byXPath("//input[@type='submit' and @value='Submit']")->click();
+ $this->pause(800);
+ $this->assertNotVisible('ctl0_body_ctl4');
+ $this->assertContains("ctl0_body_CheckBox clicked", $this->source());
// a checkbox validated by a required field validator using AutoPostBack
- $this->assertChecked("//input[@name='ctl0\$body\$CheckBox2']");
- $this->verifyNotVisible('ctl0_body_ctl5');
- $this->click("//input[@name='ctl0\$body\$CheckBox2']", "");
- $this->verifyVisible('ctl0_body_ctl5');
- $this->assertChecked("//input[@name='ctl0\$body\$CheckBox2']");
- $this->setSpeed(0);
+ $this->assertTrue($this->byXPath("//input[@name='ctl0\$body\$CheckBox2']")->selected());
+ $this->assertNotVisible('ctl0_body_ctl5');
+ $this->byXPath("//input[@name='ctl0\$body\$CheckBox2']")->click();
+ $this->assertVisible('ctl0_body_ctl5');
+ $this->assertTrue($this->byXPath("//input[@name='ctl0\$body\$CheckBox2']")->selected());
}
}
diff --git a/tests/FunctionalTests/quickstart/ActiveControls/ActiveCustomValidatorTestCase.php b/tests/FunctionalTests/quickstart/ActiveControls/ActiveCustomValidatorTestCase.php
index 967842b0..7cb29382 100755
--- a/tests/FunctionalTests/quickstart/ActiveControls/ActiveCustomValidatorTestCase.php
+++ b/tests/FunctionalTests/quickstart/ActiveControls/ActiveCustomValidatorTestCase.php
@@ -1,19 +1,19 @@
<?php
//$Id: ActiveButtonTestCase.php 1405 2006-09-10 01:03:56Z wei $
-class QuickstartActiveCustomValidatorTestCase extends PradoGenericSeleniumTest
+class QuickstartActiveCustomValidatorTestCase extends PradoGenericSelenium2Test
{
function test ()
{
- $this->open("../../demos/quickstart/index.php?page=ActiveControls.Samples.TActiveCustomValidator.Home&amp;notheme=true&amp;lang=en");
+ $this->url("../../demos/quickstart/index.php?page=ActiveControls.Samples.TActiveCustomValidator.Home&amp;notheme=true&amp;lang=en");
- $this->verifyTitle("PRADO QuickStart Sample", "");
+ $this->assertEquals("PRADO QuickStart Sample", $this->title());
- $this->assertTextPresent('TActiveCustomValidator Samples (AJAX)');
+ $this->assertContains('TActiveCustomValidator Samples (AJAX)', $this->source());
$base = 'ctl0_body_';
$this->assertNotVisible($base.'validator1');
- $this->click($base.'button1');
+ $this->byId($base.'button1')->click();
$this->pause(800);
$this->assertVisible($base.'validator1');
@@ -25,7 +25,7 @@ class QuickstartActiveCustomValidatorTestCase extends PradoGenericSeleniumTest
$this->pause(800);
$this->assertVisible($base.'validator1');
- $this->click($base.'button1');
+ $this->byId($base.'button1')->click();
$this->pause(800);
$this->assertNotVisible($base.'validator1');
}
diff --git a/tests/FunctionalTests/quickstart/Advanced/I18N.php b/tests/FunctionalTests/quickstart/Advanced/I18N.php
index 726501ce..ccb8c961 100755
--- a/tests/FunctionalTests/quickstart/Advanced/I18N.php
+++ b/tests/FunctionalTests/quickstart/Advanced/I18N.php
@@ -1,52 +1,52 @@
<?php
//New Test
-class QuickstartI18NTestCase extends PradoGenericSeleniumTest
+class QuickstartI18NTestCase extends PradoGenericSelenium2Test
{
function test ()
{
- $this->open("../../demos/quickstart/index.php?notheme=true&page=Advanced.Samples.I18N.Home&amp;lang=en&amp;notheme=true", "");
- $this->verifyTextPresent("Internationlization in PRADO", "");
- $this->verifyTextPresent("46.412,42 €", "");
- $this->verifyTextPresent("$12.40", "");
- $this->verifyTextPresent("€100.00", "");
- $this->verifyTextPresent("December 6, 2004", "");
- $this->open("../../demos/quickstart/index.php?page=Advanced.Samples.I18N.Home&amp;lang=zh&amp;notheme=true", "");
- $this->verifyTextPresent("PRADO 国际化", "");
- $this->verifyTextPresent("2004 十二月", "");
- $this->verifyTextPresent("US$ 12.40", "");
- $this->verifyTextPresent("46.412,42 €", "");
- $this->verifyTextPresent("€100.00 ", "");
- $this->open("../../demos/quickstart/index.php?page=Advanced.Samples.I18N.Home&amp;lang=zh_TW&amp;notheme=true", "");
- $this->verifyTextPresent("PRADO 國際化", "");
- $this->verifyTextPresent("2004年12月6日", "");
- $this->verifyTextPresent("US$12.40", "");
- $this->verifyTextPresent("46.412,42 €", "");
- $this->verifyTextPresent("€100.00", "");
- $this->open("../../demos/quickstart/index.php?page=Advanced.Samples.I18N.Home&amp;lang=de&amp;notheme=true", "");
- $this->verifyTextPresent("Internationalisierung in PRADO", "");
- $this->verifyTextPresent("6. Dezember 2004 ", "");
- $this->verifyTextPresent("$ 12,40", "");
- $this->verifyTextPresent("46.412,42 €", "");
- $this->verifyTextPresent("€100.00", "");
- $this->open("../../demos/quickstart/index.php?page=Advanced.Samples.I18N.Home&amp;lang=es&amp;notheme=true", "");
- $this->verifyTextPresent("Internationlization en PRADO", "");
- $this->verifyTextPresent("6 de diciembre de 2004", "");
- $this->verifyTextPresent("US$12.40", "");
- $this->verifyTextPresent("46.412,42 €", "");
- $this->verifyTextPresent("€100.00", "");
- $this->open("../../demos/quickstart/index.php?page=Advanced.Samples.I18N.Home&amp;lang=fr&amp;notheme=true", "");
- $this->verifyTextPresent("Internationalisation avec PRADO", "");
- $this->verifyTextPresent("6 décembre 2004", "");
- $this->verifyTextPresent("12,40 $", "");
- $this->verifyTextPresent("46.412,42 €", "");
- $this->verifyTextPresent("€100.00", "");
- $this->open("../../demos/quickstart/index.php?page=Advanced.Samples.I18N.Home&amp;lang=pl&amp;notheme=true", "");
- $this->verifyTextPresent("Internacjonalizacja w PRADO", "");
- $this->verifyTextPresent("6 grudnia 2004", "");
- $this->verifyTextPresent("US$ 12,40", "");
- $this->verifyTextPresent("46.412,42 €", "");
- $this->verifyTextPresent("€100.00", "");
+ $this->url("../../demos/quickstart/index.php?notheme=true&page=Advanced.Samples.I18N.Home&amp;lang=en&amp;notheme=true");
+ $this->assertContains("Internationlization in PRADO", $this->source());
+ $this->assertContains("46.412,42 €", $this->source());
+ $this->assertContains("$12.40", $this->source());
+ $this->assertContains("€100.00", $this->source());
+ $this->assertContains("December 6, 2004", $this->source());
+ $this->url("../../demos/quickstart/index.php?page=Advanced.Samples.I18N.Home&amp;lang=zh&amp;notheme=true");
+ $this->assertContains("PRADO 国际化", $this->source());
+ $this->assertContains("2004 十二月", $this->source());
+ $this->assertContains("US$ 12.40", $this->source());
+ $this->assertContains("46.412,42 €", $this->source());
+ $this->assertContains("€100.00 ", $this->source());
+ $this->url("../../demos/quickstart/index.php?page=Advanced.Samples.I18N.Home&amp;lang=zh_TW&amp;notheme=true");
+ $this->assertContains("PRADO 國際化", $this->source());
+ $this->assertContains("2004年12月6日", $this->source());
+ $this->assertContains("US$12.40", $this->source());
+ $this->assertContains("46.412,42 €", $this->source());
+ $this->assertContains("€100.00", $this->source());
+ $this->url("../../demos/quickstart/index.php?page=Advanced.Samples.I18N.Home&amp;lang=de&amp;notheme=true");
+ $this->assertContains("Internationalisierung in PRADO", $this->source());
+ $this->assertContains("6. Dezember 2004 ", $this->source());
+ $this->assertContains("$ 12,40", $this->source());
+ $this->assertContains("46.412,42 €", $this->source());
+ $this->assertContains("€100.00", $this->source());
+ $this->url("../../demos/quickstart/index.php?page=Advanced.Samples.I18N.Home&amp;lang=es&amp;notheme=true");
+ $this->assertContains("Internationlization en PRADO", $this->source());
+ $this->assertContains("6 de diciembre de 2004", $this->source());
+ $this->assertContains("US$12.40", $this->source());
+ $this->assertContains("46.412,42 €", $this->source());
+ $this->assertContains("€100.00", $this->source());
+ $this->url("../../demos/quickstart/index.php?page=Advanced.Samples.I18N.Home&amp;lang=fr&amp;notheme=true");
+ $this->assertContains("Internationalisation avec PRADO", $this->source());
+ $this->assertContains("6 décembre 2004", $this->source());
+ $this->assertContains("12,40 $", $this->source());
+ $this->assertContains("46.412,42 €", $this->source());
+ $this->assertContains("€100.00", $this->source());
+ $this->url("../../demos/quickstart/index.php?page=Advanced.Samples.I18N.Home&amp;lang=pl&amp;notheme=true");
+ $this->assertContains("Internacjonalizacja w PRADO", $this->source());
+ $this->assertContains("6 grudnia 2004", $this->source());
+ $this->assertContains("US$ 12,40", $this->source());
+ $this->assertContains("46.412,42 €", $this->source());
+ $this->assertContains("€100.00", $this->source());
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/BulletedListTestCase.php b/tests/FunctionalTests/quickstart/Controls/BulletedListTestCase.php
index 0b272428..a23f1d1d 100755
--- a/tests/FunctionalTests/quickstart/Controls/BulletedListTestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/BulletedListTestCase.php
@@ -1,36 +1,36 @@
<?php
-class QuickstartBulletedListTestCase extends PradoGenericSeleniumTest
+class QuickstartBulletedListTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TBulletedList.Home&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TBulletedList.Home&amp;notheme=true&amp;lang=en");
// verify if all required texts are present
- $this->verifyTextPresent('item 1','');
- $this->verifyTextPresent('item 2','');
- $this->verifyTextPresent('item 3','');
- $this->verifyTextPresent('item 4','');
- $this->verifyTextPresent('google','');
- $this->verifyTextPresent('yahoo','');
- $this->verifyTextPresent('amazon','');
+ $this->assertContains('item 1', $this->source());
+ $this->assertContains('item 2', $this->source());
+ $this->assertContains('item 3', $this->source());
+ $this->assertContains('item 4', $this->source());
+ $this->assertContains('google', $this->source());
+ $this->assertContains('yahoo', $this->source());
+ $this->assertContains('amazon', $this->source());
// verify order list starting from 5
- $this->verifyElementPresent("//ol[@start='5']");
+ $this->assertElementPresent("//ol[@start='5']");
// unable to verify styles
// verify hyperlink list
- $this->verifyElementPresent("//a[@href='http://www.google.com/']");
- $this->verifyElementPresent("//a[@href='http://www.yahoo.com/']");
- $this->verifyElementPresent("//a[@href='http://www.amazon.com/']");
+ $this->assertElementPresent("//a[@href='http://www.google.com/']");
+ $this->assertElementPresent("//a[@href='http://www.yahoo.com/']");
+ $this->assertElementPresent("//a[@href='http://www.amazon.com/']");
// verify linkbutton list
- $this->clickAndWait("id=ctl0_body_ctl40", "");
- $this->verifyTextPresent("You clicked google : http://www.google.com/.", "");
- $this->clickAndWait("id=ctl0_body_ctl41", "");
- $this->verifyTextPresent("You clicked yahoo : http://www.yahoo.com/.", "");
- $this->clickAndWait("id=ctl0_body_ctl42", "");
- $this->verifyTextPresent("You clicked amazon : http://www.amazon.com/.", "");
+ $this->byId("ctl0_body_ctl40")->click();
+ $this->assertContains("You clicked google : http://www.google.com/.", $this->source());
+ $this->byId("ctl0_body_ctl41")->click();
+ $this->assertContains("You clicked yahoo : http://www.yahoo.com/.", $this->source());
+ $this->byId("ctl0_body_ctl42")->click();
+ $this->assertContains("You clicked amazon : http://www.amazon.com/.", $this->source());
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/ButtonTestCase.php b/tests/FunctionalTests/quickstart/Controls/ButtonTestCase.php
index ad84e1d0..f5a4a979 100755
--- a/tests/FunctionalTests/quickstart/Controls/ButtonTestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/ButtonTestCase.php
@@ -1,33 +1,33 @@
<?php
-class QuickstartButtonTestCase extends PradoGenericSeleniumTest
+class QuickstartButtonTestCase extends PradoGenericSelenium2Test
{
function test ()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TButton.Home&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TButton.Home&amp;notheme=true&amp;lang=en");
- $this->verifyTitle("PRADO QuickStart Sample", "");
+ $this->assertEquals("PRADO QuickStart Sample", $this->title());
// a regular button
- $this->clickAndWait("//input[@type='submit' and @value='text']", "");
+ $this->byXPath("//input[@type='submit' and @value='text']")->click();
// a click button
- $this->verifyElementNotPresent("//input[@type='submit' and @value=\"I'm clicked\"]");
- $this->clickAndWait("//input[@type='submit' and @value='click me']", "");
- $this->verifyElementPresent("//input[@type='submit' and @value=\"I'm clicked\"]");
+ $this->assertElementNotPresent("//input[@type='submit' and @value=\"I'm clicked\"]");
+ $this->byXPath("//input[@type='submit' and @value='click me']")->click();
+ $this->assertElementPresent("//input[@type='submit' and @value=\"I'm clicked\"]");
// a command button
- $this->verifyElementNotPresent("//input[@type='submit' and @value=\"Name: test, Param: value\"]");
- $this->clickAndWait("//input[@type='submit' and @value='click me']", "");
- $this->verifyElementPresent("//input[@type='submit' and @value=\"Name: test, Param: value\"]");
+ $this->assertElementNotPresent("//input[@type='submit' and @value=\"Name: test, Param: value\"]");
+ $this->byXPath("//input[@type='submit' and @value='click me']")->click();
+ $this->assertElementPresent("//input[@type='submit' and @value=\"Name: test, Param: value\"]");
// a button causing validation
- $this->verifyNotVisible('ctl0_body_ctl3');
- $this->click("//input[@type='submit' and @value='submit']", "");
+ $this->assertNotVisible('ctl0_body_ctl3');
+ $this->byXPath("//input[@type='submit' and @value='submit']")->click();
// $this->pause(1000);
- $this->verifyVisible('ctl0_body_ctl3');
+ $this->assertVisible('ctl0_body_ctl3');
$this->type("ctl0\$body\$TextBox", "test");
- $this->clickAndWait("//input[@type='submit' and @value='submit']", "");
- $this->verifyNotVisible('ctl0_body_ctl3');
+ $this->byXPath("//input[@type='submit' and @value='submit']")->click();
+ $this->assertNotVisible('ctl0_body_ctl3');
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/CheckBoxListTestCase.php b/tests/FunctionalTests/quickstart/Controls/CheckBoxListTestCase.php
index 242bc815..781701cf 100755
--- a/tests/FunctionalTests/quickstart/Controls/CheckBoxListTestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/CheckBoxListTestCase.php
@@ -1,17 +1,17 @@
<?php
//New Test
-class QuickstartCheckBoxListTestCase extends PradoGenericSeleniumTest
+class QuickstartCheckBoxListTestCase extends PradoGenericSelenium2Test
{
function test ()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TCheckBoxList.Home&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TCheckBoxList.Home&amp;notheme=true&amp;lang=en");
// Check box list with default settings:
- $this->click("//input[@name='ctl0\$body\$ctl0\$c0' and @value='value 1']", "");
+ $this->byXPath("//input[@name='ctl0\$body\$ctl0\$c0' and @value='value 1']")->click();
// Check box list with customized cellpadding, cellspacing, color and text alignment:
- $this->click("//input[@name='ctl0\$body\$ctl1\$c1' and @value='value 2']", "");
+ $this->byXPath("//input[@name='ctl0\$body\$ctl1\$c1' and @value='value 2']")->click();
// *** Currently unable to test the following cases:
// Check box list with vertical (default) repeat direction
@@ -20,33 +20,33 @@ class QuickstartCheckBoxListTestCase extends PradoGenericSeleniumTest
// Check box list with flow layout and horizontal repeat direction:
// Check box list's behavior upon postback
- $this->click("//input[@name='ctl0\$body\$CheckBoxList\$c2' and @value='value 3']", "");
- $this->clickAndWait("//input[@type='submit' and @value='Submit']", "");
- $this->verifyTextPresent("Your selection is: (Index: 1, Value: value 2, Text: item 2)(Index: 2, Value: value 3, Text: item 3)(Index: 4, Value: value 5, Text: item 5)", "");
+ $this->byXPath("//input[@name='ctl0\$body\$CheckBoxList\$c2' and @value='value 3']")->click();
+ $this->byXPath("//input[@type='submit' and @value='Submit']")->click();
+ $this->assertContains("Your selection is: (Index: 1, Value: value 2, Text: item 2)(Index: 2, Value: value 3, Text: item 3)(Index: 4, Value: value 5, Text: item 5)", $this->source());
// Auto postback check box list
- $this->clickAndWait("//input[@name='ctl0\$body\$ctl7\$c1' and @value='value 2']", "");
- $this->verifyTextPresent("Your selection is: (Index: 4, Value: value 5, Text: item 5)", "");
+ $this->byXPath("//input[@name='ctl0\$body\$ctl7\$c1' and @value='value 2']")->click();
+ $this->assertContains("Your selection is: (Index: 4, Value: value 5, Text: item 5)", $this->source());
// Databind to an integer-indexed array
- $this->clickAndWait("//input[@name='ctl0\$body\$DBCheckBoxList1\$c1' and @value='1']", "");
- $this->verifyTextPresent("Your selection is: (Index: 1, Value: 1, Text: item 2)", "");
+ $this->byXPath("//input[@name='ctl0\$body\$DBCheckBoxList1\$c1' and @value='1']")->click();
+ $this->assertContains("Your selection is: (Index: 1, Value: 1, Text: item 2)", $this->source());
// Databind to an associative array:
- $this->clickAndWait("//input[@name='ctl0\$body\$DBCheckBoxList2\$c1' and @value='key 2']", "");
- $this->verifyTextPresent("Your selection is: (Index: 1, Value: key 2, Text: item 2)", "");
+ $this->byXPath("//input[@name='ctl0\$body\$DBCheckBoxList2\$c1' and @value='key 2']")->click();
+ $this->assertContains("Your selection is: (Index: 1, Value: key 2, Text: item 2)", $this->source());
// Databind with DataTextField and DataValueField specified
- $this->clickAndWait("//input[@name='ctl0\$body\$DBCheckBoxList3\$c2' and @value='003']", "");
- $this->verifyTextPresent("Your selection is: (Index: 2, Value: 003, Text: Cary)", "");
+ $this->byXPath("//input[@name='ctl0\$body\$DBCheckBoxList3\$c2' and @value='003']")->click();
+ $this->assertContains("Your selection is: (Index: 2, Value: 003, Text: Cary)", $this->source());
// CheckBox list causing validation
- $this->verifyNotVisible('ctl0_body_ctl8');
- $this->click("//input[@name='ctl0\$body\$ctl9\$c0' and @value='Agree']", "");
+ $this->assertNotVisible('ctl0_body_ctl8');
+ $this->byXPath("//input[@name='ctl0\$body\$ctl9\$c0' and @value='Agree']")->click();
// $this->pause(1000);
- $this->verifyVisible('ctl0_body_ctl8');
+ $this->assertVisible('ctl0_body_ctl8');
$this->type("ctl0\$body\$TextBox", "test");
- $this->clickAndWait("//input[@name='ctl0\$body\$ctl9\$c0' and @value='Agree']", "");
- $this->verifyNotVisible('ctl0_body_ctl8');
+ $this->byXPath("//input[@name='ctl0\$body\$ctl9\$c0' and @value='Agree']")->click();
+ $this->assertNotVisible('ctl0_body_ctl8');
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/CheckBoxTestCase.php b/tests/FunctionalTests/quickstart/Controls/CheckBoxTestCase.php
index 57b50dd9..ca89b3a0 100755
--- a/tests/FunctionalTests/quickstart/Controls/CheckBoxTestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/CheckBoxTestCase.php
@@ -1,53 +1,53 @@
<?php
-class QuickstartCheckBoxTestCase extends PradoGenericSeleniumTest
+class QuickstartCheckBoxTestCase extends PradoGenericSelenium2Test
{
function test ()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TCheckBox.Home&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TCheckBox.Home&amp;notheme=true&amp;lang=en");
- $this->verifyTitle("PRADO QuickStart Sample", "");
+ $this->assertEquals("PRADO QuickStart Sample", $this->title());
// a regular checkbox
- $this->click("//input[@name='ctl0\$body\$ctl0']", "");
+ $this->byXPath("//input[@name='ctl0\$body\$ctl0']")->click();
// a checkbox with customized value
- $this->click("//input[@name='ctl0\$body\$ctl1' and @value='value']", "");
+ $this->byXPath("//input[@name='ctl0\$body\$ctl1' and @value='value']")->click();
// an auto postback checkbox
- $this->verifyTextNotPresent("I'm clicked");
- $this->clickAndWait("//input[@name='ctl0\$body\$ctl2']", "");
- $this->verifyTextPresent("I'm clicked");
- $this->clickAndWait("//input[@name='ctl0\$body\$ctl2']", "");
- $this->verifyTextPresent("I'm clicked");
+ $this->assertNotContains("I'm clicked", $this->source());
+ $this->byXPath("//input[@name='ctl0\$body\$ctl2']")->click();
+ $this->assertContains("I'm clicked", $this->source());
+ $this->byXPath("//input[@name='ctl0\$body\$ctl2']")->click();
+ $this->assertContains("I'm clicked", $this->source());
// a checkbox causing validation on a textbox
- $this->verifyNotVisible('ctl0_body_ctl3');
- $this->click("//input[@name='ctl0\$body\$ctl4']", "");
+ $this->assertNotVisible('ctl0_body_ctl3');
+ $this->byXPath("//input[@name='ctl0\$body\$ctl4']")->click();
// $this->pause(1000);
- $this->verifyVisible('ctl0_body_ctl3');
- $this->click("//input[@name='ctl0\$body\$ctl4']", "");
+ $this->assertVisible('ctl0_body_ctl3');
+ $this->byXPath("//input[@name='ctl0\$body\$ctl4']")->click();
// $this->pause(1000);
- $this->verifyVisible('ctl0_body_ctl3');
+ $this->assertVisible('ctl0_body_ctl3');
$this->type("ctl0\$body\$TextBox", "test");
- $this->clickAndWait("//input[@name='ctl0\$body\$ctl4']", "");
- $this->verifyNotVisible('ctl0_body_ctl3');
+ $this->byXPath("//input[@name='ctl0\$body\$ctl4']")->click();
+ $this->assertNotVisible('ctl0_body_ctl3');
// a checkbox validated by a required field validator
- $this->verifyNotVisible('ctl0_body_ctl6');
- $this->click("//input[@type='submit' and @value='Submit']", "");
+ $this->assertNotVisible('ctl0_body_ctl6');
+ $this->byXPath("//input[@type='submit' and @value='Submit']")->click();
// $this->pause(1000);
- $this->verifyVisible('ctl0_body_ctl6');
- $this->click("//input[@name='ctl0\$body\$CheckBox']", "");
- $this->clickAndWait("//input[@type='submit' and @value='Submit']", "");
- $this->verifyNotVisible('ctl0_body_ctl6');
+ $this->assertVisible('ctl0_body_ctl6');
+ $this->byXPath("//input[@name='ctl0\$body\$CheckBox']")->click();
+ $this->byXPath("//input[@type='submit' and @value='Submit']")->click();
+ $this->assertNotVisible('ctl0_body_ctl6');
// a checkbox validated by a required field validator using AutoPostBack
- $this->verifyNotVisible('ctl0_body_ctl7');
- $this->click("//input[@name='ctl0\$body\$CheckBox2']", "");
+ $this->assertNotVisible('ctl0_body_ctl7');
+ $this->byXPath("//input[@name='ctl0\$body\$CheckBox2']")->click();
// $this->pause(1000);
- $this->verifyVisible('ctl0_body_ctl7');
-// $this->clickAndWait("//input[@name='ctl0\$body\$CheckBox2' and @value='ctl0\$body\$CheckBox2']", "");
-// $this->verifyNotVisible('ctl0_body_ctl7');
+ $this->assertVisible('ctl0_body_ctl7');
+// $this->byXPath("//input[@name='ctl0\$body\$CheckBox2' and @value='ctl0\$body\$CheckBox2']")->click();
+// $this->assertNotVisible('ctl0_body_ctl7');
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/DataGrid1TestCase.php b/tests/FunctionalTests/quickstart/Controls/DataGrid1TestCase.php
index 57ee92ae..4f4ca60a 100755
--- a/tests/FunctionalTests/quickstart/Controls/DataGrid1TestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/DataGrid1TestCase.php
@@ -1,29 +1,29 @@
<?php
-class QuickstartDataGrid1TestCase extends PradoGenericSeleniumTest
+class QuickstartDataGrid1TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TDataGrid.Sample1&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TDataGrid.Sample1&amp;notheme=true&amp;lang=en");
// verify if all required texts are present
- $this->verifyTextPresent('id','');
- $this->verifyTextPresent('name','');
- $this->verifyTextPresent('quantity','');
- $this->verifyTextPresent('price','');
- $this->verifyTextPresent('imported','');
- $this->verifyTextPresent('ITN001','');
- $this->verifyTextPresent('Motherboard','');
- $this->verifyTextPresent('100','');
- $this->verifyTextPresent('true','');
- $this->verifyTextPresent('ITN019','');
- $this->verifyTextPresent('Speaker','');
- $this->verifyTextPresent('35','');
- $this->verifyTextPresent('65','');
- $this->verifyTextPresent('false','');
+ $this->assertContains('id', $this->source());
+ $this->assertContains('name', $this->source());
+ $this->assertContains('quantity', $this->source());
+ $this->assertContains('price', $this->source());
+ $this->assertContains('imported', $this->source());
+ $this->assertContains('ITN001', $this->source());
+ $this->assertContains('Motherboard', $this->source());
+ $this->assertContains('100', $this->source());
+ $this->assertContains('true', $this->source());
+ $this->assertContains('ITN019', $this->source());
+ $this->assertContains('Speaker', $this->source());
+ $this->assertContains('35', $this->source());
+ $this->assertContains('65', $this->source());
+ $this->assertContains('false', $this->source());
// verify specific table tags
- $this->verifyElementPresent("ctl0_body_DataGrid");
- $this->verifyAttribute("ctl0_body_DataGrid@cellpadding","2");
+ $this->assertElementPresent("ctl0_body_DataGrid");
+ $this->assertAttribute("ctl0_body_DataGrid@cellpadding","2");
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/DataGrid2TestCase.php b/tests/FunctionalTests/quickstart/Controls/DataGrid2TestCase.php
index 7efd69cc..548b04e3 100755
--- a/tests/FunctionalTests/quickstart/Controls/DataGrid2TestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/DataGrid2TestCase.php
@@ -1,49 +1,49 @@
<?php
-class QuickstartDataGrid2TestCase extends PradoGenericSeleniumTest
+class QuickstartDataGrid2TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TDataGrid.Sample2&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TDataGrid.Sample2&amp;notheme=true&amp;lang=en");
// verify if all required texts are present
- $this->verifyTextPresent('Book Title','');
- $this->verifyTextPresent('Publisher','');
- $this->verifyTextPresent('Price','');
- $this->verifyTextPresent('In-stock','');
- $this->verifyTextPresent('Rating','');
+ $this->assertContains('Book Title', $this->source());
+ $this->assertContains('Publisher', $this->source());
+ $this->assertContains('Price', $this->source());
+ $this->assertContains('In-stock', $this->source());
+ $this->assertContains('Rating', $this->source());
// verify book titles
- $this->verifyElementPresent("//a[@href='http://www.amazon.com/gp/product/0596007124' and text()='Head First Design Patterns']",'');
- $this->verifyElementPresent("//a[@href='http://www.amazon.com/gp/product/0321278658' and text()='Extreme Programming Explained : Embrace Change']",'');
+ $this->assertElementPresent("//a[@href='http://www.amazon.com/gp/product/0596007124' and text()='Head First Design Patterns']",'');
+ $this->assertElementPresent("//a[@href='http://www.amazon.com/gp/product/0321278658' and text()='Extreme Programming Explained : Embrace Change']",'');
// verify publishers
- $this->verifyTextPresent("O'Reilly Media, Inc.",'');
- $this->verifyTextPresent("Addison-Wesley Professional",'');
+ $this->assertContains("O'Reilly Media, Inc.", $this->source());
+ $this->assertContains("Addison-Wesley Professional", $this->source());
// verify prices
- $this->verifyTextPresent("\$37.49",'');
- $this->verifyTextPresent("\$38.49",'');
+ $this->assertContains("\$37.49", $this->source());
+ $this->assertContains("\$38.49", $this->source());
// verify in-stock
- $this->verifyAttribute('ctl0_body_DataGrid_ctl1_ctl5@checked','regexp:true|checked');
- $this->verifyAttribute('ctl0_body_DataGrid_ctl1_ctl5@disabled','regexp:true|disabled');
- $this->verifyAttribute('ctl0_body_DataGrid_ctl2_ctl5@checked','regexp:true|checked');
- $this->assertEquals($this->getEval('this.browserbot.findElement("ctl0_body_DataGrid_ctl6_ctl5").hasAttribute("checked")'), 'false');
- $this->verifyAttribute('ctl0_body_DataGrid_ctl6_ctl5@disabled','regexp:true|disabled');
+ $this->assertAttribute('ctl0_body_DataGrid_ctl1_ctl5@checked','regexp:true|checked');
+ $this->assertAttribute('ctl0_body_DataGrid_ctl1_ctl5@disabled','regexp:true|disabled');
+ $this->assertAttribute('ctl0_body_DataGrid_ctl2_ctl5@checked','regexp:true|checked');
+ $this->assertAttribute('ctl0_body_DataGrid_ctl6_ctl5@checked',null);
+ $this->assertAttribute('ctl0_body_DataGrid_ctl6_ctl5@disabled','regexp:true|disabled');
// verify ratings
- //$this->verifyElementPresent("//img[@src='images/star5.gif']",'');
- //$this->verifyElementPresent("//img[@src='images/star2.gif']",'');
+ //$this->assertElementPresent("//img[@src='images/star5.gif']",'');
+ //$this->assertElementPresent("//img[@src='images/star2.gif']",'');
// verify toggle column visibility
- $this->clickAndWait("//input[@name='ctl0\$body\$ctl1\$c0' and @value='Book Title']", "");
- $this->verifyTextNotPresent('Head First Design Patterns','');
- $this->clickAndWait("//input[@name='ctl0\$body\$ctl1\$c3' and @value='In-stock']", "");
- $this->verifyElementNotPresent('ctl0_body_DataGrid_ctl1_ctl5','');
- $this->clickAndWait("//input[@name='ctl0\$body\$ctl1\$c3' and @value='In-stock']", "");
- $this->verifyElementPresent('ctl0_body_DataGrid_ctl1_ctl5','');
- $this->clickAndWait("//input[@name='ctl0\$body\$ctl1\$c0' and @value='Book Title']", "");
- $this->verifyTextPresent('Head First Design Patterns','');
+ $this->byXPath("//input[@name='ctl0\$body\$ctl1\$c0' and @value='Book Title']")->click();
+ $this->assertNotContains('Head First Design Patterns', $this->source());
+ $this->byXPath("//input[@name='ctl0\$body\$ctl1\$c3' and @value='In-stock']")->click();
+ $this->assertElementNotPresent('ctl0_body_DataGrid_ctl1_ctl5','');
+ $this->byXPath("//input[@name='ctl0\$body\$ctl1\$c3' and @value='In-stock']")->click();
+ $this->assertElementPresent('ctl0_body_DataGrid_ctl1_ctl5','');
+ $this->byXPath("//input[@name='ctl0\$body\$ctl1\$c0' and @value='Book Title']")->click();
+ $this->assertContains('Head First Design Patterns', $this->source());
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/DataGrid3TestCase.php b/tests/FunctionalTests/quickstart/Controls/DataGrid3TestCase.php
index 2cdace20..e87b9072 100755
--- a/tests/FunctionalTests/quickstart/Controls/DataGrid3TestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/DataGrid3TestCase.php
@@ -1,50 +1,56 @@
<?php
-class QuickstartDataGrid3TestCase extends PradoGenericSeleniumTest
+class QuickstartDataGrid3TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TDataGrid.Sample3&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TDataGrid.Sample3&amp;notheme=true&amp;lang=en");
// verify the 2nd row of data
- $this->verifyTextPresent("Design Patterns: Elements of Reusable Object-Oriented Software", "");
- $this->verifyTextPresent("Addison-Wesley Professional", "");
- $this->verifyTextPresent("$47.04", "");
- $this->verifyAttribute('ctl0_body_DataGrid_ctl2_ctl4@checked','regexp:true|checked');
- $this->verifyAttribute('ctl0_body_DataGrid_ctl2_ctl4@disabled','regexp:true|disabled');
- //$this->verifyElementPresent("//img[@src='images/star5.gif']",'');
+ $this->assertContains("Design Patterns: Elements of Reusable Object-Oriented Software", $this->source());
+ $this->assertContains("Addison-Wesley Professional", $this->source());
+ $this->assertContains("$47.04", $this->source());
+ $this->assertAttribute('ctl0_body_DataGrid_ctl2_ctl4@checked','regexp:true|checked');
+ $this->assertAttribute('ctl0_body_DataGrid_ctl2_ctl4@disabled','regexp:true|disabled');
+ //$this->assertElementPresent("//img[@src='images/star5.gif']",'');
// edit the 2nd row
- $this->clickAndWait("id=ctl0_body_DataGrid_ctl2_ctl7", "");
+ $this->byId("ctl0_body_DataGrid_ctl2_ctl7")->click();
$this->type("ctl0\$body\$DataGrid\$ctl2\$ctl1", "Design Pattern: Elements of Reusable Object-Oriented Software");
$this->type("ctl0\$body\$DataGrid\$ctl2\$ctl3", "Addison Wesley Professional");
$this->type("ctl0\$body\$DataGrid\$ctl2\$ctl5", "\$57.04");
- $this->click("//input[@name='ctl0\$body\$DataGrid\$ctl2\$ctl7']", "");
- $this->select("ctl0\$body\$DataGrid\$ctl2\$ctl9", "label=1");
- $this->clickAndWait("link=Save", "");
+ $this->byXPath("//input[@name='ctl0\$body\$DataGrid\$ctl2\$ctl7']")->click();
+ $this->select("ctl0\$body\$DataGrid\$ctl2\$ctl9", "1");
+ $this->byLinkText("Save")->click();
// verify the 2nd row is saved
- $this->verifyTextPresent("Design Pattern: Elements of Reusable Object-Oriented Software", "");
- $this->verifyTextPresent("Addison Wesley Professional", "");
- $this->verifyTextPresent("$57.04", "");
- $this->assertEquals($this->getEval('this.browserbot.findElement("ctl0_body_DataGrid_ctl2_ctl4").hasAttribute("checked")'), 'false');
- $this->verifyAttribute('ctl0_body_DataGrid_ctl2_ctl4@disabled','regexp:true|disabled');
- //$this->verifyElementPresent("//img[@src='images/star1.gif']",'');
+ $this->assertContains("Design Pattern: Elements of Reusable Object-Oriented Software", $this->source());
+ $this->assertContains("Addison Wesley Professional", $this->source());
+ $this->assertContains("$57.04", $this->source());
+ $this->assertAttribute("ctl0_body_DataGrid_ctl2_ctl4@checked", null);
+ $this->assertAttribute('ctl0_body_DataGrid_ctl2_ctl4@disabled','regexp:true|disabled');
+ //$this->assertElementPresent("//img[@src='images/star1.gif']",'');
// verify cancel editting the 3rd row
- $this->clickAndWait("id=ctl0_body_DataGrid_ctl3_ctl7", "");
- $this->clickAndWait("link=Cancel", "");
- $this->verifyTextPresent("Design Patterns Explained : A New Perspective on Object-Oriented Design", "");
+ $this->byId("ctl0_body_DataGrid_ctl3_ctl7")->click();
+ $this->byLinkText("Cancel")->click();
+ $this->assertContains("Design Patterns Explained : A New Perspective on Object-Oriented Design", $this->source());
// verify deleting
- $this->clickAndWait("id=ctl0_body_DataGrid_ctl3_ctl9", "");
- $this->verifyConfirmation("Are you sure?");
- $this->verifyTextNotPresent("Design Patterns Explained : A New Perspective on Object-Oriented Design", "");
-
- $this->verifyTextPresent("Extreme Programming Explained : Embrace Change",'');
- $this->chooseCancelOnNextConfirmation();
- $this->click("id=ctl0_body_DataGrid_ctl6_ctl9", "");
- $this->verifyConfirmation("Are you sure?");
- $this->verifyTextPresent("Extreme Programming Explained : Embrace Change",'');
+ $this->byId("ctl0_body_DataGrid_ctl3_ctl9")->click();
+
+ $this->assertEquals("Are you sure?", $this->alertText());
+ $this->acceptAlert();
+
+ $this->pause(500);
+ $this->assertNotContains("Design Patterns Explained : A New Perspective on Object-Oriented Design", $this->source());
+
+ $this->assertContains("Extreme Programming Explained : Embrace Change", $this->source());
+ $this->byId("ctl0_body_DataGrid_ctl6_ctl9")->click();
+
+ $this->assertEquals("Are you sure?", $this->alertText());
+ $this->dismissAlert();
+
+ $this->assertContains("Extreme Programming Explained : Embrace Change", $this->source());
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/DataGrid4TestCase.php b/tests/FunctionalTests/quickstart/Controls/DataGrid4TestCase.php
index 702b997e..f67f5634 100755
--- a/tests/FunctionalTests/quickstart/Controls/DataGrid4TestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/DataGrid4TestCase.php
@@ -1,28 +1,28 @@
<?php
-class QuickstartDataGrid4TestCase extends PradoGenericSeleniumTest
+class QuickstartDataGrid4TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TDataGrid.Sample4&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TDataGrid.Sample4&amp;notheme=true&amp;lang=en");
// verify the 2nd row of data
- $this->verifyTextPresent("Design Patterns: Elements of Reusable Object-Oriented Software", "");
- $this->verifyTextPresent("Addison-Wesley Professional", "");
- $this->verifyTextPresent("$47.04", "");
- $this->verifyAttribute('ctl0_body_DataGrid_ctl2_ctl5@checked','regexp:true|checked');
- $this->verifyAttribute('ctl0_body_DataGrid_ctl2_ctl5@disabled','regexp:true|disabled');
+ $this->assertContains("Design Patterns: Elements of Reusable Object-Oriented Software", $this->source());
+ $this->assertContains("Addison-Wesley Professional", $this->source());
+ $this->assertContains("$47.04", $this->source());
+ $this->assertAttribute('ctl0_body_DataGrid_ctl2_ctl5@checked','regexp:true|checked');
+ $this->assertAttribute('ctl0_body_DataGrid_ctl2_ctl5@disabled','regexp:true|disabled');
// verify sorting
- $this->clickAndWait("link=Book Title", "");
- $this->assertEquals($this->getEval('this.browserbot.findElement("ctl0_body_DataGrid_ctl1_ctl5").hasAttribute("checked")'), 'false');
- $this->clickAndWait("link=Publisher", "");
- $this->assertEquals($this->getEval('this.browserbot.findElement("ctl0_body_DataGrid_ctl6_ctl5").hasAttribute("checked")'), 'false');
- $this->clickAndWait("link=Price", "");
- $this->assertEquals($this->getEval('this.browserbot.findElement("ctl0_body_DataGrid_ctl2_ctl5").hasAttribute("checked")'), 'false');
- $this->clickAndWait("link=In-stock", "");
- $this->assertEquals($this->getEval('this.browserbot.findElement("ctl0_body_DataGrid_ctl1_ctl5").hasAttribute("checked")'), 'false');
- $this->clickAndWait("link=Rating", "");
- $this->assertEquals($this->getEval('this.browserbot.findElement("ctl0_body_DataGrid_ctl4_ctl5").hasAttribute("checked")'), 'false');
+ $this->byLinkText("Book Title")->click();
+ $this->assertAttribute('ctl0_body_DataGrid_ctl1_ctl5@checked', null);
+ $this->byLinkText("Publisher")->click();
+ $this->assertAttribute('ctl0_body_DataGrid_ctl6_ctl5@checked', null);
+ $this->byLinkText("Price")->click();
+ $this->assertAttribute('ctl0_body_DataGrid_ctl2_ctl5@checked', null);
+ $this->byLinkText("In-stock")->click();
+ $this->assertAttribute('ctl0_body_DataGrid_ctl1_ctl5@checked', null);
+ $this->byLinkText("Rating")->click();
+ $this->assertAttribute('ctl0_body_DataGrid_ctl4_ctl5@checked', null);
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/DataGrid5TestCase.php b/tests/FunctionalTests/quickstart/Controls/DataGrid5TestCase.php
index f854d44c..3df22ff8 100755
--- a/tests/FunctionalTests/quickstart/Controls/DataGrid5TestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/DataGrid5TestCase.php
@@ -1,113 +1,113 @@
<?php
-class QuickstartDataGrid5TestCase extends PradoGenericSeleniumTest
+class QuickstartDataGrid5TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TDataGrid.Sample5&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TDataGrid.Sample5&amp;notheme=true&amp;lang=en");
// verify if all required texts are present
// verify column headers
- $this->verifyTextPresent('id','');
- $this->verifyTextPresent('name','');
- $this->verifyTextPresent('quantity','');
- $this->verifyTextPresent('price','');
- $this->verifyTextPresent('imported','');
+ $this->assertContains('id', $this->source());
+ $this->assertContains('name', $this->source());
+ $this->assertContains('quantity', $this->source());
+ $this->assertContains('price', $this->source());
+ $this->assertContains('imported', $this->source());
- $this->verifyTextPresent('ITN001','');
- $this->verifyTextPresent('ITN002','');
- $this->verifyTextPresent('ITN003','');
- $this->verifyTextPresent('ITN004','');
- $this->verifyTextPresent('ITN005','');
- $this->verifyTextNotPresent('ITN006','');
+ $this->assertContains('ITN001', $this->source());
+ $this->assertContains('ITN002', $this->source());
+ $this->assertContains('ITN003', $this->source());
+ $this->assertContains('ITN004', $this->source());
+ $this->assertContains('ITN005', $this->source());
+ $this->assertNotContains('ITN006', $this->source());
// verify paging
- $this->clickAndWait("link=2", "");
- $this->verifyTextPresent('ITN006','');
- $this->verifyTextPresent('ITN007','');
- $this->verifyTextPresent('ITN008','');
- $this->verifyTextPresent('ITN009','');
- $this->verifyTextPresent('ITN010','');
- $this->verifyTextNotPresent('ITN011','');
- $this->verifyTextNotPresent('ITN005','');
+ $this->byLinkText("2")->click();
+ $this->assertContains('ITN006', $this->source());
+ $this->assertContains('ITN007', $this->source());
+ $this->assertContains('ITN008', $this->source());
+ $this->assertContains('ITN009', $this->source());
+ $this->assertContains('ITN010', $this->source());
+ $this->assertNotContains('ITN011', $this->source());
+ $this->assertNotContains('ITN005', $this->source());
- $this->clickAndWait("link=4", "");
- $this->verifyTextPresent('ITN016','');
- $this->verifyTextPresent('ITN017','');
- $this->verifyTextPresent('ITN018','');
- $this->verifyTextPresent('ITN019','');
- $this->verifyTextNotPresent('ITN015','');
+ $this->byLinkText("4")->click();
+ $this->assertContains('ITN016', $this->source());
+ $this->assertContains('ITN017', $this->source());
+ $this->assertContains('ITN018', $this->source());
+ $this->assertContains('ITN019', $this->source());
+ $this->assertNotContains('ITN015', $this->source());
- $this->clickAndWait("link=1", "");
- $this->verifyTextPresent('ITN001','');
- $this->verifyTextPresent('ITN002','');
- $this->verifyTextPresent('ITN003','');
- $this->verifyTextPresent('ITN004','');
- $this->verifyTextPresent('ITN005','');
- $this->verifyTextNotPresent('ITN006','');
+ $this->byLinkText("1")->click();
+ $this->assertContains('ITN001', $this->source());
+ $this->assertContains('ITN002', $this->source());
+ $this->assertContains('ITN003', $this->source());
+ $this->assertContains('ITN004', $this->source());
+ $this->assertContains('ITN005', $this->source());
+ $this->assertNotContains('ITN006', $this->source());
// show top pager
- $this->clickAndWait("//input[@name='ctl0\$body\$ctl1\$c0' and @value='Top']", "");
- $this->clickAndWait("id=ctl0_body_DataGrid_ctl8_ctl3", "");
- $this->clickAndWait("link=1", "");
+ $this->byXPath("//input[@name='ctl0\$body\$ctl1\$c0' and @value='Top']")->click();
+ $this->byId("ctl0_body_DataGrid_ctl8_ctl3")->click();
+ $this->byLinkText("1")->click();
// hide top pager
- $this->clickAndWait("//input[@name='ctl0\$body\$ctl1\$c0' and @value='Top']", "");
+ $this->byXPath("//input[@name='ctl0\$body\$ctl1\$c0' and @value='Top']")->click();
// change next prev caption
$this->type("ctl0\$body\$NextPageText", "Next Page");
$this->type("ctl0\$body\$PrevPageText", "Prev Page");
- $this->clickAndWait("//input[@type='submit' and @value='Submit']", "");
+ $this->byXPath("//input[@type='submit' and @value='Submit']")->click();
// verify next prev paging
- $this->verifyTextPresent('ITN001','');
- $this->verifyTextNotPresent('ITN006','');
- $this->clickAndWait("link=Next Page", "");
- $this->verifyTextNotPresent('ITN005','');
- $this->verifyTextPresent('ITN006','');
- $this->verifyTextNotPresent('ITN011','');
- $this->clickAndWait("link=Next Page", "");
- $this->verifyTextNotPresent('ITN010','');
- $this->verifyTextPresent('ITN011','');
- $this->verifyTextNotPresent('ITN016','');
- $this->clickAndWait("link=Next Page", "");
- $this->verifyTextNotPresent('ITN015','');
- $this->verifyTextPresent('ITN016','');
- $this->clickAndWait("link=Prev Page", "");
- $this->verifyTextNotPresent('ITN010','');
- $this->verifyTextPresent('ITN011','');
- $this->verifyTextNotPresent('ITN016','');
- $this->clickAndWait("link=Prev Page", "");
- $this->verifyTextNotPresent('ITN005','');
- $this->verifyTextPresent('ITN006','');
- $this->verifyTextNotPresent('ITN011','');
- $this->clickAndWait("link=Prev Page", "");
- $this->verifyTextPresent('ITN001','');
- $this->verifyTextNotPresent('ITN006','');
+ $this->assertContains('ITN001', $this->source());
+ $this->assertNotContains('ITN006', $this->source());
+ $this->byLinkText("Next Page")->click();
+ $this->assertNotContains('ITN005', $this->source());
+ $this->assertContains('ITN006', $this->source());
+ $this->assertNotContains('ITN011', $this->source());
+ $this->byLinkText("Next Page")->click();
+ $this->assertNotContains('ITN010', $this->source());
+ $this->assertContains('ITN011', $this->source());
+ $this->assertNotContains('ITN016', $this->source());
+ $this->byLinkText("Next Page")->click();
+ $this->assertNotContains('ITN015', $this->source());
+ $this->assertContains('ITN016', $this->source());
+ $this->byLinkText("Prev Page")->click();
+ $this->assertNotContains('ITN010', $this->source());
+ $this->assertContains('ITN011', $this->source());
+ $this->assertNotContains('ITN016', $this->source());
+ $this->byLinkText("Prev Page")->click();
+ $this->assertNotContains('ITN005', $this->source());
+ $this->assertContains('ITN006', $this->source());
+ $this->assertNotContains('ITN011', $this->source());
+ $this->byLinkText("Prev Page")->click();
+ $this->assertContains('ITN001', $this->source());
+ $this->assertNotContains('ITN006', $this->source());
// change button count
$this->type("ctl0\$body\$PageButtonCount", "2");
- $this->clickAndWait("name=ctl0\$body\$ctl6", "");
- $this->clickAndWait("link=Next Page", "");
- $this->verifyTextNotPresent('ITN010','');
- $this->verifyTextPresent('ITN011','');
- $this->verifyTextNotPresent('ITN016','');
- $this->clickAndWait("link=4", "");
- $this->verifyTextNotPresent('ITN015','');
- $this->verifyTextPresent('ITN016','');
- $this->clickAndWait("link=Prev Page", "");
- $this->verifyTextNotPresent('ITN005','');
- $this->verifyTextPresent('ITN006','');
- $this->verifyTextNotPresent('ITN011','');
+ $this->byName("ctl0\$body\$ctl6")->click();
+ $this->byLinkText("Next Page")->click();
+ $this->assertNotContains('ITN010', $this->source());
+ $this->assertContains('ITN011', $this->source());
+ $this->assertNotContains('ITN016', $this->source());
+ $this->byLinkText("4")->click();
+ $this->assertNotContains('ITN015', $this->source());
+ $this->assertContains('ITN016', $this->source());
+ $this->byLinkText("Prev Page")->click();
+ $this->assertNotContains('ITN005', $this->source());
+ $this->assertContains('ITN006', $this->source());
+ $this->assertNotContains('ITN011', $this->source());
$this->type("ctl0\$body\$PageButtonCount", "10");
- $this->clickAndWait("name=ctl0\$body\$ctl6", "");
+ $this->byName("ctl0\$body\$ctl6")->click();
$this->type("ctl0\$body\$PageSize", "2");
- $this->clickAndWait("name=ctl0\$body\$ctl8", "");
- $this->verifyTextPresent('ITN001','');
- $this->verifyTextPresent('ITN002','');
- $this->verifyTextNotPresent('ITN003','');
- $this->clickAndWait("link=10", "");
- $this->verifyTextPresent('ITN019','');
- $this->verifyTextNotPresent('ITN018','');
+ $this->byName("ctl0\$body\$ctl8")->click();
+ $this->assertContains('ITN001', $this->source());
+ $this->assertContains('ITN002', $this->source());
+ $this->assertNotContains('ITN003', $this->source());
+ $this->byLinkText("10")->click();
+ $this->assertContains('ITN019', $this->source());
+ $this->assertNotContains('ITN018', $this->source());
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/DataGrid6TestCase.php b/tests/FunctionalTests/quickstart/Controls/DataGrid6TestCase.php
index c6fba20f..54af86a8 100755
--- a/tests/FunctionalTests/quickstart/Controls/DataGrid6TestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/DataGrid6TestCase.php
@@ -1,48 +1,48 @@
<?php
-class QuickstartDataGrid6TestCase extends PradoGenericSeleniumTest
+class QuickstartDataGrid6TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TDataGrid.Sample6&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TDataGrid.Sample6&amp;notheme=true&amp;lang=en");
// verify column headers
- $this->verifyTextPresent('id','');
- $this->verifyTextPresent('name','');
- $this->verifyTextPresent('quantity','');
- $this->verifyTextPresent('price','');
- $this->verifyTextPresent('imported','');
+ $this->assertContains('id', $this->source());
+ $this->assertContains('name', $this->source());
+ $this->assertContains('quantity', $this->source());
+ $this->assertContains('price', $this->source());
+ $this->assertContains('imported', $this->source());
- $this->verifyTextPresent('ITN001','');
- $this->verifyTextPresent('ITN002','');
- $this->verifyTextPresent('ITN003','');
- $this->verifyTextPresent('ITN004','');
- $this->verifyTextPresent('ITN005','');
- $this->verifyTextNotPresent('ITN006','');
+ $this->assertContains('ITN001', $this->source());
+ $this->assertContains('ITN002', $this->source());
+ $this->assertContains('ITN003', $this->source());
+ $this->assertContains('ITN004', $this->source());
+ $this->assertContains('ITN005', $this->source());
+ $this->assertNotContains('ITN006', $this->source());
// verify paging
- $this->clickAndWait("link=2", "");
- $this->verifyTextPresent('ITN006','');
- $this->verifyTextPresent('ITN007','');
- $this->verifyTextPresent('ITN008','');
- $this->verifyTextPresent('ITN009','');
- $this->verifyTextPresent('ITN010','');
- $this->verifyTextNotPresent('ITN011','');
- $this->verifyTextNotPresent('ITN005','');
+ $this->byLinkText("2")->click();
+ $this->assertContains('ITN006', $this->source());
+ $this->assertContains('ITN007', $this->source());
+ $this->assertContains('ITN008', $this->source());
+ $this->assertContains('ITN009', $this->source());
+ $this->assertContains('ITN010', $this->source());
+ $this->assertNotContains('ITN011', $this->source());
+ $this->assertNotContains('ITN005', $this->source());
- $this->clickAndWait("link=4", "");
- $this->verifyTextPresent('ITN016','');
- $this->verifyTextPresent('ITN017','');
- $this->verifyTextPresent('ITN018','');
- $this->verifyTextPresent('ITN019','');
- $this->verifyTextNotPresent('ITN015','');
+ $this->byLinkText("4")->click();
+ $this->assertContains('ITN016', $this->source());
+ $this->assertContains('ITN017', $this->source());
+ $this->assertContains('ITN018', $this->source());
+ $this->assertContains('ITN019', $this->source());
+ $this->assertNotContains('ITN015', $this->source());
- $this->clickAndWait("link=1", "");
- $this->verifyTextPresent('ITN001','');
- $this->verifyTextPresent('ITN002','');
- $this->verifyTextPresent('ITN003','');
- $this->verifyTextPresent('ITN004','');
- $this->verifyTextPresent('ITN005','');
- $this->verifyTextNotPresent('ITN006','');
+ $this->byLinkText("1")->click();
+ $this->assertContains('ITN001', $this->source());
+ $this->assertContains('ITN002', $this->source());
+ $this->assertContains('ITN003', $this->source());
+ $this->assertContains('ITN004', $this->source());
+ $this->assertContains('ITN005', $this->source());
+ $this->assertNotContains('ITN006', $this->source());
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/DataList1TestCase.php b/tests/FunctionalTests/quickstart/Controls/DataList1TestCase.php
index 4ff6478a..436af2ad 100755
--- a/tests/FunctionalTests/quickstart/Controls/DataList1TestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/DataList1TestCase.php
@@ -1,24 +1,24 @@
<?php
-class QuickstartDataList1TestCase extends PradoGenericSeleniumTest
+class QuickstartDataList1TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TDataList.Sample1&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TDataList.Sample1&amp;notheme=true&amp;lang=en");
// verify if all required texts are present
- $this->verifyTextPresent('ITN001','');
- $this->verifyTextPresent('$100','');
- $this->verifyTextPresent('Motherboard','');
- $this->verifyTextPresent('ITN018','');
- $this->verifyTextPresent('Surge protector','');
- $this->verifyTextPresent('45','');
- $this->verifyTextPresent('$15','');
- $this->verifyTextPresent('Total 19 products.','');
- $this->verifyTextPresent('Computer Parts','');
+ $this->assertContains('ITN001', $this->source());
+ $this->assertContains('$100', $this->source());
+ $this->assertContains('Motherboard', $this->source());
+ $this->assertContains('ITN018', $this->source());
+ $this->assertContains('Surge protector', $this->source());
+ $this->assertContains('45', $this->source());
+ $this->assertContains('$15', $this->source());
+ $this->assertContains('Total 19 products.', $this->source());
+ $this->assertContains('Computer Parts', $this->source());
// verify specific table tags
- $this->verifyElementPresent("ctl0_body_DataList");
- $this->verifyElementPresent("//td[@align='right']");
+ $this->assertElementPresent("ctl0_body_DataList");
+ $this->assertElementPresent("//td[@align='right']");
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/DataList2TestCase.php b/tests/FunctionalTests/quickstart/Controls/DataList2TestCase.php
index 4fb3743e..c21d71f3 100755
--- a/tests/FunctionalTests/quickstart/Controls/DataList2TestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/DataList2TestCase.php
@@ -1,59 +1,65 @@
<?php
-class QuickstartDataList2TestCase extends PradoGenericSeleniumTest
+class QuickstartDataList2TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TDataList.Sample2&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TDataList.Sample2&amp;notheme=true&amp;lang=en");
// verify initial presentation
- $this->verifyTextPresent("Motherboard ", "");
- $this->verifyTextPresent("Monitor ", "");
+ $this->assertContains("Motherboard", $this->source());
+ $this->assertContains("Monitor", $this->source());
// verify selecting an item
- $this->clickAndWait("link=ITN003", "");
- $this->verifyTextPresent("Quantity", "");
- $this->verifyTextPresent("Price", "");
- $this->verifyTextPresent("\$80", "");
- $this->clickAndWait("link=ITN005", "");
- $this->verifyTextPresent("\$150", "");
+ $this->byLinkText("ITN003")->click();
+ $this->assertContains("Quantity", $this->source());
+ $this->assertContains("Price", $this->source());
+ $this->assertContains("\$80", $this->source());
+ $this->byLinkText("ITN005")->click();
+ $this->assertContains("\$150", $this->source());
// verify editting an item
- $this->clickAndWait("id=ctl0_body_DataList_ctl5_ctl0", "");
+ $this->byId("ctl0_body_DataList_ctl5_ctl0")->click();
$this->type("ctl0\$body\$DataList\$ctl5\$ProductQuantity", "11");
$this->type("ctl0\$body\$DataList\$ctl5\$ProductPrice", "140.99");
- $this->click("//input[@name='ctl0\$body\$DataList\$ctl5\$ProductImported']", "");
- $this->clickAndWait("link=Save", "");
+ $this->byXPath("//input[@name='ctl0\$body\$DataList\$ctl5\$ProductImported']")->click();
+ $this->byLinkText("Save")->click();
// verify item is saved
- $this->clickAndWait("link=ITN005", "");
- $this->verifyTextPresent("\$140.99", "");
- $this->verifyTextPresent("11", "");
+ $this->byLinkText("ITN005")->click();
+ $this->assertContains("\$140.99", $this->source());
+ $this->assertContains("11", $this->source());
// verify editting another item
- $this->clickAndWait("id=ctl0_body_DataList_ctl3_ctl1", "");
+ $this->byId("ctl0_body_DataList_ctl3_ctl1")->click();
$this->type("ctl0\$body\$DataList\$ctl3\$ProductName", "Hard Drive");
$this->type("ctl0\$body\$DataList\$ctl3\$ProductQuantity", "23");
- $this->click("//input[@name='ctl0\$body\$DataList\$ctl3\$ProductImported']", "");
- $this->clickAndWait("link=Cancel", "");
+ $this->byXPath("//input[@name='ctl0\$body\$DataList\$ctl3\$ProductImported']")->click();
+ $this->byLinkText("Cancel")->click();
// verify item is canceled
- $this->clickAndWait("link=ITN003", "");
- $this->verifyTextPresent("2", "");
- $this->verifyTextPresent("Harddrive ", "");
+ $this->byLinkText("ITN003")->click();
+ $this->assertContains("2", $this->source());
+ $this->assertContains("Harddrive", $this->source());
// verify item deletion
- $this->clickAndWait("id=ctl0_body_DataList_ctl3_ctl1", "");
- $this->verifyConfirmation("Are you sure?");
- $this->chooseCancelOnNextConfirmation();
- $this->click("id=ctl0_body_DataList_ctl5_ctl2", "");
- $this->verifyConfirmation("Are you sure?");
- $this->verifyTextPresent("Motherboard ", "");
- $this->verifyTextPresent("CPU ", "");
- $this->verifyTextNotPresent("Harddrive","");
- $this->verifyTextPresent("Sound card", "");
- $this->verifyTextPresent("Video card", "");
- $this->verifyTextPresent("Keyboard","");
- $this->verifyTextPresent("Monitor ", "");
+ $this->byId("ctl0_body_DataList_ctl3_ctl1")->click();
+
+ $this->assertEquals("Are you sure?", $this->alertText());
+ $this->acceptAlert();
+
+ $this->pause(300); // wait for reload
+ $this->byId("ctl0_body_DataList_ctl5_ctl2")->click();
+
+ $this->assertEquals("Are you sure?", $this->alertText());
+ $this->dismissAlert();
+
+ $this->assertContains("Motherboard", $this->source());
+ $this->assertContains("CPU", $this->source());
+ $this->assertNotContains("Harddrive", $this->source());
+ $this->assertContains("Sound card", $this->source());
+ $this->assertContains("Video card", $this->source());
+ $this->assertContains("Keyboard", $this->source());
+ $this->assertContains("Monitor", $this->source());
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/DropDownListTestCase.php b/tests/FunctionalTests/quickstart/Controls/DropDownListTestCase.php
index eae8ab36..cb01e948 100755
--- a/tests/FunctionalTests/quickstart/Controls/DropDownListTestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/DropDownListTestCase.php
@@ -1,65 +1,65 @@
<?php
-class QuickstartDropDownListTestCase extends PradoGenericSeleniumTest
+class QuickstartDropDownListTestCase extends PradoGenericSelenium2Test
{
function test ()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TDropDownList.Home&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TDropDownList.Home&amp;notheme=true&amp;lang=en");
- $this->verifyTitle("PRADO QuickStart Sample", "");
+ $this->assertEquals("PRADO QuickStart Sample", $this->title());
// dropdown list with default settings
- $this->verifyElementPresent("ctl0\$body\$ctl0");
+ $this->assertElementPresent("ctl0\$body\$ctl0");
// dropdown list with initial options
- $this->assertEquals($this->getSelectOptions("ctl0\$body\$ctl1"), array('item 1', 'item 2', 'item 3', 'item 4'));
+ $this->assertEquals($this->getSelectOptions("ctl0\$body\$ctl1"), array('item 1', 'item 2', 'item 3', 'item 4'));
$this->assertSelected("ctl0\$body\$ctl1","item 2");
// dropdown list with customized styles
- $this->assertEquals($this->getSelectOptions("ctl0\$body\$ctl2"), array('item 1', 'item 2', 'item 3', 'item 4'));
+ $this->assertEquals($this->getSelectOptions("ctl0\$body\$ctl2"), array('item 1', 'item 2', 'item 3', 'item 4'));
$this->assertSelected("ctl0\$body\$ctl2","item 2");
// a disabled dropdown list
- $this->verifyAttribute("ctl0\$body\$ctl3@disabled","regexp:true|disabled");
+ $this->assertAttribute("ctl0\$body\$ctl3@disabled","regexp:true|disabled");
// an auto postback dropdown list
- $this->verifyTextNotPresent("Your selection is: (Index: 2, Value: value 3, Text: item 3)", "");
- $this->selectAndWait("ctl0\$body\$ctl4", "label=item 3");
- $this->verifyTextPresent("Your selection is: (Index: 2, Value: value 3, Text: item 3)", "");
+ $this->assertNotContains("Your selection is: (Index: 2, Value: value 3, Text: item 3)", $this->source());
+ $this->selectAndWait("ctl0\$body\$ctl4", "item 3");
+ $this->assertContains("Your selection is: (Index: 2, Value: value 3, Text: item 3)", $this->source());
// a single selection list box upon postback
- $this->select("ctl0\$body\$DropDownList1", "label=item 4");
- $this->verifyTextNotPresent("Your selection is: (Index: 3, Value: value 4, Text: item 4)", "");
- $this->clickAndWait("//input[@type='submit' and @value='Submit']", "");
- $this->verifyTextPresent("Your selection is: (Index: 3, Value: value 4, Text: item 4)", "");
+ $this->select("ctl0\$body\$DropDownList1", "item 4");
+ $this->assertNotContains("Your selection is: (Index: 3, Value: value 4, Text: item 4)", $this->source());
+ $this->byXPath("//input[@type='submit' and @value='Submit']")->click();
+ $this->assertContains("Your selection is: (Index: 3, Value: value 4, Text: item 4)", $this->source());
// Databind to an integer-indexed array
- $this->selectAndWait("ctl0\$body\$DBDropDownList1", "label=item 3");
- $this->verifyTextPresent("Your selection is: (Index: 2, Value: 2, Text: item 3)", "");
+ $this->selectAndWait("ctl0\$body\$DBDropDownList1", "item 3");
+ $this->assertContains("Your selection is: (Index: 2, Value: 2, Text: item 3)", $this->source());
// Databind to an associative array
- $this->selectAndWait("ctl0\$body\$DBDropDownList2", "label=item 2");
- $this->verifyTextPresent("Your selection is: (Index: 1, Value: key 2, Text: item 2)", "");
+ $this->selectAndWait("ctl0\$body\$DBDropDownList2", "item 2");
+ $this->assertContains("Your selection is: (Index: 1, Value: key 2, Text: item 2)", $this->source());
// Databind with DataTextField and DataValueField specified
- $this->selectAndWait("ctl0\$body\$DBDropDownList3", "label=Cary");
- $this->verifyTextPresent("Your selection is: (Index: 2, Value: 003, Text: Cary)", "");
+ $this->selectAndWait("ctl0\$body\$DBDropDownList3", "Cary");
+ $this->assertContains("Your selection is: (Index: 2, Value: 003, Text: Cary)", $this->source());
// dropdown list is being validated
- $this->verifyNotVisible('ctl0_body_ctl6');
- $this->click("id=ctl0_body_ctl7", "");
- $this->verifyVisible('ctl0_body_ctl6');
- $this->select("ctl0\$body\$VDropDownList1", "label=item 2");
- $this->clickAndWait("id=ctl0_body_ctl7", "");
- $this->verifyNotVisible('ctl0_body_ctl6');
+ $this->assertNotVisible('ctl0_body_ctl6');
+ $this->byId("ctl0_body_ctl7")->click();
+ $this->assertVisible('ctl0_body_ctl6');
+ $this->select("ctl0\$body\$VDropDownList1", "item 2");
+ $this->byId("ctl0_body_ctl7")->click();
+ $this->assertNotVisible('ctl0_body_ctl6');
// dropdown list causing validation
- $this->verifyNotVisible('ctl0_body_ctl8');
- $this->select("ctl0\$body\$VDropDownList2", "label=Disagree");
+ $this->assertNotVisible('ctl0_body_ctl8');
+ $this->select("ctl0\$body\$VDropDownList2", "Disagree");
$this->pause(1000);
- $this->verifyVisible('ctl0_body_ctl8');
+ $this->assertVisible('ctl0_body_ctl8');
$this->type("ctl0\$body\$TextBox", "test");
- $this->selectAndWait("ctl0\$body\$VDropDownList2", "label=Agree");
- $this->verifyNotVisible('ctl0_body_ctl8');
+ $this->selectAndWait("ctl0\$body\$VDropDownList2", "Agree");
+ $this->assertNotVisible('ctl0_body_ctl8');
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/ExpressionTestCase.php b/tests/FunctionalTests/quickstart/Controls/ExpressionTestCase.php
index 4d47fecd..8c5add48 100755
--- a/tests/FunctionalTests/quickstart/Controls/ExpressionTestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/ExpressionTestCase.php
@@ -1,13 +1,13 @@
<?php
-class QuickstartExpressionTestCase extends PradoGenericSeleniumTest
+class QuickstartExpressionTestCase extends PradoGenericSelenium2Test
{
function test ()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TExpression.Home&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TExpression.Home&amp;notheme=true&amp;lang=en");
- $this->verifyTitle("PRADO QuickStart Sample", "");
+ $this->assertEquals("PRADO QuickStart Sample", $this->title());
- $this->verifyTextPresent('PRADO QuickStart Sample');
+ $this->assertContains('PRADO QuickStart Sample', $this->source());
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/HtmlAreaTestCase.php b/tests/FunctionalTests/quickstart/Controls/HtmlAreaTestCase.php
index caa7a893..53ee6697 100755
--- a/tests/FunctionalTests/quickstart/Controls/HtmlAreaTestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/HtmlAreaTestCase.php
@@ -1,12 +1,12 @@
<?php
-class QuickstartHtmlAreaTestCase extends PradoGenericSeleniumTest
+class QuickstartHtmlAreaTestCase extends PradoGenericSelenium2Test
{
function test ()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.THtmlArea.Home&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.THtmlArea.Home&amp;notheme=true&amp;lang=en");
- $this->verifyTitle("PRADO QuickStart Sample", "");
+ $this->assertEquals("PRADO QuickStart Sample", $this->title());
// can't perform any test
}
diff --git a/tests/FunctionalTests/quickstart/Controls/HyperLinkTestCase.php b/tests/FunctionalTests/quickstart/Controls/HyperLinkTestCase.php
index dc0261e7..bc7ef8b8 100755
--- a/tests/FunctionalTests/quickstart/Controls/HyperLinkTestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/HyperLinkTestCase.php
@@ -1,15 +1,15 @@
<?php
-class QuickstartHyperLinkTestCase extends PradoGenericSeleniumTest
+class QuickstartHyperLinkTestCase extends PradoGenericSelenium2Test
{
function test ()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.THyperLink.Home&amp;notheme=true&amp;lang=en", "");
- $this->verifyTitle("PRADO QuickStart Sample", "");
- $this->verifyElementPresent("//a[@href=\"http://www.pradosoft.com/\" and @target=\"_blank\"]");
- $this->verifyTextPresent("Welcome to", "");
- $this->verifyTextPresent("Body contents", "");
- $this->verifyElementPresent("//a[img/@alt='Hello World']");
- $this->verifyElementPresent("//a[contains(text(),'Body contents')]");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.THyperLink.Home&amp;notheme=true&amp;lang=en");
+ $this->assertEquals("PRADO QuickStart Sample", $this->title());
+ $this->assertElementPresent("//a[@href=\"http://www.pradosoft.com/\" and @target=\"_blank\"]");
+ $this->assertContains("Welcome to", $this->source());
+ $this->assertContains("Body contents", $this->source());
+ $this->assertElementPresent("//a[img/@alt='Hello World']");
+ $this->assertElementPresent("//a[contains(text(),'Body contents')]");
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/ImageButtonTestCase.php b/tests/FunctionalTests/quickstart/Controls/ImageButtonTestCase.php
index bf531d72..0f86216e 100755
--- a/tests/FunctionalTests/quickstart/Controls/ImageButtonTestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/ImageButtonTestCase.php
@@ -1,28 +1,28 @@
<?php
-class QuickstartImageButtonTestCase extends PradoGenericSeleniumTest
+class QuickstartImageButtonTestCase extends PradoGenericSelenium2Test
{
function test ()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TImageButton.Home&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TImageButton.Home&amp;notheme=true&amp;lang=en");
- $this->verifyTitle("PRADO QuickStart Sample", "");
+ $this->assertEquals("PRADO QuickStart Sample", $this->title());
// a click button
- $this->clickAndWait("//input[@type='image' and @alt='hello world']", "");
- $this->verifyTextPresent("You clicked at ","");
+ $this->byXPath("//input[@type='image' and @alt='hello world']")->click();
+ $this->assertContains("You clicked at ", $this->source());
// a command button
- $this->clickAndWait("ctl0\$body\$ctl1", "");
- $this->verifyTextPresent("Command name: test, Command parameter: value","");
+ $this->byName("ctl0\$body\$ctl1")->click();
+ $this->assertContains("Command name: test, Command parameter: value", $this->source());
// a button causing validation
- $this->verifyNotVisible('ctl0_body_ctl2');
- $this->click("id=ctl0_body_ctl3", "");
+ $this->assertNotVisible('ctl0_body_ctl2');
+ $this->byId("ctl0_body_ctl3")->click();
// $this->pause(1000);
- $this->verifyVisible('ctl0_body_ctl2');
+ $this->assertVisible('ctl0_body_ctl2');
$this->type("ctl0\$body\$TextBox", "test");
- $this->clickAndWait("id=ctl0_body_ctl3", "");
- $this->verifyNotVisible('ctl0_body_ctl2');
+ $this->byId("ctl0_body_ctl3")->click();
+ $this->assertNotVisible('ctl0_body_ctl2');
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/ImageTestCase.php b/tests/FunctionalTests/quickstart/Controls/ImageTestCase.php
index 19e80470..f3bd4775 100755
--- a/tests/FunctionalTests/quickstart/Controls/ImageTestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/ImageTestCase.php
@@ -1,18 +1,18 @@
<?php
//New Test
-class QuickstartImageTestCase extends PradoGenericSeleniumTest
+class QuickstartImageTestCase extends PradoGenericSelenium2Test
{
function test ()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TImage.Home&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TImage.Home&amp;notheme=true&amp;lang=en");
- $this->verifyTitle("PRADO QuickStart Sample", "");
+ $this->assertEquals("PRADO QuickStart Sample", $this->title());
- //$this->verifyElementPresent("//img[contains(@src,'/hello_world.gif') and @alt='']");
- $this->verifyElementPresent("//img[contains(@src,'/hello_world.gif') and @alt='Hello World!']");
- $this->verifyTextPresent("Hello World! Hello World! Hello World!", "");
- //$this->verifyElementPresent("//img[contains(@src,'/hello_world.gif') and @align='baseline']");
- //$this->verifyElementPresent("//img[contains(@src,'/hello_world.gif') and contains(@longdesc,'HelloWorld.html')]");
+ //$this->assertElementPresent("//img[contains(@src,'/hello_world.gif') and @alt='']");
+ $this->assertElementPresent("//img[contains(@src,'/hello_world.gif') and @alt='Hello World!']");
+ $this->assertContains("Hello World! Hello World! Hello World!", $this->source());
+ //$this->assertElementPresent("//img[contains(@src,'/hello_world.gif') and @align='baseline']");
+ //$this->assertElementPresent("//img[contains(@src,'/hello_world.gif') and contains(@longdesc,'HelloWorld.html')]");
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/LabelTestCase.php b/tests/FunctionalTests/quickstart/Controls/LabelTestCase.php
index 03bba8ed..a9aa0bbe 100755
--- a/tests/FunctionalTests/quickstart/Controls/LabelTestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/LabelTestCase.php
@@ -1,20 +1,20 @@
<?php
//New Test
-class QuickstartLabelTestCase extends PradoGenericSeleniumTest
+class QuickstartLabelTestCase extends PradoGenericSelenium2Test
{
function test ()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TLabel.Home&amp;notheme=true&amp;lang=en", "");
- $this->verifyTitle("PRADO QuickStart Sample", "");
- $this->verifyTextPresent("This is a label with customized color and font.", "");
- $this->verifyTextPresent("This is a form label associated with the TTextBox control below", "");
- $this->verifyTextPresent("This is a label with empty Text property and nonempty body", "");
- $this->verifyTextPresent("This is a disabled label", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TLabel.Home&amp;notheme=true&amp;lang=en");
+ $this->assertEquals("PRADO QuickStart Sample", $this->title());
+ $this->assertContains("This is a label with customized color and font.", $this->source());
+ $this->assertContains("This is a form label associated with the TTextBox control below", $this->source());
+ $this->assertContains("This is a label with empty Text property and <b>nonempty body</b>", $this->source());
+ $this->assertContains("This is a disabled label", $this->source());
- $this->verifyAttribute("ctl0_body_Label2@disabled","regexp:true|disabled");
+ $this->assertAttribute("ctl0_body_Label2@disabled","regexp:true|disabled");
- //$this->verifyAttribute("ctl0_body_Label1@for","ctl0_body_test");
+ //$this->assertAttribute("ctl0_body_Label1@for","ctl0_body_test");
$this->type("ctl0\$body\$test", "test");
}
diff --git a/tests/FunctionalTests/quickstart/Controls/LinkButtonTestCase.php b/tests/FunctionalTests/quickstart/Controls/LinkButtonTestCase.php
index 57e7b975..97b4863d 100755
--- a/tests/FunctionalTests/quickstart/Controls/LinkButtonTestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/LinkButtonTestCase.php
@@ -1,32 +1,32 @@
<?php
-class QuickstartLinkButtonTestCase extends PradoGenericSeleniumTest
+class QuickstartLinkButtonTestCase extends PradoGenericSelenium2Test
{
function test ()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TLinkButton.Home&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TLinkButton.Home&amp;notheme=true&amp;lang=en");
- $this->verifyTitle("PRADO QuickStart Sample", "");
+ $this->assertEquals("PRADO QuickStart Sample", $this->title());
// regular buttons
- $this->clickAndWait("link=link button", "");
- $this->clickAndWait("//a[contains(text(),'body content')]", "");
+ $this->byLinkText("link button")->click();
+ $this->byXPath("//a[contains(text(),'body content')]")->click();
// a click button
- $this->clickAndWait("link=click me", "");
- $this->clickAndWait("link=I'm clicked", "");
+ $this->byLinkText("click me")->click();
+ $this->byLinkText("I'm clicked")->click();
// a command button
- $this->clickAndWait("link=click me", "");
- $this->clickAndWait("//a[contains(text(),'Name: test, Param: value')]", "");
+ $this->byLinkText("click me")->click();
+ $this->byXPath("//a[contains(text(),'Name: test, Param: value')]")->click();
// a button causing validation
- $this->verifyNotVisible('ctl0_body_ctl4');
- $this->click("link=submit", "");
+ $this->assertNotVisible('ctl0_body_ctl4');
+ $this->byLinkText("submit")->click();
// $this->pause(1000);
- $this->verifyVisible('ctl0_body_ctl4');
+ $this->assertVisible('ctl0_body_ctl4');
$this->type("ctl0\$body\$TextBox", "test");
- $this->clickAndWait("link=submit", "");
- $this->verifyNotVisible('ctl0_body_ctl4');
+ $this->byLinkText("submit")->click();
+ $this->assertNotVisible('ctl0_body_ctl4');
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/ListBoxTestCase.php b/tests/FunctionalTests/quickstart/Controls/ListBoxTestCase.php
index 1cae0d43..11910ba5 100755
--- a/tests/FunctionalTests/quickstart/Controls/ListBoxTestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/ListBoxTestCase.php
@@ -1,82 +1,81 @@
<?php
//New Test
-class QuickstartListBoxTestCase extends PradoGenericSeleniumTest
+class QuickstartListBoxTestCase extends PradoGenericSelenium2Test
{
function test ()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TListBox.Home&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TListBox.Home&amp;notheme=true&amp;lang=en");
// a default single selection listbox
- $this->verifyAttribute("ctl0\$body\$ctl0@size","4");
+ $this->assertAttribute("ctl0\$body\$ctl0@size","4");
// single selection list box with initial options
- $this->assertEquals($this->getSelectOptions("ctl0\$body\$ctl1"), array('item 1', 'item 2', 'item 3', 'item 4'));
+ $this->assertEquals($this->getSelectOptions("ctl0\$body\$ctl1"), array('item 1', 'item 2', 'item 3', 'item 4'));
$this->assertSelected("ctl0\$body\$ctl1","item 2");
// a single selection list box with customized style
- $this->verifyAttribute("ctl0\$body\$ctl2@size","3");
- $this->assertEquals($this->getSelectOptions("ctl0\$body\$ctl2"), array('item 1', 'item 2', 'item 3', 'item 4'));
+ $this->assertAttribute("ctl0\$body\$ctl2@size","3");
+ $this->assertEquals($this->getSelectOptions("ctl0\$body\$ctl2"), array('item 1', 'item 2', 'item 3', 'item 4'));
$this->assertSelected("ctl0\$body\$ctl2","item 2");
// a disabled list box
- $this->verifyAttribute("ctl0\$body\$ctl3@disabled","regexp:true|disabled");
+ $this->assertAttribute("ctl0\$body\$ctl3@disabled","regexp:true|disabled");
// an auto postback single selection list box
- $this->verifyTextNotPresent("Your selection is: (Index: 2, Value: value 3, Text: item 3)", "");
- $this->selectAndWait("ctl0\$body\$ctl4", "label=item 3");
- $this->verifyTextPresent("exact:Your selection is: (Index: 2, Value: value 3, Text: item 3)", "");
+ $this->assertNotContains("Your selection is: (Index: 2, Value: value 3, Text: item 3)", $this->source());
+ $this->selectAndWait("ctl0\$body\$ctl4", "item 3");
+ $this->assertContains("Your selection is: (Index: 2, Value: value 3, Text: item 3)", $this->source());
// a single selection list box upon postback
- $this->select("ctl0\$body\$ListBox1", "label=item 4");
- $this->verifyTextNotPresent("Your selection is: (Index: 3, Value: value 4, Text: item 4)", "");
- $this->clickAndWait("//input[@type='submit' and @value='Submit']", "");
- $this->verifyTextPresent("exact:Your selection is: (Index: 3, Value: value 4, Text: item 4)", "");
+ $this->select("ctl0\$body\$ListBox1", "item 4");
+ $this->assertNotContains("Your selection is: (Index: 3, Value: value 4, Text: item 4)", $this->source());
+ $this->byXPath("//input[@type='submit' and @value='Submit']")->click();
+ $this->assertContains("Your selection is: (Index: 3, Value: value 4, Text: item 4)", $this->source());
// a multiple selection list box
- $this->verifyAttribute("ctl0\$body\$ctl6[]@size","4");
- $this->verifyAttribute("ctl0\$body\$ctl6[]@multiple","regexp:true|multiple");
+ $this->assertAttribute("ctl0\$body\$ctl6[]@size","4");
+ $this->assertAttribute("ctl0\$body\$ctl6[]@multiple","regexp:true|multiple");
// a multiple selection list box with initial options
- $this->verifyAttribute("ctl0\$body\$ctl7[]@multiple","regexp:true|multiple");
+ $this->assertAttribute("ctl0\$body\$ctl7[]@multiple","regexp:true|multiple");
$this->assertEquals($this->getSelectOptions("ctl0\$body\$ctl7[]"), array('item 1', 'item 2', 'item 3', 'item 4'));
// multiselection list box's behavior upon postback
- $this->addSelection("ctl0\$body\$ListBox2[]", "label=item 3");
- $this->clickAndWait("name=ctl0\$body\$ctl8", "");
- $this->verifyText("ctl0_body_MultiSelectionResult2","exact:Your selection is: (Index: 1, Value: value 2, Text: item 2)(Index: 2, Value: value 3, Text: item 3)(Index: 3, Value: value 4, Text: item 4)");
+ $this->addSelection("ctl0\$body\$ListBox2[]", "item 3");
+ $this->byName("ctl0\$body\$ctl8")->click();
+ $this->assertText("ctl0_body_MultiSelectionResult2","Your selection is: (Index: 1, Value: value 2, Text: item 2)(Index: 2, Value: value 3, Text: item 3)(Index: 3, Value: value 4, Text: item 4)");
// Auto postback multiselection list box
- $this->addSelection("ctl0\$body\$ctl9[]", "label=item 1");
- $this->waitForPageToLoad(1000);
- $this->verifyText("ctl0_body_MultiSelectionResult","exact:Your selection is: (Index: 0, Value: value 1, Text: item 1)(Index: 1, Value: value 2, Text: item 2)(Index: 3, Value: value 4, Text: item 4)");
+ $this->addSelection("ctl0\$body\$ctl9[]", "item 1");
+ $this->assertText("ctl0_body_MultiSelectionResult","Your selection is: (Index: 0, Value: value 1, Text: item 1)(Index: 1, Value: value 2, Text: item 2)(Index: 3, Value: value 4, Text: item 4)");
// Databind to an integer-indexed array
- $this->selectAndWait("ctl0\$body\$DBListBox1[]", "label=item 3");
- $this->verifyTextPresent("exact:Your selection is: (Index: 2, Value: 2, Text: item 3)", "");
+ $this->selectAndWait("ctl0\$body\$DBListBox1[]", "item 3");
+ $this->assertContains("Your selection is: (Index: 2, Value: 2, Text: item 3)", $this->source());
// Databind to an associative array
- $this->selectAndWait("ctl0\$body\$DBListBox2[]", "label=item 2");
- $this->verifyTextPresent("exact:Your selection is: (Index: 1, Value: key 2, Text: item 2)", "");
+ $this->selectAndWait("ctl0\$body\$DBListBox2[]", "item 2");
+ $this->assertContains("Your selection is: (Index: 1, Value: key 2, Text: item 2)", $this->source());
// Databind with DataTextField and DataValueField specified
- $this->selectAndWait("ctl0\$body\$DBListBox3[]", "label=Cary");
- $this->verifyTextPresent("exact:Your selection is: (Index: 2, Value: 003, Text: Cary)", "");
+ $this->selectAndWait("ctl0\$body\$DBListBox3[]", "Cary");
+ $this->assertContains("Your selection is: (Index: 2, Value: 003, Text: Cary)", $this->source());
// List box is being validated
- $this->verifyNotVisible('ctl0_body_ctl10');
- $this->click("id=ctl0_body_ctl11", "");
- $this->verifyVisible('ctl0_body_ctl10');
- $this->select("ctl0\$body\$VListBox1", "label=item 2");
- $this->clickAndWait("id=ctl0_body_ctl11", "");
- $this->verifyNotVisible('ctl0_body_ctl10');
+ $this->assertNotVisible('ctl0_body_ctl10');
+ $this->byId("ctl0_body_ctl11")->click();
+ $this->assertVisible('ctl0_body_ctl10');
+ $this->select("ctl0\$body\$VListBox1", "item 2");
+ $this->byId("ctl0_body_ctl11")->click();
+ $this->assertNotVisible('ctl0_body_ctl10');
// List box causing validation
- $this->verifyNotVisible('ctl0_body_ctl12');
- $this->select("ctl0\$body\$VListBox2", "label=Agree");
- $this->verifyVisible('ctl0_body_ctl12');
+ $this->assertNotVisible('ctl0_body_ctl12');
+ $this->select("ctl0\$body\$VListBox2", "Agree");
+ $this->assertVisible('ctl0_body_ctl12');
$this->type("ctl0\$body\$TextBox", "test");
- $this->selectAndWait("ctl0\$body\$VListBox2", "label=Disagree");
- $this->verifyNotVisible('ctl0_body_ctl12');
+ $this->selectAndWait("ctl0\$body\$VListBox2", "Disagree");
+ $this->assertNotVisible('ctl0_body_ctl12');
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/MultiViewTestCase.php b/tests/FunctionalTests/quickstart/Controls/MultiViewTestCase.php
index 2b47456e..d7a5ebec 100755
--- a/tests/FunctionalTests/quickstart/Controls/MultiViewTestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/MultiViewTestCase.php
@@ -1,35 +1,35 @@
<?php
-class QuickstartMultiViewTestCase extends PradoGenericSeleniumTest
+class QuickstartMultiViewTestCase extends PradoGenericSelenium2Test
{
function test ()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TMultiView.Home&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TMultiView.Home&amp;notheme=true&amp;lang=en");
- $this->verifyTitle("PRADO QuickStart Sample", "");
+ $this->assertEquals("PRADO QuickStart Sample", $this->title());
// view 1 : type in a string
- $this->verifyElementNotPresent('ctl0_body_Result1');
- $this->verifyElementNotPresent('ctl0_body_Result2');
+ $this->assertElementNotPresent('ctl0_body_Result1');
+ $this->assertElementNotPresent('ctl0_body_Result2');
$this->type('ctl0_body_Memo','test');
- $this->clickAndWait('ctl0$body$ctl0'); // view 2 to select the dropdown
- $this->clickAndWait('ctl0$body$ctl4');
+ $this->byName('ctl0$body$ctl0')->click(); // view 2 to select the dropdown
+ $this->byName('ctl0$body$ctl4')->click();
// view 3 : check if the output is updated
- $this->verifyTextPresent('Your text input is: test');
- $this->verifyTextPresent('Your color choice is: Red');
- $this->clickAndWait('ctl0$body$ctl7');
+ $this->assertContains('Your text input is: test', $this->source());
+ $this->assertContains('Your color choice is: Red', $this->source());
+ $this->byName('ctl0$body$ctl7')->click();
// view 2 : update dropdownlist
- $this->verifyElementNotPresent('ctl0_body_Result1');
- $this->verifyElementNotPresent('ctl0_body_Result2');
- $this->select('ctl0$body$DropDownList', "label=Blue");
- $this->clickAndWait('ctl0$body$ctl4');
+ $this->assertElementNotPresent('ctl0_body_Result1');
+ $this->assertElementNotPresent('ctl0_body_Result2');
+ $this->select('ctl0$body$DropDownList', "Blue");
+ $this->byName('ctl0$body$ctl4')->click();
// view 3 : check if the output is updated
- $this->verifyTextPresent('Your text input is: test');
- $this->verifyTextPresent('Your color choice is: Blue');
- $this->clickAndWait('ctl0$body$ctl7');
+ $this->assertContains('Your text input is: test', $this->source());
+ $this->assertContains('Your color choice is: Blue', $this->source());
+ $this->byName('ctl0$body$ctl7')->click();
// view 2 : check if dropdownlist maintains state
$this->assertSelected('ctl0$body$DropDownList', "Blue");
diff --git a/tests/FunctionalTests/quickstart/Controls/PagerTestCase.php b/tests/FunctionalTests/quickstart/Controls/PagerTestCase.php
index a1fefed6..7e4a6627 100755
--- a/tests/FunctionalTests/quickstart/Controls/PagerTestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/PagerTestCase.php
@@ -1,56 +1,56 @@
<?php
-class QuickstartPagerTestCase extends PradoGenericSeleniumTest
+class QuickstartPagerTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TPager.Sample1&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TPager.Sample1&amp;notheme=true&amp;lang=en");
// verify datalist content
- $this->verifyTextPresent('ITN001','');
- $this->verifyTextPresent('ITN002','');
- $this->verifyTextNotPresent('ITN003','');
+ $this->assertContains('ITN001', $this->source());
+ $this->assertContains('ITN002', $this->source());
+ $this->assertNotContains('ITN003', $this->source());
// verify numeric paging
- $this->clickAndWait("ctl0_body_Pager_ctl1", ""); // 2nd page
- $this->verifyTextPresent('ITN003','');
- $this->verifyTextPresent('ITN004','');
- $this->verifyTextNotPresent('ITN002','');
- $this->verifyTextNotPresent('ITN005','');
- $this->clickAndWait("ctl0_body_Pager_ctl3", ""); // 4rd page
- $this->verifyTextPresent('ITN007','');
- $this->verifyTextPresent('ITN008','');
- $this->verifyTextNotPresent('ITN006','');
- $this->verifyTextNotPresent('ITN009','');
- $this->clickAndWait("ctl0_body_Pager_ctl6", ""); // last page
- $this->verifyTextPresent('ITN019','');
- $this->verifyTextNotPresent('ITN018','');
- $this->verifyTextNotPresent('ITN001','');
+ $this->byId("ctl0_body_Pager_ctl1")->click(); // 2nd page
+ $this->assertContains('ITN003', $this->source());
+ $this->assertContains('ITN004', $this->source());
+ $this->assertNotContains('ITN002', $this->source());
+ $this->assertNotContains('ITN005', $this->source());
+ $this->byId("ctl0_body_Pager_ctl3")->click(); // 4rd page
+ $this->assertContains('ITN007', $this->source());
+ $this->assertContains('ITN008', $this->source());
+ $this->assertNotContains('ITN006', $this->source());
+ $this->assertNotContains('ITN009', $this->source());
+ $this->byId("ctl0_body_Pager_ctl6")->click(); // last page
+ $this->assertContains('ITN019', $this->source());
+ $this->assertNotContains('ITN018', $this->source());
+ $this->assertNotContains('ITN001', $this->source());
// verify next-prev paging
- $this->clickAndWait("ctl0_body_Pager2_ctl1", ""); // prev page
- $this->verifyTextPresent('ITN017','');
- $this->verifyTextPresent('ITN018','');
- $this->verifyTextNotPresent('ITN019','');
- $this->verifyTextNotPresent('ITN016','');
- $this->clickAndWait("ctl0_body_Pager2_ctl0", ""); // first page
- $this->verifyTextPresent('ITN001','');
- $this->verifyTextPresent('ITN002','');
- $this->verifyTextNotPresent('ITN003','');
- $this->clickAndWait("ctl0_body_Pager2_ctl2", ""); // next page
- $this->verifyTextPresent('ITN003','');
- $this->verifyTextPresent('ITN004','');
- $this->verifyTextNotPresent('ITN002','');
- $this->verifyTextNotPresent('ITN005','');
+ $this->byId("ctl0_body_Pager2_ctl1")->click(); // prev page
+ $this->assertContains('ITN017', $this->source());
+ $this->assertContains('ITN018', $this->source());
+ $this->assertNotContains('ITN019', $this->source());
+ $this->assertNotContains('ITN016', $this->source());
+ $this->byId("ctl0_body_Pager2_ctl0")->click(); // first page
+ $this->assertContains('ITN001', $this->source());
+ $this->assertContains('ITN002', $this->source());
+ $this->assertNotContains('ITN003', $this->source());
+ $this->byId("ctl0_body_Pager2_ctl2")->click(); // next page
+ $this->assertContains('ITN003', $this->source());
+ $this->assertContains('ITN004', $this->source());
+ $this->assertNotContains('ITN002', $this->source());
+ $this->assertNotContains('ITN005', $this->source());
$this->assertSelected("ctl0_body_Pager3_ctl0","2");
- $this->selectAndWait("ctl0_body_Pager3_ctl0", "label=5");
- $this->verifyTextPresent('ITN009','');
- $this->verifyTextPresent('ITN010','');
- $this->verifyTextNotPresent('ITN008','');
- $this->verifyTextNotPresent('ITN011','');
- $this->selectAndWait("ctl0_body_Pager3_ctl0", "label=10");
- $this->verifyTextPresent('ITN019','');
- $this->verifyTextNotPresent('ITN018','');
+ $this->selectAndWait("ctl0_body_Pager3_ctl0", "5");
+ $this->assertContains('ITN009', $this->source());
+ $this->assertContains('ITN010', $this->source());
+ $this->assertNotContains('ITN008', $this->source());
+ $this->assertNotContains('ITN011', $this->source());
+ $this->selectAndWait("ctl0_body_Pager3_ctl0", "10");
+ $this->assertContains('ITN019', $this->source());
+ $this->assertNotContains('ITN018', $this->source());
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/PanelTestCase.php b/tests/FunctionalTests/quickstart/Controls/PanelTestCase.php
index 3def308b..0d3e2797 100755
--- a/tests/FunctionalTests/quickstart/Controls/PanelTestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/PanelTestCase.php
@@ -1,16 +1,16 @@
<?php
-class QuickstartPanelTestCase extends PradoGenericSeleniumTest
+class QuickstartPanelTestCase extends PradoGenericSelenium2Test
{
function test ()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TPanel.Home&amp;notheme=true&amp;lang=en", "");
- $this->verifyTextPresent("This is panel content with", "");
- $this->verifyElementPresent("//span[text()='label']");
- $this->verifyTextPresent("grouping text", "");
- $this->click("//input[@name='ctl0\$body\$ctl17']", "");
- $this->verifyTextNotPresent("You have clicked on 'button2'.");
- $this->clickAndWait("//input[@type='submit' and @value='button2']", "");
- $this->verifyTextPresent("You have clicked on 'button2'.");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TPanel.Home&amp;notheme=true&amp;lang=en");
+ $this->assertContains("This is panel content with", $this->source());
+ $this->assertElementPresent("//span[text()='label']");
+ $this->assertContains("grouping text", $this->source());
+ $this->byXPath("//input[@name='ctl0\$body\$ctl17']")->click();
+ $this->assertNotContains("You have clicked on 'button2'.", $this->source());
+ $this->byXPath("//input[@type='submit' and @value='button2']")->click();
+ $this->assertContains("You have clicked on 'button2'.", $this->source());
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/RadioButtonListTestCase.php b/tests/FunctionalTests/quickstart/Controls/RadioButtonListTestCase.php
index 659f20ff..6242cebe 100755
--- a/tests/FunctionalTests/quickstart/Controls/RadioButtonListTestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/RadioButtonListTestCase.php
@@ -1,17 +1,17 @@
<?php
//New Test
-class QuickstartRadioButtonListTestCase extends PradoGenericSeleniumTest
+class QuickstartRadioButtonListTestCase extends PradoGenericSelenium2Test
{
function test ()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TRadioButtonList.Home&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TRadioButtonList.Home&amp;notheme=true&amp;lang=en");
// RadioButton list with default settings:
- $this->click("//input[@name='ctl0\$body\$ctl0' and @value='value 3']", "");
+ $this->byXPath("//input[@name='ctl0\$body\$ctl0' and @value='value 3']")->click();
// RadioButton list with customized cellpadding, cellspacing, color and text alignment:
- $this->click("//input[@name='ctl0\$body\$ctl1' and @value='value 1']", "");
+ $this->byXPath("//input[@name='ctl0\$body\$ctl1' and @value='value 1']")->click();
// *** Currently unable to test the following cases:
// RadioButton list with vertical (default) repeat direction
@@ -20,33 +20,33 @@ class QuickstartRadioButtonListTestCase extends PradoGenericSeleniumTest
// RadioButton list with flow layout and horizontal repeat direction:
// RadioButton list's behavior upon postback
- $this->click("//input[@name='ctl0\$body\$RadioButtonList' and @value='value 3']", "");
- $this->clickAndWait("//input[@type='submit' and @value='Submit']", "");
- $this->verifyTextPresent("Your selection is: (Index: 2, Value: value 3, Text: item 3)", "");
+ $this->byXPath("//input[@name='ctl0\$body\$RadioButtonList' and @value='value 3']")->click();
+ $this->byXPath("//input[@type='submit' and @value='Submit']")->click();
+ $this->assertContains("Your selection is: (Index: 2, Value: value 3, Text: item 3)", $this->source());
// Auto postback check box list
- $this->clickAndWait("//input[@name='ctl0\$body\$ctl7' and @value='value 5']", "");
- $this->verifyTextPresent("Your selection is: (Index: 4, Value: value 5, Text: item 5)", "");
+ $this->byXPath("//input[@name='ctl0\$body\$ctl7' and @value='value 5']")->click();
+ $this->assertContains("Your selection is: (Index: 4, Value: value 5, Text: item 5)", $this->source());
// Databind to an integer-indexed array
- $this->clickAndWait("//input[@name='ctl0\$body\$DBRadioButtonList1' and @value='0']", "");
- $this->verifyTextPresent("Your selection is: (Index: 0, Value: 0, Text: item 1)", "");
+ $this->byXPath("//input[@name='ctl0\$body\$DBRadioButtonList1' and @value='0']")->click();
+ $this->assertContains("Your selection is: (Index: 0, Value: 0, Text: item 1)", $this->source());
// Databind to an associative array:
- $this->clickAndWait("//input[@name='ctl0\$body\$DBRadioButtonList2' and @value='key 2']", "");
- $this->verifyTextPresent("Your selection is: (Index: 1, Value: key 2, Text: item 2)", "");
+ $this->byXPath("//input[@name='ctl0\$body\$DBRadioButtonList2' and @value='key 2']")->click();
+ $this->assertContains("Your selection is: (Index: 1, Value: key 2, Text: item 2)", $this->source());
// Databind with DataTextField and DataValueField specified
- $this->clickAndWait("//input[@name='ctl0\$body\$DBRadioButtonList3' and @value='003']", "");
- $this->verifyTextPresent("Your selection is: (Index: 2, Value: 003, Text: Cary)", "");
+ $this->byXPath("//input[@name='ctl0\$body\$DBRadioButtonList3' and @value='003']")->click();
+ $this->assertContains("Your selection is: (Index: 2, Value: 003, Text: Cary)", $this->source());
// RadioButton list causing validation
- $this->verifyNotVisible('ctl0_body_ctl8');
- $this->click("//input[@name='ctl0\$body\$ctl9' and @value='Agree']", "");
+ $this->assertNotVisible('ctl0_body_ctl8');
+ $this->byXPath("//input[@name='ctl0\$body\$ctl9' and @value='Agree']")->click();
// $this->pause(1000);
- $this->verifyVisible('ctl0_body_ctl8');
+ $this->assertVisible('ctl0_body_ctl8');
$this->type("ctl0\$body\$TextBox", "test");
- $this->clickAndWait("//input[@name='ctl0\$body\$ctl9' and @value='Disagree']", "");
- $this->verifyNotVisible('ctl0_body_ctl8');
+ $this->byXPath("//input[@name='ctl0\$body\$ctl9' and @value='Disagree']")->click();
+ $this->assertNotVisible('ctl0_body_ctl8');
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/RadioButtonTestCase.php b/tests/FunctionalTests/quickstart/Controls/RadioButtonTestCase.php
index 22031235..214b1596 100755
--- a/tests/FunctionalTests/quickstart/Controls/RadioButtonTestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/RadioButtonTestCase.php
@@ -1,56 +1,56 @@
<?php
-class QuickstartRadioButtonTestCase extends PradoGenericSeleniumTest
+class QuickstartRadioButtonTestCase extends PradoGenericSelenium2Test
{
function test ()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TRadioButton.Home&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TRadioButton.Home&amp;notheme=true&amp;lang=en");
- $this->verifyTitle("PRADO QuickStart Sample", "");
+ $this->assertEquals("PRADO QuickStart Sample", $this->title());
// a regular radiobutton
- $this->click("//input[@name='ctl0\$body\$ctl0' and @value='ctl0\$body\$ctl0']", "");
+ $this->byXPath("//input[@name='ctl0\$body\$ctl0' and @value='ctl0\$body\$ctl0']")->click();
// a radiobutton with customized value
- $this->click("//input[@name='ctl0\$body\$ctl1' and @value='value']", "");
+ $this->byXPath("//input[@name='ctl0\$body\$ctl1' and @value='value']")->click();
// an auto postback radiobutton
- $this->verifyTextNotPresent("I'm clicked");
- $this->clickAndWait("//input[@name='ctl0\$body\$ctl2' and @value='ctl0\$body\$ctl2']", "");
- $this->verifyTextPresent("I'm clicked");
- $this->click("//input[@name='ctl0\$body\$ctl2' and @value='ctl0\$body\$ctl2']", "");
- $this->verifyTextPresent("I'm clicked");
+ $this->assertNotContains("I'm clicked", $this->source());
+ $this->byXPath("//input[@name='ctl0\$body\$ctl2' and @value='ctl0\$body\$ctl2']")->click();
+ $this->assertContains("I'm clicked", $this->source());
+ $this->byXPath("//input[@name='ctl0\$body\$ctl2' and @value='ctl0\$body\$ctl2']")->click();
+ $this->assertContains("I'm clicked", $this->source());
// a radiobutton causing validation on a textbox
- $this->verifyNotVisible('ctl0_body_ctl3');
- $this->click("//input[@name='ctl0\$body\$ctl4' and @value='ctl0\$body\$ctl4']", "");
+ $this->assertNotVisible('ctl0_body_ctl3');
+ $this->byXPath("//input[@name='ctl0\$body\$ctl4' and @value='ctl0\$body\$ctl4']")->click();
$this->pause(1000);
- $this->verifyVisible('ctl0_body_ctl3');
- $this->click("//input[@name='ctl0\$body\$ctl4' and @value='ctl0\$body\$ctl4']", "");
+ $this->assertVisible('ctl0_body_ctl3');
+ $this->byXPath("//input[@name='ctl0\$body\$ctl4' and @value='ctl0\$body\$ctl4']")->click();
$this->pause(1000);
- $this->verifyVisible('ctl0_body_ctl3');
+ $this->assertVisible('ctl0_body_ctl3');
$this->type("ctl0\$body\$TextBox", "test");
- $this->clickAndWait("//input[@name='ctl0\$body\$ctl4' and @value='ctl0\$body\$ctl4']", "");
- $this->verifyNotVisible('ctl0_body_ctl3');
+ $this->byXPath("//input[@name='ctl0\$body\$ctl4' and @value='ctl0\$body\$ctl4']")->click();
+ $this->assertNotVisible('ctl0_body_ctl3');
// a radiobutton validated by a required field validator
- $this->verifyNotVisible('ctl0_body_ctl6');
- $this->click("//input[@type='submit' and @value='Submit']", "");
+ $this->assertNotVisible('ctl0_body_ctl6');
+ $this->byXPath("//input[@type='submit' and @value='Submit']")->click();
$this->pause(1000);
- $this->verifyVisible('ctl0_body_ctl6');
- $this->click("//input[@name='ctl0\$body\$RadioButton' and @value='ctl0\$body\$RadioButton']", "");
- $this->clickAndWait("//input[@type='submit' and @value='Submit']", "");
- $this->verifyNotVisible('ctl0_body_ctl6');
+ $this->assertVisible('ctl0_body_ctl6');
+ $this->byXPath("//input[@name='ctl0\$body\$RadioButton' and @value='ctl0\$body\$RadioButton']")->click();
+ $this->byXPath("//input[@type='submit' and @value='Submit']")->click();
+ $this->assertNotVisible('ctl0_body_ctl6');
// a radiobutton group
- $this->clickAndWait("name=ctl0\$body\$ctl7", "");
- $this->verifyTextPresent("Your selection is empty");
- $this->click("//input[@name='ctl0\$body\$RadioGroup' and @value='ctl0\$body\$Radio2']", "");
- $this->clickAndWait("name=ctl0\$body\$ctl7", "");
- $this->verifyTextPresent("Your selection is 2");
- $this->click("//input[@name='ctl0\$body\$RadioGroup' and @value='ctl0\$body\$Radio3']", "");
- $this->click("//input[@name='ctl0\$body\$Radio4' and @value='ctl0\$body\$Radio4']", "");
- $this->clickAndWait("name=ctl0\$body\$ctl7", "");
- $this->verifyTextPresent("Your selection is 34");
+ $this->byName("ctl0\$body\$ctl7")->click();
+ $this->assertContains("Your selection is empty", $this->source());
+ $this->byXPath("//input[@name='ctl0\$body\$RadioGroup' and @value='ctl0\$body\$Radio2']")->click();
+ $this->byName("ctl0\$body\$ctl7")->click();
+ $this->assertContains("Your selection is 2", $this->source());
+ $this->byXPath("//input[@name='ctl0\$body\$RadioGroup' and @value='ctl0\$body\$Radio3']")->click();
+ $this->byXPath("//input[@name='ctl0\$body\$Radio4' and @value='ctl0\$body\$Radio4']")->click();
+ $this->byName("ctl0\$body\$ctl7")->click();
+ $this->assertContains("Your selection is 34", $this->source());
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/Repeater1TestCase.php b/tests/FunctionalTests/quickstart/Controls/Repeater1TestCase.php
index 948055e1..4d7db9b3 100755
--- a/tests/FunctionalTests/quickstart/Controls/Repeater1TestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/Repeater1TestCase.php
@@ -1,27 +1,27 @@
<?php
-class QuickstartRepeater1TestCase extends PradoGenericSeleniumTest
+class QuickstartRepeater1TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TRepeater.Sample1&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TRepeater.Sample1&amp;notheme=true&amp;lang=en");
// verify if all required texts are present
- $this->verifyTextPresent('ID','');
- $this->verifyTextPresent('Name','');
- $this->verifyTextPresent('Quantity','');
- $this->verifyTextPresent('Price','');
- $this->verifyTextPresent('Imported','');
- $this->verifyTextPresent('ITN001','');
- $this->verifyTextPresent('Motherboard','');
- $this->verifyTextPresent('Yes','');
- $this->verifyTextPresent('ITN019','');
- $this->verifyTextPresent('Speaker','');
- $this->verifyTextPresent('No','');
- $this->verifyTextPresent('Computer Parts Inventory','');
+ $this->assertContains('ID', $this->source());
+ $this->assertContains('Name', $this->source());
+ $this->assertContains('Quantity', $this->source());
+ $this->assertContains('Price', $this->source());
+ $this->assertContains('Imported', $this->source());
+ $this->assertContains('ITN001', $this->source());
+ $this->assertContains('Motherboard', $this->source());
+ $this->assertContains('Yes', $this->source());
+ $this->assertContains('ITN019', $this->source());
+ $this->assertContains('Speaker', $this->source());
+ $this->assertContains('No', $this->source());
+ $this->assertContains('Computer Parts Inventory', $this->source());
// verify specific table tags
- $this->verifyElementPresent("//td[@colspan='5']");
- $this->verifyElementPresent("//table[@cellpadding='2']");
+ $this->assertElementPresent("//td[@colspan='5']");
+ $this->assertElementPresent("//table[@cellpadding='2']");
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/Repeater2TestCase.php b/tests/FunctionalTests/quickstart/Controls/Repeater2TestCase.php
index 7d989fd0..8eb8c863 100755
--- a/tests/FunctionalTests/quickstart/Controls/Repeater2TestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/Repeater2TestCase.php
@@ -1,35 +1,35 @@
<?php
-class QuickstartRepeater2TestCase extends PradoGenericSeleniumTest
+class QuickstartRepeater2TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TRepeater.Sample2&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TRepeater.Sample2&amp;notheme=true&amp;lang=en");
// verify if all required texts are present
- $this->verifyTextPresent('North','');
- $this->verifyTextPresent('John','');
- $this->verifyTextPresent('Developer','');
- $this->verifyTextPresent('South','');
- $this->verifyTextPresent('Carter','');
- $this->verifyTextPresent('Program Manager','');
+ $this->assertContains('North', $this->source());
+ $this->assertContains('John', $this->source());
+ $this->assertContains('Developer', $this->source());
+ $this->assertContains('South', $this->source());
+ $this->assertContains('Carter', $this->source());
+ $this->assertContains('Program Manager', $this->source());
// verify specific table tags
- $this->verifyElementPresent("//table[@cellspacing='1']");
- $this->verifyElementPresent("//td[@id='ctl0_body_Repeater_ctl1_Cell' and contains(text(),'North')]","");
- $this->verifyElementPresent("//td[@id='ctl0_body_Repeater_ctl1_Cell']","");
- $this->verifyElementPresent("//td[@id='ctl0_body_Repeater_ctl2_Cell']","");
- $this->verifyElementPresent("//td[@id='ctl0_body_Repeater_ctl3_Cell']","");
- $this->verifyElementPresent("//td[@id='ctl0_body_Repeater_ctl4_Cell']","");
- $this->verifyElementPresent("//tr[@id='ctl0_body_Repeater_ctl1_Repeater2_ctl1_Row']","");
- $this->verifyElementPresent("//tr[@id='ctl0_body_Repeater_ctl1_Repeater2_ctl2_Row']","");
- $this->verifyElementPresent("//tr[@id='ctl0_body_Repeater_ctl1_Repeater2_ctl3_Row']","");
- $this->verifyElementPresent("//tr[@id='ctl0_body_Repeater_ctl2_Repeater2_ctl1_Row']","");
- $this->verifyElementPresent("//tr[@id='ctl0_body_Repeater_ctl2_Repeater2_ctl2_Row']","");
- $this->verifyElementPresent("//tr[@id='ctl0_body_Repeater_ctl2_Repeater2_ctl3_Row']","");
- $this->verifyElementPresent("//tr[@id='ctl0_body_Repeater_ctl3_Repeater2_ctl1_Row']","");
- $this->verifyElementPresent("//tr[@id='ctl0_body_Repeater_ctl3_Repeater2_ctl2_Row']","");
- $this->verifyElementPresent("//tr[@id='ctl0_body_Repeater_ctl4_Repeater2_ctl1_Row']","");
- $this->verifyElementPresent("//tr[@id='ctl0_body_Repeater_ctl4_Repeater2_ctl2_Row']","");
+ $this->assertElementPresent("//table[@cellspacing='1']");
+ $this->assertElementPresent("//td[@id='ctl0_body_Repeater_ctl1_Cell' and contains(text(),'North')]","");
+ $this->assertElementPresent("//td[@id='ctl0_body_Repeater_ctl1_Cell']","");
+ $this->assertElementPresent("//td[@id='ctl0_body_Repeater_ctl2_Cell']","");
+ $this->assertElementPresent("//td[@id='ctl0_body_Repeater_ctl3_Cell']","");
+ $this->assertElementPresent("//td[@id='ctl0_body_Repeater_ctl4_Cell']","");
+ $this->assertElementPresent("//tr[@id='ctl0_body_Repeater_ctl1_Repeater2_ctl1_Row']","");
+ $this->assertElementPresent("//tr[@id='ctl0_body_Repeater_ctl1_Repeater2_ctl2_Row']","");
+ $this->assertElementPresent("//tr[@id='ctl0_body_Repeater_ctl1_Repeater2_ctl3_Row']","");
+ $this->assertElementPresent("//tr[@id='ctl0_body_Repeater_ctl2_Repeater2_ctl1_Row']","");
+ $this->assertElementPresent("//tr[@id='ctl0_body_Repeater_ctl2_Repeater2_ctl2_Row']","");
+ $this->assertElementPresent("//tr[@id='ctl0_body_Repeater_ctl2_Repeater2_ctl3_Row']","");
+ $this->assertElementPresent("//tr[@id='ctl0_body_Repeater_ctl3_Repeater2_ctl1_Row']","");
+ $this->assertElementPresent("//tr[@id='ctl0_body_Repeater_ctl3_Repeater2_ctl2_Row']","");
+ $this->assertElementPresent("//tr[@id='ctl0_body_Repeater_ctl4_Repeater2_ctl1_Row']","");
+ $this->assertElementPresent("//tr[@id='ctl0_body_Repeater_ctl4_Repeater2_ctl2_Row']","");
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/Repeater3TestCase.php b/tests/FunctionalTests/quickstart/Controls/Repeater3TestCase.php
index a5031af5..3572a36f 100755
--- a/tests/FunctionalTests/quickstart/Controls/Repeater3TestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/Repeater3TestCase.php
@@ -1,35 +1,35 @@
<?php
-class QuickstartRepeater3TestCase extends PradoGenericSeleniumTest
+class QuickstartRepeater3TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TRepeater.Sample3&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TRepeater.Sample3&amp;notheme=true&amp;lang=en");
// verify product name is required
- $this->verifyNotVisible('ctl0_body_Repeater_ctl0_ctl0');
+ $this->assertNotVisible('ctl0_body_Repeater_ctl0_ctl0');
$this->type("ctl0_body_Repeater_ctl0_ProductName", "");
- $this->click("//input[@type='submit' and @value='Save']", "");
- $this->verifyVisible('ctl0_body_Repeater_ctl0_ctl0');
+ $this->byXPath("//input[@type='submit' and @value='Save']")->click();
+ $this->assertVisible('ctl0_body_Repeater_ctl0_ctl0');
// verify product price is of proper format
- $this->verifyNotVisible('ctl0_body_Repeater_ctl0_ctl1');
+ $this->assertNotVisible('ctl0_body_Repeater_ctl0_ctl1');
$this->type("ctl0_body_Repeater_ctl0_ProductPrice", "abc");
- $this->click("//input[@type='submit' and @value='Save']", "");
- $this->verifyVisible('ctl0_body_Repeater_ctl0_ctl1');
+ $this->byXPath("//input[@type='submit' and @value='Save']")->click();
+ $this->assertVisible('ctl0_body_Repeater_ctl0_ctl1');
// perform postback
- $this->click("ctl0_body_Repeater_ctl0_ProductImported",'');
+ $this->byId("ctl0_body_Repeater_ctl0_ProductImported",'')->click();
$this->type("ctl0_body_Repeater_ctl0_ProductName", "Mother Board");
$this->type("ctl0_body_Repeater_ctl0_ProductPrice", "99.01");
- $this->select("ctl0_body_Repeater_ctl3_ProductCategory", "label=Accessories");
- $this->clickAndWait("//input[@type='submit' and @value='Save']", "");
- $this->verifyNotVisible('ctl0_body_Repeater_ctl0_ctl0');
- $this->verifyNotVisible('ctl0_body_Repeater_ctl0_ctl1');
+ $this->select("ctl0_body_Repeater_ctl3_ProductCategory", "Accessories");
+ $this->byXPath("//input[@type='submit' and @value='Save']")->click();
+ $this->assertNotVisible('ctl0_body_Repeater_ctl0_ctl0');
+ $this->assertNotVisible('ctl0_body_Repeater_ctl0_ctl1');
// verify postback results
- $this->verifyElementPresent("//td[text()='Mother Board']",'');
- $this->verifyElementNotPresent("//td[text()='Input Devices']",'');
- $this->verifyElementPresent("//td[text()='99.01']",'');
+ $this->assertElementPresent("//td[text()='Mother Board']",'');
+ $this->assertElementNotPresent("//td[text()='Input Devices']",'');
+ $this->assertElementPresent("//td[text()='99.01']",'');
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/StatementsTestCase.php b/tests/FunctionalTests/quickstart/Controls/StatementsTestCase.php
index a7c4c579..df0e6f89 100755
--- a/tests/FunctionalTests/quickstart/Controls/StatementsTestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/StatementsTestCase.php
@@ -1,13 +1,13 @@
<?php
-class QuickstartStatementsTestCase extends PradoGenericSeleniumTest
+class QuickstartStatementsTestCase extends PradoGenericSelenium2Test
{
function test ()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TStatements.Home&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TStatements.Home&amp;notheme=true&amp;lang=en");
- $this->verifyTitle("PRADO QuickStart Sample", "");
+ $this->assertEquals("PRADO QuickStart Sample", $this->title());
- $this->verifyTextPresent('UniqueID is \'ctl0$body$ctl0\'');
+ $this->assertContains('UniqueID is \'ctl0$body$ctl0\'', $this->source());
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/TabPanelTestCase.php b/tests/FunctionalTests/quickstart/Controls/TabPanelTestCase.php
index d01e824d..13392ca5 100755
--- a/tests/FunctionalTests/quickstart/Controls/TabPanelTestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/TabPanelTestCase.php
@@ -1,47 +1,47 @@
<?php
-class QuickstartTabPanelTestCase extends PradoGenericSeleniumTest
+class QuickstartTabPanelTestCase extends PradoGenericSelenium2Test
{
function test ()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TTabPanel.Home&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TTabPanel.Home&amp;notheme=true&amp;lang=en");
- $this->verifyTitle("PRADO QuickStart Sample", "");
+ $this->assertEquals("PRADO QuickStart Sample", $this->title());
// verify initial visibility
- $this->verifyNotVisible('ctl0_body_View1'); // view 1
- $this->verifyVisible('ctl0_body_View2'); // view 2
- $this->verifyNotVisible('ctl0_body_ctl2'); // view 3
+ $this->assertNotVisible('ctl0_body_View1'); // view 1
+ $this->assertVisible('ctl0_body_View2'); // view 2
+ $this->assertNotVisible('ctl0_body_ctl2'); // view 3
// switching to the first view
- $this->click('ctl0_body_View1_0');
+ $this->byId('ctl0_body_View1_0')->click();
$this->pause(500);
- $this->verifyVisible('ctl0_body_View1'); // view 1
- $this->verifyNotVisible('ctl0_body_View2'); // view 2
- $this->verifyNotVisible('ctl0_body_ctl2'); // view 3
- $this->verifyNotVisible('ctl0_body_View11'); // view 11
- $this->verifyVisible('ctl0_body_View21'); // view 21
+ $this->assertVisible('ctl0_body_View1'); // view 1
+ $this->assertNotVisible('ctl0_body_View2'); // view 2
+ $this->assertNotVisible('ctl0_body_ctl2'); // view 3
+ $this->assertNotVisible('ctl0_body_View11'); // view 11
+ $this->assertVisible('ctl0_body_View21'); // view 21
// switching to View11
- $this->click('ctl0_body_View11_0');
+ $this->byId('ctl0_body_View11_0')->click();
$this->pause(500);
- $this->verifyVisible('ctl0_body_View1'); // view 1
- $this->verifyNotVisible('ctl0_body_View2'); // view 2
- $this->verifyNotVisible('ctl0_body_ctl2'); // view 3
- $this->verifyVisible('ctl0_body_View11'); // view 11
- $this->verifyNotVisible('ctl0_body_View21'); // view 21
+ $this->assertVisible('ctl0_body_View1'); // view 1
+ $this->assertNotVisible('ctl0_body_View2'); // view 2
+ $this->assertNotVisible('ctl0_body_ctl2'); // view 3
+ $this->assertVisible('ctl0_body_View11'); // view 11
+ $this->assertNotVisible('ctl0_body_View21'); // view 21
// switching to the third view
- $this->click('ctl0_body_ctl2_0');
+ $this->byId('ctl0_body_ctl2_0')->click();
$this->pause(500);
- $this->verifyNotVisible('ctl0_body_View1'); // view 1
- $this->verifyNotVisible('ctl0_body_View2'); // view 2
- $this->verifyVisible('ctl0_body_ctl2'); // view 3
+ $this->assertNotVisible('ctl0_body_View1'); // view 1
+ $this->assertNotVisible('ctl0_body_View2'); // view 2
+ $this->assertVisible('ctl0_body_ctl2'); // view 3
// submit: check if the visibility is kept
- $this->clickAndWait("//input[@type='submit' and @value='Submit']", "");
- $this->verifyNotVisible('ctl0_body_View1'); // view 1
- $this->verifyNotVisible('ctl0_body_View2'); // view 2
- $this->verifyVisible('ctl0_body_ctl2'); // view 3
+ $this->byXPath("//input[@type='submit' and @value='Submit']")->click();
+ $this->assertNotVisible('ctl0_body_View1'); // view 1
+ $this->assertNotVisible('ctl0_body_View2'); // view 2
+ $this->assertVisible('ctl0_body_ctl2'); // view 3
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/TableTestCase.php b/tests/FunctionalTests/quickstart/Controls/TableTestCase.php
index 128f4b22..aafd6f80 100755
--- a/tests/FunctionalTests/quickstart/Controls/TableTestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/TableTestCase.php
@@ -1,18 +1,18 @@
<?php
-class QuickstartTableTestCase extends PradoGenericSeleniumTest
+class QuickstartTableTestCase extends PradoGenericSelenium2Test
{
function test ()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TTable.Home&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TTable.Home&amp;notheme=true&amp;lang=en");
- $this->verifyElementPresent("//table[@rules='all' and @border='1']");
- $this->verifyElementPresent("//table/caption[@align='bottom' and text()='This is table caption']");
- $this->verifyElementPresent("//th[text()='header cell 2']");
- $this->verifyElementPresent("//tr[@align='right']/td[text()='text']");
- $this->verifyElementPresent("//td[@align='center' and contains(text(),'cell 5')]");
+ $this->assertElementPresent("//table[@rules='all' and @border='1']");
+ $this->assertElementPresent("//table/caption[@align='bottom' and text()='This is table caption']");
+ $this->assertElementPresent("//th[text()='header cell 2']");
+ $this->assertElementPresent("//tr[@align='right']/td[text()='text']");
+ $this->assertElementPresent("//td[@align='center' and contains(text(),'cell 5')]");
- $this->verifyElementPresent("//th[text()='Header 1']");
- $this->verifyElementPresent("//td[text()='Cell 1']");
+ $this->assertElementPresent("//th[text()='Header 1']");
+ $this->assertElementPresent("//td[text()='Cell 1']");
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/TextBoxTestCase.php b/tests/FunctionalTests/quickstart/Controls/TextBoxTestCase.php
index a3464702..3865e33d 100755
--- a/tests/FunctionalTests/quickstart/Controls/TextBoxTestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/TextBoxTestCase.php
@@ -1,58 +1,58 @@
<?php
-class QuickstartTextBoxTestCase extends PradoGenericSeleniumTest
+class QuickstartTextBoxTestCase extends PradoGenericSelenium2Test
{
function test ()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TTextBox.Home&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TTextBox.Home&amp;notheme=true&amp;lang=en");
- $this->verifyTitle("PRADO QuickStart Sample", "");
+ $this->assertEquals("PRADO QuickStart Sample", $this->title());
// a normal textbox
$this->type("ctl0\$body\$ctl0", "test");
// textbox with maxlength set
- $this->verifyAttribute("ctl0\$body\$ctl1@size","4");
- $this->verifyAttribute("ctl0\$body\$ctl1@maxlength","6");
+ $this->assertAttribute("ctl0\$body\$ctl1@size","4");
+ $this->assertAttribute("ctl0\$body\$ctl1@maxlength","6");
$this->type("ctl0\$body\$ctl1", "textte");
// vCard textboxes
- $this->verifyAttribute("ctl0\$body\$ctl2@vcard_name","vCard.FirstName");
+ $this->assertAttribute("ctl0\$body\$ctl2@vcard_name","vCard.FirstName");
$this->type("ctl0\$body\$ctl2", "first");
- $this->verifyAttribute("ctl0\$body\$ctl3@vcard_name","vCard.LastName");
+ $this->assertAttribute("ctl0\$body\$ctl3@vcard_name","vCard.LastName");
$this->type("ctl0\$body\$ctl3", "last");
// a disabled textbox
- $this->verifyAttribute("ctl0\$body\$ctl4@disabled","regexp:true|disabled");
+ $this->assertAttribute("ctl0\$body\$ctl4@disabled","regexp:true|disabled");
// a read-only textbox
- $this->verifyAttribute("ctl0\$body\$ctl5@readonly","regexp:true|readonly");
+ $this->assertAttribute("ctl0\$body\$ctl5@readonly","regexp:true|readonly");
// auto postback textbox, CausesValidation=false
- $this->verifyValue("ctl0\$body\$ctl6", "change me");
- $this->typeAndWait("ctl0\$body\$ctl6", "change mes");
- $this->verifyValue("ctl0\$body\$ctl6", "text changed");
+ $this->assertValue("ctl0\$body\$ctl6", "change me");
+ $this->typeSpecial("ctl0\$body\$ctl6", "change mes");
+ $this->assertValue("ctl0\$body\$ctl6", "text changed");
// auto postback textbox, CausesValidation=true
- $this->verifyNotVisible('ctl0_body_ctl7');
- $this->type("ctl0\$body\$TextBox3", "test");
+ $this->assertNotVisible('ctl0_body_ctl7');
+ $this->typeSpecial("ctl0\$body\$TextBox3", "test");
// $this->pause(1000);
- $this->verifyVisible('ctl0_body_ctl7');
- $this->typeAndWait("ctl0\$body\$TextBox3", "non test");
- $this->verifyNotVisible('ctl0_body_ctl7');
+ $this->assertVisible('ctl0_body_ctl7');
+ $this->typeSpecial("ctl0\$body\$TextBox3", "non test");
+ $this->assertNotVisible('ctl0_body_ctl7');
// submitting textbox with a button
$this->type("ctl0\$body\$TextBox1", "texttext");
- $this->clickAndWait("//input[@type='submit' and @value='Submit']", "");
- $this->verifyValue("ctl0\$body\$TextBox1", "You just entered 'texttext'.");
+ $this->byXPath("//input[@type='submit' and @value='Submit']")->click();
+ $this->assertValue("ctl0\$body\$TextBox1", "You just entered 'texttext'.");
// SafeText
- $this->verifyText("ctl0_body_Output","test");
- $this->typeAndWait("ctl0\$body\$TextBox2","<a href=javascript:xxx>malicious code</a>");
- $this->verifyText("ctl0_body_Output","malicious code");
+ $this->assertText("ctl0_body_Output","test");
+ $this->typeSpecial("ctl0\$body\$TextBox2","<a href=javascript:xxx>malicious code</a>");
+ $this->assertText("ctl0_body_Output","malicious code");
// password
- $this->verifyAttribute("ctl0\$body\$ctl9@type","password");
+ $this->assertAttribute("ctl0\$body\$ctl9@type","password");
// ------------------multiline textbox----------------------
@@ -64,28 +64,28 @@ End of message
");
// a disabled multiline textbox
- $this->verifyAttribute("ctl0\$body\$ctl12@disabled","regexp:true|disabled");
+ $this->assertAttribute("ctl0\$body\$ctl12@disabled","regexp:true|disabled");
// a read-only multiline textbox
- $this->verifyAttribute("ctl0\$body\$ctl13@readonly","regexp:true|readonly");
- $this->verifyAttribute("ctl0\$body\$ctl13@wrap","off");
+ $this->assertAttribute("ctl0\$body\$ctl13@readonly","regexp:true|readonly");
+ $this->assertAttribute("ctl0\$body\$ctl13@wrap","off");
// auto postback textbox
- $this->verifyValue("ctl0\$body\$ctl14", "change me");
- $this->typeAndWait("ctl0\$body\$ctl14", "change mes");
- $this->verifyValue("ctl0\$body\$ctl14", "text changed");
- $this->verifyValue("ctl0\$body\$ctl10", "This is a\nmultiline\ntextbox.");
- $this->verifyValue("ctl0\$body\$ctl11", "This is a multiline text box.
+ $this->assertValue("ctl0\$body\$ctl14", "change me");
+ $this->typeSpecial("ctl0\$body\$ctl14", "change mes");
+ $this->assertValue("ctl0\$body\$ctl14", "text changed");
+ $this->assertValue("ctl0\$body\$ctl10", "This is a\nmultiline\ntextbox.");
+ $this->assertValue("ctl0\$body\$ctl11", "This is a multiline text box.
In HTML, it is displayed as a textarea.
End of message
");
// textbox associated with a validator
- $this->verifyNotVisible('ctl0_body_ctl15');
- $this->type("ctl0\$body\$MultiTextBox3", "demo");
+ $this->assertNotVisible('ctl0_body_ctl15');
+ $this->typeSpecial("ctl0\$body\$MultiTextBox3", "demo");
// $this->pause(1000);
- $this->verifyVisible('ctl0_body_ctl15');
- $this->typeAndWait("ctl0\$body\$MultiTextBox3", "non demo");
- $this->verifyNotVisible('ctl0_body_ctl15');
+ $this->assertVisible('ctl0_body_ctl15');
+ $this->typeSpecial("ctl0\$body\$MultiTextBox3", "non demo");
+ $this->assertNotVisible('ctl0_body_ctl15');
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/Wizard1TestCase.php b/tests/FunctionalTests/quickstart/Controls/Wizard1TestCase.php
index 5e7018c4..7ac55349 100755
--- a/tests/FunctionalTests/quickstart/Controls/Wizard1TestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/Wizard1TestCase.php
@@ -1,24 +1,24 @@
<?php
-class QuickstartWizard1TestCase extends PradoGenericSeleniumTest
+class QuickstartWizard1TestCase extends PradoGenericSelenium2Test
{
function test ()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TWizard.Sample1&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TWizard.Sample1&amp;notheme=true&amp;lang=en");
- $this->verifyTitle("PRADO QuickStart Sample", "");
+ $this->assertEquals("PRADO QuickStart Sample", $this->title());
// step 1
- $this->verifyTextPresent('Wizard Step 1');
- $this->verifyTextNotPresent('Wizard Step 2');
- $this->verifyVisible('ctl0_body_Wizard1_SideBarList_ctl0_SideBarButton');
- $this->verifyAttribute('ctl0_body_Wizard1_SideBarList_ctl1_SideBarButton@disabled','regexp:true|disabled');
- $this->select('ctl0$body$Wizard1$DropDownList1', "label=Purple");
- $this->clickAndWait('ctl0$body$Wizard1$ctl6$ctl1');
+ $this->assertContains('Wizard Step 1', $this->source());
+ $this->assertNotContains('Wizard Step 2', $this->source());
+ $this->assertVisible('ctl0_body_Wizard1_SideBarList_ctl0_SideBarButton');
+ $this->assertAttribute('ctl0_body_Wizard1_SideBarList_ctl1_SideBarButton@disabled','regexp:true|disabled');
+ $this->select('ctl0$body$Wizard1$DropDownList1', "Purple");
+ $this->byName('ctl0$body$Wizard1$ctl6$ctl1')->click();
// step 2
- $this->verifyTextPresent('Your favorite color is: Purple');
- $this->verifyTextNotPresent('Wizard Step 1');
- $this->verifyTextPresent('Wizard Step 2');
+ $this->assertContains('Your favorite color is: Purple', $this->source());
+ $this->assertNotContains('Wizard Step 1', $this->source());
+ $this->assertContains('Wizard Step 2', $this->source());
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/Wizard2TestCase.php b/tests/FunctionalTests/quickstart/Controls/Wizard2TestCase.php
index a77280ff..85ef8655 100755
--- a/tests/FunctionalTests/quickstart/Controls/Wizard2TestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/Wizard2TestCase.php
@@ -1,24 +1,24 @@
<?php
-class QuickstartWizard2TestCase extends PradoGenericSeleniumTest
+class QuickstartWizard2TestCase extends PradoGenericSelenium2Test
{
function test ()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TWizard.Sample2&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TWizard.Sample2&amp;notheme=true&amp;lang=en");
- $this->verifyTitle("PRADO QuickStart Sample", "");
+ $this->assertEquals("PRADO QuickStart Sample", $this->title());
// step 1
- $this->verifyTextPresent('Please let us know your preference');
- $this->verifyTextNotPresent('Thank you for your answer');
- $this->verifyVisible('ctl0_body_Wizard1_SideBarList_ctl0_SideBarButton');
- $this->verifyAttribute('ctl0_body_Wizard1_SideBarList_ctl1_SideBarButton@disabled','regexp:true|disabled');
- $this->select('ctl0$body$Wizard1$DropDownList1', "label=Blue");
- $this->clickAndWait('ctl0$body$Wizard1$ctl6$ctl1');
+ $this->assertContains('Please let us know your preference', $this->source());
+ $this->assertNotContains('Thank you for your answer', $this->source());
+ $this->assertVisible('ctl0_body_Wizard1_SideBarList_ctl0_SideBarButton');
+ $this->assertAttribute('ctl0_body_Wizard1_SideBarList_ctl1_SideBarButton@disabled','regexp:true|disabled');
+ $this->select('ctl0$body$Wizard1$DropDownList1', "Blue");
+ $this->byName('ctl0$body$Wizard1$ctl6$ctl1')->click();
// step 2
- $this->verifyTextPresent('Your favorite color is: Blue');
- $this->verifyTextNotPresent('Please let us know your preference');
- $this->verifyTextPresent('Thank you for your answer');
+ $this->assertContains('Your favorite color is: Blue', $this->source());
+ $this->assertNotContains('Please let us know your preference', $this->source());
+ $this->assertContains('Thank you for your answer', $this->source());
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/Wizard3TestCase.php b/tests/FunctionalTests/quickstart/Controls/Wizard3TestCase.php
index ec0efe90..2568f233 100755
--- a/tests/FunctionalTests/quickstart/Controls/Wizard3TestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/Wizard3TestCase.php
@@ -1,44 +1,44 @@
<?php
-class QuickstartWizard3TestCase extends PradoGenericSeleniumTest
+class QuickstartWizard3TestCase extends PradoGenericSelenium2Test
{
function test ()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TWizard.Sample3&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TWizard.Sample3&amp;notheme=true&amp;lang=en");
- $this->verifyTitle("PRADO QuickStart Sample", "");
+ $this->assertEquals("PRADO QuickStart Sample", $this->title());
// step 1
- $this->verifyTextPresent('A Mini Survey');
- $this->verifyTextPresent('PRADO QuickStart Sample');
- $this->click('ctl0_body_Wizard3_StudentCheckBox');
- $this->clickAndWait('ctl0$body$Wizard3$ctl4$ctl0');
+ $this->assertContains('A Mini Survey', $this->source());
+ $this->assertContains('PRADO QuickStart Sample', $this->source());
+ $this->byId('ctl0_body_Wizard3_StudentCheckBox')->click();
+ $this->byName('ctl0$body$Wizard3$ctl4$ctl0')->click();
// step 2
- $this->select('ctl0$body$Wizard3$DropDownList11', "label=Chemistry");
- $this->clickAndWait('ctl0$body$Wizard3$ctl5$ctl1');
+ $this->select('ctl0$body$Wizard3$DropDownList11', "Chemistry");
+ $this->byName('ctl0$body$Wizard3$ctl5$ctl1')->click();
// step 3
- $this->select('ctl0$body$Wizard3$DropDownList22', "label=Tennis");
- $this->clickAndWait('ctl0$body$Wizard3$ctl6$ctl1');
+ $this->select('ctl0$body$Wizard3$DropDownList22', "Tennis");
+ $this->byName('ctl0$body$Wizard3$ctl6$ctl1')->click();
// step 4
- $this->verifyTextPresent('You are a college student');
- $this->verifyTextPresent('You are in major: Chemistry');
- $this->verifyTextPresent('Your favorite sport is: Tennis');
+ $this->assertContains('You are a college student', $this->source());
+ $this->assertContains('You are in major: Chemistry', $this->source());
+ $this->assertContains('Your favorite sport is: Tennis', $this->source());
// run the example again. this time we skip the page asking about major
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TWizard.Sample3&amp;notheme=true", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TWizard.Sample3&amp;notheme=true");
// step 1
- $this->clickAndWait('ctl0$body$Wizard3$ctl4$ctl0');
+ $this->byName('ctl0$body$Wizard3$ctl4$ctl0')->click();
// step 3
- $this->select('ctl0$body$Wizard3$DropDownList22', "label=Baseball");
- $this->clickAndWait('ctl0$body$Wizard3$ctl6$ctl1');
+ $this->select('ctl0$body$Wizard3$DropDownList22', "Baseball");
+ $this->byName('ctl0$body$Wizard3$ctl6$ctl1')->click();
// step 4
- $this->verifyTextNotPresent('You are a college student');
- $this->verifyTextPresent('Your favorite sport is: Baseball');
+ $this->assertNotContains('You are a college student', $this->source());
+ $this->assertContains('Your favorite sport is: Baseball', $this->source());
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/Wizard4TestCase.php b/tests/FunctionalTests/quickstart/Controls/Wizard4TestCase.php
index f2b8ad6e..41d3463e 100755
--- a/tests/FunctionalTests/quickstart/Controls/Wizard4TestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/Wizard4TestCase.php
@@ -1,42 +1,42 @@
<?php
-class QuickstartWizard4TestCase extends PradoGenericSeleniumTest
+class QuickstartWizard4TestCase extends PradoGenericSelenium2Test
{
function test ()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TWizard.Sample4&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TWizard.Sample4&amp;notheme=true&amp;lang=en");
- $this->verifyTitle("PRADO QuickStart Sample", "");
+ $this->assertEquals("PRADO QuickStart Sample", $this->title());
// step 1
- $this->verifyTextPresent('Step 1 of 3');
- $this->select('ctl0_body_Wizard1_DropDownList1', "label=Cyan");
- $this->clickAndWait('ctl0_body_Wizard1_SideBarList_ctl2_SideBarButton');
+ $this->assertContains('Step 1 of 3', $this->source());
+ $this->select('ctl0_body_Wizard1_DropDownList1', "Cyan");
+ $this->byId('ctl0_body_Wizard1_SideBarList_ctl2_SideBarButton')->click();
// step 3
- $this->verifyTextPresent('Step 3 of 3');
- $this->verifyTextPresent('Thank you for completing this survey.');
- $this->clickAndWait('ctl0_body_Wizard1_SideBarList_ctl0_SideBarButton');
+ $this->assertContains('Step 3 of 3', $this->source());
+ $this->assertContains('Thank you for completing this survey.', $this->source());
+ $this->byId('ctl0_body_Wizard1_SideBarList_ctl0_SideBarButton')->click();
// step 1
$this->assertSelected('ctl0_body_Wizard1_DropDownList1', "Cyan");
- $this->select('ctl0_body_Wizard1_DropDownList1', "label=Black");
- $this->clickAndWait('ctl0_body_Wizard1_ctl4_ctl0');
+ $this->select('ctl0_body_Wizard1_DropDownList1', "Black");
+ $this->byId('ctl0_body_Wizard1_ctl4_ctl0')->click();
// step 2
- $this->verifyTextPresent('Step 2 of 3');
- $this->verifyTextPresent('Your favorite color is: Black');
- $this->clickAndWait('ctl0_body_Wizard1_ctl5_ctl0');
+ $this->assertContains('Step 2 of 3', $this->source());
+ $this->assertContains('Your favorite color is: Black', $this->source());
+ $this->byId('ctl0_body_Wizard1_ctl5_ctl0')->click();
// step 1
- $this->verifyTextPresent('Step 1 of 3');
+ $this->assertContains('Step 1 of 3', $this->source());
$this->assertSelected('ctl0_body_Wizard1_DropDownList1', "Black");
- $this->clickAndWait('ctl0_body_Wizard1_ctl4_ctl0');
+ $this->byId('ctl0_body_Wizard1_ctl4_ctl0')->click();
// step 2
- $this->clickAndWait('ctl0_body_Wizard1_ctl5_ctl1');
+ $this->byId('ctl0_body_Wizard1_ctl5_ctl1')->click();
// step 3
- $this->verifyTextPresent('Step 3 of 3');
+ $this->assertContains('Step 3 of 3', $this->source());
}
}
diff --git a/tests/FunctionalTests/quickstart/Controls/Wizard5TestCase.php b/tests/FunctionalTests/quickstart/Controls/Wizard5TestCase.php
index eb5edb3b..4c41a074 100755
--- a/tests/FunctionalTests/quickstart/Controls/Wizard5TestCase.php
+++ b/tests/FunctionalTests/quickstart/Controls/Wizard5TestCase.php
@@ -1,35 +1,35 @@
<?php
-class QuickstartWizard5TestCase extends PradoGenericSeleniumTest
+class QuickstartWizard5TestCase extends PradoGenericSelenium2Test
{
function test ()
{
- $this->open("../../demos/quickstart/index.php?page=Controls.Samples.TWizard.Sample5&amp;notheme=true&amp;lang=en", "");
+ $this->url("../../demos/quickstart/index.php?page=Controls.Samples.TWizard.Sample5&amp;notheme=true&amp;lang=en");
- $this->verifyTitle("PRADO QuickStart Sample", "");
+ $this->assertEquals("PRADO QuickStart Sample", $this->title());
// step 1
- $this->verifyTextPresent('Please let us know your preference');
- $this->verifyVisible('ctl0_body_Wizard1_SideBarList_ctl0_SideBarButton');
- $this->verifyVisible('ctl0_body_Wizard1_SideBarList_ctl1_SideBarButton');
- $this->verifyAttribute('ctl0_body_Wizard1_SideBarList_ctl2_SideBarButton@disabled','regexp:true|disabled');
- $this->select('ctl0_body_Wizard1_DropDownList1', "label=Cyan");
- $this->clickAndWait('ctl0$body$Wizard1$ctl4$ctl0');
+ $this->assertContains('Please let us know your preference', $this->source());
+ $this->assertVisible('ctl0_body_Wizard1_SideBarList_ctl0_SideBarButton');
+ $this->assertVisible('ctl0_body_Wizard1_SideBarList_ctl1_SideBarButton');
+ $this->assertAttribute('ctl0_body_Wizard1_SideBarList_ctl2_SideBarButton@disabled','regexp:true|disabled');
+ $this->select('ctl0_body_Wizard1_DropDownList1', "Cyan");
+ $this->byName('ctl0$body$Wizard1$ctl4$ctl0')->click();
// step 2
- $this->select('ctl0_body_Wizard1_Step2_DropDownList2','label=Football');
- $this->clickAndWait('ctl0$body$Wizard1$ctl6$ctl0');
+ $this->select('ctl0_body_Wizard1_Step2_DropDownList2','Football');
+ $this->byName('ctl0$body$Wizard1$ctl6$ctl0')->click();
// step 1
$this->assertSelected('ctl0_body_Wizard1_DropDownList1','Cyan');
- $this->clickAndWait('ctl0_body_Wizard1_SideBarList_ctl1_SideBarButton');
+ $this->byId('ctl0_body_Wizard1_SideBarList_ctl1_SideBarButton')->click();
// step 2
$this->assertSelected('ctl0_body_Wizard1_Step2_DropDownList2','Football');
- $this->clickAndWait('ctl0$body$Wizard1$ctl6$ctl1');
+ $this->byName('ctl0$body$Wizard1$ctl6$ctl1')->click();
// step 3
- $this->verifyTextPresent('Your favorite color is: Cyan');
- $this->verifyTextPresent('Your favorite sport is: Football');
+ $this->assertContains('Your favorite color is: Cyan', $this->source());
+ $this->assertContains('Your favorite sport is: Football', $this->source());
}
}
diff --git a/tests/FunctionalTests/quickstart/Fundamentals/HangmanTestCase.php b/tests/FunctionalTests/quickstart/Fundamentals/HangmanTestCase.php
index 3d531b47..8f5557ca 100755
--- a/tests/FunctionalTests/quickstart/Fundamentals/HangmanTestCase.php
+++ b/tests/FunctionalTests/quickstart/Fundamentals/HangmanTestCase.php
@@ -1,32 +1,32 @@
<?php
-class QuickstartHangmanTestCase extends PradoGenericSeleniumTest
+class QuickstartHangmanTestCase extends PradoGenericSelenium2Test
{
function test ()
{
- $this->open("../../demos/quickstart/index.php?page=Fundamentals.Samples.Hangman.Home&amp;notheme=true&amp;lang=en", "");
- $this->verifyTitle("Hangman Game", "");
- $this->verifyTextPresent("Medium game; you are allowed 5 misses.", "");
- $this->clickAndWait("//input[@type='submit' and @value='Play!']", "");
- $this->verifyTextPresent("You must choose a difficulty level", "");
- $this->clickAndWait("//input[@type='submit' and @value='Play!']", "");
- $this->click("//input[@name='ctl0\$body\$LevelSelection' and @value='3']", "");
- $this->clickAndWait("//input[@type='submit' and @value='Play!']", "");
- $this->verifyTextPresent("Please make a guess", "");
- $this->verifyTextPresent("maximum of 3", "");
- $this->clickAndWait("link=B", "");
- $this->clickAndWait("link=F", "");
- $this->clickAndWait("link=Give up?", "");
- $this->verifyTextPresent("You Lose", "");
- $this->clickAndWait("link=Start Again", "");
- $this->clickAndWait("//input[@type='submit' and @value='Play!']", "");
- $this->verifyTextPresent("Please make a guess", "");
- $this->verifyTextPresent("maximum of 3", "");
- $this->clickAndWait("link=Give up?", "");
- $this->verifyTextPresent("You Lose", "");
- $this->clickAndWait("link=Start Again", "");
- $this->click("//input[@name='ctl0\$body\$LevelSelection' and @value='5']", "");
- $this->clickAndWait("//input[@type='submit' and @value='Play!']", "");
- $this->verifyTextPresent("maximum of 5", "");
+ $this->url("../../demos/quickstart/index.php?page=Fundamentals.Samples.Hangman.Home&amp;notheme=true&amp;lang=en");
+ $this->assertEquals("Hangman Game", $this->title());
+ $this->assertContains("Medium game; you are allowed 5 misses.", $this->source());
+ $this->byXPath("//input[@type='submit' and @value='Play!']")->click();
+ $this->assertContains("You must choose a difficulty level", $this->source());
+ $this->byXPath("//input[@type='submit' and @value='Play!']")->click();
+ $this->byXPath("//input[@name='ctl0\$body\$LevelSelection' and @value='3']")->click();
+ $this->byXPath("//input[@type='submit' and @value='Play!']")->click();
+ $this->assertContains("Please make a guess", $this->source());
+ $this->assertContains("maximum of 3", $this->source());
+ $this->byLinkText("B")->click();
+ $this->byLinkText("F")->click();
+ $this->byLinkText("Give up?")->click();
+ $this->assertContains("You Lose", $this->source());
+ $this->byLinkText("Start Again")->click();
+ $this->byXPath("//input[@type='submit' and @value='Play!']")->click();
+ $this->assertContains("Please make a guess", $this->source());
+ $this->assertContains("maximum of 3", $this->source());
+ $this->byLinkText("Give up?")->click();
+ $this->assertContains("You Lose", $this->source());
+ $this->byLinkText("Start Again")->click();
+ $this->byXPath("//input[@name='ctl0\$body\$LevelSelection' and @value='5']")->click();
+ $this->byXPath("//input[@type='submit' and @value='Play!']")->click();
+ $this->assertContains("maximum of 5", $this->source());
}
}
diff --git a/tests/FunctionalTests/tickets/protected/controls/ToggleImageButton.php b/tests/FunctionalTests/tickets/protected/controls/ToggleImageButton.php
index 9aecda84..0165edac 100755
--- a/tests/FunctionalTests/tickets/protected/controls/ToggleImageButton.php
+++ b/tests/FunctionalTests/tickets/protected/controls/ToggleImageButton.php
@@ -6,7 +6,6 @@
* @author Christophe BOULAIN (Christophe.Boulain@ceram.fr)
* @copyright Copyright &copy; 2007, CERAM Sophia Antipolis
* @license url nameoflicense
- * @version $Id: ToggleImageButton.php 2043 2007-06-30 15:07:50Z xue $
*
*/
diff --git a/tests/FunctionalTests/tickets/protected/pages/ExtendedToggleImageButton.php b/tests/FunctionalTests/tickets/protected/pages/ExtendedToggleImageButton.php
index 934efcef..7bc53ba3 100755
--- a/tests/FunctionalTests/tickets/protected/pages/ExtendedToggleImageButton.php
+++ b/tests/FunctionalTests/tickets/protected/pages/ExtendedToggleImageButton.php
@@ -1,16 +1,15 @@
<?php
/**
*
- *
+ *
* @author Christophe BOULAIN (Christophe.Boulain@ceram.fr)
* @copyright Copyright &copy; 2007, CERAM Sophia Antipolis
* @license url nameoflicense
- * @version $Id: ExtendedToggleImageButton.php 2039 2007-06-28 08:41:57Z tof $
- *
+ *
*/
prado::using ('Application.controls.ToggleImageButton');
class ExtendedToggleImageButton extends ToggleImageButton {
-
+
} \ No newline at end of file
diff --git a/tests/FunctionalTests/tickets/protected/pages/Layout.tpl b/tests/FunctionalTests/tickets/protected/pages/Layout.tpl
index bf2f8fab..b245a50d 100755
--- a/tests/FunctionalTests/tickets/protected/pages/Layout.tpl
+++ b/tests/FunctionalTests/tickets/protected/pages/Layout.tpl
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC
- "-//W3C//DTD XHTML 1.0 Strict//EN"
+<!DOCTYPE html PUBLIC
+ "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<com:THead Title="PRADO Functional Tests">
<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
@@ -30,7 +30,6 @@
<com:TContentPlaceHolder ID="Content" />
<hr style="margin-top: 2em" />
-<com:TJavascriptLogger />
</com:TForm>
<div class="w3c">
<a href="http://validator.w3.org/check?uri=referer">
@@ -38,7 +37,7 @@
</a>
<a href="?page=ViewSource&amp;path=<%= str_replace('.','/', $this->Request->ServiceParameter) %>.page"
style="margin: 0 1em;"
- onclick="window.open(this.href); return false;"
+ onclick="window.open(this.href); return false;"
onkeypress="window.open(this.href); return false;">View Source</a>
</div>
</body>
diff --git a/tests/FunctionalTests/tickets/protected/pages/Ticket220.page b/tests/FunctionalTests/tickets/protected/pages/Ticket220.page
index e4c8fa95..395657ec 100755
--- a/tests/FunctionalTests/tickets/protected/pages/Ticket220.page
+++ b/tests/FunctionalTests/tickets/protected/pages/Ticket220.page
@@ -21,10 +21,10 @@
{
element = $("<%= $this->label1->ClientID %>");
if(element)
- element.innerHTML = "Label 1: "+inspect(ClientScriptInfo);
+ element.innerHTML = "Label 1: "+ClientScriptInfo.join('; ');
else
alert("failed");
});
</com:TClientScript>
-</com:TContent> \ No newline at end of file
+</com:TContent>
diff --git a/tests/FunctionalTests/tickets/protected/pages/Ticket290.page b/tests/FunctionalTests/tickets/protected/pages/Ticket290.page
index e9d40b92..3d4bf647 100755
--- a/tests/FunctionalTests/tickets/protected/pages/Ticket290.page
+++ b/tests/FunctionalTests/tickets/protected/pages/Ticket290.page
@@ -1,18 +1,17 @@
<com:TContent ID="Content">
- <h3>Needs manual testing</h3>
<com:TPanel ID="panel1" DefaultButton="button2"
Style="border:1px solid #ccc; padding:2em">
<com:TTextBox ID="textbox1" />
-
+
<com:TCustomValidator
ControlToValidate="textbox1"
OnServerValidate="customValidate"
ValidationGroup="group1"
ErrorMessage="required" />
-
- <com:TButton ID="button1" Text="Button 1"
+
+ <com:TButton ID="button1" Text="Button 1"
ValidationGroup="group1" OnClick="button_clicked" />
- <com:TButton ID="button2" Text="Button 2 (default)"
+ <com:TButton ID="button2" Text="Button 2 (default)"
ValidationGroup="group1" OnClick="button_clicked" />
<com:TLabel ID="label1" Text="Label 1" />
diff --git a/tests/FunctionalTests/tickets/protected/pages/Ticket586.page b/tests/FunctionalTests/tickets/protected/pages/Ticket586.page
index 29751cab..31bc7237 100755
--- a/tests/FunctionalTests/tickets/protected/pages/Ticket586.page
+++ b/tests/FunctionalTests/tickets/protected/pages/Ticket586.page
@@ -1,5 +1,4 @@
<com:TContent ID="Content">
-<h3>Needs manual testing</h3>
<com:TPanel DefaultButton="button2" Style="border:1px solid #ccc; padding:2em;">
<com:TTextBox ID="text1" />
diff --git a/tests/FunctionalTests/tickets/protected/pages/Ticket653/Layout.tpl b/tests/FunctionalTests/tickets/protected/pages/Ticket653/Layout.tpl
index bf2f8fab..b245a50d 100755
--- a/tests/FunctionalTests/tickets/protected/pages/Ticket653/Layout.tpl
+++ b/tests/FunctionalTests/tickets/protected/pages/Ticket653/Layout.tpl
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC
- "-//W3C//DTD XHTML 1.0 Strict//EN"
+<!DOCTYPE html PUBLIC
+ "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<com:THead Title="PRADO Functional Tests">
<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
@@ -30,7 +30,6 @@
<com:TContentPlaceHolder ID="Content" />
<hr style="margin-top: 2em" />
-<com:TJavascriptLogger />
</com:TForm>
<div class="w3c">
<a href="http://validator.w3.org/check?uri=referer">
@@ -38,7 +37,7 @@
</a>
<a href="?page=ViewSource&amp;path=<%= str_replace('.','/', $this->Request->ServiceParameter) %>.page"
style="margin: 0 1em;"
- onclick="window.open(this.href); return false;"
+ onclick="window.open(this.href); return false;"
onkeypress="window.open(this.href); return false;">View Source</a>
</div>
</body>
diff --git a/tests/FunctionalTests/tickets/protected/pages/Ticket659.php b/tests/FunctionalTests/tickets/protected/pages/Ticket659.php
index cb266fd7..85b87d55 100755
--- a/tests/FunctionalTests/tickets/protected/pages/Ticket659.php
+++ b/tests/FunctionalTests/tickets/protected/pages/Ticket659.php
@@ -1,12 +1,11 @@
<?php
/**
*
- *
+ *
* @author Christophe BOULAIN (Christophe.Boulain@ceram.fr)
* @copyright Copyright &copy; 2007, CERAM Sophia Antipolis
* @license url nameoflicense
- * @version $Id: Ticket659.php 2039 2007-06-28 08:41:57Z tof $
- *
+ *
*/
prado::using ('Application.pages.ExtendedToggleImageButton');
diff --git a/tests/FunctionalTests/tickets/protected/pages/Ticket703/Ticket703.php b/tests/FunctionalTests/tickets/protected/pages/Ticket703/Ticket703.php
index adf71837..f254cf6d 100755
--- a/tests/FunctionalTests/tickets/protected/pages/Ticket703/Ticket703.php
+++ b/tests/FunctionalTests/tickets/protected/pages/Ticket703/Ticket703.php
@@ -6,24 +6,24 @@ class Ticket703 extends TPage {
parent::onLoad($param);
if (!$this->isPostBack && !$this->isCallback)
{
- $this->refreshLog();
+ $this->clearLog(null, null);
}
}
-
+
public function refreshLog ()
{
$this->logBox->Text=file_get_contents(prado::getPathOfNameSpace('Ticket703.Logs.LogFile', '.txt'));
}
-
+
public function clearLog ($sender, $param)
{
$file=prado::getPathOfNameSpace('Ticket703.Logs.LogFile', '.txt');
file_put_contents($file, '');
$this->refreshLog();
}
-
+
public function addLog($sender,$param)
{
- prado::log($this->logMessage->getText(), TLogger::DEBUG, "Tickets");
+ prado::log($this->logMessage->getText(), TLogger::DEBUG, "Tickets");
}
} \ No newline at end of file
diff --git a/tests/FunctionalTests/tickets/protected/pages/Ticket719.page b/tests/FunctionalTests/tickets/protected/pages/Ticket719.page
index b36d2d66..3f2bc17b 100755
--- a/tests/FunctionalTests/tickets/protected/pages/Ticket719.page
+++ b/tests/FunctionalTests/tickets/protected/pages/Ticket719.page
@@ -1,5 +1,4 @@
<com:TContent id="Content">
-<h3>Needs manual testing</h3>
<style>
.autocomplete
{
@@ -45,7 +44,7 @@ ul.different
OnSuggest="suggestCountries" Separator=", "
OnSuggestionSelected="suggestion_selected"
ResultPanel.CssClass="autocomplete" CausesValidation="false" />
-
+
</p>
<p>
<com:TButton OnClick="validForm" Text="Validate Form" /><br/>
diff --git a/tests/FunctionalTests/tickets/protected/pages/ToggleTest.page b/tests/FunctionalTests/tickets/protected/pages/ToggleTest.page
index 0d633657..0d633657 100644..100755
--- a/tests/FunctionalTests/tickets/protected/pages/ToggleTest.page
+++ b/tests/FunctionalTests/tickets/protected/pages/ToggleTest.page
diff --git a/tests/FunctionalTests/tickets/protected/pages/ToggleTest.php b/tests/FunctionalTests/tickets/protected/pages/ToggleTest.php
index 73a2cc57..98492ffb 100644..100755
--- a/tests/FunctionalTests/tickets/protected/pages/ToggleTest.php
+++ b/tests/FunctionalTests/tickets/protected/pages/ToggleTest.php
@@ -1,12 +1,11 @@
<?php
/**
*
- *
+ *
* @author Christophe BOULAIN (Christophe.Boulain@ceram.fr)
* @copyright Copyright &copy; 2007, CERAM Sophia Antipolis
* @license url nameoflicense
- * @version $Id: ToggleTest.php 2039 2007-06-28 08:41:57Z tof $
- *
+ *
*/
prado::using ('Application.controls.ToggleImageButton');
@@ -15,5 +14,4 @@ class ToggleTest extends TPage {
public function clickToggleButton ($sender, $param) {
$this->lbl->Text=$sender->State;
}
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/FunctionalTests/tickets/tests/Issue120TestCase.php b/tests/FunctionalTests/tickets/tests/Issue120TestCase.php
index 20a4096b..0c6945ba 100755
--- a/tests/FunctionalTests/tickets/tests/Issue120TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Issue120TestCase.php
@@ -1,16 +1,16 @@
<?php
-class Issue120TestCase extends PradoGenericSeleniumTest
+class Issue120TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open('tickets/index.php?page=Issue120');
- $this->assertTextPresent('TActiveDropDownList PromptValue Test');
-
+ $this->url('tickets/index.php?page=Issue120');
+ $this->assertContains('TActiveDropDownList PromptValue Test', $this->source());
+
$this->assertSelectedIndex("ctl0_Content_ddl1", 0);
$this->assertSelectedValue("ctl0_Content_ddl1", 'PromptValue');
-
- $this->click("ctl0_Content_btn1");
+
+ $this->byId("ctl0_Content_btn1")->click();
$this->pause(800);
$this->assertSelectedIndex("ctl0_Content_ddl1", 0);
diff --git a/tests/FunctionalTests/tickets/tests/Issue216TestCase.php b/tests/FunctionalTests/tickets/tests/Issue216TestCase.php
index 375f90a7..d71db0e1 100755
--- a/tests/FunctionalTests/tickets/tests/Issue216TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Issue216TestCase.php
@@ -1,25 +1,25 @@
<?php
-class Issue216TestCase extends PradoGenericSeleniumTest
+class Issue216TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open('tickets/index.php?page=Issue216');
- $this->assertTextPresent('TTabPanel doesn\'t preserve active tab on callback request');
-
+ $this->url('tickets/index.php?page=Issue216');
+ $this->assertContains('TTabPanel doesn\'t preserve active tab on callback request', $this->source());
+
$this->assertVisible('ctl0_Content_tab1');
- $this->click("ctl0_Content_btn1");
+ $this->byId("ctl0_Content_btn1")->click();
$this->pause(800);
$this->assertText("ctl0_Content_result", "Tab ActiveIndex is : 0");
- $this->click("ctl0_Content_tab2_0");
+ $this->byId("ctl0_Content_tab2_0")->click();
$this->pause(800);
$this->assertVisible('ctl0_Content_tab2');
- $this->click("ctl0_Content_btn1");
+ $this->byId("ctl0_Content_btn1")->click();
$this->pause(800);
$this->assertText("ctl0_Content_result", "Tab ActiveIndex is : 1");
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket121TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket121TestCase.php
index 905a31a4..547ffb38 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket121TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket121TestCase.php
@@ -1,17 +1,17 @@
<?php
-class Ticket121TestCase extends PradoGenericSeleniumTest
+class Ticket121TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open('tickets/index.php?page=Ticket121');
+ $this->url('tickets/index.php?page=Ticket121');
$this->type("ctl0\$Content\$FooTextBox", "");
- $this->verifyNotVisible('ctl0_Content_ctl1');
- $this->click("//input[@type='image' and @id='ctl0_Content_ctl0']", "");
- $this->verifyVisible('ctl0_Content_ctl1');
+ $this->assertNotVisible('ctl0_Content_ctl1');
+ $this->byXPath("//input[@type='image' and @id='ctl0_Content_ctl0']")->click();
+ $this->assertVisible('ctl0_Content_ctl1');
$this->type("ctl0\$Content\$FooTextBox", "content");
- $this->clickAndWait("//input[@type='image' and @id='ctl0_Content_ctl0']", "");
- $this->verifyNotVisible('ctl0_Content_ctl1');
- $this->verifyTextPresent("clicked at", "");
+ $this->byXPath("//input[@type='image' and @id='ctl0_Content_ctl0']")->click();
+ $this->assertNotVisible('ctl0_Content_ctl1');
+ $this->assertContains("clicked at", $this->source());
}
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket163TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket163TestCase.php
index 1727ac40..20d9c645 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket163TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket163TestCase.php
@@ -1,12 +1,12 @@
<?php
-class Ticket163TestCase extends PradoGenericSeleniumTest
+class Ticket163TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open('tickets/index.php?page=Ticket163');
- $this->assertTextPresent('kr 100,00');
- $this->assertTextPresent('kr 0,00');
- $this->assertTextPresent('-kr 100,00');
+ $this->url('tickets/index.php?page=Ticket163');
+ $this->assertContains('kr 100,00', $this->source());
+ $this->assertContains('kr 0,00', $this->source());
+ $this->assertContains('-kr 100,00', $this->source());
}
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket169TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket169TestCase.php
index 9889ea50..47bb380b 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket169TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket169TestCase.php
@@ -1,12 +1,12 @@
<?php
-class Ticket169TestCase extends PradoGenericSeleniumTest
+class Ticket169TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open('tickets/index.php?page=Ticket169');
+ $this->url('tickets/index.php?page=Ticket169');
$this->assertNotVisible('ctl0_Content_validator1');
- $this->click('ctl0_Content_ctl0');
+ $this->byId('ctl0_Content_ctl0')->click();
$this->assertVisible('ctl0_Content_validator1');
}
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket191TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket191TestCase.php
index 88de08cc..c0bccaa9 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket191TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket191TestCase.php
@@ -1,14 +1,14 @@
<?php
-class Ticket191TestCase extends PradoGenericSeleniumTest
+class Ticket191TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open('tickets/index.php?page=Ticket191');
+ $this->url('tickets/index.php?page=Ticket191');
$this->type("ctl0\$Content\$TextBox2", "test");
- $this->clickAndWait("name=ctl0\$Content\$ctl0");
+ $this->byName("ctl0\$Content\$ctl0")->click();
$this->type("ctl0\$Content\$TextBox", "test");
- $this->clickAndWait("name=ctl0\$Content\$ctl1");
- $this->verifyNotVisible('ctl0_Content_ctl2');
+ $this->byName("ctl0\$Content\$ctl1")->click();
+ $this->assertNotVisible('ctl0_Content_ctl2');
}
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket205TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket205TestCase.php
index 86768354..35274e6f 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket205TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket205TestCase.php
@@ -1,21 +1,29 @@
<?php
-class Ticket205TestCase extends PradoGenericSeleniumTest
+class Ticket205TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = 'ctl0_Content_';
- $this->open("tickets/index.php?page=Ticket205");
- $this->assertTitle("Verifying Ticket 205");
- $this->assertNotVisible("{$base}validator1");
+ $this->url("tickets/index.php?page=Ticket205");
+ $this->assertEquals($this->title(), "Verifying Ticket 205");
+
+ $validator=$this->byId("{$base}validator1");
+ $this->assertFalse($validator->displayed());
$this->type("{$base}textbox1", "test");
- $this->click("{$base}button1");
- $this->assertAlert("error");
- $this->assertVisible("{$base}validator1");
+ $this->byId("{$base}button1")->click();
+
+ $this->assertEquals("error", $this->alertText());
+ $this->acceptAlert();
+
+ $this->assertTrue($validator->displayed());
+
+ // type() calls clear() that triggers a focus change and thus a second alert
+ $this->typeSpecial("{$base}textbox1", "Prado");
- $this->type("{$base}textbox1", "Prado");
- $this->clickAndWait("{$base}button1");
- $this->assertNotVisible("{$base}validator1");
+ $this->byId("{$base}button1")->click();
+ $validator=$this->byId("{$base}validator1");
+ $this->assertFalse($validator->displayed());
}
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket207TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket207TestCase.php
index cd618a5d..cc993192 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket207TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket207TestCase.php
@@ -1,25 +1,28 @@
<?php
-class Ticket207TestCase extends PradoGenericSeleniumTest
+class Ticket207TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = 'ctl0_Content_';
- $this->open('tickets/index.php?page=Ticket207');
- $this->assertTitle("Verifying Ticket 207");
+ $this->url('tickets/index.php?page=Ticket207');
+ $this->assertEquals($this->title(), "Verifying Ticket 207");
$this->assertNotVisible("{$base}validator1");
$this->assertNotVisible("{$base}validator2");
-
- $this->click("{$base}button1");
- $this->assertAlert('error on text1 fired');
+
+ $this->byId("{$base}button1")->click();
+
+ $this->assertEquals('error on text1 fired', $this->alertText());
+ $this->acceptAlert();
+
$this->assertVisible("{$base}validator1");
$this->assertVisible("{$base}validator2");
-
+
$this->type("{$base}text1", 'test');
$this->assertVisible("{$base}validator1");
$this->assertVisible("{$base}validator2");
- $this->click("{$base}button1");
+ $this->byId("{$base}button1")->click();
$this->assertNotVisible("{$base}validator1");
$this->assertVisible("{$base}validator2");
@@ -27,8 +30,11 @@ class Ticket207TestCase extends PradoGenericSeleniumTest
$this->assertNotVisible("{$base}validator1");
$this->assertVisible("{$base}validator2");
- $this->click("{$base}button1");
- $this->assertAlert('error on text1 fired');
+ $this->byId("{$base}button1")->click();
+
+ $this->assertEquals('error on text1 fired', $this->alertText());
+ $this->acceptAlert();
+
$this->assertVisible("{$base}validator1");
$this->assertVisible("{$base}validator2");
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket21TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket21TestCase.php
index 5e48ff2d..b9a0f0c9 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket21TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket21TestCase.php
@@ -1,14 +1,14 @@
<?php
-class Ticket21TestCase extends PradoGenericSeleniumTest
+class Ticket21TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open('tickets/index.php?page=Ticket21');
- $this->assertTitle("Verifying Ticket 21");
- $this->clickAndWait("ctl0_Content_button1");
- $this->verifyTextPresent("Radio button clicks: 1", "");
- $this->click("ctl0_Content_button1");
- $this->verifyTextPresent("Radio button clicks: 1", "");
+ $this->url('tickets/index.php?page=Ticket21');
+ $this->assertEquals($this->title(), "Verifying Ticket 21");
+ $this->byId("ctl0_Content_button1")->click();
+ $this->assertContains("Radio button clicks: 1", $this->source());
+ $this->byId("ctl0_Content_button1")->click();
+ $this->assertContains("Radio button clicks: 1", $this->source());
}
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket220TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket220TestCase.php
index da5e8c15..0ef67933 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket220TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket220TestCase.php
@@ -1,16 +1,16 @@
<?php
-class Ticket220TestCase extends PradoGenericSeleniumTest
+class Ticket220TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base="ctl0_Content_";
- $this->open('tickets/index.php?page=Ticket220');
- $this->assertTextPresent('ClientScript Test');
+ $this->url('tickets/index.php?page=Ticket220');
+ $this->assertContains('ClientScript Test', $this->source());
$this->assertText("{$base}label1", "Label 1");
- $this->click("button1");
- $this->assertText("{$base}label1", 'exact:Label 1: ["ok", "ok 3?", "ok 2!"]');
+ $this->byId("button1")->click();
+ $this->assertText("{$base}label1", 'Label 1: ok; ok 3?; ok 2!');
$this->assertAlertNotPresent();
}
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket225TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket225TestCase.php
index 3680eea1..74ad6505 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket225TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket225TestCase.php
@@ -1,22 +1,22 @@
<?php
-class Ticket225TestCase extends PradoGenericSeleniumTest
+class Ticket225TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base="ctl0_Content_";
- $this->open('tickets/index.php?page=Ticket225');
- $this->assertTextPresent('RadioButton Group Tests');
+ $this->url('tickets/index.php?page=Ticket225');
+ $this->assertContains('RadioButton Group Tests', $this->source());
$this->assertText("{$base}label1", "Label 1");
$this->assertNotVisible("{$base}validator1");
- $this->click("{$base}button4");
+ $this->byId("{$base}button4")->click();
$this->assertVisible("{$base}validator1");
- $this->click("{$base}button2");
- $this->clickAndWait("{$base}button4");
+ $this->byId("{$base}button2")->click();
+ $this->byId("{$base}button4")->click();
- $this->assertText("{$base}label1", 'exact:ctl0$Content$button1 ctl0$Content$button2 ctl0$Content$button3');
+ $this->assertText("{$base}label1", 'ctl0$Content$button1 ctl0$Content$button2 ctl0$Content$button3');
$this->assertNotVisible("{$base}validator1");
}
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket227TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket227TestCase.php
index 1f1c0fb9..3defa014 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket227TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket227TestCase.php
@@ -1,10 +1,10 @@
<?php
-class Ticket227TestCase extends PradoGenericSeleniumTest
+class Ticket227TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open('tickets/index.php?page=Ticket227');
- $this->assertTitle('Verifying Ticket 227');
+ $this->url('tickets/index.php?page=Ticket227');
+ $this->assertEquals($this->title(), 'Verifying Ticket 227');
}
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket239TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket239TestCase.php
index 57251d23..e5595a13 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket239TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket239TestCase.php
@@ -1,53 +1,53 @@
<?php
-class Ticket239TestCase extends PradoGenericSeleniumTest
+class Ticket239TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open('tickets/index.php?page=Ticket239');
+ $this->url('tickets/index.php?page=Ticket239');
// view1
- $this->verifyTextPresent('view1 is activated','');
- $this->verifyTextNotPresent('view1 is deactivated','');
- $this->verifyTextNotPresent('view2 is activated','');
- $this->verifyTextNotPresent('view2 is deactivated','');
- $this->verifyTextNotPresent('view3 is activated','');
- $this->verifyTextNotPresent('view3 is deactivated','');
+ $this->assertContains('view1 is activated', $this->source());
+ $this->assertNotContains('view1 is deactivated', $this->source());
+ $this->assertNotContains('view2 is activated', $this->source());
+ $this->assertNotContains('view2 is deactivated', $this->source());
+ $this->assertNotContains('view3 is activated', $this->source());
+ $this->assertNotContains('view3 is deactivated', $this->source());
// goto view2
- $this->clickAndWait('name=ctl0$Content$ctl1');
- $this->verifyTextNotPresent('view1 is activated','');
- $this->verifyTextPresent('view1 is deactivated','');
- $this->verifyTextPresent('view2 is activated','');
- $this->verifyTextNotPresent('view2 is deactivated','');
- $this->verifyTextNotPresent('view3 is activated','');
- $this->verifyTextNotPresent('view3 is deactivated','');
+ $this->byName('ctl0$Content$ctl1')->click();
+ $this->assertNotContains('view1 is activated', $this->source());
+ $this->assertContains('view1 is deactivated', $this->source());
+ $this->assertContains('view2 is activated', $this->source());
+ $this->assertNotContains('view2 is deactivated', $this->source());
+ $this->assertNotContains('view3 is activated', $this->source());
+ $this->assertNotContains('view3 is deactivated', $this->source());
// goto view3
- $this->clickAndWait('name=ctl0$Content$ctl3');
- $this->verifyTextNotPresent('view1 is activated','');
- $this->verifyTextNotPresent('view1 is deactivated','');
- $this->verifyTextNotPresent('view2 is activated','');
- $this->verifyTextPresent('view2 is deactivated','');
- $this->verifyTextPresent('view3 is activated','');
- $this->verifyTextNotPresent('view3 is deactivated','');
+ $this->byName('ctl0$Content$ctl3')->click();
+ $this->assertNotContains('view1 is activated', $this->source());
+ $this->assertNotContains('view1 is deactivated', $this->source());
+ $this->assertNotContains('view2 is activated', $this->source());
+ $this->assertContains('view2 is deactivated', $this->source());
+ $this->assertContains('view3 is activated', $this->source());
+ $this->assertNotContains('view3 is deactivated', $this->source());
// goto view2
- $this->clickAndWait('name=ctl0$Content$ctl4');
- $this->verifyTextNotPresent('view1 is activated','');
- $this->verifyTextNotPresent('view1 is deactivated','');
- $this->verifyTextPresent('view2 is activated','');
- $this->verifyTextNotPresent('view2 is deactivated','');
- $this->verifyTextNotPresent('view3 is activated','');
- $this->verifyTextPresent('view3 is deactivated','');
+ $this->byName('ctl0$Content$ctl4')->click();
+ $this->assertNotContains('view1 is activated', $this->source());
+ $this->assertNotContains('view1 is deactivated', $this->source());
+ $this->assertContains('view2 is activated', $this->source());
+ $this->assertNotContains('view2 is deactivated', $this->source());
+ $this->assertNotContains('view3 is activated', $this->source());
+ $this->assertContains('view3 is deactivated', $this->source());
// goto view1
- $this->clickAndWait('name=ctl0$Content$ctl2');
- $this->verifyTextPresent('view1 is activated','');
- $this->verifyTextNotPresent('view1 is deactivated','');
- $this->verifyTextNotPresent('view2 is activated','');
- $this->verifyTextPresent('view2 is deactivated','');
- $this->verifyTextNotPresent('view3 is activated','');
- $this->verifyTextNotPresent('view3 is deactivated','');
+ $this->byName('ctl0$Content$ctl2')->click();
+ $this->assertContains('view1 is activated', $this->source());
+ $this->assertNotContains('view1 is deactivated', $this->source());
+ $this->assertNotContains('view2 is activated', $this->source());
+ $this->assertContains('view2 is deactivated', $this->source());
+ $this->assertNotContains('view3 is activated', $this->source());
+ $this->assertNotContains('view3 is deactivated', $this->source());
}
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket246TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket246TestCase.php
index bedd6e2c..7c4fe364 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket246TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket246TestCase.php
@@ -1,10 +1,10 @@
<?php
-class Ticket246TestCase extends PradoGenericSeleniumTest
+class Ticket246TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open('tickets/index.php?page=Ticket246');
- $this->assertTitle('Verifying Ticket 246');
+ $this->url('tickets/index.php?page=Ticket246');
+ $this->assertEquals($this->title(), 'Verifying Ticket 246');
}
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket274TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket274TestCase.php
index b2b17de7..ebb60ca9 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket274TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket274TestCase.php
@@ -1,21 +1,21 @@
<?php
-class Ticket274TestCase extends PradoGenericSeleniumTest
+class Ticket274TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = 'ctl0_Content_';
- $this->open('tickets/index.php?page=Ticket274');
- $this->assertTitle('Verifying Ticket 274');
+ $this->url('tickets/index.php?page=Ticket274');
+ $this->assertEquals($this->title(), 'Verifying Ticket 274');
$this->assertNotVisible($base.'validator1');
$this->assertNotVisible($base.'validator2');
- $this->clickAndWait($base.'button1');
+ $this->byId($base.'button1')->click();
$this->assertVisible($base.'validator1');
$this->assertNotVisible($base.'validator2');
$this->type($base.'MyDate', 'asd');
- $this->clickAndWait($base.'button1');
+ $this->byId($base.'button1')->click();
$this->assertNotVisible($base.'validator1');
$this->assertVisible($base.'validator2');
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket278TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket278TestCase.php
index 4bfffede..ca11f626 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket278TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket278TestCase.php
@@ -1,28 +1,28 @@
<?php
-class Ticket278TestCase extends PradoGenericSeleniumTest
+class Ticket278TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = 'ctl0_Content_';
- $this->open('tickets/index.php?page=Ticket278');
- $this->assertTitle('Verifying Ticket 278');
+ $this->url('tickets/index.php?page=Ticket278');
+ $this->assertEquals($this->title(), 'Verifying Ticket 278');
$this->assertNotVisible($base.'validator1');
$this->assertNotVisible($base.'validator2');
$this->assertNotVisible($base.'panel1');
- $this->click($base.'button1');
+ $this->byId($base.'button1')->click();
$this->assertVisible($base.'validator1');
$this->assertNotVisible($base.'validator2');
$this->type($base.'text1', 'asd');
- $this->clickAndWait($base.'button1');
+ $this->byId($base.'button1')->click();
$this->assertNotVisible($base.'validator1');
$this->assertNotVisible($base.'validator2');
$this->assertNotVisible($base.'panel1');
- $this->click($base.'check1');
- $this->click($base.'button1');
+ $this->byId($base.'check1')->click();
+ $this->byId($base.'button1')->click();
$this->assertNotVisible($base.'validator1');
$this->assertVisible($base.'validator2');
$this->assertVisible($base.'panel1');
@@ -30,21 +30,21 @@ class Ticket278TestCase extends PradoGenericSeleniumTest
$this->type($base.'text1', '');
$this->type($base.'text2', 'asd');
- $this->click($base.'button1');
+ $this->byId($base.'button1')->click();
$this->assertVisible($base.'validator1');
$this->assertNotVisible($base.'validator2');
$this->assertVisible($base.'panel1');
$this->type($base.'text1', 'asd');
- $this->clickAndWait($base.'button1');
+ $this->byId($base.'button1')->click();
$this->assertNotVisible($base.'validator1');
$this->assertNotVisible($base.'validator2');
$this->assertVisible($base.'panel1');
$this->type($base.'text1', '');
$this->type($base.'text2', '');
- $this->click($base.'button1');
+ $this->byId($base.'button1')->click();
$this->assertVisible($base.'validator1');
$this->assertVisible($base.'validator2');
$this->assertVisible($base.'panel1');
diff --git a/tests/FunctionalTests/tickets/tests/Ticket27TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket27TestCase.php
index 7defd7ae..bc478895 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket27TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket27TestCase.php
@@ -1,16 +1,16 @@
<?php
-class Ticket27TestCase extends PradoGenericSeleniumTest
+class Ticket27TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open('tickets/index.php?page=Ticket27');
- $this->verifyTitle("Verifying Ticket 27", "");
- $this->click("//input[@value='Agree']", "");
- $this->assertVisible("ctl0_Content_validator1", "");
+ $this->url('tickets/index.php?page=Ticket27');
+ $this->assertEquals("Verifying Ticket 27", $this->title());
+ $this->byXPath("//input[@value='Agree']")->click();
+ $this->assertVisible("ctl0_Content_validator1");
$this->type("ctl0_Content_TextBox", "122");
- $this->assertNotVisible("ctl0_Content_validator1", "");
- $this->clickAndWait("//input[@value='Disagree']", "");
- $this->assertNotVisible("ctl0_Content_validator1", "");
+ $this->assertNotVisible("ctl0_Content_validator1");
+ $this->byXPath("//input[@value='Disagree']")->click();
+ $this->assertNotVisible("ctl0_Content_validator1");
}
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket284TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket284TestCase.php
index d28ea771..b4a32c19 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket284TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket284TestCase.php
@@ -1,12 +1,12 @@
<?php
-class Ticket284TestCase extends PradoGenericSeleniumTest
+class Ticket284TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open('tickets/index.php?page=Ticket284');
- $this->assertTextPresent('Verifying Ticket 284');
- $this->click('ctl0_Content_ctl1');
-
+ $this->url('tickets/index.php?page=Ticket284');
+ $this->assertContains('Verifying Ticket 284', $this->source());
+ $this->byId('ctl0_Content_ctl1')->click();
+
}
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket285TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket285TestCase.php
index 8b996964..04a451df 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket285TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket285TestCase.php
@@ -1,11 +1,11 @@
<?php
-class Ticket285TestCase extends PradoGenericSeleniumTest
+class Ticket285TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open('tickets/index.php?page=Ticket285');
- $this->assertTextPresent('350.00');
- $this->assertTextPresent('349.99');
+ $this->url('tickets/index.php?page=Ticket285');
+ $this->assertContains('350.00', $this->source());
+ $this->assertContains('349.99', $this->source());
}
} \ No newline at end of file
diff --git a/tests/FunctionalTests/tickets/tests/Ticket28TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket28TestCase.php
index 1f64b3f9..92bf1eb9 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket28TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket28TestCase.php
@@ -1,13 +1,13 @@
<?php
-class Ticket28TestCase extends PradoGenericSeleniumTest
+class Ticket28TestCase extends PradoGenericSelenium2Test
{
-
+
function test()
{
- $this->open('tickets/index.php?page=Ticket28');
- $this->assertTextPresent('Label 1');
- $this->clickAndWait('link=Click Me');
- $this->assertTextPresent('Link Button 1 Clicked!');
+ $this->url('tickets/index.php?page=Ticket28');
+ $this->assertContains('Label 1', $this->source());
+ $this->byLinkText("Click Me")->click();
+ $this->assertContains('Link Button 1 Clicked!', $this->source());
}
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket290TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket290TestCase.php
index f541d63d..8116e753 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket290TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket290TestCase.php
@@ -1,28 +1,27 @@
<?php
/**
-*
+*
*/
-class Ticket290TestCase extends PradoGenericSeleniumTest
+class Ticket290TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = 'ctl0_Content_';
- $this->open('tickets/index.php?page=Ticket290');
- $this->assertTitle("Verifying Ticket 290");
-
+ $this->url('tickets/index.php?page=Ticket290');
+ $this->assertEquals($this->title(), "Verifying Ticket 290");
+
$this->assertText("{$base}label1", "Label 1");
$this->assertText("{$base}label2", "Label 2");
$this->type("{$base}textbox1", "test");
- // bad hack to simulate enter key..
- $this->submit('ctl0_ctl1');
+
+ $this->byId("{$base}textbox1")->click();
+ $this->keys(PHPUnit_Extensions_Selenium2TestCase_Keys::ENTER);
$this->pause(800);
-
- $this->assertText("{$base}label1", "Doing Validation");
- // this can't work properly without manual testing
- //$this->assertText("{$base}label2", "Button 2 (default) Clicked!");
+ $this->assertText("{$base}label1", "Doing Validation");
+ $this->assertText("{$base}label2", "Button 2 (default) Clicked!");
}
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket433TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket433TestCase.php
index b8462988..aae4ee21 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket433TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket433TestCase.php
@@ -1,15 +1,15 @@
<?php
-class Ticket433TestCase extends PradoGenericSeleniumTest
+class Ticket433TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = 'ctl0_Content_';
- $this->open('tickets/index.php?page=Ticket433');
- $this->assertTitle("Verifying Ticket 433");
+ $this->url('tickets/index.php?page=Ticket433');
+ $this->assertEquals($this->title(), "Verifying Ticket 433");
$this->assertText("{$base}VoteClick", "BEFORE click");
- $this->click("{$base}VoteClick");
+ $this->byId("{$base}VoteClick")->click();
$this->pause(800);
$this->assertText("{$base}VoteClick", "AFTER click CALLBACK DONE");
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket439TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket439TestCase.php
index c393de91..f586a6c9 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket439TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket439TestCase.php
@@ -1,15 +1,14 @@
<?php
-class Ticket439TestCase extends PradoGenericSeleniumTest
+class Ticket439TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = 'ctl0_Content_';
- $this->open('tickets/index.php?page=Ticket439');
- $this->assertTitle("Verifying Ticket 439");
- $this->click("{$base}button1");
- $this->waitForPageToLoad(3000);
+ $this->url('tickets/index.php?page=Ticket439');
+ $this->assertEquals($this->title(), "Verifying Ticket 439");
+ $this->byId("{$base}button1")->click();
$this->pause(800);
- $this->assertTitle("Verifying Home");
+ $this->assertEquals($this->title(), "Verifying Home");
}
} \ No newline at end of file
diff --git a/tests/FunctionalTests/tickets/tests/Ticket463TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket463TestCase.php
index 34ffb8fd..14f00970 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket463TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket463TestCase.php
@@ -1,11 +1,11 @@
<?php
-class Ticket463TestCase extends PradoGenericSeleniumTest
+class Ticket463TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open('tickets/index.php?page=Ticket463');
- $this->verifyTitle("Verifying Ticket 463", "");
- $this->assertTextPresent('May 1, 2005 12:00:00 AM');
+ $this->url('tickets/index.php?page=Ticket463');
+ $this->assertEquals("Verifying Ticket 463", $this->title());
+ $this->assertContains('May 1, 2005 12:00:00 AM', $this->source());
}
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket470TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket470TestCase.php
index 4a2804ea..a3e25e85 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket470TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket470TestCase.php
@@ -1,31 +1,31 @@
<?php
-class Ticket470TestCase extends PradoGenericSeleniumTest
+class Ticket470TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = 'ctl0_Content_';
- $this->open('tickets/index.php?page=Ticket470');
- $this->verifyTitle("Verifying Ticket 470");
+ $this->url('tickets/index.php?page=Ticket470');
+ $this->assertEquals("Verifying Ticket 470", $this->title());
$this->assertText("{$base}counter", "0");
$this->assertText("{$base}Results", "");
$this->assertNotVisible("{$base}validator1");
- $this->click("{$base}button1");
+ $this->byId("{$base}button1")->click();
$this->pause(800);
$this->assertText("{$base}counter", "0");
$this->assertText("{$base}Results", "");
$this->assertVisible("{$base}validator1");
$this->type("{$base}TextBox", "hello");
- $this->click("{$base}button1");
+ $this->byId("{$base}button1")->click();
$this->pause(800);
$this->assertText("{$base}counter", "0");
$this->assertText("{$base}Results", "OK!!!");
$this->assertNotVisible("{$base}validator1");
//reload
- $this->click("{$base}reloadButton");
+ $this->byId("{$base}reloadButton")->click();
$this->pause(800);
$this->assertValue("{$base}TextBox", "hello");
$this->assertText("{$base}counter", "1");
@@ -33,14 +33,14 @@ class Ticket470TestCase extends PradoGenericSeleniumTest
$this->assertNotVisible("{$base}validator1");
$this->type("{$base}TextBox", "");
- $this->click("{$base}button1");
+ $this->byId("{$base}button1")->click();
$this->pause(800);
$this->assertText("{$base}counter", "1");
$this->assertText("{$base}Results", "");
$this->assertVisible("{$base}validator1");
-
+
$this->type("{$base}TextBox", "test");
- $this->click("{$base}button1");
+ $this->byId("{$base}button1")->click();
$this->pause(800);
$this->assertText("{$base}counter", "1");
$this->assertText("{$base}Results", "OK!!!");
diff --git a/tests/FunctionalTests/tickets/tests/Ticket477TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket477TestCase.php
index 16ebc56e..7f9bc58c 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket477TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket477TestCase.php
@@ -1,21 +1,21 @@
<?php
-class Ticket477TestCase extends PradoGenericSeleniumTest
+class Ticket477TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = 'ctl0_Content_';
- $this->open('tickets/index.php?page=Ticket477');
- $this->assertTitle("Verifying Ticket 477");
+ $this->url('tickets/index.php?page=Ticket477');
+ $this->assertEquals($this->title(), "Verifying Ticket 477");
$this->assertNotVisible("{$base}validator1");
$this->assertNotVisible("{$base}validator2");
- $this->clickAndWait("{$base}list1_c1");
+ $this->byId("{$base}list1_c1")->click();
$this->assertVisible("{$base}validator1");
$this->assertNotVisible("{$base}validator2");
- $this->clickAndWait("{$base}list2_c1");
+ $this->byId("{$base}list2_c1")->click();
$this->assertNotVisible("{$base}validator1");
$this->assertVisible("{$base}validator2");
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket488TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket488TestCase.php
index c3b2f43f..e4b72aaf 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket488TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket488TestCase.php
@@ -1,40 +1,41 @@
<?php
-class Ticket488TestCase extends PradoGenericSeleniumTest
+class Ticket488TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open('active-controls/index.php?page=CustomValidatorByPass');
- $this->assertTextPresent('Custom Login');
+ $base='ctl0_Content_';
+ $this->url('active-controls/index.php?page=CustomValidatorByPass');
+ $this->assertContains('Custom Login', $this->source());
$this->assertNotVisible('loginBox');
- $this->click("showLogin");
+ $this->byId("showLogin")->click();
$this->assertVisible("loginBox");
- $this->assertNotVisible("validator1");
- $this->assertNotVisible("validator2");
+ $this->assertNotVisible("{$base}validator1");
+ $this->assertNotVisible("{$base}validator2");
- $this->click("checkLogin");
+ $this->byId("{$base}checkLogin")->click();
$this->pause(800);
- $this->assertVisible("validator1");
- $this->assertNotVisible("validator2");
+ $this->assertVisible("{$base}validator1");
+ $this->assertNotVisible("{$base}validator2");
- $this->type('Username', 'tea');
- $this->type('Password', 'mmama');
+ $this->type("{$base}Username", 'tea');
+ $this->type("{$base}Password", 'mmama');
- $this->click("checkLogin");
+ $this->byId("{$base}checkLogin")->click();
$this->pause(800);
- $this->assertNotVisible("validator1");
- $this->assertVisible("validator2");
+ $this->assertNotVisible("{$base}validator1");
+ $this->assertVisible("{$base}validator2");
- $this->type('Password', 'test');
- $this->click("checkLogin");
+ $this->type("{$base}Password", 'test');
+ $this->byId("{$base}checkLogin")->click();
$this->pause(800);
- $this->assertNotVisible("validator1");
- $this->assertNotVisible("validator2");
+ $this->assertNotVisible("{$base}validator1");
+ $this->assertNotVisible("{$base}validator2");
}
function test_more()
{
- $this->open('tickets/index.php?page=Ticket488');
+ $this->url('tickets/index.php?page=Ticket488');
//add test assertions here.
}
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket504TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket504TestCase.php
index 63ecfe2f..f3bdd0a9 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket504TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket504TestCase.php
@@ -1,12 +1,12 @@
<?php
-class Ticket504TestCase extends PradoGenericSeleniumTest
+class Ticket504TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = 'ctl0_Content_';
- $this->open('tickets/index.php?page=Ticket504');
- $this->verifyTitle("Verifying Ticket 504", "");
+ $this->url('tickets/index.php?page=Ticket504');
+ $this->assertEquals("Verifying Ticket 504", $this->title());
$this->assertText("status", "");
@@ -15,7 +15,7 @@ class Ticket504TestCase extends PradoGenericSeleniumTest
$this->assertVisible("{$base}panelC");
$this->assertVisible("{$base}panelD");
- $this->click("{$base}linka");
+ $this->byId("{$base}linka")->click();
$this->pause(800);
$this->assertVisible("{$base}panelA");
$this->assertNotVisible("{$base}panelB");
@@ -23,7 +23,7 @@ class Ticket504TestCase extends PradoGenericSeleniumTest
$this->assertNotVisible("{$base}panelD");
$this->assertText("status", "panelA updated");
- $this->click("{$base}linkb");
+ $this->byId("{$base}linkb")->click();
$this->pause(800);
$this->assertNotVisible("{$base}panelA");
$this->assertVisible("{$base}panelB");
@@ -31,7 +31,7 @@ class Ticket504TestCase extends PradoGenericSeleniumTest
$this->assertNotVisible("{$base}panelD");
$this->assertText("status", "panelB updated");
- $this->click("{$base}linkc");
+ $this->byId("{$base}linkc")->click();
$this->pause(800);
$this->assertNotVisible("{$base}panelA");
$this->assertNotVisible("{$base}panelB");
@@ -39,7 +39,7 @@ class Ticket504TestCase extends PradoGenericSeleniumTest
$this->assertNotVisible("{$base}panelD");
$this->assertText("status", "panelC updated");
- $this->click("{$base}linkd");
+ $this->byId("{$base}linkd")->click();
$this->pause(800);
$this->assertNotVisible("{$base}panelA");
$this->assertNotVisible("{$base}panelB");
diff --git a/tests/FunctionalTests/tickets/tests/Ticket507TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket507TestCase.php
index 19d54e9b..68c94b03 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket507TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket507TestCase.php
@@ -1,16 +1,16 @@
<?php
-class Ticket507TestCase extends PradoGenericSeleniumTest
+class Ticket507TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base='ctl0_Content_';
- $this->open('tickets/index.php?page=Ticket507');
- $this->verifyTitle("Verifying Ticket 507", "");
+ $this->url('tickets/index.php?page=Ticket507');
+ $this->assertEquals("Verifying Ticket 507", $this->title());
$this->assertText("{$base}label1", "Label 1");
- $this->click("{$base}button1");
+ $this->byId("{$base}button1")->click();
$this->pause(800);
$this->select("{$base}list1", "item 1");
diff --git a/tests/FunctionalTests/tickets/tests/Ticket521TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket521TestCase.php
index 2df88612..71457b58 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket521TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket521TestCase.php
@@ -1,15 +1,15 @@
<?php
-class Ticket521TestCase extends PradoGenericSeleniumTest
+class Ticket521TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = 'ctl0_Content_';
- $this->open("tickets/index.php?page=Ticket521");
- $this->assertTitle("Verifying Ticket 521");
+ $this->url("tickets/index.php?page=Ticket521");
+ $this->assertEquals($this->title(), "Verifying Ticket 521");
$this->assertText("{$base}label1", "Label 1");
- $this->click("{$base}button1");
+ $this->byId("{$base}button1")->click();
$this->pause(1200);
$this->assertText("{$base}label1", "Button 1 was clicked on callback");
diff --git a/tests/FunctionalTests/tickets/tests/Ticket526TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket526TestCase.php
index 7476db69..c8659002 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket526TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket526TestCase.php
@@ -1,16 +1,16 @@
<?php
-class Ticket526TestCase extends PradoGenericSeleniumTest
+class Ticket526TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base="ctl0_Content_";
- $this->open('tickets/index.php?page=Ticket526');
- $this->verifyTitle("Verifying Ticket 526", "");
+ $this->url('tickets/index.php?page=Ticket526');
+ $this->assertEquals("Verifying Ticket 526", $this->title());
$this->assertElementNotPresent("{$base}dpbutton");
- $this->click("{$base}btn");
+ $this->byId("{$base}btn")->click();
$this->pause(800);
$this->assertElementPresent("{$base}dpbutton");
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket528TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket528TestCase.php
index 3903000a..7fb24d04 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket528TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket528TestCase.php
@@ -1,12 +1,12 @@
<?php
-class Ticket528TestCase extends PradoGenericSeleniumTest
+class Ticket528TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = 'ctl0_Content_';
- $this->open('tickets/index.php?page=Ticket528');
- $this->assertTitle("Verifying Ticket 528");
+ $this->url('tickets/index.php?page=Ticket528');
+ $this->assertEquals($this->title(), "Verifying Ticket 528");
$this->select("{$base}DDropTurno", "Tarde");
$this->pause(800);
diff --git a/tests/FunctionalTests/tickets/tests/Ticket535TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket535TestCase.php
index 26f5a7d7..eebd2336 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket535TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket535TestCase.php
@@ -1,34 +1,34 @@
<?php
-class Ticket535TestCase extends PradoGenericSeleniumTest
+class Ticket535TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = 'ctl0_Content_';
- $this->open('tickets/index.php?page=Ticket535');
- $this->assertTitle("Verifying Ticket 535");
+ $this->url('tickets/index.php?page=Ticket535');
+ $this->assertEquals($this->title(), "Verifying Ticket 535");
$this->assertText("{$base}label1", "Label 1");
- $this->click("{$base}radio1");
- $this->click("{$base}button1");
+ $this->byId("{$base}radio1")->click();
+ $this->byId("{$base}button1")->click();
$this->pause(800);
- $this->assertText("{$base}label1", 'exact:radio1 checked:{1} radio2 checked:{}');
+ $this->assertText("{$base}label1", 'radio1 checked:{1} radio2 checked:{}');
- $this->click("{$base}radio2");
- $this->click("{$base}button1");
+ $this->byId("{$base}radio2")->click();
+ $this->byId("{$base}button1")->click();
$this->pause(800);
- $this->assertText("{$base}label1", 'exact:radio1 checked:{1} radio2 checked:{1}');
+ $this->assertText("{$base}label1", 'radio1 checked:{1} radio2 checked:{1}');
- $this->click("{$base}bad_radio1");
- $this->click("{$base}button2");
+ $this->byId("{$base}bad_radio1")->click();
+ $this->byId("{$base}button2")->click();
$this->pause(800);
- $this->assertText("{$base}label1", 'exact:bad_radio1 checked:{1} bad_radio2 checked:{}');
+ $this->assertText("{$base}label1", 'bad_radio1 checked:{1} bad_radio2 checked:{}');
- $this->click("{$base}bad_radio2");
- $this->click("{$base}button2");
+ $this->byId("{$base}bad_radio2")->click();
+ $this->byId("{$base}button2")->click();
$this->pause(800);
- $this->assertText("{$base}label1", 'exact:bad_radio1 checked:{} bad_radio2 checked:{1}');
+ $this->assertText("{$base}label1", 'bad_radio1 checked:{} bad_radio2 checked:{1}');
}
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket538TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket538TestCase.php
index 16b0f863..2970837f 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket538TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket538TestCase.php
@@ -1,17 +1,17 @@
<?php
-class Ticket538TestCase extends PradoGenericSeleniumTest
+class Ticket538TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base="ctl0_Content_";
- $this->open('tickets/index.php?page=Ticket538');
- $this->verifyTitle("Verifying Ticket 538", "");
+ $this->url('tickets/index.php?page=Ticket538');
+ $this->assertEquals("Verifying Ticket 538", $this->title());
$this->assertText("{$base}ALLog", 'waiting for response...');
$this->select("{$base}DataViewer", "empty :(");
- $this->click("{$base}selectBtn");
+ $this->byId("{$base}selectBtn")->click();
$this->pause(800);
$this->assertText("{$base}ALLog", '0,');
@@ -21,7 +21,7 @@ class Ticket538TestCase extends PradoGenericSeleniumTest
$this->select("{$base}DataViewer", "G1: Steven=>10");
$this->addSelection("{$base}DataViewer", "G2: Kevin=>65");
- $this->click("{$base}selectBtn");
+ $this->byId("{$base}selectBtn")->click();
$this->pause(800);
$this->assertText("{$base}ALLog", '4- "test1", 10- "test2",');
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket54TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket54TestCase.php
index f8e5a469..cf1433b6 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket54TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket54TestCase.php
@@ -1,10 +1,10 @@
<?php
-class Ticket54TestCase extends PradoGenericSeleniumTest
+class Ticket54TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open('tickets/index.php?page=Ticket54');
- $this->verifyTextPresent("|A|a|B|b|C|", "");
+ $this->url('tickets/index.php?page=Ticket54');
+ $this->assertContains("|A|a|B|b|C|", $this->source());
}
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket573TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket573TestCase.php
index 996d72e9..cccdbaf3 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket573TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket573TestCase.php
@@ -1,11 +1,11 @@
<?php
-class Ticket573TestCase extends PradoGenericSeleniumTest
+class Ticket573TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open('tickets/index.php?page=Ticket573');
- $this->verifyTitle("Verifying Ticket 573", "");
+ $this->url('tickets/index.php?page=Ticket573');
+ $this->assertEquals("Verifying Ticket 573", $this->title());
$this->assertText('test1', '10.00');
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket578TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket578TestCase.php
index 47330326..948d8642 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket578TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket578TestCase.php
@@ -1,22 +1,27 @@
<?php
-class Ticket578TestCase extends PradoGenericSeleniumTest
+class Ticket578TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = 'ctl0_Content_';
- $this->open('tickets/index.php?page=Ticket578');
- $this->verifyTitle("Verifying Ticket 578", "");
+ $this->url('tickets/index.php?page=Ticket578');
+ $this->assertEquals("Verifying Ticket 578", $this->title());
$this->assertText("{$base}label1", "Label 1");
- $this->click("{$base}button1", "");
+ $this->byId("{$base}button1")->click();
$this->pause(800);
- $this->assertText("{$base}label1", "Button 1 was clicked : ");
+ $this->assertText("{$base}label1", "Button 1 was clicked :");
$text="helloworld";
- $this->runScript("tinyMCE.get('{$base}text1').setContent('{$text}')");
- $this->click("{$base}button1", "");
+
+ $this->execute(array(
+ 'script' => "tinyMCE.get('{$base}text1').setContent('{$text}')",
+ 'args' => array()
+ ));
+
+ $this->byId("{$base}button1")->click();
$this->pause(800);
- $this->assertText("{$base}label1", "exact:Button 1 was clicked : <p>{$text}</p>");
+ $this->assertText("{$base}label1", "Button 1 was clicked : <p>{$text}</p>");
}
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket585TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket585TestCase.php
index 8b2d36b3..58b42c33 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket585TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket585TestCase.php
@@ -1,23 +1,23 @@
<?php
-class Ticket585TestCase extends PradoGenericSeleniumTest
+class Ticket585TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = 'ctl0_Content_';
- $this->open('tickets/index.php?page=Ticket585');
- $this->verifyTitle("Verifying Ticket 585", "");
+ $this->url('tickets/index.php?page=Ticket585');
+ $this->assertEquals("Verifying Ticket 585", $this->title());
$this->assertText("error", "");
$this->assertNotVisible("{$base}validator1");
- $this->click("{$base}button1");
+ $this->byId("{$base}button1")->click();
$this->pause(800);
$this->assertText("error", "Success");
$this->assertNotVisible("{$base}validator1");
$this->type("{$base}test", "15-03-2007");
- $this->click("{$base}button1");
+ $this->byId("{$base}button1")->click();
$this->pause(800);
$this->assertText("error", "Error");
$this->assertVisible("{$base}validator1");
diff --git a/tests/FunctionalTests/tickets/tests/Ticket586TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket586TestCase.php
index 612c086a..5fd47f86 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket586TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket586TestCase.php
@@ -1,15 +1,15 @@
<?php
-class Ticket586TestCase extends PradoGenericSeleniumTest
+class Ticket586TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = 'ctl0_Content_';
- $this->open('tickets/index.php?page=Ticket586');
- $this->verifyTitle("Verifying Ticket 586", "");
+ $this->url('tickets/index.php?page=Ticket586');
+ $this->assertEquals("Verifying Ticket 586", $this->title());
$this->assertText("{$base}label1", "Status");
- $this->clickAndWait("{$base}button1");
+ $this->byId("{$base}button1")->click();
$this->assertText("{$base}label1", "Button 1 Clicked!");
$this->type("{$base}text1", "testing");
diff --git a/tests/FunctionalTests/tickets/tests/Ticket587TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket587TestCase.php
index d5064c1e..cb42c343 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket587TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket587TestCase.php
@@ -1,12 +1,12 @@
<?php
-class Ticket587TestCase extends PradoGenericSeleniumTest
+class Ticket587TestCase extends PradoGenericSelenium2Test
{
function testKeyPress()
{
$base = 'ctl0_Content_';
- $this->open('tickets/index.php?page=Ticket587_reopened');
- $this->assertTitle("Verifying Ticket 587_reopened");
+ $this->url('tickets/index.php?page=Ticket587_reopened');
+ $this->assertEquals($this->title(), "Verifying Ticket 587_reopened");
$this->assertText($base."label1", "Label 1");
$this->select($base."list1", "item 3");
@@ -16,7 +16,6 @@ class Ticket587TestCase extends PradoGenericSeleniumTest
$this->assertText($base."label1", "Selection 2: value 3 - item 4");
$this->type($base.'text1', 't');
- $this->runScript("Prado.Registry.get('{$base}text1').onKeyPress({})");
$this->pause(800);
$this->select($base."list2", "asd 3 - item 2");
$this->pause(800);
@@ -26,8 +25,8 @@ class Ticket587TestCase extends PradoGenericSeleniumTest
function testButtonClick()
{
$base = 'ctl0_Content_';
- $this->open('tickets/index.php?page=Ticket587_reopened');
- $this->assertTitle("Verifying Ticket 587_reopened");
+ $this->url('tickets/index.php?page=Ticket587_reopened');
+ $this->assertEquals($this->title(), "Verifying Ticket 587_reopened");
$this->assertText($base."label1", "Label 1");
$this->select($base."list1", "item 3");
@@ -36,7 +35,7 @@ class Ticket587TestCase extends PradoGenericSeleniumTest
$this->pause(800);
$this->assertText($base."label1", "Selection 2: value 3 - item 4");
- $this->click($base.'button6');
+ $this->byId($base.'button6')->click();
$this->pause(800);
$this->select($base."list2", "asd 3 - item 2");
$this->pause(800);
diff --git a/tests/FunctionalTests/tickets/tests/Ticket592TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket592TestCase.php
index ec8d2284..692e2451 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket592TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket592TestCase.php
@@ -1,45 +1,45 @@
<?php
-class Ticket592TestCase extends PradoGenericSeleniumTest
+class Ticket592TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = 'ctl0_Content_';
- $this->open('tickets/index.php?page=Ticket592');
- $this->assertTitle("Verifying Ticket 592");
+ $this->url('tickets/index.php?page=Ticket592');
+ $this->assertEquals($this->title(), "Verifying Ticket 592");
$this->assertText("{$base}label1", "Label 1");
- $this->click("{$base}radio1");
- $this->click("{$base}button1");
+ $this->byId("{$base}radio1")->click();
+ $this->byId("{$base}button1")->click();
$this->pause(800);
- $this->assertText("{$base}label1", 'exact:radio1 checked:{1} radio2 checked:{}');
+ $this->assertText("{$base}label1", 'radio1 checked:{1} radio2 checked:{}');
- $this->click("{$base}radio2");
- $this->click("{$base}button1");
+ $this->byId("{$base}radio2")->click();
+ $this->byId("{$base}button1")->click();
$this->pause(800);
- $this->assertText("{$base}label1", 'exact:radio1 checked:{1} radio2 checked:{1}');
+ $this->assertText("{$base}label1", 'radio1 checked:{1} radio2 checked:{1}');
- $this->click("{$base}bad_radio1");
- $this->click("{$base}button2");
+ $this->byId("{$base}bad_radio1")->click();
+ $this->byId("{$base}button2")->click();
$this->pause(800);
- $this->assertText("{$base}label1", 'exact:bad_radio1 checked:{1} bad_radio2 checked:{}');
+ $this->assertText("{$base}label1", 'bad_radio1 checked:{1} bad_radio2 checked:{}');
- $this->click("{$base}bad_radio2");
- $this->click("{$base}button2");
+ $this->byId("{$base}bad_radio2")->click();
+ $this->byId("{$base}button2")->click();
$this->pause(800);
- $this->assertText("{$base}label1", 'exact:bad_radio1 checked:{} bad_radio2 checked:{1}');
-
- $this->click("{$base}bad_radio3");
- $this->click("{$base}button3");
+ $this->assertText("{$base}label1", 'bad_radio1 checked:{} bad_radio2 checked:{1}');
+
+ $this->byId("{$base}bad_radio3")->click();
+ $this->byId("{$base}button3")->click();
$this->pause(800);
- $this->assertText("{$base}label1", 'exact:bad_radio3 checked:{1} bad_radio4 checked:{}');
+ $this->assertText("{$base}label1", 'bad_radio3 checked:{1} bad_radio4 checked:{}');
- $this->click("{$base}bad_radio4");
- $this->click("{$base}button3");
+ $this->byId("{$base}bad_radio4")->click();
+ $this->byId("{$base}button3")->click();
$this->pause(800);
- $this->assertText("{$base}label1", 'exact:bad_radio3 checked:{} bad_radio4 checked:{1}');
-
+ $this->assertText("{$base}label1", 'bad_radio3 checked:{} bad_radio4 checked:{1}');
+
}
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket595TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket595TestCase.php
index 14b2f985..27d57a91 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket595TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket595TestCase.php
@@ -1,36 +1,36 @@
<?php
-class Ticket595TestCase extends PradoGenericSeleniumTest
+class Ticket595TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base="ctl0_Content_";
- $this->open('tickets/index.php?page=Ticket595');
- $this->assertTitle("Verifying Ticket 595");
-
- $this->click($base.'ctl2');
+ $this->url('tickets/index.php?page=Ticket595');
+ $this->assertEquals($this->title(), "Verifying Ticket 595");
+
+ $this->byId($base.'ctl2')->click();
$this->assertAttribute($base.'A@class','errorclassA');
-
+
$this->type($base.'A', 'Prado');
- $this->click($base.'ctl2');
+ $this->byId($base.'ctl2')->click();
$this->assertAttribute($base.'A@class','errorclassA');
-
+
$this->type($base.'A', 'test@pradosoft.com');
- $this->click($base.'ctl2');
+ $this->byId($base.'ctl2')->click();
$this->pause(800);
$this->assertAttribute($base.'A@class','');
- $this->click($base.'ctl5');
+ $this->byId($base.'ctl5')->click();
$this->pause(800);
- $this->assertAttribute($base.'B@class','exact: errorclassB');
-
+ $this->assertAttribute($base.'B@class',' errorclassB');
+
$this->type($base.'B', 'Prado');
- $this->click($base.'ctl5');
+ $this->byId($base.'ctl5')->click();
$this->pause(800);
- $this->assertAttribute($base.'B@class','exact: errorclassB');
-
+ $this->assertAttribute($base.'B@class',' errorclassB');
+
$this->type($base.'B', 'test@pradosoft.com');
- $this->click($base.'ctl5');
+ $this->byId($base.'ctl5')->click();
$this->pause(800);
$this->assertAttribute($base.'B@class','');
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket622TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket622TestCase.php
index 0d0fe3d2..b51f55d3 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket622TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket622TestCase.php
@@ -1,17 +1,18 @@
<?php
-class Ticket622TestCase extends PradoGenericSeleniumTest
+class Ticket622TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base="ctl0_Content_";
- $this->open('tickets/index.php?page=Ticket622');
- $this->assertTitle("Verifying Ticket 622");
-
- $this->click($base.'ctl0');
+ $this->url('tickets/index.php?page=Ticket622');
+ $this->assertEquals($this->title(), "Verifying Ticket 622");
+
+ $this->byId($base.'ctl0')->click();
$this->pause(800);
- $this->assertAttribute($base.'ALB@style',';');
- $this->assertAttribute('css=span#acb span@style', ';');
- $this->assertAttribute('css=span#arb span@style', ';');
+
+ $this->assertEquals('', $this->byId($base.'ALB')->attribute('style'));
+ $this->assertEquals('', $this->byCssSelector('span#acb span')->attribute('style'));
+ $this->assertEquals('', $this->byCssSelector('span#arb span')->attribute('style'));
}
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket653TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket653TestCase.php
index ec5eceb4..09987387 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket653TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket653TestCase.php
@@ -1,12 +1,12 @@
<?php
-class Ticket653TestCase extends PradoGenericSeleniumTest
+class Ticket653TestCase extends PradoGenericSelenium2Test
{
function test()
{
// Open with 'Friendly URL'
- $this->open('tickets/index.php/ticket653');
- $this->verifyTitle("Verifying Ticket 653", "");
+ $this->url('tickets/index.php/ticket653');
+ $this->assertEquals("Verifying Ticket 653", $this->title());
$this->assertText('textspan', 'This is the page for Ticket653');
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket656TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket656TestCase.php
index ff167b0e..174b096b 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket656TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket656TestCase.php
@@ -1,24 +1,25 @@
<?php
-class Ticket656TestCase extends PradoGenericSeleniumTest
+class Ticket656TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = 'ctl0_Content_';
- $this->open('tickets/index.php?page=Ticket656');
- $this->assertTitle("Verifying Ticket 656");
-
+ $this->url('tickets/index.php?page=Ticket656');
+ $this->assertEquals($this->title(), "Verifying Ticket 656");
+
// First test, current date
- $this->click($base."btnUpdate");
+ $this->byId($base."btnUpdate")->click();
$this->pause(800);
$this->assertText($base."lblStatus",date("d-m-Y"));
-
+
// Then, set another date
+ $year=date('Y')-2;
$this->select($base."datePicker_day",20);
$this->select($base."datePicker_month", 10);
- $this->select($base."datePicker_year", 2008);
- $this->click($base."btnUpdate");
+ $this->select($base."datePicker_year", $year);
+ $this->byId($base."btnUpdate")->click();
$this->pause(800);
- $this->assertText($base."lblStatus",date("d-m-Y", mktime(0,0,0,10,20,2008)));
+ $this->assertText($base."lblStatus",date("d-m-Y", mktime(0,0,0,10,20,$year)));
}
} \ No newline at end of file
diff --git a/tests/FunctionalTests/tickets/tests/Ticket659TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket659TestCase.php
index 91326e9d..d5d73bc8 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket659TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket659TestCase.php
@@ -1,20 +1,20 @@
<?php
-class Ticket659TestCase extends PradoGenericSeleniumTest
+class Ticket659TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = 'ctl0_Content_';
// Normal component (working)
- $this->open('tickets/index.php?page=ToggleTest');
+ $this->url('tickets/index.php?page=ToggleTest');
$this->assertText("${base}lbl", "Down");
- $this->click("${base}btn", "");
+ $this->byId("${base}btn")->click();
$this->pause(800);
$this->assertText("${base}lbl", "Up");
// Extended component (not working)
- $this->open('tickets/index.php?page=Ticket659');
+ $this->url('tickets/index.php?page=Ticket659');
$this->assertText("${base}lbl", "Down");
- $this->click("${base}btn", "");
+ $this->byId("${base}btn")->click();
$this->pause(800);
$this->assertText("${base}lbl", "Up");
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket660TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket660TestCase.php
index e0c97e53..86f03442 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket660TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket660TestCase.php
@@ -1,24 +1,24 @@
<?php
-class Ticket660TestCase extends PradoGenericSeleniumTest
+class Ticket660TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = 'ctl0_Content_';
- $this->open('tickets/index.php?page=Ticket660');
- $this->assertTitle("Verifying Ticket 660");
-
- $this->click($base.'PB');
+ $this->url('tickets/index.php?page=Ticket660');
+ $this->assertEquals($this->title(), "Verifying Ticket 660");
+
+ $this->byId($base.'PB')->click();
$this->pause(800);
$this->assertText($base.'A','ÄÖÜ äöü');
$this->type($base.'T', 'äää');
- $this->click($base.'PB');
+ $this->byId($base.'PB')->click();
$this->pause(800);
$this->assertText($base.'A','äääÄÖÜ äöü');
/*
// CALLBACK CURRENTLY CAN'T WORK ON NON-UTF8 strings
$this->type($base.'T', 'ööö');
- $this->click($base.'CB');
+ $this->byId($base.'CB')->click();
$this->pause(800);
$this->assertText($base.'A','öööÄÖÜ äöü');
*/
diff --git a/tests/FunctionalTests/tickets/tests/Ticket669TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket669TestCase.php
index b6931808..8b5a0166 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket669TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket669TestCase.php
@@ -1,47 +1,47 @@
<?php
-class Ticket669TestCase extends PradoGenericSeleniumTest
+class Ticket669TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = 'ctl0_Content_';
- $this->open('tickets/index.php?page=Ticket669');
- $this->assertTitle("Verifying Ticket 669");
-
- $this->assertTextPresent('1 - Test without callback');
- $this->assertValue($base.'tb1', 'exact:ActiveTextBox');
- $this->assertValue($base.'tb2', 'exact:TextBox in ActivePanel');
-
- $this->click($base.'ctl4');
+ $this->url('tickets/index.php?page=Ticket669');
+ $this->assertEquals($this->title(), "Verifying Ticket 669");
+
+ $this->assertContains('1 - Test without callback', $this->source());
+ $this->assertValue($base.'tb1', 'ActiveTextBox');
+ $this->assertValue($base.'tb2', 'TextBox in ActivePanel');
+
+ $this->byId($base.'ctl4')->click();
$this->pause(800);
- $this->assertValue($base.'tb1', 'exact:ActiveTextBox +1');
- $this->assertValue($base.'tb2', 'exact:TextBox in ActivePanel +1');
-
- $this->click($base.'ctl1');
+ $this->assertValue($base.'tb1', 'ActiveTextBox +1');
+ $this->assertValue($base.'tb2', 'TextBox in ActivePanel +1');
+
+ $this->byId($base.'ctl1')->click();
$this->pause(800);
- $this->assertTextPresent('2 - Test callback with 2nd ActivePanel');
- $this->assertValue($base.'tb3', 'exact:ActiveTextBox');
- $this->assertValue($base.'tb4', 'exact:TextBox in ActivePanel');
- $this->assertValue($base.'tb5', 'exact:TextBox in ActivePanel');
-
- $this->click($base.'ctl6');
+ $this->assertContains('2 - Test callback with 2nd ActivePanel', $this->source());
+ $this->assertValue($base.'tb3', 'ActiveTextBox');
+ $this->assertValue($base.'tb4', 'TextBox in ActivePanel');
+ $this->assertValue($base.'tb5', 'TextBox in ActivePanel');
+
+ $this->byId($base.'ctl6')->click();
$this->pause(800);
-
- $this->assertValue($base.'tb3', 'exact:ActiveTextBox +1');
- $this->assertValue($base.'tb4', 'exact:TextBox in ActivePanel +1');
- $this->assertValue($base.'tb5', 'exact:TextBox in ActivePanel +1');
-
- $this->click($base.'ctl2');
+
+ $this->assertValue($base.'tb3', 'ActiveTextBox +1');
+ $this->assertValue($base.'tb4', 'TextBox in ActivePanel +1');
+ $this->assertValue($base.'tb5', 'TextBox in ActivePanel +1');
+
+ $this->byId($base.'ctl2')->click();
$this->pause(800);
- $this->assertTextPresent('3 - Test callback without 2nd ActivePanel');
- $this->assertValue($base.'tb6', 'exact:ActiveTextBox');
- $this->assertValue($base.'tb7', 'exact:TextBox in Panel');
-
- $this->click($base.'ctl8');
+ $this->assertContains('3 - Test callback without 2nd ActivePanel', $this->source());
+ $this->assertValue($base.'tb6', 'ActiveTextBox');
+ $this->assertValue($base.'tb7', 'TextBox in Panel');
+
+ $this->byId($base.'ctl8')->click();
$this->pause(800);
-
- $this->assertValue($base.'tb6', 'exact:ActiveTextBox +1');
- $this->assertValue($base.'tb7', 'exact:TextBox in Panel +1');
-
+
+ $this->assertValue($base.'tb6', 'ActiveTextBox +1');
+ $this->assertValue($base.'tb7', 'TextBox in Panel +1');
+
}
} \ No newline at end of file
diff --git a/tests/FunctionalTests/tickets/tests/Ticket670TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket670TestCase.php
index 33e45b49..a88b689c 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket670TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket670TestCase.php
@@ -1,21 +1,21 @@
<?php
-class Ticket670TestCase extends PradoGenericSeleniumTest
+class Ticket670TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = 'ctl0_Content_';
- $this->open('tickets/index.php?page=Ticket670');
- $this->assertTitle("Verifying Ticket 670");
-
+ $this->url('tickets/index.php?page=Ticket670');
+ $this->assertEquals($this->title(), "Verifying Ticket 670");
+
$this->type($base."datePicker", '07-07-2003');
$this->pause(800);
//$this->assertText($base."datePicker",'07-07-2003');
- $this->click($base."datePickerbutton");
+ $this->byId($base."datePickerbutton")->click();
$this->pause(800);
- $this->click($base."ok");
+ $this->byId($base."ok")->click();
$this->pause(800);
$this->assertText($base."lbl",'07-07-2007');
-
+
}
} \ No newline at end of file
diff --git a/tests/FunctionalTests/tickets/tests/Ticket671TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket671TestCase.php
index 031dc991..4e6409af 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket671TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket671TestCase.php
@@ -1,41 +1,41 @@
<?php
-class Ticket671TestCase extends PradoGenericSeleniumTest
+class Ticket671TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = 'ctl0_Content_';
- $this->open('tickets/index.php?page=Ticket671');
- $this->assertTitle("Verifying Ticket 671");
-
- $this->verifyNotVisible($base.'ctl0');
+ $this->url('tickets/index.php?page=Ticket671');
+ $this->assertEquals($this->title(), "Verifying Ticket 671");
+
+ $this->assertNotVisible($base.'ctl0');
// Click submit
- $this->click($base.'ctl1');
+ $this->byId($base.'ctl1')->click();
$this->pause(800);
- $this->verifyText($base.'ctl0', 'Please Select Test 3');
- $this->verifyVisible($base.'ctl0');
+ $this->assertText($base.'ctl0', 'Please Select Test 3');
+ $this->assertVisible($base.'ctl0');
$this->select($base.'addl', 'Test 2');
$this->pause(800);
- $this->verifyVisible($base.'ctl0');
- $this->verifyText($base."lblResult", "You have selected 'Test 2'. But this is not valid !");
+ $this->assertVisible($base.'ctl0');
+ $this->assertText($base."lblResult", "You have selected 'Test 2'. But this is not valid !");
$this->select($base.'addl', 'Test 3');
$this->pause(800);
- $this->verifyNotVisible($base.'ctl0');
- $this->verifyText($base."lblResult", "You have selected 'Test 3'.");
- $this->click($base.'ctl1');
+ $this->assertNotVisible($base.'ctl0');
+ $this->assertText($base."lblResult", "You have selected 'Test 3'.");
+ $this->byId($base.'ctl1')->click();
$this->pause(800);
- $this->verifyText($base."lblResult", "You have successfully validated the form");
-
+ $this->assertText($base."lblResult", "You have successfully validated the form");
+
$this->type($base.'testTextBox', 'test');
$this->pause(800);
- $this->click($base.'ctl3');
+ $this->byId($base.'ctl3')->click();
$this->pause(800);
- $this->verifyVisible($base.'ctl2');
+ $this->assertVisible($base.'ctl2');
$this->type($base.'testTextBox',"Prado");
$this->pause(800);
- $this->click($base.'ctl3');
+ $this->byId($base.'ctl3')->click();
$this->pause(800);
- $this->verifyNotVisible($base.'ctl2');
- $this->verifyText($base.'lblResult2', 'Thanks !');
+ $this->assertNotVisible($base.'ctl2');
+ $this->assertText($base.'lblResult2', 'Thanks !');
}
} \ No newline at end of file
diff --git a/tests/FunctionalTests/tickets/tests/Ticket671_reopenedTestCase.php b/tests/FunctionalTests/tickets/tests/Ticket671_reopenedTestCase.php
index 7ba24dcc..a3394bca 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket671_reopenedTestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket671_reopenedTestCase.php
@@ -1,46 +1,46 @@
<?php
-class Ticket671_reopenedTestCase extends PradoGenericSeleniumTest
+class Ticket671_reopenedTestCase extends PradoGenericSelenium2Test
{
function test()
{
$base="ctl0_Content_";
- $this->open('tickets/index.php?page=Ticket671_reopened');
- $this->assertTitle("Verifying Ticket 671_reopened");
+ $this->url('tickets/index.php?page=Ticket671_reopened');
+ $this->assertEquals($this->title(), "Verifying Ticket 671_reopened");
// Type wrong value
$this->type($base.'testField', 'abcd');
- $this->click($base.'ctl4');
+ $this->byId($base.'ctl4')->click();
$this->pause(800);
$this->assertVisible($base.'ctl2');
- $this->assertText($base.'Result', 'exact:Check callback called (1) --- Save callback called DATA NOK');
-
+ $this->assertText($base.'Result', 'Check callback called (1) --- Save callback called DATA NOK');
+
// Reclick, should not have any callback
- $this->click($base.'ctl4');
+ $this->byId($base.'ctl4')->click();
$this->pause(800);
$this->assertVisible($base.'ctl2');
- $this->assertText($base.'Result', 'exact:Check callback called (2) --- Save callback called DATA NOK');
-
+ $this->assertText($base.'Result', 'Check callback called (2) --- Save callback called DATA NOK');
+
// Type right value
$this->type($base.'testField', 'Test');
- $this->click($base.'ctl4');
+ $this->byId($base.'ctl4')->click();
$this->pause(800);
$this->assertNotVisible($base.'ctl2');
- $this->assertText($base.'Result', 'exact:Check callback called (3) --- Save callback called DATA OK');
-
+ $this->assertText($base.'Result', 'Check callback called (3) --- Save callback called DATA OK');
+
// Type empty value
$this->type($base.'testField', '');
- $this->click($base.'ctl4');
+ $this->byId($base.'ctl4')->click();
$this->pause(800);
$this->assertVisible($base.'ctl1');
$this->assertNotVisible($base.'ctl2');
- $this->assertText($base.'Result', 'exact:Check callback called (3) --- Save callback called DATA OK');
-
+ $this->assertText($base.'Result', 'Check callback called (3) --- Save callback called DATA OK');
+
// Type right value
$this->type($base.'testField', 'Test');
- $this->click($base.'ctl4');
+ $this->byId($base.'ctl4')->click();
$this->pause(800);
$this->assertNotVisible($base.'ctl1');
$this->assertNotVisible($base.'ctl2');
- $this->assertText($base.'Result', 'exact:Check callback called (4) --- Save callback called DATA OK');
+ $this->assertText($base.'Result', 'Check callback called (4) --- Save callback called DATA OK');
}
} \ No newline at end of file
diff --git a/tests/FunctionalTests/tickets/tests/Ticket679TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket679TestCase.php
index 4ee22c20..2891a386 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket679TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket679TestCase.php
@@ -1,35 +1,35 @@
<?php
-class Ticket679TestCase extends PradoGenericSeleniumTest
+class Ticket679TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = 'ctl0_Content_';
- $this->open('tickets/index.php?page=Ticket679');
- $this->assertTitle("Verifying Ticket 679");
-
+ $this->url('tickets/index.php?page=Ticket679');
+ $this->assertEquals($this->title(), "Verifying Ticket 679");
+
// First part of ticket : Repeater bug
- $this->click($base."ctl0");
+ $this->byId($base."ctl0")->click();
$this->pause(800);
$this->assertText($base."myLabel",'outside');
- $this->verifyVisible($base."myLabel");
-
+ $this->assertVisible($base."myLabel");
+
// Reload completly the page
$this->refresh();
$this->pause(800);
- $this->click($base."Repeater_ctl0_ctl0");
+ $this->byId($base."Repeater_ctl0_ctl0")->click();
$this->pause(800);
$this->assertText($base."myLabel",'inside');
- $this->verifyVisible($base."myLabel");
-
+ $this->assertVisible($base."myLabel");
+
// Second part of ticket : ARB bug
- $this->verifyNotChecked($base."myRadioButton");
- $this->click($base."ctl1");
+ $this->assertFalse($this->byId("{$base}myRadioButton")->selected());
+ $this->byId($base."ctl1")->click();
$this->pause(800);
- $this->verifyChecked($base."myRadioButton");
- $this->click($base."ctl2");
+ $this->assertTrue($this->byId("{$base}myRadioButton")->selected());
+ $this->byId($base."ctl2")->click();
$this->pause(800);
- $this->verifyNotChecked($base."myRadioButton");
+ $this->assertFalse($this->byId("{$base}myRadioButton")->selected());
$this->pause(800);
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket691TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket691TestCase.php
index a441f82c..d014f2f4 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket691TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket691TestCase.php
@@ -1,16 +1,16 @@
<?php
-class Ticket691TestCase extends PradoGenericSeleniumTest
+class Ticket691TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = 'ctl0_Content_';
- $this->open('tickets/index.php?page=Ticket691');
- $this->assertTitle("Verifying Ticket 691");
-
- $this->click($base."List_c2");
+ $this->url('tickets/index.php?page=Ticket691');
+ $this->assertEquals($this->title(), "Verifying Ticket 691");
+
+ $this->byXPath("//input[@id='{$base}List_c2']/../..")->click();
$this->pause(800);
- $this->assertText($base."Title", "Thanks");
- $this->assertText($base."Result", "You vote 3");
+ $this->assertText("{$base}Title", "Thanks");
+ $this->assertText("{$base}Result", "You vote 3");
}
} \ No newline at end of file
diff --git a/tests/FunctionalTests/tickets/tests/Ticket698TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket698TestCase.php
index 8f58a320..8aa9cb4e 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket698TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket698TestCase.php
@@ -1,17 +1,17 @@
<?php
-class Ticket698TestCase extends PradoGenericSeleniumTest
+class Ticket698TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = 'ctl0_Content_';
- $this->open('tickets/index.php?page=Ticket698');
- $this->assertTitle("Verifying Ticket 698");
-
- $this->click($base."switchContentTypeButton");
+ $this->url('tickets/index.php?page=Ticket698');
+ $this->assertEquals($this->title(), "Verifying Ticket 698");
+
+ $this->byId($base."switchContentTypeButton")->click();
$this->pause(800);
$this->assertVisible($base."EditHtmlTextBox");
$this->pause(800);
- $this->click($base."switchContentTypeButton");
+ $this->byId($base."switchContentTypeButton")->click();
$this->pause(1000);
$this->assertNotVisible($base."EditHtmlTextBox");
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket700TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket700TestCase.php
index 0366c2fc..d10529ce 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket700TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket700TestCase.php
@@ -1,71 +1,71 @@
<?php
-class Ticket700TestCase extends PradoGenericSeleniumTest
+class Ticket700TestCase extends PradoGenericSelenium2Test
{
function test()
{
// page: Home
- $this->open('tickets/index700.php');
- $this->clickAndWait('ctl0_Logout');
- $this->clickAndWait('pageHome');
- $this->assertTitle("Home");
- $this->assertTextPresent('|Param1: Set at app config|');
- $this->assertTextPresent('|Param2: Set at root|');
- $this->assertTextPresent('|Param3: default 3|');
- $this->assertTextPresent('|Param4: default 4|');
- $this->assertTextPresent('|Param5: Set at root|');
+ $this->url('tickets/index700.php');
+ $this->byId('ctl0_Logout')->click();
+ $this->byId('pageHome')->click();
+ $this->assertEquals($this->title(), "Home");
+ $this->assertContains('|Param1: Set at app config|', $this->source());
+ $this->assertContains('|Param2: Set at root|', $this->source());
+ $this->assertContains('|Param3: default 3|', $this->source());
+ $this->assertContains('|Param4: default 4|', $this->source());
+ $this->assertContains('|Param5: Set at root|', $this->source());
// page: admin.Home
- $this->clickAndWait('pageAdminHome');
- $this->assertTitle('UserLogin');
+ $this->byId('pageAdminHome')->click();
+ $this->assertEquals($this->title(), 'UserLogin');
$this->type('ctl0_Main_Username','AdminUser');
$this->type('ctl0_Main_Password','demo');
- $this->clickAndWait('ctl0_Main_LoginButton');
- $this->clickAndWait('pageAdminHome');
- $this->assertTitle('admin.Home');
- $this->assertTextPresent('|Param1: Set at app config|');
- $this->assertTextPresent('|Param2: Set at admin|');
- $this->assertTextPresent('|Param3: Set at admin|');
- $this->assertTextPresent('|Param4: Set at app config|');
- $this->assertTextPresent('|Param5: Set at app config|');
+ $this->byId('ctl0_Main_LoginButton')->click();
+ $this->byId('pageAdminHome')->click();
+ $this->assertEquals($this->title(), 'admin.Home');
+ $this->assertContains('|Param1: Set at app config|', $this->source());
+ $this->assertContains('|Param2: Set at admin|', $this->source());
+ $this->assertContains('|Param3: Set at admin|', $this->source());
+ $this->assertContains('|Param4: Set at app config|', $this->source());
+ $this->assertContains('|Param5: Set at app config|', $this->source());
// page: admin.Home2
- $this->clickAndWait('pageAdminHome2');
- $this->assertTitle('admin.Home2');
- $this->clickAndWait('ctl0_Logout');
- $this->clickAndWait('pageAdminHome2');
- $this->assertTitle('admin.Home2');
+ $this->byId('pageAdminHome2')->click();
+ $this->assertEquals($this->title(), 'admin.Home2');
+ $this->byId('ctl0_Logout')->click();
+ $this->byId('pageAdminHome2')->click();
+ $this->assertEquals($this->title(), 'admin.Home2');
// page: admin.users.Home
- $this->clickAndWait('pageAdminUsersHome');
- $this->assertTitle('UserLogin');
+ $this->byId('pageAdminUsersHome')->click();
+ $this->assertEquals($this->title(), 'UserLogin');
$this->type('ctl0_Main_Username','NormalUser');
$this->type('ctl0_Main_Password','demo');
- $this->clickAndWait('ctl0_Main_LoginButton');
- $this->clickAndWait('pageAdminUsersHome');
- $this->assertTitle('UserLogin');
+ $this->byId('ctl0_Main_LoginButton')->click();
+ $this->byId('pageAdminUsersHome')->click();
+ $this->assertEquals($this->title(), 'UserLogin');
$this->type('ctl0_Main_Username','AdminUser');
$this->type('ctl0_Main_Password','demo');
- $this->clickAndWait('ctl0_Main_LoginButton');
- $this->clickAndWait('pageAdminUsersHome');
- $this->assertTitle('admin.users.Home');
- $this->assertTextPresent('|Param1: Set at admin|');
- $this->assertTextPresent('|Param2: Set at admin.users|');
- $this->assertTextPresent('|Param3: default 3|');
- $this->assertTextPresent('|Param4: Set at admin|');
- $this->assertTextPresent('|Param5: Set at app config|');
+ $this->byId('ctl0_Main_LoginButton')->click();
+ $this->byId('pageAdminUsersHome')->click();
+ $this->assertEquals($this->title(), 'admin.users.Home');
+ $this->assertContains('|Param1: Set at admin|', $this->source());
+ $this->assertContains('|Param2: Set at admin.users|', $this->source());
+ $this->assertContains('|Param3: default 3|', $this->source());
+ $this->assertContains('|Param4: Set at admin|', $this->source());
+ $this->assertContains('|Param5: Set at app config|', $this->source());
// page: admin.users.Home2
- $this->clickAndWait('pageAdminUsersHome2');
- $this->assertTitle('admin.users.Home2');
+ $this->byId('pageAdminUsersHome2')->click();
+ $this->assertEquals($this->title(), 'admin.users.Home2');
// page: content.Home
- $this->clickAndWait('pageContentHome');
- $this->assertTitle('content.Home');
- $this->assertTextPresent('|Param1: Set at app config|');
- $this->assertTextPresent('|Param2: Set at root|');
- $this->assertTextPresent('|Param3: default 3|');
- $this->assertTextPresent('|Param4: default 4|');
- $this->assertTextPresent('|Param5: Set at app config|');
- $this->clickAndWait('ctl0_Logout');
+ $this->byId('pageContentHome')->click();
+ $this->assertEquals($this->title(), 'content.Home');
+ $this->assertContains('|Param1: Set at app config|', $this->source());
+ $this->assertContains('|Param2: Set at root|', $this->source());
+ $this->assertContains('|Param3: default 3|', $this->source());
+ $this->assertContains('|Param4: default 4|', $this->source());
+ $this->assertContains('|Param5: Set at app config|', $this->source());
+ $this->byId('ctl0_Logout')->click();
}
} \ No newline at end of file
diff --git a/tests/FunctionalTests/tickets/tests/Ticket703TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket703TestCase.php
index dedb491f..46c240b1 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket703TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket703TestCase.php
@@ -1,25 +1,26 @@
<?php
-class Ticket703TestCase extends PradoGenericSeleniumTest
+class Ticket703TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = 'ctl0_Content_';
- $this->open('tickets/index.php?page=Ticket703.Ticket703');
- $this->assertTitle("Verifying Ticket703.Ticket703 703.703");
+ $this->url('tickets/index.php?page=Ticket703.Ticket703');
+ $this->assertEquals($this->title(), "Verifying Ticket703.Ticket703 703.703");
// Start with an empty log
- $this->click($base.'ctl2');
+ $this->byId($base.'ctl2')->click();
// Wait for callback to be lanched
$this->pause(1000);
$this->assertText($base.'logBox', "");
$this->type($base.'logMessage', "Test of prado logging system");
- $this->click($base.'ctl0');
+ $this->byId($base.'ctl0')->click();
$this->pause(800);
- $this->click($base.'ctl1');
- $this->assertTextPresent($base.'logBox', "Test of prado logging system");
+ $this->byId($base.'ctl1')->click();
+ $this->pause(1000);
+ $this->assertContains("Test of prado logging system", $this->byId($base.'logBox')->value());
// Clean log for next run
- $this->click($base.'ctl2');
+ $this->byId($base.'ctl2')->click();
// Wait for callback to be lanched
$this->pause(1000);
$this->assertText($base.'logBox', "");
diff --git a/tests/FunctionalTests/tickets/tests/Ticket708TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket708TestCase.php
index 87509b29..ab8780f6 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket708TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket708TestCase.php
@@ -1,25 +1,25 @@
<?php
-class Ticket708TestCase extends PradoGenericSeleniumTest
+class Ticket708TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = 'ctl0_Content_';
- $this->open('tickets/index.php?page=Ticket708');
- $this->assertTitle("Verifying Ticket 708");
-
- $this->click($base."grid_ctl1_RadioButton");
+ $this->url('tickets/index.php?page=Ticket708');
+ $this->assertEquals($this->title(), "Verifying Ticket 708");
+
+ $this->byId($base."grid_ctl1_RadioButton")->click();
$this->pause(800);
$this->assertText($base."Result", "You have selected Radio Button #1");
-
- $this->click($base."grid_ctl2_RadioButton");
+
+ $this->byId($base."grid_ctl2_RadioButton")->click();
$this->pause(800);
$this->assertText($base."Result", "You have selected Radio Button #2");
-
- $this->click($base."grid_ctl3_RadioButton");
+
+ $this->byId($base."grid_ctl3_RadioButton")->click();
$this->pause(800);
$this->assertText($base."Result", "You have selected Radio Button #3");
-
- $this->click($base."grid_ctl4_RadioButton");
+
+ $this->byId($base."grid_ctl4_RadioButton")->click();
$this->pause(800);
$this->assertText($base."Result", "You have selected Radio Button #4");
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket719TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket719TestCase.php
index c71cb0a8..46346ca1 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket719TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket719TestCase.php
@@ -1,42 +1,45 @@
<?php
-class Ticket719TestCase extends PradoGenericSeleniumTest
+class Ticket719TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open("tickets/index.php?page=Ticket719");
- $this->verifyTextPresent("Verifying Ticket 719");
+ $this->url("tickets/index.php?page=Ticket719");
+ $this->assertContains("Verifying Ticket 719", $this->source());
$base="ctl0_Content_";
- $this->click("${base}ctl2");
+ $this->byId("${base}ctl2")->click();
$this->pause(800);
$this->assertVisible("${base}ctl0", 'Required');
$this->assertVisible("${base}ctl1", 'Required');
- $this->type("${base}autocomplete", 'f');
- $this->runScript("Prado.Registry.get('${base}autocomplete').onKeyPress({})");
+ $this->byId("${base}autocomplete")->click();
+
+ $this->keys('f');
$this->pause(500);
- $this->verifyTextPresent('Finland');
+ $this->assertContains('Finland', $this->source());
- $this->type("${base}autocomplete", 'fr');
- $this->runScript("Prado.Registry.get('${base}autocomplete').onKeyPress({})");
+ $this->keys('r');
$this->pause(500);
- $this->verifyTextPresent('French');
+ $this->assertContains('French', $this->source());
- $this->type("${base}autocomplete", 'fra');
- $this->runScript("Prado.Registry.get('${base}autocomplete').onKeyPress({})");
+ $this->keys('a');
$this->pause(500);
- $this->verifyTextPresent('France');
+ $this->assertContains('France', $this->source());
- $this->click("css=#${base}autocomplete_result ul li");
+ $this->byCssSelector("#${base}autocomplete_result ul li")->click();
$this->pause(800);
$this->assertNotVisible("${base}ctl1");
- $this->type("${base}textbox", "Prado");
+ $this->byId("${base}textbox")->clear();
+ $this->byId("${base}textbox")->value('Prado');
+ // trigger onblur() event
+ $this->byCssSelector('body')->click();
+
$this->assertNotVisible("${base}ctl0");
- $this->click("${base}ctl2");
+ $this->byId("${base}ctl2")->click();
$this->pause(800);
$this->assertText("${base}Result", "TextBox Content : Prado -- Autocomplete Content :France");
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket722TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket722TestCase.php
index 90711162..dfa93089 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket722TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket722TestCase.php
@@ -1,28 +1,32 @@
<?php
-class Ticket722TestCase extends PradoGenericSeleniumTest
+class Ticket722TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = 'ctl0_Content_';
- $this->open('tickets/index.php?page=Ticket722');
- $this->assertTitle("Verifying Ticket 722");
-
- $this->assertText($base.'InPlaceTextBox__label', 'Editable Text');
- $this->click($base.'InPlaceTextBox__label');
+ $this->url('tickets/index.php?page=Ticket722');
+ $this->assertEquals($this->title(), "Verifying Ticket 722");
+
+ $label = $this->byID("{$base}InPlaceTextBox__label");
+ $this->assertEquals('Editable Text', $label->text());
+ $label->click();
$this->pause(800);
- $this->assertVisible($base.'InPlaceTextBox');
+
+ $textbox = $this->byID("{$base}InPlaceTextBox");
+ $this->assertTrue($textbox->displayed());
+
$this->type($base.'InPlaceTextBox',"Prado");
- $this->fireEvent($base.'InPlaceTextBox', 'blur'); // Release textbox
$this->pause(800);
- $this->assertNotVisible($base.'InPlaceTextBox');
- $this->assertText($base.'InPlaceTextBox__label', 'Prado');
- $this->click($base.'ctl0');
+ $this->assertFalse($textbox->displayed());
+ $this->assertEquals('Prado', $label->text());
+
+ $this->byId("{$base}ctl0")->click();
$this->pause(800);
- $this->assertText($base.'InPlaceTextBox__label', 'exact:Prado [Read Only]');
- $this->click($base.'InPlaceTextBox__label');
+ $this->assertEquals('Prado [Read Only]', $label->text());
+
+ $label->click();
$this->pause(800);
- $this->assertNotVisible($base.'InPlaceTextBox');
-
+ $this->assertFalse($textbox->displayed());
}
} \ No newline at end of file
diff --git a/tests/FunctionalTests/tickets/tests/Ticket72TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket72TestCase.php
index 111b7583..91fc9420 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket72TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket72TestCase.php
@@ -1,14 +1,14 @@
<?php
-class Ticket72TestCase extends PradoGenericSeleniumTest
+class Ticket72TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open('tickets/index.php?page=Ticket72');
+ $this->url('tickets/index.php?page=Ticket72');
$this->type("ctl0\$Content\$K1", "abc");
$this->type("ctl0\$Content\$K2", "efg");
- $this->clickAndWait("//input[@type='submit' and @value='Send']", "");
- $this->verifyTextPresent("efg", "");
- $this->verifyTextNotPresent("abcefg", "");
+ $this->byXPath("//input[@type='submit' and @value='Send']")->click();
+ $this->assertContains("efg", $this->source());
+ $this->assertNotContains("abcefg", $this->source());
}
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket745TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket745TestCase.php
index f822e37f..690df8a1 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket745TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket745TestCase.php
@@ -1,17 +1,16 @@
<?php
-class Ticket745TestCase extends PradoGenericSeleniumTest
+class Ticket745TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = 'ctl0_Content_';
- $this->open('tickets/index.php?page=Ticket745');
- $this->assertTitle("Verifying Ticket 745");
-
+ $this->url('tickets/index.php?page=Ticket745');
+ $this->assertEquals($this->title(), "Verifying Ticket 745");
+
$this->select($base.'Wizard1_DropDownList1', 'Green');
- $this->click($base.'Wizard1_ctl4_ctl1');
+ $this->byId($base.'Wizard1_ctl4_ctl1')->click();
$this->pause(800);
- $this->assertTextPresent ('Step 3 of 3');
-
+ $this->assertContains('Step 3 of 3', $this->source());
}
} \ No newline at end of file
diff --git a/tests/FunctionalTests/tickets/tests/Ticket769TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket769TestCase.php
index 468342a5..6968a1d5 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket769TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket769TestCase.php
@@ -1,36 +1,35 @@
<?php
-class Ticket769TestCase extends PradoGenericSeleniumTest
+class Ticket769TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base="ctl0_Content_";
- $this->open('tickets/index.php?page=Ticket769');
- $this->assertTitle("Verifying Ticket 769");
+ $this->url('tickets/index.php?page=Ticket769');
+ $this->assertEquals($this->title(), "Verifying Ticket 769");
- $this->click($base.'ctl0');
+ $this->byId($base.'ctl0')->click();
$this->assertVisible($base.'ctl1');
$this->type($base.'T1', 'Prado');
- $this->click($base.'ctl0');
+ $this->byId($base.'ctl0')->click();
$this->pause(800);
$this->assertNotVisible($base.'ctl1');
- $this->verifyTextPresent($base.'ctl0', 'T1 clicked' );
+ $this->assertValue($base.'ctl0', 'T1 clicked' );
- $this->click($base.'ctl2');
+ $this->byId($base.'ctl2')->click();
$this->pause(800);
- $this->verifyTextPresent($base.'B', 'This is B');
- $this->click($base.'ctl3');
+ $this->assertText($base.'B', 'This is B');
+ $this->byId($base.'ctl3')->click();
$this->pause(800);
$this->type($base.'T1', '');
- $this->click($base.'ctl0');
+ $this->byId($base.'ctl0')->click();
$this->assertVisible($base.'ctl1');
$this->type($base.'T1', 'Prado');
- $this->click($base.'ctl0');
+ $this->byId($base.'ctl0')->click();
$this->pause(800);
$this->assertNotVisible($base.'ctl1');
- $this->verifyTextPresent($base.'ctl0', 'T1 clicked clicked' );
-
+ $this->assertValue($base.'ctl0', 'T1 clicked clicked' );
}
} \ No newline at end of file
diff --git a/tests/FunctionalTests/tickets/tests/Ticket785TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket785TestCase.php
index 229a68eb..c20f29a3 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket785TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket785TestCase.php
@@ -1,33 +1,33 @@
<?php
-class Ticket785TestCase extends PradoGenericSeleniumTest
+class Ticket785TestCase extends PradoGenericSelenium2Test
{
function test()
{
$year=date('Y')-1;
$base = 'ctl0_Content_';
- $this->open('tickets/index.php?page=Ticket785');
- $this->assertTitle("Verifying Ticket 785");
-
+ $this->url('tickets/index.php?page=Ticket785');
+ $this->assertEquals($this->title(), "Verifying Ticket 785");
+
$this->assertText('selDate', '');
$this->select($base."datePicker_year", $year);
$this->pause(800);
$expectedDate=date("d-m").'-'.$year;
$this->assertText('selDate', $expectedDate);
-
- $this->click($base."datePickerbutton");
+
+ $this->byId($base."datePickerbutton")->click();
$this->pause(800);
- $this->click("css=input.todayButton");
+ $this->byCssSelector("input.todayButton")->click();
$this->pause(800);
- $this->clickAt("css=body","0,0"); // Hide calendar
+ $this->byCssSelector("body")->click(); // Hide calendar
$expectedDate=date("d-m-Y");
$this->assertText('selDate', $expectedDate);
-
+
$this->assertText('selDate2', '');
$this->type($base.'datePicker2', '12/05/2006');
$this->pause(800);
- $this->clickAt("css=body","0,0");
- $this->assertText('selDate2', '12/05/2006');
-
+ $this->byCssSelector("body")->click();
+ $this->assertText('selDate2', '12/05/2006');
+
}
} \ No newline at end of file
diff --git a/tests/FunctionalTests/tickets/tests/Ticket823TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket823TestCase.php
index 11e363ba..163eb541 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket823TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket823TestCase.php
@@ -1,12 +1,12 @@
<?php
-class Ticket823TestCase extends PradoGenericSeleniumTest {
+class Ticket823TestCase extends PradoGenericSelenium2Test {
public function test() {
- $this->open('tickets/index.php?page=Ticket823');
- $this->assertTitle("Verifying Ticket 823");
+ $this->url('tickets/index.php?page=Ticket823');
+ $this->assertEquals($this->title(), "Verifying Ticket 823");
$base = 'ctl0_Content_';
- $this->assertElementPresent('xpath=//option[@value="Choose..."]');
+ $this->assertElementPresent('//option[@value="Choose..."]');
}
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket828TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket828TestCase.php
index bbe185ad..9a44a5ec 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket828TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket828TestCase.php
@@ -1,34 +1,34 @@
<?php
-class Ticket828TestCase extends PradoGenericSeleniumTest
+class Ticket828TestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = "ctl0_Content_";
- $this->open("tickets/index.php?page=Ticket828");
- $this->click("{$base}submit1");
+ $this->url("tickets/index.php?page=Ticket828");
+ $this->byId("{$base}submit1")->click();
$this->assertVisible("{$base}validator1");
$this->assertVisible("{$base}validator2");
$this->assertVisible("{$base}validator3");
- $this->click("{$base}list1_c0");
- $this->addSelection("{$base}list2", "label=One");
- $this->addSelection("{$base}list2", "label=Two");
- $this->click("{$base}list3_c3");
- $this->clickAndWait("{$base}submit1");
+ $this->byId("{$base}list1_c0")->click();
+ $this->addSelection("{$base}list2", "One");
+ $this->addSelection("{$base}list2", "Two");
+ $this->byId("{$base}list3_c3")->click();
+ $this->byId("{$base}submit1")->click();
$this->assertNotVisible("{$base}validator1");
$this->assertNotVisible("{$base}validator2");
$this->assertNotVisible("{$base}validator3");
- $this->click("{$base}list1_c1");
- $this->click("{$base}list1_c2");
- $this->click("{$base}list1_c3");
- $this->addSelection("{$base}list2", "label=Two");
- $this->click("{$base}list1_c3");
- $this->clickAndWait("{$base}submit1");
+ $this->byId("{$base}list1_c1")->click();
+ $this->byId("{$base}list1_c2")->click();
+ $this->byId("{$base}list1_c3")->click();
+ $this->addSelection("{$base}list2", "Two");
+ $this->byId("{$base}list1_c3")->click();
+ $this->byId("{$base}submit1")->click();
$this->assertNotVisible("{$base}validator1");
$this->assertNotVisible("{$base}validator2");
$this->assertNotVisible("{$base}validator3");
- $this->click("{$base}list3_c3");
- $this->clickAndWait("{$base}submit1");
+ $this->byId("{$base}list3_c3")->click();
+ $this->byId("{$base}submit1")->click();
$this->pause(200);
$this->assertNotVisible("{$base}validator1");
$this->assertNotVisible("{$base}validator2");
diff --git a/tests/FunctionalTests/tickets/tests/Ticket849TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket849TestCase.php
index fef9ac31..e354b126 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket849TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket849TestCase.php
@@ -1,15 +1,15 @@
<?php
-class Ticket849TestCase extends PradoGenericSeleniumTest
+class Ticket849TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open('tickets/index.php?page=Ticket849');
- $this->assertTitle("Verifying Ticket 849");
+ $this->url('tickets/index.php?page=Ticket849');
+ $this->assertEquals($this->title(), "Verifying Ticket 849");
$base='ctl0_Content_';
- $this->click($base.'ctl0');
+ $this->byId($base.'ctl0')->click();
$this->pause(800);
- $this->click('css=td.date.today.selected');
+ $this->byCssSelector('td.date.today.selected')->click();
$this->pause(1000);
$this->assertValue($base.'ctl0', date('m-d-Y'));
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket876TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket876TestCase.php
index 8006dd09..361235fc 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket876TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket876TestCase.php
@@ -1,22 +1,22 @@
<?php
-class Ticket876TestCase extends PradoGenericSeleniumTest {
+class Ticket876TestCase extends PradoGenericSelenium2Test {
public function test() {
- $this->open('tickets/index.php?page=Ticket876');
- $this->assertTitle("Verifying Ticket 876");
+ $this->url('tickets/index.php?page=Ticket876');
+ $this->assertEquals($this->title(), "Verifying Ticket 876");
$base = 'ctl0_Content_';
-
- $this->assertElementPresent('xpath=//link[@rel="stylesheet"]');
- $this->clickAndWait($base.'Button');
- $this->assertElementNotPresent('xpath=//link[@rel="stylesheet"]');
-
+
+ $this->assertElementPresent('//link[@rel="stylesheet"]');
+ $this->byId($base.'Button')->click();
+ $this->assertElementNotPresent('//link[@rel="stylesheet"]');
+
/*$this->select($base.'Date_month', 10);
$this->select($base.'Date_day', 22);
-
- $this->clickAndWait($base.'SendButton');
- $this->assertTextPresent('2008-10-22');*/
+
+ $this->byId($base.'SendButton')->click();
+ $this->assertContains('2008-10-22', $this->source());*/
}
-
+
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket886TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket886TestCase.php
index 99990ebf..7f9c23f3 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket886TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket886TestCase.php
@@ -1,14 +1,14 @@
<?php
-class Ticket886TestCase extends PradoGenericSeleniumTest
+class Ticket886TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open('tickets/index.php?page=Ticket886');
- $this->assertTitle("Verifying Ticket 886");
+ $this->url('tickets/index.php?page=Ticket886');
+ $this->assertEquals($this->title(), "Verifying Ticket 886");
$base = 'ctl0_Content_';
- $this->clickAndWait($base.'SendButton');
- $this->assertTextPresent(date('Y').'-01-01');
+ $this->byId($base.'SendButton')->click();
+ $this->assertContains(date('Y').'-01-01', $this->source());
}
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket897TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket897TestCase.php
index 67d1f1f2..e3bac037 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket897TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket897TestCase.php
@@ -1,18 +1,18 @@
<?php
-class Ticket897TestCase extends PradoGenericSeleniumTest
+class Ticket897TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open('tickets/index.php?page=Ticket897');
- $this->assertTitle("Verifying Ticket 897");
+ $this->url('tickets/index.php?page=Ticket897');
+ $this->assertEquals($this->title(), "Verifying Ticket 897");
$base = 'ctl0_Content_';
-
+
$this->select($base.'Date_month', 10);
$this->select($base.'Date_day', 22);
-
- $this->clickAndWait($base.'SendButton');
- $this->assertTextPresent(date('Y').'-10-22');
+
+ $this->byId($base.'SendButton')->click();
+ $this->assertContains(date('Y').'-10-22', $this->source());
}
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket900TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket900TestCase.php
index 3ec69873..fc0bcc01 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket900TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket900TestCase.php
@@ -1,17 +1,17 @@
<?php
-class Ticket900TestCase extends PradoGenericSeleniumTest
+class Ticket900TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open('tickets/index.php?page=Ticket900');
- $this->assertTitle("Verifying Ticket 900");
+ $this->url('tickets/index.php?page=Ticket900');
+ $this->assertEquals($this->title(), "Verifying Ticket 900");
$base = 'ctl0_Content_';
-
- $this->clickAndWait('ctl0$Content$DataGrid$ctl1$ctl3');
+
+ $this->byName('ctl0$Content$DataGrid$ctl1$ctl3')->click();
$this->type($base.'DataGrid_ctl1_TextBox', '');
- $this->click($base.'DataGrid_ctl1_ctl3');
- $this->clickAndWait('ctl0$Content$DataGrid$ctl1$ctl4');
+ $this->byId($base.'DataGrid_ctl1_ctl3')->click();
+ $this->byName('ctl0$Content$DataGrid$ctl1$ctl4')->click();
$this->assertText($base.'CommandName', 'cancel');
}
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket922TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket922TestCase.php
index 208bd1d0..f03f980e 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket922TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket922TestCase.php
@@ -1,15 +1,15 @@
<?php
-class Ticket922TestCase extends PradoGenericSeleniumTest
+class Ticket922TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open('tickets/index.php?page=Ticket922');
- $this->assertTitle("Verifying Ticket 922");
+ $this->url('tickets/index.php?page=Ticket922');
+ $this->assertEquals($this->title(), "Verifying Ticket 922");
$base = 'ctl0_Content_';
-
+
$this->type($base.'Text', 'two words');
- $this->clickAndWait('ctl0$Content$ctl0');
+ $this->byName('ctl0$Content$ctl0')->click();
$this->assertText($base.'Result','two words');
}
diff --git a/tests/FunctionalTests/tickets/tests/Ticket93TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket93TestCase.php
index a56925a8..538860d4 100755
--- a/tests/FunctionalTests/tickets/tests/Ticket93TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket93TestCase.php
@@ -4,12 +4,12 @@
*
*/
-class Ticket93TestCase extends PradoGenericSeleniumTest
+class Ticket93TestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open('tickets/index.php?page=Ticket93');
- $this->verifyTextPresent("ValidationGroups without any inputs with grouping");
+ $this->url('tickets/index.php?page=Ticket93');
+ $this->assertContains("ValidationGroups without any inputs with grouping", $this->source());
}
-
+
}
diff --git a/tests/FunctionalTests/validators/protected/pages/Layout.tpl b/tests/FunctionalTests/validators/protected/pages/Layout.tpl
index 25dbea09..47591ef3 100755
--- a/tests/FunctionalTests/validators/protected/pages/Layout.tpl
+++ b/tests/FunctionalTests/validators/protected/pages/Layout.tpl
@@ -33,7 +33,6 @@
<com:TForm>
<com:TContentPlaceHolder ID="Content" />
<hr style="margin-top: 2em" />
-<com:TJavascriptLogger />
</com:TForm>
</body>
</html> \ No newline at end of file
diff --git a/tests/FunctionalTests/validators/protected/pages/ListControl.page b/tests/FunctionalTests/validators/protected/pages/ListControl.page
index 1429e184..a75dc3ff 100755
--- a/tests/FunctionalTests/validators/protected/pages/ListControl.page
+++ b/tests/FunctionalTests/validators/protected/pages/ListControl.page
@@ -1,58 +1,58 @@
<com:TContent ID="Content">
- <h1>List Control Required Field Validation Test</h1>
+ <h1>List Control Required Field Validation Test</h1>
<com:TCheckBoxList ID="list1">
<com:TListItem Text="Select a color below" Value="" />
<com:TListItem Text="Red" />
<com:TListItem Text="Blue" />
<com:TListItem Text="Green" />
</com:TCheckBoxList>
-
+
<com:TRequiredFieldValidator ID="validator1"
ControlToValidate="list1"
InitialValue="Select a color below"
ErrorMessage="*" />
-
+
<hr />
-
+
<com:TDropDownList ID="list2">
<com:TListItem Text="--- Select a color ---" />
<com:TListItem Text="Red" />
<com:TListItem Text="Blue" />
<com:TListItem Text="Green" />
</com:TDropDownList>
-
+
<com:TRequiredFieldValidator ID="validator2"
ControlToValidate="list2"
InitialValue="--- Select a color ---"
ErrorMessage="*" />
-
+
<hr />
-
+
<com:TListBox ID="list3">
- <com:TListItem Text="Don't select this one" />
+ <com:TListItem Text="Dont select this one" />
<com:TListItem Text="Red" />
<com:TListItem Text="Blue" />
<com:TListItem Text="Green" />
</com:TListBox>
-
+
<com:TRequiredFieldValidator ID="validator3"
ControlToValidate="list3"
- InitialValue="Don't select this one"
+ InitialValue="Dont select this one"
ErrorMessage="*" />
-
+
<hr />
-
+
<com:TRadioButtonList ID="list4">
<com:TListItem Text="Select something else" />
<com:TListItem Text="Red" />
<com:TListItem Text="Blue" />
<com:TListItem Text="Green" />
</com:TRadioButtonList>
-
+
<com:TRequiredFieldValidator ID="validator4"
ControlToValidate="list4"
InitialValue="Select something else"
ErrorMessage="*" />
-
+
<com:TButton ID="submit1" Text="Submit!" />
</com:TContent> \ No newline at end of file
diff --git a/tests/FunctionalTests/validators/tests/ButtonTestCase.php b/tests/FunctionalTests/validators/tests/ButtonTestCase.php
index 58001322..90265156 100755
--- a/tests/FunctionalTests/validators/tests/ButtonTestCase.php
+++ b/tests/FunctionalTests/validators/tests/ButtonTestCase.php
@@ -1,63 +1,63 @@
<?php
-class ButtonTestCase extends PradoGenericSeleniumTest
+class ButtonTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open('validators/index.php?page=Button');
+ $this->url('validators/index.php?page=Button');
// verify all error messages are invisible
- $this->verifyNotVisible('ctl0_Content_ctl0');
- $this->verifyNotVisible('ctl0_Content_ctl2');
- $this->verifyNotVisible('ctl0_Content_ctl4');
+ $this->assertNotVisible('ctl0_Content_ctl0');
+ $this->assertNotVisible('ctl0_Content_ctl2');
+ $this->assertNotVisible('ctl0_Content_ctl4');
// verify the first validator shows the error
- $this->click("ctl0_Content_ctl1");
- $this->verifyVisible('ctl0_Content_ctl0');
- $this->verifyNotVisible('ctl0_Content_ctl2');
- $this->verifyNotVisible('ctl0_Content_ctl4');
+ $this->byId("ctl0_Content_ctl1")->click();
+ $this->assertVisible('ctl0_Content_ctl0');
+ $this->assertNotVisible('ctl0_Content_ctl2');
+ $this->assertNotVisible('ctl0_Content_ctl4');
// verify the first validation is passed
$this->pause(500);
- $this->verifyTextNotPresent('Button1 is clicked');
+ $this->assertNotContains('Button1 is clicked', $this->source());
$this->type("ctl0_Content_TextBox1", "test");
- $this->clickAndWait("ctl0_Content_ctl1");
- $this->verifyNotVisible('ctl0_Content_ctl0');
- $this->verifyNotVisible('ctl0_Content_ctl2');
- $this->verifyNotVisible('ctl0_Content_ctl4');
- $this->verifyTextPresent('Button1 is clicked and valid');
+ $this->byId("ctl0_Content_ctl1")->click();
+ $this->assertNotVisible('ctl0_Content_ctl0');
+ $this->assertNotVisible('ctl0_Content_ctl2');
+ $this->assertNotVisible('ctl0_Content_ctl4');
+ $this->assertContains('Button1 is clicked and valid', $this->source());
// verify the second validator shows the error
- $this->click("ctl0_Content_ctl3");
- $this->verifyNotVisible('ctl0_Content_ctl0');
- $this->verifyVisible('ctl0_Content_ctl2');
- $this->verifyNotVisible('ctl0_Content_ctl4');
+ $this->byId("ctl0_Content_ctl3")->click();
+ $this->assertNotVisible('ctl0_Content_ctl0');
+ $this->assertVisible('ctl0_Content_ctl2');
+ $this->assertNotVisible('ctl0_Content_ctl4');
// verify the second validation is passed
$this->pause(500);
- $this->verifyTextNotPresent('Button2 is clicked');
+ $this->assertNotContains('Button2 is clicked', $this->source());
$this->type("ctl0_Content_TextBox2", "test");
- $this->clickAndWait("ctl0_Content_ctl3");
- $this->verifyNotVisible('ctl0_Content_ctl0');
- $this->verifyNotVisible('ctl0_Content_ctl2');
- $this->verifyNotVisible('ctl0_Content_ctl4');
- $this->verifyTextPresent('Button2 is clicked and valid');
+ $this->byId("ctl0_Content_ctl3")->click();
+ $this->assertNotVisible('ctl0_Content_ctl0');
+ $this->assertNotVisible('ctl0_Content_ctl2');
+ $this->assertNotVisible('ctl0_Content_ctl4');
+ $this->assertContains('Button2 is clicked and valid', $this->source());
// verify the third validator shows the error
- $this->clickAndWait("ctl0_Content_ctl5");
- $this->verifyNotVisible('ctl0_Content_ctl0');
- $this->verifyNotVisible('ctl0_Content_ctl2');
- $this->verifyVisible('ctl0_Content_ctl4');
+ $this->byId("ctl0_Content_ctl5")->click();
+ $this->assertNotVisible('ctl0_Content_ctl0');
+ $this->assertNotVisible('ctl0_Content_ctl2');
+ $this->assertVisible('ctl0_Content_ctl4');
// verify the third validation is passed
- $this->verifyTextPresent('Button3 is clicked');
- $this->verifyTextNotPresent('Button3 is clicked and valid');
+ $this->assertContains('Button3 is clicked', $this->source());
+ $this->assertNotContains('Button3 is clicked and valid', $this->source());
$this->type("ctl0_Content_TextBox3", "test");
- $this->clickAndWait("ctl0_Content_ctl5");
- $this->verifyNotVisible('ctl0_Content_ctl0');
- $this->verifyNotVisible('ctl0_Content_ctl2');
- $this->verifyNotVisible('ctl0_Content_ctl4');
- $this->verifyTextPresent('Button3 is clicked and valid');
+ $this->byId("ctl0_Content_ctl5")->click();
+ $this->assertNotVisible('ctl0_Content_ctl0');
+ $this->assertNotVisible('ctl0_Content_ctl2');
+ $this->assertNotVisible('ctl0_Content_ctl4');
+ $this->assertContains('Button3 is clicked and valid', $this->source());
}
}
diff --git a/tests/FunctionalTests/validators/tests/CheckBoxTestCase.php b/tests/FunctionalTests/validators/tests/CheckBoxTestCase.php
index 847cbc9a..8e6e1583 100755
--- a/tests/FunctionalTests/validators/tests/CheckBoxTestCase.php
+++ b/tests/FunctionalTests/validators/tests/CheckBoxTestCase.php
@@ -1,65 +1,65 @@
<?php
-class CheckBoxTestCase extends PradoGenericSeleniumTest
+class CheckBoxTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open('validators/index.php?page=CheckBox');
+ $this->url('validators/index.php?page=CheckBox');
// verify all error messages are invisible
- $this->verifyNotVisible('ctl0_Content_ctl0');
- $this->verifyNotVisible('ctl0_Content_ctl2');
- $this->verifyNotVisible('ctl0_Content_ctl4');
+ $this->assertNotVisible('ctl0_Content_ctl0');
+ $this->assertNotVisible('ctl0_Content_ctl2');
+ $this->assertNotVisible('ctl0_Content_ctl4');
// verify the first validator shows the error
- $this->click("ctl0_Content_ctl1");
- $this->verifyVisible('ctl0_Content_ctl0');
- $this->verifyNotVisible('ctl0_Content_ctl2');
- $this->verifyNotVisible('ctl0_Content_ctl4');
+ $this->byId("ctl0_Content_ctl1")->click();
+ $this->assertVisible('ctl0_Content_ctl0');
+ $this->assertNotVisible('ctl0_Content_ctl2');
+ $this->assertNotVisible('ctl0_Content_ctl4');
// verify the first validation is passed
$this->pause(500);
- $this->verifyTextNotPresent('Button1 is clicked');
+ $this->assertNotContains('Button1 is clicked', $this->source());
$this->type("ctl0_Content_TextBox1", "test");
- $this->clickAndWait("ctl0_Content_ctl1");
- $this->clickAndWait("ctl0_Content_ctl1");
- $this->verifyNotVisible('ctl0_Content_ctl0');
- $this->verifyNotVisible('ctl0_Content_ctl2');
- $this->verifyNotVisible('ctl0_Content_ctl4');
- $this->verifyTextPresent('Button1 is clicked and valid');
+ $this->byId("ctl0_Content_ctl1")->click();
+ $this->byId("ctl0_Content_ctl1")->click();
+ $this->assertNotVisible('ctl0_Content_ctl0');
+ $this->assertNotVisible('ctl0_Content_ctl2');
+ $this->assertNotVisible('ctl0_Content_ctl4');
+ $this->assertContains('Button1 is clicked and valid', $this->source());
// verify the second validator shows the error
- $this->click("ctl0_Content_ctl3");
- $this->verifyNotVisible('ctl0_Content_ctl0');
- $this->verifyVisible('ctl0_Content_ctl2');
- $this->verifyNotVisible('ctl0_Content_ctl4');
+ $this->byId("ctl0_Content_ctl3")->click();
+ $this->assertNotVisible('ctl0_Content_ctl0');
+ $this->assertVisible('ctl0_Content_ctl2');
+ $this->assertNotVisible('ctl0_Content_ctl4');
// verify the second validation is passed
$this->pause(500);
- $this->verifyTextNotPresent('Button2 is clicked');
+ $this->assertNotContains('Button2 is clicked', $this->source());
$this->type("ctl0_Content_TextBox2", "test");
- $this->clickAndWait("ctl0_Content_ctl3");
- $this->clickAndWait("ctl0_Content_ctl3");
- $this->verifyNotVisible('ctl0_Content_ctl0');
- $this->verifyNotVisible('ctl0_Content_ctl2');
- $this->verifyNotVisible('ctl0_Content_ctl4');
- $this->verifyTextPresent('Button2 is clicked and valid');
+ $this->byId("ctl0_Content_ctl3")->click();
+ $this->byId("ctl0_Content_ctl3")->click();
+ $this->assertNotVisible('ctl0_Content_ctl0');
+ $this->assertNotVisible('ctl0_Content_ctl2');
+ $this->assertNotVisible('ctl0_Content_ctl4');
+ $this->assertContains('Button2 is clicked and valid', $this->source());
// verify the third validator shows the error
- $this->clickAndWait("ctl0_Content_ctl5");
- $this->verifyNotVisible('ctl0_Content_ctl0');
- $this->verifyNotVisible('ctl0_Content_ctl2');
- $this->verifyVisible('ctl0_Content_ctl4');
+ $this->byId("ctl0_Content_ctl5")->click();
+ $this->assertNotVisible('ctl0_Content_ctl0');
+ $this->assertNotVisible('ctl0_Content_ctl2');
+ $this->assertVisible('ctl0_Content_ctl4');
// verify the third validation is passed
- $this->verifyTextPresent('Button3 is clicked');
- $this->verifyTextNotPresent('Button3 is clicked and valid');
+ $this->assertContains('Button3 is clicked', $this->source());
+ $this->assertNotContains('Button3 is clicked and valid', $this->source());
$this->type("ctl0_Content_TextBox3", "test");
- $this->clickAndWait("ctl0_Content_ctl5");
- $this->verifyNotVisible('ctl0_Content_ctl0');
- $this->verifyNotVisible('ctl0_Content_ctl2');
- $this->verifyNotVisible('ctl0_Content_ctl4');
- $this->verifyTextPresent('Button3 is clicked and valid');
+ $this->byId("ctl0_Content_ctl5")->click();
+ $this->assertNotVisible('ctl0_Content_ctl0');
+ $this->assertNotVisible('ctl0_Content_ctl2');
+ $this->assertNotVisible('ctl0_Content_ctl4');
+ $this->assertContains('Button3 is clicked and valid', $this->source());
}
}
diff --git a/tests/FunctionalTests/validators/tests/CompareValidatorTestCase.php b/tests/FunctionalTests/validators/tests/CompareValidatorTestCase.php
index 187351c1..bdc2e4a9 100755
--- a/tests/FunctionalTests/validators/tests/CompareValidatorTestCase.php
+++ b/tests/FunctionalTests/validators/tests/CompareValidatorTestCase.php
@@ -1,42 +1,42 @@
<?php
//New Test
-class CompareValidatorTestCase extends PradoGenericSeleniumTest
+class CompareValidatorTestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = "ctl0_Content_";
-
- $this->open("validators/index.php?page=CompareValidator", "");
- $this->verifyTextPresent("Prado CompareValidator Tests", "");
+
+ $this->url("validators/index.php?page=CompareValidator");
+ $this->assertContains("Prado CompareValidator Tests", $this->source());
$this->type("{$base}text1", "qwe");
$this->assertNotVisible("{$base}validator1");
$this->assertNotVisible("{$base}validator2");
-
- $this->click("//input[@type='submit' and @value='Test']", "");
+
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
$this->type("{$base}text2", "1234");
- $this->click("//input[@type='submit' and @value='Test']", "");
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
$this->assertVisible("{$base}validator1");
$this->type("{$base}text2", "qwe");
- $this->clickAndWait("//input[@type='submit' and @value='Test']", "");
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
$this->assertNotVisible("{$base}validator1");
$this->assertNotVisible("{$base}validator2");
-
+
$this->type("{$base}text3", "12312");
- $this->click("//input[@type='submit' and @value='Test']", "");
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
$this->assertVisible("{$base}validator2");
-
+
$this->type("{$base}text3", "13/1/2005");
$this->assertVisible("{$base}validator2");
-
+
$this->type("{$base}text3", "12/1/2005");
- $this->clickAndWait("//input[@type='submit' and @value='Test']", "");
-
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
+
$this->assertNotVisible("{$base}validator1");
$this->assertNotVisible("{$base}validator2");
diff --git a/tests/FunctionalTests/validators/tests/ConditionalValidationTestCase.php b/tests/FunctionalTests/validators/tests/ConditionalValidationTestCase.php
index 02b174ef..32e79a90 100755
--- a/tests/FunctionalTests/validators/tests/ConditionalValidationTestCase.php
+++ b/tests/FunctionalTests/validators/tests/ConditionalValidationTestCase.php
@@ -1,52 +1,52 @@
<?php
-class ConditionalValidationTestCase extends PradoGenericSeleniumTest
+class ConditionalValidationTestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = "ctl0_Content_";
- $this->open("validators/index.php?page=ConditionalValidation", "");
- $this->verifyTextPresent("Conditional Validation (clientside + server side)", "");
- $this->assertNotVisible("{$base}validator1", "");
- $this->assertNotVisible("{$base}validator2", "");
+ $this->url("validators/index.php?page=ConditionalValidation");
+ $this->assertContains("Conditional Validation (clientside + server side)", $this->source());
+ $this->assertNotVisible("{$base}validator1");
+ $this->assertNotVisible("{$base}validator2");
- $this->click("{$base}submit1");
- $this->assertVisible("{$base}validator1", "");
- $this->assertNotVisible("{$base}validator2", "");
+ $this->byId("{$base}submit1")->click();
+ $this->assertVisible("{$base}validator1");
+ $this->assertNotVisible("{$base}validator2");
- $this->click("{$base}check1");
- $this->click("{$base}submit1");
- $this->assertVisible("{$base}validator1", "");
- $this->assertVisible("{$base}validator2", "");
+ $this->byId("{$base}check1")->click();
+ $this->byId("{$base}submit1")->click();
+ $this->assertVisible("{$base}validator1");
+ $this->assertVisible("{$base}validator2");
- $this->click("{$base}check1");
- $this->click("{$base}submit1");
- $this->assertVisible("{$base}validator1", "");
- $this->assertNotVisible("{$base}validator2", "");
+ $this->byId("{$base}check1")->click();
+ $this->byId("{$base}submit1")->click();
+ $this->assertVisible("{$base}validator1");
+ $this->assertNotVisible("{$base}validator2");
$this->type("{$base}text1", "testing");
- $this->clickAndWait("{$base}submit1");
- $this->assertNotVisible("{$base}validator1", "");
- $this->assertNotVisible("{$base}validator2", "");
+ $this->byId("{$base}submit1")->click();
+ $this->assertNotVisible("{$base}validator1");
+ $this->assertNotVisible("{$base}validator2");
$this->type("{$base}text1" ,"");
- $this->click("{$base}check1");
- $this->click("{$base}submit1");
- $this->assertVisible("{$base}validator1", "");
- $this->assertVisible("{$base}validator2", "");
+ $this->byId("{$base}check1")->click();
+ $this->byId("{$base}submit1")->click();
+ $this->assertVisible("{$base}validator1");
+ $this->assertVisible("{$base}validator2");
$this->type("{$base}text1", "test");
$this->type("{$base}text2", "123");
- $this->clickAndWait("{$base}submit1");
- $this->assertNotVisible("{$base}validator1", "");
- $this->assertNotVisible("{$base}validator2", "");
+ $this->byId("{$base}submit1")->click();
+ $this->assertNotVisible("{$base}validator1");
+ $this->assertNotVisible("{$base}validator2");
- $this->click("{$base}check1");
+ $this->byId("{$base}check1")->click();
$this->type("{$base}text1", "");
$this->type("{$base}text2", "");
- $this->click("{$base}submit1");
- $this->assertVisible("{$base}validator1", "");
- $this->assertNotVisible("{$base}validator2", "");
+ $this->byId("{$base}submit1")->click();
+ $this->assertVisible("{$base}validator1");
+ $this->assertNotVisible("{$base}validator2");
}
diff --git a/tests/FunctionalTests/validators/tests/CustomValidatorTestCase.php b/tests/FunctionalTests/validators/tests/CustomValidatorTestCase.php
index 106f7a00..ca48a453 100755
--- a/tests/FunctionalTests/validators/tests/CustomValidatorTestCase.php
+++ b/tests/FunctionalTests/validators/tests/CustomValidatorTestCase.php
@@ -1,18 +1,18 @@
<?php
//New Test
-class CustomValidatorTestCase extends PradoGenericSeleniumTest
+class CustomValidatorTestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = "ctl0_Content_";
- $this->open("validators/index.php?page=CustomValidator", "");
- $this->assertTextPresent("Prado CustomValidator Tests", "");
+ $this->url("validators/index.php?page=CustomValidator");
+ $this->assertContains("Prado CustomValidator Tests", $this->source());
$this->assertNotVisible("{$base}validator1");
- $this->click("//input[@type='submit' and @value='Test']", "");
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
$this->assertVisible("{$base}validator1");
-
+
$this->type("{$base}text1", "Prado");
$this->pause(250);
$this->assertNotVisible("{$base}validator1");
@@ -22,7 +22,7 @@ class CustomValidatorTestCase extends PradoGenericSeleniumTest
$this->type("{$base}text1", "Prado");
$this->pause(250);
$this->assertNotVisible("{$base}validator1");
- $this->clickAndWait("//input[@type='submit' and @value='Test']", "");
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
$this->assertNotVisible("{$base}validator1");
}
diff --git a/tests/FunctionalTests/validators/tests/DataTypeValidatorTestCase.php b/tests/FunctionalTests/validators/tests/DataTypeValidatorTestCase.php
index 7ec220f0..cad00f1f 100755
--- a/tests/FunctionalTests/validators/tests/DataTypeValidatorTestCase.php
+++ b/tests/FunctionalTests/validators/tests/DataTypeValidatorTestCase.php
@@ -3,16 +3,15 @@
* Created on 25/04/2006
*/
-class DataTypeValidatorTestCase extends PradoGenericSeleniumTest
+class DataTypeValidatorTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->setSpeed(500);
$base = "ctl0_Content_";
- $this->open("validators/index.php?page=DataTypeValidator", "");
- $this->verifyTextPresent("Data Type Validator Tests", "");
- $this->click("//input[@type='submit' and @value='submit!']", "");
-
+ $this->url("validators/index.php?page=DataTypeValidator");
+ $this->assertContains("Data Type Validator Tests", $this->source());
+ $this->byXPath("//input[@type='submit' and @value='submit!']")->click();
+
$this->assertNotVisible("{$base}validator1");
$this->assertNotVisible("{$base}validator2");
$this->assertNotVisible("{$base}validator3");
@@ -20,31 +19,30 @@ class DataTypeValidatorTestCase extends PradoGenericSeleniumTest
$this->type("{$base}textbox1", "a");
$this->type("{$base}textbox2", "b");
$this->type("{$base}textbox3", "c");
- $this->click("//input[@type='submit' and @value='submit!']", "");
+ $this->byXPath("//input[@type='submit' and @value='submit!']")->click();
$this->assertVisible("{$base}validator1");
$this->assertVisible("{$base}validator2");
$this->assertVisible("{$base}validator3");
-
+
$this->type("{$base}textbox1", "12");
$this->type("{$base}textbox2", "12.5");
$this->type("{$base}textbox3", "2/10/2005");
- $this->clickAndWait("//input[@type='submit' and @value='submit!']", "");
-
+ $this->byXPath("//input[@type='submit' and @value='submit!']")->click();
+
$this->assertNotVisible("{$base}validator1");
$this->assertNotVisible("{$base}validator2");
$this->assertNotVisible("{$base}validator3");
-
+
$this->type("{$base}textbox1", "12.2");
$this->type("{$base}textbox2", "-12.5");
$this->type("{$base}textbox3", "2/13/2005");
- $this->click("//input[@type='submit' and @value='submit!']", "");
-
+ $this->byXPath("//input[@type='submit' and @value='submit!']")->click();
+
$this->assertVisible("{$base}validator1");
$this->assertNotVisible("{$base}validator2");
$this->assertVisible("{$base}validator3");
- $this->setSpeed(0);
}
-
-}
+
+}
diff --git a/tests/FunctionalTests/validators/tests/DatePickerTestCase.php b/tests/FunctionalTests/validators/tests/DatePickerTestCase.php
index e7425a33..ab68a619 100755
--- a/tests/FunctionalTests/validators/tests/DatePickerTestCase.php
+++ b/tests/FunctionalTests/validators/tests/DatePickerTestCase.php
@@ -1,70 +1,68 @@
<?php
-class DatePickerTestCase extends PradoGenericSeleniumTest
+class DatePickerTestCase extends PradoGenericSelenium2Test
{
function test()
{
$year=2012;
$year2=2013;
$base = "ctl0_Content_";
- $this->open("validators/index.php?page=DatePicker", "");
- $this->verifyTextPresent("Date Picker validation Test", "");
- $this->assertNotVisible("{$base}validator1", "");
- $this->assertNotVisible("{$base}validator2", "");
- $this->assertNotVisible("{$base}validator4", "");
- $this->assertNotVisible("{$base}validator5", "");
- $this->assertNotVisible("{$base}validator6", "");
- $this->assertNotVisible("{$base}validator8", "");
+ $this->url("validators/index.php?page=DatePicker");
+ $this->assertContains("Date Picker validation Test", $this->source());
+ $this->assertNotVisible("{$base}validator1");
+ $this->assertNotVisible("{$base}validator2");
+ $this->assertNotVisible("{$base}validator4");
+ $this->assertNotVisible("{$base}validator5");
+ $this->assertNotVisible("{$base}validator6");
+ $this->assertNotVisible("{$base}validator8");
- $this->click("{$base}submit1");
- $this->assertVisible("{$base}validator1", "");
- $this->assertNotVisible("{$base}validator2", "");
+ $this->byId("{$base}submit1")->click();
+ $this->assertVisible("{$base}validator1");
+ $this->assertNotVisible("{$base}validator2");
//the range validator is visible because the date is a drop down list
//thus has default value != ""
- $this->assertVisible("{$base}validator4", "");
- $this->assertVisible("{$base}validator5", "");
- $this->assertNotVisible("{$base}validator6", "");
- $this->assertVisible("{$base}validator8", "");
+ $this->assertVisible("{$base}validator4");
+ $this->assertVisible("{$base}validator5");
+ $this->assertNotVisible("{$base}validator6");
+ $this->assertVisible("{$base}validator8");
- $this->click("{$base}submit1");
- $this->pause(250);
$this->type("{$base}picker1", "13/4/$year");
- $this->select("{$base}picker2_month", "label=9");
- $this->select("{$base}picker2_day", "label=10");
- $this->select("{$base}picker2_year", "label=$year");
+ $this->select("{$base}picker2_month", "9");
+ $this->select("{$base}picker2_day", "10");
+ $this->select("{$base}picker2_year", "$year");
$this->pause(250);
$this->type("{$base}picker3", "14/4/$year");
$this->pause(250);
$this->type("{$base}picker4", "7/4/$year");
- $this->select("{$base}picker5_day", "label=6");
- $this->select("{$base}picker5_month", "label=3");
- $this->select("{$base}picker5_year", "label=$year2");
- $this->select("{$base}picker6_month", "label=3");
- $this->select("{$base}picker6_year", "label=$year2");
- $this->select("{$base}picker6_day", "label=5");
-
- $this->click("{$base}submit1");
+ $this->select("{$base}picker5_day", "6");
+ $this->select("{$base}picker5_month", "3");
+ $this->select("{$base}picker5_year", "$year2");
+ $this->select("{$base}picker6_month", "3");
+ $this->select("{$base}picker6_year", "$year2");
+ $this->select("{$base}picker6_day", "5");
+ $this->byId("{$base}submit1")->click();
+ $this->pause(500);
- $this->assertNotVisible("{$base}validator1", "");
- $this->assertVisible("{$base}validator2", "");
- $this->assertNotVisible("{$base}validator4", "");
- $this->assertNotVisible("{$base}validator5", "");
- $this->assertVisible("{$base}validator6", "");
- $this->assertVisible("{$base}validator8", "");
+ $this->assertNotVisible("{$base}validator1");
+ $this->assertVisible("{$base}validator2");
+ $this->assertNotVisible("{$base}validator4");
+ $this->assertNotVisible("{$base}validator5");
+ $this->assertVisible("{$base}validator6");
+ $this->assertVisible("{$base}validator8");
$this->type("{$base}picker1", "20/4/$year2");
$this->type("{$base}picker4", "29/4/$year");
- $this->select("{$base}picker6_day", "label=10");
+ $this->select("{$base}picker6_day", "10");
- $this->clickAndWait("{$base}submit1");
+ $this->byId("{$base}submit1")->click();
- $this->assertNotVisible("{$base}validator1", "");
- $this->assertNotVisible("{$base}validator2", "");
- $this->assertNotVisible("{$base}validator4", "");
- $this->assertNotVisible("{$base}validator5", "");
- $this->assertNotVisible("{$base}validator6", "");
- $this->assertNotVisible("{$base}validator8", "");
+ $this->assertNotVisible("{$base}validator1");
+ $this->assertNotVisible("{$base}validator2");
+ $this->assertNotVisible("{$base}validator4");
+ $this->assertNotVisible("{$base}validator5");
+ $this->assertNotVisible("{$base}validator6");
+ $this->assertNotVisible("{$base}validator8");
}
}
diff --git a/tests/FunctionalTests/validators/tests/ImageButtonTestCase.php b/tests/FunctionalTests/validators/tests/ImageButtonTestCase.php
index e6b5d6d8..800e36ff 100755
--- a/tests/FunctionalTests/validators/tests/ImageButtonTestCase.php
+++ b/tests/FunctionalTests/validators/tests/ImageButtonTestCase.php
@@ -1,63 +1,63 @@
<?php
-class ImageButtonTestCase extends PradoGenericSeleniumTest
+class ImageButtonTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open('validators/index.php?page=ImageButton');
+ $this->url('validators/index.php?page=ImageButton');
// verify all error messages are invisible
- $this->verifyNotVisible('ctl0_Content_ctl0');
- $this->verifyNotVisible('ctl0_Content_ctl2');
- $this->verifyNotVisible('ctl0_Content_ctl4');
+ $this->assertNotVisible('ctl0_Content_ctl0');
+ $this->assertNotVisible('ctl0_Content_ctl2');
+ $this->assertNotVisible('ctl0_Content_ctl4');
// verify the first validator shows the error
- $this->click("ctl0_Content_ctl1");
- $this->verifyVisible('ctl0_Content_ctl0');
- $this->verifyNotVisible('ctl0_Content_ctl2');
- $this->verifyNotVisible('ctl0_Content_ctl4');
+ $this->byId("ctl0_Content_ctl1")->click();
+ $this->assertVisible('ctl0_Content_ctl0');
+ $this->assertNotVisible('ctl0_Content_ctl2');
+ $this->assertNotVisible('ctl0_Content_ctl4');
// verify the first validation is passed
$this->pause(500);
- $this->verifyTextNotPresent('Button1 is clicked');
+ $this->assertNotContains('Button1 is clicked', $this->source());
$this->type("ctl0_Content_TextBox1", "test");
- $this->clickAndWait("ctl0_Content_ctl1");
- $this->verifyNotVisible('ctl0_Content_ctl0');
- $this->verifyNotVisible('ctl0_Content_ctl2');
- $this->verifyNotVisible('ctl0_Content_ctl4');
- $this->verifyTextPresent('Button1 is clicked and valid');
+ $this->byId("ctl0_Content_ctl1")->click();
+ $this->assertNotVisible('ctl0_Content_ctl0');
+ $this->assertNotVisible('ctl0_Content_ctl2');
+ $this->assertNotVisible('ctl0_Content_ctl4');
+ $this->assertContains('Button1 is clicked and valid', $this->source());
// verify the second validator shows the error
- $this->click("ctl0_Content_ctl3");
- $this->verifyNotVisible('ctl0_Content_ctl0');
- $this->verifyVisible('ctl0_Content_ctl2');
- $this->verifyNotVisible('ctl0_Content_ctl4');
+ $this->byId("ctl0_Content_ctl3")->click();
+ $this->assertNotVisible('ctl0_Content_ctl0');
+ $this->assertVisible('ctl0_Content_ctl2');
+ $this->assertNotVisible('ctl0_Content_ctl4');
// verify the second validation is passed
$this->pause(500);
- $this->verifyTextNotPresent('Button2 is clicked');
+ $this->assertNotContains('Button2 is clicked', $this->source());
$this->type("ctl0_Content_TextBox2", "test");
- $this->clickAndWait("ctl0_Content_ctl3");
- $this->verifyNotVisible('ctl0_Content_ctl0');
- $this->verifyNotVisible('ctl0_Content_ctl2');
- $this->verifyNotVisible('ctl0_Content_ctl4');
- $this->verifyTextPresent('Button2 is clicked and valid');
+ $this->byId("ctl0_Content_ctl3")->click();
+ $this->assertNotVisible('ctl0_Content_ctl0');
+ $this->assertNotVisible('ctl0_Content_ctl2');
+ $this->assertNotVisible('ctl0_Content_ctl4');
+ $this->assertContains('Button2 is clicked and valid', $this->source());
// verify the third validator shows the error
- $this->clickAndWait("ctl0_Content_ctl5");
- $this->verifyNotVisible('ctl0_Content_ctl0');
- $this->verifyNotVisible('ctl0_Content_ctl2');
- $this->verifyVisible('ctl0_Content_ctl4');
+ $this->byId("ctl0_Content_ctl5")->click();
+ $this->assertNotVisible('ctl0_Content_ctl0');
+ $this->assertNotVisible('ctl0_Content_ctl2');
+ $this->assertVisible('ctl0_Content_ctl4');
// verify the third validation is passed
- $this->verifyTextPresent('Button3 is clicked');
- $this->verifyTextNotPresent('Button3 is clicked and valid');
+ $this->assertContains('Button3 is clicked', $this->source());
+ $this->assertNotContains('Button3 is clicked and valid', $this->source());
$this->type("ctl0_Content_TextBox3", "test");
- $this->clickAndWait("ctl0_Content_ctl5");
- $this->verifyNotVisible('ctl0_Content_ctl0');
- $this->verifyNotVisible('ctl0_Content_ctl2');
- $this->verifyNotVisible('ctl0_Content_ctl4');
- $this->verifyTextPresent('Button3 is clicked and valid');
+ $this->byId("ctl0_Content_ctl5")->click();
+ $this->assertNotVisible('ctl0_Content_ctl0');
+ $this->assertNotVisible('ctl0_Content_ctl2');
+ $this->assertNotVisible('ctl0_Content_ctl4');
+ $this->assertContains('Button3 is clicked and valid', $this->source());
}
}
diff --git a/tests/FunctionalTests/validators/tests/LinkButtonTestCase.php b/tests/FunctionalTests/validators/tests/LinkButtonTestCase.php
index b523452c..394556e9 100755
--- a/tests/FunctionalTests/validators/tests/LinkButtonTestCase.php
+++ b/tests/FunctionalTests/validators/tests/LinkButtonTestCase.php
@@ -1,62 +1,62 @@
<?php
-class LinkButtonTestCase extends PradoGenericSeleniumTest
+class LinkButtonTestCase extends PradoGenericSelenium2Test
{
function test()
{
- $this->open('validators/index.php?page=LinkButton');
+ $this->url('validators/index.php?page=LinkButton');
// verify all error messages are invisible
- $this->verifyNotVisible('ctl0_Content_ctl0');
- $this->verifyNotVisible('ctl0_Content_ctl2');
- $this->verifyNotVisible('ctl0_Content_ctl4');
+ $this->assertNotVisible('ctl0_Content_ctl0');
+ $this->assertNotVisible('ctl0_Content_ctl2');
+ $this->assertNotVisible('ctl0_Content_ctl4');
// verify the first validator shows the error
- $this->click("ctl0_Content_ctl1");
- $this->verifyVisible('ctl0_Content_ctl0');
- $this->verifyNotVisible('ctl0_Content_ctl2');
- $this->verifyNotVisible('ctl0_Content_ctl4');
+ $this->byId("ctl0_Content_ctl1")->click();
+ $this->assertVisible('ctl0_Content_ctl0');
+ $this->assertNotVisible('ctl0_Content_ctl2');
+ $this->assertNotVisible('ctl0_Content_ctl4');
// verify the first validation is passed
$this->pause(500);
- $this->verifyTextNotPresent('Button1 is clicked');
+ $this->assertNotContains('Button1 is clicked', $this->source());
$this->type("ctl0_Content_TextBox1", "test");
- $this->clickAndWait("ctl0_Content_ctl1");
- $this->verifyNotVisible('ctl0_Content_ctl0');
- $this->verifyNotVisible('ctl0_Content_ctl2');
- $this->verifyNotVisible('ctl0_Content_ctl4');
- $this->verifyTextPresent('Button1 is clicked and valid');
+ $this->byId("ctl0_Content_ctl1")->click();
+ $this->assertNotVisible('ctl0_Content_ctl0');
+ $this->assertNotVisible('ctl0_Content_ctl2');
+ $this->assertNotVisible('ctl0_Content_ctl4');
+ $this->assertContains('Button1 is clicked and valid', $this->source());
// verify the second validator shows the error
- $this->click("ctl0_Content_ctl3");
- $this->verifyNotVisible('ctl0_Content_ctl0');
- $this->verifyVisible('ctl0_Content_ctl2');
- $this->verifyNotVisible('ctl0_Content_ctl4');
+ $this->byId("ctl0_Content_ctl3")->click();
+ $this->assertNotVisible('ctl0_Content_ctl0');
+ $this->assertVisible('ctl0_Content_ctl2');
+ $this->assertNotVisible('ctl0_Content_ctl4');
// verify the second validation is passed
$this->pause(500);
- $this->verifyTextNotPresent('Button2 is clicked');
+ $this->assertNotContains('Button2 is clicked', $this->source());
$this->type("ctl0_Content_TextBox2", "test");
- $this->clickAndWait("ctl0_Content_ctl3");
- $this->verifyNotVisible('ctl0_Content_ctl0');
- $this->verifyNotVisible('ctl0_Content_ctl2');
- $this->verifyNotVisible('ctl0_Content_ctl4');
- $this->verifyTextPresent('Button2 is clicked and valid');
+ $this->byId("ctl0_Content_ctl3")->click();
+ $this->assertNotVisible('ctl0_Content_ctl0');
+ $this->assertNotVisible('ctl0_Content_ctl2');
+ $this->assertNotVisible('ctl0_Content_ctl4');
+ $this->assertContains('Button2 is clicked and valid', $this->source());
// verify the third validator shows the error
- $this->clickAndWait("ctl0_Content_ctl5");
- $this->verifyNotVisible('ctl0_Content_ctl0');
- $this->verifyNotVisible('ctl0_Content_ctl2');
- $this->verifyVisible('ctl0_Content_ctl4');
+ $this->byId("ctl0_Content_ctl5")->click();
+ $this->assertNotVisible('ctl0_Content_ctl0');
+ $this->assertNotVisible('ctl0_Content_ctl2');
+ $this->assertVisible('ctl0_Content_ctl4');
// verify the third validation is passed
- $this->verifyTextPresent('Button3 is clicked');
- $this->verifyTextNotPresent('Button3 is clicked and valid');
+ $this->assertContains('Button3 is clicked', $this->source());
+ $this->assertNotContains('Button3 is clicked and valid', $this->source());
$this->type("ctl0_Content_TextBox3", "test");
- $this->clickAndWait("ctl0_Content_ctl5");
- $this->verifyNotVisible('ctl0_Content_ctl0');
- $this->verifyNotVisible('ctl0_Content_ctl2');
- $this->verifyNotVisible('ctl0_Content_ctl4');
- $this->verifyTextPresent('Button3 is clicked and valid');
+ $this->byId("ctl0_Content_ctl5")->click();
+ $this->assertNotVisible('ctl0_Content_ctl0');
+ $this->assertNotVisible('ctl0_Content_ctl2');
+ $this->assertNotVisible('ctl0_Content_ctl4');
+ $this->assertContains('Button3 is clicked and valid', $this->source());
}
}
diff --git a/tests/FunctionalTests/validators/tests/ListControlTestCase.php b/tests/FunctionalTests/validators/tests/ListControlTestCase.php
index 68feee84..55e370c5 100755
--- a/tests/FunctionalTests/validators/tests/ListControlTestCase.php
+++ b/tests/FunctionalTests/validators/tests/ListControlTestCase.php
@@ -3,38 +3,39 @@
* Created on 24/04/2006
*/
-class ListControlTestCase extends PradoGenericSeleniumTest
+class ListControlTestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = "ctl0_Content_";
- $this->open("validators/index.php?page=ListControl", "");
- $this->verifyTextPresent("List Control Required Field Validation Test", "");
- $this->click("//input[@type='submit' and @value='Submit!']", "");
+ $this->url("validators/index.php?page=ListControl");
+ $this->assertContains("List Control Required Field Validation Test", $this->source());
+ $this->byXPath("//input[@type='submit' and @value='Submit!']")->click();
$this->assertVisible("{$base}validator1");
$this->assertVisible("{$base}validator2");
$this->assertVisible("{$base}validator3");
$this->assertVisible("{$base}validator4");
- $this->click("//input[@id='{$base}list1_c1' and @value='Red']", "");
- $this->select("{$base}list2", "label=Red");
- $this->select("{$base}list3", "label=Blue");
- $this->click("{$base}list4_c3", "");
- $this->clickAndWait("//input[@type='submit' and @value='Submit!']", "");
+ $this->byXPath("//input[@id='{$base}list1_c1' and @value='Red']")->click();
+ $this->select("{$base}list2", "Red");
+ $this->select("{$base}list3", "Blue");
+ $this->byId("{$base}list4_c3")->click();
+ $this->byXPath("//input[@type='submit' and @value='Submit!']")->click();
$this->assertNotVisible("{$base}validator1");
$this->assertNotVisible("{$base}validator2");
$this->assertNotVisible("{$base}validator3");
$this->assertNotVisible("{$base}validator4");
- $this->select("{$base}list3", "label=Don't select this one");
- $this->click("{$base}list4_c0");
- $this->select("{$base}list2", "label=--- Select a color ---");
- $this->click("//input[@type='submit' and @value='Submit!']", "");
- $this->click("//input[@id='{$base}list1_c1' and @value='Red']", "");
- $this->click("//input[@id='{$base}list1_c0' and @value='Select a color below']", "");
- $this->click("//input[@type='submit' and @value='Submit!']", "");
+ //invalid selector: Unable to locate an element with the xpath expression .//option[.='Don\'t select this one'] because of the following error: SyntaxError: Failed to execute 'evaluate' on 'Document': The string './/option[.='Don\'t select this one']' is not a valid XPath expression.
+ $this->select("{$base}list3", "Dont select this one");
+ $this->byId("{$base}list4_c0")->click();
+ $this->select("{$base}list2", "--- Select a color ---");
+ $this->byXPath("//input[@type='submit' and @value='Submit!']")->click();
+ $this->byXPath("//input[@id='{$base}list1_c1' and @value='Red']")->click();
+ $this->byXPath("//input[@id='{$base}list1_c0' and @value='Select a color below']")->click();
+ $this->byXPath("//input[@type='submit' and @value='Submit!']")->click();
$this->assertVisible("{$base}validator1");
$this->assertVisible("{$base}validator2");
diff --git a/tests/FunctionalTests/validators/tests/RangeValidatorTestCase.php b/tests/FunctionalTests/validators/tests/RangeValidatorTestCase.php
index 022ee7f6..485c6a24 100755
--- a/tests/FunctionalTests/validators/tests/RangeValidatorTestCase.php
+++ b/tests/FunctionalTests/validators/tests/RangeValidatorTestCase.php
@@ -1,166 +1,166 @@
<?php
//New Test
-class RangeValidatorTestCase extends PradoGenericSeleniumTest
+class RangeValidatorTestCase extends PradoGenericSelenium2Test
{
function testIntegerRange()
{
$base = "ctl0_Content_";
- $this->open("validators/index.php?page=RangeValidatorInteger", "");
- $this->verifyTextPresent("Prado RangeValidator Tests Integer", "");
-
+ $this->url("validators/index.php?page=RangeValidatorInteger");
+ $this->assertContains("Prado RangeValidator Tests Integer", $this->source());
+
//between 1 and 4
$this->type("{$base}text1", "ad");
- $this->assertNotVisible("{$base}validator1", "");
- $this->click("//input[@type='submit' and @value='Test']", "");
- $this->assertVisible("{$base}validator1", "");
+ $this->assertNotVisible("{$base}validator1");
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
+ $this->assertVisible("{$base}validator1");
$this->type("{$base}text1", "12");
- $this->click("//input[@type='submit' and @value='Test']", "");
- $this->assertVisible("{$base}validator1", "");
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
+ $this->assertVisible("{$base}validator1");
$this->type("{$base}text1", "2");
- $this->assertNotVisible("{$base}validator1", "");
- $this->clickAndWait("//input[@type='submit' and @value='Test']", "");
- $this->assertNotVisible("{$base}validator1", "");
-
-
+ $this->assertNotVisible("{$base}validator1");
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
+ $this->assertNotVisible("{$base}validator1");
+
+
// >= 2
- $this->assertNotVisible("{$base}validator2", "");
+ $this->assertNotVisible("{$base}validator2");
$this->type("{$base}text2", "1");
- $this->click("//input[@type='submit' and @value='Test']", "");
- $this->assertVisible("{$base}validator2", "");
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
+ $this->assertVisible("{$base}validator2");
$this->type("{$base}text2", "10");
- $this->clickAndWait("//input[@type='submit' and @value='Test']", "");
- $this->assertNotVisible("{$base}validator2", "");
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
+ $this->assertNotVisible("{$base}validator2");
// <= 20
- $this->assertNotVisible("{$base}validator3", "");
+ $this->assertNotVisible("{$base}validator3");
$this->type("{$base}text3", "100");
- $this->click("//input[@type='submit' and @value='Test']", "");
- $this->assertVisible("{$base}validator3", "");
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
+ $this->assertVisible("{$base}validator3");
$this->type("{$base}text3", "10");
- $this->clickAndWait("//input[@type='submit' and @value='Test']", "");
- $this->assertNotVisible("{$base}validator3", "");
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
+ $this->assertNotVisible("{$base}validator3");
}
-
+
function testFloatRange()
{
$base = "ctl0_Content_";
- $this->open("validators/index.php?page=RangeValidatorFloat", "");
- $this->verifyTextPresent("Prado RangeValidator Tests Float", "");
-
+ $this->url("validators/index.php?page=RangeValidatorFloat");
+ $this->assertContains("Prado RangeValidator Tests Float", $this->source());
+
//between 1 and 4
$this->type("{$base}text1", "ad");
- $this->assertNotVisible("{$base}validator1", "");
- $this->click("//input[@type='submit' and @value='Test']", "");
- $this->assertVisible("{$base}validator1", "");
+ $this->assertNotVisible("{$base}validator1");
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
+ $this->assertVisible("{$base}validator1");
$this->type("{$base}text1", "12");
- $this->click("//input[@type='submit' and @value='Test']", "");
- $this->assertVisible("{$base}validator1", "");
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
+ $this->assertVisible("{$base}validator1");
$this->type("{$base}text1", "2");
- $this->assertNotVisible("{$base}validator1", "");
- $this->clickAndWait("//input[@type='submit' and @value='Test']", "");
- $this->assertNotVisible("{$base}validator1", "");
-
-
+ $this->assertNotVisible("{$base}validator1");
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
+ $this->assertNotVisible("{$base}validator1");
+
+
// >= 2
- $this->assertNotVisible("{$base}validator2", "");
+ $this->assertNotVisible("{$base}validator2");
$this->type("{$base}text2", "1");
- $this->click("//input[@type='submit' and @value='Test']", "");
- $this->assertVisible("{$base}validator2", "");
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
+ $this->assertVisible("{$base}validator2");
$this->type("{$base}text2", "10");
- $this->clickAndWait("//input[@type='submit' and @value='Test']", "");
- $this->assertNotVisible("{$base}validator2", "");
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
+ $this->assertNotVisible("{$base}validator2");
// <= 20
- $this->assertNotVisible("{$base}validator3", "");
+ $this->assertNotVisible("{$base}validator3");
$this->type("{$base}text3", "100");
- $this->click("//input[@type='submit' and @value='Test']", "");
- $this->assertVisible("{$base}validator3", "");
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
+ $this->assertVisible("{$base}validator3");
$this->type("{$base}text3", "10");
- $this->clickAndWait("//input[@type='submit' and @value='Test']", "");
- $this->assertNotVisible("{$base}validator3", "");
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
+ $this->assertNotVisible("{$base}validator3");
}
-
+
function testDateRange()
{
$base = "ctl0_Content_";
- $this->open("validators/index.php?page=RangeValidatorDate", "");
- $this->verifyTextPresent("Prado RangeValidator Tests Date", "");
-
+ $this->url("validators/index.php?page=RangeValidatorDate");
+ $this->assertContains("Prado RangeValidator Tests Date", $this->source());
+
//between 22/1/2005 and 3/2/2005
$this->type("{$base}text1", "ad");
- $this->assertNotVisible("{$base}validator1", "");
- $this->click("//input[@type='submit' and @value='Test']", "");
- $this->assertVisible("{$base}validator1", "");
+ $this->assertNotVisible("{$base}validator1");
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
+ $this->assertVisible("{$base}validator1");
$this->type("{$base}text1", "27/2/2005");
- $this->click("//input[@type='submit' and @value='Test']", "");
- $this->assertVisible("{$base}validator1", "");
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
+ $this->assertVisible("{$base}validator1");
$this->type("{$base}text1", "1/2/2005");
- $this->clickAndWait("//input[@type='submit' and @value='Test']", "");
- $this->assertNotVisible("{$base}validator1", "");
- $this->clickAndWait("//input[@type='submit' and @value='Test']", "");
- $this->assertNotVisible("{$base}validator1", "");
-
-
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
+ $this->assertNotVisible("{$base}validator1");
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
+ $this->assertNotVisible("{$base}validator1");
+
+
// >= 22/1/2005
- $this->assertNotVisible("{$base}validator2", "");
+ $this->assertNotVisible("{$base}validator2");
$this->type("{$base}text2", "1/1/2005");
- $this->click("//input[@type='submit' and @value='Test']", "");
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
$this->pause(250);
- $this->assertVisible("{$base}validator2", "");
+ $this->assertVisible("{$base}validator2");
$this->type("{$base}text2", "1/4/2005");
- $this->clickAndWait("//input[@type='submit' and @value='Test']", "");
- $this->assertNotVisible("{$base}validator2", "");
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
+ $this->assertNotVisible("{$base}validator2");
// <= 3/2/2005
- $this->assertNotVisible("{$base}validator3", "");
+ $this->assertNotVisible("{$base}validator3");
$this->type("{$base}text3", "4/5/2005");
- $this->click("//input[@type='submit' and @value='Test']", "");
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
$this->pause(250);
- $this->assertVisible("{$base}validator3", "");
+ $this->assertVisible("{$base}validator3");
$this->type("{$base}text3", "1/2/2005");
- $this->clickAndWait("//input[@type='submit' and @value='Test']", "");
- $this->assertNotVisible("{$base}validator3", "");
- }
-
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
+ $this->assertNotVisible("{$base}validator3");
+ }
+
function testStringRange()
{
$base = "ctl0_Content_";
- $this->open("validators/index.php?page=RangeValidatorString", "");
- $this->verifyTextPresent("Prado RangeValidator Tests String", "");
-
+ $this->url("validators/index.php?page=RangeValidatorString");
+ $this->assertContains("Prado RangeValidator Tests String", $this->source());
+
//between 'd' and 'y'
$this->type("{$base}text1", "a");
- $this->assertNotVisible("{$base}validator1", "");
- $this->click("//input[@type='submit' and @value='Test']", "");
- $this->assertVisible("{$base}validator1", "");
+ $this->assertNotVisible("{$base}validator1");
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
+ $this->assertVisible("{$base}validator1");
$this->type("{$base}text1", "b");
- $this->click("//input[@type='submit' and @value='Test']", "");
- $this->assertVisible("{$base}validator1", "");
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
+ $this->assertVisible("{$base}validator1");
$this->type("{$base}text1", "f");
- $this->assertNotVisible("{$base}validator1", "");
- $this->clickAndWait("//input[@type='submit' and @value='Test']", "");
- $this->assertNotVisible("{$base}validator1", "");
-
-
+ $this->assertNotVisible("{$base}validator1");
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
+ $this->assertNotVisible("{$base}validator1");
+
+
// >= 'd'
- $this->assertNotVisible("{$base}validator2", "");
+ $this->assertNotVisible("{$base}validator2");
$this->type("{$base}text2", "a");
- $this->click("//input[@type='submit' and @value='Test']", "");
- $this->assertVisible("{$base}validator2", "");
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
+ $this->assertVisible("{$base}validator2");
$this->type("{$base}text2", "g");
- $this->clickAndWait("//input[@type='submit' and @value='Test']", "");
- $this->assertNotVisible("{$base}validator2", "");
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
+ $this->assertNotVisible("{$base}validator2");
// <= 'y'
- $this->assertNotVisible("{$base}validator3", "");
+ $this->assertNotVisible("{$base}validator3");
$this->type("{$base}text3", "z");
- $this->click("//input[@type='submit' and @value='Test']", "");
- $this->assertVisible("{$base}validator3", "");
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
+ $this->assertVisible("{$base}validator3");
$this->type("{$base}text3", "t");
- $this->clickAndWait("//input[@type='submit' and @value='Test']", "");
- $this->assertNotVisible("{$base}validator3", "");
- }
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
+ $this->assertNotVisible("{$base}validator3");
+ }
}
diff --git a/tests/FunctionalTests/validators/tests/RegExpValidatorTestCase.php b/tests/FunctionalTests/validators/tests/RegExpValidatorTestCase.php
index f269bf3b..ffa30126 100755
--- a/tests/FunctionalTests/validators/tests/RegExpValidatorTestCase.php
+++ b/tests/FunctionalTests/validators/tests/RegExpValidatorTestCase.php
@@ -1,32 +1,32 @@
<?php
//New Test
-class RegExpValidatorTestCase extends PradoGenericSeleniumTest
+class RegExpValidatorTestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = "ctl0_Content_";
- $this->open("validators/index.php?page=RegularExpressionValidator", "");
- $this->verifyTextPresent("Prado RegularExpressionValidator Tests", "");
- $this->assertNotVisible("{$base}validator1", "");
- $this->assertNotVisible("{$base}validator2", "");
+ $this->url("validators/index.php?page=RegularExpressionValidator");
+ $this->assertContains("Prado RegularExpressionValidator Tests", $this->source());
+ $this->assertNotVisible("{$base}validator1");
+ $this->assertNotVisible("{$base}validator2");
$this->type("{$base}text1", "1");
$this->type("{$base}text2", "2");
- $this->click("//input[@type='submit' and @value='Test']", "");
- $this->assertVisible("{$base}validator1", "");
- $this->assertVisible("{$base}validator2", "");
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
+ $this->assertVisible("{$base}validator1");
+ $this->assertVisible("{$base}validator2");
$this->type("{$base}text1", "asdasd");
- $this->click("//input[@type='submit' and @value='Test']", "");
- $this->assertVisible("{$base}validator1", "");
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
+ $this->assertVisible("{$base}validator1");
$this->type("{$base}text1", "12345");
- $this->assertNotVisible("{$base}validator1", "");
- $this->assertVisible("{$base}validator2", "");
+ $this->assertNotVisible("{$base}validator1");
+ $this->assertVisible("{$base}validator2");
$this->type("{$base}text2", "wei@gmail.com");
- $this->assertNotVisible("{$base}validator1", "");
- $this->assertNotVisible("{$base}validator2", "");
- $this->clickAndWait("//input[@type='submit' and @value='Test']", "");
- $this->assertNotVisible("{$base}validator1", "");
- $this->assertNotVisible("{$base}validator2", "");
+ $this->assertNotVisible("{$base}validator1");
+ $this->assertNotVisible("{$base}validator2");
+ $this->byXPath("//input[@type='submit' and @value='Test']")->click();
+ $this->assertNotVisible("{$base}validator1");
+ $this->assertNotVisible("{$base}validator2");
}
}
diff --git a/tests/FunctionalTests/validators/tests/RequiredFieldTestCase.php b/tests/FunctionalTests/validators/tests/RequiredFieldTestCase.php
index f8b54eb0..249f5ae8 100755
--- a/tests/FunctionalTests/validators/tests/RequiredFieldTestCase.php
+++ b/tests/FunctionalTests/validators/tests/RequiredFieldTestCase.php
@@ -1,54 +1,54 @@
<?php
-class RequiredFieldTestCase extends PradoGenericSeleniumTest
+class RequiredFieldTestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = "ctl0_Content_";
- $this->open("validators/index.php?page=RequiredFieldValidator");
- $this->assertTextPresent("RequiredFieldValidator Tests");
+ $this->url("validators/index.php?page=RequiredFieldValidator");
+ $this->assertContains("RequiredFieldValidator Tests", $this->source());
$this->assertNotVisible("{$base}validator1");
$this->assertNotVisible("{$base}validator2");
- $this->click("{$base}submit1");
+ $this->byId("{$base}submit1")->click();
$this->assertVisible("{$base}validator1");
$this->assertVisible("{$base}validator2");
$this->type("{$base}text1", "testing");
- $this->click("{$base}submit1");
+ $this->byId("{$base}submit1")->click();
$this->assertNotVisible("{$base}validator1");
- $this->click("{$base}submit2");
+ $this->byId("{$base}submit2")->click();
$this->assertNotVisible("{$base}validator1");
$this->assertNotVisible("{$base}validator2");
$this->assertVisible("{$base}validator3");
$this->assertVisible("{$base}validator4");
$this->type("{$base}text2", "testing2");
- $this->click("{$base}submit2");
+ $this->byId("{$base}submit2")->click();
$this->assertNotVisible("{$base}validator3");
- $this->click("{$base}submit3");
+ $this->byId("{$base}submit3")->click();
$this->assertVisible("{$base}summary3");
- $this->clickAndWait("{$base}submit4");
+ $this->byId("{$base}submit4")->click();
$this->assertNotVisible("{$base}validator1");
$this->assertNotVisible("{$base}validator2");
$this->assertNotVisible("{$base}validator3");
$this->assertNotVisible("{$base}validator4");
- $this->click("{$base}submit1");
+ $this->byId("{$base}submit1")->click();
$this->assertVisible("{$base}validator2");
- $this->click("{$base}check1");
- $this->click("{$base}submit2");
+ $this->byId("{$base}check1")->click();
+ $this->byId("{$base}submit2")->click();
$this->assertVisible("{$base}validator4");
- $this->clickAndWait("{$base}submit1");
+ $this->byId("{$base}submit1")->click();
$this->assertNotVisible("{$base}validator1");
$this->assertNotVisible("{$base}validator2");
$this->type("{$base}text1");
- $this->click("{$base}check1");
- $this->click("{$base}submit1");
+ $this->byId("{$base}check1")->click();
+ $this->byId("{$base}submit1")->click();
$this->assertVisible("{$base}validator1");
$this->assertVisible("{$base}validator2");
- $this->click("{$base}check2");
- $this->clickAndWait("{$base}submit2");
+ $this->byId("{$base}check2")->click();
+ $this->byId("{$base}submit2")->click();
$this->type("{$base}text1", "Hello");
- $this->click("{$base}check1");
- $this->click("{$base}submit2");
+ $this->byId("{$base}check1")->click();
+ $this->byId("{$base}submit2")->click();
$this->assertNotVisible("{$base}validator5");
$this->assertNotVisible("{$base}validator6");
@@ -56,14 +56,14 @@ class RequiredFieldTestCase extends PradoGenericSeleniumTest
$this->assertNotVisible("{$base}validator8");
$this->type("{$base}text1");
$this->type("{$base}text2");
- $this->click("{$base}check1");
- $this->click("{$base}check2");
- $this->click("{$base}submit3");
+ $this->byId("{$base}check1")->click();
+ $this->byId("{$base}check2")->click();
+ $this->byId("{$base}submit3")->click();
$this->assertVisible("{$base}validator5");
$this->assertVisible("{$base}validator6");
$this->assertVisible("{$base}validator7");
$this->assertVisible("{$base}validator8");
- $this->clickAndWait("{$base}submit4");
+ $this->byId("{$base}submit4")->click();
$this->assertNotVisible("{$base}validator5");
$this->assertNotVisible("{$base}validator6");
$this->assertNotVisible("{$base}validator7");
@@ -73,10 +73,10 @@ class RequiredFieldTestCase extends PradoGenericSeleniumTest
function testInitialValue()
{
$base = "ctl0_Content_";
- $this->open("validators/index.php?page=RequiredFieldValidator");
- $this->assertTextPresent("InitialValue Test");
+ $this->url("validators/index.php?page=RequiredFieldValidator");
+ $this->assertContains("InitialValue Test", $this->source());
$this->assertNotVisible("{$base}validator9");
- $this->click("{$base}submit5");
+ $this->byId("{$base}submit5")->click();
$this->pause(250);
$this->assertVisible("{$base}validator9");
$this->type("{$base}text5", "adasd");
diff --git a/tests/FunctionalTests/validators/tests/RequiredListTestCase.php b/tests/FunctionalTests/validators/tests/RequiredListTestCase.php
index 2662c721..0de6815e 100755
--- a/tests/FunctionalTests/validators/tests/RequiredListTestCase.php
+++ b/tests/FunctionalTests/validators/tests/RequiredListTestCase.php
@@ -1,35 +1,35 @@
<?php
-class RequiredListTestCase extends PradoGenericSeleniumTest
+class RequiredListTestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = "ctl0_Content_";
- $this->open("validators/index.php?page=RequiredListValidator");
- $this->click("{$base}submit1");
+ $this->url("validators/index.php?page=RequiredListValidator");
+ $this->byId("{$base}submit1")->click();
$this->assertVisible("{$base}validator1");
$this->assertVisible("{$base}validator2");
$this->assertVisible("{$base}validator3");
- $this->click("{$base}list1_c0");
- $this->addSelection("{$base}list2", "label=One");
- $this->addSelection("{$base}list2", "label=Two");
- $this->click("{$base}list3_c3");
- $this->clickAndWait("{$base}submit1");
+ $this->byId("{$base}list1_c0")->click();
+ $this->addSelection("{$base}list2", "One");
+ $this->addSelection("{$base}list2", "Two");
+ $this->byId("{$base}list3_c3")->click();
+ $this->byId("{$base}submit1")->click();
$this->assertNotVisible("{$base}validator1");
$this->assertNotVisible("{$base}validator2");
$this->assertNotVisible("{$base}validator3");
- $this->click("{$base}list1_c1");
- $this->click("{$base}list1_c2");
- $this->click("{$base}list1_c3");
- $this->addSelection("{$base}list2", "label=Two");
- $this->click("{$base}list1_c3");
- $this->clickAndWait("{$base}submit1");
+ $this->byId("{$base}list1_c1")->click();
+ $this->byId("{$base}list1_c2")->click();
+ $this->byId("{$base}list1_c3")->click();
+ $this->addSelection("{$base}list2", "Two");
+ $this->byId("{$base}list1_c3")->click();
+ $this->byId("{$base}submit1")->click();
$this->assertNotVisible("{$base}validator1");
$this->assertNotVisible("{$base}validator2");
$this->assertNotVisible("{$base}validator3");
- $this->click("{$base}list3_c3");
- $this->clickAndWait("{$base}submit1");
+ $this->byId("{$base}list3_c3")->click();
+ $this->byId("{$base}submit1")->click();
$this->pause(200);
$this->assertNotVisible("{$base}validator1");
$this->assertNotVisible("{$base}validator2");
diff --git a/tests/FunctionalTests/validators/tests/ValidationSummaryTestCase.php b/tests/FunctionalTests/validators/tests/ValidationSummaryTestCase.php
index 7dc1d6b1..d4c44a34 100755
--- a/tests/FunctionalTests/validators/tests/ValidationSummaryTestCase.php
+++ b/tests/FunctionalTests/validators/tests/ValidationSummaryTestCase.php
@@ -1,46 +1,46 @@
<?php
//New Test
-class ValidationSummaryTestCase extends PradoGenericSeleniumTest
+class ValidationSummaryTestCase extends PradoGenericSelenium2Test
{
function test()
{
$base = "ctl0_Content_";
-
- $this->open("validators/index.php?page=ValidationSummary", "");
- $this->verifyTextPresent("Validation Summary Test", "");
- //$this->verifyText("{$base}summary1", "");
- //$this->verifyText("{$base}summary2", "");
-
- $this->click("//input[@type='submit' and @value='Create New Account']", "");
+
+ $this->url("validators/index.php?page=ValidationSummary");
+ $this->assertContains("Validation Summary Test", $this->source());
+ //$this->assertText("{$base}summary1", "");
+ //$this->assertText("{$base}summary2", "");
+
+ $this->byXPath("//input[@type='submit' and @value='Create New Account']")->click();
$this->assertVisible("{$base}summary1");
$this->assertNotVisible("{$base}summary2");
- $this->click("//input[@type='submit' and @value='Sign In']", "");
+ $this->byXPath("//input[@type='submit' and @value='Sign In']")->click();
$this->assertNotVisible("{$base}summary1");
- $this->assertVisible("{$base}summary2");
-
+ $this->assertVisible("{$base}summary2");
+
$this->type("{$base}Username", "qwe");
$this->type("{$base}Password", "ewwq");
- $this->click("//input[@type='submit' and @value='Sign In']", "");
+ $this->byXPath("//input[@type='submit' and @value='Sign In']")->click();
$this->assertNotVisible("{$base}summary1");
- $this->assertVisible("{$base}summary2");
-
- /*$this->clickAndWait("//input[@type='submit' and @value='Create New Account']", "");
+ $this->assertVisible("{$base}summary2");
+
+ /*$this->byXPath("//input[@type='submit' and @value='Create New Account']")->click();
$this->type("{$base}UserID", "123");
$this->type("{$base}Pass", "123");
- $this->clickAndWait("//input[@type='submit' and @value='Sign In']", "");
- //$this->verifyText("{$base}summary1", "");
- //$this->verifyText("{$base}summary2", "");
- $this->clickAndWait("//input[@type='submit' and @value='Create New Account']", "");
- //$this->verifyText("{$base}summary1", "");
- //$this->verifyText("{$base}summary2", "");
+ $this->byXPath("//input[@type='submit' and @value='Sign In']")->click();
+ //$this->assertText("{$base}summary1", "");
+ //$this->assertText("{$base}summary2", "");
+ $this->byXPath("//input[@type='submit' and @value='Create New Account']")->click();
+ //$this->assertText("{$base}summary1", "");
+ //$this->assertText("{$base}summary2", "");
$this->type("{$base}Password", "");
- $this->click("//input[@type='submit' and @value='Create New Account']", "");
+ $this->byXPath("//input[@type='submit' and @value='Create New Account']")->click();
$this->assertVisible("{$base}summary1");
$this->assertNotVisible("{$base}summary2");
-
+
$this->type("{$base}Password", "12312");
$this->assertVisible("{$base}summary1");
*/
diff --git a/tests/simple_unit/ActiveRecord/ActiveRecordDynamicCallTestCase.php b/tests/simple_unit/ActiveRecord/ActiveRecordDynamicCallTestCase.php
index 8d7fa46a..58c9977a 100644
--- a/tests/simple_unit/ActiveRecord/ActiveRecordDynamicCallTestCase.php
+++ b/tests/simple_unit/ActiveRecord/ActiveRecordDynamicCallTestCase.php
@@ -65,5 +65,3 @@ class ActiveRecordDynamicCallTestCase extends UnitTestCase
var_dump($param);
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/ActiveRecord/ActiveRecordFinderTestCase.php b/tests/simple_unit/ActiveRecord/ActiveRecordFinderTestCase.php
index e962046b..d9bd7420 100644
--- a/tests/simple_unit/ActiveRecord/ActiveRecordFinderTestCase.php
+++ b/tests/simple_unit/ActiveRecord/ActiveRecordFinderTestCase.php
@@ -41,5 +41,3 @@ class ActiveRecordFinderTestCase extends UnitTestCase
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/ActiveRecord/ActiveRecordMySql5TestCase.php b/tests/simple_unit/ActiveRecord/ActiveRecordMySql5TestCase.php
index d173f005..09981f43 100644
--- a/tests/simple_unit/ActiveRecord/ActiveRecordMySql5TestCase.php
+++ b/tests/simple_unit/ActiveRecord/ActiveRecordMySql5TestCase.php
@@ -42,5 +42,4 @@ class ActiveRecordMySql5TestCase extends UnitTestCase
$this->assertEqual($check->{$prop}, $blog->{$prop});
}
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/simple_unit/ActiveRecord/ActiveRecordRegistryTestCase.php b/tests/simple_unit/ActiveRecord/ActiveRecordRegistryTestCase.php
index fe1507cd..12b0796c 100644
--- a/tests/simple_unit/ActiveRecord/ActiveRecordRegistryTestCase.php
+++ b/tests/simple_unit/ActiveRecord/ActiveRecordRegistryTestCase.php
@@ -163,5 +163,3 @@ class ActiveRecordRegistryTestCase extends UnitTestCase
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/ActiveRecord/BaseActiveRecordTestCase.php b/tests/simple_unit/ActiveRecord/BaseActiveRecordTestCase.php
index c356216b..676a0dd0 100644
--- a/tests/simple_unit/ActiveRecord/BaseActiveRecordTestCase.php
+++ b/tests/simple_unit/ActiveRecord/BaseActiveRecordTestCase.php
@@ -29,5 +29,3 @@ class BaseActiveRecordTestCase extends UnitTestCase
}
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/ActiveRecord/CountRecordsTestCase.php b/tests/simple_unit/ActiveRecord/CountRecordsTestCase.php
index 4c489d49..36a96ab6 100644
--- a/tests/simple_unit/ActiveRecord/CountRecordsTestCase.php
+++ b/tests/simple_unit/ActiveRecord/CountRecordsTestCase.php
@@ -31,5 +31,3 @@ class CountRecordsTestCase extends UnitTestCase
$this->assertEqual($finder->count(), 8);
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/ActiveRecord/CriteriaTestCase.php b/tests/simple_unit/ActiveRecord/CriteriaTestCase.php
index de5b3b71..a320f38c 100644
--- a/tests/simple_unit/ActiveRecord/CriteriaTestCase.php
+++ b/tests/simple_unit/ActiveRecord/CriteriaTestCase.php
@@ -46,5 +46,3 @@ class CriteriaTestCase extends UnitTestCase
$this->assertEqual($criteria->getParameters()->toArray(), $expect);
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/ActiveRecord/DeleteByPkTestCase.php b/tests/simple_unit/ActiveRecord/DeleteByPkTestCase.php
index f848033c..0c09a9b0 100644
--- a/tests/simple_unit/ActiveRecord/DeleteByPkTestCase.php
+++ b/tests/simple_unit/ActiveRecord/DeleteByPkTestCase.php
@@ -27,5 +27,4 @@ class DeleteByPkTestCase extends UnitTestCase
$this->assertEqual($finder->deleteByPk(array(100, 101), array(102, 103)),0);
$this->assertEqual($finder->deleteByPk(array(array(100, 101), array(102, 103))),0);
}
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/simple_unit/ActiveRecord/FindByPksTestCase.php b/tests/simple_unit/ActiveRecord/FindByPksTestCase.php
index 4ccbddd5..32a79cea 100644
--- a/tests/simple_unit/ActiveRecord/FindByPksTestCase.php
+++ b/tests/simple_unit/ActiveRecord/FindByPksTestCase.php
@@ -60,5 +60,3 @@ class FindByPksTestCase extends UnitTestCase
$this->assertEqual($dep->section_id, $sec_id);
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/ActiveRecord/FindBySqlTestCase.php b/tests/simple_unit/ActiveRecord/FindBySqlTestCase.php
index e613cc30..14da0833 100644
--- a/tests/simple_unit/ActiveRecord/FindBySqlTestCase.php
+++ b/tests/simple_unit/ActiveRecord/FindBySqlTestCase.php
@@ -42,5 +42,3 @@ class FindBySqlTestCase extends UnitTestCase
var_dump($users);
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/ActiveRecord/ForeignKeyTestCase.php b/tests/simple_unit/ActiveRecord/ForeignKeyTestCase.php
index b960760e..86462ca6 100644
--- a/tests/simple_unit/ActiveRecord/ForeignKeyTestCase.php
+++ b/tests/simple_unit/ActiveRecord/ForeignKeyTestCase.php
@@ -171,5 +171,3 @@ class ForeignKeyTestCase extends UnitTestCase
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/ActiveRecord/ForeignObjectUpdateTest.php b/tests/simple_unit/ActiveRecord/ForeignObjectUpdateTest.php
index 672c2d0f..29fbff42 100644
--- a/tests/simple_unit/ActiveRecord/ForeignObjectUpdateTest.php
+++ b/tests/simple_unit/ActiveRecord/ForeignObjectUpdateTest.php
@@ -238,5 +238,3 @@ class ForeignObjectUpdateTest extends UnitTestCase
}
//*/
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/ActiveRecord/MultipleForeignKeyTestCase.php b/tests/simple_unit/ActiveRecord/MultipleForeignKeyTestCase.php
index c43db032..4b149503 100644
--- a/tests/simple_unit/ActiveRecord/MultipleForeignKeyTestCase.php
+++ b/tests/simple_unit/ActiveRecord/MultipleForeignKeyTestCase.php
@@ -188,5 +188,3 @@ class MultipleForeignKeyTestCase extends UnitTestCase
$this->assertNotIdentical($arr, $arr->state2[0]->object2);
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/ActiveRecord/RecordEventTestCase.php b/tests/simple_unit/ActiveRecord/RecordEventTestCase.php
index 3e98d46b..12c57421 100644
--- a/tests/simple_unit/ActiveRecord/RecordEventTestCase.php
+++ b/tests/simple_unit/ActiveRecord/RecordEventTestCase.php
@@ -33,5 +33,3 @@ class RecordEventTestCase extends UnitTestCase
//var_dump($param);
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/ActiveRecord/SqliteTestCase.php b/tests/simple_unit/ActiveRecord/SqliteTestCase.php
index 7d860b9a..ed0ea496 100644
--- a/tests/simple_unit/ActiveRecord/SqliteTestCase.php
+++ b/tests/simple_unit/ActiveRecord/SqliteTestCase.php
@@ -17,5 +17,3 @@ class SqliteTestCase extends UnitTestCase
$this->assertNotNull($user);
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/ActiveRecord/UserRecordTestCase.php b/tests/simple_unit/ActiveRecord/UserRecordTestCase.php
index 34e45ca8..85b12594 100644
--- a/tests/simple_unit/ActiveRecord/UserRecordTestCase.php
+++ b/tests/simple_unit/ActiveRecord/UserRecordTestCase.php
@@ -62,5 +62,3 @@ class UserRecordTestCase extends UnitTestCase
$this->assertEqual($user->$prop,$check->$prop);
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/ActiveRecord/ViewRecordTestCase.php b/tests/simple_unit/ActiveRecord/ViewRecordTestCase.php
index adf0beed..bb13a96f 100644
--- a/tests/simple_unit/ActiveRecord/ViewRecordTestCase.php
+++ b/tests/simple_unit/ActiveRecord/ViewRecordTestCase.php
@@ -72,5 +72,4 @@ class ViewRecordTestCase extends UnitTestCase
$this->pass();
}
}
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/simple_unit/ActiveRecord/records/Blogs.php b/tests/simple_unit/ActiveRecord/records/Blogs.php
index 680b3141..6523f029 100644
--- a/tests/simple_unit/ActiveRecord/records/Blogs.php
+++ b/tests/simple_unit/ActiveRecord/records/Blogs.php
@@ -10,5 +10,3 @@ class Blogs extends TActiveRecord
return parent::finder($className);
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/ActiveRecord/records/DepSections.php b/tests/simple_unit/ActiveRecord/records/DepSections.php
index 6f37ae3e..bf01ed12 100644
--- a/tests/simple_unit/ActiveRecord/records/DepSections.php
+++ b/tests/simple_unit/ActiveRecord/records/DepSections.php
@@ -12,5 +12,3 @@ class DepSections extends TActiveRecord
return parent::finder($className);
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/ActiveRecord/records/DepartmentRecord.php b/tests/simple_unit/ActiveRecord/records/DepartmentRecord.php
index 732610ae..b60c7930 100644
--- a/tests/simple_unit/ActiveRecord/records/DepartmentRecord.php
+++ b/tests/simple_unit/ActiveRecord/records/DepartmentRecord.php
@@ -14,5 +14,3 @@ class DepartmentRecord extends TActiveRecord
return parent::finder($className);
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/ActiveRecord/records/ItemRecord.php b/tests/simple_unit/ActiveRecord/records/ItemRecord.php
index 8585ebaf..e6707cde 100644
--- a/tests/simple_unit/ActiveRecord/records/ItemRecord.php
+++ b/tests/simple_unit/ActiveRecord/records/ItemRecord.php
@@ -45,5 +45,3 @@ class ItemRecord extends TActiveRecord
return parent::finder($className);
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/ActiveRecord/records/SimpleUser.php b/tests/simple_unit/ActiveRecord/records/SimpleUser.php
index cfba272e..b6748857 100644
--- a/tests/simple_unit/ActiveRecord/records/SimpleUser.php
+++ b/tests/simple_unit/ActiveRecord/records/SimpleUser.php
@@ -10,5 +10,3 @@ class SimpleUser extends TActiveRecord
return parent::finder($className);
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/ActiveRecord/records/SqliteUsers.php b/tests/simple_unit/ActiveRecord/records/SqliteUsers.php
index 8e5b9fde..f8fa12c5 100644
--- a/tests/simple_unit/ActiveRecord/records/SqliteUsers.php
+++ b/tests/simple_unit/ActiveRecord/records/SqliteUsers.php
@@ -12,5 +12,3 @@ class SqliteUsers extends TActiveRecord
return parent::finder($className);
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/ActiveRecord/records/UserRecord.php b/tests/simple_unit/ActiveRecord/records/UserRecord.php
index c4e8ce60..4ef98baf 100644
--- a/tests/simple_unit/ActiveRecord/records/UserRecord.php
+++ b/tests/simple_unit/ActiveRecord/records/UserRecord.php
@@ -34,5 +34,3 @@ class UserRecord extends TActiveRecord
return parent::finder($className);
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/DbCommon/CommandBuilderMssqlTest.php b/tests/simple_unit/DbCommon/CommandBuilderMssqlTest.php
index f8a4257c..d309c1cc 100644
--- a/tests/simple_unit/DbCommon/CommandBuilderMssqlTest.php
+++ b/tests/simple_unit/DbCommon/CommandBuilderMssqlTest.php
@@ -42,5 +42,3 @@ class CommandBuilderMssqlTest extends UnitTestCase
// var_dump($sql);
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/DbCommon/CommandBuilderMysqlTest.php b/tests/simple_unit/DbCommon/CommandBuilderMysqlTest.php
index e248defd..e47914aa 100644
--- a/tests/simple_unit/DbCommon/CommandBuilderMysqlTest.php
+++ b/tests/simple_unit/DbCommon/CommandBuilderMysqlTest.php
@@ -15,5 +15,3 @@ class CommandBuilderMysqlTest extends UnitTestCase
$this->mysql_meta_data()->getTableInfo("tests.table1");
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/DbCommon/CommandBuilderPgsqlTest.php b/tests/simple_unit/DbCommon/CommandBuilderPgsqlTest.php
index 63660aee..8e339073 100644
--- a/tests/simple_unit/DbCommon/CommandBuilderPgsqlTest.php
+++ b/tests/simple_unit/DbCommon/CommandBuilderPgsqlTest.php
@@ -72,5 +72,3 @@ class CommandBuilderPgsqlTest extends UnitTestCase
$this->assertEqual($expect, $limit);
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/DbCommon/MssqlColumnTest.php b/tests/simple_unit/DbCommon/MssqlColumnTest.php
index 16d73bc4..f64615e8 100644
--- a/tests/simple_unit/DbCommon/MssqlColumnTest.php
+++ b/tests/simple_unit/DbCommon/MssqlColumnTest.php
@@ -44,5 +44,3 @@ class MssqlColumnTest extends UnitTestCase
var_dump($result);
}*/
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/DbCommon/Mysql4ColumnTest.php b/tests/simple_unit/DbCommon/Mysql4ColumnTest.php
index 234a212f..6216cdd7 100644
--- a/tests/simple_unit/DbCommon/Mysql4ColumnTest.php
+++ b/tests/simple_unit/DbCommon/Mysql4ColumnTest.php
@@ -250,5 +250,3 @@ class Mysql4ColumnTest extends UnitTestCase
}
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/DbCommon/MysqlColumnTest.php b/tests/simple_unit/DbCommon/MysqlColumnTest.php
index 08fdb545..57565ca1 100644
--- a/tests/simple_unit/DbCommon/MysqlColumnTest.php
+++ b/tests/simple_unit/DbCommon/MysqlColumnTest.php
@@ -250,5 +250,3 @@ class MysqlColumnTest extends UnitTestCase
}
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/DbCommon/PgsqlColumnTest.php b/tests/simple_unit/DbCommon/PgsqlColumnTest.php
index a16de964..5859c115 100644
--- a/tests/simple_unit/DbCommon/PgsqlColumnTest.php
+++ b/tests/simple_unit/DbCommon/PgsqlColumnTest.php
@@ -135,5 +135,3 @@ class PgsqlColumnTest extends UnitTestCase
}
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/DbCommon/SqliteColumnTest.php b/tests/simple_unit/DbCommon/SqliteColumnTest.php
index 246c4a27..712d2977 100644
--- a/tests/simple_unit/DbCommon/SqliteColumnTest.php
+++ b/tests/simple_unit/DbCommon/SqliteColumnTest.php
@@ -25,5 +25,4 @@ class SqliteColumnTest extends UnitTestCase
//$table = new TTableGateway('Accounts', $conn);
// var_dump($table->findAll()->readAll());
}
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/simple_unit/I18N/MysqlMessageSourceTestCase.php b/tests/simple_unit/I18N/MysqlMessageSourceTestCase.php
index 80e9c1fd..0728baf7 100644
--- a/tests/simple_unit/I18N/MysqlMessageSourceTestCase.php
+++ b/tests/simple_unit/I18N/MysqlMessageSourceTestCase.php
@@ -41,5 +41,3 @@ class MysqlMessageSourceTestCase extends UnitTestCase
}
*/
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/Soap/ContactManager.php b/tests/simple_unit/Soap/ContactManager.php
index 290063b3..2fbeec48 100644
--- a/tests/simple_unit/Soap/ContactManager.php
+++ b/tests/simple_unit/Soap/ContactManager.php
@@ -23,12 +23,12 @@ class ContactManager{
$Contact->email = "me@you.com";
$Contact->id = 1;
$Contact->name ="me";
-
+
$ret[] = $Contact;
//debugObject("Contacten: ",$ret);
return $ret;
}
-
+
/**
* Gets the Contact with the given id.
* @param int $id The id
@@ -48,7 +48,7 @@ class ContactManager{
public function newContact() {
return new Contact();
}
-
+
/**
* Saves a given Contact
* @param Contact $Contact
@@ -60,7 +60,7 @@ class ContactManager{
//$Contact->save();
return true;
}
-
+
/**
* @return mixed
* @soapmethod
@@ -69,7 +69,7 @@ class ContactManager{
{
return array(array(1,2), array("12", 1.2));
}
-
+
/**
* @return array
* @soapmethod
@@ -92,13 +92,13 @@ class ContactManager{
*/
class Contact{
- /**
+ /**
* @var int $id
* @soapproperty
*/
public $id;
-
- /**
+
+ /**
* @var string $name
* @soapproperty
*/
@@ -110,10 +110,10 @@ class Contact{
public $address;
/** @var string $email
- * @soapproperty
+ * @soapproperty
*/
public $email;
-
+
/**
* saves a Contact
*
@@ -134,24 +134,22 @@ class Contact{
*/
class Address{
/** @var string $street
- * @soapproperty
+ * @soapproperty
*/
public $street;
-
+
/** @var string $nr
* @soapproperty
*/
public $nr;
-
+
/** @var string $zipcode
* @soapproperty
*/
- public $zipcode;
-
+ public $zipcode;
+
/** @var string $city
* @soapproperty
*/
- public $city;
+ public $city;
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/Soap/SoapTestCase.php b/tests/simple_unit/Soap/SoapTestCase.php
index fe151b04..3aaa60d3 100644
--- a/tests/simple_unit/Soap/SoapTestCase.php
+++ b/tests/simple_unit/Soap/SoapTestCase.php
@@ -35,7 +35,7 @@ class SoapTestCase extends UnitTestCase
{
try
{
- $result = $this->getClient()->getContact(1);
+ $result = $this->getClient()->getContact(1);
$this->fail();
}
catch (SoapFault $f)
@@ -88,4 +88,3 @@ class SoapTestCase extends UnitTestCase
}
}
-?>
diff --git a/tests/simple_unit/SqlMap/ActiveRecordSqlMapTest.php b/tests/simple_unit/SqlMap/ActiveRecordSqlMapTest.php
index b3cde511..2ae051e8 100644
--- a/tests/simple_unit/SqlMap/ActiveRecordSqlMapTest.php
+++ b/tests/simple_unit/SqlMap/ActiveRecordSqlMapTest.php
@@ -83,5 +83,3 @@ class ActiveRecordSqlMapTest extends BaseCase
$this->assertEqual($account1->{$prop}, $account2->{$prop});
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/BaseCase.php b/tests/simple_unit/SqlMap/BaseCase.php
index b0961b5b..4f44a5b7 100644
--- a/tests/simple_unit/SqlMap/BaseCase.php
+++ b/tests/simple_unit/SqlMap/BaseCase.php
@@ -258,5 +258,3 @@ class TDateTime
$this->_datetime = $value;
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/CacheTest.php b/tests/simple_unit/SqlMap/CacheTest.php
index 131ddfbb..ff87cd3a 100644
--- a/tests/simple_unit/SqlMap/CacheTest.php
+++ b/tests/simple_unit/SqlMap/CacheTest.php
@@ -160,5 +160,3 @@ class CacheTest extends BaseCase
$this->assertIdentical(0.5, $cache->getHitRatio());
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/DelegateTest.php b/tests/simple_unit/SqlMap/DelegateTest.php
index 800e4240..80b23332 100644
--- a/tests/simple_unit/SqlMap/DelegateTest.php
+++ b/tests/simple_unit/SqlMap/DelegateTest.php
@@ -60,5 +60,3 @@ class DelegateTest extends BaseCase
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/Dynamic/DynamicTest.php b/tests/simple_unit/SqlMap/Dynamic/DynamicTest.php
index 436cd49e..be7a1820 100644
--- a/tests/simple_unit/SqlMap/Dynamic/DynamicTest.php
+++ b/tests/simple_unit/SqlMap/Dynamic/DynamicTest.php
@@ -7,5 +7,3 @@ class DynamicTest extends UnitTestCase
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/GroupByTest.php b/tests/simple_unit/SqlMap/GroupByTest.php
index 11bd86bb..a16211c3 100644
--- a/tests/simple_unit/SqlMap/GroupByTest.php
+++ b/tests/simple_unit/SqlMap/GroupByTest.php
@@ -39,5 +39,3 @@ class GroupByTest extends BaseCase
/**/
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/InheritanceTest.php b/tests/simple_unit/SqlMap/InheritanceTest.php
index 82f86af3..81cad4a5 100644
--- a/tests/simple_unit/SqlMap/InheritanceTest.php
+++ b/tests/simple_unit/SqlMap/InheritanceTest.php
@@ -141,5 +141,4 @@ class CustomInheritance extends TSqlMapTypeHandler
{
throw new TDataMapperException('can not create');
}
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/ParameterMapTest.php b/tests/simple_unit/SqlMap/ParameterMapTest.php
index fb29c162..557b9f4d 100644
--- a/tests/simple_unit/SqlMap/ParameterMapTest.php
+++ b/tests/simple_unit/SqlMap/ParameterMapTest.php
@@ -245,5 +245,3 @@ class ParameterMapTest extends BaseCase
}
/**/
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/PropertyAccessTest.php b/tests/simple_unit/SqlMap/PropertyAccessTest.php
index d580f965..80199628 100644
--- a/tests/simple_unit/SqlMap/PropertyAccessTest.php
+++ b/tests/simple_unit/SqlMap/PropertyAccessTest.php
@@ -73,5 +73,3 @@ class PropertyAccessTest extends BaseCase
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/ResultClassTest.php b/tests/simple_unit/SqlMap/ResultClassTest.php
index 041c124e..773268b9 100644
--- a/tests/simple_unit/SqlMap/ResultClassTest.php
+++ b/tests/simple_unit/SqlMap/ResultClassTest.php
@@ -245,5 +245,3 @@ class ResultClassTest extends BaseCase
/**/
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/ResultMapTest.php b/tests/simple_unit/SqlMap/ResultMapTest.php
index d545b65e..b14cee31 100644
--- a/tests/simple_unit/SqlMap/ResultMapTest.php
+++ b/tests/simple_unit/SqlMap/ResultMapTest.php
@@ -269,5 +269,3 @@ class ResultMapTest extends BaseCase
*/
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/SelectKeyTest.php b/tests/simple_unit/SqlMap/SelectKeyTest.php
index a1efa640..464b94f1 100644
--- a/tests/simple_unit/SqlMap/SelectKeyTest.php
+++ b/tests/simple_unit/SqlMap/SelectKeyTest.php
@@ -116,5 +116,3 @@ class SelectKeyTest extends BaseCase
$this->initScript('line-item-init.sql');
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/SqlMapCacheTest.php b/tests/simple_unit/SqlMap/SqlMapCacheTest.php
index 1bb9b8d4..7c3495b5 100644
--- a/tests/simple_unit/SqlMap/SqlMapCacheTest.php
+++ b/tests/simple_unit/SqlMap/SqlMapCacheTest.php
@@ -73,5 +73,3 @@ class SqlMapCacheTest extends UnitTestCase
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/StatementExtendsTest.php b/tests/simple_unit/SqlMap/StatementExtendsTest.php
index f496f154..69beaa58 100644
--- a/tests/simple_unit/SqlMap/StatementExtendsTest.php
+++ b/tests/simple_unit/SqlMap/StatementExtendsTest.php
@@ -25,5 +25,3 @@ class StatementExtendsTest extends UnitTestCase
$this->assertPattern('/img_progress/', $sql2);
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/StatementTest.php b/tests/simple_unit/SqlMap/StatementTest.php
index f9c3fb13..3f9f4506 100644
--- a/tests/simple_unit/SqlMap/StatementTest.php
+++ b/tests/simple_unit/SqlMap/StatementTest.php
@@ -1131,5 +1131,3 @@ class StatementTest extends BaseCase
#endregion
/**/
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/TestQueryForMap.php b/tests/simple_unit/SqlMap/TestQueryForMap.php
index 89676469..2de020a8 100644
--- a/tests/simple_unit/SqlMap/TestQueryForMap.php
+++ b/tests/simple_unit/SqlMap/TestQueryForMap.php
@@ -39,5 +39,3 @@ class TestQueryForMap extends BaseCase
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/common.php b/tests/simple_unit/SqlMap/common.php
index 5146d123..020a296b 100644
--- a/tests/simple_unit/SqlMap/common.php
+++ b/tests/simple_unit/SqlMap/common.php
@@ -151,5 +151,3 @@ class BaseTestConfig
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/domain/A.php b/tests/simple_unit/SqlMap/domain/A.php
index af1f925d..a4f204e4 100644
--- a/tests/simple_unit/SqlMap/domain/A.php
+++ b/tests/simple_unit/SqlMap/domain/A.php
@@ -23,5 +23,3 @@ class A
public function getF(){ return $this->_F; }
public function setF($value){ $this->_F = $value; }
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/domain/Account.php b/tests/simple_unit/SqlMap/domain/Account.php
index 9502eb85..b4bcbcc8 100644
--- a/tests/simple_unit/SqlMap/domain/Account.php
+++ b/tests/simple_unit/SqlMap/domain/Account.php
@@ -32,5 +32,3 @@ class Account
public function setCartOptions($value){ $this->_CartOptions = $value; }
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/domain/AccountBis.php b/tests/simple_unit/SqlMap/domain/AccountBis.php
index d454f2a8..e48184b6 100644
--- a/tests/simple_unit/SqlMap/domain/AccountBis.php
+++ b/tests/simple_unit/SqlMap/domain/AccountBis.php
@@ -9,5 +9,3 @@ class AccountBis
public $More;
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/domain/AccountCollection.php b/tests/simple_unit/SqlMap/domain/AccountCollection.php
index b14ece5e..06e30dc8 100644
--- a/tests/simple_unit/SqlMap/domain/AccountCollection.php
+++ b/tests/simple_unit/SqlMap/domain/AccountCollection.php
@@ -13,5 +13,3 @@ class AccountCollection extends TList
$array->copyFrom($this);
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/domain/B.php b/tests/simple_unit/SqlMap/domain/B.php
index 788b804e..ab42e6b6 100644
--- a/tests/simple_unit/SqlMap/domain/B.php
+++ b/tests/simple_unit/SqlMap/domain/B.php
@@ -19,5 +19,3 @@ class B
public function getLibelle(){ return $this->_Libelle; }
public function setLibelle($value){ $this->_Libelle = $value; }
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/domain/Book.php b/tests/simple_unit/SqlMap/domain/Book.php
index 80877112..4c0670e8 100644
--- a/tests/simple_unit/SqlMap/domain/Book.php
+++ b/tests/simple_unit/SqlMap/domain/Book.php
@@ -5,7 +5,5 @@ class Book extends Document
private $_PageNumber='';
public function getPageNumber(){ return $this->_PageNumber; }
- public function setPageNumber($value){ $this->_PageNumber = $value; }
+ public function setPageNumber($value){ $this->_PageNumber = $value; }
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/domain/C.php b/tests/simple_unit/SqlMap/domain/C.php
index 47118d44..642f97e9 100644
--- a/tests/simple_unit/SqlMap/domain/C.php
+++ b/tests/simple_unit/SqlMap/domain/C.php
@@ -11,5 +11,3 @@ class C
public function getLibelle(){ return $this->_Libelle; }
public function setLibelle($value){ $this->_Libelle = $value; }
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/domain/Category.php b/tests/simple_unit/SqlMap/domain/Category.php
index db76edb4..895819e9 100644
--- a/tests/simple_unit/SqlMap/domain/Category.php
+++ b/tests/simple_unit/SqlMap/domain/Category.php
@@ -15,5 +15,3 @@ class Category
public function getGuidString(){ return $this->_Guid; }
public function setGuidString($value){ $this->_Guid = $value; }
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/domain/Complex.php b/tests/simple_unit/SqlMap/domain/Complex.php
index 99cb04b8..01082343 100644
--- a/tests/simple_unit/SqlMap/domain/Complex.php
+++ b/tests/simple_unit/SqlMap/domain/Complex.php
@@ -7,5 +7,3 @@ class Complex
public function getMap(){ return $this->_map; }
public function setMap(TMap $map){ $this->_map = $map; }
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/domain/D.php b/tests/simple_unit/SqlMap/domain/D.php
index 2cbd2883..f120e2d1 100644
--- a/tests/simple_unit/SqlMap/domain/D.php
+++ b/tests/simple_unit/SqlMap/domain/D.php
@@ -12,5 +12,3 @@ class D
public function setLibelle($value){ $this->_Libelle = $value; }
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/domain/Document.php b/tests/simple_unit/SqlMap/domain/Document.php
index 682f8eb3..518851e6 100644
--- a/tests/simple_unit/SqlMap/domain/Document.php
+++ b/tests/simple_unit/SqlMap/domain/Document.php
@@ -12,5 +12,3 @@ class Document
public function setTitle($value){ $this->_Title = $value; }
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/domain/DocumentCollection.php b/tests/simple_unit/SqlMap/domain/DocumentCollection.php
index c130db56..a2d5d89d 100644
--- a/tests/simple_unit/SqlMap/domain/DocumentCollection.php
+++ b/tests/simple_unit/SqlMap/domain/DocumentCollection.php
@@ -4,5 +4,3 @@ class DocumentCollection extends TList
{
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/domain/E.php b/tests/simple_unit/SqlMap/domain/E.php
index 8473c156..c69c8027 100644
--- a/tests/simple_unit/SqlMap/domain/E.php
+++ b/tests/simple_unit/SqlMap/domain/E.php
@@ -12,5 +12,3 @@ class E
public function setLibelle($value){ $this->_Libelle = $value; }
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/domain/F.php b/tests/simple_unit/SqlMap/domain/F.php
index 2bbbb2fb..159d8d63 100644
--- a/tests/simple_unit/SqlMap/domain/F.php
+++ b/tests/simple_unit/SqlMap/domain/F.php
@@ -12,5 +12,3 @@ class F
public function setLibelle($value){ $this->_Libelle = $value; }
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/domain/LineItem.php b/tests/simple_unit/SqlMap/domain/LineItem.php
index f6908bbd..a989ab8b 100644
--- a/tests/simple_unit/SqlMap/domain/LineItem.php
+++ b/tests/simple_unit/SqlMap/domain/LineItem.php
@@ -28,5 +28,3 @@ class LineItem
public function setPictureData($value){ $this->_PictureData = $value; }
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/domain/LineItemCollection.php b/tests/simple_unit/SqlMap/domain/LineItemCollection.php
index 8bc95622..1c31dca3 100644
--- a/tests/simple_unit/SqlMap/domain/LineItemCollection.php
+++ b/tests/simple_unit/SqlMap/domain/LineItemCollection.php
@@ -4,5 +4,3 @@ class LineItemCollection extends TList
{
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/domain/Newspaper.php b/tests/simple_unit/SqlMap/domain/Newspaper.php
index 08716c6d..12ebce5b 100644
--- a/tests/simple_unit/SqlMap/domain/Newspaper.php
+++ b/tests/simple_unit/SqlMap/domain/Newspaper.php
@@ -8,5 +8,3 @@ class Newspaper extends Document
public function setCity($value){ $this->_City = $value; }
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/domain/Order.php b/tests/simple_unit/SqlMap/domain/Order.php
index 312626fe..2b907ac6 100644
--- a/tests/simple_unit/SqlMap/domain/Order.php
+++ b/tests/simple_unit/SqlMap/domain/Order.php
@@ -67,5 +67,3 @@ class Order
public function setFavouriteLineItem($value){ $this->_FavouriteLineItem = $value; }
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/domain/Other.php b/tests/simple_unit/SqlMap/domain/Other.php
index 9e78ab97..89f9d490 100644
--- a/tests/simple_unit/SqlMap/domain/Other.php
+++ b/tests/simple_unit/SqlMap/domain/Other.php
@@ -19,5 +19,3 @@ class Other
public function getLong(){ return $this->_Long; }
public function setLong($value){ $this->_Long = $value; }
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/domain/Sample.php b/tests/simple_unit/SqlMap/domain/Sample.php
index e03be2df..f2a8951f 100644
--- a/tests/simple_unit/SqlMap/domain/Sample.php
+++ b/tests/simple_unit/SqlMap/domain/Sample.php
@@ -51,5 +51,3 @@ class Sample
public function getSequenceDate(){ return $this->_SequenceDate; }
public function setSequenceDate($value){ $this->_SequenceDate = $value; }
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/domain/Search.php b/tests/simple_unit/SqlMap/domain/Search.php
index c01891a9..d2170044 100644
--- a/tests/simple_unit/SqlMap/domain/Search.php
+++ b/tests/simple_unit/SqlMap/domain/Search.php
@@ -19,5 +19,3 @@ class Search
public function getStartDateAnd(){ return $this->_StartDateAnd; }
public function setStartDateAnd($value){ $this->_StartDateAnd = $value; }
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/domain/User.php b/tests/simple_unit/SqlMap/domain/User.php
index b21712a3..1106d1e9 100644
--- a/tests/simple_unit/SqlMap/domain/User.php
+++ b/tests/simple_unit/SqlMap/domain/User.php
@@ -23,5 +23,3 @@ class User
public function getLastLogon(){ return $this->_LastLogon; }
public function setLastLogon($value){ $this->_LastLogon = $value; }
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/gen.php b/tests/simple_unit/SqlMap/gen.php
index 855172ba..40ddc297 100644
--- a/tests/simple_unit/SqlMap/gen.php
+++ b/tests/simple_unit/SqlMap/gen.php
@@ -29,5 +29,3 @@ function print_funcs($props)
echo $getter.$setter."\n";
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/SqlMap/queryForListLimitTest.php b/tests/simple_unit/SqlMap/queryForListLimitTest.php
index 349314a5..af550dcb 100644
--- a/tests/simple_unit/SqlMap/queryForListLimitTest.php
+++ b/tests/simple_unit/SqlMap/queryForListLimitTest.php
@@ -36,5 +36,3 @@ class queryForListLimitTest extends BaseCase
$this->assertEqual($list1[1][2],'Dalton');
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/TableGateway/BaseGatewayTest.php b/tests/simple_unit/TableGateway/BaseGatewayTest.php
index 98b236ee..f3117ed2 100644
--- a/tests/simple_unit/TableGateway/BaseGatewayTest.php
+++ b/tests/simple_unit/TableGateway/BaseGatewayTest.php
@@ -90,5 +90,4 @@ class BaseGatewayTest extends UnitTestCase
{
$this->getGateway()->deleteAll('1=1');
}
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/simple_unit/TableGateway/CountTest.php b/tests/simple_unit/TableGateway/CountTest.php
index 0e159ab0..97211e3c 100644
--- a/tests/simple_unit/TableGateway/CountTest.php
+++ b/tests/simple_unit/TableGateway/CountTest.php
@@ -12,5 +12,4 @@ class CountTest extends BaseGatewayTest
$result = $this->getGateway2()->count('department_id = ?', 1);
$this->assertEqual(4, $result);
}
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/simple_unit/TableGateway/DeleteByPkTest.php b/tests/simple_unit/TableGateway/DeleteByPkTest.php
index 57d9dd31..49b2d86c 100644
--- a/tests/simple_unit/TableGateway/DeleteByPkTest.php
+++ b/tests/simple_unit/TableGateway/DeleteByPkTest.php
@@ -48,5 +48,4 @@ class DeleteByPkTest extends BaseGatewayTest
$this->assertEqual(2, $deleted);
}
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/simple_unit/TableGateway/MagicCallTest.php b/tests/simple_unit/TableGateway/MagicCallTest.php
index 8d42fba8..87f9e785 100644
--- a/tests/simple_unit/TableGateway/MagicCallTest.php
+++ b/tests/simple_unit/TableGateway/MagicCallTest.php
@@ -27,5 +27,4 @@ class MagicCallTest extends BaseGatewayTest
$this->assertEqual(0, count($result));
}
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/simple_unit/TableGateway/TableGatewayPgsqlTest.php b/tests/simple_unit/TableGateway/TableGatewayPgsqlTest.php
index f34dcefc..96c9351d 100644
--- a/tests/simple_unit/TableGateway/TableGatewayPgsqlTest.php
+++ b/tests/simple_unit/TableGateway/TableGatewayPgsqlTest.php
@@ -52,5 +52,4 @@ class TableGatewayPgsqlTest extends BaseGatewayTest
$this->assertEqual($result['username'], 'record2');
}
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/simple_unit/TableGateway/TableInfoGatewayTest.php b/tests/simple_unit/TableGateway/TableInfoGatewayTest.php
index 51af7634..6c85248c 100644
--- a/tests/simple_unit/TableGateway/TableInfoGatewayTest.php
+++ b/tests/simple_unit/TableGateway/TableInfoGatewayTest.php
@@ -13,5 +13,4 @@ class TableInfoGatewayTest extends BaseGatewayTest
$table = new TTableGateway($info, $conn);
$this->assertEqual(count($table->findAll()->readAll()), 2);
}
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/simple_unit/TableGateway/TestFindByPk.php b/tests/simple_unit/TableGateway/TestFindByPk.php
index 5a7a081c..3756d35a 100644
--- a/tests/simple_unit/TableGateway/TestFindByPk.php
+++ b/tests/simple_unit/TableGateway/TestFindByPk.php
@@ -44,5 +44,4 @@ class TestFindByPk extends BaseGatewayTest
$this->assertEqual($expect, $result);
}
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/simple_unit/Tickets/Ticket589Test.php b/tests/simple_unit/Tickets/Ticket589Test.php
index 2fedda6f..487181ff 100644
--- a/tests/simple_unit/Tickets/Ticket589Test.php
+++ b/tests/simple_unit/Tickets/Ticket589Test.php
@@ -18,5 +18,3 @@ class Ticket589Test extends UnitTestCase
}
}
}
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/unit.php b/tests/simple_unit/unit.php
index 63910f68..b0e7874d 100644
--- a/tests/simple_unit/unit.php
+++ b/tests/simple_unit/unit.php
@@ -5,5 +5,3 @@ $test_cases = dirname(__FILE__)."/";
$tester = new PradoUnitTester($test_cases);
$tester->run(new HtmlReporter());
-
-?> \ No newline at end of file
diff --git a/tests/simple_unit/ws.php b/tests/simple_unit/ws.php
index 703235d1..9096183e 100644
--- a/tests/simple_unit/ws.php
+++ b/tests/simple_unit/ws.php
@@ -5,5 +5,3 @@ include_once './Soap/ContactManager.php';
$app = new TApplication('.');
$app->run();
-
-?> \ No newline at end of file
diff --git a/tests/test_tools/PradoGenericSelenium2Test.php b/tests/test_tools/PradoGenericSelenium2Test.php
new file mode 100755
index 00000000..23dfeb61
--- /dev/null
+++ b/tests/test_tools/PradoGenericSelenium2Test.php
@@ -0,0 +1,230 @@
+<?php
+require_once 'PHPUnit/Extensions/Selenium2TestCase.php';
+
+// TODO: stub
+class PradoGenericSelenium2Test extends PHPUnit_Extensions_Selenium2TestCase
+{
+ public static $browsers = array(
+/*
+ array(
+ 'name' => 'Firefox on OSX',
+ 'browserName' => '*firefox',
+ 'host' => '127.0.0.1',
+ 'port' => 4444,
+ ),
+*/
+ array(
+ 'name' => 'Chrome on OSX',
+ 'browserName' => 'chrome',
+ 'sessionStrategy' => 'shared',
+ 'host' => '127.0.0.1',
+ 'port' => 4444,
+ ),
+/*
+ array(
+ 'name' => 'Firefox on WindowsXP',
+ 'browserName' => '*firefox',
+ 'host' => '127.0.0.1',
+ 'port' => 4445,
+ ),
+ array(
+ 'name' => 'Internet Explorer 8 on WindowsXP',
+ 'browserName' => '*iehta',
+ 'host' => '127.0.0.1',
+ 'port' => 4445,
+ )
+*/
+ );
+
+ static $baseurl='http://127.0.0.1/prado-master/tests/FunctionalTests/';
+
+ static $timeout=5; //seconds
+
+ protected function setUp()
+ {
+ self::shareSession(true);
+ $this->setBrowserUrl(static::$baseurl);
+ $this->setSeleniumServerRequestsTimeout(static::$timeout);
+ }
+
+ protected function assertAttribute($idattr, $txt)
+ {
+ list($id, $attr) = explode('@', $idattr);
+
+ $element = $this->getElement($id);
+ $value=$element->attribute($attr);
+
+ if(strpos($txt, 'regexp:')===0)
+ {
+ $this->assertRegExp('/'.substr($txt, 7).'/', $value);
+ } else {
+ $this->assertEquals($txt, $value);
+ }
+ }
+
+ protected function getElement($id)
+ {
+ if(strpos($id, 'id=')===0) {
+ return $this->byId(substr($id, 3));
+ } elseif(strpos($id, 'name=')===0) {
+ return $this->byName(substr($id, 5));
+ } elseif(strpos($id, '//')===0) {
+ return $this->byXPath($id);
+ } elseif(strpos($id, '$')!==false) {
+ return $this->byName($id);
+ } else {
+ return $this->byId($id);
+ }
+ }
+
+ protected function assertText($id, $txt)
+ {
+ $this->assertEquals($txt, $this->getElement($id)->text());
+ }
+
+ protected function assertValue($id, $txt)
+ {
+ $this->assertEquals($txt, $this->getElement($id)->value());
+ }
+
+ protected function assertVisible($id)
+ {
+ $this->assertTrue($this->getElement($id)->displayed());
+ }
+
+ protected function assertNotVisible($id)
+ {
+ $this->assertFalse($this->getElement($id)->displayed());
+ }
+
+ protected function assertElementPresent($id)
+ {
+ $this->assertTrue($this->getElement($id)!==null);
+ }
+
+ protected function assertElementNotPresent($id)
+ {
+ try {
+ $el = $this->getElement($id);
+ } catch (PHPUnit_Extensions_Selenium2TestCase_WebDriverException $e) {
+ $this->assertEquals(PHPUnit_Extensions_Selenium2TestCase_WebDriverException::NoSuchElement, $e->getCode());
+ return;
+ }
+ $this->fail('The element '.$id.' shouldn\'t exist.');
+ }
+
+ protected function type($id, $txt='')
+ {
+ $element = $this->getElement($id);
+ $element->clear();
+ $element->value($txt);
+ // trigger onblur() event
+ $this->byCssSelector('body')->click();
+ }
+
+ protected function typeSpecial($id, $txt='')
+ {
+ $element = $this->getElement($id);
+ // clear the textbox without using clear() that triggers onchange()
+ // the idea is to focus the input, move to the end of the text and hit
+ // backspace until the input is empty.
+ // on multiline textareas, line feeds can make this difficult, so we mix
+ // sequences of end+backspace and start+delete
+
+ $element->click();
+ while(strlen($element->value())>0)
+ {
+ $this->keys(PHPUnit_Extensions_Selenium2TestCase_Keys::END);
+ // the number 100 is purely empiric
+ for($i=0;$i<100;$i++)
+ $this->keys(PHPUnit_Extensions_Selenium2TestCase_Keys::BACKSPACE);
+
+ $this->keys(PHPUnit_Extensions_Selenium2TestCase_Keys::HOME);
+ // the number 100 is purely empiric
+ for($i=0;$i<100;$i++)
+ $this->keys(PHPUnit_Extensions_Selenium2TestCase_Keys::DELETE);
+ }
+
+ $element->value($txt);
+ // trigger onblur() event
+ $this->byCssSelector('body')->click();
+ }
+
+ protected function select($id, $value)
+ {
+ $select = parent::select($this->getElement($id));
+ $select->clearSelectedOptions();
+
+ $select->selectOptionByLabel($value);
+ }
+
+ protected function selectAndWait($id, $value)
+ {
+ $this->select($id, $value);
+ }
+
+ protected function addSelection($id, $value)
+ {
+ parent::select($this->getElement($id))->selectOptionByLabel($value);
+ }
+
+ protected function getSelectedLabels($id)
+ {
+ return parent::select($this->getElement($id))->selectedLabels();
+ }
+
+ protected function getSelectOptions($id)
+ {
+ return parent::select($this->getElement($id))->selectOptionLabels();
+ }
+
+ protected function assertSelectedIndex($id, $value)
+ {
+ $options=parent::select($this->getElement($id))->selectOptionValues();
+ $curval=parent::select($this->getElement($id))->selectedValue();
+
+ $i=0;
+ foreach($options as $option)
+ {
+ if($option==$curval)
+ {
+ $this->assertEquals($i, $value);
+ return;
+ }
+ $i++;
+ }
+ $this->fail('Current value '.$curval.' not found in: '.implode(',', $options));
+ }
+
+ protected function assertSelected($id, $label)
+ {
+ $this->assertSame($label, parent::select($this->getElement($id))->selectedLabel());
+ }
+
+ protected function assertNotSomethingSelected($id)
+ {
+ $this->assertSame(array(), $this->getSelectedLabels($id));
+ }
+
+ protected function assertSelectedValue($id, $index)
+ {
+ $this->assertSame($index, parent::select($this->getElement($id))->selectedValue());
+ }
+
+ protected function assertAlertNotPresent()
+ {
+ try {
+ $foo=$this->alertText();
+ } catch (PHPUnit_Extensions_Selenium2TestCase_WebDriverException $e) {
+ $this->assertEquals(PHPUnit_Extensions_Selenium2TestCase_WebDriverException::NoAlertOpenError, $e->getCode());
+ return;
+ }
+ $this->fail('Failed asserting no alert is open');
+ }
+
+ protected function pause($msec)
+ {
+ usleep($msec*1000);
+ }
+
+} \ No newline at end of file
diff --git a/tests/test_tools/PradoGenericSeleniumTest.php b/tests/test_tools/PradoGenericSeleniumTest.php
deleted file mode 100644
index 2c9ceb21..00000000
--- a/tests/test_tools/PradoGenericSeleniumTest.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-require_once 'PHPUnit/Extensions/SeleniumTestCase.php';
-require_once 'PHPUnit/Extensions/Selenium2TestCase.php';
-
-class PradoGenericSeleniumTest extends PHPUnit_Extensions_SeleniumTestCase
-{
- static $browser='*googlechrome';
- static $baseurl='http://127.0.0.1/prado-3.2/tests/FunctionalTests/';
-
- protected function setUp()
- {
- $this->shareSession(true);
- $this->setBrowser(static::$browser);
- $this->setBrowserUrl(static::$baseurl);
- }
-
- protected function tearDown()
- {
- }
-}
-
-// TODO: stub
-class PradoGenericSelenium2Test extends PHPUnit_Extensions_Selenium2TestCase
-{
- static $browser='chrome';
- static $baseurl='http://127.0.0.1/prado-3.2/tests/FunctionalTests/';
-
- protected function setUp()
- {
- $this->setBrowser(static::$browser);
- $this->setBrowserUrl(static::$baseurl);
- }
-
- protected function open($url)
- {
- $this->setBrowserUrl(static::$baseurl.$url);
- }
-
- protected function tearDown()
- {
- }
-} \ No newline at end of file
diff --git a/tests/test_tools/README.txt b/tests/test_tools/README.txt
index cfa02abe..6bc3aa79 100644
--- a/tests/test_tools/README.txt
+++ b/tests/test_tools/README.txt
@@ -4,7 +4,7 @@ Functional tests are browser based that tests the overall functional of a Prado
=== Writing Tests ===
-Lets test some part of a Prado application. Create a new php file, e.g.
+Lets test some part of a Prado application. Create a new php file, e.g.
testExample1.php
@@ -21,11 +21,10 @@ class testExample1 extends SeleniumTestCase
{
//using xpath to find the button with value "Click Me!"
$this->click('//input[@value="Click Me!"]');
-
+
//..more commands and assertions
}
}
-?>
</php>
=== Tests as part of Example code ===
@@ -50,9 +49,9 @@ class testMyButtonExample extends SeleniumTestCase
{
//get the test page url
$page = Prado::getApplication()->getTestPage(__FILE__);
-
+
//open MyButtonExample page
- $this->open($page);
+ $this->open($page);
}
function testButtonClick()
@@ -62,7 +61,6 @@ class testMyButtonExample extends SeleniumTestCase
$this->click('//input[@value="Hello World!"]');
}
}
-?>
</php>
File: MyButtonExample.tpl
@@ -108,7 +106,7 @@ Select the element with the specified @id attribute. If no match is found, sele
Find an element using JavaScript traversal of the HTML Document Object Model. DOM locators ''must'' begin with "document.".
* dom=document.forms['myForm'].myDropdown
* dom=document.images[56]
-
+
==== '''xpath='''''xpathExpression''====
Locate an element using an XPath expression. XPath locators ''must'' begin with "//".
* xpath=//img[@alt='The image alt text']
@@ -133,15 +131,15 @@ Select Option Specifiers provide different ways of specifying options of an HTML
matches options based on their labels, i.e. the visible text.
* label=regexp:^[Oo]ther
-==== value=valuePattern ====
+==== value=valuePattern ====
matches options based on their values.
* value=other
-==== id=id ====
+==== id=id ====
matches options based on their ids.
* id=option1
-==== index=index ====
+==== index=index ====
matches an option based on its index (offset from zero).
* index=2
@@ -174,8 +172,8 @@ Selenium Actions
examples:
- open /mypage
- open http://localhost/
+ open /mypage
+ open http://localhost/
click( elementLocator )
@@ -183,9 +181,9 @@ Selenium Actions
examples:
- click aCheckbox
- clickAndWait submitButton
- clickAndWait anyLink
+ click aCheckbox
+ clickAndWait submitButton
+ clickAndWait anyLink
note:
Selenium will always automatically click on a popup dialog raised by the alert() or confirm() methods. (The exception is those raised during 'onload', which are not yet handled by Selenium). You must use [verify|assert]Alert or [verify|assert]Confirmation to tell Selenium that you expect the popup dialog. You may use chooseCancelOnNextConfirmation to click 'cancel' on the next confirmation dialog instead of clicking 'OK'.
@@ -222,8 +220,8 @@ Selenium Actions
examples:
- selectWindow myPopupWindow
- selectWindow null
+ selectWindow myPopupWindow
+ selectWindow null
goBack()
@@ -231,7 +229,7 @@ Selenium Actions
examples:
- goBack
+ goBack
close()
@@ -239,7 +237,7 @@ Selenium Actions
examples:
- close
+ close
pause( milliseconds )
@@ -247,8 +245,8 @@ Selenium Actions
examples:
- pause 5000
- pause 2000
+ pause 5000
+ pause 2000
fireEvent( elementLocator, eventName )
@@ -310,7 +308,7 @@ Selenium Actions
examples:
- chooseCancelOnNextConfirmation
+ chooseCancelOnNextConfirmation
answerOnNextPrompt( answerString )
@@ -318,7 +316,7 @@ Selenium Actions
examples:
- answerOnNextPrompt Kangaroo
+ answerOnNextPrompt Kangaroo
Selenium Checks
@@ -330,8 +328,8 @@ Selenium Checks
examples:
- verifyLocation /mypage
- assertLocation /mypage
+ verifyLocation /mypage
+ assertLocation /mypage
assertTitle( titlePattern )
@@ -339,8 +337,8 @@ Selenium Checks
examples:
- verifyTitle My Page
- assertTitle My Page
+ verifyTitle My Page
+ assertTitle My Page
assertValue( inputLocator, valuePattern )
@@ -396,8 +394,8 @@ Selenium Checks
examples:
- verifyTextPresent You are now logged in.
- assertTextPresent You are now logged in.
+ verifyTextPresent You are now logged in.
+ assertTextPresent You are now logged in.
assertTextNotPresent( text )
@@ -409,8 +407,8 @@ Selenium Checks
examples:
- verifyElementPresent submitButton
- assertElementPresent //img[@alt='foo']
+ verifyElementPresent submitButton
+ assertElementPresent //img[@alt='foo']
assertElementNotPresent( elementLocator )
@@ -418,8 +416,8 @@ Selenium Checks
examples:
- verifyElementNotPresent cancelButton
- assertElementNotPresent cancelButton
+ verifyElementNotPresent cancelButton
+ assertElementNotPresent cancelButton
assertTable( cellAddress, valuePattern )
@@ -436,8 +434,8 @@ Selenium Checks
examples:
- verifyVisible postcode
- assertVisible postcode
+ verifyVisible postcode
+ assertVisible postcode
assertNotVisible( elementLocator )
@@ -445,8 +443,8 @@ Selenium Checks
examples:
- verifyNotVisible postcode
- assertNotVisible postcode
+ verifyNotVisible postcode
+ assertNotVisible postcode
verifyEditable / assertEditable( inputLocator )
@@ -454,8 +452,8 @@ Selenium Checks
examples:
- verifyEditable shape
- assertEditable colour
+ verifyEditable shape
+ assertEditable colour
assertNotEditable( inputLocator )
@@ -473,8 +471,8 @@ Selenium Checks
examples:
- verifyAlert Invalid Phone Number
- assertAlert Invalid Phone Number
+ verifyAlert Invalid Phone Number
+ assertAlert Invalid Phone Number
assertConfirmation( messagePattern )
@@ -488,8 +486,8 @@ Selenium Checks
examples:
- assertConfirmation Remove this user?
- verifyConfirmation Are you sure?
+ assertConfirmation Remove this user?
+ verifyConfirmation Are you sure?
assertPrompt( messagePattern )
@@ -499,9 +497,9 @@ Selenium Checks
examples:
- answerOnNextPrompt Joe
- click id=delegate
- verifyPrompt Delegate to who?
+ answerOnNextPrompt Joe
+ click id=delegate
+ verifyPrompt Delegate to who?
Parameter construction and Variables
diff --git a/tests/test_tools/phpunit_bootstrap.php b/tests/test_tools/phpunit_bootstrap.php
index 1154e5fc..10817175 100644
--- a/tests/test_tools/phpunit_bootstrap.php
+++ b/tests/test_tools/phpunit_bootstrap.php
@@ -22,4 +22,4 @@ if (!@include_once VENDOR_DIR.'/autoload.php') {
require_once(PRADO_FRAMEWORK_DIR.'/prado.php');
// for FunctionalTests
-require_once(__DIR__.'/PradoGenericSeleniumTest.php'); \ No newline at end of file
+require_once(__DIR__.'/PradoGenericSelenium2Test.php'); \ No newline at end of file
diff --git a/tests/test_tools/simpletest/HtmlReporterWithCoverage.php b/tests/test_tools/simpletest/HtmlReporterWithCoverage.php
index abd10076..f3ae2391 100644
--- a/tests/test_tools/simpletest/HtmlReporterWithCoverage.php
+++ b/tests/test_tools/simpletest/HtmlReporterWithCoverage.php
@@ -1,11 +1,11 @@
<?php
-if (!defined('T_ML_COMMENT'))
+if (!defined('T_ML_COMMENT'))
define('T_ML_COMMENT', T_COMMENT);
-else
+else
define('T_DOC_COMMENT', T_ML_COMMENT);
-class HtmlReporterWithCoverage extends HtmlReporter
+class HtmlReporterWithCoverage extends HtmlReporter
{
protected $coverage = array();
@@ -19,7 +19,7 @@ class HtmlReporterWithCoverage extends HtmlReporter
$this->base_dir = $base_dir;
}
- function paintHeader($test_name, $charset="UTF-8")
+ function paintHeader($test_name, $charset="UTF-8")
{
$this->sendNoCacheHeaders();
header('Content-Type: text/html; Charset='.$charset);
@@ -31,30 +31,30 @@ class HtmlReporterWithCoverage extends HtmlReporter
print "</head>\n<body>\n";
print "<h1>$test_name</h1>\n";
flush();
-
- if (extension_loaded('xdebug'))
+
+ if (extension_loaded('xdebug'))
xdebug_start_code_coverage(XDEBUG_CC_UNUSED);
- }
+ }
/**
*
*/
- function _getCss()
+ function _getCss()
{
$contents = parent::_getCss()."\n ";
$contents .= '
- .bar { float: left; display: inline; border: 1px solid #eee; width: 300px; white-space: nowrap;}
- .percentage { float: left; background-color: #eef; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 0.65em; padding: 5px; margin-right: }
- .coverage {margin: 0.4em; }
+ .bar { float: left; display: inline; border: 1px solid #eee; width: 300px; white-space: nowrap;}
+ .percentage { float: left; background-color: #eef; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 0.65em; padding: 5px; margin-right: }
+ .coverage {margin: 0.4em; }
.coverage a {
padding-left: 0.5em;
}
- .coverage:after {
- content: ".";
- display: block;
- height: 0;
- clear: both;
+ .coverage:after {
+ content: ".";
+ display: block;
+ height: 0;
+ clear: both;
visibility: hidden;
}
.coverage {display: inline-block;}
@@ -66,9 +66,9 @@ class HtmlReporterWithCoverage extends HtmlReporter
Return $contents;
}
- function paintFooter($test_name)
+ function paintFooter($test_name)
{
- if (extension_loaded('xdebug'))
+ if (extension_loaded('xdebug'))
{
$this->coverage = xdebug_get_code_coverage();
xdebug_stop_code_coverage();
@@ -93,10 +93,10 @@ class HtmlReporterWithCoverage extends HtmlReporter
$dir = dirname(__FILE__);
if(count($this->coverage) > 0)
print '<h2>Code Coverage</h2>';
-
-
- ksort($this->coverage);
-
+
+
+ ksort($this->coverage);
+
$details = array();
foreach($this->coverage as $file => $coverage)
{
@@ -110,7 +110,7 @@ class HtmlReporterWithCoverage extends HtmlReporter
$width = $percentage * 3;
$filename = str_replace($this->base_dir, '',$file);
$link = $this->constructURL($filename, $coverage);
-
+
$detail['total'] = $total;
$detail['executed'] = $executed;
$detail['width'] = $width;
@@ -150,7 +150,7 @@ class HtmlReporterWithCoverage extends HtmlReporter
}
-class HTMLCoverageReport extends HtmlReporter
+class HTMLCoverageReport extends HtmlReporter
{
protected $file;
protected $lines;
@@ -184,7 +184,7 @@ class HTMLCoverageReport extends HtmlReporter
$this->paintFooter();
}
- function paintHeader($file, $charset="UTF-8")
+ function paintHeader($file, $charset="UTF-8")
{
$total = $this->codelines($this->file);
$executed = count($this->lines);
@@ -218,21 +218,21 @@ class HTMLCoverageReport extends HtmlReporter
$lines = '';
- foreach ($tokens as $token)
+ foreach ($tokens as $token)
{
- if (is_string($token))
+ if (is_string($token))
{
// simple 1-character token
$lines .= $token;
- }
- else
+ }
+ else
{
// token array
list($id, $text) = $token;
- switch ($id)
- {
- case T_COMMENT:
+ switch ($id)
+ {
+ case T_COMMENT:
case T_ML_COMMENT: // we've defined this
case T_DOC_COMMENT: // and this
// no action on comments
@@ -265,4 +265,3 @@ class HTMLCoverageReport extends HtmlReporter
}
}
-?>
diff --git a/tests/test_tools/simpletest/authentication.php b/tests/test_tools/simpletest/authentication.php
index cae366b3..86b68402 100644
--- a/tests/test_tools/simpletest/authentication.php
+++ b/tests/test_tools/simpletest/authentication.php
@@ -234,5 +234,4 @@
'Authorization: Basic ' . base64_encode("$username:$password"));
}
}
- }
-?> \ No newline at end of file
+ } \ No newline at end of file
diff --git a/tests/test_tools/simpletest/browser.php b/tests/test_tools/simpletest/browser.php
index 44c8ddd4..410b18b9 100644
--- a/tests/test_tools/simpletest/browser.php
+++ b/tests/test_tools/simpletest/browser.php
@@ -220,7 +220,7 @@
function useFrames() {
$this->_ignore_frames = false;
}
-
+
/**
* Switches off cookie sending and recieving.
* @access public
@@ -228,7 +228,7 @@
function ignoreCookies() {
$this->_user_agent->ignoreCookies();
}
-
+
/**
* Switches back on the cookie sending and recieving.
* @access public
@@ -257,7 +257,7 @@
}
return $frameset;
}
-
+
/**
* Assembles the parsing machinery and actually parses
* a single page. Frees all of the builder memory and so
@@ -1053,5 +1053,4 @@
}
return $raw;
}
- }
-?> \ No newline at end of file
+ } \ No newline at end of file
diff --git a/tests/test_tools/simpletest/collector.php b/tests/test_tools/simpletest/collector.php
index 5bcde179..ded847c9 100644
--- a/tests/test_tools/simpletest/collector.php
+++ b/tests/test_tools/simpletest/collector.php
@@ -1,12 +1,11 @@
<?php
/**
- * This file contains the following classes: {@link SimpleCollector},
+ * This file contains the following classes: {@link SimpleCollector},
* {@link SimplePatternCollector}.
- *
+ *
* @author Travis Swicegood <development@domain51.com>
* @package SimpleTest
* @subpackage UnitTester
- * @version $Id: collector.php 1398 2006-09-08 19:31:03Z xue $
*/
/**
@@ -17,7 +16,7 @@
* @subpackage UnitTester
*/
class SimpleCollector {
-
+
/**
* Strips off any kind of slash at the end so as to normalise the path
*
@@ -25,12 +24,12 @@ class SimpleCollector {
*/
function _removeTrailingSlash($path) {
return preg_replace('|[\\/]$|', '', $path);
-
+
/**
* @internal
* Try benchmarking the following. It's more code, but by not using the
- * regex, it may be faster? Also, shouldn't be looking for
- * DIRECTORY_SEPERATOR instead of a manual "/"?
+ * regex, it may be faster? Also, shouldn't be looking for
+ * DIRECTORY_SEPERATOR instead of a manual "/"?
*/
if (substr($path, -1) == DIRECTORY_SEPERATOR) {
return substr($path, 0, -1);
@@ -54,12 +53,12 @@ class SimpleCollector {
closedir($handle);
}
}
-
+
/**
* This method determines what should be done with a given file and adds
* it via {@link GroupTest::addTestFile()} if necessary.
*
- * This method should be overriden to provide custom matching criteria,
+ * This method should be overriden to provide custom matching criteria,
* such as pattern matching, recursive matching, etc. For an example, see
* {@link SimplePatternCollector::_handle()}.
*
@@ -85,8 +84,8 @@ class SimpleCollector {
*/
class SimplePatternCollector extends SimpleCollector {
protected $_pattern;
-
-
+
+
/**
*
* @param string $pattern Perl compatible regex to test name against
@@ -96,8 +95,8 @@ class SimplePatternCollector extends SimpleCollector {
function SimplePatternCollector($pattern = '/php$/i') {
$this->_pattern = $pattern;
}
-
-
+
+
/**
* Attempts to add files that match a given pattern.
*
@@ -111,5 +110,4 @@ class SimplePatternCollector extends SimpleCollector {
parent::_handle($test, $filename);
}
}
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/test_tools/simpletest/compatibility.php b/tests/test_tools/simpletest/compatibility.php
index 92cf70d3..a181793e 100644
--- a/tests/test_tools/simpletest/compatibility.php
+++ b/tests/test_tools/simpletest/compatibility.php
@@ -181,4 +181,3 @@
return array();
}
}
-?>
diff --git a/tests/test_tools/simpletest/cookies.php b/tests/test_tools/simpletest/cookies.php
index 4a2b0d4e..eba8776e 100644
--- a/tests/test_tools/simpletest/cookies.php
+++ b/tests/test_tools/simpletest/cookies.php
@@ -11,7 +11,7 @@
*/
require_once(dirname(__FILE__) . '/url.php');
/**#@-*/
-
+
/**
* Cookie data holder. Cookie rules are full of pretty
* arbitary stuff. I have used...
@@ -27,7 +27,7 @@
protected $_path;
protected $_expiry;
protected $_is_secure;
-
+
/**
* Constructor. Sets the stored values.
* @param string $name Cookie key.
@@ -49,7 +49,7 @@
}
$this->_is_secure = $is_secure;
}
-
+
/**
* Sets the host. The cookie rules determine
* that the first two parts are taken for
@@ -67,7 +67,7 @@
}
return false;
}
-
+
/**
* Accessor for the truncated host to which this
* cookie applies.
@@ -77,7 +77,7 @@
function getHost() {
return $this->_host;
}
-
+
/**
* Test for a cookie being valid for a host name.
* @param string $host Host to test against.
@@ -87,7 +87,7 @@
function isValidHost($host) {
return ($this->_truncateHost($host) === $this->getHost());
}
-
+
/**
* Extracts just the domain part that determines a
* cookie's host validity.
@@ -104,7 +104,7 @@
}
return false;
}
-
+
/**
* Accessor for name.
* @return string Cookie key.
@@ -113,7 +113,7 @@
function getName() {
return $this->_name;
}
-
+
/**
* Accessor for value. A deleted cookie will
* have an empty string for this.
@@ -123,7 +123,7 @@
function getValue() {
return $this->_value;
}
-
+
/**
* Accessor for path.
* @return string Valid cookie path.
@@ -132,7 +132,7 @@
function getPath() {
return $this->_path;
}
-
+
/**
* Tests a path to see if the cookie applies
* there. The test path must be longer or
@@ -147,7 +147,7 @@
$this->getPath(),
strlen($this->getPath())) == 0);
}
-
+
/**
* Accessor for expiry.
* @return string Expiry string.
@@ -159,7 +159,7 @@
}
return gmdate("D, d M Y H:i:s", $this->_expiry) . " GMT";
}
-
+
/**
* Test to see if cookie is expired against
* the cookie format time or timestamp.
@@ -180,7 +180,7 @@
}
return ($this->_expiry < $now);
}
-
+
/**
* Ages the cookie by the specified number of
* seconds.
@@ -192,7 +192,7 @@
$this->_expiry -= $interval;
}
}
-
+
/**
* Accessor for the secure flag.
* @return boolean True if cookie needs SSL.
@@ -201,7 +201,7 @@
function isSecure() {
return $this->_is_secure;
}
-
+
/**
* Adds a trailing and leading slash to the path
* if missing.
@@ -218,7 +218,7 @@
return $path;
}
}
-
+
/**
* Repository for cookies. This stuff is a
* tiny bit browser dependent.
@@ -227,7 +227,7 @@
*/
class SimpleCookieJar {
protected $_cookies;
-
+
/**
* Constructor. Jar starts empty.
* @access public
@@ -235,7 +235,7 @@
function SimpleCookieJar() {
$this->_cookies = array();
}
-
+
/**
* Removes expired and temporary cookies as if
* the browser was closed and re-opened.
@@ -258,7 +258,7 @@
}
$this->_cookies = $surviving_cookies;
}
-
+
/**
* Ages all cookies in the cookie jar.
* @param integer $interval The old session is moved
@@ -272,7 +272,7 @@
$this->_cookies[$i]->agePrematurely($interval);
}
}
-
+
/**
* Sets an additional cookie. If a cookie has
* the same name and path it is replaced.
@@ -290,7 +290,7 @@
}
$this->_cookies[$this->_findFirstMatch($cookie)] = $cookie;
}
-
+
/**
* Finds a matching cookie to write over or the
* first empty slot if none.
@@ -311,7 +311,7 @@
}
return count($this->_cookies);
}
-
+
/**
* Reads the most specific cookie value from the
* browser cookies. Looks for the longest path that
@@ -335,7 +335,7 @@
}
return (isset($value) ? $value : false);
}
-
+
/**
* Tests cookie for matching against search
* criteria.
@@ -359,7 +359,7 @@
}
return true;
}
-
+
/**
* Uses a URL to sift relevant cookies by host and
* path. Results are list of strings of form "name=value".
@@ -376,5 +376,4 @@
}
return $pairs;
}
- }
-?> \ No newline at end of file
+ } \ No newline at end of file
diff --git a/tests/test_tools/simpletest/detached.php b/tests/test_tools/simpletest/detached.php
index 1f3638bb..06665781 100644
--- a/tests/test_tools/simpletest/detached.php
+++ b/tests/test_tools/simpletest/detached.php
@@ -92,5 +92,4 @@
function &_createParser($reporter) {
return new SimpleTestXmlParser($reporter);
}
- }
-?> \ No newline at end of file
+ } \ No newline at end of file
diff --git a/tests/test_tools/simpletest/dumper.php b/tests/test_tools/simpletest/dumper.php
index a2ea30b0..9c3f745a 100644
--- a/tests/test_tools/simpletest/dumper.php
+++ b/tests/test_tools/simpletest/dumper.php
@@ -398,5 +398,4 @@
}
return false;
}
- }
-?> \ No newline at end of file
+ } \ No newline at end of file
diff --git a/tests/test_tools/simpletest/encoding.php b/tests/test_tools/simpletest/encoding.php
index 0dc9fbfa..ca2083a3 100644
--- a/tests/test_tools/simpletest/encoding.php
+++ b/tests/test_tools/simpletest/encoding.php
@@ -5,7 +5,7 @@
* @subpackage WebTester
* @version $Id: encoding.php 1398 2006-09-08 19:31:03Z xue $
*/
-
+
/**#@+
* include other SimpleTest class files
*/
@@ -20,7 +20,7 @@
class SimpleEncodedPair {
protected $_key;
protected $_value;
-
+
/**
* Stashes the data for rendering later.
* @param string $key Form element name.
@@ -30,7 +30,7 @@
$this->_key = $key;
$this->_value = $value;
}
-
+
/**
* The pair as a single string.
* @return string Encoded pair.
@@ -39,7 +39,7 @@
function asRequest() {
return $this->_key . '=' . urlencode($this->_value);
}
-
+
/**
* The MIME part as a string.
* @return string MIME part encoding.
@@ -51,7 +51,7 @@
$part .= "\r\n" . $this->_value;
return $part;
}
-
+
/**
* Is this the value we are looking for?
* @param string $key Identifier.
@@ -61,7 +61,7 @@
function isKey($key) {
return $key == $this->_key;
}
-
+
/**
* Is this the value we are looking for?
* @return string Identifier.
@@ -70,7 +70,7 @@
function getKey() {
return $this->_key;
}
-
+
/**
* Is this the value we are looking for?
* @return string Content.
@@ -90,7 +90,7 @@
protected $_key;
protected $_content;
protected $_filename;
-
+
/**
* Stashes the data for rendering later.
* @param string $key Key to add value to.
@@ -102,7 +102,7 @@
$this->_content = $content;
$this->_filename = $filename;
}
-
+
/**
* The pair as a single string.
* @return string Encoded pair.
@@ -111,7 +111,7 @@
function asRequest() {
return '';
}
-
+
/**
* The MIME part as a string.
* @return string MIME part encoding.
@@ -125,7 +125,7 @@
$part .= "\r\n\r\n" . $this->_content;
return $part;
}
-
+
/**
* Attempts to figure out the MIME type from the
* file extension and the content.
@@ -138,7 +138,7 @@
}
return 'application/octet-stream';
}
-
+
/**
* Tests each character is in the range 0-127.
* @param string $ascii String to test.
@@ -152,7 +152,7 @@
}
return true;
}
-
+
/**
* Is this the value we are looking for?
* @param string $key Identifier.
@@ -162,7 +162,7 @@
function isKey($key) {
return $key == $this->_key;
}
-
+
/**
* Is this the value we are looking for?
* @return string Identifier.
@@ -171,7 +171,7 @@
function getKey() {
return $this->_key;
}
-
+
/**
* Is this the value we are looking for?
* @return string Content.
@@ -190,7 +190,7 @@
*/
class SimpleEncoding {
protected $_request;
-
+
/**
* Starts empty.
* @param array $query Hash of parameters.
@@ -205,7 +205,7 @@
$this->clear();
$this->merge($query);
}
-
+
/**
* Empties the request of parameters.
* @access public
@@ -213,7 +213,7 @@
function clear() {
$this->_request = array();
}
-
+
/**
* Adds a parameter to the query.
* @param string $key Key to add value to.
@@ -232,7 +232,7 @@
$this->_addPair($key, $value);
}
}
-
+
/**
* Adds a new value into the request.
* @param string $key Key to add value to.
@@ -242,7 +242,7 @@
function _addPair($key, $value) {
$this->_request[] = new SimpleEncodedPair($key, $value);
}
-
+
/**
* Adds a MIME part to the query. Does nothing for a
* form encoded packet.
@@ -254,7 +254,7 @@
function attach($key, $content, $filename) {
$this->_request[] = new SimpleAttachment($key, $content, $filename);
}
-
+
/**
* Adds a set of parameters to this query.
* @param array/SimpleQueryString $query Multiple values are
@@ -270,7 +270,7 @@
}
}
}
-
+
/**
* Accessor for single value.
* @return string/array False if missing, string
@@ -293,7 +293,7 @@
return $values;
}
}
-
+
/**
* Accessor for listing of pairs.
* @return array All pair objects.
@@ -302,7 +302,7 @@
function getAll() {
return $this->_request;
}
-
+
/**
* Renders the query string as a URL encoded
* request part.
@@ -319,7 +319,7 @@
return implode('&', $statements);
}
}
-
+
/**
* Bundle of GET parameters. Can include
* repeated parameters.
@@ -327,7 +327,7 @@
* @subpackage WebTester
*/
class SimpleGetEncoding extends SimpleEncoding {
-
+
/**
* Starts empty.
* @param array $query Hash of parameters.
@@ -338,7 +338,7 @@
function SimpleGetEncoding($query = false) {
$this->SimpleEncoding($query);
}
-
+
/**
* HTTP request method.
* @return string Always GET.
@@ -347,7 +347,7 @@
function getMethod() {
return 'GET';
}
-
+
/**
* Writes no extra headers.
* @param SimpleSocket $socket Socket to write to.
@@ -355,7 +355,7 @@
*/
function writeHeadersTo($socket) {
}
-
+
/**
* No data is sent to the socket as the data is encoded into
* the URL.
@@ -364,7 +364,7 @@
*/
function writeTo($socket) {
}
-
+
/**
* Renders the query string as a URL encoded
* request part for attaching to a URL.
@@ -375,14 +375,14 @@
return $this->_encode();
}
}
-
+
/**
* Bundle of URL parameters for a HEAD request.
* @package SimpleTest
* @subpackage WebTester
*/
class SimpleHeadEncoding extends SimpleGetEncoding {
-
+
/**
* Starts empty.
* @param array $query Hash of parameters.
@@ -393,7 +393,7 @@
function SimpleHeadEncoding($query = false) {
$this->SimpleGetEncoding($query);
}
-
+
/**
* HTTP request method.
* @return string Always HEAD.
@@ -403,7 +403,7 @@
return 'HEAD';
}
}
-
+
/**
* Bundle of POST parameters. Can include
* repeated parameters.
@@ -411,7 +411,7 @@
* @subpackage WebTester
*/
class SimplePostEncoding extends SimpleEncoding {
-
+
/**
* Starts empty.
* @param array $query Hash of parameters.
@@ -422,7 +422,7 @@
function SimplePostEncoding($query = false) {
$this->SimpleEncoding($query);
}
-
+
/**
* HTTP request method.
* @return string Always POST.
@@ -431,7 +431,7 @@
function getMethod() {
return 'POST';
}
-
+
/**
* Dispatches the form headers down the socket.
* @param SimpleSocket $socket Socket to write to.
@@ -441,7 +441,7 @@
$socket->write("Content-Length: " . (integer)strlen($this->_encode()) . "\r\n");
$socket->write("Content-Type: application/x-www-form-urlencoded\r\n");
}
-
+
/**
* Dispatches the form data down the socket.
* @param SimpleSocket $socket Socket to write to.
@@ -450,7 +450,7 @@
function writeTo($socket) {
$socket->write($this->_encode());
}
-
+
/**
* Renders the query string as a URL encoded
* request part for attaching to a URL.
@@ -461,7 +461,7 @@
return '';
}
}
-
+
/**
* Bundle of POST parameters in the multipart
* format. Can include file uploads.
@@ -470,7 +470,7 @@
*/
class SimpleMultipartEncoding extends SimplePostEncoding {
protected $_boundary;
-
+
/**
* Starts empty.
* @param array $query Hash of parameters.
@@ -482,7 +482,7 @@
$this->SimplePostEncoding($query);
$this->_boundary = ($boundary === false ? uniqid('st') : $boundary);
}
-
+
/**
* Dispatches the form headers down the socket.
* @param SimpleSocket $socket Socket to write to.
@@ -492,7 +492,7 @@
$socket->write("Content-Length: " . (integer)strlen($this->_encode()) . "\r\n");
$socket->write("Content-Type: multipart/form-data, boundary=" . $this->_boundary . "\r\n");
}
-
+
/**
* Dispatches the form data down the socket.
* @param SimpleSocket $socket Socket to write to.
@@ -501,7 +501,7 @@
function writeTo($socket) {
$socket->write($this->_encode());
}
-
+
/**
* Renders the query string as a URL encoded
* request part.
@@ -517,5 +517,4 @@
$stream .= "--" . $this->_boundary . "--\r\n";
return $stream;
}
- }
-?> \ No newline at end of file
+ } \ No newline at end of file
diff --git a/tests/test_tools/simpletest/errors.php b/tests/test_tools/simpletest/errors.php
index a756bd7c..c10d68a5 100644
--- a/tests/test_tools/simpletest/errors.php
+++ b/tests/test_tools/simpletest/errors.php
@@ -178,5 +178,4 @@
$queue->add($severity, $message, $filename, $line, $super_globals);
set_error_handler('simpleTestErrorHandler');
}
- }
-?> \ No newline at end of file
+ } \ No newline at end of file
diff --git a/tests/test_tools/simpletest/exceptions.php b/tests/test_tools/simpletest/exceptions.php
index 63558ad1..30d35386 100644
--- a/tests/test_tools/simpletest/exceptions.php
+++ b/tests/test_tools/simpletest/exceptions.php
@@ -42,5 +42,4 @@
$test_case->exception($exception);
}
}
- }
-?> \ No newline at end of file
+ } \ No newline at end of file
diff --git a/tests/test_tools/simpletest/expectation.php b/tests/test_tools/simpletest/expectation.php
index 8513aff4..a660fa9c 100644
--- a/tests/test_tools/simpletest/expectation.php
+++ b/tests/test_tools/simpletest/expectation.php
@@ -717,4 +717,3 @@
"] should contain method [$method]";
}
}
-?>
diff --git a/tests/test_tools/simpletest/form.php b/tests/test_tools/simpletest/form.php
index 0e6aea14..fba26bf6 100644
--- a/tests/test_tools/simpletest/form.php
+++ b/tests/test_tools/simpletest/form.php
@@ -5,7 +5,7 @@
* @subpackage WebTester
* @version $Id: form.php 1398 2006-09-08 19:31:03Z xue $
*/
-
+
/**#@+
* include SimpleTest files
*/
@@ -13,7 +13,7 @@
require_once(dirname(__FILE__) . '/encoding.php');
require_once(dirname(__FILE__) . '/selector.php');
/**#@-*/
-
+
/**
* Form tag class to hold widget values.
* @package SimpleTest
@@ -30,7 +30,7 @@
protected $_widgets;
protected $_radios;
protected $_checkboxes;
-
+
/**
* Starts with no held controls/widgets.
* @param SimpleTag $tag Form tag to read.
@@ -48,7 +48,7 @@
$this->_radios = array();
$this->_checkboxes = array();
}
-
+
/**
* Creates the request packet to be sent by the form.
* @param SimpleTag $tag Form tag to read.
@@ -64,7 +64,7 @@
}
return 'SimpleGetEncoding';
}
-
+
/**
* Sets the frame target within a frameset.
* @param string $frame Name of frame.
@@ -73,7 +73,7 @@
function setDefaultTarget($frame) {
$this->_default_target = $frame;
}
-
+
/**
* Accessor for method of form submission.
* @return string Either get or post.
@@ -82,7 +82,7 @@
function getMethod() {
return ($this->_method ? strtolower($this->_method) : 'get');
}
-
+
/**
* Combined action attribute with current location
* to get an absolute form target.
@@ -97,7 +97,7 @@
$url = new SimpleUrl($action);
return $url->makeAbsolute($base);
}
-
+
/**
* Absolute URL of the target.
* @return SimpleUrl URL target.
@@ -110,7 +110,7 @@
}
return $url;
}
-
+
/**
* Creates the encoding for the current values in the
* form.
@@ -125,7 +125,7 @@
}
return $encoding;
}
-
+
/**
* ID field of form for unique identification.
* @return string Unique tag ID.
@@ -134,7 +134,7 @@
function getId() {
return $this->_id;
}
-
+
/**
* Adds a tag contents to the form.
* @param SimpleWidget $tag Input tag to add.
@@ -149,7 +149,7 @@
$this->_setWidget($tag);
}
}
-
+
/**
* Sets the widget into the form, grouping radio
* buttons if any.
@@ -165,7 +165,7 @@
$this->_widgets[] = $tag;
}
}
-
+
/**
* Adds a radio button, building a group if necessary.
* @param SimpleRadioButtonTag $tag Incoming form control.
@@ -178,7 +178,7 @@
}
$this->_widgets[$this->_radios[$tag->getName()]]->addWidget($tag);
}
-
+
/**
* Adds a checkbox, making it a group on a repeated name.
* @param SimpleCheckboxTag $tag Incoming form control.
@@ -198,7 +198,7 @@
$this->_widgets[$index]->addWidget($tag);
}
}
-
+
/**
* Extracts current value from form.
* @param SimpleSelector $selector Criteria to apply.
@@ -219,7 +219,7 @@
}
return null;
}
-
+
/**
* Sets a widget value within the form.
* @param SimpleSelector $selector Criteria to apply.
@@ -240,7 +240,7 @@
}
return $success;
}
-
+
/**
* Used by the page object to set widgets labels to
* external label tags.
@@ -257,7 +257,7 @@
}
}
}
-
+
/**
* Test to see if a form has a submit button.
* @param SimpleSelector $selector Criteria to apply.
@@ -272,7 +272,7 @@
}
return false;
}
-
+
/**
* Test to see if a form has an image control.
* @param SimpleSelector $selector Criteria to apply.
@@ -287,7 +287,7 @@
}
return false;
}
-
+
/**
* Gets the submit values for a selected button.
* @param SimpleSelector $selector Criteria to apply.
@@ -306,12 +306,12 @@
if ($additional) {
$encoding->merge($additional);
}
- return $encoding;
+ return $encoding;
}
}
return false;
}
-
+
/**
* Gets the submit values for an image.
* @param SimpleSelector $selector Criteria to apply.
@@ -332,12 +332,12 @@
if ($additional) {
$encoding->merge($additional);
}
- return $encoding;
+ return $encoding;
}
}
return false;
}
-
+
/**
* Simply submits the form without the submit button
* value. Used when there is only one button or it
@@ -349,4 +349,3 @@
return $this->_encode();
}
}
-?>
diff --git a/tests/test_tools/simpletest/frames.php b/tests/test_tools/simpletest/frames.php
index 60ced141..86e03157 100644
--- a/tests/test_tools/simpletest/frames.php
+++ b/tests/test_tools/simpletest/frames.php
@@ -584,5 +584,4 @@
}
return null;
}
- }
-?> \ No newline at end of file
+ } \ No newline at end of file
diff --git a/tests/test_tools/simpletest/http.php b/tests/test_tools/simpletest/http.php
index 9344a5b9..78c91b7e 100644
--- a/tests/test_tools/simpletest/http.php
+++ b/tests/test_tools/simpletest/http.php
@@ -13,7 +13,7 @@
require_once(dirname(__FILE__) . '/cookies.php');
require_once(dirname(__FILE__) . '/url.php');
/**#@-*/
-
+
/**
* Creates HTTP headers for the end point of
* a HTTP request.
@@ -22,7 +22,7 @@
*/
class SimpleRoute {
protected $_url;
-
+
/**
* Sets the target URL.
* @param SimpleUrl $url URL as object.
@@ -31,7 +31,7 @@
function SimpleRoute($url) {
$this->_url = $url;
}
-
+
/**
* Resource name.
* @return SimpleUrl Current url.
@@ -40,7 +40,7 @@
function getUrl() {
return $this->_url;
}
-
+
/**
* Creates the first line which is the actual request.
* @param string $method HTTP request method, usually GET.
@@ -51,7 +51,7 @@
return $method . ' ' . $this->_url->getPath() .
$this->_url->getEncodedRequest() . ' HTTP/1.0';
}
-
+
/**
* Creates the host part of the request.
* @return string Host line content.
@@ -64,7 +64,7 @@
}
return $line;
}
-
+
/**
* Opens a socket to the route.
* @param string $method HTTP request method, usually GET.
@@ -86,7 +86,7 @@
}
return $socket;
}
-
+
/**
* Factory for socket.
* @param string $scheme Protocol to use.
@@ -105,7 +105,7 @@
return $socket;
}
}
-
+
/**
* Creates HTTP headers for the end point of
* a HTTP request via a proxy server.
@@ -116,7 +116,7 @@
protected $_proxy;
protected $_username;
protected $_password;
-
+
/**
* Stashes the proxy address.
* @param SimpleUrl $url URL as object.
@@ -131,7 +131,7 @@
$this->_username = $username;
$this->_password = $password;
}
-
+
/**
* Creates the first line which is the actual request.
* @param string $method HTTP request method, usually GET.
@@ -146,7 +146,7 @@
return $method . ' ' . $scheme . '://' . $url->getHost() . $port .
$url->getPath() . $url->getEncodedRequest() . ' HTTP/1.0';
}
-
+
/**
* Creates the host part of the request.
* @param SimpleUrl $url URL as object.
@@ -158,7 +158,7 @@
$port = $this->_proxy->getPort() ? $this->_proxy->getPort() : 8080;
return "$host:$port";
}
-
+
/**
* Opens a socket to the route.
* @param string $method HTTP request method, usually GET.
@@ -198,7 +198,7 @@
protected $_encoding;
protected $_headers;
protected $_cookies;
-
+
/**
* Builds the socket request from the different pieces.
* These include proxy information, URL, cookies, headers,
@@ -214,7 +214,7 @@
$this->_headers = array();
$this->_cookies = array();
}
-
+
/**
* Dispatches the content to the route's socket.
* @param integer $timeout Connection timeout.
@@ -231,7 +231,7 @@
$response = $this->_createResponse($socket);
return $response;
}
-
+
/**
* Sends the headers.
* @param SimpleSocket $socket Open socket.
@@ -251,7 +251,7 @@
$socket->write("\r\n");
$encoding->writeTo($socket);
}
-
+
/**
* Adds a header line to the request.
* @param string $header_line Text of full header line.
@@ -260,7 +260,7 @@
function addHeaderLine($header_line) {
$this->_headers[] = $header_line;
}
-
+
/**
* Reads all the relevant cookies from the
* cookie jar.
@@ -271,7 +271,7 @@
function readCookiesFromJar($jar, $url) {
$this->_cookies = $jar->selectAsPairs($url);
}
-
+
/**
* Wraps the socket in a response parser.
* @param SimpleSocket $socket Responding socket.
@@ -286,7 +286,7 @@
return $response;
}
}
-
+
/**
* Collection of header lines in the response.
* @package SimpleTest
@@ -301,7 +301,7 @@
protected $_cookies;
protected $_authentication;
protected $_realm;
-
+
/**
* Parses the incoming header block.
* @param string $headers Header block.
@@ -320,7 +320,7 @@
$this->_parseHeaderLine($header_line);
}
}
-
+
/**
* Accessor for parsed HTTP protocol version.
* @return integer HTTP error code.
@@ -329,7 +329,7 @@
function getHttpVersion() {
return $this->_http_version;
}
-
+
/**
* Accessor for raw header block.
* @return string All headers as raw string.
@@ -338,7 +338,7 @@
function getRaw() {
return $this->_raw_headers;
}
-
+
/**
* Accessor for parsed HTTP error code.
* @return integer HTTP error code.
@@ -347,7 +347,7 @@
function getResponseCode() {
return (integer)$this->_response_code;
}
-
+
/**
* Returns the redirected URL or false if
* no redirection.
@@ -357,7 +357,7 @@
function getLocation() {
return $this->_location;
}
-
+
/**
* Test to see if the response is a valid redirect.
* @return boolean True if valid redirect.
@@ -367,7 +367,7 @@
return in_array($this->_response_code, array(301, 302, 303, 307)) &&
(boolean)$this->getLocation();
}
-
+
/**
* Test to see if the response is an authentication
* challenge.
@@ -379,7 +379,7 @@
(boolean)$this->_authentication &&
(boolean)$this->_realm;
}
-
+
/**
* Accessor for MIME type header information.
* @return string MIME type.
@@ -388,7 +388,7 @@
function getMimeType() {
return $this->_mime_type;
}
-
+
/**
* Accessor for authentication type.
* @return string Type.
@@ -397,7 +397,7 @@
function getAuthentication() {
return $this->_authentication;
}
-
+
/**
* Accessor for security realm.
* @return string Realm.
@@ -406,7 +406,7 @@
function getRealm() {
return $this->_realm;
}
-
+
/**
* Writes new cookies to the cookie jar.
* @param SimpleCookieJar $jar Jar to write to.
@@ -449,7 +449,7 @@
$this->_realm = trim($matches[2]);
}
}
-
+
/**
* Parse the Set-cookie content.
* @param string $cookie_line Text after "Set-cookie:"
@@ -472,7 +472,7 @@
isset($cookie["expires"]) ? $cookie["expires"] : false);
}
}
-
+
/**
* Basic HTTP response.
* @package SimpleTest
@@ -484,7 +484,7 @@
protected $_sent;
protected $_content;
protected $_headers;
-
+
/**
* Constructor. Reads and parses the incoming
* content and headers.
@@ -507,7 +507,7 @@
}
$this->_parse($raw);
}
-
+
/**
* Splits up the headers and the rest of the content.
* @param string $raw Content to parse.
@@ -525,7 +525,7 @@
$this->_headers = new SimpleHttpHeaders($headers);
}
}
-
+
/**
* Original request method.
* @return string GET, POST or HEAD.
@@ -534,7 +534,7 @@
function getMethod() {
return $this->_encoding->getMethod();
}
-
+
/**
* Resource name.
* @return SimpleUrl Current url.
@@ -543,7 +543,7 @@
function getUrl() {
return $this->_url;
}
-
+
/**
* Original request data.
* @return mixed Sent content.
@@ -552,7 +552,7 @@
function getRequestData() {
return $this->_encoding;
}
-
+
/**
* Raw request that was sent down the wire.
* @return string Bytes actually sent.
@@ -561,7 +561,7 @@
function getSent() {
return $this->_sent;
}
-
+
/**
* Accessor for the content after the last
* header line.
@@ -571,7 +571,7 @@
function getContent() {
return $this->_content;
}
-
+
/**
* Accessor for header block. The response is the
* combination of this and the content.
@@ -581,7 +581,7 @@
function getHeaders() {
return $this->_headers;
}
-
+
/**
* Accessor for any new cookies.
* @return array List of new cookies.
@@ -590,7 +590,7 @@
function getNewCookies() {
return $this->_headers->getNewCookies();
}
-
+
/**
* Reads the whole of the socket output into a
* single string.
@@ -606,7 +606,7 @@
}
return $all;
}
-
+
/**
* Test to see if the packet from the socket is the
* last one.
@@ -620,5 +620,4 @@
}
return ! $packet;
}
- }
-?> \ No newline at end of file
+ } \ No newline at end of file
diff --git a/tests/test_tools/simpletest/invoker.php b/tests/test_tools/simpletest/invoker.php
index d5bf4996..dfe9263c 100644
--- a/tests/test_tools/simpletest/invoker.php
+++ b/tests/test_tools/simpletest/invoker.php
@@ -136,4 +136,3 @@
$this->_invoker->after($method);
}
}
-?>
diff --git a/tests/test_tools/simpletest/mock_objects.php b/tests/test_tools/simpletest/mock_objects.php
index 1636600e..b63d1760 100644
--- a/tests/test_tools/simpletest/mock_objects.php
+++ b/tests/test_tools/simpletest/mock_objects.php
@@ -1269,5 +1269,4 @@
}
return $code;
}
- }
-?> \ No newline at end of file
+ } \ No newline at end of file
diff --git a/tests/test_tools/simpletest/options.php b/tests/test_tools/simpletest/options.php
index da4d8b2f..23008ff9 100644
--- a/tests/test_tools/simpletest/options.php
+++ b/tests/test_tools/simpletest/options.php
@@ -363,4 +363,3 @@
return array();
}
}
-?>
diff --git a/tests/test_tools/simpletest/page.php b/tests/test_tools/simpletest/page.php
index eeae0cc9..7d0ac7b8 100644
--- a/tests/test_tools/simpletest/page.php
+++ b/tests/test_tools/simpletest/page.php
@@ -128,7 +128,7 @@
function SimplePageBuilder() {
$this->SimpleSaxListener();
}
-
+
/**
* Frees up any references so as to allow the PHP garbage
* collection from unset() to work.
@@ -177,7 +177,7 @@
$parser = new SimpleHtmlSaxParser($listener);
return $parser;
}
-
+
/**
* Start of element event. Opens a new tag.
* @param string $name Element name.
@@ -972,4 +972,3 @@
return null;
}
}
-?>
diff --git a/tests/test_tools/simpletest/parser.php b/tests/test_tools/simpletest/parser.php
index d6c10579..94fd40d0 100644
--- a/tests/test_tools/simpletest/parser.php
+++ b/tests/test_tools/simpletest/parser.php
@@ -769,5 +769,4 @@
*/
function addContent($text) {
}
- }
-?> \ No newline at end of file
+ } \ No newline at end of file
diff --git a/tests/test_tools/simpletest/reflection_php4.php b/tests/test_tools/simpletest/reflection_php4.php
index 4af685ec..df9c76cc 100644
--- a/tests/test_tools/simpletest/reflection_php4.php
+++ b/tests/test_tools/simpletest/reflection_php4.php
@@ -111,5 +111,4 @@
function getSignature($method) {
return "function $method()";
}
- }
-?> \ No newline at end of file
+ } \ No newline at end of file
diff --git a/tests/test_tools/simpletest/reflection_php5.php b/tests/test_tools/simpletest/reflection_php5.php
index 58a30856..6d2ad360 100644
--- a/tests/test_tools/simpletest/reflection_php5.php
+++ b/tests/test_tools/simpletest/reflection_php5.php
@@ -124,7 +124,7 @@
}
return array_unique($methods);
}
-
+
/**
* Checks to see if the method signature has to be tightly
* specified.
@@ -207,7 +207,7 @@
}
return "function $name()";
}
-
+
/**
* For a signature specified in an interface, full
* details must be replicated to be a valid implementation.
@@ -271,5 +271,4 @@
}
return false;
}
- }
-?> \ No newline at end of file
+ } \ No newline at end of file
diff --git a/tests/test_tools/simpletest/remote.php b/tests/test_tools/simpletest/remote.php
index 7e6898cb..1868733d 100644
--- a/tests/test_tools/simpletest/remote.php
+++ b/tests/test_tools/simpletest/remote.php
@@ -23,7 +23,7 @@
protected $_url;
protected $_dry_url;
protected $_size;
-
+
/**
* Sets the location of the remote test.
* @param string $url Test location.
@@ -35,7 +35,7 @@
$this->_dry_url = $dry_url ? $dry_url : $url;
$this->_size = false;
}
-
+
/**
* Accessor for the test name for subclasses.
* @return string Name of the test.
@@ -67,7 +67,7 @@
}
return true;
}
-
+
/**
* Creates a new web browser object for fetching
* the XML report.
@@ -77,7 +77,7 @@
function &_createBrowser() {
return new SimpleBrowser();
}
-
+
/**
* Creates the XML parser.
* @param SimpleReporter $reporter Target of test results.
@@ -87,7 +87,7 @@
function &_createParser($reporter) {
return new SimpleTestXmlParser($reporter);
}
-
+
/**
* Accessor for the number of subtests.
* @return integer Number of test cases.
@@ -111,5 +111,4 @@
}
return $this->_size;
}
- }
-?> \ No newline at end of file
+ } \ No newline at end of file
diff --git a/tests/test_tools/simpletest/reporter.php b/tests/test_tools/simpletest/reporter.php
index c8c1639d..a6b5a85a 100644
--- a/tests/test_tools/simpletest/reporter.php
+++ b/tests/test_tools/simpletest/reporter.php
@@ -363,5 +363,4 @@
$this->_within_test_case = false;
}
}
- }
-?> \ No newline at end of file
+ } \ No newline at end of file
diff --git a/tests/test_tools/simpletest/runner.php b/tests/test_tools/simpletest/runner.php
index 57939f7a..d7303895 100644
--- a/tests/test_tools/simpletest/runner.php
+++ b/tests/test_tools/simpletest/runner.php
@@ -5,7 +5,7 @@
* @subpackage UnitTester
* @version $Id: runner.php 1398 2006-09-08 19:31:03Z xue $
*/
-
+
/**#@+
* Includes SimpleTest files and defined the root constant
* for dependent libraries.
@@ -19,7 +19,7 @@
define('SIMPLE_TEST', dirname(__FILE__) . '/');
}
/**#@-*/
-
+
/**
* This is called by the class runner to run a
* single test method. Will also run the setUp()
@@ -29,7 +29,7 @@
*/
class SimpleInvoker {
protected $_test_case;
-
+
/**
* Stashes the test case for later.
* @param SimpleTestCase $test_case Test case to run.
@@ -37,7 +37,7 @@
function SimpleInvoker($test_case) {
$this->_test_case = $test_case;
}
-
+
/**
* Accessor for test case being run.
* @return SimpleTestCase Test case.
@@ -46,7 +46,7 @@
function getTestCase() {
return $this->_test_case;
}
-
+
/**
* Invokes a test method and buffered with setUp()
* and tearDown() calls.
@@ -59,7 +59,7 @@
$this->_test_case->tearDown();
}
}
-
+
/**
* Do nothing decorator. Just passes the invocation
* straight through.
@@ -68,7 +68,7 @@
*/
class SimpleInvokerDecorator {
protected $_invoker;
-
+
/**
* Stores the invoker to wrap.
* @param SimpleInvoker $invoker Test method runner.
@@ -76,7 +76,7 @@
function SimpleInvokerDecorator($invoker) {
$this->_invoker = $invoker;
}
-
+
/**
* Accessor for test case being run.
* @return SimpleTestCase Test case.
@@ -85,7 +85,7 @@
function getTestCase() {
return $this->_invoker->getTestCase();
}
-
+
/**
* Invokes a test method and buffered with setUp()
* and tearDown() calls.
@@ -103,7 +103,7 @@
* @subpackage UnitTester
*/
class SimpleErrorTrappingInvoker extends SimpleInvokerDecorator {
-
+
/**
/**
* Stores the invoker to wrap.
@@ -112,7 +112,7 @@
function SimpleErrorTrappingInvoker($invoker) {
$this->SimpleInvokerDecorator($invoker);
}
-
+
/**
* Invokes a test method and dispatches any
* untrapped errors. Called back from
@@ -142,7 +142,7 @@
class SimpleRunner {
protected $_test_case;
protected $_scorer;
-
+
/**
* Takes in the test case and reporter to mediate between.
* @param SimpleTestCase $test_case Test case to run.
@@ -152,7 +152,7 @@
$this->_test_case = $test_case;
$this->_scorer = $scorer;
}
-
+
/**
* Accessor for test case being run.
* @return SimpleTestCase Test case.
@@ -161,7 +161,7 @@
function getTestCase() {
return $this->_test_case;
}
-
+
/**
* Runs the test methods in the test case.
* @param SimpleTest $test_case Test case to run test on.
@@ -185,7 +185,7 @@
$this->_scorer->paintMethodEnd($method);
}
}
-
+
/**
* Tests to see if the method is the constructor and
* so should be ignored.
@@ -198,7 +198,7 @@
$this->_test_case,
strtolower($method));
}
-
+
/**
* Tests to see if the method is a test that should
* be run. Currently any method that starts with 'test'
@@ -219,7 +219,7 @@
function paintMethodStart($test_name) {
$this->_scorer->paintMethodStart($test_name);
}
-
+
/**
* Paints the end of a test method.
* @param string $test_name Name of test or other label.
@@ -228,7 +228,7 @@
function paintMethodEnd($test_name) {
$this->_scorer->paintMethodEnd($test_name);
}
-
+
/**
* Chains to the wrapped reporter.
* @param string $message Message is ignored.
@@ -237,7 +237,7 @@
function paintPass($message) {
$this->_scorer->paintPass($message);
}
-
+
/**
* Chains to the wrapped reporter.
* @param string $message Message is ignored.
@@ -246,7 +246,7 @@
function paintFail($message) {
$this->_scorer->paintFail($message);
}
-
+
/**
* Chains to the wrapped reporter.
* @param string $message Text of error formatted by
@@ -256,7 +256,7 @@
function paintError($message) {
$this->_scorer->paintError($message);
}
-
+
/**
* Chains to the wrapped reporter.
* @param Exception $exception Object thrown.
@@ -265,7 +265,7 @@
function paintException($exception) {
$this->_scorer->paintException($exception);
}
-
+
/**
* Chains to the wrapped reporter.
* @param string $message Text to display.
@@ -274,7 +274,7 @@
function paintMessage($message) {
$this->_scorer->paintMessage($message);
}
-
+
/**
* Chains to the wrapped reporter.
* @param string $message Text to display.
@@ -283,7 +283,7 @@
function paintFormattedMessage($message) {
$this->_scorer->paintFormattedMessage($message);
}
-
+
/**
* Chains to the wrapped reporter.
* @param string $type Event type as text.
@@ -297,4 +297,3 @@
$this->_scorer->paintSignal($type, $payload);
}
}
-?>
diff --git a/tests/test_tools/simpletest/scorer.php b/tests/test_tools/simpletest/scorer.php
index 2c81c954..48b7162b 100644
--- a/tests/test_tools/simpletest/scorer.php
+++ b/tests/test_tools/simpletest/scorer.php
@@ -773,5 +773,4 @@
$this->_reporters[$i]->paintSignal($type, $payload);
}
}
- }
-?> \ No newline at end of file
+ } \ No newline at end of file
diff --git a/tests/test_tools/simpletest/selector.php b/tests/test_tools/simpletest/selector.php
index 901815ad..6af21ff6 100644
--- a/tests/test_tools/simpletest/selector.php
+++ b/tests/test_tools/simpletest/selector.php
@@ -129,5 +129,4 @@
}
return ($widget->getName() == $this->_label);
}
- }
-?> \ No newline at end of file
+ } \ No newline at end of file
diff --git a/tests/test_tools/simpletest/shell_tester.php b/tests/test_tools/simpletest/shell_tester.php
index 5719e9d3..5ac6013d 100644
--- a/tests/test_tools/simpletest/shell_tester.php
+++ b/tests/test_tools/simpletest/shell_tester.php
@@ -127,7 +127,7 @@
$shell = $this->_getShell();
return $shell->getOutputAsList();
}
-
+
/**
* Will trigger a pass if the two parameters have
* the same value only. Otherwise a fail. This
@@ -144,7 +144,7 @@
$second,
$message);
}
-
+
/**
* Will trigger a pass if the two parameters have
* a different value. Otherwise a fail. This
@@ -302,5 +302,4 @@
$shell = new SimpleShell();
return $shell;
}
- }
-?> \ No newline at end of file
+ } \ No newline at end of file
diff --git a/tests/test_tools/simpletest/simple_test.php b/tests/test_tools/simpletest/simple_test.php
index 3bb1d40e..cc39a08b 100644
--- a/tests/test_tools/simpletest/simple_test.php
+++ b/tests/test_tools/simpletest/simple_test.php
@@ -550,4 +550,3 @@
return 0;
}
}
-?>
diff --git a/tests/test_tools/simpletest/simpletest.php b/tests/test_tools/simpletest/simpletest.php
index f859ac0f..df1536ac 100644
--- a/tests/test_tools/simpletest/simpletest.php
+++ b/tests/test_tools/simpletest/simpletest.php
@@ -278,5 +278,4 @@
function getDefaultProxyPassword() {
return Simpletest::getDefaultProxyPassword();
}
- }
-?> \ No newline at end of file
+ } \ No newline at end of file
diff --git a/tests/test_tools/simpletest/socket.php b/tests/test_tools/simpletest/socket.php
index 7b47aa9c..cfeed48a 100644
--- a/tests/test_tools/simpletest/socket.php
+++ b/tests/test_tools/simpletest/socket.php
@@ -212,5 +212,4 @@
function _openSocket($host, $port, $error_number, $error, $timeout) {
return parent::_openSocket("tls://$host", $port, $error_number, $error, $timeout);
}
- }
-?> \ No newline at end of file
+ } \ No newline at end of file
diff --git a/tests/test_tools/simpletest/tag.php b/tests/test_tools/simpletest/tag.php
index 5d8de890..46fb740a 100644
--- a/tests/test_tools/simpletest/tag.php
+++ b/tests/test_tools/simpletest/tag.php
@@ -5,14 +5,14 @@
* @subpackage WebTester
* @version $Id: tag.php 1398 2006-09-08 19:31:03Z xue $
*/
-
+
/**#@+
* include SimpleTest files
*/
require_once(dirname(__FILE__) . '/parser.php');
require_once(dirname(__FILE__) . '/encoding.php');
/**#@-*/
-
+
/**
* HTML or XML tag.
* @package SimpleTest
@@ -22,7 +22,7 @@
protected $_name;
protected $_attributes;
protected $_content;
-
+
/**
* Starts with a named tag with attributes only.
* @param string $name Tag name.
@@ -36,7 +36,7 @@
$this->_attributes = $attributes;
$this->_content = '';
}
-
+
/**
* Check to see if the tag can have both start and
* end tags with content in between.
@@ -46,7 +46,7 @@
function expectEndTag() {
return true;
}
-
+
/**
* The current tag should not swallow all content for
* itself as it's searchable page content. Private
@@ -68,7 +68,7 @@
function addContent($content) {
$this->_content .= (string)$content;
}
-
+
/**
* Adds an enclosed tag to the content.
* @param SimpleTag $tag New tag.
@@ -76,7 +76,7 @@
*/
function addTag($tag) {
}
-
+
/**
* Accessor for tag name.
* @return string Name of tag.
@@ -85,7 +85,7 @@
function getTagName() {
return $this->_name;
}
-
+
/**
* List of legal child elements.
* @return array List of element names.
@@ -94,7 +94,7 @@
function getChildElements() {
return array();
}
-
+
/**
* Accessor for an attribute.
* @param string $label Attribute name.
@@ -108,7 +108,7 @@
}
return (string)$this->_attributes[$label];
}
-
+
/**
* Sets an attribute.
* @param string $label Attribute name.
@@ -118,7 +118,7 @@
function _setAttribute($label, $value) {
$this->_attributes[strtolower($label)] = $value;
}
-
+
/**
* Accessor for the whole content so far.
* @return string Content as big raw string.
@@ -127,7 +127,7 @@
function getContent() {
return $this->_content;
}
-
+
/**
* Accessor for content reduced to visible text. Acts
* like a text mode browser, normalising space and
@@ -138,7 +138,7 @@
function getText() {
return SimpleHtmlSaxParser::normalise($this->_content);
}
-
+
/**
* Test to see if id attribute matches.
* @param string $id ID to test against.
@@ -149,14 +149,14 @@
return ($this->getAttribute('id') == $id);
}
}
-
+
/**
* Page title.
* @package SimpleTest
* @subpackage WebTester
*/
class SimpleTitleTag extends SimpleTag {
-
+
/**
* Starts with a named tag with attributes only.
* @param hash $attributes Attribute names and
@@ -166,14 +166,14 @@
$this->SimpleTag('title', $attributes);
}
}
-
+
/**
* Link.
* @package SimpleTest
* @subpackage WebTester
*/
class SimpleAnchorTag extends SimpleTag {
-
+
/**
* Starts with a named tag with attributes only.
* @param hash $attributes Attribute names and
@@ -182,7 +182,7 @@
function SimpleAnchorTag($attributes) {
$this->SimpleTag('a', $attributes);
}
-
+
/**
* Accessor for URL as string.
* @return string Coerced as string.
@@ -196,7 +196,7 @@
return $url;
}
}
-
+
/**
* Form element.
* @package SimpleTest
@@ -206,7 +206,7 @@
protected $_value;
protected $_label;
protected $_is_set;
-
+
/**
* Starts with a named tag with attributes only.
* @param string $name Tag name.
@@ -219,7 +219,7 @@
$this->_label = false;
$this->_is_set = false;
}
-
+
/**
* Accessor for name submitted as the key in
* GET/POST variables hash.
@@ -229,7 +229,7 @@
function getName() {
return $this->getAttribute('name');
}
-
+
/**
* Accessor for default value parsed with the tag.
* @return string Parsed value.
@@ -238,7 +238,7 @@
function getDefault() {
return $this->getAttribute('value');
}
-
+
/**
* Accessor for currently set value or default if
* none.
@@ -252,7 +252,7 @@
}
return $this->_value;
}
-
+
/**
* Sets the current form element value.
* @param string $value New value.
@@ -264,7 +264,7 @@
$this->_is_set = true;
return true;
}
-
+
/**
* Resets the form element value back to the
* default.
@@ -273,7 +273,7 @@
function resetValue() {
$this->_is_set = false;
}
-
+
/**
* Allows setting of a label externally, say by a
* label tag.
@@ -283,7 +283,7 @@
function setLabel($label) {
$this->_label = trim($label);
}
-
+
/**
* Reads external or internal label.
* @param string $label Label to test.
@@ -293,7 +293,7 @@
function isLabel($label) {
return $this->_label == trim($label);
}
-
+
/**
* Dispatches the value into the form encoded packet.
* @param SimpleEncoding $encoding Form packet.
@@ -305,14 +305,14 @@
}
}
}
-
+
/**
* Text, password and hidden field.
* @package SimpleTest
* @subpackage WebTester
*/
class SimpleTextTag extends SimpleWidget {
-
+
/**
* Starts with a named tag with attributes only.
* @param hash $attributes Attribute names and
@@ -324,7 +324,7 @@
$this->_setAttribute('value', '');
}
}
-
+
/**
* Tag contains no content.
* @return boolean False.
@@ -333,7 +333,7 @@
function expectEndTag() {
return false;
}
-
+
/**
* Sets the current form element value. Cannot
* change the value of a hidden field.
@@ -348,14 +348,14 @@
return parent::setValue($value);
}
}
-
+
/**
* Submit button as input tag.
* @package SimpleTest
* @subpackage WebTester
*/
class SimpleSubmitTag extends SimpleWidget {
-
+
/**
* Starts with a named tag with attributes only.
* @param hash $attributes Attribute names and
@@ -367,7 +367,7 @@
$this->_setAttribute('value', 'Submit');
}
}
-
+
/**
* Tag contains no end element.
* @return boolean False.
@@ -376,7 +376,7 @@
function expectEndTag() {
return false;
}
-
+
/**
* Disables the setting of the button value.
* @param string $value Ignored.
@@ -386,7 +386,7 @@
function setValue($value) {
return false;
}
-
+
/**
* Value of browser visible text.
* @return string Visible label.
@@ -395,7 +395,7 @@
function getLabel() {
return $this->getValue();
}
-
+
/**
* Test for a label match when searching.
* @param string $label Label to test.
@@ -406,14 +406,14 @@
return trim($label) == trim($this->getLabel());
}
}
-
+
/**
* Image button as input tag.
* @package SimpleTest
* @subpackage WebTester
*/
class SimpleImageSubmitTag extends SimpleWidget {
-
+
/**
* Starts with a named tag with attributes only.
* @param hash $attributes Attribute names and
@@ -422,7 +422,7 @@
function SimpleImageSubmitTag($attributes) {
$this->SimpleWidget('input', $attributes);
}
-
+
/**
* Tag contains no end element.
* @return boolean False.
@@ -431,7 +431,7 @@
function expectEndTag() {
return false;
}
-
+
/**
* Disables the setting of the button value.
* @param string $value Ignored.
@@ -441,7 +441,7 @@
function setValue($value) {
return false;
}
-
+
/**
* Value of browser visible text.
* @return string Visible label.
@@ -453,7 +453,7 @@
}
return $this->getAttribute('alt');
}
-
+
/**
* Test for a label match when searching.
* @param string $label Label to test.
@@ -463,7 +463,7 @@
function isLabel($label) {
return trim($label) == trim($this->getLabel());
}
-
+
/**
* Dispatches the value into the form encoded packet.
* @param SimpleEncoding $encoding Form packet.
@@ -481,14 +481,14 @@
}
}
}
-
+
/**
* Submit button as button tag.
* @package SimpleTest
* @subpackage WebTester
*/
class SimpleButtonTag extends SimpleWidget {
-
+
/**
* Starts with a named tag with attributes only.
* Defaults are very browser dependent.
@@ -498,7 +498,7 @@
function SimpleButtonTag($attributes) {
$this->SimpleWidget('button', $attributes);
}
-
+
/**
* Check to see if the tag can have both start and
* end tags with content in between.
@@ -508,7 +508,7 @@
function expectEndTag() {
return true;
}
-
+
/**
* Disables the setting of the button value.
* @param string $value Ignored.
@@ -518,7 +518,7 @@
function setValue($value) {
return false;
}
-
+
/**
* Value of browser visible text.
* @return string Visible label.
@@ -527,7 +527,7 @@
function getLabel() {
return $this->getContent();
}
-
+
/**
* Test for a label match when searching.
* @param string $label Label to test.
@@ -538,14 +538,14 @@
return trim($label) == trim($this->getLabel());
}
}
-
+
/**
* Content tag for text area.
* @package SimpleTest
* @subpackage WebTester
*/
class SimpleTextAreaTag extends SimpleWidget {
-
+
/**
* Starts with a named tag with attributes only.
* @param hash $attributes Attribute names and
@@ -554,7 +554,7 @@
function SimpleTextAreaTag($attributes) {
$this->SimpleWidget('textarea', $attributes);
}
-
+
/**
* Accessor for starting value.
* @return string Parsed value.
@@ -563,7 +563,7 @@
function getDefault() {
return $this->_wrap(SimpleHtmlSaxParser::decodeHtml($this->getContent()));
}
-
+
/**
* Applies word wrapping if needed.
* @param string $value New value.
@@ -573,7 +573,7 @@
function setValue($value) {
return parent::setValue($this->_wrap($value));
}
-
+
/**
* Test to see if text should be wrapped.
* @return boolean True if wrapping on.
@@ -588,7 +588,7 @@
}
return false;
}
-
+
/**
* Performs the formatting that is peculiar to
* this tag. There is strange behaviour in this
@@ -613,7 +613,7 @@
}
return $text;
}
-
+
/**
* The content of textarea is not part of the page.
* @return boolean True.
@@ -623,14 +623,14 @@
return true;
}
}
-
+
/**
* File upload widget.
* @package SimpleTest
* @subpackage WebTester
*/
class SimpleUploadTag extends SimpleWidget {
-
+
/**
* Starts with attributes only.
* @param hash $attributes Attribute names and
@@ -639,7 +639,7 @@
function SimpleUploadTag($attributes) {
$this->SimpleWidget('input', $attributes);
}
-
+
/**
* Tag contains no content.
* @return boolean False.
@@ -648,7 +648,7 @@
function expectEndTag() {
return false;
}
-
+
/**
* Dispatches the value into the form encoded packet.
* @param SimpleEncoding $encoding Form packet.
@@ -664,7 +664,7 @@
basename($this->getValue()));
}
}
-
+
/**
* Drop down widget.
* @package SimpleTest
@@ -673,7 +673,7 @@
class SimpleSelectionTag extends SimpleWidget {
protected $_options;
protected $_choice;
-
+
/**
* Starts with attributes only.
* @param hash $attributes Attribute names and
@@ -684,7 +684,7 @@
$this->_options = array();
$this->_choice = false;
}
-
+
/**
* Adds an option tag to a selection field.
* @param SimpleOptionTag $tag New option.
@@ -695,7 +695,7 @@
$this->_options[] = $tag;
}
}
-
+
/**
* Text within the selection element is ignored.
* @param string $content Ignored.
@@ -703,7 +703,7 @@
*/
function addContent($content) {
}
-
+
/**
* Scans options for defaults. If none, then
* the first option is selected.
@@ -721,7 +721,7 @@
}
return '';
}
-
+
/**
* Can only set allowed values.
* @param string $value New choice.
@@ -737,7 +737,7 @@
}
return false;
}
-
+
/**
* Accessor for current selection value.
* @return string Value attribute or
@@ -751,7 +751,7 @@
return $this->_options[$this->_choice]->getValue();
}
}
-
+
/**
* Drop down widget.
* @package SimpleTest
@@ -760,7 +760,7 @@
class MultipleSelectionTag extends SimpleWidget {
protected $_options;
protected $_values;
-
+
/**
* Starts with attributes only.
* @param hash $attributes Attribute names and
@@ -771,7 +771,7 @@
$this->_options = array();
$this->_values = false;
}
-
+
/**
* Adds an option tag to a selection field.
* @param SimpleOptionTag $tag New option.
@@ -782,7 +782,7 @@
$this->_options[] = $tag;
}
}
-
+
/**
* Text within the selection element is ignored.
* @param string $content Ignored.
@@ -790,7 +790,7 @@
*/
function addContent($content) {
}
-
+
/**
* Scans options for defaults to populate the
* value array().
@@ -806,7 +806,7 @@
}
return $default;
}
-
+
/**
* Can only set allowed values. Any illegal value
* will result in a failure, but all correct values
@@ -833,7 +833,7 @@
$this->_values = $achieved;
return true;
}
-
+
/**
* Accessor for current selection value.
* @return array List of currently set options.
@@ -846,21 +846,21 @@
return $this->_values;
}
}
-
+
/**
* Option for selection field.
* @package SimpleTest
* @subpackage WebTester
*/
class SimpleOptionTag extends SimpleWidget {
-
+
/**
* Stashes the attributes.
*/
function SimpleOptionTag($attributes) {
$this->SimpleWidget('option', $attributes);
}
-
+
/**
* Does nothing.
* @param string $value Ignored.
@@ -870,7 +870,7 @@
function setValue($value) {
return false;
}
-
+
/**
* Test to see if a value matches the option.
* @param string $compare Value to compare with.
@@ -884,7 +884,7 @@
}
return trim($this->getContent()) == $compare;
}
-
+
/**
* Accessor for starting value. Will be set to
* the option label if no value exists.
@@ -897,7 +897,7 @@
}
return $this->getAttribute('value');
}
-
+
/**
* The content of options is not part of the page.
* @return boolean True.
@@ -907,14 +907,14 @@
return true;
}
}
-
+
/**
* Radio button.
* @package SimpleTest
* @subpackage WebTester
*/
class SimpleRadioButtonTag extends SimpleWidget {
-
+
/**
* Stashes the attributes.
* @param array $attributes Hash of attributes.
@@ -925,7 +925,7 @@
$this->_setAttribute('value', 'on');
}
}
-
+
/**
* Tag contains no content.
* @return boolean False.
@@ -934,7 +934,7 @@
function expectEndTag() {
return false;
}
-
+
/**
* The only allowed value sn the one in the
* "value" attribute.
@@ -951,7 +951,7 @@
}
return parent::setValue($value);
}
-
+
/**
* Accessor for starting value.
* @return string Parsed value.
@@ -964,14 +964,14 @@
return false;
}
}
-
+
/**
* Checkbox widget.
* @package SimpleTest
* @subpackage WebTester
*/
class SimpleCheckboxTag extends SimpleWidget {
-
+
/**
* Starts with attributes only.
* @param hash $attributes Attribute names and
@@ -983,7 +983,7 @@
$this->_setAttribute('value', 'on');
}
}
-
+
/**
* Tag contains no content.
* @return boolean False.
@@ -992,7 +992,7 @@
function expectEndTag() {
return false;
}
-
+
/**
* The only allowed value in the one in the
* "value" attribute. The default for this
@@ -1014,7 +1014,7 @@
}
return parent::setValue($value);
}
-
+
/**
* Accessor for starting value. The default
* value is "on".
@@ -1028,7 +1028,7 @@
return false;
}
}
-
+
/**
* A group of multiple widgets with some shared behaviour.
* @package SimpleTest
@@ -1045,7 +1045,7 @@
function addWidget($widget) {
$this->_widgets[] = $widget;
}
-
+
/**
* Accessor to widget set.
* @return array All widgets.
@@ -1064,7 +1064,7 @@
function getAttribute($label) {
return false;
}
-
+
/**
* Fetches the name for the widget from the first
* member.
@@ -1076,7 +1076,7 @@
return $this->_widgets[0]->getName();
}
}
-
+
/**
* Scans the widgets for one with the appropriate
* ID field.
@@ -1092,7 +1092,7 @@
}
return false;
}
-
+
/**
* Scans the widgets for one with the appropriate
* attached label.
@@ -1108,7 +1108,7 @@
}
return false;
}
-
+
/**
* Dispatches the value into the form encoded packet.
* @param SimpleEncoding $encoding Form packet.
@@ -1125,7 +1125,7 @@
* @subpackage WebTester
*/
class SimpleCheckboxGroup extends SimpleTagGroup {
-
+
/**
* Accessor for current selected widget or false
* if none.
@@ -1142,7 +1142,7 @@
}
return $this->_coerceValues($values);
}
-
+
/**
* Accessor for starting value that is active.
* @return string/array Widget values or false if none.
@@ -1158,7 +1158,7 @@
}
return $this->_coerceValues($values);
}
-
+
/**
* Accessor for current set values.
* @param string/array/boolean $values Either a single string, a
@@ -1182,7 +1182,7 @@
}
return true;
}
-
+
/**
* Tests to see if a possible value set is legal.
* @param string/array/boolean $values Either a single string, a
@@ -1202,7 +1202,7 @@
}
return ($values == $matches);
}
-
+
/**
* Converts the output to an appropriate format. This means
* that no values is false, a single value is just that
@@ -1220,7 +1220,7 @@
return $values;
}
}
-
+
/**
* Converts false or string into array. The opposite of
* the coercian method.
@@ -1248,7 +1248,7 @@
* @subpackage WebTester
*/
class SimpleRadioGroup extends SimpleTagGroup {
-
+
/**
* Each tag is tried in turn until one is
* successfully set. The others will be
@@ -1270,7 +1270,7 @@
}
return true;
}
-
+
/**
* Tests to see if a value is allowed.
* @param string Attempted value.
@@ -1286,7 +1286,7 @@
}
return false;
}
-
+
/**
* Accessor for current selected widget or false
* if none.
@@ -1303,7 +1303,7 @@
}
return false;
}
-
+
/**
* Accessor for starting value that is active.
* @return string/boolean Value of first checked
@@ -1320,14 +1320,14 @@
return false;
}
}
-
+
/**
* Tag to keep track of labels.
* @package SimpleTest
* @subpackage WebTester
*/
class SimpleLabelTag extends SimpleTag {
-
+
/**
* Starts with a named tag with attributes only.
* @param hash $attributes Attribute names and
@@ -1336,7 +1336,7 @@
function SimpleLabelTag($attributes) {
$this->SimpleTag('label', $attributes);
}
-
+
/**
* Access for the ID to attach the label to.
* @return string For attribute.
@@ -1346,14 +1346,14 @@
return $this->getAttribute('for');
}
}
-
+
/**
* Tag to aid parsing the form.
* @package SimpleTest
* @subpackage WebTester
*/
class SimpleFormTag extends SimpleTag {
-
+
/**
* Starts with a named tag with attributes only.
* @param hash $attributes Attribute names and
@@ -1363,14 +1363,14 @@
$this->SimpleTag('form', $attributes);
}
}
-
+
/**
* Tag to aid parsing the frames in a page.
* @package SimpleTest
* @subpackage WebTester
*/
class SimpleFrameTag extends SimpleTag {
-
+
/**
* Starts with a named tag with attributes only.
* @param hash $attributes Attribute names and
@@ -1379,7 +1379,7 @@
function SimpleFrameTag($attributes) {
$this->SimpleTag('frame', $attributes);
}
-
+
/**
* Tag contains no content.
* @return boolean False.
@@ -1388,5 +1388,4 @@
function expectEndTag() {
return false;
}
- }
-?> \ No newline at end of file
+ } \ No newline at end of file
diff --git a/tests/test_tools/simpletest/test_case.php b/tests/test_tools/simpletest/test_case.php
index 91a356d8..74253d80 100644
--- a/tests/test_tools/simpletest/test_case.php
+++ b/tests/test_tools/simpletest/test_case.php
@@ -687,4 +687,3 @@
return 0;
}
}
-?>
diff --git a/tests/test_tools/simpletest/unit_tester.php b/tests/test_tools/simpletest/unit_tester.php
index 7a382b5f..672a3050 100644
--- a/tests/test_tools/simpletest/unit_tester.php
+++ b/tests/test_tools/simpletest/unit_tester.php
@@ -370,4 +370,3 @@
return $this->assertError(new PatternExpectation($pattern), $message);
}
}
-?>
diff --git a/tests/test_tools/simpletest/url.php b/tests/test_tools/simpletest/url.php
index b208d1b3..dedc6a9b 100644
--- a/tests/test_tools/simpletest/url.php
+++ b/tests/test_tools/simpletest/url.php
@@ -521,5 +521,4 @@
static function getAllTopLevelDomains() {
return 'com|edu|net|org|gov|mil|int|biz|info|name|pro|aero|coop|museum';
}
- }
-?> \ No newline at end of file
+ } \ No newline at end of file
diff --git a/tests/test_tools/simpletest/user_agent.php b/tests/test_tools/simpletest/user_agent.php
index a901e6d4..161a1b68 100644
--- a/tests/test_tools/simpletest/user_agent.php
+++ b/tests/test_tools/simpletest/user_agent.php
@@ -14,11 +14,11 @@
require_once(dirname(__FILE__) . '/encoding.php');
require_once(dirname(__FILE__) . '/authentication.php');
/**#@-*/
-
+
if (! defined('DEFAULT_MAX_REDIRECTS')) {
define('DEFAULT_MAX_REDIRECTS', 3);
}
-
+
if (! defined('DEFAULT_CONNECTION_TIMEOUT')) {
define('DEFAULT_CONNECTION_TIMEOUT', 15);
}
@@ -39,7 +39,7 @@
protected $_proxy_password = false;
protected $_connection_timeout = DEFAULT_CONNECTION_TIMEOUT;
protected $_additional_headers = array();
-
+
/**
* Starts with no cookies, realms or proxies.
* @access public
@@ -48,7 +48,7 @@
$this->_cookie_jar = new SimpleCookieJar();
$this->_authenticator = new SimpleAuthenticator();
}
-
+
/**
* Removes expired and temporary cookies as if
* the browser was closed and re-opened. Authorisation
@@ -62,7 +62,7 @@
$this->_cookie_jar->restartSession($date);
$this->_authenticator->restartSession();
}
-
+
/**
* Adds a header to every fetch.
* @param string $header Header line to add to every
@@ -72,7 +72,7 @@
function addHeader($header) {
$this->_additional_headers[] = $header;
}
-
+
/**
* Ages the cookies by the specified time.
* @param integer $interval Amount in seconds.
@@ -81,7 +81,7 @@
function ageCookies($interval) {
$this->_cookie_jar->agePrematurely($interval);
}
-
+
/**
* Sets an additional cookie. If a cookie has
* the same name and path it is replaced.
@@ -95,7 +95,7 @@
function setCookie($name, $value, $host = false, $path = '/', $expiry = false) {
$this->_cookie_jar->setCookie($name, $value, $host, $path, $expiry);
}
-
+
/**
* Reads the most specific cookie value from the
* browser cookies.
@@ -109,7 +109,7 @@
function getCookieValue($host, $path, $name) {
return $this->_cookie_jar->getCookieValue($host, $path, $name);
}
-
+
/**
* Reads the current cookies within the base URL.
* @param string $name Key of cookie to find.
@@ -124,7 +124,7 @@
}
return $this->getCookieValue($base->getHost(), $base->getPath(), $name);
}
-
+
/**
* Switches off cookie sending and recieving.
* @access public
@@ -132,7 +132,7 @@
function ignoreCookies() {
$this->_cookies_enabled = false;
}
-
+
/**
* Switches back on the cookie sending and recieving.
* @access public
@@ -140,7 +140,7 @@
function useCookies() {
$this->_cookies_enabled = true;
}
-
+
/**
* Sets the socket timeout for opening a connection.
* @param integer $timeout Maximum time in seconds.
@@ -149,7 +149,7 @@
function setConnectionTimeout($timeout) {
$this->_connection_timeout = $timeout;
}
-
+
/**
* Sets the maximum number of redirects before
* a page will be loaded anyway.
@@ -159,7 +159,7 @@
function setMaximumRedirects($max) {
$this->_max_redirects = $max;
}
-
+
/**
* Sets proxy to use on all requests for when
* testing from behind a firewall. Set URL
@@ -181,7 +181,7 @@
$this->_proxy_username = $username;
$this->_proxy_password = $password;
}
-
+
/**
* Test to see if the redirect limit is passed.
* @param integer $redirects Count so far.
@@ -191,7 +191,7 @@
function _isTooManyRedirects($redirects) {
return ($redirects > $this->_max_redirects);
}
-
+
/**
* Sets the identity for the current realm.
* @param string $host Host to which realm applies.
@@ -203,7 +203,7 @@
function setIdentity($host, $realm, $username, $password) {
$this->_authenticator->setIdentityForRealm($host, $realm, $username, $password);
}
-
+
/**
* Fetches a URL as a response object. Will keep trying if redirected.
* It will also collect authentication realm information.
@@ -228,7 +228,7 @@
}
return $response;
}
-
+
/**
* Fetches the page until no longer redirected or
* until the redirect limit runs out.
@@ -257,7 +257,7 @@
} while (! $this->_isTooManyRedirects(++$redirects));
return $response;
}
-
+
/**
* Actually make the web request.
* @param SimpleUrl $url Target to fetch.
@@ -270,7 +270,7 @@
$response = $request->fetch($this->_connection_timeout);
return $response;
}
-
+
/**
* Creates a full page request.
* @param SimpleUrl $url Target to fetch as url object.
@@ -287,7 +287,7 @@
$this->_authenticator->addHeaders($request, $url);
return $request;
}
-
+
/**
* Builds the appropriate HTTP request object.
* @param SimpleUrl $url Target to fetch as url object.
@@ -299,7 +299,7 @@
$request = new SimpleHttpRequest($this->_createRoute($url), $encoding);
return $request;
}
-
+
/**
* Sets up either a direct route or via a proxy.
* @param SimpleUrl $url Target to fetch as url object.
@@ -318,7 +318,7 @@
}
return $route;
}
-
+
/**
* Adds additional manual headers.
* @param SimpleHttpRequest $request Outgoing request.
@@ -329,5 +329,4 @@
$request->addHeaderLine($header);
}
}
- }
-?> \ No newline at end of file
+ } \ No newline at end of file
diff --git a/tests/test_tools/simpletest/web_tester.php b/tests/test_tools/simpletest/web_tester.php
index c582a6ff..c6a48110 100644
--- a/tests/test_tools/simpletest/web_tester.php
+++ b/tests/test_tools/simpletest/web_tester.php
@@ -14,7 +14,7 @@
require_once(dirname(__FILE__) . '/page.php');
require_once(dirname(__FILE__) . '/expectation.php');
/**#@-*/
-
+
/**
* Test for an HTML widget value match.
* @package SimpleTest
@@ -22,7 +22,7 @@
*/
class FieldExpectation extends SimpleExpectation {
protected $_value;
-
+
/**
* Sets the field value to compare against.
* @param mixed $value Test value to match. Can be an
@@ -38,7 +38,7 @@
}
$this->_value = $value;
}
-
+
/**
* Tests the expectation. True if it matches
* a string value or an array value in any order.
@@ -59,7 +59,7 @@
}
return false;
}
-
+
/**
* Tests for valid field comparisons with a single option.
* @param mixed $value Value to type check.
@@ -69,7 +69,7 @@
function _isSingle($value) {
return is_string($value) || is_integer($value) || is_float($value);
}
-
+
/**
* String comparison for simple field with a single option.
* @param mixed $compare String to test against.
@@ -85,7 +85,7 @@
}
return ($this->_value == $compare);
}
-
+
/**
* List comparison for multivalue field.
* @param mixed $compare List in any order to test against.
@@ -102,7 +102,7 @@
sort($compare);
return ($this->_value === $compare);
}
-
+
/**
* Returns a human readable test message.
* @param mixed $compare Comparison value.
@@ -125,7 +125,7 @@
}
}
}
-
+
/**
* Test for a specific HTTP header within a header block.
* @package SimpleTest
@@ -134,7 +134,7 @@
class HttpHeaderExpectation extends SimpleExpectation {
protected $_expected_header;
protected $_expected_value;
-
+
/**
* Sets the field and value to compare against.
* @param string $header Case insenstive trimmed header name.
@@ -150,7 +150,7 @@
$this->_expected_header = $this->_normaliseHeader($header);
$this->_expected_value = $value;
}
-
+
/**
* Accessor for aggregated object.
* @return mixed Expectation set in constructor.
@@ -159,7 +159,7 @@
function _getExpectation() {
return $this->_expected_value;
}
-
+
/**
* Removes whitespace at ends and case variations.
* @param string $header Name of header.
@@ -170,7 +170,7 @@
function _normaliseHeader($header) {
return strtolower(trim($header));
}
-
+
/**
* Tests the expectation. True if it matches
* a string value or an array value in any order.
@@ -181,7 +181,7 @@
function test($compare) {
return is_string($this->_findHeader($compare));
}
-
+
/**
* Searches the incoming result. Will extract the matching
* line as text.
@@ -198,7 +198,7 @@
}
return false;
}
-
+
/**
* Compares a single header line against the expectation.
* @param string $line A single line to compare.
@@ -215,7 +215,7 @@
}
return $this->_testHeaderValue($value, $this->_expected_value);
}
-
+
/**
* Tests the value part of the header.
* @param string $value Value to test.
@@ -232,7 +232,7 @@
}
return (trim($value) == trim($expected));
}
-
+
/**
* Returns a human readable test message.
* @param mixed $compare Raw header block to search.
@@ -254,7 +254,7 @@
}
}
}
-
+
/**
* Test for a specific HTTP header within a header block that
* should not be found.
@@ -264,7 +264,7 @@
class NoHttpHeaderExpectation extends HttpHeaderExpectation {
protected $_expected_header;
protected $_expected_value;
-
+
/**
* Sets the field and value to compare against.
* @param string $unwanted Case insenstive trimmed header name.
@@ -274,7 +274,7 @@
function NoHttpHeaderExpectation($unwanted, $message = '%s') {
$this->HttpHeaderExpectation($unwanted, false, $message);
}
-
+
/**
* Tests that the unwanted header is not found.
* @param mixed $compare Raw header block to search.
@@ -284,7 +284,7 @@
function test($compare) {
return ($this->_findHeader($compare) === false);
}
-
+
/**
* Returns a human readable test message.
* @param mixed $compare Raw header block to search.
@@ -301,7 +301,7 @@
}
}
}
-
+
/**
* Test for a text substring.
* @package SimpleTest
@@ -309,7 +309,7 @@
*/
class TextExpectation extends SimpleExpectation {
protected $_substring;
-
+
/**
* Sets the value to compare against.
* @param string $substring Text to search for.
@@ -320,7 +320,7 @@
$this->SimpleExpectation($message);
$this->_substring = $substring;
}
-
+
/**
* Accessor for the substring.
* @return string Text to match.
@@ -329,7 +329,7 @@
function _getSubstring() {
return $this->_substring;
}
-
+
/**
* Tests the expectation. True if the text contains the
* substring.
@@ -340,7 +340,7 @@
function test($compare) {
return (strpos($compare, $this->_substring) !== false);
}
-
+
/**
* Returns a human readable test message.
* @param mixed $compare Comparison value.
@@ -358,7 +358,7 @@
$dumper->describeValue($compare) . "]";
}
}
-
+
/**
* Describes a pattern match including the string
* found and it's position.
@@ -374,7 +374,7 @@
$dumper->clipString($subject, 100, $position) . "]";
}
}
-
+
/**
* Fail if a substring is detected within the
* comparison text.
@@ -382,7 +382,7 @@
* @subpackage UnitTester
*/
class NoTextExpectation extends TextExpectation {
-
+
/**
* Sets the reject pattern
* @param string $substring Text to search for.
@@ -392,7 +392,7 @@
function NoTextExpectation($substring, $message = '%s') {
$this->TextExpectation($substring, $message);
}
-
+
/**
* Tests the expectation. False if the substring appears
* in the text.
@@ -403,7 +403,7 @@
function test($compare) {
return ! parent::test($compare);
}
-
+
/**
* Returns a human readable test message.
* @param string $compare Comparison value.
@@ -422,7 +422,7 @@
}
}
}
-
+
/**
* Test case for testing of web pages. Allows
* fetching of pages, parsing of HTML and
@@ -433,7 +433,7 @@
class WebTestCase extends SimpleTestCase {
protected $_browser;
protected $_ignore_errors = false;
-
+
/**
* Creates an empty test case. Should be subclassed
* with test methods for a functional test case.
@@ -444,7 +444,7 @@
function WebTestCase($label = false) {
$this->SimpleTestCase($label);
}
-
+
/**
* Announces the start of the test.
* @param string $method Test method just started.
@@ -464,7 +464,7 @@
$this->unsetBrowser();
parent::after($method);
}
-
+
/**
* Gets a current browser reference for setting
* special expectations or for detailed
@@ -475,7 +475,7 @@
function &getBrowser() {
return $this->_browser;
}
-
+
/**
* Gets a current browser reference for setting
* special expectations or for detailed
@@ -486,7 +486,7 @@
function setBrowser($browser) {
return $this->_browser = $browser;
}
-
+
/**
* Clears the current browser reference to help the
* PHP garbage collector.
@@ -495,7 +495,7 @@
function unsetBrowser() {
unset($this->_browser);
}
-
+
/**
* Creates a new default web browser object.
* Will be cleared at the end of the test method.
@@ -506,7 +506,7 @@
$browser = new SimpleBrowser();
return $browser;
}
-
+
/**
* Gets the last response error.
* @return string Last low level HTTP error.
@@ -515,7 +515,7 @@
function getTransportError() {
return $this->_browser->getTransportError();
}
-
+
/**
* Accessor for the currently selected URL.
* @return string Current location or false if
@@ -525,7 +525,7 @@
function getUrl() {
return $this->_browser->getUrl();
}
-
+
/**
* Dumps the current request for debugging.
* @access public
@@ -533,7 +533,7 @@
function showRequest() {
$this->dump($this->_browser->getRequest());
}
-
+
/**
* Dumps the current HTTP headers for debugging.
* @access public
@@ -541,7 +541,7 @@
function showHeaders() {
$this->dump($this->_browser->getHeaders());
}
-
+
/**
* Dumps the current HTML source for debugging.
* @access public
@@ -549,7 +549,7 @@
function showSource() {
$this->dump($this->_browser->getContent());
}
-
+
/**
* Dumps the visible text only for debugging.
* @access public
@@ -557,7 +557,7 @@
function showText() {
$this->dump(wordwrap($this->_browser->getContentAsText(), 80));
}
-
+
/**
* Simulates the closing and reopening of the browser.
* Temporary cookies will be discarded and timed
@@ -575,7 +575,7 @@
}
$this->_browser->restart($date);
}
-
+
/**
* Moves cookie expiry times back into the past.
* Useful for testing timeouts and expiries.
@@ -585,7 +585,7 @@
function ageCookies($interval) {
$this->_browser->ageCookies($interval);
}
-
+
/**
* Disables frames support. Frames will not be fetched
* and the frameset page will be used instead.
@@ -594,7 +594,7 @@
function ignoreFrames() {
$this->_browser->ignoreFrames();
}
-
+
/**
* Switches off cookie sending and recieving.
* @access public
@@ -602,7 +602,7 @@
function ignoreCookies() {
$this->_browser->ignoreCookies();
}
-
+
/**
* Skips errors for the next request only. You might
* want to confirm that a page is unreachable for
@@ -612,7 +612,7 @@
function ignoreErrors() {
$this->_ignore_errors = true;
}
-
+
/**
* Issues a fail if there is a transport error anywhere
* in the current frameset. Only one such error is
@@ -640,7 +640,7 @@
function addHeader($header) {
$this->_browser->addHeader($header);
}
-
+
/**
* Sets the maximum number of redirects before
* the web page is loaded regardless.
@@ -654,7 +654,7 @@
}
$this->_browser->setMaximumRedirects($max);
}
-
+
/**
* Sets the socket timeout for opening a connection and
* receiving at least one byte of information.
@@ -664,7 +664,7 @@
function setConnectionTimeout($timeout) {
$this->_browser->setConnectionTimeout($timeout);
}
-
+
/**
* Sets proxy to use on all requests for when
* testing from behind a firewall. Set URL
@@ -677,7 +677,7 @@
function useProxy($proxy, $username = false, $password = false) {
$this->_browser->useProxy($proxy, $username, $password);
}
-
+
/**
* Fetches a page into the page buffer. If
* there is no base for the URL then the
@@ -691,7 +691,7 @@
function get($url, $parameters = false) {
return $this->_failOnError($this->_browser->get($url, $parameters));
}
-
+
/**
* Fetches a page by POST into the page buffer.
* If there is no base for the URL then the
@@ -705,7 +705,7 @@
function post($url, $parameters = false) {
return $this->_failOnError($this->_browser->post($url, $parameters));
}
-
+
/**
* Does a HTTP HEAD fetch, fetching only the page
* headers. The current base URL is unchanged by this.
@@ -717,7 +717,7 @@
function head($url, $parameters = false) {
return $this->_failOnError($this->_browser->head($url, $parameters));
}
-
+
/**
* Equivalent to hitting the retry button on the
* browser. Will attempt to repeat the page fetch.
@@ -727,7 +727,7 @@
function retry() {
return $this->_failOnError($this->_browser->retry());
}
-
+
/**
* Equivalent to hitting the back button on the
* browser.
@@ -738,7 +738,7 @@
function back() {
return $this->_failOnError($this->_browser->back());
}
-
+
/**
* Equivalent to hitting the forward button on the
* browser.
@@ -749,7 +749,7 @@
function forward() {
return $this->_failOnError($this->_browser->forward());
}
-
+
/**
* Retries a request after setting the authentication
* for the current realm.
@@ -764,7 +764,7 @@
return $this->_failOnError(
$this->_browser->authenticate($username, $password));
}
-
+
/**
* Gets the cookie value for the current browser context.
* @param string $name Name of cookie.
@@ -774,7 +774,7 @@
function getCookie($name) {
return $this->_browser->getCurrentCookieValue($name);
}
-
+
/**
* Sets a cookie in the current browser.
* @param string $name Name of cookie.
@@ -787,7 +787,7 @@
function setCookie($name, $value, $host = false, $path = "/", $expiry = false) {
$this->_browser->setCookie($name, $value, $host, $path, $expiry);
}
-
+
/**
* Accessor for current frame focus. Will be
* false if no frame has focus.
@@ -799,7 +799,7 @@
function getFrameFocus() {
return $this->_browser->getFrameFocus();
}
-
+
/**
* Sets the focus by index. The integer index starts from 1.
* @param integer $choice Chosen frame.
@@ -809,7 +809,7 @@
function setFrameFocusByIndex($choice) {
return $this->_browser->setFrameFocusByIndex($choice);
}
-
+
/**
* Sets the focus by name.
* @param string $name Chosen frame.
@@ -819,7 +819,7 @@
function setFrameFocus($name) {
return $this->_browser->setFrameFocus($name);
}
-
+
/**
* Clears the frame focus. All frames will be searched
* for content.
@@ -828,7 +828,7 @@
function clearFrameFocus() {
return $this->_browser->clearFrameFocus();
}
-
+
/**
* Clicks a visible text item. Will first try buttons,
* then links and then images.
@@ -839,7 +839,7 @@
function click($label) {
return $this->_failOnError($this->_browser->click($label));
}
-
+
/**
* Clicks the submit button by label. The owning
* form will be submitted by this.
@@ -853,7 +853,7 @@
return $this->_failOnError(
$this->_browser->clickSubmit($label, $additional));
}
-
+
/**
* Clicks the submit button by name attribute. The owning
* form will be submitted by this.
@@ -866,7 +866,7 @@
return $this->_failOnError(
$this->_browser->clickSubmitByName($name, $additional));
}
-
+
/**
* Clicks the submit button by ID attribute. The owning
* form will be submitted by this.
@@ -879,7 +879,7 @@
return $this->_failOnError(
$this->_browser->clickSubmitById($id, $additional));
}
-
+
/**
* Clicks the submit image by some kind of label. Usually
* the alt tag or the nearest equivalent. The owning
@@ -897,7 +897,7 @@
return $this->_failOnError(
$this->_browser->clickImage($label, $x, $y, $additional));
}
-
+
/**
* Clicks the submit image by the name. Usually
* the alt tag or the nearest equivalent. The owning
@@ -915,7 +915,7 @@
return $this->_failOnError(
$this->_browser->clickImageByName($name, $x, $y, $additional));
}
-
+
/**
* Clicks the submit image by ID attribute. The owning
* form will be submitted by this. Clicking outside of
@@ -932,7 +932,7 @@
return $this->_failOnError(
$this->_browser->clickImageById($id, $x, $y, $additional));
}
-
+
/**
* Submits a form by the ID.
* @param string $id Form ID. No button information
@@ -943,7 +943,7 @@
function submitFormById($id) {
return $this->_failOnError($this->_browser->submitFormById($id));
}
-
+
/**
* Follows a link by name. Will click the first link
* found with this link text by default, or a later
@@ -957,7 +957,7 @@
function clickLink($label, $index = 0) {
return $this->_failOnError($this->_browser->clickLink($label, $index));
}
-
+
/**
* Follows a link by id attribute.
* @param string $id ID attribute value.
@@ -967,7 +967,7 @@
function clickLinkById($id) {
return $this->_failOnError($this->_browser->clickLinkById($id));
}
-
+
/**
* Will trigger a pass if the two parameters have
* the same value only. Otherwise a fail. This
@@ -984,7 +984,7 @@
$second,
$message);
}
-
+
/**
* Will trigger a pass if the two parameters have
* a different value. Otherwise a fail. This
@@ -1001,7 +1001,7 @@
$second,
$message);
}
-
+
/**
* Tests for the presence of a link label. Match is
* case insensitive with normalised space.
@@ -1032,7 +1032,7 @@
$this->_browser->isLink($label),
sprintf($message, "Link [$label] should not exist"));
}
-
+
/**
* Tests for the presence of a link id attribute.
* @param string $id Id attribute value.
@@ -1061,7 +1061,7 @@
$this->_browser->isLinkById($id),
sprintf($message, "Link ID [$id] should not exist"));
}
-
+
/**
* Sets all form fields with that label, or name if there
* is no label attached.
@@ -1073,7 +1073,7 @@
function setField($label, $value) {
return $this->_browser->setField($label, $value);
}
-
+
/**
* Sets all form fields with that name.
* @param string $name Name of field in forms.
@@ -1084,7 +1084,7 @@
function setFieldByName($name, $value) {
return $this->_browser->setFieldByName($name, $value);
}
-
+
/**
* Sets all form fields with that name.
* @param string/integer $id Id of field in forms.
@@ -1095,7 +1095,7 @@
function setFieldById($id, $value) {
return $this->_browser->setFieldById($id, $value);
}
-
+
/**
* Confirms that the form element is currently set
* to the expected value. A missing form will always
@@ -1113,7 +1113,7 @@
$value = $this->_browser->getField($label);
return $this->_assertFieldValue($label, $value, $expected, $message);
}
-
+
/**
* Confirms that the form element is currently set
* to the expected value. A missing form element will always
@@ -1131,7 +1131,7 @@
$value = $this->_browser->getFieldByName($name);
return $this->_assertFieldValue($name, $value, $expected, $message);
}
-
+
/**
* Confirms that the form element is currently set
* to the expected value. A missing form will always
@@ -1149,7 +1149,7 @@
$value = $this->_browser->getFieldById($id);
return $this->_assertFieldValue($id, $value, $expected, $message);
}
-
+
/**
* Tests the field value against the expectation.
* @param string $identifier Name, ID or label.
@@ -1173,7 +1173,7 @@
}
return $this->assert($expected, $value, $message);
}
-
+
/**
* Checks the response code against a list
* of possible values.
@@ -1190,7 +1190,7 @@
implode(", ", $responses) . "] got [$code]");
return $this->assertTrue(in_array($code, $responses), $message);
}
-
+
/**
* Checks the mime type against a list
* of possible values.
@@ -1206,7 +1206,7 @@
implode(", ", $types) . "] got [$type]");
return $this->assertTrue(in_array($type, $types), $message);
}
-
+
/**
* Attempt to match the authentication type within
* the security realm we are currently matching.
@@ -1230,7 +1230,7 @@
$message);
}
}
-
+
/**
* Checks that no authentication is necessary to view
* the desired page.
@@ -1243,7 +1243,7 @@
$this->_browser->getAuthentication() . "]");
return $this->assertFalse($this->_browser->getAuthentication(), $message);
}
-
+
/**
* Attempts to match the current security realm.
* @param string $realm Name of security realm.
@@ -1260,7 +1260,7 @@
$this->_browser->getRealm(),
"Expected realm -> $message");
}
-
+
/**
* Checks each header line for the required value. If no
* value is given then only an existence check is made.
@@ -1277,7 +1277,7 @@
$this->_browser->getHeaders(),
$message);
}
-
+
/**
* @deprecated
*/
@@ -1303,14 +1303,14 @@
$this->_browser->getHeaders(),
$message);
}
-
+
/**
* @deprecated
*/
function assertNoUnwantedHeader($header, $message = '%s') {
return $this->assertNoHeader($header, $message);
}
-
+
/**
* Tests the text between the title tags.
* @param string $title Expected title.
@@ -1324,7 +1324,7 @@
}
return $this->assert($title, $this->_browser->getTitle(), $message);
}
-
+
/**
* Will trigger a pass if the text is found in the plain
* text form of the page.
@@ -1339,14 +1339,14 @@
$this->_browser->getContentAsText(),
$message);
}
-
+
/**
* @deprecated
*/
function assertWantedText($text, $message = '%s') {
return $this->assertText($text, $message);
}
-
+
/**
* Will trigger a pass if the text is not found in the plain
* text form of the page.
@@ -1361,14 +1361,14 @@
$this->_browser->getContentAsText(),
$message);
}
-
+
/**
* @deprecated
*/
function assertNoUnwantedText($text, $message = '%s') {
return $this->assertNoText($text, $message);
}
-
+
/**
* Will trigger a pass if the Perl regex pattern
* is found in the raw content.
@@ -1384,14 +1384,14 @@
$this->_browser->getContent(),
$message);
}
-
+
/**
* @deprecated
*/
function assertWantedPattern($pattern, $message = '%s') {
return $this->assertPattern($pattern, $message);
}
-
+
/**
* Will trigger a pass if the perl regex pattern
* is not present in raw content.
@@ -1407,14 +1407,14 @@
$this->_browser->getContent(),
$message);
}
-
+
/**
* @deprecated
*/
function assertNoUnwantedPattern($pattern, $message = '%s') {
return $this->assertNoPattern($pattern, $message);
}
-
+
/**
* Checks that a cookie is set for the current page
* and optionally checks the value.
@@ -1437,7 +1437,7 @@
}
return $this->assert($expected, $value, "Expecting cookie [$name] -> $message");
}
-
+
/**
* Checks that no cookie is present or that it has
* been successfully cleared.
@@ -1451,5 +1451,4 @@
$this->getCookie($name) === false,
sprintf($message, "Not expecting cookie [$name]"));
}
- }
-?> \ No newline at end of file
+ } \ No newline at end of file
diff --git a/tests/test_tools/simpletest/xml.php b/tests/test_tools/simpletest/xml.php
index 9d1ab3b2..54b53011 100644
--- a/tests/test_tools/simpletest/xml.php
+++ b/tests/test_tools/simpletest/xml.php
@@ -611,4 +611,3 @@
function _default($expat, $default) {
}
}
-?>
diff --git a/tests/unit/AllTests.php b/tests/unit/AllTests.php
index 7b8027b3..eb08a5f7 100644
--- a/tests/unit/AllTests.php
+++ b/tests/unit/AllTests.php
@@ -50,5 +50,3 @@ class AllTests {
if(PHPUnit_MAIN_METHOD == 'AllTests::main') {
AllTests::main();
}
-
-?> \ No newline at end of file
diff --git a/tests/unit/Caching/AllTests.php b/tests/unit/Caching/AllTests.php
index bffe3b2f..179840fc 100644
--- a/tests/unit/Caching/AllTests.php
+++ b/tests/unit/Caching/AllTests.php
@@ -12,14 +12,14 @@ class Caching_AllTests {
public static function main() {
PHPUnit_TextUI_TestRunner::run(self::suite());
}
-
+
public static function suite() {
$suite = new PHPUnit_Framework_TestSuite('System.Caching');
-
+
$suite->addTestSuite('TSqliteCacheTest');
$suite->addTestSuite('TAPCCacheTest');
$suite->addTestSuite('TMemCacheTest');
-
+
return $suite;
}
}
@@ -27,4 +27,3 @@ class Caching_AllTests {
if(PHPUnit_MAIN_METHOD == 'Caching_AllTests::main') {
Caching_AllTests::main();
}
-?>
diff --git a/tests/unit/Caching/TAPCCacheTest.php b/tests/unit/Caching/TAPCCacheTest.php
index 3cb04361..ccb6ee85 100644
--- a/tests/unit/Caching/TAPCCacheTest.php
+++ b/tests/unit/Caching/TAPCCacheTest.php
@@ -26,7 +26,7 @@ class TAPCCacheTest extends PHPUnit_Framework_TestCase {
} catch(TConfigurationException $e) {
self::markTestSkipped($e->getMessage());
}
-
+
}
}
@@ -38,24 +38,24 @@ class TAPCCacheTest extends PHPUnit_Framework_TestCase {
public function testInit() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testPrimaryCache() {
self::$cache->PrimaryCache = true;
self::assertEquals(true, self::$cache->PrimaryCache);
self::$cache->PrimaryCache = false;
self::assertEquals(false, self::$cache->PrimaryCache);
}
-
+
public function testKeyPrefix() {
self::$cache->KeyPrefix = 'prefix';
self::assertEquals('prefix', self::$cache->KeyPrefix);
}
-
+
public function testSetAndGet() {
self::$cache->set('key', 'value');
self::assertEquals('value', self::$cache->get('key'));
}
-
+
public function testAdd() {
try {
self::$cache->add('anotherkey', 'value');
@@ -65,12 +65,12 @@ class TAPCCacheTest extends PHPUnit_Framework_TestCase {
}
self::assertEquals('value', self::$cache->get('anotherkey'));
}
-
+
public function testDelete() {
self::$cache->delete('key');
self::assertEquals(false, self::$cache->get('key'));
}
-
+
public function testFlush() {
$this->testSetAndGet();
self::assertEquals(true, self::$cache->flush());
@@ -78,4 +78,3 @@ class TAPCCacheTest extends PHPUnit_Framework_TestCase {
}
-?>
diff --git a/tests/unit/Caching/TDirectoryCacheDependencyTest.php b/tests/unit/Caching/TDirectoryCacheDependencyTest.php
index c5c75dec..10da9b58 100644
--- a/tests/unit/Caching/TDirectoryCacheDependencyTest.php
+++ b/tests/unit/Caching/TDirectoryCacheDependencyTest.php
@@ -78,5 +78,3 @@ class TDirectoryCacheDependencyTest extends PHPUnit_Framework_TestCase
@unlink($tempFile);
}
}
-
-?> \ No newline at end of file
diff --git a/tests/unit/Caching/TFileCacheDependencyTest.php b/tests/unit/Caching/TFileCacheDependencyTest.php
index b4bc89d3..24f2721b 100644
--- a/tests/unit/Caching/TFileCacheDependencyTest.php
+++ b/tests/unit/Caching/TFileCacheDependencyTest.php
@@ -54,5 +54,3 @@ class TFileCacheDependencyTest extends PHPUnit_Framework_TestCase
@unlink($tempFile);
}
}
-
-?> \ No newline at end of file
diff --git a/tests/unit/Caching/TMemCacheTest.php b/tests/unit/Caching/TMemCacheTest.php
index 8c1fa934..3d0d651f 100644
--- a/tests/unit/Caching/TMemCacheTest.php
+++ b/tests/unit/Caching/TMemCacheTest.php
@@ -33,34 +33,34 @@ class TMemCacheTest extends PHPUnit_Framework_TestCase {
public function testInit() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testPrimaryCache() {
self::$cache->PrimaryCache = true;
self::assertEquals(true, self::$cache->PrimaryCache);
self::$cache->PrimaryCache = false;
self::assertEquals(false, self::$cache->PrimaryCache);
}
-
+
public function testKeyPrefix() {
self::$cache->KeyPrefix = 'prefix';
self::assertEquals('prefix', self::$cache->KeyPrefix);
}
-
+
public function testSetAndGet() {
self::$cache->set('key', 'value');
self::assertEquals('value', self::$cache->get('key'));
}
-
+
public function testAdd() {
self::$cache->add('anotherkey', 'value');
self::assertEquals('value', self::$cache->get('anotherkey'));
}
-
+
public function testDelete() {
self::$cache->delete('key');
self::assertEquals(false, self::$cache->get('key'));
}
-
+
public function testFlush() {
$this->testSetAndGet();
self::assertEquals(true, self::$cache->flush());
@@ -68,4 +68,3 @@ class TMemCacheTest extends PHPUnit_Framework_TestCase {
}
-?>
diff --git a/tests/unit/Caching/TSqliteCacheTest.php b/tests/unit/Caching/TSqliteCacheTest.php
index fd4ab1bf..b979b0ec 100644
--- a/tests/unit/Caching/TSqliteCacheTest.php
+++ b/tests/unit/Caching/TSqliteCacheTest.php
@@ -15,7 +15,7 @@ class TSqliteCacheTest extends PHPUnit_Framework_TestCase {
self::markTestSkipped('The SQLite extension is not available');
} else {
if(self::$app === null) {
-
+
$basePath = dirname(__FILE__).'/mockapp';
$runtimePath = $basePath.'/runtime';
if(!is_writable($runtimePath)) {
@@ -37,38 +37,38 @@ class TSqliteCacheTest extends PHPUnit_Framework_TestCase {
public function testInit() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testPrimaryCache() {
self::$cache->PrimaryCache = true;
self::assertEquals(true, self::$cache->PrimaryCache);
self::$cache->PrimaryCache = false;
self::assertEquals(false, self::$cache->PrimaryCache);
}
-
+
public function testKeyPrefix() {
self::$cache->KeyPrefix = 'prefix';
self::assertEquals('prefix', self::$cache->KeyPrefix);
}
-
+
public function testDbFile() {
self::assertEquals('sqlite.cache', basename(self::$cache->DbFile));
}
-
+
public function testSetAndGet() {
self::$cache->set('key', 'value');
self::assertEquals('value', self::$cache->get('key'));
}
-
+
public function testAdd() {
self::$cache->add('key', 'value');
self::assertEquals('value', self::$cache->get('key'));
}
-
+
public function testDelete() {
self::$cache->delete('key');
self::assertEquals(false, self::$cache->get('key'));
}
-
+
public function testFlush() {
$this->testAdd();
self::assertEquals(true, self::$cache->flush());
@@ -76,4 +76,3 @@ class TSqliteCacheTest extends PHPUnit_Framework_TestCase {
}
-?>
diff --git a/tests/unit/Collections/AllTests.php b/tests/unit/Collections/AllTests.php
index f290be31..3c286132 100644
--- a/tests/unit/Collections/AllTests.php
+++ b/tests/unit/Collections/AllTests.php
@@ -16,10 +16,10 @@ class Collections_AllTests {
public static function main() {
PHPUnit_TextUI_TestRunner::run(self::suite());
}
-
+
public static function suite() {
$suite = new PHPUnit_Framework_TestSuite('System.Collections');
-
+
$suite->addTestSuite('TListTest');
$suite->addTestSuite('TMapTest');
$suite->addTestSuite('TQueueTest');
@@ -27,7 +27,7 @@ class Collections_AllTests {
$suite->addTestSuite('TAttributeCollectionTest');
$suite->addTestSuite('TPagedListTest');
$suite->addTestSuite('TPagedDataSourceTest');
-
+
return $suite;
}
}
@@ -35,4 +35,3 @@ class Collections_AllTests {
if(PHPUnit_MAIN_METHOD == 'Collections_AllTests::main') {
Collections_AllTests::main();
}
-?>
diff --git a/tests/unit/Collections/TAttributeCollectionTest.php b/tests/unit/Collections/TAttributeCollectionTest.php
index 5805f2d0..f61f58b3 100644
--- a/tests/unit/Collections/TAttributeCollectionTest.php
+++ b/tests/unit/Collections/TAttributeCollectionTest.php
@@ -19,7 +19,7 @@ class TAttributeCollectionTest extends PHPUnit_Framework_TestCase {
self::assertEquals('value', $collection->Property);
self::assertEquals(true, $collection->canGetProperty('Property'));
}
-
+
public function testCanNotGetUndefinedProperty() {
$collection = new TAttributeCollection(array(), true);
self::assertEquals(false, $collection->canGetProperty('Property'));
@@ -37,7 +37,7 @@ class TAttributeCollectionTest extends PHPUnit_Framework_TestCase {
self::assertEquals('value', $collection->itemAt('Property'));
self::assertEquals(true, $collection->canSetProperty('Property'));
}
-
+
public function testCanNotSetPropertyIfReadOnly() {
$collection = new TAttributeCollection(array(), true);
try {
@@ -47,7 +47,7 @@ class TAttributeCollectionTest extends PHPUnit_Framework_TestCase {
}
self::fail('An expected TInvalidOperationException was not raised');
}
-
+
public function testGetCaseSensitive() {
$collection = new TAttributeCollection();
$collection->setCaseSensitive(false);
@@ -55,40 +55,40 @@ class TAttributeCollectionTest extends PHPUnit_Framework_TestCase {
$collection->setCaseSensitive(true);
self::assertEquals(true, $collection->getCaseSensitive());
}
-
+
public function testSetCaseSensitive() {
$collection = new TAttributeCollection();
$collection->Property = 'value';
$collection->setCaseSensitive(false);
self::assertEquals('value', $collection->itemAt('property'));
}
-
+
public function testItemAt() {
$collection = new TAttributeCollection();
$collection->Property = 'value';
self::assertEquals('value', $collection->itemAt('Property'));
}
-
+
public function testAdd() {
$collection = new TAttributeCollection();
$collection->add('Property', 'value');
self::assertEquals('value', $collection->itemAt('Property'));
}
-
+
public function testRemove() {
$collection = new TAttributeCollection();
$collection->add('Property', 'value');
$collection->remove('Property');
self::assertEquals(0, count($collection));
}
-
+
public function testContains() {
$collection = new TAttributeCollection();
self::assertEquals(false, $collection->contains('Property'));
$collection->Property = 'value';
self::assertEquals(true, $collection->contains('Property'));
}
-
+
public function testHasProperty() {
$collection = new TAttributeCollection();
self::assertEquals(false, $collection->hasProperty('Property'));
@@ -98,4 +98,3 @@ class TAttributeCollectionTest extends PHPUnit_Framework_TestCase {
}
-?>
diff --git a/tests/unit/Collections/TListTest.php b/tests/unit/Collections/TListTest.php
index 349d87ed..9d6950b9 100644
--- a/tests/unit/Collections/TListTest.php
+++ b/tests/unit/Collections/TListTest.php
@@ -8,7 +8,7 @@ class ListItem {
* @package System.Collections
*/
class TListTest extends PHPUnit_Framework_TestCase {
-
+
protected $list;
protected $item1, $item2, $item3, $item4;
@@ -21,7 +21,7 @@ class TListTest extends PHPUnit_Framework_TestCase {
$this->list->add($this->item1);
$this->list->add($this->item2);
}
-
+
public function tearDown() {
$this->list=null;
$this->item1=null;
@@ -29,7 +29,7 @@ class TListTest extends PHPUnit_Framework_TestCase {
$this->item3=null;
$this->item4=null;
}
-
+
public function testConstruct() {
$a=array(1,2,3);
$list=new TList($a);
@@ -37,19 +37,19 @@ class TListTest extends PHPUnit_Framework_TestCase {
$list2=new TList($this->list);
$this->assertEquals(2,$list2->getCount());
}
-
+
public function testGetReadOnly() {
$list = new TList(null, true);
self::assertEquals(true, $list->getReadOnly(), 'List is not read-only');
$list = new TList(null, false);
self::assertEquals(false, $list->getReadOnly(), 'List is read-only');
}
-
+
public function testGetCount() {
$this->assertEquals(2,$this->list->getCount());
$this->assertEquals(2,$this->list->Count);
}
-
+
public function testItemAt() {
$this->assertTrue($this->list->itemAt(0) === $this->item1);
$this->assertTrue($this->list->itemAt(1) === $this->item2);
@@ -59,14 +59,14 @@ class TListTest extends PHPUnit_Framework_TestCase {
} catch(TInvalidDataValueException $e) {
}
}
-
+
public function testAdd() {
$this->assertEquals(2,$this->list->add(null));
$this->assertEquals(3,$this->list->add($this->item3));
$this->assertEquals(4,$this->list->getCount());
$this->assertEquals(3,$this->list->indexOf($this->item3));
}
-
+
public function testCanNotAddWhenReadOnly() {
$list = new TList(array(), true);
try {
@@ -75,7 +75,7 @@ class TListTest extends PHPUnit_Framework_TestCase {
} catch(TInvalidOperationException $e) {
}
}
-
+
public function testInsertAt() {
$this->assertNull($this->list->insertAt(0,$this->item3));
$this->assertEquals(3,$this->list->getCount());
@@ -88,7 +88,7 @@ class TListTest extends PHPUnit_Framework_TestCase {
} catch(TInvalidDataValueException $e) {
}
}
-
+
public function testCanNotInsertAtWhenReadOnly() {
$list = new TList(array(), true);
try {
@@ -102,7 +102,7 @@ class TListTest extends PHPUnit_Framework_TestCase {
} catch(TInvalidOperationException $e) {
}
}
-
+
public function testInsertBefore() {
try {
$this->list->insertBefore($this->item4,$this->item3);
@@ -116,7 +116,7 @@ class TListTest extends PHPUnit_Framework_TestCase {
$this->assertEquals(1,$this->list->indexOf($this->item1));
$this->assertEquals(2,$this->list->indexOf($this->item2));
}
-
+
public function testCanNotInsertBeforeWhenReadOnly() {
$list = new TList(array(5), true);
try {
@@ -130,7 +130,7 @@ class TListTest extends PHPUnit_Framework_TestCase {
} catch(TInvalidOperationException $e) {
}
}
-
+
public function testInsertAfter() {
try {
$this->list->insertAfter($this->item4,$this->item3);
@@ -144,7 +144,7 @@ class TListTest extends PHPUnit_Framework_TestCase {
$this->assertEquals(1,$this->list->indexOf($this->item2));
$this->assertEquals(2,$this->list->indexOf($this->item3));
}
-
+
public function testCanNotInsertAfterWhenReadOnly() {
$list = new TList(array(5), true);
try {
@@ -158,7 +158,7 @@ class TListTest extends PHPUnit_Framework_TestCase {
} catch(TInvalidOperationException $e) {
}
}
-
+
public function testRemove() {
$this->assertEquals(0,$this->list->remove($this->item1));
$this->assertEquals(1,$this->list->getCount());
@@ -170,7 +170,7 @@ class TListTest extends PHPUnit_Framework_TestCase {
} catch(Exception $e) {
}
}
-
+
public function testCanNotRemoveWhenReadOnly() {
$list = new TList(array(1, 2, 3), true);
try {
@@ -178,7 +178,7 @@ class TListTest extends PHPUnit_Framework_TestCase {
self::fail('An expected TInvalidOperationException was not raised');
} catch(TInvalidOperationException $e) {
}
-
+
$list = new TList(array(1, 2, 3), true);
try {
$list->remove(10);
@@ -186,7 +186,7 @@ class TListTest extends PHPUnit_Framework_TestCase {
} catch(TInvalidOperationException $e) {
}
}
-
+
public function testRemoveAt() {
$this->list->add($this->item3);
$this->assertEquals($this->item2, $this->list->removeAt(1));
@@ -199,7 +199,7 @@ class TListTest extends PHPUnit_Framework_TestCase {
} catch(TInvalidDataValueException $e) {
}
}
-
+
public function testCanNotRemoveAtWhenReadOnly() {
$list = new TList(array(1, 2, 3), true);
try {
@@ -207,7 +207,7 @@ class TListTest extends PHPUnit_Framework_TestCase {
self::fail('An expected TInvalidOperationException was not raised');
} catch(TInvalidOperationException $e) {
}
-
+
$list = new TList(array(1, 2, 3), true);
try {
$list->removeAt(10);
@@ -215,14 +215,14 @@ class TListTest extends PHPUnit_Framework_TestCase {
} catch(TInvalidOperationException $e) {
}
}
-
+
public function testClear() {
$this->list->clear();
$this->assertEquals(0,$this->list->getCount());
$this->assertEquals(-1,$this->list->indexOf($this->item1));
$this->assertEquals(-1,$this->list->indexOf($this->item2));
}
-
+
public function testCanNotClearWhenReadOnly() {
$list = new TList(array(1, 2, 3), true);
try {
@@ -232,19 +232,19 @@ class TListTest extends PHPUnit_Framework_TestCase {
}
self::fail('An expected TInvalidOperationException was not raised');
}
-
+
public function testContains() {
$this->assertTrue($this->list->contains($this->item1));
$this->assertTrue($this->list->contains($this->item2));
$this->assertFalse($this->list->contains($this->item3));
}
-
+
public function testIndexOf() {
$this->assertEquals(0,$this->list->indexOf($this->item1));
$this->assertEquals(1,$this->list->indexOf($this->item2));
$this->assertEquals(-1,$this->list->indexOf($this->item3));
}
-
+
public function testCopyFrom() {
$array=array($this->item3,$this->item1);
$this->list->copyFrom($array);
@@ -255,7 +255,7 @@ class TListTest extends PHPUnit_Framework_TestCase {
} catch(TInvalidDataTypeException $e) {
}
}
-
+
public function testMergeWith() {
$array=array($this->item3,$this->item1);
$this->list->mergeWith($array);
@@ -266,12 +266,12 @@ class TListTest extends PHPUnit_Framework_TestCase {
} catch(TInvalidDataTypeException $e) {
}
}
-
+
public function testToArray() {
$array=$this->list->toArray();
$this->assertTrue(count($array)==2 && $array[0]===$this->item1 && $array[1]===$this->item2);
}
-
+
public function testArrayRead() {
$this->assertTrue($this->list[0]===$this->item1);
$this->assertTrue($this->list[1]===$this->item2);
@@ -281,7 +281,7 @@ class TListTest extends PHPUnit_Framework_TestCase {
} catch(TInvalidDataValueException $e) {
}
}
-
+
public function testGetIterator() {
$n=0;
$found=0;
@@ -295,25 +295,25 @@ class TListTest extends PHPUnit_Framework_TestCase {
}
$this->assertTrue($n==2 && $found==2);
}
-
+
public function testArrayMisc() {
$this->assertEquals($this->list->Count,count($this->list));
$this->assertTrue(isset($this->list[1]));
$this->assertFalse(isset($this->list[2]));
}
-
+
public function testOffsetSetAdd() {
$list = new TList(array(1, 2, 3));
$list->offsetSet(null, 4);
self::assertEquals(array(1, 2, 3, 4), $list->toArray());
}
-
+
public function testOffsetSetReplace() {
$list = new TList(array(1, 2, 3));
$list->offsetSet(1, 4);
self::assertEquals(array(1, 4, 3), $list->toArray());
}
-
+
public function testOffsetUnset() {
$list = new TList(array(1, 2, 3));
$list->offsetUnset(1);
@@ -321,5 +321,3 @@ class TListTest extends PHPUnit_Framework_TestCase {
}
}
-
-?> \ No newline at end of file
diff --git a/tests/unit/Collections/TMapTest.php b/tests/unit/Collections/TMapTest.php
index 0634a2a3..da198eb4 100644
--- a/tests/unit/Collections/TMapTest.php
+++ b/tests/unit/Collections/TMapTest.php
@@ -176,11 +176,10 @@ class TMapTest extends PHPUnit_Framework_TestCase {
$this->assertTrue(isset($this->map['key1']));
$this->assertFalse(isset($this->map['unknown key']));
}
-
+
public function testToArray() {
$map = new TMap(array('key' => 'value'));
self::assertEquals(array('key' => 'value'), $map->toArray());
}
}
-?>
diff --git a/tests/unit/Collections/TPagedDataSourceTest.php b/tests/unit/Collections/TPagedDataSourceTest.php
index 92f4061b..ebb8e60d 100644
--- a/tests/unit/Collections/TPagedDataSourceTest.php
+++ b/tests/unit/Collections/TPagedDataSourceTest.php
@@ -16,55 +16,54 @@ class TPagedDataSourceTest extends PHPUnit_Framework_TestCase {
public function testDataSource() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testPageSize() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testCurrentPageIndex() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testAllowPaging() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testAllowCustomPaging() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testVirtualItemCount() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testCount() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testPageCount() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testIsFirstPage() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testIsLastPage() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testFirstIndexInPage() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testDataSourceCount() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testIterator() {
throw new PHPUnit_Framework_IncompleteTestError();
}
}
-?>
diff --git a/tests/unit/Collections/TPagedListTest.php b/tests/unit/Collections/TPagedListTest.php
index 2d884736..a225db61 100644
--- a/tests/unit/Collections/TPagedListTest.php
+++ b/tests/unit/Collections/TPagedListTest.php
@@ -3,26 +3,26 @@
Prado::using('System.Collections.TPagedList');
class MyPagedList extends TPagedList {
-
+
private $_isPageIndexChanged = false;
private $_hasFetchedData = false;
-
+
public function pageIndexChanged($sender, $param) {
$this->_isPageIndexChanged = true;
}
-
+
public function fetchData($sender, $param) {
$this->_hasFetchedData = true;
}
-
+
public function isPageIndexChanged() {
return $this->_isPageIndexChanged;
}
-
+
public function hasFetchedData() {
return $this->_hasFetchedData;
}
-
+
}
/**
@@ -58,7 +58,7 @@ class TPagedListTest extends PHPUnit_Framework_TestCase {
$list->PageSize = 5;
self::assertEquals(5, $list->PageSize);
}
-
+
public function testCanNotSetInvalidPageSize() {
$list = new TPagedList();
try {
@@ -68,14 +68,14 @@ class TPagedListTest extends PHPUnit_Framework_TestCase {
}
self::fail('An expected TInvalidDataValueException was not raised');
}
-
+
public function testCurrentPageIndex() {
$list = new TPagedList(array(1, 2, 3));
$list->PageSize = 1;
$list->CurrentPageIndex = 2;
self::assertEquals(2, $list->CurrentPageIndex);
}
-
+
public function testOnPageIndexChanged() {
$list = new TPagedList(array(1, 2, 3, 4, 5));
$list->PageSize = 1;
@@ -87,7 +87,7 @@ class TPagedListTest extends PHPUnit_Framework_TestCase {
$list->onPageIndexChanged(new TPagedListPageChangedEventParameter($oldPage));
self::assertEquals(true, $myList->isPageIndexChanged());
}
-
+
public function testOnFetchData() {
$list = new TPagedList(array(1, 2, 3, 4));
$list->CustomPaging = true;
@@ -95,18 +95,18 @@ class TPagedListTest extends PHPUnit_Framework_TestCase {
$list->gotoPage(0);
$myList = new MyPagedList();
$list->attachEventHandler('OnFetchData', array($myList, 'fetchData'));
- self::assertEquals(false, $myList->hasFetchedData());
+ self::assertEquals(false, $myList->hasFetchedData());
$list->onFetchData(new TPagedListFetchDataEventParameter($list->CurrentPageIndex, $list->PageSize*$list->CurrentPageIndex, $list->PageSize));
self::assertEquals(true, $myList->hasFetchedData());
}
-
+
public function testGotoPage() {
$list = new TPagedList(array(1, 2, 3));
$list->PageSize = 1;
self::assertEquals(2, $list->gotoPage(2));
self::assertEquals(false, $list->gotoPage(4));
}
-
+
public function testNextPage() {
$list = new TPagedList(array(1, 2));
$list->PageSize = 1;
@@ -114,7 +114,7 @@ class TPagedListTest extends PHPUnit_Framework_TestCase {
self::assertEquals(1, $list->nextPage());
self::assertEquals(false, $list->nextPage());
}
-
+
public function testPreviousPage() {
$list = new TPagedList(array(1, 2));
$list->PageSize = 1;
@@ -122,7 +122,7 @@ class TPagedListTest extends PHPUnit_Framework_TestCase {
self::assertEquals(0, $list->previousPage());
self::assertEquals(false, $list->previousPage());
}
-
+
public function testVirtualCount() {
$list = new TPagedList(array(1, 2));
$list->VirtualCount = -10;
@@ -130,7 +130,7 @@ class TPagedListTest extends PHPUnit_Framework_TestCase {
$list->VirtualCount = 5;
self::assertEquals(5, $list->VirtualCount);
}
-
+
public function testPageCount() {
$list = new TPagedList(array(1, 2, 3));
$list->PageSize = 1;
@@ -141,7 +141,7 @@ class TPagedListTest extends PHPUnit_Framework_TestCase {
$list->CustomPaging = false;
self::assertEquals(3, $list->PageCount);
}
-
+
public function testIsFirstPage() {
$list = new TPagedList(array(1, 2, 3));
$list->PageSize = 1;
@@ -150,7 +150,7 @@ class TPagedListTest extends PHPUnit_Framework_TestCase {
$list->gotoPage(1);
self::assertEquals(false, $list->IsFirstPage);
}
-
+
public function testIsLastPage() {
$list = new TPagedList(array(1, 2, 3));
$list->PageSize = 1;
@@ -159,7 +159,7 @@ class TPagedListTest extends PHPUnit_Framework_TestCase {
$list->gotoPage(2);
self::assertEquals(true, $list->IsLastPage);
}
-
+
public function testGetCount() {
$list = new TPagedList(array(1, 2, 3));
$list->PageSize = 1;
@@ -167,7 +167,7 @@ class TPagedListTest extends PHPUnit_Framework_TestCase {
$list->CustomPaging = true;
self::assertEquals(3, $list->Count);
}
-
+
public function testGetIterator() {
$list = new TPagedList(array(1, 2));
$list->CustomPaging = true;
@@ -181,12 +181,12 @@ class TPagedListTest extends PHPUnit_Framework_TestCase {
$found++;
}
if($index === 1 && $item === 2) {
- $found++;
+ $found++;
}
}
self::assertTrue($n == 2 && $found == 2);
}
-
+
public function testItemAt() {
$list = new TPagedList(array(1, 2, 3));
$list->CustomPaging = true;
@@ -196,27 +196,27 @@ class TPagedListTest extends PHPUnit_Framework_TestCase {
$list->CurrentPageIndex = 0;
self::assertEquals(1, $list[0]);
}
-
+
public function testIndexOf() {
$list = new TPagedList(array(1, 2, 3));
$list->CustomPaging = true;
self::assertEquals(0, $list->indexOf(1));
self::assertEquals(-1, $list->indexOf(0));
}
-
+
public function testOffsetExists() {
$list = new TPagedList(array(1, 2, 3));
$list->CustomPaging = true;
self::assertEquals(true, isset($list[0]));
self::assertEquals(false, isset($list[4]));
}
-
+
public function testOffsetGet() {
$list = new TPagedList(array(1, 2, 3));
$list->CustomPaging = true;
self::assertEquals(2, $list[1]);
}
-
+
public function testToArray() {
$list = new TPagedList(array(1, 2, 3));
$list->CustomPaging = true;
@@ -225,4 +225,3 @@ class TPagedListTest extends PHPUnit_Framework_TestCase {
}
-?>
diff --git a/tests/unit/Collections/TPriorityMapTest.php b/tests/unit/Collections/TPriorityMapTest.php
index 7c6ed498..847e09fe 100644
--- a/tests/unit/Collections/TPriorityMapTest.php
+++ b/tests/unit/Collections/TPriorityMapTest.php
@@ -22,10 +22,10 @@ class TPriorityMapTest extends PHPUnit_Framework_TestCase {
$this->item5=new TPriorityMapTest_MapItem;
$this->map->add('key1',$this->item1);
$this->map->add('key2',$this->item2);
-
+
//Test the priority capabilities
}
-
+
public function setUpPriorities() {
$this->map->add('key3', $this->item3, 0);
$this->map->add('key4', $this->item4, 100);
@@ -45,16 +45,16 @@ class TPriorityMapTest extends PHPUnit_Framework_TestCase {
$this->assertEquals(3,$map->getCount());
$map2=new TPriorityMap($this->map);
$this->assertEquals(2,$map2->getCount());
-
+
/* Test the priority functionality of TPriorityMap */
-
+
$map3=new TPriorityMap($this->map, false, 100, -1);
$this->assertEquals(100,$map3->getDefaultPriority());
$this->assertEquals(-1,$map3->getPrecision());
}
-
+
/* Test that TPriorityMap complies with TMap */
-
+
public function testGetReadOnly() {
$map = new TPriorityMap(null, true);
@@ -202,46 +202,46 @@ class TPriorityMapTest extends PHPUnit_Framework_TestCase {
$this->assertTrue(isset($this->map['key1']));
$this->assertFalse(isset($this->map['unknown key']));
}
-
+
public function testToArray() {
$map = new TPriorityMap(array('key' => 'value'));
self::assertEquals(array('key' => 'value'), $map->toArray());
}
-
-
-
-
+
+
+
+
/* Test the priority functionality of TPriorityMap */
-
-
+
+
public function testDefaultPriorityAndPrecision() {
-
+
$this->assertEquals(10, $this->map->DefaultPriority);
-
+
$this->map->DefaultPriority = 5;
$this->assertEquals(5, $this->map->getDefaultPriority());
-
+
$this->assertEquals(8, $this->map->Precision);
-
+
$this->map->Precision = 0;
$this->assertEquals(0, $this->map->getPrecision());
-
+
;
-
+
$this->assertEquals(5, $this->map->add('key3', $this->item3));
$this->assertEquals(10, $this->map->add('key4', $this->item1, 10));
$this->assertTrue(10 == $this->map->add('key4', $this->item1, 10.01));
$this->assertTrue(100 == $this->map->add('key4', $this->item1, 100));
$this->map->Precision = 1;
$this->assertTrue(10.1 == $this->map->add('key5', $this->item1, 10.1));
-
+
$this->assertEquals(5, $this->map->getCount());
}
-
+
public function testAddWithPriorityAndPriorityOfAt() {
-
+
$this->setUpPriorities();
-
+
$this->assertEquals(5, $this->map->getCount());
$this->assertEquals(10, $this->map->priorityOf($this->item1));
$this->assertEquals(0, $this->map->priorityOf($this->item3));
@@ -249,74 +249,74 @@ class TPriorityMapTest extends PHPUnit_Framework_TestCase {
$this->assertEquals(1, $this->map->priorityOf($this->item5));
$this->assertEquals(false, $this->map->priorityOf(null));
$this->assertEquals(false, $this->map->priorityOf('foo'));
-
+
$this->assertEquals(10, $this->map->priorityAt('key1'));
$this->assertEquals(0, $this->map->priorityAt('key3'));
$this->assertEquals(100, $this->map->priorityAt('key4'));
$this->assertEquals(1, $this->map->priorityAt('key5'));
$this->assertEquals(false, $this->map->priorityAt(null));
$this->assertEquals(false, $this->map->priorityAt('foo'));
-
+
}
-
+
public function testRemoveWithPriorityAndItemsAtWithPriority() {
-
+
$this->setUpPriorities();
-
+
$this->assertEquals(5, $this->map->getCount());
$this->map->remove('key6');
$this->assertEquals(5, $this->map->getCount());
$this->map->remove('key6', null);
$this->assertEquals(5, $this->map->getCount());
-
-
+
+
// key5 is at priority 1... not the default priority defined by null... nothing should happen here
$this->map->remove('key5', null);
$this->assertEquals(5, $this->map->getCount());
-
+
// key5 is at priority 1... not 50... nothing should happen here
$this->map->remove('key5', 50);
$this->assertEquals(5, $this->map->getCount());
-
-
-
+
+
+
$this->assertEquals(array('key3'=>$this->item3), $this->map->itemsAtPriority(0));
$this->assertEquals(array('key1'=>$this->item1, 'key2'=>$this->item2), $this->map->itemsAtPriority($this->map->DefaultPriority));
-
+
$this->assertEquals($this->item2, $this->map->itemAt('key2'));
$this->assertEquals($this->item2, $this->map->itemAt('key2', 10));
$this->assertNull($this->map->itemAt('key2', 11)); //'key2' doesn't exist and priority 11... it is only at priority 10
$this->assertNull($this->map->itemAt('key2', 10.1)); //'key2' doesn't exist and priority 10.1... it is only at priority 10
-
+
$this->assertEquals($this->item4, $this->map->remove('key4'));
$this->assertEquals(4, $this->map->getCount());
-
+
$this->assertEquals($this->item5, $this->map->remove('key5'));
$this->assertEquals(3, $this->map->getCount());
}
public function testIteratorAndArrayWithPriorities() {
-
+
$this->setUpPriorities();
-
+
// This is the primary reason for a TPriorityMap
$array = $this->map->toArray();
-
+
$ordered_keys = array_keys($array);
$this->assertEquals('key3', $ordered_keys[0]);
$this->assertEquals('key5', $ordered_keys[1]);
$this->assertEquals('key1', $ordered_keys[2]);
$this->assertEquals('key2', $ordered_keys[3]);
$this->assertEquals('key4', $ordered_keys[4]);
-
+
$ordered_values = array_values($array);
$this->assertEquals($this->item3, $ordered_values[0]);
$this->assertEquals($this->item5, $ordered_values[1]);
$this->assertEquals($this->item1, $ordered_values[2]);
$this->assertEquals($this->item2, $ordered_values[3]);
$this->assertEquals($this->item4, $ordered_values[4]);
-
+
$iter = $this->map->getIterator();
-
+
$this->assertTrue($iter->valid());
$this->assertEquals('key3', $iter->key());
$this->assertEquals($this->item1, $iter->current());
@@ -341,31 +341,31 @@ class TPriorityMapTest extends PHPUnit_Framework_TestCase {
$this->assertEquals(null, $iter->key());
$this->assertEquals(null, $iter->current());
}
-
-
+
+
public function testGetPriorities() {
$this->setUpPriorities();
-
+
$priorities = $this->map->getPriorities();
-
+
$this->assertEquals(0, $priorities[0]);
$this->assertEquals(1, $priorities[1]);
$this->assertEquals(10, $priorities[2]);
$this->assertEquals(100, $priorities[3]);
$this->assertEquals(false, isset($priorities[4]));
}
-
-
+
+
public function testCopyAndMergeWithPriorities() {
$this->setUpPriorities();
-
+
$map1 = new TPriorityMap();
$map1->add('key1', $this->item1);
$map1->add('keyc', 'valuec');
$map1->copyFrom($this->map);
-
+
$this->assertEquals(5, $map1->getCount());
-
+
$array = $map1->toArray();
$ordered_keys = array_keys($array);
$this->assertEquals('key3', $ordered_keys[0]);
@@ -373,24 +373,24 @@ class TPriorityMapTest extends PHPUnit_Framework_TestCase {
$this->assertEquals('key1', $ordered_keys[2]);
$this->assertEquals('key2', $ordered_keys[3]);
$this->assertEquals('key4', $ordered_keys[4]);
-
+
$ordered_values = array_values($array);
$this->assertEquals($this->item3, $ordered_values[0]);
$this->assertEquals($this->item5, $ordered_values[1]);
$this->assertEquals($this->item1, $ordered_values[2]);
$this->assertEquals($this->item2, $ordered_values[3]);
$this->assertEquals($this->item4, $ordered_values[4]);
-
-
-
+
+
+
$map2 = new TPriorityMap();
$map2->add('startkey', 'startvalue', -1000);
$map2->add('key5', 'value5', 40);
$map2->add('endkey', 'endvalue', 1000);
$map2->mergeWith($this->map);
-
+
$this->assertEquals(7, $map2->getCount());
-
+
$array = $map2->toArray();
$ordered_keys = array_keys($array);
$this->assertEquals('startkey', $ordered_keys[0]);
@@ -400,7 +400,7 @@ class TPriorityMapTest extends PHPUnit_Framework_TestCase {
$this->assertEquals('key2', $ordered_keys[4]);
$this->assertEquals('key4', $ordered_keys[5]);
$this->assertEquals('endkey', $ordered_keys[6]);
-
+
$ordered_values = array_values($array);
$this->assertEquals('startvalue', $ordered_values[0]);
$this->assertEquals($this->item3, $ordered_values[1]);
@@ -409,81 +409,80 @@ class TPriorityMapTest extends PHPUnit_Framework_TestCase {
$this->assertEquals($this->item2, $ordered_values[4]);
$this->assertEquals($this->item4, $ordered_values[5]);
$this->assertEquals('endvalue', $ordered_values[6]);
-
+
$this->assertEquals(1, $map2->priorityAt('key5'));
$this->assertEquals(1, $map2->priorityOf($this->item5));
}
-
+
public function testSetPriorityAt() {
-
+
$this->assertEquals(10, $this->map->priorityAt('key2'));
$this->assertEquals(10, $this->map->setPriorityAt('key2', 1));
$this->assertEquals(1, $this->map->priorityAt('key2'));
$this->assertEquals(1, $this->map->setPriorityAt('key2'));
$this->assertEquals(10, $this->map->priorityAt('key2'));
}
-
+
public function testToArrayBelowPriority() {
$this->setUpPriorities();
-
+
$array = $this->map->toArrayBelowPriority(1);
$this->assertEquals(array('key3'=> $this->item3), $array);
$this->assertEquals(1, count($array));
-
+
$array = $this->map->toArrayBelowPriority(1, true);
$this->assertEquals(array('key3'=> $this->item3, 'key5'=> $this->item5), $array);
$this->assertEquals(2, count($array));
-
+
$array = $this->map->toArrayBelowPriority(2);
$this->assertEquals(array('key3'=> $this->item3, 'key5'=> $this->item5), $array);
$this->assertEquals(2, count($array));
-
+
$array = $this->map->toArrayBelowPriority(10);
$this->assertEquals(array('key3'=> $this->item3, 'key5'=> $this->item5), $array);
$this->assertEquals(2, count($array));
-
+
$array = $this->map->toArrayBelowPriority(10, true);
$this->assertEquals(array('key3'=> $this->item3, 'key5'=> $this->item5, 'key1' => $this->item1, 'key2' => $this->item2), $array);
$this->assertEquals(4, count($array));
-
+
$array = $this->map->toArrayBelowPriority(100);
$this->assertEquals(array('key3'=> $this->item3, 'key5'=> $this->item5, 'key1' => $this->item1, 'key2' => $this->item2), $array);
$this->assertEquals(4, count($array));
-
+
$array = $this->map->toArrayBelowPriority(100, true);
$this->assertEquals(array('key3'=> $this->item3, 'key5'=> $this->item5, 'key1' => $this->item1, 'key2' => $this->item2, 'key4' => $this->item4), $array);
$this->assertEquals(5, count($array));
}
-
+
public function testToArrayAbovePriority() {
$this->setUpPriorities();
-
+
$array = $this->map->toArrayAbovePriority(100, false);
$this->assertEquals(0, count($array));
-
+
$array = $this->map->toArrayAbovePriority(100, true);
$this->assertEquals(1, count($array));
$this->assertEquals(array('key4' => $this->item4), $array);
-
+
$array = $this->map->toArrayAbovePriority(11);
$this->assertEquals(array('key4' => $this->item4), $array);
$this->assertEquals(1, count($array));
-
+
$array = $this->map->toArrayAbovePriority(10, false);
$this->assertEquals(array('key4' => $this->item4), $array);
$this->assertEquals(1, count($array));
-
+
$array = $this->map->toArrayAbovePriority(10);
$this->assertEquals(array('key1' => $this->item1, 'key2' => $this->item2, 'key4' => $this->item4), $array);
$this->assertEquals(3, count($array));
-
+
$array = $this->map->toArrayAbovePriority(0);
$this->assertEquals(array('key3' => $this->item3, 'key5' => $this->item5, 'key1' => $this->item1, 'key2' => $this->item2, 'key4' => $this->item4), $array);
$this->assertEquals(5, count($array));
}
-
-
-
+
+
+
}
-?>
diff --git a/tests/unit/Collections/TQueueTest.php b/tests/unit/Collections/TQueueTest.php
index efee7cb7..da60eae3 100644
--- a/tests/unit/Collections/TQueueTest.php
+++ b/tests/unit/Collections/TQueueTest.php
@@ -31,7 +31,7 @@ class TQueueTest extends PHPUnit_Framework_TestCase {
$queue->copyFrom($data);
self::assertEquals(array(4, 5, 6), $queue->toArray());
}
-
+
public function testCanNotCopyFromNonTraversableTypes() {
$queue = new TQueue();
$data = new stdClass();
@@ -42,7 +42,7 @@ class TQueueTest extends PHPUnit_Framework_TestCase {
}
self::fail('An expected TInvalidDataTypeException was not raised');
}
-
+
public function testClear() {
$queue = new TQueue(array(1, 2, 3));
$queue->clear();
@@ -59,7 +59,7 @@ class TQueueTest extends PHPUnit_Framework_TestCase {
$queue = new TQueue(array(1,2,3));
self::assertEquals(1, $queue->peek());
}
-
+
public function testCanNotPeekAnEmptyQueue() {
$queue = new TQueue();
try {
@@ -76,7 +76,7 @@ class TQueueTest extends PHPUnit_Framework_TestCase {
self::assertEquals(1, $first);
self::assertEquals(array(2, 3), $queue->toArray());
}
-
+
public function testCanNotDequeueAnEmptyQueue() {
$queue = new TQueue();
try {
@@ -105,7 +105,7 @@ class TQueueTest extends PHPUnit_Framework_TestCase {
$found++;
}
if($index === 1 && $item === 2) {
- $found++;
+ $found++;
}
}
self::assertTrue($n == 2 && $found == 2);
@@ -117,7 +117,7 @@ class TQueueTest extends PHPUnit_Framework_TestCase {
$queue = new TQueue(array(1, 2, 3));
self::assertEquals(3, $queue->getCount());
}
-
+
public function testCountable() {
$queue = new TQueue();
self::assertEquals(0, count($queue));
@@ -127,4 +127,3 @@ class TQueueTest extends PHPUnit_Framework_TestCase {
}
-?>
diff --git a/tests/unit/Collections/TStackTest.php b/tests/unit/Collections/TStackTest.php
index 89a42749..80dc77c3 100644
--- a/tests/unit/Collections/TStackTest.php
+++ b/tests/unit/Collections/TStackTest.php
@@ -31,7 +31,7 @@ class TStackTest extends PHPUnit_Framework_TestCase {
$stack->copyFrom($data);
self::assertEquals(array(4, 5, 6), $stack->toArray());
}
-
+
public function testCanNotCopyFromNonTraversableTypes() {
$stack = new TStack();
$data = new stdClass();
@@ -42,7 +42,7 @@ class TStackTest extends PHPUnit_Framework_TestCase {
}
self::fail('An expected TInvalidDataTypeException was not raised');
}
-
+
public function testClear() {
$stack = new TStack(array(1, 2, 3));
$stack->clear();
@@ -59,7 +59,7 @@ class TStackTest extends PHPUnit_Framework_TestCase {
$stack = new TStack(array(1));
self::assertEquals(1, $stack->peek());
}
-
+
public function testCanNotPeekAnEmptyStack() {
$stack = new TStack();
try {
@@ -76,7 +76,7 @@ class TStackTest extends PHPUnit_Framework_TestCase {
self::assertEquals(3, $last);
self::assertEquals(array(1, 2), $stack->toArray());
}
-
+
public function testCanNotPopAnEmptyStack() {
$stack = new TStack();
try {
@@ -105,7 +105,7 @@ class TStackTest extends PHPUnit_Framework_TestCase {
$found++;
}
if($index === 1 && $item === 2) {
- $found++;
+ $found++;
}
}
self::assertTrue($n == 2 && $found == 2);
@@ -117,7 +117,7 @@ class TStackTest extends PHPUnit_Framework_TestCase {
$stack = new TStack(array(1, 2, 3));
self::assertEquals(3, $stack->getCount());
}
-
+
public function testCount() {
$stack = new TStack();
self::assertEquals(0, count($stack));
@@ -127,4 +127,3 @@ class TStackTest extends PHPUnit_Framework_TestCase {
}
-?>
diff --git a/tests/unit/Data/DataGateway/AllTests.php b/tests/unit/Data/DataGateway/AllTests.php
index f9ba1ddc..6007ae70 100644
--- a/tests/unit/Data/DataGateway/AllTests.php
+++ b/tests/unit/Data/DataGateway/AllTests.php
@@ -12,12 +12,12 @@ class Data_DataGateway_AllTests {
public static function main() {
PHPUnit_TextUI_TestRunner::run(self::suite());
}
-
+
public static function suite() {
$suite = new PHPUnit_Framework_TestSuite('System.Data.DataGateway');
-
+
$suite->addTestSuite('TSqlCriteriaTest');
-
+
return $suite;
}
}
@@ -25,4 +25,3 @@ class Data_DataGateway_AllTests {
if(PHPUnit_MAIN_METHOD == 'Data_DataGateway_AllTests::main') {
Data_DataGateway_AllTests::main();
}
-?>
diff --git a/tests/unit/Data/DataGateway/TSqlCriteriaTest.php b/tests/unit/Data/DataGateway/TSqlCriteriaTest.php
index fb9c72b2..ce22ef1d 100644
--- a/tests/unit/Data/DataGateway/TSqlCriteriaTest.php
+++ b/tests/unit/Data/DataGateway/TSqlCriteriaTest.php
@@ -17,7 +17,7 @@ class TSqlCriteriaTest extends PHPUnit_Framework_TestCase {
public function testConstruct() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testConditionWithOrderByColumnNames() {
$criteria = new TSqlCriteria();
$criteria->Condition = "SELECT * FROM table_references ORDER BY field1 ASC, field2 DESC";
@@ -27,7 +27,7 @@ class TSqlCriteriaTest extends PHPUnit_Framework_TestCase {
self::assertEquals(true, isset($criteria->OrdersBy['field2']));
self::assertEquals('DESC', $criteria->OrdersBy['field2']);
}
-
+
public function testConditionWithOrderByExpression() {
$criteria = new TSqlCriteria();
$criteria->Condition = "SELECT * FROM table_references ORDER BY RAND()";
@@ -42,7 +42,7 @@ class TSqlCriteriaTest extends PHPUnit_Framework_TestCase {
self::assertEquals("SELECT * FROM table_references", $criteria->Condition);
self::assertEquals(2, $criteria->Limit);
}
-
+
public function testConditionWithOrderByAndLimitAndOffset() {
$criteria = new TSqlCriteria();
$criteria->Condition = "SELECT * FROM table_references ORDER BY field1 ASC, field2 DESC LIMIT 3, 2";
@@ -50,7 +50,7 @@ class TSqlCriteriaTest extends PHPUnit_Framework_TestCase {
self::assertEquals(2, $criteria->Limit);
self::assertEquals(3, $criteria->Offset);
}
-
+
public function testConditionWithOrderByAndLimitAndOffsetVariant() {
$criteria = new TSqlCriteria();
$criteria->Condition = "SELECT * FROM table_references ORDER BY field1 ASC, field2 DESC LIMIT 2 OFFSET 3";
@@ -58,14 +58,14 @@ class TSqlCriteriaTest extends PHPUnit_Framework_TestCase {
self::assertEquals(2, $criteria->Limit);
self::assertEquals(3, $criteria->Offset);
}
-
+
public function testConditionWithLimit() {
$criteria = new TSqlCriteria();
$criteria->Condition = "SELECT * FROM table_references LIMIT 2";
self::assertEquals("SELECT * FROM table_references", $criteria->Condition);
self::assertEquals(2, $criteria->Limit);
}
-
+
public function testConditionWithLimitAndOffset() {
$criteria = new TSqlCriteria();
$criteria->Condition = "SELECT * FROM table_references LIMIT 3, 2";
@@ -73,7 +73,7 @@ class TSqlCriteriaTest extends PHPUnit_Framework_TestCase {
self::assertEquals(2, $criteria->Limit);
self::assertEquals(3, $criteria->Offset);
}
-
+
public function testConditionWithLimitAndOffsetVariant() {
$criteria = new TSqlCriteria();
$criteria->Condition = "SELECT * FROM table_references LIMIT 2 OFFSET 3";
@@ -85,27 +85,26 @@ class TSqlCriteriaTest extends PHPUnit_Framework_TestCase {
public function testParameters() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testIsNamedParameters() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testOrdersBy() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testLimit() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testOffset() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testToString() {
throw new PHPUnit_Framework_IncompleteTestError();
}
}
-?>
diff --git a/tests/unit/Data/SqlMap/AllTests.php b/tests/unit/Data/SqlMap/AllTests.php
index 3adaa29c..08870eb3 100644
--- a/tests/unit/Data/SqlMap/AllTests.php
+++ b/tests/unit/Data/SqlMap/AllTests.php
@@ -27,4 +27,3 @@ class Data_SqlMap_AllTests {
if(PHPUnit_MAIN_METHOD == 'Data_SqlMap_AllTests::main') {
Data_SqlMap_AllTests::main();
}
-?>
diff --git a/tests/unit/Data/SqlMap/DataMapper/AllTests.php b/tests/unit/Data/SqlMap/DataMapper/AllTests.php
index 47b8522f..d685d474 100644
--- a/tests/unit/Data/SqlMap/DataMapper/AllTests.php
+++ b/tests/unit/Data/SqlMap/DataMapper/AllTests.php
@@ -24,5 +24,4 @@ class Data_SqlMap_DataMapper_AllTests {
if(PHPUnit_MAIN_METHOD == 'Data_SqlMap_DataMapper_AllTests::main') {
Data_SqlMap_DataMapper_AllTests::main();
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/unit/Data/SqlMap/DataMapper/TPropertyAccessTest.php b/tests/unit/Data/SqlMap/DataMapper/TPropertyAccessTest.php
index 61747c6b..3f5493c7 100644
--- a/tests/unit/Data/SqlMap/DataMapper/TPropertyAccessTest.php
+++ b/tests/unit/Data/SqlMap/DataMapper/TPropertyAccessTest.php
@@ -265,5 +265,3 @@ class _PropertyAccessTestHelperDynamicProperties
}
}
}
-
-?> \ No newline at end of file
diff --git a/tests/unit/Data/SqlMap/DynamicParameterTest.php b/tests/unit/Data/SqlMap/DynamicParameterTest.php
index 64f5e35c..136111db 100644
--- a/tests/unit/Data/SqlMap/DynamicParameterTest.php
+++ b/tests/unit/Data/SqlMap/DynamicParameterTest.php
@@ -105,5 +105,3 @@ class DynamicParameterTest extends PHPUnit_Framework_TestCase
}
}
-
-?> \ No newline at end of file
diff --git a/tests/unit/Data/TDbCommandTest.php b/tests/unit/Data/TDbCommandTest.php
index a75674bf..87bbbf05 100644
--- a/tests/unit/Data/TDbCommandTest.php
+++ b/tests/unit/Data/TDbCommandTest.php
@@ -15,6 +15,10 @@ class TDbCommandTest extends PHPUnit_Framework_TestCase
public function setUp()
{
@unlink(TEST_DB_FILE);
+
+ // create application just to provide application mode
+ new TApplication(__DIR__, false ,TApplication::CONFIG_TYPE_PHP);
+
$this->_connection=new TDbConnection('sqlite:'.TEST_DB_FILE);
$this->_connection->Active=true;
$this->_connection->createCommand('CREATE TABLE foo (id INTEGER NOT NULL PRIMARY KEY, name VARCHAR(8))')->execute();
@@ -216,5 +220,3 @@ class TDbCommandTest extends PHPUnit_Framework_TestCase
}
}
}
-
-?> \ No newline at end of file
diff --git a/tests/unit/Data/TDbConnectionTest.php b/tests/unit/Data/TDbConnectionTest.php
index 8f6ff34f..4b32300c 100644
--- a/tests/unit/Data/TDbConnectionTest.php
+++ b/tests/unit/Data/TDbConnectionTest.php
@@ -19,6 +19,10 @@ class TDbConnectionTest extends PHPUnit_Framework_TestCase
{
@unlink(TEST_DB_FILE);
@unlink(TEST_DB_FILE2);
+
+ // create application just to provide application mode
+ new TApplication(__DIR__, false ,TApplication::CONFIG_TYPE_PHP);
+
$this->_connection1=new TDbConnection('sqlite:'.TEST_DB_FILE);
$this->_connection1->Active=true;
$this->_connection1->createCommand('CREATE TABLE foo (id INTEGER NOT NULL PRIMARY KEY, name VARCHAR(8))')->execute();
@@ -121,5 +125,3 @@ class TDbConnectionTest extends PHPUnit_Framework_TestCase
$this->assertEquals(TDbNullConversionMode::NullToEmptyString,$this->_connection1->NullConversion);
}
}
-
-?> \ No newline at end of file
diff --git a/tests/unit/Data/TDbDataReaderTest.php b/tests/unit/Data/TDbDataReaderTest.php
index 98aa0385..2e31245e 100644
--- a/tests/unit/Data/TDbDataReaderTest.php
+++ b/tests/unit/Data/TDbDataReaderTest.php
@@ -37,6 +37,10 @@ class TDbDataReaderTest extends PHPUnit_Framework_TestCase
public function setUp()
{
@unlink(TEST_DB_FILE);
+
+ // create application just to provide application mode
+ new TApplication(__DIR__, false ,TApplication::CONFIG_TYPE_PHP);
+
$this->_connection=new TDbConnection('sqlite:'.TEST_DB_FILE);
$this->_connection->Active=true;
$this->_connection->createCommand('CREATE TABLE foo (id INTEGER NOT NULL PRIMARY KEY, name VARCHAR(8))')->execute();
@@ -174,5 +178,3 @@ class TDbDataReaderTest extends PHPUnit_Framework_TestCase
$this->assertEquals($name,'my name 2');
}
}
-
-?> \ No newline at end of file
diff --git a/tests/unit/Data/TDbTransactionTest.php b/tests/unit/Data/TDbTransactionTest.php
index c608bce1..b51fda04 100644
--- a/tests/unit/Data/TDbTransactionTest.php
+++ b/tests/unit/Data/TDbTransactionTest.php
@@ -15,6 +15,10 @@ class TDbTransactionTest extends PHPUnit_Framework_TestCase
public function setUp()
{
@unlink(TEST_DB_FILE);
+
+ // create application just to provide application mode
+ new TApplication(__DIR__, false ,TApplication::CONFIG_TYPE_PHP);
+
$this->_connection=new TDbConnection('sqlite:'.TEST_DB_FILE);
$this->_connection->Active=true;
$this->_connection->createCommand('CREATE TABLE foo (id INTEGER NOT NULL PRIMARY KEY, name VARCHAR(8))')->execute();
@@ -68,5 +72,3 @@ class TDbTransactionTest extends PHPUnit_Framework_TestCase
$this->assertEquals(count($result),2);
}
}
-
-?> \ No newline at end of file
diff --git a/tests/unit/Data/runtime/.gitignore b/tests/unit/Data/runtime/.gitignore
new file mode 100644
index 00000000..d6b7ef32
--- /dev/null
+++ b/tests/unit/Data/runtime/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
diff --git a/tests/unit/I18N/core/AllTests.php b/tests/unit/I18N/core/AllTests.php
index 43bbdb36..bf5fb813 100644
--- a/tests/unit/I18N/core/AllTests.php
+++ b/tests/unit/I18N/core/AllTests.php
@@ -15,16 +15,16 @@ class I18N_core_AllTests {
public static function main() {
PHPUnit_TextUI_TestRunner::run(self::suite());
}
-
+
public static function suite() {
$suite = new PHPUnit_Framework_TestSuite('System.I18N.core');
-
+
$suite->addTestSuite('CultureInfoTest');
$suite->addTestSuite('DateFormatTest');
$suite->addTestSuite('DateTimeFormatInfoTest');
$suite->addTestSuite('NumberFormatInfoTest');
$suite->addTestSuite('NumberFormatTest');
-
+
return $suite;
}
}
@@ -32,4 +32,3 @@ class I18N_core_AllTests {
if(PHPUnit_MAIN_METHOD == 'I18N_core_AllTests::main') {
I18N_core_AllTests::main();
}
-?>
diff --git a/tests/unit/I18N/core/ChoiceFormatTest.php b/tests/unit/I18N/core/ChoiceFormatTest.php
index ef397e05..2c8ab5cb 100644
--- a/tests/unit/I18N/core/ChoiceFormatTest.php
+++ b/tests/unit/I18N/core/ChoiceFormatTest.php
@@ -97,5 +97,3 @@ class ChoiceFormatTest extends PHPUnit_Framework_TestCase
}
}
}
-
-?> \ No newline at end of file
diff --git a/tests/unit/I18N/core/CultureInfoTest.php b/tests/unit/I18N/core/CultureInfoTest.php
index 6c1eda06..58c8f235 100644
--- a/tests/unit/I18N/core/CultureInfoTest.php
+++ b/tests/unit/I18N/core/CultureInfoTest.php
@@ -8,16 +8,16 @@ Prado::using('System.I18N.core.CultureInfo');
*/
class CultureInfoTest extends PHPUnit_Framework_TestCase {
protected $culture;
-
+
function setUp() {
$this->culture = CultureInfo::getInvariantCulture();
}
-
+
function testCultureName() {
$name = 'en';
-
+
$this->assertEquals($name, $this->culture->Name);
-
+
//the default/invariant culture should be neutral
$this->assertTrue($this->culture->IsNeutralCulture);
}
@@ -26,18 +26,18 @@ class CultureInfoTest extends PHPUnit_Framework_TestCase {
$allCultures = CultureInfo::getCultures();
$neutralCultures = CultureInfo::getCultures(CultureInfo::NEUTRAL);
$specificCultures = CultureInfo::getCultures(CultureInfo::SPECIFIC);
-
+
//there should be 246 cultures all together.
$this->assertEquals(count($allCultures),246);
$this->assertEquals(count($neutralCultures),76);
- $this->assertEquals(count($specificCultures),170);
+ $this->assertEquals(count($specificCultures),170);
}
function testParentCultures() {
$zh_CN = new CultureInfo('zh_CN');
$parent = $zh_CN->Parent;
$grandparent = $parent->Parent;
-
+
$this->assertEquals($zh_CN->Name, 'zh_CN');
$this->assertEquals($parent->Name, 'zh');
$this->assertEquals($grandparent->Name, 'en');
@@ -54,17 +54,17 @@ class CultureInfoTest extends PHPUnit_Framework_TestCase {
$au = array('$', 'Australian Dollar');
$this->assertEquals($au, $culture->Currencies['AUD']);
}
-
+
function testLanguages() {
$culture = new CultureInfo('fr_BE');
$this->assertEquals($culture->Languages['fr'], 'français');
}
-
+
function testScripts() {
$culture = new CultureInfo('fr');
$this->assertEquals($culture->Scripts['Armn'], 'arménien');
}
-
+
function testTimeZones() {
$culture = new CultureInfo('fi');
$zone = array(
@@ -83,5 +83,3 @@ class CultureInfoTest extends PHPUnit_Framework_TestCase {
$this->assertEquals($culture->getEnglishName(), 'iw');
}
}
-
-?> \ No newline at end of file
diff --git a/tests/unit/I18N/core/DateFormatTest.php b/tests/unit/I18N/core/DateFormatTest.php
index 8015bd74..d8350204 100644
--- a/tests/unit/I18N/core/DateFormatTest.php
+++ b/tests/unit/I18N/core/DateFormatTest.php
@@ -10,86 +10,84 @@ class DateFormatTest extends PHPUnit_Framework_TestCase {
public function testStandardPatterns() {
$dateFormatter = new DateFormat();
-
+
$time = @mktime(9, 9, 9, 9, 1, 2004);
$zone = @date('T', $time);
//var_dump(date('c',$time));
//for ShortDatePattern "M/d/yy"
$this->assertEquals('9/1/04', $dateFormatter->format($time, 'd'));
//var_dump(date('c',strtotime($dateFormatter->format($time,'d'))));
-
+
//for LongDatePattern "MMMM d, yyyy"
$wants = 'September 1, 2004';
$this->assertEquals($wants, $dateFormatter->format($time, 'D'));
//var_dump(date('c',strtotime($dateFormatter->format($time,'D'))));
-
+
//for Full date and time "MMMM d, yyyy h:mm a"
$wants = 'September 1, 2004 9:09 AM';
$this->assertEquals($wants, $dateFormatter->format($time, 'f'));
//var_dump(date('c',strtotime($dateFormatter->format($time,'f'))));
-
+
//for FullDateTimePattern "MMMM d, yyyy h:mm:ss a z"
$wants = 'September 1, 2004 9:09:09 AM '.$zone;
$this->assertEquals($wants, $dateFormatter->format($time, 'F'));
-
+
//for General "M/d/yy h:mm a"
$wants = '9/1/04 9:09 AM';
$this->assertEquals($wants, $dateFormatter->format($time, 'g'));
//var_dump(date('c',strtotime($dateFormatter->format($time,'g'))));
-
+
//for General "M/d/yy h:mm:ss a z"
$wants = '9/1/04 9:09:09 AM '.$zone;
- $this->assertEquals($wants, $dateFormatter->format($time, 'G'));
-
+ $this->assertEquals($wants, $dateFormatter->format($time, 'G'));
+
//for MonthDayPattern "MMMM dd" (invariant)
$wants = 'September 01';
$this->assertEquals($wants, $dateFormatter->format($time, 'm'));
//var_dump(date('c',strtotime($dateFormatter->format($time,'m'))));
-
+
//for RFC1123Pattern "EEE, dd MMM yyyy HH:mm:ss" (invariant)
$wants = 'Wed, 01 Sep 2004 09:09:09';
- $this->assertEquals($wants, $dateFormatter->format($time, 'r'));
+ $this->assertEquals($wants, $dateFormatter->format($time, 'r'));
//var_dump(date('c',strtotime($dateFormatter->format($time,'r'))));
-
+
//for SortableDateTimePattern "yyyy-MM-ddTHH:mm:ss" (invariant)
$wants = '2004-09-01T09:09:09';
- $this->assertEquals($wants, $dateFormatter->format($time, 's'));
+ $this->assertEquals($wants, $dateFormatter->format($time, 's'));
//var_dump(date('c',strtotime($dateFormatter->format($time,'s'))));
-
+
//for ShortTimePattern "H:mm a"
$wants = '9:09 AM';
- $this->assertEquals($wants, $dateFormatter->format($time, 't'));
+ $this->assertEquals($wants, $dateFormatter->format($time, 't'));
//(date('c',strtotime($dateFormatter->format($time,'t'))));
-
+
//for LongTimePattern "H:mm:ss a z"
$wants = '9:09:09 AM '.$zone;
- $this->assertEquals($wants, $dateFormatter->format($time, 'T'));
-
- //for UniversalSortableDateTimePattern "yyyy-MM-dd HH:mm:ss z"
+ $this->assertEquals($wants, $dateFormatter->format($time, 'T'));
+
+ //for UniversalSortableDateTimePattern "yyyy-MM-dd HH:mm:ss z"
//(invariant)
$wants = '2004-09-01 09:09:09 '.$zone;
- $this->assertEquals($wants, $dateFormatter->format($time, 'u'));
-
+ $this->assertEquals($wants, $dateFormatter->format($time, 'u'));
+
//for Full date and time "EEEE dd MMMM yyyy HH:mm:ss" (invariant)
$wants = 'Wednesday 01 September 2004 09:09:09';
- $this->assertEquals($wants, $dateFormatter->format($time, 'U'));
+ $this->assertEquals($wants, $dateFormatter->format($time, 'U'));
//var_dump(date('c',strtotime($dateFormatter->format($time,'U'))));
-
+
//for YearMonthPattern "yyyy MMMM" (invariant)
$wants = '2004 September';
- $this->assertEquals($wants, $dateFormatter->format($time, 'y'));
+ $this->assertEquals($wants, $dateFormatter->format($time, 'y'));
//var_dump(date('c',strtotime($dateFormatter->format($time,'y'))));
}
-
+
public function testCustomPatterns() {
$dateFormatter = new DateFormat();
-
+
$time = @mktime(9, 9, 9, 9, 1, 2004);
-
+
$pattern = "'Hello' EEEE, 'it should be' MMM yyyy HH:mm:ss!!!";
$wants = 'Hello Wednesday, it should be Sep 2004 09:09:09!!!';
- $this->assertEquals($wants, $dateFormatter->format($time, $pattern));
+ $this->assertEquals($wants, $dateFormatter->format($time, $pattern));
}
}
-
-?> \ No newline at end of file
diff --git a/tests/unit/I18N/core/DateTimeFormatInfoTest.php b/tests/unit/I18N/core/DateTimeFormatInfoTest.php
index 442a6b85..ac93e1c7 100644
--- a/tests/unit/I18N/core/DateTimeFormatInfoTest.php
+++ b/tests/unit/I18N/core/DateTimeFormatInfoTest.php
@@ -9,20 +9,20 @@ Prado::using('System.I18N.core.DateTimeFormatInfo');
class DateTimeFormatInfoTest extends PHPUnit_Framework_TestCase {
protected $format;
-
+
function setUp() {
$this->format = DateTimeFormatInfo::getInstance('en');
}
-
+
function testAbbreviatedDayNames() {
$names = $this->format->AbbreviatedDayNames;
$this->assertTrue(is_array($names),'Must be an array!');
$this->assertEquals(count($names),7,'Must have 7 day names');
-
+
//assuming invariant culture.
$days = array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat");
$this->assertEquals($names, $days);
-
+
//try to set the data
$data = array('Hel', 'wor');
$this->format->AbbreviatedDayNames = $data;
@@ -31,16 +31,16 @@ class DateTimeFormatInfoTest extends PHPUnit_Framework_TestCase {
$this->assertEquals(count($newNames),2,'Must have 2 entries');
$this->assertEquals($newNames, $data);
}
-
+
function testNarrowDayNames() {
$names = $this->format->NarrowDayNames;
$this->assertTrue(is_array($names),'Must be an array!');
$this->assertEquals(count($names),7,'Must have 7 day names');
-
+
//assuming invariant culture.
$days = array("S", "M", "T", "W", "T", "F", "S");
$this->assertEquals($names, $days);
-
+
//try to set the data
$data = array('H', 'w');
$this->format->NarrowDayNames = $data;
@@ -49,17 +49,17 @@ class DateTimeFormatInfoTest extends PHPUnit_Framework_TestCase {
$this->assertEquals(count($newNames),2,'Must have 2 entries');
$this->assertEquals($newNames, $data);
}
-
+
function testDayNames() {
$names = $this->format->DayNames;
$this->assertTrue(is_array($names),'Must be an array!');
$this->assertEquals(count($names),7,'Must have 7 day names');
-
+
//assuming invariant culture.
$days = array( "Sunday","Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday");
$this->assertEquals($names, $days);
-
+
//try to set the data
$data = array('Hello', 'world');
$this->format->DayNames = $data;
@@ -68,18 +68,18 @@ class DateTimeFormatInfoTest extends PHPUnit_Framework_TestCase {
$this->assertEquals(count($newNames),2,'Must have 2 entries');
$this->assertEquals($newNames, $data);
}
-
+
function testMonthNames() {
$names = $this->format->MonthNames;
$this->assertTrue(is_array($names),'Must be an array!');
$this->assertEquals(count($names),12,'Must have 12 month names');
-
+
//assuming invariant culture.
$days = array( "January", "February", "March", "April",
"May", "June", "July", "August", "September",
"October", "November", "December");
$this->assertEquals($names, $days);
-
+
//try to set the data
$data = array('Hello', 'world');
$this->format->MonthNames = $data;
@@ -88,17 +88,17 @@ class DateTimeFormatInfoTest extends PHPUnit_Framework_TestCase {
$this->assertEquals(count($newNames),2,'Must have 2 entries');
$this->assertEquals($newNames, $data);
}
-
+
function testNarrowMonthNames() {
$names = $this->format->NarrowMonthNames;
$this->assertTrue(is_array($names),'Must be an array!');
$this->assertEquals(count($names),12,'Must have 12 month names');
-
+
//assuming invariant culture.
$days = array( "J", "F", "M", "A", "M", "J", "J",
"A", "S", "O", "N", "D");
$this->assertEquals($names, $days);
-
+
//try to set the data
$data = array('Hello', 'world');
$this->format->NarrowMonthNames = $data;
@@ -112,13 +112,13 @@ class DateTimeFormatInfoTest extends PHPUnit_Framework_TestCase {
$names = $this->format->AbbreviatedMonthNames;
$this->assertTrue(is_array($names),'Must be an array!');
$this->assertEquals(count($names),12,'Must have 12 month names');
-
+
//assuming invariant culture.
$days = array( "Jan", "Feb", "Mar", "Apr",
"May", "Jun", "Jul", "Aug", "Sep",
"Oct", "Nov", "Dec");
$this->assertEquals($names, $days);
-
+
//try to set the data
$data = array('Hello', 'world');
$this->format->AbbreviatedMonthNames = $data;
@@ -134,7 +134,7 @@ class DateTimeFormatInfoTest extends PHPUnit_Framework_TestCase {
$this->assertEquals('AD', $this->format->getEra(1));
$this->assertEquals('BC', $this->format->getEra(0));
}
-
+
function testAMPMMarkers() {
$am_pm = array('AM','PM');
$data = $this->format->AMPMMarkers;
@@ -142,7 +142,7 @@ class DateTimeFormatInfoTest extends PHPUnit_Framework_TestCase {
$this->assertEquals($am_pm, $data);
$this->assertEquals('AM', $this->format->AMDesignator);
$this->assertEquals('PM', $this->format->PMDesignator);
-
+
//try to set the data
$data = array('Hello', 'world');
$this->format->AMPMMarkers = $data;
@@ -150,10 +150,10 @@ class DateTimeFormatInfoTest extends PHPUnit_Framework_TestCase {
$this->assertTrue(is_array($newNames),'Must be an array!');
$this->assertEquals(count($newNames),2,'Must have 2 entries');
$this->assertEquals($newNames, $data);
-
+
$this->format->AMDesignator = 'TTTT';
$this->assertEquals('TTTT',$this->format->AMDesignator);
-
+
$this->format->PMDesignator = 'SSS';
$this->assertEquals('SSS',$this->format->PMDesignator);
}
@@ -171,37 +171,36 @@ class DateTimeFormatInfoTest extends PHPUnit_Framework_TestCase {
'ShortDatePattern' => 'M/d/yy',
'DateTimeOrderPattern' => '{1} {0}'
);
-
+
foreach($patterns as $property => $pattern) {
$this->assertEquals($pattern, $this->format->$property);
}
-
+
$hello = 'Hello';
$world = 'world';
$expectedResult = $hello.' '.$world;
$this->assertEquals($expectedResult,
$this->format->formatDateTime($hello, $world));
}
-
+
function testInvariantInfo() {
$format = DateTimeFormatInfo::getInstance();
-
+
//the variant datetime format for medium date
//should be the follow
$pattern = 'MMM d, yyyy';
-
+
$this->assertEquals($pattern, $format->MediumDatePattern);
-
+
$invariant = $format->getInvariantInfo();
-
+
$this->assertSame($format, $invariant);
}
-
+
function testGetInstance() {
$format = DateTimeFormatInfo::getInstance('zh_CN');
-
+
$pattern = 'yyyy-M-d';
$this->assertEquals($pattern, $format->MediumDatePattern);
- }
-}
-?> \ No newline at end of file
+ }
+} \ No newline at end of file
diff --git a/tests/unit/I18N/core/NumberFormatInfoTest.php b/tests/unit/I18N/core/NumberFormatInfoTest.php
index d522144f..6243095a 100644
--- a/tests/unit/I18N/core/NumberFormatInfoTest.php
+++ b/tests/unit/I18N/core/NumberFormatInfoTest.php
@@ -8,27 +8,27 @@ Prado::using('System.I18N.core.NumberFormatInfo');
* @package System.I18N.core
*/
class NumberFormatInfoTest extends PHPUnit_Framework_TestCase {
-
+
function testCurrencyPatterns() {
$numberInfo = NumberFormatInfo::getCurrencyInstance();
-
+
//there should be 2 decimal places.
$this->assertEquals($numberInfo->DecimalDigits,2);
$this->assertEquals($numberInfo->DecimalSeparator,'.');
$this->assertEquals($numberInfo->GroupSeparator,',');
-
+
//there should be only 1 grouping of size 3
$groupsize = array(3,false);
$this->assertEquals($numberInfo->GroupSizes, $groupsize);
-
+
//the default negative pattern prefix and postfix
$negPattern = array('-¤','');
$this->assertEquals($numberInfo->NegativePattern, $negPattern);
-
+
//the default positive pattern prefix and postfix
$negPattern = array('¤','');
$this->assertEquals($numberInfo->PositivePattern, $negPattern);
-
+
//the default currency symbol
$this->assertEquals($numberInfo->CurrencySymbol, 'US$');
$this->assertEquals($numberInfo->getCurrencySymbol('JPY'), '¥');
@@ -38,51 +38,49 @@ class NumberFormatInfoTest extends PHPUnit_Framework_TestCase {
$this->assertEquals($numberInfo->PositiveSign, '+');
$this->assertEquals($numberInfo->NaNSymbol, '�');
$this->assertEquals($numberInfo->PercentSymbol, '%');
- $this->assertEquals($numberInfo->PerMilleSymbol, '‰');
+ $this->assertEquals($numberInfo->PerMilleSymbol, '‰');
}
function testPatternsSet() {
$numberInfo = NumberFormatInfo::getInstance();
-
+
$numberInfo->DecimalDigits = 0;
$this->assertEquals($numberInfo->DecimalDigits,0);
-
+
$numberInfo->DecimalSeparator = ',';
$this->assertEquals($numberInfo->DecimalSeparator,',');
-
+
$numberInfo->GroupSeparator = ' ';
$this->assertEquals($numberInfo->GroupSeparator,' ');
-
+
$numberInfo->GroupSizes = array(2,3);
$groupsize = array(2,3);
$this->assertEquals($numberInfo->GroupSizes, $groupsize);
-
+
$numberInfo->NegativePattern = array('-$$','.');
$negPattern = array('-$$','.');
$this->assertEquals($numberInfo->NegativePattern, $negPattern);
-
+
$numberInfo->PositivePattern = array('YY','.');
$negPattern = array('YY','.');
$this->assertEquals($numberInfo->PositivePattern, $negPattern);
-
+
//the default CurrencySymbol symbol
$numberInfo->CurrencySymbol = '$$$';
$this->assertEquals($numberInfo->CurrencySymbol, '$$$');
}
-
+
function testLocalizedPatterns() {
$fr = NumberFormatInfo::getInstance('fr');
$de = NumberFormatInfo::getInstance('de');
$en = NumberFormatInfo::getInstance('en_US');
-
+
$this->assertEquals($fr->DecimalSeparator, ',');
$this->assertEquals($de->DecimalSeparator, ',');
$this->assertEquals($en->DecimalSeparator, '.');
-
+
$this->assertEquals($fr->GroupSeparator, ' ');
$this->assertEquals($de->GroupSeparator, '.');
$this->assertEquals($en->GroupSeparator, ',');
}
}
-
-?> \ No newline at end of file
diff --git a/tests/unit/I18N/core/NumberFormatTest.php b/tests/unit/I18N/core/NumberFormatTest.php
index 958f05f4..ef8add77 100644
--- a/tests/unit/I18N/core/NumberFormatTest.php
+++ b/tests/unit/I18N/core/NumberFormatTest.php
@@ -14,7 +14,7 @@ class NumberFormatTest extends PHPUnit_Framework_TestCase {
$wanted = '123,456,789.125156';
$this->assertEquals($wanted, $formatter->format($number));
-
+
//currency
$wanted = 'US$123,456,789.13';
$this->assertEquals($wanted, $formatter->format($number,'c'));
@@ -25,21 +25,21 @@ class NumberFormatTest extends PHPUnit_Framework_TestCase {
$de = new NumberFormat('de');
$ja = new NumberFormat('ja_JP');
$it = new NumberFormat('it_IT');
-
+
$number = '123456789.125156';
-
+
//french
$wanted = '123 456 789,13 F';
$this->assertEquals($wanted, $fr->format($number,'c','FRF'));
-
+
//german
$wanted = 'DES 123.456.789,13';
$this->assertEquals($wanted, $de->format($number,'c','DES'));
-
+
//japanese
$wanted = '¥123,456,789';
$this->assertEquals($wanted, $ja->format($number,'c','JPY'));
-
+
//custom/unkown currency
$wanted = 'DLL123,456,789';
$this->assertEquals($wanted, $ja->format($number,'c','DLL'));
@@ -52,54 +52,54 @@ class NumberFormatTest extends PHPUnit_Framework_TestCase {
function testCustomFormat() {
$formatter = new NumberFormat();
$number = '123456789.125156';
-
+
//primay and secondary grouping test
$pattern = '#,###,##.###';
$wanted = '1,234,567,89.125156';
$this->assertEquals($wanted, $formatter->format($number, $pattern));
-
+
//4 digits grouping test
$pattern = '#,####.###';
$wanted = '1,2345,6789.125156';
$this->assertEquals($wanted, $formatter->format($number, $pattern));
-
+
//custom percentage
$pattern = '#,###.00%';
$wanted = '123,456,789.13%';
$this->assertEquals($wanted, $formatter->format($number, $pattern));
}
-
+
function testPercentageFormat() {
$formatter = new NumberFormat();
$number = '0.125156';
$wanted = '12%';
$this->assertEquals($wanted, $formatter->format($number, 'p'));
}
-
+
function testQuotes() {
$formatter = new NumberFormat();
$number = '123456789.125156';
-
+
$pattern = "# o'clock";
$wanted = "123456789 o'clock";
$this->assertEquals($wanted, $formatter->format($number, $pattern));
-
+
}
-
+
function testPadding() {
$formatter = new NumberFormat();
$number = '5';
-
+
$pattern = '0000';
$wanted = '0005';
-
+
$this->assertEquals($wanted, $formatter->format($number, $pattern));
}
-
+
function testFormatWithANegativeValue() {
$formatter = new NumberFormat();
$number = "-1.2";
-
+
$wanted = "-1.2";
$this->assertEquals($wanted, $formatter->format($number));
}
@@ -110,33 +110,33 @@ class NumberFormatTest extends PHPUnit_Framework_TestCase {
$expected = "10E";
$this->assertEquals('10E', $formatter->format($number, 'e'));
}
-
+
function testRounding()
{
$formatter = new NumberFormat();
-
+
$number = 349.999;
$pattern = '#.00';
$expected = '350.00';
-
+
$this->assertEquals($expected, $formatter->format($number, $pattern));
}
function testRounding2()
{
$formatter = new NumberFormat();
-
+
$number = 349.99;
$pattern = '#.00';
$expected = '349.99';
-
+
$this->assertEquals($expected, $formatter->format($number, $pattern));
}
function testLocalizedCurrencyFormats2() {
$it = new NumberFormat('it_IT');
-
+
$number = 12.41;
$wanted = '12,41';
$this->assertEquals($wanted, $it->format($number,'d'));
@@ -149,7 +149,7 @@ class NumberFormatTest extends PHPUnit_Framework_TestCase {
$wanted = '10.010,23';
$this->assertEquals($wanted, $it->format($number,'d'));
- $old= setlocale(LC_ALL,"0");
+ $old= setlocale(LC_ALL,"0");
setlocale(LC_ALL,"it_IT");
$number = 12.41;
@@ -167,5 +167,3 @@ class NumberFormatTest extends PHPUnit_Framework_TestCase {
setlocale(LC_ALL,$old);
}
}
-
-?> \ No newline at end of file
diff --git a/tests/unit/IO/AllTests.php b/tests/unit/IO/AllTests.php
index 01bbd95d..c789169f 100644
--- a/tests/unit/IO/AllTests.php
+++ b/tests/unit/IO/AllTests.php
@@ -11,13 +11,13 @@ class IO_AllTests {
public static function main() {
PHPUnit_TextUI_TestRunner::run(self::suite());
}
-
+
public static function suite() {
$suite = new PHPUnit_Framework_TestSuite('System.IO');
-
+
$suite->addTestSuite('TTarFileExtractorTest');
$suite->addTestSuite('TTextWriterTest');
-
+
return $suite;
}
}
@@ -25,4 +25,3 @@ class IO_AllTests {
if(PHPUnit_MAIN_METHOD == 'IO_AllTests::main') {
IO_AllTests::main();
}
-?>
diff --git a/tests/unit/IO/TTarFileExtractorTest.php b/tests/unit/IO/TTarFileExtractorTest.php
index 66b66831..860560b1 100644
--- a/tests/unit/IO/TTarFileExtractorTest.php
+++ b/tests/unit/IO/TTarFileExtractorTest.php
@@ -14,10 +14,9 @@ class TTarFileExtractorTest extends PHPUnit_Framework_TestCase {
public function testDestruct() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testExtract() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/unit/IO/TTextWriterTest.php b/tests/unit/IO/TTextWriterTest.php
index d23fec36..087812d7 100644
--- a/tests/unit/IO/TTextWriterTest.php
+++ b/tests/unit/IO/TTextWriterTest.php
@@ -20,7 +20,7 @@ class TTextWriterTest extends PHPUnit_Framework_TestCase {
$writer->write("more text\n");
self::assertEquals("some text\nmore text\n", $writer->flush());
}
-
+
public function testWriteLine() {
$writer = new TTextWriter();
$writer->writeLine('some text');
@@ -28,4 +28,3 @@ class TTextWriterTest extends PHPUnit_Framework_TestCase {
}
}
-?>
diff --git a/tests/unit/Security/AllTests.php b/tests/unit/Security/AllTests.php
index 40316719..e71307a9 100644
--- a/tests/unit/Security/AllTests.php
+++ b/tests/unit/Security/AllTests.php
@@ -14,16 +14,16 @@ class Security_AllTests {
public static function main() {
PHPUnit_TextUI_TestRunner::run(self::suite());
}
-
+
public static function suite() {
$suite = new PHPUnit_Framework_TestSuite('System.Security');
-
+
$suite->addTestSuite('TAuthManagerTest');
$suite->addTestSuite('TAuthorizationRuleTest');
$suite->addTestSuite('TSecurityManagerTest');
$suite->addTestSuite('TUserManagerTest');
$suite->addTestSuite('TUserTest');
-
+
return $suite;
}
}
@@ -31,4 +31,3 @@ class Security_AllTests {
if(PHPUnit_MAIN_METHOD == 'Security_AllTests::main') {
Security_AllTests::main();
}
-?>
diff --git a/tests/unit/Security/TAuthManagerTest.php b/tests/unit/Security/TAuthManagerTest.php
index 03244a22..3b8b9305 100644
--- a/tests/unit/Security/TAuthManagerTest.php
+++ b/tests/unit/Security/TAuthManagerTest.php
@@ -8,7 +8,7 @@ Prado::using('System.Xml.TXmlDocument');
* @package System.Security
*/
class TAuthManagerTest extends PHPUnit_Framework_TestCase {
-
+
public static $app = null;
public static $usrMgr = null;
@@ -18,7 +18,7 @@ class TAuthManagerTest extends PHPUnit_Framework_TestCase {
if(self::$app === null) {
self::$app = new TApplication(dirname(__FILE__).'/app');
}
-
+
// Make a fake user manager module
if (self::$usrMgr === null) {
self::$usrMgr=new TUserManager ();
@@ -39,26 +39,26 @@ class TAuthManagerTest extends PHPUnit_Framework_TestCase {
$authManager->init(null);
self::fail ('Expected TConfigurationException not thrown');
} catch (TConfigurationException $e) {}
-
+
$authManager->setUserManager('users');
$authManager->init (null);
self::assertEquals(self::$usrMgr, $authManager->getUserManager());
}
-
+
public function testUserManager() {
$authManager=new TAuthManager ();
$authManager->setUserManager('users');
$authManager->init(null);
self::assertEquals(self::$usrMgr, $authManager->getUserManager());
-
+
// test change
try {
$authManager->setUserManager('invalid');
self::fail ('Expected TInvalidOperationException not thrown');
} catch (TInvalidOperationException $e) {}
-
+
}
-
+
public function testLoginPage() {
$authManager=new TAuthManager ();
$authManager->setUserManager('users');
@@ -66,7 +66,7 @@ class TAuthManagerTest extends PHPUnit_Framework_TestCase {
$authManager->setLoginPage ('LoginPage');
self::assertEquals('LoginPage', $authManager->getLoginPage());
}
-
+
public function testDoAuthentication() {
throw new PHPUnit_Framework_IncompleteTestError();
// Not yet finished, Session won't start because of headers :( :(
@@ -76,41 +76,40 @@ class TAuthManagerTest extends PHPUnit_Framework_TestCase {
$authManager->init(null);
$authManager->setLoginPage ('LoginPage');
self::$app->raiseEvent ('onAuthentication', self::$app, null);
-
+
}
-
+
public function testDoAuthorization() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testLeave() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testReturnUrl() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testOnAuthenticate() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testOnAuthorize() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testUpdateSessionUser() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testLogin() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testLogout() {
throw new PHPUnit_Framework_IncompleteTestError();
}
}
-?>
diff --git a/tests/unit/Security/TAuthorizationRuleTest.php b/tests/unit/Security/TAuthorizationRuleTest.php
index 5d5f2d97..5bfa6c2c 100644
--- a/tests/unit/Security/TAuthorizationRuleTest.php
+++ b/tests/unit/Security/TAuthorizationRuleTest.php
@@ -16,35 +16,34 @@ class TAuthorizationRuleTest extends PHPUnit_Framework_TestCase {
public function testConstruct() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testAction() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testUsers() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testRoles() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testVerb() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGuestApplied() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testEveryoneApplied() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testIsUserAllowed() {
throw new PHPUnit_Framework_IncompleteTestError();
}
}
-?>
diff --git a/tests/unit/Security/TSecurityManagerTest.php b/tests/unit/Security/TSecurityManagerTest.php
index 09c261cf..9c319a5a 100644
--- a/tests/unit/Security/TSecurityManagerTest.php
+++ b/tests/unit/Security/TSecurityManagerTest.php
@@ -22,39 +22,39 @@ class TSecurityManagerTest extends PHPUnit_Framework_TestCase {
$sec->init(null);
self::assertEquals ($sec, self::$app->getSecurityManager());
}
-
+
public function testValidationKey() {
$sec=new TSecurityManager ();
$sec->init (null);
// Random validation key
$valkey=$sec->getValidationKey ();
self::assertEquals($valkey, self::$app->getGlobalState(TSecurityManager::STATE_VALIDATION_KEY));
-
+
$sec->setValidationKey ('aKey');
self::assertEquals('aKey',$sec->getValidationKey());
-
+
try {
$sec->setValidationKey ('');
self::fail ('Expected TInvalidDataValueException not thrown');
} catch (TInvalidDataValueException $e) {}
}
-
+
public function testEncryptionKey() {
$sec=new TSecurityManager ();
$sec->init (null);
// Random encryption key
$valkey=$sec->getEncryptionKey ();
self::assertEquals($valkey, self::$app->getGlobalState(TSecurityManager::STATE_ENCRYPTION_KEY));
-
+
$sec->setEncryptionKey ('aKey');
self::assertEquals('aKey',$sec->getEncryptionKey());
-
+
try {
$sec->setEncryptionKey ('');
self::fail ('Expected TInvalidDataValueException not thrown');
} catch (TInvalidDataValueException $e) {}
}
-
+
public function testValidation() {
$sec=new TSecurityManager ();
$sec->init (null);
@@ -67,7 +67,7 @@ class TSecurityManagerTest extends PHPUnit_Framework_TestCase {
self::fail ('Expected TInvalidDataValueException not thrown');
} catch (TInvalidDataValueException $e) {}
}
-
+
public function testEncryption() {
$sec=new TSecurityManager ();
$sec->init (null);
@@ -79,7 +79,7 @@ class TSecurityManagerTest extends PHPUnit_Framework_TestCase {
self::assertEquals('NotExisting', $sec->getCryptAlgorithm());
}
}
-
+
public function testEncryptDecrypt() {
$sec=new TSecurityManager ();
$sec->init (null);
@@ -101,13 +101,13 @@ class TSecurityManagerTest extends PHPUnit_Framework_TestCase {
self::assertEquals($plainText,$decrypted);
- // try change key
+ // try change key
$sec->setEncryptionKey ('anotherKey');
self::assertNotEquals($plainText, $sec->decrypt($encrypted));
}
}
-
-
+
+
public function testHashData() {
$sec=new TSecurityManager ();
$sec->init (null);
@@ -118,7 +118,7 @@ class TSecurityManagerTest extends PHPUnit_Framework_TestCase {
self::assertEquals (54, strlen($hashed));
// The initial text should be after the initial hash
self::assertEquals ('A text to hash', substr($hashed,40));
-
+
// Same tests with MD5
$sec->setValidationKey('AnotherKey');
$sec->setValidation('MD5');
@@ -128,7 +128,7 @@ class TSecurityManagerTest extends PHPUnit_Framework_TestCase {
// The initial text should be after the initial hash
self::assertEquals ('A text to hash', substr($hashed,32));
}
-
+
public function testValidateData() {
$sec=new TSecurityManager ();
$sec->init (null);
@@ -142,8 +142,7 @@ class TSecurityManagerTest extends PHPUnit_Framework_TestCase {
// and a test without tampered data
self::assertFalse($sec->validateData('bad'));
}
-
+
}
-?>
diff --git a/tests/unit/Security/TUserManagerTest.php b/tests/unit/Security/TUserManagerTest.php
index edb7ea6f..91b9d0c6 100644
--- a/tests/unit/Security/TUserManagerTest.php
+++ b/tests/unit/Security/TUserManagerTest.php
@@ -6,18 +6,18 @@ Prado::using('System.Security.TUserManager');
* @package System.Security
*/
class TUserManagerTest extends PHPUnit_Framework_TestCase {
-
+
public static $app=null;
public static $config=null;
-
+
public function setUp() {
-
+
if(self::$app === null) {
self::$app = new TApplication(dirname(__FILE__).'/app');
prado::setPathofAlias('App', dirname(__FILE__));
}
-
+
if (self::$config === null) {
// Simulate a config file
self::$config=new TXmlDocument('1.0','utf8');
@@ -41,21 +41,21 @@ class TUserManagerTest extends PHPUnit_Framework_TestCase {
$userManager->init (new TXmlDocument()); // Empty config
self::assertEquals(array('joe'=>'demo','john'=>'demo', 'test' => 'test'), $userManager->getUsers());
unlink (dirname(__FILE__).'/users.xml');
- }
+ }
}
-
+
public function testUsers() {
$userManager=new TUserManager ();
$userManager->init (self::$config);
self::assertEquals(array('joe'=>'demo','john'=>'demo', 'test' => 'test'), $userManager->getUsers());
}
-
+
public function testRoles() {
$userManager=new TUserManager ();
$userManager->init (self::$config);
self::assertEquals(array('joe'=>array ('Writer'), 'john'=>array ('Administrator','Writer'), 'test' => array ('Reader', 'User')), $userManager->getRoles());
}
-
+
public function testUserFile() {
$userManager=new TUserManager ();
try {
@@ -71,7 +71,7 @@ class TUserManagerTest extends PHPUnit_Framework_TestCase {
self::assertEquals(dirname(__FILE__).'/users.xml', $userManager->getUserFile());
unlink (dirname(__FILE__).'/users.xml');
$userManager=null;
- }
+ }
$userManager=new TUserManager ();
$userManager->init (self::$config);
try {
@@ -79,14 +79,14 @@ class TUserManagerTest extends PHPUnit_Framework_TestCase {
self::fail ('Exception TInvalidOperationException not thrown');
} catch (TInvalidOperationException $e) {}
}
-
+
public function testGuestName() {
$userManager=new TUserManager ();
self::assertEquals('Guest', $userManager->getGuestName());
$userManager->setGuestName('Invite');
self::assertEquals('Invite', $userManager->getGuestName());
}
-
+
public function testPasswordMode() {
$userManager=new TUserManager ();
$userManager->setPasswordMode('Clear');
@@ -99,9 +99,9 @@ class TUserManagerTest extends PHPUnit_Framework_TestCase {
$userManager->setPasswordMode('Invalid');
self::fail ('Exception TInvalidDataValueException not thrown');
} catch (TInvalidDataValueException $e) {}
-
+
}
-
+
public function testValidateUser() {
$userManager=new TUserManager ();
$userManager->init (self::$config);
@@ -109,7 +109,7 @@ class TUserManagerTest extends PHPUnit_Framework_TestCase {
self::assertTrue($userManager->validateUser('Joe', 'demo'));
self::assertFalse($userManager->validateUser('John', 'bad'));
}
-
+
public function testUser() {
$userManager=new TUserManager ();
$userManager->init (self::$config);
@@ -123,7 +123,7 @@ class TUserManagerTest extends PHPUnit_Framework_TestCase {
self::assertFalse($user->getIsGuest());
self::assertNull($userManager->getUser('badUser'));
}
-
+
public function testSwitchToGuest() {
$userManager=new TUserManager ();
$userManager->init (self::$config);
@@ -134,4 +134,3 @@ class TUserManagerTest extends PHPUnit_Framework_TestCase {
}
-?>
diff --git a/tests/unit/Security/TUserTest.php b/tests/unit/Security/TUserTest.php
index 6fa337e0..3692b97c 100644
--- a/tests/unit/Security/TUserTest.php
+++ b/tests/unit/Security/TUserTest.php
@@ -32,18 +32,18 @@ class TUserTest extends PHPUnit_Framework_TestCase {
self::assertEquals('Guest', $user->getName());
self::assertEquals(self::$mgr, $user->getManager());
}
-
+
public function testManager() {
$user = new TUser (self::$mgr);
self::assertEquals(self::$mgr, $user->getManager());
}
-
+
public function testName() {
$user = new TUser (self::$mgr);
$user->setName('joe');
self::assertEquals('joe', $user->getName());
}
-
+
public function testIsGuest() {
$user = new TUser (self::$mgr);
$user->setName('John');
@@ -54,7 +54,7 @@ class TUserTest extends PHPUnit_Framework_TestCase {
self::assertTrue($user->getIsGuest());
self::assertEquals(array(),$user->getRoles());
}
-
+
public function testRoles() {
$user=new TUser(self::$mgr);
$user->setRoles(array('Administrator','Writer'));
@@ -62,7 +62,7 @@ class TUserTest extends PHPUnit_Framework_TestCase {
$user->setRoles('Reader,User');
self::assertEquals(array('Reader','User'), $user->getRoles());
}
-
+
public function testIsInRole() {
$user=new TUser(self::$mgr);
$user->setRoles(array('Administrator','Writer'));
@@ -71,7 +71,7 @@ class TUserTest extends PHPUnit_Framework_TestCase {
self::assertTrue($user->IsInRole('Writer'));
self::assertFalse($user->isInRole('Reader'));
}
-
+
public function testSaveToString() {
$user = new TUser (self::$mgr);
$user->setName('John');
@@ -81,20 +81,20 @@ class TUserTest extends PHPUnit_Framework_TestCase {
$assumedState=array ('Name' => 'John', 'IsGuest' => false, 'Roles' => array ('Administrator', 'Writer'));
self::assertEquals(serialize($assumedState), $user->saveToString());
}
-
+
public function testLoadFromString() {
$user = new TUser (self::$mgr);
$user->setName('John');
$user->setIsGuest(false);
$user->setRoles('Administrator, Writer');
$save=$user->saveToString();
-
+
$user2 = new TUser (self::$mgr);
$user2->loadFromString($save);
-
+
self::assertEquals($user, $user2);
}
-
+
/* getState & setState are protected methods, will be tested with other tests.
public function testState() {
throw new PHPUnit_Framework_IncompleteTestError();
@@ -111,4 +111,3 @@ class TUserTest extends PHPUnit_Framework_TestCase {
}
-?>
diff --git a/tests/unit/TComponentTest.php b/tests/unit/TComponentTest.php
index 93668dc0..9a2299da 100644
--- a/tests/unit/TComponentTest.php
+++ b/tests/unit/TComponentTest.php
@@ -13,24 +13,24 @@ class NewComponent extends TComponent {
public function getAutoGlobalListen() {
return true;
- }
+ }
public function getText() {
return $this->_text;
}
-
+
public function setText($value) {
$this->_text=$value;
}
-
+
public function getReadOnlyProperty() {
return 'read only';
}
-
+
public function getJsReadOnlyJsProperty() {
return 'js read only';
}
-
+
public function getObject() {
if(!$this->_object) {
$this->_object=new NewComponent;
@@ -38,19 +38,19 @@ class NewComponent extends TComponent {
}
return $this->_object;
}
-
+
public function onMyEvent($param) {
$this->raiseEvent('OnMyEvent',$this,$param);
}
-
+
public function myEventHandler($sender,$param) {
$this->_eventHandled=true;
}
-
+
public function eventReturnValue($sender,$param) {
return $param->Return;
}
-
+
public function isEventHandled() {
return $this->_eventHandled;
}
@@ -82,14 +82,14 @@ class NewComponentNoListen extends NewComponent {
class DynamicCatchingComponent extends NewComponentNoListen implements IDynamicMethods {
public function __dycall($method, $args) {
-
+
}
}
class GlobalRaiseComponent extends NewComponent implements IDynamicMethods {
private $_callorder = array();
-
+
public function getCallOrders()
{
return $this->_callorder;
@@ -128,7 +128,7 @@ class FooClassBehavior extends TClassBehavior {
class FooFooClassBehavior extends FooClassBehavior {
public function faafaaEverMore($object, $laa, $sol) {
-
+
}
}
@@ -146,7 +146,7 @@ class FooBehavior extends TBehavior {
}
}
class FooFooBehavior extends FooBehavior {
-
+
public function faafaaEverMore($laa, $sol) {
return sqrt($laa * $laa + $sol * $sol);
}
@@ -162,11 +162,11 @@ class PreBarBehavior extends TBehavior {
class BarBehavior extends PreBarBehavior implements IInstanceCheck {
private $_instanceReturn = null;
-
+
public function moreFunction($laa, $sol) {
return pow($laa+$sol+1, 2);
}
-
+
public function isinstanceof($class, $instance=null) {
return $this->_instanceReturn;
}
@@ -200,7 +200,7 @@ class BehaviorTestBehavior extends TBehavior {
public function getReadOnly() {
return true;
}
-
+
public function onBehaviorEvent($sender, $param,$responsetype=null,$postfunction=null) {
return $this->getOwner()->raiseEvent('onBehaviorEvent',$sender,$param,$responsetype,$postfunction);
}
@@ -264,40 +264,40 @@ class dy3ClassTextReplace extends dy1ClassTextReplace {
class IntraObjectExtenderBehavior extends TBehavior {
-
+
private $lastCall = null;
private $arglist = null;
-
+
public function getLastCall() {
$v = $this->lastCall;
$this->lastCall = null;
return $v;
}
-
+
public function getLastArgumentList() {
$v = $this->arglist;
$this->arglist = null;
return $v;
}
-
-
-
+
+
+
public function dyListen($fx, $chain) {
$this->lastCall = 1;
$this->arglist = func_get_args();
-
+
return $chain->dyListen($fx); // Calls the next event, within a chain
}
public function dyUnlisten($fx, $chain) {
$this->lastCall = 2;
$this->arglist = func_get_args();
-
+
return $chain->dyUnlisten($fx);
}
public function dyPreRaiseEvent($name,$sender,$param,$responsetype,$postfunction, $chain) {
$this->lastCall = 3;
$this->arglist = func_get_args();
-
+
return $chain->dyPreRaiseEvent($name);// Calls the next event, within a chain, if parameters are left off, they are filled in with
// the original parameters passed to the dynamic event. Parameters can be passed if they are changed.
}
@@ -409,7 +409,7 @@ class TDynamicClassBehavior extends TClassBehavior implements IDynamicMethods {
* @package System
*/
class TComponentTest extends PHPUnit_Framework_TestCase {
-
+
protected $component;
public function setUp() {
@@ -424,21 +424,21 @@ class TComponentTest extends PHPUnit_Framework_TestCase {
$this->component->unlisten();
$this->component = null;
}
-
-
+
+
public function testGetListeningToGlobalEvents() {
$this->assertEquals(true, $this->component->getListeningToGlobalEvents());
$this->component->unlisten();
$this->assertEquals(false, $this->component->getListeningToGlobalEvents());
}
-
-
+
+
public function testConstructorAutoListen() {
// the default object auto installs class behavior hooks
$this->assertEquals(1, $this->component->getEventHandlers('fxAttachClassBehavior')->getCount());
$this->assertEquals(1, $this->component->getEventHandlers('fxDetachClassBehavior')->getCount());
$this->assertTrue($this->component->getListeningToGlobalEvents());
-
+
// this object does not auto install class behavior hooks, thus not changing the global event structure.
// Creating a new instance should _not_ influence the fxAttachClassBehavior and fxDetachClassBehavior
// count.
@@ -447,655 +447,655 @@ class TComponentTest extends PHPUnit_Framework_TestCase {
$this->assertEquals(1, $this->component->getEventHandlers('fxDetachClassBehavior')->getCount());
$this->assertEquals(1, $component_nolisten->getEventHandlers('fxAttachClassBehavior')->getCount());
$this->assertEquals(1, $component_nolisten->getEventHandlers('fxDetachClassBehavior')->getCount());
-
- // tests order of class behaviors when a parent and class have class behavior.
+
+ // tests order of class behaviors when a parent and class have class behavior.
// The child should override the parent object-oriented programming style
$this->component->attachClassBehavior('Bar', 'BarBehavior', 'NewComponentNoListen');
$this->component->attachClassBehavior('FooBar', 'FooBarBehavior', 'NewComponent');
-
+
//create new object with new class behaviors built in, defined in the two lines above
$component = new NewComponentNoListen;
-
+
$this->assertEquals(25, $component->moreFunction(2, 2));
-
+
$this->assertEquals(25, $component->Bar->moreFunction(2, 2));
$this->assertEquals(8, $component->FooBar->moreFunction(2, 2));
-
+
$component->unlisten();// unwind object and class behaviors
$this->component->detachClassBehavior('FooBar', 'NewComponent');
$this->component->detachClassBehavior('Bar', 'NewComponentNoListen');
-
+
}
-
-
+
+
public function testListenAndUnlisten() {
-
+
$component = new NewComponentNoListen();
-
+
$this->assertEquals(false, $component->getListeningToGlobalEvents());
-
+
//This is from $this->component being instanced and listening. $component is accessing the global event structure
$this->assertEquals(1, $component->getEventHandlers('fxAttachClassBehavior')->getCount());
-
+
$this->assertEquals(2, $component->listen());
-
+
$this->assertEquals(true, $component->getListeningToGlobalEvents());
-
+
//This is from $this->component being instanced and listening. $component is accessing the global event structure
$this->assertEquals(2, $component->getEventHandlers('fxAttachClassBehavior')->getCount());
-
+
$this->assertEquals(2, $component->unlisten());
-
+
$this->assertEquals(false, $component->getListeningToGlobalEvents());
-
+
//This is from $this->component being instanced and listening. $component is accessing the global event structure
$this->assertEquals(1, $component->getEventHandlers('fxAttachClassBehavior')->getCount());
}
-
-
+
+
public function testListenAndUnlistenWithDynamicEventCatching() {
-
+
$component = new DynamicCatchingComponent();
-
+
$this->assertEquals(false, $component->getListeningToGlobalEvents());
-
+
//This is from $this->component being instanced and listening. $component is accessing the global event structure
$this->assertEquals(0, $component->getEventHandlers(TComponent::GLOBAL_RAISE_EVENT_LISTENER)->getCount());
-
+
// this adds the fxAttachClassBehavior, fxDetachClassBehavior, and __dycall of the component
$this->assertEquals(3, $component->listen());
-
+
$this->assertEquals(true, $component->getListeningToGlobalEvents());
-
+
//This is from $this->component being instanced and listening. $component is accessing the global event structure
$this->assertEquals(1, $component->getEventHandlers(TComponent::GLOBAL_RAISE_EVENT_LISTENER)->getCount());
-
+
$this->assertEquals(3, $component->unlisten());
-
+
$this->assertEquals(false, $component->getListeningToGlobalEvents());
-
+
//This is from $this->component being instanced and listening. $component is accessing the global event structure
$this->assertEquals(0, $component->getEventHandlers(TComponent::GLOBAL_RAISE_EVENT_LISTENER)->getCount());
}
-
-
-
+
+
+
//Test Class behaviors
public function testAttachClassBehavior() {
-
+
// ensure that the class is listening
$this->assertEquals(1, $this->component->getEventHandlers('fxAttachClassBehavior')->getCount());
-
+
//Test that the component is not a FooClassBehavior
$this->assertNull($this->component->asa('FooClassBehavior'), "Component is already a FooClassBehavior and should not have this behavior");
-
+
//Add the FooClassBehavior
$this->component->attachClassBehavior('FooClassBehavior', new FooClassBehavior);
-
+
//Test that the existing listening component can be a FooClassBehavior
$this->assertNotNull($this->component->asa('FooClassBehavior'), "Component is does not have the FooClassBehavior and should have this behavior");
-
+
// test if the function modifies new instances of the object
$anothercomponent = new NewComponent();
-
+
//The new component should be a FooClassBehavior
$this->assertNotNull($anothercomponent->asa('FooClassBehavior'), "anothercomponent does not have the FooClassBehavior");
-
+
// test when overwriting an existing class behavior, it should throw an TInvalidOperationException
try {
$this->component->attachClassBehavior('FooClassBehavior', new BarClassBehavior);
$this->fail('TInvalidOperationException not raised when overwriting an existing behavior');
} catch(TInvalidOperationException $e) {
}
-
-
+
+
// test when overwriting an existing class behavior, it should throw an TInvalidOperationException
try {
$this->component->attachClassBehavior('FooBarBehavior', 'FooBarBehavior', 'TComponent');
$this->fail('TInvalidOperationException not raised when trying to place a behavior on the root object TComponent');
} catch(TInvalidOperationException $e) {
}
-
-
+
+
// test if the function does not modify any existing objects that are not listening
// The FooClassBehavior is already a part of the class behaviors thus the new instance gets the behavior.
$nolistencomponent = new NewComponentNoListen();
-
+
// test if the function modifies all existing objects that are listening
// Adding a behavior to the first object, the second instance should automatically get the class behavior.
// This is because the second object is listening to the global events of class behaviors
$this->component->attachClassBehavior('BarClassBehavior', new BarClassBehavior);
$this->assertNotNull($anothercomponent->asa('BarClassBehavior'), "anothercomponent is does not have the BarClassBehavior");
-
+
// The no listen object should not have the BarClassBehavior because it was added as a class behavior after the object was instanced
$this->assertNull($nolistencomponent->asa('BarClassBehavior'), "nolistencomponent has the BarClassBehavior and should not");
-
+
// But the no listen object should have the FooClassBehavior because the class behavior was installed before the object was instanced
$this->assertNotNull($nolistencomponent->asa('FooClassBehavior'), "nolistencomponent is does not have the FooClassBehavior");
-
+
//Clear out what was done during this test
$anothercomponent->unlisten();
$this->component->detachClassBehavior('FooClassBehavior');
$this->component->detachClassBehavior('BarClassBehavior');
-
+
// Test attaching of single object behaviors as class-wide behaviors
$this->component->attachClassBehavior('BarBehaviorObject', 'BarBehavior');
$this->assertTrue($this->component->asa('BarBehaviorObject') instanceof BarBehavior);
$this->assertEquals($this->component->BarBehaviorObject->Owner, $this->component);
$this->component->detachClassBehavior('BarBehaviorObject');
}
-
-
-
-
-
+
+
+
+
+
public function testDetachClassBehavior() {
// ensure that the component is listening
$this->assertEquals(1, $this->component->getEventHandlers('fxDetachClassBehavior')->getCount());
-
+
$prenolistencomponent = new NewComponentNoListen();
-
+
//Attach a class behavior
$this->component->attachClassBehavior('FooClassBehavior', new FooClassBehavior);
-
+
//Create new components that listen and don't listen to global events
$anothercomponent = new NewComponent();
$postnolistencomponent = new NewComponentNoListen();
-
+
//ensures that all the Components are properly initialized
$this->assertEquals(2, $this->component->getEventHandlers('fxDetachClassBehavior')->getCount());
$this->assertNotNull($this->component->asa('FooClassBehavior'), "Component does not have the FooClassBehavior and should have this behavior");
$this->assertNull($prenolistencomponent->asa('FooClassBehavior'), "Component has the FooClassBehavior and should _not_ have this behavior");
$this->assertNotNull($anothercomponent->asa('FooClassBehavior'), "Component does not have the FooClassBehavior and should have this behavior");
$this->assertNotNull($postnolistencomponent->asa('FooClassBehavior'), "Component does not have the FooClassBehavior and should have this behavior");
-
-
+
+
$this->component->detachClassBehavior('FooClassBehavior');
-
+
$this->assertNull($this->component->asa('FooClassBehavior'), "Component has the FooClassBehavior and should _not_ have this behavior");
$this->assertNull($prenolistencomponent->asa('FooClassBehavior'), "Component has the FooClassBehavior and should _not_ have this behavior");
$this->assertNull($anothercomponent->asa('FooClassBehavior'), "Component has the FooClassBehavior and should _not_ have this behavior");
$this->assertNotNull($postnolistencomponent->asa('FooClassBehavior'), "Component does not have the FooClassBehavior and should have this behavior");
-
-
+
+
//tear down function variables
$anothercomponent->unlisten();
}
-
+
public function testGetClassHierarchy() {
$component = new DynamicCatchingComponent;
$this->assertEquals(array('TComponent', 'NewComponent', 'NewComponentNoListen', 'DynamicCatchingComponent'), $component->getClassHierarchy());
$this->assertEquals(array('TComponent', 'NewComponent', 'NewComponentNoListen', 'DynamicCatchingComponent'), $component->getClassHierarchy(false));
$this->assertEquals(array('tcomponent', 'newcomponent', 'newcomponentnolisten', 'dynamiccatchingcomponent'), $component->getClassHierarchy(true));
}
-
-
+
+
public function testAsA() {
$anothercomponent = new NewComponent();
-
+
// ensure the component does not have the FooClassBehavior
$this->assertNull($this->component->asa('FooClassBehavior'));
$this->assertNull($this->component->asa('FooFooClassBehavior'));
$this->assertNull($this->component->asa('BarClassBehavior'));
$this->assertNull($this->component->asa('NonExistantClassBehavior'));
-
+
$this->assertNull($anothercomponent->asa('FooClassBehavior'));
$this->assertNull($anothercomponent->asa('FooFooClassBehavior'));
$this->assertNull($anothercomponent->asa('BarClassBehavior'));
$this->assertNull($anothercomponent->asa('NonExistantClassBehavior'));
-
+
// add the class behavior
$this->component->attachClassBehavior('FooClassBehavior', new FooClassBehavior);
-
+
//Check that the component has only the class behavior assigned
$this->assertNotNull($this->component->asa('FooClassBehavior'));
$this->assertNull($this->component->asa('FooFooClassBehavior'));
$this->assertNull($this->component->asa('BarClassBehavior'));
$this->assertNull($this->component->asa('NonExistantClassBehavior'));
-
+
//Check that the component has only the class behavior assigned
$this->assertNotNull($anothercomponent->asa('FooClassBehavior'));
$this->assertNull($anothercomponent->asa('FooFooClassBehavior'));
$this->assertNull($anothercomponent->asa('BarClassBehavior'));
$this->assertNull($anothercomponent->asa('NonExistantClassBehavior'));
-
+
// remove the class behavior
$this->component->detachClassBehavior('FooClassBehavior');
-
+
// Check the function doesn't have the behavior any more
$this->assertNull($this->component->asa('FooClassBehavior'));
$this->assertNull($this->component->asa('FooFooClassBehavior'));
$this->assertNull($this->component->asa('BarClassBehavior'));
$this->assertNull($this->component->asa('NonExistantClassBehavior'));
-
+
$this->assertNull($anothercomponent->asa('FooClassBehavior'));
$this->assertNull($anothercomponent->asa('FooFooClassBehavior'));
$this->assertNull($anothercomponent->asa('BarClassBehavior'));
$this->assertNull($anothercomponent->asa('NonExistantClassBehavior'));
-
-
-
-
+
+
+
+
$this->component->attachBehavior('BarBehavior', new BarBehavior);
-
+
//Check that the component has only the object behavior assigned
$this->assertNull($this->component->asa('FooBehavior'));
$this->assertNull($this->component->asa('FooFooBehavior'));
$this->assertNotNull($this->component->asa('BarBehavior'));
$this->assertNull($this->component->asa('NonExistantBehavior'));
-
+
//Check that the component has the behavior assigned
$this->assertNull($anothercomponent->asa('FooBehavior'));
$this->assertNull($anothercomponent->asa('FooFooBehavior'));
$this->assertNull($anothercomponent->asa('BarBehavior'));
$this->assertNull($anothercomponent->asa('NonExistantBehavior'));
-
+
$this->component->detachBehavior('BarBehavior');
-
+
//Check that the component has no object behaviors assigned
$this->assertNull($this->component->asa('FooBehavior'));
$this->assertNull($this->component->asa('FooFooBehavior'));
$this->assertNull($this->component->asa('BarBehavior'));
$this->assertNull($this->component->asa('NonExistantBehavior'));
-
+
//Check that the component has no behavior assigned
$this->assertNull($anothercomponent->asa('FooBehavior'));
$this->assertNull($anothercomponent->asa('FooFooBehavior'));
$this->assertNull($anothercomponent->asa('BarBehavior'));
$this->assertNull($anothercomponent->asa('NonExistantBehavior'));
-
+
$anothercomponent->unlisten();
}
-
+
public function testIsA() {
//This doesn't check the IInstanceCheck functionality, separate function
-
+
$this->assertTrue($this->component->isa('TComponent'));
$this->assertTrue($this->component->isa('NewComponent'));
$this->assertFalse($this->component->isa(new FooBehavior));
$this->assertFalse($this->component->isa('FooBehavior'));
-
+
//Ensure there is no BarBehavior
$this->assertNull($this->component->asa('FooFooBehavior'));
-
+
$this->assertFalse($this->component->isa('FooBehavior'));
$this->assertFalse($this->component->isa('FooFooBehavior'));
-
+
$this->component->attachBehavior('FooFooBehavior', new FooFooBehavior);
-
+
$this->assertNotNull($this->component->asa('FooFooBehavior'));
-
+
$this->assertTrue($this->component->isa('FooBehavior'));
$this->assertTrue($this->component->isa('FooFooBehavior'));
-
+
$this->component->disableBehaviors();
// It still has the behavior
$this->assertNotNull($this->component->asa('FooFooBehavior'));
-
+
// But it is not expressed
$this->assertFalse($this->component->isa('FooBehavior'));
$this->assertFalse($this->component->isa('FooFooBehavior'));
-
+
$this->component->enableBehaviors();
$this->assertNotNull($this->component->asa('FooFooBehavior'));
-
+
$this->assertTrue($this->component->isa('FooFooBehavior'));
-
-
-
+
+
+
$this->component->attachBehavior('FooBarBehavior', new FooBarBehavior);
-
+
$this->assertTrue($this->component->isa('FooBehavior'));
$this->assertTrue($this->component->isa('FooBarBehavior'));
-
+
$this->component->disableBehavior('FooBarBehavior');
-
+
$this->assertTrue($this->component->isa('FooBehavior'));
$this->assertFalse($this->component->isa('FooBarBehavior'));
-
+
$this->component->enableBehavior('FooBarBehavior');
$this->component->disableBehavior('FooFooBehavior');
$this->assertFalse($this->component->isa('FooBehavior'));
$this->assertFalse($this->component->isa('FooFooBehavior'));
$this->assertTrue($this->component->isa('FooBarBehavior'));
-
+
$this->component->disableBehavior('FooBarBehavior');
$this->component->disableBehavior('FooFooBehavior');
-
+
$this->assertFalse($this->component->isa('FooBehavior'));
$this->assertFalse($this->component->isa('FooFooBehavior'));
$this->assertFalse($this->component->isa('FooBarBehavior'));
-
+
$this->component->enableBehavior('FooBarBehavior');
$this->component->enableBehavior('FooFooBehavior');
-
+
$this->assertTrue($this->component->isa('FooFooBehavior'));
$this->assertTrue($this->component->isa('FooBarBehavior'));
-
-
+
+
$this->component->detachBehavior('FooFooBehavior');
$this->component->detachBehavior('FooBarBehavior');
-
+
$this->assertFalse($this->component->isa(new FooBehavior));
$this->assertFalse($this->component->isa('FooBehavior'));
$this->assertFalse($this->component->isa(new FooFooBehavior));
$this->assertFalse($this->component->isa('FooFooBehavior'));
$this->assertFalse($this->component->isa(new FooBarBehavior));
$this->assertFalse($this->component->isa('FooBarBehavior'));
-
+
}
-
+
public function testIsA_with_IInstanceCheck() {
-
+
$this->assertTrue($this->component->isa('NewComponent'));
$this->assertFalse($this->component->isa('PreBarBehavior'));
-
+
$this->component->attachBehavior('BarBehavior', $behavior = new BarBehavior);
-
+
$behavior->setInstanceReturn(null);
-
+
$this->assertTrue($this->component->isa('NewComponent'));
$this->assertTrue($this->component->isa('PreBarBehavior'));
$this->assertFalse($this->component->isa('FooBehavior'));
-
+
// This forces the iso on the BarBehavior to respond to any class with false
$behavior->setInstanceReturn(false);
$this->assertFalse($this->component->isa('PreBarBehavior'));
$this->assertFalse($this->component->isa('FooBehavior'));
-
+
//This forces the isa on the BarBehavior to respond to any class with true
$behavior->setInstanceReturn(true);
$this->assertTrue($this->component->isa('FooBehavior'));
-
-
+
+
}
-
+
public function testAttachDetachBehavior() {
-
+
try {
$this->component->faaEverMore(true, true);
$this->fail('TApplicationException not raised trying to execute a undefined class method');
} catch(TApplicationException $e) {}
-
+
$this->assertNull($this->component->asa('FooBehavior'));
$this->assertFalse($this->component->isa('FooBehavior'));
$this->assertNull($this->component->asa('BarBehavior'));
$this->assertFalse($this->component->isa('BarBehavior'));
-
+
try {
$this->component->attachBehavior('FooBehavior', new TComponent);
$this->fail('TApplicationException not raised trying to execute a undefined class method');
} catch(TInvalidDataTypeException $e) {}
-
+
$this->component->attachBehavior('FooBehavior', new FooBehavior);
-
+
$this->assertNotNull($this->component->asa('FooBehavior'));
$this->assertTrue($this->component->isa('FooBehavior'));
$this->assertNull($this->component->asa('BarBehavior'));
$this->assertFalse($this->component->isa('BarBehavior'));
-
+
try {
$this->assertTrue($this->component->faaEverMore(true, true));
} catch(TApplicationException $e) {
$this->fail('TApplicationException raised while trying to execute a behavior class method');
}
-
+
try {
$this->component->noMethodHere(true);
$this->fail('TApplicationException not raised trying to execute a undefined class method');
} catch(TApplicationException $e) {}
-
+
$this->assertTrue($this->component->disableBehavior('FooBehavior'));
-
+
//BarBehavior is not a behavior at this time
$this->assertNull($this->component->disableBehavior('BarBehavior'));
-
+
try {
$this->component->faaEverMore(true, true);
$this->fail('TApplicationException not raised trying to execute a undefined class method');
} catch(TApplicationException $e) {}
-
+
$this->assertTrue($this->component->enableBehavior('FooBehavior'));
-
+
//BarBehavior is not a behavior at this time
$this->assertNull($this->component->enableBehavior('BarBehavior'));
-
+
try {
$this->assertTrue($this->component->faaEverMore(true, true));
} catch(TApplicationException $e) {
$this->fail('TApplicationException raised while trying to execute a behavior class method');
}
-
+
$this->component->detachBehavior('FooBehavior');
-
+
$this->assertNull($this->component->asa('FooBehavior'));
$this->assertFalse($this->component->isa('FooBehavior'));
$this->assertNull($this->component->asa('BarBehavior'));
$this->assertFalse($this->component->isa('BarBehavior'));
-
+
}
-
+
public function testAttachDetachBehaviors() {
$this->assertNull($this->component->asa('FooBehavior'));
$this->assertNull($this->component->asa('BarBehavior'));
$this->assertNull($this->component->asa('FooBarBehavior'));
$this->assertNull($this->component->asa('PreBarBehavior'));
-
+
$this->component->attachBehaviors(array('FooFooBehavior' => new FooFooBehavior, 'BarBehavior' => new BarBehavior, 'PreBarBehavior' => new PreBarBehavior));
-
+
$this->assertNull($this->component->asa('FooBehavior'));
$this->assertNotNull($this->component->asa('FooFooBehavior'));
$this->assertNotNull($this->component->asa('BarBehavior'));
$this->assertNull($this->component->asa('FooBarBehavior'));
$this->assertNotNull($this->component->asa('PreBarBehavior'));
-
+
$this->assertTrue($this->component->isa('FooFooBehavior'));
$this->assertTrue($this->component->isa('FooBehavior'));
$this->assertTrue($this->component->isa('BarBehavior'));
$this->assertTrue($this->component->isa('PreBarBehavior'));
$this->assertFalse($this->component->isa('FooBarBehavior'));
-
+
$this->component->detachBehaviors(array('FooFooBehavior' => new FooFooBehavior, 'BarBehavior' => new BarBehavior));
-
+
$this->assertNull($this->component->asa('FooBehavior'));
$this->assertNull($this->component->asa('FooFooBehavior'));
$this->assertNull($this->component->asa('BarBehavior'));
$this->assertNull($this->component->asa('FooBarBehavior'));
$this->assertNotNull($this->component->asa('PreBarBehavior'));
-
+
$this->assertFalse($this->component->isa('FooFooBehavior'));
$this->assertFalse($this->component->isa('FooBehavior'));
$this->assertFalse($this->component->isa('BarBehavior'));
$this->assertFalse($this->component->isa('FooBarBehavior'));
$this->assertTrue($this->component->isa('PreBarBehavior'));
-
-
-
+
+
+
// testing if we can detachBehaviors just by the name of the behavior instead of an array of the behavior
$this->component->attachBehaviors(array('FooFooBehavior' => new FooFooBehavior, 'BarBehavior' => new BarBehavior));
-
+
$this->assertTrue($this->component->isa('FooBehavior'));
$this->assertTrue($this->component->isa('BarBehavior'));
-
+
$this->component->detachBehaviors(array('FooFooBehavior', 'BarBehavior'));
-
+
$this->assertNull($this->component->asa('FooBehavior'));
$this->assertNull($this->component->asa('FooFooBehavior'));
$this->assertNull($this->component->asa('BarBehavior'));
$this->assertNull($this->component->asa('FooBarBehavior'));
-
+
$this->assertFalse($this->component->isa('FooFooBehavior'));
$this->assertFalse($this->component->isa('FooBehavior'));
$this->assertFalse($this->component->isa('BarBehavior'));
$this->assertFalse($this->component->isa('FooBarBehavior'));
}
-
-
+
+
public function testClearBehaviors() {
-
+
$this->assertNull($this->component->asa('FooBehavior'));
$this->assertNull($this->component->asa('BarBehavior'));
$this->assertNull($this->component->asa('FooBarBehavior'));
$this->assertNull($this->component->asa('PreBarBehavior'));
-
+
$this->component->attachBehaviors(array('FooFooBehavior' => new FooFooBehavior, 'BarBehavior' => new BarBehavior, 'PreBarBehavior' => new PreBarBehavior));
-
+
$this->assertNull($this->component->asa('FooBehavior'));
$this->assertNotNull($this->component->asa('FooFooBehavior'));
$this->assertNotNull($this->component->asa('BarBehavior'));
$this->assertNull($this->component->asa('FooBarBehavior'));
$this->assertNotNull($this->component->asa('PreBarBehavior'));
-
+
$this->component->clearBehaviors();
-
+
$this->assertNull($this->component->asa('FooBehavior'));
$this->assertNull($this->component->asa('BarBehavior'));
$this->assertNull($this->component->asa('FooBarBehavior'));
$this->assertNull($this->component->asa('PreBarBehavior'));
}
-
+
public function testEnableDisableBehavior() {
-
+
$this->assertNull($this->component->enableBehavior('FooBehavior'));
$this->assertNull($this->component->disableBehavior('FooBehavior'));
-
+
try {
$this->component->faaEverMore(true, true);
$this->fail('TApplicationException not raised trying to execute a undefined class method');
} catch(TApplicationException $e) {}
-
+
$this->component->attachBehavior('FooBehavior', new FooBehavior);
-
+
$this->assertTrue($this->component->isa('FooBehavior'));
try {
$this->assertTrue($this->component->faaEverMore(true, true));
} catch(TApplicationException $e) {
$this->fail('TApplicationException raised while trying to execute a behavior class method');
}
-
+
$this->assertTrue($this->component->disableBehavior('FooBehavior'));
-
+
$this->assertFalse($this->component->isa('FooBehavior'));
-
+
try {
$this->component->faaEverMore(true, true);
$this->fail('TApplicationException not raised trying to execute a undefined class method');
} catch(TApplicationException $e) {}
-
+
$this->assertTrue($this->component->enableBehavior('FooBehavior'));
-
+
$this->assertTrue($this->component->isa('FooBehavior'));
try {
$this->assertTrue($this->component->faaEverMore(true, true));
} catch(TApplicationException $e) {
$this->fail('TApplicationException raised while trying to execute a behavior class method');
}
-
-
-
+
+
+
$this->assertNull($this->component->enableBehavior('BarClassBehavior'));
$this->assertNull($this->component->disableBehavior('BarClassBehavior'));
-
+
try {
$this->component->moreFunction(true, true);
$this->fail('TApplicationException not raised trying to execute an undefined class method');
} catch(TApplicationException $e) {}
-
+
$this->component->attachClassBehavior('BarClassBehavior', new BarClassBehavior);
-
+
$this->assertFalse($this->component->enableBehavior('BarClassBehavior'));
$this->assertFalse($this->component->disableBehavior('BarClassBehavior'));
-
+
try {
$this->assertTrue($this->component->moreFunction(true, true));
} catch(TApplicationException $e) {
$this->fail('TApplicationException raised while trying to execute a behavior class method');
}
-
+
$this->component->detachClassBehavior('BarClassBehavior');
}
-
-
+
+
public function testBehaviorFunctionCalls() {
-
+
$this->component->attachBehavior('FooBarBehavior', $behavior = new FooBarBehavior);
$this->component->attachClassBehavior('FooClassBehavior', $classbehavior = new FooClassBehavior);
-
+
// Test the Class Methods
$this->assertEquals(12, $this->component->faaEverMore(3, 4));
-
+
// Check that the called object is shifted in front of the array of a class behavior call
$this->assertEquals($this->component, $this->component->getLastClassObject());
-
-
+
+
//Test the FooBarBehavior
$this->assertEquals(27, $this->component->moreFunction(3, 3));
-
+
$this->assertTrue($this->component->disableBehavior('FooBarBehavior'));
try {
$this->assertNull($this->component->moreFunction(3, 4));
$this->fail('TApplicationException not raised trying to execute a disabled behavior');
} catch(TApplicationException $e) {}
$this->assertTrue($this->component->enableBehavior('FooBarBehavior'));
-
+
// Test the global event space, this should work and return false because no function implements these methods
$this->assertNull($this->component->fxSomeUndefinedGlobalEvent());
$this->assertNull($this->component->dySomeUndefinedIntraObjectEvent());
-
+
$this->component->detachClassBehavior('FooClassBehavior');
-
-
-
+
+
+
// test object instance behaviors implemented through class-wide behaviors
$this->component->attachClassBehavior('FooFooBehaviorAsClass', 'FooFooBehavior');
-
+
$component = new NewComponent;
-
+
$this->assertEquals(5, $this->component->faafaaEverMore(3, 4));
$this->assertEquals(10, $component->faafaaEverMore(6, 8));
-
+
$this->component->detachClassBehavior('FooFooBehaviorAsClass');
$component->unlisten();
$component = null;
-
+
try {
$this->component->faafaaEverMore(3, 4);
$this->fail('TApplicationException not raised trying to execute a disabled behavior');
} catch(TApplicationException $e) {}
-
-
-
+
+
+
// make a call to an unpatched fx and dy call so that it's passed through to the __dycall function
$dynamicComponent = new DynamicCallComponent;
-
+
$this->assertNull($dynamicComponent->fxUndefinedEvent());
$this->assertNull($dynamicComponent->dyUndefinedEvent());
-
+
//This tests the dynamic __dycall function
$this->assertEquals(1024, $dynamicComponent->dyPowerFunction(2, 10));
$this->assertEquals(5, $dynamicComponent->dyDivisionFunction(10, 2));
-
+
$this->assertEquals(2048, $dynamicComponent->fxPowerFunction(2, 10));
$this->assertEquals(10, $dynamicComponent->fxDivisionFunction(10, 2));
-
+
$dynamicComponent->unlisten();
-
+
}
-
+
public function testHasProperty() {
$this->assertTrue($this->component->hasProperty('Text'), "Component hasn't property Text");
$this->assertTrue($this->component->hasProperty('text'), "Component hasn't property text");
$this->assertFalse($this->component->hasProperty('Caption'), "Component has property Caption");
-
+
$this->assertTrue($this->component->hasProperty('ColorAttribute'), "Component hasn't property JsColorAttribute");
$this->assertTrue($this->component->hasProperty('colorattribute'), "Component hasn't property JsColorAttribute");
$this->assertFalse($this->component->canGetProperty('PastelAttribute'), "Component has property JsPastelAttribute");
-
+
$this->assertTrue($this->component->hasProperty('JSColorAttribute'), "Component hasn't property JsColorAttribute");
$this->assertTrue($this->component->hasProperty('jscolorattribute'), "Component hasn't property JsColorAttribute");
$this->assertFalse($this->component->hasProperty('jsPastelAttribute'), "Component has property JsPastelAttribute");
-
+
$this->assertFalse($this->component->hasProperty('Excitement'), "Component has property Excitement");
$this->component->attachBehavior('ExcitementPropBehavior', new BehaviorTestBehavior);
$this->assertTrue($this->component->hasProperty('Excitement'), "Component hasn't property Excitement");
@@ -1107,27 +1107,27 @@ class TComponentTest extends PHPUnit_Framework_TestCase {
$this->assertFalse($this->component->hasProperty('Excitement'), "Component has property Excitement");
$this->component->enableBehavior('ExcitementPropBehavior');
$this->assertTrue($this->component->hasProperty('Excitement'), "Component hasn't property Excitement");
-
+
$this->component->detachBehavior('ExcitementPropBehavior');
-
+
$this->assertFalse($this->component->hasProperty('Excitement'), "Component has property Excitement");
-
+
}
public function testCanGetProperty() {
$this->assertTrue($this->component->canGetProperty('Text'));
$this->assertTrue($this->component->canGetProperty('text'));
$this->assertFalse($this->component->canGetProperty('Caption'));
-
+
$this->assertTrue($this->component->canGetProperty('ColorAttribute'));
$this->assertTrue($this->component->canGetProperty('colorattribute'));
$this->assertFalse($this->component->canGetProperty('PastelAttribute'));
-
+
$this->assertTrue($this->component->canGetProperty('JSColorAttribute'));
$this->assertTrue($this->component->canGetProperty('jscolorattribute'));
$this->assertFalse($this->component->canGetProperty('jsPastelAttribute'));
-
-
+
+
$this->assertFalse($this->component->canGetProperty('Excitement'), "Component has property Excitement");
$this->component->attachBehavior('ExcitementPropBehavior', new BehaviorTestBehavior);
$this->assertTrue($this->component->canGetProperty('Excitement'), "Component hasn't property Excitement");
@@ -1139,9 +1139,9 @@ class TComponentTest extends PHPUnit_Framework_TestCase {
$this->assertFalse($this->component->canGetProperty('Excitement'), "Component has property Excitement");
$this->component->enableBehavior('ExcitementPropBehavior');
$this->assertTrue($this->component->canGetProperty('Excitement'), "Component hasn't property Excitement");
-
+
$this->component->detachBehavior('ExcitementPropBehavior');
-
+
$this->assertFalse($this->component->canGetProperty('Excitement'), "Component has property Excitement");
}
@@ -1149,15 +1149,15 @@ class TComponentTest extends PHPUnit_Framework_TestCase {
$this->assertTrue($this->component->canSetProperty('Text'));
$this->assertTrue($this->component->canSetProperty('text'));
$this->assertFalse($this->component->canSetProperty('Caption'));
-
+
$this->assertTrue($this->component->canSetProperty('ColorAttribute'));
$this->assertTrue($this->component->canSetProperty('colorattribute'));
$this->assertFalse($this->component->canSetProperty('PastelAttribute'));
-
+
$this->assertTrue($this->component->canSetProperty('JSColorAttribute'));
$this->assertTrue($this->component->canSetProperty('jscolorattribute'));
$this->assertFalse($this->component->canSetProperty('jsPastelAttribute'));
-
+
$this->assertFalse($this->component->canSetProperty('Excitement'), "Component has property Excitement");
$this->component->attachBehavior('ExcitementPropBehavior', new BehaviorTestBehavior);
$this->assertTrue($this->component->canSetProperty('Excitement'), "Component hasn't property Excitement");
@@ -1169,7 +1169,7 @@ class TComponentTest extends PHPUnit_Framework_TestCase {
$this->assertFalse($this->component->canSetProperty('Excitement'), "Component has property Excitement");
$this->component->enableBehavior('ExcitementPropBehavior');
$this->assertTrue($this->component->canSetProperty('Excitement'), "Component hasn't property Excitement");
-
+
$this->component->detachBehavior('ExcitementPropBehavior');
}
@@ -1180,55 +1180,55 @@ class TComponentTest extends PHPUnit_Framework_TestCase {
$this->fail('exception not raised when getting undefined property');
} catch(TInvalidOperationException $e) {
}
-
+
$this->assertTrue($this->component->OnMyEvent instanceof TPriorityList);
try {
$value2=$this->component->onUndefinedEvent;
$this->fail('exception not raised when getting undefined property');
} catch(TInvalidOperationException $e) {
}
-
- //Without the function parenthesis, the function is _not_ called but the __get
+
+ //Without the function parenthesis, the function is _not_ called but the __get
// method is called and the global events (list) are accessed
$this->assertTrue($this->component->fxAttachClassBehavior instanceof TPriorityList);
$this->assertTrue($this->component->fxDetachClassBehavior instanceof TPriorityList);
-
+
// even undefined global events have a list as every object is able to access every event
$this->assertTrue($this->component->fxUndefinedEvent instanceof TPriorityList);
-
-
+
+
// Test the behaviors within the __get function
$this->component->enableBehaviors();
-
+
try {
$value2=$this->component->Excitement;
$this->fail('exception not raised when getting undefined property');
} catch(TInvalidOperationException $e) {
}
-
+
$this->component->attachBehavior('BehaviorTestBehavior', $behavior = new BehaviorTestBehavior);
$this->assertEquals('faa', $this->component->Excitement);
-
+
$this->component->disableBehaviors();
-
+
try {
$this->assertEquals('faa', $this->component->Excitement);
$this->fail('exception not raised when getting undefined property');
} catch(TInvalidOperationException $e) {
}
-
+
$this->component->enableBehaviors();
$this->assertEquals('faa', $this->component->getExcitement());
-
+
$this->component->disableBehavior('BehaviorTestBehavior');
-
+
$this->assertEquals($behavior, $this->component->BehaviorTestBehavior);
try {
$behavior = $this->component->BehaviorTestBehavior2;
$this->fail('exception not raised when getting undefined property');
} catch(TInvalidOperationException $e) {
}
-
+
try {
$this->assertEquals('faa', $this->component->Excitement);
$this->fail('exception not raised when getting undefined property');
@@ -1236,13 +1236,13 @@ class TComponentTest extends PHPUnit_Framework_TestCase {
}
$this->component->enableBehavior('BehaviorTestBehavior');
$this->assertEquals('faa', $this->component->getExcitement());
-
-
+
+
// behaviors allow on and fx events to be passed through.
$this->assertTrue($this->component->onBehaviorEvent instanceof TPriorityList);
-
+
}
-
+
public function testSetProperty() {
$value='new value';
$this->component->Text=$value;
@@ -1253,64 +1253,64 @@ class TComponentTest extends PHPUnit_Framework_TestCase {
$this->fail('exception not raised when setting undefined property');
} catch(TInvalidOperationException $e) {
}
-
+
// Test get only properties is a set function
try {
$this->component->ReadOnlyProperty = 'setting read only';
$this->fail('a property without a set function was set to a new value without error');
} catch(TInvalidOperationException $e) {
}
-
+
try {
$this->component->ReadOnlyJsProperty = 'jssetting read only';
$this->fail('a js property without a set function was set to a new value without error');
} catch(TInvalidOperationException $e) {
}
-
+
try {
$this->component->JsReadOnlyJsProperty = 'jssetting read only';
$this->fail('a js property without a set function was set to a new value without error');
} catch(TInvalidOperationException $e) {
}
-
+
$this->assertEquals(0, $this->component->getEventHandlers('onMyEvent')->getCount());
$this->component->onMyEvent = array($this->component,'myEventHandler');
$this->assertEquals(1, $this->component->getEventHandlers('onMyEvent')->getCount());
$this->component->onMyEvent[] = array($this->component,'Object.myEventHandler');
$this->assertEquals(2, $this->component->getEventHandlers('onMyEvent')->getCount());
-
+
$this->component->getEventHandlers('onMyEvent')->clear();
-
+
// Test the behaviors within the __get function
$this->component->enableBehaviors();
-
+
try {
$this->component->Excitement = 'laa';
$this->fail('exception not raised when getting undefined property');
} catch(TInvalidOperationException $e) {
}
-
+
$this->component->attachBehavior('BehaviorTestBehavior', $behavior1 = new BehaviorTestBehavior);
$this->component->Excitement = 'laa';
$this->assertEquals('laa', $this->component->Excitement);
$this->assertEquals('sol', $this->component->Excitement = 'sol');
-
-
+
+
$this->component->disableBehaviors();
-
+
try {
$this->component->Excitement = false;
$this->assertEquals(false, $this->component->Excitement);
$this->fail('exception not raised when getting undefined property');
} catch(TInvalidOperationException $e) {
}
-
+
$this->component->enableBehaviors();
$this->component->Excitement = 'faa';
$this->assertEquals('faa', $this->component->getExcitement());
-
+
$this->component->disableBehavior('BehaviorTestBehavior');
-
+
try {
$this->component->Excitement = false;
$this->assertEquals(false, $this->component->Excitement);
@@ -1320,82 +1320,82 @@ class TComponentTest extends PHPUnit_Framework_TestCase {
$this->component->enableBehavior('BehaviorTestBehavior');
$this->component->Excitement = 'sol';
$this->assertEquals('sol', $this->component->Excitement);
-
-
+
+
$this->component->attachBehavior('BehaviorTestBehavior2', $behavior2 = new BehaviorTestBehavior);
-
+
$this->assertEquals('sol', $this->component->Excitement);
$this->assertEquals('faa', $behavior2->Excitement);
-
+
// this sets Excitement for both because they are not uniquely named
$this->component->Excitement = 'befaad';
-
+
$this->assertEquals('befaad', $this->component->Excitement);
$this->assertEquals('befaad', $behavior1->Excitement);
$this->assertEquals('befaad', $behavior2->Excitement);
-
-
+
+
$this->component->detachBehavior('BehaviorTestBehavior2');
-
+
// behaviors allow on and fx events to be passed through.
$this->assertTrue($this->component->BehaviorTestBehavior->onBehaviorEvent instanceof TPriorityList);
-
+
$this->assertEquals(0, $this->component->BehaviorTestBehavior->getEventHandlers('onBehaviorEvent')->getCount());
$this->component->onBehaviorEvent = array($this->component,'myEventHandler');
$this->assertEquals(1, $this->component->BehaviorTestBehavior->getEventHandlers('onBehaviorEvent')->getCount());
$this->component->onBehaviorEvent[] = array($this->component,'Object.myEventHandler');
$this->assertEquals(2, $this->component->BehaviorTestBehavior->getEventHandlers('onBehaviorEvent')->getCount());
-
+
$this->component->BehaviorTestBehavior->getEventHandlers('onBehaviorEvent')->clear();
}
-
-
+
+
public function testIsSetFunction() {
$this->assertTrue(isset($this->component->fxAttachClassBehavior));
$this->component->unlisten();
-
+
$this->assertFalse(isset($this->component->onMyEvent));
$this->assertFalse(isset($this->component->undefinedEvent));
$this->assertFalse(isset($this->component->fxAttachClassBehavior));
-
+
$this->assertFalse(isset($this->component->BehaviorTestBehavior));
$this->assertFalse(isset($this->component->onBehaviorEvent));
-
+
$this->component->attachBehavior('BehaviorTestBehavior', new BehaviorTestBehavior);
-
+
$this->assertTrue(isset($this->component->BehaviorTestBehavior));
$this->assertFalse(isset($this->component->onBehaviorEvent));
-
+
$this->component->attachEventHandler('onBehaviorEvent','foo');
$this->assertTrue(isset($this->component->onBehaviorEvent));
-
+
$this->component->attachEventHandler('onMyEvent','foo');
$this->assertTrue(isset($this->component->onMyEvent));
-
+
$this->assertTrue(isset($this->component->Excitement));
$this->component->Excitement = null;
$this->assertFalse(isset($this->component->Excitement));
$this->assertFalse(isset($this->component->UndefinedBehaviorProperty));
-
-
+
+
}
-
-
+
+
public function testUnsetFunction() {
-
+
$this->assertEquals('default', $this->component->getText());
unset($this->component->Text);
$this->assertNull($this->component->getText());
-
+
unset($this->component->UndefinedProperty);
-
+
// object events
$this->assertEquals(0, $this->component->onMyEvent->Count);
$this->component->attachEventHandler('onMyEvent','foo');
$this->assertEquals(1, $this->component->onMyEvent->Count);
unset($this->component->onMyEvent);
$this->assertEquals(0, $this->component->onMyEvent->Count);
-
+
//global events
$this->assertEquals(1, $this->component->fxAttachClassBehavior->Count);
$component = new NewComponent();
@@ -1404,22 +1404,22 @@ class TComponentTest extends PHPUnit_Framework_TestCase {
// retain the other object event
$this->assertEquals(1, $this->component->fxAttachClassBehavior->Count);
$component->unlisten();
-
+
try {
unset($this->component->Object);
$this->fail('TInvalidOperationException not raised when unsetting get only property');
} catch(TInvalidOperationException $e) {}
-
+
$this->component->attachBehavior('BehaviorTestBehavior', new BehaviorTestBehavior);
$this->assertTrue($this->component->asa('BehaviorTestBehavior') instanceof BehaviorTestBehavior);
$this->assertFalse($this->component->asa('BehaviorTestBehavior2') instanceof BehaviorTestBehavior);
-
+
$this->assertEquals('faa', $this->component->Excitement);
unset($this->component->Excitement);
$this->assertNull($this->component->Excitement);
$this->component->Excitement = 'sol';
$this->assertEquals('sol', $this->component->Excitement);
-
+
// Test the disabling of unset within behaviors
$this->component->disableBehaviors();
unset($this->component->Excitement);
@@ -1430,60 +1430,60 @@ class TComponentTest extends PHPUnit_Framework_TestCase {
unset($this->component->Excitement);
$this->component->enableBehavior('BehaviorTestBehavior');
$this->assertEquals('sol', $this->component->Excitement);
-
+
unset($this->component->Excitement);
$this->assertNull($this->component->Excitement);
-
+
try {
unset($this->component->ReadOnly);
$this->fail('TInvalidOperationException not raised when unsetting get only property');
} catch(TInvalidOperationException $e) {}
-
+
$this->component->onBehaviorEvent = 'foo';
$this->assertEquals(1, count($this->component->onBehaviorEvent));
$this->assertEquals(1, count($this->component->BehaviorTestBehavior->onBehaviorEvent));
unset($this->component->onBehaviorEvent);
$this->assertEquals(0, count($this->component->onBehaviorEvent));
$this->assertEquals(0, count($this->component->BehaviorTestBehavior->onBehaviorEvent));
-
+
// Remove behavior via unset
unset($this->component->BehaviorTestBehavior);
$this->assertFalse($this->component->asa('BehaviorTestBehavior') instanceof BehaviorTestBehavior);
-
+
}
public function testGetSubProperty() {
$this->assertTrue('object text'===$this->component->getSubProperty('Object.Text'));
}
-
+
public function testSetSubProperty() {
$this->component->setSubProperty('Object.Text','new object text');
$this->assertEquals('new object text',$this->component->getSubProperty('Object.Text'));
}
-
+
public function testHasEvent() {
$this->assertTrue($this->component->hasEvent('OnMyEvent'));
$this->assertTrue($this->component->hasEvent('onmyevent'));
$this->assertFalse($this->component->hasEvent('onYourEvent'));
-
+
// fx won't throw an error if any of these fx function are called on an object.
// It is a special prefix event designation that every object responds to all events.
$this->assertTrue($this->component->hasEvent('fxAttachClassBehavior'));
$this->assertTrue($this->component->hasEvent('fxattachclassbehavior'));
-
+
$this->assertTrue($this->component->hasEvent('fxNonExistantGlobalEvent'));
$this->assertTrue($this->component->hasEvent('fxnonexistantglobalevent'));
-
+
$this->assertTrue($this->component->hasEvent('dyNonExistantLocalEvent'));
$this->assertTrue($this->component->hasEvent('fxnonexistantlocalevent'));
-
-
+
+
//Test behavior events
$this->assertFalse($this->component->hasEvent('onBehaviorEvent'));
$this->component->attachBehavior('BehaviorTestBehavior', new BehaviorTestBehavior);
$this->assertTrue($this->component->hasEvent('onBehaviorEvent'));
$this->assertTrue($this->component->BehaviorTestBehavior->hasEvent('onBehaviorEvent'));
-
+
$this->component->disableBehavior('BehaviorTestBehavior');
$this->assertFalse($this->component->hasEvent('onBehaviorEvent'));
$this->component->enableBehavior('BehaviorTestBehavior');
@@ -1494,20 +1494,20 @@ class TComponentTest extends PHPUnit_Framework_TestCase {
$this->assertFalse($this->component->hasEventHandler('OnMyEvent'));
$this->component->attachEventHandler('OnMyEvent','foo');
$this->assertTrue($this->component->hasEventHandler('OnMyEvent'));
-
+
$this->assertFalse($this->component->hasEventHandler('fxNonExistantGlobalEvent'));
$this->component->attachEventHandler('fxNonExistantGlobalEvent','foo');
$this->assertTrue($this->component->hasEventHandler('fxNonExistantGlobalEvent'));
-
+
//Test behavior events
$this->assertFalse($this->component->hasEventHandler('onBehaviorEvent'));
$this->component->attachBehavior('BehaviorTestBehavior', new BehaviorTestBehavior);
$this->assertFalse($this->component->hasEventHandler('onBehaviorEvent'));
$this->assertFalse($this->component->BehaviorTestBehavior->hasEventHandler('onBehaviorEvent'));
-
+
$this->component->attachEventHandler('onBehaviorEvent','foo');
$this->assertTrue($this->component->hasEventHandler('onBehaviorEvent'));
-
+
$this->component->disableBehavior('BehaviorTestBehavior');
$this->assertFalse($this->component->hasEvent('onBehaviorEvent'));
$this->assertFalse($this->component->hasEventHandler('onBehaviorEvent'));
@@ -1526,7 +1526,7 @@ class TComponentTest extends PHPUnit_Framework_TestCase {
$this->fail('exception not raised when getting event handlers for undefined event');
} catch(TInvalidOperationException $e) {
}
-
+
$list=$this->component->getEventHandlers('fxRandomEvent');
$this->assertTrue(($list instanceof TPriorityList) && ($list->getCount()===0));
$this->component->attachEventHandler('fxRandomEvent','foo');
@@ -1536,9 +1536,9 @@ class TComponentTest extends PHPUnit_Framework_TestCase {
} catch(TInvalidOperationException $e) {
$this->fail('exception raised when getting event handlers for universal global event');
}
-
-
-
+
+
+
//Test behavior events
try {
$list=$this->component->getEventHandlers('onBehaviorEvent');
@@ -1546,13 +1546,13 @@ class TComponentTest extends PHPUnit_Framework_TestCase {
} catch(TInvalidOperationException $e) {
}
$this->assertFalse($this->component->hasEventHandler('onBehaviorEvent'));
-
+
$this->component->attachBehavior('BehaviorTestBehavior', new BehaviorTestBehavior);
$list=$this->component->getEventHandlers('onBehaviorEvent');
$this->assertTrue(($list instanceof TPriorityList) && ($list->getCount()===0));
$this->component->attachEventHandler('onBehaviorEvent','foo');
$this->assertTrue(($list instanceof TPriorityList) && ($list->getCount()===1));
-
+
$this->component->disableBehavior('BehaviorTestBehavior');
try {
$list=$this->component->getEventHandlers('onBehaviorEvent');
@@ -1561,11 +1561,11 @@ class TComponentTest extends PHPUnit_Framework_TestCase {
}
$this->component->enableBehavior('BehaviorTestBehavior');
$this->assertTrue(($this->component->getEventHandlers('onBehaviorEvent') instanceof TPriorityList) && ($list->getCount()===1));
-
+
}
public function testAttachEventHandler() {
-
+
$this->component->attachEventHandler('OnMyEvent','foo');
$this->assertEquals(1, $this->component->getEventHandlers('OnMyEvent')->getCount());
try {
@@ -1573,7 +1573,7 @@ class TComponentTest extends PHPUnit_Framework_TestCase {
$this->fail('exception not raised when attaching event handlers for undefined event');
} catch(TInvalidOperationException $e) {
}
-
+
//Testing the priorities of attaching events
$this->component->attachEventHandler('OnMyEvent','foopre', 5);
$this->component->attachEventHandler('OnMyEvent','foopost', 15);
@@ -1584,8 +1584,8 @@ class TComponentTest extends PHPUnit_Framework_TestCase {
$this->assertEquals('foo', $list[1]);
$this->assertEquals('foobar', $list[2]);
$this->assertEquals('foopost', $list[3]);
-
-
+
+
//Test attaching behavior events
try {
$this->component->attachEventHandler('onBehaviorEvent','foo');
@@ -1593,9 +1593,9 @@ class TComponentTest extends PHPUnit_Framework_TestCase {
} catch(TInvalidOperationException $e) {
}
$this->component->attachBehavior('BehaviorTestBehavior', new BehaviorTestBehavior);
-
+
$this->component->attachEventHandler('onBehaviorEvent','foo');
-
+
//Testing the priorities of attaching behavior events
$this->component->attachEventHandler('onBehaviorEvent','foopre', 5);
$this->component->attachEventHandler('onBehaviorEvent','foopost', 15);
@@ -1608,7 +1608,7 @@ class TComponentTest extends PHPUnit_Framework_TestCase {
$this->assertEquals('foobar', $list[2]);
$this->assertEquals('foobarfoobar', $list[3]);
$this->assertEquals('foopost', $list[4]);
-
+
$this->component->disableBehavior('BehaviorTestBehavior');
try {
$this->component->attachEventHandler('onBehaviorEvent','bar');
@@ -1616,37 +1616,37 @@ class TComponentTest extends PHPUnit_Framework_TestCase {
} catch(TInvalidOperationException $e) {
}
$this->component->enableBehavior('BehaviorTestBehavior');
-
+
}
public function testDetachEventHandler() {
-
+
$this->component->attachEventHandler('OnMyEvent','foo');
$this->assertEquals(1, $this->component->getEventHandlers('OnMyEvent')->getCount());
-
+
$this->component->attachEventHandler('OnMyEvent','foopre', 5);
$this->component->attachEventHandler('OnMyEvent','foopost', 15);
$this->component->attachEventHandler('OnMyEvent','foobar', 10);
$this->component->attachEventHandler('OnMyEvent','foobarfoobar', 10);
-
-
-
+
+
+
$this->component->detachEventHandler('OnMyEvent','foo');
$list = $this->component->getEventHandlers('OnMyEvent');
$this->assertEquals(4, $list->getCount());
-
+
$this->assertEquals('foopre', $list[0]);
$this->assertEquals('foobar', $list[1]);
$this->assertEquals('foobarfoobar', $list[2]);
$this->assertEquals('foopost', $list[3]);
-
+
$this->component->detachEventHandler('OnMyEvent','foopre', null);
$this->assertEquals(4, $list->getCount());
-
+
$this->component->detachEventHandler('OnMyEvent','foopre', 5);
$this->assertEquals(3, $list->getCount());
-
-
+
+
// Now do detaching of behavior on events
try {
$this->component->attachEventHandler('onBehaviorEvent','foo');
@@ -1654,29 +1654,29 @@ class TComponentTest extends PHPUnit_Framework_TestCase {
} catch(TInvalidOperationException $e) {
}
$this->component->attachBehavior('BehaviorTestBehavior', new BehaviorTestBehavior);
-
+
$this->component->attachEventHandler('onBehaviorEvent','foo');
$this->assertEquals(1, $this->component->getEventHandlers('onBehaviorEvent')->getCount());
-
+
$this->component->attachEventHandler('onBehaviorEvent','foopre', 5);
$this->component->attachEventHandler('onBehaviorEvent','foopost', 15);
$this->component->attachEventHandler('onBehaviorEvent','foobar', 10);
$this->component->attachEventHandler('onBehaviorEvent','foobarfoobar', 10);
-
-
-
+
+
+
$this->component->detachEventHandler('onBehaviorEvent','foo');
$list = $this->component->getEventHandlers('onBehaviorEvent');
$this->assertEquals(4, $list->getCount());
-
+
$this->assertEquals('foopre', $list[0]);
$this->assertEquals('foobar', $list[1]);
$this->assertEquals('foobarfoobar', $list[2]);
$this->assertEquals('foopost', $list[3]);
-
+
$this->component->detachEventHandler('onBehaviorEvent','foopre', null);
$this->assertEquals(4, $list->getCount());
-
+
$this->component->detachEventHandler('onBehaviorEvent','foopre', 5);
$this->assertEquals(3, $list->getCount());
}
@@ -1693,14 +1693,14 @@ class TComponentTest extends PHPUnit_Framework_TestCase {
$this->assertFalse($this->component->Object->isEventHandled());
$this->component->raiseEvent('OnMyEvent',$this,null);
$this->assertTrue($this->component->Object->isEventHandled());
-
+
$this->component->resetEventHandled();
$this->component->Object->resetEventHandled();
-
-
+
+
// Test a behavior on event
$this->component->attachBehavior('test', new BehaviorTestBehavior);
-
+
$this->component->attachEventHandler('onBehaviorEvent',array($this->component,'myEventHandler'));
$this->assertFalse($this->component->isEventHandled());
$this->component->raiseEvent('onBehaviorEvent',$this,null);
@@ -1709,13 +1709,13 @@ class TComponentTest extends PHPUnit_Framework_TestCase {
$this->assertFalse($this->component->Object->isEventHandled());
$this->component->raiseEvent('onBehaviorEvent',$this,null);
$this->assertTrue($this->component->Object->isEventHandled());
-
+
//test behavior enabled/disabled events
$this->component->disableBehavior('test');
-
+
$this->component->resetEventHandled();
$this->component->Object->resetEventHandled();
-
+
try {
$this->component->attachEventHandler('onBehaviorEvent',array($this->component,'myEventHandler'));
$this->fail('exception not raised when getting event handlers for undefined event');
@@ -1726,172 +1726,172 @@ class TComponentTest extends PHPUnit_Framework_TestCase {
$this->fail('exception not raised when getting event handlers for undefined event');
} catch(TInvalidOperationException $e) {}
$this->assertFalse($this->component->isEventHandled());
-
+
$this->component->enableBehavior('test');
-
-
-
+
+
+
//Test the return types of this function
-
+
$this->assertFalse($this->component->isEventHandled());
$this->assertFalse($this->component->Object->isEventHandled());
$this->assertEquals(array(), $this->component->onBehaviorEvent($this,$this->component));
$this->assertTrue($this->component->isEventHandled());
$this->assertTrue($this->component->Object->isEventHandled());
-
+
// This accumulates all the responses from each of the events
$arr=$this->component->onBehaviorEvent($this, $this->component, TEventResults::EVENT_RESULT_ALL);
$this->assertEquals($this, $arr[0]['sender']);
$this->assertEquals($this->component, $arr[0]['param']);
$this->assertTrue(null === $arr[0]['response']);
-
+
$this->assertEquals($this, $arr[1]['sender']);
$this->assertEquals($this->component, $arr[1]['param']);
$this->assertTrue(null === $arr[1]['response']);
-
+
$this->assertEquals(2, count($arr));
-
+
// This tests without the default filtering-out of null
$arr=$this->component->onBehaviorEvent($this, $this->component, false);
$this->assertEquals(array(null, null), $arr);
-
-
+
+
unset($this->component->onBehaviorEvent);
$this->assertEquals(0, $this->component->onBehaviorEvent->Count);
-
+
$this->component->onBehaviorEvent = array($this, 'returnValue4');
$this->component->onBehaviorEvent = array($this, 'returnValue1');
-
+
// Test the per event post processing function
$arr=$this->component->onBehaviorEvent($this, $this->component, array($this, 'postEventFunction'));
$this->assertEquals(array(exp(4), exp(1)), $arr);
$arr=$this->component->onBehaviorEvent($this, $this->component, array($this, 'postEventFunction2'));
$this->assertEquals(array(sin(4), sin(1)), $arr);
-
-
+
+
//Testing Feed-forward functionality
unset($this->component->onBehaviorEvent);
-
+
$this->component->onBehaviorEvent = array($this, 'ffValue4');
$this->component->onBehaviorEvent = array($this, 'ffValue2');
$arr=$this->component->onBehaviorEvent($this, 5, TEventResults::EVENT_RESULT_FEED_FORWARD);
$this->assertEquals(array(20, 40), $arr);
-
-
+
+
unset($this->component->onBehaviorEvent);
-
+
//Order of these events affects the response order in feed forward
$this->component->onBehaviorEvent = array($this, 'ffValue2');
$this->component->onBehaviorEvent = array($this, 'ffValue4');
$arr=$this->component->onBehaviorEvent($this, 5, TEventResults::EVENT_RESULT_FEED_FORWARD);
$this->assertEquals(array(10, 40), $arr);
}
-
+
public function returnValue1(){return 1;}
public function returnValue4(){return 4;}
public function postEventFunction($sender, $param, $caller, $response){return exp($response);}
public function postEventFunction2($sender, $param, $caller, $response){return sin($response);}
public function ffValue2($sender, $param){return $param*2;}
public function ffValue4($sender, $param){return $param*4;}
-
-
+
+
public function testGlobalEventListenerInRaiseEvent() {
//TODO Test the Global Event Listener
}
-
-
+
+
public function testIDynamicMethodsOnBehavior() {
-
+
//Add Behavior with dynamic call
$this->component->attachBehavior('TDynamicBehavior', new TDynamicBehavior);
-
+
//Check that the behavior is working as it should
$this->assertTrue($this->component->isa('TDynamicBehavior'));
$this->assertNull($this->component->getLastBehaviorDynamicMethodCalled());
-
+
// call basic behavior implemented method from object (containing behavior)
$this->assertEquals(42, $this->component->TestBehaviorMethod(6, 7));
-
+
//Test out undefined behavior/host object method
try {
$this->component->objectAndBehaviorUndefinedMethod();
$this->fail('exception not raised when evaluating an undefined method by the object and behavior');
} catch(TApplicationException $e) {
}
-
+
// calling undefined dynamic method, caught by the __dycall method in the behavior and implemented
// this behavior catches undefined dynamic event and divides param1 by param 2
$this->assertEquals(22, $this->component->dyTestDynamicBehaviorMethod(242, 11));
$this->assertEquals('dyTestDynamicBehaviorMethod', $this->component->getLastBehaviorDynamicMethodCalled());
-
+
// calling undefined dynamic method, caught by the __dycall in the behavior and ignored
$this->assertNull($this->component->dyUndefinedIntraEvent(242, 11));
$this->assertEquals('dyUndefinedIntraEvent', $this->component->getLastBehaviorDynamicMethodCalled());
-
+
//call behavior defined dynamic event
// param1 * 2 * param2
$this->assertEquals(2420, $this->component->dyTestIntraEvent(121, 10));
-
+
$this->component->detachBehavior('TDynamicBehavior');
$this->assertFalse($this->component->isa('TDynamicBehavior'));
-
-
-
+
+
+
//Add Class Behavior with dynamic call
$this->component->attachBehavior('TDynamicClassBehavior', new TDynamicClassBehavior);
-
+
//Check that the behavior is working as it should
$this->assertTrue($this->component->isa('TDynamicClassBehavior'));
$this->assertNull($this->component->getLastBehaviorDynamicMethodCalled());
-
+
// call basic behavior implemented method from object (containing behavior)
$this->assertEquals(42, $this->component->TestBehaviorMethod(6, 7));
-
+
//Test out undefined behavior/host object method
try {
$this->component->objectAndBehaviorUndefinedMethod();
$this->fail('exception not raised when evaluating an undefined method by the object and behavior');
} catch(TApplicationException $e) {
}
-
+
// calling undefined dynamic method, caught by the __dycall method in the behavior and implemented
// this behavior catches undefined dynamic event and divides param1 by param 2
$this->assertEquals(22, $this->component->dyTestDynamicClassBehaviorMethod(242, 11));
$this->assertEquals('dyTestDynamicClassBehaviorMethod', $this->component->getLastBehaviorDynamicMethodCalled());
-
+
// calling undefined dynamic method, caught by the __dycall in the behavior and ignored
$this->assertNull($this->component->dyUndefinedIntraEvent(242, 11));
$this->assertEquals('dyUndefinedIntraEvent', $this->component->getLastBehaviorDynamicMethodCalled());
-
+
//call behavior defined dynamic event
// param1 * 2 * param2
$this->assertEquals(2420, $this->component->dyTestIntraEvent(121, 10));
-
+
$this->component->detachBehavior('TDynamicClassBehavior');
$this->assertFalse($this->component->isa('TDynamicClassBehavior'));
-
+
}
-
+
// This also tests the priority of the common global raiseEvent events
public function testIDynamicMethodsOnBehaviorGlobalEvents() {
$component = new GlobalRaiseComponent();
-
+
// common function has a default priority of 10
$component->attachEventHandler(TComponent::GLOBAL_RAISE_EVENT_LISTENER, array($component, 'commonRaiseEventListener'));
$component->attachEventHandler(TComponent::GLOBAL_RAISE_EVENT_LISTENER, array($component, 'postglobalRaiseEventListener'), 1);
$component->attachEventHandler(TComponent::GLOBAL_RAISE_EVENT_LISTENER, array($component, 'preglobalRaiseEventListener'), -1);
-
+
$this->assertEquals(5, $this->component->fxGlobalListener->getCount());
$this->assertEquals(1, $this->component->fxPrimaryGlobalEvent->getCount());
$this->assertEquals(1, $this->component->fxPrimaryGlobalEvent->getCount(), 'fxPrimaryGlobalEvent is not installed on test object');
-
+
// call the global event on a different object than the test object
$res = $this->component->raiseEvent('fxPrimaryGlobalEvent', $this, null, TEventResults::EVENT_RESULT_ALL);
-
+
$this->assertEquals(6, count($res));
$this->assertEquals(array('pregl', 'primary', 'postgl', 'fxGL', 'fxcall', 'com'), $component->getCallOrders());
-
+
$component->unlisten();
}
@@ -1907,10 +1907,10 @@ class TComponentTest extends PHPUnit_Framework_TestCase {
} catch(Exception $e) {
}
}
-
-
-
-
+
+
+
+
public function testEvaluateStatements() {
$statements='$a="test string"; echo $a;';
$this->assertEquals('test string',$this->component->evaluateStatements($statements));
@@ -1921,169 +1921,167 @@ class TComponentTest extends PHPUnit_Framework_TestCase {
} catch(Exception $e) {
}
}
-
-
+
+
public function testDynamicFunctionCall() {
-
+
$this->assertEquals(' aa bb cc __ .. ++ || !! ?? ', $this->component->dyTextFilter(' aa bb cc __ .. ++ || !! ?? '));
-
+
$this->component->attachBehavior('dy1', new dy1TextReplace);
$this->assertFalse($this->component->dy1->isCalled());
$this->assertEquals(' aa bb cc __ __ ++ || !! ?? ', $this->component->dyTextFilter(' aa bb cc __ .. ++ || !! ?? '));
$this->assertTrue($this->component->dy1->isCalled());
-
+
$this->component->attachBehavior('dy2', new dy2TextReplace);
$this->assertFalse($this->component->dy2->isCalled());
$this->assertEquals(' aa bb cc __ __ || || !! ?? ', $this->component->dyTextFilter(' aa bb cc __ .. ++ || !! ?? '));
$this->assertTrue($this->component->dy2->isCalled());
-
+
$this->component->attachBehavior('dy3', new dy3TextReplace);
$this->assertFalse($this->component->dy3->isCalled());
$this->assertEquals(' aa bb cc __ __ || || ?? ?? ', $this->component->dyTextFilter(' aa bb cc __ .. ++ || !! ?? '));
$this->assertTrue($this->component->dy3->isCalled());
-
+
$this->assertEquals(' aa bb cc __ .. ++ || !! ?? ', $this->component->dyUndefinedEvent(' aa bb cc __ .. ++ || !! ?? '));
-
+
$this->assertEquals(0.25, $this->component->dyPowerFunction(2,2));
-
-
+
+
$this->component->detachBehavior('dy1');
$this->component->detachBehavior('dy2');
$this->component->detachBehavior('dy3');
-
+
//test class behaviors of dynamic events and the argument list order
-
+
$this->assertEquals(' aa bb cc __ .. ++ || !! ?? ', $this->component->dyTextFilter(' aa bb cc __ .. ++ || !! ?? '));
-
+
$this->component->attachBehavior('dy1', new dy1ClassTextReplace);
$this->assertFalse($this->component->dy1->isCalled());
$this->assertEquals(' aa bb cc .. .. ++ || !! ?? ', $this->component->dyTextFilter(' aa bb cc __ .. ++ || !! ?? '));
$this->assertTrue($this->component->dy1->isCalled());
-
+
$this->component->attachBehavior('dy2', new dy2ClassTextReplace);
$this->assertFalse($this->component->dy2->isCalled());
$this->assertEquals(' aa bb cc .. .. ++ ++ !! ?? ', $this->component->dyTextFilter(' aa bb cc __ .. ++ || !! ?? '));
$this->assertTrue($this->component->dy2->isCalled());
-
+
$this->component->attachBehavior('dy3', new dy3ClassTextReplace);
$this->assertFalse($this->component->dy3->isCalled());
$this->assertEquals(' aa bb cc .. .. ++ ++ !! ^_^ ', $this->component->dyTextFilter(' aa bb cc __ .. ++ || !! ?? '));
$this->assertTrue($this->component->dy3->isCalled());
-
+
$this->assertEquals(' aa bb cc __ .. ++ || !! ?? ', $this->component->dyUndefinedEvent(' aa bb cc __ .. ++ || !! ?? '));
-
+
$this->assertEquals(0.25, $this->component->dyPowerFunction(2,2));
-
-
+
+
}
-
-
-
-
+
+
+
+
public function testDynamicIntraObjectEvents() {
-
+
$this->component->attachBehavior('IntraEvents', new IntraObjectExtenderBehavior);
-
+
$this->assertNull($this->component->IntraEvents->LastCall);
-
+
//unlisten first, this object listens upon instantiation.
$this->component->unlisten();
$this->assertEquals(2, $this->component->IntraEvents->LastCall);
-
+
// ensures that IntraEvents nulls the last call variable when calling this getter
$this->assertNull($this->component->IntraEvents->LastCall);
-
+
//listen next to undo the unlisten
$this->component->listen();
$this->assertEquals(1, $this->component->IntraEvents->LastCall);
-
-
+
+
$this->assertEquals(3, $this->component->evaluateExpression('1+2'));
$this->assertEquals(7, $this->component->IntraEvents->LastCall);
-
+
$statements='$a="test string"; echo $a;';
$this->assertEquals('test string', $this->component->evaluateStatements($statements));
$this->assertEquals(8, $this->component->IntraEvents->LastCall);
-
+
$component2 = new NewComponentNoListen();
$this->assertNull($this->component->createdOnTemplate($component2));
$this->assertEquals(9, $this->component->IntraEvents->LastCall);
-
+
$this->assertNull($this->component->addParsedObject($component2));
$this->assertEquals(10, $this->component->IntraEvents->LastCall);
-
-
-
+
+
+
$behavior = new BarBehavior;
$this->assertEquals($behavior, $this->component->attachBehavior('BarBehavior', $behavior));
$this->assertEquals(11, $this->component->IntraEvents->LastCall);
-
+
$this->assertNull($this->component->disableBehaviors());
$this->assertNull($this->component->enableBehaviors());
$this->assertEquals(27, $this->component->IntraEvents->LastCall);
-
+
$this->assertTrue($this->component->disableBehavior('BarBehavior'));
$this->assertEquals(16, $this->component->IntraEvents->LastCall);
-
+
$this->assertTrue($this->component->enableBehavior('BarBehavior'));
$this->assertEquals(15, $this->component->IntraEvents->LastCall);
-
+
$this->assertEquals($behavior, $this->component->detachBehavior('BarBehavior'));
$this->assertEquals(12, $this->component->IntraEvents->LastCall);
-
-
+
+
$this->component->attachEventHandler('OnMyEvent',array($this->component,'myEventHandler'));
$this->component->raiseEvent('OnMyEvent',$this,null);
-
+
//3 + 4 + 5 + 6 = 18 (the behavior adds these together when each raiseEvent dynamic intra event is called)
$this->assertEquals(18, $this->component->IntraEvents->LastCall);
}
-
-
-
+
+
+
public function testJavascriptGetterSetter() {
-
+
$this->assertFalse(isset($this->component->ColorAttribute));
$this->assertFalse(isset($this->component->JsColorAttribute));
-
+
$this->component->ColorAttribute = "('#556677', '#abcdef', 503987)";
$this->assertEquals("('#556677', '#abcdef', 503987)", $this->component->ColorAttribute);
-
+
$this->assertTrue(isset($this->component->ColorAttribute));
$this->assertTrue(isset($this->component->JsColorAttribute));
-
+
$this->component->ColorAttribute = "new Array(1, 2, 3, 4, 5)";
$this->assertEquals("new Array(1, 2, 3, 4, 5)", $this->component->JsColorAttribute);
-
+
$this->component->JsColorAttribute = "['#112233', '#fedcba', 22009837]";
$this->assertEquals("['#112233', '#fedcba', 22009837]", $this->component->ColorAttribute);
}
-
-
+
+
public function testJavascriptIssetUnset() {
-
+
$this->component->JsColorAttribute = "['#112233', '#fedcba', 22009837]";
$this->assertEquals("['#112233', '#fedcba', 22009837]", $this->component->ColorAttribute);
-
+
unset($this->component->ColorAttribute);
-
+
$this->assertFalse(isset($this->component->ColorAttribute));
$this->assertFalse(isset($this->component->JsColorAttribute));
-
+
$this->component->JsColorAttribute = "['#112233', '#fedcba', 22009837]";
-
+
$this->assertTrue(isset($this->component->ColorAttribute));
$this->assertTrue(isset($this->component->JsColorAttribute));
-
+
unset($this->component->JsColorAttribute);
-
+
$this->assertFalse(isset($this->component->ColorAttribute));
$this->assertFalse(isset($this->component->JsColorAttribute));
-
+
}
-
-
-
-}
-?> \ No newline at end of file
+
+
+}
diff --git a/tests/unit/Util/AllTests.php b/tests/unit/Util/AllTests.php
index 8ab99a50..a6a217d7 100644
--- a/tests/unit/Util/AllTests.php
+++ b/tests/unit/Util/AllTests.php
@@ -11,13 +11,13 @@ class Util_AllTests {
public static function main() {
PHPUnit_TextUI_TestRunner::run(self::suite());
}
-
+
public static function suite() {
$suite = new PHPUnit_Framework_TestSuite('System.Util');
-
+
$suite->addTestSuite('TDateTimeStampTest');
$suite->addTestSuite('TLoggerTest');
-
+
return $suite;
}
}
@@ -25,4 +25,3 @@ class Util_AllTests {
if(PHPUnit_MAIN_METHOD == 'Util_AllTests::main') {
Util_AllTests::main();
}
-?>
diff --git a/tests/unit/Util/TDateTimeStampTest.php b/tests/unit/Util/TDateTimeStampTest.php
index 6ae4b128..37784ef3 100644
--- a/tests/unit/Util/TDateTimeStampTest.php
+++ b/tests/unit/Util/TDateTimeStampTest.php
@@ -7,7 +7,7 @@ Prado::using('System.Util.TDateTimeStamp');
* @package System.Util
*/
class TDateTimeStampTest extends PHPUnit_Framework_TestCase {
-
+
public function testGetTimeStampAndFormat() {
$s = new TDateTimeStamp;
$t = $s->getTimeStamp(0,0,0);
@@ -126,4 +126,3 @@ class TDateTimeStampTest extends PHPUnit_Framework_TestCase {
}
}
-?>
diff --git a/tests/unit/Util/TLoggerTest.php b/tests/unit/Util/TLoggerTest.php
index 49d5d316..03b36c5b 100644
--- a/tests/unit/Util/TLoggerTest.php
+++ b/tests/unit/Util/TLoggerTest.php
@@ -16,11 +16,10 @@ class TLoggerTest extends PHPUnit_Framework_TestCase {
public function testLog() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetLogs() {
throw new PHPUnit_Framework_IncompleteTestError();
}
}
-?>
diff --git a/tests/unit/Util/TSimpleDateFormatterTest.php b/tests/unit/Util/TSimpleDateFormatterTest.php
index b989fcf5..ce6f1234 100644
--- a/tests/unit/Util/TSimpleDateFormatterTest.php
+++ b/tests/unit/Util/TSimpleDateFormatterTest.php
@@ -16,49 +16,48 @@ class TSimpleDateFormatterTest extends PHPUnit_Framework_TestCase {
public function testConstruct() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testPattern() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testCharset() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testFormat() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testMonthPattern() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testDayPattern() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testYearPattern() {
$formatter = new TSimpleDateFormatter("yyyy");
self::assertEquals("2008-01-01", date('Y-m-d', $formatter->parse("2008")));
}
-
+
public function testMissingYearPattern() {
$formatter = new TSimpleDateFormatter("MM/dd");
self::assertEquals(date("Y-10-22"), date('Y-m-d', $formatter->parse("10/22")));
}
-
+
public function testDayMonthYearOrdering() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testIsValidDate() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testParse() {
throw new PHPUnit_Framework_IncompleteTestError();
}
}
-?>
diff --git a/tests/unit/Web/AllTests.php b/tests/unit/Web/AllTests.php
index f9b3b91d..ffd98978 100644
--- a/tests/unit/Web/AllTests.php
+++ b/tests/unit/Web/AllTests.php
@@ -20,10 +20,10 @@ class Web_AllTests {
public static function main() {
PHPUnit_TextUI_TestRunner::run(self::suite());
}
-
+
public static function suite() {
$suite = new PHPUnit_Framework_TestSuite('System.Web');
-
+
$suite->addTestSuite('TAssetManagerTest');
$suite->addTestSuite('TCacheHttpSessionTest');
$suite->addTestSuite('THttpCookieCollectionTest');
@@ -33,9 +33,9 @@ class Web_AllTests {
$suite->addTestSuite('THttpSessionTest');
$suite->addTestSuite('THttpUtilityTest');
$suite->addTestSuite('TUriTest');
-
+
$suite->addTest(Web_UI_AllTests::suite());
-
+
return $suite;
}
}
@@ -43,4 +43,3 @@ class Web_AllTests {
if(PHPUnit_MAIN_METHOD == 'Web_AllTests::main') {
Web_AllTests::main();
}
-?>
diff --git a/tests/unit/Web/TAssetManagerTest.php b/tests/unit/Web/TAssetManagerTest.php
index 89349a0d..13d2d6c1 100644
--- a/tests/unit/Web/TAssetManagerTest.php
+++ b/tests/unit/Web/TAssetManagerTest.php
@@ -26,26 +26,26 @@ class TAssetManagerTest extends PHPUnit_Framework_TestCase {
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
$_SERVER['HTTP_USER_AGENT'] = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3';
$_SERVER['REMOTE_HOST'] = 'localhost';
-
+
if (self::$app===null) {
self::$app=new TApplication(dirname(__FILE__).'/app');
}
-
+
if (self::$assetDir===null) self::$assetDir= dirname(__FILE__).'/assets';
- // Make asset directory if not exists
+ // Make asset directory if not exists
if (!file_exists (self::$assetDir)) {
- if (is_writable(dirname(self::$assetDir)))
+ if (is_writable(dirname(self::$assetDir)))
mkdir (self::$assetDir) ;
- else
+ else
throw new Exception ('Directory '.dirname(self::$assetDir).' is not writable');
} elseif (!is_dir (self::$assetDir)) {
throw new Exception (self::$assetDir.' exists and is not a directory');
}
// Define an alias to asset directory
prado::setPathofAlias('AssetAlias', self::$assetDir);
-
+
}
-
+
private function removeDirectory ($dir) {
// Let's be sure $dir is a directory to avoir any error. Clear the cache !
clearstatcache();
@@ -53,7 +53,7 @@ class TAssetManagerTest extends PHPUnit_Framework_TestCase {
foreach (scandir($dir) as $content) {
if ($content==='.' or $content==='..') continue; // skip . and ..
$content=$dir.'/'.$content;
- if (is_dir($content))
+ if (is_dir($content))
$this->removeDirectory ($content); // Recursivly remove directories
else
unlink ($content); // Remove file
@@ -62,21 +62,21 @@ class TAssetManagerTest extends PHPUnit_Framework_TestCase {
rmdir ($dir);
}
}
-
+
public function tearDown () {
// Make some cleaning :)
- $this->removeDirectory(self::$assetDir);
+ $this->removeDirectory(self::$assetDir);
}
-
+
public function testInit() {
-
+
$manager=new TAssetManager ();
$manager->init (null);
-
+
self::assertEquals(self::$assetDir, $manager->getBasePath());
self::assertEquals($manager, self::$app->getAssetManager());
-
+
// No, remove asset directory, and catch the exception
if (is_dir(self::$assetDir)) $this->removeDirectory (self::$assetDir);
try {
@@ -92,12 +92,12 @@ class TAssetManagerTest extends PHPUnit_Framework_TestCase {
$manager->setBasePath('invalid');
self::fail('Expected TInvalidDataValueException not thrown');
} catch (TInvalidDataValueException $e) {}
-
+
// Next, standard asset directory, should work
-
+
$manager->setBasePath ('AssetAlias');
self::assertEquals(self::$assetDir, $manager->getBasePath());
-
+
// Finally, test to change after init
$manager->init (null);
try {
@@ -111,20 +111,20 @@ class TAssetManagerTest extends PHPUnit_Framework_TestCase {
$manager=new TAssetManager ();
$manager->setBaseUrl ('/assets/');
self::assertEquals("/assets", $manager->getBaseUrl());
-
+
$manager->init (null);
try {
$manager->setBaseUrl ('/test');
self::fail ('Expected TInvalidOperationException not thrown');
} catch (TInvalidOperationException $e) {}
-
+
}
public function testPublishFilePath() {
$manager=new TAssetManager();
$manager->setBaseUrl('/');
$manager->init (null);
-
+
// Try to publish a single file
$fileToPublish=dirname(__FILE__).'/data/pradoheader.gif';
$publishedUrl = $manager->publishFilePath($fileToPublish);
@@ -132,19 +132,19 @@ class TAssetManagerTest extends PHPUnit_Framework_TestCase {
self::assertEquals($publishedFile, $manager->getPublishedPath($fileToPublish));
self::assertEquals($publishedUrl, $manager->getPublishedUrl($fileToPublish));
self::assertTrue(is_file($publishedFile));
-
+
// try to publish invalid file
try {
$manager->publishFilePath('invalid_file');
self::fail('Expected TInvalidDataValueException not thrown');
} catch (TInvalidDataValueException $e) {}
}
-
+
public function testPublishFilePathWithDirectory () {
$manager=new TAssetManager();
$manager->setBaseUrl('/');
$manager->init (null);
-
+
// Try to publish a directory
$dirToPublish=dirname(__FILE__).'/data';
$publishedUrl = $manager->publishFilePath($dirToPublish);
@@ -153,23 +153,23 @@ class TAssetManagerTest extends PHPUnit_Framework_TestCase {
self::assertEquals($publishedUrl, $manager->getPublishedUrl($dirToPublish));
self::assertTrue(is_dir($publishedDir));
self::assertTrue(is_file($publishedDir.'/pradoheader.gif'));
-
+
}
public function testPublishTarFile() {
$manager=new TAssetManager();
$manager->setBaseUrl('/');
$manager->init (null);
-
+
$tarFile=dirname(__FILE__).'/data/aTarFile.tar';
$md5File=dirname(__FILE__).'/data/aTarFile.md5';
-
+
// First, try with bad md5
try {
$manager->publishTarFile($tarFile, 'badMd5File');
self::fail('Expected TInvalidDataValueException not thrown');
} catch (TInvalidDataValueException $e) {}
-
+
// Then, try with real md5 file
$publishedUrl=$manager->publishTarFile($tarFile, $md5File);
$publishedDir=self::$assetDir.$publishedUrl;
@@ -178,5 +178,4 @@ class TAssetManagerTest extends PHPUnit_Framework_TestCase {
self::assertTrue(is_file($publishedDir.'/aTarFile.md5'));
}
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/unit/Web/TCacheHttpSessionTest.php b/tests/unit/Web/TCacheHttpSessionTest.php
index 15c2a382..8475cd37 100644
--- a/tests/unit/Web/TCacheHttpSessionTest.php
+++ b/tests/unit/Web/TCacheHttpSessionTest.php
@@ -11,14 +11,14 @@ class TCacheHttpSessionTest extends PHPUnit_Framework_TestCase
protected $app = null;
protected static $cache = null;
protected static $session = null;
-
+
protected function setUp()
{
if(!extension_loaded('memcache'))
{
self::markTestSkipped('The memcache extension is not available');
}
- else
+ else
{
$basePath = dirname(__FILE__).'/app';
$runtimePath = $basePath.'/runtime';
@@ -33,14 +33,14 @@ class TCacheHttpSessionTest extends PHPUnit_Framework_TestCase
$this->app->setModule('MyCache',self::$cache);
}
}
-
+
protected function tearDown()
{
$this->app = null;
$this->cache = null;
$this->session = null;
}
-
+
public function testInit()
{
$session = new TCacheHttpSession();
@@ -53,7 +53,7 @@ class TCacheHttpSessionTest extends PHPUnit_Framework_TestCase
{
}
unset($session);
-
+
$session = new TCacheHttpSession();
try
{
@@ -66,12 +66,12 @@ class TCacheHttpSessionTest extends PHPUnit_Framework_TestCase
{
}
unset($session);
-
+
self::$session = new TCacheHttpSession();
try
{
self::$session->setCacheModuleID('MyCache');
- self::$session->init(null);
+ self::$session->init(null);
}
catch(TConfigurationException $e)
{
@@ -79,50 +79,49 @@ class TCacheHttpSessionTest extends PHPUnit_Framework_TestCase
self::markTestSkipped('Cannot continue this test');
}
}
-
+
public function testGetCache()
{
$cache = self::$session->getCache();
$this->assertEquals(true, $cache instanceof TMemCache);
}
-
+
public function testCacheModuleID()
{
$id = 'value';
self::$session->setCacheModuleID($id);
self::assertEquals($id, self::$session->getCacheModuleID());
}
-
+
public function testKeyPrefix()
{
$id = 'value';
self::$session->setKeyPrefix($id);
self::assertEquals($id, self::$session->getKeyPrefix());
}
-
+
public function testSetAndGet()
{
self::$session['key'] = 'value';
self::assertEquals('value', self::$session['key']);
}
-
+
public function testAdd()
{
self::$session->add('anotherkey', 'value');
self::assertEquals('value', self::$session['anotherkey']);
}
-
+
public function testRemove()
{
self::$session->remove('key');
self::assertEquals(false, self::$session['key']);
}
-
+
public function testDestroyAndIsStarted()
{
$this->testSetAndGet();
self::$session->destroy();
self::assertEquals(false, self::$session->getIsStarted());
}
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/unit/Web/THttpCookieCollectionTest.php b/tests/unit/Web/THttpCookieCollectionTest.php
index 68ea8777..aa091788 100644
--- a/tests/unit/Web/THttpCookieCollectionTest.php
+++ b/tests/unit/Web/THttpCookieCollectionTest.php
@@ -28,7 +28,7 @@ class THttpCookieCollectionTest extends PHPUnit_Framework_TestCase {
$coll->removeAt(0);
self::fail('Invalid Value exception not raised');
} catch (TInvalidDataValueException $e) {}
-
+
$coll->insertAt(0, new THttpCookie('name','value'));
self::assertEquals('value',$coll->removeAt(0)->getValue());
}
@@ -46,5 +46,4 @@ class THttpCookieCollectionTest extends PHPUnit_Framework_TestCase {
self::assertEquals ('value', $coll->findCookieByName('name')->getValue());
self::assertNull ($coll->findCookieByName('invalid'));
}
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/unit/Web/THttpCookieTest.php b/tests/unit/Web/THttpCookieTest.php
index 31d8e572..206ef105 100644
--- a/tests/unit/Web/THttpCookieTest.php
+++ b/tests/unit/Web/THttpCookieTest.php
@@ -49,5 +49,4 @@ class THttpCookieTest extends PHPUnit_Framework_TestCase {
$cookie->setSecure(true);
self::assertTrue($cookie->getSecure());
}
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/unit/Web/THttpRequestTest.php b/tests/unit/Web/THttpRequestTest.php
index 1807bbe2..7f5da17d 100644
--- a/tests/unit/Web/THttpRequestTest.php
+++ b/tests/unit/Web/THttpRequestTest.php
@@ -503,5 +503,4 @@ class THttpRequestTest extends PHPUnit_Framework_TestCase {
$module->init ($config);
self::assertEquals('testService', $request->resolveRequest(array ('page', 'testService')));
}
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/unit/Web/THttpResponseTest.php b/tests/unit/Web/THttpResponseTest.php
index dadbd768..0855bf4d 100644
--- a/tests/unit/Web/THttpResponseTest.php
+++ b/tests/unit/Web/THttpResponseTest.php
@@ -7,18 +7,18 @@ Prado::using('System.Web.THttpResponse');
* @package System.Web
*/
class THttpResponseTest extends PHPUnit_Framework_TestCase {
-
+
public static $app=null;
public function setUp () {
if (self::$app===null) self::$app=new TApplication(dirname(__FILE__).'/app');
ob_start();
}
-
+
public function tearDown () {
ob_end_flush();
}
-
+
public function testInit() {
$response=new THttpResponse ();
$response->init (null);
@@ -43,7 +43,7 @@ class THttpResponseTest extends PHPUnit_Framework_TestCase {
$response->setCacheControl('invalid');
self::fail ('Expected TInvalidDataValueException not thrown');
} catch (TInvalidDataValueException $e) {}
-
+
}
public function testSetContentType() {
@@ -62,7 +62,7 @@ class THttpResponseTest extends PHPUnit_Framework_TestCase {
self::assertEquals('UTF-8', $response->getCharset());
$response->setCharset ('ISO8859-1');
self::assertEquals('ISO8859-1', $response->getCharset());
-
+
}
public function testSetBufferOutput() {
@@ -101,17 +101,17 @@ class THttpResponseTest extends PHPUnit_Framework_TestCase {
}
public function testWriteFile() {
-
+
// Don't know how to test headers :(( ...
throw new PHPUnit_Framework_IncompleteTestError();
-
+
$response=new THttpResponse ();
$response->setBufferOutput(true);
// Suppress warning with headers
$response->writeFile(dirname(__FILE__).'/data/aTarFile.md5', null, 'text/plain', array ('Pragma: public', 'Expires: 0'));
-
+
self::assertContains('4b1ecb0b243918a8bbfbb4515937be98 aTarFile.tar', ob_get_clean());
-
+
}
public function testRedirect() {
@@ -157,5 +157,4 @@ class THttpResponseTest extends PHPUnit_Framework_TestCase {
public function testCreateHtmlWriter() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/unit/Web/THttpSessionTest.php b/tests/unit/Web/THttpSessionTest.php
index 7de0f8a5..aca83077 100644
--- a/tests/unit/Web/THttpSessionTest.php
+++ b/tests/unit/Web/THttpSessionTest.php
@@ -110,5 +110,4 @@ class THttpSessionTest extends PHPUnit_Framework_TestCase {
public function testOffsetUnset() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/unit/Web/THttpUtilityTest.php b/tests/unit/Web/THttpUtilityTest.php
index 85fcf7f4..7f4e6705 100644
--- a/tests/unit/Web/THttpUtilityTest.php
+++ b/tests/unit/Web/THttpUtilityTest.php
@@ -18,5 +18,4 @@ class THttpUtilityTest extends PHPUnit_Framework_TestCase {
$html = THttpUtility::htmlDecode('&lt;tag key=&quot;value&quot;&gt;');
self::assertEquals('<tag key="value">', $html);
}
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/unit/Web/TUriTest.php b/tests/unit/Web/TUriTest.php
index a8c65b9e..b610cd1b 100644
--- a/tests/unit/Web/TUriTest.php
+++ b/tests/unit/Web/TUriTest.php
@@ -6,17 +6,17 @@ Prado::using('System.Web.THttpRequest');
* @package System.Web
*/
class TUriTest extends PHPUnit_Framework_TestCase {
-
+
const URISTR='http://login:p@ssw0rd:compl3x@www.pradosoft.com:80/demos/quickstart/index.php?page=test&param1=test2#anchor';
-
+
public function setUp () {
$this->uri=new TUri(self::URISTR);
}
-
+
public function tearDown() {
$this->uri=null;
}
-
+
public function testConstruct() {
$url="http://www.pradosoft.com/";
$uri=new TUri ($url);
@@ -27,7 +27,7 @@ class TUriTest extends PHPUnit_Framework_TestCase {
$url=new TUri($url);
self::fail ('exception not raised with an invalid URL');
} catch (TInvalidDataValueException $e) {
-
+
}
}
@@ -66,5 +66,4 @@ class TUriTest extends PHPUnit_Framework_TestCase {
public function testGetFragment() {
self::assertEquals('anchor', $this->uri->getFragment());
}
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/unit/Web/UI/ActiveControls/AllTests.php b/tests/unit/Web/UI/ActiveControls/AllTests.php
index ef2dfb91..68989996 100644
--- a/tests/unit/Web/UI/ActiveControls/AllTests.php
+++ b/tests/unit/Web/UI/ActiveControls/AllTests.php
@@ -11,11 +11,11 @@ class Web_UI_ActiveControls_AllTests {
public static function main() {
PHPUnit_TextUI_TestRunner::run(self::suite());
}
-
+
public static function suite() {
$suite = new PHPUnit_Framework_TestSuite('System.Web.UI.ActiveControls');
-
- $suite->addTestSuite('TActiveHiddenFieldTest');
+
+ $suite->addTestSuite('TActiveHiddenFieldTest');
return $suite;
}
}
@@ -23,4 +23,3 @@ class Web_UI_ActiveControls_AllTests {
if(PHPUnit_MAIN_METHOD == 'Web_UI_ActiveControls_AllTests::main') {
Web_UI_ActiveControls_AllTests::main();
}
-?>
diff --git a/tests/unit/Web/UI/ActiveControls/TActiveHiddenFieldTest.php b/tests/unit/Web/UI/ActiveControls/TActiveHiddenFieldTest.php
index 58821747..6e80bd12 100644
--- a/tests/unit/Web/UI/ActiveControls/TActiveHiddenFieldTest.php
+++ b/tests/unit/Web/UI/ActiveControls/TActiveHiddenFieldTest.php
@@ -14,5 +14,3 @@ class TActiveHiddenFieldTest extends PHPUnit_Framework_TestCase {
$this->assertEquals('Test', $field->getValue());
}
}
-
-?> \ No newline at end of file
diff --git a/tests/unit/Web/UI/AllTests.php b/tests/unit/Web/UI/AllTests.php
index 71b088e4..6885c337 100644
--- a/tests/unit/Web/UI/AllTests.php
+++ b/tests/unit/Web/UI/AllTests.php
@@ -23,10 +23,10 @@ class Web_UI_AllTests {
public static function main() {
PHPUnit_TextUI_TestRunner::run(self::suite());
}
-
+
public static function suite() {
$suite = new PHPUnit_Framework_TestSuite('System.Web.UI');
-
+
$suite->addTestSuite('TClientScriptManagerTest');
$suite->addTestSuite('TControlAdapterTest');
$suite->addTestSuite('TControlTest');
@@ -40,7 +40,7 @@ class Web_UI_AllTests {
$suite->addTestSuite('THtmlWriterTest');
$suite->addTestSuite('TPageStatePersisterTest');
$suite->addTestSuite('TSessionPageStatePersisterTest');
-
+
return $suite;
}
}
@@ -48,4 +48,3 @@ class Web_UI_AllTests {
if(PHPUnit_MAIN_METHOD == 'Web_UI_AllTests::main') {
Web_UI_AllTests::main();
}
-?>
diff --git a/tests/unit/Web/UI/TClientScriptManagerTest.php b/tests/unit/Web/UI/TClientScriptManagerTest.php
index ea360f91..efce0009 100644
--- a/tests/unit/Web/UI/TClientScriptManagerTest.php
+++ b/tests/unit/Web/UI/TClientScriptManagerTest.php
@@ -144,5 +144,4 @@ class TClientScriptManagerTest extends PHPUnit_Framework_TestCase {
throw new PHPUnit_Framework_IncompleteTestError();
}
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/unit/Web/UI/TControlAdapterTest.php b/tests/unit/Web/UI/TControlAdapterTest.php
index 2a173fd8..ff687cc8 100644
--- a/tests/unit/Web/UI/TControlAdapterTest.php
+++ b/tests/unit/Web/UI/TControlAdapterTest.php
@@ -15,46 +15,45 @@ class TControlAdapterTest extends PHPUnit_Framework_TestCase {
public function testGetControl() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetPage() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testCreateChildControls() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testLoadState() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSaveState() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testOnInit() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testOnLoad() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testOnPreRender() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testOnUnload() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testRender() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testRenderChildren() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/unit/Web/UI/TControlTest.php b/tests/unit/Web/UI/TControlTest.php
index 670926be..b6741167 100644
--- a/tests/unit/Web/UI/TControlTest.php
+++ b/tests/unit/Web/UI/TControlTest.php
@@ -15,266 +15,265 @@ class TControlTest extends PHPUnit_Framework_TestCase {
public function test__get() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetHasAdapter() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetAdapter() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetParent() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetNamingContainer() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetPage() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetTemplateControl() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetSourceTemplateControl() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetControlStage() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetID() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetUniqueID() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testFocus() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetClientID() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetSkinID() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetEnableTheming() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetCustomData() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetHasControls() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetControls() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetVisible() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetEnabled() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetHasAttributes() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetAttributes() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testHasAttribute() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetAttribute() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testRemoveAttribute() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetEnableViewState() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetControlState() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testTrackViewState() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetViewState() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testClearViewState() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testBindProperty() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testUnbindProperty() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testAutoBindProperty() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testDataBind() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testEnsureChildControls() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testCreateChildControls() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testFindControl() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testFindControlsByType() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testFindControlsByID() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testClearNamingContainer() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testRegisterObject() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testUnregisterObject() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testIsObjectRegistered() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetHasChildInitialized() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetHasInitialized() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetHasLoadedPostData() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetHasLoaded() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetHasPreRendered() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetRegisteredObject() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetAllowChildControls() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testAddParsedObject() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testAddedControl() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testRemovedControl() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testOnInit() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testOnLoad() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testOnDataBinding() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testOnUnload() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testOnPreRender() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testBubbleEvent() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testBroadcastEvent() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testRenderControl() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testRender() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testRenderChildren() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSaveState() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testLoadState() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testApplyStyleSheetSkin() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/unit/Web/UI/TFormTest.php b/tests/unit/Web/UI/TFormTest.php
index 74cbdb59..7fb6d2b7 100644
--- a/tests/unit/Web/UI/TFormTest.php
+++ b/tests/unit/Web/UI/TFormTest.php
@@ -15,22 +15,21 @@ class TFormTest extends PHPUnit_Framework_TestCase {
public function testRender() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetDefaultButton() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetMethod() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetEnctype() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetName() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/unit/Web/UI/THtmlWriterTest.php b/tests/unit/Web/UI/THtmlWriterTest.php
index 080e2e26..cf3b27e3 100644
--- a/tests/unit/Web/UI/THtmlWriterTest.php
+++ b/tests/unit/Web/UI/THtmlWriterTest.php
@@ -31,7 +31,7 @@ class TestWriter extends TComponent implements ITextWriter
{
$this->write($str."\n");
}
-
+
// Accessors to get value of private vars during tests
public function getFlushedContent() { return $this->_flushedContent; }
public function getStr() { return $this->_str; }
@@ -77,7 +77,7 @@ class THtmlWriterTest extends PHPUnit_Framework_TestCase {
$writer->addAttribute('value','Prado & Cie');
$result=self::readAttribute($writer, '_attributes');
self::assertEquals('text',$result['type']);
- self::assertEquals(THttpUtility::htmlEncode('Prado & Cie'), $result['value']);
+ self::assertEquals(THttpUtility::htmlEncode('Prado & Cie'), $result['value']);
}
public function testRemoveAttribute() {
@@ -129,21 +129,21 @@ class THtmlWriterTest extends PHPUnit_Framework_TestCase {
$writer=new THtmlWriter(self::$output);
$writer->write('Some Text');;
self::assertEquals('Some Text', self::$output->flush());
-
+
}
public function testWriteLine() {
$writer=new THtmlWriter(self::$output);
$writer->writeLine('Some Text');;
self::assertEquals("Some Text\n", self::$output->flush());
-
+
}
public function testWriteBreak() {
$writer=new THtmlWriter(self::$output);
$writer->writeBreak();
self::assertEquals("<br/>", self::$output->flush());
-
+
}
public function testRenderBeginTag() {
@@ -163,5 +163,4 @@ class THtmlWriterTest extends PHPUnit_Framework_TestCase {
self::assertEquals('<div>Div Content</div>', self::$output->flush());
}
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/unit/Web/UI/TPageStatePersisterTest.php b/tests/unit/Web/UI/TPageStatePersisterTest.php
index 2734b142..8ee1cfc9 100644
--- a/tests/unit/Web/UI/TPageStatePersisterTest.php
+++ b/tests/unit/Web/UI/TPageStatePersisterTest.php
@@ -7,18 +7,17 @@ Prado::using('System.Web.UI.TPageStatePersister');
* @package System.Web.UI
*/
class TPageStatePersisterTest extends PHPUnit_Framework_TestCase {
-
+
public function testSetAndGetPage() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSave() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testLoad() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/unit/Web/UI/TPageTest.php b/tests/unit/Web/UI/TPageTest.php
index d6f689e9..5b2f444d 100644
--- a/tests/unit/Web/UI/TPageTest.php
+++ b/tests/unit/Web/UI/TPageTest.php
@@ -15,15 +15,15 @@ class TPageTest extends PHPUnit_Framework_TestCase {
public function testRun() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetCallbackClient() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetCallbackEventTarget() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetCallbackEventParameter() {
throw new PHPUnit_Framework_IncompleteTestError();
}
@@ -39,157 +39,156 @@ class TPageTest extends PHPUnit_Framework_TestCase {
public function testSetAndGetForm() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetValidators() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testValidate() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetIsValid() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetTheme() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetStyleSheetTheme() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testApplyControlSkin() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testApplyControlStyleSheet() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetClientScript() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testOnPreInit() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testOnInitComplete() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testOnPreLoad() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testOnLoadComplete() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testOnPreRenderComplete() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testOnSaveStateComplete() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetIsPostBack() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetIsCallback() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSaveState() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testLoadState() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testRegisterRequiresPostData() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetPostBackEventTarget() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetPostBackEventParameter() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetIsLoadingPostData() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testEnsureRenderInForm() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testBeginFormRender() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testEndFormRender() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetFocus() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetClientSupportsJavaScript() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetHead() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetTitle() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetClientState() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetRequestClientState() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetStatePersisterClass() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetStatePersister() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetEnableStateValidation() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetEnableStateEncryption() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetPagePath() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testRegisterCachingAction() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetCachingStack() {
throw new PHPUnit_Framework_IncompleteTestError();
}
}
-?> \ No newline at end of file
diff --git a/tests/unit/Web/UI/TSessionPageStatePersisterTest.php b/tests/unit/Web/UI/TSessionPageStatePersisterTest.php
index b8758b30..9153ad42 100644
--- a/tests/unit/Web/UI/TSessionPageStatePersisterTest.php
+++ b/tests/unit/Web/UI/TSessionPageStatePersisterTest.php
@@ -7,22 +7,21 @@ Prado::using('System.Web.UI.TSessionPageStatePersister');
* @package System.Web.UI
*/
class TSessionPageStatePersisterTest extends PHPUnit_Framework_TestCase {
-
+
public function testSetAndGetPage() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetHistorySize() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSave() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testLoad() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/unit/Web/UI/TTemplateControlTest.php b/tests/unit/Web/UI/TTemplateControlTest.php
index 97ea8c1d..7276a2b0 100644
--- a/tests/unit/Web/UI/TTemplateControlTest.php
+++ b/tests/unit/Web/UI/TTemplateControlTest.php
@@ -15,34 +15,33 @@ class TTemplateControlTest extends PHPUnit_Framework_TestCase {
public function testGetIsSourceTemplateControl() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetTemplateDirectory() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testCreateChildControls() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testRegisterContent() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testRegisterContentPlaceHolder() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetMasterClass() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetMaster() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testInjectContent() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/unit/Web/UI/TTemplateManagerTest.php b/tests/unit/Web/UI/TTemplateManagerTest.php
index 46c17538..dfe452bf 100644
--- a/tests/unit/Web/UI/TTemplateManagerTest.php
+++ b/tests/unit/Web/UI/TTemplateManagerTest.php
@@ -7,18 +7,17 @@ Prado::using('System.Web.UI.TTemplateManager');
* @package System.Web.UI
*/
class TTemplateManagerTest extends PHPUnit_Framework_TestCase {
-
+
public function testInit() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetTemplateByClassName() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetTemplateByFileName() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
-}
-?> \ No newline at end of file
+
+} \ No newline at end of file
diff --git a/tests/unit/Web/UI/TTemplateTest.php b/tests/unit/Web/UI/TTemplateTest.php
index 2bb6599b..2d802094 100644
--- a/tests/unit/Web/UI/TTemplateTest.php
+++ b/tests/unit/Web/UI/TTemplateTest.php
@@ -7,42 +7,41 @@ Prado::using('System.Web.UI.TTemplateManager');
* @package System.Web.UI
*/
class TTemplateTest extends PHPUnit_Framework_TestCase {
-
+
public function testConstruct() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetTemplateFile() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetIsSourceTemplate() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetContextPath() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetDirective() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetHashCode() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetItems() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testInstantiateIn() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetIncludedFiles() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
-}
-?> \ No newline at end of file
+
+} \ No newline at end of file
diff --git a/tests/unit/Web/UI/TThemeManagerTest.php b/tests/unit/Web/UI/TThemeManagerTest.php
index 1a514d2b..028b222a 100644
--- a/tests/unit/Web/UI/TThemeManagerTest.php
+++ b/tests/unit/Web/UI/TThemeManagerTest.php
@@ -7,26 +7,25 @@ Prado::using('System.Web.UI.TThemeManager');
* @package System.Web.UI
*/
class TThemeManagerTest extends PHPUnit_Framework_TestCase {
-
+
public function testInit() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetTheme() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetAvailableThemes() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetBasePath() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testSetAndGetBaseUrl() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/unit/Web/UI/TThemeTest.php b/tests/unit/Web/UI/TThemeTest.php
index e7fa376d..aeeeee65 100644
--- a/tests/unit/Web/UI/TThemeTest.php
+++ b/tests/unit/Web/UI/TThemeTest.php
@@ -7,34 +7,33 @@ Prado::using('System.Web.UI.TThemeManager');
* @package System.Web.UI
*/
class TThemeTest extends PHPUnit_Framework_TestCase {
-
+
public function testConstruct() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetName() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetBaseUrl() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetBasePath() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testApplySkin() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetStyleSheetFiles() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-
+
public function testGetJavaScriptFiles() {
throw new PHPUnit_Framework_IncompleteTestError();
}
-}
-?> \ No newline at end of file
+} \ No newline at end of file
diff --git a/tests/unit/Web/UI/WebControls/AllTests.php b/tests/unit/Web/UI/WebControls/AllTests.php
index 7d0b1632..5ffa45a2 100644
--- a/tests/unit/Web/UI/WebControls/AllTests.php
+++ b/tests/unit/Web/UI/WebControls/AllTests.php
@@ -14,15 +14,15 @@ class Web_UI_WebControls_AllTests {
public static function main() {
PHPUnit_TextUI_TestRunner::run(self::suite());
}
-
+
public static function suite() {
$suite = new PHPUnit_Framework_TestSuite('System.Web.UI.WebControls');
-
+
$suite->addTestSuite('TDropDownListTest');
$suite->addTestSuite('TLabelTest');
$suite->addTestSuite('TRequiredFieldValidatorTest');
$suite->addTestSuite('TXmlTransformTest');
-
+
return $suite;
}
}
@@ -30,4 +30,3 @@ class Web_UI_WebControls_AllTests {
if(PHPUnit_MAIN_METHOD == 'Web_UI_WebControls_AllTests::main') {
Web_UI_WebControls_AllTests::main();
}
-?>
diff --git a/tests/unit/Web/UI/WebControls/TDropDownListTest.php b/tests/unit/Web/UI/WebControls/TDropDownListTest.php
index 503466fe..d27ebb9c 100644
--- a/tests/unit/Web/UI/WebControls/TDropDownListTest.php
+++ b/tests/unit/Web/UI/WebControls/TDropDownListTest.php
@@ -27,4 +27,3 @@ class TDropDownListTest extends PHPUnit_Framework_TestCase {
}
}
-?>
diff --git a/tests/unit/Web/UI/WebControls/TLabelTest.php b/tests/unit/Web/UI/WebControls/TLabelTest.php
index 0e5577d5..88d8aec8 100644
--- a/tests/unit/Web/UI/WebControls/TLabelTest.php
+++ b/tests/unit/Web/UI/WebControls/TLabelTest.php
@@ -15,5 +15,3 @@ class TLabelTest extends PHPUnit_Framework_TestCase {
$this->assertEquals('Test', $label->getText());
}
}
-
-?> \ No newline at end of file
diff --git a/tests/unit/Web/UI/WebControls/TRequiredFieldValidatorTest.php b/tests/unit/Web/UI/WebControls/TRequiredFieldValidatorTest.php
index 894c3899..43ed2c9d 100644
--- a/tests/unit/Web/UI/WebControls/TRequiredFieldValidatorTest.php
+++ b/tests/unit/Web/UI/WebControls/TRequiredFieldValidatorTest.php
@@ -19,5 +19,3 @@ class TRequiredFieldValidatorTest extends PHPUnit_Framework_TestCase {
$this->assertEquals('', $value);
}
}
-
-?> \ No newline at end of file
diff --git a/tests/unit/Web/UI/WebControls/TXmlTransformTest.php b/tests/unit/Web/UI/WebControls/TXmlTransformTest.php
index 6c6d9456..f93e9897 100644
--- a/tests/unit/Web/UI/WebControls/TXmlTransformTest.php
+++ b/tests/unit/Web/UI/WebControls/TXmlTransformTest.php
@@ -51,7 +51,7 @@ class TXmlTransformTest extends PHPUnit_Framework_TestCase {
$transform->setTransformContent($expected);
$this->assertEquals($expected, $transform->getTransformContent());
}
-
+
public function testSetTransformPathAsFile() {
$expected = $this->transformPath;
$transform = new TXmlTransform();
@@ -120,10 +120,9 @@ class TXmlTransformTest extends PHPUnit_Framework_TestCase {
$actual = $textWriter->flush();
self::assertEquals($expected, $actual);
}
-
+
public function testRenderWithBodyAsDocumentAndTransformPath() {
throw new PHPUnit_Framework_IncompleteTestError();
}
}
-?>
diff --git a/tests/unit/Xml/AllTests.php b/tests/unit/Xml/AllTests.php
index d934786b..afb4c7a8 100644
--- a/tests/unit/Xml/AllTests.php
+++ b/tests/unit/Xml/AllTests.php
@@ -12,14 +12,14 @@ class Xml_AllTests {
public static function main() {
PHPUnit_TextUI_TestRunner::run(self::suite());
}
-
+
public static function suite() {
$suite = new PHPUnit_Framework_TestSuite('System.Xml');
-
+
$suite->addTestSuite('TXmlDocumentTest');
$suite->addTestSuite('TXmlElementTest');
$suite->addTestSuite('TXmlElementListTest');
-
+
return $suite;
}
}
@@ -27,4 +27,3 @@ class Xml_AllTests {
if(PHPUnit_MAIN_METHOD == 'Xml_AllTests::main') {
Xml_AllTests::main();
}
-?>
diff --git a/tests/unit/Xml/TXmlDocumentTest.php b/tests/unit/Xml/TXmlDocumentTest.php
index 2ab95641..54e4b5aa 100644
--- a/tests/unit/Xml/TXmlDocumentTest.php
+++ b/tests/unit/Xml/TXmlDocumentTest.php
@@ -34,7 +34,7 @@ class TXmlDocumentTest extends PHPUnit_Framework_TestCase {
$xmldoc->loadFromFile('unexistentXmlFile.xml');
self::fail('Expected TIOException not thrown');
} catch (TIOException $e) {}
-
+
self::assertTrue($xmldoc->loadFromFile($file));
self::assertEquals('1.0', $xmldoc->getVersion());
self::assertEquals('UTF-8',$xmldoc->getEncoding());
@@ -61,9 +61,9 @@ class TXmlDocumentTest extends PHPUnit_Framework_TestCase {
// Result string should be :
$resultString="<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <node param=\"attribute1\"\n</root>";
self::assertEquals($xmlString, $magicString);
-
+
}
-
+
public function testSaveToFile() {
$file=dirname(__FILE__).'/data/tmp.xml';
if (!is_writable(dirname($file))) self::markTestSkipped(dirname($file).' must be writable for this test');
@@ -77,4 +77,3 @@ class TXmlDocumentTest extends PHPUnit_Framework_TestCase {
if (is_file($file)) unlink ($file);
}
}
-?>
diff --git a/tests/unit/Xml/TXmlElementListTest.php b/tests/unit/Xml/TXmlElementListTest.php
index b124dfbe..7667c64d 100644
--- a/tests/unit/Xml/TXmlElementListTest.php
+++ b/tests/unit/Xml/TXmlElementListTest.php
@@ -23,7 +23,7 @@ class TXmlElementListTest extends PHPUnit_Framework_TestCase {
$newElement=new TXmlElement('newTag');
$list->insertAt(0,$newElement);
self::assertEquals($newElement,$list->itemAt(0));
-
+
}
public function testRemoveAt() {
@@ -34,4 +34,3 @@ class TXmlElementListTest extends PHPUnit_Framework_TestCase {
self::assertEquals($newElement,$list->removeAt(0));
}
}
-?>
diff --git a/tests/unit/Xml/TXmlElementTest.php b/tests/unit/Xml/TXmlElementTest.php
index d7b86832..49cae36f 100644
--- a/tests/unit/Xml/TXmlElementTest.php
+++ b/tests/unit/Xml/TXmlElementTest.php
@@ -7,7 +7,7 @@ Prado::using('System.Xml.TXmlDocument');
*/
class TXmlElementTest extends PHPUnit_Framework_TestCase {
- public function setUp() {
+ public function setUp() {
}
public function testConstruct() {
@@ -80,4 +80,3 @@ class TXmlElementTest extends PHPUnit_Framework_TestCase {
self::assertEquals('<tag key="value">value</tag>', (string)$element);
}
}
-?>
diff --git a/travis.php.ini b/travis.php.ini
deleted file mode 100644
index 03a47372..00000000
--- a/travis.php.ini
+++ /dev/null
@@ -1 +0,0 @@
-memory_limit = 1024M \ No newline at end of file