diff --git a/accounts/Print Format/SalesInvoice/SalesInvoice.html b/accounts/Print Format/SalesInvoice/SalesInvoice.html new file mode 100644 index 0000000000..2b08197ed2 --- /dev/null +++ b/accounts/Print Format/SalesInvoice/SalesInvoice.html @@ -0,0 +1,135 @@ +{%- if doc.letter_head -%} + {{ webnotes.conn.get_value("Letter Head", doc.letter_head, "content") }} +{%- endif -%} + + +
+ + + + + + + + + + + + + {%- for row in doclist.get({"doctype":"Sales Invoice Item"}) %} + + + + + + + + + + {% endfor -%} + +
SrItem NameDescriptionQtyUoMBasic RateAmount
{{ row.idx }}{{ row.item_name }}{{ row.description }}{{ row.qty }}{{ row.stock_uom }}{{ utils.fmt_money(row.export_rate, currency=doc.currency) }}{{ utils.fmt_money(row.export_amount, currency=doc.currency) }}
+
+ diff --git a/accounts/Print Format/SalesInvoice/SalesInvoice.txt b/accounts/Print Format/SalesInvoice/SalesInvoice.txt new file mode 100644 index 0000000000..d2b1cdbaf4 --- /dev/null +++ b/accounts/Print Format/SalesInvoice/SalesInvoice.txt @@ -0,0 +1,20 @@ +[ + { + "creation": "2013-03-21 15:24:28", + "docstatus": 0, + "modified": "2013-03-21 15:26:21", + "modified_by": "Administrator", + "owner": "Administrator" + }, + { + "doc_type": "Sales Invoice", + "doctype": "Print Format", + "module": "Accounts", + "name": "__common__", + "standard": "Yes" + }, + { + "doctype": "Print Format", + "name": "SalesInvoice" + } +] \ No newline at end of file diff --git a/public/build.json b/public/build.json index 121d333f97..05d603f4b9 100644 --- a/public/build.json +++ b/public/build.json @@ -7,7 +7,8 @@ "app/public/js/startup.css" ], "public/js/all-web.min.js": [ - "app/public/js/website_utils.js" + "app/public/js/website_utils.js", + "lib/public/js/wn/misc/number_format.js" ], "public/js/all-app.min.js": [ "app/public/js/startup.js", diff --git a/public/js/website_utils.js b/public/js/website_utils.js index 502b5eb982..a33eee04ba 100644 --- a/public/js/website_utils.js +++ b/public/js/website_utils.js @@ -1,36 +1,88 @@ var erpnext = {}; +var wn = {}; +// Add / update a new Lead / Communication // subject, sender, description erpnext.send_message = function(opts) { + wn.call({ + type: "POST", + method: "website.helpers.contact.send_message", + args: opts, + callback: opts.callback + }) +} + +wn.call = function(opts) { if(opts.btn) { + var $spinner = $('').appendTo($(opts.btn).parent()) $(opts.btn).attr("disabled", "disabled"); } - + + if(opts.msg) { + $(opts.msg).toggle(false); + } + + // get or post? + if(!opts.args._type) { + opts.args._type = opts.type || "GET"; + } + + // method + if(opts.method) { + opts.args.cmd = opts.method; + } + + // stringify + $.each(opts.args, function(key, val) { + if(typeof val != "string") { + opts.args[key] = JSON.stringify(val); + } + }); + $.ajax({ type: "POST", url: "server.py", - data: { - cmd: "website.helpers.contact.send_message", - subject: opts.subject, - sender: opts.sender, - status: opts.status, - _type: "POST", - message: typeof opts.message == "string" - ? opts.message - : JSON.stringify(opts.message) - }, + data: opts.args, dataType: "json", success: function(data) { if(opts.btn) { $(opts.btn).attr("disabled", false); + $spinner.remove(); } - if(opts.callback) + if(data.exc) { + console.log(data.exc); + } + if(opts.msg && data.message) { + $(opts.msg).html(data.message).toggle(true); + } + if(opts.callback) opts.callback(data); } }); + + return false; } +// Setup the user tools +// +$(document).ready(function() { + // update login + var full_name = getCookie("full_name"); + if(full_name) { + $("#user-tools").html(repl('%(full_name)s | \ + My Account | \ + \ + ', { + full_name: full_name, + count: getCookie("cart_count") || "0" + })); + $("#user-tools a").tooltip({"placement":"bottom"}); + } +}) + +// Utility functions + 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; } @@ -55,3 +107,58 @@ function repl(s, dict) { } return s; } + +function replace_all(s, t1, t2) { + return s.split(t1).join(t2); +} + +function getCookie(name) { + return getCookies()[name]; +} + +function getCookies() { + var c = document.cookie, v = 0, cookies = {}; + if (document.cookie.match(/^\s*\$Version=(?:"1"|1);\s*(.*)/)) { + c = RegExp.$1; + v = 1; + } + if (v === 0) { + c.split(/[,;]/).map(function(cookie) { + var parts = cookie.split(/=/, 2), + name = decodeURIComponent(parts[0].trimLeft()), + value = parts.length > 1 ? decodeURIComponent(parts[1].trimRight()) : null; + if(value.charAt(0)==='"') { + value = value.substr(1, value.length-2); + } + cookies[name] = value; + }); + } else { + c.match(/(?:^|\s+)([!#$%&'*+\-.0-9A-Z^`a-z|~]+)=([!#$%&'*+\-.0-9A-Z^`a-z|~]*|"(?:[\x20-\x7E\x80\xFF]|\\[\x00-\x7F])*")(?=\s*[,;]|$)/g).map(function($0, $1) { + var name = $0, + value = $1.charAt(0) === '"' + ? $1.substr(1, -1).replace(/\\(.)/g, "$1") + : $1; + cookies[name] = value; + }); + } + return cookies; +} + +if (typeof String.prototype.trimLeft !== "function") { + String.prototype.trimLeft = function() { + return this.replace(/^\s+/, ""); + }; +} +if (typeof String.prototype.trimRight !== "function") { + String.prototype.trimRight = function() { + return this.replace(/\s+$/, ""); + }; +} +if (typeof Array.prototype.map !== "function") { + Array.prototype.map = function(callback, thisArg) { + for (var i=0, n=this.length, a=[]; i 4194304: @@ -111,11 +112,11 @@ def upload_file_to_dropbox(filename, folder, dropbox_client): while uploader.offset < size: try: uploader.upload_chunked() - uploader.finish(os.path.join(folder, os.path.basename(filename)), overwrite='True') - except rest.ErrorResponse, e: + uploader.finish(os.path.join(folder, os.path.basename(filename)), overwrite=True) + except rest.ErrorResponse: pass else: - response = dropbox_client.put_file(os.path.join(folder, os.path.basename(filename)), f, overwrite=True) + dropbox_client.put_file(os.path.join(folder, os.path.basename(filename)), f, overwrite=True) if __name__=="__main__": backup_to_dropbox() \ No newline at end of file diff --git a/setup/doctype/backup_manager/backup_googledrive.py b/setup/doctype/backup_manager/backup_googledrive.py index a767b3ae4e..4b2a82cb89 100644 --- a/setup/doctype/backup_manager/backup_googledrive.py +++ b/setup/doctype/backup_manager/backup_googledrive.py @@ -11,12 +11,11 @@ # gdrive_client_secret import httplib2 -import sys import os import mimetypes import webnotes import oauth2client.client -from webnotes.utils import get_request_site_address, get_base_path +from webnotes.utils import get_base_path from webnotes import _, msgprint from apiclient.discovery import build from apiclient.http import MediaFileUpload @@ -53,7 +52,7 @@ def backup_to_gdrive(): from webnotes.utils.backups import new_backup if not webnotes.conn: webnotes.connect() - flow = get_gdrive_flow() + get_gdrive_flow() credentials_json = webnotes.conn.get_value("Backup Manager", None, "gdrive_credentials") credentials = oauth2client.client.Credentials.new_from_json(credentials_json) http = httplib2.Http() @@ -101,11 +100,6 @@ def get_gdrive_flow(): webnotes.msgprint(_("Please set Google Drive access keys in") + " conf.py", raise_exception=True) - #callback_url = get_request_site_address(True) \ - # + "?cmd=setup.doctype.backup_manager.backup_googledrive.googledrive_callback" - - # for installed apps since google does not support subdomains - flow = OAuth2WebServerFlow(conf.gdrive_client_id, conf.gdrive_client_secret, "https://www.googleapis.com/auth/drive", 'urn:ietf:wg:oauth:2.0:oob') return flow diff --git a/setup/doctype/backup_manager/backup_manager.py b/setup/doctype/backup_manager/backup_manager.py index 213aa85500..4fb6ab3069 100644 --- a/setup/doctype/backup_manager/backup_manager.py +++ b/setup/doctype/backup_manager/backup_manager.py @@ -3,8 +3,6 @@ from __future__ import unicode_literals import webnotes from webnotes import _ -from backup_dropbox import dropbox_callback, get_dropbox_session, get_dropbox_authorize_url -from backup_googledrive import gdrive_callback, get_gdrive_flow, get_gdrive_authorize_url class DocType: def __init__(self, d, dl): diff --git a/setup/doctype/contact_control/contact_control.py b/setup/doctype/contact_control/contact_control.py index 3c37ecfac4..54a2fccf22 100644 --- a/setup/doctype/contact_control/contact_control.py +++ b/setup/doctype/contact_control/contact_control.py @@ -1,99 +1,7 @@ -# Please edit this list and import only required elements from __future__ import unicode_literals import webnotes -from webnotes.utils import set_default -from webnotes.model import db_exists -from webnotes.model.doc import Document -from webnotes.model.bean import copy_doclist -from webnotes.model.code import get_obj -from webnotes import msgprint - -sql = webnotes.conn.sql - - - class DocType: - def __init__(self,doc,doclist=[]): - self.doc = doc - self.doclist = doclist - - def enable_login(self,arg): - arg = eval(arg) - sql("update tabContact set disable_login = 'No' where name=%s",arg['contact']) - sql("update tabProfile set enabled=1 where name=%s",arg['email']) - - def disable_login(self,arg): - arg = eval(arg) - sql("update tabContact set disable_login = 'Yes' where name=%s",arg['contact']) - sql("update tabProfile set enabled=0 where name=%s",arg['email']) - - def create_login(self,arg): - arg = eval(arg) - cont_det = sql("select * from tabContact where name=%s",(arg['contact']),as_dict=1) - if cont_det[0]['docstatus'] !=0: - msgprint('Please save the corresponding contact first') - raise Exception - - if sql("select name from tabProfile where name=%s",cont_det[0]['email_id']): - msgprint('Profile with same name already exist.') - raise Exception - else: - p = Document('Profile') - p.name = cont_det[0]['email_id'] - p.first_name = cont_det[0]['first_name'] - p.last_name = cont_det[0]['last_name'] - p.email = cont_det[0]['email_id'] - p.cell_no = cont_det[0]['contact_no'] - p.password = 'password' - p.enabled = 1 - p.user_type = 'Partner'; - p.save(1) - - get_obj(doc=p).on_update() - - role = [] - if cont_det[0]['contact_type'] == 'Individual': - role = ['Customer'] - else: - if cont_det[0]['is_customer']: - role.append('Customer') - if cont_det[0]['is_supplier']: - role.append('Supplier') - if cont_det[0]['is_sales_partner']: - role.append('Partner') - - if role: - prof_nm = p.name - for i in role: - r = Document('UserRole') - r.parent = p.name - r.role = i - r.parenttype = 'Profile' - r.parentfield = 'userroles' - r.save(1) - - if i == 'Customer': - def_keys = ['from_company','customer_name','customer'] - def_val = cont_det[0]['customer_name'] - self.set_default_val(def_keys,def_val,prof_nm) - - if i == 'Supplier': - def_keys = ['supplier_name','supplier'] - def_val = cont_det[0]['supplier_name'] - self.set_default_val(def_keys,def_val,prof_nm) - - sql("update tabContact set has_login = 'Yes' where name=%s",cont_det[0]['name']) - sql("update tabContact set disable_login = 'No' where name=%s",cont_det[0]['name']) - msgprint('User login is created.') - - #------set default values--------- - def set_default_val(self,def_keys,def_val,prof_nm): - for d in def_keys: - kv = Document('DefaultValue') - kv.defkey = d - kv.defvalue = def_val - kv.parent = prof_nm - kv.parenttype = 'Profile' - kv.parentfield = 'defaults' - kv.save(1) \ No newline at end of file + def __init__(self,doc,doclist=[]): + self.doc = doc + self.doclist = doclist diff --git a/setup/doctype/global_defaults/global_defaults.py b/setup/doctype/global_defaults/global_defaults.py index e755bb9522..4b6707f506 100644 --- a/setup/doctype/global_defaults/global_defaults.py +++ b/setup/doctype/global_defaults/global_defaults.py @@ -21,6 +21,7 @@ import webnotes.defaults from webnotes.utils import cint keydict = { + "print_style": "print_style", "fiscal_year": "current_fiscal_year", 'company': 'default_company', 'currency': 'default_currency', diff --git a/setup/doctype/global_defaults/global_defaults.txt b/setup/doctype/global_defaults/global_defaults.txt index 6317439d2f..ac1671e402 100644 --- a/setup/doctype/global_defaults/global_defaults.txt +++ b/setup/doctype/global_defaults/global_defaults.txt @@ -1,8 +1,8 @@ [ { - "creation": "2013-02-21 14:54:43", + "creation": "2013-02-21 12:28:24", "docstatus": 0, - "modified": "2013-03-19 14:46:49", + "modified": "2013-03-21 15:42:59", "modified_by": "Administrator", "owner": "Administrator" }, @@ -27,8 +27,6 @@ "permlevel": 0 }, { - "amend": 0, - "cancel": 0, "create": 1, "doctype": "DocPerm", "name": "__common__", @@ -59,6 +57,19 @@ "fieldtype": "Data", "label": "Session Expiry" }, + { + "doctype": "DocField", + "fieldname": "column_break_3", + "fieldtype": "Column Break" + }, + { + "description": "For Server Side Print Formats", + "doctype": "DocField", + "fieldname": "print_style", + "fieldtype": "Select", + "label": "Print Format Style", + "options": "Standard\nClassic\nModern\nSpartan" + }, { "doctype": "DocField", "fieldname": "company", @@ -424,6 +435,11 @@ "fieldtype": "Data", "label": "SMS Sender Name" }, + { + "amend": 0, + "cancel": 0, + "doctype": "DocPerm" + }, { "doctype": "DocPerm" } diff --git a/setup/doctype/item_group/item_group.txt b/setup/doctype/item_group/item_group.txt index 5976be6ce5..d9c6ffedda 100644 --- a/setup/doctype/item_group/item_group.txt +++ b/setup/doctype/item_group/item_group.txt @@ -1,8 +1,8 @@ [ { - "creation": "2013-01-10 16:34:23", + "creation": "2013-01-23 20:00:16", "docstatus": 0, - "modified": "2013-01-22 14:56:03", + "modified": "2013-03-20 15:09:28", "modified_by": "Administrator", "owner": "Administrator" }, @@ -123,6 +123,13 @@ "fieldtype": "Text Editor", "label": "Description" }, + { + "doctype": "DocField", + "fieldname": "item_website_specifications", + "fieldtype": "Table", + "label": "Item Website Specifications", + "options": "Item Website Specification" + }, { "doctype": "DocField", "fieldname": "lft", @@ -174,6 +181,20 @@ "no_copy": 1, "print_hide": 1 }, + { + "cancel": 1, + "create": 1, + "doctype": "DocPerm", + "role": "System Manager", + "write": 1 + }, + { + "cancel": 1, + "create": 1, + "doctype": "DocPerm", + "role": "Material Master Manager", + "write": 1 + }, { "amend": 0, "cancel": 0, @@ -189,19 +210,5 @@ "doctype": "DocPerm", "role": "Material User", "write": 0 - }, - { - "cancel": 1, - "create": 1, - "doctype": "DocPerm", - "role": "System Manager", - "write": 1 - }, - { - "cancel": 1, - "create": 1, - "doctype": "DocPerm", - "role": "Material Master Manager", - "write": 1 } ] \ No newline at end of file diff --git a/stock/doctype/item/item.js b/stock/doctype/item/item.js index 5b32a34c80..8b3e04484a 100644 --- a/stock/doctype/item/item.js +++ b/stock/doctype/item/item.js @@ -137,3 +137,17 @@ cur_frm.cscript.on_remove_attachment = function(doc) { + wn.meta.get_docfield(doc.doctype, "description_html").label); } }; + +cur_frm.cscript.copy_from_item_group = function(doc) { + wn.model.with_doc("Item Group", doc.item_group, function() { + $.each(wn.model.get("Item Website Specification", {parent:doc.item_group}), + function(i, d) { + var n = wn.model.add_child(doc, "Item Website Specification", + "item_website_specifications"); + n.label = d.label; + n.description = d.description; + } + ); + cur_frm.refresh(); + }); +} diff --git a/stock/doctype/item/item.txt b/stock/doctype/item/item.txt index 036b9d54f6..b7f7be45ad 100644 --- a/stock/doctype/item/item.txt +++ b/stock/doctype/item/item.txt @@ -1,8 +1,8 @@ [ { - "creation": "2013-02-21 14:54:43", + "creation": "2013-03-07 15:53:11", "docstatus": 0, - "modified": "2013-03-06 16:02:47", + "modified": "2013-03-20 15:10:12", "modified_by": "Administrator", "owner": "Administrator" }, @@ -33,7 +33,6 @@ "parent": "Item", "parentfield": "permissions", "parenttype": "DocType", - "permlevel": 0, "read": 1, "report": 1, "submit": 0 @@ -785,6 +784,12 @@ "fieldname": "sb72", "fieldtype": "Section Break" }, + { + "doctype": "DocField", + "fieldname": "copy_from_item_group", + "fieldtype": "Button", + "label": "Copy From Item Group" + }, { "depends_on": "show_in_website", "doctype": "DocField", @@ -804,6 +809,24 @@ "cancel": 1, "create": 1, "doctype": "DocPerm", + "permlevel": 0, + "role": "System Manager", + "write": 1 + }, + { + "amend": 0, + "cancel": 0, + "create": 0, + "doctype": "DocPerm", + "permlevel": 1, + "role": "Material Master Manager", + "write": 0 + }, + { + "cancel": 1, + "create": 1, + "doctype": "DocPerm", + "permlevel": 0, "role": "Material Master Manager", "write": 1 }, @@ -812,6 +835,15 @@ "cancel": 0, "create": 0, "doctype": "DocPerm", + "permlevel": 1, + "role": "System Manager" + }, + { + "amend": 0, + "cancel": 0, + "create": 0, + "doctype": "DocPerm", + "permlevel": 1, "role": "Material Manager", "write": 0 }, @@ -820,6 +852,25 @@ "cancel": 0, "create": 0, "doctype": "DocPerm", + "permlevel": 0, + "role": "Material Manager", + "write": 0 + }, + { + "amend": 0, + "cancel": 0, + "create": 0, + "doctype": "DocPerm", + "permlevel": 1, + "role": "Material User", + "write": 0 + }, + { + "amend": 0, + "cancel": 0, + "create": 0, + "doctype": "DocPerm", + "permlevel": 0, "role": "Material User", "write": 0 } diff --git a/support/doctype/support_ticket/support_ticket.py b/support/doctype/support_ticket/support_ticket.py index 170497dd7f..5625f1179c 100644 --- a/support/doctype/support_ticket/support_ticket.py +++ b/support/doctype/support_ticket/support_ticket.py @@ -70,4 +70,28 @@ def set_status(name, status): st = webnotes.bean("Support Ticket", name) st.doc.status = status st.save() - + +@webnotes.whitelist() +def get_tickets(): + tickets = webnotes.conn.sql("""select + name, subject, status + from `tabSupport Ticket` + where raised_by=%s + order by modified desc + limit 20""", + webnotes.session.user, as_dict=1) + return tickets + +def get_website_args(): + bean = webnotes.bean("Support Ticket", webnotes.form_dict.name) + if bean.doc.raised_by != webnotes.session.user: + return { + "doc": {"name": "Not Allowed"} + } + else: + return { + "doc": bean.doc, + "doclist": bean.doclist, + "webnotes": webnotes, + "utils": webnotes.utils + } diff --git a/website/css/website.css b/website/css/website.css index dc5b9670b3..25e2c91ac2 100644 --- a/website/css/website.css +++ b/website/css/website.css @@ -2,11 +2,10 @@ div.outer { padding: 30px; margin: 30px -30px 10px -30px; min-height: 400px; - overflow: hidden; } .outer .navbar { - margin: -30px -30px 10px -30px; + margin: -30px -30px 20px -30px; } footer { diff --git a/website/doctype/blog_post/blog_post.txt b/website/doctype/blog_post/blog_post.txt index 480bca4924..4144e40134 100644 --- a/website/doctype/blog_post/blog_post.txt +++ b/website/doctype/blog_post/blog_post.txt @@ -2,7 +2,7 @@ { "creation": "2013-03-08 11:36:50", "docstatus": 0, - "modified": "2013-03-11 15:23:21", + "modified": "2013-03-18 13:55:53", "modified_by": "Administrator", "owner": "Administrator" }, @@ -65,6 +65,7 @@ "doctype": "DocField", "fieldname": "blogger", "fieldtype": "Link", + "in_list_view": 1, "label": "Blogger", "options": "Blogger", "reqd": 1 @@ -73,6 +74,7 @@ "doctype": "DocField", "fieldname": "blog_category", "fieldtype": "Link", + "in_list_view": 1, "label": "Blog Category", "options": "Blog Category" }, @@ -86,6 +88,7 @@ "doctype": "DocField", "fieldname": "blog_intro", "fieldtype": "Small Text", + "in_list_view": 1, "label": "Blog Intro", "reqd": 1 }, diff --git a/website/doctype/style_settings/style_settings.py b/website/doctype/style_settings/style_settings.py index 1cc3467d78..71478a4573 100644 --- a/website/doctype/style_settings/style_settings.py +++ b/website/doctype/style_settings/style_settings.py @@ -89,7 +89,7 @@ class DocType: self.doc.at_import = "" for f in fonts: - self.doc.at_import += "\n@import url(http://fonts.googleapis.com/css?family=%s:400,700);" % f.replace(" ", "+") + self.doc.at_import += "\n@import url(https://fonts.googleapis.com/css?family=%s:400,700);" % f.replace(" ", "+") def on_update(self): diff --git a/website/helpers/contact.py b/website/helpers/contact.py index 251e1f6bb3..bf1521ee11 100644 --- a/website/helpers/contact.py +++ b/website/helpers/contact.py @@ -18,6 +18,7 @@ from __future__ import unicode_literals import webnotes from core.doctype.communication.communication import make +from webnotes.utils import now max_communications_per_hour = 300 @@ -38,7 +39,7 @@ def send_message(subject="Website Query", message="", sender="", status="Open"): # guest method, cap max writes per hour if webnotes.conn.sql("""select count(*) from `tabCommunication` - where TIMEDIFF(NOW(), modified) < '01:00:00'""")[0][0] > max_communications_per_hour: + where TIMEDIFF(%s, modified) < '01:00:00'""", now())[0][0] > max_communications_per_hour: webnotes.response["message"] = "Sorry: we believe we have received an unreasonably high number of requests of this kind. Please try later" return diff --git a/website/settings.py b/website/settings.py new file mode 100644 index 0000000000..3fff19ede5 --- /dev/null +++ b/website/settings.py @@ -0,0 +1,33 @@ +import webnotes + +page_map = { + 'Web Page': webnotes._dict({ + "template": 'html/web_page.html', + "condition_field": "published" + }), + 'Blog Post': webnotes._dict({ + "template": 'html/blog_page.html', + "condition_field": "published", + }), + 'Item': webnotes._dict({ + "template": 'html/product_page.html', + "condition_field": "show_in_website", + }), + 'Item Group': webnotes._dict({ + "template": "html/product_group.html", + "condition_field": "show_in_website" + }) +} + +page_settings_map = { + "about": "website.doctype.about_us_settings.about_us_settings.get_args", + "contact": "Contact Us Settings", + "blog": "website.helpers.blog.get_blog_template_args", + "writers": "website.helpers.blog.get_writers_args", + "print": "core.doctype.print_format.print_format.get_args", + "orders": "selling.doctype.sales_order.sales_order.get_currency_and_number_format", + "order": "selling.doctype.sales_order.sales_order.get_website_args", + "ticket": "support.doctype.support_ticket.support_ticket.get_website_args" +} + +no_cache = ["message", "print", "order", "ticket"] diff --git a/website/templates/css/login.css b/website/templates/css/login.css index c2a7af2521..4120807022 100644 --- a/website/templates/css/login.css +++ b/website/templates/css/login.css @@ -4,9 +4,17 @@ margin: 70px auto; } + #login_wrapper, + #login_wrapper h3 { + color: #333; + } + + #login_wrapper a { + color: #0088cc; + } + .layout-wrapper { background-color: #fff; - color: #333; padding: 10px; box-shadow: 1px 1px 3px 3px #ccc; font-size: 12px; @@ -32,7 +40,4 @@ text-align: center; padding: 15px; } - .login-footer, .login-footer a { - color: #999; - } \ No newline at end of file diff --git a/website/templates/html/base.html b/website/templates/html/base.html index 2719f8db36..6889d6707a 100644 --- a/website/templates/html/base.html +++ b/website/templates/html/base.html @@ -10,21 +10,18 @@ - - {% if favicon %} + {%- if favicon %} {% else %} - {% endif %} - - {% if description %} + {% endif -%} + {% if description -%} - {% endif %} - - {% block header %} - {% endblock %} + {%- endif %} + {% block header -%} + {%- endblock %} {% block body %} diff --git a/website/templates/html/navbar.html b/website/templates/html/navbar.html index 8112499c04..55e8094b3d 100644 --- a/website/templates/html/navbar.html +++ b/website/templates/html/navbar.html @@ -1,7 +1,6 @@ -