Unit test for getting page region. Fix bug in br.getPageRegionURI
[bookreader.git] / BookReaderIA / datanode / BookReaderJSIA.php
index 006ad93..8b7a4f9 100644 (file)
@@ -209,6 +209,26 @@ br.getPageURI = function(index, reduce, rotate) {
     return 'http://'+this.server+'/BookReader/BookReaderImages.php?zip='+this.zip+'&file='+file+'&scale='+_reduce+'&rotate='+_rotate;
 }
 
+// Get a rectangular region out of a page
+br.getRegionURI = function(index, reduce, rotate, sourceX, sourceY, sourceWidth, sourceHeight) {
+
+    // Map function arguments to the url keys
+    var urlKeys = ['n', 'r', 'rot', 'x', 'y', 'w', 'h'];
+    var page = '';
+    for (var i = 0; i < arguments.length; i++) {
+        if ('undefined' != typeof(arguments[i])) {
+            if (i > 0 ) {
+                page += '_';
+            }
+            page += urlKeys[i] + arguments[i];
+        }
+    }
+    
+    var itemPath = this.bookPath.replace(new RegExp('/'+this.subPrefix+'$'), ''); // remove trailing subPrefix
+    
+    return 'http://'+this.server+'/BookReader/BookReaderImages.php?id=' + this.bookId + '&itemPath=' + itemPath + '&server=' + this.server + '&subPrefix=' + this.subPrefix + '&page=' +page + '.jpg';
+}
+
 br._getPageFile = function(index) {
     var leafStr = '0000';
     var imgStr = this.leafMap[index].toString();
@@ -375,20 +395,22 @@ br.getEmbedCode = function(frameWidth, frameHeight, viewParams) {
 br.getOpenLibraryRecord = function(callback) {
     // Try looking up by ocaid first, then by source_record
     
-    var jsonURL = this.olHost + '/query.json?type=/type/edition&*=&ocaid=' + br.bookId;
+    var self = this; // closure
+    
+    var jsonURL = self.olHost + '/query.json?type=/type/edition&*=&ocaid=' + self.bookId;
     $.ajax({
         url: jsonURL,
         success: function(data) {
             if (data && data.length > 0) {
-                callback(br, data[0]);
+                callback(self, data[0]);
             } else {
                 // try sourceid
-                jsonURL = this.olHost + '/query.json?type=/type/edition&*=&source_records=ia:' + br.bookId;
+                jsonURL = self.olHost + '/query.json?type=/type/edition&*=&source_records=ia:' + self.bookId;
                 $.ajax({
                     url: jsonURL,
                     success: function(data) {
                         if (data && data.length > 0) {
-                            callback(br, data[0]);
+                            callback(self, data[0]);
                         }
                     },
                     dataType: 'jsonp'
@@ -537,8 +559,8 @@ foreach ($metaData->xpath('//collection') as $collection) {
     }
 }
 
-echo "br.olHost = 'http://openlibrary.org'\n";
-#echo "br.olHost = 'http://ol-mang:8080'\n";
+echo "br.olHost = 'http://openlibrary.org';\n";
+#echo "br.olHost = 'http://mang-dev.us.archive.org:8080';\n";
 
 if ($useOLAuth) {
     echo "br.olAuth = true;\n";
@@ -550,10 +572,9 @@ if ($protected) {
     echo "br.protected = true;\n";
 }
 
-# Special cases
-if ('bandersnatchhsye00scarrich' == $id) {
-    echo "br.mode     = 2;\n";
-    echo "br.auto     = true;\n";
+# Default options for BookReader
+if ('' != $metaData->{'bookreader-defaults'}) {
+    echo "br.defaults = '" . $metaData->{'bookreader-defaults'} . "';\n";
 }
 
 ?>
@@ -573,6 +594,12 @@ if (typeof(brConfig) != 'undefined') {
     } else if (brConfig['mode'] == 2) {
         br.mode = 2;      
     }
+    
+    if (typeof(brConfig["isAdmin"]) != 'undefined') {
+        br.isAdmin = brConfig["isAdmin"];
+    } else {
+        br.isAdmin = false;
+    }
 } // brConfig
 
 
@@ -635,16 +662,6 @@ OLAuth.prototype.setPopupMsg = function(msg, resolution) {
     this.popup.innerHTML = ['<p><strong>', msg, '</strong></p><p>', resolution, '</p>'].join('\n');
 }
 
-OLAuth.prototype.isAdmin = function() {
-    var isAdmin = false;
-    
-    $.ajax({url:'/bookreader/BookReaderAdmin.php?id='+br.bookId, 
-        success:function(data){isAdmin=data.isAdmin;}, 
-        async:false
-    });
-    return isAdmin;
-}
-
 OLAuth.prototype.showError = function(msg, resolution) {
    $(this.popup).css({
         backgroundColor: "#fff",
@@ -656,7 +673,7 @@ OLAuth.prototype.showError = function(msg, resolution) {
 
 OLAuth.prototype.initCallback = function(obj) {
     if (false == obj.success) {
-        if (this.isAdmin()) {
+        if (br.isAdmin) {
             ret = confirm("We couldn't authenticate your loan with Open Library, but since you are an administrator or uploader of this book, you can access this book for QA purposes. Would you like to QA this book?");
             if (!ret) {
                 this.showError(obj.msg, obj.resolution)