From 28f038aa9030bf55da2f299681a318e5b14ae83a Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Tue, 23 Feb 2016 18:13:13 +0530 Subject: [PATCH] [enhancement] desktop icons DocType --- frappe/boot.py | 19 +- frappe/config/desktop.py | 10 +- frappe/core/doctype/user/user.js | 2 +- frappe/core/doctype/user/user.py | 9 + frappe/core/page/desktop/desktop.js | 119 ++--- .../core/page/desktop/desktop_icon_grid.html | 8 +- .../core/page/desktop/desktop_list_view.html | 3 +- .../page/desktop/desktop_module_icon.html | 10 +- frappe/defaults.py | 1 + frappe/desk/doctype/desktop_icon/__init__.py | 0 .../desk/doctype/desktop_icon/desktop_icon.js | 8 + .../doctype/desktop_icon/desktop_icon.json | 461 ++++++++++++++++++ .../desk/doctype/desktop_icon/desktop_icon.py | 158 ++++++ .../doctype/desktop_icon/test_desktop_icon.py | 12 + frappe/desk/page/applications/applications.js | 2 +- .../desk/page/configure_desktop/__init__.py | 0 .../configure_desktop/configure_desktop.js | 7 + .../configure_desktop/configure_desktop.json | 18 + frappe/desk/page/modules/__init__.py | 0 frappe/desk/page/modules/modules.js | 39 ++ frappe/desk/page/modules/modules.json | 18 + frappe/desk/page/modules/modules_section.html | 36 ++ frappe/desk/page/modules/modules_sidebar.html | 10 + frappe/installer.py | 7 + frappe/patches.txt | 1 + frappe/patches/v6_24/sync_desktop_icons.py | 35 ++ frappe/public/js/frappe/desk.js | 15 +- frappe/public/js/frappe/misc/user.js | 70 +-- frappe/public/js/frappe/ui/app_icon.js | 7 +- frappe/public/js/frappe/views/breadcrumbs.js | 4 +- frappe/sessions.py | 2 +- frappe/utils/redis_wrapper.py | 4 +- frappe/utils/user.py | 5 - 33 files changed, 918 insertions(+), 182 deletions(-) create mode 100644 frappe/desk/doctype/desktop_icon/__init__.py create mode 100644 frappe/desk/doctype/desktop_icon/desktop_icon.js create mode 100644 frappe/desk/doctype/desktop_icon/desktop_icon.json create mode 100644 frappe/desk/doctype/desktop_icon/desktop_icon.py create mode 100644 frappe/desk/doctype/desktop_icon/test_desktop_icon.py create mode 100644 frappe/desk/page/configure_desktop/__init__.py create mode 100644 frappe/desk/page/configure_desktop/configure_desktop.js create mode 100644 frappe/desk/page/configure_desktop/configure_desktop.json create mode 100644 frappe/desk/page/modules/__init__.py create mode 100644 frappe/desk/page/modules/modules.js create mode 100644 frappe/desk/page/modules/modules.json create mode 100644 frappe/desk/page/modules/modules_section.html create mode 100644 frappe/desk/page/modules/modules_sidebar.html create mode 100644 frappe/patches/v6_24/sync_desktop_icons.py diff --git a/frappe/boot.py b/frappe/boot.py index e2b1c136e0..b471f10901 100644 --- a/frappe/boot.py +++ b/frappe/boot.py @@ -34,22 +34,9 @@ def get_bootinfo(): bootinfo.modules = {} bootinfo.module_list = [] - for app in frappe.get_installed_apps(frappe_last=True): - try: - modules = frappe.get_attr(app + ".config.desktop.get_data")() or {} - if isinstance(modules, dict): - bootinfo.modules.update(modules) - else: - for m in modules: - bootinfo.modules[m['module_name']] = m - bootinfo.module_list.append(m['module_name']) - except ImportError: - pass - except AttributeError: - pass + load_desktop_icons(bootinfo) bootinfo.module_app = frappe.local.module_app - bootinfo.hidden_modules = frappe.db.get_global("hidden_modules") bootinfo.doctype_icons = dict(frappe.db.sql("""select name, icon from tabDocType where ifnull(icon,'')!=''""")) bootinfo.single_types = frappe.db.sql_list("""select name from tabDocType where issingle=1""") @@ -88,6 +75,10 @@ def load_conf_settings(bootinfo): for key in ['developer_mode']: if key in conf: bootinfo[key] = conf.get(key) +def load_desktop_icons(bootinfo): + from frappe.desk.doctype.desktop_icon.desktop_icon import get_desktop_icons + bootinfo.desktop_icons = get_desktop_icons() + def get_allowed_pages(): roles = frappe.get_roles() page_info = {} diff --git a/frappe/config/desktop.py b/frappe/config/desktop.py index e90d97595a..bc54de29b9 100644 --- a/frappe/config/desktop.py +++ b/frappe/config/desktop.py @@ -41,5 +41,13 @@ def get_data(): "icon": "octicon octicon-circuit-board", "type": "module", "system_manager": 1 - } + }, + { + "module_name": "All Applications", + "label": _("All Applications"), + "color": "#4aa3df", + "icon": "octicon octicon-three-bars", + "type": "module", + "link": "javascript:frappe.desktop.all_applications.show()" + }, ] diff --git a/frappe/core/doctype/user/user.js b/frappe/core/doctype/user/user.js index eb33ab2de4..ec1b3cb0d4 100644 --- a/frappe/core/doctype/user/user.js +++ b/frappe/core/doctype/user/user.js @@ -98,7 +98,7 @@ frappe.ModuleEditor = Class.extend({ }, make: function() { var me = this; - $.each(keys(frappe.boot.modules), function(i, m) { + this.frm.doc.__onload.all_modules.forEach(function(m) { // TODO: add checkbox $(repl('
\