Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

user interface: menus structure #228

Merged
merged 1 commit into from
Mar 21, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions rero_ils/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
6 changes: 6 additions & 0 deletions rero_ils/filter.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
"""Jinja filters."""

import json
import re

import babel
import dateparser
Expand Down Expand Up @@ -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)
37 changes: 20 additions & 17 deletions rero_ils/modules/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ class ILSManager(BaseView):
@expose('/')
@expose('/<path:path>')
def index(self, path=None):
"""Angular Circulation view."""
"""Angular professional view."""
return self.render('rero_ils/page_admin.html')

def is_accessible(self):
Expand Down Expand Up @@ -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'
Expand All @@ -85,64 +87,65 @@ 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'
)
}

item_types = {
'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'
)
}

patron_types = {
'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'
)
}

circ_policies = {
'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'
)
}

patrons = {
'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'
)
}

persons = {
'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'
)
}

Expand All @@ -161,21 +164,21 @@ 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'
)
}

documents = {
'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'
)
}

Expand Down
3 changes: 2 additions & 1 deletion rero_ils/modules/ext.py
Original file line number Diff line number Diff line change
Expand Up @@ -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


Expand All @@ -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,
Expand Down
5 changes: 4 additions & 1 deletion rero_ils/permissions.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
10 changes: 7 additions & 3 deletions rero_ils/templates/rero_ils/macros/header_menus.html
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,17 @@
{%- if children %}
{% set class_name = item.get_class_name() %}
<li class="nav-item {{ class_name if class_name }}">
{% set item_id = item.name.replace(' ', '-').lower() %}
{% set item_id = item.name | text_to_id %}
{% set icon_class = config.get('RERO_ILS_ADMIN_CATEGORY_ICONS', {}).get(item.name) %}
<a data-toggle="collapse"
class="nav-link collapsed"
href="#{{ item_id }}"
role="button"
aria-controls="collapseExample"
aria-expanded="false">
{% if icon_class %}
<i class="{{ icon_class }}" aria-hidden="true"></i>
{% endif %}
{{ menu_icon(item) }} {{ _(item.name) }}
<i class="fa fa-caret-down" aria-hidden="true"></i>
</a>
Expand Down Expand Up @@ -58,7 +62,7 @@
{%- if item.is_category() -%}
{% set children = item.get_children() %}
{%- if children %}
{% set item_id = item.name.replace(' ', '-').lower() %}
{% set item_id = item.name | text_to_id %}
<div class="rero-ils-admin-submenu collapse flex-grow-1 w-100" id="{{ item_id }}" data-parent="#navbarHide">
<ul class="navbar-nav">
{%- for child in children -%}
Expand Down Expand Up @@ -92,7 +96,7 @@
{%- if children -%}
{% set class_name = item.get_class_name() %}
<li class="nav-item{{ ' active' if item.active else ''}} w-100 list-group-item bg-light">
{% set item_id = item.name.replace(' ', '-').lower() %}
{% set item_id = item.name | text_to_id %}
<a data-toggle="collapse" class="nav-link collapsed" role="button" href="#{{ item_id }}" aria-controls="collapseExample" aria-expanded="false">{{ _(item.name) }} <i class="fa fa-caret-down float-right" aria-hidden="true"></i></a>
<ul class="nav collapse pl-2" data-parent="#mobileHide" id="{{ item_id }}">
{%- for child in children -%}
Expand Down