From 2fc7741e9c98c43033d4fdccbc2fd1e83c2da974 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Mon, 9 Feb 2015 16:47:02 +0530 Subject: [PATCH] load boot in desk.html #999 --- frappe/boot.py | 6 --- .../page/desktop/all_applications_dialog.html | 2 +- frappe/core/page/desktop/desktop.js | 43 ++++++++++++------- .../core/page/desktop/desktop_icon_grid.html | 2 +- frappe/desk/page/activity/activity.js | 1 + frappe/handler.py | 4 -- frappe/public/css/desktop.css | 1 + frappe/public/js/frappe/desk.js | 29 +++---------- frappe/public/js/frappe/misc/user.js | 4 +- frappe/public/js/frappe/provide.js | 1 + .../ui/toolbar/offcanvas_left_sidebar.html | 2 +- frappe/public/js/frappe/ui/toolbar/toolbar.js | 2 +- frappe/public/less/desktop.less | 1 + frappe/sessions.py | 7 ++- frappe/templates/pages/desk.html | 6 +++ frappe/templates/pages/desk.py | 14 +++++- 16 files changed, 64 insertions(+), 61 deletions(-) diff --git a/frappe/boot.py b/frappe/boot.py index 8858c54d6f..0c63c48284 100644 --- a/frappe/boot.py +++ b/frappe/boot.py @@ -114,12 +114,6 @@ def get_fullnames(): return d -def get_startup_js(): - startup_js = [] - for method in frappe.get_hooks().startup_js or []: - startup_js.append(frappe.get_attr(method)() or "") - return "\n".join(startup_js) - def get_user(bootinfo): """get user info""" bootinfo.user = frappe.user.load_user() diff --git a/frappe/core/page/desktop/all_applications_dialog.html b/frappe/core/page/desktop/all_applications_dialog.html index 6bb5df8156..9609122dd1 100644 --- a/frappe/core/page/desktop/all_applications_dialog.html +++ b/frappe/core/page/desktop/all_applications_dialog.html @@ -4,8 +4,8 @@
{% for(var i=0, l=all_modules.length; i < l; i++) { var module_name = all_modules[i]; - if (desktop_items.indexOf(module_name)===-1 || module_name==="All Applications") { continue; } var module = frappe.get_module(module_name); + if (desktop_items.indexOf(module_name)===-1 || module.force_show) { continue; } %}
diff --git a/frappe/core/page/desktop/desktop.js b/frappe/core/page/desktop/desktop.js index 727db6a8e6..6b07883cb8 100644 --- a/frappe/core/page/desktop/desktop.js +++ b/frappe/core/page/desktop/desktop.js @@ -23,7 +23,7 @@ $.extend(frappe.desktop, { this.wrapper.html(frappe.render_template("desktop_icon_grid", { // all visible icons - desktop_items: frappe.user.get_desktop_items(), + desktop_items: this.get_desktop_items(), // user visible icons user_desktop_items: this.get_user_desktop_items(), @@ -40,6 +40,25 @@ $.extend(frappe.desktop, { $(document).trigger("desktop-render"); }, + get_desktop_items: function() { + var me = this; + + frappe.modules["All Applications"] = { + icon: "octicon octicon-three-bars", + label: "All Applications", + _label: __("All Applications"), + _id: "all_applications", + color: "#4aa3df", + link: "", + force_show: true, + onclick: function() { + me.all_applications.show(); + } + } + + return frappe.user.get_desktop_items(); + }, + get_user_desktop_items: function() { var me = this; @@ -56,20 +75,13 @@ $.extend(frappe.desktop, { user_desktop_items.push('Core'); } - frappe.modules["All Applications"] = { - icon: "octicon octicon-three-bars", - label: "All Applications", - _label: __("All Applications"), - _id: "all_applications", - color: "#4aa3df", - link: "", - onclick: function() { - me.all_applications.show(); + for (var m in frappe.modules) { + var module = frappe.modules[m]; + if (module.force_show && user_desktop_items.indexOf(m)===-1) { + user_desktop_items.push(m); } } - user_desktop_items.push("All Applications") - // filter valid icons for (var i=0, l=user_desktop_items.length; i < l; i++) { var m = user_desktop_items[i]; @@ -91,10 +103,11 @@ $.extend(frappe.desktop, { var parent = $(this).parent(); var link = parent.attr("data-link"); if(link) { - if(link.substr(0, 1)==="/") { - window.open(link.substr(1)) + if(link.substr(0, 1)==="/" || link.substr(0, 4)==="http") { + window.open(link, "_blank"); + } else { + frappe.set_route(link); } - frappe.set_route(link); return false; } else { module = frappe.get_module(parent.attr("data-name")); diff --git a/frappe/core/page/desktop/desktop_icon_grid.html b/frappe/core/page/desktop/desktop_icon_grid.html index 474b07f149..242cc2d990 100644 --- a/frappe/core/page/desktop/desktop_icon_grid.html +++ b/frappe/core/page/desktop/desktop_icon_grid.html @@ -2,7 +2,7 @@
{% for (var i=0, l=desktop_items.length; i < l; i++) { var module = frappe.get_module(desktop_items[i]); - if (user_desktop_items.indexOf(module.name)===-1) { continue; } + if (user_desktop_items.indexOf(module.name)===-1 && !module.force_show) { continue; } %} {%= frappe.render_template("desktop_module_icon", module) %} {% } %} diff --git a/frappe/desk/page/activity/activity.js b/frappe/desk/page/activity/activity.js index 26f1b94859..247dcb3392 100644 --- a/frappe/desk/page/activity/activity.js +++ b/frappe/desk/page/activity/activity.js @@ -6,6 +6,7 @@ frappe.provide("frappe.activity"); frappe.pages['activity'].on_page_load = function(wrapper) { var me = this; + frappe.assets.views["List"](); frappe.require('assets/frappe/js/lib/flot/jquery.flot.js'); frappe.require('assets/frappe/js/lib/flot/jquery.flot.downsample.js'); diff --git a/frappe/handler.py b/frappe/handler.py index de7df3f12a..e668250443 100755 --- a/frappe/handler.py +++ b/frappe/handler.py @@ -10,10 +10,6 @@ import frappe.utils.file_manager import frappe.desk.form.run_method from frappe.utils.response import build_response -@frappe.whitelist(allow_guest=True) -def startup(): - frappe.response.update(frappe.sessions.get()) - @frappe.whitelist() def runserverobj(method, docs=None, dt=None, dn=None, arg=None, args=None): frappe.desk.form.run_method.runserverobj(method, docs=docs, dt=dt, dn=dn, arg=arg, args=args) diff --git a/frappe/public/css/desktop.css b/frappe/public/css/desktop.css index 178e315b75..2cdcf2b094 100644 --- a/frappe/public/css/desktop.css +++ b/frappe/public/css/desktop.css @@ -46,6 +46,7 @@ body[data-route="desktop"] .navbar-default { display: inline-block; transition: 0.2s; -webkit-transition: 0.2s; + text-shadow: -1px 1px 5px rgba(0, 0, 0, 0.15); } .app-icon svg, .app-icon img { diff --git a/frappe/public/js/frappe/desk.js b/frappe/public/js/frappe/desk.js index 5e2f2de203..64d57899fd 100644 --- a/frappe/public/js/frappe/desk.js +++ b/frappe/public/js/frappe/desk.js @@ -13,23 +13,7 @@ frappe.Application = Class.extend({ }, load_startup: function() { - var me = this; - if(window.app) { - return frappe.call({ - method: 'startup', - callback: function(r, rt) { - frappe.provide('frappe.boot'); - frappe.boot = r; - if(frappe.boot.user.name==='Guest' || frappe.boot.user.user_type==="Website User") { - window.location = 'index'; - return; - } - me.startup(); - } - }); - } else { - this.startup(); - } + this.startup(); }, startup: function() { this.load_bootinfo(); @@ -37,7 +21,6 @@ frappe.Application = Class.extend({ this.make_nav_bar(); this.set_favicon(); this.setup_keyboard_shortcuts(); - this.run_startup_js(); if(frappe.boot) { if(localStorage.getItem("session_lost_route")) { @@ -268,11 +251,6 @@ frappe.Application = Class.extend({ frappe.ui.toolbar.clear_cache(); }); - }, - - run_startup_js: function() { - if(frappe.boot.startup_js) - eval(frappe.boot.startup_js); } }); @@ -288,10 +266,13 @@ frappe.get_module = function(m) { module.link = "Module/" + m; } - if(module.link) { + if (!module.link) module.link = ""; + + if (!module._id) { module._id = module.link.toLowerCase().replace("/", "-"); } + if(!module.label) { module.label = m; } diff --git a/frappe/public/js/frappe/misc/user.js b/frappe/public/js/frappe/misc/user.js index 46fbc823db..43a8a4c571 100644 --- a/frappe/public/js/frappe/misc/user.js +++ b/frappe/public/js/frappe/misc/user.js @@ -80,7 +80,7 @@ $.extend(frappe.user, { // add missing modules - they will be hidden anyways by the view $.each(frappe.modules, function(m, module) { var module = frappe.get_module(m); - if(module.link && modules_list.indexOf(m)==-1) { + if(modules_list.indexOf(m)==-1) { modules_list.push(m); } }); @@ -96,7 +96,7 @@ $.extend(frappe.user, { if(frappe.boot.hidden_modules && modules_list) { var hidden_list = JSON.parse(frappe.boot.hidden_modules); var modules_list = $.map(modules_list, function(m) { - if(hidden_list.indexOf(m)==-1) return m; else return null; + if(hidden_list.indexOf(m)==-1 || frappe.modules[m].force_show) return m; else return null; }); } diff --git a/frappe/public/js/frappe/provide.js b/frappe/public/js/frappe/provide.js index 6438b46839..4ed2b574ea 100644 --- a/frappe/public/js/frappe/provide.js +++ b/frappe/public/js/frappe/provide.js @@ -4,6 +4,7 @@ // provide a namespace if(!window.frappe) window.frappe = {}; + frappe.provide = function(namespace) { // docs: create a namespace // var nsl = namespace.split('.'); diff --git a/frappe/public/js/frappe/ui/toolbar/offcanvas_left_sidebar.html b/frappe/public/js/frappe/ui/toolbar/offcanvas_left_sidebar.html index 7443625150..11f14be9fd 100644 --- a/frappe/public/js/frappe/ui/toolbar/offcanvas_left_sidebar.html +++ b/frappe/public/js/frappe/ui/toolbar/offcanvas_left_sidebar.html @@ -8,7 +8,7 @@ + {% for include in include_js -%} diff --git a/frappe/templates/pages/desk.py b/frappe/templates/pages/desk.py index e91c4e027b..297f80ca89 100644 --- a/frappe/templates/pages/desk.py +++ b/frappe/templates/pages/desk.py @@ -7,13 +7,23 @@ no_sitemap = 1 no_cache = 1 base_template_path = "templates/pages/desk.html" -import frappe, os +import os, json +import frappe +from frappe import _ +import frappe.sessions +from frappe.utils.response import json_handler def get_context(context): + if (frappe.session.user == "Guest" or + frappe.db.get_value("User", frappe.session.user, "user_type")=="Website User"): + + frappe.throw(_("You are not permitted to access this page."), frappe.PermissionError) + hooks = frappe.get_hooks() return { "build_version": str(os.path.getmtime(os.path.join(frappe.local.sites_path, "assets", "js", "frappe.min.js"))), "include_js": hooks["app_include_js"], - "include_css": hooks["app_include_css"] + "include_css": hooks["app_include_css"], + "boot": json.dumps(frappe.sessions.get(), default=json_handler, indent=1, sort_keys=True) }