offline: various updates
This commit is contained in:
parent
206d496762
commit
8ca1a0acab
114
offline.js
114
offline.js
|
@ -634,6 +634,8 @@ function offline_download_parse(stage, transport) {
|
||||||
|
|
||||||
if (stage == 0) {
|
if (stage == 0) {
|
||||||
|
|
||||||
|
$("offlineModeSyncMsg").innerHTML = __("Synchronizing feeds...");
|
||||||
|
|
||||||
var feeds = transport.responseXML.getElementsByTagName("feed");
|
var feeds = transport.responseXML.getElementsByTagName("feed");
|
||||||
|
|
||||||
if (feeds.length > 0) {
|
if (feeds.length > 0) {
|
||||||
|
@ -651,6 +653,8 @@ function offline_download_parse(stage, transport) {
|
||||||
[id, title, has_icon, cat_id]);
|
[id, title, has_icon, cat_id]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$("offlineModeSyncMsg").innerHTML = __("Synchronizing categories...");
|
||||||
|
|
||||||
var cats = transport.responseXML.getElementsByTagName("category");
|
var cats = transport.responseXML.getElementsByTagName("category");
|
||||||
|
|
||||||
if (feeds.length > 0) {
|
if (feeds.length > 0) {
|
||||||
|
@ -667,6 +671,8 @@ function offline_download_parse(stage, transport) {
|
||||||
[id, title, collapsed]);
|
[id, title, collapsed]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$("offlineModeSyncMsg").innerHTML = __("Synchronizing labels...");
|
||||||
|
|
||||||
var labels = transport.responseXML.getElementsByTagName("label");
|
var labels = transport.responseXML.getElementsByTagName("label");
|
||||||
|
|
||||||
if (labels.length > 0) {
|
if (labels.length > 0) {
|
||||||
|
@ -684,7 +690,9 @@ function offline_download_parse(stage, transport) {
|
||||||
[id, caption, fg_color, bg_color]);
|
[id, caption, fg_color, bg_color]);
|
||||||
}
|
}
|
||||||
|
|
||||||
sync_timer = window.setTimeout("update_offline_data("+(stage+1)+")", 10*1000);
|
$("offlineModeSyncMsg").innerHTML = __("Synchronizing articles...");
|
||||||
|
|
||||||
|
sync_timer = window.setTimeout("update_offline_data("+(stage+1)+")", 2*1000);
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
var articles = transport.responseXML.getElementsByTagName("article");
|
var articles = transport.responseXML.getElementsByTagName("article");
|
||||||
|
@ -735,7 +743,7 @@ function offline_download_parse(stage, transport) {
|
||||||
|
|
||||||
if (articles_found >= limit || has_sync_data) {
|
if (articles_found >= limit || has_sync_data) {
|
||||||
sync_timer = window.setTimeout("update_offline_data("+(stage+1)+")",
|
sync_timer = window.setTimeout("update_offline_data("+(stage+1)+")",
|
||||||
5*1000);
|
3*1000);
|
||||||
debug("<b>update_offline_data: done " + stage + " HSD: " +
|
debug("<b>update_offline_data: done " + stage + " HSD: " +
|
||||||
has_sync_data + "</b>");
|
has_sync_data + "</b>");
|
||||||
} else {
|
} else {
|
||||||
|
@ -762,11 +770,7 @@ function offline_download_parse(stage, transport) {
|
||||||
$("offlineModeSyncMsg").innerHTML = msg;
|
$("offlineModeSyncMsg").innerHTML = msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
var hide_elems = $$("div.hideWhenSyncing");
|
offlineSyncShowHideElems(false);
|
||||||
|
|
||||||
for (var j = 0; j < hide_elems.length; j++) {
|
|
||||||
Element.show(hide_elems[j]);
|
|
||||||
}
|
|
||||||
|
|
||||||
sync_in_progress = false;
|
sync_in_progress = false;
|
||||||
|
|
||||||
|
@ -788,17 +792,12 @@ function offline_download_parse(stage, transport) {
|
||||||
|
|
||||||
if (pic) {
|
if (pic) {
|
||||||
pic.src = "images/offline.png";
|
pic.src = "images/offline.png";
|
||||||
var msg = __("Last sync: Error receiving data");
|
var msg = __("Last sync: Error receiving data.");
|
||||||
articles_synced = 0;
|
articles_synced = 0;
|
||||||
$("offlineModeSyncMsg").innerHTML = msg;
|
$("offlineModeSyncMsg").innerHTML = msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
var hide_elems = $$("div.hideWhenSyncing");
|
offlineSyncShowHideElems(false);
|
||||||
|
|
||||||
for (var j = 0; j < hide_elems.length; j++) {
|
|
||||||
Element.show(hide_elems[j]);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
@ -852,11 +851,7 @@ function update_offline_data(stage) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var hide_elems = $$("div.hideWhenSyncing");
|
offlineSyncShowHideElems(true);
|
||||||
|
|
||||||
for (var j = 0; j < hide_elems.length; j++) {
|
|
||||||
Element.hide(hide_elems[j]);
|
|
||||||
}
|
|
||||||
|
|
||||||
sync_in_progress = true;
|
sync_in_progress = true;
|
||||||
|
|
||||||
|
@ -1035,7 +1030,13 @@ function init_gears() {
|
||||||
try {
|
try {
|
||||||
|
|
||||||
if (window.google && google.gears) {
|
if (window.google && google.gears) {
|
||||||
|
|
||||||
|
try {
|
||||||
localServer = google.gears.factory.create("beta.localserver");
|
localServer = google.gears.factory.create("beta.localserver");
|
||||||
|
} catch (e) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
store = localServer.createManagedStore("tt-rss");
|
store = localServer.createManagedStore("tt-rss");
|
||||||
store.manifestUrl = "manifest.json.php";
|
store.manifestUrl = "manifest.json.php";
|
||||||
|
|
||||||
|
@ -1130,6 +1131,19 @@ function gotoOffline() {
|
||||||
|
|
||||||
// debug("[Local store] currentVersion = " + store.currentVersion);
|
// debug("[Local store] currentVersion = " + store.currentVersion);
|
||||||
|
|
||||||
|
var rs = db.execute("SELECT COUNT(*) FROM articles");
|
||||||
|
var count = 0;
|
||||||
|
if (rs.isValidRow()) {
|
||||||
|
count = rs.field(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
rs.close();
|
||||||
|
|
||||||
|
if (count == 0) {
|
||||||
|
notify_error("You have to synchronize some articles before going into offline mode.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (confirm(__("Switch Tiny Tiny RSS into offline mode?"))) {
|
if (confirm(__("Switch Tiny Tiny RSS into offline mode?"))) {
|
||||||
|
|
||||||
store.checkForUpdate();
|
store.checkForUpdate();
|
||||||
|
@ -1139,10 +1153,19 @@ function gotoOffline() {
|
||||||
var timerId = window.setInterval(function() {
|
var timerId = window.setInterval(function() {
|
||||||
if (store.currentVersion) {
|
if (store.currentVersion) {
|
||||||
window.clearInterval(timerId);
|
window.clearInterval(timerId);
|
||||||
//debug("[Local store] sync complete: " + store.currentVersion);
|
debug("[Local store] sync complete: " + store.currentVersion);
|
||||||
window.location.href = "tt-rss.php";
|
|
||||||
|
//window.location.href = "tt-rss.php";
|
||||||
|
|
||||||
|
offlineDownloadStop();
|
||||||
|
offline_mode = true;
|
||||||
|
init_offline();
|
||||||
|
|
||||||
|
notify_info("Tiny Tiny RSS is in offline mode.");
|
||||||
|
|
||||||
} else if (store.updateStatus == 3) {
|
} else if (store.updateStatus == 3) {
|
||||||
debug("[Local store] sync error: " + store.lastErrorMessage);
|
debug("[Local store] sync error: " + store.lastErrorMessage);
|
||||||
|
notify_error(store.lastErrorMessage, true);
|
||||||
} }, 500);
|
} }, 500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1566,7 +1589,25 @@ function offlineDownloadStart() {
|
||||||
function offlineDownloadStop() {
|
function offlineDownloadStop() {
|
||||||
try {
|
try {
|
||||||
if (db && sync_in_progress && getInitParam("offline_enabled") == "1") {
|
if (db && sync_in_progress && getInitParam("offline_enabled") == "1") {
|
||||||
|
|
||||||
|
sync_in_progress = false;
|
||||||
|
|
||||||
|
if (sync_timer) {
|
||||||
window.clearTimeout(sync_timer);
|
window.clearTimeout(sync_timer);
|
||||||
|
sync_timer = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
var pic = $("offlineModePic");
|
||||||
|
|
||||||
|
if (pic) {
|
||||||
|
pic.src = "images/offline.png";
|
||||||
|
var msg = __("Last sync: Cancelled.");
|
||||||
|
articles_synced = 0;
|
||||||
|
$("offlineModeSyncMsg").innerHTML = msg;
|
||||||
|
}
|
||||||
|
|
||||||
|
offlineSyncShowHideElems(false);
|
||||||
|
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
exception_error("offlineDownloadStart", e);
|
exception_error("offlineDownloadStart", e);
|
||||||
|
@ -1587,8 +1628,9 @@ function offlineClearData() {
|
||||||
db.execute("DELETE FROM article_labels");
|
db.execute("DELETE FROM article_labels");
|
||||||
db.execute("DELETE FROM labels");
|
db.execute("DELETE FROM labels");
|
||||||
db.execute("DELETE FROM feeds");
|
db.execute("DELETE FROM feeds");
|
||||||
|
db.execute("DELETE FROM cache");
|
||||||
|
|
||||||
notify_info("Offline data removed.");
|
notify_info("Local data removed.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
@ -1605,3 +1647,31 @@ function offlineUpdateStore() {
|
||||||
exception_error("offlineUpdateStore", e);
|
exception_error("offlineUpdateStore", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function offlineSyncShowHideElems(syncing) {
|
||||||
|
try {
|
||||||
|
|
||||||
|
var elems = $$("div.hideWhenSyncing");
|
||||||
|
|
||||||
|
for (var j = 0; j < elems.length; j++) {
|
||||||
|
if (syncing) {
|
||||||
|
Element.hide(elems[j]);
|
||||||
|
} else {
|
||||||
|
Element.show(elems[j]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var elems = $$("div.showWhenSyncing");
|
||||||
|
|
||||||
|
for (var j = 0; j < elems.length; j++) {
|
||||||
|
if (syncing) {
|
||||||
|
Element.show(elems[j]);
|
||||||
|
} else {
|
||||||
|
Element.hide(elems[j]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (e) {
|
||||||
|
exception_error("offlineSyncShowHideElems", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -2139,7 +2139,7 @@ div.colorPicker {
|
||||||
|
|
||||||
div#offlineModeDrop div {
|
div#offlineModeDrop div {
|
||||||
padding : 2px 2px 2px 2px;
|
padding : 2px 2px 2px 2px;
|
||||||
text-align : center;
|
text-align : left;
|
||||||
}
|
}
|
||||||
|
|
||||||
div#offlineModeDrop {
|
div#offlineModeDrop {
|
||||||
|
@ -2153,6 +2153,7 @@ div#offlineModeDrop {
|
||||||
right : 0px;
|
right : 0px;
|
||||||
border : 1px solid #cccccc;
|
border : 1px solid #cccccc;
|
||||||
background : white;
|
background : white;
|
||||||
|
min-width : 170px;
|
||||||
margin-left : -1px;
|
margin-left : -1px;
|
||||||
max-height : 250px;
|
max-height : 250px;
|
||||||
overflow : auto;
|
overflow : auto;
|
||||||
|
|
10
tt-rss.php
10
tt-rss.php
|
@ -136,15 +136,19 @@ window.onload = init;
|
||||||
onmouseout="enable_selection(true)"
|
onmouseout="enable_selection(true)"
|
||||||
onclick="toggleOfflineModeInfo()"
|
onclick="toggleOfflineModeInfo()"
|
||||||
src="images/offline.png" style="display:none"
|
src="images/offline.png" style="display:none"
|
||||||
title="<?php echo __('Offline mode') ?>"/>
|
title="<?php echo __('Offline reading') ?>"/>
|
||||||
|
|
||||||
<div id="offlineModeDrop" style="display : none">
|
<div id="offlineModeDrop" style="display : none">
|
||||||
<div id="offlineModeSyncMsg">---</div>
|
<div id="offlineModeSyncMsg">---</div>
|
||||||
|
|
||||||
|
<div class="showWhenSyncing" style="display : none">
|
||||||
|
<a href="javascript:offlineDownloadStop()">
|
||||||
|
<?php echo __('Cancel synchronization') ?></a></div>
|
||||||
<div class="hideWhenSyncing">
|
<div class="hideWhenSyncing">
|
||||||
<a href="javascript:offlineDownloadStart()">
|
<a href="javascript:offlineDownloadStart()">
|
||||||
<?php echo __('Start synchronization') ?></a></div>
|
<?php echo __('Synchronize') ?></a></div>
|
||||||
<div class="hideWhenSyncing"><a href="javascript:offlineClearData()">
|
<div class="hideWhenSyncing"><a href="javascript:offlineClearData()">
|
||||||
<?php echo __('Remove offline data') ?></a></div>
|
<?php echo __('Remove stored data') ?></a></div>
|
||||||
<div><a href="javascript:gotoOffline()">
|
<div><a href="javascript:gotoOffline()">
|
||||||
<?php echo __('Go offline') ?></a></div>
|
<?php echo __('Go offline') ?></a></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in New Issue