diff --git a/galerie/TODO b/galerie/TODO
index 0d3f5494..8a8b232f 100644
--- a/galerie/TODO
+++ b/galerie/TODO
@@ -5,4 +5,7 @@
* zvolit velikosti velke a male fotky
* vycteni EXIFu
* razeni podle casu
-* uprava templatu
+* uprava templatu (detail)
+* hromadne nahravani fotek
+* psani komentaru
+* do CSS
diff --git a/galerie/models.py b/galerie/models.py
index e13d50b3..42dbaa50 100644
--- a/galerie/models.py
+++ b/galerie/models.py
@@ -30,7 +30,7 @@ class Obrazek(models.Model):
nazev = models.CharField('Název', max_length=50, blank = True, null = True)
popis = models.TextField('Popis', blank = True, null = True)
datum_vlozeni = models.DateTimeField('Datum vložení', auto_now_add = True)
- datum = models.DateTimeField('Datum pořízení fotografie', blank = False) # TODO zjistit z EXIFU
+ datum = models.DateTimeField('Datum pořízení fotografie', blank = True, null = True) # TODO zjistit z EXIFU
galerie = models.ForeignKey('Galerie')
poradi = models.IntegerField('Pořadí', blank = True, null = True)
def __unicode__(self):
diff --git a/galerie/static/galerie/.gitignore b/galerie/static/galerie/.gitignore
new file mode 100644
index 00000000..386e17f3
--- /dev/null
+++ b/galerie/static/galerie/.gitignore
@@ -0,0 +1,2 @@
+images
+lightbox
diff --git a/galerie/templates/galerie/GalerieNahled.html b/galerie/templates/galerie/GalerieNahled.html
new file mode 100644
index 00000000..8a719c44
--- /dev/null
+++ b/galerie/templates/galerie/GalerieNahled.html
@@ -0,0 +1,72 @@
+{% extends "base.html" %}
+
+{% block title %}{% block nadpis1a %}
+{{galerie.nazev}} | Galerie TODO title
+{% endblock %}{% endblock %}
+
+{# TODO predelat pres context processor #}
+{% block header %}soustredeni{% endblock %}
+{% block menu_soustredeni %}selected{% endblock %}
+{% block submenu %}{% include 'seminar/soustredeni/submenu.html' %}{% endblock %}
+
+{% block content %}
+
{{galerie.nazev}}
+
+ {# podgalerie #}
+ {% if galerie.galerie_set.all or galerie.galerie_up %}
+ PODGALERIE
+
+ {% if galerie.galerie_up %}
+ - ..
+ {% endif %}
+ {% for galerie in galerie.galerie_set.all %}
+ {% if galerie.zobrazit < 1 or user.is_staff %}
+
- {{galerie}}
+ {% endif %}
+ {% endfor %}
+
+ {% endif %}
+
+ {# obrazky v galerii #}
+ {% if galerie.obrazek_set.all %}
+
+ {% for obrazek in galerie.obrazek_set.all %}
+ {% if forloop.counter|add:-1|divisibleby:3 %}
+
+ {% endif %}
+
+
+
+
+
+ |
+ {% if forloop.last %}
+ {% if not forloop.counter|divisibleby:3 %}
+ |
+ {% endif %}
+ {% if not forloop.counter|divisibleby:2 %}
+ |
+ {% endif %}
+ {% endif %}
+ {% if forloop.counter|divisibleby:3 or forloop.last %}
+
+ {% endif %}
+ {% endfor %}
+
+ {% else %}
+
+ V galerii nejsou žádné fotky.
+
+ {% endif %}
+{% endblock content %}
diff --git a/galerie/views.py b/galerie/views.py
new file mode 100644
index 00000000..6ee5792f
--- /dev/null
+++ b/galerie/views.py
@@ -0,0 +1,98 @@
+# coding: utf-8
+
+import random
+
+from django.http import HttpResponse, Http404
+from django.shortcuts import render, HttpResponseRedirect, get_object_or_404
+from django.template import RequestContext
+from galerie.models import Obrazek, Galerie
+from seminar.models import Soustredeni
+
+
+#def index(request, stitek=None):
+ #if stitek == None:
+ #return HttpResponseRedirect('./0/')
+#
+ #galerie = Galerie.publikovane_galerie()
+ #if int(stitek) != 0:
+ #galerie = galerie.filter(stitek = stitek)
+ #if not galerie:
+ #raise Http404
+ #galerie = galerie.order_by("-datum_zmeny")
+#
+ #return render(request, 'Galerie/GalerieIndex.html',
+ #{'galerie' : galerie,
+ #'stitky' : Stitek.stitky_u_galerii(),
+ #'umisteni_stitek' : stitek,
+ #'umisteni_Fotogalerie' : True,
+ #})
+
+def nahled(request, pk, soustredeni):
+ """Zobrazeni nahledu vsech fotek ve skupine."""
+ galerie = get_object_or_404(Galerie, pk=pk)
+ preview = False
+ if galerie.zobrazit >= 1:
+ if request.user.is_staff:
+ preview = True;
+ else:
+ raise Http404
+ return render(request, 'galerie/GalerieNahled.html',
+ {'galerie' : galerie,
+ 'preview' : preview,
+ })
+
+def detail(request, pk, fotka):
+ """Zobrazeni nahledu fotky s id 'fotka'."""
+ MAX_VYSKA = 600
+ MAX_SIRKA = 600
+ MAX_VYSKA_MALA = 100
+ MAX_SIRKA_MALA = 200
+ NAHLEDU = 3
+
+ galerie = get_object_or_404(Galerie, pk=pk)
+ preview = False
+ if not galerie.je_publikovano():
+ if request.user.is_authenticated():
+ preview = True;
+ else:
+ raise Http404
+ obrazek = get_object_or_404(Obrazek, pk=fotka)
+ obrazky = galerie.obrazky.all()
+
+ # Poradi aktualniho obrazku v galerii/stitku.
+ for i in range(len(obrazky)):
+ if obrazky[i] == obrazek:
+ znacka = i
+ break
+ else:
+ # Obrazek neni v galerii/stitku.
+ raise Http404
+
+ # Nacteni okolnich obrazku.
+ obrazky_dalsi = obrazky[znacka+1:znacka+NAHLEDU+1]
+ if znacka > NAHLEDU:
+ obrazky_predchozi = obrazky[znacka-NAHLEDU:znacka]
+ else:
+ obrazky_predchozi = obrazky[0:znacka]
+
+ # Preskalovani obrazku do vybraneho prostoru.
+ vyska = obrazek.obrazek_stredni.height
+ sirka = obrazek.obrazek_stredni.width
+ if vyska > MAX_VYSKA:
+ sirka = sirka * MAX_VYSKA / vyska
+ vyska = MAX_VYSKA
+ if sirka > MAX_SIRKA:
+ vyska = vyska * MAX_SIRKA / sirka
+ sirka = MAX_SIRKA
+
+ return render(request, 'Galerie/Galerie.html',
+ {'galerie' : galerie,
+ 'obrazek' : obrazek,
+ 'vyska' : vyska,
+ 'sirka' : sirka,
+ 'obrazky_predchozi' : obrazky_predchozi,
+ 'obrazky_dalsi' : obrazky_dalsi,
+ 'preview' : preview,
+ 'umisteni_Fotogalerie' : True,
+ })
+