Fixed autocomplete.
authorRadek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>
Tue, 11 May 2010 07:55:01 +0000 (09:55 +0200)
committerRadek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>
Tue, 11 May 2010 07:55:01 +0000 (09:55 +0200)
Set autocomplete cache search setting to 'word'.
jquery.autocomplete: escaping strings for regex.
jquery.countdown: minor fix.

apps/catalogue/forms.py
wolnelektury/static/js/jquery.autocomplete.js
wolnelektury/static/js/jquery.countdown-pl.js
wolnelektury/static/js/jquery.countdown.js

index 4b600b6..b040ef9 100644 (file)
@@ -18,7 +18,7 @@ class BookImportForm(forms.Form):
 
 
 class SearchForm(forms.Form):
-    q = JQueryAutoCompleteField('/katalog/tags/', {'minChars': 2, 'selectFirst': True, 'cacheLength': 50})
+    q = JQueryAutoCompleteField('/katalog/tags/', {'minChars': 2, 'selectFirst': True, 'cacheLength': 50, 'matchContains': "word"})
     tags = forms.CharField(widget=forms.HiddenInput, required=False)
     
     def __init__(self, *args, **kwargs):
index 9d12a29..7cdb359 100644 (file)
  * Revision: $Id: jquery.autocomplete.js 15 2009-08-22 10:30:27Z joern.zaefferer $
  */
 
+/*
+ * Modified by Radek Czajka, Fundacja Nowoczesna Polska, 2010-05-10:
+ *   escape regex for word start checking in matchSubset
+ */
+
 ;(function($) {
        
 $.fn.extend({
@@ -442,7 +447,7 @@ $.Autocompleter.Cache = function(options) {
                        s = s.toLowerCase();
                var i = s.indexOf(sub);
                if (options.matchContains == "word"){
-                       i = s.toLowerCase().search("\\b" + sub.toLowerCase());
+                       i = s.toLowerCase().search("\\b" + sub.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi, "\\$1").toLowerCase());
                }
                if (i == -1) return false;
                return i == 0 || options.matchContains;
index 34b805a..4d6d1d4 100644 (file)
@@ -7,7 +7,9 @@
                labels: ['lat', 'miesięcy', 'tygodni', 'dni', 'godzin', 'minut', 'sekund'],\r
                labels1: ['rok', 'miesiąc', 'tydzień', 'dzień', 'godzina', 'minuta', 'sekunda'],\r
         labels2: ['lata', 'miesiące', 'tygodnie', 'dni', 'godziny', 'minuty', 'sekundy'],\r
-               compactLabels: ['l', 'm', 't', 'd'], compactLabels1: ['r', 'm', 't', 'd'],\r
+               compactLabels: ['l', 'm', 't', 'd'],\r
+               compactLabels1: ['r', 'm', 't', 'd'],\r
+        compactLabels2: ['l', 'm', 't', 'd'],\r
                timeSeparator: ':', isRTL: false,\r
                which: function(n){\r
                        return n==1 ? 1 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 2 : 0;\r
index 5375ce8..11d5506 100644 (file)
@@ -6,7 +6,7 @@
    Please attribute the author if you use it. */
 
 /* Modified by Radek Czajka, Fundacja Nowoczesna Polska (radoslaw.czajka(at)nowoczesnapolska.org.pl) */
-
+w
 /* Display a countdown timer.
    Attach it with options like:
    $('div selector').countdown(
@@ -471,7 +471,10 @@ $.extend(Countdown.prototype, {
                var timeSeparator = this._get(inst, 'timeSeparator');
                var description = this._get(inst, 'description') || '';
                var showCompact = function(period) {
-                       var labelsNum = $.countdown._get(inst, 'compactLabels' + periods[period]);
+            var which = $.countdown._get(inst, 'which');
+            if (which) {
+                var labelsNum = $.countdown._get(inst, 'compactLabels' + which(periods[period]));
+            }
                        return (show[period] ? periods[period] +
                                (labelsNum ? labelsNum[period] : labels[period]) + ' ' : '');
                };