From 5cedb389d24861a94c1183d1562900dbe59ee3fb Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sun, 23 Dec 2012 18:07:41 +0400 Subject: split self-updater gui to updater/ plugin --- plugins/updater/README.txt | 1 + plugins/updater/updater.js | 69 ++++++++++++++++++++++++++++++++++++++++ plugins/updater/updater.php | 76 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 146 insertions(+) create mode 100644 plugins/updater/README.txt create mode 100644 plugins/updater/updater.js create mode 100644 plugins/updater/updater.php (limited to 'plugins/updater') diff --git a/plugins/updater/README.txt b/plugins/updater/README.txt new file mode 100644 index 000000000..083a19f71 --- /dev/null +++ b/plugins/updater/README.txt @@ -0,0 +1 @@ +Updates tt-rss installation to latest version. diff --git a/plugins/updater/updater.js b/plugins/updater/updater.js new file mode 100644 index 000000000..17452d734 --- /dev/null +++ b/plugins/updater/updater.js @@ -0,0 +1,69 @@ +function updateSelf() { + try { + var query = "backend.php?op=pluginhandler&plugin=updater&method=updateSelf"; + + if (dijit.byId("updateSelfDlg")) + dijit.byId("updateSelfDlg").destroyRecursive(); + + var dialog = new dijit.Dialog({ + id: "updateSelfDlg", + title: __("Update Tiny Tiny RSS"), + style: "width: 600px", + closable: false, + performUpdate: function(step) { + dijit.byId("self_update_start_btn").attr("disabled", true); + dijit.byId("self_update_stop_btn").attr("disabled", true); + + notify_progress("Loading, please wait...", true); + new Ajax.Request("backend.php", { + parameters: "?op=pluginhandler&plugin=updater&method=performUpdate&step=" + step + + "¶ms=" + param_escape(JSON.stringify(dialog.attr("update-params"))), + onComplete: function(transport) { + try { + rv = JSON.parse(transport.responseText); + if (rv) { + notify(''); + + rv['log'].each(function(line) { + $("self_update_log").innerHTML += "
  • " + line + "
  • "; + }); + + dialog.attr("update-params", rv['params']); + + if (!rv['stop']) { + window.setTimeout("dijit.byId('updateSelfDlg').performUpdate("+(step+1)+")", 500); + } else { + dijit.byId("self_update_stop_btn").attr("disabled", false); + } + + } else { + console.log(transport.responseText); + notify_error("Received invalid data from server."); + } + + dialog.attr("updated", true); + } catch (e) { + exception_error("updateSelf/inner", e); + } + } }); + }, + close: function() { + if (dialog.attr("updated")) { + window.location.reload(); + } else { + dialog.hide(); + } + }, + start: function() { + if (prompt(__("Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue.")) == 'yes') { + dialog.performUpdate(0); + } + }, + href: query}); + + dialog.show(); + } catch (e) { + exception_error("batchSubscribe", e); + } +} + diff --git a/plugins/updater/updater.php b/plugins/updater/updater.php new file mode 100644 index 000000000..f88ebe409 --- /dev/null +++ b/plugins/updater/updater.php @@ -0,0 +1,76 @@ +link = $host->get_link(); + $this->host = $host; + + $host->add_hook($host::HOOK_PREFS_TAB, $this); + } + + function get_prefs_js() { + return file_get_contents(dirname(__FILE__) . "/updater.js"); + } + + function hook_prefs_tab($args) { + if ($args != "prefPrefs") return; + + if (($_SESSION["access_level"] >= 10 || SINGLE_USER_MODE) && CHECK_FOR_NEW_VERSION) { + print "
    "; + + if ($_SESSION["pref_last_version_check"] + 86400 + rand(-1000, 1000) < time()) { + $_SESSION["version_data"] = @check_for_update($this->link); + $_SESSION["pref_last_version_check"] = time(); + } + + if (is_array($_SESSION["version_data"])) { + $version = $_SESSION["version_data"]["version"]; + print_notice(T_sprintf("New version of Tiny Tiny RSS is available (%s).", "$version")); + + print "

    "; + + } else { + print_notice(__("Your Tiny Tiny RSS installation is up to date.")); + } + + print "
    "; #pane + } + + function updateSelf() { + print "
    "; + + print "
    ".__("Do not close this dialog until updating is finished. Backup your tt-rss directory before continuing.")."
    "; + + print ""; + + print "
    "; + print ""; + print ""; + print "
    "; + print "
    "; + } + + function performUpdate() { + $step = (int) $_REQUEST["step"]; + $params = json_decode($_REQUEST["params"], true); + $force = (bool) $_REQUEST["force"]; + + if (($_SESSION["access_level"] >= 10 || SINGLE_USER_MODE) && CHECK_FOR_NEW_VERSION) { + include "update_self.php"; + + print json_encode(update_self_step($this->link, $step, $params, $force)); + } + } + + + } +} +?> -- cgit v1.2.3