@permalink
def get_absolute_url(self):
- return ('catalogue.views.tagged_book_list', [self.slug])
+ return ('catalogue.views.tagged_object_list', [self.slug])
class Meta:
ordering = ('sort_key',)
from slughifi import slughifi
import dcparser
from markupstring import MarkupString
- import re
# Read book metadata
book_info = dcparser.parse(xml_file)
for fragment in closed_fragments.values():
text = fragment.to_string()
short_text = ''
- if (len(re.sub(r'</?.*?>', '', text)) > 240):
+ if (len(MarkupString(text)) > 240):
short_text = MarkupString(text)[:160]
new_fragment = Fragment(text=text, short_text=short_text, anchor=fragment.id, book=book)
pass
if len(tag_slugs) > 0:
- return reverse('tagged_book_list', kwargs={'tags': '/'.join(tag_slugs)})
+ return reverse('tagged_object_list', kwargs={'tags': '/'.join(tag_slugs)})
else:
return reverse('main_page')
url(r'^lektura/(?P<slug>[a-zA-Z0-9-]+)/$', 'book_detail'),
url(r'^tags/$', 'tags_starting_with', name='hint'),
url(r'^szukaj/$', 'search', name='search'),
- url(r'^(?P<tags>[a-zA-Z-/]+)/$', 'tagged_book_list', name='tagged_book_list'),
+ url(r'^(?P<tags>[a-zA-Z-/]+)/$', 'tagged_object_list', name='tagged_object_list'),
)
from django.utils.functional import Promise
from django.utils.encoding import force_unicode
-from newtagging.views import tagged_object_list
from catalogue import models
from catalogue import forms
from catalogue.utils import split_tags
+from newtagging import views as newtagging_views
class LazyEncoder(simplejson.JSONEncoder):
return HttpResponseRedirect(reverse('catalogue.views.main_page'))
else:
tag_list.append(tag)
- return HttpResponseRedirect(reverse('catalogue.views.tagged_book_list',
+ return HttpResponseRedirect(reverse('catalogue.views.tagged_object_list',
kwargs={'tags': '/'.join(tag.slug for tag in tag_list)}
))
context_instance=RequestContext(request))
-def tagged_book_list(request, tags=''):
+def tagged_object_list(request, tags=''):
try:
tags = models.Tag.get_tag_list(tags)
except models.Tag.DoesNotExist:
related_tags = models.Tag.objects.related_for_model(tags, model, counts=True, extra={'where': [extra_where]})
categories = split_tags(related_tags)
- return tagged_object_list(
+ return newtagging_views.tagged_object_list(
request,
tag_model=models.Tag,
queryset_or_model=model,
tags=tags,
- template_name='catalogue/tagged_book_list.html',
+ template_name='catalogue/tagged_object_list.html',
extra_context = {'categories': categories },
)
for et in ends[e]: outbuf+= et
return MarkupString(outbuf)
+ def __len__(self):
+ return len(self.raw)
+
+++ /dev/null
-{% extends "base.html" %}
-{% load catalogue_tags pagination_tags %}
-
-{% block title %}{% title_from_tags tags %} w WolneLektury.pl{% endblock %}
-
-{% block bodyid %}books{% endblock %}
-
-{% block extrahead %}
- <script type="text/javascript">
- // <![CDATA[
- $(function() {
- // $('#tags-list ul').addClass('dontsplit');
- // $('#tags-list').columnize({width: 180});
-
- $('#books-list .book').hover(
- function() { $(this).css({background: '#F3F3F3', cursor: 'pointer'}); },
- function() { $(this).css({background: '#FFF'}); }
- ).click(function() {
- location.href = $('h2 a', this).attr('href');
- });
-
- $('#toggle-description').hover(
- function() { $(this).css({background: '#F3F3F3', cursor: 'pointer'}); },
- function() { $(this).css({background: '#EEE'}); }
- ).click(function() {
- if ($('#description').hasClass('hidden')) {
- $('#description').slideDown('fast').removeClass('hidden');
- $('p', this).html('Zwiń opis ▲');
- } else {
- $('#description').slideUp('fast').addClass('hidden');
- $('p', this).html('Rozwiń opis ▼');
- }
- });
-
- var target = $('#set-window div.target');
-
- $('#set-window').jqm({
- ajax: '@href',
- target: target[0],
- overlay: 60,
- trigger: 'a.jqm-trigger',
- onShow: function(hash) {
- var offset = $(hash.t).offset();
- target.html('<p><img src="/media/img/indicator.gif" /> Ładowanie</p>');
- hash.w.css({position: 'absolute', left: offset.left, top: offset.top}).show() },
- onLoad: function(hash) {
- $('form', hash.w).ajaxForm({
- target: target,
- success: function() { setTimeout(function() { $('#set-window').jqmHide() }, 1000) }
- });
- }});
- });
- // ]]>
- </script>
-{% endblock %}
-
-{% block body %}
- <h1>{% title_from_tags tags %}</h1>
- {% breadcrumbs tags %}
-
- {% autopaginate object_list 10 %}
- <div id="books-list">
- {% with tags|last as last_tag %}
- {% if last_tag.has_description %}
- <div id="description">
- {{ last_tag.description|safe }}
- </div>
- <div id="toggle-description"><p>Zwiń opis ▲</p></div>
- {% endif %}
- {% endwith %}
- <ol>
- {% for book in object_list %}
- <li>{{ book.short_html }}</li>
- {% endfor %}
- </ol>
- {% paginate %}
- </div>
- <div id="tags-list">
- <div class="dontsplit">
- {% if categories.set %}
- <h2>Zestawy</h2>
- <ul>
- {% for set in categories.set %}
- <li><a href="{% catalogue_url tags set %}">{{ set }} ({{ set.count }})</a></li>
- {% endfor %}
- </ul>
- {% endif %}
- </div>
- <div class="dontsplit">
- {% if categories.author %}
- <h2>Autorzy</h2>
- <ul>
- {% for author in categories.author %}
- <li><a href="{% catalogue_url tags author %}">{{ author }} ({{ author.count }})</a></li>
- {% endfor %}
- </ul>
- {% endif %}
- </div>
- <div class="dontsplit">
- {% if categories.epoch %}
- <h2>Epoki</h2>
- <ul>
- {% for epoch in categories.epoch %}
- <li><a href="{% catalogue_url tags epoch %}">{{ epoch }} ({{ epoch.count }})</a></li>
- {% endfor %}
- </ul>
- {% endif %}
- </div>
- <div class="dontsplit">
- {% if categories.kind %}
- <h2>Rodzaje</h2>
- <ul>
- {% for kind in categories.kind %}
- <li><a href="{% catalogue_url tags kind %}">{{ kind }} ({{ kind.count }})</a></li>
- {% endfor %}
- </ul>
- {% endif %}
- </div>
- <div class="dontsplit">
- {% if categories.genre %}
- <h2>Gatunki literackie</h2>
- <ul>
- {% for genre in categories.genre %}
- <li><a href="{% catalogue_url tags genre %}">{{ genre }} ({{ genre.count }})</a></li>
- {% endfor %}
- </ul>
- {% endif %}
- </div>
- <div class="dontsplit">
- {% if categories.theme %}
- <h2>Motywy</h2>
- <ul>
- {% for theme in categories.theme %}
- <li><a href="{% catalogue_url tags theme %}">{{ theme }} ({{ theme.count }})</a></li>
- {% endfor %}
- </ul>
- {% endif %}
- </div>
- </div>
- <div id="set-window">
- <div class="header"><a href="#" class="jqmClose">Zamknij</a></div>
- <div class="target">
- <p><img src="/media/img/indicator.gif" alt="*"/> Ładowanie</p>
- </div>
- </div>
-{% endblock %}
\ No newline at end of file
--- /dev/null
+{% extends "base.html" %}
+{% load catalogue_tags pagination_tags %}
+
+{% block title %}{% title_from_tags tags %} w WolneLektury.pl{% endblock %}
+
+{% block bodyid %}books{% endblock %}
+
+{% block extrahead %}
+ <script type="text/javascript">
+ // <![CDATA[
+ $(function() {
+ // $('#tags-list ul').addClass('dontsplit');
+ // $('#tags-list').columnize({width: 180});
+
+ $('#books-list .book').hover(
+ function() { $(this).css({background: '#F3F3F3', cursor: 'pointer'}); },
+ function() { $(this).css({background: '#FFF'}); }
+ ).click(function() {
+ location.href = $('h2 a', this).attr('href');
+ });
+
+ $('#toggle-description').hover(
+ function() { $(this).css({background: '#F3F3F3', cursor: 'pointer'}); },
+ function() { $(this).css({background: '#EEE'}); }
+ ).click(function() {
+ if ($('#description').hasClass('hidden')) {
+ $('#description').slideDown('fast').removeClass('hidden');
+ $('p', this).html('Zwiń opis ▲');
+ } else {
+ $('#description').slideUp('fast').addClass('hidden');
+ $('p', this).html('Rozwiń opis ▼');
+ }
+ });
+
+ var target = $('#set-window div.target');
+
+ $('#set-window').jqm({
+ ajax: '@href',
+ target: target[0],
+ overlay: 60,
+ trigger: 'a.jqm-trigger',
+ onShow: function(hash) {
+ var offset = $(hash.t).offset();
+ target.html('<p><img src="/media/img/indicator.gif" /> Ładowanie</p>');
+ hash.w.css({position: 'absolute', left: offset.left, top: offset.top}).show() },
+ onLoad: function(hash) {
+ $('form', hash.w).ajaxForm({
+ target: target,
+ success: function() { setTimeout(function() { $('#set-window').jqmHide() }, 1000) }
+ });
+ }});
+ });
+ // ]]>
+ </script>
+{% endblock %}
+
+{% block body %}
+ <h1>{% title_from_tags tags %}</h1>
+ {% breadcrumbs tags %}
+
+ {% autopaginate object_list 10 %}
+ <div id="books-list">
+ {% with tags|last as last_tag %}
+ {% if last_tag.has_description %}
+ <div id="description">
+ {{ last_tag.description|safe }}
+ </div>
+ <div id="toggle-description"><p>Zwiń opis ▲</p></div>
+ {% endif %}
+ {% endwith %}
+ <ol>
+ {% for book in object_list %}
+ <li>{{ book.short_html }}</li>
+ {% endfor %}
+ </ol>
+ {% paginate %}
+ </div>
+ <div id="tags-list">
+ <div class="dontsplit">
+ {% if categories.set %}
+ <h2>Zestawy</h2>
+ <ul>
+ {% for set in categories.set %}
+ <li><a href="{% catalogue_url tags set %}">{{ set }} ({{ set.count }})</a></li>
+ {% endfor %}
+ </ul>
+ {% endif %}
+ </div>
+ <div class="dontsplit">
+ {% if categories.author %}
+ <h2>Autorzy</h2>
+ <ul>
+ {% for author in categories.author %}
+ <li><a href="{% catalogue_url tags author %}">{{ author }} ({{ author.count }})</a></li>
+ {% endfor %}
+ </ul>
+ {% endif %}
+ </div>
+ <div class="dontsplit">
+ {% if categories.epoch %}
+ <h2>Epoki</h2>
+ <ul>
+ {% for epoch in categories.epoch %}
+ <li><a href="{% catalogue_url tags epoch %}">{{ epoch }} ({{ epoch.count }})</a></li>
+ {% endfor %}
+ </ul>
+ {% endif %}
+ </div>
+ <div class="dontsplit">
+ {% if categories.kind %}
+ <h2>Rodzaje</h2>
+ <ul>
+ {% for kind in categories.kind %}
+ <li><a href="{% catalogue_url tags kind %}">{{ kind }} ({{ kind.count }})</a></li>
+ {% endfor %}
+ </ul>
+ {% endif %}
+ </div>
+ <div class="dontsplit">
+ {% if categories.genre %}
+ <h2>Gatunki literackie</h2>
+ <ul>
+ {% for genre in categories.genre %}
+ <li><a href="{% catalogue_url tags genre %}">{{ genre }} ({{ genre.count }})</a></li>
+ {% endfor %}
+ </ul>
+ {% endif %}
+ </div>
+ <div class="dontsplit">
+ {% if categories.theme %}
+ <h2>Motywy</h2>
+ <ul>
+ {% for theme in categories.theme %}
+ <li><a href="{% catalogue_url tags theme %}">{{ theme }} ({{ theme.count }})</a></li>
+ {% endfor %}
+ </ul>
+ {% endif %}
+ </div>
+ </div>
+ <div id="set-window">
+ <div class="header"><a href="#" class="jqmClose">Zamknij</a></div>
+ <div class="target">
+ <p><img src="/media/img/indicator.gif" alt="*"/> Ładowanie</p>
+ </div>
+ </div>
+{% endblock %}
\ No newline at end of file