this.lastDisplayableIndex2up = null;
- // We link to index.php to avoid redirect which breaks back button
// Should be overriden (before init) by custom implmentations.
- this.logoURL = 'http://openlibrary.org';
+ this.logoURL = 'http://www.archive.org';
// Base URL for UI images - should be overriden (before init) by
// custom implementations.
this.twoPage = {
coverInternalPadding: 0, // Width of cover
coverExternalPadding: 0, // Padding outside of cover
- bookSpineDivWidth: 0, // Width of book spine $$$ consider sizing based on book length
+ bookSpineDivWidth: 64, // Width of book spine $$$ consider sizing based on book length
autofit: 'auto'
};
}).appendTo('#BRtwopageview');
div = document.createElement('div');
- $(div).attr('id', 'BRbookspine').css({
+ $(div).attr('id', 'BRgutter').css({
width: this.twoPage.bookSpineDivWidth+'px',
height: this.twoPage.bookSpineDivHeight+'px',
- left: this.twoPage.bookSpineDivLeft+'px',
+ left: (this.twoPage.gutter - this.twoPage.bookSpineDivWidth*0.5)+'px',
top: this.twoPage.bookSpineDivTop+'px'
}).appendTo('#BRtwopageview');
//console.log(' and now leafEdgeTmp to left: gutter+newWidthR ' + (gutter + newWidthR));
$(self.leafEdgeTmp).animate({left: gutter+newWidthR+'px'}, self.flipSpeed, 'easeOutSine');
+
+ $('#BRgutter').css({left: (gutter - self.twoPage.bookSpineDivWidth*0.5)+'px'});
//console.log(' animating newIndexR ' + newIndexR + ' to ' + newWidthR + ' from ' + $(self.prefetchedImgs[newIndexR]).width());
$(self.prefetchedImgs[newIndexR]).animate({width: newWidthR+'px'}, self.flipSpeed, 'easeOutSine', function() {
$(self.twoPage.coverDiv).css({
width: self.twoPageCoverWidth(newWidthL+newWidthR)+'px',
left: gutter-newWidthL-newLeafEdgeWidthL-self.twoPage.coverInternalPadding+'px'
- });
+ });
$(self.leafEdgeTmp).remove();
self.leafEdgeTmp = null;
$(this.leafEdgeTmp).animate({left: gutter}, speed, 'easeInSine');
$(this.prefetchedImgs[this.twoPage.currentIndexR]).animate({width: '0px'}, speed, 'easeInSine', function() {
+ $('#BRgutter').css({left: (gutter - self.twoPage.bookSpineDivWidth*0.5)+'px'});
$(self.leafEdgeTmp).animate({left: gutter-newWidthL-leafEdgeTmpW+'px'}, speed, 'easeOutSine');
$(self.prefetchedImgs[newIndexL]).animate({width: newWidthL+'px'}, speed, 'easeOutSine', function() {
$(self.prefetchedImgs[newIndexR]).css('zIndex', 2);
$(self.twoPage.coverDiv).css({
width: self.twoPageCoverWidth(newWidthL+newWidthR)+'px',
left: gutter - newWidthL - newLeafEdgeWidthL - self.twoPage.coverInternalPadding + 'px'
- });
-
+ });
+
$(self.leafEdgeTmp).remove();
self.leafEdgeTmp = null;
//console.log(' prevL.left: ' + (gutter - scaledW) + 'px');
//console.log(' changing prevL ' + prevL + ' to left: ' + (gutter-scaledW) + ' width: ' + scaledW);
- leftCSS = {
+ var leftCSS = {
position: 'absolute',
left: gutter-scaledW+'px',
right: '', // clear right property
top: top+'px',
height: this.twoPage.height,
width: scaledW+'px',
- borderRight: '1px solid black', // XXXmang check
zIndex: 1
}
//console.log(' changing prevR ' + prevR + ' to left: ' + gutter + ' width: 0');
- rightCSS = {
+ var rightCSS = {
position: 'absolute',
left: gutter+'px',
right: '',
top: top+'px',
height: this.twoPage.height,
- borderLeft: '1px solid black', // XXXmang check
width: '0',
zIndex: 2
}
//console.log(br.searchResults);
if (0 == results.matches.length) {
- $(br.popup).text('No matches were found.');
+ var errStr = 'No matches were found.';
+ var timeout = 1000;
+ if (false === results.indexed) {
+ errStr = "<p>This book isn't in the search engine yet.</p><p>Please <a href='http://openlibrary.org/contact?path=archive.org/stream/"+this.bookId+"/search'>drop us a line</a> so we can fix it. Thanks!</p>";
+ timeout = 5000;
+ }
+ $(br.popup).html(errStr);
setTimeout(function(){
$(br.popup).fadeOut('slow', function() {
br.removeProgressPopup();
})
- },1000);
+ },timeout);
return;
}
return '/bookreader/print.php?' + options;
}
-/* iframe implementation
-BookReader.prototype.getPrintFrameContent = function(index) {
- // We fit the image based on an assumed A4 aspect ratio. A4 is a bit taller aspect than
- // 8.5x11 so we should end up not overflowing on either paper size.
- var paperAspect = 8.5 / 11;
- var imageAspect = this._getPageWidth(index) / this._getPageHeight(index);
-
- var rotate = 0;
-
- // Rotate if possible and appropriate, to get larger image size on printed page
- if (this.canRotatePage(index)) {
- if (imageAspect > 1 && imageAspect > paperAspect) {
- // more wide than square, and more wide than paper
- rotate = 90;
- imageAspect = 1/imageAspect;
- }
- }
-
- var fitAttrs;
- if (imageAspect > paperAspect) {
- // wider than paper, fit width
- fitAttrs = 'width="95%"';
- } else {
- // taller than paper, fit height
- fitAttrs = 'height="95%"';
- }
-
- var imageURL = this._getPageURI(index, 1, rotate);
- var iframeStr = '<html style="padding: 0; border: 0; margin: 0"><head><title>' + this.bookTitle + '</title></head><body style="padding: 0; border:0; margin: 0">';
- iframeStr += '<div style="text-align: center; width: 99%; height: 99%; overflow: hidden;">';
- iframeStr += '<img src="' + imageURL + '" ' + fitAttrs + ' />';
- iframeStr += '</div>';
- iframeStr += '</body></html>';
-
- return iframeStr;
-}
-
-BookReader.prototype.updatePrintFrame = function(delta) {
- var newIndex = this.indexToPrint + delta;
- newIndex = BookReader.util.clamp(newIndex, 0, this.numLeafs - 1);
- if (newIndex == this.indexToPrint) {
- return;
- }
- this.indexToPrint = newIndex;
- var doc = BookReader.util.getIFrameDocument($('#printFrame')[0]);
- $('body', doc).html(this.getPrintFrameContent(this.indexToPrint));
-}
-*/
-
// showEmbedCode()
+//
+// Note: Has been replaced by the share dialog
//______________________________________________________________________________
BookReader.prototype.showEmbedCode = function() {
if (null != this.embedPopup) { // check if already showing
//______________________________________________________________________________
// Initialize the navigation bar when embedded
BookReader.prototype.initEmbedNavbar = function() {
- // XXX we don't want embed for this link -- just the link to this book
- var thisLink = this.getEmbedURL(this.paramsFromCurrent());
+ var thisLink = (window.location + '').replace('?ui=embed',''); // IA-specific
$('#BookReader').append(
'<div id="BRnav">'
+ "<span id='BRtoolbarbuttons'>"
- //+ '<button class="BRicon full"></button>'
+ + '<button class="BRicon full"></button>'
+ '<button class="BRicon book_left"></button>'
+ '<button class="BRicon book_right"></button>'
+ "</span>"
+ "<span><a class='logo' href='" + this.logoURL + "' 'target='_blank' ></a></span>"
- + "<span id='BRembedreturn'><a href='" + thisLink + "' target='_blank' >" + this.bookTitle + "</a></span>" // XXX escape
+ + "<span id='BRembedreturn'><a href='" + thisLink + "' target='_blank' ></a></span>"
+ '</div>'
);
+ $('#BRembedreturn a').text(this.bookTitle);
}
-
BookReader.prototype.updateNavPageNum = function(index) {
var pageNum = this.getPageNum(index);
var pageStr;
// $$$ Don't hardcode ids
var self = this;
- jToolbar.find('.share').colorbox({inline: true, opacity: "0.5", href: "#BRshare", onLoad: function() { self.ttsStop(); } });
- jToolbar.find('.info').colorbox({inline: true, opacity: "0.5", href: "#BRinfo", onLoad: function() { self.ttsStop(); } });
+ jToolbar.find('.share').colorbox({inline: true, opacity: "0.5", href: "#BRshare", onLoad: function() { self.autoStop(); self.ttsStop(); } });
+ jToolbar.find('.info').colorbox({inline: true, opacity: "0.5", href: "#BRinfo", onLoad: function() { self.autoStop(); self.ttsStop(); } });
$('<div style="display: none;"></div>').append(this.blankShareDiv()).append(this.blankInfoDiv()).appendTo($('body'));
self.printPage();
return false;
});
-
+
+ // Note: Functionality has been replaced by .share
jIcons.filter('.embed').click(function(e) {
self.showEmbedCode();
return false;
return false;
});
+ jIcons.filter('.full').bind('click', function() {
+ if (self.ui == 'embed') {
+ // $$$ bit of a hack, IA-specific
+ var url = (window.location + '').replace("?ui=embed","");
+ window.open(url);
+ }
+
+ // Not implemented
+ });
+
$('.BRnavCntl').click(
function(){
if ($('#BRnavCntlBtm').hasClass('BRdn')) {
// $$$mang cleanup
self.bookUrl = 'http://openlibrary.org' + olObject.key;
self.bookTitle = olObject['title'];
- $('#BRreturn a').attr('href', this.bookUrl);
- $('#BookReader .logo').attr('title', 'Go to Open Library'); // i18n
+ $('#BRreturn a').attr( {'href': self.bookUrl, 'title': "Go to this book's page on Open Library" } );
+ $('#BRreturn a').text(self.bookTitle);
$('#BRinfo').remove();
$('#BRshare').after(self.blankInfoDiv());
}
// console.log(params);
- var embedLink = self.getEmbedURL( params );
- form.find('.BRframeEmbed').val('<iframe src="' + embedLink + '" width="480" height="480"></iframe>');
+ form.find('.BRframeEmbed').val(self.getEmbedCode(params));
})
jForm.find('input[name=thispage]').trigger('change');
jForm.find('input, textarea').bind('focus', function() {