stub graphics
[prawokultury.git] / migdal / templatetags / migdal_tags.py
index 5578c5d..f56322e 100644 (file)
@@ -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}