From: Aleksander Łukasz Date: Fri, 21 Jun 2013 14:02:46 +0000 (+0200) Subject: Merge branch 'master' into funding X-Git-Url: https://git.mdrn.pl/wolnelektury.git/commitdiff_plain/5f176bb52a7a59bf88f5728e60a3a62e12fb3d54?hp=45632aee424aa72050e905718457d7a7203ead30 Merge branch 'master' into funding --- diff --git a/apps/api/handlers.py b/apps/api/handlers.py index dbe905b00..7f74c19e7 100644 --- a/apps/api/handlers.py +++ b/apps/api/handlers.py @@ -17,7 +17,7 @@ from sorl.thumbnail import default from api.helpers import timestamp from api.models import Deleted from catalogue.forms import BookImportForm -from catalogue.models import Book, Tag, BookMedia, Fragment +from catalogue.models import Book, Tag, BookMedia, Fragment, Collection from picture.models import Picture from picture.forms import PictureImportForm @@ -258,6 +258,52 @@ for format in Book.formats: setattr(BookDetails, format, _file_getter(format)) +class CollectionDetails(object): + """Custom Collection fields.""" + + @classmethod + def href(cls, collection): + """ Returns URI in the API for the collection. """ + + return API_BASE + reverse("api_collection", args=[collection.slug]) + + @classmethod + def url(cls, collection): + """ Returns URL on the site. """ + + return WL_BASE + collection.get_absolute_url() + + @classmethod + def books(cls, collection): + return Book.objects.filter(collection.get_query()) + + + +class CollectionDetailHandler(BaseHandler, CollectionDetails): + allowed_methods = ('GET',) + fields = ['url', 'title', 'description', 'books'] + + @piwik_track + def read(self, request, slug): + print slug + """ Returns details of a collection, identified by slug. """ + try: + return Collection.objects.get(slug=slug) + except Collection.DoesNotExist: + return rc.NOT_FOUND + + +class CollectionsHandler(BaseHandler, CollectionDetails): + allowed_methods = ('GET',) + model = Collection + fields = ['url', 'href', 'title'] + + @piwik_track + def read(self, request): + """ Returns all collections. """ + return Collection.objects.all() + + class TagDetails(object): """Custom Tag fields.""" diff --git a/apps/api/locale/pl/LC_MESSAGES/django.mo b/apps/api/locale/pl/LC_MESSAGES/django.mo index d7a620e35..788ad6608 100644 Binary files a/apps/api/locale/pl/LC_MESSAGES/django.mo and b/apps/api/locale/pl/LC_MESSAGES/django.mo differ diff --git a/apps/api/locale/pl/LC_MESSAGES/django.po b/apps/api/locale/pl/LC_MESSAGES/django.po index e777d0509..7c92baca4 100644 --- a/apps/api/locale/pl/LC_MESSAGES/django.po +++ b/apps/api/locale/pl/LC_MESSAGES/django.po @@ -7,22 +7,26 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-07-19 11:38+0200\n" -"PO-Revision-Date: 2012-03-20 12:50+0100\n" +"POT-Creation-Date: 2013-06-14 11:45+0200\n" +"PO-Revision-Date: 2013-06-14 11:45+0100\n" "Last-Translator: Radek Czajka \n" "Language-Team: LANGUAGE \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" +"X-Generator: Poedit 1.5.4\n" -#: templates/api/main.html:6 +#: models.py:15 +msgid "slug" +msgstr "" + +#: templates/api/main.html:5 msgid "WolneLektury.pl API" msgstr "API serwisu WolneLektury.pl" -#: templates/api/main.html:17 +#: templates/api/main.html:16 #, python-format msgid "" "\n" @@ -35,7 +39,7 @@ msgstr "" "Za jego pomocą można uzyskać informacje o utworach, ich fragmentach i " "metadanych.\n" -#: templates/api/main.html:25 +#: templates/api/main.html:24 msgid "" "\n" "Default data serialization format is\n" @@ -50,7 +54,7 @@ msgstr "" "format=xml\n" "do każdego zapytania.\n" -#: templates/api/main.html:34 +#: templates/api/main.html:33 msgid "" "\n" "The URLs in WolneLektury.pl API are:\n" @@ -58,40 +62,43 @@ msgstr "" "\n" "API Wolnych Lektur zawiera następujące adresy URL:\n" -#: templates/api/main.html:41 -#, fuzzy +#: templates/api/main.html:40 msgid "All books" -msgstr "Lista utworów" +msgstr "Wszystkie utwory" -#: templates/api/main.html:43 +#: templates/api/main.html:42 msgid "Audiobooks" -msgstr "" +msgstr "Audiobooki" -#: templates/api/main.html:45 +#: templates/api/main.html:44 msgid "DAISY" -msgstr "" +msgstr "DAISY" -#: templates/api/main.html:48 +#: templates/api/main.html:47 msgid "List of all authors" msgstr "Lista autorów" -#: templates/api/main.html:50 +#: templates/api/main.html:49 msgid "List of all epochs" msgstr "Lista epok" -#: templates/api/main.html:52 +#: templates/api/main.html:51 msgid "List of all genres" msgstr "Lista gatunków literackich" -#: templates/api/main.html:54 +#: templates/api/main.html:53 msgid "List of all kinds" msgstr "Lista rodzajów literackich" -#: templates/api/main.html:57 +#: templates/api/main.html:56 msgid "List of all themes" msgstr "Lista motywów i tematów literackich" -#: templates/api/main.html:63 +#: templates/api/main.html:58 +msgid "Collections" +msgstr "Kolekcje" + +#: templates/api/main.html:64 #, python-format msgid "" "\n" @@ -105,7 +112,7 @@ msgstr "" "można znaleźć szczegółowe dane, np. %(e1)s czy %(e2)s.\n" -#: templates/api/main.html:72 +#: templates/api/main.html:73 #, python-format msgid "" "\n" @@ -118,7 +125,7 @@ msgstr "" "Można łączyć autorów, epoki, gatunki i rodzaje, aby wybrać tylko utwory " "odpowiadające zadanym kryteriom. Na przykład: %(e)s.\n" -#: templates/api/main.html:80 +#: templates/api/main.html:81 #, python-format msgid "" "\n" @@ -131,7 +138,7 @@ msgstr "" "(pomijając ich podutwory), można użyć zapytania /parent_books/, np.: %(e)s.\n" -#: templates/api/main.html:88 +#: templates/api/main.html:89 #, python-format msgid "" "\n" diff --git a/apps/api/templates/api/main.html b/apps/api/templates/api/main.html index 1a79320da..5c81a2d2d 100755 --- a/apps/api/templates/api/main.html +++ b/apps/api/templates/api/main.html @@ -54,6 +54,8 @@ The URLs in WolneLektury.pl API are:
  • {% url "api_tag_list" "themes" %} – {% trans "List of all themes" %}
  • +
  • + {% url "api_collections" %} – {% trans "Collections" %}

    diff --git a/apps/api/urls.py b/apps/api/urls.py index 8a1451909..a2e3197ef 100644 --- a/apps/api/urls.py +++ b/apps/api/urls.py @@ -19,6 +19,9 @@ ebook_list_resource = Resource(handler=handlers.EBooksHandler) #book_list_resource = Resource(handler=handlers.BooksHandler) book_resource = Resource(handler=handlers.BookDetailHandler) +collection_resource = Resource(handler=handlers.CollectionDetailHandler) +collection_list_resource = Resource(handler=handlers.CollectionsHandler) + tag_list_resource = Resource(handler=handlers.TagsHandler) tag_resource = Resource(handler=handlers.TagDetailHandler) @@ -48,6 +51,10 @@ urlpatterns = patterns( url(r'tag/(?P\d*?)/info\.html$', 'catalogue.views.tag_info'), + # books by collections + url(r'^collections/$', collection_list_resource, name="api_collections"), + url(r'^collections/(?P[^/]+)/$', collection_resource, name="api_collection"), + # objects details url(r'^books/(?P[a-z0-9-]+)/$', book_resource, name="api_book"), url(r'^(?P[a-z0-9-]+)/(?P[a-z0-9-]+)/$', diff --git a/apps/catalogue/locale/pl/LC_MESSAGES/django.mo b/apps/catalogue/locale/pl/LC_MESSAGES/django.mo index f5779475c..62671f116 100644 Binary files a/apps/catalogue/locale/pl/LC_MESSAGES/django.mo and b/apps/catalogue/locale/pl/LC_MESSAGES/django.mo differ diff --git a/apps/catalogue/locale/pl/LC_MESSAGES/django.po b/apps/catalogue/locale/pl/LC_MESSAGES/django.po index df25b292b..a2d12acae 100644 --- a/apps/catalogue/locale/pl/LC_MESSAGES/django.po +++ b/apps/catalogue/locale/pl/LC_MESSAGES/django.po @@ -7,19 +7,20 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-09 10:34+0200\n" -"PO-Revision-Date: 2013-04-09 10:37+0100\n" +"POT-Creation-Date: 2013-06-19 14:10+0200\n" +"PO-Revision-Date: 2013-06-19 14:10+0100\n" "Last-Translator: Radek Czajka \n" "Language-Team: LANGUAGE \n" -"Language: \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-Generator: Poedit 1.5.4\n" #: constants.py:10 msgid "Creative Commons Attribution-ShareAlike 3.0 Unported" -msgstr "Creative Commons Uznanie autorstwa – Na tych samych warunkach 3.0 Unported" +msgstr "" +"Creative Commons Uznanie autorstwa – Na tych samych warunkach 3.0 Unported" #: forms.py:27 msgid "Please supply an XML." @@ -73,7 +74,7 @@ msgstr "Duży" msgid "Queue is full. Please try again later." msgstr "Kolejka jest pełna. Proszę spróbować ponownie później." -#: views.py:527 +#: views.py:521 #, python-format msgid "" "An error occurred: %(exception)s\n" @@ -84,41 +85,34 @@ msgstr "" "\n" "%(tb)s" -#: views.py:528 +#: views.py:522 msgid "Book imported successfully" msgstr "Książka zaimportowana" -#: views.py:530 +#: views.py:524 #, python-format msgid "Error importing file: %r" msgstr "Błąd podczas importowania pliku: %r" -#: views.py:562 +#: views.py:556 msgid "Download custom PDF" msgstr "Stwórz własny PDF" -#: views.py:563 -#: templates/catalogue/book_short.html:92 -#: templates/catalogue/book_text.html:29 -#: templates/catalogue/book_wide.html:63 +#: views.py:557 templates/catalogue/book_short.html:92 +#: templates/catalogue/book_text.html:27 templates/catalogue/book_wide.html:63 msgid "Download" msgstr "Pobierz" -#: models/book.py:28 -#: models/collection.py:11 +#: models/book.py:28 models/collection.py:11 msgid "title" msgstr "tytuł" -#: models/book.py:29 -#: models/tag.py:31 +#: models/book.py:29 models/tag.py:32 msgid "sort key" msgstr "klucz sortowania" -#: models/book.py:30 -#: models/book.py:32 -#: models/collection.py:12 -#: models/collection.py:15 -#: models/tag.py:30 +#: models/book.py:30 models/book.py:32 models/collection.py:12 +#: models/collection.py:15 models/tag.py:31 msgid "slug" msgstr "slug" @@ -126,19 +120,13 @@ msgstr "slug" msgid "language code" msgstr "Kod języka" -#: models/book.py:35 -#: models/book.py:145 -#: models/collection.py:13 -#: models/tag.py:34 -#: models/tag.py:83 +#: models/book.py:35 models/book.py:145 models/collection.py:13 +#: models/tag.py:35 models/tag.py:89 msgid "description" msgstr "opis" -#: models/book.py:36 -#: models/book.py:37 -#: models/bookmedia.py:28 -#: models/tag.py:41 -#: models/tag.py:42 +#: models/book.py:36 models/book.py:37 models/bookmedia.py:29 models/tag.py:42 +#: models/tag.py:43 msgid "creation date" msgstr "data utworzenia" @@ -146,8 +134,7 @@ msgstr "data utworzenia" msgid "parent number" msgstr "numer rodzica" -#: models/book.py:39 -#: models/bookmedia.py:29 +#: models/book.py:39 models/bookmedia.py:30 msgid "extra information" msgstr "dodatkowe informacje" @@ -155,8 +142,7 @@ msgstr "dodatkowe informacje" msgid "cover" msgstr "okładka" -#: models/book.py:66 -#: models/tag.py:20 +#: models/book.py:66 models/tag.py:21 msgid "book" msgstr "książka" @@ -174,27 +160,24 @@ msgstr "Utwór \"%s\" nie istnieje." msgid "Book %s already exists" msgstr "Książka %s już istnieje" -#: models/book.py:589 -#: models/bookmedia.py:22 +#: models/book.py:590 models/bookmedia.py:23 #, python-format msgid "%s file" msgstr "plik %s" -#: models/bookmedia.py:25 +#: models/bookmedia.py:26 msgid "type" msgstr "typ" -#: models/bookmedia.py:26 -#: models/tag.py:29 +#: models/bookmedia.py:27 models/tag.py:30 msgid "name" msgstr "nazwa" -#: models/bookmedia.py:27 +#: models/bookmedia.py:28 msgid "file" msgstr "plik" -#: models/bookmedia.py:38 -#: models/bookmedia.py:39 +#: models/bookmedia.py:39 models/bookmedia.py:40 msgid "book media" msgstr "media książki" @@ -218,46 +201,54 @@ msgstr "fragment" msgid "fragments" msgstr "fragmenty" -#: models/tag.py:14 +#: models/tag.py:15 msgid "author" msgstr "autor" -#: models/tag.py:15 +#: models/tag.py:16 msgid "epoch" msgstr "epoka" -#: models/tag.py:16 +#: models/tag.py:17 msgid "kind" msgstr "rodzaj" -#: models/tag.py:17 +#: models/tag.py:18 msgid "genre" msgstr "gatunek" -#: models/tag.py:18 +#: models/tag.py:19 msgid "theme" msgstr "motyw" -#: models/tag.py:19 +#: models/tag.py:20 msgid "set" msgstr "półka" -#: models/tag.py:32 +#: models/tag.py:33 msgid "category" msgstr "kategoria" -#: models/tag.py:37 +#: models/tag.py:38 msgid "book count" msgstr "liczba książek" -#: models/tag.py:59 +#: models/tag.py:60 msgid "tag" msgstr "tag" -#: models/tag.py:60 +#: models/tag.py:61 msgid "tags" msgstr "tagi" +#: models/tag.py:78 +msgid "" +"Book tags can't have attached links. Set them directly on the book instead " +"of it's tag." +msgstr "" +"Tagi typu książka nie mogą mieć ustawionych linków. Ustaw je bezpośrednio " +"dla książki, zamiast dla jej tagu." + #: templates/catalogue/audiobook_list.html:7 #: templates/catalogue/audiobook_list.html:16 msgid "Listing of all audiobooks" @@ -308,9 +299,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" -" Creative Commons Attribution-ShareAlike 3.0\n" +" Creative " +"Commons Attribution-ShareAlike 3.0\n" " license." -msgstr "Ten utwór nie jest chroniony prawem autorskim i znajduje się w domenie publicznej, co oznacza że możesz go swobodnie wykorzystywać, publikować i 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 Uznanie autorstwa-Na tych samych warunkach 3.0." +msgstr "" +"Ten utwór nie jest chroniony prawem autorskim i znajduje się w " +"domenie publicznej, co oznacza że możesz go swobodnie wykorzystywać, " +"publikować i 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 Uznanie autorstwa-" +"Na tych samych warunkach 3.0." #: templates/catalogue/book_info.html:20 msgid "Text prepared based on:" @@ -324,8 +323,7 @@ msgstr "Opracowanie redakcyjne i przypisy:" msgid "Cover image by:" msgstr "Ilustracja na okładce:" -#: templates/catalogue/book_list.html:7 -#: templates/catalogue/book_list.html:10 +#: templates/catalogue/book_list.html:7 templates/catalogue/book_list.html:10 msgid "Listing of all works" msgstr "Spis wszystkich utworów" @@ -337,24 +335,6 @@ msgstr "Spis treści" msgid "↑ top ↑" msgstr "↑ góra ↑" -#: templates/catalogue/book_sets.html:2 -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/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." - -#: templates/catalogue/book_sets.html:15 -msgid "Put on the shelf!" -msgstr "Wrzuć na półkę" - #: templates/catalogue/book_short.html:59 #: templates/catalogue/picture_detail.html:54 msgid "Epoch" @@ -374,7 +354,7 @@ msgid "Read online" msgstr "Czytaj online" #: templates/catalogue/book_short.html:95 -#: templates/catalogue/book_text.html:42 +#: templates/catalogue/book_text.html:40 msgid "to print" msgstr "do druku" @@ -383,58 +363,54 @@ msgid "for an e-book reader" msgstr "na czytnik e-booków" #: templates/catalogue/book_short.html:101 -#: templates/catalogue/book_text.html:48 +#: templates/catalogue/book_text.html:46 msgid "for Kindle" msgstr "na Kindle" #: templates/catalogue/book_short.html:104 -#: templates/catalogue/book_text.html:51 +#: templates/catalogue/book_text.html:49 msgid "FictionBook" msgstr "FictionBook" #: templates/catalogue/book_short.html:107 -#: templates/catalogue/book_text.html:54 +#: templates/catalogue/book_text.html:52 msgid "for advanced usage" msgstr "do zadań specjalnych" #: templates/catalogue/book_short.html:113 -#: templates/catalogue/book_text.html:32 +#: templates/catalogue/book_text.html:30 msgid "Listen" msgstr "Słuchaj" -#: templates/catalogue/book_text.html:10 -#: templates/catalogue/player.html:11 +#: templates/catalogue/book_text.html:9 templates/catalogue/player.html:11 msgid "Wolne Lektury" msgstr "Wolne Lektury" -#: templates/catalogue/book_text.html:24 +#: templates/catalogue/book_text.html:22 msgid "Table of contents" msgstr "Spis treści" -#: templates/catalogue/book_text.html:25 -#: templatetags/catalogue_tags.py:419 +#: templates/catalogue/book_text.html:23 templatetags/catalogue_tags.py:419 msgid "Themes" msgstr "Motywy" -#: templates/catalogue/book_text.html:26 +#: templates/catalogue/book_text.html:24 msgid "Edit. note" msgstr "Nota red." -#: templates/catalogue/book_text.html:27 +#: templates/catalogue/book_text.html:25 msgid "Infobox" msgstr "Informacje" -#: templates/catalogue/book_text.html:28 -#: templates/catalogue/player.html:34 +#: templates/catalogue/book_text.html:26 templates/catalogue/player.html:34 msgid "Book's page" msgstr "Strona utworu" -#: templates/catalogue/book_text.html:45 +#: templates/catalogue/book_text.html:43 msgid "for a reader" msgstr "na czytnik" -#: templates/catalogue/book_text.html:58 -#: templates/catalogue/book_wide.html:67 +#: templates/catalogue/book_text.html:56 templates/catalogue/book_wide.html:67 msgid "Download all audiobooks for this book" msgstr "Pobierz wszystkie audiobooki tego utworu" @@ -479,8 +455,7 @@ msgstr "Opis lektury w Wikipedii" msgid "Mix this book" msgstr "Miksuj treść utworu" -#: templates/catalogue/catalogue.html:6 -#: templates/catalogue/catalogue.html:11 +#: templates/catalogue/catalogue.html:6 templates/catalogue/catalogue.html:11 msgid "Catalogue" msgstr "Katalog" @@ -520,8 +495,7 @@ msgstr "Epoki" msgid "Themes and topics" msgstr "Motywy i tematy" -#: templates/catalogue/catalogue.html:34 -#: templates/catalogue/menu.html:16 +#: templates/catalogue/catalogue.html:34 templates/catalogue/menu.html:16 msgid "Collections" msgstr "Kolekcje" @@ -538,27 +512,19 @@ msgstr "Ostatnio dodane audiobooki w formacie 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:12 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:" - -#: templates/catalogue/fragment_sets.html:2 -msgid "Shelves containing fragment" -msgstr "Półki zawierające fragment" - -#: templates/catalogue/fragment_sets.html:4 -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." - -#: templates/catalogue/fragment_sets.html:9 -msgid "Save all shelves" -msgstr "Zapisz półki" +msgstr "" +"Podane kryteria są niejednoznaczne. Proszę wybrać jedną z następujących " +"możliwości:" #: templates/catalogue/fragment_short.html:12 msgid "Expand fragment" @@ -573,8 +539,7 @@ msgstr "Zwiń fragment" msgid "See full category" msgstr "Zobacz całą kategorię" -#: templates/catalogue/menu.html:9 -#: templates/catalogue/menu.html.py:18 +#: templates/catalogue/menu.html:9 templates/catalogue/menu.html.py:18 msgid "Please wait…" msgstr "Proszę czekać…" @@ -654,14 +619,40 @@ msgstr "%(cs)s, finansowanego przez %(fb)s" #: templates/catalogue/player.html:125 #, 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/player.html:127 #, python-format msgid "Audiobooks were prepared as a part of the %(cs)s project." msgstr "Audiobooki przygotowane w ramach projektu %(cs)s." +#: templates/catalogue/recent_audiobooks_list.html:5 +#: templates/catalogue/recent_audiobooks_list.html:10 +msgid "Recent audiobooks" +msgstr "Ostatnio dodane audiobooki" + +#: templates/catalogue/recent_daisy_list.html:5 +#: templates/catalogue/recent_daisy_list.html:10 +msgid "Recent DAISY files" +msgstr "Ostatnio dodane pliki DAISY" + +#: templates/catalogue/recent_list.html:5 +#: templates/catalogue/recent_list.html:10 +msgid "Recent publications" +msgstr "Ostatnie publikacje" + +#: templates/catalogue/recent_list.html:15 +#, python-format +msgid "" +"You can also see recent audiobooks\n" +" and recent DAISY files." +msgstr "" +"Zobacz też listę ostatnio dodanych audiobooków\n" +" i plików DAISY." + #: templates/catalogue/search_multiple_hits.html:5 #: templates/catalogue/search_no_hits.html:5 #: templates/catalogue/search_no_hits.html:10 @@ -702,9 +693,13 @@ msgstr "Przepraszamy! Brak wyników spełniających kryteria podane w zapytaniu. #: templates/catalogue/search_no_hits.html:21 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:13 msgid "Sorry! Search query must have at least two characters." @@ -720,23 +715,7 @@ msgstr "w serwisie Lektury.Gazeta.pl" msgid "in Wikipedia" msgstr "w Wikipedii" -#: templates/catalogue/user_shelves.html:2 -msgid "Your shelves with books" -msgstr "Twoje półki z lekturami" - -#: templates/catalogue/user_shelves.html:6 -msgid "remove" -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/catalogue/user_shelves.html:15 -msgid "Create shelf" -msgstr "Utwórz półkę" - -#: templates/catalogue/snippets/custom_pdf_link_li.html:6 +#: templates/catalogue/snippets/custom_pdf_link_li.html:5 msgid "Download a custom PDF" msgstr "Stwórz własny plik PDF" @@ -745,6 +724,46 @@ msgstr "Stwórz własny plik PDF" msgid "Free license" msgstr "Wolna licencja" +#~ msgid "Put a book on the shelf!" +#~ msgstr "Wrzuć lekturę na półkę!" + +#~ msgid "Create new shelf" +#~ msgstr "Utwórz nową półkę" + +#~ 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." + +#~ msgid "Put on the shelf!" +#~ msgstr "Wrzuć na półkę" + +#~ msgid "Shelves containing fragment" +#~ msgstr "Półki zawierające fragment" + +#~ 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." + +#~ msgid "Save all shelves" +#~ msgstr "Zapisz półki" + +#~ msgid "Your shelves with books" +#~ msgstr "Twoje półki z lekturami" + +#~ msgid "remove" +#~ msgstr "usuń" + +#~ 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." + +#~ msgid "Create shelf" +#~ msgstr "Utwórz półkę" + #~ msgid "Enter a valid JSON value. Error: %s" #~ msgstr "Wprowadź prawidłową wartość JSON. Błąd: %s" @@ -818,9 +837,6 @@ msgstr "Wolna licencja" #~ msgid "short HTML" #~ msgstr "krótki HTML" -#~ msgid "goes to public domain" -#~ msgstr "trafia do domeny publicznej" - #~ msgid "year of translator's death" #~ msgstr "rok śmierci tłumacza" diff --git a/apps/catalogue/models/book.py b/apps/catalogue/models/book.py index eab6b2de3..e80b8af73 100644 --- a/apps/catalogue/models/book.py +++ b/apps/catalogue/models/book.py @@ -560,6 +560,7 @@ class Book(models.Model): return books_by_author, orphans, books_by_parent _audiences_pl = { + "SP": (1, u"szkoła podstawowa"), "SP1": (1, u"szkoła podstawowa"), "SP2": (1, u"szkoła podstawowa"), "P": (1, u"szkoła podstawowa"), @@ -569,7 +570,7 @@ class Book(models.Model): } def audiences_pl(self): audiences = self.extra_info.get('audiences', []) - audiences = sorted(set([self._audiences_pl[a] for a in audiences])) + audiences = sorted(set([self._audiences_pl.get(a, (99, a)) for a in audiences])) return [a[1] for a in audiences] def choose_fragment(self): diff --git a/apps/catalogue/models/collection.py b/apps/catalogue/models/collection.py index daee48461..8f67f88e0 100644 --- a/apps/catalogue/models/collection.py +++ b/apps/catalogue/models/collection.py @@ -27,3 +27,10 @@ class Collection(models.Model): @models.permalink def get_absolute_url(self): return ("collection", [self.slug]) + + def get_query(self): + slugs = self.book_slugs.split() + # allow URIs + slugs = [slug.rstrip('/').rsplit('/', 1)[-1] if '/' in slug else slug + for slug in slugs] + return models.Q(slug__in=slugs) diff --git a/apps/catalogue/models/tag.py b/apps/catalogue/models/tag.py index f7c5356a7..b0c75fbb4 100644 --- a/apps/catalogue/models/tag.py +++ b/apps/catalogue/models/tag.py @@ -3,9 +3,10 @@ # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. # from django.contrib.auth.models import User +from django.core.exceptions import ValidationError from django.db import models from django.db.models import permalink -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import ugettext, ugettext_lazy as _ from newtagging.models import TagBase @@ -71,6 +72,11 @@ class Tag(TagBase): def get_absolute_url(self): return ('catalogue.views.tagged_object_list', [self.url_chunk]) + def clean(self): + if self.category == 'book' and (self.gazeta_link or self.wiki_link): + raise ValidationError(ugettext( + u"Book tags can't have attached links. Set them directly on the book instead of it's tag.")) + @classmethod @permalink def create_url(cls, category, slug): diff --git a/apps/catalogue/static/jplayer/Jplayer.swf b/apps/catalogue/static/jplayer/Jplayer.swf index 4d50c86ae..85c0ba38e 100644 Binary files a/apps/catalogue/static/jplayer/Jplayer.swf and b/apps/catalogue/static/jplayer/Jplayer.swf differ diff --git a/apps/catalogue/static/jplayer/jplayer.playlist.min.js b/apps/catalogue/static/jplayer/jplayer.playlist.min.js index 42c0e22a1..138ccfa5e 100644 --- a/apps/catalogue/static/jplayer/jplayer.playlist.min.js +++ b/apps/catalogue/static/jplayer/jplayer.playlist.min.js @@ -2,29 +2,33 @@ * Playlist Object for the jPlayer Plugin * http://www.jplayer.org * - * Copyright (c) 2009 - 2011 Happyworm Ltd + * Copyright (c) 2009 - 2013 Happyworm Ltd * Dual licensed under the MIT and GPL licenses. * - http://www.opensource.org/licenses/mit-license.php * - http://www.gnu.org/copyleft/gpl.html * * Author: Mark J Panaghiston - * Version: 2.1.0 (jPlayer 2.1.0) - * Date: 1st September 2011 + * Version: 2.3.0 + * Date: 20th April 2013 + * + * Requires: + * - jQuery 1.7.0+ + * - jPlayer 2.3.0+ */ - -(function(b,f){jPlayerPlaylist=function(a,c,d){var e=this;this.current=0;this.removing=this.shuffled=this.loop=!1;this.cssSelector=b.extend({},this._cssSelector,a);this.options=b.extend(!0,{},this._options,d);this.playlist=[];this.original=[];this._initPlaylist(c);this.cssSelector.title=this.cssSelector.cssSelectorAncestor+" .jp-title";this.cssSelector.playlist=this.cssSelector.cssSelectorAncestor+" .jp-playlist";this.cssSelector.next=this.cssSelector.cssSelectorAncestor+" .jp-next";this.cssSelector.previous= -this.cssSelector.cssSelectorAncestor+" .jp-previous";this.cssSelector.shuffle=this.cssSelector.cssSelectorAncestor+" .jp-shuffle";this.cssSelector.shuffleOff=this.cssSelector.cssSelectorAncestor+" .jp-shuffle-off";this.options.cssSelectorAncestor=this.cssSelector.cssSelectorAncestor;this.options.repeat=function(a){e.loop=a.jPlayer.options.loop};b(this.cssSelector.jPlayer).bind(b.jPlayer.event.ready,function(){e._init()});b(this.cssSelector.jPlayer).bind(b.jPlayer.event.ended,function(){e.next()}); -b(this.cssSelector.jPlayer).bind(b.jPlayer.event.play,function(){b(this).jPlayer("pauseOthers")});b(this.cssSelector.jPlayer).bind(b.jPlayer.event.resize,function(a){a.jPlayer.options.fullScreen?b(e.cssSelector.title).show():b(e.cssSelector.title).hide()});b(this.cssSelector.previous).click(function(){e.previous();b(this).blur();return!1});b(this.cssSelector.next).click(function(){e.next();b(this).blur();return!1});b(this.cssSelector.shuffle).click(function(){e.shuffle(!0);return!1});b(this.cssSelector.shuffleOff).click(function(){e.shuffle(!1); -return!1}).hide();this.options.fullScreen||b(this.cssSelector.title).hide();b(this.cssSelector.playlist+" ul").empty();this._createItemHandlers();b(this.cssSelector.jPlayer).jPlayer(this.options)};jPlayerPlaylist.prototype={_cssSelector:{jPlayer:"#jquery_jplayer_1",cssSelectorAncestor:"#jp_container_1"},_options:{playlistOptions:{autoPlay:!1,loopOnPrevious:!1,shuffleOnLoop:!0,enableRemoveControls:!1,displayTime:"slow",addTime:"fast",removeTime:"fast",shuffleTime:"slow",itemClass:"jp-playlist-item", -freeGroupClass:"jp-free-media",freeItemClass:"jp-playlist-item-free",removeItemClass:"jp-playlist-item-remove"}},option:function(a,b){if(b===f)return this.options.playlistOptions[a];this.options.playlistOptions[a]=b;switch(a){case "enableRemoveControls":this._updateControls();break;case "itemClass":case "freeGroupClass":case "freeItemClass":case "removeItemClass":this._refresh(!0),this._createItemHandlers()}return this},_init:function(){var a=this;this._refresh(function(){a.options.playlistOptions.autoPlay? -a.play(a.current):a.select(a.current)})},_initPlaylist:function(a){this.current=0;this.removing=this.shuffled=!1;this.original=b.extend(!0,[],a);this._originalPlaylist()},_originalPlaylist:function(){var a=this;this.playlist=[];b.each(this.original,function(b){a.playlist[b]=a.original[b]})},_refresh:function(a){var c=this;if(a&&!b.isFunction(a))b(this.cssSelector.playlist+" ul").empty(),b.each(this.playlist,function(a){b(c.cssSelector.playlist+" ul").append(c._createListItem(c.playlist[a]))}),this._updateControls(); -else{var d=b(this.cssSelector.playlist+" ul").children().length?this.options.playlistOptions.displayTime:0;b(this.cssSelector.playlist+" ul").slideUp(d,function(){var d=b(this);b(this).empty();b.each(c.playlist,function(a){d.append(c._createListItem(c.playlist[a]))});c._updateControls();b.isFunction(a)&&a();c.playlist.length?b(this).slideDown(c.options.playlistOptions.displayTime):b(this).show()})}},_createListItem:function(a){var c=this,d="

  • ";d+="×";if(a.free){var e=!0;d+="(";b.each(a,function(a,f){b.jPlayer.prototype.format[a]&&(e?e=!1:d+=" | ",d+=""+a+"")});d+=")"}d+=""+a.title+(a.artist?" ":"")+"";d+="
  • ";return d},_createItemHandlers:function(){var a= -this;b(this.cssSelector.playlist+" a."+this.options.playlistOptions.itemClass).die("click").live("click",function(){var c=b(this).parent().parent().index();a.current!==c?a.play(c):b(a.cssSelector.jPlayer).jPlayer("play");b(this).blur();return!1});b(a.cssSelector.playlist+" a."+this.options.playlistOptions.freeItemClass).die("click").live("click",function(){b(this).parent().parent().find("."+a.options.playlistOptions.itemClass).click();b(this).blur();return!1});b(a.cssSelector.playlist+" a."+this.options.playlistOptions.removeItemClass).die("click").live("click", -function(){var c=b(this).parent().parent().index();a.remove(c);b(this).blur();return!1})},_updateControls:function(){this.options.playlistOptions.enableRemoveControls?b(this.cssSelector.playlist+" ."+this.options.playlistOptions.removeItemClass).show():b(this.cssSelector.playlist+" ."+this.options.playlistOptions.removeItemClass).hide();this.shuffled?(b(this.cssSelector.shuffleOff).show(),b(this.cssSelector.shuffle).hide()):(b(this.cssSelector.shuffleOff).hide(),b(this.cssSelector.shuffle).show())}, -_highlight:function(a){this.playlist.length&&a!==f&&(b(this.cssSelector.playlist+" .jp-playlist-current").removeClass("jp-playlist-current"),b(this.cssSelector.playlist+" li:nth-child("+(a+1)+")").addClass("jp-playlist-current").find(".jp-playlist-item").addClass("jp-playlist-current"),b(this.cssSelector.title+" li").html(this.playlist[a].title+(this.playlist[a].artist?" ":"")))},setPlaylist:function(a){this._initPlaylist(a);this._init()}, -add:function(a,c){b(this.cssSelector.playlist+" ul").append(this._createListItem(a)).find("li:last-child").hide().slideDown(this.options.playlistOptions.addTime);this._updateControls();this.original.push(a);this.playlist.push(a);c?this.play(this.playlist.length-1):this.original.length===1&&this.select(0)},remove:function(a){var c=this;if(a===f)return this._initPlaylist([]),this._refresh(function(){b(c.cssSelector.jPlayer).jPlayer("clearMedia")}),!0;else if(this.removing)return!1;else{a=a<0?c.original.length+ -a:a;if(0<=a&&a1?this.shuffle(!0,!0):this.play(a):a>0&&this.play(a)},previous:function(){var a=this.current-1>=0?this.current-1:this.playlist.length-1;(this.loop&&this.options.playlistOptions.loopOnPrevious||a
    ",d=d+("×");if(a.free){var e=!0,d=d+("(");b.each(a,function(a,f){b.jPlayer.prototype.format[a]&&(e?e=!1:d+=" | ",d+=""+a+"")});d+=")"}d+=""+a.title+(a.artist? +" ":"")+"";return d+="
    "},_createItemHandlers:function(){var a=this;b(this.cssSelector.playlist).off("click","a."+this.options.playlistOptions.itemClass).on("click","a."+this.options.playlistOptions.itemClass,function(){var c=b(this).parent().parent().index();a.current!==c?a.play(c):b(a.cssSelector.jPlayer).jPlayer("play");b(this).blur();return!1});b(this.cssSelector.playlist).off("click","a."+this.options.playlistOptions.freeItemClass).on("click", +"a."+this.options.playlistOptions.freeItemClass,function(){b(this).parent().parent().find("."+a.options.playlistOptions.itemClass).click();b(this).blur();return!1});b(this.cssSelector.playlist).off("click","a."+this.options.playlistOptions.removeItemClass).on("click","a."+this.options.playlistOptions.removeItemClass,function(){var c=b(this).parent().parent().index();a.remove(c);b(this).blur();return!1})},_updateControls:function(){this.options.playlistOptions.enableRemoveControls?b(this.cssSelector.playlist+ +" ."+this.options.playlistOptions.removeItemClass).show():b(this.cssSelector.playlist+" ."+this.options.playlistOptions.removeItemClass).hide();this.shuffled?(b(this.cssSelector.shuffleOff).show(),b(this.cssSelector.shuffle).hide()):(b(this.cssSelector.shuffleOff).hide(),b(this.cssSelector.shuffle).show())},_highlight:function(a){this.playlist.length&&a!==f&&(b(this.cssSelector.playlist+" .jp-playlist-current").removeClass("jp-playlist-current"),b(this.cssSelector.playlist+" li:nth-child("+(a+1)+ +")").addClass("jp-playlist-current").find(".jp-playlist-item").addClass("jp-playlist-current"),b(this.cssSelector.title+" li").html(this.playlist[a].title+(this.playlist[a].artist?" ":"")))},setPlaylist:function(a){this._initPlaylist(a);this._init()},add:function(a,c){b(this.cssSelector.playlist+" ul").append(this._createListItem(a)).find("li:last-child").hide().slideDown(this.options.playlistOptions.addTime);this._updateControls();this.original.push(a); +this.playlist.push(a);c?this.play(this.playlist.length-1):1===this.original.length&&this.select(0)},remove:function(a){var c=this;if(a===f)return this._initPlaylist([]),this._refresh(function(){b(c.cssSelector.jPlayer).jPlayer("clearMedia")}),!0;if(this.removing)return!1;a=0>a?c.original.length+a:a;0<=a&&aa?this.original.length+a:a;0<=a&&aa?this.original.length+a:a;0<=a&&a','','','',''];c=document.createElement('');for(var e=0;e0?100*d/this.status.duration:0;typeof a.seekable==="object"&&a.seekable.length>0?(g=this.status.duration>0?100*a.seekable.end(a.seekable.length-1)/this.status.duration:100,f=100*a.currentTime/a.seekable.end(a.seekable.length-1)):(g=100,f=e);b&&(e=f=d=0);this.status.seekPercent=g;this.status.currentPercentRelative=f;this.status.currentPercentAbsolute=e;this.status.currentTime=d;this.status.readyState=a.readyState;this.status.networkState=a.networkState;this.status.playbackRate= -a.playbackRate;this.status.ended=a.ended},_resetStatus:function(){this.status=b.extend({},this.status,b.jPlayer.prototype.status)},_trigger:function(a,c,d){a=b.Event(a);a.jPlayer={};a.jPlayer.version=b.extend({},this.version);a.jPlayer.options=b.extend(!0,{},this.options);a.jPlayer.status=b.extend(!0,{},this.status);a.jPlayer.html=b.extend(!0,{},this.html);a.jPlayer.flash=b.extend(!0,{},this.flash);if(c)a.jPlayer.error=b.extend({},c);if(d)a.jPlayer.warning=b.extend({},d);this.element.trigger(a)}, -jPlayerFlashEvent:function(a,c){if(a===b.jPlayer.event.ready)if(this.internal.ready){if(this.flash.gate){if(this.status.srcSet){var d=this.status.currentTime,e=this.status.paused;this.setMedia(this.status.media);d>0&&(e?this.pause(d):this.play(d))}this._trigger(b.jPlayer.event.flashreset)}}else this.internal.ready=!0,this.internal.flash.jq.css({width:"0px",height:"0px"}),this.version.flash=c.version,this.version.needFlash!==this.version.flash&&this._error({type:b.jPlayer.error.VERSION,context:this.version.flash, -message:b.jPlayer.errorMsg.VERSION+this.version.flash,hint:b.jPlayer.errorHint.VERSION}),this._trigger(b.jPlayer.event.repeat),this._trigger(a);if(this.flash.gate)switch(a){case b.jPlayer.event.progress:this._getFlashStatus(c);this._updateInterface();this._trigger(a);break;case b.jPlayer.event.timeupdate:this._getFlashStatus(c);this._updateInterface();this._trigger(a);break;case b.jPlayer.event.play:this._seeked();this._updateButtons(!0);this._trigger(a);break;case b.jPlayer.event.pause:this._updateButtons(!1); -this._trigger(a);break;case b.jPlayer.event.ended:this._updateButtons(!1);this._trigger(a);break;case b.jPlayer.event.click:this._trigger(a);break;case b.jPlayer.event.error:this.status.waitForLoad=!0;this.status.waitForPlay=!0;this.status.video&&this.internal.flash.jq.css({width:"0px",height:"0px"});this._validString(this.status.media.poster)&&this.internal.poster.jq.show();this.css.jq.videoPlay.length&&this.status.video&&this.css.jq.videoPlay.show();this.status.video?this._flash_setVideo(this.status.media): -this._flash_setAudio(this.status.media);this._updateButtons(!1);this._error({type:b.jPlayer.error.URL,context:c.src,message:b.jPlayer.errorMsg.URL,hint:b.jPlayer.errorHint.URL});break;case b.jPlayer.event.seeking:this._seeking();this._trigger(a);break;case b.jPlayer.event.seeked:this._seeked();this._trigger(a);break;case b.jPlayer.event.ready:break;default:this._trigger(a)}return!1},_getFlashStatus:function(a){this.status.seekPercent=a.seekPercent;this.status.currentPercentRelative=a.currentPercentRelative; -this.status.currentPercentAbsolute=a.currentPercentAbsolute;this.status.currentTime=a.currentTime;this.status.duration=a.duration;this.status.readyState=4;this.status.networkState=0;this.status.playbackRate=1;this.status.ended=!1},_updateButtons:function(a){if(a!==f)this.status.paused=!a,this.css.jq.play.length&&this.css.jq.pause.length&&(a?(this.css.jq.play.hide(),this.css.jq.pause.show()):(this.css.jq.play.show(),this.css.jq.pause.hide()));this.css.jq.restoreScreen.length&&this.css.jq.fullScreen.length&& -(this.status.noFullScreen?(this.css.jq.fullScreen.hide(),this.css.jq.restoreScreen.hide()):this.options.fullScreen?(this.css.jq.fullScreen.hide(),this.css.jq.restoreScreen.show()):(this.css.jq.fullScreen.show(),this.css.jq.restoreScreen.hide()));this.css.jq.repeat.length&&this.css.jq.repeatOff.length&&(this.options.loop?(this.css.jq.repeat.hide(),this.css.jq.repeatOff.show()):(this.css.jq.repeat.show(),this.css.jq.repeatOff.hide()))},_updateInterface:function(){this.css.jq.seekBar.length&&this.css.jq.seekBar.width(this.status.seekPercent+ -"%");this.css.jq.playBar.length&&this.css.jq.playBar.width(this.status.currentPercentRelative+"%");this.css.jq.currentTime.length&&this.css.jq.currentTime.text(b.jPlayer.convertTime(this.status.currentTime));this.css.jq.duration.length&&this.css.jq.duration.text(b.jPlayer.convertTime(this.status.duration))},_seeking:function(){this.css.jq.seekBar.length&&this.css.jq.seekBar.addClass("jp-seeking-bg")},_seeked:function(){this.css.jq.seekBar.length&&this.css.jq.seekBar.removeClass("jp-seeking-bg")}, -_resetGate:function(){this.html.audio.gate=!1;this.html.video.gate=!1;this.flash.gate=!1},_resetActive:function(){this.html.active=!1;this.flash.active=!1},setMedia:function(a){var c=this,d=!1,e=this.status.media.poster!==a.poster;this._resetMedia();this._resetGate();this._resetActive();b.each(this.formats,function(e,f){var i=c.format[f].media==="video";b.each(c.solutions,function(b,e){if(c[e].support[f]&&c._validString(a[f])){var g=e==="html";i?(g?(c.html.video.gate=!0,c._html_setVideo(a),c.html.active= + +(function(b,f){"function"===typeof define&&define.amd?define(["jquery"],f):b.jQuery?f(b.jQuery):f(b.Zepto)})(this,function(b,f){b.fn.jPlayer=function(a){var c="string"===typeof a,d=Array.prototype.slice.call(arguments,1),e=this;a=!c&&d.length?b.extend.apply(null,[!0,a].concat(d)):a;if(c&&"_"===a.charAt(0))return e;c?this.each(function(){var c=b(this).data("jPlayer"),h=c&&b.isFunction(c[a])?c[a].apply(c,d):c;if(h!==c&&h!==f)return e=h,!1}):this.each(function(){var c=b(this).data("jPlayer");c?c.option(a|| +{}):b(this).data("jPlayer",new b.jPlayer(a,this))});return e};b.jPlayer=function(a,c){if(arguments.length){this.element=b(c);this.options=b.extend(!0,{},this.options,a);var d=this;this.element.bind("remove.jPlayer",function(){d.destroy()});this._init()}};"function"!==typeof b.fn.stop&&(b.fn.stop=function(){});b.jPlayer.emulateMethods="load play pause";b.jPlayer.emulateStatus="src readyState networkState currentTime duration paused ended playbackRate";b.jPlayer.emulateOptions="muted volume";b.jPlayer.reservedEvent= +"ready flashreset resize repeat error warning";b.jPlayer.event={};b.each("ready flashreset resize repeat click error warning loadstart progress suspend abort emptied stalled play pause loadedmetadata loadeddata waiting playing canplay canplaythrough seeking seeked timeupdate ended ratechange durationchange volumechange".split(" "),function(){b.jPlayer.event[this]="jPlayer_"+this});b.jPlayer.htmlEvent="loadstart abort emptied stalled loadedmetadata loadeddata canplay canplaythrough ratechange".split(" "); +b.jPlayer.pause=function(){b.each(b.jPlayer.prototype.instances,function(a,c){c.data("jPlayer").status.srcSet&&c.jPlayer("pause")})};b.jPlayer.timeFormat={showHour:!1,showMin:!0,showSec:!0,padHour:!1,padMin:!0,padSec:!0,sepHour:":",sepMin:":",sepSec:""};var l=function(){this.init()};l.prototype={init:function(){this.options={timeFormat:b.jPlayer.timeFormat}},time:function(a){var c=new Date(1E3*(a&&"number"===typeof a?a:0)),b=c.getUTCHours();a=this.options.timeFormat.showHour?c.getUTCMinutes():c.getUTCMinutes()+ +60*b;c=this.options.timeFormat.showMin?c.getUTCSeconds():c.getUTCSeconds()+60*a;b=this.options.timeFormat.padHour&&10>b?"0"+b:b;a=this.options.timeFormat.padMin&&10>a?"0"+a:a;c=this.options.timeFormat.padSec&&10>c?"0"+c:c;b=""+(this.options.timeFormat.showHour?b+this.options.timeFormat.sepHour:"");b+=this.options.timeFormat.showMin?a+this.options.timeFormat.sepMin:"";return b+=this.options.timeFormat.showSec?c+this.options.timeFormat.sepSec:""}};var m=new l;b.jPlayer.convertTime=function(a){return m.time(a)}; +b.jPlayer.uaBrowser=function(a){a=a.toLowerCase();var b=/(opera)(?:.*version)?[ \/]([\w.]+)/,d=/(msie) ([\w.]+)/,e=/(mozilla)(?:.*? rv:([\w.]+))?/;a=/(webkit)[ \/]([\w.]+)/.exec(a)||b.exec(a)||d.exec(a)||0>a.indexOf("compatible")&&e.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}};b.jPlayer.uaPlatform=function(a){var b=a.toLowerCase(),d=/(android)/,e=/(mobile)/;a=/(ipad|iphone|ipod|android|blackberry|playbook|windows ce|webos)/.exec(b)||[];b=/(ipad|playbook)/.exec(b)||!e.exec(b)&&d.exec(b)|| +[];a[1]&&(a[1]=a[1].replace(/\s/g,"_"));return{platform:a[1]||"",tablet:b[1]||""}};b.jPlayer.browser={};b.jPlayer.platform={};var j=b.jPlayer.uaBrowser(navigator.userAgent);j.browser&&(b.jPlayer.browser[j.browser]=!0,b.jPlayer.browser.version=j.version);j=b.jPlayer.uaPlatform(navigator.userAgent);j.platform&&(b.jPlayer.platform[j.platform]=!0,b.jPlayer.platform.mobile=!j.tablet,b.jPlayer.platform.tablet=!!j.tablet);b.jPlayer.getDocMode=function(){var a;b.jPlayer.browser.msie&&(document.documentMode? +a=document.documentMode:(a=5,document.compatMode&&"CSS1Compat"===document.compatMode&&(a=7)));return a};b.jPlayer.browser.documentMode=b.jPlayer.getDocMode();b.jPlayer.nativeFeatures={init:function(){var a=document,b=a.createElement("video"),d={w3c:"fullscreenEnabled fullscreenElement requestFullscreen exitFullscreen fullscreenchange fullscreenerror".split(" "),moz:"mozFullScreenEnabled mozFullScreenElement mozRequestFullScreen mozCancelFullScreen mozfullscreenchange mozfullscreenerror".split(" "), +webkit:" webkitCurrentFullScreenElement webkitRequestFullScreen webkitCancelFullScreen webkitfullscreenchange ".split(" "),webkitVideo:"webkitSupportsFullscreen webkitDisplayingFullscreen webkitEnterFullscreen webkitExitFullscreen ".split(" ")},e=["w3c","moz","webkit","webkitVideo"],g,h;this.fullscreen=b={support:{w3c:!!a[d.w3c[0]],moz:!!a[d.moz[0]],webkit:"function"===typeof a[d.webkit[3]],webkitVideo:"function"===typeof b[d.webkitVideo[2]]},used:{}};g=0;for(h=e.length;g','','','',''];c=document.createElement(''); +for(var e=0;e0?this._html_load():clearTimeout(this.internal.htmlDlyCmdId);this.htmlElement.media.pause();if(!isNaN(a))try{this.htmlElement.media.currentTime=a}catch(d){this.internal.htmlDlyCmdId=setTimeout(function(){b.pause(a)},100);return}a>0&&this._html_checkWaitForPlay()},_html_playHead:function(a){var b=this;this._html_load();try{if(typeof this.htmlElement.media.seekable==="object"&&this.htmlElement.media.seekable.length>0)this.htmlElement.media.currentTime= -a*this.htmlElement.media.seekable.end(this.htmlElement.media.seekable.length-1)/100;else if(this.htmlElement.media.duration>0&&!isNaN(this.htmlElement.media.duration))this.htmlElement.media.currentTime=a*this.htmlElement.media.duration/100;else throw"e";}catch(d){this.internal.htmlDlyCmdId=setTimeout(function(){b.playHead(a)},100);return}this.status.waitForLoad||this._html_checkWaitForPlay()},_html_checkWaitForPlay:function(){if(this.status.waitForPlay)this.status.waitForPlay=!1,this.css.jq.videoPlay.length&& -this.css.jq.videoPlay.hide(),this.status.video&&(this.internal.poster.jq.hide(),this.internal.video.jq.css({width:this.status.width,height:this.status.height}))},_html_volume:function(a){if(this.html.audio.available)this.htmlElement.audio.volume=a;if(this.html.video.available)this.htmlElement.video.volume=a},_html_mute:function(a){if(this.html.audio.available)this.htmlElement.audio.muted=a;if(this.html.video.available)this.htmlElement.video.muted=a},_flash_setAudio:function(a){var c=this;try{if(b.each(this.formats, -function(b,d){if(c.flash.support[d]&&a[d]){switch(d){case "m4a":case "fla":c._getMovie().fl_setAudio_m4a(a[d]);break;case "mp3":c._getMovie().fl_setAudio_mp3(a[d])}c.status.src=a[d];c.status.format[d]=!0;c.status.formatType=d;return!1}}),this.options.preload==="auto")this._flash_load(),this.status.waitForLoad=!1}catch(d){this._flashError(d)}},_flash_setVideo:function(a){var c=this;try{if(b.each(this.formats,function(b,d){if(c.flash.support[d]&&a[d]){switch(d){case "m4v":case "flv":c._getMovie().fl_setVideo_m4v(a[d])}c.status.src= -a[d];c.status.format[d]=!0;c.status.formatType=d;return!1}}),this.options.preload==="auto")this._flash_load(),this.status.waitForLoad=!1}catch(d){this._flashError(d)}},_flash_resetMedia:function(){this.internal.flash.jq.css({width:"0px",height:"0px"});this._flash_pause(NaN)},_flash_clearMedia:function(){try{this._getMovie().fl_clearMedia()}catch(a){this._flashError(a)}},_flash_load:function(){try{this._getMovie().fl_load()}catch(a){this._flashError(a)}this.status.waitForLoad=!1},_flash_play:function(a){try{this._getMovie().fl_play(a)}catch(b){this._flashError(b)}this.status.waitForLoad= -!1;this._flash_checkWaitForPlay()},_flash_pause:function(a){try{this._getMovie().fl_pause(a)}catch(b){this._flashError(b)}if(a>0)this.status.waitForLoad=!1,this._flash_checkWaitForPlay()},_flash_playHead:function(a){try{this._getMovie().fl_play_head(a)}catch(b){this._flashError(b)}this.status.waitForLoad||this._flash_checkWaitForPlay()},_flash_checkWaitForPlay:function(){if(this.status.waitForPlay)this.status.waitForPlay=!1,this.css.jq.videoPlay.length&&this.css.jq.videoPlay.hide(),this.status.video&& -(this.internal.poster.jq.hide(),this.internal.flash.jq.css({width:this.status.width,height:this.status.height}))},_flash_volume:function(a){try{this._getMovie().fl_volume(a)}catch(b){this._flashError(b)}},_flash_mute:function(a){try{this._getMovie().fl_mute(a)}catch(b){this._flashError(b)}},_getMovie:function(){return document[this.internal.flash.id]},_checkForFlash:function(a){var b=!1,d;if(window.ActiveXObject)try{new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+a),b=!0}catch(e){}else navigator.plugins&& -navigator.mimeTypes.length>0&&(d=navigator.plugins["Shockwave Flash"])&&navigator.plugins["Shockwave Flash"].description.replace(/.*\s(\d+\.\d+).*/,"$1")>=a&&(b=!0);return b},_validString:function(a){return a&&typeof a==="string"},_limitValue:function(a,b,d){return ad?d:a},_urlNotSetError:function(a){this._error({type:b.jPlayer.error.URL_NOT_SET,context:a,message:b.jPlayer.errorMsg.URL_NOT_SET,hint:b.jPlayer.errorHint.URL_NOT_SET})},_flashError:function(a){var c;c=this.internal.ready?"FLASH_DISABLED": -"FLASH";this._error({type:b.jPlayer.error[c],context:this.internal.flash.swf,message:b.jPlayer.errorMsg[c]+a.message,hint:b.jPlayer.errorHint[c]});this.internal.flash.jq.css({width:"1px",height:"1px"})},_error:function(a){this._trigger(b.jPlayer.event.error,a);this.options.errorAlerts&&this._alert("Error!"+(a.message?"\n\n"+a.message:"")+(a.hint?"\n\n"+a.hint:"")+"\n\nContext: "+a.context)},_warning:function(a){this._trigger(b.jPlayer.event.warning,f,a);this.options.warningAlerts&&this._alert("Warning!"+ -(a.message?"\n\n"+a.message:"")+(a.hint?"\n\n"+a.hint:"")+"\n\nContext: "+a.context)},_alert:function(a){alert("jPlayer "+this.version.script+" : id='"+this.internal.self.id+"' : "+a)},_emulateHtmlBridge:function(){var a=this;b.each(b.jPlayer.emulateMethods.split(/\s+/g),function(b,d){a.internal.domNode[d]=function(b){a[d](b)}});b.each(b.jPlayer.event,function(c,d){var e=!0;b.each(b.jPlayer.reservedEvent.split(/\s+/g),function(a,b){if(b===c)return e=!1});e&&a.element.bind(d+".jPlayer.jPlayerHtml", -function(){a._emulateHtmlUpdate();var b=document.createEvent("Event");b.initEvent(c,!1,!0);a.internal.domNode.dispatchEvent(b)})})},_emulateHtmlUpdate:function(){var a=this;b.each(b.jPlayer.emulateStatus.split(/\s+/g),function(b,d){a.internal.domNode[d]=a.status[d]});b.each(b.jPlayer.emulateOptions.split(/\s+/g),function(b,d){a.internal.domNode[d]=a.options[d]})},_destroyHtmlBridge:function(){var a=this;this.element.unbind(".jPlayerHtml");b.each((b.jPlayer.emulateMethods+" "+b.jPlayer.emulateStatus+ -" "+b.jPlayer.emulateOptions).split(/\s+/g),function(b,d){delete a.internal.domNode[d]})}};b.jPlayer.error={FLASH:"e_flash",FLASH_DISABLED:"e_flash_disabled",NO_SOLUTION:"e_no_solution",NO_SUPPORT:"e_no_support",URL:"e_url",URL_NOT_SET:"e_url_not_set",VERSION:"e_version"};b.jPlayer.errorMsg={FLASH:"jPlayer's Flash fallback is not configured correctly, or a command was issued before the jPlayer Ready event. Details: ",FLASH_DISABLED:"jPlayer's Flash fallback has been disabled by the browser due to the CSS rules you have used. Details: ", -NO_SOLUTION:"No solution can be found by jPlayer in this browser. Neither HTML nor Flash can be used.",NO_SUPPORT:"It is not possible to play any media format provided in setMedia() on this browser using your current options.",URL:"Media URL could not be loaded.",URL_NOT_SET:"Attempt to issue media playback commands, while no media url is set.",VERSION:"jPlayer "+b.jPlayer.prototype.version.script+" needs Jplayer.swf version "+b.jPlayer.prototype.version.needFlash+" but found "};b.jPlayer.errorHint= -{FLASH:"Check your swfPath option and that Jplayer.swf is there.",FLASH_DISABLED:"Check that you have not display:none; the jPlayer entity or any ancestor.",NO_SOLUTION:"Review the jPlayer options: support and supplied.",NO_SUPPORT:"Video or audio formats defined in the supplied option are missing.",URL:"Check media URL is valid.",URL_NOT_SET:"Use setMedia() to set the media URL.",VERSION:"Update jPlayer files."};b.jPlayer.warning={CSS_SELECTOR_COUNT:"e_css_selector_count",CSS_SELECTOR_METHOD:"e_css_selector_method", -CSS_SELECTOR_STRING:"e_css_selector_string",OPTION_KEY:"e_option_key"};b.jPlayer.warningMsg={CSS_SELECTOR_COUNT:"The number of css selectors found did not equal one: ",CSS_SELECTOR_METHOD:"The methodName given in jPlayer('cssSelector') is not a valid jPlayer method.",CSS_SELECTOR_STRING:"The methodCssSelector given in jPlayer('cssSelector') is not a String or is empty.",OPTION_KEY:"The option requested in jPlayer('option') is undefined."};b.jPlayer.warningHint={CSS_SELECTOR_COUNT:"Check your css selector and the ancestor.", -CSS_SELECTOR_METHOD:"Check your method name.",CSS_SELECTOR_STRING:"Check your css selector is a string.",OPTION_KEY:"Check your option name."}})(jQuery); \ No newline at end of file +this._flash_resetMedia()},clearMedia:function(){this._resetMedia();this.html.active?this._html_clearMedia():this.flash.active&&this._flash_clearMedia();this._resetGate();this._resetActive()},load:function(){this.status.srcSet?this.html.active?this._html_load():this.flash.active&&this._flash_load():this._urlNotSetError("load")},focus:function(){this.options.keyEnabled&&(b.jPlayer.focus=this)},play:function(a){a="number"===typeof a?a:NaN;this.status.srcSet?(this.focus(),this.html.active?this._html_play(a): +this.flash.active&&this._flash_play(a)):this._urlNotSetError("play")},videoPlay:function(){this.play()},pause:function(a){a="number"===typeof a?a:NaN;this.status.srcSet?this.html.active?this._html_pause(a):this.flash.active&&this._flash_pause(a):this._urlNotSetError("pause")},pauseOthers:function(){var a=this;b.each(this.instances,function(b,d){a.element!==d&&d.data("jPlayer").status.srcSet&&d.jPlayer("pause")})},stop:function(){this.status.srcSet?this.html.active?this._html_pause(0):this.flash.active&& +this._flash_pause(0):this._urlNotSetError("stop")},playHead:function(a){a=this._limitValue(a,0,100);this.status.srcSet?this.html.active?this._html_playHead(a):this.flash.active&&this._flash_playHead(a):this._urlNotSetError("playHead")},_muted:function(a){this.options.muted=a;this.html.used&&this._html_mute(a);this.flash.used&&this._flash_mute(a);!this.html.video.gate&&!this.html.audio.gate&&(this._updateMute(a),this._updateVolume(this.options.volume),this._trigger(b.jPlayer.event.volumechange))}, +mute:function(a){a=a===f?!0:!!a;this._muted(a)},unmute:function(a){a=a===f?!0:!!a;this._muted(!a)},_updateMute:function(a){a===f&&(a=this.options.muted);this.css.jq.mute.length&&this.css.jq.unmute.length&&(this.status.noVolume?(this.css.jq.mute.hide(),this.css.jq.unmute.hide()):a?(this.css.jq.mute.hide(),this.css.jq.unmute.show()):(this.css.jq.mute.show(),this.css.jq.unmute.hide()))},volume:function(a){a=this._limitValue(a,0,1);this.options.volume=a;this.html.used&&this._html_volume(a);this.flash.used&& +this._flash_volume(a);!this.html.video.gate&&!this.html.audio.gate&&(this._updateVolume(a),this._trigger(b.jPlayer.event.volumechange))},volumeBar:function(a){if(this.css.jq.volumeBar.length){var c=b(a.currentTarget),d=c.offset(),e=a.pageX-d.left,g=c.width();a=c.height()-a.pageY+d.top;c=c.height();this.options.verticalVolume?this.volume(a/c):this.volume(e/g)}this.options.muted&&this._muted(!1)},volumeBarValue:function(){},_updateVolume:function(a){a===f&&(a=this.options.volume);a=this.options.muted? +0:a;this.status.noVolume?(this.css.jq.volumeBar.length&&this.css.jq.volumeBar.hide(),this.css.jq.volumeBarValue.length&&this.css.jq.volumeBarValue.hide(),this.css.jq.volumeMax.length&&this.css.jq.volumeMax.hide()):(this.css.jq.volumeBar.length&&this.css.jq.volumeBar.show(),this.css.jq.volumeBarValue.length&&(this.css.jq.volumeBarValue.show(),this.css.jq.volumeBarValue[this.options.verticalVolume?"height":"width"](100*a+"%")),this.css.jq.volumeMax.length&&this.css.jq.volumeMax.show())},volumeMax:function(){this.volume(1); +this.options.muted&&this._muted(!1)},_cssSelectorAncestor:function(a){var c=this;this.options.cssSelectorAncestor=a;this._removeUiClass();this.ancestorJq=a?b(a):[];a&&1!==this.ancestorJq.length&&this._warning({type:b.jPlayer.warning.CSS_SELECTOR_COUNT,context:a,message:b.jPlayer.warningMsg.CSS_SELECTOR_COUNT+this.ancestorJq.length+" found for cssSelectorAncestor.",hint:b.jPlayer.warningHint.CSS_SELECTOR_COUNT});this._addUiClass();b.each(this.options.cssSelector,function(a,b){c._cssSelector(a,b)}); +this._updateInterface();this._updateButtons();this._updateAutohide();this._updateVolume();this._updateMute()},_cssSelector:function(a,c){var d=this;"string"===typeof c?b.jPlayer.prototype.options.cssSelector[a]?(this.css.jq[a]&&this.css.jq[a].length&&this.css.jq[a].unbind(".jPlayer"),this.options.cssSelector[a]=c,this.css.cs[a]=this.options.cssSelectorAncestor+" "+c,this.css.jq[a]=c?b(this.css.cs[a]):[],this.css.jq[a].length&&this.css.jq[a].bind("click.jPlayer",function(c){c.preventDefault();d[a](c); +b(this).blur()}),c&&1!==this.css.jq[a].length&&this._warning({type:b.jPlayer.warning.CSS_SELECTOR_COUNT,context:this.css.cs[a],message:b.jPlayer.warningMsg.CSS_SELECTOR_COUNT+this.css.jq[a].length+" found for "+a+" method.",hint:b.jPlayer.warningHint.CSS_SELECTOR_COUNT})):this._warning({type:b.jPlayer.warning.CSS_SELECTOR_METHOD,context:a,message:b.jPlayer.warningMsg.CSS_SELECTOR_METHOD,hint:b.jPlayer.warningHint.CSS_SELECTOR_METHOD}):this._warning({type:b.jPlayer.warning.CSS_SELECTOR_STRING,context:c, +message:b.jPlayer.warningMsg.CSS_SELECTOR_STRING,hint:b.jPlayer.warningHint.CSS_SELECTOR_STRING})},seekBar:function(a){if(this.css.jq.seekBar.length){var c=b(a.currentTarget),d=c.offset();a=a.pageX-d.left;c=c.width();this.playHead(100*a/c)}},playBar:function(){},repeat:function(){this._loop(!0)},repeatOff:function(){this._loop(!1)},_loop:function(a){this.options.loop!==a&&(this.options.loop=a,this._updateButtons(),this._trigger(b.jPlayer.event.repeat))},currentTime:function(){},duration:function(){}, +gui:function(){},noSolution:function(){},option:function(a,c){var d=a;if(0===arguments.length)return b.extend(!0,{},this.options);if("string"===typeof a){var e=a.split(".");if(c===f){for(var d=b.extend(!0,{},this.options),g=0;g=a&&(b=!0);return b},_validString:function(a){return a&&"string"===typeof a},_limitValue:function(a,b,d){return ad?d:a},_urlNotSetError:function(a){this._error({type:b.jPlayer.error.URL_NOT_SET,context:a,message:b.jPlayer.errorMsg.URL_NOT_SET,hint:b.jPlayer.errorHint.URL_NOT_SET})},_flashError:function(a){var c;c=this.internal.ready?"FLASH_DISABLED":"FLASH";this._error({type:b.jPlayer.error[c],context:this.internal.flash.swf, +message:b.jPlayer.errorMsg[c]+a.message,hint:b.jPlayer.errorHint[c]});this.internal.flash.jq.css({width:"1px",height:"1px"})},_error:function(a){this._trigger(b.jPlayer.event.error,a);this.options.errorAlerts&&this._alert("Error!"+(a.message?"\n\n"+a.message:"")+(a.hint?"\n\n"+a.hint:"")+"\n\nContext: "+a.context)},_warning:function(a){this._trigger(b.jPlayer.event.warning,f,a);this.options.warningAlerts&&this._alert("Warning!"+(a.message?"\n\n"+a.message:"")+(a.hint?"\n\n"+a.hint:"")+"\n\nContext: "+ +a.context)},_alert:function(a){alert("jPlayer "+this.version.script+" : id='"+this.internal.self.id+"' : "+a)},_emulateHtmlBridge:function(){var a=this;b.each(b.jPlayer.emulateMethods.split(/\s+/g),function(b,d){a.internal.domNode[d]=function(b){a[d](b)}});b.each(b.jPlayer.event,function(c,d){var e=!0;b.each(b.jPlayer.reservedEvent.split(/\s+/g),function(a,b){if(b===c)return e=!1});e&&a.element.bind(d+".jPlayer.jPlayerHtml",function(){a._emulateHtmlUpdate();var b=document.createEvent("Event");b.initEvent(c, +!1,!0);a.internal.domNode.dispatchEvent(b)})})},_emulateHtmlUpdate:function(){var a=this;b.each(b.jPlayer.emulateStatus.split(/\s+/g),function(b,d){a.internal.domNode[d]=a.status[d]});b.each(b.jPlayer.emulateOptions.split(/\s+/g),function(b,d){a.internal.domNode[d]=a.options[d]})},_destroyHtmlBridge:function(){var a=this;this.element.unbind(".jPlayerHtml");b.each((b.jPlayer.emulateMethods+" "+b.jPlayer.emulateStatus+" "+b.jPlayer.emulateOptions).split(/\s+/g),function(b,d){delete a.internal.domNode[d]})}}; +b.jPlayer.error={FLASH:"e_flash",FLASH_DISABLED:"e_flash_disabled",NO_SOLUTION:"e_no_solution",NO_SUPPORT:"e_no_support",URL:"e_url",URL_NOT_SET:"e_url_not_set",VERSION:"e_version"};b.jPlayer.errorMsg={FLASH:"jPlayer's Flash fallback is not configured correctly, or a command was issued before the jPlayer Ready event. Details: ",FLASH_DISABLED:"jPlayer's Flash fallback has been disabled by the browser due to the CSS rules you have used. Details: ",NO_SOLUTION:"No solution can be found by jPlayer in this browser. Neither HTML nor Flash can be used.", +NO_SUPPORT:"It is not possible to play any media format provided in setMedia() on this browser using your current options.",URL:"Media URL could not be loaded.",URL_NOT_SET:"Attempt to issue media playback commands, while no media url is set.",VERSION:"jPlayer "+b.jPlayer.prototype.version.script+" needs Jplayer.swf version "+b.jPlayer.prototype.version.needFlash+" but found "};b.jPlayer.errorHint={FLASH:"Check your swfPath option and that Jplayer.swf is there.",FLASH_DISABLED:"Check that you have not display:none; the jPlayer entity or any ancestor.", +NO_SOLUTION:"Review the jPlayer options: support and supplied.",NO_SUPPORT:"Video or audio formats defined in the supplied option are missing.",URL:"Check media URL is valid.",URL_NOT_SET:"Use setMedia() to set the media URL.",VERSION:"Update jPlayer files."};b.jPlayer.warning={CSS_SELECTOR_COUNT:"e_css_selector_count",CSS_SELECTOR_METHOD:"e_css_selector_method",CSS_SELECTOR_STRING:"e_css_selector_string",OPTION_KEY:"e_option_key"};b.jPlayer.warningMsg={CSS_SELECTOR_COUNT:"The number of css selectors found did not equal one: ", +CSS_SELECTOR_METHOD:"The methodName given in jPlayer('cssSelector') is not a valid jPlayer method.",CSS_SELECTOR_STRING:"The methodCssSelector given in jPlayer('cssSelector') is not a String or is empty.",OPTION_KEY:"The option requested in jPlayer('option') is undefined."};b.jPlayer.warningHint={CSS_SELECTOR_COUNT:"Check your css selector and the ancestor.",CSS_SELECTOR_METHOD:"Check your method name.",CSS_SELECTOR_STRING:"Check your css selector is a string.",OPTION_KEY:"Check your option name."}}); \ No newline at end of file diff --git a/apps/catalogue/templates/catalogue/book_text.html b/apps/catalogue/templates/catalogue/book_text.html index aa2b39298..362af1b54 100644 --- a/apps/catalogue/templates/catalogue/book_text.html +++ b/apps/catalogue/templates/catalogue/book_text.html @@ -17,7 +17,6 @@ - {% include "annoy.html" %}