From 1be588ca5f88264b9ed57f6cecd74b5b67f12e77 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Wed, 11 Sep 2013 15:31:58 +0530 Subject: [PATCH] [website] [minor] moving to framework --- public/build.json | 3 +- webnotes/webutils.py | 9 +- website/css/website.css | 22 +- .../about_us_settings/about_us_settings.py | 2 +- .../about_us_team_member.py | 2 +- .../doctype/blog_category/blog_category.py | 2 +- website/doctype/blog_post/blog_feed.py | 2 +- website/doctype/blog_post/blog_post.js | 2 +- website/doctype/blog_post/blog_post.py | 2 +- .../blog_post/templates/includes/blog.js | 2 +- .../doctype/blog_settings/blog_settings.py | 2 +- website/doctype/blogger/blogger.py | 2 +- .../company_history/company_history.py | 2 +- .../contact_us_settings.py | 2 +- .../templates/includes/contact.js | 2 +- .../doctype/style_settings/style_settings.js | 2 +- .../doctype/style_settings/style_settings.py | 2 +- website/doctype/top_bar_item/top_bar_item.py | 2 +- website/doctype/web_page/web_page.js | 2 +- website/doctype/web_page/web_page.py | 2 +- .../website_item_group/website_item_group.py | 2 +- .../doctype/website_script/website_script.py | 2 +- .../make_web_include_files.py | 2 +- .../website_settings/website_settings.js | 2 +- .../website_settings/website_settings.py | 2 +- .../website_slideshow/website_slideshow.js | 2 +- .../website_slideshow/website_slideshow.py | 2 +- .../website_slideshow_item.py | 2 +- website/js/website.js | 191 ++++++++++++++++++ website/page/website_home/website_home.js | 2 +- website/templates/base.html | 1 - website/templates/includes/footer.html | 10 +- website/templates/includes/navbar.html | 28 ++- 33 files changed, 277 insertions(+), 39 deletions(-) create mode 100644 website/js/website.js diff --git a/public/build.json b/public/build.json index 3d4c8eacf7..4a9e49b513 100644 --- a/public/build.json +++ b/public/build.json @@ -27,7 +27,8 @@ { "public/js/all-web.min.js": [ "lib/public/js/lib/bootstrap.min.js", - "lib/public/js/wn/misc/number_format.js" + "lib/public/js/wn/misc/number_format.js", + "lib/website/js/website.js" ] }, diff --git a/webnotes/webutils.py b/webnotes/webutils.py index e38187bd14..a48ab4cdad 100644 --- a/webnotes/webutils.py +++ b/webnotes/webutils.py @@ -185,7 +185,7 @@ def get_website_settings(): t['child_items'] = [] t['child_items'].append(d) break - + context = webnotes._dict({ 'top_bar_items': top_items, 'footer_items': webnotes.conn.sql("""\ @@ -193,7 +193,10 @@ def get_website_settings(): where parent='Website Settings' and parentfield='footer_items' order by idx asc""", as_dict=1), "webnotes": webnotes, - "utils": webnotes.utils + "utils": webnotes.utils, + "post_login": [ + {"label": "Logout", "url": "server.py?cmd=web_logout", "icon": "icon-signout"}, + ] }) settings = webnotes.doc("Website Settings", "Website Settings") @@ -216,7 +219,7 @@ def get_website_settings(): try: import startup.webutils if hasattr(startup.webutils, "get_website_settings"): - context.update(startup.webutils.get_website_settings()) + startup.webutils.get_website_settings(context) except: pass return context diff --git a/website/css/website.css b/website/css/website.css index 4cd7ac7735..0380407c19 100644 --- a/website/css/website.css +++ b/website/css/website.css @@ -131,16 +131,34 @@ div.web-footer { margin-left: -10px; } -.hidden-sm-inline { +.hidden-xs-inline, .hidden-xs-inline-block { display: none; } @media (min-width: 768px) { - .hidden-sm-inline { + .hidden-xs-inline { display: inline; } + .hidden-xs-inline-block { + display: inline-block; + } +} + +.visible-xs-inline { + display: inline; +} + +.visible-xs-inline-block { + display: inline-block; } +@media (min-width: 768px) { + .visible-xs-inline, .visible-xs-inline-block { + display: none; + } +} + + .panel-heading, .panel-body { padding-left: 15px; diff --git a/website/doctype/about_us_settings/about_us_settings.py b/website/doctype/about_us_settings/about_us_settings.py index 139abc20c1..37c42cfa10 100644 --- a/website/doctype/about_us_settings/about_us_settings.py +++ b/website/doctype/about_us_settings/about_us_settings.py @@ -1,5 +1,5 @@ # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt +# MIT License. See license.txt # For license information, please see license.txt diff --git a/website/doctype/about_us_team_member/about_us_team_member.py b/website/doctype/about_us_team_member/about_us_team_member.py index 784339de7d..3256c80d42 100644 --- a/website/doctype/about_us_team_member/about_us_team_member.py +++ b/website/doctype/about_us_team_member/about_us_team_member.py @@ -1,5 +1,5 @@ # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt +# MIT License. See license.txt # For license information, please see license.txt diff --git a/website/doctype/blog_category/blog_category.py b/website/doctype/blog_category/blog_category.py index 7d99e2a968..5b0c554dcf 100644 --- a/website/doctype/blog_category/blog_category.py +++ b/website/doctype/blog_category/blog_category.py @@ -1,5 +1,5 @@ # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt +# MIT License. See license.txt # For license information, please see license.txt diff --git a/website/doctype/blog_post/blog_feed.py b/website/doctype/blog_post/blog_feed.py index 577cde6123..2f77f8258e 100644 --- a/website/doctype/blog_post/blog_feed.py +++ b/website/doctype/blog_post/blog_feed.py @@ -1,5 +1,5 @@ # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt +# MIT License. See license.txt from __future__ import unicode_literals """ diff --git a/website/doctype/blog_post/blog_post.js b/website/doctype/blog_post/blog_post.js index af4dcc9677..468983721b 100644 --- a/website/doctype/blog_post/blog_post.js +++ b/website/doctype/blog_post/blog_post.js @@ -1,5 +1,5 @@ // Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -// License: GNU General Public License v3. See license.txt +// MIT License. See license.txt cur_frm.cscript.refresh = function(doc) { if(!doc.__islocal && doc.published && !doc.email_sent) { diff --git a/website/doctype/blog_post/blog_post.py b/website/doctype/blog_post/blog_post.py index 378f3f5cd9..dca36b7aa0 100644 --- a/website/doctype/blog_post/blog_post.py +++ b/website/doctype/blog_post/blog_post.py @@ -1,5 +1,5 @@ # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt +# MIT License. See license.txt from __future__ import unicode_literals diff --git a/website/doctype/blog_post/templates/includes/blog.js b/website/doctype/blog_post/templates/includes/blog.js index d5e9d5081b..d514a38f08 100644 --- a/website/doctype/blog_post/templates/includes/blog.js +++ b/website/doctype/blog_post/templates/includes/blog.js @@ -1,5 +1,5 @@ // Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -// License: GNU General Public License v3. See license.txt +// MIT License. See license.txt // js inside blog page diff --git a/website/doctype/blog_settings/blog_settings.py b/website/doctype/blog_settings/blog_settings.py index 784339de7d..3256c80d42 100644 --- a/website/doctype/blog_settings/blog_settings.py +++ b/website/doctype/blog_settings/blog_settings.py @@ -1,5 +1,5 @@ # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt +# MIT License. See license.txt # For license information, please see license.txt diff --git a/website/doctype/blogger/blogger.py b/website/doctype/blogger/blogger.py index fd646fded4..2a62eafec8 100644 --- a/website/doctype/blogger/blogger.py +++ b/website/doctype/blogger/blogger.py @@ -1,5 +1,5 @@ # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt +# MIT License. See license.txt # For license information, please see license.txt diff --git a/website/doctype/company_history/company_history.py b/website/doctype/company_history/company_history.py index 784339de7d..3256c80d42 100644 --- a/website/doctype/company_history/company_history.py +++ b/website/doctype/company_history/company_history.py @@ -1,5 +1,5 @@ # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt +# MIT License. See license.txt # For license information, please see license.txt diff --git a/website/doctype/contact_us_settings/contact_us_settings.py b/website/doctype/contact_us_settings/contact_us_settings.py index 7f60175ef8..6483a71045 100644 --- a/website/doctype/contact_us_settings/contact_us_settings.py +++ b/website/doctype/contact_us_settings/contact_us_settings.py @@ -1,5 +1,5 @@ # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt +# MIT License. See license.txt # For license information, please see license.txt diff --git a/website/doctype/contact_us_settings/templates/includes/contact.js b/website/doctype/contact_us_settings/templates/includes/contact.js index dece898755..99e750551c 100644 --- a/website/doctype/contact_us_settings/templates/includes/contact.js +++ b/website/doctype/contact_us_settings/templates/includes/contact.js @@ -1,5 +1,5 @@ // Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -// License: GNU General Public License v3. See license.txt +// MIT License. See license.txt $(document).ready(function() { diff --git a/website/doctype/style_settings/style_settings.js b/website/doctype/style_settings/style_settings.js index f94246d22c..7f63006777 100644 --- a/website/doctype/style_settings/style_settings.js +++ b/website/doctype/style_settings/style_settings.js @@ -1,5 +1,5 @@ // Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -// License: GNU General Public License v3. See license.txt +// MIT License. See license.txt cur_frm.cscript.onload_post_render = function() { diff --git a/website/doctype/style_settings/style_settings.py b/website/doctype/style_settings/style_settings.py index 073d3f9e23..d896f4a5ea 100644 --- a/website/doctype/style_settings/style_settings.py +++ b/website/doctype/style_settings/style_settings.py @@ -1,5 +1,5 @@ # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt +# MIT License. See license.txt from __future__ import unicode_literals import webnotes diff --git a/website/doctype/top_bar_item/top_bar_item.py b/website/doctype/top_bar_item/top_bar_item.py index 26d0f76968..74573759c7 100644 --- a/website/doctype/top_bar_item/top_bar_item.py +++ b/website/doctype/top_bar_item/top_bar_item.py @@ -1,5 +1,5 @@ # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt +# MIT License. See license.txt from __future__ import unicode_literals import webnotes diff --git a/website/doctype/web_page/web_page.js b/website/doctype/web_page/web_page.js index 9e523607e6..ea22496ca7 100644 --- a/website/doctype/web_page/web_page.js +++ b/website/doctype/web_page/web_page.js @@ -1,5 +1,5 @@ // Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -// License: GNU General Public License v3. See license.txt +// MIT License. See license.txt $.extend(cur_frm.cscript, { layout: function(doc) { diff --git a/website/doctype/web_page/web_page.py b/website/doctype/web_page/web_page.py index 34fa53a606..205f320d60 100644 --- a/website/doctype/web_page/web_page.py +++ b/website/doctype/web_page/web_page.py @@ -1,5 +1,5 @@ # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt +# MIT License. See license.txt from __future__ import unicode_literals import webnotes diff --git a/website/doctype/website_item_group/website_item_group.py b/website/doctype/website_item_group/website_item_group.py index 784339de7d..3256c80d42 100644 --- a/website/doctype/website_item_group/website_item_group.py +++ b/website/doctype/website_item_group/website_item_group.py @@ -1,5 +1,5 @@ # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt +# MIT License. See license.txt # For license information, please see license.txt diff --git a/website/doctype/website_script/website_script.py b/website/doctype/website_script/website_script.py index c449df6271..9f5c6eada7 100644 --- a/website/doctype/website_script/website_script.py +++ b/website/doctype/website_script/website_script.py @@ -1,5 +1,5 @@ # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt +# MIT License. See license.txt # For license information, please see license.txt diff --git a/website/doctype/website_settings/make_web_include_files.py b/website/doctype/website_settings/make_web_include_files.py index 821966cee6..693d5c7fea 100644 --- a/website/doctype/website_settings/make_web_include_files.py +++ b/website/doctype/website_settings/make_web_include_files.py @@ -1,5 +1,5 @@ # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt +# MIT License. See license.txt import os import webnotes diff --git a/website/doctype/website_settings/website_settings.js b/website/doctype/website_settings/website_settings.js index 21b55be5ea..9e31964866 100644 --- a/website/doctype/website_settings/website_settings.js +++ b/website/doctype/website_settings/website_settings.js @@ -1,5 +1,5 @@ // Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -// License: GNU General Public License v3. See license.txt +// MIT License. See license.txt // update parent select diff --git a/website/doctype/website_settings/website_settings.py b/website/doctype/website_settings/website_settings.py index 135c7531b3..b553a56690 100644 --- a/website/doctype/website_settings/website_settings.py +++ b/website/doctype/website_settings/website_settings.py @@ -1,5 +1,5 @@ # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt +# MIT License. See license.txt from __future__ import unicode_literals import webnotes diff --git a/website/doctype/website_slideshow/website_slideshow.js b/website/doctype/website_slideshow/website_slideshow.js index a28e1c75ec..1fcacac477 100644 --- a/website/doctype/website_slideshow/website_slideshow.js +++ b/website/doctype/website_slideshow/website_slideshow.js @@ -1,5 +1,5 @@ // Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -// License: GNU General Public License v3. See license.txt +// MIT License. See license.txt cur_frm.cscript.refresh = function(doc) { cur_frm.set_intro(""); diff --git a/website/doctype/website_slideshow/website_slideshow.py b/website/doctype/website_slideshow/website_slideshow.py index eb7de7a33a..787bd098d7 100644 --- a/website/doctype/website_slideshow/website_slideshow.py +++ b/website/doctype/website_slideshow/website_slideshow.py @@ -1,5 +1,5 @@ # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt +# MIT License. See license.txt # For license information, please see license.txt diff --git a/website/doctype/website_slideshow_item/website_slideshow_item.py b/website/doctype/website_slideshow_item/website_slideshow_item.py index 784339de7d..3256c80d42 100644 --- a/website/doctype/website_slideshow_item/website_slideshow_item.py +++ b/website/doctype/website_slideshow_item/website_slideshow_item.py @@ -1,5 +1,5 @@ # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. -# License: GNU General Public License v3. See license.txt +# MIT License. See license.txt # For license information, please see license.txt diff --git a/website/js/website.js b/website/js/website.js new file mode 100644 index 0000000000..94ddbcc671 --- /dev/null +++ b/website/js/website.js @@ -0,0 +1,191 @@ +// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. +// MIT License. See license.txt +if(!window.wn) wn = {}; + +wn.call = function(opts) { + if(opts.btn) { + $(opts.btn).prop("disabled", true); + } + + if(opts.msg) { + $(opts.msg).toggle(false); + } + + if(!opts.args) opts.args = {}; + + // 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: opts.args, + dataType: "json", + success: function(data) { + if(opts.btn) { + $(opts.btn).prop("disabled", false); + } + if(data.exc) { + if(opts.btn) { + $(opts.btn).addClass("btn-danger"); + setTimeout(function() { $(opts.btn).removeClass("btn-danger"); }, 1000); + } + try { + var err = JSON.parse(data.exc); + if($.isArray(err)) { + err = err.join("\n"); + } + console.error ? console.error(err) : console.log(err); + } catch(e) { + console.log(data.exc); + } + } else{ + if(opts.btn) { + $(opts.btn).addClass("btn-success"); + setTimeout(function() { $(opts.btn).removeClass("btn-success"); }, 1000); + } + } + if(opts.msg && data.message) { + $(opts.msg).html(data.message).toggle(true); + } + if(opts.callback) + opts.callback(data); + }, + error: function(response) { + console.error ? console.error(response) : console.log(response); + } + }); + + return false; +} + +// 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; } + +var validate_email = valid_email; + +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]); +} + +function make_query_string(obj) { + var query_params = []; + $.each(obj, function(k, v) { query_params.push(encodeURIComponent(k) + "=" + encodeURIComponent(v)); }); + return "?" + query_params.join("&"); +} + +function repl(s, dict) { + if(s==null)return ''; + for(key in dict) { + s = s.split("%("+key+")s").join(dict[key]); + } + 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 && 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")===-1 && txt.indexOf("