Extend options for LinkList

This commit is contained in:
Kirill Fomichev fanatid@ya.ru 2013-01-04 16:56:09 +06:00
parent d0981ab890
commit a02bfcb185
2 changed files with 20 additions and 5 deletions

View File

@ -5,6 +5,7 @@ Module where admin tools dashboard modules classes are defined.
from django.utils.text import capfirst from django.utils.text import capfirst
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.forms.util import flatatt
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.utils.itercompat import is_iterable from django.utils.itercompat import is_iterable
@ -306,7 +307,10 @@ class LinkList(DashboardModule):
A string describing the link, it will be the ``title`` attribute of A string describing the link, it will be the ``title`` attribute of
the html ``a`` tag. the html ``a`` tag.
Children can also be iterables (lists or tuples) of length 2, 3 or 4. ``attrs``
Hash comprising attributes of the html ``a`` tag.
Children can also be iterables (lists or tuples) of length 2, 3, 4 or 5.
Here's a small example of building a link list module:: Here's a small example of building a link list module::
@ -324,6 +328,7 @@ class LinkList(DashboardModule):
'url': 'http://www.python.org', 'url': 'http://www.python.org',
'external': True, 'external': True,
'description': 'Python programming language rocks !', 'description': 'Python programming language rocks !',
'attrs': {'target': '_blank'},
}, },
['Django website', 'http://www.djangoproject.com', True], ['Django website', 'http://www.djangoproject.com', True],
['Some internal link', '/some/internal/link/'], ['Some internal link', '/some/internal/link/'],
@ -350,9 +355,19 @@ class LinkList(DashboardModule):
link_dict['external'] = link[2] link_dict['external'] = link[2]
if len(link) >= 4: if len(link) >= 4:
link_dict['description'] = link[3] link_dict['description'] = link[3]
new_children.append(link_dict) if len(link) >= 5:
else: link_dict['attrs'] = link[4]
new_children.append(link) link = link_dict
if 'attrs' not in link:
link['attrs'] = {}
link['attrs']['href'] = link['url']
if link.get('description', ''):
link['attrs']['title'] = link['description']
if link.get('external', False):
link['attrs']['class'] = ' '.join(['external-link']
+ link['attrs'].get('class', '').split(' ')).strip()
link['attrs'] = flatatt(link['attrs'])
new_children.append(link)
self.children = new_children self.children = new_children
self._initialized = True self._initialized = True

View File

@ -4,7 +4,7 @@
{% spaceless %} {% spaceless %}
{% for child in module.children %} {% for child in module.children %}
<li class="{% cycle 'odd' 'even' %}"> <li class="{% cycle 'odd' 'even' %}">
<a{% if child.external %} class="external-link"{% endif %} href="{{ child.url }}" {% if child.description %} title="{{ child.description }}"{% endif %}>{{ child.title }}</a> <a{{ child.attrs }}>{{ child.title }}</a>
</li> </li>
{% endfor %} {% endfor %}
{% endspaceless %} {% endspaceless %}