Comment tidying.
[mkdru-moved-to-drupal.org.git] / mkdru.client.js
index ae07fe6..216ad20 100644 (file)
@@ -30,10 +30,11 @@ var mkdru = {
     perpage: 20,
     sort: 'relevance',
     filter: null,
-    query:null,
+    query:'',
     recid:null
   },
-  state: {}
+  state: {},
+  realm: ''
 };
 
 
@@ -130,8 +131,8 @@ mkdru.pz2ByTarget = function (data) {
 mkdru.pz2Record = function (data) {
   clearTimeout(mkdru.pz2.showTimer);
   $('.mkdru-results').hide();
-  $('.mkdru-detail').html(Drupal.theme('mkdruDetail', data));
-  $('.mkdru-detail-back').bind('click', function () {$.bbq.removeState('recid');});
+  $('.mkdru-detail').html(Drupal.theme('mkdruDetail', data,
+                                       mkdru.hashAddDelOne(null, null, 'recid')));
   $('.mkdru-detail').show();
   clearTimeout(mkdru.pz2.recordTimer);
 };
@@ -190,7 +191,7 @@ mkdru.hashChange = function () {
   }
   // Other internal link
   else {
-    // need to run search again to limit targets
+    // may need to run search again to limit targets
     for (key in mkdru.state) {
       if (key.substring(0,5) === 'limit') {
         mkdru.search();
@@ -305,7 +306,7 @@ $(document).ready(function () {
 
   mkdru.pz2 = new pz2( { "onshow": mkdru.pz2Show,
               "showtime": 500, //each timer (show, stat, term, bytarget) can be specified this way
-              "pazpar2path": mkdru.pazpar2path,
+              "pazpar2path": mkdru.pazpar2Path,
               "oninit": mkdru.pz2Init,
               "onstat": mkdru.pz2Status,
               "onterm": mkdru.pz2Term,
@@ -325,14 +326,39 @@ $(document).ready(function () {
   if (typeof(Drupal.settings.mkdru.query) !== "undefined") {
     mkdru.state.query = Drupal.settings.mkdru.query
   }
-
+  
+  //not running against SP? init, otherwise authenticate
   if (mkdru.useSessions) {
     mkdru.pz2.init();
-  }
-  else if (mkdru.state.recid) {
-    mkdru.pz2.record(mkdru.state.recid);
-  }
-  else if (mkdru.state.query) {
-    mkdru.search();
+  } else {
+    //runnin against SP
+    var user = Drupal.settings.mkdru.sp_user;
+    var pass = Drupal.settings.mkdru.sp_pass;
+    var params = {};
+    params['command'] = 'auth';
+    if (user && pass) {
+      params['action'] = 'login';
+      params['username'] = user;
+      params['password'] = pass;
+    } else {
+      params['action'] = 'ipauth';
+    }
+    var authReq = new pzHttpRequest(mkdru.pazpar2Path, 
+      function (err) {
+        alert("Authentication against metasearch gateway failed: " +err);
+      }
+    );
+    authReq.get(params,
+      function (data) {
+        var s = data.getElementsByTagName('status');
+        if (s.length && Element_getTextContent(s[0]) == "OK") {
+          mkdru.realm = data.getElementsByTagName('realm');
+          mkdru.pz2Init();
+        } else {
+          alert("Malformed response when authenticating against the metasearch"
+            + " gateway");
+        }
+      }
+    );
   }
 });