From 9ac0ac9306a937dc28c337baaafb7937799ab172 Mon Sep 17 00:00:00 2001 From: Igor Milhit Date: Wed, 20 Mar 2019 10:05:57 +0100 Subject: [PATCH] user interface: menus structure * NEW Adds a configuration for menu categories icons. * BETTER Attributes categories to organize submenus. * BETTER Adds filter to remove special caracters in categories name. Signed-off-by: Igor Milhit --- rero_ils/config.py | 5 +++ rero_ils/filter.py | 6 +++ rero_ils/modules/admin.py | 37 ++++++++++--------- rero_ils/modules/ext.py | 3 +- rero_ils/permissions.py | 5 ++- .../rero_ils/macros/header_menus.html | 10 +++-- 6 files changed, 44 insertions(+), 22 deletions(-) diff --git a/rero_ils/config.py b/rero_ils/config.py index da42eb68b7..29450c26fd 100644 --- a/rero_ils/config.py +++ b/rero_ils/config.py @@ -825,6 +825,11 @@ def _(x): ADMIN_PERMISSION_FACTORY = 'rero_ils.permissions.admin_permission_factory' ADMIN_BASE_TEMPLATE = BASE_TEMPLATE +RERO_ILS_ADMIN_CATEGORY_ICONS = { + "Admin & Monitoring": "fa fa-cogs", + "Catalogue": "fa fa-file-o", + "User Services": "fa fa-users" +} #: Invenio circulation configuration. CIRCULATION_ITEM_EXISTS = Item.get_record_by_pid diff --git a/rero_ils/filter.py b/rero_ils/filter.py index 9e7603cf5c..b34fc59913 100644 --- a/rero_ils/filter.py +++ b/rero_ils/filter.py @@ -25,6 +25,7 @@ """Jinja filters.""" import json +import re import babel import dateparser @@ -89,3 +90,8 @@ def get_admin_view(record_type, menus): def admin_menu_is_visible(admin_menu): """Evaluate if the menu is visible for a user.""" return any(m.is_accessible() for m in admin_menu) + + +def text_to_id(text): + """.""" + return re.sub(r'\W', '', text) diff --git a/rero_ils/modules/admin.py b/rero_ils/modules/admin.py index de4a920775..5ee6b3c180 100644 --- a/rero_ils/modules/admin.py +++ b/rero_ils/modules/admin.py @@ -37,7 +37,7 @@ class ILSManager(BaseView): @expose('/') @expose('/') def index(self, path=None): - """Angular Circulation view.""" + """Angular professional view.""" return self.render('rero_ils/page_admin.html') def is_accessible(self): @@ -66,15 +66,17 @@ def is_accessible(self): circulation = { 'view_class': ILSManager, 'kwargs': dict(name='Circulation', + category='User Services', endpoint='circulation', menu_icon_type='fa', - menu_icon_value='fa-barcode') + menu_icon_value='fa-exchange') } my_library = { 'view_class': ILSManager, 'kwargs': dict( name='My Library', + category='Admin & Monitoring', endpoint='mylibrary', menu_icon_type='fa', menu_icon_value='fa-university' @@ -85,9 +87,10 @@ def is_accessible(self): 'view_class': LibraryManager, 'kwargs': dict( name='Libraries', + category='Admin & Monitoring', endpoint='libraries', menu_icon_type='fa', - menu_icon_value='fa-barcode' + menu_icon_value='fa-university' ) } @@ -95,10 +98,10 @@ def is_accessible(self): 'view_class': ILSManager, 'kwargs': dict( name='Item Types', - category='Resources', + category='Admin & Monitoring', endpoint='records/item_types', menu_icon_type='fa', - menu_icon_value='fa-barcode' + menu_icon_value='fa-file-o' ) } @@ -106,10 +109,10 @@ def is_accessible(self): 'view_class': ILSManager, 'kwargs': dict( name='Patron Types', - category='Resources', + category='Admin & Monitoring', endpoint='records/patron_types', menu_icon_type='fa', - menu_icon_value='fa-barcode' + menu_icon_value='fa-users' ) } @@ -117,10 +120,10 @@ def is_accessible(self): 'view_class': ILSManager, 'kwargs': dict( name='Circulation Policies', - category='Resources', + category='Admin & Monitoring', endpoint='records/circ_policies', menu_icon_type='fa', - menu_icon_value='fa-barcode' + menu_icon_value='fa-exchange' ) } @@ -128,10 +131,10 @@ def is_accessible(self): 'view_class': ILSManager, 'kwargs': dict( name='Patrons', - category='Resources', + category='User Services', endpoint='records/patrons', menu_icon_type='fa', - menu_icon_value='fa-barcode' + menu_icon_value='fa-users' ) } @@ -139,10 +142,10 @@ def is_accessible(self): 'view_class': ILSManager, 'kwargs': dict( name='Persons', - category='Resources', + category='Catalogue', endpoint='records/persons', menu_icon_type='fa', - menu_icon_value='fa-barcode' + menu_icon_value='fa-user' ) } @@ -161,10 +164,10 @@ def is_accessible(self): 'view_class': ILSManager, 'kwargs': dict( name='Libraries', - category='Resources', + category='Admin & Monitoring', endpoint='records/libraries', menu_icon_type='fa', - menu_icon_value='fa-barcode' + menu_icon_value='fa-university' ) } @@ -172,10 +175,10 @@ def is_accessible(self): 'view_class': ILSManager, 'kwargs': dict( name='Documents', - category='Resources', + category='Catalogue', endpoint='records/documents', menu_icon_type='fa', - menu_icon_value='fa-barcode' + menu_icon_value='fa-file-o' ) } diff --git a/rero_ils/modules/ext.py b/rero_ils/modules/ext.py index 394d47820b..cb2ca4866b 100644 --- a/rero_ils/modules/ext.py +++ b/rero_ils/modules/ext.py @@ -41,7 +41,7 @@ from .mef_persons.receivers import publish_api_harvested_records from .patrons.listener import listener_item_at_desk from ..filter import admin_menu_is_visible, format_date_filter, jsondumps, \ - resource_can_create, to_pretty_json + resource_can_create, text_to_id, to_pretty_json from ..permissions import can_edit @@ -55,6 +55,7 @@ def __init__(self, app=None): app.add_template_filter(format_date_filter, name='format_date') app.add_template_filter(to_pretty_json, name='tojson_pretty') app.add_template_filter(can_edit, name='can_edit') + app.add_template_filter(text_to_id, name='text_to_id') app.add_template_filter(jsondumps, name='jsondumps') app.add_template_filter( resource_can_create, diff --git a/rero_ils/permissions.py b/rero_ils/permissions.py index bfa8d13c20..48d2f23d99 100644 --- a/rero_ils/permissions.py +++ b/rero_ils/permissions.py @@ -83,6 +83,9 @@ def can(self): 'Circulation Settings', 'Libraries', 'My Library'] \ - or admin_view.category in ['Resources']: + or admin_view.category in [ + 'Catalogue', + 'User Services', + 'Admin & Monitoring']: return FreeAccess() return default_admin_permission_factory(admin_view) diff --git a/rero_ils/templates/rero_ils/macros/header_menus.html b/rero_ils/templates/rero_ils/macros/header_menus.html index 157f9022cc..ad3d6f9d3f 100644 --- a/rero_ils/templates/rero_ils/macros/header_menus.html +++ b/rero_ils/templates/rero_ils/macros/header_menus.html @@ -20,13 +20,17 @@ {%- if children %} {% set class_name = item.get_class_name() %}