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)
}