moved stats to own app, add template tags to it,
authorRadek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>
Fri, 16 Sep 2011 13:20:20 +0000 (15:20 +0200)
committerRadek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>
Fri, 16 Sep 2011 13:20:20 +0000 (15:20 +0200)
added tagline
added search fofm template tag
footnotes dictionary fix

25 files changed:
apps/catalogue/templatetags/catalogue_tags.py
apps/catalogue/urls.py
apps/catalogue/views.py
apps/dictionary/locale/pl/LC_MESSAGES/django.mo [new file with mode: 0644]
apps/dictionary/locale/pl/LC_MESSAGES/django.po [new file with mode: 0644]
apps/dictionary/models.py
apps/dictionary/templates/dictionary/note_list.html
apps/dictionary/tests.py
apps/stats/__init__.py [new file with mode: 0644]
apps/stats/models.py [new file with mode: 0644]
apps/stats/templates/stats/main.html [new file with mode: 0755]
apps/stats/templatetags/__init__.py [new file with mode: 0755]
apps/stats/templatetags/stats.py [new file with mode: 0755]
apps/stats/urls.py [new file with mode: 0755]
apps/stats/views.py [new file with mode: 0644]
wolnelektury/locale/pl/LC_MESSAGES/django.mo
wolnelektury/locale/pl/LC_MESSAGES/django.po
wolnelektury/settings.py
wolnelektury/static/css/master.css
wolnelektury/templates/base.html
wolnelektury/templates/catalogue/counters.html [deleted file]
wolnelektury/templates/catalogue/main_page.html
wolnelektury/templates/catalogue/search_form.html [new file with mode: 0755]
wolnelektury/templates/info/join_us.html
wolnelektury/urls.py

index c931e48..e433b8e 100644 (file)
@@ -14,6 +14,8 @@ from django.db.models import Q
 from django.conf import settings
 from django.utils.translation import ugettext as _
 
+from catalogue.forms import SearchForm
+
 
 register = template.Library()
 
@@ -166,9 +168,12 @@ def authentication_form():
     return LoginForm(prefix='login').as_ul()
 
 
+@register.inclusion_tag('catalogue/search_form.html')
+def search_form():
+    return {"form": SearchForm()}
+
 @register.inclusion_tag('catalogue/breadcrumbs.html')
 def breadcrumbs(tags, search_form=True):
-    from catalogue.forms import SearchForm
     context = {'tag_list': tags}
     try:
         max_tag_list = settings.MAX_TAG_LIST
index a8f21d1..cb04ba3 100644 (file)
@@ -24,7 +24,6 @@ urlpatterns = patterns('catalogue.views',
 
     # tools
     url(r'^zegar/$', 'clock', name='clock'),
-    url(r'^liczniki/$', 'counters', name='catalogue_counters'),
 
     # Public interface. Do not change this URLs.
     url(r'^lektura/(?P<slug>[a-zA-Z0-9-]+)\.html$', 'book_text', name='book_text'),
index 44a0147..2237af8 100644 (file)
@@ -129,27 +129,6 @@ def daisy_list(request):
                      template_name='catalogue/daisy_list.html')
 
 
-def counters(request):
-    form = forms.SearchForm()
-
-    books = models.Book.objects.count()
-    books_nonempty = models.Book.objects.exclude(html_file='').count()
-    books_empty = models.Book.objects.filter(html_file='').count()
-    books_root = models.Book.objects.filter(parent=None).count()
-
-    media = models.BookMedia.objects.count()
-    media_types = models.BookMedia.objects.values('type').\
-            annotate(count=Count('type')).\
-            order_by('type')
-    for mt in media_types:
-        mt['size'] = sum(b.file.size for b in models.BookMedia.objects.filter(type=mt['type']))
-        mt['deprecated'] = models.BookMedia.objects.filter(
-            type=mt['type'], source_sha1=None).count() if mt['type'] in ('mp3', 'ogg') else '-'
-
-    return render_to_response('catalogue/counters.html',
-                locals(), context_instance=RequestContext(request))
-
-
 def differentiate_tags(request, tags, ambiguous_slugs):
     beginning = '/'.join(tag.url_chunk for tag in tags)
     unparsed = '/'.join(ambiguous_slugs[1:])
diff --git a/apps/dictionary/locale/pl/LC_MESSAGES/django.mo b/apps/dictionary/locale/pl/LC_MESSAGES/django.mo
new file mode 100644 (file)
index 0000000..1104f8b
Binary files /dev/null and b/apps/dictionary/locale/pl/LC_MESSAGES/django.mo differ
diff --git a/apps/dictionary/locale/pl/LC_MESSAGES/django.po b/apps/dictionary/locale/pl/LC_MESSAGES/django.po
new file mode 100644 (file)
index 0000000..8184c9a
--- /dev/null
@@ -0,0 +1,28 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-09-16 12:21+0200\n"
+"PO-Revision-Date: 2011-09-16 12:21+0100\n"
+"Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: templates/dictionary/note_list.html:11
+msgid "By first letter"
+msgstr "Pierwsza litera"
+
+#: templates/dictionary/note_list.html:13
+#: templates/dictionary/note_list.html:15
+msgid "all"
+msgstr "wszystkie"
+
index 2606179..c0a92d1 100644 (file)
@@ -25,6 +25,6 @@ def notes_from_book(sender, **kwargs):
     if sender.has_html_file:
         for anchor, text_str, html_str in html.extract_annotations(sender.html_file.path):
             Note.objects.create(book=sender, anchor=anchor,
-                               html=html_str, sort_key=sortify(text_str))
+                               html=html_str, sort_key=sortify(text_str)[:128])
 
 Book.html_built.connect(notes_from_book)
index bc15e95..6ae3664 100755 (executable)
@@ -1,13 +1,10 @@
 {% extends "base.html" %}
 {% load i18n pagination_tags %}
+{% load catalogue_tags %}
 
 {% block body %}
     <h1>Przypisy</h1>
-    <form action="{% url search %}" method="get" accept-charset="utf-8" id="search-form">
-        <p>{{ form.q }} <input type="submit" value="{% trans "Search" %}" /> <strong>{%trans "or" %}</strong> <a href="{% url main_page %}">{% trans "return to the main page" %}</a></p>
-    </form>
-
-
+    {% search_form %}
 
 
 <p>
index 89d2ab9..0de7c5e 100755 (executable)
@@ -22,7 +22,7 @@ class DictionaryTests(WLTestCase):
             epoch="X-Epoch",
         )
 
