summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2017-02-26 13:42:00 +0300
committerAndrew Dolgov <[email protected]>2017-02-26 13:42:00 +0300
commit8aaf1fad0c1cfa65132f052f0f98b3452ddc4eeb (patch)
tree2b44d22cb37d126caca770eb63d6608b6efb8000
parent84230a6809d7ce8bd5d0161d1f91df4a4b7b32a0 (diff)
various offline-related fixes
-rw-r--r--backend.php8
-rw-r--r--js/offline.js27
-rw-r--r--js/read.js3
-rw-r--r--read.html9
4 files changed, 35 insertions, 12 deletions
diff --git a/backend.php b/backend.php
index 308d2df..f603fbf 100644
--- a/backend.php
+++ b/backend.php
@@ -130,19 +130,21 @@
$bookid = (int) $_REQUEST["id"];
$lastread = 0;
$lastcfi = "";
+ $totalpages = 0;
if ($bookid) {
- $result = $ldb->query("SELECT id, lastread, lastcfi FROM epube_books
- WHERE bookid = '$bookid' AND owner = '$owner' LIMIT 1");
+ $result = $ldb->query("SELECT b.lastread, b.lastcfi, p.total_pages FROM epube_books AS b, epube_pagination AS p
+ WHERE b.bookid = p.bookid AND b.bookid = '$bookid' AND b.owner = '$owner' LIMIT 1");
if ($line = $result->fetchArray()) {
$lastread = (int) $line["lastread"];
$lastcfi = $line["lastcfi"];
+ $totalpages = (int) $line["total_pages"];
}
}
- print json_encode(["page" => $lastread, "cfi" => $lastcfi]);
+ print json_encode(["page" => $lastread, "cfi" => $lastcfi, "total" => $totalpages]);
break;
diff --git a/js/offline.js b/js/offline.js
index d1c49d6..7815b83 100644
--- a/js/offline.js
+++ b/js/offline.js
@@ -1,3 +1,7 @@
+function offline_remove2(elem) {
+ return offline_remove(elem, populate_list);
+}
+
function populate_list() {
var books = $("#books_container");
@@ -8,7 +12,8 @@ function populate_list() {
Promise.all([
localforage.getItem(key),
- localforage.getItem(key + ".cover")
+ localforage.getItem(key + ".cover"),
+ localforage.getItem(key + ".lastread")
]).then(function(results) {
var info = results[0];
@@ -20,13 +25,27 @@ function populate_list() {
cover = URL.createObjectURL(results[1]);
}
+ var in_progress = false;
+ var is_read = false;
+
+ var lastread = results[2];
+ if (lastread) {
+
+ in_progress = lastread.page > 0;
+ is_read = lastread.total - lastread.page < 5;
+ }
+
var cell = "<div class='col-xs-6 col-sm-3 col-md-2 index_cell'>";
- cell += "<div class=\"thumb\">";
+ var cover_read = is_read ? "read" : "";
+ var title_class = in_progress ? "in_progress" : "";
+
+ cell += "<div class=\"thumb "+cover_read+"\">";
cell += "<a href=\"read.html?id="+info.epub_id+"&b="+info.id+"\"><img data-src=\"holder.js/120x180\"></a>";
cell += "<div class=\"caption\">";
- cell += "<div><a href=\"read.html?id="+info.epub_id+"&b="+info.id+"\">" + info.title + "</a></div>";
+ cell += "<div><a class=\""+title_class+"\" href=\"read.html?id="+info.epub_id+"&b="+info.id+"\">" +
+ info.title + "</a></div>";
cell += "<div>" + info.author_sort + "</div>";
if (info.series_name) {
@@ -40,7 +59,7 @@ function populate_list() {
"More..." + "<span class=\"caret\"></span></a>";
cell += "<ul class=\"dropdown-menu\">";
- cell += "<li><a href=\"#\" data-book-id=\""+info.id+"\" onclick=\"offline_remove(this)\">Remove download</a></li>";
+ cell += "<li><a href=\"#\" data-book-id=\""+info.id+"\" onclick=\"offline_remove2(this)\">Remove download</a></li>";
cell += "</ul>";
cell += "</div>";
diff --git a/js/read.js b/js/read.js
index dc968f4..4fb74ce 100644
--- a/js/read.js
+++ b/js/read.js
@@ -113,9 +113,10 @@ function save_and_close() {
if (navigator.onLine) {
var currentPage = book.pagination.pageFromCfi(book.getCurrentLocationCfi());
var currentCfi = book.getCurrentLocationCfi();
+ var totalPages = book.pagination.totalPages;
localforage.setItem("epube-book." + $.urlParam("b") + ".lastread",
- {cfi: currentCfi, page: currentPage});
+ {cfi: currentCfi, page: currentPage, total: totalPages});
$.post("backend.php", { op: "storelastread", id: $.urlParam("id"), page: currentPage,
cfi: currentCfi }, function(data) {
diff --git a/read.html b/read.html
index 8db7e60..aafbc96 100644
--- a/read.html
+++ b/read.html
@@ -343,10 +343,10 @@
var url = "backend.php?op=getpagination&id=" + encodeURIComponent($.urlParam("id"));
EPUBJS.core.request(url).then(function(pageList) {
- console.log("pagination: requesting remote");
+ console.log("pagination: requesting remote: ");
if (book.loadPagination(pageList).length > 0) {
- localforage.setItem(cacheId("pagination"), pageList);
+ localforage.setItem(cacheId("pagination"), JSON.parse(pageList));
_pagination_stored = 1;
} else {
book.generatePagination();
@@ -417,7 +417,8 @@
var currentCfi = book.getCurrentLocationCfi();
var currentPage = location.anchorPage;
-
+ var totalPages = book.pagination.totalPages;
+
if (navigator.onLine) {
$.post("backend.php", { op: "storelastread", id: $.urlParam("id"), page: currentPage,
@@ -436,7 +437,7 @@
}
localforage.setItem(cacheId("lastread"),
- {cfi: currentCfi, page: currentPage});
+ {cfi: currentCfi, page: currentPage, total: totalPages});
}
});