From c198ade3610cecd190b74d8519947ad734a0bcca Mon Sep 17 00:00:00 2001 From: Fabio Bas Date: Sat, 7 Nov 2015 15:33:02 +0100 Subject: Update doc --- demos/quickstart/protected/pages/JuiControls/Home.page | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'demos') diff --git a/demos/quickstart/protected/pages/JuiControls/Home.page b/demos/quickstart/protected/pages/JuiControls/Home.page index 4bf8f7fe..7c0c065f 100644 --- a/demos/quickstart/protected/pages/JuiControls/Home.page +++ b/demos/quickstart/protected/pages/JuiControls/Home.page @@ -81,8 +81,8 @@ For informations of the specific options of each interaction, follow jQuery-UI I displays a progress bar.
  • - TJuiProgressbar - provides a list of suggestions on the current partial word typed in the textbox + TJuiAutoComplete + is a textbox that provides a list of suggestion on the current partial typed word
  • TJuiDialog -- cgit v1.2.3 From 151b2f7d102a5988b63255d27c9ad78202c16355 Mon Sep 17 00:00:00 2001 From: Fabio Bas Date: Mon, 9 Nov 2015 00:33:08 +0100 Subject: Added (partial) website + misc updates for release * recreated the prado website in demos/ * updated some docs to reflect the usage of jquery; removed guide to prototype * updated composer * added task for apigen4 (theme still missing) --- .gitignore | 6 +- HISTORY | 4 +- build.xml | 21 +- buildscripts/phing/tasks/ApiGen4Task.php | 435 +++++++ buildscripts/texbuilder/quickstart/pages.php | 43 +- composer.json | 22 +- composer.lock | 1319 ++++++++++++-------- demos/quickstart/protected/controls/TopicList.tpl | 2 - .../quickstart/protected/controls/de/TopicList.tpl | 2 - .../quickstart/protected/controls/es/TopicList.tpl | 2 - .../quickstart/protected/controls/fr/TopicList.tpl | 2 - .../quickstart/protected/controls/id/TopicList.tpl | 2 - .../quickstart/protected/controls/ja/TopicList.tpl | 2 - .../quickstart/protected/controls/pl/TopicList.tpl | 2 - .../quickstart/protected/controls/zh/TopicList.tpl | 2 - .../pages/ActiveControls/ActiveRatingList.page | 2 +- .../pages/ActiveControls/Introduction.page | 4 +- .../protected/pages/Advanced/Scripts1.page | 96 -- .../protected/pages/Advanced/Scripts2.page | 253 ---- .../protected/pages/Advanced/Scripts3.page | 29 +- .../protected/pages/Advanced/es/Scripts1.page | 96 -- .../protected/pages/Advanced/es/Scripts2.page | 253 ---- .../protected/pages/Advanced/id/Scripts1.page | 86 -- .../protected/pages/Advanced/id/Scripts2.page | 214 ---- .../protected/pages/Controls/HtmlArea4.page | 2 +- .../protected/pages/Controls/Markdown.page | 2 +- .../protected/pages/Database/ViewsArUpdate.page | 14 +- .../protected/pages/Fundamentals/Pages.page | 2 +- .../pages/GettingStarted/CommandLine.page | 12 +- .../pages/GettingStarted/Installation.page | 4 +- .../pages/GettingStarted/Upgrading32.page | 8 +- .../protected/pages/GettingStarted/Wsat.page | 10 +- .../protected/pages/JuiControls/Home.page | 10 +- .../protected/pages/JuiControls/Interactions.page | 12 +- .../protected/pages/JuiControls/Widgets.page | 10 +- demos/site/.htaccess | 8 + demos/site/assets/.gitignore | 2 + demos/site/index.php | 17 + demos/site/protected/.htaccess | 1 + demos/site/protected/Common/SimpleMenu.php | 86 ++ demos/site/protected/Layouts/MainLayout.php | 5 + demos/site/protected/Layouts/MainLayout.tpl | 56 + demos/site/protected/Pages/About.page | 55 + demos/site/protected/Pages/Demos.page | 31 + demos/site/protected/Pages/Documentation.page | 42 + demos/site/protected/Pages/Download.page | 116 ++ demos/site/protected/Pages/Home.page | 37 + demos/site/protected/Pages/License.page | 28 + demos/site/protected/Pages/Tos.page | 42 + demos/site/protected/application.xml | 40 + demos/site/protected/runtime/.gitignore | 2 + demos/site/themes/Prado/favicon.ico | Bin 0 -> 3638 bytes demos/site/themes/Prado/imgs/bg.gif | Bin 0 -> 307 bytes demos/site/themes/Prado/imgs/bigmantis.jpg | Bin 0 -> 13447 bytes demos/site/themes/Prado/imgs/bigmantis.jpg.1 | Bin 0 -> 13447 bytes demos/site/themes/Prado/imgs/bottomgradient.gif | Bin 0 -> 269 bytes demos/site/themes/Prado/imgs/bullet_one.gif | Bin 0 -> 343 bytes demos/site/themes/Prado/imgs/bullet_three.gif | Bin 0 -> 369 bytes demos/site/themes/Prado/imgs/bullet_two.gif | Bin 0 -> 355 bytes demos/site/themes/Prado/imgs/mainmenu_active.gif | Bin 0 -> 154 bytes demos/site/themes/Prado/imgs/mainmenu_hover.gif | Bin 0 -> 155 bytes demos/site/themes/Prado/imgs/pradodownload.gif | Bin 0 -> 7159 bytes demos/site/themes/Prado/imgs/pradoheader.gif | Bin 0 -> 15430 bytes demos/site/themes/Prado/imgs/statementsbg.gif | Bin 0 -> 327 bytes demos/site/themes/Prado/style.css | 765 ++++++++++++ framework/pradolite.php | 2 +- 66 files changed, 2675 insertions(+), 1645 deletions(-) create mode 100644 buildscripts/phing/tasks/ApiGen4Task.php delete mode 100755 demos/quickstart/protected/pages/Advanced/Scripts1.page delete mode 100755 demos/quickstart/protected/pages/Advanced/Scripts2.page delete mode 100755 demos/quickstart/protected/pages/Advanced/es/Scripts1.page delete mode 100755 demos/quickstart/protected/pages/Advanced/es/Scripts2.page delete mode 100755 demos/quickstart/protected/pages/Advanced/id/Scripts1.page delete mode 100755 demos/quickstart/protected/pages/Advanced/id/Scripts2.page create mode 100644 demos/site/.htaccess create mode 100755 demos/site/assets/.gitignore create mode 100755 demos/site/index.php create mode 100755 demos/site/protected/.htaccess create mode 100644 demos/site/protected/Common/SimpleMenu.php create mode 100644 demos/site/protected/Layouts/MainLayout.php create mode 100644 demos/site/protected/Layouts/MainLayout.tpl create mode 100644 demos/site/protected/Pages/About.page create mode 100644 demos/site/protected/Pages/Demos.page create mode 100644 demos/site/protected/Pages/Documentation.page create mode 100644 demos/site/protected/Pages/Download.page create mode 100755 demos/site/protected/Pages/Home.page create mode 100644 demos/site/protected/Pages/License.page create mode 100644 demos/site/protected/Pages/Tos.page create mode 100644 demos/site/protected/application.xml create mode 100755 demos/site/protected/runtime/.gitignore create mode 100644 demos/site/themes/Prado/favicon.ico create mode 100644 demos/site/themes/Prado/imgs/bg.gif create mode 100644 demos/site/themes/Prado/imgs/bigmantis.jpg create mode 100644 demos/site/themes/Prado/imgs/bigmantis.jpg.1 create mode 100644 demos/site/themes/Prado/imgs/bottomgradient.gif create mode 100644 demos/site/themes/Prado/imgs/bullet_one.gif create mode 100644 demos/site/themes/Prado/imgs/bullet_three.gif create mode 100644 demos/site/themes/Prado/imgs/bullet_two.gif create mode 100644 demos/site/themes/Prado/imgs/mainmenu_active.gif create mode 100644 demos/site/themes/Prado/imgs/mainmenu_hover.gif create mode 100644 demos/site/themes/Prado/imgs/pradodownload.gif create mode 100755 demos/site/themes/Prado/imgs/pradoheader.gif create mode 100644 demos/site/themes/Prado/imgs/statementsbg.gif create mode 100755 demos/site/themes/Prado/style.css (limited to 'demos') diff --git a/.gitignore b/.gitignore index ff8c3b5b..9fc6c85f 100644 --- a/.gitignore +++ b/.gitignore @@ -28,9 +28,11 @@ tests/unit/Data/db/test.db vendor/* bin/phpunit bin/phing -bin/apigen.php +bin/apigen bin/coveralls -bin/dbunit.php +bin/dbunit +bin/jsonlint +bin/validate-json #OSX .DS_Store diff --git a/HISTORY b/HISTORY index 17c6bb84..2eeb9bc6 100644 --- a/HISTORY +++ b/HISTORY @@ -45,7 +45,7 @@ Version 3.2.3 Nov 26, 2013 BUG: Issue #467 - TSafeHtml error on php 5.5 (ctrlaltca) BUG: Issue #470 - Problem escaping characters in TActiveDropDownList (ctrlaltca) BUG: Issue #468 - Update prototype to workaround IE10 bug (Raoul Bhatia) -BUG: Issue #469 - JS Update to TDatePicker (Jrgen Aloy) +BUG: Issue #469 - JS Update to TDatePicker (Jürgen Aloy) BUG: Issue #465 - Textmate editor plugin template error (ctrlaltca) BUG: Issue #472 - No https support from wsdl generator (Marcin Piotrowski) ENH: Issue #473 - wsdl support for additional attributes of a custom type's property (Marcin Piotrowski) @@ -179,7 +179,7 @@ BUG: Issue #368 - Clearing selection of a TActiveDropDownList in callback should CHG: Issue #370 - Deprecated TSqliteCache since it's based on php's sqlite extension (ctrlaltca) BUG: Issue #371 - Sorting on TActiveDataGrid autogenerated column not work (ctrlaltca) ENH: Issue #372 - ActiveControls's Visible property should be reflected clientside on ajax requests (ctrlaltca) -BUG: Issue #375 - Iconv error using htmlarea in TActiveDataList and chars like "" (ctrlaltca) +BUG: Issue #375 - Iconv error using htmlarea in TActiveDataList and chars like "áéíóúñ" (ctrlaltca) BUG: Issue #377 - THtmlArea Template Pluggin Options Parse Error (ctrlaltca) BUG: Issue #379 - JSON float encoding depends on current locale (ctrlaltca) BUG: Issue #380 - TCustomValidator's ControlToValidate should be optional (ctrlaltca) diff --git a/build.xml b/build.xml index 8816b270..90ca164c 100644 --- a/build.xml +++ b/build.xml @@ -11,6 +11,7 @@ + @@ -102,6 +103,7 @@ + Indexing API manuals... @@ -224,11 +225,11 @@ Moving doc files to build... - + - + Generating compressed distribution files... @@ -244,14 +245,6 @@ - Moving HTML docs to Web folder... - - - - - - - Distribution Completed!!! diff --git a/buildscripts/phing/tasks/ApiGen4Task.php b/buildscripts/phing/tasks/ApiGen4Task.php new file mode 100644 index 00000000..ef5d2b97 --- /dev/null +++ b/buildscripts/phing/tasks/ApiGen4Task.php @@ -0,0 +1,435 @@ +. + */ + +require_once 'phing/Task.php'; + +/** + * ApiGen task (http://apigen.org). + * + * @package phing.tasks.ext.apigen + * @author Martin Srank + * @author Jaroslav Hanslík + * @since 2.4.10 + */ +class ApiGen4Task extends Task +{ + /** + * Default ApiGen executable name. + * + * @var string + */ + private $executable = 'apigen'; + + /** + * Default options for ApiGen. + * + * @var array + */ + private $options = array(); + private $flags = array(); + + /** + * Sets the ApiGen executable name. + * + * @param string $executable + */ + public function setExecutable($executable) + { + $this->executable = (string) $executable; + } + + /** + * Sets the config file name. + * + * @param string $config + */ + public function setConfig($config) + { + $this->options['config'] = (string) $config; + } + + /** + * Sets source files or directories. + * + * @param string $source + */ + public function setSource($source) + { + $this->options['source'] = explode(',', $source); + } + + /** + * Sets the destination directory. + * + * @param string $destination + */ + public function setDestination($destination) + { + $this->options['destination'] = (string) $destination; + } + + /** + * Sets list of allowed file extensions. + * + * @param string $extensions + */ + public function setExtensions($extensions) + { + $this->options['extensions'] = explode(',', $extensions); + } + + /** + * Sets masks (case sensitive) to exclude files or directories from processing. + * + * @param string $exclude + */ + public function setExclude($exclude) + { + $this->options['exclude'] = explode(',', $exclude); + } + + /** + * Sets masks to exclude elements from documentation generating. + * + * @param string $skipDocPath + */ + public function setSkipDocPath($skipDocPath) + { + $this->options['skip-doc-path'] = explode(',', $skipDocPath); + } + + /** + * Sets a name prefix to exclude elements from documentation generating. + * + * @param string $skipDocPrefix + */ + public function setSkipDocPrefix($skipDocPrefix) + { + $this->options['skip-doc-prefix'] = explode(',', $skipDocPrefix); + } + + /** + * Sets the character set of source files. + * + * @param string $charset + */ + public function setCharset($charset) + { + $this->options['charset'] = explode(',', $charset); + } + + /** + * Sets the main project name prefix. + * + * @param string $main + */ + public function setMain($main) + { + $this->options['main'] = (string) $main; + } + + /** + * Sets the title of generated documentation. + * + * @param string $title + */ + public function setTitle($title) + { + $this->options['title'] = (string) $title; + } + + /** + * Sets the documentation base URL. + * + * @param string $baseUrl + */ + public function setBaseUrl($baseUrl) + { + $this->options['base-url'] = (string) $baseUrl; + } + + /** + * Sets the Google Custom Search ID. + * + * @param string $googleCseId + */ + public function setGoogleCseId($googleCseId) + { + $this->options['google-cse-id'] = (string) $googleCseId; + } + + /** + * Sets the Google Custom Search label. + * + * @param string $googleCseLabel + */ + public function setGoogleCseLabel($googleCseLabel) + { + $this->options['google-cse-label'] = (string) $googleCseLabel; + } + + /** + * Sets the Google Analytics tracking code. + * + * @param string $googleAnalytics + */ + public function setGoogleAnalytics($googleAnalytics) + { + $this->options['google-analytics'] = (string) $googleAnalytics; + } + + /** + * Sets the template config file name. + * + * @param string $templateConfig + */ + public function setTemplateConfig($templateConfig) + { + $this->options['template-config'] = (string) $templateConfig; + } + + /** + * Sets a list of HTML tags allowed in the documentation. + * + * @param string $allowedHtml + */ + public function setAllowedHtml($allowedHtml) + { + $this->options['allowed-html'] = (string) $allowedHtml; + } + + /** + * Sets how elements should be grouped in the menu. + * + * @param string $groups + */ + public function setGroups($groups) + { + $this->options['groups'] = (string) $groups; + } + + /** + * Sets element types for search input autocomplete. + * + * @param string $autocomplete + */ + public function setAutocomplete($autocomplete) + { + $this->options['autocomplete'] = (string) $autocomplete; + } + + /** + * Sets the element access levels. + * + * Documentation only for methods and properties with the given access level will be generated. + * + * @param string $accessLevels + */ + public function setAccessLevels($accessLevels) + { + $this->options['access-levels'] = (string) $accessLevels; + } + + /** + * Sets if documentation for elements marked as internal and internal documentation parts should be generated. + * + * @param boolean $internal + */ + public function setInternal($internal) + { + $this->options['internal'] = (bool) $internal; + } + + /** + * Sets if documentation for PHP internal classes should be generated. + * + * @param boolean $php + */ + public function setPhp($php) + { + $this->flags['php'] = (bool) $php; + } + + /** + * Sets if tree view of classes, interfaces, traits and exceptions should be generated. + * + * @param boolean $tree + */ + public function setTree($tree) + { + $this->options['tree'] = (bool) $tree; + } + + /** + * Sets if documentation for deprecated elements should be generated. + * + * @param boolean $deprecated + */ + public function setDeprecated($deprecated) + { + $this->flags['deprecated']= (bool) $deprecated; + } + + /** + * Sets if documentation of tasks should be generated. + * + * @param boolean $todo + */ + public function setTodo($todo) + { + $this->flags['todo'] = (bool) $todo; + } + + /** + * Sets if highlighted source code files should be generated. + * + * @param boolean $sourceCode + */ + public function setSourceCode($sourceCode) + { + $this->flags['no-source-code'] = (bool) ! $sourceCode; + } + + /** + * Sets if a link to download documentation as a ZIP archive should be generated. + * + * @param boolean $download + */ + public function setDownload($download) + { + $this->options['download'] = (bool) $download; + } + + /** + * Sets a file name for checkstyle report of poorly documented elements. + * + * @param string $report + */ + public function setReport($report) + { + $this->options['report'] = (string) $report; + } + + /** + * Sets if the destination directory should be wiped out first. + * + * @param boolean $wipeout + */ + public function setWipeout($wipeout) + { + $this->options['wipeout'] = (bool) $wipeout; + } + + /** + * Enables/disables scaning and generating messages. + * + * @param boolean $quiet + */ + public function setQuiet($quiet) + { + $this->options['quiet'] = (bool) $quiet; + } + + /** + * Enables/disables the debug mode. + * + * @param boolean $debug + */ + public function setDebug($debug) + { + $this->options['debug'] = (bool) $debug; + } + + /** + * Runs ApiGen. + * + * @throws BuildException If something is wrong. + * @see Task::main() + */ + public function main() + { + if ('apigen' !== $this->executable && !is_file($this->executable)) { + throw new BuildException(sprintf('Executable %s not found', $this->executable), $this->getLocation()); + } + + if (!empty($this->options['config'])) { + // Config check + if (!is_file($this->options['config'])) { + throw new BuildException(sprintf( + 'Config file %s doesn\'t exist', + $this->options['config'] + ), $this->getLocation()); + } + } else { + // Source check + if (empty($this->options['source'])) { + throw new BuildException('Source is not set', $this->getLocation()); + } + // Destination check + if (empty($this->options['destination'])) { + throw new BuildException('Destination is not set', $this->getLocation()); + } + } + + // Source check + if (!empty($this->options['source'])) { + foreach ($this->options['source'] as $source) { + if (!file_exists($source)) { + throw new BuildException(sprintf('Source %s doesn\'t exist', $source), $this->getLocation()); + } + } + } + + // Execute ApiGen + exec(escapeshellcmd($this->executable) . ' generate ' . $this->constructArguments(), $output, $return); + + $logType = 0 === $return ? Project::MSG_INFO : Project::MSG_ERR; + foreach ($output as $line) { + $this->log($line, $logType); + } + } + + /** + * Generates command line arguments for the ApiGen executable. + * + * @return string + */ + protected function constructArguments() + { + $args = array(); + foreach ($this->options as $option => $value) { + if (is_bool($value)) { + $args[] = '--' . $option . '=' . ($value ? 'yes' : 'no'); + } elseif (is_array($value)) { + foreach ($value as $v) { + $args[] = '--' . $option . '=' . escapeshellarg($v); + } + } else { + $args[] = '--' . $option . '=' . escapeshellarg($value); + } + } + + foreach ($this->flags as $option => $value) { + if($value) + $args[] = '--' . $option; + } + + return implode(' ', $args); + } +} diff --git a/buildscripts/texbuilder/quickstart/pages.php b/buildscripts/texbuilder/quickstart/pages.php index 1fb94431..bbdec29b 100644 --- a/buildscripts/texbuilder/quickstart/pages.php +++ b/buildscripts/texbuilder/quickstart/pages.php @@ -9,13 +9,15 @@ $pages['Getting Started'] = array( 'GettingStarted/AboutPrado.page', 'GettingStarted/Installation.page', 'GettingStarted/NewFeatures.page', - 'GettingStarted/Upgrading.page' + 'GettingStarted/Upgrading.page', + 'GettingStarted/Upgrading32.page' ); $pages['Tutorials'] = array( 'GettingStarted/HelloWorld.page', 'Fundamentals/Hangman.page', - 'GettingStarted/CommandLine.page' + 'GettingStarted/CommandLine.page', + 'GettingStarted/Wsat.page' ); $pages['Tutorial: Currency Converter'] = array( @@ -26,13 +28,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 +65,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 +76,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', @@ -125,24 +126,32 @@ $pages['Control Reference : Active Controls (AJAX)'] = array( 'ActiveControls/ActivePanel.page', 'ActiveControls/ActiveRadioButton.page', 'ActiveControls/ActiveRadioButtonList.page', + 'ActiveControls/ActiveRatingList.page', 'ActiveControls/ActiveRepeater.page', 'ActiveControls/ActiveTextBox.page', 'ActiveControls/AutoComplete.page', 'ActiveControls/Callback.page', + 'ActiveControls/EventTriggeredCallback.page', + 'ActiveControls/TimeTriggeredCallback.page', + 'ActiveControls/ValueTriggeredCallback.page', + 'ActiveControls/DragDrop.page', + 'ActiveControls/InPlaceTextBox.page', 'ActiveControls/CallbackClientScript.page', 'ActiveControls/CallbackClientSide.page', 'ActiveControls/CallbackEventParameter.page', - 'ActiveControls/CallbackOptions.page', - 'ActiveControls/DragDrop.page', - 'ActiveControls/EventTriggeredCallback.page', - 'ActiveControls/InPlaceTextBox.page', - 'ActiveControls/TimeTriggeredCallback.page', - 'ActiveControls/ValueTriggeredCallback.page'); + 'ActiveControls/CallbackOptions.page' + ); $pages['Active Control Overview'] = array( - 'ActiveControls/Home.page', + 'ActiveControls/Home.page', 'ActiveControls/Introduction.page'); +$pages['Control Reference : Jui Controls (jQuery UI)'] = array( + 'JuiControls/Home.page', + 'JuiControls/Interactions.page', + 'JuiControls/Widgets.page' + ); + $pages['Write New Controls'] = array( 'Controls/NewControl.page'); @@ -154,7 +163,9 @@ $pages['Working with Databases'] = array( 'Database/DAO.page', 'Database/ActiveRecord.page', 'Database/Scaffold.page', - 'Database/SqlMap.page'); + 'Database/SqlMap.page', + 'Database/ViewsArUpdate.page' + ); $pages['Advanced Topics'] = array( 'Advanced/Collections.page', @@ -171,8 +182,6 @@ $pages['Advanced Topics'] = array( $pages['Client-side Scripting'] = array( 'Advanced/Scripts.page', - 'Advanced/Scripts1.page', - 'Advanced/Scripts2.page', 'Advanced/Scripts3.page'); return $pages; diff --git a/composer.json b/composer.json index 7e692f53..f3e2b1cc 100644 --- a/composer.json +++ b/composer.json @@ -11,6 +11,19 @@ "email": "ctrlaltca@gmail.com", "role" : "Developer" }, + { + "name": "Ciro Mattia Gonano", + "email": "ciromattia@gmail.com", + "role" : "Github/Packagist Maintainer" + }, + { + "name": "David Otto", + "role" : "Developer" + }, + { + "name": "Jens Klaer", + "role" : "Developer" + }, { "name": "Christophe Boulain", "email": "christophe.boulain@gmail.com", @@ -20,11 +33,6 @@ "name": "Robin J. Rogge", "email": "rojaro@gmail.com", "role" : "Developer" - }, - { - "name": "Ciro Mattia Gonano", - "email": "ciromattia@gmail.com", - "role" : "Github/Packagist Maintainer" } ], "require": { @@ -42,8 +50,8 @@ "phpunit/phpunit-selenium": ">=1.2", "phpunit/php-invoker": "*", "phpunit/phpunit-story": "*", - "phing/phing" : "2.4.14", - "apigen/apigen": "2.*", + "phing/phing" : "2.*", + "apigen/apigen": "*", "satooshi/php-coveralls": "dev-master" }, "provide" : { diff --git a/composer.lock b/composer.lock index e50f1900..d6f18a17 100644 --- a/composer.lock +++ b/composer.lock @@ -1,10 +1,11 @@ { "_readme": [ "This file locks the dependencies of your project to a known state", - "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "16bb0dc37f5f9efa8c30a4538c6d3fba", + "hash": "a1bde09fd86627591ec5df56e38dcbe7", + "content-hash": "d41db787e9edab8a7ca78b4c83e1e0f2", "packages": [], "packages-dev": [ { @@ -56,48 +57,61 @@ }, { "name": "apigen/apigen", - "version": "2.8.0", + "version": "v4.1.1", "source": { "type": "git", - "url": "https://github.com/apigen/ApiGen.git", - "reference": "4987551632c3ad3fb7e89cf6dc3fe601e45578c3" + "url": "https://github.com/ApiGen/ApiGen.git", + "reference": "e9aff53d56d2b74104dee2b88396eb614e9717d5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/apigen/ApiGen/zipball/4987551632c3ad3fb7e89cf6dc3fe601e45578c3", - "reference": "4987551632c3ad3fb7e89cf6dc3fe601e45578c3", + "url": "https://api.github.com/repos/ApiGen/ApiGen/zipball/e9aff53d56d2b74104dee2b88396eb614e9717d5", + "reference": "e9aff53d56d2b74104dee2b88396eb614e9717d5", "shasum": "" }, "require": { - "andrewsville/php-token-reflection": ">=1.3.1", - "dg/texy": ">=2.1.0", - "kukulich/fshl": ">=2.1.0", - "nette/nette": ">=2.0.5", - "php": ">=5.3.0" + "andrewsville/php-token-reflection": "~1.4", + "apigen/theme-bootstrap": "~1.1.2", + "apigen/theme-default": "~1.0.1", + "herrera-io/phar-update": "~2.0", + "kdyby/events": "~2.0", + "kukulich/fshl": "~2.1", + "latte/latte": "~2.2", + "michelf/php-markdown": "~1.4", + "nette/application": "~2.2", + "nette/bootstrap": "~2.2", + "nette/di": "~2.2", + "nette/mail": "~2.2", + "nette/neon": "~2.2", + "nette/robot-loader": "~2.2", + "nette/safe-stream": "~2.2", + "php": ">=5.4", + "symfony/console": "~2.6", + "symfony/options-resolver": "~2.6.1", + "symfony/yaml": "~2.6", + "tracy/tracy": "~2.2" }, - "suggest": { - "ext-bz2": "*", - "ext-phar": "*", - "ext-zip": "*", - "ext-zlib": "*" + "require-dev": { + "herrera-io/box": "~1.6", + "mockery/mockery": "~0.9" }, "bin": [ - "apigen.php" + "bin/apigen" ], "type": "library", "extra": { "branch-alias": { - "dev-develop": "3.0.0-dev" + "dev-master": "4.1.0-dev" } }, "autoload": { - "psr-0": { - "ApiGen": "./" + "psr-4": { + "ApiGen\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { @@ -111,75 +125,109 @@ { "name": "Jaroslav Hanslík", "homepage": "https://github.com/kukulich" + }, + { + "name": "Tomáš Votruba", + "email": "tomas.vot@gmail.com" + }, + { + "name": "Olivier Laviale", + "homepage": "https://github.com/olvlvl" } ], - "description": "API documentation generator for PHP 5.3+", + "description": "PHP source code API generator", "homepage": "http://apigen.org/", "keywords": [ "api", - "docblock", "documentation", "generator", - "phpDocumentor", "phpdoc" ], - "time": "2012-09-29 17:34:02" + "time": "2015-04-09 13:42:45" }, { - "name": "dg/texy", - "version": "v2.6", + "name": "apigen/theme-bootstrap", + "version": "v1.1.3", "source": { "type": "git", - "url": "https://github.com/dg/texy.git", - "reference": "8213d3646c3ab1a3eca52413a5be26acb29826fc" + "url": "https://github.com/ApiGen/ThemeBootstrap.git", + "reference": "55a35b4a3a9a5fcaa6a8fc43fb304983cab98c6c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dg/texy/zipball/8213d3646c3ab1a3eca52413a5be26acb29826fc", - "reference": "8213d3646c3ab1a3eca52413a5be26acb29826fc", + "url": "https://api.github.com/repos/ApiGen/ThemeBootstrap/zipball/55a35b4a3a9a5fcaa6a8fc43fb304983cab98c6c", + "reference": "55a35b4a3a9a5fcaa6a8fc43fb304983cab98c6c", "shasum": "" }, "require": { - "php": ">=5.2.0" + "latte/latte": "~2.2" }, - "replace": { - "dg/texy": "self.version" + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tomáš Votruba", + "email": "tomas.vot@gmail.com" + }, + { + "name": "Olivier Laviale", + "homepage": "https://github.com/olvlvl" + } + ], + "description": "Twitter Bootstrap theme for ApiGen", + "homepage": "http://apigen.org/", + "time": "2015-10-11 14:52:50" + }, + { + "name": "apigen/theme-default", + "version": "v1.0.2", + "source": { + "type": "git", + "url": "https://github.com/ApiGen/ThemeDefault.git", + "reference": "51648cf83645d9ae6c655fe46bcd26a347d45336" }, - "require-dev": { - "nette/tester": "~1.2" + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ApiGen/ThemeDefault/zipball/51648cf83645d9ae6c655fe46bcd26a347d45336", + "reference": "51648cf83645d9ae6c655fe46bcd26a347d45336", + "shasum": "" }, - "type": "library", - "autoload": { - "files": [ - "src/texy.php" - ] + "require": { + "latte/latte": "~2.2" }, + "type": "library", "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" + "MIT" ], "authors": [ { "name": "David Grudl", "homepage": "http://davidgrudl.com" + }, + { + "name": "Ondřej Nešpor", + "homepage": "https://github.com/andrewsville" + }, + { + "name": "Jaroslav Hanslík", + "homepage": "https://github.com/kukulich" + }, + { + "name": "Tomáš Votruba", + "email": "tomas.vot@gmail.com" + }, + { + "name": "Olivier Laviale", + "homepage": "https://github.com/olvlvl" } ], - "description": "Texy converts plain text in easy to read Texy syntax into structurally valid (X)HTML. It supports adding of images, links, nested lists, tables and has full support for CSS. Texy supports hyphenation of long words (which reflects language rules), clickable emails and URL (emails are obfuscated against spambots), national typographic single and double quotation marks, ellipses, em dashes, dimension sign, nonbreakable spaces (e.g. in phone numbers), acronyms, arrows and many others. Texy code can optionally contain HTML tags.", - "homepage": "http://texy.info", - "keywords": [ - "html", - "markdown", - "markup language", - "plain text", - "text", - "textile", - "texy", - "wiki", - "xhtml" - ], - "time": "2014-06-20 18:38:38" + "description": "Default theme for ApiGen", + "homepage": "http://apigen.org/", + "time": "2015-10-11 14:55:30" }, { "name": "guzzle/guzzle", @@ -277,142 +325,299 @@ "time": "2015-03-18 18:23:50" }, { - "name": "kukulich/fshl", - "version": "2.1.0", + "name": "herrera-io/json", + "version": "1.0.3", "source": { "type": "git", - "url": "https://github.com/kukulich/fshl.git", - "reference": "974c294ade5d76c0c16b6fe3fd3a584ba999b24f" + "url": "https://github.com/kherge-abandoned/php-json.git", + "reference": "60c696c9370a1e5136816ca557c17f82a6fa83f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/kukulich/fshl/zipball/974c294ade5d76c0c16b6fe3fd3a584ba999b24f", - "reference": "974c294ade5d76c0c16b6fe3fd3a584ba999b24f", + "url": "https://api.github.com/repos/kherge-abandoned/php-json/zipball/60c696c9370a1e5136816ca557c17f82a6fa83f1", + "reference": "60c696c9370a1e5136816ca557c17f82a6fa83f1", "shasum": "" }, "require": { - "php": ">=5.3" + "ext-json": "*", + "justinrainbow/json-schema": ">=1.0,<2.0-dev", + "php": ">=5.3.3", + "seld/jsonlint": ">=1.0,<2.0-dev" + }, + "require-dev": { + "herrera-io/phpunit-test-case": "1.*", + "mikey179/vfsstream": "1.1.0", + "phpunit/phpunit": "3.7.*" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, "autoload": { + "files": [ + "src/lib/json_version.php" + ], "psr-0": { - "FSHL": "./" + "Herrera\\Json": "src/lib" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "GPL-2.0+" + "MIT" ], "authors": [ { - "name": "Jaroslav Hanslík", - "homepage": "https://github.com/kukulich" + "name": "Kevin Herrera", + "email": "kevin@herrera.io", + "homepage": "http://kevin.herrera.io" } ], - "description": "FSHL is a free, open source, universal, fast syntax highlighter written in PHP.", - "homepage": "http://fshl.kukulich.cz/", + "description": "A library for simplifying JSON linting and validation.", + "homepage": "http://herrera-io.github.com/php-json", "keywords": [ - "highlight", - "library", - "syntax" + "json", + "lint", + "schema", + "validate" ], - "time": "2012-09-08 19:00:07" + "time": "2013-10-30 16:51:34" }, { - "name": "latte/latte", - "version": "v2.3.3", + "name": "herrera-io/phar-update", + "version": "2.0.0", "source": { "type": "git", - "url": "https://github.com/nette/latte.git", - "reference": "025883a04b3a5ca48995246e8d82e6ff323d941e" + "url": "https://github.com/kherge-abandoned/php-phar-update.git", + "reference": "15643c90d3d43620a4f45c910e6afb7a0ad4b488" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/latte/zipball/025883a04b3a5ca48995246e8d82e6ff323d941e", - "reference": "025883a04b3a5ca48995246e8d82e6ff323d941e", + "url": "https://api.github.com/repos/kherge-abandoned/php-phar-update/zipball/15643c90d3d43620a4f45c910e6afb7a0ad4b488", + "reference": "15643c90d3d43620a4f45c910e6afb7a0ad4b488", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "php": ">=5.3.1" + "herrera-io/json": "1.*", + "herrera-io/version": "1.*", + "php": ">=5.3.3" }, "require-dev": { - "nette/tester": "~1.3" + "herrera-io/phpunit-test-case": "1.*", + "mikey179/vfsstream": "1.1.0", + "phpunit/phpunit": "3.7.*" }, - "suggest": { - "ext-fileinfo": "to use filter |datastream", - "ext-mbstring": "to use filters like lower, upper, capitalize, ..." + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "files": [ + "src/lib/constants.php" + ], + "psr-0": { + "Herrera\\Phar\\Update": "src/lib" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kevin Herrera", + "email": "kevin@herrera.io", + "homepage": "http://kevin.herrera.io" + } + ], + "description": "A library for self-updating Phars.", + "homepage": "http://herrera-io.github.com/php-phar-update", + "keywords": [ + "phar", + "update" + ], + "time": "2013-11-09 17:13:13" + }, + { + "name": "herrera-io/version", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/kherge-abandoned/php-version.git", + "reference": "d39d9642b92a04d8b8a28b871b797a35a2545e85" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/kherge-abandoned/php-version/zipball/d39d9642b92a04d8b8a28b871b797a35a2545e85", + "reference": "d39d9642b92a04d8b8a28b871b797a35a2545e85", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "herrera-io/phpunit-test-case": "1.*", + "phpunit/phpunit": "3.7.*" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, "autoload": { - "classmap": [ - "src/" - ] + "psr-0": { + "Herrera\\Version": "src/lib" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" + "MIT" ], "authors": [ { - "name": "David Grudl", - "homepage": "http://davidgrudl.com" + "name": "Kevin Herrera", + "email": "kevin@herrera.io", + "homepage": "http://kevin.herrera.io" + } + ], + "description": "A library for creating, editing, and comparing semantic versioning numbers.", + "homepage": "http://github.com/herrera-io/php-version", + "keywords": [ + "semantic", + "version" + ], + "time": "2014-05-27 05:29:25" + }, + { + "name": "justinrainbow/json-schema", + "version": "1.5.0", + "source": { + "type": "git", + "url": "https://github.com/justinrainbow/json-schema.git", + "reference": "a4bee9f4b344b66e0a0d96c7afae1e92edf385fe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/a4bee9f4b344b66e0a0d96c7afae1e92edf385fe", + "reference": "a4bee9f4b344b66e0a0d96c7afae1e92edf385fe", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "json-schema/json-schema-test-suite": "1.1.0", + "phpdocumentor/phpdocumentor": "~2", + "phpunit/phpunit": "~3.7" + }, + "bin": [ + "bin/validate-json" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "psr-4": { + "JsonSchema\\": "src/JsonSchema/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Bruno Prieto Reis", + "email": "bruno.p.reis@gmail.com" }, { - "name": "Nette Community", - "homepage": "http://nette.org/contributors" + "name": "Justin Rainbow", + "email": "justin.rainbow@gmail.com" + }, + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + }, + { + "name": "Robert Schönthal", + "email": "seroscho@googlemail.com" } ], - "description": "Latte: the amazing template engine for PHP", - "homepage": "http://latte.nette.org", + "description": "A library to validate a json schema.", + "homepage": "https://github.com/justinrainbow/json-schema", "keywords": [ - "templating", - "twig" + "json", + "schema" ], - "time": "2015-07-03 13:37:59" + "time": "2015-09-08 22:28:04" }, { - "name": "nette/application", - "version": "v2.3.4", + "name": "kdyby/events", + "version": "v2.4.0", "source": { "type": "git", - "url": "https://github.com/nette/application.git", - "reference": "785801e441ef83fa4d75cc47c292afedee9b3e4e" + "url": "https://github.com/Kdyby/Events.git", + "reference": "8049e0fc7abb48178b4a2a9af230eceebe1a83bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/application/zipball/785801e441ef83fa4d75cc47c292afedee9b3e4e", - "reference": "785801e441ef83fa4d75cc47c292afedee9b3e4e", + "url": "https://api.github.com/repos/Kdyby/Events/zipball/8049e0fc7abb48178b4a2a9af230eceebe1a83bc", + "reference": "8049e0fc7abb48178b4a2a9af230eceebe1a83bc", "shasum": "" }, "require": { - "nette/component-model": "~2.2", - "nette/http": "~2.2", - "nette/reflection": "~2.2", - "nette/security": "~2.2", - "nette/utils": "~2.2", - "php": ">=5.3.1" - }, - "conflict": { - "nette/nette": "<2.2" + "nette/di": "~2.3@dev", + "nette/utils": "~2.3@dev" }, "require-dev": { - "latte/latte": "~2.3.0", - "nette/di": "~2.3", - "nette/forms": "~2.2", - "nette/robot-loader": "~2.2", - "nette/tester": "~1.3" - }, - "suggest": { - "latte/latte": "Allows using Latte in templates", - "nette/forms": "Allows to use Nette\\Application\\UI\\Form" + "jakub-onderka/php-parallel-lint": "~0.7", + "latte/latte": "~2.3@dev", + "nette/application": "~2.3@dev", + "nette/bootstrap": "~2.3@dev", + "nette/caching": "~2.3@dev", + "nette/component-model": "~2.2@dev", + "nette/database": "~2.3@dev", + "nette/deprecated": "~2.3@dev", + "nette/di": "~2.3@dev", + "nette/finder": "~2.3@dev", + "nette/forms": "~2.3@dev", + "nette/http": "~2.3@dev", + "nette/mail": "~2.3@dev", + "nette/neon": "~2.3@dev", + "nette/nette": "~2.3@dev", + "nette/php-generator": "~2.3@dev", + "nette/reflection": "~2.3@dev", + "nette/robot-loader": "~2.3@dev", + "nette/safe-stream": "~2.3@dev", + "nette/security": "~2.3@dev", + "nette/tester": "~1.4@rc", + "nette/tokenizer": "~2.2@dev", + "nette/utils": "~2.3@dev", + "symfony/event-dispatcher": "~2.5", + "tracy/tracy": "~2.3@dev" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, "autoload": { + "psr-0": { + "Kdyby\\Events\\": "src/" + }, "classmap": [ - "src/" + "src/Kdyby/Events/exceptions.php" + ], + "files": [ + "src/Doctrine/compatibility.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -423,57 +628,85 @@ ], "authors": [ { - "name": "David Grudl", - "homepage": "http://davidgrudl.com" - }, + "name": "Filip Procházka", + "email": "filip@prochazka.su", + "homepage": "http://filip-prochazka.com" + } + ], + "description": "Events for Nette Framework", + "homepage": "http://kdyby.org", + "keywords": [ + "kdyby", + "nette" + ], + "time": "2015-04-04 16:29:31" + }, + { + "name": "kukulich/fshl", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/kukulich/fshl.git", + "reference": "974c294ade5d76c0c16b6fe3fd3a584ba999b24f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/kukulich/fshl/zipball/974c294ade5d76c0c16b6fe3fd3a584ba999b24f", + "reference": "974c294ade5d76c0c16b6fe3fd3a584ba999b24f", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "type": "library", + "autoload": { + "psr-0": { + "FSHL": "./" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0+" + ], + "authors": [ { - "name": "Nette Community", - "homepage": "http://nette.org/contributors" + "name": "Jaroslav Hanslík", + "homepage": "https://github.com/kukulich" } ], - "description": "Nette Application MVC Component", - "homepage": "http://nette.org", - "time": "2015-07-01 15:54:47" + "description": "FSHL is a free, open source, universal, fast syntax highlighter written in PHP.", + "homepage": "http://fshl.kukulich.cz/", + "keywords": [ + "highlight", + "library", + "syntax" + ], + "time": "2012-09-08 19:00:07" }, { - "name": "nette/bootstrap", - "version": "v2.3.3", + "name": "latte/latte", + "version": "v2.3.7", "source": { "type": "git", - "url": "https://github.com/nette/bootstrap.git", - "reference": "8e2db45c39a1fa24f88e94c7b2a62ad09e9a306e" + "url": "https://github.com/nette/latte.git", + "reference": "b6e090e461c9cd88d60ae79a7713990b17b1531c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/bootstrap/zipball/8e2db45c39a1fa24f88e94c7b2a62ad09e9a306e", - "reference": "8e2db45c39a1fa24f88e94c7b2a62ad09e9a306e", + "url": "https://api.github.com/repos/nette/latte/zipball/b6e090e461c9cd88d60ae79a7713990b17b1531c", + "reference": "b6e090e461c9cd88d60ae79a7713990b17b1531c", "shasum": "" }, "require": { - "nette/di": "~2.3", - "nette/utils": "~2.2", + "ext-tokenizer": "*", "php": ">=5.3.1" }, - "conflict": { - "nette/nette": "<2.2" - }, "require-dev": { - "latte/latte": "~2.2", - "nette/application": "~2.3", - "nette/caching": "~2.3", - "nette/database": "~2.3", - "nette/forms": "~2.3", - "nette/http": "~2.3", - "nette/mail": "~2.3", - "nette/robot-loader": "~2.2", - "nette/safe-stream": "~2.2", - "nette/security": "~2.3", - "nette/tester": "~1.3", - "tracy/tracy": "~2.3" + "nette/tester": "~1.3" }, "suggest": { - "nette/robot-loader": "to use Configurator::createRobotLoader()", - "tracy/tracy": "to use Configurator::enableDebugger()" + "ext-fileinfo": "to use filter |datastream", + "ext-mbstring": "to use filters like lower, upper, capitalize, ..." }, "type": "library", "autoload": { @@ -490,90 +723,91 @@ "authors": [ { "name": "David Grudl", - "homepage": "http://davidgrudl.com" + "homepage": "https://davidgrudl.com" }, { "name": "Nette Community", - "homepage": "http://nette.org/contributors" + "homepage": "https://nette.org/contributors" } ], - "description": "Nette Bootstrap", - "homepage": "http://nette.org", - "time": "2015-07-11 21:07:11" + "description": "Latte: the amazing template engine for PHP", + "homepage": "https://latte.nette.org", + "keywords": [ + "templating", + "twig" + ], + "time": "2015-11-07 22:54:05" }, { - "name": "nette/caching", - "version": "v2.3.3", + "name": "michelf/php-markdown", + "version": "1.5.0", "source": { "type": "git", - "url": "https://github.com/nette/caching.git", - "reference": "d4be13806d70c02d53b72cc63e93de6cf813f50f" + "url": "https://github.com/michelf/php-markdown.git", + "reference": "e1aabe18173231ebcefc90e615565742fc1c7fd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/caching/zipball/d4be13806d70c02d53b72cc63e93de6cf813f50f", - "reference": "d4be13806d70c02d53b72cc63e93de6cf813f50f", + "url": "https://api.github.com/repos/michelf/php-markdown/zipball/e1aabe18173231ebcefc90e615565742fc1c7fd9", + "reference": "e1aabe18173231ebcefc90e615565742fc1c7fd9", "shasum": "" }, "require": { - "nette/finder": "~2.2", - "nette/utils": "~2.2", - "php": ">=5.3.1" - }, - "conflict": { - "nette/nette": "<2.2" - }, - "require-dev": { - "latte/latte": "~2.3.0", - "nette/di": "~2.3", - "nette/tester": "~1.4" + "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-lib": "1.4.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-0": { + "Michelf": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" + "BSD-3-Clause" ], "authors": [ { - "name": "David Grudl", - "homepage": "http://davidgrudl.com" + "name": "John Gruber", + "homepage": "http://daringfireball.net/" }, { - "name": "Nette Community", - "homepage": "http://nette.org/contributors" + "name": "Michel Fortin", + "email": "michel.fortin@michelf.ca", + "homepage": "https://michelf.ca/", + "role": "Developer" } ], - "description": "Nette Caching Component", - "homepage": "http://nette.org", - "time": "2015-07-11 21:09:42" + "description": "PHP Markdown", + "homepage": "https://michelf.ca/projects/php-markdown/", + "keywords": [ + "markdown" + ], + "time": "2015-03-01 12:03:08" }, { - "name": "nette/component-model", - "version": "v2.2.3", + "name": "nette/application", + "version": "v2.3.7", "source": { "type": "git", - "url": "https://github.com/nette/component-model.git", - "reference": "fe13e630a307ef4585b3573eae0a161dc1c3d428" + "url": "https://github.com/nette/application.git", + "reference": "8e87ae81c2098abd7895bfd96d9fac1cd332abc3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/component-model/zipball/fe13e630a307ef4585b3573eae0a161dc1c3d428", - "reference": "fe13e630a307ef4585b3573eae0a161dc1c3d428", + "url": "https://api.github.com/repos/nette/application/zipball/8e87ae81c2098abd7895bfd96d9fac1cd332abc3", + "reference": "8e87ae81c2098abd7895bfd96d9fac1cd332abc3", "shasum": "" }, "require": { + "nette/component-model": "~2.2", + "nette/http": "~2.2", + "nette/reflection": "~2.2", + "nette/security": "~2.2", "nette/utils": "~2.2", "php": ">=5.3.1" }, @@ -581,8 +815,16 @@ "nette/nette": "<2.2" }, "require-dev": { + "latte/latte": "~2.3.0", + "nette/di": "~2.3", + "nette/forms": "~2.2", + "nette/robot-loader": "~2.2", "nette/tester": "~1.3" }, + "suggest": { + "latte/latte": "Allows using Latte in templates", + "nette/forms": "Allows to use Nette\\Application\\UI\\Form" + }, "type": "library", "autoload": { "classmap": [ @@ -598,34 +840,33 @@ "authors": [ { "name": "David Grudl", - "homepage": "http://davidgrudl.com" + "homepage": "https://davidgrudl.com" }, { "name": "Nette Community", - "homepage": "http://nette.org/contributors" + "homepage": "https://nette.org/contributors" } ], - "description": "Nette Component Model", - "homepage": "http://nette.org", - "time": "2015-07-11 21:11:20" + "description": "Nette Application MVC Component", + "homepage": "https://nette.org", + "time": "2015-10-13 14:33:28" }, { - "name": "nette/database", - "version": "v2.3.4", + "name": "nette/bootstrap", + "version": "v2.3.3", "source": { "type": "git", - "url": "https://github.com/nette/database.git", - "reference": "e5163fa150071af0f55518c414e177bc2b4be09d" + "url": "https://github.com/nette/bootstrap.git", + "reference": "8e2db45c39a1fa24f88e94c7b2a62ad09e9a306e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/database/zipball/e5163fa150071af0f55518c414e177bc2b4be09d", - "reference": "e5163fa150071af0f55518c414e177bc2b4be09d", + "url": "https://api.github.com/repos/nette/bootstrap/zipball/8e2db45c39a1fa24f88e94c7b2a62ad09e9a306e", + "reference": "8e2db45c39a1fa24f88e94c7b2a62ad09e9a306e", "shasum": "" }, "require": { - "ext-pdo": "*", - "nette/caching": "~2.2", + "nette/di": "~2.3", "nette/utils": "~2.2", "php": ">=5.3.1" }, @@ -633,9 +874,22 @@ "nette/nette": "<2.2" }, "require-dev": { - "mockery/mockery": "~0.9.1", - "nette/di": "~2.3", - "nette/tester": "~1.3" + "latte/latte": "~2.2", + "nette/application": "~2.3", + "nette/caching": "~2.3", + "nette/database": "~2.3", + "nette/forms": "~2.3", + "nette/http": "~2.3", + "nette/mail": "~2.3", + "nette/robot-loader": "~2.2", + "nette/safe-stream": "~2.2", + "nette/security": "~2.3", + "nette/tester": "~1.3", + "tracy/tracy": "~2.3" + }, + "suggest": { + "nette/robot-loader": "to use Configurator::createRobotLoader()", + "tracy/tracy": "to use Configurator::enableDebugger()" }, "type": "library", "autoload": { @@ -659,44 +913,46 @@ "homepage": "http://nette.org/contributors" } ], - "description": "Nette Database Component", + "description": "Nette Bootstrap", "homepage": "http://nette.org", - "time": "2015-07-20 01:20:17" + "time": "2015-07-11 21:07:11" }, { - "name": "nette/deprecated", - "version": "v2.3.1", + "name": "nette/caching", + "version": "v2.4.2", "source": { "type": "git", - "url": "https://github.com/nette/deprecated.git", - "reference": "169acddcc088bf74eb5b3c14d17f19b26d486b52" + "url": "https://github.com/nette/caching.git", + "reference": "ce04a24e03230a3ad163540aab46635c220163ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/deprecated/zipball/169acddcc088bf74eb5b3c14d17f19b26d486b52", - "reference": "169acddcc088bf74eb5b3c14d17f19b26d486b52", + "url": "https://api.github.com/repos/nette/caching/zipball/ce04a24e03230a3ad163540aab46635c220163ed", + "reference": "ce04a24e03230a3ad163540aab46635c220163ed", "shasum": "" }, - "require-dev": { - "latte/latte": "~2.2", - "nette/application": "~2.2", - "nette/bootstrap": "~2.2, >=2.2.1", - "nette/caching": "~2.2", - "nette/forms": "~2.2", - "nette/mail": "~2.2", - "nette/robot-loader": "~2.2", - "nette/safe-stream": "~2.2", - "nette/tester": "~1.1", + "require": { + "nette/finder": "~2.2", "nette/utils": "~2.2", - "tracy/tracy": "~2.2" + "php": ">=5.4.4" + }, + "conflict": { + "nette/nette": "<2.2" + }, + "require-dev": { + "latte/latte": "~2.4", + "nette/di": "~2.3", + "nette/tester": "~1.4" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, "autoload": { "classmap": [ "src/" - ], - "files": [ - "src/loader.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -715,28 +971,26 @@ "homepage": "http://nette.org/contributors" } ], - "description": "APIs and features removed from Nette Framework", + "description": "Nette Caching Component", "homepage": "http://nette.org", - "time": "2015-07-11 20:57:29" + "time": "2015-09-07 11:57:44" }, { - "name": "nette/di", - "version": "v2.3.5", + "name": "nette/component-model", + "version": "v2.2.4", "source": { "type": "git", - "url": "https://github.com/nette/di.git", - "reference": "c3e726f8bef49033ba78efe19e999e5fac63f433" + "url": "https://github.com/nette/component-model.git", + "reference": "07bce436051fd92d084642ce7a47f00045e0d1e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/di/zipball/c3e726f8bef49033ba78efe19e999e5fac63f433", - "reference": "c3e726f8bef49033ba78efe19e999e5fac63f433", + "url": "https://api.github.com/repos/nette/component-model/zipball/07bce436051fd92d084642ce7a47f00045e0d1e5", + "reference": "07bce436051fd92d084642ce7a47f00045e0d1e5", "shasum": "" }, "require": { - "nette/neon": "~2.3", - "nette/php-generator": "~2.3", - "nette/utils": "~2.3", + "nette/utils": "^2.3.5", "php": ">=5.3.1" }, "conflict": { @@ -760,40 +1014,42 @@ "authors": [ { "name": "David Grudl", - "homepage": "http://davidgrudl.com" + "homepage": "https://davidgrudl.com" }, { "name": "Nette Community", - "homepage": "http://nette.org/contributors" + "homepage": "https://nette.org/contributors" } ], - "description": "Nette Dependency Injection Component", - "homepage": "http://nette.org", - "time": "2015-07-13 22:28:49" + "description": "Nette Component Model", + "homepage": "https://nette.org", + "time": "2015-10-06 17:54:05" }, { - "name": "nette/finder", - "version": "v2.3.1", + "name": "nette/di", + "version": "v2.3.6", "source": { "type": "git", - "url": "https://github.com/nette/finder.git", - "reference": "38f803a03f4cddf352e28af70294c71f7026e516" + "url": "https://github.com/nette/di.git", + "reference": "efa1d13f016b58b4a9200802c9c5b14d10d72e85" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/finder/zipball/38f803a03f4cddf352e28af70294c71f7026e516", - "reference": "38f803a03f4cddf352e28af70294c71f7026e516", + "url": "https://api.github.com/repos/nette/di/zipball/efa1d13f016b58b4a9200802c9c5b14d10d72e85", + "reference": "efa1d13f016b58b4a9200802c9c5b14d10d72e85", "shasum": "" }, "require": { - "nette/utils": "~2.2", + "nette/neon": "^2.3.3", + "nette/php-generator": "^2.3.3", + "nette/utils": "~2.3", "php": ">=5.3.1" }, "conflict": { "nette/nette": "<2.2" }, "require-dev": { - "nette/tester": "~1.4" + "nette/tester": "~1.3" }, "type": "library", "autoload": { @@ -817,27 +1073,25 @@ "homepage": "http://nette.org/contributors" } ], - "description": "Nette Finder: Files Searching", + "description": "Nette Dependency Injection Component", "homepage": "http://nette.org", - "time": "2015-07-11 21:13:50" + "time": "2015-09-14 18:18:24" }, { - "name": "nette/forms", - "version": "v2.3.4", + "name": "nette/finder", + "version": "v2.3.1", "source": { "type": "git", - "url": "https://github.com/nette/forms.git", - "reference": "e4e3777c7a783f1877eda4a07ff2f128bdd05bf9" + "url": "https://github.com/nette/finder.git", + "reference": "38f803a03f4cddf352e28af70294c71f7026e516" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/forms/zipball/e4e3777c7a783f1877eda4a07ff2f128bdd05bf9", - "reference": "e4e3777c7a783f1877eda4a07ff2f128bdd05bf9", + "url": "https://api.github.com/repos/nette/finder/zipball/38f803a03f4cddf352e28af70294c71f7026e516", + "reference": "38f803a03f4cddf352e28af70294c71f7026e516", "shasum": "" }, "require": { - "nette/component-model": "~2.2", - "nette/http": "~2.2", "nette/utils": "~2.2", "php": ">=5.3.1" }, @@ -845,10 +1099,7 @@ "nette/nette": "<2.2" }, "require-dev": { - "latte/latte": "~2.3.2", - "nette/di": "~2.3", - "nette/tester": "~1.3", - "tracy/tracy": "~2.2" + "nette/tester": "~1.4" }, "type": "library", "autoload": { @@ -872,9 +1123,9 @@ "homepage": "http://nette.org/contributors" } ], - "description": "Nette Forms: greatly facilitates web forms", + "description": "Nette Finder: Files Searching", "homepage": "http://nette.org", - "time": "2015-07-20 01:25:35" + "time": "2015-07-11 21:13:50" }, { "name": "nette/http", @@ -932,16 +1183,16 @@ }, { "name": "nette/mail", - "version": "v2.3.2", + "version": "v2.3.3", "source": { "type": "git", "url": "https://github.com/nette/mail.git", - "reference": "2c6c64787edf8131ec5e1b514ecc4a80a6477f80" + "reference": "4ea303d96c6a80ffe357baf59d387f4fe2cfd412" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/mail/zipball/2c6c64787edf8131ec5e1b514ecc4a80a6477f80", - "reference": "2c6c64787edf8131ec5e1b514ecc4a80a6477f80", + "url": "https://api.github.com/repos/nette/mail/zipball/4ea303d96c6a80ffe357baf59d387f4fe2cfd412", + "reference": "4ea303d96c6a80ffe357baf59d387f4fe2cfd412", "shasum": "" }, "require": { @@ -974,29 +1225,29 @@ "authors": [ { "name": "David Grudl", - "homepage": "http://davidgrudl.com" + "homepage": "https://davidgrudl.com" }, { "name": "Nette Community", - "homepage": "http://nette.org/contributors" + "homepage": "https://nette.org/contributors" } ], "description": "Nette Mail: Sending E-mails", - "homepage": "http://nette.org", - "time": "2015-07-03 13:31:38" + "homepage": "https://nette.org", + "time": "2015-10-05 12:58:01" }, { "name": "nette/neon", - "version": "v2.3.2", + "version": "v2.3.3", "source": { "type": "git", "url": "https://github.com/nette/neon.git", - "reference": "48b25e0962d70e9125797e67a144f3e057243d9d" + "reference": "12bbb0e85ba8521dd291f4df0fe20a1b79aae32c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/neon/zipball/48b25e0962d70e9125797e67a144f3e057243d9d", - "reference": "48b25e0962d70e9125797e67a144f3e057243d9d", + "url": "https://api.github.com/repos/nette/neon/zipball/12bbb0e85ba8521dd291f4df0fe20a1b79aae32c", + "reference": "12bbb0e85ba8521dd291f4df0fe20a1b79aae32c", "shasum": "" }, "require": { @@ -1030,92 +1281,20 @@ ], "description": "Nette NEON: parser & generator for Nette Object Notation", "homepage": "http://ne-on.org", - "time": "2015-07-13 22:29:08" - }, - { - "name": "nette/nette", - "version": "v2.3.4", - "source": { - "type": "git", - "url": "https://github.com/nette/nette.git", - "reference": "7748ab2d7b1a6cd3dda10538758e981c71e5b72d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/nette/zipball/7748ab2d7b1a6cd3dda10538758e981c71e5b72d", - "reference": "7748ab2d7b1a6cd3dda10538758e981c71e5b72d", - "shasum": "" - }, - "require": { - "latte/latte": "2.3.3", - "nette/application": "2.3.4", - "nette/bootstrap": "2.3.3", - "nette/caching": "2.3.3", - "nette/component-model": "2.2.3", - "nette/database": "2.3.4", - "nette/deprecated": "2.3.1", - "nette/di": "2.3.5", - "nette/finder": "2.3.1", - "nette/forms": "2.3.4", - "nette/http": "2.3.3", - "nette/mail": "2.3.2", - "nette/neon": "2.3.2", - "nette/php-generator": "2.3.1", - "nette/reflection": "2.3.1", - "nette/robot-loader": "2.3.1", - "nette/safe-stream": "2.3.1", - "nette/security": "2.3.1", - "nette/tokenizer": "2.2.1", - "nette/utils": "2.3.3", - "tracy/tracy": "2.3.3" - }, - "type": "library", - "autoload": { - "classmap": [ - "Nette/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "http://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "http://nette.org/contributors" - } - ], - "description": "Nette Framework - innovative framework for fast and easy development of secured web applications in PHP. Write less, have cleaner code and your work will bring you joy.", - "homepage": "http://nette.org", - "keywords": [ - "Forms", - "database", - "debugging", - "framework", - "mailing", - "mvc", - "templating" - ], - "time": "2015-07-20 01:58:21" + "time": "2015-08-22 15:23:30" }, { "name": "nette/php-generator", - "version": "v2.3.1", + "version": "v2.3.4", "source": { "type": "git", "url": "https://github.com/nette/php-generator.git", - "reference": "c47ad59b972e8a5f4bb00299951bd8053a8fc074" + "reference": "846028e9d885d2d8ec60823d995e1291bbe3eb69" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/php-generator/zipball/c47ad59b972e8a5f4bb00299951bd8053a8fc074", - "reference": "c47ad59b972e8a5f4bb00299951bd8053a8fc074", + "url": "https://api.github.com/repos/nette/php-generator/zipball/846028e9d885d2d8ec60823d995e1291bbe3eb69", + "reference": "846028e9d885d2d8ec60823d995e1291bbe3eb69", "shasum": "" }, "require": { @@ -1143,16 +1322,16 @@ "authors": [ { "name": "David Grudl", - "homepage": "http://davidgrudl.com" + "homepage": "https://davidgrudl.com" }, { "name": "Nette Community", - "homepage": "http://nette.org/contributors" + "homepage": "https://nette.org/contributors" } ], "description": "Nette PHP Generator", - "homepage": "http://nette.org", - "time": "2015-07-11 21:19:33" + "homepage": "https://nette.org", + "time": "2015-10-09 14:34:13" }, { "name": "nette/reflection", @@ -1365,67 +1544,18 @@ "homepage": "http://nette.org", "time": "2015-07-11 21:22:53" }, - { - "name": "nette/tokenizer", - "version": "v2.2.1", - "source": { - "type": "git", - "url": "https://github.com/nette/tokenizer.git", - "reference": "cbb4920d166af495f83eb213f16512a421d44f63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/tokenizer/zipball/cbb4920d166af495f83eb213f16512a421d44f63", - "reference": "cbb4920d166af495f83eb213f16512a421d44f63", - "shasum": "" - }, - "require": { - "php": ">=5.3.1" - }, - "conflict": { - "nette/nette": "<2.2" - }, - "require-dev": { - "nette/tester": "~1.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "http://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "http://nette.org/contributors" - } - ], - "description": "Nette Tokenizer", - "homepage": "http://nette.org", - "time": "2015-07-11 21:24:02" - }, { "name": "nette/utils", - "version": "v2.3.3", + "version": "v2.3.6", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "ff80fce39fdc381e7e0db6cc5ffc82162e59f6bb" + "reference": "c9dfaec788eb65d5ef10cefed0ae63bc76febaa8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/ff80fce39fdc381e7e0db6cc5ffc82162e59f6bb", - "reference": "ff80fce39fdc381e7e0db6cc5ffc82162e59f6bb", + "url": "https://api.github.com/repos/nette/utils/zipball/c9dfaec788eb65d5ef10cefed0ae63bc76febaa8", + "reference": "c9dfaec788eb65d5ef10cefed0ae63bc76febaa8", "shasum": "" }, "require": { @@ -1458,38 +1588,77 @@ "authors": [ { "name": "David Grudl", - "homepage": "http://davidgrudl.com" + "homepage": "https://davidgrudl.com" }, { "name": "Nette Community", - "homepage": "http://nette.org/contributors" + "homepage": "https://nette.org/contributors" } ], "description": "Nette Utility Classes", - "homepage": "http://nette.org", - "time": "2015-07-13 22:30:00" + "homepage": "https://nette.org", + "time": "2015-10-05 12:18:24" }, { "name": "phing/phing", - "version": "2.4.14", + "version": "2.12.0", "source": { "type": "git", "url": "https://github.com/phingofficial/phing.git", - "reference": "41075d93ca254f1c90c79ec7ce81be2b2629e138" + "reference": "63a495a1f619b60404687a0a059039c5046677df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phingofficial/phing/zipball/41075d93ca254f1c90c79ec7ce81be2b2629e138", - "reference": "41075d93ca254f1c90c79ec7ce81be2b2629e138", + "url": "https://api.github.com/repos/phingofficial/phing/zipball/63a495a1f619b60404687a0a059039c5046677df", + "reference": "63a495a1f619b60404687a0a059039c5046677df", "shasum": "" }, "require": { "php": ">=5.2.0" }, + "require-dev": { + "ext-pdo_sqlite": "*", + "lastcraft/simpletest": "@dev", + "pdepend/pdepend": "2.x", + "pear-pear.php.net/console_getopt": "~1.3.0", + "pear-pear.php.net/http_request2": "2.2.x", + "pear-pear.php.net/net_growl": "2.7.x", + "pear-pear.php.net/pear_packagefilemanager": "1.7.x", + "pear-pear.php.net/pear_packagefilemanager2": "1.0.x", + "pear-pear.php.net/xml_serializer": "0.20.x", + "pear/pear_exception": "~1.0", + "pear/versioncontrol_git": "@dev", + "pear/versioncontrol_svn": "~0.5", + "phpdocumentor/phpdocumentor": "2.x", + "phploc/phploc": "~2.0.6", + "phpmd/phpmd": "~2.2", + "phpunit/phpunit": ">=3.7", + "sebastian/git": "~1.0", + "sebastian/phpcpd": "2.x", + "squizlabs/php_codesniffer": "~2.2" + }, + "suggest": { + "pdepend/pdepend": "PHP version of JDepend", + "pear/archive_tar": "Tar file management class", + "pear/versioncontrol_git": "A library that provides OO interface to handle Git repository", + "pear/versioncontrol_svn": "A simple OO-style interface for Subversion, the free/open-source version control system", + "phpdocumentor/phpdocumentor": "Documentation Generator for PHP", + "phploc/phploc": "A tool for quickly measuring the size of a PHP project", + "phpmd/phpmd": "PHP version of PMD tool", + "phpunit/php-code-coverage": "Library that provides collection, processing, and rendering functionality for PHP code coverage information", + "phpunit/phpunit": "The PHP Unit Testing Framework", + "sebastian/phpcpd": "Copy/Paste Detector (CPD) for PHP code", + "tedivm/jshrink": "Javascript Minifier built in PHP" + }, "bin": [ "bin/phing" ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.11.x-dev" + } + }, "autoload": { "classmap": [ "classes/phing/" @@ -1500,48 +1669,48 @@ "classes" ], "license": [ - "LGPL3" + "LGPL-3.0" ], "authors": [ { "name": "Michiel Rook", - "email": "mrook@php.net", - "role": "Lead" + "email": "mrook@php.net" }, { "name": "Phing Community", - "homepage": "http://www.phing.info/trac/wiki/Development/Contributors" + "homepage": "https://www.phing.info/trac/wiki/Development/Contributors" } ], "description": "PHing Is Not GNU make; it's a PHP project build system or build tool based on Apache Ant.", - "homepage": "http://www.phing.info/", + "homepage": "https://www.phing.info/", "keywords": [ "build", + "phing", "task", "tool" ], - "time": "2012-11-29 21:23:47" + "time": "2015-08-24 21:02:12" }, { "name": "phpunit/dbunit", - "version": "1.3.0", + "version": "1.3.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/dbunit.git", - "reference": "9d8a28bdb41fbd3c0dc16fa32fc00862d06abace" + "reference": "1507040c2541bdffd7fbd71fc792cecdea6a7c61" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/dbunit/zipball/9d8a28bdb41fbd3c0dc16fa32fc00862d06abace", - "reference": "9d8a28bdb41fbd3c0dc16fa32fc00862d06abace", + "url": "https://api.github.com/repos/sebastianbergmann/dbunit/zipball/1507040c2541bdffd7fbd71fc792cecdea6a7c61", + "reference": "1507040c2541bdffd7fbd71fc792cecdea6a7c61", "shasum": "" }, "require": { "ext-pdo": "*", "ext-simplexml": "*", "php": ">=5.3.3", - "phpunit/phpunit": ">=3.7.0@stable", - "symfony/yaml": ">=2.1.0" + "phpunit/phpunit": "~3.7|~4.0", + "symfony/yaml": "~2.1" }, "bin": [ "composer/bin/dbunit" @@ -1579,7 +1748,7 @@ "testing", "xunit" ], - "time": "2013-11-04 08:33:33" + "time": "2015-03-29 14:23:04" }, { "name": "phpunit/php-code-coverage", @@ -1691,40 +1860,40 @@ }, { "name": "phpunit/php-invoker", - "version": "1.1.3", + "version": "1.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "8696484458cb43eed025ab46260846de5b74655c" + "reference": "86074bf0fc2caf02ec8819a93f65a37cd0b44c8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/8696484458cb43eed025ab46260846de5b74655c", - "reference": "8696484458cb43eed025ab46260846de5b74655c", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/86074bf0fc2caf02ec8819a93f65a37cd0b44c8e", + "reference": "86074bf0fc2caf02ec8819a93f65a37cd0b44c8e", "shasum": "" }, "require": { "ext-pcntl": "*", - "php": ">=5.2.7", - "phpunit/php-timer": ">=1.0.4,<1.1.0" + "php": ">=5.3.3", + "phpunit/php-timer": ">=1.0.6" + }, + "require-dev": { + "phpunit/phpunit": "~4" }, "type": "library", "autoload": { "classmap": [ - "PHP/" + "src/" ] }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -1733,7 +1902,7 @@ "keywords": [ "process" ], - "time": "2013-07-16 05:20:21" + "time": "2015-06-21 13:32:55" }, { "name": "phpunit/php-text-template", @@ -1869,39 +2038,38 @@ }, { "name": "phpunit/phpunit", - "version": "3.7.28", + "version": "3.7.38", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "3b97c8492bcafbabe6b6fbd2ab35f2f04d932a8d" + "reference": "38709dc22d519a3d1be46849868aa2ddf822bcf6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3b97c8492bcafbabe6b6fbd2ab35f2f04d932a8d", - "reference": "3b97c8492bcafbabe6b6fbd2ab35f2f04d932a8d", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/38709dc22d519a3d1be46849868aa2ddf822bcf6", + "reference": "38709dc22d519a3d1be46849868aa2ddf822bcf6", "shasum": "" }, "require": { + "ext-ctype": "*", "ext-dom": "*", + "ext-json": "*", "ext-pcre": "*", "ext-reflection": "*", "ext-spl": "*", "php": ">=5.3.3", - "phpunit/php-code-coverage": "~1.2.1", - "phpunit/php-file-iterator": ">=1.3.1", - "phpunit/php-text-template": ">=1.1.1", - "phpunit/php-timer": ">=1.0.4", - "phpunit/phpunit-mock-objects": "~1.2.0", + "phpunit/php-code-coverage": "~1.2", + "phpunit/php-file-iterator": "~1.3", + "phpunit/php-text-template": "~1.1", + "phpunit/php-timer": "~1.0", + "phpunit/phpunit-mock-objects": "~1.2", "symfony/yaml": "~2.0" }, "require-dev": { - "pear-pear/pear": "1.9.4" + "pear-pear.php.net/pear": "1.9.4" }, "suggest": { - "ext-json": "*", - "ext-simplexml": "*", - "ext-tokenizer": "*", - "phpunit/php-invoker": ">=1.1.0,<1.2.0" + "phpunit/php-invoker": "~1.1" }, "bin": [ "composer/bin/phpunit" @@ -1939,7 +2107,7 @@ "testing", "xunit" ], - "time": "2013-10-17 07:27:40" + "time": "2014-10-17 09:04:17" }, { "name": "phpunit/phpunit-mock-objects", @@ -2441,27 +2609,70 @@ "homepage": "http://www.github.com/sebastianbergmann/recursion-context", "time": "2015-06-21 08:04:50" }, + { + "name": "seld/jsonlint", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/jsonlint.git", + "reference": "863ae85c6d3ef60ca49cb12bd051c4a0648c40c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/863ae85c6d3ef60ca49cb12bd051c4a0648c40c4", + "reference": "863ae85c6d3ef60ca49cb12bd051c4a0648c40c4", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "bin": [ + "bin/jsonlint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Seld\\JsonLint\\": "src/Seld/JsonLint/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "JSON Linter", + "keywords": [ + "json", + "linter", + "parser", + "validator" + ], + "time": "2015-01-04 21:18:15" + }, { "name": "symfony/config", - "version": "v2.7.3", + "version": "v2.7.6", "source": { "type": "git", - "url": "https://github.com/symfony/Config.git", - "reference": "6c905bbed1e728226de656e4c07d620dfe9e80d9" + "url": "https://github.com/symfony/config.git", + "reference": "831f88908b51b9ce945f5e6f402931d1ac544423" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Config/zipball/6c905bbed1e728226de656e4c07d620dfe9e80d9", - "reference": "6c905bbed1e728226de656e4c07d620dfe9e80d9", + "url": "https://api.github.com/repos/symfony/config/zipball/831f88908b51b9ce945f5e6f402931d1ac544423", + "reference": "831f88908b51b9ce945f5e6f402931d1ac544423", "shasum": "" }, "require": { "php": ">=5.3.9", "symfony/filesystem": "~2.3" }, - "require-dev": { - "symfony/phpunit-bridge": "~2.7" - }, "type": "library", "extra": { "branch-alias": { @@ -2489,20 +2700,20 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2015-07-09 16:07:40" + "time": "2015-10-11 09:39:48" }, { "name": "symfony/console", - "version": "v2.7.3", + "version": "v2.7.6", "source": { "type": "git", - "url": "https://github.com/symfony/Console.git", - "reference": "d6cf02fe73634c96677e428f840704bfbcaec29e" + "url": "https://github.com/symfony/console.git", + "reference": "5efd632294c8320ea52492db22292ff853a43766" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Console/zipball/d6cf02fe73634c96677e428f840704bfbcaec29e", - "reference": "d6cf02fe73634c96677e428f840704bfbcaec29e", + "url": "https://api.github.com/repos/symfony/console/zipball/5efd632294c8320ea52492db22292ff853a43766", + "reference": "5efd632294c8320ea52492db22292ff853a43766", "shasum": "" }, "require": { @@ -2511,7 +2722,6 @@ "require-dev": { "psr/log": "~1.0", "symfony/event-dispatcher": "~2.1", - "symfony/phpunit-bridge": "~2.7", "symfony/process": "~2.1" }, "suggest": { @@ -2546,20 +2756,20 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2015-07-28 15:18:12" + "time": "2015-10-20 14:38:46" }, { "name": "symfony/event-dispatcher", - "version": "v2.7.3", + "version": "v2.7.6", "source": { "type": "git", - "url": "https://github.com/symfony/EventDispatcher.git", - "reference": "9310b5f9a87ec2ea75d20fec0b0017c77c66dac3" + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "87a5db5ea887763fa3a31a5471b512ff1596d9b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/9310b5f9a87ec2ea75d20fec0b0017c77c66dac3", - "reference": "9310b5f9a87ec2ea75d20fec0b0017c77c66dac3", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/87a5db5ea887763fa3a31a5471b512ff1596d9b8", + "reference": "87a5db5ea887763fa3a31a5471b512ff1596d9b8", "shasum": "" }, "require": { @@ -2570,7 +2780,6 @@ "symfony/config": "~2.0,>=2.0.5", "symfony/dependency-injection": "~2.6", "symfony/expression-language": "~2.6", - "symfony/phpunit-bridge": "~2.7", "symfony/stopwatch": "~2.3" }, "suggest": { @@ -2604,28 +2813,25 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2015-06-18 19:21:56" + "time": "2015-10-11 09:39:48" }, { "name": "symfony/filesystem", - "version": "v2.7.3", + "version": "v2.7.6", "source": { "type": "git", - "url": "https://github.com/symfony/Filesystem.git", - "reference": "2d7b2ddaf3f548f4292df49a99d19c853d43f0b8" + "url": "https://github.com/symfony/filesystem.git", + "reference": "56fd6df73be859323ff97418d97edc1d756df6df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Filesystem/zipball/2d7b2ddaf3f548f4292df49a99d19c853d43f0b8", - "reference": "2d7b2ddaf3f548f4292df49a99d19c853d43f0b8", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/56fd6df73be859323ff97418d97edc1d756df6df", + "reference": "56fd6df73be859323ff97418d97edc1d756df6df", "shasum": "" }, "require": { "php": ">=5.3.9" }, - "require-dev": { - "symfony/phpunit-bridge": "~2.7" - }, "type": "library", "extra": { "branch-alias": { @@ -2653,29 +2859,81 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2015-07-09 16:07:40" + "time": "2015-10-18 20:23:18" }, { - "name": "symfony/stopwatch", - "version": "v2.7.3", + "name": "symfony/options-resolver", + "version": "v2.6.11", + "target-dir": "Symfony/Component/OptionsResolver", "source": { "type": "git", - "url": "https://github.com/symfony/Stopwatch.git", - "reference": "b07a866719bbac5294c67773340f97b871733310" + "url": "https://github.com/symfony/options-resolver.git", + "reference": "31e56594cee489e9a235b852228b0598b52101c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Stopwatch/zipball/b07a866719bbac5294c67773340f97b871733310", - "reference": "b07a866719bbac5294c67773340f97b871733310", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/31e56594cee489e9a235b852228b0598b52101c1", + "reference": "31e56594cee489e9a235b852228b0598b52101c1", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": ">=5.3.3" }, "require-dev": { "symfony/phpunit-bridge": "~2.7" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + } + }, + "autoload": { + "psr-0": { + "Symfony\\Component\\OptionsResolver\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony OptionsResolver Component", + "homepage": "https://symfony.com", + "keywords": [ + "config", + "configuration", + "options" + ], + "time": "2015-05-13 11:33:56" + }, + { + "name": "symfony/stopwatch", + "version": "v2.7.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/stopwatch.git", + "reference": "f8ab957c17e4b85a73c4df03bdf94ee597f2bd55" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/f8ab957c17e4b85a73c4df03bdf94ee597f2bd55", + "reference": "f8ab957c17e4b85a73c4df03bdf94ee597f2bd55", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "type": "library", "extra": { "branch-alias": { "dev-master": "2.7-dev" @@ -2702,28 +2960,25 @@ ], "description": "Symfony Stopwatch Component", "homepage": "https://symfony.com", - "time": "2015-07-01 18:23:16" + "time": "2015-10-12 12:42:24" }, { "name": "symfony/yaml", - "version": "v2.7.3", + "version": "v2.7.6", "source": { "type": "git", - "url": "https://github.com/symfony/Yaml.git", - "reference": "71340e996171474a53f3d29111d046be4ad8a0ff" + "url": "https://github.com/symfony/yaml.git", + "reference": "eca9019c88fbe250164affd107bc8057771f3f4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Yaml/zipball/71340e996171474a53f3d29111d046be4ad8a0ff", - "reference": "71340e996171474a53f3d29111d046be4ad8a0ff", + "url": "https://api.github.com/repos/symfony/yaml/zipball/eca9019c88fbe250164affd107bc8057771f3f4d", + "reference": "eca9019c88fbe250164affd107bc8057771f3f4d", "shasum": "" }, "require": { "php": ">=5.3.9" }, - "require-dev": { - "symfony/phpunit-bridge": "~2.7" - }, "type": "library", "extra": { "branch-alias": { @@ -2751,20 +3006,20 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2015-07-28 14:07:07" + "time": "2015-10-11 09:39:48" }, { "name": "tracy/tracy", - "version": "v2.3.3", + "version": "v2.3.6", "source": { "type": "git", "url": "https://github.com/nette/tracy.git", - "reference": "17d15b8dc83cab3bc5022a45d32c681a76cc19e1" + "reference": "79831c75b6f48fcb897d25ccae5deec358cb2142" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/tracy/zipball/17d15b8dc83cab3bc5022a45d32c681a76cc19e1", - "reference": "17d15b8dc83cab3bc5022a45d32c681a76cc19e1", + "url": "https://api.github.com/repos/nette/tracy/zipball/79831c75b6f48fcb897d25ccae5deec358cb2142", + "reference": "79831c75b6f48fcb897d25ccae5deec358cb2142", "shasum": "" }, "require": { @@ -2792,21 +3047,21 @@ "authors": [ { "name": "David Grudl", - "homepage": "http://davidgrudl.com" + "homepage": "https://davidgrudl.com" }, { "name": "Nette Community", - "homepage": "http://nette.org/contributors" + "homepage": "https://nette.org/contributors" } ], "description": "Tracy: useful PHP debugger", - "homepage": "http://tracy.nette.org", + "homepage": "https://tracy.nette.org", "keywords": [ "debug", "debugger", "nette" ], - "time": "2015-07-03 12:52:35" + "time": "2015-10-28 23:49:21" } ], "aliases": [], diff --git a/demos/quickstart/protected/controls/TopicList.tpl b/demos/quickstart/protected/controls/TopicList.tpl index ed57a4b0..c23bd2be 100644 --- a/demos/quickstart/protected/controls/TopicList.tpl +++ b/demos/quickstart/protected/controls/TopicList.tpl @@ -106,8 +106,6 @@
    Client-side Scripting
    diff --git a/demos/quickstart/protected/controls/de/TopicList.tpl b/demos/quickstart/protected/controls/de/TopicList.tpl index 470927da..3c358b43 100755 --- a/demos/quickstart/protected/controls/de/TopicList.tpl +++ b/demos/quickstart/protected/controls/de/TopicList.tpl @@ -106,8 +106,6 @@
    Client-side Scripting
    diff --git a/demos/quickstart/protected/controls/es/TopicList.tpl b/demos/quickstart/protected/controls/es/TopicList.tpl index 62451700..ba5f83c4 100644 --- a/demos/quickstart/protected/controls/es/TopicList.tpl +++ b/demos/quickstart/protected/controls/es/TopicList.tpl @@ -103,8 +103,6 @@
    Scripts del lado del cliente (Client-side Scripting)
    diff --git a/demos/quickstart/protected/controls/fr/TopicList.tpl b/demos/quickstart/protected/controls/fr/TopicList.tpl index c37609ab..1959fcbc 100644 --- a/demos/quickstart/protected/controls/fr/TopicList.tpl +++ b/demos/quickstart/protected/controls/fr/TopicList.tpl @@ -101,8 +101,6 @@
    Script côté client
    diff --git a/demos/quickstart/protected/controls/id/TopicList.tpl b/demos/quickstart/protected/controls/id/TopicList.tpl index a35db55d..1f1f9403 100644 --- a/demos/quickstart/protected/controls/id/TopicList.tpl +++ b/demos/quickstart/protected/controls/id/TopicList.tpl @@ -102,8 +102,6 @@
    Penaskahan sisi-Klien
    diff --git a/demos/quickstart/protected/controls/ja/TopicList.tpl b/demos/quickstart/protected/controls/ja/TopicList.tpl index f24994e0..dc025b1a 100644 --- a/demos/quickstart/protected/controls/ja/TopicList.tpl +++ b/demos/quickstart/protected/controls/ja/TopicList.tpl @@ -102,8 +102,6 @@
    クライアントサイドスクリプト
    diff --git a/demos/quickstart/protected/controls/pl/TopicList.tpl b/demos/quickstart/protected/controls/pl/TopicList.tpl index a494d94e..c92962f9 100644 --- a/demos/quickstart/protected/controls/pl/TopicList.tpl +++ b/demos/quickstart/protected/controls/pl/TopicList.tpl @@ -102,8 +102,6 @@
    Skrypty po stronie klienta
    diff --git a/demos/quickstart/protected/controls/zh/TopicList.tpl b/demos/quickstart/protected/controls/zh/TopicList.tpl index 73e1d5a8..79293c18 100644 --- a/demos/quickstart/protected/controls/zh/TopicList.tpl +++ b/demos/quickstart/protected/controls/zh/TopicList.tpl @@ -101,8 +101,6 @@
    客户端编程
    diff --git a/demos/quickstart/protected/pages/ActiveControls/ActiveRatingList.page b/demos/quickstart/protected/pages/ActiveControls/ActiveRatingList.page index 7b6fb83d..fa0e25c4 100644 --- a/demos/quickstart/protected/pages/ActiveControls/ActiveRatingList.page +++ b/demos/quickstart/protected/pages/ActiveControls/ActiveRatingList.page @@ -1,6 +1,6 @@ -

    TActiveRatingList

    +

    TActiveRatingList

    diff --git a/demos/quickstart/protected/pages/ActiveControls/Introduction.page b/demos/quickstart/protected/pages/ActiveControls/Introduction.page index edc0b5bc..275da737 100755 --- a/demos/quickstart/protected/pages/ActiveControls/Introduction.page +++ b/demos/quickstart/protected/pages/ActiveControls/Introduction.page @@ -9,7 +9,7 @@ A classic webpage can only transfer data back to the server using an http postba 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.

    -

    Interacting with a page on callback

    +

    Interacting with a page on callback

    PRADO has builtin support for AJAX callbacks in the form of Active Controls. These controls can trigger a callback request and have their properties (value, css style, attributes, ..) updated during a callback. @@ -28,7 +28,7 @@ public function onClick($sender, $param) } -

    Active Controls (AJAX enabled Controls)

    +

    Active Controls (AJAX enabled Controls)

    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.

    diff --git a/demos/quickstart/protected/pages/Advanced/Scripts1.page b/demos/quickstart/protected/pages/Advanced/Scripts1.page deleted file mode 100755 index 96ab7760..00000000 --- a/demos/quickstart/protected/pages/Advanced/Scripts1.page +++ /dev/null @@ -1,96 +0,0 @@ - - -

    Developer Notes for prototype.js

    -This guide is based on the -Developer Notes for prototype.js by Sergio Pereira. - -

    What is that?

    -

    -In case you haven't already used it, prototype.js is a - JavaScript library written by Sam Stephenson. - This amazingly well thought and well written piece of standards-compliant code takes a lot of - the burden associated with creating rich, highly interactive web pages that characterize the Web 2.0 off your back. -

    - -

    - If you tried to use this library recently, you probably noticed that documentation is not one - of its strongest points. As many other developers before me, I got my head around prototype.js by - reading the source code and experimenting with it. I thought it would be nice to take notes while - I learned and share with everybody else. -

    -

    - As you read the examples and the reference, developers familiar with the Ruby - programming language will notice an intentional similarity between Ruby's - built-in classes and many of the extensions implemented by this library. -

    - - -

    Using the $() function

    -

    - The $() function is a handy shortcut to the all-too-frequent document.getElementById() function - of the DOM. Like the DOM function, this one returns the element that has the id passed as an argument. -

    - -

    - Unlike the DOM function, though, this one goes further. You can pass more than one id and - $() will return an Array object with - all the requested elements. The example below should illustrate this. -

    - -<com:TClientScript UsingClientScripts="prado" /> -
    -

    This is a paragraph

    -
    - -
    -

    This is another paragraph

    -
    - - - - - -
    -

    - Another nice thing about this function is that you can pass either the id string or the element object itself, - which makes this function very useful when creating other functions that can also take either form of argument. -

    - -

    Using the $F() function

    - -

    - The $F() function is a another welcome shortcut. It returns the value of any field input control, - like text boxes or drop-down lists. The function can take as argument either the element id or the element object itself. -

    - - - - - - - -
    diff --git a/demos/quickstart/protected/pages/Advanced/Scripts2.page b/demos/quickstart/protected/pages/Advanced/Scripts2.page deleted file mode 100755 index 5d88b065..00000000 --- a/demos/quickstart/protected/pages/Advanced/Scripts2.page +++ /dev/null @@ -1,253 +0,0 @@ - -

    DOM Events and Javascript

    - -

    Basic event handling

    - -

    The syntax for working with events looks like the code below.

    - - -Event.observe(element, name, observer, [useCapture]); - - -

    Assuming for a moment that we want to observe when a link was clicked, -we could do the following:

    - - -// <a id="clicker" href="http://foo.com">Click me</a> -Event.observe('clicker', 'click', function(event) -{ - alert('clicked!'); -}); - - -

    If we wanted to get the element that fired the event, we'd do this:

    - - -Event.observe('clicker', 'click', function(event) -{ - alert(Event.element(event)); -}); - - -

    Observing keystrokes

    - -

    If we wanted to observe keystrokes for the entire document, we could do the following:

    - - -Event.observe(document, 'keypress', function(event) -{ - if(Event.keyCode(event) == Event.KEY_TAB) - alert('Tab Pressed'); -}); - - -

    And lets say we wanted to keep track of what has been typed :

    - - -Event.observe('search', 'keypress', function(event) -{ - Element.update('search-results', $F(Event.element(event))); -}); - - -

    Prototype defines properties inside the event object for some -of the more common keys, so feel free to dig around in Prototype to -see which ones those are.

    - -

    A final note on keypress events; If you'd like to detect a -left click you can use Event.isLeftClick(event).

    - -

    Getting the coordinates of the mouse pointer

    - -

    Drag and drop, dynamic element resizing, games, and -much more all require the ability to track the X and Y location of -the mouse. Prototype makes this fairly simple. The code below tracks -the X and Y position of the mouse and spits out those values into -an input box named mouse.

    - - -Event.observe(document, 'mousemove', function(event) -{ - $('mouse').value = "X: " + Event.pointerX(event) + - "px Y: " + Event.pointerY(event) + "px"; -}); - - -

    If we wanted to observe the mouse location when it was -hovering over a certain element, we'd just change the document argument to -the id or element that was relevant.

    - -

    Stopping Propagation

    - -

    Event.stop(event) will stop the propagation of an event .

    - -

    Events, Binding, and Objects

    - -

    Everything has been fairly straight forward so far, but things -start getting a little trickier when you need to work with events in -and object-oriented environment. You have to deal with binding and funky -looking syntax that might take a moment to get your head around.

    - -

    Lets look at some code so you can get a better understanding of what I'm talking about.

    - -EventDispenser = Class.create(); -EventDispenser.prototype = -{ - initialize: function(list) - { - this.list = list; - - // Observe clicks on our list items - $$(this.list + " li").each(function(item) - { - Event.observe(item, 'click', this.showTagName.bindEvent(this)); - }.bind(this)); - - // Observe when a key on the keyboard is pressed. - // In the observer, we check for - // the tab key and alert a message if it is pressed. - Event.observe(document, 'keypress', this.onKeyPress.bindEvent(this)); - - // Observe our fake live search box. When a user types - // something into the box, the observer will take that - // value(-1) and update our search-results div with it. - Event.observe('search', 'keypress', this.onSearch.bindEvent(this)); - - Event.observe(document, 'mousemove', this.onMouseMove.bindEvent(this)); - }, - - // Arbitrary functions to respond to events - showTagName: function(event) - { - alert(Event.element(event).tagName); - }, - - onKeyPress: function(event) - { - var code = event.keyCode; - if(code == Event.KEY_TAB) - alert('Tab key was pressed'); - }, - - onSearch: function(event) - { - Element.update('search-results', $F(Event.element(event))); - }, - - onMouseMove: function(event) - { - $('mouse').value = "X: " + Event.pointerX(event) + - "px Y: " + Event.pointerY(event) + "px"; - } -} - -

    Whoa! What's going on here? Well, we've defined our a -custom class EventDispenser. We're going to be using this class -to setup events for our document. Most of this code is a -rewrite of the code we looked at earlier except this time, we -are working from inside an object.

    - -

    Looking at the initialize method, we can really see how -things are different now. Take a look at the code below:

    - -// Observe clicks on our list items -$$(this.list + " li").each(function(item) -{ - Event.observe(item, 'click', this.showTagName.bindEvent(this)); -}.bind(this)); - - -

    We've got iterators, binding and all sorts of stuff going on. -Lets break down what this chunk of code is doing.

    - -

    First we are hunting for a collection of elements based on -it's CSS selector. This uses the Prototype selector function $$(). -After we've found the list items we are dealing with we send -those into an each iteration where we will add our observers.

    - - -Event.observe(item, 'click', this.showTagName.bindEvent(this)); - - -

    Now looking at the code above, you'll notice the bindEvent function. -This takes the method before it showTagName and treats it as the -method that will be triggered when, in this case, -someone clicks one of our list items.

    - -

    You'll also notice we pass this as an argument to the bindEvent function. -This simply allows us to reference the object in context EventDispenser -inside our function showTagName(event). If the showTagName function -requires additional parameters, you can attach them to the later parameters of bindEvent. For example

    - -this.showTagName.bindEvent(this, param1, param2); - -//where the showTagName function is defined as -showTime : function (event, param1, param2) { ... } - - -

    Moving on, you'll see bind(this) attached to our iterator function. -This really has nothing to do with events, it is only here to allow me to -use this inside the iterator. If we did not use bind(this), I could not -reference the method showTagName inside the iterator.

    - -

    Ok, so we'll move on to looking at our methods that actually get -called when an event occurs. Since we've been dealing with showTagName, lets look at it.

    - - -showTagName: function(event) -{ - alert(Event.element(event).tagName); -} - - -

    As you can see, this function accepts one argument--the event. -In order for us to get the element which fired the event we need to -pass that argument to Event.element. Now we can manipulate it at will.

    - -

    This covers the most confusing parts of our code. The text above is also -relevant to the remaining parts of our code. If there is anything about -this you don't understand, feel free to ask questions in the forum.

    - -

    Removing Event Listeners

    - -

    This one threw me for a loop the first time I tried to use it. -I tried something similar to what I did in the Event.observe -call with the exception of using stopObserving, but nothing seemed -to change. In other words, the code below does NOT work.

    - - -$$(this.list + " li").each(function(item) -{ - Event.stopObserving(item, 'click', this.showTagName); -}.bind(this)); - - -

    What's the deal here? The reason this does not work is because there -is no pointer to the observer. This means that when we passed this.showTagName -in the Event.observe method before hand, we passed it as an -anonymous function. We can't reference an anonymous function -because it simply does not have a pointer.

    - -

    So how do we get the job done? All we need to do is give the -observing function a pointer, or the jargon free version: Set a variable -that points to this.showTagName. Ok, lets change our code a bit.

    - - -this.showTagObserver = this.showTagName.bindEvent(this); - -// Observe clicks on our list items -$$(this.list + " li").each(function(item) -{ - Event.observe(item, 'click', this.showTagObserver); -}.bind(this)); - - -

    Now we can remove the event listeners from our list like this:

    - -$$(this.list + " li").each(function(item) -{ - Event.stopObserving(item, 'click', this.showTagObserver); -}.bind(this)); - - -
    diff --git a/demos/quickstart/protected/pages/Advanced/Scripts3.page b/demos/quickstart/protected/pages/Advanced/Scripts3.page index 3f41abe1..b937e274 100755 --- a/demos/quickstart/protected/pages/Advanced/Scripts3.page +++ b/demos/quickstart/protected/pages/Advanced/Scripts3.page @@ -19,22 +19,31 @@ $this->getPage()->getClientScript()->registerPradoScript("effects"); The available packaged libraries included in Prado are
      -
    • prado : basic PRADO javascript framework based on Prototype
    • -
    • effects : visual effects from script.aculo.us
    • -
    • ajax : ajax and callback related based on Prototype
    • -
    • validator : validation
    • +
    • jquery : jQuery javascript framework
    • +
    • prado : basic PRADO javascript framework based on jQuery
    • +
    • bootstrap : Bootstrap front-end framework
    • +
    • effects : visual effects based on jQueryUI
    • +
    • ajax : ajax and callback related based on jQuery
    • +
    • validator : widgets validation
    • logger : javascript logger and object browser
    • -
    • datepicker : datepicker control
    • -
    • colorpicker : colorpicker control
    • +
    • datepicker : TDatepicker control
    • +
    • colorpicker : TColorPicker control
    • dragdrop : basic support for "drag and drop" control
    • dragdropextra : extra support for "drag and drop" controls
    • -
    • slider : slider control
    • +
    • slider : TSlider control
    • keyboard : software keyboard control
    • -
    • tabpanel : tabpanel control
    • +
    • tabpanel : TTabPanel control
    • +
    • inlineeditor : TInPlaceTextBox. control
    • activedatepicker : ajax version of the datepicker control
    • activefileupload : ajax version of the fileupload control
    • -
    • accordion : accordion control
    • -
    • htmlarea : tinymce control
    • +
    • accordion : TAccordion control
    • +
    • ratings : TRatingList control
    • +
    • htmlarea : tinyMCE version 3 editor
    • +
    • htmlarea4 : tinyMCE version 4 editor
    • +
    • prototype : prototype javascript framework (only for compatibility with old custom controls)
    • +
    • dragdrop : compatibility package for old, prototype-based drag&drop controls
    • +
    • dragdropextra : compatiblity package for old, prototype-based drag&drop controls
    • +
    • autocomplete : compatibility package for prototype-based TAutoComplete control

    The dependencies for each library are automatically resolved. Components diff --git a/demos/quickstart/protected/pages/Advanced/es/Scripts1.page b/demos/quickstart/protected/pages/Advanced/es/Scripts1.page deleted file mode 100755 index 96ab7760..00000000 --- a/demos/quickstart/protected/pages/Advanced/es/Scripts1.page +++ /dev/null @@ -1,96 +0,0 @@ - - -

    Developer Notes for prototype.js

    -This guide is based on the -Developer Notes for prototype.js by Sergio Pereira. - -

    What is that?

    -

    -In case you haven't already used it, prototype.js is a - JavaScript library written by Sam Stephenson. - This amazingly well thought and well written piece of standards-compliant code takes a lot of - the burden associated with creating rich, highly interactive web pages that characterize the Web 2.0 off your back. -

    - -

    - If you tried to use this library recently, you probably noticed that documentation is not one - of its strongest points. As many other developers before me, I got my head around prototype.js by - reading the source code and experimenting with it. I thought it would be nice to take notes while - I learned and share with everybody else. -

    -

    - As you read the examples and the reference, developers familiar with the Ruby - programming language will notice an intentional similarity between Ruby's - built-in classes and many of the extensions implemented by this library. -

    - - -

    Using the $() function

    -

    - The $() function is a handy shortcut to the all-too-frequent document.getElementById() function - of the DOM. Like the DOM function, this one returns the element that has the id passed as an argument. -

    - -

    - Unlike the DOM function, though, this one goes further. You can pass more than one id and - $() will return an Array object with - all the requested elements. The example below should illustrate this. -

    - -<com:TClientScript UsingClientScripts="prado" /> -
    -

    This is a paragraph

    -
    - -
    -

    This is another paragraph

    -
    - - - - - -
    -

    - Another nice thing about this function is that you can pass either the id string or the element object itself, - which makes this function very useful when creating other functions that can also take either form of argument. -

    - -

    Using the $F() function

    - -

    - The $F() function is a another welcome shortcut. It returns the value of any field input control, - like text boxes or drop-down lists. The function can take as argument either the element id or the element object itself. -

    - - - - - - - -
    diff --git a/demos/quickstart/protected/pages/Advanced/es/Scripts2.page b/demos/quickstart/protected/pages/Advanced/es/Scripts2.page deleted file mode 100755 index 5d88b065..00000000 --- a/demos/quickstart/protected/pages/Advanced/es/Scripts2.page +++ /dev/null @@ -1,253 +0,0 @@ - -

    DOM Events and Javascript

    - -

    Basic event handling

    - -

    The syntax for working with events looks like the code below.

    - - -Event.observe(element, name, observer, [useCapture]); - - -

    Assuming for a moment that we want to observe when a link was clicked, -we could do the following:

    - - -// <a id="clicker" href="http://foo.com">Click me</a> -Event.observe('clicker', 'click', function(event) -{ - alert('clicked!'); -}); - - -

    If we wanted to get the element that fired the event, we'd do this:

    - - -Event.observe('clicker', 'click', function(event) -{ - alert(Event.element(event)); -}); - - -

    Observing keystrokes

    - -

    If we wanted to observe keystrokes for the entire document, we could do the following:

    - - -Event.observe(document, 'keypress', function(event) -{ - if(Event.keyCode(event) == Event.KEY_TAB) - alert('Tab Pressed'); -}); - - -

    And lets say we wanted to keep track of what has been typed :

    - - -Event.observe('search', 'keypress', function(event) -{ - Element.update('search-results', $F(Event.element(event))); -}); - - -

    Prototype defines properties inside the event object for some -of the more common keys, so feel free to dig around in Prototype to -see which ones those are.

    - -

    A final note on keypress events; If you'd like to detect a -left click you can use Event.isLeftClick(event).

    - -

    Getting the coordinates of the mouse pointer

    - -

    Drag and drop, dynamic element resizing, games, and -much more all require the ability to track the X and Y location of -the mouse. Prototype makes this fairly simple. The code below tracks -the X and Y position of the mouse and spits out those values into -an input box named mouse.

    - - -Event.observe(document, 'mousemove', function(event) -{ - $('mouse').value = "X: " + Event.pointerX(event) + - "px Y: " + Event.pointerY(event) + "px"; -}); - - -

    If we wanted to observe the mouse location when it was -hovering over a certain element, we'd just change the document argument to -the id or element that was relevant.

    - -

    Stopping Propagation

    - -

    Event.stop(event) will stop the propagation of an event .

    - -

    Events, Binding, and Objects

    - -

    Everything has been fairly straight forward so far, but things -start getting a little trickier when you need to work with events in -and object-oriented environment. You have to deal with binding and funky -looking syntax that might take a moment to get your head around.

    - -

    Lets look at some code so you can get a better understanding of what I'm talking about.

    - -EventDispenser = Class.create(); -EventDispenser.prototype = -{ - initialize: function(list) - { - this.list = list; - - // Observe clicks on our list items - $$(this.list + " li").each(function(item) - { - Event.observe(item, 'click', this.showTagName.bindEvent(this)); - }.bind(this)); - - // Observe when a key on the keyboard is pressed. - // In the observer, we check for - // the tab key and alert a message if it is pressed. - Event.observe(document, 'keypress', this.onKeyPress.bindEvent(this)); - - // Observe our fake live search box. When a user types - // something into the box, the observer will take that - // value(-1) and update our search-results div with it. - Event.observe('search', 'keypress', this.onSearch.bindEvent(this)); - - Event.observe(document, 'mousemove', this.onMouseMove.bindEvent(this)); - }, - - // Arbitrary functions to respond to events - showTagName: function(event) - { - alert(Event.element(event).tagName); - }, - - onKeyPress: function(event) - { - var code = event.keyCode; - if(code == Event.KEY_TAB) - alert('Tab key was pressed'); - }, - - onSearch: function(event) - { - Element.update('search-results', $F(Event.element(event))); - }, - - onMouseMove: function(event) - { - $('mouse').value = "X: " + Event.pointerX(event) + - "px Y: " + Event.pointerY(event) + "px"; - } -} - -

    Whoa! What's going on here? Well, we've defined our a -custom class EventDispenser. We're going to be using this class -to setup events for our document. Most of this code is a -rewrite of the code we looked at earlier except this time, we -are working from inside an object.

    - -

    Looking at the initialize method, we can really see how -things are different now. Take a look at the code below:

    - -// Observe clicks on our list items -$$(this.list + " li").each(function(item) -{ - Event.observe(item, 'click', this.showTagName.bindEvent(this)); -}.bind(this)); - - -

    We've got iterators, binding and all sorts of stuff going on. -Lets break down what this chunk of code is doing.

    - -

    First we are hunting for a collection of elements based on -it's CSS selector. This uses the Prototype selector function $$(). -After we've found the list items we are dealing with we send -those into an each iteration where we will add our observers.

    - - -Event.observe(item, 'click', this.showTagName.bindEvent(this)); - - -

    Now looking at the code above, you'll notice the bindEvent function. -This takes the method before it showTagName and treats it as the -method that will be triggered when, in this case, -someone clicks one of our list items.

    - -

    You'll also notice we pass this as an argument to the bindEvent function. -This simply allows us to reference the object in context EventDispenser -inside our function showTagName(event). If the showTagName function -requires additional parameters, you can attach them to the later parameters of bindEvent. For example

    - -this.showTagName.bindEvent(this, param1, param2); - -//where the showTagName function is defined as -showTime : function (event, param1, param2) { ... } - - -

    Moving on, you'll see bind(this) attached to our iterator function. -This really has nothing to do with events, it is only here to allow me to -use this inside the iterator. If we did not use bind(this), I could not -reference the method showTagName inside the iterator.

    - -

    Ok, so we'll move on to looking at our methods that actually get -called when an event occurs. Since we've been dealing with showTagName, lets look at it.

    - - -showTagName: function(event) -{ - alert(Event.element(event).tagName); -} - - -

    As you can see, this function accepts one argument--the event. -In order for us to get the element which fired the event we need to -pass that argument to Event.element. Now we can manipulate it at will.

    - -

    This covers the most confusing parts of our code. The text above is also -relevant to the remaining parts of our code. If there is anything about -this you don't understand, feel free to ask questions in the forum.

    - -

    Removing Event Listeners

    - -

    This one threw me for a loop the first time I tried to use it. -I tried something similar to what I did in the Event.observe -call with the exception of using stopObserving, but nothing seemed -to change. In other words, the code below does NOT work.

    - - -$$(this.list + " li").each(function(item) -{ - Event.stopObserving(item, 'click', this.showTagName); -}.bind(this)); - - -

    What's the deal here? The reason this does not work is because there -is no pointer to the observer. This means that when we passed this.showTagName -in the Event.observe method before hand, we passed it as an -anonymous function. We can't reference an anonymous function -because it simply does not have a pointer.

    - -

    So how do we get the job done? All we need to do is give the -observing function a pointer, or the jargon free version: Set a variable -that points to this.showTagName. Ok, lets change our code a bit.

    - - -this.showTagObserver = this.showTagName.bindEvent(this); - -// Observe clicks on our list items -$$(this.list + " li").each(function(item) -{ - Event.observe(item, 'click', this.showTagObserver); -}.bind(this)); - - -

    Now we can remove the event listeners from our list like this:

    - -$$(this.list + " li").each(function(item) -{ - Event.stopObserving(item, 'click', this.showTagObserver); -}.bind(this)); - - -
    diff --git a/demos/quickstart/protected/pages/Advanced/id/Scripts1.page b/demos/quickstart/protected/pages/Advanced/id/Scripts1.page deleted file mode 100755 index 51535de1..00000000 --- a/demos/quickstart/protected/pages/Advanced/id/Scripts1.page +++ /dev/null @@ -1,86 +0,0 @@ - - -

    Catatan Pengembang untuk prototype.js

    -Bimbingan ini didasarkan pada -Catatan Pengembang untuk prototype.js oleh Sergio Pereira. - -

    Apa itu?

    -

    -Dalam hal Anda tidak pernah menggunakannya, prototype.js adalah librari - JavaScript yang ditulis oleh Sam Stephenson. - Pemikiran yang hebat ini dan kode sesuai-standar yang ditulis dengan baik mengambil banyak beban terkait dengan pembuatan halaman web sangat interaktif dan kaya yang mengkarakterkan Web 2.0 di belakang Anda. -

    - -

    - Jika Anda baru saja mencoba menggunakan librari ini, Anda mungkin mencatat bahwa dokumentasi bukanlah salah satu titik yang terkuat. Seperti banyak pengembang lain sebelum saya, saya mempelajari prototype.js dengan membaca kode sumber dan melakukan percobaan denganya. Saya pikir akan baik jika mengambil catatan selama saya mempelajari dan berbagi dengan orang lain. -

    -

    - Setelah Anda membaca contoh dan referensi, para pengembang yang terbiasa dengan bahasa pemrograman Ruby akan mencatat kesamaan maksud antara kelas built-in Ruby dan banyak ekstensi diimplementasikan oleh librari ini. -

    - - -

    Menggunakan fungsi $()

    -

    - Fungsi $() adalah jalan pintas yang siap digunakan untuk fungsi yang semua-terlalu-sering document.getElementById() terhadap DOM. Seperti fungsi DOM, fungsi ini mengembalikan elemen yang id-nya dikirimkan sebagai sebuah argumen. -

    - -

    - Tidak seperti fungsi DOM, bagaimanapun juga, yang satu ini melampauinya. Anda dapat mengirimkan lebih dari satu id dan - $() akan mengembalikan obyek Array dengan semua elemen yang diminta. Contoh di bawah seharunya menggambarkan ini. -

    - -<com:TClientScript UsingClientScripts="prado" /> -
    -

    This is a paragraph

    -
    - -
    -

    This is another paragraph

    -
    - - - - - -
    -

    - Hal baik lainnya dari fungsi ini adalah bahwa Anda bisa mengirimkan baik string id ataupun elemen obyek itu sendiri, yang menjadikan fungsi ini sangat berguna ketika membuat fungsi lain yang juga mengambil bentuk argumen. -

    - -

    Menggunakan fungsi $F()

    - -

    - Fungsi $F() adalah jalan pintas penyambutan lainnya. Ia mengembalikan nilai dari setiap kontrol input field, seperti kotak teks atau daftar drop-down. Fungsi bisa diambil sebagai argumen baik elemen id ataupun elemen obyek itu sendiri. -

    - - - - - - - -
    diff --git a/demos/quickstart/protected/pages/Advanced/id/Scripts2.page b/demos/quickstart/protected/pages/Advanced/id/Scripts2.page deleted file mode 100755 index 80277628..00000000 --- a/demos/quickstart/protected/pages/Advanced/id/Scripts2.page +++ /dev/null @@ -1,214 +0,0 @@ - -

    Event DOM dan Javascript

    - -

    Penanganan event dasar

    - -

    Sintaks untuk bekerja dengan event terlihat seperti kode di bawah.

    - - -Event.observe(element, name, observer, [useCapture]); - - -

    Menganggap untuk saat ini kita ingin mengamati sebuah link yang diklik, kita dapat melakukan yang berikut:

    - - -// <a id="clicker" href="http://foo.com">Click me</a> -Event.observe('clicker', 'click', function(event) -{ - alert('clicked!'); -}); - - -

    Jika kita menginginkan untuk mendapatkan elemen yang memicu event, kita melakukan ini:

    - - -Event.observe('clicker', 'click', function(event) -{ - alert(Event.element(event)); -}); - - -

    Mengamati tekanan tombol

    - -

    Jika kita ingin mengamati tekanan tombol untuk seluruh dokumen, kita dapat melakukan yang berikut:

    - - -Event.observe(document, 'keypress', function(event) -{ - if(Event.keyCode(event) == Event.KEY_TAB) - alert('Tab Pressed'); -}); - - -

    Dan katakanlah kita ingin melacak apa yang telak diketikan:

    - - -Event.observe('search', 'keypress', function(event) -{ - Element.update('search-results', $F(Event.element(event))); -}); - - -

    Prototipe mendefinisikan properti di dalam obyek event untuk beberapa dari tombol yang lebih umum, maka jangan ragu-ragu untuk mencari di sekitar Prototype guna melihat yang mana saja itu.

    - -

    Catatan terakhir pada event tekanan tombol; Jika Anda ingin mendeteksi klik kiri, Anda bisa menggunakan Event.isLeftClick(event).

    - -

    Mendapatkan koordinat dari penunjuk mouse

    - -

    Tarik dan jatuhkan, pengukuran ulang elemen dinamis, permainan, dan lebih banyak lagi, semuanya memerlukan kemampuan untuk melacak lokasi X dan Y dari mouse. Prototipe menjadikan hal ini cukup sederhana. Kode di bawah melacak posisi X dan Y dari mouse dan memindahkan nilainya ke dalam kotak input bernama mouse.

    - - -Event.observe(document, 'mousemove', function(event) -{ - $('mouse').value = "X: " + Event.pointerX(event) + - "px Y: " + Event.pointerY(event) + "px"; -}); - - -

    Jika kita ingin mengamati lokasi mouse saat ia melewati elemen tertentu, cukup ubah argumen dokumen ke id atau elemen yang relevan.

    - -

    Menghentikan Propagasi

    - -

    Event.stop(event) akan menghentikan propagasi sebuah event .

    - -

    Event, Penyatuan, dan Obyek

    - -

    Sejauh ini semuanya sudah jelas, tapi sesuatu mulai menjadi sedikit lebih rumit ketika Anda perlu bekerja dengan event dalam lingkungan obyek-terorientasi. Anda harus berhadapan dengan penyatuan dan sintaks yang terlihat aneh yang memerlukan beberapa waktu bagi Anda untuk mengetahuinya.

    - -

    Mari kita lihat pada beberapa kode agar Anda bisa mendapatkan pengertian yang lebih baik atas apa yang sedang saya bicarakan.

    - -EventDispenser = Class.create(); -EventDispenser.prototype = -{ - initialize: function(list) - { - this.list = list; - - // Amati klik pada item list kita - $$(this.list + " li").each(function(item) - { - Event.observe(item, 'click', this.showTagName.bindEvent(this)); - }.bind(this)); - - // Amati saat tombol pada keyboard ditekan. - // Dalam pengamat, kita memeriksa - // tombol tab dan memunculkan pesan jika ditekan. - Event.observe(document, 'keypress', this.onKeyPress.bindEvent(this)); - - // Amati kotak pencarian kita yang palsu. Ketika pengguna mengetik - // sesuatu ke dalam kotak, pengamat akan mengambil nilai (-1) itu - // dan memutakhirkan hasil pencarian div dengannya. - Event.observe('search', 'keypress', this.onSearch.bindEvent(this)); - - Event.observe(document, 'mousemove', this.onMouseMove.bindEvent(this)); - }, - - // Fungsi bebas untuk merespon event - showTagName: function(event) - { - alert(Event.element(event).tagName); - }, - - onKeyPress: function(event) - { - var code = event.keyCode; - if(code == Event.KEY_TAB) - alert('Tab key was pressed'); - }, - - onSearch: function(event) - { - Element.update('search-results', $F(Event.element(event))); - }, - - onMouseMove: function(event) - { - $('mouse').value = "X: " + Event.pointerX(event) + - "px Y: " + Event.pointerY(event) + "px"; - } -} - -

    Wah! Apa yang terjadi di sini? Kita telah mendefinisikan kelas kustom kita EventDispenser. Kita akan menggunakan kelas ini untuk menyiapkan event untuk dokumenkita. Banyak dari kode ini ditulis ulang yang kita lihat di awal kecuali kali ini, kita bekerja dari dalam sebuah obyek.

    - -

    Melihat metode initialize, sebenarnya kita dapat melihat bagaimana sesuatu menjadi berbeda sekarang. Lihat kode di bawah ini:

    - -// Observe clicks on our list items -$$(this.list + " li").each(function(item) -{ - Event.observe(item, 'click', this.showTagName.bindEvent(this)); -}.bind(this)); - - -

    Kita mendapatkan iterator, penyatuan dan semua hal lainnya. Mari kita rinci apa yang dikerjakan kode ini.

    - -

    Pertama kita memburu koleksi elemen berdasarkan selektor CSS. Ini menggunakan fungsi selektor Prototipe $$(). -Setelah kita menemukan daftar item kita berhadapan dengan apa yang kita kirim ke dalam setiap iterasi di mana kita akan menambahkan pengamat kita.

    - - -Event.observe(item, 'click', this.showTagName.bindEvent(this)); - - -

    Sekarang, melihat kode di atas, Anda akan mencatat fungsi bindEvent. Ini mengambil metode sebelumnya showTagName dan memperlakukannya sebagai metode yang akan dipicu ketika seseorang mengklik salah satu dari item daftar kita.

    - -

    Anda juga akan mencatat bahwa kita mengirimkan ini sebagai argumen ke fungsi bindEvent. -Ini membolehkan kita untuk mereferensi obyek dalam konteks EventDispenser -di dalam fungsi showTagName(event) kita. Jika fungsi showTagName memerlukan parameter tambahan, Anda melampirkannya ke parameter terakhir dari bindEvent. Sebagai contoh

    - -this.showTagName.bindEvent(this, param1, param2); - -//di mana fungsi showTagName didefinisikan seperti -showTime : function (event, param1, param2) { ... } - - -

    Selanjutnya, Anda akan melihat bind(this) yang dilampirkan ke fungsi iterator. -Ini sama sekali tidak berkaitan dengan event, ia berada di sini untuk membolehkan saya menggunakan this di dalam iterator. Jika kita tidak menggunakan bind(this), saya tidak bisa mereferensi metode showTagName di dalam iterator.

    - -

    Ok, kita berlanjut untuk melihat metode kita yang sebenarnya dipanggil saat terjadi event. Karena kita sudah berhadapan dengan showTagName, mari kita lihat itu.

    - - -showTagName: function(event) -{ - alert(Event.element(event).tagName); -} - - -

    Seperti yang Anda lihat, fungsi ini menerima satu argumen--event. -Agar kita mendapatkan elemen yang memicu event kita perlu mengirimkan argumen ke Event.element. Sekarang kita dapat memanipulasinya kapan saja.

    - -

    Ini mencakup bagian yang paling membingungkan dari kode kita. Teks di atas juga relevan untuk bagian sisa dari kode kita. Jika ada sesuatu mengenai ini yang tidak Anda mengerti, jangan ragu-ragu untuk mengajukan pertanyaan dalam forum.

    - -

    Menghapus Pendengar Event

    - -

    Yang satu ini melontarkan saya dari lingkaran untuk pertama kali saya mencoba menggunakannya. -Saya mencoba sesuatu yang mirip dengan apa yang saya lakukan dalam pemanggilan Event.observe dengan kekecualian penggunaan stopObserving, tapi tidak ada yang berubah. Dengan kata lain, kode di bawah ini TIDAK bekerja.

    - - -$$(this.list + " li").each(function(item) -{ - Event.stopObserving(item, 'click', this.showTagName); -}.bind(this)); - - -

    Apa yang terjadi di sini? Alasan ini tidak bekerja karena tidak ada penunjuk ke pengamat. Ini berarti bahwa ketika kita mengirimkan this.showTagName dalam metode Event.observe sebelumnya, kita mengirimkannya sebagai fungsi anonim. Kita tidak bisa mereferensi fungsi anonim karena ia tidak mempunyai penunjuk.

    - -

    Lalu bagaimana kita yakin pekerjaan diselesaikan? Semua yang kita perlukan adalah memberikan fungsi mengamati penunjuk, atau kelompok versi bebas: Setel variabel yang mengarah ke this.showTagName. Ok, mari kita ubah kode kita sedikit.

    - - -this.showTagObserver = this.showTagName.bindEvent(this); - -// Amati klik pada item list kita -$$(this.list + " li").each(function(item) -{ - Event.observe(item, 'click', this.showTagObserver); -}.bind(this)); - - -

    Sekarang kita bisa menghapus pendengar event dari daftar kita seperti ini:

    - -$$(this.list + " li").each(function(item) -{ - Event.stopObserving(item, 'click', this.showTagObserver); -}.bind(this)); - - -
    diff --git a/demos/quickstart/protected/pages/Controls/HtmlArea4.page b/demos/quickstart/protected/pages/Controls/HtmlArea4.page index 1fa33424..17c87e18 100755 --- a/demos/quickstart/protected/pages/Controls/HtmlArea4.page +++ b/demos/quickstart/protected/pages/Controls/HtmlArea4.page @@ -1,6 +1,6 @@ -

    THtmlArea4

    +

    THtmlArea4

    diff --git a/demos/quickstart/protected/pages/Controls/Markdown.page b/demos/quickstart/protected/pages/Controls/Markdown.page index d7cc00c6..0285ed32 100644 --- a/demos/quickstart/protected/pages/Controls/Markdown.page +++ b/demos/quickstart/protected/pages/Controls/Markdown.page @@ -1,6 +1,6 @@ -

    TMarkdown

    +

    TMarkdown

    diff --git a/demos/quickstart/protected/pages/Database/ViewsArUpdate.page b/demos/quickstart/protected/pages/Database/ViewsArUpdate.page index 5dd084c4..2df1d3d7 100644 --- a/demos/quickstart/protected/pages/Database/ViewsArUpdate.page +++ b/demos/quickstart/protected/pages/Database/ViewsArUpdate.page @@ -1,6 +1,6 @@

    Views - AR Classes Update

    - +

    Usually when you use Active Records Classes to interact with your Data Base you also build some proper views to handle them. To save every element of your views in your Data Base @@ -9,9 +9,9 @@ Thats why Prado offers an automatic mechanism to update your views from your AR Classes and vice versa.

    -

    Updating views from AR Classes

    +

    Updating views from AR Classes

    -

    Instead of assign each attribute in your AR Class to your view controls like this:

    +

    Instead of assign each attribute in your AR Class to your view controls like this:

    $student = AR_Student::finder()->findByPk(1); $this->name->Text = $student->name; @@ -20,7 +20,7 @@ $this->gender->Text = $student->gender; $this->average->Text = $student->average; -

    You can do the same as follows:

    +

    You can do the same as follows:

    $student = AR_Student::finder()->findByPk(1); @@ -28,8 +28,8 @@ $this->tryToUpdateView($student); -

    Updating AR Classes from views

    -

    Instead of assign each attribute in your views to your AR Classes like this:

    +

    Updating AR Classes from views

    +

    Instead of assign each attribute in your views to your AR Classes like this:

    $student = new AR_Student(); $student->name = $this->name->Text; @@ -39,7 +39,7 @@ $student->average = $this->average->Text; $student->save(); -

    You can do the same as follows:

    +

    You can do the same as follows:

    $student = new AR_Student(); diff --git a/demos/quickstart/protected/pages/Fundamentals/Pages.page b/demos/quickstart/protected/pages/Fundamentals/Pages.page index 58f4f06d..3e03a24c 100755 --- a/demos/quickstart/protected/pages/Fundamentals/Pages.page +++ b/demos/quickstart/protected/pages/Fundamentals/Pages.page @@ -15,7 +15,7 @@ A form submission is called postback if the submission is made to the pag TPage has a IsPostBack property exposing whether the current request being handled is the first request for this page or the consequence of a postback.

    -

    CallBack

    +

    CallBack

    A callback 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.
    diff --git a/demos/quickstart/protected/pages/GettingStarted/CommandLine.page b/demos/quickstart/protected/pages/GettingStarted/CommandLine.page index 3619d3d9..9e919212 100644 --- a/demos/quickstart/protected/pages/GettingStarted/CommandLine.page +++ b/demos/quickstart/protected/pages/GettingStarted/CommandLine.page @@ -110,22 +110,22 @@ PostRecord#1

    -

    Creating Active Record Classes

    -

    +

    Creating Active Record Classes

    +

    In the blog demo project, we need to create two Active Record classes, UserRecord and PostRecord, to represent data records in the users and posts tables, respectively. Active Record classes must extend from the base class ActiveRecord, and must define property names that matches with the field names of the corresponding table.

    -

    +

    To better organize our directories, we create a new directory protected/database to hold the class files. We also modify our application configuration by inserting the following lines. It is equivalent to adding the directory protected/database to PHP include_path, which allows us to use the classes without explicitly including them.

    - + -

    +

    At the prompt, enter the following two commands to create UserRecord and PostRecord classes:

    @@ -135,7 +135,7 @@ At the prompt, enter the following two commands to create UserRecord an >> generate posts Application.database.PostRecord
    -

    +

    Here we used the namespace format again to specify the classes to be created. The path Application.database.UserRecord indicates that we want the UserRecord class file to be protected/database/UserRecord.php.

    diff --git a/demos/quickstart/protected/pages/GettingStarted/Installation.page b/demos/quickstart/protected/pages/GettingStarted/Installation.page index 956f53c2..f59eed70 100755 --- a/demos/quickstart/protected/pages/GettingStarted/Installation.page +++ b/demos/quickstart/protected/pages/GettingStarted/Installation.page @@ -13,7 +13,7 @@ The minimum requirement by PRADO is that the Web server support PHP 5.3.3. PRADO PRADO can be installed as a standalone package or using composer

    -

    Standalone package

    +

    Standalone package

    1. Go to pradosoft.com to grab the latest version of PRADO.
    2. Unpack the PRADO release file to a Web-accessible directory. @@ -28,7 +28,7 @@ If you encounter any problems with the demo applications, please use the PRADO r

      -

      Composer install

      +

      Composer install

      1. If you don't have installed composer already, install it globally: diff --git a/demos/quickstart/protected/pages/GettingStarted/Upgrading32.page b/demos/quickstart/protected/pages/GettingStarted/Upgrading32.page index e2378ed5..7e630488 100644 --- a/demos/quickstart/protected/pages/GettingStarted/Upgrading32.page +++ b/demos/quickstart/protected/pages/GettingStarted/Upgrading32.page @@ -1,6 +1,6 @@ -

        Upgrading from v3.2

        +

        Upgrading from v3.2

        @@ -17,7 +17,7 @@ We summarize in the following the most significant changes in v3.3 to help devel

        -

        Basic Prototype to jQuery javascript porting

        +

        Basic Prototype to jQuery javascript porting

        The number one rule on writing jQuery javascript code is to read the jQuery documentation. Porting code from Prototype to jQuery needs some effort: here's a basic lookup table to port existing code:

        @@ -168,7 +168,7 @@ The number one rule on writing jQuery javascript code is to read the PRADO specific code changes

        PRADO Porting prado to jQuery some method signatures has changed, or have been adapted: @@ -207,7 +207,7 @@ Porting prado to jQuery some method signatures has changed, or have been adapted -

        Specific controls changes

        +

        Specific controls changes

        Some Prado controls were based on specific extensions of the Prototype + Scriptaculous javascript framework, and they have been deprecated now that jQuery has become the primary js framework in PRADO. PRADO 3.3 introduces jQuery-based counterpart for these controls and encourage everyone to port their code to the new controls, but the old controls are still supposed to work with some minor annoyance: diff --git a/demos/quickstart/protected/pages/GettingStarted/Wsat.page b/demos/quickstart/protected/pages/GettingStarted/Wsat.page index 3d07e6f2..a76ca163 100644 --- a/demos/quickstart/protected/pages/GettingStarted/Wsat.page +++ b/demos/quickstart/protected/pages/GettingStarted/Wsat.page @@ -1,5 +1,5 @@ -

        Web Site Administration Tool

        +

        Web Site Administration Tool

        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. @@ -12,12 +12,12 @@

        -

        Requirements

        +

        Requirements

        To use WSAT, you need to add in your project configuration file: application.xml, in the services section the wsat service like follows: - + ... @@ -25,7 +25,7 @@

        -

        Usage

        +

        Usage

        Then you are ready to go to: http://localhost/yoursite/index.php?wsat=TWsatLogin and doing so you should see the following page: @@ -36,7 +36,7 @@ is part of a basic security system to avoid undesirable persons to use this tool.

        -

        Active Record classes generation

        +

        Active Record classes generation

        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: diff --git a/demos/quickstart/protected/pages/JuiControls/Home.page b/demos/quickstart/protected/pages/JuiControls/Home.page index 7c0c065f..f997e573 100644 --- a/demos/quickstart/protected/pages/JuiControls/Home.page +++ b/demos/quickstart/protected/pages/JuiControls/Home.page @@ -1,9 +1,9 @@ -

        Jui Controls (jQuery UI)

        +

        Jui Controls (jQuery UI)

        Jui controls are the PRADO port of the standard jQuery UI widgets. They can be used as standard Active Controls, but will automatically load the needed jQuery-UI javascript libraries.

        -

        Options

        +

        Options

        The Options property of PRADO Jui controls is used to pass options to the underlying javascript object. Each subproperty set on Options will be translated to a javascript property added to the object. The complete list of options available for each widget is availble at jQuery-UI's API Documentation.

        @@ -24,7 +24,7 @@ jQuery-UI's Resizable adds an handl />
        -

        Events

        +

        Events

        jQuery-UI widgets offers a lot of events that PRADO can hook up and trasmit to the serverside using a callback request. Event available for PRADO Jui controls inherits their names from their jQuery-UI counterparts, prefixed with "On". Jui controls doesn't make use of the AutoPostback property anymore, but only triggers a callback when an event handler is associated to the corresponding event. @@ -42,7 +42,7 @@ jQuery's Draggable allows a target /> -

        PRADO Jui interactions controls

        +

        PRADO Jui interactions controls

        Jui interactions adds basic mouse-based interactions to elements like moving, resizing or sorting. PRADO Jui interactions controls applies there interactions to a TActivePanel For informations of the specific options of each interaction, follow jQuery-UI Interaction API Documentation for the specific interaction. @@ -74,7 +74,7 @@ For informations of the specific options of each interaction, follow jQuery-UI I

      2. -

        PRADO Jui widgets controls

        +

        PRADO Jui widgets controls

        • TJuiProgressbar diff --git a/demos/quickstart/protected/pages/JuiControls/Interactions.page b/demos/quickstart/protected/pages/JuiControls/Interactions.page index 2b48da68..b2be141f 100644 --- a/demos/quickstart/protected/pages/JuiControls/Interactions.page +++ b/demos/quickstart/protected/pages/JuiControls/Interactions.page @@ -1,12 +1,12 @@ -

          Jui interactions controls

          +

          Jui interactions controls

          Jui interactions adds basic mouse-based interactions to elements like moving, resizing or sorting. PRADO Jui interactions controls applies these interactions to a TActivePanel For informations of the specific options of each interaction, follow jQuery-UI Interaction API Documentation for the specific interaction.

          -

          TJuiDraggable

          +

          TJuiDraggable

          - jQuery UI API

          @@ -22,7 +22,7 @@ The panel can be moved using the mouse, and eventually dropped over a -

          TJuiDroppable

          +

          TJuiDroppable

          - jQuery UI API

          @@ -37,7 +37,7 @@ When a TJuiDraggable
          -

          TJuiResizable

          +

          TJuiResizable

          - jQuery UI API

          TJuiResizable is an extension to TActivePanel based on jQuery-UI's Resizable interaction. @@ -52,7 +52,7 @@ A small handle is shown on the bottom right corner of the panel, that permits th -

          TJuiSelectable

          +

          TJuiSelectable

          - jQuery UI API

          TJuiSelectable is an extension to TActivePanel based on jQuery-UI's Selectable interaction. @@ -67,7 +67,7 @@ A small handle is shown on the bottom right corner of the panel, that permits th -

          TJuiSortable

          +

          TJuiSortable

          - jQuery UI API

          TJuiSortable is an extension to TActivePanel based on jQuery-UI's Sortable interaction. diff --git a/demos/quickstart/protected/pages/JuiControls/Widgets.page b/demos/quickstart/protected/pages/JuiControls/Widgets.page index 63c6aa32..5bf8b083 100644 --- a/demos/quickstart/protected/pages/JuiControls/Widgets.page +++ b/demos/quickstart/protected/pages/JuiControls/Widgets.page @@ -1,5 +1,5 @@ -

          Jui widgets controls

          +

          Jui widgets controls

          Jui widgets are complex controls built on the foundations of jQuery effects and jQueryUI interactions. PRADO Jui widgets controls can be divided in two groups: @@ -11,7 +11,7 @@ For informations of the specific options of each widget, follow jQuery-UI Widget

          -

          TJuiProgressbar

          +

          TJuiProgressbar

          -
          jQuery UI API

          @@ -26,7 +26,7 @@ The panel takes the aspect of a progressbar ranging from a value of 0 to the val
          -

          TJuiAutoComplete

          +

          TJuiAutoComplete

          -
          jQuery UI API

          @@ -50,7 +50,7 @@ When a suggestion is selected the OnSuggestionSelected event is raised, -

          TJuiDialog

          +

          TJuiDialog

          -
          jQuery UI API

          @@ -72,7 +72,7 @@ The buttons may contain a callback that will be fired when they are clicked. -

          TJuiDatePicker

          +

          TJuiDatePicker

          -
          jQuery UI API

          diff --git a/demos/site/.htaccess b/demos/site/.htaccess new file mode 100644 index 00000000..cd03b45e --- /dev/null +++ b/demos/site/.htaccess @@ -0,0 +1,8 @@ + +RewriteEngine on + +RewriteCond %{REQUEST_FILENAME} !-d +RewriteCond %{REQUEST_FILENAME} !-f +RewriteRule ^(.*)$ index.php/$1 [L] + + \ No newline at end of file diff --git a/demos/site/assets/.gitignore b/demos/site/assets/.gitignore new file mode 100755 index 00000000..d6b7ef32 --- /dev/null +++ b/demos/site/assets/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/demos/site/index.php b/demos/site/index.php new file mode 100755 index 00000000..0192f1cb --- /dev/null +++ b/demos/site/index.php @@ -0,0 +1,17 @@ +run(); + diff --git a/demos/site/protected/.htaccess b/demos/site/protected/.htaccess new file mode 100755 index 00000000..8d2f2563 --- /dev/null +++ b/demos/site/protected/.htaccess @@ -0,0 +1 @@ +deny from all diff --git a/demos/site/protected/Common/SimpleMenu.php b/demos/site/protected/Common/SimpleMenu.php new file mode 100644 index 00000000..bcbc94cf --- /dev/null +++ b/demos/site/protected/Common/SimpleMenu.php @@ -0,0 +1,86 @@ +renderBeginTag("ul"); + parent::renderChildren($writer); + $writer->renderEndTag(); + } + +} + +class SimpleMenuItem extends TControl +{ + + public function getPath() + { + return $this->getControlState("Path", null); + } + + public function setPath($value) + { + $this->setControlState("Path", TPropertyValue::ensureString($value)); + } + + public function getUrl() + { + return $this->getControlState("Url", null); + } + + public function setUrl($value) + { + $this->setControlState("Url", TPropertyValue::ensureString($value)); + } + + public function getTarget() + { + return $this->getControlState("Target", null); + } + + public function setTarget($value) + { + $this->setControlState("Target", TPropertyValue::ensureString($value)); + } + + public function getText() + { + return $this->getControlState("Text", $this->getID()); + } + + public function setText($value) { + $this->setControlState("Text", TPropertyValue::ensureString($value)); + } + + public function render($writer) + { + $writer->renderBeginTag("li"); + + if(null !== $path = $this->getPath()) + { + $writer->addAttribute('href', $this->Service->constructUrl($path)); + + if($path == $this->Page->getPagePath()) + $writer->addAttribute('class', 'active'); + } elseif(null !== $url = $this->getUrl()) { + $writer->addAttribute('href', $url); + } + + if($this->getTarget() !== null) + $writer->addAttribute('target', $this->getTarget()); + + $writer->renderBeginTag("a"); + + $writer->write(THttpUtility::htmlEncode($this->getText())); + + $writer->renderEndTag(); + $writer->renderEndTag(); + } +} diff --git a/demos/site/protected/Layouts/MainLayout.php b/demos/site/protected/Layouts/MainLayout.php new file mode 100644 index 00000000..15302dfc --- /dev/null +++ b/demos/site/protected/Layouts/MainLayout.php @@ -0,0 +1,5 @@ + + + + + + + + + + + + + +

          + + +
          + +
          + + + \ No newline at end of file diff --git a/demos/site/protected/Pages/About.page b/demos/site/protected/Pages/About.page new file mode 100644 index 00000000..62d3af2d --- /dev/null +++ b/demos/site/protected/Pages/About.page @@ -0,0 +1,55 @@ + + +
          +

          The PRADO Group

          +

          +The PRADO group is a team of PRADO enthusiasts who develop and promote the PRADO framework and the related projects. +

          +

          Team Members

          +
            +
          • Fabio Bas - development, testing
          • +
          • Ciro Mattia Gonano - github/packagist maintainer
          • +
          • Daniel Sampedro Bello - wsat development
          • +
          • David Otto - development, testing
          • +
          • Jens Klaer - development, testing
          • +
          +

          The following Team Members are currently inactive.

          +
            +
          • Qiang Xue - founder of PRADO framework, core development
          • +
          • Xiang Wei Zhuo - core development (javascripts, active controls, DB controls, tests)
          • +
          • Jason Ragsdale - site and forum administration
          • +
          • Knut Urdalen - test, marketing
          • +
          • Eirik Hoem - core development
          • +
          • Yves Berkholz - core development
          • +
          • Michael Hartl - component development, testing
          • +
          • Carl G. Mathisen - design and document comment system
          • +
          • Christophe Boulain - component development, testing
          • +
          • Robin J. Rogge - site and forum adminitration, core development
          • +
          +

          Past Team Members

          +

          +Alex Flint, Brian Luft, John Teague, Todd Patrick, Pim van der Zwet, Tim Evans, Alban Hanry, Marcus Nyeholt +

          + +

          History of PRADO

          +

          +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 high votes both from the public and from the judges' panel. +

          +

          +In August 2004, PRADO was hosted on SourceForge as an open source project. Soon after, the project site xisc.com 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 I18 and L10N support. +

          +

          +In May 2005, developers 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. +

          +

          +In October 2008, the original development team released a new framework called Yii. 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. +

          +

          +To promote a model of community-driven development, the project repositories were moved first on Google Code and then, in September 2013, on GitHub. +

          +

          +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. +

          + +
          +
          \ No newline at end of file diff --git a/demos/site/protected/Pages/Demos.page b/demos/site/protected/Pages/Demos.page new file mode 100644 index 00000000..dbc7635d --- /dev/null +++ b/demos/site/protected/Pages/Demos.page @@ -0,0 +1,31 @@ + + +
          + +

          Online Demos

          +

          +The following demos are developed using the PRADO framework. They are also available under the demos directory in the PRADO release. +

          +
          +
          \ No newline at end of file diff --git a/demos/site/protected/Pages/Documentation.page b/demos/site/protected/Pages/Documentation.page new file mode 100644 index 00000000..0a4dd73f --- /dev/null +++ b/demos/site/protected/Pages/Documentation.page @@ -0,0 +1,42 @@ + + +
          + + + + +

          API Manual

          + +The API Manual contains the documentation for all the classes declared in PRADO. + +
          +
          +

          Tutorials

          + +
            +
          • The QuickStart Tutorial - This tutorial is a definitive guidance showing every aspect of PRADO. It is written in PRADO and contains many demos to show the usage of various PRADO controls. The tutorial is also available as a PDF file.
          • +
          • The PRADO Blog Tutorial - This tutorial shows how to use PRADO to build a complete Web application. Prior PRADO knowledge is not required.
          • +
          • The SQLMap Tutorial - This tutorial is a definitive guidance on how to use SQLMap (available since v3.1.0).
          • +
          + + +
          + +
          \ No newline at end of file diff --git a/demos/site/protected/Pages/Download.page b/demos/site/protected/Pages/Download.page new file mode 100644 index 00000000..bdc21221 --- /dev/null +++ b/demos/site/protected/Pages/Download.page @@ -0,0 +1,116 @@ + + +
          + +

          Download

          +

          PRADO is an open source project hosted on GitHub. It is released under the terms of +.

          +

          The latest stable version of PRADO is <%= Prado::getVersion() %>.

          + + + + + +$(document).ready(function () { + $.getJSON("https://api.github.com/repos/pradosoft/prado/releases").done(function (json) { + var release = json[0]; + + var releaseVer = release.tag_name; + var releaseDate = new Date(release.published_at); + var downloadURL = release.assets[0].browser_download_url; + + var monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; + var day = releaseDate.getDate(); + var monthIndex = releaseDate.getMonth(); + var year = releaseDate.getFullYear(); + + $("#lastVersion").text(releaseVer); + $("#lastVersionDate").text(' (' + day + ' ' + monthNames[monthIndex] + ' ' + year + ')'); + $("#downloadLink").attr("href", downloadURL); + }); + + $.get("https://raw.githubusercontent.com/pradosoft/prado/master/HISTORY", function(data) { + $("#changeLog").text(data); + }); +}); + + +
          +

          Latest changelog entries

          +
          loading...
          + +
          +

          Previous PRADO v3.x releases

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          VersionDate Files
          3.2.4Aug 26, 2014Source code and documentation
          3.2.3Nov 26, 2013Source code and documentation
          3.2.2July 20, 2013Source code, documentation
          3.2.1January 19, 2013Source code, documentation
          3.2.0June 25, 2012Source code, documentation
          3.1.10July 27, 2011Source code, documentation
          3.1.9June 3, 2011Source code, documentation
          3.1.8May 29, 2011Source code, documentation
          3.1.7February 22, 2010Source code, documentation
          3.1.6July 22, 2009Source code, documentation
          3.1.5May 24, 2009Source code, documentation
          3.1.4January 11, 2009Source code, documentation
          3.1.3November 1, 2008Source code, documentation
          3.1.2April 21, 2008Source code
          3.1.1October 1, 2007Source code
          3.1.0July 2, 2007Source code
          3.0.7April 2, 2007Source code
          3.0.6December 4, 2006Source code
          3.0.5October 23, 2006Source code
          3.0.4September 4, 2006Source code
          3.0.3August 6, 2006Source code
          3.0.2July 2, 2006Source code
          3.0.1June 4, 2006Source code
          3.0.0May 1, 2006Source code
          +
          +
          +

          PRADO Tools

          + + + + + + + + + + + + + + + + + + + + + + + + + + +
          FileDescriptionRelease date
          Dreamweaver ExtensionPRADO Dreamweaver Extension (r2764)February 14, 2010
          InType BundlePRADO InType Bundle (r2854)June 23, 2010
          Notepad++ PluginPRADO Notepad++ Plugin (r2793)April 6, 2010
          Textmate BundlePRADO TextMate Bundle, suitable also for Sublime Text 2 (r3193)July 24, 2012
          +
          +
          +

          Git Access

          +

          You can obtain the latest development version of PRADO from our Git repository.

          +
          WARNING: Unreleased Source code in Git may contain known bugs and are subject to changes without prior notice.
          +

          The Source code repository can be accessed anonymously using the following command,

          +
          git clone https://github.com/pradosoft/prado.git
          + +
          + +
          \ No newline at end of file diff --git a/demos/site/protected/Pages/Home.page b/demos/site/protected/Pages/Home.page new file mode 100755 index 00000000..b9cc49b7 --- /dev/null +++ b/demos/site/protected/Pages/Home.page @@ -0,0 +1,37 @@ + + + + +
          +
          +

          What is PRADO?

          +

          PRADOTM is a component-based and event-driven programming framework for developing Web applications in PHP 5. PRADO stands for PHP Rapid Application Development Object-oriented.

          +
          +
          +

          What does PRADO require?

          +

          The sole requirement to run PRADO-based applications is a Web server supporting PHP 5.3.0 or higher. PRADO is free. You can use it to develop either open source or commercial applications.

          +
          +
          +

          Quick facts about PRADO

          +

          + First release: August 2004
          + License: revised BSD
          + Lines of core code: > 150,000 lines
          + Number of classes: > 700
          + Downloads: > 430,000 15/09/2013
          +

          +
          +
          + +
          +
          + +
          \ No newline at end of file diff --git a/demos/site/protected/Pages/License.page b/demos/site/protected/Pages/License.page new file mode 100644 index 00000000..9636acf9 --- /dev/null +++ b/demos/site/protected/Pages/License.page @@ -0,0 +1,28 @@ + + +
          + +

          License of PRADO

          + +

          +The PRADO framework and the included demos are free software. They are released under the terms of the following BSD License. +

          +

          +Copyright 2004-<%= date('Y') %> by The PRADO Group (http://www.pradosoft.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 of the PRADO Group 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. +

          + +
          + +
          \ No newline at end of file diff --git a/demos/site/protected/Pages/Tos.page b/demos/site/protected/Pages/Tos.page new file mode 100644 index 00000000..18f4750c --- /dev/null +++ b/demos/site/protected/Pages/Tos.page @@ -0,0 +1,42 @@ + + +
          + +

          Terms of Service

          + +

          +This web site is owned and operated by Prado Software Group, (PradoSoft or we). We have created this page to share with you our privacy and legal policies regarding to your personal information and the contents on this site. +

          + +

          Privacy Policy

          +

          +We do not collect personal information about you unless you voluntarily provide it to us or authorize us to collect it. We consider the following to be personal information: your name, email address, phone number, date of birth, job, personal interests, your e-mail address. We treat personal information confidentially. +

          +

          +We do collect and track certain non-personally information, including but not limited to, user IP numbers and browser type, access times, domain names, usage habits and other information which does not specifically identify any individual. +

          +

          +We may use cookies to customize your use of the web site and for other purposes to improve your use of the service, and may also use web beacons, web bugs, action tags and third party cookies. You may stop or restrict the placement of cookies on your computer or flush them from your browser by adjusting your web browser preferences, in which case you may still use our Service, but it may interfere with some of its functionality. We do not use cookies to automatically retrieve personal information from your computer without your knowledge. +

          + +

          Legal Disclaimer

          +

          +All the information and contents posted on this web site are the property of PradoSoft, and are protected by U.S. and foreign copyright laws. By accessing this web site, you agree to the following terms and conditions. You shall not use this web site if you do not agree. +

          +
            +
          1. This web site and its contents may NOT be copied or distributed in any manner without the prior written consent of PradoSoft.
          2. +
          3. PradoSoft MAKES NO REPRESENTATIONS OR WARRANTIES WITH RESPECT TO THIS WEB SITE, ITS CONTENTS OR THE MANUSCRIPT, WHICH ARE PROVIDED FOR USE "AS IS" AND IS WITHOUT WARRANTY OF ANY KIND.
          4. +
          5. Portions of this web site may publish readers comments and opinion. PradoSoft does not assume or have any responsibility or any liability for the readers comments or opinions.
          6. +
          + +

          Change of Policies

          +

          +The above policies may change from time to time. PradoSoft will post those changes on this page. +

          +

          +This page was last updated on May 2, 2006. +

          + +
          + +
          \ No newline at end of file diff --git a/demos/site/protected/application.xml b/demos/site/protected/application.xml new file mode 100644 index 00000000..b937e82b --- /dev/null +++ b/demos/site/protected/application.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/demos/site/protected/runtime/.gitignore b/demos/site/protected/runtime/.gitignore new file mode 100755 index 00000000..d6b7ef32 --- /dev/null +++ b/demos/site/protected/runtime/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/demos/site/themes/Prado/favicon.ico b/demos/site/themes/Prado/favicon.ico new file mode 100644 index 00000000..28d63172 Binary files /dev/null and b/demos/site/themes/Prado/favicon.ico differ diff --git a/demos/site/themes/Prado/imgs/bg.gif b/demos/site/themes/Prado/imgs/bg.gif new file mode 100644 index 00000000..d4ce965e Binary files /dev/null and b/demos/site/themes/Prado/imgs/bg.gif differ diff --git a/demos/site/themes/Prado/imgs/bigmantis.jpg b/demos/site/themes/Prado/imgs/bigmantis.jpg new file mode 100644 index 00000000..7520aab4 Binary files /dev/null and b/demos/site/themes/Prado/imgs/bigmantis.jpg differ diff --git a/demos/site/themes/Prado/imgs/bigmantis.jpg.1 b/demos/site/themes/Prado/imgs/bigmantis.jpg.1 new file mode 100644 index 00000000..7520aab4 Binary files /dev/null and b/demos/site/themes/Prado/imgs/bigmantis.jpg.1 differ diff --git a/demos/site/themes/Prado/imgs/bottomgradient.gif b/demos/site/themes/Prado/imgs/bottomgradient.gif new file mode 100644 index 00000000..4309dc30 Binary files /dev/null and b/demos/site/themes/Prado/imgs/bottomgradient.gif differ diff --git a/demos/site/themes/Prado/imgs/bullet_one.gif b/demos/site/themes/Prado/imgs/bullet_one.gif new file mode 100644 index 00000000..8d42c689 Binary files /dev/null and b/demos/site/themes/Prado/imgs/bullet_one.gif differ diff --git a/demos/site/themes/Prado/imgs/bullet_three.gif b/demos/site/themes/Prado/imgs/bullet_three.gif new file mode 100644 index 00000000..099522c2 Binary files /dev/null and b/demos/site/themes/Prado/imgs/bullet_three.gif differ diff --git a/demos/site/themes/Prado/imgs/bullet_two.gif b/demos/site/themes/Prado/imgs/bullet_two.gif new file mode 100644 index 00000000..cd8001a8 Binary files /dev/null and b/demos/site/themes/Prado/imgs/bullet_two.gif differ diff --git a/demos/site/themes/Prado/imgs/mainmenu_active.gif b/demos/site/themes/Prado/imgs/mainmenu_active.gif new file mode 100644 index 00000000..47974274 Binary files /dev/null and b/demos/site/themes/Prado/imgs/mainmenu_active.gif differ diff --git a/demos/site/themes/Prado/imgs/mainmenu_hover.gif b/demos/site/themes/Prado/imgs/mainmenu_hover.gif new file mode 100644 index 00000000..26355b3c Binary files /dev/null and b/demos/site/themes/Prado/imgs/mainmenu_hover.gif differ diff --git a/demos/site/themes/Prado/imgs/pradodownload.gif b/demos/site/themes/Prado/imgs/pradodownload.gif new file mode 100644 index 00000000..4b063dbb Binary files /dev/null and b/demos/site/themes/Prado/imgs/pradodownload.gif differ diff --git a/demos/site/themes/Prado/imgs/pradoheader.gif b/demos/site/themes/Prado/imgs/pradoheader.gif new file mode 100755 index 00000000..40ca5d29 Binary files /dev/null and b/demos/site/themes/Prado/imgs/pradoheader.gif differ diff --git a/demos/site/themes/Prado/imgs/statementsbg.gif b/demos/site/themes/Prado/imgs/statementsbg.gif new file mode 100644 index 00000000..85836a2e Binary files /dev/null and b/demos/site/themes/Prado/imgs/statementsbg.gif differ diff --git a/demos/site/themes/Prado/style.css b/demos/site/themes/Prado/style.css new file mode 100755 index 00000000..798451c0 --- /dev/null +++ b/demos/site/themes/Prado/style.css @@ -0,0 +1,765 @@ + +/** + * PradoSoft profile by Carl G. Mathisen and Stefan A. Petrov + * http://decart.no + */ + +body +{ + background-color: #ECEDE5; + background-image: url('imgs/bg.gif'); + background-repeat: repeat-x; + background-position: top left; + margin: 0px; + padding: 0px; + text-align: center; +} + +body, div, span, p, input +{ + font-family: Verdana, sans-serif, Arial; + font-size: 10pt; + color: #333333; +} + +h1, h2, h3, h4 +{ + font-family: Verdana, Helvetica, Arial, Lucida Grande, Trebuchet MS; + padding: 0px; + margin: 0px; + margin-bottom: 10px; + color: #821B18; + font-weight: normal; +} + +h2 +{ + font-size: 18px; +} + +h3 +{ + font-size: 16px; +} + +div +{ + text-align: left; +} + +.instructions +{ + background-color: #EEEEEE; + padding: 5px; +} + +img +{ + border: none; +} + +a +{ + color: #CD2C27; + text-decoration: none; +} + +a:hover +{ + color: #821B18; + text-decoration: underline; +} + +#page +{ + margin: 0 auto; + padding: 0; + width: 841px; + position: relative; +} + +#header +{ + position: relative; + height: 98px; +} + +#logo +{ + height: 99px; +} + +#mainmenu +{ + position: absolute; + top: 69px; +} + +#mainmenu ul +{ + margin-left: 0; + padding-left: 0; + display: inline; +} + +#mainmenu ul li +{ + margin-left: 0px; + list-style: none; + display: inline; +} + +#mainmenu ul li a +{ + display: block; + float: left; + font-size: 14px; + font-weight: bold; + padding-left: 7px; + padding-right: 7px; + padding-top: 5px; + color: #FFFFCC; + text-decoration: none; + height: 29px; +} + +#mainmenu ul li a:hover +{ + background-image: url('imgs/mainmenu_hover.gif'); + background-repeat: repeat-x; + background-position: top left; + color: #fff; +} + +#mainmenu ul li a.active +{ + background-image: url('imgs/mainmenu_active.gif'); + background-repeat: repeat-x; + background-position: top left; + color: #91A412; +} + +/* main page */ + +div.intro +{ + height: 190px; + background-image: url('imgs/bigmantis.jpg'); + background-repeat: no-repeat; + background-position: top right; + background-color: #fff; +} + +div.statements +{ + height: 165px; + background-image: url('imgs/statementsbg.gif'); + background-repeat: repeat-x; + position: relative; + border-bottom : 1px solid #EEE; +} + +div.statements div +{ + position: absolute; + width: 250px; + top: 20px; +} + +div.statements div p +{ + font-size: 13px; + color: #818181; +} + +div.statements div.whatis +{ + left: 20px; +} + +div.statements div.whatreq +{ + left: 310px; +} + +div.statements div.cani +{ + left: 590px; + width: 250px; +} + +/* navbar */ +#navbar +{ + border-bottom: 2px solid #E9EEEF; + height: 30px; + margin-bottom: 20px; +} + +#navbar ul +{ + margin-left: 0; + padding-left: 0; + display: inline; +} + +#navbar ul li +{ + margin-left: 0px; + list-style: none; + display: inline; +} + +#navbar ul li a +{ + display: block; + float: left; + font-size: 14px; + font-weight: bold; + padding-right: 14px; + padding-top: 5px; + color: #CD2B26; + height: 29px; +} + +#navbar ul li a.active, #navbar ul li a.hover +{ + color: #821B18; +} + +#navbar ul li a.hover +{ + text-decoration: underline; +} + +/* infobar */ +div#infobar +{ + float: right; + width: 200px; + padding-left: 20px; + border-left: 2px solid #E9EEEF; +} + +div#infobar div +{ + margin-bottom: 20px; +} + +div#infobar div#featured img +{ + margin-top: 10px; +} + +/* articles */ + +div#articles +{ + width: 560px; + float: left; +} + +/* article */ + +div.article +{ + margin-bottom: 40px; +} + +div.article .date +{ + color: #9F9291; +} + +div.article .more +{ + margin-right: 10px; + display: block; + text-align: right; +} + +.logo +{ + position: absolute; + margin-left: 15px; + margin-top: 0px; + z-index: 1; +} + +#main +{ + padding: 20px; + padding-top: 20px; + background-color: #fff; +} + +div.mantis +{ + height: 190px; + background-color: #fff; + background-image: url('imgs/bigmantis.jpg'); + background-repeat: no-repeat; + background-position: top right; + border-bottom: 1px solid #DCDCDC; +} + +div.releases +{ + float: left; + width: 240px; + height: 190px; + background-image: url('imgs/pradodownload.gif'); + background-repeat: no-repeat; +} + +div.releases div.official +{ + width: 190px; + position: relative; + left: 52px; + top: 128px; + font-size: 8pt; + color: #6D6D6D; +} + +div.releases div.official a +{ + display: block; +} + +div.whyprado +{ + display: block; + float: left; +} + +div.whyprado ul.list +{ + margin-top: 40px; + margin-left: 40px; +} + +div.whyprado ul.list li +{ + display: block; + margin: 5px; + padding: 0px; + font-size: 18px; + background-repeat: no-repeat; + background-position: bottom left; + padding-left: 30px; + list-style: none; +} + +div.whyprado ul.list li.one +{ + background-image: url('imgs/bullet_one.gif'); +} + +div.whyprado ul.list li.two +{ + background-image: url('imgs/bullet_two.gif'); +} + +div.whyprado ul.list li.three +{ + background-image: url('imgs/bullet_three.gif'); +} + +div.whyprado ul.list li a +{ + color: #9F9291; + text-decoration: none; +} + +#footer +{ + border-top: 1px solid #e9eeef; + background-color: #fff; + clear: both; + color: #A7A7A7; + font-size: 8pt; + text-align: center; + padding-top: 10px; + padding-bottom: 30px; + background-image: url('imgs/bottomgradient.gif'); + background-repeat: repeat-x; + background-position: bottom; +} + +#ads +{ + font-size: 8pt; + text-align: center; +} +#features +{ + margin-left: 610px; + padding: 10px; + padding-left: 10px; + padding-right: 10px; + background-color: #BEDD75; + color: #344A1E; + font-size: 9pt; +} + +#features ul +{ + margin: 10px; + padding: 0px; +} + +#features ul li +{ + font-size: 8pt; + padding: 0px; + margin: 0px; + margin-top: 8px; +} + +#features h3 +{ + margin: 0px; + padding: 0px; + font-size: 10pt; + color: #292E1D; + text-align: center; + border-bottom: 1px solid silver; +} + +#news +{ + float: left; + width: 590px; +} + +.newstitle +{ + font-size: 12pt; + font-weight: bold; + color: #555; + margin-top: 10px; + margin-bottom: 0px; + border-bottom: 1px solid silver; +} + +.newscontentmore +{ + margin-right: 10px; + display: block; + color: #50811A; + text-align: right; +} + +.newscontentmore:hover +{ + color: red; +} + +.newstime +{ + margin: 0px; + font-size:0.8em; + color:#aaa; + padding-left:10px; + text-align: right; +} + +.newscontent +{ + margin-top: 5px; +} + +#leftpanel +{ + float: left; + width: 550px; +} + +#topics +{ + border: 1px solid #804040; + margin-left: 610px; + padding-bottom: 10px; +} + +#topicsheader +{ + text-align:center; + font-weight:bold; + background-color:#804040; + color:#FFFFBC; + padding: 3px; + margin-bottom:0px; +} + +.topicitem +{ + padding: 5px; +} + +.topicitem a:hover +{ + text-decoration: underline; +} + +.topicitem p +{ + margin: 0px; + font-size:0.8em; + color:#aaa; + padding-left:10px; + white-space:nowrap; +} + +.reference +{ +} + +.reference img +{ + margin: 10px; +} + +.reference h3 +{ +} + + +.download +{ + width: 100%; + background-color: #aaa; +} + +.download td +{ + background-color: #FFFFFF; + padding: 2px 5px; + font-size: 9pt; +} + +.download td a +{ + font-weight: bold; +} + +.download td.type +{ + font-family: "courier new", courier; + text-align: right; + vertical-align: top; +} + +.download div.declaration +{ + font-family: "courier new", courier; +} + + +.download th +{ + background-color: #F0F0F0; + font-weight: bold; + font-size: 9pt; + padding: 5px; + text-align: left; +} + +.download th.small +{ + font-size: 1.0em; +} + +.download tr.reference td { + background-color: #FFEDED; +} + + +.doc-title +{ + font-size: 14pt; + font-weight: bold; + margin-top: 10px; + margin-bottom: 10px; +} + +.doc-subtitle +{ + font-size: 11pt; + font-weight: bold; + background-color: #EEE; + padding: 5px; + margin-top: 20px; +} + +.doc-namespace +{ + font-size: 8pt; +} + + +.doc-menu +{ +} + +.doc-classes +{ +} + +.doc-ancestors +{ + font-size: 8pt; +} + +.doc-properties +{ + font-size: 9pt; +} + +.doc-properties table +{ + border-collapse: collapse; + background-color: silver; + width: 100%; +} + +.doc-properties td, .doc-properties th +{ + padding: 3px; + vertical-align: top; + background-color: white; + border: 1px solid silver; +} + +.doc-events +{ + font-size: 9pt; +} + +.doc-events table +{ + border-collapse: collapse; + background-color: silver; + width: 100%; +} + +.doc-events td, .doc-events th +{ + padding: 3px; + vertical-align: top; + background-color: white; + border: 1px solid silver; +} + +.doc-methods +{ + font-size: 9pt; +} + +.doc-methods table +{ + border-collapse: collapse; + background-color: silver; + width: 100%; +} + +.doc-methods td, .doc-methods th +{ + padding: 3px; + vertical-align: top; + background-color: white; + border: 1px solid silver; +} + +.doc-derived +{ +} + +.doc-inherited +{ +} + +.doc-native td +{ + background-color: lightyellow; +} + +.forum-topic +{ + padding: 10px; + border:1px solid silver; + margin-bottom: 10px; +} + + +.demo-list li +{ + margin-bottom: 1em; +} + +.autocomplete +{ + border:1px solid #ccc; + background-color:white; +} +.autocomplete ul, .autocomplete li +{ + margin: 0; + padding: 0; + list-style: none; + font-size: 11px; + font-family: Tahoma, Arial, Helvetica, sans-serif; + color: #333; +} + +ul.different +{ + background-color: pink; +} + +.autocomplete li +{ + padding: 5px; + background-color: #ffe; +} +.autocomplete .selected +{ + background-color: #eec; +} + +#ads ul +{ + list-style-type: none; + margin: 5px; + margin-left: 0px; + padding: 0; + font-size: 10px; +} + +#ads li +{ + margin-bottom: 7px; +} + +#ads a +{ + color: black; + border-bottom: 1px dashed silver; +} + +#changelog +{ + overflow:scroll; + height: 250px; + border:1px solid #ccc; + white-space: pre-wrap; /* CSS 3 */ + white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + word-wrap: break-word; /* Internet Explorer 5.5+ */ + padding: 10px; + -webkit-box-shadow: inset 0px -10px 10px -5px rgba(0,0,0,0.75); + -moz-box-shadow: inset 0px -10px 10px -5px rgba(0,0,0,0.75); + box-shadow: inset 0px -10px 10px -5px rgba(0,0,0,0.75); +} diff --git a/framework/pradolite.php b/framework/pradolite.php index af6026ae..bb055e30 100644 --- a/framework/pradolite.php +++ b/framework/pradolite.php @@ -1,7 +1,7 @@ Date: Tue, 10 Nov 2015 13:32:45 +0100 Subject: Small fixes to the site --- demos/site/protected/Layouts/MainLayout.tpl | 1 + demos/site/protected/Pages/Documentation.page | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) (limited to 'demos') diff --git a/demos/site/protected/Layouts/MainLayout.tpl b/demos/site/protected/Layouts/MainLayout.tpl index 85a7b159..72377ed5 100644 --- a/demos/site/protected/Layouts/MainLayout.tpl +++ b/demos/site/protected/Layouts/MainLayout.tpl @@ -1,3 +1,4 @@ + diff --git a/demos/site/protected/Pages/Documentation.page b/demos/site/protected/Pages/Documentation.page index 0a4dd73f..25b109ad 100644 --- a/demos/site/protected/Pages/Documentation.page +++ b/demos/site/protected/Pages/Documentation.page @@ -25,7 +25,7 @@ The API Manual contains the documentation f

          Tutorials

            -
          • The QuickStart Tutorial - This tutorial is a definitive guidance showing every aspect of PRADO. It is written in PRADO and contains many demos to show the usage of various PRADO controls. The tutorial is also available as a PDF file.
          • +
          • The QuickStart Tutorial - This tutorial is a definitive guidance showing every aspect of PRADO. It is written in PRADO and contains many demos to show the usage of various PRADO controls. The tutorial is also available as a PDF file.
          • The PRADO Blog Tutorial - This tutorial shows how to use PRADO to build a complete Web application. Prior PRADO knowledge is not required.
          • The SQLMap Tutorial - This tutorial is a definitive guidance on how to use SQLMap (available since v3.1.0).
          -- cgit v1.2.3 From 277d68dca3f85539c06d00e1e1627f54960391ab Mon Sep 17 00:00:00 2001 From: Fabio Bas Date: Tue, 10 Nov 2015 13:40:22 +0100 Subject: site: fix home --- demos/site/protected/Pages/Home.page | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) (limited to 'demos') diff --git a/demos/site/protected/Pages/Home.page b/demos/site/protected/Pages/Home.page index b9cc49b7..470beb9e 100755 --- a/demos/site/protected/Pages/Home.page +++ b/demos/site/protected/Pages/Home.page @@ -3,9 +3,9 @@ @@ -17,21 +17,39 @@

      What does PRADO require?

      -

      The sole requirement to run PRADO-based applications is a Web server supporting PHP 5.3.0 or higher. PRADO is free. You can use it to develop either open source or commercial applications.

      +

      The sole requirement to run PRADO-based applications is a Web server supporting PHP 5.3.0 or higher. PRADO is free. You can use it to develop either open source or commercial applications.

      Quick facts about PRADO

      First release: August 2004
      - License: revised BSD
      + License: revised BSD
      Lines of core code: > 150,000 lines
      Number of classes: > 700
      - Downloads: > 430,000 15/09/2013
      + Downloads: > 450,000 01/11/2015

    + +

    Latest News

    +
    + +
    +

    Site outage

    + November 5, 2015 +

    As you may have noticed, in the last few days the PRADO website has been unavailable. Unfortunately the server hosting the website suddently died, resulting in the website being unaccessible. A new server has been put in place, and we are now recovering the website data from the last backups. The website is planned to be fully working in a few days. In the meanwhile, you can always refer to our github project site.

    Thank you for your patience,

    The PRADO Team

    +
    + +
    +

    Prado 3.2.4 is released!

    + August 26, 2014 +

    The PRADO Team is proud to announce the formal release of PRADO 3.2.4.

    This release backports a number of significative bugfixes and changes from the master branch where the new, jQuery-based Prado is been developed.
    This release officially introduces Wsat, an useful tool coded by DarthDaniel that can help out generating Active Record classes.

    This release should be an easy plug-in update from previous 3.2.x Prado versions, without any backwards-compatibility issue; anyway, if you find any problem feel free  to report it, and we'll take care of sorting it out.

    Finally, some words on the current development.
    We have some new members helping out the development: welcome in Daniel and David! Many thanks goes to them and also to all the others that have reported issues and fixes on the project's github pages.

    Enjoy!

    The PRADO Team

    +
    + +
    +
    \ No newline at end of file -- cgit v1.2.3 From deb21334572e4bef961db6a6734b0a59645580c5 Mon Sep 17 00:00:00 2001 From: Fabio Bas Date: Tue, 10 Nov 2015 13:46:05 +0100 Subject: fix changeling + minor --- demos/site/protected/Layouts/MainLayout.tpl | 1 - demos/site/protected/Pages/About.page | 1 + demos/site/protected/Pages/Demos.page | 1 + demos/site/protected/Pages/Documentation.page | 1 + demos/site/protected/Pages/Download.page | 3 ++- demos/site/protected/Pages/Home.page | 1 + demos/site/protected/Pages/License.page | 1 + demos/site/protected/Pages/Tos.page | 1 + demos/site/themes/Prado/style.css | 2 +- 9 files changed, 9 insertions(+), 3 deletions(-) (limited to 'demos') diff --git a/demos/site/protected/Layouts/MainLayout.tpl b/demos/site/protected/Layouts/MainLayout.tpl index 72377ed5..8b523aed 100644 --- a/demos/site/protected/Layouts/MainLayout.tpl +++ b/demos/site/protected/Layouts/MainLayout.tpl @@ -36,7 +36,6 @@ -
    \ No newline at end of file diff --git a/demos/site/protected/Pages/Demos.page b/demos/site/protected/Pages/Demos.page index dbc7635d..a27a6147 100644 --- a/demos/site/protected/Pages/Demos.page +++ b/demos/site/protected/Pages/Demos.page @@ -27,5 +27,6 @@ The following demos are developed using the PRADO framework. They are also avail
  • AJAX Chat: A easy to build web chat application using AJAX controls and Active Records for database access (see tutorial).
  • Time Tracker: A complete personal project time tracker application using SQLMap for data access.
  • +
    \ No newline at end of file diff --git a/demos/site/protected/Pages/Documentation.page b/demos/site/protected/Pages/Documentation.page index 25b109ad..977e6c23 100644 --- a/demos/site/protected/Pages/Documentation.page +++ b/demos/site/protected/Pages/Documentation.page @@ -37,6 +37,7 @@ The API Manual contains the documentation f ---> +
    \ No newline at end of file diff --git a/demos/site/protected/Pages/Download.page b/demos/site/protected/Pages/Download.page index bdc21221..96dcda6b 100644 --- a/demos/site/protected/Pages/Download.page +++ b/demos/site/protected/Pages/Download.page @@ -37,7 +37,7 @@ $(document).ready(function () {

    Latest changelog entries

    -
    loading...
    +
    loading...

    Previous PRADO v3.x releases

    @@ -111,6 +111,7 @@ $(document).ready(function () {

    The Source code repository can be accessed anonymously using the following command,

    git clone https://github.com/pradosoft/prado.git
    +
    \ No newline at end of file diff --git a/demos/site/protected/Pages/Home.page b/demos/site/protected/Pages/Home.page index 470beb9e..039050c1 100755 --- a/demos/site/protected/Pages/Home.page +++ b/demos/site/protected/Pages/Home.page @@ -50,6 +50,7 @@ +
    \ No newline at end of file diff --git a/demos/site/protected/Pages/License.page b/demos/site/protected/Pages/License.page index 9636acf9..fe6f7ce4 100644 --- a/demos/site/protected/Pages/License.page +++ b/demos/site/protected/Pages/License.page @@ -23,6 +23,7 @@ Redistribution and use in source and binary forms, with or without modification, 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.

    +
    \ No newline at end of file diff --git a/demos/site/protected/Pages/Tos.page b/demos/site/protected/Pages/Tos.page index 18f4750c..65c67470 100644 --- a/demos/site/protected/Pages/Tos.page +++ b/demos/site/protected/Pages/Tos.page @@ -37,6 +37,7 @@ The above policies may change from time to time. PradoSoft will post those chang This page was last updated on May 2, 2006.

    +
    \ No newline at end of file diff --git a/demos/site/themes/Prado/style.css b/demos/site/themes/Prado/style.css index 798451c0..b2164941 100755 --- a/demos/site/themes/Prado/style.css +++ b/demos/site/themes/Prado/style.css @@ -748,7 +748,7 @@ ul.different border-bottom: 1px dashed silver; } -#changelog +pre.changelog { overflow:scroll; height: 250px; -- cgit v1.2.3 From 654a9cae43358c7eecf3b522e9876aa7815e2453 Mon Sep 17 00:00:00 2001 From: Fabio Bas Date: Mon, 7 Dec 2015 15:57:51 +0100 Subject: Move urls from pradosoft.com to github's project page; drop unmaintained quickstart tutorial translations --- COPYRIGHT | 2 +- HISTORY | 4 +- README.md | 4 +- bin/prado-cli.php | 6 +- build.xml | 4 +- buildscripts/phpbuilder/build.php | 6 +- buildscripts/texbuilder/Page2Tex.php | 6 +- buildscripts/texbuilder/quickstart/quickstart.tex | 2 +- buildscripts/texbuilder/sqlmap/sqlmap.tex | 2 +- buildscripts/texbuilder/time-tracker/preface.tex | 9 +- .../texbuilder/time-tracker/time-tracker.tex | 2 +- composer.json | 24 +- .../protected/common/fr/TopicList.tpl | 62 -- .../protected/common/id/TopicList.tpl | 62 -- .../blog-tutorial/protected/layout/MainLayout.php | 3 +- .../blog-tutorial/protected/layout/MainLayout.tpl | 26 +- .../protected/layout/fr/MainLayout.tpl | 54 - .../protected/layout/id/MainLayout.tpl | 54 - .../protected/pages/Day1/CreateContact.page | 18 +- .../blog-tutorial/protected/pages/Day1/Setup.page | 12 +- .../protected/pages/Day1/ShareLayout.page | 20 +- .../protected/pages/Day1/fr/CreateContact.page | 202 ---- .../protected/pages/Day1/fr/Setup.page | 160 --- .../protected/pages/Day1/fr/ShareLayout.page | 180 --- .../protected/pages/Day1/fr/directories.gif | Bin 3611 -> 0 bytes .../protected/pages/Day1/fr/directories2.gif | Bin 4147 -> 0 bytes .../protected/pages/Day1/fr/directories3.gif | Bin 3531 -> 0 bytes .../protected/pages/Day1/fr/output.gif | Bin 13379 -> 0 bytes .../protected/pages/Day1/id/CreateContact.page | 203 ---- .../protected/pages/Day1/id/Setup.page | 163 --- .../protected/pages/Day1/id/ShareLayout.page | 178 --- .../protected/pages/Day1/id/directories.gif | Bin 3611 -> 0 bytes .../protected/pages/Day1/id/directories2.gif | Bin 4147 -> 0 bytes .../protected/pages/Day1/id/directories3.gif | Bin 3531 -> 0 bytes .../protected/pages/Day1/id/output.gif | Bin 13379 -> 0 bytes .../protected/pages/Day2/ConnectDB.page | 8 +- .../protected/pages/Day2/CreateAR.page | 6 +- .../protected/pages/Day2/CreateDB.page | 2 +- .../protected/pages/Day2/fr/ConnectDB.page | 47 - .../protected/pages/Day2/fr/CreateAR.page | 177 --- .../protected/pages/Day2/fr/CreateDB.page | 70 -- demos/blog-tutorial/protected/pages/Day2/fr/ER.gif | Bin 4444 -> 0 bytes demos/blog-tutorial/protected/pages/Day2/fr/ER.vsd | Bin 73216 -> 0 bytes .../protected/pages/Day2/fr/directories.gif | Bin 4580 -> 0 bytes .../protected/pages/Day2/fr/directories2.gif | Bin 6795 -> 0 bytes .../protected/pages/Day2/id/ConnectDB.page | 46 - .../protected/pages/Day2/id/CreateAR.page | 178 --- .../protected/pages/Day2/id/CreateDB.page | 69 -- demos/blog-tutorial/protected/pages/Day2/id/ER.gif | Bin 4444 -> 0 bytes .../protected/pages/Day2/id/directories.gif | Bin 4580 -> 0 bytes .../protected/pages/Day2/id/directories2.gif | Bin 6795 -> 0 bytes demos/blog-tutorial/protected/pages/Day3/Auth.page | 8 +- .../protected/pages/Day3/CreateAdminUser.page | 12 +- .../protected/pages/Day3/CreateEditUser.page | 4 +- .../protected/pages/Day3/CreateLoginUser.page | 2 +- .../protected/pages/Day3/CreateNewUser.page | 8 +- .../protected/pages/Day3/fr/Auth.page | 106 -- .../protected/pages/Day3/fr/CreateAdminUser.page | 144 --- .../protected/pages/Day3/fr/CreateEditUser.page | 215 ---- .../protected/pages/Day3/fr/CreateLoginUser.page | 161 --- .../protected/pages/Day3/fr/CreateNewUser.page | 212 ---- .../protected/pages/Day3/fr/Overview.page | 42 - .../protected/pages/Day3/fr/directories.gif | Bin 10329 -> 0 bytes .../protected/pages/Day3/fr/output.gif | Bin 10006 -> 0 bytes .../protected/pages/Day3/fr/output2.gif | Bin 9222 -> 0 bytes .../protected/pages/Day3/fr/output3.gif | Bin 9464 -> 0 bytes .../protected/pages/Day3/id/Auth.page | 102 -- .../protected/pages/Day3/id/CreateAdminUser.page | 137 --- .../protected/pages/Day3/id/CreateEditUser.page | 212 ---- .../protected/pages/Day3/id/CreateLoginUser.page | 162 --- .../protected/pages/Day3/id/CreateNewUser.page | 210 ---- .../protected/pages/Day3/id/Overview.page | 26 - .../protected/pages/Day3/id/directories.gif | Bin 10329 -> 0 bytes .../protected/pages/Day3/id/output.gif | Bin 10006 -> 0 bytes .../protected/pages/Day3/id/output2.gif | Bin 9222 -> 0 bytes .../protected/pages/Day3/id/output3.gif | Bin 9464 -> 0 bytes .../protected/pages/Day4/CreateListPost.page | 4 +- .../protected/pages/Day4/CreateNewPost.page | 2 +- .../protected/pages/Day4/fr/CreateEditPost.page | 136 --- .../protected/pages/Day4/fr/CreateListPost.page | 182 ---- .../protected/pages/Day4/fr/CreateNewPost.page | 144 --- .../protected/pages/Day4/fr/CreateReadPost.page | 135 --- .../protected/pages/Day4/fr/Overview.page | 28 - .../protected/pages/Day4/fr/directories.gif | Bin 11129 -> 0 bytes .../protected/pages/Day4/fr/output.gif | Bin 3406 -> 0 bytes .../protected/pages/Day4/fr/output2.gif | Bin 6326 -> 0 bytes .../protected/pages/Day4/fr/output3.gif | Bin 11874 -> 0 bytes .../protected/pages/Day4/fr/output4.gif | Bin 11916 -> 0 bytes .../protected/pages/Day4/id/CreateEditPost.page | 133 --- .../protected/pages/Day4/id/CreateListPost.page | 185 ---- .../protected/pages/Day4/id/CreateNewPost.page | 142 --- .../protected/pages/Day4/id/CreateReadPost.page | 135 --- .../protected/pages/Day4/id/Overview.page | 26 - .../protected/pages/Day4/id/directories.gif | Bin 11129 -> 0 bytes .../protected/pages/Day4/id/output.gif | Bin 3406 -> 0 bytes .../protected/pages/Day4/id/output2.gif | Bin 6326 -> 0 bytes .../protected/pages/Day4/id/output3.gif | Bin 11874 -> 0 bytes .../protected/pages/Day4/id/output4.gif | Bin 11916 -> 0 bytes .../protected/pages/Day5/ErrorLogging.page | 2 +- .../protected/pages/Day5/Performance.page | 2 +- .../protected/pages/Day5/UseTheme.page | 4 +- .../protected/pages/Day5/fr/ErrorLogging.page | 158 --- .../protected/pages/Day5/fr/Performance.page | 66 -- .../protected/pages/Day5/fr/Summary.page | 41 - .../protected/pages/Day5/fr/UseTheme.page | 138 --- .../protected/pages/Day5/fr/output.gif | Bin 4282 -> 0 bytes .../protected/pages/Day5/fr/output2.gif | Bin 7798 -> 0 bytes .../protected/pages/Day5/fr/output3.gif | Bin 5190 -> 0 bytes .../protected/pages/Day5/id/ErrorLogging.page | 159 --- .../protected/pages/Day5/id/Performance.page | 67 -- .../protected/pages/Day5/id/Summary.page | 36 - .../protected/pages/Day5/id/UseTheme.page | 138 --- .../protected/pages/Day5/id/output.gif | Bin 4282 -> 0 bytes .../protected/pages/Day5/id/output2.gif | Bin 7798 -> 0 bytes .../protected/pages/Day5/id/output3.gif | Bin 5190 -> 0 bytes demos/blog-tutorial/protected/pages/Overview.page | 4 +- .../blog-tutorial/protected/pages/fr/Overview.page | 17 - .../protected/pages/fr/Requirements.page | 37 - .../blog-tutorial/protected/pages/id/Overview.page | 17 - .../protected/pages/id/Requirements.page | 38 - demos/blog/protected/Common/BlogDataModule.php | 12 +- demos/blog/protected/Common/BlogErrorHandler.php | 12 +- demos/blog/protected/Common/BlogException.php | 12 +- demos/blog/protected/Common/BlogPage.php | 12 +- demos/blog/protected/Common/BlogUser.php | 12 +- demos/blog/protected/Common/BlogUserManager.php | 12 +- demos/blog/protected/Common/XListMenu.php | 12 +- demos/blog/protected/Common/schema.sql | 2 +- demos/blog/protected/Layouts/MainLayout.php | 12 +- demos/blog/protected/Pages/Admin/AdminMenu.php | 12 +- demos/blog/protected/Pages/Admin/ConfigMan.php | 12 +- demos/blog/protected/Pages/Admin/PostMan.php | 12 +- demos/blog/protected/Pages/Admin/UserMan.php | 12 +- demos/blog/protected/Pages/ErrorReport.php | 12 +- demos/blog/protected/Pages/Posts/EditCategory.php | 12 +- demos/blog/protected/Pages/Posts/EditPost.php | 12 +- demos/blog/protected/Pages/Posts/ListPost.php | 12 +- demos/blog/protected/Pages/Posts/MyPost.php | 12 +- demos/blog/protected/Pages/Posts/NewCategory.php | 12 +- demos/blog/protected/Pages/Posts/NewPost.php | 12 +- demos/blog/protected/Pages/Posts/ViewPost.php | 12 +- demos/blog/protected/Pages/Users/EditUser.php | 12 +- demos/blog/protected/Pages/Users/NewUser.php | 12 +- demos/blog/protected/Pages/Users/ViewUser.php | 12 +- demos/blog/protected/Portlets/AccountPortlet.php | 12 +- demos/blog/protected/Portlets/ArchivePortlet.php | 12 +- demos/blog/protected/Portlets/CategoryPortlet.php | 12 +- demos/blog/protected/Portlets/CommentPortlet.php | 12 +- demos/blog/protected/Portlets/LoginPortlet.php | 12 +- demos/blog/protected/Portlets/Portlet.php | 12 +- demos/blog/protected/Portlets/SearchPortlet.php | 12 +- demos/chat/protected/pages/Home.page | 2 +- demos/composer/protected/pages/Layout.tpl | 2 +- demos/personal/protected/Pages/Layout.tpl | 4 +- .../protected/controls/Comments/CommentBlock.tpl | 1 - demos/quickstart/protected/controls/DocLink.php | 2 +- demos/quickstart/protected/controls/Layout.php | 3 +- demos/quickstart/protected/controls/Layout.tpl | 9 +- .../quickstart/protected/controls/SampleLayout.tpl | 2 +- demos/quickstart/protected/controls/de/Layout.tpl | 61 -- .../protected/controls/de/RequiresVersion.tpl | 1 - demos/quickstart/protected/controls/de/RunBar.tpl | 4 - .../quickstart/protected/controls/de/SearchBox.tpl | 3 - .../quickstart/protected/controls/de/TopicList.tpl | 113 -- demos/quickstart/protected/controls/es/Layout.tpl | 61 -- .../protected/controls/es/RequiresVersion.tpl | 1 - demos/quickstart/protected/controls/es/RunBar.tpl | 4 - .../protected/controls/es/SampleLayout.tpl | 32 - .../quickstart/protected/controls/es/SearchBox.tpl | 3 - .../protected/controls/es/SinceVersion.tpl | 1 - .../quickstart/protected/controls/es/TopicList.tpl | 110 -- demos/quickstart/protected/controls/fr/Layout.tpl | 61 -- demos/quickstart/protected/controls/fr/RunBar.tpl | 4 - .../protected/controls/fr/SampleLayout.tpl | 32 - .../quickstart/protected/controls/fr/SearchBox.tpl | 3 - .../quickstart/protected/controls/fr/TopicList.tpl | 108 -- demos/quickstart/protected/controls/id/Layout.tpl | 61 -- .../protected/controls/id/RequiresVersion.tpl | 1 - demos/quickstart/protected/controls/id/RunBar.tpl | 4 - .../protected/controls/id/SampleLayout.tpl | 32 - .../quickstart/protected/controls/id/SearchBox.tpl | 3 - .../protected/controls/id/SinceVersion.tpl | 1 - .../quickstart/protected/controls/id/TopicList.tpl | 109 -- demos/quickstart/protected/controls/ja/Layout.tpl | 61 -- demos/quickstart/protected/controls/ja/RunBar.tpl | 4 - .../quickstart/protected/controls/ja/SearchBox.tpl | 3 - .../quickstart/protected/controls/ja/TopicList.tpl | 109 -- demos/quickstart/protected/controls/pl/Layout.tpl | 61 -- .../protected/controls/pl/RequiresVersion.tpl | 1 - .../quickstart/protected/controls/pl/SearchBox.tpl | 3 - .../protected/controls/pl/SinceVersion.tpl | 1 - .../quickstart/protected/controls/pl/TopicList.tpl | 109 -- .../quickstart/protected/controls/zh/TopicList.tpl | 108 -- .../Samples/TActiveHyperLink/Home.page | 12 +- .../Samples/TActiveHyperLink/Home.php | 2 +- .../pages/ActiveControls/id/ActiveButton.page | 77 -- .../pages/ActiveControls/id/ActiveCheckBox.page | 21 - .../ActiveControls/id/ActiveCustomValidator.page | 22 - .../pages/ActiveControls/id/ActiveHyperLink.page | 14 - .../pages/ActiveControls/id/ActivePager.page | 40 - .../protected/pages/ActiveControls/id/Home.page | 347 ------ .../pages/ActiveControls/id/TActiveButtonClass.png | Bin 33847 -> 0 bytes .../pages/ActiveControls/id/postback-callback.png | Bin 23493 -> 0 bytes .../pages/Advanced/Samples/I18N/id/Home.page | 161 --- .../Advanced/Samples/I18N/messages/index.de.xml | 29 - .../Advanced/Samples/I18N/messages/index.es.xml | 29 - .../Advanced/Samples/I18N/messages/index.fr.xml | 30 - .../Advanced/Samples/I18N/messages/index.id.xml | 29 - .../Advanced/Samples/I18N/messages/index.pl.xml | 29 - .../Advanced/Samples/I18N/messages/index.zh.xml | 29 - .../Advanced/Samples/I18N/messages/tests.de.xml | 17 - .../Advanced/Samples/I18N/messages/tests.es.xml | 17 - .../Advanced/Samples/I18N/messages/tests.fr.xml | 18 - .../Advanced/Samples/I18N/messages/tests.id.xml | 17 - .../Advanced/Samples/I18N/messages/tests.pl.xml | 17 - .../Advanced/Samples/I18N/messages/tests.zh.xml | 17 - .../pages/Advanced/Samples/I18N/zh_TW/Home.page | 155 --- .../protected/pages/Advanced/es/Assets.page | 69 -- .../protected/pages/Advanced/es/Auth.page | 171 --- .../protected/pages/Advanced/es/Collections.page | 135 --- .../protected/pages/Advanced/es/Error.page | 77 -- .../protected/pages/Advanced/es/I18N.page | 360 ------ .../protected/pages/Advanced/es/Logging.page | 61 -- .../protected/pages/Advanced/es/MasterContent.page | 57 - .../protected/pages/Advanced/es/Performance.page | 88 -- .../protected/pages/Advanced/es/Scripts.page | 397 ------- .../protected/pages/Advanced/es/Scripts3.page | 39 - .../protected/pages/Advanced/es/Security.page | 79 -- .../protected/pages/Advanced/es/State.page | 54 - .../protected/pages/Advanced/es/Themes.page | 60 - .../protected/pages/Advanced/es/exception.gif | Bin 7658 -> 0 bytes .../protected/pages/Advanced/es/exception2.gif | Bin 39000 -> 0 bytes .../protected/pages/Advanced/es/logrouter.gif | Bin 12120 -> 0 bytes .../protected/pages/Advanced/es/mastercontent.gif | Bin 10748 -> 0 bytes .../protected/pages/Advanced/es/pcrelation.gif | Bin 6600 -> 0 bytes .../protected/pages/Advanced/id/Assets.page | 69 -- .../protected/pages/Advanced/id/Auth.page | 170 --- .../protected/pages/Advanced/id/Collections.page | 135 --- .../protected/pages/Advanced/id/Error.page | 77 -- .../protected/pages/Advanced/id/I18N.page | 336 ------ .../protected/pages/Advanced/id/Logging.page | 61 -- .../protected/pages/Advanced/id/MasterContent.page | 57 - .../protected/pages/Advanced/id/Performance.page | 88 -- .../protected/pages/Advanced/id/Scripts.page | 334 ------ .../protected/pages/Advanced/id/Scripts3.page | 35 - .../protected/pages/Advanced/id/Security.page | 79 -- .../protected/pages/Advanced/id/State.page | 54 - .../protected/pages/Advanced/id/Themes.page | 60 - .../protected/pages/Advanced/id/exception.gif | Bin 7658 -> 0 bytes .../protected/pages/Advanced/id/exception2.gif | Bin 39000 -> 0 bytes .../protected/pages/Advanced/id/logrouter.gif | Bin 12120 -> 0 bytes .../protected/pages/Advanced/id/mastercontent.gif | Bin 10748 -> 0 bytes .../protected/pages/Advanced/id/pcrelation.gif | Bin 6600 -> 0 bytes .../pages/Configurations/id/AppConfig.page | 59 - .../pages/Configurations/id/Overview.page | 10 - .../pages/Configurations/id/PageConfig.page | 47 - .../pages/Configurations/id/Templates1.page | 103 -- .../pages/Configurations/id/Templates2.page | 99 -- .../pages/Configurations/id/Templates3.page | 104 -- .../pages/Configurations/id/UrlMapping.page | 106 -- .../pages/Controls/Samples/THyperLink/Home.page | 12 +- .../pages/Controls/Samples/TImageMap/Home.page | 4 +- .../pages/Controls/Samples/TInlineFrame/Home.page | 6 +- .../protected/pages/Controls/id/Button.page | 16 - .../protected/pages/Controls/id/Captcha.page | 43 - .../protected/pages/Controls/id/CheckBox.page | 14 - .../protected/pages/Controls/id/ClientScript.page | 42 - .../protected/pages/Controls/id/ColorPicker.page | 10 - .../protected/pages/Controls/id/Conditional.page | 36 - .../protected/pages/Controls/id/Data.page | 19 - .../protected/pages/Controls/id/DataGrid.page | 185 ---- .../protected/pages/Controls/id/DataList.page | 113 -- .../protected/pages/Controls/id/DatePicker.page | 64 -- .../protected/pages/Controls/id/Expression.page | 23 - .../protected/pages/Controls/id/FileUpload.page | 27 - .../protected/pages/Controls/id/Head.page | 10 - .../protected/pages/Controls/id/HiddenField.page | 13 - .../protected/pages/Controls/id/HtmlArea.page | 48 - .../protected/pages/Controls/id/HyperLink.page | 11 - .../protected/pages/Controls/id/Image.page | 11 - .../protected/pages/Controls/id/ImageButton.page | 11 - .../protected/pages/Controls/id/ImageMap.page | 25 - .../protected/pages/Controls/id/InlineFrame.page | 24 - .../pages/Controls/id/JavascriptLogger.page | 31 - .../protected/pages/Controls/id/Keyboard.page | 29 - .../protected/pages/Controls/id/Label.page | 11 - .../protected/pages/Controls/id/LinkButton.page | 11 - .../protected/pages/Controls/id/List.page | 99 -- .../protected/pages/Controls/id/Literal.page | 25 - .../protected/pages/Controls/id/MultiView.page | 43 - .../protected/pages/Controls/id/NewControl.page | 152 --- .../protected/pages/Controls/id/OutputCache.page | 46 - .../protected/pages/Controls/id/Pager.page | 38 - .../protected/pages/Controls/id/Panel.page | 11 - .../protected/pages/Controls/id/PlaceHolder.page | 12 - .../protected/pages/Controls/id/RadioButton.page | 11 - .../protected/pages/Controls/id/Repeater.page | 111 -- .../protected/pages/Controls/id/SafeHtml.page | 25 - .../protected/pages/Controls/id/Slider.page | 50 - .../protected/pages/Controls/id/Standard.page | 147 --- .../protected/pages/Controls/id/Statements.page | 40 - .../protected/pages/Controls/id/TabPanel.page | 55 - .../protected/pages/Controls/id/Table.page | 11 - .../protected/pages/Controls/id/TextBox.page | 11 - .../pages/Controls/id/TextHighlighter.page | 25 - .../protected/pages/Controls/id/Validation.page | 216 ---- .../protected/pages/Controls/id/Wizard.page | 100 -- .../protected/pages/Controls/id/wizard.gif | Bin 7081 -> 0 bytes .../protected/pages/Database/ActiveRecord.page | 2 +- .../protected/pages/Database/SqlMap.page | 2 +- .../protected/pages/Database/id/ActiveRecord.page | 1000 ----------------- .../protected/pages/Database/id/DAO.page | 163 --- .../protected/pages/Database/id/Scaffold.page | 130 --- .../protected/pages/Database/id/SqlMap.page | 210 ---- .../protected/pages/Database/id/ar_objects.png | Bin 19837 -> 0 bytes .../protected/pages/Database/id/ar_relations.png | Bin 9693 -> 0 bytes .../protected/pages/Database/id/diagram.png | Bin 30320 -> 0 bytes .../protected/pages/Database/id/object_states.png | Bin 9596 -> 0 bytes .../pages/Database/id/sqlmap_active_record.png | Bin 17351 -> 0 bytes .../protected/pages/Database/pl/ActiveRecord.page | 1144 -------------------- .../protected/pages/Database/pl/ar_objects.png | Bin 20638 -> 0 bytes .../protected/pages/Database/pl/ar_relations.png | Bin 9693 -> 0 bytes .../protected/pages/Database/pl/diagram.png | Bin 30320 -> 0 bytes .../protected/pages/Database/pl/object_states.png | Bin 9596 -> 0 bytes .../pages/Database/pl/sqlmap_active_record.png | Bin 17351 -> 0 bytes .../pages/Fundamentals/id/Applications.page | 55 - .../pages/Fundamentals/id/Architecture.page | 13 - .../pages/Fundamentals/id/Components.page | 128 --- .../protected/pages/Fundamentals/id/Controls.page | 51 - .../protected/pages/Fundamentals/id/Hangman.page | 14 - .../protected/pages/Fundamentals/id/Modules.page | 50 - .../protected/pages/Fundamentals/id/Pages.page | 23 - .../protected/pages/Fundamentals/id/Services.page | 34 - .../pages/Fundamentals/id/applifecycles.gif | Bin 31200 -> 0 bytes .../pages/Fundamentals/id/applifecycles.vsd | Bin 220672 -> 0 bytes .../protected/pages/Fundamentals/id/classtree.gif | Bin 18320 -> 0 bytes .../protected/pages/Fundamentals/id/classtree.vsd | Bin 72704 -> 0 bytes .../protected/pages/Fundamentals/id/directory.gif | Bin 3967 -> 0 bytes .../protected/pages/Fundamentals/id/lifecycles.gif | Bin 60897 -> 0 bytes .../protected/pages/Fundamentals/id/lifecycles.vsd | Bin 225280 -> 0 bytes .../pages/Fundamentals/id/objectdiagram.gif | Bin 7700 -> 0 bytes .../pages/Fundamentals/id/objectdiagram.vsd | Bin 159744 -> 0 bytes .../pages/Fundamentals/ja/Applications.page | 55 - .../pages/Fundamentals/ja/Architecture.page | 15 - .../pages/Fundamentals/ja/Components.page | 128 --- .../protected/pages/Fundamentals/ja/Controls.page | 51 - .../protected/pages/Fundamentals/ja/Hangman.page | 14 - .../protected/pages/Fundamentals/ja/Modules.page | 50 - .../protected/pages/Fundamentals/ja/Pages.page | 23 - .../protected/pages/Fundamentals/ja/Services.page | 34 - .../pages/Fundamentals/ja/applifecycles.gif | Bin 31200 -> 0 bytes .../protected/pages/Fundamentals/ja/classtree.gif | Bin 18320 -> 0 bytes .../protected/pages/Fundamentals/ja/directory.gif | Bin 3967 -> 0 bytes .../protected/pages/Fundamentals/ja/lifecycles.gif | Bin 60897 -> 0 bytes .../pages/Fundamentals/ja/objectdiagram.gif | Bin 7700 -> 0 bytes .../pages/Fundamentals/pl/Applications.page | 58 - .../pages/Fundamentals/pl/Architecture.page | 15 - .../pages/Fundamentals/pl/Components.page | 128 --- .../protected/pages/Fundamentals/pl/Controls.page | 51 - .../protected/pages/Fundamentals/pl/Hangman.page | 16 - .../protected/pages/Fundamentals/pl/Modules.page | 50 - .../protected/pages/Fundamentals/pl/Pages.page | 25 - .../protected/pages/Fundamentals/pl/Services.page | 34 - .../pages/Fundamentals/pl/applifecycles.gif | Bin 38604 -> 0 bytes .../protected/pages/Fundamentals/pl/classtree.gif | Bin 18320 -> 0 bytes .../protected/pages/Fundamentals/pl/directory.gif | Bin 3967 -> 0 bytes .../protected/pages/Fundamentals/pl/lifecycles.gif | Bin 60897 -> 0 bytes .../pages/Fundamentals/pl/objectdiagram.gif | Bin 7700 -> 0 bytes .../protected/pages/GettingStarted/HelloWorld.page | 2 +- .../pages/GettingStarted/Installation.page | 2 +- .../pages/GettingStarted/Introduction.page | 6 +- .../pages/GettingStarted/de/Introduction.page | 62 -- .../pages/GettingStarted/es/AboutPrado.page | 86 -- .../pages/GettingStarted/es/Installation.page | 29 - .../pages/GettingStarted/es/Introduction.page | 60 - .../pages/GettingStarted/fr/AboutPrado.page | 71 -- .../pages/GettingStarted/fr/CommandLine.page | 94 -- .../pages/GettingStarted/fr/HelloWorld.page | 83 -- .../pages/GettingStarted/fr/Installation.page | 29 - .../pages/GettingStarted/fr/Introduction.page | 19 - .../pages/GettingStarted/fr/NewFeatures.page | 24 - .../pages/GettingStarted/fr/Upgrading.page | 63 -- .../pages/GettingStarted/fr/directory.gif | Bin 2685 -> 0 bytes .../protected/pages/GettingStarted/fr/sequence.gif | Bin 5793 -> 0 bytes .../pages/GettingStarted/id/AboutPrado.page | 70 -- .../pages/GettingStarted/id/CommandLine.page | 93 -- .../pages/GettingStarted/id/HelloWorld.page | 82 -- .../pages/GettingStarted/id/Installation.page | 29 - .../pages/GettingStarted/id/Introduction.page | 62 -- .../pages/GettingStarted/id/NewFeatures.page | 41 - .../pages/GettingStarted/id/Upgrading.page | 64 -- .../pages/GettingStarted/id/directory.gif | Bin 2685 -> 0 bytes .../protected/pages/GettingStarted/id/sequence.gif | Bin 6529 -> 0 bytes .../protected/pages/GettingStarted/id/sequence.vsd | Bin 143872 -> 0 bytes .../pages/GettingStarted/ja/AboutPrado.page | 79 -- .../pages/GettingStarted/ja/CommandLine.page | 106 -- .../pages/GettingStarted/ja/HelloWorld.page | 89 -- .../pages/GettingStarted/ja/Installation.page | 33 - .../pages/GettingStarted/ja/Introduction.page | 62 -- .../pages/GettingStarted/ja/NewFeatures.page | 35 - .../pages/GettingStarted/ja/Upgrading.page | 64 -- .../pages/GettingStarted/ja/directory.gif | Bin 2685 -> 0 bytes .../protected/pages/GettingStarted/ja/sequence.gif | Bin 5793 -> 0 bytes .../pages/GettingStarted/pl/AboutPrado.page | 71 -- .../pages/GettingStarted/pl/CommandLine.page | 101 -- .../pages/GettingStarted/pl/HelloWorld.page | 82 -- .../pages/GettingStarted/pl/Installation.page | 29 - .../pages/GettingStarted/pl/Introduction.page | 23 - .../pages/GettingStarted/pl/NewFeatures.page | 33 - .../pages/GettingStarted/pl/Upgrading.page | 64 -- .../pages/GettingStarted/pl/directory.gif | Bin 2685 -> 0 bytes .../protected/pages/GettingStarted/pl/sequence.gif | Bin 5793 -> 0 bytes .../pages/GettingStarted/zh/Introduction.page | 20 - .../protected/pages/Services/id/SoapService.page | 164 --- .../protected/pages/Tutorial/AjaxChat.page | 2 +- .../pages/Tutorial/CurrencyConverter.page | 8 +- .../protected/pages/Tutorial/fr/AjaxChat.page | 755 ------------- .../pages/Tutorial/fr/CurrencyConverter.page | 404 ------- .../protected/pages/Tutorial/fr/chat1.png | Bin 10533 -> 0 bytes .../protected/pages/Tutorial/fr/chat2.png | Bin 13409 -> 0 bytes .../protected/pages/Tutorial/fr/example1.png | Bin 11139 -> 0 bytes .../protected/pages/Tutorial/fr/example2.png | Bin 13842 -> 0 bytes .../protected/pages/Tutorial/id/AddressBook.page | 8 - .../protected/pages/Tutorial/id/AjaxChat.page | 685 ------------ .../pages/Tutorial/id/CurrencyConverter.page | 349 ------ .../protected/pages/Tutorial/id/chat1.png | Bin 10533 -> 0 bytes .../protected/pages/Tutorial/id/chat2.png | Bin 13409 -> 0 bytes .../protected/pages/Tutorial/id/example1.png | Bin 11139 -> 0 bytes .../protected/pages/Tutorial/id/example2.png | Bin 13842 -> 0 bytes .../protected/pages/pl/Construction.page | 5 - demos/quickstart/protected/pages/pl/Search.page | 29 - .../quickstart/protected/pages/pl/ViewSource.page | 31 - demos/site/protected/Pages/Documentation.page | 7 - demos/site/protected/Pages/License.page | 2 +- .../sqlmap/protected/pages/Manual/Installing.page | 12 +- demos/sqlmap/protected/pages/Manual/Layout.tpl | 4 +- .../protected/App_Code/Dao/BaseDao.php | 4 +- .../protected/App_Code/Dao/ProjectDao.php | 4 +- .../protected/App_Code/Dao/ProjectRecord.php | 4 +- .../protected/App_Code/Dao/UserDao.php | 4 +- .../time-tracker/protected/App_Code/DaoManager.php | 4 +- .../protected/App_Code/TimeTrackerException.php | 4 +- .../protected/App_Code/TimeTrackerUser.php | 4 +- .../protected/App_Code/UserManager.php | 4 +- .../protected/App_Data/MySQL4/mysql-reset.sql | 6 +- .../App_Data/MySQL4/time-tracker-mysql.sql | 6 +- .../App_Data/TimeTrackerUserTypeHandler.php | 4 +- .../protected/pages/TimeTracker/Login.php | 4 +- .../protected/pages/TimeTracker/Logout.php | 4 +- .../protected/pages/TimeTracker/MainLayout.tpl | 2 +- .../protected/pages/TimeTracker/SiteMap.php | 4 +- .../protected/pages/TimeTracker/UserCreate.php | 4 +- .../protected/pages/TimeTracker/UserList.php | 4 +- demos/time-tracker/tests/unit/UserDaoTestCase.php | 12 +- docs/sqlmap/latex/sqlmap.tex | 2 +- docs/sqlmap/latex/sqlmap_tut.tex | 2 +- .../Snippets/TActiveHyperLink.tmSnippet | 2 +- .../Snippets/TCircleHotSpot.tmSnippet | 4 +- .../Prado.tmbundle/Snippets/THyperLink.tmSnippet | 2 +- .../Prado.tmbundle/Snippets/TImageMap.tmSnippet | 4 +- .../Snippets/TPolygonHotSpot.tmSnippet | 4 +- .../Snippets/TRectangleHotSpot.tmSnippet | 4 +- framework/Caching/TAPCCache.php | 6 +- framework/Caching/TCache.php | 6 +- framework/Caching/TDbCache.php | 6 +- framework/Caching/TEACache.php | 2 +- framework/Caching/TMemCache.php | 6 +- framework/Caching/TSqliteCache.php | 6 +- framework/Caching/TXCache.php | 6 +- framework/Collections/TAttributeCollection.php | 6 +- framework/Collections/TDummyDataSource.php | 6 +- framework/Collections/TList.php | 6 +- framework/Collections/TListItemCollection.php | 6 +- framework/Collections/TMap.php | 6 +- framework/Collections/TPagedDataSource.php | 6 +- framework/Collections/TPagedList.php | 6 +- framework/Collections/TPriorityList.php | 6 +- framework/Collections/TPriorityMap.php | 6 +- framework/Collections/TQueue.php | 6 +- framework/Collections/TStack.php | 6 +- .../Exceptions/TActiveRecordException.php | 6 +- .../Relations/TActiveRecordBelongsTo.php | 6 +- .../Relations/TActiveRecordHasMany.php | 6 +- .../Relations/TActiveRecordHasManyAssociation.php | 6 +- .../ActiveRecord/Relations/TActiveRecordHasOne.php | 6 +- .../Relations/TActiveRecordRelation.php | 6 +- .../Relations/TActiveRecordRelationContext.php | 6 +- .../Scaffold/InputBuilder/TIbmScaffoldInput.php | 6 +- .../Scaffold/InputBuilder/TMssqlScaffoldInput.php | 6 +- .../Scaffold/InputBuilder/TMysqlScaffoldInput.php | 6 +- .../Scaffold/InputBuilder/TPgsqlScaffoldInput.php | 6 +- .../Scaffold/InputBuilder/TScaffoldInputBase.php | 6 +- .../Scaffold/InputBuilder/TScaffoldInputCommon.php | 6 +- .../Scaffold/InputBuilder/TSqliteScaffoldInput.php | 6 +- .../Data/ActiveRecord/Scaffold/TScaffoldBase.php | 6 +- .../ActiveRecord/Scaffold/TScaffoldEditView.php | 6 +- .../ActiveRecord/Scaffold/TScaffoldListView.php | 6 +- .../Data/ActiveRecord/Scaffold/TScaffoldSearch.php | 6 +- .../Data/ActiveRecord/Scaffold/TScaffoldView.php | 6 +- framework/Data/ActiveRecord/TActiveRecord.php | 6 +- .../Data/ActiveRecord/TActiveRecordConfig.php | 6 +- .../Data/ActiveRecord/TActiveRecordCriteria.php | 6 +- .../Data/ActiveRecord/TActiveRecordGateway.php | 6 +- .../Data/ActiveRecord/TActiveRecordManager.php | 6 +- .../Data/Common/Mssql/TMssqlCommandBuilder.php | 6 +- framework/Data/Common/Mssql/TMssqlMetaData.php | 6 +- framework/Data/Common/Mssql/TMssqlTableColumn.php | 6 +- framework/Data/Common/Mssql/TMssqlTableInfo.php | 6 +- .../Data/Common/Mysql/TMysqlCommandBuilder.php | 6 +- framework/Data/Common/Mysql/TMysqlMetaData.php | 6 +- framework/Data/Common/Mysql/TMysqlTableColumn.php | 6 +- framework/Data/Common/Mysql/TMysqlTableInfo.php | 6 +- .../Data/Common/Oracle/TOracleCommandBuilder.php | 6 +- framework/Data/Common/Oracle/TOracleMetaData.php | 6 +- .../Data/Common/Oracle/TOracleTableColumn.php | 6 +- framework/Data/Common/Oracle/TOracleTableInfo.php | 6 +- .../Data/Common/Pgsql/TPgsqlCommandBuilder.php | 6 +- framework/Data/Common/Pgsql/TPgsqlMetaData.php | 6 +- framework/Data/Common/Pgsql/TPgsqlTableColumn.php | 6 +- framework/Data/Common/Pgsql/TPgsqlTableInfo.php | 6 +- .../Data/Common/Sqlite/TSqliteCommandBuilder.php | 6 +- framework/Data/Common/Sqlite/TSqliteMetaData.php | 6 +- .../Data/Common/Sqlite/TSqliteTableColumn.php | 6 +- framework/Data/Common/Sqlite/TSqliteTableInfo.php | 6 +- framework/Data/Common/TDbCommandBuilder.php | 6 +- framework/Data/Common/TDbMetaData.php | 6 +- framework/Data/Common/TDbTableColumn.php | 6 +- framework/Data/Common/TDbTableInfo.php | 6 +- framework/Data/DataGateway/TDataGatewayCommand.php | 6 +- framework/Data/DataGateway/TSqlCriteria.php | 6 +- framework/Data/DataGateway/TTableGateway.php | 6 +- .../Data/SqlMap/Configuration/TDiscriminator.php | 6 +- .../Configuration/TInlineParameterMapParser.php | 6 +- .../Data/SqlMap/Configuration/TParameterMap.php | 6 +- .../SqlMap/Configuration/TParameterProperty.php | 6 +- framework/Data/SqlMap/Configuration/TResultMap.php | 6 +- .../Data/SqlMap/Configuration/TResultProperty.php | 6 +- .../SqlMap/Configuration/TSimpleDynamicParser.php | 6 +- .../SqlMap/Configuration/TSqlMapCacheModel.php | 6 +- .../Data/SqlMap/Configuration/TSqlMapStatement.php | 6 +- .../Configuration/TSqlMapXmlConfiguration.php | 6 +- .../DataMapper/TFastSqlMapApplicationCache.php | 6 +- framework/Data/SqlMap/DataMapper/TLazyLoadList.php | 6 +- .../Data/SqlMap/DataMapper/TPropertyAccess.php | 6 +- framework/Data/SqlMap/DataMapper/TSqlMapCache.php | 6 +- .../Data/SqlMap/DataMapper/TSqlMapPagedList.php | 6 +- .../DataMapper/TSqlMapTypeHandlerRegistry.php | 6 +- .../Data/SqlMap/Statements/TCachingStatement.php | 6 +- .../SqlMap/Statements/TDeleteMappedStatement.php | 6 +- .../SqlMap/Statements/TInsertMappedStatement.php | 6 +- .../Data/SqlMap/Statements/TMappedStatement.php | 6 +- .../Data/SqlMap/Statements/TPreparedCommand.php | 6 +- .../Data/SqlMap/Statements/TPreparedStatement.php | 6 +- .../Statements/TPreparedStatementFactory.php | 6 +- .../SqlMap/Statements/TSelectMappedStatement.php | 6 +- .../Data/SqlMap/Statements/TSimpleDynamicSql.php | 6 +- framework/Data/SqlMap/Statements/TStaticSql.php | 6 +- .../SqlMap/Statements/TUpdateMappedStatement.php | 6 +- framework/Data/SqlMap/TSqlMapConfig.php | 6 +- framework/Data/SqlMap/TSqlMapGateway.php | 6 +- framework/Data/SqlMap/TSqlMapManager.php | 6 +- framework/Data/TDataSourceConfig.php | 6 +- framework/Data/TDbCommand.php | 6 +- framework/Data/TDbConnection.php | 6 +- framework/Data/TDbDataReader.php | 6 +- framework/Data/TDbTransaction.php | 6 +- framework/Exceptions/TErrorHandler.php | 12 +- framework/Exceptions/TException.php | 6 +- framework/I18N/TChoiceFormat.php | 6 +- framework/I18N/TDateFormat.php | 6 +- framework/I18N/TGlobalization.php | 6 +- framework/I18N/TGlobalizationAutoDetect.php | 6 +- framework/I18N/TI18NControl.php | 6 +- framework/I18N/TNumberFormat.php | 6 +- framework/I18N/TTranslate.php | 6 +- framework/I18N/TTranslateParameter.php | 6 +- framework/I18N/Translation.php | 6 +- framework/IO/TTextWriter.php | 6 +- framework/PradoBase.php | 10 +- framework/Security/IUserManager.php | 6 +- framework/Security/TAuthManager.php | 6 +- framework/Security/TAuthorizationRule.php | 6 +- framework/Security/TDbUserManager.php | 6 +- framework/Security/TSecurityManager.php | 6 +- framework/Security/TUser.php | 6 +- framework/Security/TUserManager.php | 6 +- framework/TApplication.php | 6 +- framework/TApplicationComponent.php | 6 +- framework/TComponent.php | 6 +- framework/TModule.php | 6 +- framework/TService.php | 6 +- framework/TShellApplication.php | 6 +- framework/Util/TCallChain.php | 4 +- framework/Util/TClassBehavior.php | 4 +- framework/Util/TDataFieldAccessor.php | 6 +- framework/Util/TDateTimeStamp.php | 6 +- framework/Util/TLogRouter.php | 8 +- framework/Util/TLogger.php | 6 +- framework/Util/TParameterModule.php | 6 +- framework/Util/TRpcClient.php | 4 +- framework/Util/TSimpleDateFormatter.php | 6 +- framework/Util/TVarDumper.php | 6 +- framework/Web/Javascripts/TJavaScript.php | 6 +- framework/Web/Services/TFeedService.php | 6 +- framework/Web/Services/TJsonService.php | 6 +- framework/Web/Services/TPageService.php | 6 +- framework/Web/Services/TRpcService.php | 4 +- framework/Web/Services/TSoapService.php | 6 +- framework/Web/TAssetManager.php | 6 +- framework/Web/TCacheHttpSession.php | 6 +- framework/Web/THttpRequest.php | 6 +- framework/Web/THttpResponse.php | 6 +- framework/Web/THttpResponseAdapter.php | 6 +- framework/Web/THttpSession.php | 6 +- framework/Web/THttpUtility.php | 6 +- framework/Web/TUrlManager.php | 6 +- framework/Web/TUrlMapping.php | 6 +- framework/Web/UI/ActiveControls/TActiveButton.php | 6 +- .../Web/UI/ActiveControls/TActiveCheckBox.php | 6 +- .../Web/UI/ActiveControls/TActiveCheckBoxList.php | 6 +- .../Web/UI/ActiveControls/TActiveClientScript.php | 6 +- .../UI/ActiveControls/TActiveControlAdapter.php | 6 +- .../UI/ActiveControls/TActiveCustomValidator.php | 6 +- .../Web/UI/ActiveControls/TActiveDataGrid.php | 2 +- .../Web/UI/ActiveControls/TActiveDataList.php | 2 +- .../Web/UI/ActiveControls/TActiveDatePicker.php | 6 +- .../Web/UI/ActiveControls/TActiveDropDownList.php | 6 +- .../Web/UI/ActiveControls/TActiveHiddenField.php | 6 +- .../Web/UI/ActiveControls/TActiveHyperLink.php | 6 +- framework/Web/UI/ActiveControls/TActiveImage.php | 6 +- .../Web/UI/ActiveControls/TActiveImageButton.php | 6 +- framework/Web/UI/ActiveControls/TActiveLabel.php | 6 +- .../Web/UI/ActiveControls/TActiveLinkButton.php | 6 +- framework/Web/UI/ActiveControls/TActiveListBox.php | 6 +- .../ActiveControls/TActiveListControlAdapter.php | 6 +- .../Web/UI/ActiveControls/TActiveMultiView.php | 2 +- .../Web/UI/ActiveControls/TActivePageAdapter.php | 6 +- framework/Web/UI/ActiveControls/TActivePager.php | 6 +- framework/Web/UI/ActiveControls/TActivePanel.php | 6 +- .../Web/UI/ActiveControls/TActiveRadioButton.php | 6 +- .../UI/ActiveControls/TActiveRadioButtonList.php | 6 +- .../Web/UI/ActiveControls/TActiveRatingList.php | 6 +- .../Web/UI/ActiveControls/TActiveTableCell.php | 2 +- .../Web/UI/ActiveControls/TActiveTableRow.php | 2 +- framework/Web/UI/ActiveControls/TActiveTextBox.php | 6 +- framework/Web/UI/ActiveControls/TAutoComplete.php | 6 +- .../Web/UI/ActiveControls/TBaseActiveControl.php | 6 +- framework/Web/UI/ActiveControls/TCallback.php | 6 +- .../UI/ActiveControls/TCallbackClientScript.php | 6 +- .../Web/UI/ActiveControls/TCallbackClientSide.php | 6 +- .../UI/ActiveControls/TCallbackEventParameter.php | 6 +- .../Web/UI/ActiveControls/TCallbackOptions.php | 6 +- .../UI/ActiveControls/TCallbackResponseAdapter.php | 6 +- framework/Web/UI/ActiveControls/TDraggable.php | 10 +- framework/Web/UI/ActiveControls/TDropContainer.php | 8 +- .../UI/ActiveControls/TEventTriggeredCallback.php | 6 +- .../Web/UI/ActiveControls/TInPlaceTextBox.php | 6 +- .../UI/ActiveControls/TTimeTriggeredCallback.php | 6 +- .../Web/UI/ActiveControls/TTriggeredCallback.php | 6 +- .../UI/ActiveControls/TValueTriggeredCallback.php | 6 +- framework/Web/UI/JuiControls/TJuiAutoComplete.php | 6 +- .../Web/UI/JuiControls/TJuiControlAdapter.php | 6 +- framework/Web/UI/JuiControls/TJuiDatePicker.php | 2 +- framework/Web/UI/JuiControls/TJuiDialog.php | 4 +- framework/Web/UI/JuiControls/TJuiDraggable.php | 4 +- framework/Web/UI/JuiControls/TJuiDroppable.php | 4 +- framework/Web/UI/JuiControls/TJuiProgressbar.php | 4 +- framework/Web/UI/JuiControls/TJuiResizable.php | 4 +- framework/Web/UI/JuiControls/TJuiSelectable.php | 4 +- framework/Web/UI/JuiControls/TJuiSortable.php | 4 +- framework/Web/UI/TCachePageStatePersister.php | 6 +- framework/Web/UI/TClientScriptManager.php | 6 +- framework/Web/UI/TCompositeControl.php | 6 +- framework/Web/UI/TControl.php | 6 +- framework/Web/UI/TControlAdapter.php | 6 +- framework/Web/UI/TForm.php | 6 +- framework/Web/UI/THtmlWriter.php | 6 +- framework/Web/UI/TPage.php | 6 +- framework/Web/UI/TPageStatePersister.php | 6 +- framework/Web/UI/TSessionPageStatePersister.php | 6 +- framework/Web/UI/TTemplateControl.php | 6 +- framework/Web/UI/TTemplateControlInheritable.php | 4 +- framework/Web/UI/TTemplateManager.php | 6 +- framework/Web/UI/TThemeManager.php | 6 +- framework/Web/UI/WebControls/TAccordion.php | 6 +- framework/Web/UI/WebControls/TBaseDataList.php | 6 +- framework/Web/UI/WebControls/TBaseValidator.php | 6 +- framework/Web/UI/WebControls/TBoundColumn.php | 6 +- framework/Web/UI/WebControls/TBulletedList.php | 6 +- framework/Web/UI/WebControls/TButton.php | 6 +- framework/Web/UI/WebControls/TButtonColumn.php | 6 +- framework/Web/UI/WebControls/TCaptcha.php | 6 +- framework/Web/UI/WebControls/TCaptchaValidator.php | 6 +- framework/Web/UI/WebControls/TCheckBox.php | 6 +- framework/Web/UI/WebControls/TCheckBoxColumn.php | 6 +- framework/Web/UI/WebControls/TCheckBoxList.php | 6 +- framework/Web/UI/WebControls/TClientScript.php | 6 +- framework/Web/UI/WebControls/TColorPicker.php | 6 +- framework/Web/UI/WebControls/TCompareValidator.php | 6 +- framework/Web/UI/WebControls/TConditional.php | 6 +- framework/Web/UI/WebControls/TContent.php | 6 +- .../Web/UI/WebControls/TContentPlaceHolder.php | 6 +- framework/Web/UI/WebControls/TCustomValidator.php | 6 +- framework/Web/UI/WebControls/TDataBoundControl.php | 6 +- framework/Web/UI/WebControls/TDataGrid.php | 6 +- framework/Web/UI/WebControls/TDataGridColumn.php | 6 +- .../Web/UI/WebControls/TDataGridItemRenderer.php | 6 +- .../Web/UI/WebControls/TDataGridPagerStyle.php | 6 +- framework/Web/UI/WebControls/TDataList.php | 6 +- .../Web/UI/WebControls/TDataListItemRenderer.php | 6 +- framework/Web/UI/WebControls/TDataRenderer.php | 6 +- .../Web/UI/WebControls/TDataSourceControl.php | 6 +- framework/Web/UI/WebControls/TDataSourceView.php | 6 +- .../Web/UI/WebControls/TDataTypeValidator.php | 6 +- framework/Web/UI/WebControls/TDatePicker.php | 6 +- framework/Web/UI/WebControls/TDropDownList.php | 6 +- .../Web/UI/WebControls/TDropDownListColumn.php | 6 +- .../Web/UI/WebControls/TEditCommandColumn.php | 6 +- .../Web/UI/WebControls/TEmailAddressValidator.php | 6 +- framework/Web/UI/WebControls/TExpression.php | 6 +- framework/Web/UI/WebControls/TFileUpload.php | 6 +- framework/Web/UI/WebControls/TFlushOutput.php | 4 +- framework/Web/UI/WebControls/TFont.php | 6 +- framework/Web/UI/WebControls/THead.php | 6 +- framework/Web/UI/WebControls/THeader1.php | 6 +- framework/Web/UI/WebControls/THeader2.php | 6 +- framework/Web/UI/WebControls/THeader3.php | 6 +- framework/Web/UI/WebControls/THeader4.php | 6 +- framework/Web/UI/WebControls/THeader5.php | 6 +- framework/Web/UI/WebControls/THeader6.php | 6 +- framework/Web/UI/WebControls/THiddenField.php | 2 +- framework/Web/UI/WebControls/THtmlArea.php | 6 +- framework/Web/UI/WebControls/THtmlArea4.php | 6 +- framework/Web/UI/WebControls/THtmlElement.php | 6 +- framework/Web/UI/WebControls/THyperLink.php | 2 +- framework/Web/UI/WebControls/THyperLinkColumn.php | 6 +- framework/Web/UI/WebControls/TImage.php | 6 +- framework/Web/UI/WebControls/TImageButton.php | 6 +- framework/Web/UI/WebControls/TImageMap.php | 6 +- framework/Web/UI/WebControls/TInlineFrame.php | 6 +- framework/Web/UI/WebControls/TItemDataRenderer.php | 6 +- framework/Web/UI/WebControls/TJavascriptLogger.php | 6 +- framework/Web/UI/WebControls/TKeyboard.php | 6 +- framework/Web/UI/WebControls/TLabel.php | 6 +- framework/Web/UI/WebControls/TLinkButton.php | 6 +- framework/Web/UI/WebControls/TListBox.php | 6 +- framework/Web/UI/WebControls/TListControl.php | 6 +- .../Web/UI/WebControls/TListControlValidator.php | 6 +- framework/Web/UI/WebControls/TListItem.php | 6 +- framework/Web/UI/WebControls/TLiteral.php | 6 +- framework/Web/UI/WebControls/TLiteralColumn.php | 6 +- framework/Web/UI/WebControls/TMarkdown.php | 6 +- framework/Web/UI/WebControls/TMultiView.php | 6 +- framework/Web/UI/WebControls/TOutputCache.php | 6 +- framework/Web/UI/WebControls/TPager.php | 6 +- framework/Web/UI/WebControls/TPanel.php | 6 +- framework/Web/UI/WebControls/TPanelStyle.php | 6 +- framework/Web/UI/WebControls/TPlaceHolder.php | 6 +- framework/Web/UI/WebControls/TRadioButton.php | 6 +- framework/Web/UI/WebControls/TRadioButtonList.php | 6 +- framework/Web/UI/WebControls/TRangeValidator.php | 6 +- framework/Web/UI/WebControls/TRatingList.php | 6 +- framework/Web/UI/WebControls/TReCaptcha.php | 2 +- .../Web/UI/WebControls/TReCaptchaValidator.php | 2 +- .../UI/WebControls/TRegularExpressionValidator.php | 6 +- framework/Web/UI/WebControls/TRepeatInfo.php | 6 +- framework/Web/UI/WebControls/TRepeater.php | 6 +- .../Web/UI/WebControls/TRepeaterItemRenderer.php | 6 +- .../Web/UI/WebControls/TRequiredFieldValidator.php | 6 +- framework/Web/UI/WebControls/TSafeHtml.php | 6 +- framework/Web/UI/WebControls/TSlider.php | 6 +- framework/Web/UI/WebControls/TStatements.php | 6 +- framework/Web/UI/WebControls/TStyle.php | 6 +- framework/Web/UI/WebControls/TStyleSheet.php | 6 +- framework/Web/UI/WebControls/TTabPanel.php | 6 +- framework/Web/UI/WebControls/TTable.php | 6 +- framework/Web/UI/WebControls/TTableCell.php | 6 +- framework/Web/UI/WebControls/TTableFooterRow.php | 6 +- framework/Web/UI/WebControls/TTableHeaderCell.php | 6 +- framework/Web/UI/WebControls/TTableHeaderRow.php | 6 +- framework/Web/UI/WebControls/TTableRow.php | 6 +- framework/Web/UI/WebControls/TTemplateColumn.php | 6 +- framework/Web/UI/WebControls/TTextBox.php | 6 +- framework/Web/UI/WebControls/TTextHighlighter.php | 6 +- framework/Web/UI/WebControls/TTextProcessor.php | 6 +- .../Web/UI/WebControls/TValidationSummary.php | 6 +- framework/Web/UI/WebControls/TWebControl.php | 6 +- .../Web/UI/WebControls/TWebControlAdapter.php | 6 +- .../Web/UI/WebControls/TWebControlDecorator.php | 6 +- framework/Web/UI/WebControls/TWizard.php | 6 +- .../WebControls/TWizardNavigationButtonStyle.php | 6 +- framework/Web/UI/WebControls/TXmlTransform.php | 6 +- framework/Web/UI/WebControls/assets/captcha.php | 6 +- framework/Wsat/TWsatARGenerator.php | 6 +- framework/Wsat/TWsatBaseGenerator.php | 6 +- framework/Wsat/TWsatScaffoldingGenerator.php | 6 +- framework/Wsat/TWsatService.php | 6 +- framework/Wsat/pages/TWsatGenerateAR.php | 6 +- framework/Wsat/pages/TWsatHome.php | 6 +- framework/Wsat/pages/TWsatLogin.page | 5 +- framework/Wsat/pages/TWsatLogin.php | 6 +- framework/Wsat/pages/TWsatScaffolding.php | 6 +- framework/Wsat/pages/layout/TWsatLayout.tpl | 5 +- framework/Xml/TXmlDocument.php | 6 +- framework/interfaces.php | 6 +- framework/prado.php | 6 +- framework/pradolite.php | 12 +- index.html | 4 +- requirements/index.php | 8 +- requirements/messages-bg.txt | 35 - requirements/messages-id.txt | 41 - requirements/messages-zh.txt | 41 - requirements/template-bg.html | 50 - requirements/template-id.html | 49 - requirements/template-zh.html | 48 - requirements/template.html | 2 +- .../protected/pages/ActiveHyperLinkTest.page | 2 +- .../protected/pages/ActiveHyperLinkTest.php | 4 +- .../tests/ActiveHyperLinkTestCase.php | 2 +- .../quickstart/Controls/HyperLinkTestCase.php | 2 +- .../tickets/protected/pages/Layout.php | 9 +- .../tickets/protected/pages/Ticket121.page | 2 +- .../tickets/protected/pages/Ticket653/Layout.php | 2 +- .../tickets/tests/Ticket595TestCase.php | 4 +- .../validators/protected/pages/ImageButton.page | 6 +- tests/unit/Web/TAssetManagerTest.php | 2 +- tests/unit/Web/THttpCookieTest.php | 4 +- tests/unit/Web/THttpRequestTest.php | 4 +- tests/unit/Web/TUriTest.php | 8 +- 829 files changed, 1427 insertions(+), 23829 deletions(-) delete mode 100755 demos/blog-tutorial/protected/common/fr/TopicList.tpl delete mode 100755 demos/blog-tutorial/protected/common/id/TopicList.tpl delete mode 100755 demos/blog-tutorial/protected/layout/fr/MainLayout.tpl delete mode 100755 demos/blog-tutorial/protected/layout/id/MainLayout.tpl delete mode 100755 demos/blog-tutorial/protected/pages/Day1/fr/CreateContact.page delete mode 100755 demos/blog-tutorial/protected/pages/Day1/fr/Setup.page delete mode 100755 demos/blog-tutorial/protected/pages/Day1/fr/ShareLayout.page delete mode 100755 demos/blog-tutorial/protected/pages/Day1/fr/directories.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day1/fr/directories2.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day1/fr/directories3.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day1/fr/output.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day1/id/CreateContact.page delete mode 100755 demos/blog-tutorial/protected/pages/Day1/id/Setup.page delete mode 100755 demos/blog-tutorial/protected/pages/Day1/id/ShareLayout.page delete mode 100755 demos/blog-tutorial/protected/pages/Day1/id/directories.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day1/id/directories2.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day1/id/directories3.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day1/id/output.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day2/fr/ConnectDB.page delete mode 100755 demos/blog-tutorial/protected/pages/Day2/fr/CreateAR.page delete mode 100755 demos/blog-tutorial/protected/pages/Day2/fr/CreateDB.page delete mode 100755 demos/blog-tutorial/protected/pages/Day2/fr/ER.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day2/fr/ER.vsd delete mode 100755 demos/blog-tutorial/protected/pages/Day2/fr/directories.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day2/fr/directories2.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day2/id/ConnectDB.page delete mode 100755 demos/blog-tutorial/protected/pages/Day2/id/CreateAR.page delete mode 100755 demos/blog-tutorial/protected/pages/Day2/id/CreateDB.page delete mode 100755 demos/blog-tutorial/protected/pages/Day2/id/ER.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day2/id/directories.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day2/id/directories2.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day3/fr/Auth.page delete mode 100755 demos/blog-tutorial/protected/pages/Day3/fr/CreateAdminUser.page delete mode 100755 demos/blog-tutorial/protected/pages/Day3/fr/CreateEditUser.page delete mode 100755 demos/blog-tutorial/protected/pages/Day3/fr/CreateLoginUser.page delete mode 100755 demos/blog-tutorial/protected/pages/Day3/fr/CreateNewUser.page delete mode 100755 demos/blog-tutorial/protected/pages/Day3/fr/Overview.page delete mode 100755 demos/blog-tutorial/protected/pages/Day3/fr/directories.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day3/fr/output.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day3/fr/output2.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day3/fr/output3.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day3/id/Auth.page delete mode 100755 demos/blog-tutorial/protected/pages/Day3/id/CreateAdminUser.page delete mode 100755 demos/blog-tutorial/protected/pages/Day3/id/CreateEditUser.page delete mode 100755 demos/blog-tutorial/protected/pages/Day3/id/CreateLoginUser.page delete mode 100755 demos/blog-tutorial/protected/pages/Day3/id/CreateNewUser.page delete mode 100755 demos/blog-tutorial/protected/pages/Day3/id/Overview.page delete mode 100755 demos/blog-tutorial/protected/pages/Day3/id/directories.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day3/id/output.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day3/id/output2.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day3/id/output3.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day4/fr/CreateEditPost.page delete mode 100755 demos/blog-tutorial/protected/pages/Day4/fr/CreateListPost.page delete mode 100755 demos/blog-tutorial/protected/pages/Day4/fr/CreateNewPost.page delete mode 100755 demos/blog-tutorial/protected/pages/Day4/fr/CreateReadPost.page delete mode 100755 demos/blog-tutorial/protected/pages/Day4/fr/Overview.page delete mode 100755 demos/blog-tutorial/protected/pages/Day4/fr/directories.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day4/fr/output.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day4/fr/output2.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day4/fr/output3.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day4/fr/output4.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day4/id/CreateEditPost.page delete mode 100755 demos/blog-tutorial/protected/pages/Day4/id/CreateListPost.page delete mode 100755 demos/blog-tutorial/protected/pages/Day4/id/CreateNewPost.page delete mode 100755 demos/blog-tutorial/protected/pages/Day4/id/CreateReadPost.page delete mode 100755 demos/blog-tutorial/protected/pages/Day4/id/Overview.page delete mode 100755 demos/blog-tutorial/protected/pages/Day4/id/directories.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day4/id/output.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day4/id/output2.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day4/id/output3.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day4/id/output4.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day5/fr/ErrorLogging.page delete mode 100755 demos/blog-tutorial/protected/pages/Day5/fr/Performance.page delete mode 100755 demos/blog-tutorial/protected/pages/Day5/fr/Summary.page delete mode 100755 demos/blog-tutorial/protected/pages/Day5/fr/UseTheme.page delete mode 100755 demos/blog-tutorial/protected/pages/Day5/fr/output.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day5/fr/output2.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day5/fr/output3.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day5/id/ErrorLogging.page delete mode 100755 demos/blog-tutorial/protected/pages/Day5/id/Performance.page delete mode 100755 demos/blog-tutorial/protected/pages/Day5/id/Summary.page delete mode 100755 demos/blog-tutorial/protected/pages/Day5/id/UseTheme.page delete mode 100755 demos/blog-tutorial/protected/pages/Day5/id/output.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day5/id/output2.gif delete mode 100755 demos/blog-tutorial/protected/pages/Day5/id/output3.gif delete mode 100755 demos/blog-tutorial/protected/pages/fr/Overview.page delete mode 100755 demos/blog-tutorial/protected/pages/fr/Requirements.page delete mode 100755 demos/blog-tutorial/protected/pages/id/Overview.page delete mode 100755 demos/blog-tutorial/protected/pages/id/Requirements.page delete mode 100755 demos/quickstart/protected/controls/de/Layout.tpl delete mode 100755 demos/quickstart/protected/controls/de/RequiresVersion.tpl delete mode 100755 demos/quickstart/protected/controls/de/RunBar.tpl delete mode 100755 demos/quickstart/protected/controls/de/SearchBox.tpl delete mode 100755 demos/quickstart/protected/controls/de/TopicList.tpl delete mode 100755 demos/quickstart/protected/controls/es/Layout.tpl delete mode 100755 demos/quickstart/protected/controls/es/RequiresVersion.tpl delete mode 100755 demos/quickstart/protected/controls/es/RunBar.tpl delete mode 100755 demos/quickstart/protected/controls/es/SampleLayout.tpl delete mode 100755 demos/quickstart/protected/controls/es/SearchBox.tpl delete mode 100755 demos/quickstart/protected/controls/es/SinceVersion.tpl delete mode 100644 demos/quickstart/protected/controls/es/TopicList.tpl delete mode 100755 demos/quickstart/protected/controls/fr/Layout.tpl delete mode 100755 demos/quickstart/protected/controls/fr/RunBar.tpl delete mode 100755 demos/quickstart/protected/controls/fr/SampleLayout.tpl delete mode 100755 demos/quickstart/protected/controls/fr/SearchBox.tpl delete mode 100644 demos/quickstart/protected/controls/fr/TopicList.tpl delete mode 100755 demos/quickstart/protected/controls/id/Layout.tpl delete mode 100755 demos/quickstart/protected/controls/id/RequiresVersion.tpl delete mode 100755 demos/quickstart/protected/controls/id/RunBar.tpl delete mode 100755 demos/quickstart/protected/controls/id/SampleLayout.tpl delete mode 100755 demos/quickstart/protected/controls/id/SearchBox.tpl delete mode 100755 demos/quickstart/protected/controls/id/SinceVersion.tpl delete mode 100644 demos/quickstart/protected/controls/id/TopicList.tpl delete mode 100755 demos/quickstart/protected/controls/ja/Layout.tpl delete mode 100755 demos/quickstart/protected/controls/ja/RunBar.tpl delete mode 100755 demos/quickstart/protected/controls/ja/SearchBox.tpl delete mode 100644 demos/quickstart/protected/controls/ja/TopicList.tpl delete mode 100755 demos/quickstart/protected/controls/pl/Layout.tpl delete mode 100755 demos/quickstart/protected/controls/pl/RequiresVersion.tpl delete mode 100755 demos/quickstart/protected/controls/pl/SearchBox.tpl delete mode 100755 demos/quickstart/protected/controls/pl/SinceVersion.tpl delete mode 100644 demos/quickstart/protected/controls/pl/TopicList.tpl delete mode 100644 demos/quickstart/protected/controls/zh/TopicList.tpl delete mode 100755 demos/quickstart/protected/pages/ActiveControls/id/ActiveButton.page delete mode 100755 demos/quickstart/protected/pages/ActiveControls/id/ActiveCheckBox.page delete mode 100755 demos/quickstart/protected/pages/ActiveControls/id/ActiveCustomValidator.page delete mode 100755 demos/quickstart/protected/pages/ActiveControls/id/ActiveHyperLink.page delete mode 100755 demos/quickstart/protected/pages/ActiveControls/id/ActivePager.page delete mode 100755 demos/quickstart/protected/pages/ActiveControls/id/Home.page delete mode 100755 demos/quickstart/protected/pages/ActiveControls/id/TActiveButtonClass.png delete mode 100755 demos/quickstart/protected/pages/ActiveControls/id/postback-callback.png delete mode 100755 demos/quickstart/protected/pages/Advanced/Samples/I18N/id/Home.page delete mode 100755 demos/quickstart/protected/pages/Advanced/Samples/I18N/messages/index.de.xml delete mode 100755 demos/quickstart/protected/pages/Advanced/Samples/I18N/messages/index.es.xml delete mode 100755 demos/quickstart/protected/pages/Advanced/Samples/I18N/messages/index.fr.xml delete mode 100755 demos/quickstart/protected/pages/Advanced/Samples/I18N/messages/index.id.xml delete mode 100755 demos/quickstart/protected/pages/Advanced/Samples/I18N/messages/index.pl.xml delete mode 100755 demos/quickstart/protected/pages/Advanced/Samples/I18N/messages/index.zh.xml delete mode 100755 demos/quickstart/protected/pages/Advanced/Samples/I18N/messages/tests.de.xml delete mode 100755 demos/quickstart/protected/pages/Advanced/Samples/I18N/messages/tests.es.xml delete mode 100755 demos/quickstart/protected/pages/Advanced/Samples/I18N/messages/tests.fr.xml delete mode 100755 demos/quickstart/protected/pages/Advanced/Samples/I18N/messages/tests.id.xml delete mode 100755 demos/quickstart/protected/pages/Advanced/Samples/I18N/messages/tests.pl.xml delete mode 100755 demos/quickstart/protected/pages/Advanced/Samples/I18N/messages/tests.zh.xml delete mode 100755 demos/quickstart/protected/pages/Advanced/Samples/I18N/zh_TW/Home.page delete mode 100755 demos/quickstart/protected/pages/Advanced/es/Assets.page delete mode 100755 demos/quickstart/protected/pages/Advanced/es/Auth.page delete mode 100755 demos/quickstart/protected/pages/Advanced/es/Collections.page delete mode 100755 demos/quickstart/protected/pages/Advanced/es/Error.page delete mode 100755 demos/quickstart/protected/pages/Advanced/es/I18N.page delete mode 100755 demos/quickstart/protected/pages/Advanced/es/Logging.page delete mode 100755 demos/quickstart/protected/pages/Advanced/es/MasterContent.page delete mode 100755 demos/quickstart/protected/pages/Advanced/es/Performance.page delete mode 100755 demos/quickstart/protected/pages/Advanced/es/Scripts.page delete mode 100755 demos/quickstart/protected/pages/Advanced/es/Scripts3.page delete mode 100755 demos/quickstart/protected/pages/Advanced/es/Security.page delete mode 100755 demos/quickstart/protected/pages/Advanced/es/State.page delete mode 100755 demos/quickstart/protected/pages/Advanced/es/Themes.page delete mode 100755 demos/quickstart/protected/pages/Advanced/es/exception.gif delete mode 100755 demos/quickstart/protected/pages/Advanced/es/exception2.gif delete mode 100755 demos/quickstart/protected/pages/Advanced/es/logrouter.gif delete mode 100755 demos/quickstart/protected/pages/Advanced/es/mastercontent.gif delete mode 100755 demos/quickstart/protected/pages/Advanced/es/pcrelation.gif delete mode 100755 demos/quickstart/protected/pages/Advanced/id/Assets.page delete mode 100755 demos/quickstart/protected/pages/Advanced/id/Auth.page delete mode 100755 demos/quickstart/protected/pages/Advanced/id/Collections.page delete mode 100755 demos/quickstart/protected/pages/Advanced/id/Error.page delete mode 100755 demos/quickstart/protected/pages/Advanced/id/I18N.page delete mode 100755 demos/quickstart/protected/pages/Advanced/id/Logging.page delete mode 100755 demos/quickstart/protected/pages/Advanced/id/MasterContent.page delete mode 100755 demos/quickstart/protected/pages/Advanced/id/Performance.page delete mode 100755 demos/quickstart/protected/pages/Advanced/id/Scripts.page delete mode 100755 demos/quickstart/protected/pages/Advanced/id/Scripts3.page delete mode 100755 demos/quickstart/protected/pages/Advanced/id/Security.page delete mode 100755 demos/quickstart/protected/pages/Advanced/id/State.page delete mode 100755 demos/quickstart/protected/pages/Advanced/id/Themes.page delete mode 100755 demos/quickstart/protected/pages/Advanced/id/exception.gif delete mode 100755 demos/quickstart/protected/pages/Advanced/id/exception2.gif delete mode 100755 demos/quickstart/protected/pages/Advanced/id/logrouter.gif delete mode 100755 demos/quickstart/protected/pages/Advanced/id/mastercontent.gif delete mode 100755 demos/quickstart/protected/pages/Advanced/id/pcrelation.gif delete mode 100755 demos/quickstart/protected/pages/Configurations/id/AppConfig.page delete mode 100755 demos/quickstart/protected/pages/Configurations/id/Overview.page delete mode 100755 demos/quickstart/protected/pages/Configurations/id/PageConfig.page delete mode 100755 demos/quickstart/protected/pages/Configurations/id/Templates1.page delete mode 100755 demos/quickstart/protected/pages/Configurations/id/Templates2.page delete mode 100755 demos/quickstart/protected/pages/Configurations/id/Templates3.page delete mode 100755 demos/quickstart/protected/pages/Configurations/id/UrlMapping.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/Button.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/Captcha.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/CheckBox.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/ClientScript.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/ColorPicker.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/Conditional.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/Data.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/DataGrid.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/DataList.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/DatePicker.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/Expression.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/FileUpload.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/Head.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/HiddenField.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/HtmlArea.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/HyperLink.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/Image.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/ImageButton.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/ImageMap.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/InlineFrame.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/JavascriptLogger.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/Keyboard.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/Label.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/LinkButton.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/List.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/Literal.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/MultiView.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/NewControl.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/OutputCache.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/Pager.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/Panel.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/PlaceHolder.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/RadioButton.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/Repeater.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/SafeHtml.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/Slider.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/Standard.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/Statements.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/TabPanel.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/Table.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/TextBox.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/TextHighlighter.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/Validation.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/Wizard.page delete mode 100755 demos/quickstart/protected/pages/Controls/id/wizard.gif delete mode 100755 demos/quickstart/protected/pages/Database/id/ActiveRecord.page delete mode 100755 demos/quickstart/protected/pages/Database/id/DAO.page delete mode 100755 demos/quickstart/protected/pages/Database/id/Scaffold.page delete mode 100755 demos/quickstart/protected/pages/Database/id/SqlMap.page delete mode 100755 demos/quickstart/protected/pages/Database/id/ar_objects.png delete mode 100755 demos/quickstart/protected/pages/Database/id/ar_relations.png delete mode 100755 demos/quickstart/protected/pages/Database/id/diagram.png delete mode 100755 demos/quickstart/protected/pages/Database/id/object_states.png delete mode 100755 demos/quickstart/protected/pages/Database/id/sqlmap_active_record.png delete mode 100755 demos/quickstart/protected/pages/Database/pl/ActiveRecord.page delete mode 100755 demos/quickstart/protected/pages/Database/pl/ar_objects.png delete mode 100755 demos/quickstart/protected/pages/Database/pl/ar_relations.png delete mode 100755 demos/quickstart/protected/pages/Database/pl/diagram.png delete mode 100755 demos/quickstart/protected/pages/Database/pl/object_states.png delete mode 100755 demos/quickstart/protected/pages/Database/pl/sqlmap_active_record.png delete mode 100755 demos/quickstart/protected/pages/Fundamentals/id/Applications.page delete mode 100755 demos/quickstart/protected/pages/Fundamentals/id/Architecture.page delete mode 100755 demos/quickstart/protected/pages/Fundamentals/id/Components.page delete mode 100755 demos/quickstart/protected/pages/Fundamentals/id/Controls.page delete mode 100755 demos/quickstart/protected/pages/Fundamentals/id/Hangman.page delete mode 100755 demos/quickstart/protected/pages/Fundamentals/id/Modules.page delete mode 100755 demos/quickstart/protected/pages/Fundamentals/id/Pages.page delete mode 100755 demos/quickstart/protected/pages/Fundamentals/id/Services.page delete mode 100755 demos/quickstart/protected/pages/Fundamentals/id/applifecycles.gif delete mode 100755 demos/quickstart/protected/pages/Fundamentals/id/applifecycles.vsd delete mode 100755 demos/quickstart/protected/pages/Fundamentals/id/classtree.gif delete mode 100755 demos/quickstart/protected/pages/Fundamentals/id/classtree.vsd delete mode 100755 demos/quickstart/protected/pages/Fundamentals/id/directory.gif delete mode 100755 demos/quickstart/protected/pages/Fundamentals/id/lifecycles.gif delete mode 100755 demos/quickstart/protected/pages/Fundamentals/id/lifecycles.vsd delete mode 100755 demos/quickstart/protected/pages/Fundamentals/id/objectdiagram.gif delete mode 100755 demos/quickstart/protected/pages/Fundamentals/id/objectdiagram.vsd delete mode 100755 demos/quickstart/protected/pages/Fundamentals/ja/Applications.page delete mode 100755 demos/quickstart/protected/pages/Fundamentals/ja/Architecture.page delete mode 100755 demos/quickstart/protected/pages/Fundamentals/ja/Components.page delete mode 100755 demos/quickstart/protected/pages/Fundamentals/ja/Controls.page delete mode 100755 demos/quickstart/protected/pages/Fundamentals/ja/Hangman.page delete mode 100755 demos/quickstart/protected/pages/Fundamentals/ja/Modules.page delete mode 100755 demos/quickstart/protected/pages/Fundamentals/ja/Pages.page delete mode 100755 demos/quickstart/protected/pages/Fundamentals/ja/Services.page delete mode 100755 demos/quickstart/protected/pages/Fundamentals/ja/applifecycles.gif delete mode 100755 demos/quickstart/protected/pages/Fundamentals/ja/classtree.gif delete mode 100755 demos/quickstart/protected/pages/Fundamentals/ja/directory.gif delete mode 100755 demos/quickstart/protected/pages/Fundamentals/ja/lifecycles.gif delete mode 100755 demos/quickstart/protected/pages/Fundamentals/ja/objectdiagram.gif delete mode 100755 demos/quickstart/protected/pages/Fundamentals/pl/Applications.page delete mode 100755 demos/quickstart/protected/pages/Fundamentals/pl/Architecture.page delete mode 100755 demos/quickstart/protected/pages/Fundamentals/pl/Components.page delete mode 100755 demos/quickstart/protected/pages/Fundamentals/pl/Controls.page delete mode 100755 demos/quickstart/protected/pages/Fundamentals/pl/Hangman.page delete mode 100755 demos/quickstart/protected/pages/Fundamentals/pl/Modules.page delete mode 100755 demos/quickstart/protected/pages/Fundamentals/pl/Pages.page delete mode 100755 demos/quickstart/protected/pages/Fundamentals/pl/Services.page delete mode 100755 demos/quickstart/protected/pages/Fundamentals/pl/applifecycles.gif delete mode 100755 demos/quickstart/protected/pages/Fundamentals/pl/classtree.gif delete mode 100755 demos/quickstart/protected/pages/Fundamentals/pl/directory.gif delete mode 100755 demos/quickstart/protected/pages/Fundamentals/pl/lifecycles.gif delete mode 100755 demos/quickstart/protected/pages/Fundamentals/pl/objectdiagram.gif delete mode 100755 demos/quickstart/protected/pages/GettingStarted/de/Introduction.page delete mode 100755 demos/quickstart/protected/pages/GettingStarted/es/AboutPrado.page delete mode 100755 demos/quickstart/protected/pages/GettingStarted/es/Installation.page delete mode 100755 demos/quickstart/protected/pages/GettingStarted/es/Introduction.page delete mode 100755 demos/quickstart/protected/pages/GettingStarted/fr/AboutPrado.page delete mode 100755 demos/quickstart/protected/pages/GettingStarted/fr/CommandLine.page delete mode 100755 demos/quickstart/protected/pages/GettingStarted/fr/HelloWorld.page delete mode 100755 demos/quickstart/protected/pages/GettingStarted/fr/Installation.page delete mode 100755 demos/quickstart/protected/pages/GettingStarted/fr/Introduction.page delete mode 100755 demos/quickstart/protected/pages/GettingStarted/fr/NewFeatures.page delete mode 100755 demos/quickstart/protected/pages/GettingStarted/fr/Upgrading.page delete mode 100755 demos/quickstart/protected/pages/GettingStarted/fr/directory.gif delete mode 100755 demos/quickstart/protected/pages/GettingStarted/fr/sequence.gif delete mode 100755 demos/quickstart/protected/pages/GettingStarted/id/AboutPrado.page delete mode 100755 demos/quickstart/protected/pages/GettingStarted/id/CommandLine.page delete mode 100755 demos/quickstart/protected/pages/GettingStarted/id/HelloWorld.page delete mode 100755 demos/quickstart/protected/pages/GettingStarted/id/Installation.page delete mode 100755 demos/quickstart/protected/pages/GettingStarted/id/Introduction.page delete mode 100755 demos/quickstart/protected/pages/GettingStarted/id/NewFeatures.page delete mode 100755 demos/quickstart/protected/pages/GettingStarted/id/Upgrading.page delete mode 100755 demos/quickstart/protected/pages/GettingStarted/id/directory.gif delete mode 100755 demos/quickstart/protected/pages/GettingStarted/id/sequence.gif delete mode 100755 demos/quickstart/protected/pages/GettingStarted/id/sequence.vsd delete mode 100755 demos/quickstart/protected/pages/GettingStarted/ja/AboutPrado.page delete mode 100755 demos/quickstart/protected/pages/GettingStarted/ja/CommandLine.page delete mode 100755 demos/quickstart/protected/pages/GettingStarted/ja/HelloWorld.page delete mode 100755 demos/quickstart/protected/pages/GettingStarted/ja/Installation.page delete mode 100755 demos/quickstart/protected/pages/GettingStarted/ja/Introduction.page delete mode 100755 demos/quickstart/protected/pages/GettingStarted/ja/NewFeatures.page delete mode 100755 demos/quickstart/protected/pages/GettingStarted/ja/Upgrading.page delete mode 100755 demos/quickstart/protected/pages/GettingStarted/ja/directory.gif delete mode 100755 demos/quickstart/protected/pages/GettingStarted/ja/sequence.gif delete mode 100755 demos/quickstart/protected/pages/GettingStarted/pl/AboutPrado.page delete mode 100755 demos/quickstart/protected/pages/GettingStarted/pl/CommandLine.page delete mode 100755 demos/quickstart/protected/pages/GettingStarted/pl/HelloWorld.page delete mode 100755 demos/quickstart/protected/pages/GettingStarted/pl/Installation.page delete mode 100755 demos/quickstart/protected/pages/GettingStarted/pl/Introduction.page delete mode 100755 demos/quickstart/protected/pages/GettingStarted/pl/NewFeatures.page delete mode 100755 demos/quickstart/protected/pages/GettingStarted/pl/Upgrading.page delete mode 100755 demos/quickstart/protected/pages/GettingStarted/pl/directory.gif delete mode 100755 demos/quickstart/protected/pages/GettingStarted/pl/sequence.gif delete mode 100755 demos/quickstart/protected/pages/GettingStarted/zh/Introduction.page delete mode 100755 demos/quickstart/protected/pages/Services/id/SoapService.page delete mode 100755 demos/quickstart/protected/pages/Tutorial/fr/AjaxChat.page delete mode 100755 demos/quickstart/protected/pages/Tutorial/fr/CurrencyConverter.page delete mode 100755 demos/quickstart/protected/pages/Tutorial/fr/chat1.png delete mode 100755 demos/quickstart/protected/pages/Tutorial/fr/chat2.png delete mode 100755 demos/quickstart/protected/pages/Tutorial/fr/example1.png delete mode 100755 demos/quickstart/protected/pages/Tutorial/fr/example2.png delete mode 100755 demos/quickstart/protected/pages/Tutorial/id/AddressBook.page delete mode 100755 demos/quickstart/protected/pages/Tutorial/id/AjaxChat.page delete mode 100755 demos/quickstart/protected/pages/Tutorial/id/CurrencyConverter.page delete mode 100755 demos/quickstart/protected/pages/Tutorial/id/chat1.png delete mode 100755 demos/quickstart/protected/pages/Tutorial/id/chat2.png delete mode 100755 demos/quickstart/protected/pages/Tutorial/id/example1.png delete mode 100755 demos/quickstart/protected/pages/Tutorial/id/example2.png delete mode 100755 demos/quickstart/protected/pages/pl/Construction.page delete mode 100755 demos/quickstart/protected/pages/pl/Search.page delete mode 100755 demos/quickstart/protected/pages/pl/ViewSource.page delete mode 100644 requirements/messages-bg.txt delete mode 100644 requirements/messages-id.txt delete mode 100644 requirements/messages-zh.txt delete mode 100644 requirements/template-bg.html delete mode 100644 requirements/template-id.html delete mode 100644 requirements/template-zh.html (limited to 'demos') diff --git a/COPYRIGHT b/COPYRIGHT index 4d7a65d8..42d357a0 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-2014, The PRADO Group (http://www.pradosoft.com) +Copyright 2004-2015, The PRADO Group (https://github.com/pradosoft) All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/HISTORY b/HISTORY index 2eeb9bc6..d2a6cca0 100644 --- a/HISTORY +++ b/HISTORY @@ -1,4 +1,4 @@ -Version 3.3.0 November ??, 2015 +Version 3.3.0 December ??, 2015 CHG: Added jQuery and rebased PRADO's effect and controls on it (ctrlaltca) ENH: Added jQueryUI and created new controls (ctrlaltca) @@ -643,7 +643,7 @@ ENH: Ticket#482 - ADD TinyMCE 2.0.8 (Wei, TinyMCE 2.1 added) ENH: Ticket#503 - Localization and parameter tags can now appear as a substring in a property initial value (Qiang) ENH: Ticket#513 - Display last modified / revision in quickstart (Wei) ENH: Ticket#519 - Update TActiveRecord implementation (Wei) -ENH: Ticket#537 - TActiveRecord Pk info ENH [usage: http://trac.pradosoft.com/prado/ticket/537] (Wei) +ENH: Ticket#537 - TActiveRecord Pk info (Wei) ENH: Ticket#561 - Powered by PRADO image to become an asset (Qiang) ENH: Ticket#569 - Added TTextBox.PersistPassword property (Qiang) ENH: Ticket#571 - Made TPage.ClientSupportsJavaScript property writable (Qiang) diff --git a/README.md b/README.md index 923fded5..345c76aa 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,5 @@ # Prado PHP Framework -### NEWS: our website suffered a server crash; we are currently rebuilding it, have a look at http://www.pradoframework.net/ for updates. Thank you for your patience. - PRADO is a component-based and event-driven programming framework for developing Web applications in PHP 5. PRADO stands for PHP Rapid Application Development Object-oriented. @@ -44,7 +42,7 @@ Then you can include the autoloader, and you will have access to the library cla require 'vendor/autoload.php'; ``` ## Demo Apps -The Demos folder has several different example prado applications. You can see more information about these applications here: http://www.pradosoft.com/demos/ . When you create your own prado application you do NOT need these folders. +The Demos folder has several different example prado applications. You can see more information about these applications here: http://www.pradoframework.net/site/demos/ . When you create your own prado application you do NOT need these folders. * address-book * blog diff --git a/bin/prado-cli.php b/bin/prado-cli.php index 7182a4c2..824cf10c 100755 --- a/bin/prado-cli.php +++ b/bin/prado-cli.php @@ -4,9 +4,9 @@ * Prado command line developer tools. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2015 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2015 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT */ if(!isset($_SERVER['argv']) || php_sapi_name()!=='cli') diff --git a/build.xml b/build.xml index 131cce9d..708b18cd 100644 --- a/build.xml +++ b/build.xml @@ -1,6 +1,6 @@
    @@ -43,7 +45,7 @@ - diff --git a/demos/quickstart/protected/pages/GettingStarted/de/Introduction.page b/demos/quickstart/protected/pages/GettingStarted/de/Introduction.page deleted file mode 100755 index 0c6b4ee6..00000000 --- a/demos/quickstart/protected/pages/GettingStarted/de/Introduction.page +++ /dev/null @@ -1,62 +0,0 @@ - -

    Willkommen zum PRADO Quickstart Tutorial

    -
    -

    -Das Quicktstart tutorial soll Sie bei der Erstellung einer PRADO 3.x-basierten Webanwendung unterstützen. -

    -

    -Wenn Sie bereits PRADO 3.x nutzen und herausfinden möchten welche Verbesserungen und neuen Funktionen mit welcher Prado-Version unterstützt werden, besuchen sie die Neue Features-Seite. -

    - - -

    -Nutzen Sie auch die folgenden Ressourcen, wenn dieses Tutorial ihre Fragen nicht hinreichend beantwortet: -

    -
    - - -
    diff --git a/demos/quickstart/protected/pages/GettingStarted/es/AboutPrado.page b/demos/quickstart/protected/pages/GettingStarted/es/AboutPrado.page deleted file mode 100755 index 1aa1d765..00000000 --- a/demos/quickstart/protected/pages/GettingStarted/es/AboutPrado.page +++ /dev/null @@ -1,86 +0,0 @@ - -

    ¿Que es PRADO?

    -

    -PRADO es una capa de programación (framework) basada componentes y programación dirigida por eventos, para desarrollos de aplicaciones Web en PHP 5. Las siglas PRADO significan en español Desarrollo Rapido de Aplicaciones con Programación Orientada a Objetos en PHP (PHP Rapid Application Development Object-oriented). -

    -

    -El principal objetivo de PRADO es utilizar al máximo la reutilización en la programación Web. Por reusabilidad, queremos decir no solamente reutilizar el código propio, si no el de otros programadores de una manera fácil. Lo último dicho es más importante, ya que evita el esfuerzo de reinventar nuevamente la rueda y además posibilita disminuir notablemente los tiempos de desarrollos. La introducción al concepto de componentes tiene este propósito. -

    -

    -Para alcanzar el propósito mencionado, PRADO estipula un protocolo para escribir y usar componentes para construir una aplicación Web. Un componente es una pieza de programa que es autocontenido (self-contained) y puede ser reutilizado con una mínima personalización del mismo. Nuevos componentes pueden ser creados por una simple composición de componentes existentes. -

    -

    -Para facilitar la interacción con componentes, PRADO implementa el paradigma de la programación dirigida por eventos (event-driven) que permite la delegación de comportamientos extensibles a los componentes. -Las actividades de los usuarios finales, tales como hacer clic en un botón de un formulario, son capturados como eventos en el lado del servidor (server events). -Metodos o funciones deben ser enlazadas a dichos eventos de tal manera que cuando los eventos sucedan, estos son invocados automáticamente para responder a dicho evento. Comparado con la programación Web tradicional en la cual los desarrolladores tienen que tratar directamente (raw) con las variables de arreglo POST y GET, la programación dirigida por eventos ayuda a los desarrolladores enfocarse mejor en las necesidades lógicas y reducir significativamente el código de bajo nivel repetitivo (low-level repetitive coding). -

    -

    -En resumen, desarrollar aplicaciones Web con PRADO principalmente involucra instantáneamente tipos de componentes predesarrollados, configurarlos mediante sus propiedades, responder a sus eventos escribiendo funciones manipuladoras de los mismos , y agrupándolos (composing them) dentro de paginas para la aplicación. Es muy similar al Kit de herramientas RAD de Borland Delphi y Microsoft Visual Basic, que son utilizadas para desarrollar aplicaciones (Interfaces Graficas de Usuarios, GUI) de escritorio. -

    - -

    ¿Proque PRADO?

    -

    -PRADO es comúnmente citado como una plataforma de programación (framework) única. En realidad es tan único que puede convertir una tediosa y aburrida tarea de programación en PHP en una tarea divertida (fun task). La siguiente lista es un pequeño resumen de las características principales de PRADO, -

    -
      -
    • -Reutilización - Los codigos que se rigen por el protocolo basado en componentes de PRADO son altamente reutilizables. Esto beneficia a los equipos de desarrollo a largo plazo, ya que pueden reutilizar sus trabajos anteriores e integrar otras partes de trabajo con facilidad.
    • -
    • -Programación dirigida por eventos - Las actividades del usuario final, tales como como hacer clic en un botón de enviar, son capturadas como eventos del servidor permitiendo que los desarrolladores tengan un mejor enfoque en interacciones del usuario.
    • -
    • Integración de equipo - La capa de presentacion y la capa logica son almacenados por separado. Las aplicaciones en PRADO pueden ser armadas por temas (themable).
    • -
    • -Controles webs Potentes - PRADO viene con un conjunto de poderosos componentes que se ocupan de interfaces de usuario Web. Altamente interactivo de páginas web se puede crear con unas pocas líneas de código. Por ejemplo, utilizando el componente DataGrid, se puede crear rápidamente una página que presenta una tabla de datos que permite la paginación, la clasificación, editar y eliminar filas de los datos. -
    • -Fuerte soporte de bases de datos - Desde la versión 3.1, PRADO ha sido equipada con total soporte de bases de datos escrita en forma nativa y, por tanto, encaja con el resto del framework PRADO. De acuerdo a la complejidad de los objetos de negocio, se puede optar por utilizar la PDO simple, basada en el acceso a los datos, o el apmpliamente conocido Active Record, o el mapa completo de los objetos del negocio SqlMap.
    • -
    • -Soporte de AJAX sin fisuras - Uso de AJAX en PRADO nunca ha sido más fácil con su innovador Controles Activos (Active Controls) introducidos desde la versión 3.1. Puede escribir una aplicación AJAX sin escribir una sola línea de código javascript. De hecho, que la utilización de los Controles Activos, no es muy diferente a la utilizacion de componentes no-AJAX.
    • -
    • -Soporte de I18N y L10N - PRADO incluye soporte completo para crear aplicaciones con múltiples idiomas y la localización.
    • -
    • -Compatibilidad (compliance) XHTML - Las páginas Web generadas por PRADO son compatibles con XHTML.
    • -
    • -Albergar trabajos ya existentes - PRADO es un framework genérico, con especial atención a la capa de presentación. No excluye a desarrolladores que hacen uso de la mayoría de las actuales bibliotecas de clase o juegos (kits) de herramientas. Por ejemplo, uno puede usar ADOdb o Creole para tratar con base de datos en su aplicación PRADO. -
    • -Otras características - Potente manipulación de errores /excepciones y registro de mensjes (message logging); cahe genérico y memoria caché de salida selectiva; manejo de errores personalizable y localizable; extensible autentificación y autorización; prevención de medidas de seguridad tales como cross-site script (XSS) , protección de cookies, etc. -
    • -
    - -

    ¿Qué es adecuado para utilizar PRADO

    -

    -PRADO es mejor adecuado para la creación de aplicaciones Web que tienen alta interactividdad con usuarios (user-interactive). Se puede utilizar para desarrollar sistemas tan simple como un blog o para aquellos sistema tan complejo como un sistema de gestión de contenidos (CMS) o una completa solución de comercio electrónico. PRADO promueve la programación orientada a objetos a través de su metodología basada en componente , se ajusta muy bien para el trabajo en equipo y el desarrollo empresarial. -

    -

    -PRADO viene con un conjunto completo de técnicas de caching que ayudan a acelerar las aplicaciones Web PRADO y acomodar el tráfico de alta exigencia. Su arquitectura modular permite a los desarrolladores el uso o icorporar (plug-in) diferentes módulos de caché de memoria para diferentes necesidades. La salida de caché permite elegir selectivamente el caché de las paginas webs generadas. -

    - -

    -¿Cómo se PRADO en comparación con otros Frameworks? -

    -

    -PRADO es a menudo citado como un framework único. Su singularidad radica principalmente en el paradigma de la programacion basada en componentes (component-based) y dirigida a eventos (event-driven) que pretende promover. Aunque este paradigma de programación no es nuevo en programación de aplicaciones de escritorio y no en una nueva web de algunos lenguajes de programación, PRADO es quizás el primer framework PHP que lo lleva a cabo. -

    -

    -La mayoría de frameworks de PHP principalmente se centra en separar la presentación y la lógica y promueve el patrón de diseño MVC (modelo-vista-controlador) . PRADO logra el mismo objetivo, naturalmente, al exigir que la lógica se almacena en las clases y la presentación en las plantillas. PRADO hace mucho más en otros aspectos distintos de MVC. Se llena de mucho espacio en blanco en la programación web en PHP, con su paradigma de programacion basada en componentes, la riqueza de su conjunto de controles Web, sus potente soporte de bases de datos, su flexible manejo de errores y registro de mensajes, y muchos otros. -

    - -

    -¿Es PRADO lo suficientemente estable? -

    -

    -Sí. PRADO inicialmente fue liberado en agosto de 2004. Muchas series de ensayos se han escrito y realizado con frecuencia para asegurar su calidad. Se ha utilizado por miles de desarrolladores y muchas aplicaciones Web se han desarrollado sobre la base de la misma. Bugs y peticiones se gestionan a través del sistema TRAC y tenemos una gran comunidad de usuarios y el equipo de desarrollo para asegurar que todas las preguntas se respondan en forma oportuna. -

    - -

    Historia de PRADO

    -

    -La propia inspiración original de PRADO vino de Apache Tapestry. Durante el diseño y la ejecución, me tome prestadas muchas ideas de Borland Delphi y Microsoft ASP.NET. La primera versión de PRADO salió en junio de 2004 y fue escrita en PHP 4. Impulsado por el concurso de codificación de Zend PHP 5 , re-escrbí PRADO en PHP 5, que resultó ser una sabia decisión, gracias al nuevo modelo de objetos proporcionados por PHP 5. PRADO ganó el gran premio en el concurso Zend, ganando el más alto de votos del público y los jueces del panel. -

    -

    -En agosto de 2004, PRADO comenzó a ser alojado en SourceForge como un proyecto de código abierto. Poco después, el sitio del proyecto xisc.com se anunció para el orden público. Con el fantástico apoyo del equipo de desarrolladores PRADO y usuarios PRADO, PRADO evolucionado a la versión 2,0 a mediados de 2005. En esta versión, Wei Zhuo contribuyó en PRADO con el excelente I18N y L10N apoyo. -

    -

    -En mayo de 2005, se decidió re-escribir por completo el framework PRADO para resolver algunas cuestiones fundamentales que se encuentran en la versión 2.0 y para ponerse al día con algunas geniales características disponibles en Microsoft ASP.NET 2.0. Después de casi un año de arduo trabajo con más de 50.000 líneas de nuevo código, la versión 3.0 fue finalmente puesta a disposición en abril de 2006. -

    -

    -A partir de la versión 3.0, importantes esfuerzos se asignan a asegurar la calidad y la estabilidad de PRADO. Si decimos PRADO v2.x y v1.x son prueba de concepto de trabajo, podemos decir PRADO 3.x ha crecido a un proyecto que es adecuado para un negocio serio el desarrollo de aplicaciones. -

    -
    diff --git a/demos/quickstart/protected/pages/GettingStarted/es/Installation.page b/demos/quickstart/protected/pages/GettingStarted/es/Installation.page deleted file mode 100755 index 973415fa..00000000 --- a/demos/quickstart/protected/pages/GettingStarted/es/Installation.page +++ /dev/null @@ -1,29 +0,0 @@ - -

    Installing PRADO

    -
    -

    -Su usted esta viendo esta pagina desde su explorador Web, usted ha ya realizado la instalación. -

    -

    -Los requerimientos minimos por PRADO, son que el servidor Web soporte PHP version 5. PRADO ha sido probado con el servidor Web Apache en las plataformas Windows y Linux. Existen muchas probabilidades de que tambien pueda correr en otras plataformas con otros servidores Webs siempre y cuando estos soporten PHP 5. -

    -
    - -
    -

    -La instalacion de PRADO, consiste principalmente en descargarlo y descomprimirlo. -

    -
      -
    1. Ingrese en pradosoft.com para obtener la ultima version de PRADO.
    2. -
    3. Descomprima el archivo de la ultima publicacion de PRADO en una carpeta o directorio accesible via Web (Web-accessible). -
    -
    -
    -

    -Su instalacion de PRADO esta lista y usted puede comenzar a probarlo con las aplicaciones de demostraciones incluidas en la pulicacion de prado a travez de la URL http://web-server-address/prado/demos/. Aqui asumimos que PRADO esta descomprimido en la subcarpeta prado que se ecnuentra debajo de DocumentRoot del servidor Web. -

    -

    -Si encuentra algun problema con las aplicaciones demostrativa de PRADO, utilice por favor el script de chequeo de requerimientos que viene con PRADO , accesible desde http://web-server-address/prado/requirements/index.php, para comprobar primeramente si la configuracion de su server cumple con las condiciones requeridas por PRADO. -

    -
    -
    diff --git a/demos/quickstart/protected/pages/GettingStarted/es/Introduction.page b/demos/quickstart/protected/pages/GettingStarted/es/Introduction.page deleted file mode 100755 index 324843ea..00000000 --- a/demos/quickstart/protected/pages/GettingStarted/es/Introduction.page +++ /dev/null @@ -1,60 +0,0 @@ - -

    Bienvenido al Tutorial rápido de PRADO

    -
    -

    Este tutorial rápido se presta a ayudarle rápidamente a empezar a construir tu propia web aplicaciones basadas en PRADO versión 3.x. -

    -

    Si ya es usuario PRADO 3.x y me gustaría saber qué mejoras están disponibles para cada nueva versión, por favor, consulte las nuevas características . De lo contrario, las siguientes secciones son útiles para novatos. -

    - - -

    - -

    -Usted podrá hacer referencia a los siguientes recursos si usted encuentra que este tutorial no cumple con todas sus necesidades. -

    -
    - - -
    diff --git a/demos/quickstart/protected/pages/GettingStarted/fr/AboutPrado.page b/demos/quickstart/protected/pages/GettingStarted/fr/AboutPrado.page deleted file mode 100755 index 25bb0bc7..00000000 --- a/demos/quickstart/protected/pages/GettingStarted/fr/AboutPrado.page +++ /dev/null @@ -1,71 +0,0 @@ - -

    Qu'est-ce que PRADO ?

    -

    -PRADO est un framework de programmation évènementielle basé sur des composants pour développer des applications Web en PHP5. PRADO signifie PHP Rapid Application Development Object-oriented. -

    -

    -Le but principal de PRADO est la réutilisation maximale de code dans la programmation Web. Par réutilisation, cela ne se limite pas à son propre code mais aussi celui d'autres développeurs, de manière la plus aisée possible. Cela est très important car cela évite de réinventer la roue et peut donc réduire de façon significative le temps de développement. L'introduction du concept de composant provient de cela. -

    -

    -Afin de parvenir au but ci-dessus, PRADO stipule un protocole d'écriture et d'utilisation des composants afin de construire des applications Web. Un composant est une brique logicielle qui peut être réutilisée avec quelques modifications. De nouveaux composants peuvent ainsi être construits en utilisant des composants existants. -

    -

    -Afin de faciliter l'intéraction avec les composants, PRADO implémente une programmation évènementielle qui permet la délégation des comportements aux composants. Les actions des utilisateurs comme le click sur un bouton de type submit sont capturées comme des évènements serveurs. Des méthodes ou fonctions peuvent être attachées à ces évènements et lorsque l'évènement se produit, elles sont automatiquement invoquées afin de répondre à ces même évènements. Comparé à la traditionnelle programmation Web où les développeurs doivent utiliser les variables POST ou GET, la programmation évènementielle aide les développeurs à se consacrer à la logique et réduit de façon significative le code répétitif. -

    -

    -Développer une application Web avec PRADO se résume à instancier des composants existants, les configurer en définissant leurs propriétés, leur affecter des fonctions répondants à ces mêmes évènements, et ainsi composer les pages de l'application. Cela est très similaire aux développants à l'aide de RAD, comme Borland Delphi et Microsoft Visual Basic, qui sont utilisés pour développer des applications GUI. -

    - -

    Pourquoi PRADO ?

    -

    -PRADO est le plus souvent cité comme un framework unique. En fait, il est tellement unique qu'il peut changer votre programmation PHP en une tâche amusante. La liste suivante est un rapide résumé des principales fonctionnalités de PRADO, -

    -
      -
    • Réutilisation - Le code provenant du protocole de composant PRADO est réellement réutilisable. Cela bénéficie à l'équipe de développement dans le sens où ils peuvent réutiliser leur travail précédent afin de l'intégrer dans d'autres parties de façon aisée.
    • -
    • Programmation évènementielle - Les actions de l'utilisateur, comme un click sur un bouton de type submit, sont capturées comme évènement serveur afin que le développeur se consacre principalement à la façon de gérer ces interactions.
    • -
    • Intégration des équipes - La logique et la présentation sont séparées. Des thèmes peuvent être appliqués aux applications PRADO.
    • -
    • Contrôles Web puissants - PRADO possède un large éventail de composants afin de gérer les interfaces Web. Des pages Web très interactives peuvent être crées avec peu de lignes de code. Par exemple, le seul composant "datagrid" (ou grille de données) permet de créer rapidement une page présentant un tableau paginé triable qui permet l'édition et la suppression de lignes de données. -
    • Support robuste des base de données - Depuis la version 3.1, PRADO a été doté d'un support complet des base de données qui s'intègre totalement avec les autres parties du framework. Selon la complexité des objets métiers, votre choix pourra porter vers une simple couche d'accès PDA, vers les largements connus "Active Record" ou un mapping complet des objets métiers à travers un schéma SqlMap.
    • -
    • Support de AJAX - Utiliser AJAX dans PRADO n'a jamais été aussi facile qu'avec les innovants "active controls" introduits depuis la version 3.1. Vous pouvez facilement créer une application intégrant de l'AJAX sans écrire une seule ligne de javascript. En fait, l'utilisation des "active controls" n'est pas différente des contrôles Web standards.
    • -
    • Support I18N et L10N - PRADO intègre un support complet afin de contruire des applications dans plusieurs langues et plusieurs locales.
    • - -
    • Rendu XHTML - Les pages Web générées par PRADO sont "XHTML-compliant" et ainsi conformes aux standards W3C.
    • -
    • Intégration de l'existant - PRADO est un framework généric se focalisant sur la couche de présentation. Cela n'empêche en rien les développeurs d'utiliser la plupart des bibliothèques existantes. Par exemple, on peut utiliser AdoDB ou Creole afin de gérer l'accès données dans son application PRADO. -
    • Autres fonctionnalités - Puissante gestion des erreurs et/ou exceptions et enregistrement des messages; Cache générique et sélectif; Gestion des erreurs customisable et localisable; Authentification et authorisation extensible; Mesures de sésurité comme prévention des cross-site script (CSS), protection des cookies, etc...
    • -
    - -

    Pour quelles applications PRADO est-il adapté ?

    -

    -PRADO est le plus adapté pour des applications Web très interactives. Il peut être utilisé pour développer des systèmes simples comme un blog, ou complexes comme un système de gestion de contenu (CMS), ou une solution complète de e-commerce. Puisque PRADO est basé sur une programmation orientée objet à travers sa méthodologie de composants, il convient particulièrement bien pour le travail en équipe et le développement d'entreprise. -

    -

    -PRADO intègre un système de cache complet qui peut aider les applications à tenir des charges de traffic élevées. Son architecture modulaire permet aux développeurs d'utiliser des modules de cache différents pour chaque besoin. Le cache peut s'effectuer sur toute ou partie d'une page Web. -

    - -

    Comment est PRADO comparé à d'autres Frameworks ?

    -

    -PRADO est souvent cité comme un framework unique. Sa particularité est principalement liée à la gestion des composants et à la programmation évènementielle qu'il essaie de promouvoir. Bien que ce paradigme ne soit pas nouveau dans la programmation d'application GUI, PRADO est peut-être le premier framework PHP à l'intégrer. -

    -

    -La plupart des frameworks PHP se focalise principalement sur la séparation des couches de présentation et de la logique en utilisant le design pattern MVC (Model-Vue-Contrôleur). PRADO atteint le même but en imposant que la logique se situe dans des classes et la présentation dans des templates. PRADO fait beaucoup plus sur d'autres aspects que le MVC. Il comble des manque dans la programmation PHP avec son modèle de composants Web riches, son support robuste des bases de données, sa gestion d'erreur flexible et beaucoup d'autre... -

    - -

    PRADO est-il assez stable ?

    -

    -Oui. Le projet PRADO a débuté en août 2004. Beaucoup de tests unitaires ont été écrits et fréquemment éxecutés afin d'assurer sa qualité. Il a été utilisé par des milliers de développeurs et beaucoup d'applications sont basés sur celui-ci. Les bugs et les demandes de fonctionnalités sont gérées à travers le système TRAC, nous avons une grande communauté d'utilisateurs et une équipe de développement afin d'assurer que toutes les questions sont répondues en un temps record. -

    - -

    Histoire de PRADO

    -

    -L'inspiration originale de PRADO vient de Apache Tapestry. Pendant le design et l'implémentation, j'ai emprunté beaucoup d'idées de Borland Delphi et Microsoft ASP.NET. La première version de PRADO a vue le jour en juin 2004 et était écrite en PHP4. Conduit par le concours de codage de Zend, j'ai réécrit PRADO en PHP5, qui est un changement majeur grâce au nouveau modèle objet fourni par PHP5. PRADO a remporté le grand prix du concours grâce aux votes du public ainsi que du jury. -

    -

    -En août 2004, PRADO a commencé à être hébergé sur SourceForge en projet Open Source. Peu après, le site du projet xisc.com a été annoncé au public. Grâce au fantastique support de l'équipe de développement et des utilisateurs de PRADO, PRADO a évolué en version 2.0 mi 2005. Dans cette version, Wei Zhuo a contribué à PRADO avec le support I18N et L10N. -

    -

    -En mai 2005, nous avons décidé de réécrire complètement le framework PRADO afin de résoudre quelques problèmes trouvés dans la version 2.0 et ajouter des fonctionnalités disponibles dans Microsoft ASP.NET 2.0. Après près d'un an de dur labeur et 50.000 lignes de nouveau code, la version 3.0 était finalement disponible en avril 2006. -

    -

    -Au démarrage de la version 3.0, des efforts significatifs ont été fournis afin d'assurer la qualité et la stabilité de PRADO. Si PRADO v2.x et v1.x sont la preuve du concept, nous pouvons affirmer que PRADO v3.x est un projet qui est désormais adapté pour le développement d'applications métiers. -

    -
    diff --git a/demos/quickstart/protected/pages/GettingStarted/fr/CommandLine.page b/demos/quickstart/protected/pages/GettingStarted/fr/CommandLine.page deleted file mode 100755 index d1406928..00000000 --- a/demos/quickstart/protected/pages/GettingStarted/fr/CommandLine.page +++ /dev/null @@ -1,94 +0,0 @@ - -

    Outil en ligne de commande

    -

    Le script optionnel prado-cli.php du répertoire framework est un outil en ligne de commande destiné à éxecuter certaines tâches dans PRADO. -Le script prado-cli.php peut être utilisé pour créer le squelette de projet PRADO, des fichiers tests et accéder à un shell interactif PHP. -

    -

    Pré-requis

    -

    -Afin d'utiliser l'outil en ligne de commande, vous aurez à utiliser une console. De plus, PHP doit être capable d'éxecuter des scripts en ligne de commande. -

    - -

    Utilisation

    -

    -Si vous tapez php chemin/vers/framework/prado-cli.php, vous devez voir les informations suivantes. Alternativement, si vous n'êtes pas sous Windows, vous pouvez essayer de transformer le fichier prado-cli.php en un éxecutable

    - -Command line tools for Prado 3.0.5. -usage: php prado-cli.php action [optional] -example: php prado-cli.php -c mysite - -actions: - -c - Creates a Prado project skeleton for the given . - - -t - Create test fixtures in the given . - - shell [directory] - Runs a PHP interactive interpreter. Initializes the Prado - application in the given [directory]. - - -

    Les <parameter> sont les paramètres requis et [optional] -désignent les paramètres optionnels.

    - -

    Créer un nouveau squelette de projet PRADO

    - -

    Afin de créer un squelettre de projet PRADO, suivez les instructions suivantes :

    -
      -
    1. Placez-vous dans le dossier où vous souhaitez créer le projet.
    2. -
    3. Tapez, php ../prado/framework/prado-cli.php -c helloworld, où - helloworld est le nom du dossier où vous souhaitez créer le squelette.
    4. -
    5. Tapez, php ../prado/framework/prado-cli.php -t helloworld afin de créer les fichiers tests du projet helloworld.
    6. -
    - -

    Shell interactif

    -

    -Le shell interactif vous permet d'évaluer des scripts PHP directement en ligne de commande. -Le script prado-cli.php peut être utilisé pour démarrer le shell et charger un projet PRADO existant. -Par exemple, chargons le projet de démo blog. En supposant que votre console se situe actuellement dans le répertoire prado de la distribution, tapez : -

    -

    - -$: php framework/prado-cli.php shell demos/blog - -Le résultat doit être - -Command line tools for Prado 3.0.5. -** Loaded Prado application in directory "demos\blog\protected". -PHP-Shell - Version 0.3.1 -(c) 2006, Jan Kneschke - ->> use '?' to open the inline help - ->> - -Ensuite, nous allons appeler une instance de l'application du blog PRADO, et de cette instance nous allons créer une instance du module'data'. Notez qu'un point-virgule à la fin de la ligne n'affiche pas la sortie. - - ->> $app = Prado::getApplication(); - ->> $db = $app->getModule('data'); - -Pour finir, nous voulons utiliser le module 'data' pour récupérer le post ayant l'ID=1. Notez que nous n'avons pas mis de point-virgule afin de voir le résultat de la commande. - ->> $db->queryPostByID(1) - -Aucune erreur ne doit se produire et vous devez dorénavant voir : - -PostRecord#1 -( - [ID] => 1 - [AuthorID] => 1 - [AuthorName] => 'Prado User' - [CreateTime] => 1148819691 - [ModifyTime] => 0 - [Title] => 'Welcome to Prado Weblog' - [Content] => 'Congratulations! You have successfully installed Prado Blog -- - a PRADO-driven weblog system. A default administrator account has been created. - Please login with admin/prado and update your password as soon as possible.' - [Status] => 0 - [CommentCount] => 0 -) - -

    -
    diff --git a/demos/quickstart/protected/pages/GettingStarted/fr/HelloWorld.page b/demos/quickstart/protected/pages/GettingStarted/fr/HelloWorld.page deleted file mode 100755 index 1e0f5574..00000000 --- a/demos/quickstart/protected/pages/GettingStarted/fr/HelloWorld.page +++ /dev/null @@ -1,83 +0,0 @@ - -

    Ma première application PRADO

    -
    -

    -Dans cette partie, nous allons vous guider afin de créer votre première application PRADO, la fameuse application "Hello World". -

    -

    -"Hello World" est peut-être l'application PRADO la plus simple et interactive que vous pouvez créer. Cela affiche une page avec un bouton où il est affiché Click Me. Lorsque l'utilisateur clicke sur la bouton, il est affiché Hello World. -

    -

    -Il y a plusieurs approches afin d'arriver au but ci-dessus. On peut envoyer la page au serveur, vérifier le contenu de la variable POST, et générer une nouvelle page avec le texte du bouton modifié. On peut également simplement utiliser du javascript afin de mettre à jour le libellé du bouton après l'évènement onclick. -

    -
    -

    -PRADO privilégie une programmation évènementielle basée sur des composants. Le bouton est représenté par un objet TButton. Celui-ci comprend le libellé du bouton en tant que propriété Text et associe l'évènement "click" avec un évènement serveur OnClick. Afin de répondre à l'action de l'utilisateur sur le click du bouton, il suffit simplement d'attacher une fonction à l'évènement OnClick du bouton. Dans cette fonction, la propriété Text est modifiée en "Hello World". Le diagramme suivant image la séquence ci-dessus : - -

    -

    -Notre application PRADO sera composée de trois fichiers, index.php, Home.page et Home.php, qui sont organisés de la façon suivante : - - -où chaque répertoire est expliqué comme suit. Notez que la structure des répertoire peut être personnalisée. Par example, le dossier protected peut se trouver hors du répertoire Web public. Vous saurez comment faire à la suite de ce tutorial. -

    -
      -
    • assets - dossier de stockage des fichiers publiés privés. Voir la partie "assets" pour plus de détails. Le processus du serveur Web doit avoir les droits d'écriture sur ce répertoire.
    • -
    • protected - répertoire de base de l'application comprenant les données et fichiers privés. Ce répertoire se doit de ne pas être accessible au public.
    • -
    • runtime - répertoire de stockage des fichiers d'éxecution de l'application, comme des données de cache, etc. Le processus du serveur Web doit avoir les droits d'écriture sur ce répertoire.
    • -
    • pages - répertoire de base des pages PRADO.
    • -
    - -
    -Astuce :Vous pouvez également utiliser le script framework/prado-cli.php -en ligne de commande -afin de créer la structure de votre projet PRADO. Par exemple, tapez la commande -php path/to/prado-cli.php -c helloworld dans le dossier où vous souhaitez créer votre projet helloworld. -
    - -

    -Les trois fichiers dont nous avons besoin sont expliqués comme suit. -

    -
      -
    • index.php - script d'entrée de notre application PRADO. Ce fichier est requis par toutes les applications PRADO et il s'agit du seul script accessible par les utilisateurs finaux. Le contenu du fichier index.php consiste principalement aux trois lignes suivantes : - -require_once('path/to/prado.php'); // include du script prado -$application=new TApplication; // création de l'instance de l'application PRADO -$application->run(); // démarrage de l'application - -
    • -
    • Home.page - template de la page par défaut retournée lorsque les utilisateurs ne spécifient pas de façon explicite la page demandée. Un template désigne la présentation des composants. Dans cet exemple, nous utiliserons deux composants,TForm et TButton, qui correspondent respectivement aux tags HTML <form> et <input>. Le fichier template contient le contenu suivant : - - - - <com:TForm> - <com:TButton Text="Click me" OnClick="buttonClicked" /> - </com:TForm> - - - -
    • -
    • Home.php - fichier de classe pour la page Home page. Celui-ci contient principalement la méthode répondant à l'évènement OnClick du bouton. - -class Home extends TPage -{ - public function buttonClicked($sender,$param) - { - // $sender se rapporte au composant bouton - $sender->Text="Hello World!"; - } -} - -
    • -
    -
    -

    -L'application is maintenant prête et est accesible à l'adresse -The application is now ready and can be accessed via: http://Web-server-address/helloworld/index.php, en supposant que helloworld soit directement sous la racine de votre serveur. Essayez de modifier le TButton de la page Home.page en TLinkButton et voyez ce qui se produit. -

    -

    -Le code source complet de cette démonstration peut être téléchargé dans la release de PRADO. Vous pouvez également essayer la démonstration en ligne. -

    -
    - -
    diff --git a/demos/quickstart/protected/pages/GettingStarted/fr/Installation.page b/demos/quickstart/protected/pages/GettingStarted/fr/Installation.page deleted file mode 100755 index 04b31cef..00000000 --- a/demos/quickstart/protected/pages/GettingStarted/fr/Installation.page +++ /dev/null @@ -1,29 +0,0 @@ - -

    Installer PRADO

    -
    -

    -Si vous voyez cette page à partir de votre serveur Web, c'est que l'installation s'est déjà bien déroulée. -

    -

    -La configuration minimum requise par PRADO est que le serveur Web supporte PHP 5. PRADO a été testé avec un serveur Apache sur une platforme Windows et Linux. Il est fort possible qu'il fonctionne avec d'autres platformes avec d'autres types de serveurs Web tant que PHP 5 est supporté. -

    -
    - -
    -

    -L'installation de PRADO se résume principalement au téléchargement et à la décompression des sources. -

    -
      -
    1. Rendez-vous sur pradosoft.com afin de récupérer la dernière version de PRADO.
    2. -
    3. Décompressez le fichier PRADO dans le répertoire du serveur Web. -
    -
    -
    -

    -Votre installation de PRADO est terminée et vous pouvez commencer à utiliser les applications de démonstration incluses dans PRADO avec l'URL http://web-server-address/prado/demos/. Ici nous supposons que PRADO est décompressé dans le sous-répertoire prado sous le répertoire racine du serveur Web. -

    -

    -Si vous rencontrez un problème avec les applications de démonstration, merci d'utiliser le script de vérification des pré-requis de PRADO, accessible à l'adresse http://web-server-address/prado/requirements/index.php, afin de vérifier que votre configuration réponds bien aux exigences de PRADO. -

    -
    -
    diff --git a/demos/quickstart/protected/pages/GettingStarted/fr/Introduction.page b/demos/quickstart/protected/pages/GettingStarted/fr/Introduction.page deleted file mode 100755 index 2a7768ee..00000000 --- a/demos/quickstart/protected/pages/GettingStarted/fr/Introduction.page +++ /dev/null @@ -1,19 +0,0 @@ - -

    Bienvenue sur le tutorial de démarrage rapide de PRADO

    -
    -

    -Ce tutorial est destiné à vous aider rapidement à créer votre propre application Web basée sur PRADO version 3.X. -

    -

    -Vous pouvez vous réferrer aux ressouces suivantes si vous trouvez que ce tutorial ne correspond pas à vos besoins. -

    -
    - - -
    diff --git a/demos/quickstart/protected/pages/GettingStarted/fr/NewFeatures.page b/demos/quickstart/protected/pages/GettingStarted/fr/NewFeatures.page deleted file mode 100755 index 7e0805c4..00000000 --- a/demos/quickstart/protected/pages/GettingStarted/fr/NewFeatures.page +++ /dev/null @@ -1,24 +0,0 @@ - - -

    Nouvelles fonctionnalités

    - -

    -Cette page résume les principale fonctionnalités introduites dans chaque version de PRADO. -

    - -

    Version 3.1.0

    -
      - -
    • Ajout d'un support d'AJAX. Un large panel de contrôles AJAX, appelés "active controls", est introduit. L'utilisation de ces contrôles est très similaires à leur homologue "non-AJAX". Pour plus de détails, voir le détail sur les "active controls".
    • - -
    • Ajout d'un support complet de base de données.
    • -
    • Ajout de nouveaux contrôles, modules et services, incluant TSoapService, TOutputCache, TSessionPageStatePersister, TFeedService, TJsonService, cache des dépendances entre les classes et TXmlTransform. -
    • - -
    • Amélioration de certains contrôles de données avec des "renderers". Le "Renderer" permet la réutilisation des templates qui sont généralement trouvés dans les contrôles comme TRepeater, TDataList et TDataGrid, rendant ainsi la configuration de ces contrôles plus "propre". Pour plus de détails, consultez les tutoriaux mis à jour : TRepeater, TDataList et TDataGrid.
    • - -
    • Ajout du support des fichiers de configurations externes. Amélioration de la syntaxe des templates afin de faciliter la configuration des sous-propriétés.
    • - -
    - -
    diff --git a/demos/quickstart/protected/pages/GettingStarted/fr/Upgrading.page b/demos/quickstart/protected/pages/GettingStarted/fr/Upgrading.page deleted file mode 100755 index 18d3b218..00000000 --- a/demos/quickstart/protected/pages/GettingStarted/fr/Upgrading.page +++ /dev/null @@ -1,63 +0,0 @@ - - -

    Mise à jour à partir des versions v2.x et v1.x

    - -
    -

    -PRADO v3.0 n'est pas rétro-compatible avec les versions précédents de PRADO. -

    -

    -La bonne nouvelle est que les propriétés et que les évènements de la plupart des contrôles restent identiques ainsi que la syntaxe des templates qui reste largement inchangée. Par conséquent, les connaissances des développeurs des anciennes versions restent applicables dans la v3.0. -

    -

    -Nous résumons ci-dessous les changements les plus significatifs de la v3.0 afin d'aider les développeurs à migrer leurs applications v2.x et v1.x plus facilement, si besoin est. -

    -
    - -

    Définition des composants

    -

    -La version 3.0 a complètement changé de besoin de fichiers de spécifications des composants. Il se fonde davantage sur des conventions pour définir les propriétés et les événements des composants . En particulié, une propriété est définit par la présence d'une méthode getter et/ou setter, tandis qu'un évènement est définit par l'existance d'une méthode on... .Les noms des propriétés et évènements dans la v3.0 sont tous les deux case-insensitive. Par conséquence, les développeurs sont désormais obligés de faire attention aux conversions de type lorsque la propriété d'un composant est définie. Par example, le code suivant est utilisé afin de définir la propriété Enabled propriétaire d'un TControl, qui est un type booléen, -

    - -public function setEnabled($value) -{ - $value=TPropertyValue::ensureBoolean($value); - $this->setViewState('Enabled',$value,true); -} - -

    -où la fonction TPropertyValue::ensureBoolean() est utilisée afin de s'assurer que la variable est bien un booléen. Ceci car lorsque la propriété est configurée dans un template, une chaîne de caractère est passée au setter. Dans les versions précédentes, PRADO connaissait le type de chaque propriété des composants grâce aux fichiers de spécifications et se chargeait de la conversion de type pour vous. -

    - -

    Contrôleur de l'application

    -

    -Le contrôleur de l'application implémente désormais une architecture modulaire. Les modules peuvent être ajoutés et configurés dans la configuration de l'application. Chaque module assure une fonction particulière et ils peuvent être coordonnés entre eux par le cycle de vie de l'application. Le concept des modules de la version 2.x a été replacé dans la v3.0 par les répertoires des pages. En conséquence, le format de configuration de l'application de la v3.0 est très différent des versions précédentes. -

    - -

    Pages

    -

    -Les pages dans la version 3.0 sont organisés dans des répertoires qui peuvent être comparés au concept des modules de la v2.x. Les pages sont demandées selon leur structure. Par exemple, une URL index.php?page=Controls.Samples.Sample1 sera utilisée pour servir une page nommée Sample1 se trouvant dans le répertoire [BasePath]/Controls/Samples, où [BasePath] se réfère au répertoire racine des pages. Le nom d'un fichier template d'une page doit avoir comme extension .page, principalement pour différencier les templates des pages des templates des contrôles qui se termineront par l'extension .tpl. -

    - -

    Relation des contrôles

    -

    -La version 3.0 redéfinit les relations entre les contrôles. En particulier, la relation parent-enfant se réfère désormais à la relation entre les contrôles et la présentation. Un nouveau nom de relation est introduit afin d'aider la gestion des identifiants des contrôles. Pour plus de détails, voir la section concernant les contrôles. -

    - -

    Syntaxe des Templates

    -
    -

    -La syntaxe des contrôles dans les templates de la v3.0 est très similaire à celle des versions précédentes avec beaucoup d'améliorations. Un changement important est au sujet des expression dans le databinding. Dans la v3.0, cela est fait de la façon suivante,

    - -<com:MyComponent PropertyName=<%# PHP expression %> .../> - -

    -Les expressions et les tags d'états ont aussi changé. Pour plus de détails, voir la section concernant la définition des templates. -

    -
    -

    Syntaxe des Thèmes

    -

    -Les thèmes dans la v3.0 sont définis comme les contrôles des templates avec quelques restrictions. -

    - -
    diff --git a/demos/quickstart/protected/pages/GettingStarted/fr/directory.gif b/demos/quickstart/protected/pages/GettingStarted/fr/directory.gif deleted file mode 100755 index e6c4f724..00000000 Binary files a/demos/quickstart/protected/pages/GettingStarted/fr/directory.gif and /dev/null differ diff --git a/demos/quickstart/protected/pages/GettingStarted/fr/sequence.gif b/demos/quickstart/protected/pages/GettingStarted/fr/sequence.gif deleted file mode 100755 index 4207a9bb..00000000 Binary files a/demos/quickstart/protected/pages/GettingStarted/fr/sequence.gif and /dev/null differ diff --git a/demos/quickstart/protected/pages/GettingStarted/id/AboutPrado.page b/demos/quickstart/protected/pages/GettingStarted/id/AboutPrado.page deleted file mode 100755 index e2704859..00000000 --- a/demos/quickstart/protected/pages/GettingStarted/id/AboutPrado.page +++ /dev/null @@ -1,70 +0,0 @@ - -

    Apa itu PRADO?

    -

    -PRADO adalah kerangka pemrograman berbasis-komponen dan kendali-event untuk mengembangkan aplikasi Web dalam PHP 5. PRADO singkatan dari PHP Rapid Application Development Object-oriented. -

    -

    -Tujuan utama dari PRADO adalah menghidupkan usabilitas secara maksimum dalam pemrograman Web. Dengan usabilitas, kami artikan tidak hanya menggunakan ulang kode yang dimiliki seseorang, tapi juga menggunakan ulang kode orang lain dalam cara yang mudah. Yang terakhir lebih penting karena menghemat usaha penciptaan roda dan menghemat waktu pengembangan secara dramatis. Pengenalan atas konsep komponen adalah untuk tujuan ini. -

    -

    -Untuk mencapai tujuan di atas, PRADO menetapkan sebuah protokol atas penulisan dan pemakaian komponen untuk membentuk aplikasi Web. Komponen adalah unit software yang mengandung-dirinya sendiri dan dapat dipakai ulang dengan kustomisasi mudah. Komponen baru dapat dibuat dengan komposisi sederhana terhadap komponen-komponen yang sudah ada. -

    -

    -Untuk menjembatani interaksi dengan komponen, PRADO menerapkan paradigma pemrograman kendali-event yang membolehkan delegasi aturan yang bisa diperpanjang ke komponen. Aktivitas pengguna-akhir seperti mengklik pada tombol kirim, ditangkap sebagai event server. Metode atau fungsi dapat disertakan pada event ini agar ketika event terjadi, metode atau fungsi dipanggil secara otomatis untuk merespon event. Dibandingkan dengan pemrograman Web tradisional di mana para pengembang harus berhadapan dengan variabel kasar POST atay GET, pemrograman kendali-event membantu para pengembang lain lebih berfokus pada logika yang diperlukan dan mengurangi secara drastis pengkodean berulang kali. -

    -

    -Ringkasnya, mengembangkan aplikasi Web PRADO sebagian besar menyangkut penurunan tipe komponen yang sudah dibuat sebelumnya, mengkonfigurasinya dengan menyetel propertinya, merespon ke event-nya dengan menulis fungsi pengendali, dan mengaturnya ke dalam halaman untuk aplikasi. Ini sangat mirip dengan kit piranti RAD, seperti Borland Delphi dan Microsoft Visual Basic, yang digunakan untuk mengembangkan aplikasi GUI desktop. -

    - -

    Mengapa PRADO?

    -

    -PRADO banyak dikutip sebagai kerangka kerja yang unik. Kenyataannya, ia begitu unik sehinggi ia dapat mengalihkan pemrograman PHP yang membosankan menjadi tugas yang menyenangkan. Daftar berikut adalah ringkasan pendek dari fitur utama PRADO, -

    -
      -
    • Usabilitas - Kode mengikuti protokol komponen yang dapat digunakan secara berulang-ulang. Ini menguntungkan tim pengembang selama bekerja karena mereka dapat menggunakan kembali pekerjaan mereka sebelumnya serta mengintegrasikan pekerjaan pihak lain dengan mudah.
    • -
    • Pemrograman kendali-event - Aktivitas pengguna-akhir, seperti mengklik pada tombol kirim, dianggap sebagai event server dengan begitu para pengembang lebih terfokus pada menghadapi interaksi pengguna.
    • -
    • Integrasi tim - Penyajian dan logika disimpan secara terpisah. Aplikasi PRADO dapat berganti tema.
    • -
    • Kontrol Web bertenaga - PRADO hadir dengan set komponen bertenaga berkenaan dengan antarmuka pengguna Web. Halaman Web interaktif tinggi dapat dibuat dengan beberapa baris kode. Sebagai contoh, menggunakan komponen datagrid, seseorang bisa dengan cepat membuat sebuah halaman yang menyajikan tabel data yang membolehkan banyak halaman, pengurutan, penyuntingan, dan penghapusan baris data. -
    • Dukungan database kuat - Sejak versi 3.1, PRADO telah dilengkapi dengan dukungan database lengkap yang secara alami ditulis dan selanjutnya cocok dengan kerangka kerja PRADO lainnya. Berdasarkan kompleksitas dari obyek bisnis, seseorang dapat memilih untuk menggunakan akses data berbasis-PDO, atau rekaman aktif yang lebih umum dikenal, atau skema pemetaan obyek bisnis lengkap SqlMap.
    • -
    • Dukungan AJAX - Menggunakan AJAX dalam PRADO jauh lebih mudah dengan kontrol aktif inovatif yang diperkenalkan sejak versi 3.1. Dengan mudah Anda dapat menulis aplikasi AJAX-enabled tanpa menuliskan satu barispun kode javascript. Kenyataannya, menggunakan kontrol aktif tidak jauh berbeda dengan menggunakan kontrol Web reguler non-AJAX.
    • -
    • Dukungan I18N dan L10N - PRADO menyertakan dukungan lengkap untuk membangun aplikasi dengan multipel bahasa dan lokal.
    • -
    • Sesuai XHTML - Halaman Web yang dibuat oleh PRADO sesuai dengan XHTML.
    • -
    • Akomodasi dari pekerjaan yang sudah ada - PRADO adalah kerangka kerja umum dengan fokus pada lapisan penyajian. Ita tidak mengecualikan para pengembang dari pemakaian librari kelas atau kit piranti yang sudah ada. Sebagai contoh, seseorang dapat memakai AdoDB atau Creole untuk berhadapan dengan DB dalam aplikasi PRADO-nya. -
    • Fitur lainnya - Penangangan kesalahan/kekecualian bertenaga serta pencatatan pesan; cache generik dan cache output selektif; penanganan kesalahan yang dapat dikustomisasi serta dilokalisasi; otorisasi dan otentikasi yang yang dapat diperluas; ukuran keamanan serperti pencegahan naskah situs-silang (XSS), proteksi cookie, dll.
    • -
    - -

    Untuk Apa PRADO Paling Cocok?

    -

    -PRADO paling cocok untuk membuat aplikasi Web yang tingkat interaksif-penggunanya cukup tinggi. Ia dapat dipakai untuk mengembangkan sistem sesederhana sistem blog sampai serumit sistem manajemen konten (CMS) atau solusi e-commerce lengkap. Karena PRADO mempromosikan pemrograman terorientasi-obyek melalui metodologi basis-komponennya, ia sangat cocok untuk kerjasama tim dan pengembangan enterprise. -

    -

    -PRADO hadir dengan set lengkap atas teknik cache yang membantu mempercepat aplikasi Web PRADO untuk mengakomodasi kebutuhan lalu lintas tinggi. Arsitektur modularnya membolehkan para pengembang menyertakan modul cache berbeda untuk keperluan yang berbeda pula. Cache output membebaskan seseorang untuk memilih secara selektif bagian halaman Web yang akan di-cache. -

    - -

    Bagaimana PRADO Bila Dibandingkan dengan Kerangka Kerja Lain?

    -

    -PRADO sering dikutip sebagai kerangka kerja unik. Keunikannya terutama berada pada paradigma pemrograman berbasis-komponen dan kendali-event yang dicoba dipromosikan. Meskipun paradigma pemrograman ini bukan hal baru dalam pemrograman aplikasi desktop dan bukan hal baru dalam beberapa bahasa pemrograman Web, Barangkali PRADO adalah kerangka kerja PHP pertama yang menghidupkannya. -

    -

    -Kebanyakan kerangka kerja PHP berfokus pada pemisahan penyajian dan logika serta mempromosikan pola desain MVC (model-view-controller). Pada dasarnya PRADO melakukan tujuan yang sama dengan membutuhkan logika disimpan dalam kelas dan penyajian dalam template. PRADO melakukan lebih banyak aspek tidak hanya MVC. Ia mengisi banyak area kosong dalam pemrograman Web PHP dengan paradigma pemrograman berbasis-komponen, kontrol Web yang kaya, dukungan database yang handal, fitur penanganan kesalahan yang fleksibel serta fitur pencatatan, dan masih banyak lagi. -

    - -

    Apakah PRADO Cukup Stabil?

    -

    -Ya. PRADO awalnya dirilis pada bulan Agustus 2004. Banyak rangkaian pengujian sudah ditulis dan dilaksanakan secara berkala guna memastikan kualitasnya. Sudah dipakai oleh ribuan pengembang dan banyak aplikasi Web dikembangkan berbasis itu. Bugs dan permintaan fitur diatur melalui sistem TRAC dan kami mempunyai komunitas pengguna besar dan tim pengembangan untuk memastikan semua pertanyaan dijawab dalam model berkala. -

    - -

    Sejarah PRADO

    -

    -Inspirasi orisinil PRADO berasal dari Apache Tapestry. Selama desain dan implementasi, Saya meminjam ide dari Borland Delphi dan Microsoft ASP.NET. Versi pertama PRADO keluar dalam bulan Juni 2004 dan ditulis dalam PHP 4. Karena adanya kontes kode Zend PHP 5, Saya menulis ulang PRADO dalam PHP 5, yang membuktikan menjadi perpindahan yang bijaksana, terima kasih pada model obyek baru yang disediakan PHP 5. PRADO memenangkan hadiah utama dalam kontes Zend, memperoleh pilihan tertinggi baik dari umum dan panelis juri. -

    -

    -Dalam bulan Agustus 2004, PRADO mulai ditampung pada SourceForge sebagai proyek sumber terbuka. Segera setelah itu, situs proyek xisc.com diumumkan kepada publik. Dengan dukungan fantastis dari tim pengembang PRADO dan pengguna PRADO, PRADO berkembang ke versi 2.0 di pertengahan 2005. Dalam versi ini, Wei Zhuo berkontribusi ke PRADO dengan dukungan I18N dan L10N yang istimewa. -

    -

    -Dalam bulan Mei 2005, kami memutuskan untuk menulis ulang sepenuhnya kerangka kerja PRADO untuk memecahkan beberapa isu dasar dalam versi 2.0 dan untuk menangkap dengan beberapa fitur bagus dalam Microsoft ASP.NET 2.0. Setelah hampir setahun kerja keras dengan lebih dari 50,000 baris kode baru, versi 3.0 akhirnya tersedia pada bulan April 2006. -

    -

    -Mulai dari versi 3.0, usaha signifikan dialokasikan untuk memastikan kualitas dan stabilitas PRADO. Jika kami katakan PRADO v2.x dan v1.x adalah pekerjaan bukti-konsep, kami dapat mengatakan PRADO 3.x telah berkembang menjadi proyek yang layak untuk pengembangan aplikasi bisnis serius. -

    -
    diff --git a/demos/quickstart/protected/pages/GettingStarted/id/CommandLine.page b/demos/quickstart/protected/pages/GettingStarted/id/CommandLine.page deleted file mode 100755 index 36c29700..00000000 --- a/demos/quickstart/protected/pages/GettingStarted/id/CommandLine.page +++ /dev/null @@ -1,93 +0,0 @@ - -

    Piranti Baris Perintah

    -

    File naskah PHP opsional prado-cli.php dalam direktori framework -menyediakan piranti baris perintah untuk melakukan berbagai hal membosankan dalam Prado. -prado-cli.php dapat dipakai untuk membuat kerangka proyek Prado, membuat perlengkapan pengujian awal, dan akses ke shell PHP interaktif. -

    -

    Persyaratan

    -

    -Untuk menggunakan piranti baris perintah, Anda perlu memakai prompt perintah Anda, konsol perintah atau terminal. Sebagai tambahan, PHP harus dapat menjalankan naskah PHP dari baris perintah. -

    - -

    Usage

    -

    -Jika Anda ketik php path/ke/framework/prado-cli.php, Anda seharusnya melihat informasi berikut. Alternatifnya, jika Anda tidak pada Windows, Anda dapat mencoba untuk mengubah prado-cli.php ke dalam eksecutabel dan menjalankannya seperti sebuah naskah

    - -Command line tools for Prado 3.0.5. -usage: php prado-cli.php action [optional] -example: php prado-cli.php -c mysite - -actions: - -c - Creates a Prado project skeleton for the given . - - -t - Create test fixtures in the given . - - shell [directory] - Runs a PHP interactive interpreter. Initializes the Prado - application in the given [directory]. - - -

    <parameter> adalah parameter diperlukan dan [optional] adalah parameter opsional.

    - -

    Membuat kerangka proyek Prado baru

    - -

    Untuk membuat kerangka proyek Prado, lakukan yang berikut:

    -
      -
    1. Ubah direktori di mana Anda ingin membuat kerangka proyek.
    2. -
    3. Ketik, php ../prado/framework/prado-cli.php -c helloworld, sedangkan - helloworld adalah nama direktori di mana file kerangka proyek ingin Anda buat.
    4. -
    5. Ketik, php ../prado/framework/prado-cli.php -t helloworld untuk membuat perlengkapan pengujian untuk proyek helloworld.
    6. -
    - -

    Shell Interaktif

    -

    -Shell interaktif membolehkan Anda untuk mengevaluasi pernyataan PHP dari baris perintah. -Naskah prado-cli.php dapat dipakai untuk memulai shell dan mengambil proyek Prado yang sudah ada. Sebagai contoh, mari kita ambil proyek demo blog. Anggap bahwa baris perintah Anda ada dalam direktori distribusi prado dan Anda mengetikkannya. -

    -

    - -$: php framework/prado-cli.php shell demos/blog - -Output seharusnya - -Command line tools for Prado 3.0.5. -** Loaded Prado application in directory "demos\blog\protected". -PHP-Shell - Version 0.3.1 -(c) 2006, Jan Kneschke - ->> use '?' to open the inline help - ->> - -Selanjutnya kita akan mendapatkan turunan dari aplikasi blog Prado, dan dari turunan itu kita menginginkan sebuah turunan dari modul 'data'. Catatan bahwa titik koma di akhir baris menindih output. - - ->> $app = Prado::getApplication(); - ->> $db = $app->getModule('data'); - -Terakhir, kita ingin menggunakan modul data untuk meng-query sebuah tulisan dengan ID=1. Catatan bahwa kita membiarkan titik koma untuk menampilkan hasilnya. - ->> $db->queryPostByID(1) - -Di sana seharusnya tidak terjadi kesalahan apapun dan seharusnya Anda melihat yang berikut. - -PostRecord#1 -( - [ID] => 1 - [AuthorID] => 1 - [AuthorName] => 'Prado User' - [CreateTime] => 1148819691 - [ModifyTime] => 0 - [Title] => 'Welcome to Prado Weblog' - [Content] => 'Congratulations! You have successfully installed Prado Blog -- - a PRADO-driven weblog system. A default administrator account has been created. - Please login with admin/prado and update your password as soon as possible.' - [Status] => 0 - [CommentCount] => 0 -) - -

    -
    diff --git a/demos/quickstart/protected/pages/GettingStarted/id/HelloWorld.page b/demos/quickstart/protected/pages/GettingStarted/id/HelloWorld.page deleted file mode 100755 index a24b5969..00000000 --- a/demos/quickstart/protected/pages/GettingStarted/id/HelloWorld.page +++ /dev/null @@ -1,82 +0,0 @@ - -

    Aplikasi PRADO Pertama Saya

    -
    -

    -Dalam seksi ini, kami membimbing Anda melalui pembuatan aplikasi PRADO pertama Anda, aplikasi terkenal "Hello World". -

    -

    -"Hello World" barangkali adalah aplikasi PRADO interaktif paling sederhana yang bisa Anda buat. Ia menampilkan kepada pengguna-akhir sebuah halaman dengan tombol kirim yang judulnya adalah Click Me. Setelah pengguna mengklik tombol, judulnya diubah ke Hello World. -

    -

    -Ada banyak pendekatan yang dapat mencapai tujuan di atas. Seseorang dapat mengirim halaman ke server, menentukan variabel POST, dan membuat halaman baru dengan judul tombol yang dimutakhirkan. Atau seseorang cukup menggunakan JavaScript untuk memutakhirkan judul tombol setelah event klien onclick. -

    -
    -

    -PRADO mempromosikan pemrograman Web berbasis-komponen dan kendali-event. Tombol disajikan oleh obyek TButton. Ia melapisi judul tombol sebagai properti Text dan mengaitkan tindakan klik pengguna dengan event sisi-server OnClick. Untuk merespon klik pengguna pada tombol, seseorang cukup perlu menyertakan fungsi ke event OnClick tombol. Di dalam fungsi, properti tombol Text diubah sebagai "Hello World". Diagram berikut menampilkan urutan di atas, - -

    -

    -Aplikasi PRADO kita terdiri dari tiga file, index.php, Home.page dan Home.php, yang diatur sebagai berikut, - - -di mana setiap direktori dijelaskan sebagai berikut. Catatan, struktur direktori di atas bisa dikustomisasi. Sebagai contoh, seseorang dapat memindahkan direktori protected ke luar direktori Web. Anda akan mengetahui bagaimana melakukan ini setelah Anda melewati tutorial ini. -

    -
      -
    • assets - direktori yang menyimpan file pribadi yang dipublikasikan. Lihat seksi assets untuk lebih jelasnya. Direktori ini harus bisa ditulisi oleh proses server Web.
    • -
    • protected - path basis aplikasi yang menyimpan data aplikasi dan file naskah pribadi. Direktori ini harus dikonfigurasi tidak bisa diakses terhadap pengguna-akhir.
    • -
    • runtime - path penyimpan runtime aplikasi. Direktori ini dipakai oleh PRADO untuk menyimpan informasi runtime aplikasi, seperti kondisi aplikasi, data di-cache, dll. Direktori ini harus bisa ditulisi oleh proses server Web.
    • -
    • pages - path basis yang menyimpan semua halaman PRADO.
    • -
    - -
    -Tip:Anda juga dapat menggunakan framework/prado-cli.php -naskah baris perintah -untuk membuat struktur direktori Prado. Sebagai contoh, ketik perintah -php path/to/prado-cli.php -c helloworld dalam direktori di mana Anda ingin membuat proyek helloworld. -
    - -

    -Ketiga file yang kita pakai dijelaskan sebagai berikut. -

    -
      -
    • index.php - naskah entri dari aplikasi PRADO. File ini dibutuhkan oleh semua aplikasi PRADO dan satu-satunya file naskah yang secara langsung bisa diakses oleh pengguna-akhir. Konten dalam index.php sebagian besar terdiri dari tiga baris berikut, - -require_once('path/to/prado.php'); // sertakan naskah prado -$application=new TApplication; // buat turunan aplikasi PRADO -$application->run(); // jalankan aplikasi - -
    • -
    • Home.page - template untuk setiap halaman standar saat pengguna tidak secara eksplisit menetapkan halaman yang diminta. Sebuah template menetapkan penyajian tata letak komponen. Dalam contoh ini, kita gunakan dua komponen, TForm dan TButton, masing-masing terkait ke tag HTML <form> dan <input>. Template berisi konten berikut, - - - - <com:TForm> - <com:TButton Text="Click me" OnClick="buttonClicked" /> - </com:TForm> - - - -
    • -
    • Home.php - Kelas halaman untuk halaman Home. Ia terutama berisi metode yang terkait dengan event tombol OnClick. - -class Home extends TPage -{ - public function buttonClicked($sender,$param) - { - // $sender refers to the button component - $sender->Text="Hello World!"; - } -} - -
    • -
    -
    -

    -Aplikasi sekarang siap dan dapat diakses melalui: http://Web-server-address/helloworld/index.php, menganggap helloworld adalah direktori di bawah Web DocumentRoot. Coba untuk mengubah TButton dalam Home.page ke TLinkButton dan lihat apa yang terjadi. -

    -

    -Kode sumber lengkap dari demo ini dapat ditemukan pada rilis PRADO. Anda juga dapat mencoba demo online. -

    -
    - -
    diff --git a/demos/quickstart/protected/pages/GettingStarted/id/Installation.page b/demos/quickstart/protected/pages/GettingStarted/id/Installation.page deleted file mode 100755 index 1990335b..00000000 --- a/demos/quickstart/protected/pages/GettingStarted/id/Installation.page +++ /dev/null @@ -1,29 +0,0 @@ - -

    Menginstalasi PRADO

    -
    -

    -Jika Anda sedang melihat halaman ini dari server Web Anda, maka Anda sudah selesai dengan instalasi. -

    -

    -Persyaratan minimum PRADO adalah server Web yang mendukung PHP 5. PRADO sudah diuji dengan server Web Apache pada Windows dan Linux. Sangat dimungkinkan ia juga berjalan pada platform lain dengan server Web lain, selama PHP 5 didukung. -

    -
    - -
    -

    -Instalasi PRADO sebagian besar menyangkut download dan penguraian. -

    -
      -
    1. Pergi ke pradosoft.com untuk mendapatkan PRADO versi terbaru.
    2. -
    3. Uraikan file rilis PRADO ke direktori yang dapat diakses Web. -
    -
    -
    -

    -Instalasi PRADO Anda selesai dan dapat mulai bermain dengan demo aplikasi yang disertakan dalam rilis PRADO via URL http://web-server-address/prado/demos/. Di sini kami menganggap PRADO diurai ke subdirektori prado di bawah DocumentRoot pada server Web. -

    -

    -Jika Anda menemukan masalah dengan demo aplikasi, silahkan gunakan naskah pemeriksa persyaratan, yang dapapt diakses melalui http://web-server-address/prado/requirements/index.php, untuk terlebih dahulu memeriksa apakah konfigurasi server Anda memenuhi kondisi yang dibutuhkan oleh PRADO. -

    -
    -
    diff --git a/demos/quickstart/protected/pages/GettingStarted/id/Introduction.page b/demos/quickstart/protected/pages/GettingStarted/id/Introduction.page deleted file mode 100755 index 3aed6f6e..00000000 --- a/demos/quickstart/protected/pages/GettingStarted/id/Introduction.page +++ /dev/null @@ -1,62 +0,0 @@ - -

    Selamat datang di Tutorial Cepat PRADO

    -
    -

    -Tutorial Cepat ini disediakan untuk membantu Anda secara cepat membangun aplikasi Web Anda sendiri berbasis PRADO versi 3.x. -

    -

    -Jika Anda adalah pengguna yang sudah mengenal PRADO 3.x dan ingin mempelajari peningkatan apa yang tersedia pada versi baru, silahkan periksa halaman fitur baru. Sebaliknya, seksi berikut sangat membantu bagi para pemula. -

    - - -

    -Anda dapat merujuk ke sumber daya berikut jika Anda mendapatkan tutorial ini tidak memenuhi semua kebutuhan Anda. -

    -
    - - -
    diff --git a/demos/quickstart/protected/pages/GettingStarted/id/NewFeatures.page b/demos/quickstart/protected/pages/GettingStarted/id/NewFeatures.page deleted file mode 100755 index 6d3ce4f9..00000000 --- a/demos/quickstart/protected/pages/GettingStarted/id/NewFeatures.page +++ /dev/null @@ -1,41 +0,0 @@ - - -

    Fitur Baru

    - -

    -Halaman ini meringkas fitur-fitur utama baru yang diperkenalkan dalam setiap rilis PRADO. -

    - -

    Version 3.1.1

    -
      -
    • Ditambahkan kontrol baru TTabPanel yang menampilkan tampilan tab.
    • -
    • Ditambahkan kontrol baru TKeyboard yang menampilkan keyboard virtual untuk input teks.
    • -
    • Ditambahkan kontrol baru TCaptcha yang menampilkan CAPTCHA untuk menjaga spammers dari pendaftaran untuk akun online tertentu. Validator TCaptchaValidator terkait juga diimplementasikan.
    • -
    • Ditambahkan kontrol baru TSlider yang menampilkan sebuah slider yang dapat dipakai untuk input numerik.
    • -
    • Ditambahkan kontrol baru TConditional yang menampilkan salah satu dari dua konten secara kondisional.
    • -
    • Ditambahkan dukungan Oracle DB ke Rekaman Aktif
    • -
    • Ditambahkan dukungan TDataGrid untuk membolehkan pengelompokan sel yang berurutan dengan isi yang sama.
    • -
    • Ditambahkan dukungan untuk mengkonfigurasi properti halaman dan aturan otorisasi menggunakan path halaman relatif dalam konfigurasi aplikasi dan halaman. Ditambahkan dukungan untuk membolehkan otorisasi didasarkan pada alamat remote host.
    • -
    • Ditambahkan persister kondisi halaman baru TCachePageStatePersister. Ia membolehkan kondisi halaman untuk disimpan menggunakan modul cache (misalnya TMemCache, TDbCache, dll.) -
    • Ditambahkan dukungan untuk kerangka kerja otentikasi guna mengingat yang sudah masuk.
    • -
    • Ditambahkan dukungan untuk menampilkan item pertanyaan dalam TDropDownList dan TListBox (sesuatu mirip 'Please select:' sebagai item pertama.)
    • -
    • Ditambahkan dukungan untuk pemetaan kolom dalam Rekaman Aktif.
    • -
    - -

    Versi 3.1.0

    -
      -
    • Ditambahkan dukungan AJAX. Seluruh array dari kontrol AJAX-enabled, disebut kontrol aktif, diperkenalkan. Penggunaan dari kontrol aktif ini sangat mirip dengan kontrol non-AJAX lainnya, misalnya masukkan dan gunakan. Untuk lebih jelasnya, lihat tutorial mengenai kontrol aktif.
    • - -
    • Ditambahkan dukungan lengkap database.
    • -
    • Ditambahkan kontrol, modul dan layanan baru, termasuk TSoapService, TOutputCache, TSessionPageStatePersister, TFeedService, TJsonService, cache dependency classes, TXmlTransform. -
    • - -
    • Ditingkatkan beberapa kontrol data dengan penyaji. Penyaji mendhidupkan penggunaan kembali item template yang umumnya ditemukan dalam TRepeater, TDataList dan TDataGrid, dan menjadikan konfigurasi pada kontrol-kontrol ini jauh lebih mudah. Untuk lebih jelasnya mengenai penyaji, lihat tutorial yang dimutakhirkan pada TRepeater, TDataList dan TDataGrid.
    • - -
    • Ditambahkan dukungan untuk membolehkan menyertakan konfigurasi aplikasi eksternal. Sintaks template ditingkatkan untuk menjembatani konfigurasi subproperti.
    • - -
    • Ditambahkan TDbUserManager dan TDbUser untuk menyederhanakan otentikasi dan otorisasi dengan akun pengguna yang disimpan dalam sebuah database.
    • - -
    - -
    diff --git a/demos/quickstart/protected/pages/GettingStarted/id/Upgrading.page b/demos/quickstart/protected/pages/GettingStarted/id/Upgrading.page deleted file mode 100755 index 744256ce..00000000 --- a/demos/quickstart/protected/pages/GettingStarted/id/Upgrading.page +++ /dev/null @@ -1,64 +0,0 @@ - - -

    Meningkatkan dari v2.x dan v1.x

    - -
    -

    -PRADO v3.0 TIDAK kompatibel mundur dengan versi PRADO sebelumnya. -

    -

    -Berita baiknya adalah, properti dan event dari kebanyakan kontrol tetap sama, dan sintaks template kontrol sebagian besar tidak diubah. Oleh karena itu, pengetahuan para pengembang dari versi PRADIO sebelumnya masih berlaku dalam v3.0. -

    -

    -Kami meringkas perubahan paling berarti dalam v3.0 guna membantu para pengembang meningkatkan aplikasi PRADO v2.x dan v1.x lebih mudah, jika diperlukan. -

    -
    - -

    Definisi Komponen

    -

    -Versi 3.0 sepenuhnya telah mengabaikan kebutuhan file spesifikasi komponen. Ia banyak bergantung pada konvensi untuk mendefinisikan properti dan event komponen. Dalam keadaan tertentu, properti didefinisikan oleh keberadaan dari metode pengambil dan/atau metode penyetel, sementara event didefinisikan dengan keberadaan pada-metode. Nama properti dan event dalam v3.0 keduanya sensitif-huruf. Sebagai konsekuensinya, para pengembang diperlukan untuk memelihara perubahan tipe saat properti komponen sedang disetel. Sebagai contoh, kode berikut dipakai untuk mendefinisikan metode penyetel untuk properti yang Dihidupkan dari TControl, yang merupakan tipe boolean, -

    - -public function setEnabled($value) -{ - $value=TPropertyValue::ensureBoolean($value); - $this->setViewState('Enabled',$value,true); -} - -

    -di mana TPropertyValue::ensureBoolean() dipakai untuk memastikan bahwa nilai input adalah boolean. Ini adalah karena ketika properti dikonfigurasi dalam template, nilai string dikirimkan ke penyetel. Dalam versi sebelumnya, PRADO mengetahui tipe properti berdasarkan file spesifikasi komponen dan melakukan konversi tipe bagi Anda. -

    - -

    Pengontrol Aplikasi

    -

    -Pengontrol aplikasi sekarang menerapkan sebuah arsitektur modular. Modul bisa disertakan dan dikonfigurasi dalam spesifikasi aplikasi. Setiap modul menganggap fungsionalitas tertentu, dan dikoordinasikan bersama oleh masa hidup aplikasi. Konsep modul v2.x diganti dalam v3.0 by direktori halaman. Walhasil, format v3.0 spesifikasi aplikasi juga berbeda dari versi sebelumnya. -

    - -

    Halaman

    -

    -Halaman pada v3.0 diatur dalam direktori yang bisa dibandingkan ke konsep modul pada v2.x. Halaman diminta menggunakan path kepadanya. Sebagai contoh, URL index.php?page=Controls.Samples.Sample1 akan dipakai untuk meminta halaman bernama Sample1 yang disimpan di bawah direktori [BasePath]/Controls/Samples, di mana [BasePath] merujuk ke akar path halaman. Nama file dari template halaman harus diakhiri dengan .page, terutama untuk membedakan template halaman dari template kontrol non-halaman yang nama filenya sama harus diakhiri dengan .tpl. -

    - -

    Hubungan Kontrol

    -

    -Versi 3.0 mendefinsikan kembali hubungan diantara kontrol. Dalam keadaan tertentu, hubungan leluhur-anak sekarang merujuk ke hubungan lampiran antara penyajian kontrol. Dan hubungan wadah-penamaan baru diperkenalkan guna membantu lebih baik mengatur ID kontrol. Untuk lebih jelasnya, lihat seksi controls. -

    - -

    Sintaks Template

    -
    -

    -Sintaks template kontrol dalam v3.0 tetap mirip dengan versi sebelumnya, dengan banyak peningkatan. Perubahan utama adalah mengenai ekspresi penyatuan data. Dalam v3.0, ini dikerjakan dengan mengikuti, -

    - -<com:MyComponent PropertyName=<%# PHP expression %> .../> - -

    -Tag ekspresi dan pernyataan juga diubah. Untuk lebih jelasnya, lihat seksi definisi template. -

    -
    -

    Sintaks Tema

    -

    -Tema dalam v3.0 didefinisikan seperti template kontrol dengan beberapa batasan. -

    - -
    diff --git a/demos/quickstart/protected/pages/GettingStarted/id/directory.gif b/demos/quickstart/protected/pages/GettingStarted/id/directory.gif deleted file mode 100755 index e6c4f724..00000000 Binary files a/demos/quickstart/protected/pages/GettingStarted/id/directory.gif and /dev/null differ diff --git a/demos/quickstart/protected/pages/GettingStarted/id/sequence.gif b/demos/quickstart/protected/pages/GettingStarted/id/sequence.gif deleted file mode 100755 index df5e7cef..00000000 Binary files a/demos/quickstart/protected/pages/GettingStarted/id/sequence.gif and /dev/null differ diff --git a/demos/quickstart/protected/pages/GettingStarted/id/sequence.vsd b/demos/quickstart/protected/pages/GettingStarted/id/sequence.vsd deleted file mode 100755 index 4129f1fc..00000000 Binary files a/demos/quickstart/protected/pages/GettingStarted/id/sequence.vsd and /dev/null differ diff --git a/demos/quickstart/protected/pages/GettingStarted/ja/AboutPrado.page b/demos/quickstart/protected/pages/GettingStarted/ja/AboutPrado.page deleted file mode 100755 index 81c1efa0..00000000 --- a/demos/quickstart/protected/pages/GettingStarted/ja/AboutPrado.page +++ /dev/null @@ -1,79 +0,0 @@ - -

    PRADO とは?

    -

    -PRADO はコンポーネントベースかつイベントドリブンなウェブアプリケーションを開発するためのPHP5フレームワークです。「PRADO」の名称は、PHP Rapid Application Development Object-oriented の略です。 -

    - -

    -PRADO の第一の目標は、ウェブプログラミングにおけるコードの再利用性を最大限に高めることです。 -ここでの再利用性は、自分自身で開発したコードを再利用することだけではなく、簡単な方法で他人の開発したコードを再利用することも意味しています。これは、「車輪の発明」という無駄な努力に要する時間を節約し開発工数を劇的に減らすためにはとても重要な項目といえます。PRADOではこの目的を実現するためにコンポーネントという概念を導入しています。 -

    -

    -上記の目的を達するために、PRADO ではウェブアプリケーション構築のためのコンポーネントの作成方法および使用方法を規定しています。コンポーネントとは、自己充足的かつちょっとしたカスタマイズで再利用が可能なソフトウェアユニットです。新しいコンポーネントは既存のコンポーネントを単純に組み合わせるだけで作成する事ができます。 -

    -

    -コンポーネントをインタラクティブに利用できるように、PRADO ではイベントドリブンプログラミングの枠組みを実装しています。ボタンの押下などのユーザーアクションはサーバー側のイベントとして補足されます。メソッドや関数をそれらのイベントに対応付けておくと、イベントに反応するかのように自動的にメソッドや関数が実行されます。POST/GET 変数を取得して処理をする従来のウェブプログラミングと比べて、イベントドリブン型プログラミングは開発者が必要な処理に集中でき、POST/GET の取得などの反復コードも激減する事になります。 -

    -

    -PRADO でのアプリケーション開発は、ページにコンポーネントを配置し、プロパティの設定やイベントに反応するメソッドをコーディングすることが主な作業となります。これはデスクトップ GUI アプリケーションを開発するのに使用する Borland Delphi や Microsoft Visual Basic などの RAD ツールと非常に似た作りとなっています。 -

    - -

    なぜ PRADO を使うのですか?

    -

    -PRADO はユニークなフレームワークとして紹介されています。事実、退屈な PHP プログラミングを楽しいものと変えることができるくらいユニークなフレームワークです。以下のリストは、PRADO に関する主な機能となっています。 -

    -
      -
    • 再利用性 - PRADOコンポーネント規約に則って作成されたコードは再利用性が高いです。開発チームの他の人が開発したコードを再利用することにより、容易にチーム開発での連携を強める事ができます。
    • - -
    • イベントドリブン型プログラミング - サーバーイベントとしてユーザーのアクションを取得する事ができるので、開発者はユーザの操作とアプリケーションとの相互作用に今まで以上に焦点を合わせることができます。。
    • - -
    • チーム統合 - 画面出力部分とロジック部分が別々に保存されるので、デザイナーと開発者の連携が容易になります。
    • -
    • 便利なウェブコントロール - PRADO ではとても便利なウェブコントロールがいくつも用意されており、インタラクティブなウェブページをほんの数行のコードで作成することができます。例えば DataGrid コントロールを使用すると、ページングやソート、編集、行の削除が可能なテーブルを表示するページをすぐに作成することができます。
    • - -
    • バージョン3.1から、PRADOはデータベースアクセス機能をサポートがしています。開発者はビジネスロジックの複雑さに応じて、シンプルな PDO ベースのデータベースアクセス、広く知られているアクティブレコードによるデータベースアクセス、複雑なビジネスオブジェクトとスキーマとのマッピングをサポートした SqlMapによるデータベースアクセスという3つの中から選択する事ができます。はどうでしょう。 -
    • - -
    • AJAX サポート - バージョン3.1から、アクティブコントロールが実装されました。開発者は javascript のコードを一行も書くことなく、AJAXを利用する事ができます。アクティブコントロールの利用は、通常のコントロールの利用方法とまったく変わらずに行う事ができます。
    • -
    • I18N/L10N サポート - PRADO では国際語化ならびにローカライズに対応しています。
    • -
    • XHTML 対応 - PRADO で生成されたウェブページは XHTML に対応しています。
    • -
    • 既存技術の利用が可能 - PRADO はプレゼンテーション層にターゲットを当てたフレームワークです。ほとんどの既存クラスライブラリやツールをそのまま利用する事ができます。例として、AdoDB や Creole なども PRADO アプリケーションで利用する事ができます。
    • -
    • その他の機能 - エラーハンドリングとメッセージのロギング機能、キャッシング機構、エラーハンドリングのカスタム、ローカライズ、拡張可能な認証機能、クロスサイトサイトスクリプティング等のセキュリティに対応、クッキー保護等
    • -
    - -

    PRADO での開発はどの場面が適していますか?

    -

    -PRADO はインタラクティブなウェブアプリケーションを開発するのにとても適しています。コンテンツ管理システム(CMS)や、Eコマースなどの複雑なシステムを比較的容易に開発する事ができます。PRADO はコンポーネントベースのオブジェクト指向プログラミングですので、企業等でのチーム開発で力を発揮します。 -

    -

    -PRADO はアプリケーションの高速化とスケーラビリティを実現するためのキャッシュ機構を実装しています。利用する環境によりキャッシュモジュールを選択し、PRADO アプリケーションで利用する事ができます。出力キャッシュは、レンダリングされたウェブページの一部をキャッシュとして保存しておき、再度レンダリングする際に自動的にキャッシュから取得する機構になっています。 -

    - -

    PRADO は他のフレームワークと比較してどのような点が異なっていますか?

    -

    -PRADO はよくユニークなフレームワークと呼ばれています。コンポーネントベースとイベントドリブンな実装が特にユニークであるとされています。このプログラミング方法はデスクトップアプリケーション開発においては新しくはなく、いくつかのウェブプログラミング言語でも実装されていますが、PHP のフレームワークとしてはおそらく初めて実装されたフレームワークです。 -

    -

    -ほとんどの PHP フレームワークでは、画面表示部分とロジック部分を分離することに着目し、そのためにMVCデザインパターンで開発することを推奨しています。一方PRADOでは、テンプレートの中に画面表示部分を、クラスにロジック部分を記述することで、自然に同様の目標を達成する事ができています。そして、MVCでは実現できなかったコンポーネントベースのプログラミングスタイル、豊富なウェブコントロール、強力なデータベースサポート、柔軟なエラー処理とロギング機能などの色々な機能を実装することができています。 -

    - -

    PRADO は安定していますか?

    -

    -はい。PRADO は2004年8月に初めてリリースされました。品質を確保するために多くのテストプログラムが作成されており、何千人もの開発者が利用しています。このテストプログラムによるテストを重ねて、フレームワークは開発されており、バグや機能追加などは TRAC システムにより管理されています。そして、すべての開発者の疑問にスピーディーに回答できるようにコミュニティも用意してあります。 -

    - -

    PRADO の歴史

    -

    -PRADO のユニークな発想は Apache Tapestry から生まれました。設計と実装には、Borland Delphi と Microsoft ASP.NET から多くのアイディアを借りました。PRADO の最初のバージョンは、2004年6月にできて、PHP4で書かれていましたが、Zend PHP5コンテストに応募するためにPHP5のコードに書き直しました。(PHP5から提供されたオブジェクトモデルはとても助けになりました)そして PRADO は Zend コンテストで観客・審査員の高い評価を得て特賞を勝ち取りました。 -

    -

    -2004年8月にオープンソースプロジェクトとして SourceForge にて提供され始め、そのすぐ後にプロジェクトサイト「xisc.com」が公開されました。PRADO 開発チームと PRADO ユーザーのサポートにより、PRADO は2005年中頃にバージョン2.0へとバージョンアップしました。このバージョンでは Wei Zhuo が I18N/L10N サポートの実装で貢献をしました。 -

    -

    -2005年5月に、バージョン2.0で見つかった問題点を解決し、さらに Microsoft ASP.NET2.0 で利用可能ないくつかの機能を実装するために PRADO フレームワークを完全に書き直す決定をしました。1年近い期間をかけて、新たに50,000行を超える新しいコードを追加し、2006年4月にバージョン3.0をリリースしました。 -

    -

    -バージョン3.0では、PRADO の品質と安定性を確実にするために多くの時間を当てています。 -そして私たちは、PRADO 2.x/1.x においてそのコンセプトの正しさが証明され、PRADO 3.x において重要なビジネスアプリケーションの開発に適したフレームワークにまで成長したと私たちは確信しています。 -

    - -
    diff --git a/demos/quickstart/protected/pages/GettingStarted/ja/CommandLine.page b/demos/quickstart/protected/pages/GettingStarted/ja/CommandLine.page deleted file mode 100755 index 5f5dacb9..00000000 --- a/demos/quickstart/protected/pages/GettingStarted/ja/CommandLine.page +++ /dev/null @@ -1,106 +0,0 @@ - -

    Command Line Tool

    -

    The optional prado-cli.php PHP script file in the framework -directory provides command line tools to perform various tedious takes in Prado. -The prado-cli.php can be used to create Prado project skeletons, create -initial test fixtures, and access to an interactive PHP shell. -

    -

    Requirements

    -

    -To use the command line tool, you need to use your command prompt, command console -or terminal. In addition, PHP must be able to execute PHP scripts from -the command line. -

    - -

    Usage

    -

    -If you type php path/to/framework/prado-cli.php, you should see -the following information. Alternatively, if you are not on Windows, -you may try to change the prado-cli.php into an executable -and execute it as a script

    - -Command line tools for Prado 3.0.5. -usage: php prado-cli.php action [optional] -example: php prado-cli.php -c mysite - -actions: - -c - Creates a Prado project skeleton for the given . - - -t - Create test fixtures in the given . - - shell [directory] - Runs a PHP interactive interpreter. Initializes the Prado - application in the given [directory]. - - -

    The <parameter> are required parameters and [optional] -are optional parameters.

    - -

    Creating a new Prado project skeleton

    - -

    To create a Prado project skeleton, do the following:

    -
      -
    1. Change to the directory where you want to create the project skeleton.
    2. -
    3. Type, php ../prado/framework/prado-cli.php -c helloworld, where - helloworld is the directory name that you want to create the project skeleton files.
    4. -
    5. Type, php ../prado/framework/prado-cli.php -t helloworld to create - the test fixtures for the helloworld project.
    6. -
    - -

    Interactive Shell

    -

    -The interactive shell allows you to evaluate PHP statements from the command line. -The prado-cli.php script can be used to start the shell and load an existing -Prado project. For example, let us load the blog demo project. Assume that your -command line is in the prado distribution directory and you type. -

    -

    - -$: php framework/prado-cli.php shell demos/blog - -The output should be - -Command line tools for Prado 3.0.5. -** Loaded Prado application in directory "demos\blog\protected". -PHP-Shell - Version 0.3.1 -(c) 2006, Jan Kneschke - ->> use '?' to open the inline help - ->> - -Then we will get an instance of the Prado blog application, and from -that instance we want an instance of the 'data' module. Notice that -a semicolon at the end of the line suppresses the output. - - ->> $app = Prado::getApplication(); - ->> $db = $app->getModule('data'); - -Lastly, we want to use the data module to query for a post with ID=1. Notice that -we leave out the semicolon to show the results. - ->> $db->queryPostByID(1) - -There should not be any errors and you should see the following. - -PostRecord#1 -( - [ID] => 1 - [AuthorID] => 1 - [AuthorName] => 'Prado User' - [CreateTime] => 1148819691 - [ModifyTime] => 0 - [Title] => 'Welcome to Prado Weblog' - [Content] => 'Congratulations! You have successfully installed Prado Blog -- - a PRADO-driven weblog system. A default administrator account has been created. - Please login with admin/prado and update your password as soon as possible.' - [Status] => 0 - [CommentCount] => 0 -) - -

    -
    diff --git a/demos/quickstart/protected/pages/GettingStarted/ja/HelloWorld.page b/demos/quickstart/protected/pages/GettingStarted/ja/HelloWorld.page deleted file mode 100755 index bc9cf264..00000000 --- a/demos/quickstart/protected/pages/GettingStarted/ja/HelloWorld.page +++ /dev/null @@ -1,89 +0,0 @@ - -

    初めての PRADO アプリケーション

    -
    -

    -ここでは、初めて PRADO アプリケーションを開発する人のために、定番の "Hello World" アプリケーションを解説します。 -

    -

    -"Hello World" を作る事は、最もシンプルでインタラクティブな PRADO アプリケーションを作る事かもしれません。
    -このアプリケーションは、ページに Click Me と書いてある送信ボタンを配置してあります。
    -ユーザーがボタンをクリックすると、ボタン文字が Hello World に変わるというアプリケーションです。 -

    -

    -このアプリケーションには、複雑なアプリケーションを作る上で重要なアプローチがいくつかあります。
    -ひとつは、ページからサーバーに変数を送信して、その変数を利用して新しいページ(新しいボタン)を生成していることです。
    -またもう一つは、Javascript の onclick を意識することなく利用し、ボタン文字を変更する事ができるということです。 -

    -
    -

    -PRADO ではコンポーネントベース、そしてイベントドリブンのウェブプログラミングを構築する事ができます。
    -ボタンは、TButton オブジェクトを使用します。 -TButton では Text プロパティがボタン文字となり、ユーザーのクリック動作をサーバーサイドの OnClick イベントに対応付けます。
    -Text プロパティを変更する内容を定義したメソッドを OnClick に対応付けるだけで、ボタンクリックのアクションを設定することができます。
    -以下にアプリケーションのシーケンスを示します。 - -

    -

    -このアプリケーションは3つのファイル index.php, Home.page, Home.php から構成されています。 - - -各ディレクトリ名は開発者によって変更する事が可能です。例えば protected ディレクトリはウェブサーバーにより公開されたディレクトリ以外の場所へ移動することができます。このチュートリアルを読む事で、その方法を修得する事ができます。 -

    -
      -
    • assets - このディレクトリにはコンポーネントからファイルが展開されます。詳細は assets に書かれていますのでご覧下さい。このディレクトリはウェブサーバープロセスから書き込み可能である事が必要となります。
    • -
    • protected - アプリケーションデータと開発したコードが保存されるディレクトリです。このディレクトリは閲覧者からのアクセスを禁止されているべきディレクトリです。
    • -
    • runtime - アプリケーション状態などのアプリケーション情報がキャッシュとして保存されるディレクトリです。このディレクトリはウェブサーバープロセスからの書き込みが可能でなければなりません。
    • -
    • pages - PRADO ページを保存するディレクトリです。
    • -
    - -
    -Tip:PRADO プロジェクトディレクトリを作成するのに framework/prado-cli.phpコマンドラインスクリプト)を使用することができます。
    -例えば、helloworld プロジェクトを作りたいディレクトリへ移動し、php path/to/prado-cli.php -c helloworld とコマンド入力する事で、helloworld プロジェクトディレクトリを作成する事ができます。 -
    - -

    -アプリケーションの実行に必要な3つのファイルの内容は以下のとおりです。 -

    -
      -
    • index.php - PRADO アプリケーションのエントリースクリプトです。このファイルは、PRADO アプリケーションでは必ず必要なファイルであり、唯一エンドユーザーが直接アクセスできるスクリプトファイルです。index.php の内容は主に以下の3つの項目からなっています。 - -require_once('path/to/prado.php'); // PRADO スクリプトの読み込み -$application=new TApplication; // PRADO アプリケーションインスタンスの作成 -$application->run(); // アプリケーション実行 - -
    • -
    • Home.page - エンドユーザーが明示的にページを指定しない場合にこのページテンプレートが呼び出されます。テンプレートファイルでは、コンポーネントのレイアウトを定義します。この例では、TFormTButton を使用しており、それぞれ<form> <input> のHTMLタグに対応しています。 - - - - <com:TForm> - <com:TButton Text="Click me" OnClick="buttonClicked" /> - </com:TForm> - - - -
    • -
    • Home.php - Home テンプレートファイルのクラス定義ファイルです。ここではボタンの OnClick イベント内容の定義を行っています。 - -class Home extends TPage -{ - public function buttonClicked($sender,$param) - { - // $sender refers to the button component - $sender->Text="Hello World!"; - } -} - -
    • -
    -
    -

    -アプリケーションファイルの準備ができたら、次のURLからアクセスすることができます。 http://Web-server-address/helloworld/index.php
    -この例ではドキュメントルート配下に helloworld というディレクトリを配置しています。Home.page テンプレートファイル内の TButtonTLinkButton へ変更してみてどのようになるかも試してみてください。 -

    -

    -PRADO リリースアーカイブファイルにこのデモのソースを格納しています。また、オンラインデモにて動作を確認する事ができます。 -

    -
    - -
    diff --git a/demos/quickstart/protected/pages/GettingStarted/ja/Installation.page b/demos/quickstart/protected/pages/GettingStarted/ja/Installation.page deleted file mode 100755 index b0c35205..00000000 --- a/demos/quickstart/protected/pages/GettingStarted/ja/Installation.page +++ /dev/null @@ -1,33 +0,0 @@ - -

    PRADO のインストール

    -
    -

    -ご自分で管理されているサーバーをお持ちであれば、すぐにインストールすることが可能です。 -

    -

    -PRADO の最小構成は、サーバーがPHP5をサポートしていることです。
    -PRADO は Windows と Linux 両環境の Apache サーバーでテストされています。
    -PHP5 がサポートされているのであれば、他の環境でも動作させることができるかもしれません。 -

    -
    - -
    -

    -PRADO のインストールは、PRADO をダウンロードし解凍することが主な作業となります。 -

    -
      -
    1. PRADO公式ページからPRADOの最新版をダウンロードします。
    2. -
    3. ウェブアクセス可能なディレクトリに展開します。
    4. -
    -
    -
    -

    -上記の作業のみでPRADOのインストールが完了します。
    -http://web-server-address/prado/demos/ 以下にPRADOデモアプリケーションが展開されますので、PRADOを利用したアプリケーションの動作を体験する事ができます。
    -デモアプリケーションの動作が確認できていれば、DocumentRoot 配下に prado サブディレクトリが展開されたことになりますので、インストールは正常に完了しております。 -

    -

    -もしデモアプリケーションが動作しない等の問題が発生しましたら、サーバー構成がPRADO必要条件を満たしているかどうかを確認する事ができるスクリプト http://web-server-address/prado/requirements/index.php が用意されていますので、確認してください。 -

    -
    -
    diff --git a/demos/quickstart/protected/pages/GettingStarted/ja/Introduction.page b/demos/quickstart/protected/pages/GettingStarted/ja/Introduction.page deleted file mode 100755 index 832b5916..00000000 --- a/demos/quickstart/protected/pages/GettingStarted/ja/Introduction.page +++ /dev/null @@ -1,62 +0,0 @@ - -

    ようこそ PRADO クイックスタートチュートリアルへ

    -
    -

    -このチュートリアルはPRADO3.xを使ったアプリケーションをスピーディーに構築するためのものです。 -

    -

    -既にPRADO3.xを使用しており新しいバージョンで強化された機能を知りたい方は、まずは新機能ページをご覧ください。PRADOを使用したことのない方にはこのチュートリアルはとても役立つものですので、ぜひご覧下さい。 -

    - - -

    -もしこのチュートリアルの内容では不十分と感じたら、以下リンクの各種資料もご覧ください。 -

    -
    - - -
    diff --git a/demos/quickstart/protected/pages/GettingStarted/ja/NewFeatures.page b/demos/quickstart/protected/pages/GettingStarted/ja/NewFeatures.page deleted file mode 100755 index f2fdc618..00000000 --- a/demos/quickstart/protected/pages/GettingStarted/ja/NewFeatures.page +++ /dev/null @@ -1,35 +0,0 @@ - - -

    新機能

    - -

    -このページは、以下バージョンの PRADO に含まれる新機能の概要を紹介するページです。 -

    - -

    バージョン 3.1.0

    -
      - -
    • AJAXサポート
      -全てのコントロールにて Ajaxが有効になりました。(アクティブコントロール - active controls)
      -アクティブコントロールは、通常のコントロールととても似た作りになっています。
      -使用方法の詳細はチュートリアル アクティブコントロール をご覧下さい。
    • - -
    • データベース連携サポートの完成
    • -
    • 新しいコントロール/モジュール/サービスを追加
      -TSoapService, TOutputCache, TSessionPageStatePersister, TFeedService, TJsonService, cache dependency classes, TXmlTransform. -
    • - -
    • データコントロールの描画エンジンを改善
      -データコントロールにて、アイテムテンプレートを再利用して描画するよう改善しました。
      -TRepeater, TDataList, TDataGrid などのコントロールでの構成がクリアなコードになりました。
      -チュートリアルが更新されているので、詳細はチュートリアル TRepeater, TDataList, TDataGrid をご覧下さい。
    • - -
    • アプリケーション構造ファイルにて外部ファイル設定をサポート
      -アプリケーション構造を外部ファイルにも定義できるようになり、テンプレートでの定義など柔軟なアプリケーション定義ができるようになりました
    • - -
    • TDbUserManager / TDbUser によるシンプルなユーザー認証
      -認証処理時のユーザーアカウントをデータベースに簡単に保存できるようになりました。
    • - -
    - -
    diff --git a/demos/quickstart/protected/pages/GettingStarted/ja/Upgrading.page b/demos/quickstart/protected/pages/GettingStarted/ja/Upgrading.page deleted file mode 100755 index 9ad1f003..00000000 --- a/demos/quickstart/protected/pages/GettingStarted/ja/Upgrading.page +++ /dev/null @@ -1,64 +0,0 @@ - - -

    Upgrading from v2.x and v1.x

    - -
    -

    -PRADO v3.0 is NOT backward compatible with earlier versions of PRADO. -

    -

    -A good news is, properties and events of most controls remain intact, and the syntax of control templates remains largely unchanged. Therefore, developers' knowledge of earlier versions of PRADO are still applicable in v3.0. -

    -

    -We summarize in the following the most significant changes in v3.0 to help developers upgrade their v2.x and v1.x PRADO applications more easily, if needed. -

    -
    - -

    Component Definition

    -

    -Version 3.0 has completely discarded the need of component specification files. It relies more on conventions for defining component properties and events. In particular, a property is defined by the existence of a getter method and/or a setter method, while an event is defined by the existence of an on-method. Property and event names in v3.0 are both case-insensitive. As a consequence, developers are now required to take care of type conversions when a component property is being set. For example, the following code is used to define the setter method for the Enabled property of TControl, which is of boolean type, -

    - -public function setEnabled($value) -{ - $value=TPropertyValue::ensureBoolean($value); - $this->setViewState('Enabled',$value,true); -} - -

    -where TPropertyValue::ensureBoolean() is used to ensure that the input value be a boolean. This is because when the property is configured in template, a string value is passed to the setter. In previous versions, PRADO knows the property type based on the component specification files and does the type conversion for you. -

    - -

    Application Controller

    -

    -Application controller now implements a modular architecture. Modules can be plugged in and configured in application specifications. Each module assumes a particular functionality, and they are coordinated together by the application lifecycle. The concept of v2.x modules is replaced in v3.0 by page directories. As a result, the format of v3.0 application specification is also different from earlier versions. -

    - -

    Pages

    -

    -Pages in v3.0 are organized in directories which may be compared to the module concept in v2.x. Pages are requested using the path to them. For example, a URL index.php?page=Controls.Samples.Sample1 would be used to request for a page named Sample1 stored under the [BasePath]/Controls/Samples directory, where [BasePath] refers to the root page path. The file name of a page template must be ended with .page, mainly to differentiate page templates from non-page control templates whose file names must be ended with .tpl. -

    - -

    Control Relationship

    -

    -Version 3.0 redefines the relationships between controls. In particular, the parent-child relationship now refers to the enclosure relationship between controls' presentation. And a new naming-container relationship is introduced to help better manage control IDs. For more details, see the controls section. -

    - -

    Template Syntax

    -
    -

    -The syntax of control templates in v3.0 remains similar to those in earlier versions, with many enhancements. A major change is about the databinding expression. In v3.0, this is done by the following, -

    - -<com:MyComponent PropertyName=<%# PHP expression %> .../> - -

    -Expression and statement tags are also changed similarly. For more details, see the template definition section. -

    -
    -

    Theme Syntax

    -

    -Themes in v3.0 are defined like control templates with a few restrictions. -

    - -
    diff --git a/demos/quickstart/protected/pages/GettingStarted/ja/directory.gif b/demos/quickstart/protected/pages/GettingStarted/ja/directory.gif deleted file mode 100755 index e6c4f724..00000000 Binary files a/demos/quickstart/protected/pages/GettingStarted/ja/directory.gif and /dev/null differ diff --git a/demos/quickstart/protected/pages/GettingStarted/ja/sequence.gif b/demos/quickstart/protected/pages/GettingStarted/ja/sequence.gif deleted file mode 100755 index 4207a9bb..00000000 Binary files a/demos/quickstart/protected/pages/GettingStarted/ja/sequence.gif and /dev/null differ diff --git a/demos/quickstart/protected/pages/GettingStarted/pl/AboutPrado.page b/demos/quickstart/protected/pages/GettingStarted/pl/AboutPrado.page deleted file mode 100755 index 023a9fe1..00000000 --- a/demos/quickstart/protected/pages/GettingStarted/pl/AboutPrado.page +++ /dev/null @@ -1,71 +0,0 @@ - -

    Czym jest PRADO?

    -

    -PRADO jest napisanym w PHP5 frameworkiem dla aplikacji webowych opartym na komponentach oraz programowaniu zdarzeniowym (ang. event-driven programming). -PRADO z angielskiego oznacza PHP Rapid Application Development Object-oriented (przyp. tłum. szybkie tworzenie aplikacji zorientowanych obiektowo w PHP). -

    -

    -Głównym celem PRADO jest zmaksymalizowanie ponownego wykorzystania kodu (ang. reusability w programowaniu webowym. Poprzez ponowne wykorzystanie kodu rozumiemy nie tylko ponowne używanie własnego kodu ale również ponowne używanie w prosty sposób tego kodu przez inne osoby. To drugie jest bardziej ważne, gdyż oszczędza niepotrzebny wysiłek włożony w ponowne odkrywanie koła i może znacznie zmniejszyć czas developmentu. Taka jest właśnie intencja zastosowania koncepcji komponentów. -

    -

    -Aby osiągnąć powyższe cele, PRADO wymaga protokołu pisania i używania komnponentów do konstrukcji aplikacji webowych. Komponent jest jednostką programowania, która jest samowystarczalna i może być użyta ponownie poprzez proste dostosowanie (ang. trivial customization). Nowy komponent może zostać stworzony jako prosta kompozycja istniejących komponentów. -

    -

    -Aby ułatwić interakcję z komponentami, PRADO implementuje paradygmat programowania sterowanego zdarzeniami (ang. event-driven programming paradigm), który umożliwia elastyczne przekierowanie zachowania do komponentu. Czynności użytkownika końcowego, takie jak kliknięcie na przycisk (ang. submit button), są przechwytywane jako zdarzenia serwera. Zarówno metody jak i funkcje mogą być przypisane do tych zdarzeń. W chwili gdy takie zdarzenie występuje są one (metody, funkcje) automatycznie wywoływane w odpowiedzi na zdarzenie. W porównaniu do tradycyjnego programowania, w których developerzy muszą zmagać się z surowymi zmiennymi POST i GET, programowanie zdarzeniowe pomaga developerom lepiej skupić się na niezbędnej logice i poważnie zredukować nispoziomowe powtarzające się kodowanie. -

    -

    -Sumując, tworzenie w PRADO aplikacji sieciowych, polega głównie na tworzeniu instancji różnego typu wbudowanych komponentów, konfigurowania ich, odpowiadania na ich zdarzenia poprzez przypisanie im uchwytów funkcji oraz wkomponowanie ich w stronę aplikacji. Jest to bardzo podobne do narzędzi RAD, takich jak Borland Delphi, czy też Microsoft Visual Basic, które używane są do tworzenia desktopowych aplickacji GUI (ang. develop GUI application). -

    - -

    Dlaczego PRADO?

    -

    -PRADO jest najczęściej postrzegane jako jedyny w swoim rodzaju framework. W rzeczy samej, jest on tak unikatowy, że może zamienić nużące programowanie w PHP w przyjemną zabawę. Poniższa lista jest krótkim podsumowaniem, głównych możliwości (cech) PRADO. -

    -
      -
    • Ponowne wykorzystanie kodu (ang. Reusability) - kod zgodny z protokołem komponentów PRADO jest wysoce wielokrotnie używalny. To przynosi korzyści zespołom developerów w dłuższej prespektywie czasowej, gdyż mogą oni ponownie używać swoje poprzednio wykonane prace oraz łatwo integrować rozwiązania stron trzecich.
    • -
    • Programowanie zdarzeniowe - czynności użytkownika końcowego, takie jak kliknięcie na [submit button], są przechwytywane jako zdarzenia serwera, w ten sposób developerzy lepiej skupiają się na działaniach związanych z interakcją użytkownika.
    • -
    • Grupowa integracja - warstwa prezentacji i logiki są rozdzielone. W aplikacjach PRADO można stosować motywy.
    • -
    • Wszechstronne kotnrolki webowe - PRADO składa się z zestawu wszechstronnych komponentów mających do czynienia z interfejsem użytkownika. Wysoko interaktywne strony internetowe, mogą być stworzone za pomocą kilku linijek kodu. Na przykład, użycie komponentu datagrid (przyp. tłum. z and. data - dane, grid - siatka), może szybko stworzyć stronę prezentującą tabelę z danymi, krórą można posortować, stronicowac, edytować oraz usuwać wiersze danych. -
    • Silne wsparcie dla baz danych - od wersji 3.1, PRADO zostało wyposażone w kompletną obsługę baz danych, własnoręcznie napisaną, dzięki czemu odpowiednio współgrającą z pozostałymi elementami frameworku PRADO. W zależności od złożoności obiektów biznesowych, każdy może wybrać pomiędzy używaniem prostego, bazujacego na PDO dostępie do danych lub powszechnie znanym wzorcem Active Record lub też kompletnym schematem mapowania obiektów biznesowych SqlMap.
    • -
    • Jednolite wsparcie dla AJAXA - Używanie AJAX-a w PRADO nigdy nie było łatwiejsze. Wraz ze swym innowacymi aktywnymi kontrolkami (ang. active controls) wprowadzonymi w wersji 3.1 możesz łatwo napisać aplikację używającą AJAX-a bez napisania nawet linijki kodu w Java Skrypcie. W rzeczy samej, używanie kontrolek aktywnych, prawie nie różni się w użyciu od zwykłych nieAJAX-owych kontrolek webowych.
    • -
    • Wsparcie dla I18N oraz L10N - PRADO zawiera kompletne wsparcie dla tworzenia aplikacji wielojęzycznych i lokalnych
    • -
    • Zgodność z XHTML - Strony internetowe generowanie przez PRADO są zgodne z XHTML.
    • -
    • Przystosowanie istniejących prac - PRADO jest ogólnym frameworkiem skupiającym się na warstwie prezentacyjnej. Nie pozbawia on developerów możliwości używania istniejących bibliotek klas czy też narzędzi. Na przykład, kazdy może używać AdoDB czy też Creole do obsługi baz danych w aplikacjach PRADO. -ś
    • Pozostałe cechy - Wszechstronna obsługa błędów/wyjątków oraz logowania komunikatów; standardowe keszowanie oraz selektywne kaszowanie danych wyściowych; rozszerzalna oraz lokalizowalna obsługa błędów; elastyczna autentykacja oraz autoryzacja; przedsięwzięcie króków chroniących przed atakami cross-site script (XSS), ochrona plików cookie, itd.
    • -
    - -

    Do czego najlepiej nadaje się PRADO?

    -

    -Stosowanie PRADO jest najbardziej wskazane w aplikacjach internetowych, które są wysoce interaktywne z użytkownikiem. Może być wykorzystywane do tworzenia systemów tak prostych jak internetowe blogi po kompleksowe rozwiązania e-commerce. Ponieważ PRADO wspiera programowanie zorietnowane obiektowo (OOP) poprzez własną metodologię, bazująca na komponentach, pasuje ono ekstremalnie dobrze do pracy grupowej oraz tworzenia aplikacji klasy enterprise (ang. enterprise development). -

    -

    -PRADO przychodzi z kompletnym zestawem technik keszowania, które pomagają przyśpieszyć aplikacje internetowe PRADO, by móc zastosować je do aplikacji o wysokim ruchu. Jego modularna architektura umożliwia developerom używanie oraz podłączanie różnych modułów keszujących w zależności od potrzeb. Keszowanie wyjścia umożliwia każdemu selektywny wybór keszowania części wyświetlanej strony. -

    - -

    Jak PRADO reprezentuje się na tle innych frameworków?

    -

    -PRADO często jest postrzegane jako jedyny w swoim rodzaju framework. Jego unikatowość polega głównie na programowaniu bazującym na komponentach oraz paradygmacie programowania sterowanego zdarzeniami, które stara się promować. Chociaż ten paradygmat nie jest nowością w aplikacjach desktopowych oraz nie jest nowy w kilku językach programowania webowego, PRADO jest prawdopodobnie pierwszym frameworkiem umożliwiającym go. -

    -

    -Większość frameworków PHP skupia się głównie na odseparowaniu warstwy prezentacji i logiki promując wzorzec programowania MVC (przyp. tłum. od pierwszych liter model - model view - widok controler - kontroler). PRADO osiąga te same cele naturalnie poprzez potrzebę prechowywania logiki w klasach a prezetnacji w szablonach (ang. templates). PRADO robi dużo więcej w sprawach innych niż MVC. Wypełnia wiele białych plam w programowaniu webowym w PHP, swoim bazującym na komponentach paradygmacie programowania, jego bogatym zestawem kontrolek webowych, jego wszechstronną obsługą baz danych, jego elastyczną obsługą błędów oraz ich logowania oraz wiele wiele innych. -

    - -

    Czy PRADO jest wystarczająco stabilne?

    -

    -Tak. PRADO zostało pierwszy raz opublikowane w sierpniu 2004 roku. Wiele zestawów testów zostało od tego czasu napisanych oraz często przeprowadzanych by upewnić sie o jakości PRADO. Framework był używany przez tysiące użytkowników oraz developerów a wiele aplikacji internetowych powstało w oparciu o niego. Bugi oraz żądania rozszerzeń są zarządzane poprzez system TRAC, posiadamy także wspaniałą społeczność użytkowników oraz zespół developerów by być pewnym, że żadne pytanie nie pozostanie bez odpowiedzi. -

    - -

    Historia PRADO

    -

    -Pierwotna inspiracja PRADO pochodziła od Apache Taperstry. W trakcie projektowania i implementacji, zapożyczyłem wiele idei z Borland Delphi oraz Microsodt ASP.NET. Pierwsza wersja PRADO ujrzała świat w czerwcu 2004 roku i została napisana w PHP4. Zachęcony konkursem kodowania w PHP5 Zenda, przepisałem PRADO do PHP5, co okazało się mądrym posunięciem, dzięki nowemu modelowi obiektowemu dostarczonemu przez PHP5. PRADO zdobyło główną nagrodę w konkrusie Zenda, uzyskując najwięcej głosów zarówno wsród publiczności jak i wśród sędziów. -

    -

    -W sierpniu 2004, PRADO zaczęło być hostowane przez SourceForge jako projekt open source. Wkrótce, stona projektu xisc.com została zaprezentowana publicznie. Wraz z fantastycznym wparciem zespołu developerów PRADO oraz jego użytkowników, PRADO rozwinęło się do wersji 2.0 w połówie 2005 roku. W tej wersji, Wei Zhuo dołączył do PRADO ze znakomita opbsługą dla I18N oraz L10N. -

    -

    -W maju 2005, zdecydowaliśmy się całkowicie przepisać framewrork PRADO, by rozwiązać kilka kluczowych kwestii z wersji 2.0 oraz by porwać kilka fajnych możliwości dostępncyh w Microsoft ASP.NET. Po około roku ciężkiej pracy z ponad 50.000 liniami nowego kodu, wersja 3.0 została w końcu udostępniona w kwietniu 2006r. -

    -

    -Poczynając od wersji 3.0, znaczny nakład jest kładziony by zapewnić jakość oraz stabilność PRADO. Jeśli powiemy, że PRADO w wersjach 2.x oraz 1.x były dziełem potwierdzającym koncept (ang. proof-of-concept work), możemy powiedzieć, że PRADO 3.X wyrosło na projekt, który jest odpowiedni dla tworzenia plikacji biznesowych. -

    -
    diff --git a/demos/quickstart/protected/pages/GettingStarted/pl/CommandLine.page b/demos/quickstart/protected/pages/GettingStarted/pl/CommandLine.page deleted file mode 100755 index f0edb39a..00000000 --- a/demos/quickstart/protected/pages/GettingStarted/pl/CommandLine.page +++ /dev/null @@ -1,101 +0,0 @@ - -

    Narzędzie linii poleceń

    -

    Opcjonalny plik skryptu PHP prado-cli.php PHP w folderze framework -dostarcza narzędzia linii poleceń do wykonywania różnych monotonnych czynności w PRADO. -Prado-cli.php może zostać użyte do stworzenia szkieletu projektu PRADO, zainicjowania testów oraz uzyskania dostępu do -interaktywnej powłoki PHP. -

    -

    Wymagania

    -

    -Aby używać narzędzia linii poleceń powinieneś użyć terminala, consoli komend lub opcji uruchom. Dodatkowo PHP musi mieć możliwość -wykonywania skryptów PHP z linii poleceń. -

    - -

    Używanie

    -

    -Wpisując php ścieżka/do/katalogu/framework/prado-cli.php, powinieneć zobaczyć następujace informacje. -Alternatywnie, jeśli nie używasz Windowsa możesz spróbować zamienić prado-cli.php na plik wykonywalny -i wywołać go jako skrypt.

    - -Command line tools for Prado 3.0.5. -usage: php prado-cli.php action [optional] -example: php prado-cli.php -c mysite - -actions: - -c - Creates a Prado project skeleton for the given . - - -t - Create test fixtures in the given . - - shell [directory] - Runs a PHP interactive interpreter. Initializes the Prado - application in the given [directory]. - - -

    <parameter> są wymaganymi parametrami a [optional] -są parametrami opcjonalnymi.

    - -

    Tworzenie szkieletu nowego projektu PRADO

    - -

    Aby stworzyć szkielekt projektu Prado, wykonaj następujące czynności:

    -
      -
    1. Przejdź do folderu gdzie chcesz utworzyć szkielet projektu.
    2. -
    3. Wpisz php ../prado/framework/prado-cli.php -c helloworld, gdzie - helloworld jest nazwą katalogu w której chcesz utworzyć pliki należace do szkieletu projektu.
    4. -
    5. Wpisz php ../prado/framework/prado-cli.php -t helloworld aby stworzyć wbudowany test dla projektu helloworld (Witaj Świecie).
    6. -
    - -

    Interaktywna powłoka

    -

    -Interaktywna powłoka umożliwia Ci wykonywanie wyrażeń PHP z linii poleceń. -Skrypt prado-cli.php może zostać użyty do uruchomienia powłoki i załadowania istniejącego projektu Prado. -Dla przykładu załadujmy projekt demo blogu. Zakładając, że twoja linia poleceń jest w katalogu żródłowym prado i wpiszesz... -

    -

    - -$: php framework/prado-cli.php shell demos/blog - -jako rezultat powinieneś ujrzeć - -Command line tools for Prado 3.0.5. -** Loaded Prado application in directory "demos\blog\protected". -PHP-Shell - Version 0.3.1 -(c) 2006, Jan Kneschke - ->> use '?' to open the inline help - ->> - -Następnie pobierzemy instancję aplikacji blogu Prado a następnie z niej instancję modułu - 'data'. Zauważ, że średnik na koncu linii wycisza wyjście. - - ->> $app = Prado::getApplication(); - ->> $db = $app->getModule('data'); - -Na koniec będziemy chcieli użyć wybranego modułu aby zapytać o post o ID=1. Zauważ, że -pomijamy średnik aby zobaczyć rezultat. - ->> $db->queryPostByID(1) - -Nie powinien wystąpić żaden błąd i powinieneś zobaczyć następujący reziltat - -PostRecord#1 -( - [ID] => 1 - [AuthorID] => 1 - [AuthorName] => 'Prado User' - [CreateTime] => 1148819691 - [ModifyTime] => 0 - [Title] => 'Welcome to Prado Weblog' - [Content] => 'Congratulations! You have successfully installed Prado Blog -- - a PRADO-driven weblog system. A default administrator account has been created. - Please login with admin/prado and update your password as soon as possible.' - [Status] => 0 - [CommentCount] => 0 -) - -

    -
    diff --git a/demos/quickstart/protected/pages/GettingStarted/pl/HelloWorld.page b/demos/quickstart/protected/pages/GettingStarted/pl/HelloWorld.page deleted file mode 100755 index c4a23059..00000000 --- a/demos/quickstart/protected/pages/GettingStarted/pl/HelloWorld.page +++ /dev/null @@ -1,82 +0,0 @@ - -

    Moja pierwsza aplikacja w PRADO

    -
    -

    -W tej sekcji, przeprowadzimy Cię przez proces tworzenia Twojej pierwszej aplikcaji w PRADO, słynną aplikację "Witaj świecie" (ang. "Hello World"). -

    -

    -"Witaj świecie" prawdopodobnie jest najprostszą interaktywną aplikacją w PRADO, którą możesz stworzyć. Wyświetla ona użytkownikowu końcowemu stronę z przyciskiem, którego napis to Kliknij mnie (ang. Click Me). Po tym jak użytkownik kliknie na przycisk, jego napis zmienia się na Witaj świecie. -

    -

    -Jest wiele dróg aby osiągnąć ten cel. Można przesłać (ang. submit) stronę do serwera, sprawdzić zmienną POST i wygenerować nową stronę z przyciskiem ze zaktualizowanym napisem. Można też przez proste użycie JavaScript zaktualizować napis podczas zdarzenia OnClick po stronie klienta. -

    -
    -

    -PRADO promuje programowanie sterowane zdarzeniami i bazujące na komponentach. Przycisk jest reprezentowany przez obiekt TButton. Hermetyzuje on napis na przycisku jako właściwość Text przycisku oraz wiąże akcję naciśnięcia przez użytkownika przycisku ze zdarzeniem po stronie serwera OnClick. Aby odpowiedzieć na naciśnięcie przez użytkownika przycisku, należy po prostu przypisać funkcję do zdarzenia OnClick przycisku. Wewnątrz funkcji, właściwość Text przycisku jest zmodyfikowana na "Witaj świecie". Poniższy diagram pokazuje powyższą sekwencję. - -

    -

    -Nasza aplikacja PRADO składa się z trzech plików index.php, Home.page and Home.php, które są zorganizowane w poniższy sposób, - - -gdzie każdy katalog należy rozumieć następująco. Zauważ, że powyższa struktura katalogów jest rozszerzalna. Na przykład, można przenieść katalog protected poza katalog WWW. Będziesz wiedział jak tego dokonać, jeśli przejdziesz przez ten przewodnik. -

    -
      -
    • assets - katalog zawierający upublicznione prywatne pliki. Zobacz sekcję assets by dowiedzieć się więcej. Katalog ten musi być zapisywalny przez proces serwera.
    • -
    • protected - podstawowa ścieżka aplikacji zawierająca dane aplikacji oraz prywatne skrypty plików. Katalog ten powinien być skonfigurowany jako niedostępny dla użytkownika końcowego.
    • -
    • runtime - składująca uruchomieniowa ścieżka aplikacji (ang. application runtime storage path) przechowuje informacje rurchomieniowe aplikacji, takie jak stan aplikacji, keszowane dane, itp. Katalog ten musi być zapisywalny przez proces serwera.
    • -
    • pages - podstawowa ścieżka przechowująca wszystkie strony PRADO.
    • -
    - -
    -Podpowiedż:Możesz również użyć framework/prado-cli.php -narzędzia linii poleceń -aby stworzyć strukturę katalogów dla projektu w PRADO. Na przykład, wpisz komendę -php ścieżka/do/prado-cli.php -c helloworld w katalogu gdzie chcesz stworzyć projekt helloworld (witaj świecie). -
    - -

    -Trzy pliki, krórych potrzebujemy, kolejno oznaczają -

    -
      -
    • index.php - skrypt wejściowy aplikacji PRADO. Ten plik jest wymagany prez wszyskie aplikacje PRADO i jest jedynym skryptem, który jest bezpośrednio dostępny przez użytkownika końcowego. Zawartość index.php przeważnie zawiera następujące trzy linie, - -require_once('path/to/prado.php'); // załącz skrypt PRADO -$application=new TApplication; // utwórz instancję aplikacji PRADO -$application->run(); // uruchom aplikację - -
    • -
    • Home.page - szablon dla domyślnej strony, zwracany gdy użytkownik nie wybierze jawnie żadnej strony. Szablon określa warstwę prezentacji komponentów. W tym przykładzie, używamy dwóch komponentów, TForm oraz TButton, które odpowiadają odpowiednio znacznikom HTML <form> oraz <input>. Szablon posiada następującą treść - - - - <com:TForm> - <com:TButton Text="Kliknij mnie" OnClick="buttonClicked" /> - </com:TForm> - - - -
    • -
    • Home.php - klasa strony dla strony głównej Home. Zawieta przeważnie metody odpowiadające na zdarzeniaOnClick przycisku. - -class Home extends TPage -{ - public function buttonClicked($sender,$param) - { - // $sender wskazuje na komponent przycisku - $sender->Text="Witaj świecie!"; - } -} - -
    • -
    -
    -

    -Aplikacja jest teraz gotowa i jest dostępna poprzez adres http://adres-serwera/helloworld/index.php, zakładając, że helloworld znajduje się bezpośrenio w KataloguGłównymDokumentó serwera (ang. DocumentRoot). Spróbuj zmienić TButton w Home.page na TLinkButton i zobacz co się stanie. -

    -

    -Kompletne źródło kodu dla tego demo można znaleźć w wydaniu PRADO. Możesz również spróbować demo online. -

    -
    - -
    diff --git a/demos/quickstart/protected/pages/GettingStarted/pl/Installation.page b/demos/quickstart/protected/pages/GettingStarted/pl/Installation.page deleted file mode 100755 index f25a4cc2..00000000 --- a/demos/quickstart/protected/pages/GettingStarted/pl/Installation.page +++ /dev/null @@ -1,29 +0,0 @@ - -

    Instalacja PRADO

    -
    -

    -Jeśli widzisz tą stronę z poziomu własnego serwera, zakończyłeś właśnie instalację. -

    -

    -Minimalne wymagania PRADO to serwer internetowy wspierający PHP5. PRADO zostało przetestowane na serwerze Apache na Windowsie oraz Linuxie. Jest wielce prawdopodobne, że może również działać na innych platformach z innymi serwerami internetowymi dopóki wspierają one PHP5. -

    -
    - -
    -

    -Instalacja PRADO składa się głównie z jego pobrania oraz rozpakowania. -

    -
      -
    1. Przejdź do strony pradosoft.com aby pobrać ostatnią wersję PRADO.
    2. -
    3. Rozpakuj plik PRADO zawierający jego ostatnie wydanie do katalogu znajdującego się na serwerze. -
    -
    -
    -

    -Twoja instalacja PRADO jest zakończona i możesz zacząć zabawę z aplikacjami demo zawartymi w PRADO znajdującymi się pod adresem http://adres-serwera/prado/demos/. Tutaj zakładamy, że PRADO jest rozpakowane do katalogu prado w katalogu głównym serwera. -

    -

    -Jeśli spotkasz się z jakimkolwiek problemem w aplikacjach demo, proszę użyj skryptu sprawdzającego wymagania do korzystania z PRADO dostępnego poprzez http://adres-serwera/prado/requirements/index.php, aby najpierw sprawdzić czy Twoja konfiguracja serwera spełnia wszystkie warunki wymagane przez PRADO. -

    -
    -
    diff --git a/demos/quickstart/protected/pages/GettingStarted/pl/Introduction.page b/demos/quickstart/protected/pages/GettingStarted/pl/Introduction.page deleted file mode 100755 index d8bd6381..00000000 --- a/demos/quickstart/protected/pages/GettingStarted/pl/Introduction.page +++ /dev/null @@ -1,23 +0,0 @@ - -

    Witamy w przewodniku SzybkiStart z PRADO

    -
    -

    -Niniejszy przewodnik powstał by pomóc Tobie w szybkim rozpoczęciu budowania Twojej własnej aplikacji internetowej bazującej na PRADO w wersji 3.x -

    -

    -Jeśli jesteś już użytkownikiem PRADO #.x i chciałbyś dowiedzieć się jakie rozszerzenia są dostępne dla każdej nowej wersji, proszę sprawdź nowe właściwości. -Następujące sekcje są pomocne dla początkujących. -

    -

    -Możesz odwoływać się do następujących zasobów jeśli czujesz, że ten przewodnik nie spełnia wszystkich twoich oczekiwań. -

    -
    - - -
    diff --git a/demos/quickstart/protected/pages/GettingStarted/pl/NewFeatures.page b/demos/quickstart/protected/pages/GettingStarted/pl/NewFeatures.page deleted file mode 100755 index c5de2f02..00000000 --- a/demos/quickstart/protected/pages/GettingStarted/pl/NewFeatures.page +++ /dev/null @@ -1,33 +0,0 @@ - - -

    Nowe możliwości

    - -

    -Poniższa strona podsumowuje główne możliwości, które zostały wprowadzone w każnym z wydań PRADO. -

    - -

    Wersja 3.1.1

    -
      -
    • Dodano nową kontrolkę TTabPanel wyświetlającą zawartość widoków w zakładkach.
    • -
    • Dodano nową kontrolkę TKeyboard wyświetlającą wirtualną klawiaturę do wprowadzania tekstu.
    • -
    • Dodano nową kontrolkę TCaptcha wyświetlającą CAPTCHA uniemożliwiającą spamerom logowanie się do kont online. Powiązany Validator TCaptchaValidator został również zaimplementowany.
    • -
    • Dodano nową kontrolkę TSlider wyświetlającą suwak do wprowadzania wartości numerycznych.
    • -
    • Dodano nową kontrolkę TConditional wyświetlającą jedną z dwóch rodzajów zawartości w zależności od spełnionego (bądź nie) warunku.
    • -
    • Dodano wsparcie dla baz Oracle dla Rekordu Aktywnego (Active Record).
    • -
    • Dodano wsparcie dla TDataGrid umożliwiające grupowanie kolejnych komórek z tą samą zawartością.
    • -
    • Dodanow możliwość konfiguracji właściwości strony oraz reguł autoryzacji za pomocą relacyjnych ścieżek strony w aplikacji oraz konfiguracji strony. Dodano możliwość autoryzacji bazującej na zewnętrzym adresie hosta.
    • -
    • Dodano nowy utrzymywacz (ang. persister) stanu strony TCachePageStatePersister umożliwiający przetrzymywanie stanu strony za pomocą modułów cache (np. TMemCache, TDbCache, itd.) -
    • Dodano wsparcie dla frameworku authentykacji umożliwiającą zapamiętanie logowania.
    • -
    • Dodano możliwość wyświetlenia wskazówki w TDropDownList oraz TListBox (coś na wzów 'Proszę wybrać :' jako pierwszą pozycję w liście.)
    • -
    • Dodanow wsparcie dla mapowania kolumn w Rekordzie Aktywnym (Active Record).
    • -
    - -

    wersja 3.1.0

    -
      -
    • Dodano jednolite/spójne wsparcie dla AJAX-a. Wprowadzono cały zestaw kontrolek AJAX-owych, nazywanych kontrolkami aktywnymi (ang. active controls).Uzywanie tych kontrolek jest bardzo podobne do swoich nieAJAX-owych odpowiedników, np. wstaw w kod i korzystaj. Aby uzyskać więcej szczegółów, zobacz przewodnik o aktywnych kotnrolkach.
    • -
    • Dodano kompletną obsługę baz danych.
    • -
    • Dodano nowe kontrolki, moduły i serwisy, w tym TSoapService, TOutputCache, TSessionPageStatePersister, TFeedService, TJsonService, klasy powiązane z cachem (ang. cache dependency classes), TXmlTransform.
    • -
    • Rozszerzono część kontrolek danych o "odtwóców" (ang. renderers). "Odtwórcy" umożliwiają ponowne używanie szablonów pozycji (ang. item templates), które powszechnie można znaleźć w TRepeater, TDataList i TDataGrid, przez co czynią konfigurację tych kontrolek bardziej przejrzystą. Aby uzyskać więcej szczegółów o "odtwórcach" zobacz zaktualizowany przewodnik TRepeater, TDataList oraz TDataGrid.
    • -
    • Dodano usługę umożliwiającą inkludowanie zewnętrznej konfiguracji serwera. Rozszerzono składnię szablonów ułatwiającą konfigurację subwłaściwości (ang. subproperties).
    • -
    -
    diff --git a/demos/quickstart/protected/pages/GettingStarted/pl/Upgrading.page b/demos/quickstart/protected/pages/GettingStarted/pl/Upgrading.page deleted file mode 100755 index deb726bb..00000000 --- a/demos/quickstart/protected/pages/GettingStarted/pl/Upgrading.page +++ /dev/null @@ -1,64 +0,0 @@ - - -

    Aktualizowanie z wersji 2.x i 1.x

    - -
    -

    -PRADO 3.0 nie jest kompatybilne wstecz z wcześniejszymi wersjalmi PRADO. -

    -

    -Dobrą wiadomością jest, że własciwości oraz zdarzenia większości kontrolek pozostają niezmienione a składnia szablonów kontrolek pozostaje w dużej mierze niezmieniona. Dlatego więc, wiedza develoiperów dotycząca wcześniejszych wersji PRADO wciąż znajduje zastosowanie w wersji 3.0. -

    -

    -Kolejno podsumujemu najbardziej znaczące zmiany w wersji 3.0 aby pomóc developerom aktualizację ich aplikacji PRADO z wersji 2.x oraz 1.x jeśli wystąpi taka potrzeba. -

    -
    - -

    Definicja komponentu (Component definition)

    -

    -Wersja 3.0 całkowicie zarzuciła potrzebę występowania pliku specyfikującego komponent. Polega ona obecnie bardziej na konwencji definiowania właściwości komponentu i jego zdarzeń. Uszczegóławiając, właściwość (ang. property) jest definiowana poprzez istnienie metod: getterów i/lub setterów (ang. getter and/or setter methods), natomiast zdarzenie jest zdefiniowane poprzez istnienie metod z przedrostniem on (ang. on-methods). Zarówno właściwości jak i nazwy zdarzeń są w wersji 3.0 nie są wrażliwe na wielkość liter. W konsekwencji developerzy, są teraz zobowiązaniu do troszczenia się konwersję typów, kiedy właściwość komponentu jest ustawiana. Na przykład, następujący kod jest używany do zdefiniowania metody będącej setterem dla właściwości Enabled (przyp. tłum. ang enabled - dostępny, umożliwiony) TControl, która jest typu boolowskiego: boolean, -

    - -public function setEnabled($value) -{ - $value=TPropertyValue::ensureBoolean($value); - $this->setViewState('Enabled',$value,true); -} - -

    -gdzie TPropertyValue::ensureBoolean() jest używana aby ipewnić się, że wartość wejściowa jest typu boolean. Dziejse się tak ponieważ, gdy watość jest konfigurowana w szablonie, wartość łańcuchowa (ang. string value) jest przekazywana do settera. W poprzednich wersjach PRADO znało typ właściwości bazując na pliku specyfikacji i wykonywało konwersję typów za Ciebie. -

    - -

    Kontroler aplickacji (Application Controller)

    -

    -Kontroler aplickacji implementuje teraz architekturę modułową. Moduły mogą być podłączone i skonfigurowane w specyfikacji aplikacji. Każdy moduł obejmuje określoną funkcjonalność a wszystkie one są koordynowane przez cykl życia aplickacji (ang. application lidecycle). Konecpcja modułów w wersji 2.x została zastąpiona w wersji 3.0 przez katalogi stron (ang. page directories). W wyniku tego format specyfikacji aplikacji (ang. application specification) w wersji 3.0 różni się od wersji wcześniejszych. -

    - -

    Strony (Pages)

    -

    -Strony w wersji 3.0 są zorganizowane w katalogach, które mogą zostać porównane do koncepcji modułów w wersji 2.x. Strony są dostępne poprzez ścieżkę do nich. Na przykład, adres URL index.php?page=Kontrolki.Przyklady.Przyklad1 będzie używany do dostępu do strony nazwanej Przyklad1 przechowywanej w katalogu [ŚcieżkaBazowa]/Kontrolki/Przyklad, gdzie [ŚcieżkaBazowa] oznacza główny katalog stron (ang. root page path). Nazwa pliku szablonu strony musi kończyć się rozszerzeniem .page, głównie, aby odróżnić szablony stron od "niestronowych" (ang. non-paged) szablonów kontrolek, których nazwa musi być zakończona rozszerzeniem .tpl. -

    - -

    Zależności między kontrolkami (Control Relationship)

    -

    -Wersja 3.0 redefiniuje zależności pomiędzy kontrolkami. W szczególności, relacja rodzic-dziecko (parent-child relationship teraz odnosi się do relacji zawierajacej się w prezentacji kontrolek. Nowa relacja naming-container (przyp tłum. ang. naming - nazywanie, container - kontener) została wprowadzona dla lepszego zarządzania identyfikatorami ID kontrolek. Aby uzyskać więcej informacji zobacz sekcję kontrolki. -

    - -

    Składnia szablonów (Template Syntax)

    -
    -

    -Składnia szblonów kontrolek w wersji 3.0 została podobna do tej we wcześniejszych wersjach, ale z wieloma rozszerzeniami. Główna zmiana dotyczy wyrażenia wiążącego dane (ang. databind expression), które jest wykonywane następująco -

    - -<com:MojKomponent NazwaWlasciwosci=<%# formuła PHP %> .../> - -

    -Tagi formuł oraz wyrażeń (ang. expression and statement tags) zostały zmienione w podobny sposób. Aby uzyskać więcej szczegółów zobacz sekcję definiowanie szablonów (ang. template definition). -

    -
    -

    Składnia tematów (Theme Syntax)

    -

    -Tematy w wersji 3.0 są definiowane jak szablony kotnrolek z kilkoma obwarowaniami. -

    - -
    diff --git a/demos/quickstart/protected/pages/GettingStarted/pl/directory.gif b/demos/quickstart/protected/pages/GettingStarted/pl/directory.gif deleted file mode 100755 index e6c4f724..00000000 Binary files a/demos/quickstart/protected/pages/GettingStarted/pl/directory.gif and /dev/null differ diff --git a/demos/quickstart/protected/pages/GettingStarted/pl/sequence.gif b/demos/quickstart/protected/pages/GettingStarted/pl/sequence.gif deleted file mode 100755 index 4207a9bb..00000000 Binary files a/demos/quickstart/protected/pages/GettingStarted/pl/sequence.gif and /dev/null differ diff --git a/demos/quickstart/protected/pages/GettingStarted/zh/Introduction.page b/demos/quickstart/protected/pages/GettingStarted/zh/Introduction.page deleted file mode 100755 index ee5db70f..00000000 --- a/demos/quickstart/protected/pages/GettingStarted/zh/Introduction.page +++ /dev/null @@ -1,20 +0,0 @@ - -

    欢迎使用PRADO快速教程

    - -
    -

    -本教程旨在帮助您快速掌握用PRADO v3.x构建Web应用。 -

    -

    -如果您觉得本教程没能满足您的需求,您也可以参考以下资源: -

    -
    - - -
    diff --git a/demos/quickstart/protected/pages/Services/id/SoapService.page b/demos/quickstart/protected/pages/Services/id/SoapService.page deleted file mode 100755 index e7f552c4..00000000 --- a/demos/quickstart/protected/pages/Services/id/SoapService.page +++ /dev/null @@ -1,164 +0,0 @@ - - -

    Layanan SOAP

    - -

    -SOAP membentuk lapisan dasar dari tumpukan layanan Web. Ia menyediakan cara yang rapi agar aplikasi PHP saling berkomunikasi atau dengan aplikasi yang ditulis dalam bahasa lain. PRADO menyediakan TSoapService yang membuat pengembagan aplikasi server SOAP menjadi tugas yang sangat mudah. -

    - -

    -Untuk menggunakan TSoapService, konfigurasi itu dalam spesifikasi aplikasi seperti berikut: -

    - - - - - - - - -

    -Contoh menetapkan penyedia layanan SOAP bernama stockquote yang mengimplementasikan metode SOAP getPrice dalam kelas penyedia StockQuote, -

    - -class StockQuote -{ - /** - * @param string $symbol the symbol of the stock - * @return float the stock price - * @soapmethod - */ - public function getPrice($symbol) - { - ....return stock price for $symbol - } -} - - -
    Catatan: -TSoapService didasarkan pada ekstensi SOAP PHP dan memerlukan ekstensi terinstalasi. -
    - -

    -Dengan kode sederhana di atas, kita sudah menyelesaikan layanan SOAP sederhana yang membolehkan aplikasi lain untuk meng-query harga dari stok tertentu. Sebagai contoh, umumnya klien SOAP bisa ditulis seperti berikut guna mendapatkan harga stok atas IBM, -

    - -$client=new SoapClient('http://path/to/index.php?soap=stockquote.wsdl'); -echo $client->getPrice('IBM'); - - -

    -Perhatikan URL yang digunakan untuk membentuk SoapClient (kelas disediakan oleh ekstensi SOAP PHP). Ini adalah URL untuk WSDL yang menjelaskan protokol komunikasi untuk layanan SOAP yang baru kita implementasikan. WSDL sering kali terlalu rumit untuk ditulis secara manual. Kebetulan, TSoapService bisa membuat ini bagi kita menggunakan generator WSDL. Secara umum, URL untuk membuat WSDL secara otomatis dalam PRADO mempunyai format berikut: -

    - -http://path/to/index.php?SoapServiceID=SoapProviderID.wsdl - - -

    -Agar generator WSDL membuat WSDL untuk layanan SOAP, kelas penyedia perlu untuk mengikuti sintaks tertentu. Dalam keadaan tertentu, untuk metode yang akan diperlihatkan sebagai metode SOAP, kata kunci @soapmethod harus muncul dalam komentar phpdoc terhadap metode dengan baris berikut yang menetapkan parameter metode dan nilai hasil: -

    -
      -
    • parameter: @param parameter-type $parameter-name description
    • -
    • return value: @return value-type description
    • -
    -

    -Parameter yang benar dan tipe hasil termasuk: string, int, boolean, float, array, mixed, dll. Anda dapat juga menetapkan nama kelas sebagai tipe, yang menterjemahkan ke dalam tipe SOAP kompleks. Sebagai contoh, untuk tipe kompleks Contact -

    - - -/** - * Memperluas TComponent untuk menyediakan metode pengambil/penentu properti - */ -class Contact { - /** - * @var string $name - * @soapproperty - */ - public $name; - - /** - * @var Address $address - * @soapproperty - */ - private $_address; - - public function setAddress($value) { - $this->_address=$value; - } - - public function getAddress() { - if($this->_address===null) - $this->_address=new Address; - return $this->_address; - } -} - -class Address{ - /** - * @var string $city - * @soapproperty - */ - public $city; -} - -class ContactManager { - /** - * @return Contact[] an array of contacts - * @soapmethod - */ - function getAllContacts() { - return array(new Contact); - } - - /** - * @return Contact one contact - * @soapmethod - */ - function getContact($name) { - return new Contact; - } -} - -

    Untuk obyek soap kompleks, properti obyek ditetapkan dengan kata kunci @soapproperty dalam phpdocs. Selanjutnya, nama tipe properti harus ditetapkan sebagai @var type $name di mana type adalah tipe apapun yang benar seperti telah disebutkan sebelumnya dan $name akan mendefinisikan properti name (catatan bahwa jika kelas Anda adalah TComponent, Anda bisa menyediakan properti pengambil/penentu). -

    -

    -Sebuah array dari obyek yang kompleks juga bisa dihasilkan dengan menambahkan pasangan yang dilindungi kurung kotak setelah nama tipe. Sebagai contoh, untuk menghasilkan array dari tipe Contact, kita mendefinisikan @return Contact[] .... -

    - -
    Tip: -Piranti sangat berguna untuk menguji layanan web Anda adalah piranti bebas -WebServiceStudio 2.0. Ia bisa memanggil webmethods secara interaktif. Pengguna dapat menyediakan sebuah titik akhir WSDL. Pada saat mengklik tombol Get piranti mengambil WSDL, membuat proxy .NET dari WSDL dan menampilkan daftar metode yang tersedia. Pengguna bisa memilih setiap metode dan menyediakan parameter input yang diplerukan. -Piranti membutuhkan MS .NET runtime terinstalasi. - -

    Piranti semacam itu tersedia untuk Mac OS X Tiger dari -http://www.ditchnet.org/soapclient/ -

    -
    - -

    -TSoapService bisa dikonfigurasi dan dikustomisasi dalam beberapa cara. Dalam contoh di atas, elemen <soap> sebenarnya menetapkan sebuah layanan SOAP menggunakan implementasi standar TSoapServer. Atribut dalam <soap> dikirimkan ke TSoapServer sebagai nilai properti awalnya. Sebagai contoh, atribut provider menginisialisasi properti Provider dari TSoapServer. Dengan menyetel SessionPersistent menjadi true dalam elemen <soap>, turunan penyedia akan sama di dalam sesi pengguna. Anda bisa mengembangkan kelas server SOAP sendiri dan menggunakannya dengan menetapkan atribut class dari <soap>. -

    - -

    Standarnya, server SOAP PHP akan membuat obyek dari tipe StdClass ketika obyek diterima dari klien. Server soap bisa dikonfigurasi untuk secara otomatis membuat obyek dari obyek tipe tertentu diterima sebagai parameter metode. Sebagai contoh, jika kita mempunyai sebuah metode Soap yang menerima obyek Contact sebagai parameter. - -/** - * @param Contact $contact - * @return boolean true if saved, false otherwise - * @soapmethod - */ - function save(Contact $contact) - { - return true - } - -Untuk melakukan ini, kita perlu menyetel properti ClassMaps dari -TSoapServer dalam tag <soap> sebagai nama kelas string dipisahkan koma yang kita inginkan secara otomatis dikonversi. - - - -

    - -
    diff --git a/demos/quickstart/protected/pages/Tutorial/AjaxChat.page b/demos/quickstart/protected/pages/Tutorial/AjaxChat.page index 92118720..40e283dd 100755 --- a/demos/quickstart/protected/pages/Tutorial/AjaxChat.page +++ b/demos/quickstart/protected/pages/Tutorial/AjaxChat.page @@ -22,7 +22,7 @@ that asks the user to enter their nickname and the main application chat page. You can try the application locally or at - Pradosoft.com. + Prado website. The main application chat page is shown bellow. class="figure" />

    diff --git a/demos/quickstart/protected/pages/Tutorial/CurrencyConverter.page b/demos/quickstart/protected/pages/Tutorial/CurrencyConverter.page index 1abd68b9..0beeaaf4 100755 --- a/demos/quickstart/protected/pages/Tutorial/CurrencyConverter.page +++ b/demos/quickstart/protected/pages/Tutorial/CurrencyConverter.page @@ -10,15 +10,15 @@ a dollar amount to an other currency, given the rate of that currency relative to the dollar. The completed application is shown bellow. class="figure" /> - You can try the application locally or at - Pradosoft.com. + You can try the application locally or at the + Prado website. Notice that the application still functions exactly the same if javascript is not available on the user's browser.

    Downloading and Installing Prado

    -

    To install Prado, simply download the latest version of Prado from - http://www.pradosoft.com +

    To install Prado, simply download the latest version of Prado from the + Prado project website and unzip the file to a directory not accessible by your web server (you may unzip it to a directory accessible by the web server if you wish to see the demos and test). For further detailed installation, see the diff --git a/demos/quickstart/protected/pages/Tutorial/fr/AjaxChat.page b/demos/quickstart/protected/pages/Tutorial/fr/AjaxChat.page deleted file mode 100755 index 568e920f..00000000 --- a/demos/quickstart/protected/pages/Tutorial/fr/AjaxChat.page +++ /dev/null @@ -1,755 +0,0 @@ - -

    Building an AJAX Chat Application

    -

    This tutorial introduces the Prado web application framework's - ActiveRecord - and Active Controls to build a Chat - web application. It is assumed that you - are familiar with PHP and you have access to a web server that is able to serve PHP5 scripts. - This basic chat application will utilize the following ideas/components in Prado. -

    -
      -
    • Building a custom User Manager class.
    • -
    • Authenticating and adding a new user to the database.
    • -
    • Using ActiveRecord to interact with the database.
    • -
    • Using Active Controls and callbacks to implement the user interface.
    • -
    • Separating application logic and application flow.
    • -
    - -

    In this tutorial you will build an AJAX Chat web application that allows - multiple users to communicate through their web browser. - The application consists of two pages: a login page - that asks the user to enter their nickname and the main application chat - page. - You can try the application locally or at - Pradosoft.com. - The main application chat page is shown bellow. - class="figure" /> -

    - -

    Download, Install and Create a New Application

    -

    The download and installation steps are similar to those in - the Currency converter tutorial. - To create the application, we run from the command line the following. - See the Command Line Tool - for more details. - -php prado/framework/prado-cli.php -c chat - -

    - -

    The above command creates the necessary directory structure and minimal - files (including "index.php" and "Home.page") to run a Prado web application. - Now you can point your browser's URL to the web server to serve up - the index.php script in the chat directory. - You should see the message "Welcome to Prado!" -

    - -

    Authentication and Authorization

    -

    The first task for this application is to ensure that each user - of the chat application is assigned with a unique (chosen by the user) - username. To achieve this, we can secure the main chat application - page to deny access to anonymous users. First, let us create the Login - page with the following code. We save the Login.php and Login.page - in the chat/protected/pages/ directory (there should be a Home.page - file created by the command line tool). -

    - -<?php -class Login extends TPage -{ -} - - - - - - Prado Chat Demo Login - - -<com:TForm> -

    Prado Chat Demo Login

    -