From 276c444edc819d67f45a8f82bd639c6c15af9aa0 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Fri, 15 Jan 2016 14:10:20 +0530 Subject: [PATCH] [fix] [minor] show unsorted missing modules --- frappe/__init__.py | 7 ++++++- frappe/boot.py | 2 +- frappe/public/js/frappe/misc/user.js | 28 +++++++++++++++------------- 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/frappe/__init__.py b/frappe/__init__.py index 3efa7b54b4..f31b58cd91 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -645,7 +645,7 @@ def get_all_apps(with_frappe=False, with_internal_apps=True, sites_path=None): apps.insert(0, 'frappe') return apps -def get_installed_apps(sort=False): +def get_installed_apps(sort=False, frappe_last=False): """Get list of installed apps in current site.""" if getattr(flags, "in_install_db", True): return [] @@ -658,6 +658,11 @@ def get_installed_apps(sort=False): if sort: installed = [app for app in get_all_apps(True) if app in installed] + if frappe_last: + if 'frappe' in installed: + installed.remove('frappe') + installed.append('frappe') + return installed def get_hooks(hook=None, default=None, app_name=None): diff --git a/frappe/boot.py b/frappe/boot.py index b7da3f828d..82366a7b11 100644 --- a/frappe/boot.py +++ b/frappe/boot.py @@ -33,7 +33,7 @@ def get_bootinfo(): bootinfo.modules = {} bootinfo.module_list = [] - for app in frappe.get_installed_apps(): + 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): diff --git a/frappe/public/js/frappe/misc/user.js b/frappe/public/js/frappe/misc/user.js index 7479e3662d..08de8c7204 100644 --- a/frappe/public/js/frappe/misc/user.js +++ b/frappe/public/js/frappe/misc/user.js @@ -104,26 +104,28 @@ $.extend(frappe.user, { }, get_desktop_items: function(global) { // get user sequence preference - var modules_list = null; + var modules_list = []; if(!global) { var user_list = frappe.defaults.get_default("_desktop_items"); if(user_list && user_list.length) var modules_list = user_list; - if(modules_list) { - // add missing modules - they will be hidden anyways by the view - $.each(frappe.modules, function(m, module) { - var module = frappe.get_module(m); - if(modules_list.indexOf(m)===-1) { - modules_list.push(m); - } - }); - } } - if(!modules_list || !modules_list.length) { - // all modules - modules_list = frappe.boot.module_list; + frappe.boot.module_list.forEach(function(i, m) { + if(modules_list.indexOf(m)===-1) { + modules_list.push(m); + } + }); + + if(modules_list) { + // add missing modules - they will be hidden anyways by the view + $.each(frappe.modules, function(m, module) { + var module = frappe.get_module(m); + if(modules_list.indexOf(m)===-1) { + modules_list.push(m); + } + }); } // filter hidden modules