X-Git-Url: https://git.mdrn.pl/prawokultury.git/blobdiff_plain/40d4547a5c9eb12079306c0d683a77d183e8588d..a50ddc685551384615e95785eb01d4505412df5e:/migdal/templatetags/migdal_tags.py diff --git a/migdal/templatetags/migdal_tags.py b/migdal/templatetags/migdal_tags.py index 5578c5d..f56322e 100644 --- a/migdal/templatetags/migdal_tags.py +++ b/migdal/templatetags/migdal_tags.py @@ -4,8 +4,11 @@ # from django_comments_xtd.models import XtdComment from django.contrib import comments +from django.core.urlresolvers import reverse from django import template -from migdal.models import Category +from migdal.models import Category, Entry +from migdal import settings +from django.utils.translation import ugettext_lazy as _ register = template.Library() @@ -16,7 +19,10 @@ def entry_begin(context, entry): 'migdal/entry/%s/entry_begin.html' % entry.type, 'migdal/entry/entry_begin.html', )) - context.update({'object': entry}) + context = { + 'request': context['request'], + 'object': entry, + } return t.render(template.Context(context)) @@ -26,13 +32,19 @@ def entry_short(context, entry): 'migdal/entry/%s/entry_short.html' % entry.type, 'migdal/entry/entry_short.html', )) - context.update({'object': entry}) + context = { + 'request': context['request'], + 'object': entry, + } return t.render(template.Context(context)) @register.inclusion_tag('migdal/categories.html', takes_context=True) -def categories(context): - context.update({'object_list': Category.objects.all()}) +def categories(context, taxonomy): + context = { + 'request': context['request'], + 'object_list': Category.objects.filter(taxonomy=taxonomy) + } return context @@ -47,4 +59,58 @@ def entry_comment_form(entry): return { 'form': comments.get_form()(entry), 'next': entry.get_absolute_url(), - } \ No newline at end of file + } + + +class MenuItem(object): + html_id = None + + def __init__(self, title, url, html_id=None): + self.title = title + self.url = url + self.html_id = html_id + + def check_active(self, chooser, value): + self.active = chooser == 'url' and value == self.url + + +class ModelMenuItem(object): + def __init__(self, obj, html_id=None): + self.obj = obj + self.title = unicode(obj) + self.url = obj.get_absolute_url() + self.html_id = html_id + + def check_active(self, chooser, value): + self.active = (chooser == 'object' and value == self.obj or + chooser == 'objects' and self.obj in value) + + +class EntryTypeMenuItem(object): + def __init__(self, title, type_, html_id=None): + self.type = type_ + self.title = title + self.url = reverse('migdal_entry_list_%s' % type_) + self.html_id = html_id + + def check_active(self, chooser, value): + self.active = (chooser == 'object' and isinstance(value, Entry) + and value.type == self.type or + chooser == 'entry_type' and value == self.type) + +@register.inclusion_tag('migdal/menu.html', takes_context=True) +def main_menu(context, chooser=None, value=None): + items = [ + ModelMenuItem(Entry.objects.get(slug_pl='o-nas')), + EntryTypeMenuItem(_(u'Publications'), u'publications'), + MenuItem(_(u'Events'), reverse('events')), + ModelMenuItem(Category.objects.get(slug_pl='stanowisko')), + ModelMenuItem(Category.objects.get(slug_pl='pierwsza-pomoc')), + ] + if context['request'].LANGUAGE_CODE == 'pl': + items.append(MenuItem(u'en', '/en/', html_id='item-lang')) + else: + items.append(MenuItem(u'pl', '/', html_id='item-lang')) + for item in items: + item.check_active(chooser, value) + return {'items': items}