diff --git a/apps/common/templates/generic_list_subtemplate.html b/apps/common/templates/generic_list_subtemplate.html index 34339417fb..6ac5088b56 100644 --- a/apps/common/templates/generic_list_subtemplate.html +++ b/apps/common/templates/generic_list_subtemplate.html @@ -86,15 +86,26 @@ {% endfor %} - {% if multi_select %} - {% with "true" as form_hide_required_text %} - {% get_multi_item_links_form %} - {% endwith %} - + {% 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 %} diff --git a/apps/common/templatetags/navigation.py b/apps/common/templatetags/navigation.py index 4daf26ab83..21abd348e6 100644 --- a/apps/common/templatetags/navigation.py +++ b/apps/common/templatetags/navigation.py @@ -1,5 +1,6 @@ import types import copy +import re from django.conf import settings from django.core.urlresolvers import reverse, NoReverseMatch @@ -215,21 +216,27 @@ def resolve_template_variable(context, name): class GetNavigationLinks(Node): - def __init__(self, *args): - self.menu_name = None - if args: - self.menu_name = args[0] + def __init__(self, menu_name=None, links_dict=object_navigation, var_name='object_navigation_links'): + self.menu_name = menu_name + self.links_dict = links_dict + self.var_name = var_name def render(self, context): menu_name = resolve_template_variable(context, self.menu_name) - context['object_navigation_links'] = _get_object_navigation_links(context, menu_name) + context[self.var_name] = _get_object_navigation_links(context, menu_name, links_dict=self.links_dict) return '' @register.tag def get_object_navigation_links(parser, token): - args = token.split_contents() - return GetNavigationLinks(*args[1:]) + tag_name, arg = token.contents.split(None, 1) + + m = re.search(r'("?\w+"?)?.?as (\w+)', arg) + if not m: + raise TemplateSyntaxError("%r tag had invalid arguments" % tag_name) + + menu_name, var_name = m.groups() + return GetNavigationLinks(menu_name=menu_name, var_name=var_name) @register.inclusion_tag('generic_navigation.html', takes_context=True) @@ -242,6 +249,17 @@ def object_navigation_template(context): return new_context +@register.tag +def get_multi_item_links(parser, token): + tag_name, arg = token.contents.split(None, 1) + m = re.search(r'("?\w+"?)?.?as (\w+)', arg) + if not m: + raise TemplateSyntaxError("%r tag had invalid arguments" % tag_name) + + menu_name, var_name = m.groups() + return GetNavigationLinks(menu_name=menu_name, links_dict=multi_object_navigation, var_name=var_name) + + @register.inclusion_tag('generic_form_instance.html', takes_context=True) def get_multi_item_links_form(context): new_context = copy.copy(context) diff --git a/apps/documents/views.py b/apps/documents/views.py index 40fea6a53e..083e82fa8a 100644 --- a/apps/documents/views.py +++ b/apps/documents/views.py @@ -74,7 +74,7 @@ def document_list(request): template_name='generic_list.html', extra_context={ 'title':_(u'documents'), - 'multi_select':True, + 'multi_select_as_buttons':True, }, ) diff --git a/apps/main/templates/base.html b/apps/main/templates/base.html index b52f38b594..42dee395b9 100644 --- a/apps/main/templates/base.html +++ b/apps/main/templates/base.html @@ -130,7 +130,7 @@ {% endwith %} {% endif %} - {% get_object_navigation_links %} + {% get_object_navigation_links as object_navigation_links %} {% if object_navigation_links %}
{% if object %} @@ -150,7 +150,7 @@
{% endif %} - {% get_object_navigation_links "sidebar" %} + {% get_object_navigation_links "sidebar" as object_navigation_links %} {% if object_navigation_links %}

{% trans "Other available actions" %}