|
|
|
/* global $, calibre, EPUBJS, ePubReader */
|
|
|
|
|
|
|
|
var reader;
|
|
|
|
|
|
|
|
(function() {
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
EPUBJS.filePath = calibre.filePath;
|
|
|
|
EPUBJS.cssPath = calibre.cssPath;
|
|
|
|
|
|
|
|
reader = ePubReader(calibre.bookUrl, {
|
|
|
|
restore: true,
|
|
|
|
bookmarks: calibre.bookmark ? [calibre.bookmark] : []
|
|
|
|
});
|
|
|
|
|
|
|
|
if (calibre.useBookmarks) {
|
|
|
|
reader.on("reader:bookmarked", updateBookmark.bind(reader, "add"));
|
|
|
|
reader.on("reader:unbookmarked", updateBookmark.bind(reader, "remove"));
|
|
|
|
} else {
|
|
|
|
$("#bookmark, #show-Bookmarks").remove();
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param {string} action - Add or remove bookmark
|
|
|
|
* @param {string|int} location - Location or zero
|
|
|
|
*/
|
|
|
|
function updateBookmark(action, location) {
|
|
|
|
// Remove other bookmarks (there can only be one)
|
|
|
|
if (action === "add") {
|
|
|
|
this.settings.bookmarks.filter(function (bookmark) {
|
|
|
|
return bookmark && bookmark !== location;
|
|
|
|
}).map(function (bookmark) {
|
|
|
|
this.removeBookmark(bookmark);
|
|
|
|
}.bind(this));
|
|
|
|
}
|
|
|
|
|
|
|
|
// Save to database
|
|
|
|
$.ajax(calibre.bookmarkUrl, {
|
|
|
|
method: "post",
|
|
|
|
data: { bookmark: location || "" }
|
|
|
|
}).fail(function (xhr, status, error) {
|
|
|
|
alert(error);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
})();
|