rework login form
This commit is contained in:
parent
2d6847495f
commit
675f198a7c
5 changed files with 121 additions and 173 deletions
14
backend.php
14
backend.php
|
@ -63,20 +63,6 @@
|
||||||
authenticate_user($link, "admin", null);
|
authenticate_user($link, "admin", null);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO remove and handle within Handlers
|
|
||||||
|
|
||||||
/* if (!($_SESSION["uid"] && validate_session($link))) {
|
|
||||||
if ($op == 'pref-feeds' && $method == 'add') {
|
|
||||||
header("Content-Type: text/html");
|
|
||||||
login_sequence($link);
|
|
||||||
render_login_form($link);
|
|
||||||
} else {
|
|
||||||
header("Content-Type: text/plain");
|
|
||||||
print json_encode(array("error" => array("code" => 6)));
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
} */
|
|
||||||
|
|
||||||
$purge_intervals = array(
|
$purge_intervals = array(
|
||||||
0 => __("Use default"),
|
0 => __("Use default"),
|
||||||
-1 => __("Never purge"),
|
-1 => __("Never purge"),
|
||||||
|
|
|
@ -199,7 +199,7 @@ class Handler_Public extends Handler {
|
||||||
$result = db_query($this->link, "SELECT * FROM ttrss_settings_profiles,ttrss_users
|
$result = db_query($this->link, "SELECT * FROM ttrss_settings_profiles,ttrss_users
|
||||||
WHERE ttrss_users.id = ttrss_settings_profiles.owner_uid AND login = '$login' ORDER BY title");
|
WHERE ttrss_users.id = ttrss_settings_profiles.owner_uid AND login = '$login' ORDER BY title");
|
||||||
|
|
||||||
print "<select style='width: 100%' name='profile'>";
|
print "<select dojoType='dijit.form.Select' name='profile'>";
|
||||||
|
|
||||||
print "<option value='0'>" . __("Default profile") . "</option>";
|
print "<option value='0'>" . __("Default profile") . "</option>";
|
||||||
|
|
||||||
|
|
|
@ -5,35 +5,88 @@
|
||||||
<link rel="stylesheet" type="text/css" href="tt-rss.css">
|
<link rel="stylesheet" type="text/css" href="tt-rss.css">
|
||||||
<link rel="shortcut icon" type="image/png" href="images/favicon.png">
|
<link rel="shortcut icon" type="image/png" href="images/favicon.png">
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
<script type="text/javascript" src="lib/dojo/dojo.js" djConfig="parseOnLoad: true"></script>
|
<script type="text/javascript" src="lib/dojo/dojo.js"></script>
|
||||||
|
<script type="text/javascript" src="lib/dijit/dijit.js"></script>
|
||||||
|
<script type="text/javascript" src="lib/dojo/tt-rss-layer.js"></script>
|
||||||
<script type="text/javascript" src="lib/prototype.js"></script>
|
<script type="text/javascript" src="lib/prototype.js"></script>
|
||||||
<script type="text/javascript" src="lib/scriptaculous/scriptaculous.js?load=effects,dragdrop,controls"></script>
|
|
||||||
<script type="text/javascript" src="js/functions.js"></script>
|
<script type="text/javascript" src="js/functions.js"></script>
|
||||||
<script type="text/javascript" charset="utf-8" src="errors.php?mode=js"></script>
|
<script type="text/javascript" charset="utf-8" src="errors.php?mode=js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
Event.observe(window, 'load', function() {
|
||||||
|
init();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<style type="text/css">
|
||||||
|
body#ttrssLogin {
|
||||||
|
padding : 2em;
|
||||||
|
font-size : 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldset {
|
||||||
|
margin-left : auto;
|
||||||
|
margin-right : auto;
|
||||||
|
display : block;
|
||||||
|
width : 400px;
|
||||||
|
border-width : 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
label {
|
||||||
|
width : 120px;
|
||||||
|
margin-right : 20px;
|
||||||
|
display : inline-block;
|
||||||
|
text-align : right;
|
||||||
|
color : gray;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.header {
|
||||||
|
border-width : 0px 0px 1px 0px;
|
||||||
|
border-style : solid;
|
||||||
|
border-color : #88b0f0;
|
||||||
|
margin-bottom : 1em;
|
||||||
|
padding-bottom : 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.footer {
|
||||||
|
margin-top : 1em;
|
||||||
|
padding-top : 5px;
|
||||||
|
border-width : 1px 0px 0px 0px;
|
||||||
|
border-style : solid;
|
||||||
|
border-color : #88b0f0;
|
||||||
|
text-align : center;
|
||||||
|
color : gray;
|
||||||
|
font-size : 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.footer a {
|
||||||
|
color : gray;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.footer a:hover {
|
||||||
|
color : #88b0f0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.row {
|
||||||
|
padding : 0px 0px 5px 0px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body id="ttrssLogin" class="claro">
|
<body id="ttrssLogin" class="claro">
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
function init() {
|
function init() {
|
||||||
|
dojo.require("dijit.form.Button");
|
||||||
|
dojo.require("dijit.form.CheckBox");
|
||||||
|
dojo.require("dijit.form.Form");
|
||||||
|
dojo.require("dijit.form.Select");
|
||||||
|
dojo.require("dijit.form.TextBox");
|
||||||
|
dojo.require("dijit.form.ValidationTextBox");
|
||||||
|
|
||||||
dojo.require("dijit.Dialog");
|
dojo.parser.parse();
|
||||||
|
|
||||||
var test = setCookie("ttrss_test", "TEST");
|
|
||||||
|
|
||||||
if (getCookie("ttrss_test") != "TEST") {
|
|
||||||
return fatalError(2);
|
|
||||||
}
|
|
||||||
|
|
||||||
var limit_set = getCookie("ttrss_bwlimit");
|
|
||||||
|
|
||||||
if (limit_set == "true") {
|
|
||||||
document.forms["loginForm"].bw_limit.checked = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
document.forms["loginForm"].login.focus();
|
|
||||||
|
|
||||||
fetchProfiles();
|
fetchProfiles();
|
||||||
|
|
||||||
|
dijit.byId("bw_limit").attr("checked", getCookie("ttrss_bwlimit") == 'true');
|
||||||
}
|
}
|
||||||
|
|
||||||
function fetchProfiles() {
|
function fetchProfiles() {
|
||||||
|
@ -46,6 +99,7 @@ function fetchProfiles() {
|
||||||
onComplete: function(transport) {
|
onComplete: function(transport) {
|
||||||
if (transport.responseText.match("select")) {
|
if (transport.responseText.match("select")) {
|
||||||
$('profile_box').innerHTML = transport.responseText;
|
$('profile_box').innerHTML = transport.responseText;
|
||||||
|
dojo.parser.parse('profile_box');
|
||||||
}
|
}
|
||||||
} });
|
} });
|
||||||
}
|
}
|
||||||
|
@ -56,18 +110,6 @@ function fetchProfiles() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function languageChange(elem) {
|
|
||||||
try {
|
|
||||||
document.forms['loginForm']['click'].disabled = true;
|
|
||||||
|
|
||||||
var lang = elem[elem.selectedIndex].value;
|
|
||||||
setCookie("ttrss_lang", lang, <?php print SESSION_COOKIE_LIFETIME ?>);
|
|
||||||
window.location.reload();
|
|
||||||
} catch (e) {
|
|
||||||
exception_error("languageChange", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function gotoRegForm() {
|
function gotoRegForm() {
|
||||||
window.location.href = "register.php";
|
window.location.href = "register.php";
|
||||||
return false;
|
return false;
|
||||||
|
@ -84,111 +126,80 @@ function bwLimitChange(elem) {
|
||||||
exception_error("bwLimitChange", e);
|
exception_error("bwLimitChange", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function validateLoginForm(f) {
|
|
||||||
try {
|
|
||||||
|
|
||||||
if (f.login.value.length == 0) {
|
|
||||||
new Effect.Highlight(f.login);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (f.password.value.length == 0) {
|
|
||||||
new Effect.Highlight(f.password);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
document.forms['loginForm']['click'].disabled = true;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
} catch (e) {
|
|
||||||
exception_error("validateLoginForm", e);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
|
||||||
Event.observe(window, 'load', function() {
|
|
||||||
init();
|
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<?php $return = urlencode($_SERVER["REQUEST_URI"]) ?>
|
<?php $return = urlencode($_SERVER["REQUEST_URI"]) ?>
|
||||||
|
|
||||||
<form action="public.php?return=<?php echo $return ?>"
|
<form action="public.php?return=<?php echo $return ?>"
|
||||||
method="POST" id="loginForm" name="loginForm" onsubmit="return validateLoginForm(this)">
|
dojoType="dijit.form.Form" method="POST" id="loginForm" name="loginForm">
|
||||||
|
|
||||||
<input type="hidden" name="op" value="login">
|
<input dojoType="dijit.form.TextBox" style="display : none" name="op" value="login">
|
||||||
|
|
||||||
<table class="loginForm2">
|
<div class='header'>
|
||||||
<tr>
|
|
||||||
<td class="loginTop" valign="bottom" align="left">
|
|
||||||
<img src="images/logo_wide.png">
|
<img src="images/logo_wide.png">
|
||||||
</td>
|
</div>
|
||||||
</tr><tr>
|
|
||||||
<td align="center" valign="middle" class="loginMiddle" height="100%">
|
<div class='form'>
|
||||||
<?php if ($_SESSION['login_error_msg']) { ?>
|
|
||||||
<div class="loginError"><?php echo $_SESSION['login_error_msg'] ?></div>
|
<fieldset>
|
||||||
<?php $_SESSION['login_error_msg'] = ""; ?>
|
|
||||||
<?php } ?>
|
<div class="row">
|
||||||
<table>
|
<label><?php echo __("Login:") ?></label>
|
||||||
<tr><td align="right"><?php echo __("Login:") ?></td>
|
<input name="login"
|
||||||
<td align="right"><input name="login"
|
|
||||||
onchange="fetchProfiles()" onfocus="fetchProfiles()" onblur="fetchProfiles()"
|
onchange="fetchProfiles()" onfocus="fetchProfiles()" onblur="fetchProfiles()"
|
||||||
value="<?php echo $_SESSION["fake_login"] ?>"></td></tr>
|
dojoType="dijit.form.TextBox" required="1"
|
||||||
<tr><td align="right"><?php echo __("Password:") ?></td>
|
value="<?php echo $_SESSION["fake_login"] ?>" />
|
||||||
<td align="right"><input type="password" name="password"
|
</div>
|
||||||
value="<?php echo $_SESSION["fake_password"] ?>"></td></tr>
|
|
||||||
<tr><td align="right"><?php echo __("Language:") ?></td>
|
<div class="row">
|
||||||
<td align="right">
|
<label><?php echo __("Password:") ?></label>
|
||||||
|
<input type="password" name="password" dojoType="dijit.form.TextBox" required="1"
|
||||||
|
value="<?php echo $_SESSION["fake_password"] ?>"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<label><?php echo __("Language:") ?></label>
|
||||||
<?php
|
<?php
|
||||||
print_select_hash("language", $_COOKIE["ttrss_lang"], get_translations(),
|
print_select_hash("language", $_COOKIE["ttrss_lang"], get_translations(),
|
||||||
"style='width : 100%' onchange='languageChange(this)'");
|
"dojoType='dijit.form.Select'");
|
||||||
|
|
||||||
?>
|
?>
|
||||||
</td></tr>
|
</div>
|
||||||
|
|
||||||
<tr><td align="right"><?php echo __("Profile:") ?></td>
|
<div class="row">
|
||||||
<td align="right" id="profile_box">
|
<label><?php echo __("Profile:") ?></label>
|
||||||
<select style='width : 100%' disabled='disabled'>
|
|
||||||
<option><?php echo __("Default profile") ?></option></select>
|
|
||||||
</td></tr>
|
|
||||||
|
|
||||||
<tr><td colspan="2" align="right" class="innerLoginCell">
|
<span id='profile_box'><select disabled='disabled' dojoType='dijit.form.Select'>
|
||||||
|
<option><?php echo __("Default profile") ?></option></select></span>
|
||||||
|
|
||||||
<button type="submit" name='click'><?php echo __('Log in') ?></button>
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<label> </label>
|
||||||
|
<input dojoType="dijit.form.CheckBox" name="bw_limit" id="bw_limit" type="checkbox"
|
||||||
|
onchange="bwLimitChange(this)">
|
||||||
|
<label style='display : inline' for="bw_limit"><?php echo __("Use less traffic") ?></label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row" style='text-align : right'>
|
||||||
|
<button dojoType="dijit.form.Button" type="submit"><?php echo __('Log in') ?></button>
|
||||||
<?php if (defined('ENABLE_REGISTRATION') && ENABLE_REGISTRATION) { ?>
|
<?php if (defined('ENABLE_REGISTRATION') && ENABLE_REGISTRATION) { ?>
|
||||||
<button onclick="return gotoRegForm()">
|
<button onclick="return gotoRegForm()" dojoType="dijit.form.Button">
|
||||||
<?php echo __("Create new account") ?></button>
|
<?php echo __("Create new account") ?></button>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
|
</div>
|
||||||
|
|
||||||
</td></tr>
|
</fieldset>
|
||||||
|
|
||||||
<tr><td colspan="2" align="right" class="innerLoginCell">
|
|
||||||
|
|
||||||
<div class="small">
|
|
||||||
<input name="bw_limit" id="bw_limit" type="checkbox"
|
|
||||||
onchange="bwLimitChange(this)">
|
|
||||||
<label for="bw_limit">
|
|
||||||
<?php echo __("Use less traffic") ?></label></div>
|
|
||||||
|
|
||||||
</td></tr>
|
|
||||||
|
|
||||||
|
|
||||||
</table>
|
</div>
|
||||||
</td>
|
|
||||||
</tr><tr>
|
<div class='footer'>
|
||||||
<td align="center" class="loginBottom">
|
|
||||||
<a href="http://tt-rss.org/">Tiny Tiny RSS</a>
|
<a href="http://tt-rss.org/">Tiny Tiny RSS</a>
|
||||||
<?php if (!defined('HIDE_VERSION')) { ?>
|
<?php if (!defined('HIDE_VERSION')) { ?>
|
||||||
v<?php echo VERSION ?>
|
v<?php echo VERSION ?>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
© 2005–<?php echo date('Y') ?> <a href="http://fakecake.org/">Andrew Dolgov</a>
|
© 2005–<?php echo date('Y') ?> <a href="http://fakecake.org/">Andrew Dolgov</a>
|
||||||
</td>
|
</div>
|
||||||
</tr>
|
|
||||||
|
|
||||||
</table>
|
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
|
|
@ -36,8 +36,6 @@ function do_login() {
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
|
|
||||||
<input type="hidden" name="login_action" value="do_login">
|
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<label><?php echo __("Login:") ?></label>
|
<label><?php echo __("Login:") ?></label>
|
||||||
<input type="text" autocapitalize="off" name="login">
|
<input type="text" autocapitalize="off" name="login">
|
||||||
|
|
47
tt-rss.css
47
tt-rss.css
|
@ -466,10 +466,6 @@ div.prefHelp, td.prefHelp {
|
||||||
padding : 5px;
|
padding : 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
table.loginForm {
|
|
||||||
background-color : #ecf4ff;
|
|
||||||
}
|
|
||||||
|
|
||||||
span.feed_error {
|
span.feed_error {
|
||||||
color : red;
|
color : red;
|
||||||
}
|
}
|
||||||
|
@ -778,49 +774,6 @@ form {
|
||||||
width : 100%;
|
width : 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
table.loginForm2 {
|
|
||||||
padding : 1em;
|
|
||||||
width : 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.loginForm2 .loginTop {
|
|
||||||
border-width : 0px 0px 1px 0px;
|
|
||||||
border-color : #88b0f0;
|
|
||||||
border-style : solid;
|
|
||||||
padding : 0.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.loginForm2 .loginMiddle {
|
|
||||||
padding : 3em;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.loginForm2 .loginBottom {
|
|
||||||
border-width : 1px 0px 0px 0px;
|
|
||||||
border-color : #88b0f0;
|
|
||||||
border-style : solid;
|
|
||||||
font-size : 12px;
|
|
||||||
text-align : center;
|
|
||||||
color : #909090;
|
|
||||||
padding : 0.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.loginForm2 .loginBottom a {
|
|
||||||
color : gray;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.loginForm2 .loginBottom a:hover {
|
|
||||||
color : #4684ff;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.loginForm2 .loginError {
|
|
||||||
color : red;
|
|
||||||
margin : 0.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.loginForm2 .innerLoginCell {
|
|
||||||
padding-top : 0.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.loadingPrompt {
|
div.loadingPrompt {
|
||||||
padding : 1em;
|
padding : 1em;
|
||||||
text-align : center;
|
text-align : center;
|
||||||
|
|
Loading…
Reference in a new issue