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 %}
+
+ {% for link in multi_item_links %}
+
+ {% endfor %}
+
+ {% 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" %}