diff --git a/mayan/apps/appearance/templates/appearance/dashboard_widget.html b/mayan/apps/appearance/templates/appearance/dashboard_widget.html index c3bfc8c18b..fbf0629437 100644 --- a/mayan/apps/appearance/templates/appearance/dashboard_widget.html +++ b/mayan/apps/appearance/templates/appearance/dashboard_widget.html @@ -5,7 +5,13 @@
- + {% if widget.icon %} + + {% elif widget.icon_class %} +
+ {{ widget.icon_class.render }} +
+ {% endif %}
{{ widget.label }} diff --git a/mayan/apps/appearance/templates/appearance/generic_confirm.html b/mayan/apps/appearance/templates/appearance/generic_confirm.html index 84527ed2d0..18aa5c6faf 100644 --- a/mayan/apps/appearance/templates/appearance/generic_confirm.html +++ b/mayan/apps/appearance/templates/appearance/generic_confirm.html @@ -45,7 +45,14 @@ {% endif %} {% if previous %} diff --git a/mayan/apps/appearance/templates/appearance/generic_form_subtemplate.html b/mayan/apps/appearance/templates/appearance/generic_form_subtemplate.html index 76128d5584..8eb688f6ba 100644 --- a/mayan/apps/appearance/templates/appearance/generic_form_subtemplate.html +++ b/mayan/apps/appearance/templates/appearance/generic_form_subtemplate.html @@ -73,7 +73,16 @@ {% endif %} {% if not read_only %}
- + {% if previous %}   {% if cancel_label %}{{ cancel_label }}{% else %}{% trans 'Cancel' %}{% endif %} diff --git a/mayan/apps/checkouts/dashboard_widgets.py b/mayan/apps/checkouts/dashboard_widgets.py index 36152ef858..1678434af4 100644 --- a/mayan/apps/checkouts/dashboard_widgets.py +++ b/mayan/apps/checkouts/dashboard_widgets.py @@ -6,6 +6,8 @@ from django.utils.translation import ugettext_lazy as _ from common.classes import DashboardWidget +from .icons import icon_dashboard_checkouts + def checkedout_documents_queryset(): DocumentCheckout = apps.get_model( @@ -15,7 +17,8 @@ def checkedout_documents_queryset(): widget_checkouts = DashboardWidget( + icon_class=icon_dashboard_checkouts, label=_('Checkedout documents'), link=reverse_lazy('checkouts:checkout_list'), - icon='fa fa-shopping-cart', queryset=checkedout_documents_queryset + queryset=checkedout_documents_queryset ) diff --git a/mayan/apps/checkouts/icons.py b/mayan/apps/checkouts/icons.py index 751e2a6060..b618bf24f8 100644 --- a/mayan/apps/checkouts/icons.py +++ b/mayan/apps/checkouts/icons.py @@ -3,3 +3,6 @@ from __future__ import absolute_import, unicode_literals from appearance.classes import Icon icon_checkout_info = Icon(driver_name='fontawesome', symbol='shopping-cart') +icon_dashboard_checkouts = Icon( + driver_name='fontawesome', symbol='shopping-cart' +) diff --git a/mayan/apps/common/classes.py b/mayan/apps/common/classes.py index d95866423c..2824b6f93b 100644 --- a/mayan/apps/common/classes.py +++ b/mayan/apps/common/classes.py @@ -15,9 +15,10 @@ class Collection(object): def get_all(cls): return sorted(cls._registry, key=lambda entry: entry._order) - def __init__(self, label, icon=None, link=None, queryset=None, model=None, order=None): + def __init__(self, label, icon=None, icon_class=None, link=None, queryset=None, model=None, order=None): self._label = label self._icon = icon + self._icon_class = icon_class self._link = link self._queryset = queryset self._model = model @@ -34,6 +35,7 @@ class Collection(object): self.url = None if self._link: self.icon = getattr(self._link, 'icon', self._icon) + self.icon_class = getattr(self._link, 'icon_class', self._icon_class) self.url = reverse(viewname=self._link.view, args=self._link.args) return '' @@ -89,9 +91,10 @@ class DashboardWidget(object): def get_all(cls): return cls._registry - def __init__(self, label, func=None, icon=None, link=None, queryset=None, statistic_slug=None): + def __init__(self, label, func=None, icon=None, icon_class=None, link=None, queryset=None, statistic_slug=None): self.label = label self.icon = icon + self.icon_class = icon_class self.link = link self.queryset = queryset self.func = func diff --git a/mayan/apps/common/generics.py b/mayan/apps/common/generics.py index 3aab7d628a..a73374a724 100644 --- a/mayan/apps/common/generics.py +++ b/mayan/apps/common/generics.py @@ -22,6 +22,7 @@ from django_downloadview import ( from pure_pagination.mixins import PaginationMixin from .forms import ChoiceForm +from .icons import icon_assign_remove_add, icon_assign_remove_remove from .mixins import ( DeleteExtraDataMixin, DynamicFormViewMixin, ExtraContextMixin, FormExtraKwargsMixin, MultipleObjectMixin, ObjectActionMixin, @@ -158,7 +159,7 @@ class AssignRemoveView(ExtraContextMixin, ViewPermissionCheckMixin, ObjectPermis 'form': self.unselected_list, 'title': self.left_list_title or ' ', 'submit_label': _('Add'), - 'submit_icon': 'fa fa-plus', + 'submit_icon_class': icon_assign_remove_add, 'hide_labels': True, } }, @@ -169,7 +170,7 @@ class AssignRemoveView(ExtraContextMixin, ViewPermissionCheckMixin, ObjectPermis 'form': self.selected_list, 'title': self.right_list_title or ' ', 'submit_label': _('Remove'), - 'submit_icon': 'fa fa-minus', + 'submit_icon_class': icon_assign_remove_remove, 'hide_labels': True, } }, diff --git a/mayan/apps/common/icons.py b/mayan/apps/common/icons.py index 9f849ac132..49e4dff16d 100644 --- a/mayan/apps/common/icons.py +++ b/mayan/apps/common/icons.py @@ -3,6 +3,8 @@ from __future__ import absolute_import, unicode_literals from appearance.classes import Icon icon_about = Icon(driver_name='fontawesome', symbol='info') +icon_assign_remove_add = Icon(driver_name='fontawesome', symbol='plus') +icon_assign_remove_remove = Icon(driver_name='fontawesome', symbol='minus') icon_check_version = Icon(driver_name='fontawesome', symbol='sync') icon_code = Icon(driver_name='fontawesome', symbol='code-branch') icon_current_user_details = Icon(driver_name='fontawesome', symbol='user') @@ -20,6 +22,12 @@ icon_forum = Icon( icon_license = Icon( driver_name='fontawesome', symbol='certificate' ) +icon_menu_about = Icon( + driver_name='fontawesome', symbol='info' +) +icon_menu_user = Icon( + driver_name='fontawesome', symbol='user-circle' +) icon_object_error_list_with_icon = Icon( driver_name='fontawesome', symbol='lock' ) diff --git a/mayan/apps/common/menus.py b/mayan/apps/common/menus.py index d91973ebd8..f5ed0b1748 100644 --- a/mayan/apps/common/menus.py +++ b/mayan/apps/common/menus.py @@ -4,12 +4,16 @@ from django.utils.translation import ugettext_lazy as _ from navigation import Menu +from .icons import icon_menu_about, icon_menu_user + __all__ = ( 'menu_about', 'menu_facet', 'menu_object', 'menu_main', 'menu_multi_item', 'menu_secondary', 'menu_setup', 'menu_sidebar', 'menu_tools', 'menu_user' ) -menu_about = Menu(icon='fa fa-info', label=_('System'), name='about menu') +menu_about = Menu( + icon_class=icon_menu_about, label=_('System'), name='about menu' +) menu_facet = Menu(name='object facet') menu_object = Menu(name='object menu') menu_main = Menu(name='main menu') @@ -19,5 +23,5 @@ menu_setup = Menu(name='setup menu') menu_sidebar = Menu(name='sidebar menu') menu_tools = Menu(name='tools menu') menu_user = Menu( - icon='fa fa-user-circle', name='user menu', label=_('User') + icon_class=icon_menu_user, name='user menu', label=_('User') ) diff --git a/mayan/apps/django_gpg/icons.py b/mayan/apps/django_gpg/icons.py index 8d795c070a..e68484532f 100644 --- a/mayan/apps/django_gpg/icons.py +++ b/mayan/apps/django_gpg/icons.py @@ -3,3 +3,4 @@ from __future__ import absolute_import, unicode_literals from appearance.classes import Icon icon_key_setup = Icon(driver_name='fontawesome', symbol='key') +icon_keyserver_search = Icon(driver_name='fontawesome', symbol='search') diff --git a/mayan/apps/django_gpg/views.py b/mayan/apps/django_gpg/views.py index b932358d15..498647f1a8 100644 --- a/mayan/apps/django_gpg/views.py +++ b/mayan/apps/django_gpg/views.py @@ -14,6 +14,7 @@ from common.generics import ( ) from .forms import KeyDetailForm, KeySearchForm +from .icons import icon_keyserver_search from .literals import KEY_TYPE_PUBLIC from .models import Key from .permissions import ( @@ -103,7 +104,7 @@ class KeyQueryView(SimpleView): return { 'form': self.get_form(), 'form_action': reverse('django_gpg:key_query_results'), - 'submit_icon': 'fa fa-search', + 'submit_icon_class': icon_keyserver_search, 'submit_label': _('Search'), 'submit_method': 'GET', 'title': _('Query key server'), diff --git a/mayan/apps/documents/dashboard_widgets.py b/mayan/apps/documents/dashboard_widgets.py index aafee3c874..5e9237a200 100644 --- a/mayan/apps/documents/dashboard_widgets.py +++ b/mayan/apps/documents/dashboard_widgets.py @@ -6,6 +6,11 @@ from django.utils.translation import ugettext_lazy as _ from common.classes import DashboardWidget +from .icons import ( + icon_dashboard_documents_in_trash, icon_dashboard_document_types, + icon_dashboard_pages_per_month, icon_dashboard_new_documents_this_month, + icon_dashboard_total_document +) from .statistics import ( new_document_pages_this_month, new_documents_this_month, ) @@ -33,7 +38,8 @@ def get_deleted_documents_queryset(): widget_pages_per_month = DashboardWidget( - func=new_document_pages_this_month, icon='fa fa-calendar', + func=new_document_pages_this_month, + icon_class=icon_dashboard_pages_per_month, label=_('New pages this month'), link=reverse_lazy( 'statistics:statistic_detail', @@ -42,7 +48,8 @@ widget_pages_per_month = DashboardWidget( ) widget_new_documents_this_month = DashboardWidget( - func=new_documents_this_month, icon='fa fa-calendar', + func=new_documents_this_month, + icon_class=icon_dashboard_new_documents_this_month, label=_('New documents this month'), link=reverse_lazy( 'statistics:statistic_detail', @@ -51,21 +58,24 @@ widget_new_documents_this_month = DashboardWidget( ) widget_total_documents = DashboardWidget( - icon='fa fa-file', queryset=get_total_documents_queryset, + icon_class=icon_dashboard_total_document, + queryset=get_total_documents_queryset, label=_('Total documents'), link=reverse_lazy('documents:document_list') ) widget_document_types = DashboardWidget( - icon='fa fa-book', queryset=get_document_types_queryset, + icon_class=icon_dashboard_document_types, + queryset=get_document_types_queryset, label=_('Document types'), link=reverse_lazy('documents:document_type_list') ) widget_documents_in_trash = DashboardWidget( - icon='fa fa-trash', queryset=get_deleted_documents_queryset, + icon_class=icon_dashboard_documents_in_trash, + queryset=get_deleted_documents_queryset, label=_('Documents in trash'), link=reverse_lazy('documents:document_list_deleted') ) diff --git a/mayan/apps/documents/icons.py b/mayan/apps/documents/icons.py index 650fedc91a..99d43e2683 100644 --- a/mayan/apps/documents/icons.py +++ b/mayan/apps/documents/icons.py @@ -3,6 +3,21 @@ from __future__ import absolute_import, unicode_literals from appearance.classes import Icon icon_clear_image_cache = Icon(driver_name='fontawesome', symbol='file-image') +icon_dashboard_document_types = Icon( + driver_name='fontawesome', symbol='book' +) +icon_dashboard_documents_in_trash = Icon( + driver_name='fontawesome', symbol='book' +) +icon_dashboard_pages_per_month = Icon( + driver_name='fontawesome', symbol='trash' +) +icon_dashboard_new_documents_this_month = Icon( + driver_name='fontawesome', symbol='calendar' +) +icon_dashboard_total_document = Icon( + driver_name='fontawesome', symbol='file' +) icon_document_duplicates_list = Icon( driver_name='fontawesome', symbol='clone' ) @@ -54,3 +69,4 @@ icon_duplicated_document_list = Icon( icon_duplicated_document_scan = Icon( driver_name='fontawesome', symbol='clone' ) +icon_menu_documents = Icon(driver_name='fontawesome', symbol='file') diff --git a/mayan/apps/documents/menus.py b/mayan/apps/documents/menus.py index 98fcfcfff5..9dc48882b0 100644 --- a/mayan/apps/documents/menus.py +++ b/mayan/apps/documents/menus.py @@ -4,6 +4,9 @@ from django.utils.translation import ugettext_lazy as _ from navigation import Menu +from .icons import icon_menu_documents + menu_documents = Menu( - icon='fa fa-file', label=_('Documents'), name='documents menu' + icon_class=icon_menu_documents, label=_('Documents'), + name='documents menu' ) diff --git a/mayan/apps/dynamic_search/icons.py b/mayan/apps/dynamic_search/icons.py new file mode 100644 index 0000000000..7651778409 --- /dev/null +++ b/mayan/apps/dynamic_search/icons.py @@ -0,0 +1,5 @@ +from __future__ import absolute_import, unicode_literals + +from appearance.classes import Icon + +icon_search_submit = Icon(driver_name='fontawesome', symbol='search') diff --git a/mayan/apps/dynamic_search/views.py b/mayan/apps/dynamic_search/views.py index b5fd2234da..654465473f 100644 --- a/mayan/apps/dynamic_search/views.py +++ b/mayan/apps/dynamic_search/views.py @@ -9,6 +9,7 @@ from django.views.generic.base import RedirectView from common.generics import SimpleView, SingleObjectListView from .forms import SearchForm, AdvancedSearchForm +from .icons import icon_search_submit from .mixins import SearchModelMixin from .settings import setting_limit @@ -59,7 +60,7 @@ class SearchView(SearchModelMixin, SimpleView): 'search:results', args=(self.search_model.get_full_name(),) ), 'search_model': self.search_model, - 'submit_icon': 'fa fa-search', + 'submit_icon_class': icon_search_submit, 'submit_label': _('Search'), 'submit_method': 'GET', 'title': _('Search for: %s') % self.search_model.label, diff --git a/mayan/apps/mailer/icons.py b/mayan/apps/mailer/icons.py index 8c6698b518..77ab8fd01c 100644 --- a/mayan/apps/mailer/icons.py +++ b/mayan/apps/mailer/icons.py @@ -2,6 +2,9 @@ from __future__ import absolute_import, unicode_literals from appearance.classes import Icon +icon_mail_document_submit = Icon( + driver_name='fontawesome', symbol='envelope' +) icon_system_mailer_error_log = Icon( driver_name='fontawesome', symbol='envelope' ) diff --git a/mayan/apps/mailer/views.py b/mayan/apps/mailer/views.py index c7e8c2baca..0d2a5b0749 100644 --- a/mayan/apps/mailer/views.py +++ b/mayan/apps/mailer/views.py @@ -18,6 +18,7 @@ from .forms import ( DocumentMailForm, UserMailerBackendSelectionForm, UserMailerDynamicForm, UserMailerTestForm ) +from .icons import icon_mail_document_submit from .models import LogEntry, UserMailer from .permissions import ( permission_mailing_link, permission_mailing_send_document, @@ -55,7 +56,7 @@ class MailDocumentView(MultipleObjectFormActionView): queryset = self.get_queryset() result = { - 'submit_icon': 'fa fa-envelope', + 'submit_icon_class': icon_mail_document_submit, 'submit_label': _('Send'), 'title': ungettext( self.title, diff --git a/mayan/apps/metadata/icons.py b/mayan/apps/metadata/icons.py index 56005aeb49..12e4142ffd 100644 --- a/mayan/apps/metadata/icons.py +++ b/mayan/apps/metadata/icons.py @@ -2,4 +2,13 @@ from __future__ import absolute_import, unicode_literals from appearance.classes import Icon +icon_document_metadata_add_submit = Icon( + driver_name='fontawesome', symbol='plus' +) +icon_document_metadata_edit_submit = Icon( + driver_name='fontawesome', symbol='pencil-alt' +) +icon_document_metadata_remove_submit = Icon( + driver_name='fontawesome', symbol='minus' +) icon_metadata_view = Icon(driver_name='fontawesome', symbol='pencil-alt') diff --git a/mayan/apps/metadata/views.py b/mayan/apps/metadata/views.py index 841a092d16..f410a5adb6 100644 --- a/mayan/apps/metadata/views.py +++ b/mayan/apps/metadata/views.py @@ -26,6 +26,10 @@ from .forms import ( DocumentMetadataRemoveFormSet, DocumentTypeMetadataTypeRelationshipFormSet, MetadataTypeForm ) +from .icons import ( + icon_document_metadata_add_submit, icon_document_metadata_edit_submit, + icon_document_metadata_remove_submit +) from .models import DocumentMetadata, MetadataType from .permissions import ( permission_metadata_document_add, permission_metadata_document_edit, @@ -94,7 +98,7 @@ class DocumentMetadataAddView(MultipleObjectFormActionView): queryset = self.get_queryset() result = { - 'submit_icon': 'fa fa-plus', + 'submit_icon_class': icon_document_metadata_add_submit, 'submit_label': _('Add'), 'title': ungettext( 'Add metadata types to document', @@ -252,7 +256,7 @@ class DocumentMetadataEditView(MultipleObjectFormActionView): result = { 'form_display_mode_table': True, - 'submit_icon': 'fa fa-pencil-alt', + 'submit_icon_class': icon_document_metadata_edit_submit, 'submit_label': _('Edit'), 'title': ungettext( 'Edit document metadata', @@ -425,7 +429,7 @@ class DocumentMetadataRemoveView(MultipleObjectFormActionView): result = { 'form_display_mode_table': True, - 'submit_icon': 'fa fa-minus', + 'submit_icon_class': icon_document_metadata_remove_submit, 'submit_label': _('Remove'), 'title': ungettext( 'Remove metadata types from the document', diff --git a/mayan/apps/sources/icons.py b/mayan/apps/sources/icons.py index 912fc12d10..709b22e60b 100644 --- a/mayan/apps/sources/icons.py +++ b/mayan/apps/sources/icons.py @@ -6,3 +6,5 @@ icon_document_create_multiple = Icon( driver_name='fontawesome', symbol='upload' ) icon_setup_sources = Icon(driver_name='fontawesome', symbol='upload') +icon_upload_view_link = Icon(driver_name='fontawesome', symbol='upload') +icon_wizard_submit = Icon(driver_name='fontawesome', symbol='arrow-right') diff --git a/mayan/apps/sources/views.py b/mayan/apps/sources/views.py index c3dc2d2797..6f624ac4bd 100644 --- a/mayan/apps/sources/views.py +++ b/mayan/apps/sources/views.py @@ -30,6 +30,7 @@ from .exceptions import SourceException from .forms import ( NewDocumentForm, NewVersionForm, WebFormUploadForm, WebFormUploadFormHTML5 ) +from .icons import icon_upload_view_link from .literals import SOURCE_UNCOMPRESS_CHOICE_ASK, SOURCE_UNCOMPRESS_CHOICE_Y from .models import ( InteractiveSource, Source, SaneScanner, StagingFolderSource @@ -78,12 +79,12 @@ class UploadBaseView(MultiFormView): args = ('"{}"'.format(source.pk),) return Link( - text=source.label, - view=view, args=args, + icon_class=icon_upload_view_link, keep_query=True, remove_from_query=['page'], - icon='fa fa-upload', + text=source.label, + view=view, ) @staticmethod diff --git a/mayan/apps/sources/wizards.py b/mayan/apps/sources/wizards.py index 88eeb4ec7c..b74c849763 100644 --- a/mayan/apps/sources/wizards.py +++ b/mayan/apps/sources/wizards.py @@ -12,6 +12,8 @@ from formtools.wizard.views import SessionWizardView from documents.forms import DocumentTypeSelectForm +from .icons import icon_wizard_submit + class WizardStep(object): _registry = {} @@ -156,7 +158,7 @@ class DocumentCreateWizard(SessionWizardView): 'step_label': wizard_step.label, }, 'submit_label': _('Next step'), - 'submit_icon': 'fa fa-arrow-right', + 'submit_icon_class': icon_wizard_submit, 'title': _('Document upload wizard'), }) return context diff --git a/mayan/apps/tags/icons.py b/mayan/apps/tags/icons.py index c7da5ece0c..ae83c6feb7 100644 --- a/mayan/apps/tags/icons.py +++ b/mayan/apps/tags/icons.py @@ -2,6 +2,9 @@ from __future__ import absolute_import, unicode_literals from appearance.classes import Icon +icon_menu_tags = Icon(driver_name='fontawesome', symbol='tag') icon_tag_create = Icon(driver_name='fontawesome', symbol='plus') +icon_tag_delete_submit = Icon(driver_name='fontawesome', symbol='times') icon_tag_document_list = Icon(driver_name='fontawesome', symbol='tag') icon_tag_list = Icon(driver_name='fontawesome', symbol='tag') +icon_tag_remove_submit = Icon(driver_name='fontawesome', symbol='minus') diff --git a/mayan/apps/tags/menus.py b/mayan/apps/tags/menus.py index 9ab3149490..560a45a4b8 100644 --- a/mayan/apps/tags/menus.py +++ b/mayan/apps/tags/menus.py @@ -4,6 +4,8 @@ from django.utils.translation import ugettext_lazy as _ from navigation import Menu +from .icons import icon_menu_tags + menu_tags = Menu( - icon='fa fa-tag', label=_('Tags'), name='tags menu' + icon_class=icon_menu_tags, label=_('Tags'), name='tags menu' ) diff --git a/mayan/apps/tags/views.py b/mayan/apps/tags/views.py index 84ab8e43b2..d079894989 100644 --- a/mayan/apps/tags/views.py +++ b/mayan/apps/tags/views.py @@ -17,6 +17,7 @@ from documents.views import DocumentListView from documents.permissions import permission_document_view from .forms import TagMultipleSelectionForm +from .icons import icon_tag_delete_submit, icon_tag_remove_submit from .models import Tag from .permissions import ( permission_tag_attach, permission_tag_create, permission_tag_delete, @@ -129,7 +130,7 @@ class TagDeleteActionView(MultipleObjectConfirmActionView): result = { 'message': _('Will be removed from all documents.'), - 'submit_icon': 'fa fa-times', + 'submit_icon_class': icon_tag_delete_submit, 'submit_label': _('Delete'), 'title': ungettext( 'Delete the selected tag?', @@ -252,6 +253,7 @@ class TagRemoveActionView(MultipleObjectFormActionView): queryset = self.get_queryset() result = { + 'submit_icon_class': icon_tag_remove_submit, 'submit_label': _('Remove'), 'title': ungettext( singular='Remove tags to %(count)d document',