diff options
Diffstat (limited to 'demos/quickstart/protected/pages')
7 files changed, 396 insertions, 0 deletions
diff --git a/demos/quickstart/protected/pages/GettingStarted/pl/AboutPrado.page b/demos/quickstart/protected/pages/GettingStarted/pl/AboutPrado.page new file mode 100644 index 00000000..017c76d5 --- /dev/null +++ b/demos/quickstart/protected/pages/GettingStarted/pl/AboutPrado.page @@ -0,0 +1,70 @@ +<com:TContent ID="body" >
+<h1 id="201">What is PRADO?</h1>
+<p id="20003" class="block-content">
+PRADO is a component-based and event-driven programming framework for developing Web applications in PHP 5. PRADO stands for <b>P</b>HP <b>R</b>apid <b>A</b>pplication <b>D</b>evelopment <b>O</b>bject-oriented.
+</p>
+<p id="20004" class="block-content">
+A primary goal of PRADO is to enable maximum reusability in Web programming. By reusability, we mean not only reusing one's own code, but also reusing other people's code in an easy way. The latter is more important as it saves the effort of reinventing the wheels and may cut off development time dramatically. The introduction of the concept of component is for this purpose.
+</p>
+<p id="20005" class="block-content">
+To achieve the above goal, PRADO stipulates a protocol of writing and using components to construct Web applications. A component is a software unit that is self-contained and can be reused with trivial customization. New components can be created by simple composition of existing components.
+</p>
+<p id="20006" class="block-content">
+To facilitate interacting with components, PRADO implements an event-driven programming paradigm that allows delegation of extensible behavior to components. End-user activities, such as clicking on a submit button, are captured as server events. Methods or functions may be attached to these events so that when the events happen, they are invoked automatically to respond to the events. Compared with the traditional Web programming in which developers have to deal with the raw POST or GET variables, event-driven programming helps developers better focus on the necessary logic and reduces significantly the low-level repetitive coding.
+</p>
+<p id="20007" class="block-content">
+In summary, developing a PRADO Web application mainly involves instantiating prebuilt component types, configuring them by setting their properties, responding to their events by writing handler functions, and composing them into pages for the application. It is very similar to RAD toolkits, such as Borland Delphi and Microsoft Visual Basic, that are used to develop desktop GUI applications.
+</p>
+
+<h2 id="202">Why PRADO?</h2>
+<p id="20008" class="block-content">
+PRADO is mostly quoted as a unique framework. In fact, it is so unique that it may turn your boring PHP programming into a fun task. The following list is a short summary of the main features of PRADO,
+</p>
+<ul id="prado-features" class="block-content">
+<li>Reusability - Code following the PRADO component protocol are highly reusable. This benefits development teams in the long run as they can reuse their previous work and integrate other parties' work easily.</li>
+<li>Event-driven programming - End-user activities, such as clicking on a submit button, are captured as server events so that developers have better focus on dealing with user interactions.</li>
+<li>Team integration - Presentation and logic are separately stored. PRADO applications are themable.</li>
+<li>Powerful Web controls - PRADO comes with a set of powerful components dealing with Web user interfaces. Highly interactive Web pages can be created with a few lines of code. For example, using the datagrid component, one can quickly create a page presenting a data table which allows paging, sorting, editing, and deleting rows of the data.
+<li>Strong database support - Since version 3.1, PRADO has been equipped with complete database support which is natively written and thus fits seemlessly with the rest part of the PRADO framework. According to the complexity of the business objects, one can choose to use the simple PDO-based data access, or the widely known active record, or the complete business object mapping scheme SqlMap.</li>
+<li>Seamless AJAX support - Using AJAX in PRADO has never been easier with its innovative active controls introduced since version 3.1. You can easily write an AJAX-enabled application without writing a single line of javascript code. In fact, using active controls is not much different from using the regular non-AJAX enabled Web controls.</li>
+<li>I18N and L10N support - PRADO includes complete support for building applications with multiple languages and locales.</li>
+<li>XHTML compliance - Web pages generated by PRADO are XHTML-compliant.</li>
+<li>Accommodation of existing work - PRADO is a generic framework with focus on the presentational layer. It does not exclude developers from using most existing class libraries or toolkits. For example, one can AdoDB or Creole to deal with DB in his PRADO application.
+<li>Other features - Powerful error/exception handling and message logging; generic caching and selective output caching; customizable and localizable error handling; extensible authentication and authorization; security measures such as cross-site script (CSS) prevention, cookie protection, etc.</li>
+</ul>
+
+<h2 id="203">What Is PRADO Best For?</h2>
+<p id="20009" class="block-content">
+PRADO is best suitable for creating Web applications that are highly user-interactive. It can be used to develop systems as simple as a blog system to those as complex as a content management system (CMS) or a complete e-commerce solution. Because PRADO promotes object-oriented programming through its component-based methodology, it fits extremely well for team work and enterprise development.
+</p>
+<p id="20011" class="block-content">
+PRADO comes with a complete set of caching techniques which help accelerate PRADO Web applications to accommodate high traffic requirement. Its modular architecture allows developers to use or plug in different cache modules for different needs. The output caching enables one to selectively choose to cache part of a rendered Web page.
+</p>
+
+<h2 id="204">How Is PRADO Compared with Other Frameworks?</h2>
+<p id="20012" class="block-content">
+PRADO is often quoted as a unique framework. Its uniqueness mainly lies in the component-based and event-driven programming paradigm that it tries to promote. Although this programming paradigm is not new in desktop application programming and not new in a few Web programming languages, PRADO is perhaps the first PHP framework enabling it.
+</p>
+<p id="20013" class="block-content">
+Most PHP frameworks mainly focuses on separating presentation and logic and promotes the MVC (model-view-controller) design pattern. PRADO achieves the same goal naturally by requiring logic be stored in classes and presentation in templates. PRADO does much more on aspects other than MVC. It fills lot of blank area in PHP Web programming with its component-based programming paradigm, its rich set of Web controls, its powerful database support, its flexible error handling and logging feature, and many others.
+</p>
+
+<h2>Is PRADO Stable Enough?</h2>
+<p>
+Yes. PRADO was initially released in August 2004. Many test suites have been written and conducted frequently to ensure its quality. It has been used by thousands of developers and many Web applications have been developed based on it. Bugs and feature requests are managed through TRAC system and we have a great user community and development team to ensure all questions are answered in a timely fashion.
+</p>
+
+<h2 id="205">History of PRADO</h2>
+<p id="20014" class="block-content">
+The very original inspiration of PRADO came from Apache Tapestry. During the design and implementation, I borrowed many ideas from Borland Delphi and Microsoft ASP.NET. The first version of PRADO came out in June 2004 and was written in PHP 4. Driven by the Zend PHP 5 coding contest, I rewrote PRADO in PHP 5, which proved to be a wise move, thanks to the new object model provided by PHP 5. PRADO won the grand prize in the Zend contest, earning the highest votes from both the public and the judges' panel.
+</p>
+<p id="20015" class="block-content">
+In August 2004, PRADO started to be hosted on SourceForge as an open source project. Soon after, the project site <a href="http://www.xisc.com/">xisc.com</a> was announced to public. With the fantastic support of PRADO developer team and PRADO users, PRADO evolved to version 2.0 in mid 2005. In this version, Wei Zhuo contributed to PRADO with the excellent I18N and L10N support.
+</p>
+<p id="20016" class="block-content">
+In May 2005, we decided to completely rewrite the PRADO framework to resolve a few fundamental issues found in version 2.0 and to catch up with some cool features available in Microsoft ASP.NET 2.0. After nearly a year's hard work with over 50,000 lines of new code, version 3.0 was finally made available in April 2006.
+</p>
+<p id="20017" class="block-content">
+Starting from version 3.0, significant efforts are allocated to ensure the quality and stability of PRADO. If we say PRADO v2.x and v1.x are proof-of-concept work, we can say PRADO 3.x has grown up to a project that is suitable for serious business application development.
+</p>
+<div class="last-modified">$Id: AboutPrado.page 1698 2007-02-13 17:30:23Z xue $</div></com:TContent>
\ No newline at end of file diff --git a/demos/quickstart/protected/pages/GettingStarted/pl/CommandLine.page b/demos/quickstart/protected/pages/GettingStarted/pl/CommandLine.page new file mode 100644 index 00000000..281cef10 --- /dev/null +++ b/demos/quickstart/protected/pages/GettingStarted/pl/CommandLine.page @@ -0,0 +1,106 @@ +<com:TContent ID="body" >
+<h1 id="501">Command Line Tool</h1>
+<p id="70046" class="block-content">The optional <tt>prado-cli.php</tt> PHP script file in the <tt>framework</tt>
+directory provides command line tools to perform various tedious takes in Prado.
+The <tt>prado-cli.php</tt> can be used to create Prado project skeletons, create
+initial test fixtures, and access to an interactive PHP shell.
+</p>
+<h2 id="502">Requirements</h2>
+<p id="70047" class="block-content">
+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.
+</p>
+
+<h2 id="503">Usage</h2>
+<p id="70048" class="block-content">
+If you type <tt>php path/to/framework/prado-cli.php</tt>, you should see
+the following information. Alternatively, if you are not on Windows,
+you may try to change the <tt>prado-cli.php</tt> into an executable
+and execute it as a script</p>
+<com:TTextHighlighter Language="cli" CssClass="source block-content" id="code_70006">
+Command line tools for Prado 3.0.5.
+usage: php prado-cli.php action <parameter> [optional]
+example: php prado-cli.php -c mysite
+
+actions:
+ -c <directory>
+ Creates a Prado project skeleton for the given <directory>.
+
+ -t <directory>
+ Create test fixtures in the given <directory>.
+
+ shell [directory]
+ Runs a PHP interactive interpreter. Initializes the Prado
+ application in the given [directory].
+</com:TTextHighlighter>
+
+<p id="70049" class="block-content">The <b><parameter></b> are required parameters and <b>[optional]</b>
+are optional parameters. </p>
+
+<h2 id="504">Creating a new Prado project skeleton</h2>
+
+<p id="70050" class="block-content">To create a Prado project skeleton, do the following:</p>
+<ol>
+ <li>Change to the directory where you want to create the project skeleton.</li>
+ <li>Type, <tt>php ../prado/framework/prado-cli.php -c helloworld</tt>, where
+ <tt>helloworld</tt> is the directory name that you want to create the project skeleton files.</li>
+ <li>Type, <tt>php ../prado/framework/prado-cli.php <b>-t</b> helloworld</tt> to create
+ the test fixtures for the <tt>helloworld</tt> project.</li>
+</ol>
+
+<h2 id="505">Interactive Shell</h2>
+<p id="70051" class="block-content">
+The interactive shell allows you to evaluate PHP statements from the command line.
+The <tt>prado-cli.php</tt> 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 <tt>prado</tt> distribution directory and you type.
+</p>
+<p id="70052" class="block-content">
+<com:TTextHighlighter Language="cli" CssClass="source block-content" id="code_70007">
+$: php framework/prado-cli.php shell demos/blog
+</com:TTextHighlighter>
+The output should be
+<com:TTextHighlighter Language="cli" CssClass="source block-content" id="code_70008">
+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 <jan@kneschke.de>
+
+>> use '?' to open the inline help
+
+>>
+</com:TTextHighlighter>
+Then we will get an instance of the Prado blog application, and from
+that instance we want an instance of the <tt>'data'</tt> module. Notice that
+a <b>semicolon</b> at the end of the line <b>suppresses the output</b>.
+
+<com:TTextHighlighter Language="cli" CssClass="source block-content" id="code_70009">
+>> $app = Prado::getApplication();
+
+>> $db = $app->getModule('data');
+</com:TTextHighlighter>
+Lastly, we want to use the data module to query for a post with <tt>ID=1</tt>. Notice that
+we <b>leave out the semicolon</b> to show the results.
+<com:TTextHighlighter Language="cli" CssClass="source block-content" id="code_70010">
+>> $db->queryPostByID(1)
+</com:TTextHighlighter>
+There should not be any errors and you should see the following.
+<com:TTextHighlighter Language="cli" CssClass="source block-content" id="code_70011">
+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 <b>admin/prado</b> and update your password as soon as possible.'
+ [Status] => 0
+ [CommentCount] => 0
+)
+</com:TTextHighlighter>
+</p>
+<div class="last-modified">$Id: CommandLine.page 1650 2007-01-24 06:55:32Z wei $</div></com:TContent>
diff --git a/demos/quickstart/protected/pages/GettingStarted/pl/HelloWorld.page b/demos/quickstart/protected/pages/GettingStarted/pl/HelloWorld.page new file mode 100644 index 00000000..8ee8a8f1 --- /dev/null +++ b/demos/quickstart/protected/pages/GettingStarted/pl/HelloWorld.page @@ -0,0 +1,83 @@ +<com:TContent ID="body" >
+<h1 id="401">My First PRADO Application</h1>
+<div id="hello1" class="block-content">
+<p id="50034">
+In this section, we guide you through creating your first PRADO application, the famous "Hello World" application.
+</p>
+<p id="50035">
+"Hello World" perhaps is the simplest <i>interactive</i> PRADO application that you can create. It displays to end-users a page with a submit button whose caption is <tt>Click Me</tt>. After the user clicks on the button, its caption is changed to <tt>Hello World</tt>.
+</p>
+<p id="50036">
+There are many approaches that can achieve the above goal. One can submit the page to the server, examine the POST variable, and generate a new page with the button caption updated. Or one can simply use JavaScript to update the button caption upon its <tt>onclick</tt> client event.
+</p>
+</div>
+<p id="50037" class="block-content">
+PRADO promotes component-based and event-driven Web programming. The button is represented by a <tt>TButton</tt> object. It encapsulates the button caption as the <tt>Text</tt> property and associates the user button click action with a server-side <tt>OnClick</tt> event. To respond to the user clicking on the button, one simply needs to attach a function to the button's <tt>OnClick</tt> event. Within the function, the button's <tt>Text</tt> property is modified as "Hello World". The following diagram shows the above sequence,
+<img src="<%~sequence.gif%>" class="figure"/>
+</p>
+<p id="50038" class="block-content">
+Our PRADO application consists of three files, <tt>index.php</tt>, <tt>Home.page</tt> and <tt>Home.php</tt>, which are organized as follows,
+<img src="<%~directory.gif%>" class="figure"/>
+
+where each directory is explained as follows. Note, the above directory structure can be customized. For example, one can move the <tt>protected</tt> directory out of Web directories. You will know how to do this after you go through this tutorial.
+</p>
+<ul id="dir-struct" class="block-content">
+<li><tt>assets</tt> - directory storing published private files. See <a href="?page=Advanced.Assets">assets</a> section for more details. This directory must be writable by the Web server process.</li>
+<li><tt>protected</tt> - application base path storing application data and private script files. This directory should be configured as inaccessible to end-users.</li>
+<li><tt>runtime</tt> - application runtime storage path storing application runtime information, such as application state, cached data, etc. This directory must be writable by the Web server process.</li>
+<li><tt>pages</tt> - base path storing all PRADO pages.</li>
+</ul>
+
+<div class="tip">
+<b class="tip">Tip:</b>You may also use the <tt>framework/prado-cli.php</tt>
+<a href="?page=GettingStarted.CommandLine">command line script</a>
+to create the Prado project directory structure. For example, type the command
+<tt>php path/to/prado-cli.php -c helloworld</tt> in the directory
+where you want to create the <tt>helloworld</tt> project.
+</div>
+
+<p id="50040">
+The three files that we need are explained as follows.
+</p>
+<ul id="file-list" class="block-content">
+<li><tt>index.php</tt> - entry script of the PRADO application. This file is required by all PRADO applications and is the only script file that is directly accessible by end-users. Content in <tt>index.php</tt> mainly consists of the following three lines,
+<com:TTextHighlighter CssClass="source block-content" id="code_50003">
+require_once('path/to/prado.php'); // include the prado script
+$application=new TApplication; // create a PRADO application instance
+$application->run(); // run the application
+</com:TTextHighlighter>
+</li>
+<li><tt>Home.page</tt> - template for the default page returned when users do not explicitly specify the page requested. A template specifies the presentational layout of components. In this example, we use two components, <tt>TForm</tt> and <tt>TButton</tt>, which correspond to the <form> and <input> HTML tags, respectively. The template contains the following content,
+<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code_50004">
+<html>
+ <body>
+ <com:TForm>
+ <com:TButton Text="Click me" OnClick="buttonClicked" />
+ </com:TForm>
+ </body>
+</html>
+</com:TTextHighlighter>
+</li>
+<li><tt>Home.php</tt> - page class for the <tt>Home</tt> page. It mainly contains the method responding to the <tt>OnClick</tt> event of the button.
+<com:TTextHighlighter CssClass="source block-content" id="code_50005">
+class Home extends TPage
+{
+ public function buttonClicked($sender,$param)
+ {
+ // $sender refers to the button component
+ $sender->Text="Hello World!";
+ }
+}
+</com:TTextHighlighter>
+</li>
+</ul>
+<div id="hello-end" class="block-content">
+<p id="50041">
+The application is now ready and can be accessed via: <tt>http://Web-server-address/helloworld/index.php</tt>, assuming <tt>helloworld</tt> is directly under the Web <tt>DocumentRoot</tt>. Try to change <tt>TButton</tt> in <tt>Home.page</tt> to <tt>TLinkButton</tt> and see what happens.
+</p>
+<p id="50042">
+Complete source code of this demo can be found in the PRADO release. You can also try the <a href="http://www.pradosoft.com/demos/helloworld/">online demo</a>.
+</p>
+</div>
+
+<div class="last-modified">$Id: HelloWorld.page 1650 2007-01-24 06:55:32Z wei $</div></com:TContent>
\ No newline at end of file diff --git a/demos/quickstart/protected/pages/GettingStarted/pl/Installation.page b/demos/quickstart/protected/pages/GettingStarted/pl/Installation.page new file mode 100644 index 00000000..6b20bf8f --- /dev/null +++ b/demos/quickstart/protected/pages/GettingStarted/pl/Installation.page @@ -0,0 +1,29 @@ +<com:TContent ID="body" >
+<h1 id="301">Installing PRADO</h1>
+<div id="install-info" class="block-content">
+<p id="30018">
+If you are viewing this page from your own Web server, you are already done with the installation.
+</p>
+<p id="30019">
+The minimum requirement by PRADO is that the Web server support PHP 5. PRADO has been tested with Apache Web server on Windows and Linux. Highly possibly it may also run on other platforms with other Web servers, as long as PHP 5 is supported.
+</p>
+</div>
+
+<div id="install-steps" class="block-content">
+<p id="30020">
+Installation of PRADO mainly involves downloading and unpacking.
+</p>
+<ol>
+<li>Go to <a href="http://www.pradosoft.com/">pradosoft.com</a> to grab the latest version of PRADO.</li>
+<li>Unpack the PRADO release file to a Web-accessible directory.
+</ol>
+</div>
+<div id="install-after" class="block-content">
+<p id="30021">
+Your installation of PRADO is done and you can start to play with the demo applications included in the PRADO release via URL <tt>http://web-server-address/prado/demos/</tt>. Here we assume PRADO is unpacked to the <tt>prado</tt> subdirectory under the <tt>DocumentRoot</tt> of the Web server.
+</p>
+<p id="30022">
+If you encounter any problems with the demo applications, please use the PRADO requirement checker script, accessible via <tt>http://web-server-address/prado/requirements/index.php</tt>, to check first if your server configuration fulfills the conditions required by PRADO.
+</p>
+</div>
+<div class="last-modified">$Id: Installation.page 1650 2007-01-24 06:55:32Z wei $</div></com:TContent>
\ No newline at end of file diff --git a/demos/quickstart/protected/pages/GettingStarted/pl/Introduction.page b/demos/quickstart/protected/pages/GettingStarted/pl/Introduction.page new file mode 100644 index 00000000..5ceecf44 --- /dev/null +++ b/demos/quickstart/protected/pages/GettingStarted/pl/Introduction.page @@ -0,0 +1,19 @@ +<com:TContent ID="body" >
+<h1 id="101">Welcome to the PRADO Quickstart Tutorial</h1>
+<div id="intro" class="block-content">
+<p id="10001">
+This Quickstart tutorial is provided to help you quickly start building your own Web applications based on PRADO version 3.x.
+</p>
+<p id="10002">
+You may refer to the following resources if you find this tutorial does not fulfill all your needs.
+</p>
+</div>
+<ul class="block-content" id="intro-links">
+ <li><a href="http://www.pradosoft.com/docs/classdoc/">PRADO Classes</a></li>
+ <li><a href="http://www.pradosoft.com/docs/manual/">PRADO API Documentation</a></li>
+ <li><a href="http://www.pradosoft.com/forum/">PRADO Forum</a></li>
+ <li><a href="http://www.pradosoft.com/wiki/">PRADO Wiki</a></li>
+ <li><a href="http://trac.pradosoft.com/prado/">PRADO Trac</a></li>
+</ul>
+
+<div class="last-modified">$Id: Introduction.page 1650 2007-01-24 06:55:32Z wei $</div></com:TContent>
\ No newline at end of file diff --git a/demos/quickstart/protected/pages/GettingStarted/pl/NewFeatures.page b/demos/quickstart/protected/pages/GettingStarted/pl/NewFeatures.page new file mode 100644 index 00000000..65fa22cb --- /dev/null +++ b/demos/quickstart/protected/pages/GettingStarted/pl/NewFeatures.page @@ -0,0 +1,25 @@ +<com:TContent ID="body" >
+
+<h1>New Features</h1>
+
+<p>
+This page summarizes the main new features that are introduced in each PRADO release.
+</p>
+
+<h2>Version 3.1.0</h2>
+<ul>
+
+<li>Added seamless AJAX support. A whole array of AJAX-enabled controls, called active controls, are introduced. The usage of these active controls is very similar to their non-AJAX counterparts, i.e., plug in and use. For more details, see the tutorial about <a href="?page=ActiveControls.Home">active controls</a>.</li>
+
+<li>Added complete database support. </li>
+<li>Added new controls, modules and services, including <a href="?page=Services.SoapService">TSoapService</a>, <a href="?page=Controls.OutputCache">TOutputCache</a>, TSessionPageStatePersister, TFeedService, TJsonService, cache dependency classes, TXmlTransform.
+</li>
+
+<li>Enhanced some data controls with renderers. Renderer enables reusing item templates that are commonly found in <tt>TRepeater</tt>, <tt>TDataList</tt> and <tt>TDataGrid</tt>, and makes the configuration on these controls much cleaner. For more details about renders, see the updated tutorials on <a href="?page=Controls.Repeater"><tt>TRepeater</tt></a>, <a href="?page=Controls.DataList"><tt>TDataList</tt></a> and <a href="?page=Controls.DataGrid"><tt>TDataGrid</tt></a>.</li>
+
+<li>Added support to allow <a href="?page=Configurations.AppConfig">including external application configurations</a>. Enhanced template syntax to facilitate <a href="?page=Configurations.Templates1">subproperty configuration</a>.</li>
+
+</ul>
+
+<div class="last-modified">$Id: NewFeatures.page 1695 2007-02-13 14:16:09Z xue $</div>
+</com:TContent>
\ No newline at end of file diff --git a/demos/quickstart/protected/pages/GettingStarted/pl/Upgrading.page b/demos/quickstart/protected/pages/GettingStarted/pl/Upgrading.page new file mode 100644 index 00000000..6a44ce08 --- /dev/null +++ b/demos/quickstart/protected/pages/GettingStarted/pl/Upgrading.page @@ -0,0 +1,64 @@ +<com:TContent ID="body" >
+
+<h1 id="501">Upgrading from v2.x and v1.x</h1>
+
+<div id="from-2-or-1" class="block-content">
+<p id="40023">
+PRADO v3.0 is NOT backward compatible with earlier versions of PRADO.
+</p>
+<p id="40024">
+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.
+</p>
+<p id="40025">
+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.
+</p>
+</div>
+
+<h2 id="502">Component Definition</h2>
+<p id="40026" class="block-content">
+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 <tt>on</tt>-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 <tt>Enabled</tt> property of <tt>TControl</tt>, which is of <tt>boolean</tt> type,
+</p>
+<com:TTextHighlighter Language="php" CssClass="block-content source" ID="code1">
+public function setEnabled($value)
+{
+ $value=TPropertyValue::ensureBoolean($value);
+ $this->setViewState('Enabled',$value,true);
+}
+</com:TTextHighlighter>
+<p id="40027" class="block-content">
+where <tt>TPropertyValue::ensureBoolean()</tt> 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.
+</p>
+
+<h2 id="503">Application Controller</h2>
+<p id="40028" class="block-content">
+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 <a href="?page=Fundamentals.Applications">application lifecycle</a>. The concept of v2.x modules is replaced in v3.0 by <a href="?page=Configurations.PageConfig">page directories</a>. As a result, the format of v3.0 <a href="?page=Configurations.AppConfig">application specification</a> is also different from earlier versions.
+</p>
+
+<h2 id="504">Pages</h2>
+<p id="40029" class="block-content">
+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 <tt>index.php?page=Controls.Samples.Sample1</tt> would be used to request for a page named <tt>Sample1</tt> stored under the <tt>[BasePath]/Controls/Samples</tt> directory, where <tt>[BasePath]</tt> refers to the root page path. The file name of a page template must be ended with <tt>.page</tt>, mainly to differentiate page templates from non-page control templates whose file names must be ended with <tt>.tpl</tt>.
+</p>
+
+<h2 id="505">Control Relationship</h2>
+<p id="40030" class="block-content">
+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 <a href="?page=Fundamentals.Controls">controls</a> section.
+</p>
+
+<h2 id="506">Template Syntax</h2>
+<div id="template-syntax" class="block-content">
+<p id="40031">
+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,
+</p>
+<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code_40002">
+<com:MyComponent PropertyName=<%# PHP expression %> .../>
+</com:TTextHighlighter>
+<p id="40032">
+Expression and statement tags are also changed similarly. For more details, see the <a href="?page=Configurations.Templates1">template definition</a> section.
+</p>
+</div>
+<h2 id="507">Theme Syntax</h2>
+<p id="40033" class="block-content">
+Themes in v3.0 are defined like control templates with a few restrictions.
+</p>
+
+<div class="last-modified">$Id: Upgrading.page 1650 2007-01-24 06:55:32Z wei $</div></com:TContent>
\ No newline at end of file |