refactor(desktop_icons): Remove references and repurpose bootinfo

- Also revert deleting desktop page doc
This commit is contained in:
Prateeksha Singh 2019-01-29 13:27:24 +05:30
parent 2f334baba5
commit e93cea1336
10 changed files with 51 additions and 145 deletions

View file

@ -96,8 +96,8 @@ def load_conf_settings(bootinfo):
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()
from frappe.desk.doctype.desktop_icon.desktop_icon import get_modules_from_all_apps
bootinfo.allowed_modules = get_modules_from_all_apps()
def get_allowed_pages():
return get_user_pages_or_reports('Page')

View file

View file

@ -0,0 +1,7 @@
frappe.pages['desktop'].on_page_load = function(wrapper) {
var page = frappe.ui.make_app_page({
parent: wrapper,
title: 'Desktop',
single_column: true
});
}

View file

@ -0,0 +1,24 @@
{
"content": null,
"creation": "2019-01-29 13:11:48.872579",
"docstatus": 0,
"doctype": "Page",
"icon": "icon-th",
"idx": 0,
"modified": "2019-01-29 13:11:48.872579",
"modified_by": "Administrator",
"module": "Core",
"name": "desktop",
"owner": "Administrator",
"page_name": "desktop",
"roles": [
{
"role": "All"
}
],
"script": null,
"standard": "Yes",
"style": null,
"system_page": 0,
"title": "Desktop"
}

View file

@ -236,5 +236,4 @@ frappe.patches.v11_0.fix_order_by_in_reports_json
execute:frappe.delete_doc('Page', 'applications', ignore_missing=True)
frappe.patches.v11_0.set_missing_creation_and_modified_value_for_user_permissions
frappe.patches.v12_0.set_primary_key_in_series
execute:frappe.delete_doc("Page", "desktop", ignore_missing=True)
execute:frappe.delete_doc("Page", "modules", ignore_missing=True)

View file

