Renamed tagged_book_list to tagged_object_list.
authorMarek Stępniowski <marek@stepniowski.com>
Fri, 5 Sep 2008 08:41:50 +0000 (10:41 +0200)
committerMarek Stępniowski <marek@stepniowski.com>
Fri, 5 Sep 2008 08:41:50 +0000 (10:41 +0200)
catalogue/models.py
catalogue/templatetags/catalogue_tags.py
catalogue/urls.py
catalogue/views.py
lib/markupstring.py
templates/catalogue/tagged_book_list.html [deleted file]
templates/catalogue/tagged_object_list.html [new file with mode: 0644]

index c82cf43..0d3df16 100644 (file)
@@ -49,7 +49,7 @@ class Tag(TagBase):
 
     @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',)
@@ -130,7 +130,6 @@ class Book(models.Model):
         from slughifi import slughifi
         import dcparser
         from markupstring import MarkupString
-        import re
         
         # Read book metadata
         book_info = dcparser.parse(xml_file)
@@ -163,7 +162,7 @@ class Book(models.Model):
         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)
                 
index 20c7abd..0e05fa5 100644 (file)
@@ -164,7 +164,7 @@ class CatalogueURLNode(Node):
                 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')
 
index 5827285..2fc2939 100644 (file)
@@ -10,6 +10,6 @@ urlpatterns = patterns('catalogue.views',
     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'),
 )
 
index 0d174ce..8feb63c 100644 (file)
@@ -13,10 +13,10 @@ from django.utils import simplejson
 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):
@@ -43,7 +43,7 @@ def search(request):
             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)}
         ))
 
@@ -96,7 +96,7 @@ def book_list(request):
         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:
@@ -114,12 +114,12 @@ def tagged_book_list(request, tags=''):
     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 },
     )
 
index f31e148..d3ee955 100644 (file)
@@ -92,3 +92,6 @@ class MarkupString (unicode):
             for et in ends[e]: outbuf+= et
         return MarkupString(outbuf)
 
+    def __len__(self):
+        return len(self.raw)
+
diff --git a/templates/catalogue/tagged_book_list.html b/templates/catalogue/tagged_book_list.html
deleted file mode 100644 (file)
index 3aa9a36..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-{% 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 }}&nbsp;({{ 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 }}&nbsp;({{ 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 }}&nbsp;({{ 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 }}&nbsp;({{ 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 }}&nbsp;({{ 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
diff --git a/templates/catalogue/tagged_object_list.html b/templates/catalogue/tagged_object_list.html
new file mode 100644 (file)
index 0000000..3aa9a36
--- /dev/null
@@ -0,0 +1,146 @@
+{% 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 }}&nbsp;({{ 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 }}&nbsp;({{ 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 }}&nbsp;({{ 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 }}&nbsp;({{ 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 }}&nbsp;({{ 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