|
|
@@ -88,8 +88,12 @@ def get_desktop_icons(user=None): |
|
|
|
return user_icons |
|
|
|
|
|
|
|
@frappe.whitelist() |
|
|
|
def add_user_icon(label, link, type, _doctype): |
|
|
|
def add_user_icon(_doctype, label=None, link=None, type='link'): |
|
|
|
'''Add a new user desktop icon to the desktop''' |
|
|
|
|
|
|
|
if not label: label = frappe._(_doctype) |
|
|
|
if not link: link = 'List/{0}'.format(_doctype) |
|
|
|
|
|
|
|
icon_name = frappe.db.exists('Desktop Icon', {'standard': 0, 'link': link, 'owner': frappe.session.user}) |
|
|
|
if icon_name and frappe.db.get_value('Desktop Icon', icon_name, 'hidden'): |
|
|
|
frappe.db.set_value('Desktop Icon', icon_name, 'hidden', 0) |
|
|
@@ -102,7 +106,7 @@ def add_user_icon(label, link, type, _doctype): |
|
|
|
|
|
|
|
module = frappe.db.get_value('DocType', _doctype, 'module') |
|
|
|
module_icon = frappe.get_value('Desktop Icon', {'standard':1, 'module_name':module}, |
|
|
|
['icon', 'color', 'reverse'], as_dict=True) |
|
|
|
['name', 'icon', 'color', 'reverse'], as_dict=True) |
|
|
|
|
|
|
|
if not module_icon: |
|
|
|
module_icon = frappe._dict() |
|
|
@@ -111,7 +115,7 @@ def add_user_icon(label, link, type, _doctype): |
|
|
|
module_icon.reverse = 0 if (len(opts) > 1) else 1 |
|
|
|
|
|
|
|
try: |
|
|
|
frappe.get_doc({ |
|
|
|
new_icon = frappe.get_doc({ |
|
|
|
'doctype': 'Desktop Icon', |
|
|
|
'label': label, |
|
|
|
'module_name': label, |
|
|
@@ -127,25 +131,55 @@ def add_user_icon(label, link, type, _doctype): |
|
|
|
}).insert(ignore_permissions=True) |
|
|
|
clear_desktop_icons_cache() |
|
|
|
|
|
|
|
return 1 |
|
|
|
return new_icon.name |
|
|
|
|
|
|
|
except Exception, e: |
|
|
|
raise e |
|
|
|
else: |
|
|
|
return 1 |
|
|
|
return icon_name |
|
|
|
|
|
|
|
@frappe.whitelist() |
|
|
|
def set_order(new_order): |
|
|
|
'''set new order by duplicating user icons''' |
|
|
|
def set_order(new_order, user=None): |
|
|
|
'''set new order by duplicating user icons (if user is set) or set global order''' |
|
|
|
if isinstance(new_order, basestring): |
|
|
|
new_order = json.loads(new_order) |
|
|
|
for i, module_name in enumerate(new_order): |
|
|
|
if module_name not in ('Explore',): |
|
|
|
icon = get_user_copy(module_name, frappe.session.user) |
|
|
|
if user: |
|
|
|
icon = get_user_copy(module_name, user) |
|
|
|
else: |
|
|
|
icon = frappe.get_doc('Desktop Icon', {'module_name': module_name, 'standard': 1}) |
|
|
|
icon.db_set('idx', i) |
|
|
|
|
|
|
|
clear_desktop_icons_cache() |
|
|
|
|
|
|
|
def set_desktop_icons(visible_list): |
|
|
|
'''Resets all lists and makes only the given one standard, |
|
|
|
if the desktop icon does not exist and the name is a DocType, then will create |
|
|
|
an icon for the doctype''' |
|
|
|
|
|
|
|
# clear all custom |
|
|
|
frappe.db.sql('delete from `tabDesktop Icon` where standard=0') |
|
|
|
|
|
|
|
# set all as blocked |
|
|
|
frappe.db.sql('update `tabDesktop Icon` set blocked=1, hidden=0') |
|
|
|
|
|
|
|
# set as visible if present, or add icon |
|
|
|
for module_name in visible_list: |
|
|
|
if frappe.db.get_value('Desktop Icon', {'module_name': module_name}): |
|
|
|
set_hidden(module_name, None, 0) |
|
|
|
else: |
|
|
|
if frappe.db.exists('DocType', module_name): |
|
|
|
icon_name = add_user_icon(module_name) |
|
|
|
|
|
|
|
# make it standard |
|
|
|
frappe.db.set_value('Desktop Icon', icon_name, 'standard', 1) |
|
|
|
|
|
|
|
# set the order |
|
|
|
set_order(visible_list) |
|
|
|
|
|
|
|
clear_desktop_icons_cache() |
|
|
|
|
|
|
|
def set_hidden_list(hidden_list, user=None): |
|
|
|
'''Sets property `hidden`=1 in **Desktop Icon** for given user. |
|
|
|
If user is None then it will set global values. |
|
|
|