@ -194,7 +194,7 @@ frappe.Application = Class.extend({
load_bootinfo: function() {
if(frappe.boot) {
frappe.modules = {};
frappe.boot.desktop_icons.forEach(function(m) {
frappe.boot.allowed_modules.forEach(function(m) {
frappe.modules[m.module_name]=m;
});
frappe.model.sync(frappe.boot.docs);
@ -591,86 +591,3 @@ frappe.get_module = function(m, default_module) {
return module;
};
frappe.get_desktop_icons = function(show_hidden, show_global) {
// filter valid icons
// hidden == hidden from desktop
// blocked == no view from modules either
var out = [];
var add_to_out = function(module) {
module = frappe.get_module(module.module_name, module);
module.app_icon = frappe.ui.app_icon.get_html(module);
out.push(module);
};
var show_module = function(m) {
var out = true;
if(m.type==="page") {
out = m.link in frappe.boot.page_info;
} else if(m.force_show) {
out = true;
} else if(m._report) {
out = m._report in frappe.boot.user.all_reports;
} else if(m._doctype) {
//out = frappe.model.can_read(m._doctype);
out = frappe.boot.user.can_read.includes(m._doctype);
} else {
if(['Help', 'Settings'].includes(m.module_name)) {
// no permissions necessary for learn
out = true;
} else if(m.module_name==='Setup' && frappe.user.has_role('System Manager')) {
out = true;
} else {
out = frappe.boot.user.allow_modules.indexOf(m.module_name) !== -1;
}
}
if(m.hidden && !show_hidden) {
out = false;
}
if(m.blocked && !show_global) {
out = false;
}
return out;
};
let m;
for (var i=0, l=frappe.boot.desktop_icons.length; i < l; i++) {
m = frappe.boot.desktop_icons[i];
if ((['Setup', 'Core'].indexOf(m.module_name) === -1) && show_module(m)) {
add_to_out(m);
}
}
if(frappe.user_roles.includes('System Manager')) {
m = frappe.get_module('Setup');
if(show_module(m)) add_to_out(m);
}
if(frappe.user_roles.includes('Administrator')) {
m = frappe.get_module('Core');
if(show_module(m)) add_to_out(m);
}
return out;
};
frappe.add_to_desktop = function(label, doctype, report) {
frappe.call({
method: 'frappe.desk.doctype.desktop_icon.desktop_icon.add_user_icon',
args: {
'link': frappe.get_route_str(),
'label': label,
'type': 'link',
'_doctype': doctype,
'_report': report
},
callback: function(r) {
if(r.message) {
frappe.show_alert(__("Added"));
}
}
});
};

View file

@ -74,7 +74,7 @@ $.extend(frappe.user, {
},
get_desktop_items: function() {
// hide based on permission
var modules_list = $.map(frappe.boot.desktop_icons, function(icon) {
var modules_list = $.map(frappe.boot.allowed_modules, function(icon) {
var m = icon.module_name;
var type = frappe.modules[m] && frappe.modules[m].type;
@ -105,14 +105,6 @@ $.extend(frappe.user, {
return modules_list;
},
is_module: function(m) {
var icons = frappe.get_desktop_icons();
for(var i=0; i<icons.length; i++) {
if(m===icons[i].module_name) return true;
}
return false;
},
is_report_manager: function() {
return frappe.user.has_role(['Administrator', 'System Manager', 'Report Manager']);
},
@ -147,9 +139,9 @@ $.extend(frappe.user, {
/* Normally frappe.user is an object
* having properties and methods.
* But in the following case
*
*
* if (frappe.user === 'Administrator')
*
*
* frappe.user will cast to a string
* returning frappe.user.name
*/

View file

@ -40,7 +40,7 @@ frappe.breadcrumbs = {
var breadcrumbs = frappe.breadcrumbs.all[frappe.breadcrumbs.current_page()];
if(!frappe.visible_modules) {
frappe.visible_modules = $.map(frappe.get_desktop_icons(true), (m) => { return m.module_name; });
frappe.visible_modules = $.map(frappe.boot.allowed_modules, (m) => { return m.module_name; });
}
var $breadcrumbs = $("#navbar-breadcrumbs").empty();
@ -88,7 +88,6 @@ frappe.breadcrumbs = {
}
if(breadcrumbs.doctype && frappe.get_route()[0]==="Form") {
if(breadcrumbs.doctype==="User"
&& frappe.user.is_module("Setup")===-1
|| frappe.get_doc('DocType', breadcrumbs.doctype).issingle) {
// no user listview for non-system managers and single doctypes
} else {

View file

@ -18,8 +18,8 @@
<span><i class="icon text-extra-muted" :class="module.icon"></i></span>
</div>
<div class="module-box-content">
<h4 class="h4">
{{ module.label }}
<h4 class="h4">
{{ module.label }}
<span v-if="module.count" class="open-notification global">{{ module.count }}</span>
</h4>
<p class="small text-muted"> {{ module.description }} </p>
@ -37,38 +37,21 @@
export default {
data() {
let modules_list = frappe.boot.allowed_modules
.filter(d => (d.type==='module' || d.category==='Places') && !d.blocked);
modules_list.forEach(module => {
module.count = this.get_module_count(module.module_name);
});
return {
route_str: frappe.get_route()[1],
module_label: '',
module_categories: ["Modules", "Domains", "Places", "Administration"],
modules: []
modules: modules_list
};
},
created() {
this.get_modules();
},
methods: {
get_modules() {
let res = frappe.call({
method: 'frappe.desk.doctype.desktop_icon.desktop_icon.get_modules_from_all_apps',
});
res.then(r => {
if (r.message) {
let modules_list = r.message;
modules_list = modules_list
.filter(d => (d.type==='module' || d.category==='Places') && !d.blocked);
modules_list.forEach(module => {
module.count = this.get_module_count(module.module_name);
});
this.modules = modules_list;
}
});
},
get_module_count(module_name) {
var module_doctypes = frappe.boot.notification_info.module_doctypes[module_name];
var sum = 0;
@ -112,7 +95,7 @@ export default {
margin: 70px 0px;
}
.module-category {
.module-category {
margin-top: 30px;
margin-bottom: 15px;
border-bottom: 1px solid #d0d8dd;

View file

@ -17,11 +17,11 @@ export default {
current_module_label: '',
current_module_sections: [],
modules_data_cache: {},
modules_list: [],
modules_list: frappe.boot.allowed_modules
.filter(d => (d.type==='module' || d.category==='Places') && !d.blocked),
};
},
created() {
this.get_modules_list();
this.update_current_module();
},
mounted() {
@ -52,21 +52,6 @@ export default {
}
},
get_modules_list() {
let res = frappe.call({
method: 'frappe.desk.doctype.desktop_icon.desktop_icon.get_modules_from_all_apps',
});
res.then(r => {
if (r.message) {
let modules_list = r.message;
this.modules_list = modules_list
.filter(d => (d.type==='module' || d.category==='Places') && !d.blocked);
}
});
},
get_module_sections(module_name) {
let cache = this.modules_data_cache[module_name];
if(cache) {