pretty book descriptions and don't hide short descriptions
authorRadek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>
Wed, 16 Jun 2010 14:54:40 +0000 (16:54 +0200)
committerRadek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>
Wed, 16 Jun 2010 14:54:40 +0000 (16:54 +0200)
wolnelektury/static/js/catalogue.js
wolnelektury/templates/catalogue/book_detail.html

index 6e0f562..55ecef6 100644 (file)
@@ -312,42 +312,45 @@ function serverTime() {
             location.href = $('h2 a', this).attr('href');
         });
 
             location.href = $('h2 a', this).attr('href');
         });
 
-               function toggled_by_slide(cont, short_el, long_el, button, short_text, long_text) {
-                       function toggle(cont, short_el, long_el, button, short_text, long_text) {
-                   if (cont.hasClass('short')) {
-                       cont.animate({"height": long_el.attr("cont_h")+'px'}, {duration: "fast" }).removeClass('short');
-                       short_el.hide();
-                       long_el.show();
-                       button.html(long_text);
-                   } else {
-                       cont.animate({"height": short_el.attr("cont_h")+'px'}, {duration: "fast" }).addClass('short');
-                       long_el.hide();
-                       short_el.show();
-                       button.html(short_text);
-                   }
-                       }
+        function toggled_by_slide(cont, short_el, long_el, button, short_text, long_text) {
+            function toggle(cont, short_el, long_el, button, short_text, long_text) {
+                if (cont.hasClass('short')) {
+                    cont.animate({"height": long_el.attr("cont_h")+'px'}, {duration: "fast" }).removeClass('short');
+                    short_el.hide();
+                    long_el.show();
+                    button.html(long_text);
+                } else {
+                    cont.animate({"height": short_el.attr("cont_h")+'px'}, {duration: "fast" }).addClass('short');
+                    long_el.hide();
+                    short_el.show();
+                    button.html(short_text);
+                }
+            }
+            if (long_el.html().length <= short_el.html().length)
+                return;
+
             long_el.attr("cont_h", cont.height()).hide();
             short_el.show().attr("cont_h", cont.height());
             long_el.attr("cont_h", cont.height()).hide();
             short_el.show().attr("cont_h", cont.height());
-                       cont.addClass('short');
-                       button.html(short_text);
-                       button.hover(
+            cont.addClass('short');
+            button.html(short_text);
+            button.hover(
                 function() { $(this).css({background: '#F3F3F3', cursor: 'pointer'}); },
                 function() { $(this).css({background: '#EEE'}); }
                 function() { $(this).css({background: '#F3F3F3', cursor: 'pointer'}); },
                 function() { $(this).css({background: '#EEE'}); }
-                       ).click(function(){
-                               toggle(cont, short_el, long_el, button, short_text, long_text)
-                       });
-                       cont.hover(
+            ).click(function(){
+                toggle(cont, short_el, long_el, button, short_text, long_text)
+            });
+            cont.hover(
                 function() { $(this).css({background: '#F3F3F3', cursor: 'pointer'}); },
                 function() { $(this).css({background: '#FFF'}); }
             ).click(function(){
                 toggle(cont, short_el, long_el, button, short_text, long_text)
             })
                 function() { $(this).css({background: '#F3F3F3', cursor: 'pointer'}); },
                 function() { $(this).css({background: '#FFF'}); }
             ).click(function(){
                 toggle(cont, short_el, long_el, button, short_text, long_text)
             })
-               }
+        }
         toggled_by_slide($('#description'), $('#description-short'), $('#description-long'),
           $('#toggle-description p'),
           LOCALE_TEXTS[LANGUAGE_CODE]['EXPAND_DESCRIPTION']+' ▼',
         toggled_by_slide($('#description'), $('#description-short'), $('#description-long'),
           $('#toggle-description p'),
           LOCALE_TEXTS[LANGUAGE_CODE]['EXPAND_DESCRIPTION']+' ▼',
-                 LOCALE_TEXTS[LANGUAGE_CODE]['HIDE_DESCRIPTION'] + ' ▲'
-                 );
+            LOCALE_TEXTS[LANGUAGE_CODE]['HIDE_DESCRIPTION'] + ' ▲'
+        );
 
         $('#toggle-share-shelf').hover(
             function() { $(this).css({background: '#F3F3F3', cursor: 'pointer'}); },
 
         $('#toggle-share-shelf').hover(
             function() { $(this).css({background: '#F3F3F3', cursor: 'pointer'}); },
index 60284d6..27f2e72 100644 (file)
         <p>{% trans "Based on" %}: {{ extra_info.source_name }}</p>
         {% if book.has_description %}
             <div id="description">
         <p>{% trans "Based on" %}: {{ extra_info.source_name }}</p>
         {% if book.has_description %}
             <div id="description">
-                {{ book.description|safe }}
+                <div id='description-long'>{{ book.description|safe }}</div>
+                <div id='description-short'>{{ book.description|safe|truncatewords_html:30 }}</div>
             </div>
             </div>
-            <div id="toggle-description"><p>{% trans "Hide description" %} ▲</p></div>
+            <div id="toggle-description"><p></p></div>
         {% endif %}
         <div id="formats">
             <p class="change-sets">{% trans "Put a book" %} <span><a href="{% url catalogue.views.book_sets book.slug %}" class="jqm-trigger">{% trans "on the shelf!" %}</a></span></p>
         {% endif %}
         <div id="formats">
             <p class="change-sets">{% trans "Put a book" %} <span><a href="{% url catalogue.views.book_sets book.slug %}" class="jqm-trigger">{% trans "on the shelf!" %}</a></span></p>