X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=BookReaderIA%2Fdatanode%2FBookReaderJSIA.php;h=b5d9c1812b6082cc8ab41d1c005d3d56fb97ffe5;hb=b45f74d11e59bfb00b55ec4b49f828fd98f64a63;hp=571ec688759549651ddaf2db78065e6867696049;hpb=5f0fd54304038e3595c985cd89ba88ebaef7589a;p=bookreader.git diff --git a/BookReaderIA/datanode/BookReaderJSIA.php b/BookReaderIA/datanode/BookReaderJSIA.php index 571ec68..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) { @@ -361,28 +399,27 @@ br.getOpenLibraryRecord = function(callback) { }); } -// getInfoDiv -br.getInfoDiv = function() { +br.buildInfoDiv = function(jInfoDiv) { // $$$ it might make more sense to have a URL on openlibrary.org that returns this info var escapedTitle = BookReader.util.escapeHTML(this.bookTitle); var domainRe = /(\w+\.(com|org))/; - var domain = domainRe.exec(this.bookUrl)[1]; - // XXX use different icon for archive.org - var html = [ - '
', - '', escapedTitle, '', - '
', - '
', - '
', - '

', escapedTitle, '

', - // $$$ lookup on OL - // 'by', - // 'Book Author', - '
', - '

Published ', this.bookPublished, + 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('') + ); + + jInfoDiv.find('.BRfloatMeta').append([ + // $$$ description + //'

Published ', this.bookPublished, //, Publisher name', - '

', + //'

', //'

Written in Language

', '

Other Formats

', '', - '

More information on ' + domain + '.

', - '
', - '', - '
', - // XXX add link to bug tracker + '

More information on ' + domain + '

'].join('\n')); + + jInfoDiv.find('.BRfloatFoot').append([ + '|', 'Report a problem', - '|', - 'About the Bookreader', - '
' - ]; + ].join('\n')); + + if (domain == 'archive.org') { + jInfoDiv.find('.BRfloatMeta p.moreInfo span').css( + {'background': 'url(http://www.archive.org/favicon.ico) no-repeat', 'width': 22, 'height': 18 } + ); + } - return html.join('\n'); + jInfoDiv.find('.BRfloatTitle a').attr({'href': this.bookUrl, 'alt': this.bookTitle}).text(this.bookTitle); + var bookPath = (window.location + '').replace('#','%23'); + jInfoDiv.find('a.problem').attr('href','http://openlibrary.org/contact?path=' + bookPath); + } br.pageW = [ @@ -494,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 { @@ -521,36 +565,48 @@ if (typeof(brConfig) != 'undefined') { br.reduce = brConfig['reduce']; } } else if (brConfig['mode'] == 2) { - br.mode = 2; - - + br.mode = 2; } } // brConfig 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; } @@ -588,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 { @@ -599,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(); @@ -633,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(""); + +