Commit a0d48ed2904e262cf067d7605438879920462433

New menu module.
menu.py integrates middleware, context procesor, which takes menu variable from
request into set of context variables...
New menu system uses same algorithm as views....

If there was need of modificatinon menu items it can be done by changing template..
  
77msgstr ""
88"Project-Id-Version: PACKAGE VERSION\n"
99"Report-Msgid-Bugs-To: \n"
10"POT-Creation-Date: 2009-09-13 14:12+0200\n"
10"POT-Creation-Date: 2009-10-12 19:53+0200\n"
1111"PO-Revision-Date: 2009-09-13 14:11+0100\n"
1212"Last-Translator: Miloš Kozák <milos.kozak@lejmr.com>\n"
1313"Language-Team: LANGUAGE <LL@li.org>\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717
18#: gallery/templates/image.html:6 gallery/templates/list_gallery.html:14
18#: gallery/templates/image.html:6 gallery/templates/list_gallery.html:11
19#: gallery/templates/list_gallery.html:12
1920msgid "Image:"
2021msgstr "Obrázek:"
2122
2424msgid "Adresar"
2525msgstr "Adresář"
2626
27#: gallery/templates/list_gallery.html:11
28msgid "Directory:"
29msgstr "Adresář:"
27#: templates/base.html:87
28msgid "Foto galerie"
29msgstr ""
3030
31#: gallery/templates/list_gallery.html:11
32msgid "Folder"
33msgstr "Složka:"
31#~ msgid "Directory:"
32#~ msgstr "Adresář:"
33
34#~ msgid "Folder"
35#~ msgstr "Složka:"
menu.py
(51 / 0)
  
1from django.http import HttpResponse
2import settings,os
3from django.shortcuts import render_to_response
4from django.template import RequestContext
5from django.utils.encoding import *
6from django.template.loader import render_to_string
7
8def create(request):
9
10 tree={}
11 this_dir=[]
12 for dirname, dirs, files in os.walk(settings.GALLERY_ROOT):
13 pdir = dirname.replace(settings.GALLERY_ROOT,"")
14
15 if len(pdir)!=0:
16 sep=pdir.split(os.path.sep)
17 tmptree=tree
18 for dir in sep:
19 if not dir in tmptree:
20 tmptree[dir]={}
21 tmptree=tmptree[dir]
22
23 def makeItem(dir,array,path=''):
24 out=[]
25 if len(array)!=0:
26 for subdir in array:
27 out.append(makeItem(subdir,array[subdir],os.path.join(path,dir)))
28
29 return render_to_string('menu/item.html',{'dir':dir,'subdir':''.join(out),'path':os.path.join(path,dir)})
30
31 out=[]
32 for dir in tree.keys():
33 if len(tree[dir])!=0:
34 out.append(makeItem(dir,tree[dir]))
35
36 return render_to_string('menu/menu.html' , {'tree':''.join(out)}, context_instance=RequestContext(request), )
37 return render_to_response('menu/menu.html' , {'tree':''.join(out)}, context_instance=RequestContext(request), )
38
39
40class MyMiddleware(object):
41 #def process_view(self, request, view_func, view_args, view_kwargs):
42 def process_request(self, request):
43 request.menu=create(request)
44 return None
45
46
47def ContextProcesor(request):
48 if hasattr(request, 'menu'):
49 return {'MENU': request.menu }
50 else:
51 return {'MENU': {} }
  
6363 'django.middleware.common.CommonMiddleware',
6464 'django.contrib.sessions.middleware.SessionMiddleware',
6565 'django.contrib.auth.middleware.AuthenticationMiddleware',
66 'dphoto.menu.MyMiddleware',
67)
68
69TEMPLATE_CONTEXT_PROCESSORS = (
70 'dphoto.menu.ContextProcesor',
6671)
6772
6873ROOT_URLCONF = 'dphoto.urls'
  
1{% load webdesign %}<?xml version="1.0" encoding="UTF-8"?>
1{% load webdesign i18n %}<?xml version="1.0" encoding="UTF-8"?>
22<!--
33To change this template, choose Tools | Templates
44and open the template in the editor.
7474 <script src="/media/js/jquery-1.3.2.js"></script>
7575 <script src="/media/js/layout.js"></script>
7676 <script type="text/javascript">
77
7877
78
7979
8080 </script>
8181
8282 </head>
8383 <body>
8484 <div id="album">
85 <div id="left">{% block menu %}Menu{% endblock %}</div>
85 <div id="left">
86 <ul>
87 <li class="gallery"><a href="{% url gallery.views.list_dir "" %}">{% trans 'Foto galerie' %}</a></li>
88 {{MENU}}
89 </ul>
90 </div>
8691 <div id="content"><div class="padding">
8792 {% block content %}Fotky{% endblock %}
8893
  
1{% autoescape off%}
2<li><a href="{% url gallery.views.list_dir path %}">{{dir}}</a></li>
3{% if subdir %}
4 <ul>
5 {{subdir}}</ul>
6{% endif %}
7{% endautoescape%}
  
1<ul>
2{{tree|safe}}
3</ul>
urls.py
(2 / 1)
  
1616
1717 # Uncomment the next line to enable the admin:
1818 # (r'^admin/(.*)', admin.site.root),
19 (r'^menu/$', 'menu.create'),
1920 (r'^media/(.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT,'show_indexes':True}),
2021 (r'^data/gallery/(.*)$', 'django.views.static.serve', {'document_root': settings.GALLERY_ROOT,'show_indexes':True}),
2122 (r'^data/previews/(.*)$', 'django.views.static.serve', {'document_root': settings.PREVIEWS_ROOT,'show_indexes':True}),
2525 (r'^thumbnails/(?P<file>.*).png', gallery.thumbnail ),
2626 (r'^previews/(?P<file>.*).*', gallery.preview ),
2727 (r'^original/(?P<file>.*).*', gallery.original ),
28 (r'^(?P<path>.*)', gallery.list_dir),
28 (r'^(?P<path>.*)$', gallery.list_dir),
2929
3030
3131