Bläddra i källkod

cleanup of login page

version-14
Rushabh Mehta 11 år sedan
förälder
incheckning
09ef9a5788
3 ändrade filer med 215 tillägg och 228 borttagningar
  1. +160
    -185
      frappe/templates/includes/login.js
  2. +54
    -42
      frappe/templates/pages/login.html
  3. +1
    -1
      frappe/website/page/sitemap_browser/sitemap_browser.py

+ 160
- 185
frappe/templates/includes/login.js Visa fil

@@ -1,207 +1,182 @@
var disable_signup = {{ disable_signup and "true" or "false" }};
var login = {};

$(window).on("hashchange", function() {
var route = window.location.hash.slice(1);
if(!route) route = "login";
login[route]();
})

// Login
login.do_login = function(){
var args = {};
if(window.is_sign_up) {
args.cmd = "frappe.core.doctype.profile.profile.sign_up";
args.email = ($("#login_id").val() || "").trim();
args.full_name = ($("#full_name").val() || "").trim();

if(!args.email || !valid_email(args.email) || !args.full_name) {
login.set_message("Valid email and name required.");
return false;
}
} else if(window.is_forgot) {
args.cmd = "frappe.core.doctype.profile.profile.reset_password";
args.user = ($("#login_id").val() || "").trim();
if(!login) {
var disable_signup = {{ disable_signup and "true" or "false" }};
var login = {};

$(document).ready(function() {
window.location.hash = "#login";
login.login();
$(".btn-signup").click(function() {
var args = {};
args.cmd = "frappe.core.doctype.profile.profile.sign_up";
args.email = ($("#signup_email").val() || "").trim();
args.full_name = ($("#signup_fullname").val() || "").trim();

if(!args.email || !valid_email(args.email) || !args.full_name) {
login.set_message("Valid email and name required.");
return false;
}
login.call(args);
});
$(".btn-login").click(function() {
var args = {};
args.cmd = "login";
args.usr = ($("#login_email").val() || "").trim();
args.pwd = $("#login_password").val();

if(!args.usr || !args.pwd) {
login.set_message("Both login and password required.");
return false;
}
login.call(args);
});
$(".btn-forgot").click(function() {
var args = {};
args.cmd = "frappe.core.doctype.profile.profile.reset_password";
args.user = ($("#forgot_email").val() || "").trim();
if(!args.user) {
login.set_message("Valid Login Id required.");
return false;
}
if(!args.user) {
login.set_message("Valid Login id required.");
return false;
}

login.call(args);
});
$(document).trigger('login_rendered');
})

$(window).on("hashchange", function() {
login.route();
});

} else {
args.cmd = "login"
args.usr = ($("#login_id").val() || "").trim();
args.pwd = $("#pass").val();
$(document).on("page_change", function() {
if(location.pathname && location.pathname.split("/")[1].split(".")[0]==="login")
login.route();
});

if(!args.usr || !args.pwd) {
login.set_message("Both login and password required.");
return false;
}
login.route = function() {
var route = window.location.hash.slice(1);
if(!route) route = "login";
login[route]();
}

$('#login_btn').prop("disabled", true);
$("#login-spinner").toggle(true);
$('#login_message').toggle(false);
$.ajax({
type: "POST",
url: "/",
data: args,
dataType: "json",
statusCode: login.login_handlers
}).always(function(){
$("#login-spinner").toggle(false);
$('#login_btn').prop("disabled", false);
})
return false;
}
login.login = function() {
$("form").toggle(false);
$(".form-login").toggle(true);
}

login.set_heading = function(html) {
$(".panel-heading").html("<h4>" + html + "</h4>");
}
login.forgot = function() {
$("form").toggle(false);
$(".form-forgot").toggle(true);
}

login.login = function() {
login.set_heading('<i class="icon-lock"></i> Login');
$("#login_wrapper h3").html("Login");
$("#login_id").attr("placeholder", "Login Email Id");
$("#password-row").toggle(true);
$("#full-name-row, #login_message").toggle(false);
$("#login_btn").html("Login").removeClass("btn-success");
$("#forgot-link").html('<a href="#forgot">Forgot Password?</a>');
if(!disable_signup) {
$("#switch-view").empty().append('<div>\
No Account? <a class="btn btn-success" style="margin-left: 10px; margin-top: -2px;"\
href="#sign_up">Sign Up</button></div>');
login.signup = function() {
$("form").toggle(false);
$(".form-signup").toggle(true);
}

window.is_login = true;
window.is_sign_up = false;
window.is_forgot = false;
}

login.sign_up = function() {
login.set_heading('<i class="icon-thumbs-up"></i> Sign Up');
$("#login_id").attr("placeholder", "Your Email Id");
$("#password-row, #login_message").toggle(false);
$("#full-name-row").toggle(true);
$("#login_btn").html("Sign Up").addClass("btn-success");
$("#forgot-link").html("<a href='#login'>Login</a>");
$("#switch-view").empty();
window.is_sign_up = true;
}
// Login
login.call = function(args) {
$('.btn-primary').prop("disabled", true);

login.forgot = function() {
login.set_heading('<i class="icon-question-sign"></i> Forgot');
$("#login_id").attr("placeholder", "Your Email Id");
$("#password-row, #login_message, #full-name-row").toggle(false);
$("#login_btn").html("Send Password").removeClass("btn-success");
$("#forgot-link").html("<a href='#login'>Login</a>");
$("#switch-view").empty();
window.is_forgot = true;
window.is_sign_up = false;
}
$.ajax({
type: "POST",
url: "/",
data: args,
dataType: "json",
statusCode: login.login_handlers
}).always(function(){
$('.btn-primary').prop("disabled", false);
})
}

login.set_message = function(message, color) {
frappe.msgprint(message);
return;
//$('#login_message').html(message).toggle(true);
}

login.login_handlers = {
200: function(data) {
if(data.message=="Logged In") {
window.location.href = "app";
} else if(data.message=="No App") {
if(localStorage) {
var last_visited = localStorage.getItem("last_visited") || "/index";
localStorage.removeItem("last_visited");
window.location.href = last_visited;
} else {
window.location.href = "/index";
}
} else if(window.is_sign_up) {
frappe.msgprint(data.message);
}
},
401: function(xhr, data) {
login.set_message("Invalid Login");
login.login_handlers = {
200: function(data) {
if(data.message=="Logged In") {
window.location.href = "app";
} else if(data.message=="No App") {
if(localStorage) {
var last_visited = localStorage.getItem("last_visited") || "/index";
localStorage.removeItem("last_visited");
window.location.href = last_visited;
} else {
window.location.href = "/index";
}
} else if(window.is_sign_up) {
frappe.msgprint(data.message);
}
},
401: function(xhr, data) {
login.set_message("Invalid Login");
}
}
}


{% if fb_app_id is defined -%}
// facebook login
$(document).ready(function() {
var user_id = frappe.get_cookie("user_id");
var sid = frappe.get_cookie("sid");
{% if fb_app_id is defined -%}
// facebook login
$(document).ready(function() {
var user_id = frappe.get_cookie("user_id");
var sid = frappe.get_cookie("sid");
// logged in?
if(!sid || sid==="Guest") {
// fallback on facebook login -- no login again
$(".btn-login").html("Login via Facebook").removeAttr("disabled");
} else {
// get private stuff (if access)
// app.setup_user({"user": user_id});
}
// logged in?
if(!sid || sid==="Guest") {
// fallback on facebook login -- no login again
$(".btn-facebook").removeAttr("disabled");
} else {
// get private stuff (if access)
// app.setup_user({"user": user_id});
}
});

$(function() {
$login = $(".btn-login").prop("disabled", true);
$.getScript('//connect.facebook.net/en_UK/all.js', function() {
$login.prop("disabled", false);
FB.init({
appId: '{{ fb_app_id }}',
});
$login.click(function() {
$login.prop("disabled", true).html("Logging In...");
login.via_facebook();
});
});
});

login.via_facebook = function() {
// not logged in to facebook either
FB.login(function(response) {
if (response.authResponse) {
// yes logged in via facebook
console.log('Welcome! Fetching your information.... ');
var fb_access_token = response.authResponse.accessToken;

// get user graph
FB.api('/me', function(response) {
response.fb_access_token = fb_access_token || "[none]";
$.ajax({
url:"/",
type: "POST",
data: {
cmd:"frappe.core.doctype.profile.profile.facebook_login",
data: JSON.stringify(response)
},
statusCode: login.login_handlers
})

$(function() {
$login = $(".btn-facebook").prop("disabled", true);
$.getScript('//connect.facebook.net/en_UK/all.js', function() {
$login.prop("disabled", false);
FB.init({
appId: '{{ fb_app_id }}',
});
$login.click(function() {
$login.prop("disabled", true).html("Logging In...");
login.via_facebook();
});
} else {
frappe.msgprint("You have denied access to this application via Facebook. \
Please change your privacy settings in Facebook and try again. \
If you do not want to use Facebook login, <a href='/login'>sign-up</a> here");
}
},{scope:"email"});
});
});

login.via_facebook = function() {
// not logged in to facebook either
FB.login(function(response) {
if (response.authResponse) {
// yes logged in via facebook
console.log('Welcome! Fetching your information.... ');
var fb_access_token = response.authResponse.accessToken;

// get user graph
FB.api('/me', function(response) {
response.fb_access_token = fb_access_token || "[none]";
$.ajax({
url:"/",
type: "POST",
data: {
cmd:"frappe.core.doctype.profile.profile.facebook_login",
data: JSON.stringify(response)
},
statusCode: login.login_handlers
})
});
} else {
frappe.msgprint("You have denied access to this application via Facebook. \
Please change your privacy settings in Facebook and try again. \
If you do not want to use Facebook login, <a href='/login'>sign-up</a> here");
}
},{scope:"email"});
}
{%- endif %}
}
{%- endif %}

$(document).ready(function(wrapper) {
window.location.hash = "#login";
login.login();
$('#login_btn').click(login.do_login);
$('#pass').keypress(function(ev){
if(ev.which==13 && $('#pass').val()) {
$("#login_btn").click();
}
});
$(document).trigger('login_rendered');
})

+ 54
- 42
frappe/templates/pages/login.html Visa fil

@@ -1,47 +1,59 @@
{% block style %}{% include "templates/includes/login.css" %}{% endblock %}

{% block content %}
<div class="login-content container" style="max-width: 800px;">
<div class="row" style="margin-top: 70px; margin-bottom: 20px">
<div class="col-sm-offset-1 col-sm-10">
<div class="panel panel-default">
<div class="panel-heading">
<h4><i class="icon-lock"></i> {{ _("Login") }}</h4>
</div>
<div class="panel-body row" style="padding: 30px">
<div class="col-sm-6 login-wrapper">
<p id="login_message" class="alert alert-warning"
style="display: none;"></p>
<div class="form-group">
<input id="login_id" type="text"
class="form-control" placeholder="Login Email Id">
</div>
<div class="form-group" id="full-name-row" style="display: none;">
<input id="full_name" type="text"
class="form-control" placeholder="Your Full Name">
</div>
<div class="form-group" id="password-row">
<input id="pass" type="password"
class="form-control" placeholder="Password">
</div>
<div class="form-group">
<button type="submit" id="login_btn"
class="btn btn-primary">{{ _("Login") }}</button>
<img src="/assets/frappe/images/ui/button-load.gif" id="login-spinner"
style="display: none;">
</div>
<p id="forgot-link"></p>
</div>
<div class="col-sm-6">
{%- if fb_app_id is defined -%}
<div id="fb-root"></div>
<p><button type="button" class="btn btn-default btn-login">
Login via Facebook</button></p>
{%- endif -%}
<p id="switch-view"></p>
</div>
</div>
</div>
</div>
</div>
<form class="form-signin form-login" role="form">
<h2 class="form-signin-heading">{{ _("Login") }}</h2>
<input type="text" id="login_email"
class="form-control" placeholder="{{ _('Email address') }}" required autofocus>
<input type="password" id="login_password"
class="form-control" placeholder="{{ _('Password') }}" required>
<!-- <label class="checkbox">
<input type="checkbox" value="remember-me"> Remember me
</label> -->
<br>
<button class="btn btn-lg btn-primary btn-block btn-login" type="submit">{{ _("Sign in") }}</button>
{%- if fb_app_id is defined -%}
<div id="fb-root"></div>
<p class="text-center">
<p class="text-muted text-center" style="margin: 10px;">or</p>
<button type="button" class="btn btn-lg btn-primary btn-block btn-facebook">
{{ _("Login via Facebook") }}</button></p>
{%- endif -%}
<p class="text-center">
<br><a href="#signup">{{ _("Not a user yet? Sign up") }}</a>
</p>
<p class="text-center">
<br><a href="#forgot" class="text-muted">{{ _("Forgot Password?") }}</a>
</p>

</form>
<form class="form-signin form-signup" role="form">
<h2 class="form-signin-heading">{{ _("Sign Up") }}</h2>
<input type="text" id="signup_fullname"
class="form-control" placeholder="{{ _('Full Name') }}" required autofocus>
<input type="email" id="signup_email"
class="form-control" placeholder="{{ _('Email Id') }}" required>
<button class="btn btn-lg btn-primary btn-block btn-signup" type="submit">{{ _("Sign up") }}</button>
<p class="text-center">
<br><a href="#login">{{ _("Have an account? Login") }}</a>
</p>

</form>
<form class="form-signin form-forgot" role="form">
<h2 class="form-signin-heading">{{ _("Forgot Password") }}</h2>
<input type="email" id="forgot_email"
class="form-control" placeholder="{{ _('Email Id') }}" required autofocus>
<br>
<button class="btn btn-lg btn-primary btn-block btn-forgot" type="submit">{{ _("Send Password") }}</button>
<p class="text-center">
<br><a href="#login">{{ _("Back to Login") }}</a>
</p>

</form>
</div>
<script>
{% include "templates/includes/login.js" %}


+ 1
- 1
frappe/website/page/sitemap_browser/sitemap_browser.py Visa fil

@@ -16,7 +16,7 @@ def get_children(parent=None):
return frappe.conn.sql("""select name as value, 1 as expandable, ref_doctype, docname
from `tabWebsite Sitemap` where
ifnull(parent_website_sitemap, '')=%s
and idx is not null order by -idx desc""", parent, as_dict=True)
order by ifnull(idx,0), name asc""", parent, as_dict=True)
@frappe.whitelist()
def move(name, up_or_down):


Laddar…
Avbryt
Spara