diff options
Diffstat (limited to 'demos')
5 files changed, 197 insertions, 0 deletions
diff --git a/demos/blog/protected/application.xml b/demos/blog/protected/application.xml index 4a18c74b..f15c4fe4 100644 --- a/demos/blog/protected/application.xml +++ b/demos/blog/protected/application.xml @@ -15,6 +15,11 @@ <route class="TFileLogRoute" Categories="BlogApplication" />
</module>
<module class="System.Util.TParameterModule" ParameterFile="Application.Data.Settings" />
+ <module id="friendly-url" class="System.Web.TUrlMapping">
+ <url pageClass="Posts.ViewPost" pattern="post/{id}/?" parameters.id="\d+" />
+ <url pageClass="Posts.ListPost" pattern="archive/{time}/?" parameters.time="\d{6}" />
+ <url pageClass="Posts.ListPost" pattern="category/{cat}/?" parameters.cat="\d+" />
+ </module>
</modules>
<services>
<!-- page service -->
diff --git a/demos/quickstart/protected/controls/TopicList.tpl b/demos/quickstart/protected/controls/TopicList.tpl index 6a335442..5e46bd44 100644 --- a/demos/quickstart/protected/controls/TopicList.tpl +++ b/demos/quickstart/protected/controls/TopicList.tpl @@ -7,6 +7,7 @@ <li><a href="?page=GettingStarted.AboutPrado">What is PRADO?</a></li>
<li><a href="?page=GettingStarted.Installation">Installation</a></li>
<li><a href="?page=GettingStarted.HelloWorld">Creating First PRADO Application</a></li>
+ <li><a href="?page=GettingStarted.CommandLine">Command Line Tool</a></li>
<li><a href="?page=GettingStarted.Upgrading">Upgrading from v2.x and v1.x</a></li>
</ul>
</div>
@@ -34,6 +35,7 @@ <li><a href="?page=Configurations.Templates3">Templates: Part III</a></li>
<li><a href="?page=Configurations.AppConfig">Application Configurations</a></li>
<li><a href="?page=Configurations.PageConfig">Page Configurations</a></li>
+ <li><a href="?page=Configurations.UrlMapping">URL Mapping (Friendly URLs)</a></li>
</ul>
</div>
diff --git a/demos/quickstart/protected/pages/Configurations/UrlMapping.page b/demos/quickstart/protected/pages/Configurations/UrlMapping.page new file mode 100644 index 00000000..22cb866a --- /dev/null +++ b/demos/quickstart/protected/pages/Configurations/UrlMapping.page @@ -0,0 +1,75 @@ +<com:TContent ID="body" >
+
+<h1>URL Mapping (Friendly URLs)</h1>
+
+<com:DocLink ClassPath="System.Web.TUrlMapping" />
+
+<p>Using the <tt>TUrlMapping</tt> module different URLs can be
+mapped into any existing Prado pages or services. This allows
+the application to use nice looking and friendly URLs.
+</p>
+
+<p>
+The <tt>TUrlMapping</tt> module allows aributary URL path to be mapped to a
+particular service and page class. This module must be configured
+before a service is initialized, thus this module should be configured
+globally in the <a href="?page=Configurations.AppConfig">application configuration</a>
+file and before any services.
+</p>
+
+<p>The mapping format is as follows.
+<com:TTextHighlighter Language="xml" CssClass="source">
+<module id="friendly-url" class="System.Web.TUrlMapping">
+ <url pageClass="ClassName" pattern="regexp" parameters.id="regexp" />
+</module>
+</com:TTextHighlighter>
+</p>
+
+<p>The <tt>PageClass</tt> set the name of class that the matched URL will
+be requested.</p> The <tt>Pattern</tt> and <tt>Parameters</tt> attribute
+values are regular expression patterns that
+determine the mapping criteria. The <tt>Pattern</tt> property takes
+a regular expression with parameter names enclosed between a left brace '<tt>{</tt>'
+and a right brace '<tt>}</tt>'. The pattens for each parameter can be set
+using <tt>Parameters</tt>attribute collection.
+For example,
+<com:TTextHighlighter Language="xml" CssClass="source">
+<url pageClass="Pages.ShowArticles" pattern="articles/{year}/{month}/{day}"
+ parameters.year="\d{4}" parameters.month="\d{2}" parameters.day="\d+" />
+</com:TTextHighlighter>
+</p>
+The example is equivalent, using regular expression only, to
+<com:TTextHighlighter Language="xml" CssClass="source">
+<url pageClass="Pages.ShowArticles">
+<![CDATA[
+ articles/(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d+)
+]]>
+</url>
+</com:TTextHighlighter>
+<p>
+In the above example, the pattern contains 3 parameters named "<tt>year</tt>",
+"<tt>month</tt>" and "<tt>day</tt>". The pattern for these parameters are,
+respectively, "<tt>\d{4}</tt>" (4 digits), "<tt>\d{2}</tt>" (2 digits)
+and "<tt>\d+</tt>" (1 or more digits).
+</p>
+
+<p>For example, an URL "<tt>http://example.com/index.php/articles/2006/07/21</tt>" will be matched
+and valid. However, "<tt>http://example.com/index.php/articles/2006/07/hello</tt>" is not
+ valid since the "<tt>day</tt>" parameter pattern is not satisfied.
+ In the default <tt>TUrlMappingPattern</tt> class, the pattern is matched against the
+<b>path</b> property of the URL only. For example, only the
+"<tt>/index.php/articles/2006/07/21</tt>" portion of the URL is considered and the rest
+is ignored.
+ </p>
+
+
+<p>The parameter values are available through the standard <tt>Request</tt>
+object. For example, <tt>$this->Request['year']</tt>.
+</p>
+
+<p>The URL mapping are evaluated in order they are place and only the first mapping that matches
+ the URL will be used. Cascaded mapping can be achieved by placing the URL mappings
+ in particular order. For example, placing the most specific mappings first.
+ </p>
+
+</com:TContent>
\ No newline at end of file diff --git a/demos/quickstart/protected/pages/GettingStarted/CommandLine.page b/demos/quickstart/protected/pages/GettingStarted/CommandLine.page new file mode 100644 index 00000000..c2050246 --- /dev/null +++ b/demos/quickstart/protected/pages/GettingStarted/CommandLine.page @@ -0,0 +1,107 @@ +<com:TContent ID="body" >
+<h1>Command Line Tool</h1>
+<p>The optional <tt>prado-cli.php</tt> PHP script file in the <tt>framework</tt>
+directory provides command line tools to perform various tendious taks 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>Requirements</h2>
+<p>
+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>Usage</h2>
+<p>
+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">
+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>The <b><parameter></b> are required parameters and <b>[optional]</b>
+are optional parameters. </p>
+
+<h2>Creating a new Prado project skeleton</h2>
+
+<p>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>hellowworld</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>Interactive Shell</h2>
+<p>
+The interactive shell allows you to evaluate PHP statements from te 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>
+<com:TTextHighlighter Language="cli" CssClass="source">
+$: php framework/prado-cli.php shell demos/blog
+</com:TTextHighlighter>
+The output should be
+<com:TTextHighlighter Language="cli" CssClass="source">
+Command line tools for Prado 3.0.5.
+** Loaded Prado appplication 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>supresses the output</b>.
+
+<com:TTextHighlighter Language="cli" CssClass="source">
+>> $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">
+>> $db->queryPostByID(1)
+</com:TTextHighlighter>
+There should not be any errors and you should see the following.
+<com:TTextHighlighter Language="cli" CssClass="source">
+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 possib
+le.'
+ [Status] => 0
+ [CommentCount] => 0
+)
+</com:TTextHighlighter>
+</p>
+</com:TContent>
\ No newline at end of file diff --git a/demos/quickstart/protected/pages/GettingStarted/HelloWorld.page b/demos/quickstart/protected/pages/GettingStarted/HelloWorld.page index 780c92b9..97d4f72d 100644 --- a/demos/quickstart/protected/pages/GettingStarted/HelloWorld.page +++ b/demos/quickstart/protected/pages/GettingStarted/HelloWorld.page @@ -27,6 +27,14 @@ where each directory is explained as follows. Note, the above directory structur <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>
The three files that we need are explained as follows.
</p>
|