refactored web / all-app now linked in app. no wnframework in website

This commit is contained in:
Rushabh Mehta
2012-12-14 16:39:27 +05:30
parent c248e2769e
commit 173a0fd4b7
11 changed files with 139 additions and 86 deletions

View File

@@ -7,10 +7,11 @@
"app/public/js/startup.css" "app/public/js/startup.css"
], ],
"public/js/all-web.js": [ "public/js/all-web.js": [
"app/public/js/startup.js", "app/public/js/website_utils.js"
"app/public/js/conf.js"
], ],
"public/js/all-app.js": [ "public/js/all-app.js": [
"app/public/js/startup.js",
"app/public/js/conf.js",
"app/public/js/modules.js", "app/public/js/modules.js",
"app/public/js/toolbar.js", "app/public/js/toolbar.js",
"app/public/js/feature_setup.js", "app/public/js/feature_setup.js",

View File

@@ -135,23 +135,6 @@ erpnext.startup.set_periodic_updates = function() {
wn.updates.id = setInterval(erpnext.update_messages, 60000); wn.updates.id = setInterval(erpnext.update_messages, 60000);
} }
// subject, sender, description
erpnext.send_message = function(opts) {
if(opts.btn) {
$(opts.btn).start_working();
}
wn.call({
method: 'website.send_message',
args: opts,
callback: function(r) {
if(opts.btn) {
$(opts.btn).done_working();
}
if(opts.callback)opts.callback(r)
}
});
}
erpnext.hide_naming_series = function() { erpnext.hide_naming_series = function() {
if(cur_frm.fields_dict.naming_series) { if(cur_frm.fields_dict.naming_series) {
hide_field('naming_series'); hide_field('naming_series');

View File

@@ -0,0 +1,45 @@
var erpnext = {};
// subject, sender, description
erpnext.send_message = function(opts) {
if(opts.btn) {
$(opts.btn).attr("disabled", "disabled");
}
$.ajax({
method: "POST",
url: "server.py",
data: {
cmd: "website.send_message",
subject: opts.subject,
sender: opts.sender,
message: typeof opts.message == "string"
? opts.message
: JSON.stringify(opts.message)
},
dataType: "json",
success: function(data) {
if(opts.btn) {
$(opts.btn).attr("disabled", false);
}
if(opts.callback)
opts.callback(data);
}
});
}
function valid_email(id) {
if(id.toLowerCase().search("[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?")==-1)
return 0; else return 1; }
function get_url_arg(name) {
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( window.location.href );
if(results == null)
return "";
else
return decodeURIComponent(results[1]);
}

View File

@@ -0,0 +1,22 @@
# ERPNext - web based ERP (http://erpnext.com)
# Copyright (C) 2012 Web Notes Technologies Pvt Ltd
#
# 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 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from __future__ import unicode_literals
import webnotes
class DocType:
def __init__(self, d, dl):
self.doc, self.doclist = d, dl

View File

@@ -6,6 +6,8 @@ install_docs = [
import webnotes import webnotes
max_tickets_per_hour = 200
@webnotes.whitelist(allow_guest=True) @webnotes.whitelist(allow_guest=True)
def send_message(): def send_message():
from webnotes.model.doc import Document from webnotes.model.doc import Document
@@ -17,15 +19,21 @@ def send_message():
d.raised_by = webnotes.form_dict.get('sender') d.raised_by = webnotes.form_dict.get('sender')
if not d.description: if not d.description:
webnotes.msgprint('Please write something', raise_exception=True) webnotes.response["message"] = 'Please write something'
return
if not d.raised_by: if not d.raised_by:
webnotes.msgprint('Please give us your email id so that we can write back to you', raise_exception=True) webnotes.response["message"] = 'Email Id Required'
return
# make lead or contact # guest method, cap max writes per hour
if webnotes.conn.sql("""select count(*) from `tabSupport Ticket`
where TIMEDIFF(NOW(), modified) < '01:00:00'""")[0][0] > max_tickets_per_hour:
webnotes.response["message"] = "Sorry: we believe we have received an unreasonably high number of requests of this kind. Please try later"
return
d.save() d.save()
webnotes.msgprint('Thank you!') webnotes.response["message"] = 'Thank You'
def get_site_address(): def get_site_address():
from webnotes.utils import get_request_site_address from webnotes.utils import get_request_site_address

View File

@@ -5,6 +5,7 @@
} }
.layout-wrapper { .layout-wrapper {
background-color: #fff;
padding: 10px; padding: 10px;
box-shadow: 1px 1px 3px 3px #ccc; box-shadow: 1px 1px 3px 3px #ccc;
font-size: 12px; font-size: 12px;

View File

@@ -5,28 +5,12 @@
{% block header %} {% block header %}
{{ super() }} {{ super() }}
<script> <script>
window.page_name = "{{ name }}"; {% block javascript %}
{% endblock %}
$(document).bind('app_ready', function() {
var _page = new wn.views.Page(window.page_name);
// page script
{% block javascript %}
{% endblock %}
// trigger onload
_page.trigger('onload');
// activate page
wn.container.change_to(window.page_name);
});
</script> </script>
{% block css %} {% block css %}
{% if insert_style %} {% if insert_style %}
<style>{{ css }}</style> <style>{{ css }}</style>
{% endif %} {% endif %}
{% endblock %} {% endblock %}
{% endblock %} {% endblock %}

View File

@@ -0,0 +1 @@
{% extends "html/page.html" %}

View File

@@ -1,13 +1,13 @@
wn.provide('erpnext.login'); var login = {};
$(document).ready(function(wrapper) { $(document).ready(function(wrapper) {
$('#login_btn').click(erpnext.login.doLogin) $('#login_btn').click(login.do_login)
$('#password').keypress(function(ev){ $('#password').keypress(function(ev){
if(ev.which==13 && $('#password').val()) { if(ev.which==13 && $('#password').val()) {
$('form').submit(function() { $('form').submit(function() {
erpnext.login.doLogin(); login.do_login();
return false; return false;
}); });
} }
@@ -16,54 +16,60 @@ $(document).ready(function(wrapper) {
}) })
// Login // Login
erpnext.login.doLogin = function(){ login.do_login = function(){
var args = {}; var args = {};
args['usr']=$("#login_id").val(); args['usr']=$("#login_id").val();
args['pwd']=$("#password").val(); args['pwd']=$("#password").val();
if(!args.usr || !args.pwd) { if(!args.usr || !args.pwd) {
msgprint("Sorry, you can't login if you don't enter both the email id and password.") login.set_message("Both login and password required.");
} }
$('#login_btn').set_working(); $('#login_btn').attr("disabled", "disabled");
$('#login_message').empty(); $('#login_message').toggle(false);
$.ajax({
type: "POST",
url: "server.py",
data: {cmd:"login", usr:args.usr, pwd: args.pwd},
dataType: "json",
success: function(data) {
$('#login_btn').attr("disabled", false);
if(data.message=="Logged In") {
window.location.href = "app.html";
} else {
login.set_message(data.message);
}
}
})
$c("login", args, function(r, rtext) {
$('#login_btn').done_working();
if(r.message=="Logged In"){
window.location.href='app.html' + (get_url_arg('page')
? ('?page='+get_url_arg('page')) : '');
} else {
$i('login_message').innerHTML = '<span style="color: RED;">'
+(r.message)+'</span>';
}
});
return false; return false;
} }
login.show_forgot_password = function(){
erpnext.login.show_forgot_password = function(){
// create dialog // create dialog
var d = new wn.ui.Dialog({ var login_id = $("#login_id").val();
title:"Forgot Password", if(!login_id || !valid_email(login_id)) {
fields: [ login.set_message("Please set your login id (which is your email where the password will be sent);");
{'label':'Email Id', 'fieldname':'email_id', 'fieldtype':'Data', 'reqd':true}, return;
{'label':'Email Me A New Password', 'fieldname':'run', 'fieldtype':'Button'} }
] login.set_message("Sending email with new password...");
}); $("#forgot-password").remove();
$(d.fields_dict.run.input).click(function() { $.ajax({
var values = d.get_values(); method: "POST",
if(!values) return; url: "server.py",
wn.call({ data: {
method:'reset_password', cmd: "reset_password",
args: { user: values.email_id }, user: login_id
callback: function() { },
d.hide(); success: function(data) {
} login.set_message("A new password has been sent to your email id.", "GREEN");
}) }
}) })
d.show(); }
login.set_message = function(message, color) {
$('#login_message').html(message).toggle(true);
} }

View File

@@ -14,6 +14,7 @@
{% block body %} {% block body %}
<div id='login_wrapper'> <div id='login_wrapper'>
<div class='layout-wrapper layout-main'> <div class='layout-wrapper layout-main'>
<p id="login_message" class="alert" style="display: none;"></p>
<h3><i class="icon-lock" style="margin-top: 7px"></i> Login</h3> <h3><i class="icon-lock" style="margin-top: 7px"></i> Login</h3>
<form autocomplete="on"> <form autocomplete="on">
<table border="0" class="login-box"> <table border="0" class="login-box">
@@ -33,15 +34,12 @@
class="btn btn-small btn-primary">Login</button> class="btn btn-small btn-primary">Login</button>
</td> </td>
</tr> </tr>
<tr>
<td>&nbsp;</td>
<td id="login_message">&nbsp;</td>
</tr>
</tbody> </tbody>
</table> </table>
</form> </form>
<p style="text-align: center"><span class="link_type" <br>
onclick="erpnext.login.show_forgot_password()">Forgot Password</span></p> <p style="text-align: center"><a id="forgot-password"
onclick="return login.show_forgot_password()">Forgot Password</a></p>
</div> </div>
<div class="login-footer"> <div class="login-footer">
<a href="index.html">Home</a> | <a href="index.html">Home</a> |

View File

@@ -33,6 +33,10 @@ page_map = {
'Item': webnotes._dict({ 'Item': webnotes._dict({
"template": 'html/product_page.html', "template": 'html/product_page.html',
"condition_field": "show_in_website", "condition_field": "show_in_website",
}),
'Item Group': webnotes._dict({
"template": "html/product_group.html",
"condition_field": "show_in_website"
}) })
} }