url += '/' + this.subPrefix;
}
url += '?ui=embed';
- if (viewParams) {
+ if (typeof(viewParams) != 'undefined') {
url += '#' + this.fragmentFromParams(viewParams);
}
return url;
// getEmbedCode
//________
// Returns the embed code HTML fragment suitable for copy and paste
-br.getEmbedCode = function() {
- return "<iframe src='" + this.getEmbedURL() + "' width='480px' height='430px' frameborder='0' ></iframe>";
+br.getEmbedCode = function(frameWidth, frameHeight, viewParams) {
+ return "<iframe src='" + this.getEmbedURL(viewParams) + "' width='" + frameWidth + "' height='" + frameHeight + "' frameborder='0' ></iframe>";
}
// 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) {
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) {
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([
'<div style="height: 140px; min-width: 80px; padding: 0; margin: 0;"><a href="', this.bookUrl, '"><img src="http://www.archive.org/download/', this.bookId, '/page/cover_t.jpg" alt="' + escapedTitle + '" height="140px" /></a></div>'].join('')
}
}
+#echo "br.olHost = 'http://openlibrary.org'\n";
+echo "br.olHost = 'http://ol-mang:8080'\n";
+
if ($useOLAuth) {
echo "br.olAuth = true;\n";
} else {
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<length; i++) {
+ if (0 == cookies[i].indexOf('br-loan-' + br.bookId)) {
+ this.loanUUID = cookies[i].split('=')[1];
+ }
+ if (0 == cookies[i].indexOf('loan-' + br.bookId)) {
+ this.loanToken = cookies[i].split('=')[1];
+ }
+ }
+
return this;
}
OLAuth.prototype.init = function() {
- var htmlStr = '<p style="text-align:center;"><b>Authenticating in-browser loan with openlibrary.org!</b></p>';
- htmlStr += '<p>Please wait...</p>';
+ var htmlStr = 'Checking loan status with Open Library';
- this.showPopup("#ddd", "#000", htmlStr);
- $.ajax({url:this.authUrl + '?rand='+Math.random(), dataType:'jsonp', jsonpCallback:'olAuth.initCallback'});
+ this.showPopup("#ddd", "#000", htmlStr, 'Please wait as we check the status of this book...');
+ var authUrl = this.authUrl+'?rand='+Math.random();
+ if (false !== this.loanUUID) {
+ authUrl += '&loan='+this.loanUUID
+ }
+ if (false !== this.loanToken) {
+ authUrl += '&token='+this.loanToken
+ }
+ $.ajax({url:authUrl, dataType:'jsonp', jsonpCallback:'olAuth.initCallback'});
}
-OLAuth.prototype.showPopup = function(bgColor, textColor, msg) {
+OLAuth.prototype.showPopup = function(bgColor, textColor, msg, resolution) {
this.popup = document.createElement("div");
$(this.popup).css({
position: 'absolute',
padding: "20px",
border: "3px double #999999",
zIndex: 3,
+ textAlign: 'center',
backgroundColor: bgColor,
color: textColor
}).appendTo('#BookReader');
- this.popup.innerHTML = msg;
+ this.setPopupMsg(msg, resolution);
}
+OLAuth.prototype.setPopupMsg = function(msg, resolution) {
+ this.popup.innerHTML = ['<p><strong>', msg, '</strong></p><p>', resolution, '</p>'].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;
}
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 {
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", '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.');
+ 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();