Only deserialize state when appropriate
[mkdru-moved-to-drupal.org.git] / mkdru.client.js
index e985d42..51835ac 100644 (file)
@@ -151,10 +151,10 @@ mkdru.pz2Term = function (data) {
       var term = terms[i];
       var value = facet == "source" ? term.id : term.name;
       if (mkdru.contains(hash, facet, value)) { //enabled
-        term.hashQuery = mkdru.removeLimit(facet, value);
+        term.toggleLink = mkdru.removeLimit(facet, value);
         term.selected = true;
       } else { //disabled
-        term.hashQuery = mkdru.addLimit(facet, value);
+        term.toggleLink = mkdru.addLimit(facet, value);
         term.selected = false;
       }
     }
@@ -224,6 +224,14 @@ mkdru.uiFromState = function () {
 };
 
 mkdru.hashChange = function () {
+  // TING hack, switching tabs resets the hash but does not re-load the page
+  // simply ignore new hash and set it to the old state
+  var hash = $.param.fragment();
+  if (hash.indexOf('addon-result') == 0 || hash.indexOf('content-result') == 0
+      || hash.indexOf('ting-result') == 0) {
+    mkdru.hashFromState();
+    return;
+  }
   // do we need to restart the search?
   var searchTrigger = false;
   // shallow copy of state so we can see what changed.
@@ -330,7 +338,8 @@ mkdru.search = function () {
         var limits = mkdru.state['limit_' + facet].split(/;+/);
         for (var i = 0; i < limits.length; i++) {
           // ex. query + and au="{limit_author}"
-          query += ' and ' + mkdru.facets[facet]['limiter'] + '="'
+          if (limits[i]) 
+            query += ' and ' + mkdru.facets[facet]['limiter'] + '="'
                   + limits[i] + '"';
         }
       }
@@ -414,6 +423,7 @@ $(document).ready(function () {
               "showResponseType": mkdru.showResponseType,
               "onrecord": mkdru.pz2Record,
               "autoInit": false } );
+  mkdru.pz2.showFastCount = 1;
 
   // initialise state to hash string or defaults
   mkdru.stateFromHash();