summaryrefslogtreecommitdiff
path: root/demos/blog-tutorial/protected/pages/Day5
diff options
context:
space:
mode:
Diffstat (limited to 'demos/blog-tutorial/protected/pages/Day5')
-rwxr-xr-xdemos/blog-tutorial/protected/pages/Day5/ErrorLogging.page2
-rwxr-xr-xdemos/blog-tutorial/protected/pages/Day5/Performance.page2
-rwxr-xr-xdemos/blog-tutorial/protected/pages/Day5/UseTheme.page4
-rwxr-xr-xdemos/blog-tutorial/protected/pages/Day5/fr/ErrorLogging.page158
-rwxr-xr-xdemos/blog-tutorial/protected/pages/Day5/fr/Performance.page66
-rwxr-xr-xdemos/blog-tutorial/protected/pages/Day5/fr/Summary.page41
-rwxr-xr-xdemos/blog-tutorial/protected/pages/Day5/fr/UseTheme.page138
-rwxr-xr-xdemos/blog-tutorial/protected/pages/Day5/fr/output.gifbin4282 -> 0 bytes
-rwxr-xr-xdemos/blog-tutorial/protected/pages/Day5/fr/output2.gifbin7798 -> 0 bytes
-rwxr-xr-xdemos/blog-tutorial/protected/pages/Day5/fr/output3.gifbin5190 -> 0 bytes
-rwxr-xr-xdemos/blog-tutorial/protected/pages/Day5/id/ErrorLogging.page159
-rwxr-xr-xdemos/blog-tutorial/protected/pages/Day5/id/Performance.page67
-rwxr-xr-xdemos/blog-tutorial/protected/pages/Day5/id/Summary.page36
-rwxr-xr-xdemos/blog-tutorial/protected/pages/Day5/id/UseTheme.page138
-rwxr-xr-xdemos/blog-tutorial/protected/pages/Day5/id/output.gifbin4282 -> 0 bytes
-rwxr-xr-xdemos/blog-tutorial/protected/pages/Day5/id/output2.gifbin7798 -> 0 bytes
-rwxr-xr-xdemos/blog-tutorial/protected/pages/Day5/id/output3.gifbin5190 -> 0 bytes
17 files changed, 4 insertions, 807 deletions
diff --git a/demos/blog-tutorial/protected/pages/Day5/ErrorLogging.page b/demos/blog-tutorial/protected/pages/Day5/ErrorLogging.page
index 52f7ef54..6239d312 100755
--- a/demos/blog-tutorial/protected/pages/Day5/ErrorLogging.page
+++ b/demos/blog-tutorial/protected/pages/Day5/ErrorLogging.page
@@ -9,7 +9,7 @@ If we try to access the URL <tt>http://hostname/blog/index.php?page=EditPost&id=
<img src="<%~ output2.gif %>" class="output" />
<com:InfoBox>
-An important task in a Web application is <a href="http://www.pradosoft.com/demos/quickstart/?page=Advanced.Error">error handling</a> which is often associated <a href="http://www.pradosoft.com/demos/quickstart/?page=Advanced.Logging">logging</a>. There are two types of errors that may occur in a PRADO application: those caused by developers and those by end-users. The former should be resolved before the application is put into production, while the latter are usually within the initial design scope and should be handled nicely (e.g. log the error and display a special page instructing the end-user what to do next.) PRADO implements a very flexible yet powerful framework for error handling and logging.
+An important task in a Web application is <a href="http://www.pradoframework.net/site/demos/quickstart/?page=Advanced.Error">error handling</a> which is often associated <a href="http://www.pradoframework.net/site/demos/quickstart/?page=Advanced.Logging">logging</a>. There are two types of errors that may occur in a PRADO application: those caused by developers and those by end-users. The former should be resolved before the application is put into production, while the latter are usually within the initial design scope and should be handled nicely (e.g. log the error and display a special page instructing the end-user what to do next.) PRADO implements a very flexible yet powerful framework for error handling and logging.
</com:InfoBox>
diff --git a/demos/blog-tutorial/protected/pages/Day5/Performance.page b/demos/blog-tutorial/protected/pages/Day5/Performance.page
index cbaae7e4..1cdfedc1 100755
--- a/demos/blog-tutorial/protected/pages/Day5/Performance.page
+++ b/demos/blog-tutorial/protected/pages/Day5/Performance.page
@@ -57,7 +57,7 @@ There are other techniques to further improve the performance of a PRADO applica
</p>
<p>
-For a page that is relatively stable yet frequently accessed, <a href="http://www.pradosoft.com/demos/quickstart/?page=Controls.OutputCache">output caching</a> should be considered. Output caching caches the HTML output of selected portions of a page. This may improve the performance of the cached pages significantly.
+For a page that is relatively stable yet frequently accessed, <a href="http://www.pradoframework.net/site/demos/quickstart/?page=Controls.OutputCache">output caching</a> should be considered. Output caching caches the HTML output of selected portions of a page. This may improve the performance of the cached pages significantly.
</p>
<p>
diff --git a/demos/blog-tutorial/protected/pages/Day5/UseTheme.page b/demos/blog-tutorial/protected/pages/Day5/UseTheme.page
index 21bc9d81..395c8511 100755
--- a/demos/blog-tutorial/protected/pages/Day5/UseTheme.page
+++ b/demos/blog-tutorial/protected/pages/Day5/UseTheme.page
@@ -3,7 +3,7 @@
<h1>Using Themes and Skins</h1>
<p>
-PRADO has intrinsic support for <a href="http://www.pradosoft.com/demos/quickstart/?page=Advanced.Themes">themes</a>. By using themes, we can better separate logic and presentation, and we can also change the overall appearance of our blog system more easily.
+PRADO has intrinsic support for <a href="http://www.pradoframework.net/site/demos/quickstart/?page=Advanced.Themes">themes</a>. By using themes, we can better separate logic and presentation, and we can also change the overall appearance of our blog system more easily.
</p>
<h2>Creating Theme</h2>
@@ -17,7 +17,7 @@ To create a theme named <tt>Basic</tt>, we create a subdirectory <tt>theme/Basic
</p>
<com:InfoBox>
-The <tt>themes</tt> directory must be Web-accessible, like the <tt>assets</tt> directory. Do not place sensitive data files under this directory. You can change the name or location of this directory by configuring the <a href="http://www.pradosoft.com/docs/classdoc/TThemeManager">TThemeManager</a> module in the application configuration.
+The <tt>themes</tt> directory must be Web-accessible, like the <tt>assets</tt> directory. Do not place sensitive data files under this directory. You can change the name or location of this directory by configuring the <a href="http://pradosoft.github.io/docs/manual/class-TThemeManager">TThemeManager</a> module in the application configuration.
</com:InfoBox>
diff --git a/demos/blog-tutorial/protected/pages/Day5/fr/ErrorLogging.page b/demos/blog-tutorial/protected/pages/Day5/fr/ErrorLogging.page
deleted file mode 100755
index 8e7c77e6..00000000
--- a/demos/blog-tutorial/protected/pages/Day5/fr/ErrorLogging.page
+++ /dev/null
@@ -1,158 +0,0 @@
-<com:TContent ID="Main">
-
-<h1>Gestion et journalisation d'erreur</h1>
-
-<p>
-Si vous tentez de naviguez à l'URL <tt>http://hostname/blog/index.php?page=EditPost&id=100</tt>, vous verrez la page d'erreur suivante parce que le message avec l'ID 100 n'existe pas pour le moment. Nous voudrions personnaliser cette page d'erreur de manière à ce qu'elle garde la présentation générale du site. Nous voudrions aussi journaliser cette erreur pour étudier le comportement des utilisateurs. Dans cette section, nous allons mettre en place ces deux fonctionnalités.
-</p>
-
-<img src="<%~ output2.gif %>" class="output" />
-
-<com:InfoBox>
-Une des tâches importantes dans les applications Web est la <a href="http://www.pradosoft.com/demos/quickstart/?page=Advanced.Error">gestion des erreurs</a> ainsi que leurs <a href="http://www.pradosoft.com/demos/quickstart/?page=Advanced.Logging">journalisation</a>. Il y a deux types d'erreurs qui peuvent se produire dans une application PRADO : celles provenant des développeurs et celles des utilisateurs. Les premières doivent être résolues avant que l'application ne soit en production, tandis que les deuxièmes sont généralement un problème de prise en charge au niveau du design et doivent être gérées proprement (ie: journaliser cette erreur et indiquer à l'utilisateur que faire après). PRADO fournit un ensemble de fonctionnalités très utiles pour gérer et journaliser les erreurs.
-</com:InfoBox>
-
-
-<h2>Personnalisation de la gestion d'erreur</h2>
-
-<p>
-PRADO charge de manière implicite un module de gestion d'erreurs. Nous voulons personnaliser ce module pour qu'il affiche une page spécifique pour les erreurs causées par les utilisateurs. Nous modifions donc notre application comme ci-dessous :
-</p>
-
-<com:TTextHighlighter CssClass="source" Language="xml">
-......
-<modules>
- ......
- <module class="Application.BlogErrorHandler" />
- ......
-</modules>
-......
-</com:TTextHighlighter>
-
-<p>
-La classe <tt>BlogErrorHandler</tt> comme spécifiée ci-dessus est un nouveau gestionnaire d'erreur que nous allons créer après. Il étend et remplace le module par défaut <tt>TErrorHandler</tt>.
-</p>
-
-<p>
-Nous créons un fichier nommé <tt>protected/BlogErrorHandler.php</tt> avec le contenu suivant. La classe <tt>BlogErrorHandler</tt> surcharge deux méthodes de <tt>TErrorHandler</tt> :
-</p>
-<ul>
- <li><tt>getErrorTemplate()</tt> - cette méthode renvoie le gabarit utilisé pour afficher un message d'erreur utilisateur.</li>
- <li><tt>handleExternalError()</tt> - cette méthode est appelée lorsqu'une erreur utilisateur se produit et elle affiche l'erreur.</li>
-</ul>
-<com:TTextHighlighter CssClass="source" Language="php">
-Prado::using('System.Exceptions.TErrorHandler');
-Prado::using('Application.BlogException');
-
-class BlogErrorHandler extends TErrorHandler
-{
- /**
- * Renvoi le fichier gabarit utilisé pour afficher l'erreur.
- * Cette méthode surcharge la méthode originale.
- */
- protected function getErrorTemplate($statusCode,$exception)
- {
- // on utilise notre propre gabarit pour BlogException
- if($exception instanceof BlogException)
- {
- // récupère le chemin du fichier de gabarit : protected/error.html
- $templateFile=Prado::getPathOfNamespace('Application.error','.html');
- return file_get_contents($templateFile);
- }
- else // sinon on utilise le gabarit par défaut.
- return parent::getErrorTemplate($statusCode,$exception);
- }
-
- /**
- * Gère les erreurs causées par les utilisateurs.
- * Cette méthode surcharge la méthode originale.
- * Elle est appelée lorsqu'une exception utilisateur est générée.
- */
- protected function handleExternalError($statusCode,$exception)
- {
- // Journaliser l'erreur (seulement pour BlogException)
- if($exception instanceof BlogException)
- Prado::log($exception->getErrorMessage(),TLogger::ERROR,'BlogApplication');
- // appelle l'implémentation de la classe parente
- parent::handleExternalError($statusCode,$exception);
- }
-}
-</com:TTextHighlighter>
-
-<p>
-Dans le code précédent, nous spécifions que lorsqu'une exception de type <tt>BlogException</tt> est générée, nous utilisons le gabarit <tt>protected/error.html</tt> pour afficher l'erreur. Par ailleurs, nous devons créer la classe <tt>BlogException</tt> et remplacer toutes les occurrences de <tt>THttpException</tt> dans notre code (par exemple dans les pages <a href="?page=Day3.CreateEditUser">EditUser</a> et <a href="?page=Day4.CreateReadPost">ReadPost</a>). Nous devons aussi créer le gabarit <tt>protected/error.html</tt>. La classe <tt>BlogException</tt> hérite de <tt>THttpException</tt> et est vide. Le fichier de classe est enregistré sous <tt>protected/BlogException.php</tt>.
-</p>
-
-<com:TTextHighlighter CssClass="source" Language="php">
-class BlogException extends THttpException
-{
-}
-</com:TTextHighlighter>
-
-<p>
-Ci-dessous le contenu du gabarit <tt>protected/error.html</tt>. Remarquez que ce gabarit n'est pas un gabarit PRADO, ceci parce qu'il ne reconnait qu'un nombre limité de mots clés, par exemple <tt>%%ErrorMessage%%</tt>, <tt>%%ServerAdmin%%</tt>.
-</p>
-
-<com:TTextHighlighter CssClass="source" Language="xml">
-<html>
-<head>
-<title>%%ErrorMessage%%</title>
-</head>
-<body>
-<div id="page">
-<div id="header">
-<h1>Mon Blog</h1>
-</div>
-<div id="main">
-<p style="color:red">%%ErrorMessage%%</p>
-<p>
-Une erreur est apparue lors du traitement de votre demande.
-</p>
-<p>
-Si vous pensez que c'est une erreur de notre serveur, veuillez contacter <a href="mailto:%%ServerAdmin%%">webmaster</a>.
-</p>
-</div>
-</body>
-</html>
-</com:TTextHighlighter>
-
-
-<h2>Journalisation des erreurs</h2>
-
-<p>
-Dans la méthode <tt>handleExternalError()</tt> de <tt>BlogErrorHandler</tt>, nous appelons <tt>Prado::log()</tt> pour journaliser l'erreur si elle est de type <tt>BlogException</tt>. L'erreur est stockée en mémoire. Pour enregistrer le journal d'erreur sur un support non volatil, tel que le disque dur ou une base de données, nous devons indiquer à PRADO comment procéder. Ceci est fait par la configuration d'application suivante :
-</p>
-
-<com:TTextHighlighter CssClass="source" Language="xml">
-......
-<modules>
- ......
- <module id="log" class="System.Util.TLogRouter">
- <route class="TFileLogRoute" Categories="BlogApplication" />
- </module>
- ......
-</modules>
-......
-</com:TTextHighlighter>
-
-<p>
-Dans le code ci-dessus, nous ajoutons une "route" pour enregistrer le journal d'erreur dans un fichier. Nous spécifions aussi le filtre de catégorie <tt>BlogApplication</tt>, de manière à ce que seules les erreurs de type <tt>BlogApplication</tt> soient sauvegardées. Cette possibilité permet de réduire la taille du journal et d'en améliorer la lisibilité.
-</p>
-
-<h2>Test</h2>
-<p>
-Pour voir comme notre blog se comporte suite à une demande invalide, nous naviguons à l'URL <tt>http://hostname/blog/index.php?page=posts.ReadPost&id=100</tt>. Nous devrions voir la page suivante qui est différente de celle vue précédemment.
-</p>
-
-<img src="<%~ output3.gif %>" class="output" />
-
-<p>
-Si nous regardons dans le dossier <tt>protected/runtime</tt>, nous devrions y trouver un fichier nommé <tt>prado.log</tt>. C'est le journal d'erreur que nous venons juste de paramétrer. Le fichier pourrait contenir quelque chose comme :
-</p>
-
-<com:TTextHighlighter CssClass="source" Language="text">
-Jun 28 22:15:27 [Error] [BlogApplication] Unable to find the specified post.
-Jun 29 08:42:57 [Error] [BlogApplication] Unable to find the specified post.
-</com:TTextHighlighter>
-
-</com:TContent> \ No newline at end of file
diff --git a/demos/blog-tutorial/protected/pages/Day5/fr/Performance.page b/demos/blog-tutorial/protected/pages/Day5/fr/Performance.page
deleted file mode 100755
index 59eee1b0..00000000
--- a/demos/blog-tutorial/protected/pages/Day5/fr/Performance.page
+++ /dev/null
@@ -1,66 +0,0 @@
-<com:TContent ID="Main">
-
-<h1>Amélioration des performances</h1>
-
-<p>
-Avant le déploiement de notre blog, nous voudrions améliorer les performances.
-</p>
-
-<h2>Changer le mode de fonctionnement de l'application</h2>
-
-<p>
-Une application PRADO peut-être configurée pour fonctionner suivant différents modes. Par défaut, elle fonctionne en mode <tt>Debug</tt>, mode qui génère beaucoup de message de journalisation et qui, en cas d'erreurs, affiche la pile des appels et l'emplacement de l'erreur. Ce comportement est préférable en cours de développement, mais pas en production. Pour changer le mode de fonctionnement de <tt>Debug</tt> à <tt>Normal</tt> ( qui signifie "en production"), nous devons modifier le fichier de configuration de l'application comme ci-dessous :
-</p>
-
-<com:TTextHighlighter CssClass="source" Language="xml">
-<?xml version="1.0" encoding="utf-8"?>
-<application id="blog" mode="Normal">
- ......
-</application>
-</com:TTextHighlighter>
-
-<h2>Enabling Caching</h2>
-
-<p>
-There are a lot of parsing work involved in a PRADO application: configuration XMLs, templates, theme skins, etc. For every user request, PRADO needs to redo the parsing. To save this effort, we can enable caching. To do so, we modify the application configuration as follows,
-</p>
-
-<com:TTextHighlighter CssClass="source" Language="xml">
-......
-<modules>
- ......
- <module id="cache" class="System.Caching.TDbCache" />
- ......
-</modules>
-......
-</com:TTextHighlighter>
-
-<p>
-Maintenant, après avoir requis n'importe quelle page de notre blog, nous devrions trouver un fichier nommé <tt>sqlite3.cache</tt>. C'est un fichier de base de données qui mémorise les éléments analysés : gabarits, configurations, etc.
-</p>
-
-<com:InfoBox>
-Le module de <tt>cache</tt> que nous venons d'activer utilise une base de données comme support d'enregistrement. PRADO propose d'autres modules de <tt>cache</tt> plus rapide, tels que <tt>TMemCache</tt>, <tt>TAPCCache</tt>. Ces modules requièrent les extensions PHP correspondantes.
-</com:InfoBox>
-
-
-<h2>Utilisation de <tt>pradolite.php</tt></h2>
-
-<p>
-Afficher une page PRADO requiert des dizaines de fichiers PHP, ce qui est une cause de perte de temps. Ces fichiers comportent aussi beaucoup de commentaires qui permettent de générer la documentation des API. Dans le but de réduire ce coût, nous modifions notre fichier <tt>index.php</tt> et remplaçons <tt>prado.php</tt> par <tt>pradolite.php</tt>. Ce dernier est un gros fichier incluant les fichiers PHP nécessaires et dont on a retiré les commentaires.
-</p>
-
-<h2>Autres techniques</h2>
-
-<p>
-D'autres techniques sont disponibles pour améliorer les performances d'une application PRADO. D'après notre expérience, un des goulets d'étranglement dans une application Web, est l'accès aux bases de données. Les requêtes en base de données prennent souvent du temps, ce qui dégrade le temps d'affichage d'une page. Le <tt>cache</tt> est la principale solution à ce problème. Le module de <tt>cache</tt> activé dans notre fichier de configuration d'application peut aussi être utilisé dans ce but.
-</p>
-<p>
-Pour une page relativement stable et souvent consultée, le <a href="http://www.pradosoft.com/demos/quickstart/?page=Controls.OutputCache">cache de sortie</a> doit être envisagé. Le <tt>cache de sortie</tt> met en <tt>cache</tt> les parties sélectionnées d'une page. Ceci peut améliorer les performances des pages mises en <tt>cache</tt> de manière significative.
-</p>
-
-<p>
-Il a été prouvé que les solutions de <tt>cache</tt> côté serveur étaient très efficaces pour améliorer les performances d'une application PRADO. Par exemple, nous avons observé qu'en utilisant le <tt>Zend Optimizer</tt>, le RPS (requêtes par seconde) peut être multiplié par 10. Bien sûr, ceci au risque d'avoir des pages périmées, tandis que les solutions de <tt>cache</tt> de PRADO garantissent la validité des pages fournies.
-</p>
-
-</com:TContent> \ No newline at end of file
diff --git a/demos/blog-tutorial/protected/pages/Day5/fr/Summary.page b/demos/blog-tutorial/protected/pages/Day5/fr/Summary.page
deleted file mode 100755
index 1472c934..00000000
--- a/demos/blog-tutorial/protected/pages/Day5/fr/Summary.page
+++ /dev/null
@@ -1,41 +0,0 @@
-<com:TContent ID="Main">
-
-<h1>Résumé</h1>
-
-<p>
-Nous pouvons finalement déployer notre blog. Pour cela, nous devons juste copier le dossier <tt>blog</tt> complet vers le dossier du serveur Web. Nous pourrions avoir besoin de modifier <tt>index.php</tt> pour qu'il puisse trouver le chemin vers l'emplacement où a été installé le framework PRADO.
-</p>
-
-<p>
-Nous avons donc fini notre blog. Le processus peut paraitre complexe vu que nous avons passé pas loin de cinq jours pour y arriver. Toutefois, comme nous l'avions dit au début, le but de ce tutoriel est d'aider les développeurs PRADO à appréhender les principales techniques de PRADO.Le tutoriel n'avais pas pour but de finir un blog en cinq minutes, sinon nous n'aurions rien appris.
-</p>
-
-<p>
-En résumé, développer une application de gestion de base de données PRADO nécessite les étapes suivantes :
-</p>
-<ol>
- <li>Analyse et création de la base de données</li>
- <li>Créer le squelette de l'application avec <tt>prado-cli</tt></li>
- <li>Mise en place de la gestion d'erreur pour gérer les erreurs d'utilisations</li>
- <li>Création et mise en place du thème</li>
- <li>Création et mise en place des gabarits principaux</li>
- <li>Création de la connexion et des classes d'accès aux données</li>
- <li>Création des différentes pages</li>
- <li>Test et amélioration des performances/li>
- <li>Déploiement</li>
-</ol>
-
-<p>
-Contrairement à l'ordre de notre tutoriel, la gestion d'erreur et la création des thèmes sont placées au début du processus. Ceci est dû au fait que des changements d'ordre généraux sont la plupart du temps requis. Par exemple, nous avons dû remplacer <tt>THttpException</tt> par <tt>BlogException</tt> dans notre tutoriel. Si vous définissez vos feuilles de styles plus tôt, vous pourrez plus facilement les utiliser au cours de la création des gabarits de pages.
-</p>
-
-<p>
-Un dernier conseil, essayez de penser orienté objet pendant la phase d'analyse et d'implémentation. Utilisez l'héritage le plus souvent, et vous trouverez que le projet est plus facile à développer en équipe. Il vous sera aussi plus facile de réutiliser votre code et ainsi vos futurs projets seront finis plus rapidement.
-</p>
-
-
-
-
-<hr />
-<p>Traduction (laborieuse) par Eric.M, nous pouvez me contacter par message privé ou par email sur le <a href="http://www.pradosoft.com/forum/index.php">forum PRADO</a>.</p>
-</com:TContent> \ No newline at end of file
diff --git a/demos/blog-tutorial/protected/pages/Day5/fr/UseTheme.page b/demos/blog-tutorial/protected/pages/Day5/fr/UseTheme.page
deleted file mode 100755
index 840a26b0..00000000
--- a/demos/blog-tutorial/protected/pages/Day5/fr/UseTheme.page
+++ /dev/null
@@ -1,138 +0,0 @@
-<com:TContent ID="Main">
-
-<h1>Utilisation des Thèmes et des Skins</h1>
-
-<p>
-PRADO propose un support intrinsèque des <a href="http://www.pradosoft.com/demos/quickstart/?page=Advanced.Themes">thèmes</a>. En utilisant les thèmes, nous pouvons mieux séparer la logique applicative de la présentation et nous pouvons aussi changer facilement la présentation générale de notre blog.
-</p>
-
-<h2>Création des thèmes</h2>
-
-<p>
-Nous devons auparavant créer un dossier <tt>themes</tt>. C'est le dossier parent de tous les thèmes pour une application de PRADO. Chaque sous-dossier devient ainsi un thème dont le nom est le nom du sous-dossier.
-</p>
-
-<p>
-Pour créer un thème nommé <tt>Basic</tt>, nous créons un sous-dossier <tt>theme/Basic</tt>. Dans ce dossier, nous pouvons mettre des feuilles de styles dépendantes du thème, des fichiers Javascript, des images et des fichiers skins.
-</p>
-
-<com:InfoBox>
-Le dossier <tt>themes</tt> doit être accessible de l'extérieur. Ne mettez pas de données sensibles dans ce dossier. Nous pouvons changer l'emplacement de ce dossier en configurant le module <a href="http://www.pradosoft.com/docs/classdoc/TThemeManager">TThemeManager</a> dans le fichier de configuration de l'application.
-</com:InfoBox>
-
-
-<h3>Création de la feuille de style</h2>
-
-<p>
-Dans le dossier <tt>themes/Basic</tt>, nous créons un fichier CSS nommé <tt>style.css</tt>. Quand une page utilise ce thème, PRADO importe automatiquement la feuille de style dans cette page. Le même traitement est appliqué aux fichiers Javascript.
-</p>
-
-<p>
-Le contenu du fichier CSS est le suivant :
-</p>
-
-<com:TTextHighlighter CssClass="source">
-body {
- font-family: verdana, 'trebuchet ms', sans-serif;
- font-size: 10pt;
- background: white;
-}
-#page {
- margin: 0 auto 0 auto;
- width: 600px;
-}
-#footer {
- text-align: center;
- margin-top: 10px;
- padding: 10px;
- border-top: 1px solid silver;
-}
-.post-box {
- margin-bottom: 10px;
- padding: 5px;
-}
-.post-box h3 {
- padding: 5px;
- font-size: 13pt;
- background: lightgray;
-}
-.post-box a {
- color: black;
- text-decoration: none;
-}
-.post-box a:hover {
- color: red;
-}
-</com:TTextHighlighter>
-
-
-<h3>Création du fichier de Skin</h2>
-
-<p>
-Nous utilisons des <tt>skin</tt> pour initialiser les propriétés des contrôles PRADO. Les fichiers <tt>skin</tt> sont enregistrés avec une extension <tt>.skin</tt> dans le dossier du thème. Chaque fichier <tt>skin</tt> peut contenir plusieurs modèles pour un ou plusieurs types de contrôles.
-</p>
-
-<p>
-Pour notre test, nous allons créer un fichier <tt>skin</tt> qui changera la couleur de fond de nos liens dans le pied de page. Nous créons un fichier nommé <tt>button.skin</tt> dans le dossier du thème <tt>themes/Basic</tt>.
-</p>
-
-<com:TTextHighlighter CssClass="source" Language="prado">
-&lt;com:THyperLink SkinID="MainMenu" BackColor="lightgreen" />
-</com:TTextHighlighter>
-
-<p>
-Le fichier <tt>button.skin</tt> contient une seule définition pour les contrôles de type <tt>THyperLink</tt> dont la propriété <tt>SkinID</tt> est <tt>MainMenu</tt>. La définition applique une couleur vert-clair comme couleur de fond du contrôle.
-</p>
-
-<p>
-En accord avec cette définition, nous modifions notre fichier <tt>protected/common/MainLayout.tpl</tt> pour appliquer aux liens du pied de page la valeur <tt>MainMenu</tt> à la propriété <tt>SkinID</tt>.
-</p>
-<com:TTextHighlighter CssClass="source" Language="prado">
-......
-<div id="footer">
-......
-&lt;com:THyperLink Text="Home" SkinID="MainMenu"
- NavigateUrl="&lt;%= $this->Service->DefaultPageUrl %>" />
-
-&lt;com:THyperLink Text="New Post" SkinID="MainMenu"
- NavigateUrl="&lt;%= $this->Service->constructUrl('posts.NewPost') %>"
- Visible="&lt;%= !$this->User->IsGuest %>" />
-......
-</div>
-......
-</com:TTextHighlighter>
-
-<com:InfoBox>
-La syntaxe des fichiers <tt>skin</tt> est très proche de celle des gabarits. Chaque balise <tt>&lt;com:&gt;</tt> définit la présentation d'un type de contrôle. PRADO concatène automatiquement les fichiers <tt>skin</tt> pour un thème et applique le tout lorsque la page est affichée.
-</com:InfoBox>
-
-
-<h2>Utilisation du thème</h2>
-
-<p>
-Pour utiliser le thème que nous venons juste de créer, nous modifions notre fichier de configuration de l'application comme ci-après. Comme vous pouvez le voir, nous affectons la valeur <tt>Basic</tt> (le nom du thème) à la priorité <tt>Theme</tt> pour toutes les pages.
-</p>
-
-<com:TTextHighlighter CssClass="source" Language="xml">
-......
- <services>
- <service id="page" class="TPageService" DefaultPage="posts.ListPost">
- <pages MasterClass="Application.layouts.MainLayout" Theme="Basic" />
- </service>
- </services>
-......
-</com:TTextHighlighter>
-
-<com:InfoBox>
-Il est possible de préciser différents thèmes pour différentes pages, et ceci peut-être faits soit en modifiant le fichier de configuration de page soit par programmation (propriété <tt>Theme</tt>). En dernier recours, on peut le faire dans la méthode <tt>onPreInit()</tt> de la page, ceci parce que PRADO applique le thème au début du cycle de vie de la page.
-</com:InfoBox>
-
-
-<h2>Test</h2>
-<p>
-Pour voir la nouvelle présentation de notre site, allons à l'URL <tt>http://hostname/blog/index.php</tt>. Nous pouvons constater que la mise en page, les polices, les bordures sont modifiées. De même, la couleur de fond des liens en pied de page est vert-clair.
-</p>
-
-<img src="<%~ output.gif %>" class="output" />
-
-</com:TContent> \ No newline at end of file
diff --git a/demos/blog-tutorial/protected/pages/Day5/fr/output.gif b/demos/blog-tutorial/protected/pages/Day5/fr/output.gif
deleted file mode 100755
index 67bd18a3..00000000
--- a/demos/blog-tutorial/protected/pages/Day5/fr/output.gif
+++ /dev/null
Binary files differ
diff --git a/demos/blog-tutorial/protected/pages/Day5/fr/output2.gif b/demos/blog-tutorial/protected/pages/Day5/fr/output2.gif
deleted file mode 100755
index 16c81704..00000000
--- a/demos/blog-tutorial/protected/pages/Day5/fr/output2.gif
+++ /dev/null
Binary files differ
diff --git a/demos/blog-tutorial/protected/pages/Day5/fr/output3.gif b/demos/blog-tutorial/protected/pages/Day5/fr/output3.gif
deleted file mode 100755
index 6879bbdf..00000000
--- a/demos/blog-tutorial/protected/pages/Day5/fr/output3.gif
+++ /dev/null
Binary files differ
diff --git a/demos/blog-tutorial/protected/pages/Day5/id/ErrorLogging.page b/demos/blog-tutorial/protected/pages/Day5/id/ErrorLogging.page
deleted file mode 100755
index 9d69f1dd..00000000
--- a/demos/blog-tutorial/protected/pages/Day5/id/ErrorLogging.page
+++ /dev/null
@@ -1,159 +0,0 @@
-<com:TContent ID="Main">
-
-<h1>Penanganan Kesalahan dan Pencatatan</h1>
-
-<p>
-Jika kita mencoba mengakses URL <tt>http://hostname/blog/index.php?page=EditPost&id=100</tt>, kita akan melihat halaman kesalahan berikut karena tulisan dengan ID 100 belum ada dalam sistem blog kita. Kita ingin mengkustomisasi halaman kesalahan ini agar ia terlihat lebih konsisten dengan tata letak halaman blog lain. Kita juga ingin mencatat jenis kesalahan ini untuk mempelajari kebiasaan pengguna. Dalam bagian ini, kita akan melaksanakan dua tugas ini.
-</p>
-
-<img src="<%~ output2.gif %>" class="output" />
-
-<com:InfoBox>
-Tugas penting dalam aplikasi Web adalah <a href="http://www.pradosoft.com/demos/quickstart/?page=Advanced.Error">penanganan kesalahan</a> yang sering dikaitkan dengan <a href="http://www.pradosoft.com/demos/quickstart/?page=Advanced.Logging">pencatatan</a>. Ada dua jenis kesalahan yang bisa terjadi dalam aplikasi PRADO: yang disebabkan oleh para pengembang dan yang disebabkan oleh pengguna-akhir. Pembentuk harus dipecahkan sebelum aplikasi dijadikan tahap produksi, sementara yang terakhir biasanya di dalam lingkup desain awal dan harus ditangani dengan baik (misalnya mencatat kesalahan dan menampilkan halaman khusus yang menginstruksikan pengguna-akhir apa yang harus dilakukan selanjutnya). PRADO mengimplementasikan kerangka kerja yang fleksibel serta bertenaga untuk menangani kesalahan dan pencatatan.
-</com:InfoBox>
-
-
-<h2>Mengkustomisasi Penanganan Kesalahan</h2>
-
-<p>
-PRADO secara implisit mengambil modul <tt>TErrorHandler</tt> untuk menangani kesalahan. Kita ingin mengkustomisasi modul ini agar sistem blog kita dapat menampilkan halaman terkustomisasi untuk kesalahan yang disebabkan oleh pengguna-akhir. Selanjutnya memodifikasi konfigurasi aplikasi seperti berikut:
-</p>
-
-<com:TTextHighlighter CssClass="source" Language="xml">
-......
-<modules>
- ......
- <module class="Application.BlogErrorHandler" />
- ......
-</modules>
-......
-</com:TTextHighlighter>
-
-<p>
-Kelas <tt>BlogErrorHandler</tt> seperti ditetapkan di atas adalah modul pengendali kesalahan baru as yang akan dibuat berikutnya. Ia memperluas dan mengganti modul standar <tt>TErrorHandler</tt>.
-</p>
-
-<p>
-Kita membuat sebuah file bernama <tt>protected/BlogErrorHandler.php</tt> seperti berikut. Kelas <tt>BlogErrorHandler</tt> mengganti dua metode <tt>TErrorHandler</tt>:
-</p>
-<ul>
- <li><tt>getErrorTemplate()</tt> - metode ini mengembalikan string template yang dipakai untuk menampilkan kesalahan pengguna tertentu.</li>
- <li><tt>handleExternalError()</tt> - metode ini dipanggil saat kesalahan pengguna terjadi dan menampilkan kesalahannya.</li>
-</ul>
-<com:TTextHighlighter CssClass="source" Language="php">
-Prado::using('System.Exceptions.TErrorHandler');
-Prado::using('Application.BlogException');
-
-class BlogErrorHandler extends TErrorHandler
-{
- /**
- * Mengambil template yang dipakai untuk menampilkan eksepsi eksternal.
- * Metode ini mengganti implementasi leluhurnya.
- */
- protected function getErrorTemplate($statusCode,$exception)
- {
- // gunakan template sendiri untuk BlogException
- if($exception instanceof BlogException)
- {
- // ddapatkan path file template kesalahan: protected/error.html
- $templateFile=Prado::getPathOfNamespace('Application.error','.html');
- return file_get_contents($templateFile);
- }
- else // sebaliknya gunakan template yang didefinisikan oleh PRADO
- return parent::getErrorTemplate($statusCode,$exception);
- }
-
- /**
- * Menangani kesalahan eksternal yang disebabkan oleh pengguna-akhir.
- * Metode ini mengganti implementasi leluhurnya.
- * Ini dipanggil oleh PRADO saat eksepsi eksternal dikeluarkan.
- */
- protected function handleExternalError($statusCode,$exception)
- {
- // catat kesalahan (hanya untuk BlogException)
- if($exception instanceof BlogException)
- Prado::log($exception->getErrorMessage(),TLogger::ERROR,'BlogApplication');
- // panggil implementasi leluhur untuk menampilkan kesalahan
- parent::handleExternalError($statusCode,$exception);
- }
-}
-</com:TTextHighlighter>
-
-<p>
-Dalam kode di atas, kita menetapkan bahwa saat <tt>BlogException</tt> dikeluarkan, kita menggunakan template baru <tt>protected/error.html</tt> untuk menampilkan kesalahan. Oleh karena itu, kita perlu membuat kelas <tt>BlogException</tt> dan mengganti semua <tt>THttpException</tt> yang ada dalam kode kita (seperti misalnya <a href="?page=Day3.CreateEditUser">EditUser</a> dan halaman <a href="?page=Day4.CreateReadPost">ReadPost</a>). Kita juga perlu membuat template kesalahan <tt>protected/error.html</tt>. Kelas <tt>BlogException</tt> memperluas <tt>THttpException</tt> dan kosong. File kelas disimpan sebagai <tt>protected/BlogException.php</tt>.
-
-</p>
-
-<com:TTextHighlighter CssClass="source" Language="php">
-class BlogException extends THttpException
-{
-}
-</com:TTextHighlighter>
-
-<p>
-Di bawah ini konten dalam template kesalahan kita <tt>protected/error.html</tt>. Catatan, template bukan template PRADO karena ia hanya mengenal jumlah token yang sangat terbatas, seperti <tt>%%ErrorMessage%%</tt>, <tt>%%ServerAdmin%%</tt>.
-</p>
-
-<com:TTextHighlighter CssClass="source" Language="xml">
-<html>
-<head>
-<title>%%ErrorMessage%%</title>
-</head>
-<body>
-<div id="page">
-<div id="header">
-<h1>My PRADO Blog</h1>
-</div>
-<div id="main">
-<p style="color:red">%%ErrorMessage%%</p>
-<p>
-The above error happened when the server was processing your request.
-</p>
-<p>
-If you think this is a server error, please contact the <a href="mailto:%%ServerAdmin%%">webmaster</a>.
-</p>
-</div>
-</body>
-</html>
-</com:TTextHighlighter>
-
-
-<h2>Mencatat Kesalahan</h2>
-
-<p>
-Dalam metode <tt>handleExternalError()</tt> pada <tt>BlogErrorHandler</tt>, kita memanggil <tt>Prado::log()</tt> untuk mencatat kesalahan jika tipenya adalah <tt>BlogException</tt>. Kesalahan dicatat dalam memori. Untuk menyimpan catatan ke dalam medium permanen seperti file atau database, kita perlu menghidupkan rute pencatatan kesalahan yang sesuai. Ini dikerjakan dalam konfigurasi aplikasi seperti berikut:
-</p>
-
-<com:TTextHighlighter CssClass="source" Language="xml">
-......
-<modules>
- ......
- <module id="log" class="System.Util.TLogRouter">
- <route class="TFileLogRoute" Categories="BlogApplication" />
- </module>
- ......
-</modules>
-......
-</com:TTextHighlighter>
-
-<p>
-Dalam konfigurasi di atas, kita menambahkan rute log yang menyimpan catatan ke dalam sebuah file. Kita juga menetapkan filter kategori sebagai <tt>BlogApplication</tt> agar hanya mencatat pesan pada kategori yang dipilih yang disimpan. Ini membantu mengurangi ukuran file catatan dan juga meningkatkan pembacaannya.
-</p>
-
-<h2>Pengujian</h2>
-<p>
-Untuk melihat bagaimana sistem blog kita merespon permintaan tidak benar dari pengguna, kita menguji URL <tt>http://hostname/blog/index.php?page=posts.ReadPost&id=100</tt>. Kita akan melihat halaman kesalahan berikut yang berbeda dari apa yang telah kita lihat sebelumnya.
-</p>
-
-<img src="<%~ output3.gif %>" class="output" />
-
-<p>
-Jika kita mencari di bawah direktori <tt>protected/runtime</tt>, kita akan menemukan file bernama <tt>prado.log</tt>. Ini adalah file log yang baru dikonfigurasi untuk menyimpan pesan kesalahan. File dapat berisi konten seperti berikut,
-</p>
-
-<com:TTextHighlighter CssClass="source" Language="prado">
-Jun 28 22:15:27 [Error] [BlogApplication] Unable to find the specified post.
-Jun 29 08:42:57 [Error] [BlogApplication] Unable to find the specified post.
-</com:TTextHighlighter>
-
-</com:TContent> \ No newline at end of file
diff --git a/demos/blog-tutorial/protected/pages/Day5/id/Performance.page b/demos/blog-tutorial/protected/pages/Day5/id/Performance.page
deleted file mode 100755
index 62a195b3..00000000
--- a/demos/blog-tutorial/protected/pages/Day5/id/Performance.page
+++ /dev/null
@@ -1,67 +0,0 @@
-<com:TContent ID="Main">
-
-<h1>Penyesuaian Performansi</h1>
-
-<p>
-Sebelum kita menyebarkan sistem blog, kita ingin menyesuaikan performansi sistem.
-</p>
-
-<h2>Mengubah Mode Aplikasi</h2>
-
-<p>
-Aplikasi PRADO dapat dikonfigurasi untuk berjalan dalam mode berbeda. Standarnya, ia berjalan dalam mode debug yang membuat banyak catatan pesan dan seandainya ada kesalahan, menampilkan pangilan stack lengkap atas tempat kesalahan. Perilaku demikian lebih disukai selama pengembangan, tapi tidak jika sistem sudah dalam produksi. Untuk mengubah mode aplikasi dari <tt>Debug</tt> ke <tt>Normal</tt> (berarti mode produksi), kita memodifikasi konfigurasi aplikasi seperti berikut:
-</p>
-
-<com:TTextHighlighter CssClass="source" Language="xml">
-<?xml version="1.0" encoding="utf-8"?>
-<application id="blog" mode="Normal">
- ......
-</application>
-</com:TTextHighlighter>
-
-<h2>Menghidupkan Cache</h2>
-
-<p>
-Ada banyak pekerjaan penguraian terkait dalam sebuah aplikasi PRADO: konfigurasi XML, template, tema, skin, dll. Untuk setiap permintaan pengguna, PRADO perlu melakukan ulang penguraian. Untuk menghemat usaha ini, kita dapat menghidupkan cache. Untuk melakukannya, kita mengubah konfigurasi aplikasi seperti berikut,
-</p>
-
-<com:TTextHighlighter CssClass="source" Language="xml">
-......
-<modules>
- ......
- <module id="cache" class="System.Caching.TDbCache" />
- ......
-</modules>
-......
-</com:TTextHighlighter>
-
-<p>
-Sekarang setelah mengakses setiap halaman dalam sistem blog kita, kita akan dapat menemukan file bernama <tt>sqlite3.cache</tt>. Ini adalah file database yang memelihara template halaman yang diuraikan, konfigurasi, dll.
-</p>
-
-<com:InfoBox>
-Modul cache yang baru kita hidupkan menggunakan database sebagai medium cache persisten. PRADO juga mempunyai modul cache lain yang menggunakan medium cache lebih cepat, seperti misalnya <tt>TMemCache</tt>, <tt>TAPCCache</tt>. Diperlukan instalasi dari ekstensi PHP terkait.
-</com:InfoBox>
-
-
-<h2>Menggunakan <tt>pradolite.php</tt></h2>
-
-<p>
-Menjalankan halaman PRADO melibatkan puluhan file PHP, yang dapat menghabiskan waktu. File-file ini juga membawa banyak komentar untuk membuat dokumentasi APU ramah-pengguna. Untuk mengurangi beban ini, kita memodifikasi <tt>index.php</tt> dan mengganti inklusi <tt>prado.php</tt> dengan <tt>pradolite.php</tt>. Yang kedua adalah file besar yang dibuat dengan menggabung file kode tertentu dan membuang komentar. Selanjutnya kita bisa mengubah <tt>index.php</tt> seperti berikut,
-</p>
-
-<h2>Teknik Lain</h2>
-
-<p>
-Ada teknik lain untuk meningkatkan performansi lebih lanjut terhadap aplikasi PRADO. Berdasarkan pengalaman kami, salah satu lubang botol dalam aplikasi Web adalah database tier. Query database seringkali membutuhkan waktu lama untuk menyelesaikannya, yang memperlambat waktu respon terhadap permintaan sebuah halaman. Cache adalah solusi utama untuk masalah ini. Modul cache yang dihidupkan dalam konfigurasi aplikasi kita juga bisa dipakai untuk keperluan ini.
-</p>
-
-<p>
-Untuk halaman yang relatif stabil dan jarang diakses, <a href="http://www.pradosoft.com/demos/quickstart/?page=Controls.OutputCache">output caching</a> bisa dipertimbangkan. Output caching melakukan cache output HTML dari bagian yang dipilih pada sebuah halaman. Ini dapat meningkatkan performansi dari halaman yang di-cache secara signifikan.
-</p>
-
-<p>
-Teknik cache server terbukti sangat efektif dalam meningkatkan performansi atas aplikasi PRADO. Sebagai contoh, kita telah mengamati bahwa dengan menggunakan Zend Optimizer, RPS (request per second) dari aplikasi PRADO bisa ditingkatkan lebih dari sepuluh kali lipat. Tentu saja, ini pada beban dari output lama, sementara teknik cache PRADO selalu memastikan kebenaran dari output.
-</p>
-
-</com:TContent> \ No newline at end of file
diff --git a/demos/blog-tutorial/protected/pages/Day5/id/Summary.page b/demos/blog-tutorial/protected/pages/Day5/id/Summary.page
deleted file mode 100755
index 8925948b..00000000
--- a/demos/blog-tutorial/protected/pages/Day5/id/Summary.page
+++ /dev/null
@@ -1,36 +0,0 @@
-<com:TContent ID="Main">
-
-<h1>Ringkasan</h1>
-
-<p>
-Akhirnya kita dapat menyebarkan sistem blog kita. Untuk melakukannya, kita hanya perlu meng-copy seluruh direktori <tt>blog</tt> directory ke direktori Web sasaran. Kita perlu untuk memodifikasi <tt>index.php</tt> agar ia dapat mencari path yang benar di mana kerangka kerja PRADO diinstalasi.
-</p>
-
-<p>
-Dengan demikian kita telah menyelesaikan sistem blog kita. Proses terlihat tidak gampang karena ia memerlukan hampir lima hari untuk sampai di sini. Akan tetapi, karena kita memulainya dari awal, tujuan utama dari tutorial ini adalah untuk membantu para pengembang PRADO terbiasa dengan teknik yang umum digunakan dalam PRADO. Tutorial tidak berarti menyelesaikan sistem blog dalam waktu lima menit dan selanjutnya tidak mempelajari apapun.
-</p>
-
-<p>
-Secara ringkas, mengembangkan aplikasi PRADO dengan kendali-DB melibatkan langkah-langkah berikut:
-</p>
-<ol>
- <li>Mendesain dan membuat database</li>
- <li>Membuat tata letak aplikasi awal menggunakan <tt>prado-cli</tt></li>
- <li>Menyiapkan proses pengendalian kesalahan untuk menghadapi kesalahan pengguna-akhir</li>
- <li>Membuat dan menyiapkan tema</li>
- <li>Mendesain dan membuat kelas master untuk berbagi tata letak umum halaman</li>
- <li>Membuat kelas database dan menyiapkan koneksi database</li>
- <li>Mendesain dan membuat bermacam-macam halaman</li>
- <li>Menguji dan menyesuaikan performansi</li>
- <li>Menyebarkan aplikasi</li>
-</ol>
-
-<p>
-Tidak seperti urutan dalam tutorial kita, pengendalian kesalahan dan pembuatan tema dikerjakan lebih awal dalam proses di atas. Ini dikarenakan seringkali diperlukan perubahan besar dalam kode kelas dan template. Sebagai contoh, kita perlu mengganti <tt>THttpException</tt> dengan <tt>BlogException</tt> dalam tutorial kita. Jika kita mendefinisikan kelas stylesheet lebih awal, kita dapat dengan mudah menggunakannya saat membuat template halaman.
-</p>
-
-<p>
-Sebagai tips terakhir, coba untuk berpikir dalam cara terorientasi-obyek selama mendesain dan mengimplementasikan. Gunakan turunan kelas dan komposisi secara luas, dan Anda akan menemukan seluruh proyek lebih mudah dikembangkan secara paralel oleh multipel pengembang. Kode juga lebih banya memiliki kesempatan dipakai ulang agar proyek mendatang dapat diselesaikan dalam waktu yang lebih cepat.
-</p>
-
-</com:TContent> \ No newline at end of file
diff --git a/demos/blog-tutorial/protected/pages/Day5/id/UseTheme.page b/demos/blog-tutorial/protected/pages/Day5/id/UseTheme.page
deleted file mode 100755
index 6766d659..00000000
--- a/demos/blog-tutorial/protected/pages/Day5/id/UseTheme.page
+++ /dev/null
@@ -1,138 +0,0 @@
-<com:TContent ID="Main">
-
-<h1>Menggunakan Tema dan Skin</h1>
-
-<p>
-PRADO memiliki dukungan dasar untuk <a href="http://www.pradosoft.com/demos/quickstart/?page=Advanced.Themes">tema</a>. Dengan menggunakan tema, kita dapat memisahkan logika dan penyajian secara lebih baik, dan kita juga bisa mengubah penampilan keseluruhan pada sistem blog kita jauh lebih mudah.
-</p>
-
-<h2>Membuat Tema</h2>
-
-<p>
-Pertama kita buat direktori baru bernama <tt>themes</tt>. Ini adalah direktori leluhur bagi semua tema terkait aplikasi PRADO tertentu. Setiap subdirektori di bawah direktori ini yang nama temanya adalah nama subdirektori.
-</p>
-
-<p>
-Untuk membuat tema bernama <tt>Basic</tt>, kita membuat subdirektori <tt>theme/Basic</tt>. Di bawah direktori ini, kita dapat menempatkan file stylesheet dependen-tema, file Javascript, gambar, dan file skin.
-</p>
-
-<com:InfoBox>
-Direktori <tt>themes</tt> harus bisa diakses dari Web, seperti halnya direktori <tt>assets</tt>. Jangan menempatkan file data sensitif di bawah direktori ini. Anda bisa mengubah nama atau lokasi dari direktori ini dengan mengkonfigurasi modul <a href="http://www.pradosoft.com/docs/classdoc/TThemeManager">TThemeManager</a> dalam konfigurasi aplikasi.
-</com:InfoBox>
-
-
-<h3>Membuat File Stylesheet</h2>
-
-<p>
-Di bawah direktori <tt>themes/Basic</tt>, kita membuat sebuah file CSS stylesheet bernama <tt>style.css</tt>. ketika sebuah halaman menggunakan tema ini, PRADO secara otomatis akan mengimpor stylesheet ini ke halaman. Hal yang sama terjadi untuk file Javascript.
-</p>
-
-<p>
-File CSS ditampilkan seperti berikut.
-</p>
-
-<com:TTextHighlighter CssClass="source">
-body {
- font-family: verdana, 'trebuchet ms', sans-serif;
- font-size: 10pt;
- background: white;
-}
-#page {
- margin: 0 auto 0 auto;
- width: 600px;
-}
-#footer {
- text-align: center;
- margin-top: 10px;
- padding: 10px;
- border-top: 1px solid silver;
-}
-.post-box {
- margin-bottom: 10px;
- padding: 5px;
-}
-.post-box h3 {
- padding: 5px;
- font-size: 13pt;
- background: lightgray;
-}
-.post-box a {
- color: black;
- text-decoration: none;
-}
-.post-box a:hover {
- color: red;
-}
-</com:TTextHighlighter>
-
-
-<h3>Membuat File Skin</h2>
-
-<p>
-Kita menggunakan skin untuk menginisialisasi properti kontrol PRADO. Skin disimpan sebagai file skin (nama berakhiran <tt>.skin</tt>) di bawah direktori tema. Setiap file skin bisa berisi multipel skin untuk satu atau beberapa tipe kontrol.
-</p>
-
-<p>
-Sebagai pengujian, kita akan mencoba membuat sebuah skin yang mengubah warna latar belakang link tombol dalam footer halaman. Kita membuat sebuah file bernama <tt>button.skin</tt> di bawah direktori tema <tt>themes/Basic</tt>.
-</p>
-
-<com:TTextHighlighter CssClass="source" Language="prado">
-&lt;com:THyperLink SkinID="MainMenu" BackColor="lightgreen" />
-</com:TTextHighlighter>
-
-<p>
-File skin <tt>button.skin</tt> hanya berisi satu skin untuk kontrol <tt>THyperLink</tt> yang properti <tt>SkinID</tt>-nya adalah <tt>MainMenu</tt>. Skin menyetel warna latar belakang kontrol ke hijau-terang.
-</p>
-
-<p>
-Sejalan dengan itu, kita perlu memodifikasi <tt>protected/common/MainLayout.tpl</tt> agar link tombol dalam footer menggunakan <tt>MainMenu</tt> sebagai <tt>SkinID</tt>-nya.
-</p>
-<com:TTextHighlighter CssClass="source" Language="prado">
-......
-<div id="footer">
-......
-&lt;com:THyperLink Text="Home" SkinID="MainMenu"
- NavigateUrl="&lt;%= $this->Service->DefaultPageUrl %>" />
-
-&lt;com:THyperLink Text="New Post" SkinID="MainMenu"
- NavigateUrl="&lt;%= $this->Service->constructUrl('posts.NewPost') %>"
- Visible="&lt;%= !$this->User->IsGuest %>" />
-......
-</div>
-......
-</com:TTextHighlighter>
-
-<com:InfoBox>
-Sintaks untuk file skin sangat mirip dengan template PRADO. Setiap tag <tt>&lt;com:&gt;</tt> mendefinisikan sebuah skin untuk tipe kontrol tertentu. PRADO secara otomatis mengumpulkan seluruh file skin dalam sebuah tema dan menerapkannya ketika halaman bertema sedang disajikan.
-</com:InfoBox>
-
-
-<h2>Menggunakan Tema</h2>
-
-<p>
-Untuk menggunakan tema yang baru kita buat, kita memodifikasi konfigurasi aplikasi seperti berikut. Seperti kita lihat, properti <tt>Theme</tt> untuk semua halaman disetel sebagai <tt>Basic</tt>, nama tema yang baru saja kita buat.
-</p>
-
-<com:TTextHighlighter CssClass="source" Language="xml">
-......
- <services>
- <service id="page" class="TPageService" DefaultPage="posts.ListPost">
- <pages MasterClass="Application.layouts.MainLayout" Theme="Basic" />
- </service>
- </services>
-......
-</com:TTextHighlighter>
-
-<com:InfoBox>
-Dimungkinkan untuk menetapkan tema berbeda untuk halaman yang berbeda, dan ini dapat dikerjakan baik dalam konfigurasi aplikasi/halaman ataupun secara programatis (perhatikan <tt>Theme</tt> adalah properti halaman). Untuk yan gterakhir, ia harus dikerjakan dalam metode <tt>onPreInit()</tt> pada halaman karena PRADO menerapkan tema ke halaman sebelumnya dalam masa hidup halaman.
-</com:InfoBox>
-
-
-<h2>Pengujian</h2>
-<p>
-Untuk melihat bagaimana halaman blog terlihat, kunjungi URL <tt>http://hostname/blog/index.php</tt>. Kita akan melihat font, tata letak, bingkai beruah dalam halaman. Juga, link tombol dalam footer mempunyai latar belakang hijau terang.
-</p>
-
-<img src="<%~ output.gif %>" class="output" />
-
-</com:TContent> \ No newline at end of file
diff --git a/demos/blog-tutorial/protected/pages/Day5/id/output.gif b/demos/blog-tutorial/protected/pages/Day5/id/output.gif
deleted file mode 100755
index 67bd18a3..00000000
--- a/demos/blog-tutorial/protected/pages/Day5/id/output.gif
+++ /dev/null
Binary files differ
diff --git a/demos/blog-tutorial/protected/pages/Day5/id/output2.gif b/demos/blog-tutorial/protected/pages/Day5/id/output2.gif
deleted file mode 100755
index 16c81704..00000000
--- a/demos/blog-tutorial/protected/pages/Day5/id/output2.gif
+++ /dev/null
Binary files differ
diff --git a/demos/blog-tutorial/protected/pages/Day5/id/output3.gif b/demos/blog-tutorial/protected/pages/Day5/id/output3.gif
deleted file mode 100755
index 6879bbdf..00000000
--- a/demos/blog-tutorial/protected/pages/Day5/id/output3.gif
+++ /dev/null
Binary files differ