Add client logic and admin pages to support SP
[mkdru-moved-to-drupal.org.git] / mkdru.client.js
index ae07fe6..7357102 100644 (file)
@@ -33,7 +33,8 @@ var mkdru = {
     query:null,
     recid:null
   },
-  state: {}
+  state: {},
+  realm: ''
 };
 
 
@@ -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,13 +326,46 @@ $(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 {
+    //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");
+        }
+      }
+    );
   }
-  else if (mkdru.state.recid) {
+  //I'm not sure how this can work, it assumes the search is in a proper state?
+  if (mkdru.state.recid) {
     mkdru.pz2.record(mkdru.state.recid);
   }
+  //mkdru.onInit deals with this in a more proper way
   else if (mkdru.state.query) {
     mkdru.search();
   }