diff options
-rw-r--r-- | modules/user/controllers/login.php | 29 | ||||
-rw-r--r-- | modules/user/libraries/Login_Form.php | 44 | ||||
-rw-r--r-- | modules/user/views/login.html.php | 41 | ||||
-rw-r--r-- | themes/default/css/screen.css | 6 | ||||
-rw-r--r-- | themes/default/js/login.js | 37 | ||||
-rw-r--r-- | themes/default/views/header.html.php | 3 |
6 files changed, 83 insertions, 77 deletions
diff --git a/modules/user/controllers/login.php b/modules/user/controllers/login.php index e6f10ec8..991fa73b 100644 --- a/modules/user/controllers/login.php +++ b/modules/user/controllers/login.php @@ -19,24 +19,41 @@ */ class Login_Controller extends Controller { public function index() { - $this->template->title = "User Login"; + Kohana::log("debug", "Login_Controller/index"); + $form = new Forge(); + $form->input("username")->rules("required|length[4,32]"); + $form->password("password")->rules("required|length[5,40]"); + $form->submit("Login"); + print $form->render("login.html", true); + } + + public function process() { + Kohana::log("debug", "Login_Controller/process"); - $form = new Login_Form(); + Kohana::log("debug", print_r($_POST, true)); + $form = new Forge("login.html", true); + $form->input("username")->rules("required|length[4,32]"); + $form->password("password")->rules("required|length[5,40]"); + $form->submit("Login"); + $response = array(); if ($form->validate()) { // Load the user $user = ORM::factory("user")->where("name", $form->username->value)->find(); if (!$user->loaded) { - $form->error_message = "Invalid username or password"; + $response["error_message"] = "Invalid username or password"; } else { if (user::is_correct_password($user,$form->password->value)) { user::login($user); - url::redirect("user/success.html"); + $response["error_message"] = ""; } else { - $form->error_message = "Invalid username or password"; + $response["error_message"] = "Invalid username or password"; } } + } else { + $response["error_message"] = "Invalid username or password"; } - $form->render(); + + print json_encode($response); } }
\ No newline at end of file diff --git a/modules/user/libraries/Login_Form.php b/modules/user/libraries/Login_Form.php deleted file mode 100644 index 6874cbd4..00000000 --- a/modules/user/libraries/Login_Form.php +++ /dev/null @@ -1,44 +0,0 @@ -<?php defined("SYSPATH") or die("No direct script access."); -/** - * Gallery - a web based photo album viewer and editor - * Copyright (C) 2000-2008 Bharat Mediratta - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. - */ -class Login_Form_Core extends Forge { - protected $error_message; - - public static function factory() { - return new Login_Form(); - } - - public function __construct() { - parent::__construct("login.html"); - $this->legend="Login"; - $this->input("username")->rules("required|length[4,32]"); - $this->password("password")->rules("required|length[5,40]"); - $this->submit("Login"); - } - - public function render($template = 'login.html', $custom = true) { - $form = parent::render($template, $custom); - $form->error_message = $this->error_message; - return $form; - } - - public function __set($key, $value) { - $this->$key = $value; - } -}
\ No newline at end of file diff --git a/modules/user/views/login.html.php b/modules/user/views/login.html.php index 58df6024..fb770f3f 100644 --- a/modules/user/views/login.html.php +++ b/modules/user/views/login.html.php @@ -1,24 +1,23 @@ <? defined("SYSPATH") or die("No direct script access."); ?> -<fieldset id="gLogin"> - <legend>Login</legend> - <ul> - <li> - <label for="username">Username</label> - <input type="text" class="text" id="username" /> - </li> - <li> - <label for="password">Password</label> - <input type="password" class="password" id="password" /> - </li> - <li> - <input type="submit" class="submit" value="<?= _("Login")?>" /> - </li> - <? if (!empty($error_message)): ?> +<form id="gLogin" action="<?= url::site("login/process") ?>"> + <fieldset> + <legend>Login</legend> + <ul> <li> - <p class="error" id="login_message"> - <?= $error_message ?> - </p> + <label for="username">Username</label> + <input type="text" id="gUsername" /> </li> - <? endif;?> - </ul> -</fieldset> + <li> + <label for="password">Password</label> + <input type="password" id="gPassword" /> + </li> + <li> + <input type="submit" class="submit" value="<?= _("Login")?>" /> + </li> + </ul> + </fieldset> + <fieldset> + <div class="gStatus gError gDisplayNone" id="gLoginMessage"> + </div> + </fieldset> +</form> diff --git a/themes/default/css/screen.css b/themes/default/css/screen.css index 5e37e8e9..a00ed05a 100644 --- a/themes/default/css/screen.css +++ b/themes/default/css/screen.css @@ -272,7 +272,7 @@ table.gMetadata td.toggle { } .gError { - + color: red; } .gWarning { @@ -392,8 +392,8 @@ table.gMetadata td.toggle { list-style-type: none; } -#gLoginMenu li input.text, -#gLoginMenu li input.password { +#gLoginMenu li input#gUsername, +#gLoginMenu li input#gPassword { padding: 0 0 .1em 0; width: 80px; } diff --git a/themes/default/js/login.js b/themes/default/js/login.js index a598f39a..6c017a47 100644 --- a/themes/default/js/login.js +++ b/themes/default/js/login.js @@ -1,11 +1,46 @@ +$(document).ready(function() { + $("#gLoginForm").submit(function() { + process_login(); + return false; + }); +}); + function show_login() { $("#gLoginLink").css({display: "none"}); - $("#gLoginForm").css({display: "block"}); $("#gLoginClose").css({display: "inline"}); + var url = $("#gLoginForm").attr("formSrc"); + $.get(url, null, function(data, textStatus) { + $("#gLoginForm").html(data); + $("#gLoginForm").css({display: "block"}); + }); } function close_login() { $("#gLoginLink").css({display: "inline"}); $("#gLoginForm").css({display: "none"}); + $("#gLoginForm").html(""); $("#gLoginClose").css({display: "none"}); + $("input#gUsername").val(""); + $("input#gPassword").val(""); +} + +function process_login() { + var username = $("input#gUsername").val(); + var password = $("input#gPassword").val(); + var data = 'username=' + username + '&password=' + password; + $.ajax({ + url: $("#gLogin").attr("action"), + type: "POST", + data: data, + dataType: "json", + error: function(XMLHttpRequest, textStatus, errorThrown) { + alert("textStatus: " + textStatus + "\nerrorThrown: " + errorThrown); + }, + success: function(data, textStatus) { + if (data.error_message != "") { + $("#gLoginMessage").html(data.error_message); + $("#gLoginMessage").css({display: "block"}); + } + } + }); }
\ No newline at end of file diff --git a/themes/default/views/header.html.php b/themes/default/views/header.html.php index ba16a5fb..52c3992b 100644 --- a/themes/default/views/header.html.php +++ b/themes/default/views/header.html.php @@ -16,8 +16,7 @@ <?= _("Login") ?> | <a href="javascript:close_login()">X</a> </span> <? endif; ?> - <span id="gLoginForm" class="gDisplayNone" > - <?= Login_Form::factory() ?> + <span id="gLoginForm" class="gDisplayNone" formSrc="<?= url::site("login") ?>" > </span> </div> <ul id="gSiteMenu"> |