-    def test_book_with_fragment(self):
+    def test_book_with_footnote(self):
         BOOK_TEXT = """<utwor>
         <opowiadanie>
             <akap><pe><slowo_obce>rose</slowo_obce> --- kind of a flower.</pe></akap>
diff --git a/apps/stats/__init__.py b/apps/stats/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/apps/stats/models.py b/apps/stats/models.py
new file mode 100644 (file)
index 0000000..8b13789
--- /dev/null
@@ -0,0 +1 @@
+
diff --git a/apps/stats/templates/stats/main.html b/apps/stats/templates/stats/main.html
new file mode 100755 (executable)
index 0000000..2be411d
--- /dev/null
@@ -0,0 +1,30 @@
+{% extends "base.html" %}
+{% load i18n %}
+{% load stats catalogue_tags %}
+
+{% block title %}Statystyka w  WolneLektury.pl{% endblock %}
+
+{% block bodyid %}tagged-object-list{% endblock %}
+
+{% block body %}
+    <h1>Statystyka</h1>
+    {% search_form %}
+
+    <table>
+        <tr><th>Utwory</th></tr>
+        <tr><td>Wszystkie utwory:</td><td>{% count_books_all %}</td></tr>
+        <tr><td>Utwory z własną treścią:</td><td>{% count_books_nonempty %}</td></tr>
+        <tr><td>Utwory bez własnej treści:</td><td>{% count_books_empty %}</td></tr>
+        <tr><td>Niezależne książki:</td><td>{% count_books_root %}</td></tr>
+
+        <tr><th>Media</th><th>Liczba</th><th>Rozmiar</th><th>Do wymiany</th></tr>
+        {% for mt in media_types %}
+            <tr><td>{{ mt.type }}:</td>
+                <td>{{ mt.count }}</td>
+                <td>{{ mt.size|filesizeformat }}</td>
+                <td>{{ mt.deprecated }}</td>
+            </tr>
+        {% endfor %}
+    </table>
+
+{% endblock %}
diff --git a/apps/stats/templatetags/__init__.py b/apps/stats/templatetags/__init__.py
new file mode 100755 (executable)
index 0000000..e69de29
diff --git a/apps/stats/templatetags/stats.py b/apps/stats/templatetags/stats.py
new file mode 100755 (executable)
index 0000000..d13b9f6
--- /dev/null
@@ -0,0 +1,60 @@
+# -*- coding: utf-8 -*-
+# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
+# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
+#
+import feedparser
+import datetime
+
+from django import template
+
+from catalogue.models import Book, BookMedia
+
+
+register = template.Library()
+
+#~ 
+#~ @register.tag(name='captureas')
+#~ def do_captureas(parser, token):
+    #~ try:
+        #~ tag_name, args = token.contents.split(None, 1)
+    #~ except ValueError:
+        #~ raise template.TemplateSyntaxError("'captureas' node requires a variable name.")
+    #~ nodelist = parser.parse(('endcaptureas',))
+    #~ parser.delete_first_token()
+    #~ return CaptureasNode(nodelist, args)
+
+class StatsNode(template.Node):
+    def __init__(self, value, varname=None):
+        self.value = value
+        self.varname = varname
+
+    def render(self, context):
+        print self.varname
+        if self.varname:
+            context[self.varname] = self.value
+            return ''
+        else:
+            return self.value
+
+
+
+#~ @register.tag
+#~ def count_books_all(*args, **kwargs):
+    #~ print args, kwargs
+    #~ return StatsNode(Book.objects.all().count())
+
+@register.tag
+def count_books_nonempty(parser, token):
+    try:
+        tag_name, args = token.contents.split(None, 1)
+    except ValueError:
+        args = None
+    return StatsNode(Book.objects.exclude(html_file='').count(), args)
+
+#~ @register.simple_tag
+#~ def count_books_empty():
+    #~ return Book.objects.exclude(html_file='').count()
+#~ 
+#~ @register.simple_tag
+#~ def count_books_root():
+    #~ return Book.objects.filter(parent=None).count()
diff --git a/apps/stats/urls.py b/apps/stats/urls.py
new file mode 100755 (executable)
index 0000000..3b62409
--- /dev/null
@@ -0,0 +1,11 @@
+# -*- coding: utf-8 -*-
+# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
+# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
+#
+from django.conf.urls.defaults import *
+
+
+urlpatterns = patterns('stats.views',
+    url(r'^$', 'stats_page', name='stats'),
+)
+
diff --git a/apps/stats/views.py b/apps/stats/views.py
new file mode 100644 (file)
index 0000000..b4fd44b
--- /dev/null
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
+# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
+#
+
+from django.db.models import Count
+from django.shortcuts import render_to_response
+from django.template import RequestContext
+
+from catalogue.models import Book, BookMedia
+
+
+def stats_page(request):
+    media = BookMedia.objects.count()
+    media_types = BookMedia.objects.values('type').\
+            annotate(count=Count('type')).\
+            order_by('type')
+    for mt in media_types:
+        mt['size'] = sum(b.file.size for b in BookMedia.objects.filter(type=mt['type']))
+        mt['deprecated'] = BookMedia.objects.filter(
+            type=mt['type'], source_sha1=None).count() if mt['type'] in ('mp3', 'ogg') else '-'
+
+    return render_to_response('stats/main.html',
+                locals(), context_instance=RequestContext(request))
index d1670ba..6887fc9 100644 (file)
Binary files a/wolnelektury/locale/pl/LC_MESSAGES/django.mo and b/wolnelektury/locale/pl/LC_MESSAGES/django.mo differ
index 0f0c95b..d6e382d 100644 (file)
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: WolneLektury\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-09-08 10:50+0200\n"
-"PO-Revision-Date: 2011-09-08 10:50+0100\n"
+"POT-Creation-Date: 2011-09-16 15:06+0200\n"
+"PO-Revision-Date: 2011-09-16 15:04+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
+"Language: pl\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "X-Translated-Using: django-rosetta 0.5.6\n"
+"X-Poedit-Language: Polish\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2)\n"
 
-#: templates/404.html:6
-#: templates/404.html.py:15
+#: templates/404.html:6 templates/404.html.py:15
 msgid "Page does not exist"
 msgstr "Podana strona nie istnieje"
 
 #: templates/404.html:17
-msgid "We are sorry, but this page does not exist. Please check if you entered correct address or go to "
-msgstr "Przepraszamy, ale ta strona nie istnieje. Sprawdź czy podałeś dobry adres, lub przejdź do"
+msgid ""
+"We are sorry, but this page does not exist. Please check if you entered "
+"correct address or go to "
+msgstr ""
+"Przepraszamy, ale ta strona nie istnieje. Sprawdź czy podałeś dobry adres, "
+"lub przejdź do"
 
 #: templates/404.html:17
 msgid "main page"
 msgstr "strony głównej"
 
-#: templates/500.html:6
-#: templates/500.html.py:54
+#: templates/500.html:6 templates/500.html.py:54
 msgid "Server error"
 msgstr "Błąd serwera"
 
 #: templates/500.html:55
-msgid "<p>The Wolnelektury.pl site is currently unavailable. Meanwhile, visit our <a href='http://nowoczesnapolska.org.pl'>blog</a>.</p> <p>Inform our <a href='mailto:fundacja@nowoczesnapolska.org.pl'>administrators</a> about the error.</p>"
+msgid ""
+"<p>The Wolnelektury.pl site is currently unavailable. Meanwhile, visit our "
+"<a href='http://nowoczesnapolska.org.pl'>blog</a>.</p> <p>Inform our <a "
+"href='mailto:fundacja@nowoczesnapolska.org.pl'>administrators</a> about the "
+"error.</p>"
 msgstr ""
-"<p>Serwis Wolnelektury.pl jest chwilowo niedostępny. Odwiedź naszego <a href='http://nowoczesnapolska.org.pl'>bloga</a></p>\n"
-"<p>Powiadom <a href='mailto:fundacja@nowoczesnapolska.org.pl'>administratorów</a> o błędzie.</p>"
+"<p>Serwis Wolnelektury.pl jest chwilowo niedostępny. Odwiedź naszego <a "
+"href='http://nowoczesnapolska.org.pl'>bloga</a></p>\n"
+"<p>Powiadom <a href='mailto:fundacja@nowoczesnapolska.org."
+"pl'>administratorów</a> o błędzie.</p>"
 
-#: templates/503.html:6
-#: templates/503.html.py:54
+#: templates/503.html:6 templates/503.html.py:54
 msgid "Service unavailable"
 msgstr "Serwis niedostępny"
 
 #: templates/503.html:56
 msgid "The Wolnelektury.pl site is currently unavailable due to maintainance."
-msgstr "Serwis Wolnelektury.pl jest obecnie niedostępny z powodu prac konserwacyjnych."
+msgstr ""
+"Serwis Wolnelektury.pl jest obecnie niedostępny z powodu prac "
+"konserwacyjnych."
 
 #: templates/base.html:23
-msgid "Internet Explorer cannot display this site properly. Click here to read more..."
-msgstr "Internet Explorer nie potrafi poprawnie wyświetlić tej strony. Kliknij tutaj, aby dowiedzieć się więcej..."
+msgid ""
+"Internet Explorer cannot display this site properly. Click here to read "
+"more..."
+msgstr ""
+"Internet Explorer nie potrafi poprawnie wyświetlić tej strony. Kliknij "
+"tutaj, aby dowiedzieć się więcej..."
 
-#: templates/base.html:36
+#: templates/base.html:38
 msgid "Welcome"
 msgstr "Witaj"
 
-#: templates/base.html:37
+#: templates/base.html:39
 msgid "Your shelves"
 msgstr "Twoje półki"
 
-#: templates/base.html:39
+#: templates/base.html:41
 msgid "Administration"
 msgstr "Administracja"
 
-#: templates/base.html:41
-#: templates/base.html.py:45
+#: templates/base.html:43 templates/base.html.py:47
 msgid "Report a bug"
 msgstr "Zgłoś błąd"
 
-#: templates/base.html:42
+#: templates/base.html:44
 msgid "Logout"
 msgstr "Wyloguj"
 
-#: templates/base.html:46
-#: templates/base.html.py:100
-#: templates/base.html:104
-#: templates/base.html.py:108
-#: templates/auth/login.html:4
-#: templates/auth/login.html.py:7
-#: templates/auth/login.html:12
+#: templates/base.html:48 templates/base.html.py:102 templates/base.html:106
+#: templates/base.html.py:110 templates/auth/login.html:4
+#: templates/auth/login.html.py:7 templates/auth/login.html:12
 #: templates/auth/login.html.py:15
 msgid "Sign in"
 msgstr "Zaloguj się"
 
-#: templates/base.html:46
-#: templates/base.html.py:100
-#: templates/base.html:108
-#: templates/base.html.py:112
-#: templates/auth/login.html:7
-#: templates/auth/login.html.py:21
-#: templates/auth/login.html:23
+#: templates/base.html:48 templates/base.html.py:102 templates/base.html:110
+#: templates/base.html.py:114 templates/auth/login.html:7
+#: templates/auth/login.html.py:21 templates/auth/login.html:23
 msgid "Register"
 msgstr "Załóż konto"
 
-#: templates/base.html:67
+#: templates/base.html:69
 msgid "Didn't find a book? Make a suggestion."
 msgstr "Nie znalazłeś utworu na stronie? Zgłoś sugestię."
 
-#: templates/base.html:79
+#: templates/base.html:81
 msgid ""
 "\n"
-"\t\t\t\tWolne Lektury is a project lead by <a href=\"http://nowoczesnapolska.org.pl/\">Modern Poland Foundation</a>.\n"
-"\t\t\t\tDigital reproductions are made by <a href=\"http://www.bn.org.pl/\">The National Library</a>, <a href=\"http://www.bs.katowice.pl/\">Biblioteka Śląska</a> and <a href=\"http://www.bibliotekaelblaska.pl/\">Biblioteka Elbląska</a>, based on TNL, BŚ and BE resources.\n"
+"\t\t\t\tWolne Lektury is a project lead by <a href=\"http://nowoczesnapolska."
+"org.pl/\">Modern Poland Foundation</a>.\n"
+"\t\t\t\tDigital reproductions are made by <a href=\"http://www.bn.org.pl/"
+"\">The National Library</a>, <a href=\"http://www.bs.katowice.pl/"
+"\">Biblioteka Śląska</a> and <a href=\"http://www.bibliotekaelblaska.pl/"
+"\">Biblioteka Elbląska</a>, based on TNL, BŚ and BE resources.\n"
 "\t\t\t\tHosting: <a href=\"http://www.icm.edu.pl/\">ICM</a>.\n"
 "\t\t\t\t"
 msgstr ""
 "\n"
-"Wolne Lektury to projekt prowadzony przez <a href=\"http://nowoczesnapolska.org.pl/\">fundację Nowoczesna Polska</a>. \n"
-"Reprodukcje cyfrowe wykonane przez <a href=\"http://www.bn.org.pl/\">Bibliotekę Narodową</a>, <a href=\"http://www.bs.katowice.pl/\">Bibliotekę Śląską</a> i <a href=\"http://www.bibliotekaelblaska.pl/\">Bibliotekę Elbląską</a> z egzemplarzy pochodzących ze zbiorów BN, BŚ i BE.\n"
+"Wolne Lektury to projekt prowadzony przez <a href=\"http://nowoczesnapolska."
+"org.pl/\">fundację Nowoczesna Polska</a>. \n"
+"Reprodukcje cyfrowe wykonane przez <a href=\"http://www.bn.org.pl/"
+"\">Bibliotekę Narodową</a>, <a href=\"http://www.bs.katowice.pl/"
+"\">Bibliotekę Śląską</a> i <a href=\"http://www.bibliotekaelblaska.pl/"
+"\">Bibliotekę Elbląską</a> z egzemplarzy pochodzących ze zbiorów BN, BŚ i "
+"BE.\n"
 "Hosting: <a href=\"http://www.icm.edu.pl/\">ICM</a>."
 
-#: templates/base.html:86
+#: templates/base.html:88
 msgid ""
 "\n"
-"\t\t\t\tModern Poland Foundation, 00-514 Warsaw, ul. Marszałkowska 84/92 lok. 125, tel/fax: (22) 621-30-17\n"
-"                e-mail: <a href=\"mailto:fundacja@nowoczesnapolska.org.pl\">fundacja@nowoczesnapolska.org.pl</a>\n"
+"\t\t\t\tModern Poland Foundation, 00-514 Warsaw, ul. Marszałkowska 84/92 "
+"lok. 125, tel/fax: (22) 621-30-17\n"
+"                e-mail: <a href=\"mailto:fundacja@nowoczesnapolska.org.pl"
+"\">fundacja@nowoczesnapolska.org.pl</a>\n"
 "\t\t\t\t"
 msgstr ""
 "\n"
-"Fundacja Nowoczesna Polska, 00-514 Warszawa, ul. Marszałkowska 84/92 lok. 125, tel/fax: (22) 621-30-17, e-mail: <a href=\"mailto:fundacja@nowoczesnapolska.org.pl\">fundacja@nowoczesnapolska.org.pl</a>"
+"Fundacja Nowoczesna Polska, 00-514 Warszawa, ul. Marszałkowska 84/92 lok. "
+"125, tel/fax: (22) 621-30-17, e-mail: <a href=\"mailto:"
+"fundacja@nowoczesnapolska.org.pl\">fundacja@nowoczesnapolska.org.pl</a>"
 
-#: templates/base.html:97
-#: templates/base.html.py:118
-#: templates/base.html:124
-#: templates/base.html.py:130
-#: templates/catalogue/book_detail.html:205
+#: templates/base.html:99 templates/base.html.py:120 templates/base.html:126
+#: templates/base.html.py:132 templates/catalogue/book_detail.html:205
 #: templates/catalogue/book_fragments.html:33
 #: templates/catalogue/differentiate_tags.html:23
 #: templates/catalogue/search_multiple_hits.html:29
@@ -136,9 +153,7 @@ msgstr ""
 msgid "Close"
 msgstr "Zamknij"
 
-#: templates/base.html:120
-#: templates/base.html.py:126
-#: templates/base.html:132
+#: templates/base.html:122 templates/base.html.py:128 templates/base.html:134
 #: templates/catalogue/book_detail.html:207
 #: templates/catalogue/book_fragments.html:35
 #: templates/catalogue/differentiate_tags.html:25
@@ -148,8 +163,7 @@ msgstr "Zamknij"
 msgid "Loading"
 msgstr "Ładowanie"
 
-#: templates/admin/base_site.html:4
-#: templates/admin/base_site.html.py:7
+#: templates/admin/base_site.html:4 templates/admin/base_site.html.py:7
 msgid "Site administration"
 msgstr "Administracja stroną"
 
@@ -174,14 +188,12 @@ msgstr "Importuj książkę"
 msgid "Register on"
 msgstr "Zarejestruj się w"
 
-#: templates/auth/login.html:9
-#: templates/catalogue/book_detail.html:14
+#: templates/auth/login.html:9 templates/catalogue/book_detail.html:14
 #: templates/catalogue/book_fragments.html:12
 #: templates/catalogue/book_list.html:12
 #: templates/catalogue/breadcrumbs.html:21
-#: templates/catalogue/counters.html:11
-#: templates/catalogue/main_page.html:23
-#: templates/info/base.html:12
+#: templates/catalogue/main_page.html:39
+#: templates/catalogue/search_form.html:3 templates/info/base.html:12
 #: templates/lesmianator/lesmianator.html:14
 #: templates/lessons/document_list.html:34
 #: templates/pdcounter/author_detail.html:13
@@ -189,14 +201,11 @@ msgstr "Zarejestruj się w"
 msgid "Search"
 msgstr "Szukaj"
 
-#: templates/auth/login.html:9
-#: templates/catalogue/book_detail.html:14
+#: templates/auth/login.html:9 templates/catalogue/book_detail.html:14
 #: templates/catalogue/book_fragments.html:12
-#: templates/catalogue/book_list.html:13
-#: templates/catalogue/counters.html:11
-#: templates/catalogue/main_page.html:24
-#: templates/catalogue/tagged_object_list.html:44
-#: templates/info/base.html:12
+#: templates/catalogue/book_list.html:13 templates/catalogue/main_page.html:40
+#: templates/catalogue/search_form.html:3
+#: templates/catalogue/tagged_object_list.html:44 templates/info/base.html:12
 #: templates/lesmianator/lesmianator.html:14
 #: templates/lessons/document_list.html:34
 #: templates/pdcounter/author_detail.html:13
@@ -204,9 +213,7 @@ msgstr "Szukaj"
 msgid "or"
 msgstr "lub"
 
-#: templates/auth/login.html:9
-#: templates/catalogue/book_detail.html:14
-#: templates/catalogue/counters.html:11
+#: templates/auth/login.html:9 templates/catalogue/book_detail.html:14
 #: templates/lesmianator/lesmianator.html:14
 #: templates/lessons/document_list.html:34
 #: templates/pdcounter/author_detail.html:13
@@ -334,8 +341,10 @@ msgstr "%(cs)s, finansowanego przez %(fb)s"
 
 #: templates/catalogue/book_detail.html:124
 #, python-format
-msgid "Audiobooks were prepared as a part of the %(cs)s project funded by %(fb)s."
-msgstr "Audiobooki przygotowane w ramach projektu %(cs)s finansowanego przez %(fb)s."
+msgid ""
+"Audiobooks were prepared as a part of the %(cs)s project funded by %(fb)s."
+msgstr ""
+"Audiobooki przygotowane w ramach projektu %(cs)s finansowanego przez %(fb)s."
 
 #: templates/catalogue/book_detail.html:126
 #, python-format
@@ -423,9 +432,17 @@ msgid ""
 "        distributed. If there are any additional copyrighted materials\n"
 "        provided with this work (such as annotations, motifs etc.), those\n"
 "        materials are licensed under the \n"
-"        <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">Creative Commons Attribution-ShareAlike 3.0</a>\n"
+"        <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\">Creative "
+"Commons Attribution-ShareAlike 3.0</a>\n"
 "        license."
-msgstr "Ten utwór nie jest chroniony prawem autorskim i&nbsp;znajduje się w&nbsp;domenie publicznej, co oznacza że możesz go swobodnie wykorzystywać, publikować i&nbsp;rozpowszechniać. Jeśli utwór opatrzony jest dodatkowymi materiałami (przypisy, motywy literackie etc.), które podlegają prawu autorskiemu, to te dodatkowe materiały udostępnione są na licencji <a href=\"http://creativecommons.org/licenses/by-sa/3.0/deed.pl\">Uznanie autorstwa-Na tych samych warunkach 3.0</a>."
+msgstr ""
+"Ten utwór nie jest chroniony prawem autorskim i&nbsp;znajduje się w&nbsp;"
+"domenie publicznej, co oznacza że możesz go swobodnie wykorzystywać, "
+"publikować i&nbsp;rozpowszechniać. Jeśli utwór opatrzony jest dodatkowymi "
+"materiałami (przypisy, motywy literackie etc.), które podlegają prawu "
+"autorskiemu, to te dodatkowe materiały udostępnione są na licencji <a href="
+"\"http://creativecommons.org/licenses/by-sa/3.0/deed.pl\">Uznanie autorstwa-"
+"Na tych samych warunkach 3.0</a>."
 
 #: templates/catalogue/book_info.html:20
 msgid "Text prepared based on:"
@@ -443,23 +460,19 @@ msgstr "Spis wszystkich utworów w WolneLektury.pl"
 msgid "Listing of all works"
 msgstr "Spis wszystkich utworów"
 
-#: templates/catalogue/book_list.html:13
-#: templates/catalogue/main_page.html:24
+#: templates/catalogue/book_list.html:13 templates/catalogue/main_page.html:40
 msgid "see"
 msgstr "zobacz"
 
-#: templates/catalogue/book_list.html:15
-#: templates/catalogue/main_page.html:26
+#: templates/catalogue/book_list.html:15 templates/catalogue/main_page.html:42
 msgid "all books"
 msgstr "wszystkie utwory"
 
-#: templates/catalogue/book_list.html:16
-#: templates/catalogue/main_page.html:27
+#: templates/catalogue/book_list.html:16 templates/catalogue/main_page.html:43
 msgid "audiobooks"
 msgstr "audiobooki"
 
-#: templates/catalogue/book_list.html:17
-#: templates/catalogue/main_page.html:28
+#: templates/catalogue/book_list.html:17 templates/catalogue/main_page.html:44
 msgid "DAISY"
 msgstr "DAISY"
 
@@ -475,18 +488,18 @@ msgstr "↑ góra ↑"
 msgid "Put a book on the shelf!"
 msgstr "Wrzuć lekturę na półkę!"
 
-#: templates/catalogue/book_sets.html:3
-#: templates/catalogue/book_sets.html:6
+#: templates/catalogue/book_sets.html:3 templates/catalogue/book_sets.html:6
 #: templates/catalogue/fragment_sets.html:16
 msgid "Create new shelf"
 msgstr "Utwórz nową półkę"
 
 #: templates/catalogue/book_sets.html:10
 msgid "You do not have any shelves. You can create one below, if you want to."
-msgstr "Nie posiadasz żadnych półek. Jeśli chcesz, możesz utworzyć nową półkę poniżej."
+msgstr ""
+"Nie posiadasz żadnych półek. Jeśli chcesz, możesz utworzyć nową półkę "
+"poniżej."
 
-#: templates/catalogue/book_sets.html:15
-#: templates/catalogue/book_short.html:4
+#: templates/catalogue/book_sets.html:15 templates/catalogue/book_short.html:4
 msgid "Put on the shelf!"
 msgstr "Wrzuć na półkę"
 
@@ -531,30 +544,34 @@ msgstr "Spis wszystkich plików DAISY"
 msgid ""
 "System DAISY to uznany na całym świecie format udostępniania książek\n"
 "dostosowany do potrzeb osób słabowidzących, niewidomych oraz innych osób\n"
-"mających trudności z czytaniem. Możecie z nich korzystać bezpłatnie i bez ograniczeń."
+"mających trudności z czytaniem. Możecie z nich korzystać bezpłatnie i bez "
+"ograniczeń."
 msgstr ""
 "System DAISY to uznany na całym świecie format udostępniania książek\n"
 "dostosowany do potrzeb osób słabowidzących, niewidomych oraz innych osób\n"
-"mających trudności z czytaniem. Możecie z nich korzystać bezpłatnie i bez ograniczeń."
+"mających trudności z czytaniem. Możecie z nich korzystać bezpłatnie i bez "
+"ograniczeń."
 
 #: templates/catalogue/differentiate_tags.html:13
 msgid "The criteria are ambiguous. Please select one of the following options:"
-msgstr "Podane kryteria są niejednoznaczne. Proszę wybrać jedną z następujących możliwości:"
+msgstr ""
+"Podane kryteria są niejednoznaczne. Proszę wybrać jedną z następujących "
+"możliwości:"
 
 #: templates/catalogue/folded_tag_list.html:4
 msgid "Show full category"
 msgstr "Zobacz całą kategorię"
 
 #: templates/catalogue/folded_tag_list.html:13
-#: templates/catalogue/main_page.html:92
-#: templates/catalogue/main_page.html:97
-#: templates/catalogue/main_page.html:136
-#: templates/catalogue/main_page.html:331
+#: templates/catalogue/main_page.html:120
+#: templates/catalogue/main_page.html:125
+#: templates/catalogue/main_page.html:164
+#: templates/catalogue/main_page.html:359
 msgid "See more"
 msgstr "Zobacz więcej"
 
 #: templates/catalogue/folded_tag_list.html:22
-#: templates/catalogue/main_page.html:299
+#: templates/catalogue/main_page.html:327
 msgid "Hide"
 msgstr "Zwiń"
 
@@ -563,9 +580,11 @@ msgid "Shelves containing fragment"
 msgstr "Półki zawierające fragment"
 
 #: templates/catalogue/fragment_sets.html:4
-#: templates/catalogue/main_page.html:66
+#: templates/catalogue/main_page.html:94
 msgid "You do not own any shelves. You can create one below, if you want to."
-msgstr "Nie posiadasz żadnych półek. Jeśli chcesz, możesz utworzyć nową półkę poniżej."
+msgstr ""
+"Nie posiadasz żadnych półek. Jeśli chcesz, możesz utworzyć nową półkę "
+"poniżej."
 
 #: templates/catalogue/fragment_sets.html:9
 msgid "Save all shelves"
@@ -583,165 +602,225 @@ msgstr "Zwiń fragment"
 msgid "See in a book"
 msgstr "Zobacz w utworze"
 
-#: templates/catalogue/main_page.html:33
+#: templates/catalogue/main_page.html:13
+#, python-format
+msgid ""
+"\n"
+"%(c)s book from <a href='http://domenapubliczna.org'>public domain</a> or "
+"under\n"
+"a <a href='http://creativecommons.org/licenses/by-sa/3.0/deed.pl'>free "
+"license</a>.\n"
+msgid_plural ""
+"\n"
+"%(c)s books from <a href='http://domenapubliczna.org'>public domain</a> or "
+"under\n"
+"a <a href='http://creativecommons.org/licenses/by-sa/3.0/deed.pl'>free "
+"license</a>.\n"
+msgstr[0] ""
+"\n"
+"%(c)s lektura z <a href='http://domenapubliczna.org'>domeny publicznej</a>\n"
+"lub na <a href='http://creativecommons.org/licenses/by-sa/3.0/deed."
+"pl'>wolnej licencji</a>.\n"
+msgstr[1] ""
+"\n"
+"%(c)s lektury z <a href='http://domenapubliczna.org'>domeny publicznej</a>\n"
+"i na <a href='http://creativecommons.org/licenses/by-sa/3.0/deed.pl'>wolnej "
+"licencji</a>.\n"
+msgstr[2] ""
+"\n"
+"%(c)s lektur z <a href='http://domenapubliczna.org'>domeny publicznej</a>\n"
+"i na <a href='http://creativecommons.org/licenses/by-sa/3.0/deed.pl'>wolnej "
+"licencji</a>.\n"
+
+#: templates/catalogue/main_page.html:49
 msgid "Browse books by categories"
 msgstr "Przeglądaj lektury według wybranych kategorii"
 
-#: templates/catalogue/main_page.html:50
+#: templates/catalogue/main_page.html:78
 msgid "Books for every school level"
 msgstr "Lektury na każdy poziom edukacji"
 
-#: templates/catalogue/main_page.html:52
+#: templates/catalogue/main_page.html:80
 msgid "primary school"
 msgstr "szkoła podstawowa"
 
-#: templates/catalogue/main_page.html:53
+#: templates/catalogue/main_page.html:81
 msgid "gymnasium"
 msgstr "gimnazjum"
 
-#: templates/catalogue/main_page.html:54
+#: templates/catalogue/main_page.html:82
 msgid "high school"
 msgstr "szkoła średnia"
 
-#: templates/catalogue/main_page.html:57
+#: templates/catalogue/main_page.html:85
 #: templates/catalogue/user_shelves.html:2
 msgid "Your shelves with books"
 msgstr "Twoje półki z lekturami"
 
-#: templates/catalogue/main_page.html:62
+#: templates/catalogue/main_page.html:90
 msgid "delete"
 msgstr "usuń"
 
-#: templates/catalogue/main_page.html:71
+#: templates/catalogue/main_page.html:99
 #: templates/catalogue/user_shelves.html:15
 msgid "Create shelf"
 msgstr "Utwórz półkę"
 
-#: templates/catalogue/main_page.html:75
-msgid "Create your own book set. You can share it with friends by sending them link to your shelf."
-msgstr "Stwórz własny zestaw lektur. Możesz się nim później podzielić z innymi, przesyłając im link do Twojej półki."
+#: templates/catalogue/main_page.html:103
+msgid ""
+"Create your own book set. You can share it with friends by sending them link "
+"to your shelf."
+msgstr ""
+"Stwórz własny zestaw lektur. Możesz się nim później podzielić z innymi, "
+"przesyłając im link do Twojej półki."
 
-#: templates/catalogue/main_page.html:76
+#: templates/catalogue/main_page.html:104
 msgid "You need to "
 msgstr "Aby zarządzać swoimi półkami, musisz się"
 
-#: templates/catalogue/main_page.html:76
+#: templates/catalogue/main_page.html:104
 msgid "sign in"
 msgstr "zalogować"
 
-#: templates/catalogue/main_page.html:76
+#: templates/catalogue/main_page.html:104
 msgid "to manage your shelves."
 msgstr "."
 
-#: templates/catalogue/main_page.html:82
+#: templates/catalogue/main_page.html:110
 msgid "Twórzże się!"
 msgstr ""
 
-#: templates/catalogue/main_page.html:84
-#: templates/catalogue/main_page.html:92
+#: templates/catalogue/main_page.html:112
+#: templates/catalogue/main_page.html:120
 msgid "Wolne Lektury Widget"
 msgstr "Widżet Wolne Lektury"
 
-#: templates/catalogue/main_page.html:85
-msgid "Place our widget - search engine for Wolne Lektury which gives access to free books and audiobooks - on your homepage! Just copy the HTML code below onto your page:"
-msgstr "Umieść widżet – wyszukiwarkę Wolnych Lektur umożliwiającą dostęp do darmowych lektur i audiobooków – na swojej stronie WWW! Po prostu skopiuj poniższy kod HTML na swoją stronę:"
+#: templates/catalogue/main_page.html:113
+msgid ""
+"Place our widget - search engine for Wolne Lektury which gives access to "
+"free books and audiobooks - on your homepage! Just copy the HTML code below "
+"onto your page:"
+msgstr ""
+"Umieść widżet – wyszukiwarkę Wolnych Lektur umożliwiającą dostęp do "
+"darmowych lektur i audiobooków – na swojej stronie WWW! Po prostu skopiuj "
+"poniższy kod HTML na swoją stronę:"
 
-#: templates/catalogue/main_page.html:86
+#: templates/catalogue/main_page.html:114
 msgid "Insert this element in place where you want display the widget"
 msgstr "Umieść ten element w miejscu gdzie chcesz wyświetlić widżet"
 
-#: templates/catalogue/main_page.html:89
+#: templates/catalogue/main_page.html:117
 msgid "Place this element just before closing body tag: &lt;/body&gt;"
 msgstr "Umieść ten element tuż przed zamknięciem taga body: &lt;/body&gt;"
 
-#: templates/catalogue/main_page.html:95
-#: templates/catalogue/main_page.html:97
+#: templates/catalogue/main_page.html:123
+#: templates/catalogue/main_page.html:125
 #: templates/lessons/document_list.html:32
 msgid "Hand-outs for teachers"
 msgstr "Materiały pomocnicze dla nauczycieli"
 
-#: templates/catalogue/main_page.html:96
-msgid "Lessons' prospects and other ideas for using Wolnelektury.pl for teaching."
-msgstr "Scenariusze lekcji i inne pomysły na wykorzytanie serwisu WolneLektury.pl podczas nauczania."
+#: templates/catalogue/main_page.html:124
+msgid ""
+"Lessons' prospects and other ideas for using Wolnelektury.pl for teaching."
+msgstr ""
+"Scenariusze lekcji i inne pomysły na wykorzytanie serwisu WolneLektury.pl "
+"podczas nauczania."
 
-#: templates/catalogue/main_page.html:103
+#: templates/catalogue/main_page.html:131
 #: templates/catalogue/tagged_object_list.html:112
 msgid "Authors"
 msgstr "Autorzy"
 
-#: templates/catalogue/main_page.html:107
+#: templates/catalogue/main_page.html:135
 #: templates/catalogue/tagged_object_list.html:116
 msgid "Kinds"
 msgstr "Rodzaje"
 
-#: templates/catalogue/main_page.html:111
+#: templates/catalogue/main_page.html:139
 #: templates/catalogue/tagged_object_list.html:120
 msgid "Genres"
 msgstr "Gatunki"
 
-#: templates/catalogue/main_page.html:115
+#: templates/catalogue/main_page.html:143
 #: templates/catalogue/tagged_object_list.html:124
 msgid "Epochs"
 msgstr "Epoki"
 
-#: templates/catalogue/main_page.html:121
-#: templates/catalogue/main_page.html:136
+#: templates/catalogue/main_page.html:149
+#: templates/catalogue/main_page.html:164
 msgid "Themes and topics"
 msgstr "Motywy i tematy"
 
-#: templates/catalogue/main_page.html:124
+#: templates/catalogue/main_page.html:152
 msgid "Themes groups"
 msgstr "Rodziny motywów"
 
-#: templates/catalogue/main_page.html:309
+#: templates/catalogue/main_page.html:337
 msgid "News"
 msgstr "Aktualności"
 
-#: templates/catalogue/main_page.html:313
+#: templates/catalogue/main_page.html:341
 msgid "See our blog"
 msgstr "Zobacz nasz blog"
 
-#: templates/catalogue/main_page.html:316
-#: templates/catalogue/main_page.html:322
+#: templates/catalogue/main_page.html:344
+#: templates/catalogue/main_page.html:350
 msgid "You can help us!"
 msgstr "Możesz nam pomóc!"
 
-#: templates/catalogue/main_page.html:318
+#: templates/catalogue/main_page.html:346
 msgid "Become a volunteer &ndash; an editor, developer or translator."
 msgstr "Zostań naszym redaktorem, programistą lub tłumaczem – wolontariuszem."
 
-#: templates/catalogue/main_page.html:319
+#: templates/catalogue/main_page.html:347
 msgid "Gain new skills and experience."
 msgstr "Zdobądź nowe umiejętności i doświadczenie."
 
-#: templates/catalogue/main_page.html:320
+#: templates/catalogue/main_page.html:348
 msgid "Join an open project of creating an innovative online library."
-msgstr "Weź udział w otwartym projekcie i twórz innowacyjną bibliotekę internetową."
+msgstr ""
+"Weź udział w otwartym projekcie i twórz innowacyjną bibliotekę internetową."
 
-#: templates/catalogue/main_page.html:325
-#: templates/catalogue/main_page.html:331
+#: templates/catalogue/main_page.html:353
+#: templates/catalogue/main_page.html:359
 msgid "About us"
 msgstr "O projekcie"
 
-#: templates/catalogue/main_page.html:327
+#: templates/catalogue/main_page.html:355
 msgid ""
 "\n"
-"\t\t\tInternet library with school readings “Wolne Lektury” (<a href=\"http://wolnelektury.pl\">www.wolnelektury.pl</a>) is a project made by Modern Poland Foundation. It started in 2007 and shares school readings, which are recommended by Ministry of National Education and are in public domain.\n"
+"\t\t\tInternet library with school readings “Wolne Lektury” (<a href="
+"\"http://wolnelektury.pl\">www.wolnelektury.pl</a>) is a project made by "
+"Modern Poland Foundation. It started in 2007 and shares school readings, "
+"which are recommended by Ministry of National Education and are in public "
+"domain.\n"
 "\t\t\t"
 msgstr ""
 "\n"
-"Biblioteka internetowa z lekturami szkolnymi „Wolne Lektury” (<a href=\"http://wolnelektury.pl\">www.wolnelektury.pl</a>) to projekt realizowany przez fundację Nowoczesna Polska. Działa od 2007 roku i udostępnia w swoich zbiorach lektury szkolne, które są zalecane do użytku przez Ministerstwo Edukacji Narodowej i które trafiły już do domeny publicznej."
+"Biblioteka internetowa z lekturami szkolnymi „Wolne Lektury” (<a href="
+"\"http://wolnelektury.pl\">www.wolnelektury.pl</a>) to projekt realizowany "
+"przez fundację Nowoczesna Polska. Działa od 2007 roku i udostępnia w swoich "
+"zbiorach lektury szkolne, które są zalecane do użytku przez Ministerstwo "
+"Edukacji Narodowej i które trafiły już do domeny publicznej."
 
-#: templates/catalogue/main_page.html:340
+#: templates/catalogue/main_page.html:368
 msgid ""
 "\n"
-"Portions of this page are modifications based on work created and <a href=\"http://code.google.com/policies.html\">shared by Google</a> and used\n"
-"according to terms described in the <a href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons\n"
+"Portions of this page are modifications based on work created and <a href="
+"\"http://code.google.com/policies.html\">shared by Google</a> and used\n"
+"according to terms described in the <a href=\"http://creativecommons.org/"
+"licenses/by/3.0/\">Creative Commons\n"
 "3.0 Attribution License</a>.\n"
 msgstr ""
 "\n"
-"Strona zawiera zmodyfikowane logo Androida, stworzone i <a href=\"http://code.google.com/policies.html\">udostępnione przez Google</a>\n"
-"na warunkach licencji <a href=\"http://creativecommons.org/licenses/by/3.0/\">Creative Commons 3.0 Uznanie Autorstwa</a>.\n"
+"Strona zawiera zmodyfikowane logo Androida, stworzone i <a href=\"http://"
+"code.google.com/policies.html\">udostępnione przez Google</a>\n"
+"na warunkach licencji <a href=\"http://creativecommons.org/licenses/by/3.0/"
+"\">Creative Commons 3.0 Uznanie Autorstwa</a>.\n"
+
+#: templates/catalogue/search_form.html:3 templates/info/base.html:12
+msgid "return to the main page"
+msgstr "wróć do strony głównej"
 
 #: templates/catalogue/search_multiple_hits.html:5
 #: templates/catalogue/search_too_short.html:5
@@ -763,9 +842,13 @@ msgstr "Przepraszamy! Brak wyników spełniających kryteria podane w zapytaniu.
 
 #: templates/catalogue/search_no_hits.html:16
 msgid ""
-"Search engine supports following criteria: title, author, theme/topic, epoch, kind and genre.\n"
+"Search engine supports following criteria: title, author, theme/topic, "
+"epoch, kind and genre.\n"
 "\t\tAs for now we do not support full text search."
-msgstr "Wyszukiwarka obsługuje takie kryteria jak tytuł, autor, motyw/temat, epoka, rodzaj i gatunek utworu. Obecnie nie obsługujemy wyszukiwania fraz w tekstach utworów."
+msgstr ""
+"Wyszukiwarka obsługuje takie kryteria jak tytuł, autor, motyw/temat, epoka, "
+"rodzaj i gatunek utworu. Obecnie nie obsługujemy wyszukiwania fraz w "
+"tekstach utworów."
 
 #: templates/catalogue/search_too_short.html:14
 msgid "Sorry! Search query must have at least two characters."
@@ -780,8 +863,12 @@ msgid "Your shelf is empty"
 msgstr "Twoja półka jest pusta"
 
 #: templates/catalogue/tagged_object_list.html:16
-msgid "You can put a book on a shelf by entering page of the reading and clicking 'Put on the shelf'."
-msgstr "Możesz wrzucić książkę na półkę, wchodząc na stronę danej lektury i klikając na przycisk „Na półkę!”."
+msgid ""
+"You can put a book on a shelf by entering page of the reading and clicking "
+"'Put on the shelf'."
+msgstr ""
+"Możesz wrzucić książkę na półkę, wchodząc na stronę danej lektury i klikając "
+"na przycisk „Na półkę!”."
 
 #: templates/catalogue/tagged_object_list.html:32
 msgid "Download all books from this shelf"
@@ -826,8 +913,11 @@ msgid "Share this shelf"
 msgstr "Podziel się tą półką"
 
 #: templates/catalogue/tagged_object_list.html:51
-msgid "Copy this link and share it with other people to let them see your shelf."
-msgstr "Skopiuj ten link i przekaż go osobom, z którymi chcesz się podzielić tą półką."
+msgid ""
+"Copy this link and share it with other people to let them see your shelf."
+msgstr ""
+"Skopiuj ten link i przekaż go osobom, z którymi chcesz się podzielić tą "
+"półką."
 
 #: templates/catalogue/tagged_object_list.html:61
 #: templates/pdcounter/author_detail.html:27
@@ -842,12 +932,14 @@ msgstr "Przeczytaj omówienia z epoki %(last_tag)s w serwisie Lektury.Gazeta.pl"
 #: templates/catalogue/tagged_object_list.html:65
 #, python-format
 msgid "Read study of kind %(last_tag)s on Lektury.Gazeta.pl"
-msgstr "Przeczytaj omówienia z rodzaju %(last_tag)s w serwisie Lektury.Gazeta.pl"
+msgstr ""
+"Przeczytaj omówienia z rodzaju %(last_tag)s w serwisie Lektury.Gazeta.pl"
 
 #: templates/catalogue/tagged_object_list.html:67
 #, python-format
 msgid "Read study of genre %(last_tag)s on Lektury.Gazeta.pl"
-msgstr "Przeczytaj omówienia z gatunku %(last_tag)s w serwisie Lektury.Gazeta.pl"
+msgstr ""
+"Przeczytaj omówienia z gatunku %(last_tag)s w serwisie Lektury.Gazeta.pl"
 
 #: templates/catalogue/tagged_object_list.html:69
 msgid "Read related study on Lektury.Gazeta.pl"
@@ -887,31 +979,55 @@ msgstr "usuń"
 
 #: templates/catalogue/user_shelves.html:10
 msgid "You do not own any shelves. You can create one below if you want to"
-msgstr "Nie posiadasz żadnych półek. Jeśli chcesz, możesz utworzyć półkę poniżej."
-
-#: templates/info/base.html:12
-msgid "return to the main page"
-msgstr "wróć do strony głównej"
+msgstr ""
+"Nie posiadasz żadnych półek. Jeśli chcesz, możesz utworzyć półkę poniżej."
 
-#: templates/info/join_us.html:2
+#: templates/info/join_us.html:6
+#, python-format
 msgid ""
-"We have over 1200 works published in Wolne Lektury!\n"
+"\n"
+"We have %(c)s work published in Wolne Lektury!\n"
 "Help us expand the library and set new readings free by\n"
 "<a href=\"http://nowoczesnapolska.org.pl/wesprzyj_nas/\">making a donation\n"
-"or transferring 1% of your income tax</a>."
-msgstr "W serwisie Wolne Lektury już teraz opublikowanych jest ponad 1200 utworów! Pomóż w rozwijaniu biblioteki i uwalnianiu nowych lektur <a href=\"http://nowoczesnapolska.org.pl/wesprzyj_nas/\">przekazując nam darowiznę lub 1% podatku</a>."
+"or transferring 1&#37; of your income tax</a>.\n"
+msgid_plural ""
+"\n"
+"We have %(c)s works published in Wolne Lektury!\n"
+"Help us expand the library and set new readings free by\n"
+"<a href=\"http://nowoczesnapolska.org.pl/wesprzyj_nas/\">making a donation\n"
+"or transferring 1&#37; of your income tax</a>.\n"
+msgstr[0] ""
+"\n"
+"W serwisie Wolne Lektury już teraz opublikowany jest %(c)s utwór! Pomóż w "
+"rozwijaniu biblioteki i uwalnianiu nowych lektur <a href=\"http://"
+"nowoczesnapolska.org.pl/wesprzyj_nas/\">przekazując nam darowiznę lub 1&#37; "
+"podatku</a>.\n"
+msgstr[1] ""
+"\n"
+"W serwisie Wolne Lektury już teraz opublikowane są %(c)s utwory! Pomóż w "
+"rozwijaniu biblioteki i uwalnianiu nowych lektur <a href=\"http://"
+"nowoczesnapolska.org.pl/wesprzyj_nas/\">przekazując nam darowiznę lub 1&#37; "
+"podatku</a>.\n"
+msgstr[2] ""
+"\n"
+"W serwisie Wolne Lektury już teraz opublikowanych jest %(c)s utworów! Pomóż "
+"w rozwijaniu biblioteki i uwalnianiu nowych lektur <a href=\"http://"
+"nowoczesnapolska.org.pl/wesprzyj_nas/\">przekazując nam darowiznę lub 1&#37; "
+"podatku</a>.\n"
 
-#: templates/info/join_us.html:6
-#: templates/info/join_us.html.py:11
+#: templates/info/join_us.html:17 templates/info/join_us.html.py:22
 msgid "More..."
 msgstr "Więcej..."
 
-#: templates/info/join_us.html:8
+#: templates/info/join_us.html:19
 msgid ""
 "Become an editor of Wolne Lektury! Find out if\n"
 "we're currently working on a reading you're looking for and prepare\n"
 "a publication by yourself by logging into the Editorial Platform."
-msgstr "Zostań redaktorem lub redaktorką Wolnych Lektur! Sprawdź, czy obecnie pracujemy nad publikacją wyszukiwanej przez ciebie lektury i samodzielnie przygotuj publikację logując się na Platformie Redakcyjnej."
+msgstr ""
+"Zostań redaktorem lub redaktorką Wolnych Lektur! Sprawdź, czy obecnie "
+"pracujemy nad publikacją wyszukiwanej przez ciebie lektury i samodzielnie "
+"przygotuj publikację logując się na Platformie Redakcyjnej."
 
 #: templates/lessons/ajax_document_detail.html:3
 msgid "author"
@@ -937,29 +1053,54 @@ msgstr "Dzieła tego autora objęte są prawem autorskim."
 
 #: templates/pdcounter/author_detail.html:38
 #: templates/pdcounter/author_detail.html:46
-msgid "<a href='http://domenapubliczna.org/co-to-jest-domena-publiczna/'>Find out</a> why Internet libraries can't publish this author's works."
-msgstr "<a href='http://domenapubliczna.org/co-to-jest-domena-publiczna/'>Dowiedz się</a>, dlaczego biblioteki internetowe nie mogą udostępniać dzieł tego autora."
+msgid ""
+"<a href='http://domenapubliczna.org/co-to-jest-domena-publiczna/'>Find out</"
+"a> why Internet libraries can't publish this author's works."
+msgstr ""
+"<a href='http://domenapubliczna.org/co-to-jest-domena-publiczna/'>Dowiedz "
+"się</a>, dlaczego biblioteki internetowe nie mogą udostępniać dzieł tego "
+"autora."
 
 #: templates/pdcounter/author_detail.html:41
-msgid "This author's works are in public domain and will be published on Internet school library of Wolne Lektury soon."
-msgstr "Dzieła tego autora znajdują się w domenie publicznej i niedługo zostaną opublikowane w szkolnej bibliotece internetowej Wolne Lektury."
+msgid ""
+"This author's works are in public domain and will be published on Internet "
+"school library of Wolne Lektury soon."
+msgstr ""
+"Dzieła tego autora znajdują się w domenie publicznej i niedługo zostaną "
+"opublikowane w szkolnej bibliotece internetowej Wolne Lektury."
 
 #: templates/pdcounter/author_detail.html:44
-msgid "This author's works will become part of public domain and will be allowed to be published without restrictions in"
-msgstr "Dzieła tego autora przejdą do zasobów domeny publicznej i będą mogły być publikowane bez żadnych ograniczeń za"
+msgid ""
+"This author's works will become part of public domain and will be allowed to "
+"be published without restrictions in"
+msgstr ""
+"Dzieła tego autora przejdą do zasobów domeny publicznej i będą mogły być "
+"publikowane bez żadnych ograniczeń za"
 
 #: templates/pdcounter/book_stub_detail.html:18
-msgid "This work is in public domain and will be published on Internet school library of Wolne Lektury soon."
-msgstr "To dzieło znajduje się w domenie publicznej i niedługo zostanie opublikowane w szkolnej bibliotece internetowej Wolne Lektury."
+msgid ""
+"This work is in public domain and will be published on Internet school "
+"library of Wolne Lektury soon."
+msgstr ""
+"To dzieło znajduje się w domenie publicznej i niedługo zostanie opublikowane "
+"w szkolnej bibliotece internetowej Wolne Lektury."
 
 #: templates/pdcounter/book_stub_detail.html:21
-msgid "This work will become part of public domain and will be allowed to be published without restrictions in"
-msgstr "To dzieło przejdzie do zasobów domeny publicznej i będzie mogło być publikowane bez żadnych ograniczeń za"
+msgid ""
+"This work will become part of public domain and will be allowed to be "
+"published without restrictions in"
+msgstr ""
+"To dzieło przejdzie do zasobów domeny publicznej i będzie mogło być "
+"publikowane bez żadnych ograniczeń za"
 
 #: templates/pdcounter/book_stub_detail.html:23
 #: templates/pdcounter/book_stub_detail.html:26
-msgid "<a href='http://domenapubliczna.org/co-to-jest-domena-publiczna/'>Find out</a> why Internet libraries can't publish this work."
-msgstr "<a href='http://domenapubliczna.org/co-to-jest-domena-publiczna/'>Dowiedz się</a>, dlaczego biblioteki internetowe nie mogą udostępniać tego dzieła."
+msgid ""
+"<a href='http://domenapubliczna.org/co-to-jest-domena-publiczna/'>Find out</"
+"a> why Internet libraries can't publish this work."
+msgstr ""
+"<a href='http://domenapubliczna.org/co-to-jest-domena-publiczna/'>Dowiedz "
+"się</a>, dlaczego biblioteki internetowe nie mogą udostępniać tego dzieła."
 
 #: templates/pdcounter/book_stub_detail.html:25
 msgid "This work is copyrighted."
index 6c58bff..9b34635 100644 (file)
@@ -115,35 +115,38 @@ LOGIN_URL = '/uzytkownicy/zaloguj/'
 LOGIN_REDIRECT_URL = '/'
 
 INSTALLED_APPS = [
-    # included
+    # external
     'django.contrib.auth',
     'django.contrib.contenttypes',
     'django.contrib.sessions',
     'django.contrib.sites',
     'django.contrib.admin',
     'django.contrib.admindocs',
-
-    # external
+    'pagination',
+    'piston',
+    'piwik.django',
+    'rosetta',
     'south',
     'sorl.thumbnail',
-    'sponsors',
-    'newtagging',
-    'pagination',
-    'chunks',
+
+    # included
     'compress',
     'modeltranslation',
+
+    # our
+    'api',
     'catalogue',
+    'chunks',
     'dictionary',
-    'lessons',
-    'piston',
-    'api',
-    'rosetta',
     'infopages',
-    'suggest',
     'lesmianator',
+    'lessons',
+    'newtagging',
     'opds',
     'pdcounter',
-    'piwik.django',
+    'sponsors',
+    'stats',
+    'suggest',
 ]
 
 #CACHE_BACKEND = 'locmem:///?max_entries=3000'
index 0da3236..89040a5 100644 (file)
@@ -87,10 +87,15 @@ hr {
 #header #logo img {
     margin-bottom: -1.25em;
 }
-#header #logo a {
+#header a.logo {
     display:block;
     color: #777;
 }
+
+#tagline {
+    position: absolute;
+}
+
 #logo a:hover {
     text-decoration: none;
 }
index 3e3de98..061197f 100644 (file)
@@ -28,7 +28,9 @@
         </div>
         <div id="header">
             <div id="logo">
-                <a href="/"><img src="{% block logo_url %}{{ STATIC_URL }}img/logo-bez.png{% endblock %}" alt="WolneLektury.pl" /><br/>szkolna biblioteka internetowa</a>
+                <a class="logo" href="/"><img src="{% block logo_url %}{{ STATIC_URL }}img/logo-bez.png{% endblock %}" alt="WolneLektury.pl" />
+                <br/>szkolna biblioteka internetowa</a>
+                {% block tagline %}{% endblock %}
             </div>
             <div id="user-info" style="display:none">
                 {% if user.is_authenticated %}
diff --git a/wolnelektury/templates/catalogue/counters.html b/wolnelektury/templates/catalogue/counters.html
deleted file mode 100755 (executable)
index 9262a48..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-{% extends "base.html" %}
-{% load i18n %}
-
-{% block title %}Liczniki w  WolneLektury.pl{% endblock %}
-
-{% block bodyid %}tagged-object-list{% endblock %}
-
-{% block body %}
-    <h1>Liczniki</h1>
-    <form action="{% url search %}" method="get" accept-charset="utf-8" id="search-form">
-        <p>{{ form.q }} <input type="submit" value="{% trans "Search" %}" /> <strong>{% trans "or" %}</strong> <a href="{% url main_page %}">{% trans "return to main page" %}</a></p>
-    </form>
-
-    <table>
-        <tr><th>Utwory</th></tr>
-        <tr><td>Wszystkie utwory:</td><td>{{ books }}</td></tr>
-        <tr><td>Utwory z własną treścią:</td><td>{{ books_nonempty }}</td></tr>
-        <tr><td>Utwory bez własnej treści:</td><td>{{ books_empty }}</td></tr>
-        <tr><td>Niezależne książki:</td><td>{{ books_root }}</td></tr>
-
-        <tr><th>Media</th><th>Liczba</th><th>Rozmiar</th><th>Do wymiany</th></tr>
-        {% for mt in media_types %}
-            <tr><td>{{ mt.type }}:</td>
-                <td>{{ mt.count }}</td>
-                <td>{{ mt.size|filesizeformat }}</td>
-                <td>{{ mt.deprecated }}</td>
-            </tr>
-        {% endfor %}
-    </table>
-
-{% endblock %}
index 7e9f7c2..38b3f0f 100644 (file)
@@ -1,11 +1,27 @@
 {% extends "base.html" %}
 {% load i18n %}
-{% load catalogue_tags chunks cache %}
+{% load catalogue_tags chunks cache stats %}
 
 {# doodle #}
 {% block logo_url %}{{ STATIC_URL }}img/doodle/20110908-logo.png{% endblock %}
 
 
+{% block tagline %}
+<div id='tagline'>
+
+{% count_books_nonempty count_books %}
+{% blocktrans count count_books as c %}
+{{c}} book from <a href='http://domenapubliczna.org'>public domain</a> or under
+a <a href='http://creativecommons.org/licenses/by-sa/3.0/deed.pl'>free license</a>.
+{% plural %}
+{{c}} books from <a href='http://domenapubliczna.org'>public domain</a> or under
+a <a href='http://creativecommons.org/licenses/by-sa/3.0/deed.pl'>free license</a>.
+{% endblocktrans %}
+
+</div>
+{% endblock %}
+
+
 {% block bodyid %}main-page{% endblock %}
 
 {% block body %}
@@ -16,7 +32,7 @@
         {# doodle #}
         <div style="position:relative;">
             <a href="https://market.android.com/details?id=pl.org.nowoczesnapolska.wlmobi" target="_blank">
-                <img src="{{ STATIC_URL }}img/doodle/20110908-android.png" style="position:absolute; top:-100px; left: 250px; margin-top: .5em;" />
+                <img src="{{ STATIC_URL }}img/doodle/20110908-android.png" style="position:absolute; top:-100px; left: 320px; margin-top: .5em;" />
             </a>
         </div>
     <form action="{% url search %}" method="get" accept-charset="utf-8" id="search-form">
diff --git a/wolnelektury/templates/catalogue/search_form.html b/wolnelektury/templates/catalogue/search_form.html
new file mode 100755 (executable)
index 0000000..4535226
--- /dev/null
@@ -0,0 +1,4 @@
+{% load i18n %}
+<form action="{% url search %}" method="get" accept-charset="utf-8" id="search-form">
+    <p>{{ form.q }} <input type="submit" value="{% trans "Search" %}" /> <strong>{%trans "or" %}</strong> <a href="{% url main_page %}">{% trans "return to the main page" %}</a></p>
+</form>
index a837d51..fee416e 100644 (file)
@@ -1,8 +1,19 @@
 {% load i18n %}
-<p>{% blocktrans %}We have over 1200 works published in Wolne Lektury!
+{% load stats %}
+
+{% count_books_nonempty book_count %}
+<p>
+{% blocktrans count book_count as c %}
+We have {{c}} work published in Wolne Lektury!
+Help us expand the library and set new readings free by
+<a href="http://nowoczesnapolska.org.pl/wesprzyj_nas/">making a donation
+or transferring 1&#37; of your income tax</a>.
+{% plural %}
+We have {{c}} works published in Wolne Lektury!
 Help us expand the library and set new readings free by
 <a href="http://nowoczesnapolska.org.pl/wesprzyj_nas/">making a donation
-or transferring 1% of your income tax</a>.{% endblocktrans %}
+or transferring 1&#37; of your income tax</a>.
+{% endblocktrans %}
 {% comment %}<a href='{}'>{% trans "More..." %}</a>{% endcomment %}</p>
 
 <p>{% blocktrans %}Become an editor of Wolne Lektury! Find out if
index 92e3dc5..aa9588a 100644 (file)
@@ -19,6 +19,7 @@ urlpatterns = patterns('',
     url(r'^sugestia/', include('suggest.urls')),
     url(r'^lesmianator/', include('lesmianator.urls')),
     url(r'^przypisy/', include('dictionary.urls')),
+    url(r'^statystyka/', include('stats.urls')),
 
     # Static pages
     url(r'^mozesz-nam-pomoc/$', 'infopages.views.infopage', {'slug': 'help_us'}, name='help_us'),