diff --git a/mayan/apps/acls/views.py b/mayan/apps/acls/views.py index f18ca7f431..ac1f246883 100644 --- a/mayan/apps/acls/views.py +++ b/mayan/apps/acls/views.py @@ -115,7 +115,6 @@ def acl_detail_for(request, actor, obj): context = { 'object': obj.source_object, 'subtemplates_list': subtemplates_list, - 'multi_select_as_buttons': True, 'multi_select_item_properties': { 'permission_pk': lambda x: x.pk, 'holder_gid': lambda x: actor.gid, @@ -447,7 +446,6 @@ def acl_class_acl_detail(request, access_object_class_gid, holder_object_gid): return render_to_response('main/generic_detail.html', { 'object': access_object_class, 'subtemplates_list': subtemplates_list, - 'multi_select_as_buttons': True, 'multi_select_item_properties': { 'permission_pk': lambda x: x.pk, 'holder_gid': lambda x: actor.gid, diff --git a/mayan/apps/documents/__init__.py b/mayan/apps/documents/__init__.py index 190d7a56e9..56bace64ac 100644 --- a/mayan/apps/documents/__init__.py +++ b/mayan/apps/documents/__init__.py @@ -12,6 +12,7 @@ from history.permissions import PERMISSION_HISTORY_VIEW from main.api import register_diagnostic, register_maintenance_links from navigation.api import (register_links, register_model_list_columns, register_multi_item_links, register_top_menu) +from navigation.links import link_spacer from project_setup.api import register_setup from rest_api.classes import APIEndPoint from statistics.classes import StatisticNamespace @@ -76,7 +77,7 @@ register_links([DocumentTypeFilename, 'documents:document_type_filename_list', ' # Register document links register_links(Document, [document_view_simple, document_edit, document_print, document_delete, document_download, document_clear_transformations, document_update_page_count]) -register_multi_item_links(['folders:folder_view', 'index_instance_node_view', 'search', 'results', 'document_group_view', 'documents:document_list', 'documents:document_list_recent', 'tags:tag_tagged_item_list'], [document_multiple_clear_transformations, document_multiple_delete, document_multiple_download, document_multiple_update_page_count]) +register_multi_item_links(['folders:folder_view', 'index_instance_node_view', 'search', 'results', 'document_group_view', 'documents:document_list', 'documents:document_list_recent', 'tags:tag_tagged_item_list'], [link_spacer, document_multiple_clear_transformations, document_multiple_delete, document_multiple_download, document_multiple_update_page_count]) # Document Version links register_links(DocumentVersion, [document_version_revert, document_version_download]) diff --git a/mayan/apps/documents/views.py b/mayan/apps/documents/views.py index 2f4005a4e7..0b6d960139 100644 --- a/mayan/apps/documents/views.py +++ b/mayan/apps/documents/views.py @@ -62,7 +62,6 @@ class DocumentListView(SingleObjectListView): extra_context = { 'title': _(u'All documents'), - 'multi_select_as_buttons': True, 'hide_links': True, } @@ -84,7 +83,6 @@ def document_list(request, object_list=None, title=None, extra_context=None): context = { 'object_list': final_object_list, 'title': title if title else _(u'documents'), - 'multi_select_as_buttons': True, 'hide_links': True, } if extra_context: diff --git a/mayan/apps/dynamic_search/views.py b/mayan/apps/dynamic_search/views.py index fcf68677bd..9262e34e1b 100644 --- a/mayan/apps/dynamic_search/views.py +++ b/mayan/apps/dynamic_search/views.py @@ -26,7 +26,6 @@ def results(request, extra_context=None): context = { 'query_string': request.GET, 'hide_links': True, - 'multi_select_as_buttons': True, 'search_results_limit': LIMIT, } diff --git a/mayan/apps/folders/__init__.py b/mayan/apps/folders/__init__.py index 11d70f21dc..2a148e3e27 100644 --- a/mayan/apps/folders/__init__.py +++ b/mayan/apps/folders/__init__.py @@ -8,6 +8,7 @@ from common.utils import encapsulate from documents.models import Document from navigation.api import (register_links, register_model_list_columns, register_multi_item_links, register_top_menu) +from navigation.links import link_spacer from rest_api.classes import APIEndPoint from .links import (document_folder_list, folder_acl_list, @@ -27,7 +28,7 @@ register_links(Folder, [folder_view, folder_edit, folder_acl_list, folder_delete register_links([Folder, 'folders:folder_list', 'folders:folder_create'], [folder_list, folder_create], menu_name='secondary_menu') register_links(['folders:document_folder_list', 'folders:folder_add_document'], [folder_add_document], menu_name="sidebar") -register_multi_item_links(['folders:folder_view', 'indexes:index_instance_node_view', 'documents:document_type_document_list', 'search:search', 'search:results', 'indexing:document_group_view', 'documents:document_list', 'documents:document_list_recent', 'tags:tag_tagged_item_list'], [folder_add_multiple_documents]) +register_multi_item_links(['folders:folder_view', 'indexes:index_instance_node_view', 'documents:document_type_document_list', 'search:search', 'search:results', 'indexing:document_group_view', 'documents:document_list', 'documents:document_list_recent', 'tags:tag_tagged_item_list'], [link_spacer, folder_add_multiple_documents]) register_multi_item_links(['folders:folder_view'], [folder_document_multiple_remove]) register_top_menu(name='folders', link=folders_main_menu_link, children_views=['folders:folder_list', 'folders:folder_create', 'folders:folder_edit', 'folders:folder_delete', 'folders:folder_view', 'folders:folder_document_multiple_remove']) diff --git a/mayan/apps/folders/views.py b/mayan/apps/folders/views.py index 3f7bc8e77a..5031e00347 100644 --- a/mayan/apps/folders/views.py +++ b/mayan/apps/folders/views.py @@ -36,7 +36,6 @@ class FolderListView(SingleObjectListView): def get_extra_context(self): return { 'title': _(u'Folders'), - 'multi_select_as_buttons': True, 'hide_link': True, } @@ -145,7 +144,6 @@ class FolderDetailView(DocumentListView): return { 'title': _(u'Documents in folder: %s') % self.get_folder(), 'hide_links': True, - 'multi_select_as_buttons': True, 'object': self.get_folder(), 'object_name': _(u'Folder'), } @@ -215,7 +213,6 @@ def document_folder_list(request, document_id): context = { 'title': _(u'Folders containing: %s') % document, 'object': document, - 'multi_select_as_buttons': True, 'hide_link': True, } diff --git a/mayan/apps/main/templates/main/generic_list_subtemplate.html b/mayan/apps/main/templates/main/generic_list_subtemplate.html index 2144f4e8ae..267428457d 100644 --- a/mayan/apps/main/templates/main/generic_list_subtemplate.html +++ b/mayan/apps/main/templates/main/generic_list_subtemplate.html @@ -30,29 +30,17 @@ {% endif %}
+ {% get_multi_item_links_form %} + {% if multi_item_actions %} + {% with multi_item_form as form %} + {% include 'main/generic_form_instance.html' %} + {% endwith %} - {% if object_list %} - {% if multi_select or multi_select_as_buttons %} - {% if multi_select_as_buttons %} - {% get_multi_item_links as multi_item_links %} - - {% else %} - {% with 'true' as form_hide_required_text %} - {% get_multi_item_links_form %} - {% endwith %} - - {% endif %} - {% endif %} + {% endif %} {% if scrollable_content %} @@ -63,7 +51,7 @@ {% if not hide_header %} - {% if multi_select or multi_select_as_buttons %} + {% if multi_item_actions %} {% endif %} @@ -90,7 +78,8 @@ {% endif %} {% for object in object_list %} - {% if multi_select or multi_select_as_buttons %} + + {% if multi_item_actions %} {% if multi_select_item_properties %} @@ -150,30 +139,6 @@ {% if scrollable_content %} {% endif %} - - {% if object_list %} - {% if multi_select or multi_select_as_buttons %} - {% if multi_select_as_buttons %} - {% get_multi_item_links as multi_item_links %} - - {% else %} - {% with 'true' as form_hide_required_text %} - {% get_multi_item_links_form %} - {% endwith %} - - {% endif %} - {% endif %} - {% endif %}
{% paginate %} diff --git a/mayan/apps/metadata/__init__.py b/mayan/apps/metadata/__init__.py index 4398cbb897..56f19a2e4b 100644 --- a/mayan/apps/metadata/__init__.py +++ b/mayan/apps/metadata/__init__.py @@ -7,6 +7,7 @@ from common.utils import encapsulate from documents.models import Document, DocumentType from navigation.api import (register_links, register_model_list_columns, register_multi_item_links) +from navigation.links import link_spacer from project_setup.api import register_setup from rest_api.classes import APIEndPoint @@ -40,7 +41,7 @@ register_links(Document, [metadata_view], menu_name='form_header') register_links(DocumentType, [setup_document_type_metadata]) register_links(MetadataType, [setup_metadata_type_edit, setup_metadata_type_delete]) register_links([MetadataType, 'metadata:setup_metadata_type_list', 'metadata:setup_metadata_type_create'], [setup_metadata_type_list, setup_metadata_type_create], menu_name='secondary_menu') -register_multi_item_links(['folders:folder_view', 'indexes:index_instance_node_view', 'documents:document_type_document_list', 'search:search', 'search:results', 'linking:document_group_view', 'documents:document_list', 'documents:document_list_recent', 'tags:tag_tagged_item_list'], [metadata_multiple_add, metadata_multiple_edit, metadata_multiple_remove]) +register_multi_item_links(['folders:folder_view', 'indexes:index_instance_node_view', 'documents:document_type_document_list', 'search:search', 'search:results', 'linking:document_group_view', 'documents:document_list', 'documents:document_list_recent', 'tags:tag_tagged_item_list'], [link_spacer, metadata_multiple_add, metadata_multiple_edit, metadata_multiple_remove]) register_setup(setup_metadata_type_list) diff --git a/mayan/apps/navigation/forms.py b/mayan/apps/navigation/forms.py index ba3da3b1a5..4e2837f1f0 100644 --- a/mayan/apps/navigation/forms.py +++ b/mayan/apps/navigation/forms.py @@ -6,8 +6,8 @@ class MultiItemForm(forms.Form): def __init__(self, *args, **kwargs): actions = kwargs.pop('actions', []) super(MultiItemForm, self).__init__(*args, **kwargs) - choices = [('', '------')] + choices = [] choices.extend([(action[0], action[1]) for action in actions]) self.fields['action'].choices = choices - action = forms.ChoiceField(label=_(u'Multi item action')) + action = forms.ChoiceField(label=_(u'Action'), required=False) diff --git a/mayan/apps/navigation/links.py b/mayan/apps/navigation/links.py new file mode 100644 index 0000000000..f9ab054f33 --- /dev/null +++ b/mayan/apps/navigation/links.py @@ -0,0 +1 @@ +link_spacer = {'text': ('------'), 'url': ''} diff --git a/mayan/apps/navigation/templatetags/navigation_tags.py b/mayan/apps/navigation/templatetags/navigation_tags.py index a52af929b0..4eff3c9efc 100644 --- a/mayan/apps/navigation/templatetags/navigation_tags.py +++ b/mayan/apps/navigation/templatetags/navigation_tags.py @@ -267,16 +267,12 @@ def get_multi_item_links(parser, token): return GetNavigationLinks(menu_name=menu_name, links_dict=multi_object_navigation, var_name=var_name) -@register.inclusion_tag('main/generic_form_instance.html', takes_context=True) +@register.simple_tag(takes_context=True) def get_multi_item_links_form(context): - new_context = copy.copy(context) - new_context.update({ - 'form': MultiItemForm(actions=[(link['url'], link['text']) for link in _get_object_navigation_links(context, links_dict=multi_object_navigation)]), - 'title': _(u'Selected item actions:'), - 'form_action': reverse('common:multi_object_action_view'), - 'submit_method': 'get', - }) - return new_context + actions = [(link['url'], link['text']) for link in _get_object_navigation_links(context, links_dict=multi_object_navigation)] + form = MultiItemForm(actions=actions) + context.update({'multi_item_form': form, 'multi_item_actions': actions}) + return '' class GetSidebarTemplatesNone(Node): diff --git a/mayan/apps/ocr/__init__.py b/mayan/apps/ocr/__init__.py index 81f41af517..b17e6e0f5d 100644 --- a/mayan/apps/ocr/__init__.py +++ b/mayan/apps/ocr/__init__.py @@ -12,6 +12,7 @@ from documents.models import Document, DocumentVersion from documents.signals import post_version_upload from main.api import register_maintenance_links from navigation.api import register_links, register_multi_item_links +from navigation.links import link_spacer from project_tools.api import register_tool from .links import (all_document_ocr_cleanup, ocr_tool_link, @@ -25,7 +26,7 @@ from .tasks import task_do_ocr logger = logging.getLogger(__name__) register_links(Document, [submit_document]) -register_multi_item_links(['folders:folder_view', 'indexing:index_instance_node_view', 'documents:document_type_document_list', 'search:search', 'search:results', 'linking:document_group_view', 'documents:document_list', 'document:document_list_recent', 'tags:tag_tagged_item_list'], [submit_document_multiple]) +register_multi_item_links(['folders:folder_view', 'indexing:index_instance_node_view', 'documents:document_type_document_list', 'search:search', 'search:results', 'linking:document_group_view', 'documents:document_list', 'document:document_list_recent', 'tags:tag_tagged_item_list'], [link_spacer, submit_document_multiple]) register_multi_item_links(['ocr:queue_document_list'], [re_queue_multiple_document, queue_document_multiple_delete]) register_links(['ocr:queue_document_list'], [queue_document_list], menu_name='secondary_menu') diff --git a/mayan/apps/ocr/views.py b/mayan/apps/ocr/views.py index ae2542b6f0..2a097a646d 100644 --- a/mayan/apps/ocr/views.py +++ b/mayan/apps/ocr/views.py @@ -41,7 +41,6 @@ def queue_document_list(request, queue_name='default'): {'name': _('Node'), 'attribute': 'node_name'}, {'name': _('Result'), 'attribute': 'result'}, ], - 'multi_select_as_buttons': True, } return render_to_response('main/generic_list.html', context, diff --git a/mayan/apps/permissions/views.py b/mayan/apps/permissions/views.py index 6e5bd309b0..ff43b45e37 100644 --- a/mayan/apps/permissions/views.py +++ b/mayan/apps/permissions/views.py @@ -97,7 +97,6 @@ def role_permissions(request, role_id): 'object': role, 'object_name': _(u'Role'), 'subtemplates_list': subtemplates_list, - 'multi_select_as_buttons': True, 'multi_select_item_properties': { 'permission_id': lambda x: x.pk, 'requester_id': lambda x: role.pk, diff --git a/mayan/apps/tags/__init__.py b/mayan/apps/tags/__init__.py index c4ea65c80a..a2c660fc5e 100644 --- a/mayan/apps/tags/__init__.py +++ b/mayan/apps/tags/__init__.py @@ -8,6 +8,7 @@ from documents import document_search from documents.models import Document from navigation.api import (register_links, register_model_list_columns, register_multi_item_links, register_top_menu) +from navigation.links import link_spacer from rest_api.classes import APIEndPoint from .links import (multiple_documents_selection_tag_remove, @@ -52,14 +53,14 @@ register_model_list_columns(Document, [ ]) register_links(Tag, [tag_tagged_item_list, tag_edit, tag_acl_list, tag_delete]) -register_multi_item_links(['tags:tag_list'], [tag_multiple_delete]) +register_multi_item_links(['tags:tag_list'], [link_spacer, tag_multiple_delete]) register_links([Tag, 'tags:tag_list', 'tags:tag_create'], [tag_list, tag_create], menu_name='secondary_menu') register_top_menu('tags', link={'text': _(u'Tags'), 'view': 'tags:tag_list', 'famfam': 'tag_blue'}, children_view_regex=[r'^tag_(list|create|delete|edit|tagged|acl)']) register_links(Document, [tag_document_list], menu_name='form_header') register_links(['tags:document_tags', 'tags:tag_remove', 'tag_multiple_remove', 'tag_attach'], [tag_attach], menu_name='sidebar') -register_multi_item_links(['document_tags'], [single_document_multiple_tag_remove]) +register_multi_item_links(['tags:document_tags'], [link_spacer, single_document_multiple_tag_remove]) -register_multi_item_links(['folders:folder_view', 'indexes:index_instance_node_view', 'documents:document_type_document_list', 'search:search', 'search:results', 'linking:document_group_view', 'documents:document_list', 'documents:document_list_recent', 'tags:tag_tagged_item_list'], [tag_multiple_attach, multiple_documents_selection_tag_remove]) +register_multi_item_links(['folders:folder_view', 'indexes:index_instance_node_view', 'documents:document_type_document_list', 'search:search', 'search:results', 'linking:document_group_view', 'documents:document_list', 'documents:document_list_recent', 'tags:tag_tagged_item_list'], [link_spacer, tag_multiple_attach, multiple_documents_selection_tag_remove]) document_search.add_model_field('tags__label', label=_(u'Tags')) diff --git a/mayan/apps/tags/views.py b/mayan/apps/tags/views.py index cb1cfe9f3f..4c30f839b0 100644 --- a/mayan/apps/tags/views.py +++ b/mayan/apps/tags/views.py @@ -114,7 +114,6 @@ def tag_list(request, queryset=None, extra_context=None): context = { 'title': _(u'Tags'), 'hide_link': True, - 'multi_select_as_buttons': True, 'hide_object': True, } if extra_context: @@ -225,7 +224,6 @@ class TagTaggedItemListView(DocumentListView): return { 'title': _(u'Documents with the tag "%s"') % self.get_tag(), 'hide_links': True, - 'multi_select_as_buttons': True, 'object': self.get_tag(), 'object_name': _(u'Tag'), } diff --git a/mayan/apps/user_management/views.py b/mayan/apps/user_management/views.py index 068a144aeb..b1a9e4b23c 100644 --- a/mayan/apps/user_management/views.py +++ b/mayan/apps/user_management/views.py @@ -47,7 +47,6 @@ def user_list(request): 'attribute': encapsulate(lambda x: two_state_template(x.has_usable_password())), }, ], - 'multi_select_as_buttons': True, } return render_to_response('main/generic_list.html', context, @@ -256,7 +255,6 @@ def group_list(request): 'attribute': 'user_set.count' }, ], - 'multi_select_as_buttons': True, } return render_to_response('main/generic_list.html', context,