X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=BookReaderIA%2Fdatanode%2FBookReaderJSIA.php;h=b5d9c1812b6082cc8ab41d1c005d3d56fb97ffe5;hb=b45f74d11e59bfb00b55ec4b49f828fd98f64a63;hp=af5c795e65cad16172b2f8ed634de6335effda2a;hpb=1b335ac642e4eb1fb808b17e940f112f8bb2bdba;p=bookreader.git diff --git a/BookReaderIA/datanode/BookReaderJSIA.php b/BookReaderIA/datanode/BookReaderJSIA.php index af5c795..b5d9c18 100644 --- a/BookReaderIA/datanode/BookReaderJSIA.php +++ b/BookReaderIA/datanode/BookReaderJSIA.php @@ -118,6 +118,44 @@ $metaData = simplexml_load_file($metaDataFile); //$firstLeaf = $scanData->pageData->page[0]['leafNum']; ?> +// Error reporting - this helps us fix errors quickly +function logError(description,page,line) { + if (typeof(archive_analytics) != 'undefined') { + var values = { + 'bookreader': 'error', + 'description': description, + 'page': page, + 'line': line, + 'itemid': '', + 'subPrefix': '', + 'server': '', + 'bookPath': '' + }; + + // if no referrer set '-' as referrer + if (document.referrer == '') { + values['referrer'] = '-'; + } else { + values['referrer'] = document.referrer; + } + + if (typeof(br) != 'undefined') { + values['itemid'] = br.bookId; + values['subPrefix'] = br.subPrefix; + values['server'] = br.server; + values['bookPath'] = br.bookPath; + } + + var qs = archive_analytics.format_bug(values); + + var error_img = new Image(100,25); + error_img.src = archive_analytics.img_src + "?" + qs; + } + + return false; // allow browser error handling so user sees there was a problem +} +window.onerror=logError; + br = new BookReader(); "; +br.getEmbedCode = function(frameWidth, frameHeight, viewParams) { + return ""; } // getOpenLibraryRecord br.getOpenLibraryRecord = function(callback) { // Try looking up by ocaid first, then by source_record - var jsonURL = 'http://openlibrary.org/query.json?type=/type/edition&*=&ocaid=' + br.bookId; + var jsonURL = this.olHost + '/query.json?type=/type/edition&*=&ocaid=' + br.bookId; $.ajax({ url: jsonURL, success: function(data) { @@ -345,7 +383,7 @@ br.getOpenLibraryRecord = function(callback) { callback(br, data[0]); } else { // try sourceid - jsonURL = 'http://openlibrary.org/query.json?type=/type/edition&*=&source_records=ia:' + br.bookId; + jsonURL = this.olHost + '/query.json?type=/type/edition&*=&source_records=ia:' + br.bookId; $.ajax({ url: jsonURL, success: function(data) { @@ -366,8 +404,12 @@ br.buildInfoDiv = function(jInfoDiv) { var escapedTitle = BookReader.util.escapeHTML(this.bookTitle); var domainRe = /(\w+\.(com|org))/; - var domain = domainRe.exec(this.bookUrl)[1]; - + var domainMatch = domainRe.exec(this.bookUrl); + var domain = this.bookUrl; + if (domainMatch) { + domain = domainMatch[1]; + } + // $$$ cover looks weird before it loads jInfoDiv.find('.BRfloatCover').append([ '
' + escapedTitle + '
'].join('') @@ -493,6 +535,9 @@ foreach ($metaData->xpath('//collection') as $collection) { } } +#echo "br.olHost = 'http://openlibrary.org'\n"; +echo "br.olHost = 'http://ol-mang:8080'\n"; + if ($useOLAuth) { echo "br.olAuth = true;\n"; } else { @@ -526,20 +571,42 @@ if (typeof(brConfig) != 'undefined') { function OLAuth() { - this.authUrl = 'http://openlibrary.org/ia_auth/' + br.bookId; + this.authUrl = br.olHost + '/ia_auth/' + br.bookId; this.olConnect = false; + this.loanUUID = false; + this.loanToken = false; + + var cookieRe = /;\s*/; + var cookies = document.cookie.split(cookieRe); + var length = cookies.length; + var i; + for (i=0; i', msg, '

', resolution, '

'].join('\n'); } OLAuth.prototype.initCallback = function(obj) { if (false == obj.success) { $(this.popup).css({ - backgroundColor: "#f00", - color: "#fff" + backgroundColor: "#fff", + color: "#000" }); - this.popup.innerHTML = obj.msg; + this.setPopupMsg(obj.msg, obj.resolution); return; } @@ -577,7 +649,7 @@ OLAuth.prototype.initCallback = function(obj) { OLAuth.prototype.callback = function(obj) { if (false == obj.success) { - this.showPopup("#f00", "#fff", obj.msg); + this.showPopup("#fff", "#000", obj.msg, obj.resolution); clearInterval(this.poller); this.ttsPoller = null; } else { @@ -588,27 +660,43 @@ OLAuth.prototype.callback = function(obj) { OLAuth.prototype.setCookie = function(value) { var date = new Date(); - date.setTime(date.getTime()+(24*60*60*1000)); //one day expiry + date.setTime(date.getTime()+(10*60*1000)); //10 min expiry var expiry = date.toGMTString(); var cookie = 'loan-'+br.bookId+'='+value; cookie += '; expires='+expiry; cookie += '; path=/; domain=.archive.org;'; - document.cookie = cookie; + document.cookie = cookie; + + //refresh the br-loan uuid cookie with current expiry, if needed + if (false !== this.loanUUID) { + cookie = 'br-loan-'+br.bookId+'='+this.loanUUID; + cookie += '; expires='+expiry; + cookie += '; path=/; domain=.archive.org;'; + document.cookie = cookie; + } } OLAuth.prototype.startPolling = function () { var self = this; this.poller=setInterval(function(){ if (!self.olConnect) { - self.showPopup("#f00", "#fff", 'Cound not connect to Open Library for authentication. Please check to see if you are still connected to the Internet, and then reload this web page.'); + self.showPopup("#f00", "#fff", 'Connection error', 'The BookReader cannot reach Open Library. This might mean that you are offline or that Open Library is down. Please check your Internet connection or try again later.'); clearInterval(self.poller); self.ttsPoller = null; } else { self.olConnect = false; //be sure to add random param to authUrl to avoid stale cache - $.ajax({url:self.authUrl+'?rand='+Math.random(), dataType:'jsonp', jsonpCallback:'olAuth.callback'}); + var authUrl = self.authUrl+'?rand='+Math.random(); + if (false !== self.loanUUID) { + authUrl += '&loan='+self.loanUUID + } + if (false !== self.loanToken) { + authUrl += '&token='+self.loanToken + } + + $.ajax({url:authUrl, dataType:'jsonp', jsonpCallback:'olAuth.callback'}); } - },300000); + },300000); //five minute interval } br.cleanupMetadata(); @@ -622,8 +710,34 @@ if (br.olAuth) { function BRFatal($string) { - // $$$ TODO log error - echo "alert('$string')\n"; + // log error + ?> + + if (typeof(archive_analytics) != 'undefined') { + var values = { + 'bookreader': 'fatal', + 'description': "", + 'itemid': "", + 'server': "", + 'request_uri': "" + } + + if (document.referrer == '') { + values['referrer'] = '-'; + } else { + values['referrer'] = document.referrer; + } + + var qs = archive_analytics.format_bug(values); + + var error_img = new Image(100,25); + error_img.src = archive_analytics.img_src + "?" + qs; + } + + alert(""); + +