fix <cite> in autocomplete
authorJan Szejko <janek37@gmail.com>
Fri, 22 Dec 2017 10:22:51 +0000 (11:22 +0100)
committerJan Szejko <janek37@gmail.com>
Fri, 22 Dec 2017 10:22:51 +0000 (11:22 +0100)
src/search/views.py
src/wolnelektury/static/js/search.js

index 309db73..7e512be 100644 (file)
@@ -87,7 +87,8 @@ def hint(request):
     if len(data) < limit:
         data += [
             {
-                'label': '<cite>%s</cite>, %s' % (b.title, b.author_unicode()),
+                'label': b.title,
+                'author': b.author_unicode(),
                 'id': b.id,
                 'url': b.get_absolute_url()
             }
index 786a05c..34c63f3 100644 (file)
@@ -5,44 +5,46 @@ var __bind = function (self, fn) {
 
 (function($){
     $.widget("wl.search", {
-       options: {
-          minLength: 0,
-         dataType: "json",
-          host: '',
+        options: {
+              minLength: 0,
+          dataType: "json",
+              host: ''
+            },
+
+        _create: function() {
+            var opts = {
+            minLength: this.options.minLength,
+            select: __bind(this, this.enter),
+            focus: function() { return false; },
+                    source: this.element.data('source')
+            };
+
+            this.element.autocomplete($.extend(opts, this.options))
+            .data("autocomplete")._renderItem = __bind(this, this.render_item);
         },
 
-       _create: function() {
-           var opts = { 
-               minLength: this.options.minLength,
-               select: __bind(this, this.enter),
-               focus: function() { return false; },
-                source: this.element.data('source'),
-           };
-
-           this.element.autocomplete($.extend(opts, this.options))
-               .data("autocomplete")._renderItem = __bind(this, this.render_item);
-       },
-
-       enter: function(event, ui) {
-           if (ui.item.url != undefined) {
-               location.href = this.options.host+ui.item.url;
-           } else {
-               this.element.closest('form').submit();
-           }
-       },
-   
-       render_item: function (ul, item) {
-           return $("<li></li>").data('item.autocomplete', item)
-               .append('<a href="'+this.options.host+item.url+'"><span class="search-hint-label">'+item.label+'</span>')
-               .appendTo(ul);
-       }, 
-
-       destroy: function() {
-
-       },
-       
+        enter: function(event, ui) {
+            if (ui.item.url !== undefined) {
+            location.href = this.options.host+ui.item.url;
+            } else {
+            this.element.closest('form').submit();
+            }
+        },
 
-    });
+        render_item: function (ul, item) {
+            var label;
+            if (item['author']) {
+                label = '<cite>' + item.label + '</cite>, ' + item['author'];
+            } else {
+                label = item.label;
+            }
+            return $("<li></li>").data('item.autocomplete', item)
+            .append('<a href="'+this.options.host+item.url+'"><span class="search-hint-label">'+label+'</span>')
+            .appendTo(ul);
+        },
 
+        destroy: function() {
+        }
+    });
 
 })(jQuery);