X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/63f861861578b33416a0b2d801252b27443fabde..a3b153ea6e30da275edf3e34b8d2f8ca1bb436cc:/src/wolnelektury/static/js/search.js?ds=sidebyside

diff --git a/src/wolnelektury/static/js/search.js b/src/wolnelektury/static/js/search.js
index 786a05c79..536164b50 100644
--- a/src/wolnelektury/static/js/search.js
+++ b/src/wolnelektury/static/js/search.js
@@ -1,48 +1,68 @@
 
 var __bind = function (self, fn) {
-    return function() { fn.apply(self, arguments); };
+    return function() { return fn.apply(self, arguments); };
 };
 
 (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));
+            if (this.element.autocomplete('instance') !== undefined) this.element.autocomplete('instance')._renderItem = __bind(this, this.render_item_2022);
+            if (this.element.data('autocomplete') !== undefined) this.element.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);
+        },
+
+        render_item_2022: function (ul, item) {
+            var label;
+            var $label = $("<li><a><div></div><span></span></a></li>");
+            if (item.img) {
+                $('div', $label).append($('<img>').attr('src', item.img));
+            }
+            if (item.author) {
+                label = '<cite>' + item.label + '</cite>, ' + item['author'];
+            } else {
+                label = item.label;
+            }
+            $('span', $label).html(label);
+            $label.addClass('type-' + item.type);
+            $label.appendTo(ul);
+            return $label;
+        },
 
+        destroy: function() {
+        }
+    });
 
 })(jQuery);