diff options
author | tof <> | 2007-08-31 09:58:35 +0000 |
---|---|---|
committer | tof <> | 2007-08-31 09:58:35 +0000 |
commit | 2fd00de2170fcb16b5214c7839c18f0dacab8cdb (patch) | |
tree | 797a7f6daa2b56aa7d141fab67f926f4dde323d0 /demos/blog-tutorial/protected/pages/Day3/fr/CreateEditUser.page | |
parent | fdc057236aa26dbf98ef3e5cb6d5b22cb6e05efe (diff) |
Full translation of Blog Tutorial in French. Thanks to Eric.M !
Diffstat (limited to 'demos/blog-tutorial/protected/pages/Day3/fr/CreateEditUser.page')
-rwxr-xr-x | demos/blog-tutorial/protected/pages/Day3/fr/CreateEditUser.page | 199 |
1 files changed, 199 insertions, 0 deletions
diff --git a/demos/blog-tutorial/protected/pages/Day3/fr/CreateEditUser.page b/demos/blog-tutorial/protected/pages/Day3/fr/CreateEditUser.page new file mode 100755 index 00000000..f83a30f5 --- /dev/null +++ b/demos/blog-tutorial/protected/pages/Day3/fr/CreateEditUser.page @@ -0,0 +1,199 @@ +<com:TContent ID="Main">
+
+<h1>Création de la page de mise à jour des utilisateurs <tt>EditUser</tt></h1>
+
+<p>
+La page <tt>EditUser</tt> ressemble beaucoup à la page <a href="?page=Day3.CreateNewUser">NewUser</a>. La différence principale est le fait que lorsque la page <tt>EditUser</tt> est requise, les champs sont renseignés avec les données de l'utilisateur en cours. Une autre différence est que la page <tt>EditUser</tt> est accessible à un utilisateur standard.
+</p>
+
+<p>
+Pour définir quels sont les comptes qui peuvent être modifiés, nous allons utiliser les règles suivantes :
+</p>
+<ul>
+<li>Si l'utilisateur actuel est un administrateur, il peut modifier n'importe quel compte utilisateur en spécifiant le pseudo de l'utilisateur dans l'URL sous la forme ?username='le nom'. Par exemple : <tt>http://hostname/blog/index.php?page=users.EditUser&username=demo</tt>.</li>
+<li>Si l'utilisateur actuel est un administrateur et qu'il n'a pas précisé d'username, ce sont les informations de l'administrateur qui seront mise à jour.</li>
+<li>Si l'utilisateur actuel est un utilisateur standard, seules les données de son compte seront accessibles et il ne pourra pas modifier son rôle.</li>
+</ul>
+
+<p>
+Nous créons deux fichiers <tt>protected/pages/users/EditUser.page</tt> et <tt>protected/pages/users/EditUser.php</tt> qui contiendront respectivement le gabarit et la classe.
+</p>
+
+<h2>Création du gabarit</h2>
+p>
+Comme vous avez pu le deviner, la page <tt>EditUser</tt> est fortement ressemblante à la page <tt>NewUser</tt>. En dehors du titre de la page et du bouton "envoyer", il y a trois différences principales.
+</p>
+
+<ul>
+<li>Le champ de saisie "username" est remplacé par un contrôle <a href="http://www.pradosoft.com/demos/quickstart/?page=Controls.Label">TLabel</a> vu qu'il n'est pas autorisé de modifier son pseudo;</li>
+<li>Le validateur pour le champ "password" est supprimé. Si l'utilisateur ne fournit pas de mot de passe durant la modification, cela indique que l'utilisateur ne veut pas en changer.</li>
+<li>Le champ "role" est entouré d'un <tt>TControl</tt>, ce qui nous permet de la rendre visible ou invisible en fonction de rôle de l'utilisateur connecté. Si l'utilisateur n'est pas un administrateur, le champ "role" ne sera pas affiché. Les utilisateurs standard n'ont pas le droit de modifier leur rôle.</li>
+</ul>
+
+
+<com:TTextHighlighter CssClass="source" Language="prado">
+<%@ Title="Mon blog - Mise à jour utilisateur" %>
+
+<com:TContent ID="Main">
+
+<h1>Mise à jour utilisateur</h1>
+
+<span>Pseudo:</span>
+<com:TLabel ID="Username" />
+
+<br/>
+<span>Mot de passe:</span>
+<br/>
+<com:TTextBox ID="Password" TextMode="Password" />
+
+<br/>
+<span>Confirmation mot de passe:</span>
+<com:TCompareValidator
+ ControlToValidate="Password"
+ ControlToCompare="Password2"
+ ErrorMessage="Différence entre le mot de passe et la confirmation."
+ Display="Dynamic" />
+<br/>
+<com:TTextBox ID="Password2" TextMode="Password" />
+
+<br/>
+<span>Email:</span>
+<com:TRequiredFieldValidator
+ ControlToValidate="Email"
+ ErrorMessage="Veuillez indiquer votre email."
+ Display="Dynamic" />
+<com:TEmailAddressValidator
+ ControlToValidate="Email"
+ ErrorMessage="Vous avez indiqué un mot de passe invalide."
+ Display="Dynamic" />
+<br/>
+<com:TTextBox ID="Email" />
+
+<com:TControl Visible="<%= $this->User->IsAdmin %>">
+<br/>
+<span>Role:</span>
+<br/>
+<com:TDropDownList ID="Role">
+ <com:TListItem Text="Utilisateur standard" Value="0" />
+ <com:TListItem Text="Administrateur" Value="1" />
+</com:TDropDownList>
+</com:TControl>
+
+<br/>
+<span>Prénom:</span>
+<br/>
+<com:TTextBox ID="FirstName" />
+
+<br/>
+<span>Nom:</span>
+<br/>
+<com:TTextBox ID="LastName" />
+
+<br/>
+<com:TButton Text="Enregistrer" OnClick="saveButtonClicked" />
+
+</com:TContent>
+</com:TTextHighlighter>
+
+
+<h2>Création du fichier de classe</h2>
+
+
+<p>
+En suivant les indications du gabarit, nous devons écrire une page de classe qui initialise les champs avec les données de l'utilisateur. De plus, la classe doit implémenter la méthode <tt>saveButtonClicked()</tt> appelée par l'évènement <tt>OnClick</tt> du bouton "Enregistrer".
+</p>
+
+<com:TTextHighlighter CssClass="source" Language="php">
+class EditUser extends TPage
+{
+ /**
+ * Initialise les champs avec les données de l'utilisateur.
+ * Cette méthode est appelée par le framework lorsque la page est initialisée.
+ * @param mixed param : paramètres de l'évènement
+ */
+ public function onInit($param)
+ {
+ parent::onInit($param);
+ if(!$this->IsPostBack) // est-ce que c'est le premier appel à la page
+ {
+ // Lit les informations de l'utilisateur. C'est équivalent à :
+ // $userRecord=$this->getUserRecord();
+ $userRecord=$this->UserRecord;
+
+ // Rempli les contrôles avec les données de l'utilisateur
+ $this->Username->Text=$userRecord->username;
+ $this->Email->Text=$userRecord->email;
+ $this->Role->SelectedValue=$userRecord->role;
+ $this->FirstName->Text=$userRecord->first_name;
+ $this->LastName->Text=$userRecord->last_name;
+ }
+ }
+
+ /**
+ * Enregistre les modifications si tous les validateurs sont Ok.
+ * Cette méthode répond à l'évènement OnClick du bouton "Enregistrer".
+ * @param mixed sender : celui qui a généré l'évènement
+ * @param mixed param : paramètres de l'évènement
+ */
+ public function saveButtonClicked($sender,$param)
+ {
+ if($this->IsValid) // toutes les validations Ok ?
+ {
+ // Lit les informations de l'utilisateur.
+ $userRecord=$this->UserRecord;
+
+ // Enresgistre les valeurs dans les champs de la BDD
+ $userRecord->username=$this->Username->Text;
+ // mets à jour le mot de passe s'il n'est pas vide
+ if(!empty($this->Password->Text))
+ $userRecord->password=$this->Password->Text;
+ $userRecord->email=$this->Email->Text;
+ // mets à jour le rôle si l'utilisateur actuel est un administrateur
+ if($this->User->IsAdmin)
+ $userRecord->role=(int)$this->Role->SelectedValue;
+ $userRecord->first_name=$this->FirstName->Text;
+ $userRecord->last_name=$this->LastName->Text;
+
+ // enregistre les modifications dans la BDD
+ $userRecord->save();
+
+ // redirige vers la page d'accueil
+ $this->Response->redirect($this->Service->DefaultPageUrl);
+ }
+ }
+
+ /**
+ * Retourne l'utilisateur qui doit être mis à jour.
+ * @return UserRecord l'utilisateur qui doit être modifié.
+ * @throws THttpException si l'utilisateur n'existe pas.
+ */
+ protected function getUserRecord()
+ {
+ // l'utilisateur à modifié est l'utilisateur actuellement connecté
+ $username=$this->User->Name;
+ // si la variable GET 'username' n'est pas vide et que l'utilisateur actuel
+ // est un administrateur, nous utilisons la variable GET à la place
+ if($this->User->IsAdmin && $this->Request['username']!==null)
+ $username=$this->Request['username'];
+
+ // lit les données de l'utilisateur par Active Record
+ $userRecord=UserRecord::finder()->findByPk($username);
+ if(!($userRecord instanceof UserRecord))
+ throw new THttpException(500,'Username is invalid.');
+ return $userRecord;
+ }
+}
+</com:TTextHighlighter>
+
+<com:TipBox>
+La méthode <tt>onInit()</tt> est appelée par PRADO lors du <a href="http://www.pradosoft.com/demos/quickstart/?page=Fundamentals.Pages">cycle de vie de la page</a>. Les autres méthodes couramment surchargées sont <tt>onPreInit()</tt>, <tt>onLoad()</tt> et <tt>onPreRender()</tt>.
+</com:TipBox>
+
+<h2>Test</h2>
+
+<p>
+Pour tester la page <tt>EditUser</tt>, rendons-nous à l'URL <tt>http://hostname/blog/index.php?page=users.EditUser&username=demo</tt>. Il vous sera peut-être demandé de vous authentifier auparavant si vous n'êtes pas déjà connecté. Essayez de vous connecter avec différents comptes (ie: admin/demo, demo/demo) et remarquez comment la page évolue différemment.
+</p>
+
+
+</com:TContent>
\ No newline at end of file |