From e2cb0b52aaa02a3f3f41d0df377d189529713738 Mon Sep 17 00:00:00 2001 From: wei <> Date: Thu, 10 May 2007 23:00:04 +0000 Subject: Update blog tutorial --- demos/blog-tutorial/protected/pages/Day3/Auth.page | 84 +++++----- .../protected/pages/Day3/CreateAdminUser.page | 58 +++---- .../protected/pages/Day3/CreateEditUser.page | 177 +++++++++++---------- .../protected/pages/Day3/CreateLoginUser.page | 106 ++++++------ .../protected/pages/Day3/CreateNewUser.page | 120 +++++++------- 5 files changed, 273 insertions(+), 272 deletions(-) (limited to 'demos/blog-tutorial/protected/pages/Day3') diff --git a/demos/blog-tutorial/protected/pages/Day3/Auth.page b/demos/blog-tutorial/protected/pages/Day3/Auth.page index 82c667d7..8d066b24 100644 --- a/demos/blog-tutorial/protected/pages/Day3/Auth.page +++ b/demos/blog-tutorial/protected/pages/Day3/Auth.page @@ -52,50 +52,50 @@ Prado::using('System.Security.TDbUserManager'); */ class BlogUser extends TDbUser { - /** - * Creates a BlogUser object based on the specified username. - * This method is required by TDbUser. It checks the database - * to see if the specified username is there. If so, a BlogUser - * object is created and initialized. - * @param string the specified username - * @return BlogUser the user object, null if username is invalid. - */ - public function createUser($username) - { - // use UserRecord Active Record to look for the specified username - $userRecord=UserRecord::finder()->findByPk($username); - if($userRecord instanceof UserRecord) // if found - { - $user=new BlogUser($this->Manager); - $user->Name=$username; // set username - $user->Roles=($userRecord->role==1?'admin':'user'); // set role - $user->IsGuest=false; // the user is not a guest - return $user; - } - else - return null; - } + /** + * Creates a BlogUser object based on the specified username. + * This method is required by TDbUser. It checks the database + * to see if the specified username is there. If so, a BlogUser + * object is created and initialized. + * @param string the specified username + * @return BlogUser the user object, null if username is invalid. + */ + public function createUser($username) + { + // use UserRecord Active Record to look for the specified username + $userRecord=UserRecord::finder()->findByPk($username); + if($userRecord instanceof UserRecord) // if found + { + $user=new BlogUser($this->Manager); + $user->Name=$username; // set username + $user->Roles=($userRecord->role==1?'admin':'user'); // set role + $user->IsGuest=false; // the user is not a guest + return $user; + } + else + return null; + } - /** - * Checks if the specified (username, password) is valid. - * This method is required by TDbUser. - * @param string username - * @param string password - * @return boolean whether the username and password are valid. - */ - public function validateUser($username,$password) - { - // use UserRecord Active Record to look for the (username, password) pair. - return UserRecord::finder()->findBy_username_AND_password($username,$password)!==null; - } + /** + * Checks if the specified (username, password) is valid. + * This method is required by TDbUser. + * @param string username + * @param string password + * @return boolean whether the username and password are valid. + */ + public function validateUser($username,$password) + { + // use UserRecord Active Record to look for the (username, password) pair. + return UserRecord::finder()->findBy_username_AND_password($username,$password)!==null; + } - /** - * @return boolean whether this user is an administrator. - */ - public function getIsAdmin() - { - return $this->isInRole('admin'); - } + /** + * @return boolean whether this user is an administrator. + */ + public function getIsAdmin() + { + return $this->isInRole('admin'); + } } diff --git a/demos/blog-tutorial/protected/pages/Day3/CreateAdminUser.page b/demos/blog-tutorial/protected/pages/Day3/CreateAdminUser.page index 36b43014..95d7dac5 100644 --- a/demos/blog-tutorial/protected/pages/Day3/CreateAdminUser.page +++ b/demos/blog-tutorial/protected/pages/Day3/CreateAdminUser.page @@ -83,35 +83,35 @@ In the above page template, the datagrid's OnDeleteCommand event is tta class AdminUser extends TPage { - /** - * Populates the datagrid with user lists. - * This method is invoked by the framework when initializing the page - * @param mixed event parameter - */ - public function onInit($param) - { - parent::onInit($param); - // fetches all data account information - $this->UserGrid->DataSource=UserRecord::finder()->findAll(); - // binds the data to interface components - $this->UserGrid->dataBind(); - } - - /** - * Deletes a specified user record. - * This method responds to the datagrid's OnDeleteCommand event. - * @param TDataGrid the event sender - * @param TDataGridCommandEventParameter the event parameter - */ - public function deleteButtonClicked($sender,$param) - { - // obtains the datagrid item that contains the clicked delete button - $item=$param->Item; - // obtains the primary key corresponding to the datagrid item - $username=$this->UserGrid->DataKeys[$item->ItemIndex]; - // deletes the user record with the specified username primary key - UserRecord::finder()->deleteByPk($username); - } + /** + * Populates the datagrid with user lists. + * This method is invoked by the framework when initializing the page + * @param mixed event parameter + */ + public function onInit($param) + { + parent::onInit($param); + // fetches all data account information + $this->UserGrid->DataSource=UserRecord::finder()->findAll(); + // binds the data to interface components + $this->UserGrid->dataBind(); + } + + /** + * Deletes a specified user record. + * This method responds to the datagrid's OnDeleteCommand event. + * @param TDataGrid the event sender + * @param TDataGridCommandEventParameter the event parameter + */ + public function deleteButtonClicked($sender,$param) + { + // obtains the datagrid item that contains the clicked delete button + $item=$param->Item; + // obtains the primary key corresponding to the datagrid item + $username=$this->UserGrid->DataKeys[$item->ItemIndex]; + // deletes the user record with the specified username primary key + UserRecord::finder()->deleteByPk($username); + } } diff --git a/demos/blog-tutorial/protected/pages/Day3/CreateEditUser.page b/demos/blog-tutorial/protected/pages/Day3/CreateEditUser.page index 64ac6798..055ea62b 100644 --- a/demos/blog-tutorial/protected/pages/Day3/CreateEditUser.page +++ b/demos/blog-tutorial/protected/pages/Day3/CreateEditUser.page @@ -44,23 +44,23 @@ As you may have guessed, the page template EditUser is largely the same
Re-type Password: <com:TCompareValidator - ControlToValidate="Password" - ControlToCompare="Password2" - ErrorMessage="Your password entries did not match." - Display="Dynamic" /> + ControlToValidate="Password" + ControlToCompare="Password2" + ErrorMessage="Your password entries did not match." + Display="Dynamic" />
<com:TTextBox ID="Password2" TextMode="Password" />
Email Address: <com:TRequiredFieldValidator - ControlToValidate="Email" - ErrorMessage="Please provide your email address." - Display="Dynamic" /> + ControlToValidate="Email" + ErrorMessage="Please provide your email address." + Display="Dynamic" /> <com:TEmailAddressValidator - ControlToValidate="Email" - ErrorMessage="You entered an invalid email address." - Display="Dynamic" /> + ControlToValidate="Email" + ErrorMessage="You entered an invalid email address." + Display="Dynamic" />
<com:TTextBox ID="Email" /> @@ -69,8 +69,8 @@ As you may have guessed, the page template EditUser is largely the same Role:
<com:TDropDownList ID="Role"> - <com:TListItem Text="Normal User" Value="0" /> - <com:TListItem Text="Administrator" Value="1" /> + <com:TListItem Text="Normal User" Value="0" /> + <com:TListItem Text="Administrator" Value="1" /> </com:TDropDownList> </com:TControl> @@ -100,82 +100,83 @@ Based on the above description and template, we need to write a page class that class EditUser extends TPage { - /** - * Initializes the inputs with existing user data. - * This method is invoked by the framework when the page is being initialized. - * @param mixed event parameter - */ - public function onInit($param) - { - parent::onInit($param); - if(!$this->IsPostBack) // if the page is initially requested - { - // Retrieves the existing user data. This is equivalent to: - // $userRecord=$this->getUserRecord(); - $userRecord=$this->UserRecord; - - // Populates the input controls with the existing user data - $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; - } - } - - /** - * Saves the user account if all inputs are valid. - * This method responds to the OnClick event of the "save" button. - * @param mixed event sender - * @param mixed event parameter - */ - public function saveButtonClicked($sender,$param) - { - if($this->IsValid) // when all validations succeed - { - // Retrieves the existing user data. This is equivalent to: - $userRecord=$this->UserRecord; - - // Fetches the input data - $userRecord->username=$this->Username->Text; - // update password when the input is not empty - if(!empty($this->Password->Text)) - $userRecord->password=$this->Password->Text; - $userRecord->email=$this->Email->Text; - // update the role if the current user is an administrator - if($this->User->IsAdmin) - $userRecord->role=(int)$this->Role->SelectedValue; - $userRecord->first_name=$this->FirstName->Text; - $userRecord->last_name=$this->LastName->Text; - - // saves to the database via Active Record mechanism - $userRecord->save(); - - // redirects the browser to the homepage - $this->Response->redirect($this->Service->constructUrl($this->Service->DefaultPage)); - } - } - - /** - * Returns the user data to be editted. - * @return UserRecord the user data to be editted. - * @throws THttpException if the user data is not found. - */ - protected function getUserRecord() - { - // the user to be editted is the currently logged-in user - $username=$this->User->Name; - // if the 'username' GET var is not empty and the current user - // is an administrator, we use the GET var value instead. - if($this->User->IsAdmin && $this->Request['username']!==null) - $username=$this->Request['username']; - - // use Active Record to look for the specified username - $userRecord=UserRecord::finder()->findByPk($username); - if(!($userRecord instanceof UserRecord)) - throw new THttpException(500,'Username is invalid.'); - return $userRecord; - } + /** + * Initializes the inputs with existing user data. + * This method is invoked by the framework when the page is being initialized. + * @param mixed event parameter + */ + public function onInit($param) + { + parent::onInit($param); + if(!$this->IsPostBack) // if the page is initially requested + { + // Retrieves the existing user data. This is equivalent to: + // $userRecord=$this->getUserRecord(); + $userRecord=$this->UserRecord; + + // Populates the input controls with the existing user data + $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; + } + } + + /** + * Saves the user account if all inputs are valid. + * This method responds to the OnClick event of the "save" button. + * @param mixed event sender + * @param mixed event parameter + */ + public function saveButtonClicked($sender,$param) + { + if($this->IsValid) // when all validations succeed + { + // Retrieves the existing user data. This is equivalent to: + $userRecord=$this->UserRecord; + + // Fetches the input data + $userRecord->username=$this->Username->Text; + // update password when the input is not empty + if(!empty($this->Password->Text)) + $userRecord->password=$this->Password->Text; + $userRecord->email=$this->Email->Text; + // update the role if the current user is an administrator + if($this->User->IsAdmin) + $userRecord->role=(int)$this->Role->SelectedValue; + $userRecord->first_name=$this->FirstName->Text; + $userRecord->last_name=$this->LastName->Text; + + // saves to the database via Active Record mechanism + $userRecord->save(); + + // redirects the browser to the homepage + $url=$this->Service->constructUrl($this->Service->DefaultPage); + $this->Response->redirect($url); + } + } + + /** + * Returns the user data to be editted. + * @return UserRecord the user data to be editted. + * @throws THttpException if the user data is not found. + */ + protected function getUserRecord() + { + // the user to be editted is the currently logged-in user + $username=$this->User->Name; + // if the 'username' GET var is not empty and the current user + // is an administrator, we use the GET var value instead. + if($this->User->IsAdmin && $this->Request['username']!==null) + $username=$this->Request['username']; + + // use Active Record to look for the specified username + $userRecord=UserRecord::finder()->findByPk($username); + if(!($userRecord instanceof UserRecord)) + throw new THttpException(500,'Username is invalid.'); + return $userRecord; + } } diff --git a/demos/blog-tutorial/protected/pages/Day3/CreateLoginUser.page b/demos/blog-tutorial/protected/pages/Day3/CreateLoginUser.page index 61ce27b7..d54fc967 100644 --- a/demos/blog-tutorial/protected/pages/Day3/CreateLoginUser.page +++ b/demos/blog-tutorial/protected/pages/Day3/CreateLoginUser.page @@ -31,19 +31,19 @@ Below we show the template for LoginPage. As we see, the page mainly co Username: <com:TRequiredFieldValidator - ControlToValidate="Username" - ErrorMessage="Please provide your username." - Display="Dynamic" /> + ControlToValidate="Username" + ErrorMessage="Please provide your username." + Display="Dynamic" />
<com:TTextBox ID="Username" />
Password: <com:TCustomValidator - ControlToValidate="Password" - ErrorMessage="Your entered an invalid password." - Display="Dynamic" - OnServerValidate="validateUser" /> + ControlToValidate="Password" + ErrorMessage="Your entered an invalid password." + Display="Dynamic" + OnServerValidate="validateUser" />
<com:TTextBox ID="Password" TextMode="Password" /> @@ -62,36 +62,36 @@ Like the Contact page, the LoginUser< class LoginUser extends TPage { - /** - * Validates whether the username and password are correct. - * This method responds to the TCustomValidator's OnServerValidate event. - * @param mixed event sender - * @param mixed event parameter - */ - public function validateUser($sender,$param) - { - $authManager=$this->Application->getModule('auth'); - if(!$authManager->login($this->Username->Text,$this->Password->Text)) - $param->IsValid=false; // tell the validator that validation fails - } - - /** - * Redirects the user's browser to appropriate URL if login succeeds. - * This method responds to the login button's OnClick event. - * @param mixed event sender - * @param mixed event parameter - */ - public function loginButtonClicked($sender,$param) - { - if($this->Page->IsValid) // all validations succeed - { - // obtain the URL of the privileged page that the user wanted to visit originally - $url=$this->Application->getModule('auth')->ReturnUrl; - if(empty($url)) // the user accesses the login page directly - $url=$this->Service->constructUrl($this->Service->DefaultPage); - $this->Response->redirect($url); - } - } + /** + * Validates whether the username and password are correct. + * This method responds to the TCustomValidator's OnServerValidate event. + * @param mixed event sender + * @param mixed event parameter + */ + public function validateUser($sender,$param) + { + $authManager=$this->Application->getModule('auth'); + if(!$authManager->login($this->Username->Text,$this->Password->Text)) + $param->IsValid=false; // tell the validator that validation fails + } + + /** + * Redirects the user's browser to appropriate URL if login succeeds. + * This method responds to the login button's OnClick event. + * @param mixed event sender + * @param mixed event parameter + */ + public function loginButtonClicked($sender,$param) + { + if($this->Page->IsValid) // all validations succeed + { + // obtain the URL of the privileged page that the user wanted to visit originally + $url=$this->Application->getModule('auth')->ReturnUrl; + if(empty($url)) // the user accesses the login page directly + $url=$this->Service->constructUrl($this->Service->DefaultPage); + $this->Response->redirect($url); + } + } } @@ -117,12 +117,12 @@ We modify the footer section of the MainLayout's template as follows. T