Add tabset to login and make it phpcs-compliant
This commit is contained in:
		| @@ -1,9 +1,12 @@ | |||||||
| <?php | <?php | ||||||
| /* | /** | ||||||
|  * Laconica - a distributed open-source microblogging tool |  * Laconica, the distributed open-source microblogging tool | ||||||
|  * Copyright (C) 2008, Controlez-Vous, Inc. |  | ||||||
|  * |  * | ||||||
|  * This program is free software: you can redistribute it and/or modify |  * List of replies | ||||||
|  |  * | ||||||
|  |  * PHP version 5 | ||||||
|  |  * | ||||||
|  |  * LICENCE: This program is free software: you can redistribute it and/or modify | ||||||
|  * it under the terms of the GNU Affero General Public License as published by |  * it under the terms of the GNU Affero General Public License as published by | ||||||
|  * the Free Software Foundation, either version 3 of the License, or |  * the Free Software Foundation, either version 3 of the License, or | ||||||
|  * (at your option) any later version. |  * (at your option) any later version. | ||||||
| @@ -15,19 +18,58 @@ | |||||||
|  * |  * | ||||||
|  * You should have received a copy of the GNU Affero General Public License |  * You should have received a copy of the GNU Affero General Public License | ||||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>. |  * along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||||
|  |  * | ||||||
|  |  * @category  Login | ||||||
|  |  * @package   Laconica | ||||||
|  |  * @author    Evan Prodromou <evan@controlyourself.ca> | ||||||
|  |  * @copyright 2008-2009 Control Yourself, Inc. | ||||||
|  |  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 | ||||||
|  |  * @link      http://laconi.ca/ | ||||||
|  */ |  */ | ||||||
|  |  | ||||||
| if (!defined('LACONICA')) { exit(1); } | if (!defined('LACONICA')) { | ||||||
|  |     exit(1); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * List of replies | ||||||
|  |  * | ||||||
|  |  * @category Personal | ||||||
|  |  * @package  Laconica | ||||||
|  |  * @author   Evan Prodromou <evan@controlyourself.ca> | ||||||
|  |  * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 | ||||||
|  |  * @link     http://laconi.ca/ | ||||||
|  |  */ | ||||||
|  |  | ||||||
| class LoginAction extends Action | class LoginAction extends Action | ||||||
| { | { | ||||||
|  |     /** | ||||||
|  |      * Has there been an error? | ||||||
|  |      */ | ||||||
|  |  | ||||||
|     var $error = null; |     var $error = null; | ||||||
|      |  | ||||||
|  |     /** | ||||||
|  |      * Is this a read-only action? | ||||||
|  |      * | ||||||
|  |      * @return boolean true | ||||||
|  |      */ | ||||||
|  |  | ||||||
|     function isReadOnly() |     function isReadOnly() | ||||||
|     { |     { | ||||||
|         return true; |         return true; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Handle input, produce output | ||||||
|  |      * | ||||||
|  |      * Switches on request method; either shows the form or handles its input. | ||||||
|  |      * | ||||||
|  |      * @param array $args $_REQUEST data | ||||||
|  |      * | ||||||
|  |      * @return void | ||||||
|  |      */ | ||||||
|  |  | ||||||
|     function handle($args) |     function handle($args) | ||||||
|     { |     { | ||||||
|         parent::handle($args); |         parent::handle($args); | ||||||
| @@ -40,21 +82,32 @@ class LoginAction extends Action | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Check the login data | ||||||
|  |      * | ||||||
|  |      * Determines if the login data is valid. If so, logs the user | ||||||
|  |      * in, and redirects to the 'with friends' page, or to the stored | ||||||
|  |      * return-to URL. | ||||||
|  |      * | ||||||
|  |      * @return void | ||||||
|  |      */ | ||||||
|  |  | ||||||
|     function checkLogin() |     function checkLogin() | ||||||
|     { |     { | ||||||
|         # XXX: login throttle |         // XXX: login throttle | ||||||
|  |  | ||||||
|         # CSRF protection - token set in common_notice_form() |         // CSRF protection - token set in common_notice_form() | ||||||
|         $token = $this->trimmed('token'); |         $token = $this->trimmed('token'); | ||||||
|         if (!$token || $token != common_session_token()) { |         if (!$token || $token != common_session_token()) { | ||||||
|             $this->clientError(_('There was a problem with your session token. Try again, please.')); |             $this->clientError(_('There was a problem with your session token. '. | ||||||
|  |                                  'Try again, please.')); | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         $nickname = common_canonical_nickname($this->trimmed('nickname')); |         $nickname = common_canonical_nickname($this->trimmed('nickname')); | ||||||
|         $password = $this->arg('password'); |         $password = $this->arg('password'); | ||||||
|         if (common_check_user($nickname, $password)) { |         if (common_check_user($nickname, $password)) { | ||||||
|             # success! |             // success! | ||||||
|             if (!common_set_user($nickname)) { |             if (!common_set_user($nickname)) { | ||||||
|                 $this->serverError(_('Error setting user.')); |                 $this->serverError(_('Error setting user.')); | ||||||
|                 return; |                 return; | ||||||
| @@ -64,10 +117,10 @@ class LoginAction extends Action | |||||||
|                 common_debug('Adding rememberme cookie for ' . $nickname); |                 common_debug('Adding rememberme cookie for ' . $nickname); | ||||||
|                 common_rememberme(); |                 common_rememberme(); | ||||||
|             } |             } | ||||||
|             # success! |             // success! | ||||||
|             $url = common_get_returnto(); |             $url = common_get_returnto(); | ||||||
|             if ($url) { |             if ($url) { | ||||||
|                 # We don't have to return to it again |                 // We don't have to return to it again | ||||||
|                 common_set_returnto(null); |                 common_set_returnto(null); | ||||||
|             } else { |             } else { | ||||||
|                 $url = common_local_url('all', |                 $url = common_local_url('all', | ||||||
| @@ -80,7 +133,7 @@ class LoginAction extends Action | |||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         # success! |         // success! | ||||||
|         if (!common_set_user($user)) { |         if (!common_set_user($user)) { | ||||||
|             $this->serverError(_('Error setting user.')); |             $this->serverError(_('Error setting user.')); | ||||||
|             return; |             return; | ||||||
| @@ -92,10 +145,10 @@ class LoginAction extends Action | |||||||
|             common_debug('Adding rememberme cookie for ' . $nickname); |             common_debug('Adding rememberme cookie for ' . $nickname); | ||||||
|             common_rememberme($user); |             common_rememberme($user); | ||||||
|         } |         } | ||||||
|         # success! |         // success! | ||||||
|         $url = common_get_returnto(); |         $url = common_get_returnto(); | ||||||
|         if ($url) { |         if ($url) { | ||||||
|             # We don't have to return to it again |             // We don't have to return to it again | ||||||
|             common_set_returnto(null); |             common_set_returnto(null); | ||||||
|         } else { |         } else { | ||||||
|             $url = common_local_url('all', |             $url = common_local_url('all', | ||||||
| @@ -105,30 +158,65 @@ class LoginAction extends Action | |||||||
|         common_redirect($url); |         common_redirect($url); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Store an error and show the page | ||||||
|  |      * | ||||||
|  |      * This used to show the whole page; now, it's just a wrapper | ||||||
|  |      * that stores the error in an attribute. | ||||||
|  |      * | ||||||
|  |      * @param string $error error, if any. | ||||||
|  |      * | ||||||
|  |      * @return void | ||||||
|  |      */ | ||||||
|  |  | ||||||
|     function showForm($error=null) |     function showForm($error=null) | ||||||
|     { |     { | ||||||
|         $this->error = $error; |         $this->error = $error; | ||||||
|         $this->showPage(); |         $this->showPage(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Title of the page | ||||||
|  |      * | ||||||
|  |      * @return string title of the page | ||||||
|  |      */ | ||||||
|  |  | ||||||
|     function title() |     function title() | ||||||
|     { |     { | ||||||
|         return _('Login'); |         return _('Login'); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Show page notice | ||||||
|  |      * | ||||||
|  |      * Display a notice for how to use the page, or the | ||||||
|  |      * error if it exists. | ||||||
|  |      * | ||||||
|  |      * @return void | ||||||
|  |      */ | ||||||
|  |  | ||||||
|     function showPageNotice() |     function showPageNotice() | ||||||
|     { |     { | ||||||
|         if ($this->error) { |         if ($this->error) { | ||||||
|             $this->element('p', 'error', $this->error); |             $this->element('p', 'error', $this->error); | ||||||
|         } else { |         } else { | ||||||
|             $instr = $this->getInstructions(); |             $instr  = $this->getInstructions(); | ||||||
|             $output = common_markup_to_html($instr); |             $output = common_markup_to_html($instr); | ||||||
|  |  | ||||||
|             $this->raw($output); |             $this->raw($output); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|      |  | ||||||
|  |     /** | ||||||
|  |      * Core of the display code | ||||||
|  |      * | ||||||
|  |      * Shows the login form. | ||||||
|  |      * | ||||||
|  |      * @return void | ||||||
|  |      */ | ||||||
|  |  | ||||||
|     function showContent() |     function showContent() | ||||||
|     {       |     { | ||||||
|         $this->elementStart('form', array('method' => 'post', |         $this->elementStart('form', array('method' => 'post', | ||||||
|                                            'id' => 'form_login', |                                            'id' => 'form_login', | ||||||
|                                            'class' => 'form_settings', |                                            'class' => 'form_settings', | ||||||
| @@ -158,14 +246,21 @@ class LoginAction extends Action | |||||||
|         $this->elementEnd('p'); |         $this->elementEnd('p'); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Instructions for using the form | ||||||
|  |      * | ||||||
|  |      * For "remembered" logins, we make the user re-login when they | ||||||
|  |      * try to change settings. Different instructions for this case. | ||||||
|  |      * | ||||||
|  |      * @return void | ||||||
|  |      */ | ||||||
|  |  | ||||||
|     function getInstructions() |     function getInstructions() | ||||||
|     { |     { | ||||||
|         if (common_logged_in() && |         if (common_logged_in() && !common_is_real_login() && | ||||||
|             !common_is_real_login() && |             common_get_returnto()) { | ||||||
|             common_get_returnto()) |             // rememberme logins have to reauthenticate before | ||||||
|         { |             // changing any profile settings (cookie-stealing protection) | ||||||
|             # rememberme logins have to reauthenticate before |  | ||||||
|             # changing any profile settings (cookie-stealing protection) |  | ||||||
|             return _('For security reasons, please re-enter your ' . |             return _('For security reasons, please re-enter your ' . | ||||||
|                      'user name and password ' . |                      'user name and password ' . | ||||||
|                      'before changing your settings.'); |                      'before changing your settings.'); | ||||||
| @@ -176,4 +271,18 @@ class LoginAction extends Action | |||||||
|                      'try [OpenID](%%action.openidlogin%%). '); |                      'try [OpenID](%%action.openidlogin%%). '); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * A local menu | ||||||
|  |      * | ||||||
|  |      * Shows different login/register actions. | ||||||
|  |      * | ||||||
|  |      * @return void | ||||||
|  |      */ | ||||||
|  |  | ||||||
|  |     function showLocalNav() | ||||||
|  |     { | ||||||
|  |         $nav = new LoginGroupNav($this); | ||||||
|  |         $nav->show(); | ||||||
|  |     } | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										96
									
								
								lib/logingroupnav.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										96
									
								
								lib/logingroupnav.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,96 @@ | |||||||
|  | <?php | ||||||
|  | /** | ||||||
|  |  * Laconica, the distributed open-source microblogging tool | ||||||
|  |  * | ||||||
|  |  * Menu for login group of actions | ||||||
|  |  * | ||||||
|  |  * PHP version 5 | ||||||
|  |  * | ||||||
|  |  * LICENCE: This program is free software: you can redistribute it and/or modify | ||||||
|  |  * it under the terms of the GNU Affero General Public License as published by | ||||||
|  |  * the Free Software Foundation, either version 3 of the License, or | ||||||
|  |  * (at your option) any later version. | ||||||
|  |  * | ||||||
|  |  * This program is distributed in the hope that it will be useful, | ||||||
|  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  |  * GNU Affero General Public License for more details. | ||||||
|  |  * | ||||||
|  |  * You should have received a copy of the GNU Affero General Public License | ||||||
|  |  * along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||||
|  |  * | ||||||
|  |  * @category  Menu | ||||||
|  |  * @package   Laconica | ||||||
|  |  * @author    Evan Prodromou <evan@controlyourself.ca> | ||||||
|  |  * @copyright 2008 Control Yourself, Inc. | ||||||
|  |  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 | ||||||
|  |  * @link      http://laconi.ca/ | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | if (!defined('LACONICA')) { | ||||||
|  |     exit(1); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | require_once INSTALLDIR.'/lib/widget.php'; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Menu for login group of actions | ||||||
|  |  * | ||||||
|  |  * @category Output | ||||||
|  |  * @package  Laconica | ||||||
|  |  * @author   Evan Prodromou <evan@controlyourself.ca> | ||||||
|  |  * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 | ||||||
|  |  * @link     http://laconi.ca/ | ||||||
|  |  * | ||||||
|  |  * @see      Widget | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | class LoginGroupNav extends Widget | ||||||
|  | { | ||||||
|  |     var $action = null; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Construction | ||||||
|  |      * | ||||||
|  |      * @param Action $action current action, used for output | ||||||
|  |      */ | ||||||
|  |  | ||||||
|  |     function __construct($action=null) | ||||||
|  |     { | ||||||
|  |         parent::__construct($action); | ||||||
|  |         $this->action = $action; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Show the menu | ||||||
|  |      * | ||||||
|  |      * @return void | ||||||
|  |      */ | ||||||
|  |  | ||||||
|  |     function show() | ||||||
|  |     { | ||||||
|  |         # action => array('prompt', 'title') | ||||||
|  |         $menu = | ||||||
|  |           array('login' => | ||||||
|  |                 array(_('Login'), | ||||||
|  |                       _('Login with a username and password')), | ||||||
|  |                 'register' => | ||||||
|  |                 array(_('Register'), | ||||||
|  |                       _('Sign up for a new account')), | ||||||
|  |                 'openid' => | ||||||
|  |                 array(_('OpenID'), | ||||||
|  |                       _('Login or register with OpenID'))); | ||||||
|  |  | ||||||
|  |         $action_name = $this->action->trimmed('action'); | ||||||
|  |         $this->action->elementStart('ul', array('class' => 'nav')); | ||||||
|  |  | ||||||
|  |         foreach ($menu as $menuaction => $menudesc) { | ||||||
|  |             $this->action->menuItem(common_local_url($menuaction), | ||||||
|  | 				    $menudesc[0], | ||||||
|  | 				    $menudesc[1], | ||||||
|  | 				    $action_name === $menuaction); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         $this->action->elementEnd('ul'); | ||||||
|  |     } | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user