From 98cbae8dfa9e9d30fe2e843c7058d99671a830ba Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sun, 26 Oct 2014 10:25:16 +0400 Subject: hotkey actions: toggle_expand, collapse_article: check if element exists before acting on it (closes #815) --- js/tt-rss.js | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) (limited to 'js') diff --git a/js/tt-rss.js b/js/tt-rss.js index c64145159..84f2e67b1 100644 --- a/js/tt-rss.js +++ b/js/tt-rss.js @@ -302,21 +302,27 @@ function init() { hotkey_actions["collapse_article"] = function() { var id = getActiveArticleId(); var elem = $("CICD-"+id); - if(elem.visible()) { - cdmCollapseArticle(null, id); - } - else { - cdmExpandArticle(id); + + if (elem) { + if (elem.visible()) { + cdmCollapseArticle(null, id); + } + else { + cdmExpandArticle(id); + } } }; hotkey_actions["toggle_expand"] = function() { var id = getActiveArticleId(); var elem = $("CICD-"+id); - if(elem.visible()) { - cdmCollapseArticle(null, id, false); - } - else { - cdmExpandArticle(id); + + if (elem) { + if (elem.visible()) { + cdmCollapseArticle(null, id, false); + } + else { + cdmExpandArticle(id); + } } }; hotkey_actions["search_dialog"] = function() { -- cgit v1.2.3-54-g00ecf From d9c93ebfdb860878609c6a59ef4df99f8f93643f Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sun, 2 Nov 2014 20:58:46 +0300 Subject: tweak notifications; use css animations for notifications --- css/tt-rss.css | 30 +++++++++++++++++++++--------- index.php | 2 +- js/functions.js | 28 +++++++++++----------------- prefs.php | 2 +- 4 files changed, 34 insertions(+), 28 deletions(-) (limited to 'js') diff --git a/css/tt-rss.css b/css/tt-rss.css index d732c13ba..d5737989a 100644 --- a/css/tt-rss.css +++ b/css/tt-rss.css @@ -138,18 +138,30 @@ a:hover { position : absolute; } +#notify.visible { + transform: translate(0, -35px); + -webkit-transform: translate(0, -35px); + -o-transform: translate(0, -35px); + -moz-transform: translate(0, -35px); + + transition: all 0.5s ease-in-out; + -webkit-transition: all 0.5s ease-in-out; + -moz-transition: all 0.5s ease-in-out; + -o-transition: all 0.5s ease-in-out; +} + #notify { - bottom : 10px; - right : 20px; - border-width : 1px; + bottom : -35px; + right : 0px; + height : 20px; + left : 0px; + border-width : 1px 0px 0px 0px; border-style : solid; position : absolute; font-size : 12px; z-index : 99; - max-width : 200px; - min-width : 100px; padding : 5px; - -width : 200px; + box-shadow : 0px -2px 2px rgba(0,0,0,0.1); } #notify img { @@ -176,17 +188,17 @@ a:hover { background-color : #fff7d5; } -.notify.progress { +.notify.notify_progress { border-color : #d7c47a; background-color : #fff7d5; } -.notify.info { +.notify.notify_info { border-color : #88b0f0; background-color : #ecf4ff; } -.notify.error { +.notify.notify_error { background-color : #ffcccc; border-color : #ff0000; } diff --git a/index.php b/index.php index 79d4ad58d..74498b8f4 100644 --- a/index.php +++ b/index.php @@ -138,7 +138,7 @@ - +
diff --git a/js/functions.js b/js/functions.js index 9915e6808..720a5654a 100644 --- a/js/functions.js +++ b/js/functions.js @@ -182,11 +182,6 @@ function param_unescape(arg) { return unescape(arg); } - -function hide_notify() { - Element.hide('notify'); -} - function notify_real(msg, no_hide, n_type) { var n = $("notify"); @@ -198,13 +193,11 @@ function notify_real(msg, no_hide, n_type) { } if (msg == "") { - if (Element.visible(n)) { - notify_hide_timerid = window.setTimeout("hide_notify()", 0); + if (n.hasClassName("visible")) { + notify_hide_timerid = window.setTimeout(function() { + n.removeClassName("visible") }, 0); } return; - } else { - Element.show(n); - new Effect.Highlight(n); } /* types: @@ -218,18 +211,18 @@ function notify_real(msg, no_hide, n_type) { msg = " " + __(msg) + ""; - if (n_type == 1) { - n.className = "notify"; - } else if (n_type == 2) { - n.className = "notify progress"; + if (n_type == 2) { + n.className = "notify notify_progress visible"; msg = "" + msg; no_hide = true; } else if (n_type == 3) { - n.className = "notify error"; + n.className = "notify notify_error visible"; msg = "" + msg; } else if (n_type == 4) { - n.className = "notify info"; + n.className = "notify notify_info visible"; msg = "" + msg; + } else { + n.className = "notify visible"; } msg += " - +
-- cgit v1.2.3-54-g00ecf From 0d41fd76d3be37903ee405e03cc7bd2e444c7e91 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sun, 9 Nov 2014 20:31:29 +0300 Subject: notify fixes --- css/tt-rss.css | 10 +++++----- js/functions.js | 29 +++++++++++++++++++---------- 2 files changed, 24 insertions(+), 15 deletions(-) (limited to 'js') diff --git a/css/tt-rss.css b/css/tt-rss.css index ca0284a66..48f02f924 100644 --- a/css/tt-rss.css +++ b/css/tt-rss.css @@ -148,11 +148,6 @@ a:hover { -webkit-transform: translate(0, -35px); -o-transform: translate(0, -35px); -moz-transform: translate(0, -35px); - - transition: all 0.5s ease-in-out; - -webkit-transition: all 0.5s ease-in-out; - -moz-transition: all 0.5s ease-in-out; - -o-transition: all 0.5s ease-in-out; } #notify { @@ -167,6 +162,11 @@ a:hover { z-index : 99; padding : 5px; box-shadow : 0px -2px 2px rgba(0,0,0,0.1); + + transition: all 0.5s ease-in-out; + -webkit-transition: all 0.5s ease-in-out; + -moz-transition: all 0.5s ease-in-out; + -o-transition: all 0.5s ease-in-out; } #notify img { diff --git a/js/functions.js b/js/functions.js index 720a5654a..98a531851 100644 --- a/js/functions.js +++ b/js/functions.js @@ -212,30 +212,39 @@ function notify_real(msg, no_hide, n_type) { msg = " " + __(msg) + ""; if (n_type == 2) { - n.className = "notify notify_progress visible"; msg = "" + msg; no_hide = true; } else if (n_type == 3) { - n.className = "notify notify_error visible"; msg = "" + msg; } else if (n_type == 4) { - n.className = "notify notify_info visible"; msg = "" + msg; - } else { - n.className = "notify visible"; } msg += " "; -// msg = " " + msg; - n.innerHTML = msg; - if (!no_hide) { - notify_hide_timerid = window.setTimeout(function() { + window.setTimeout(function() { + // goddamnit firefox + if (n_type == 2) { + n.className = "notify notify_progress visible"; + } else if (n_type == 3) { + n.className = "notify notify_error visible"; + msg = "" + msg; + } else if (n_type == 4) { + n.className = "notify notify_info visible"; + } else { + n.className = "notify visible"; + } + + if (!no_hide) { + notify_hide_timerid = window.setTimeout(function() { n.removeClassName("visible") }, 5*1000); - } + } + + }, 10); + } function notify(msg, no_hide) { -- cgit v1.2.3-54-g00ecf From 5c145bde7a14ed6fe0bdde773925e92c381c620a Mon Sep 17 00:00:00 2001 From: Anders Kaseorg Date: Fri, 30 Jan 2015 21:58:44 -0500 Subject: Make the floating title transition smoother MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously the floating title would not appear until the real title scrolled entirely out of view, which was visually distracting. Now it appears at the point when its bottom lines up with the real title’s bottom. This isn’t perfect yet due to small differences between the two titles’ layouts, but it’s much closer. We now need to use visibility: visible|hidden instead of display: block|none to show and hide the floating title, in order to be able to retrieve its height while it’s hidden. It’s important to use that height because occasionally line wrapping differences make the floating title shorter than the real title, and we don’t want the real title to poke out from underneath. Also fix scrollToRowId to offset by the 4 pixel top margin (like cdmScrollToArticleId already does), so that it goes back to a point when the floating title was hidden; and set the right margin on the floating title so that it’s the same width as the real title and doesn’t overlap the scroll bar. Signed-off-by: Anders Kaseorg --- index.php | 2 +- js/viewfeed.js | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) (limited to 'js') diff --git a/index.php b/index.php index 4f2a9a860..058e7d8e3 100644 --- a/index.php +++ b/index.php @@ -265,7 +265,7 @@
- +
diff --git a/js/viewfeed.js b/js/viewfeed.js index c319a8ed0..f236e1f7c 100644 --- a/js/viewfeed.js +++ b/js/viewfeed.js @@ -56,7 +56,7 @@ function headlines_callback2(transport, offset, background, infscroll_req) { if (infscroll_req == false) { $("headlines-frame").scrollTop = 0; - Element.hide("floatingTitle"); + $("floatingTitle").style.visibility = "hidden"; $("floatingTitle").setAttribute("rowid", 0); $("floatingTitle").innerHTML = ""; } @@ -1532,7 +1532,7 @@ function cdmCollapseArticle(event, id, unmark) { if (row.offsetTop < $("headlines-frame").scrollTop) scrollToRowId(row.id); - Element.hide("floatingTitle"); + $("floatingTitle").style.visibility = "hidden"; $("floatingTitle").setAttribute("rowid", false); } @@ -2357,7 +2357,7 @@ function scrollToRowId(id) { var row = $(id); if (row) - $("headlines-frame").scrollTop = row.offsetTop; + $("headlines-frame").scrollTop = row.offsetTop - 4; } catch (e) { exception_error("scrollToRowId", e); @@ -2402,11 +2402,12 @@ function updateFloatingTitle(unread_only) { PluginHost.run(PluginHost.HOOK_FLOATING_TITLE, child); } - if (child.offsetTop < hf.scrollTop - header.offsetHeight && - child.offsetTop + child.offsetHeight - hf.scrollTop > header.offsetHeight) - Element.show("floatingTitle"); + $("floatingTitle").style.marginRight = hf.offsetWidth - child.offsetWidth + "px"; + if (header.offsetTop + header.offsetHeight < hf.scrollTop + $("floatingTitle").offsetHeight - 5 && + child.offsetTop + child.offsetHeight >= hf.scrollTop + $("floatingTitle").offsetHeight - 5) + $("floatingTitle").style.visibility = "visible"; else - Element.hide("floatingTitle"); + $("floatingTitle").style.visibility = "hidden"; return; -- cgit v1.2.3-54-g00ecf From ed775e4e8dba0e3a527ea13b5581c1ce6ee752bc Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sat, 31 Jan 2015 15:08:55 +0300 Subject: remove obsolete code related to version checking and tarball updater plugin --- classes/dlg.php | 47 ------ config.php-dist | 5 +- include/functions2.php | 28 ---- include/sanity_config.php | 4 +- index.php | 7 - js/tt-rss.js | 30 ---- plugins/updater/init.php | 409 --------------------------------------------- plugins/updater/updater.js | 69 -------- 8 files changed, 3 insertions(+), 596 deletions(-) delete mode 100644 plugins/updater/init.php delete mode 100644 plugins/updater/updater.js (limited to 'js') diff --git a/classes/dlg.php b/classes/dlg.php index 25a194bed..e3931bc3a 100644 --- a/classes/dlg.php +++ b/classes/dlg.php @@ -220,52 +220,5 @@ class Dlg extends Handler_Protected { //return; } - function newVersion() { - - $version_data = check_for_update(); - $version = $version_data['version']; - $id = $version_data['version_id']; - - if ($version && $id) { - print "
"; - - print T_sprintf("New version of Tiny Tiny RSS is available (%s).", - "$version"); - - print "
"; - - $details = "http://tt-rss.org/redmine/versions/$id"; - $download = "http://tt-rss.org/#Download"; - - print "

".__("You can update using built-in updater in the Preferences or by using update.php")."

"; - - print "
"; - print ""; - print ""; - print ""; - - } else { - print "
"; - - print "

".__("Error receiving version information or no new version available.")."

"; - - print "
"; - - print "
"; - print ""; - print "
"; - - } - print "
"; - - } - - } ?> diff --git a/config.php-dist b/config.php-dist index 0c3e92b74..d821329d0 100644 --- a/config.php-dist +++ b/config.php-dist @@ -177,9 +177,6 @@ // *** Other settings (less important) *** // *************************************** - define('CHECK_FOR_NEW_VERSION', true); - // Check for new versions of tt-rss automatically. - define('DETECT_ARTICLE_LANGUAGE', false); // Detect article language when updating feeds, presently this is only // used for hyphenation. This may increase amount of CPU time used by @@ -193,7 +190,7 @@ // if you experience weird errors and tt-rss failing to start, blank pages // after login, or content encoding errors, disable it. - define('PLUGINS', 'auth_internal, note, updater'); + define('PLUGINS', 'auth_internal, note'); // Comma-separated list of plugins to load automatically for all users. // System plugins have to be specified here. Please enable at least one // authentication plugin here (auth_*). diff --git a/include/functions2.php b/include/functions2.php index 669bbe038..4e133dde4 100644 --- a/include/functions2.php +++ b/include/functions2.php @@ -248,15 +248,6 @@ } } - if ($_SESSION["last_version_check"] + 86400 + rand(-1000, 1000) < time()) { - $new_version_details = @check_for_update(); - - $data['new_version_available'] = (int) ($new_version_details != false); - - $_SESSION["last_version_check"] = time(); - $_SESSION["version_data"] = $new_version_details; - } - return $data; } @@ -1019,25 +1010,6 @@ return $doc; } - function check_for_update() { - if (CHECK_FOR_NEW_VERSION && $_SESSION['access_level'] >= 10) { - $version_url = "http://tt-rss.org/version.php?ver=" . VERSION . - "&iid=" . sha1(SELF_URL_PATH); - - $version_data = @fetch_file_contents($version_url); - - if ($version_data) { - $version_data = json_decode($version_data, true); - if ($version_data && $version_data['version']) { - if (version_compare(VERSION_STATIC, $version_data['version']) == -1) { - return $version_data; - } - } - } - } - return false; - } - function catchupArticlesById($ids, $cmode, $owner_uid = false) { if (!$owner_uid) $owner_uid = $_SESSION["uid"]; diff --git a/include/sanity_config.php b/include/sanity_config.php index 76fba4b81..890c0c050 100644 --- a/include/sanity_config.php +++ b/include/sanity_config.php @@ -1,3 +1,3 @@ - +$requred_defines = array( 'DB_TYPE', 'DB_HOST', 'DB_USER', 'DB_NAME', 'DB_PASS', 'MYSQL_CHARSET', 'SELF_URL_PATH', 'FEED_CRYPT_KEY', 'SINGLE_USER_MODE', 'SIMPLE_UPDATE_MODE', 'PHP_EXECUTABLE', 'LOCK_DIRECTORY', 'CACHE_DIR', 'ICONS_DIR', 'ICONS_URL', 'AUTH_AUTO_CREATE', 'AUTH_AUTO_LOGIN', 'FORCE_ARTICLE_PURGE', 'PUBSUBHUBBUB_HUB', 'PUBSUBHUBBUB_ENABLED', 'SPHINX_SERVER', 'SPHINX_INDEX', 'ENABLE_REGISTRATION', 'REG_NOTIFY_ADDRESS', 'REG_MAX_USERS', 'SESSION_COOKIE_LIFETIME', 'SESSION_CHECK_ADDRESS', 'SMTP_FROM_NAME', 'SMTP_FROM_ADDRESS', 'DIGEST_SUBJECT', 'SMTP_SERVER', 'SMTP_LOGIN', 'SMTP_PASSWORD', 'SMTP_SECURE', 'DETECT_ARTICLE_LANGUAGE', 'ENABLE_GZIP_OUTPUT', 'PLUGINS', 'LOG_DESTINATION', 'CONFIG_VERSION'); ?> diff --git a/index.php b/index.php index 058e7d8e3..309ca2e29 100644 --- a/index.php +++ b/index.php @@ -221,13 +221,6 @@ src="images/error.png" /> - - -
diff --git a/js/tt-rss.js b/js/tt-rss.js index 84f2e67b1..26749d108 100644 --- a/js/tt-rss.js +++ b/js/tt-rss.js @@ -756,15 +756,6 @@ function parse_runtime_info(data) { // console.log("RI: " + k + " => " + v); - if (k == "new_version_available") { - if (v == "1") { - Element.show(dijit.byId("newVersionIcon").domNode); - } else { - Element.hide(dijit.byId("newVersionIcon").domNode); - } - return; - } - if (k == "dep_ts" && parseInt(getInitParam("dep_ts")) > 0) { if (parseInt(getInitParam("dep_ts")) < parseInt(v) && getInitParam("reload_on_ts_change")) { window.location.reload(); @@ -968,27 +959,6 @@ function reverseHeadlineOrder() { } } -function newVersionDlg() { - try { - var query = "backend.php?op=dlg&method=newVersion"; - - if (dijit.byId("newVersionDlg")) - dijit.byId("newVersionDlg").destroyRecursive(); - - dialog = new dijit.Dialog({ - id: "newVersionDlg", - title: __("New version available!"), - style: "width: 600px", - href: query, - }); - - dialog.show(); - - } catch (e) { - exception_error("newVersionDlg", e); - } -} - function handle_rpc_json(transport, scheduled_call) { try { var reply = JSON.parse(transport.responseText); diff --git a/plugins/updater/init.php b/plugins/updater/init.php deleted file mode 100644 index 6ee018f74..000000000 --- a/plugins/updater/init.php +++ /dev/null @@ -1,409 +0,0 @@ -host = $host; - - $host->add_hook($host::HOOK_PREFS_TAB, $this); - - $host->add_command("update-self", - "update tt-rss installation to latest version", - $this); - } - - function update_self_step($step, $params, $force = false) { - // __FILE__ is in plugins/updater so we need to go one level up - $work_dir = dirname(dirname(dirname(__FILE__))); - $parent_dir = dirname($work_dir); - // Set PATH to run "which" - putenv('PATH="$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin"'); - - $log = array(); - if (!is_array($params)) $params = array(); - - $stop = false; - - if (!chdir($work_dir)) { - array_push($log, "Unable to change to work directory: $work_dir"); - $stop = true; - } - - if (!$stop) { - switch ($step) { - case 0: - array_push($log, "Work directory: $work_dir"); - - if (!is_writable($work_dir) || !is_writable("$parent_dir")) { - $user = posix_getpwuid(posix_geteuid()); - $user = $user["name"]; - array_push($log, "Both tt-rss and parent directories should be writable as current user ($user)."); - $stop = true; break; - } - - if (!file_exists("$work_dir/config.php") || !file_exists("$work_dir/include/sanity_check.php")) { - array_push($log, "Work directory $work_dir doesn't look like tt-rss installation."); - $stop = true; break; - } - - if (!is_writable(sys_get_temp_dir())) { - array_push($log, "System temporary directory should be writable as current user."); - $stop = true; break; - } - - // bah, also humbug - putenv("PATH=" . getenv("PATH") . PATH_SEPARATOR . "/bin" . - PATH_SEPARATOR . "/usr/bin"); - - array_push($log, "Checking for system() call..."); - - $disabled = explode(',', ini_get('disable_functions')); - foreach ($disabled as $function) { - if ( trim($function) == 'system' ) { - array_push($log, "Can not execute commands with PHP's system() function."); - $stop = true; - } - } - - if ( $stop == true ) { - break; - } - - array_push($log, "Checking for tar..."); - - $system_rc = 0; - system("which tar >/dev/null", $system_rc); - - if ($system_rc != 0) { - array_push($log, "Could not run tar executable (RC=$system_rc)."); - $stop = true; break; - } - - array_push($log, "Checking for gunzip..."); - - $system_rc = 0; - system("which gunzip >/dev/null", $system_rc); - - if ($system_rc != 0) { - array_push($log, "Could not run gunzip executable (RC=$system_rc)."); - $stop = true; break; - } - - array_push($log, "Checking for latest version..."); - - $version_info = json_decode(fetch_file_contents("http://tt-rss.org/version.php"), - true); - - if (!is_array($version_info)) { - array_push($log, "Unable to fetch version information."); - $stop = true; break; - } - - $target_version = $version_info["version"]; - $target_dir = "$parent_dir/Tiny-Tiny-RSS-$target_version"; - - array_push($log, "Target version: $target_version"); - $params["target_version"] = $target_version; - - if (version_compare(VERSION, $target_version) != -1 && !$force) { - array_push($log, "Your Tiny Tiny RSS installation is up to date."); - $stop = true; break; - } - - if (file_exists($target_dir)) { - array_push($log, "Target directory $target_dir already exists."); - $stop = true; break; - } - - break; - case 1: - $target_version = $params["target_version"]; - -/* array_push($log, "Downloading checksums..."); - $md5sum_data = fetch_file_contents("http://tt-rss.org/download/md5sum.txt"); - - if (!$md5sum_data) { - array_push($log, "Could not download checksums."); - $stop = true; break; - } - - $md5sum_data = explode("\n", $md5sum_data); - - foreach ($md5sum_data as $line) { - $pair = explode(" ", $line); - - if ($pair[1] == "tt-rss-$target_version.tar.gz") { - $target_md5sum = $pair[0]; - break; - } - } - - if (!$target_md5sum) { - array_push($log, "Unable to locate checksum for target version."); - $stop = true; break; - } - - $params["target_md5sum"] = $target_md5sum; */ - - array_push($log, "Proceeding to download..."); - - break; - case 2: - $target_version = $params["target_version"]; - // $target_md5sum = $params["target_md5sum"]; - - array_push($log, "Downloading distribution tarball..."); - - $tarball_url = "https://github.com/gothfox/Tiny-Tiny-RSS/archive/$target_version.tar.gz"; - $data = fetch_file_contents($tarball_url); - - if (!$data) { - array_push($log, "Could not download distribution tarball ($tarball_url)."); - $stop = true; break; - } - - /* array_push($log, "Verifying tarball checksum..."); - - $test_md5sum = md5($data); - - if ($test_md5sum != $target_md5sum) { - array_push($log, "Downloaded checksum doesn't match (got $test_md5sum, expected $target_md5sum)."); - $stop = true; break; - } */ - - $tmp_file = tempnam(sys_get_temp_dir(), 'tt-rss'); - array_push($log, "Saving download to $tmp_file"); - - if (!file_put_contents($tmp_file, $data)) { - array_push($log, "Unable to save download."); - $stop = true; break; - } - - $params["tmp_file"] = $tmp_file; - - break; - case 3: - $tmp_file = $params["tmp_file"]; - $target_version = $params["target_version"]; - - if (!chdir($parent_dir)) { - array_push($log, "Unable to change into parent directory."); - $stop = true; break; - } - - array_push($log, "Extracting tarball..."); - system("tar zxf $tmp_file", $system_rc); - - if ($system_rc != 0) { - array_push($log, "Error while extracting tarball (RC=$system_rc)."); - $stop = true; break; - } - - $target_dir = "$parent_dir/Tiny-Tiny-RSS-$target_version"; - - if (!is_dir($target_dir)) { - array_push($log, "Target directory ($target_dir) not found."); - $stop = true; break; - } - - $old_dir = tmpdirname($parent_dir, "tt-rss-old"); - - array_push($log, "Renaming tt-rss directory to ".basename($old_dir)); - if (!rename($work_dir, $old_dir)) { - array_push($log, "Unable to rename tt-rss directory."); - $stop = true; break; - } - - array_push($log, "Renaming target directory..."); - if (!rename($target_dir, $work_dir)) { - array_push($log, "Unable to rename target directory."); - $stop = true; break; - } - - if (!chdir($work_dir)) { - array_push($log, "Unable to change to work directory: $work_dir"); - $stop = true; break; - } - - array_push($log, "Copying config.php..."); - if (!copy("$old_dir/config.php", "$work_dir/config.php")) { - array_push($log, "Unable to copy config.php to $work_dir."); - $stop = true; break; - } - - array_push($log, "Cleaning up..."); - unlink($tmp_file); - - array_push($log, "Fixing permissions..."); - - $directories = array( - CACHE_DIR, - CACHE_DIR . "/export", - CACHE_DIR . "/images", - CACHE_DIR . "/js", - CACHE_DIR . "/simplepie", - CACHE_DIR . "/upload", - ICONS_DIR, - LOCK_DIRECTORY); - - foreach ($directories as $dir) { - array_push($log, "-> $dir"); - chmod($dir, 0777); - } - - if (ICONS_DIR == "feed-icons") { - array_push($log, "Migrating feed icons..."); - - $icons = glob("$old_dir/feed-icons/*.ico"); - $icons_copied = 0; - - foreach ($icons as $icon) { - $icon = basename($icon); - - if (copy("$old_dir/feed-icons/$icon", "$work_dir/feed-icons/$icon")) { - ++$icons_copied; - } - } - - array_push($log, "Done; $icons_copied files copied"); - - } else { - array_push($log, "Not migrating feed icons, ICONS_DIR modified."); - } - - array_push($log, "Upgrade completed."); - array_push($log, "Your old tt-rss directory is saved at $old_dir. ". - "Please migrate locally modified files (if any) and remove it."); - array_push($log, "You might need to re-enter current directory in shell to see new files."); - - $stop = true; - break; - default: - $stop = true; - } - } - - return array("step" => $step, "stop" => $stop, "params" => $params, "log" => $log); - } - - function update_self_cli($force = false) { - $step = 0; - $stop = false; - $params = array(); - - while (!$stop) { - $rc = $this->update_self_step($step, $params, $force); - - $params = $rc['params']; - $stop = $rc['stop']; - - foreach ($rc['log'] as $line) { - _debug($line); - } - ++$step; - } - } - - function update_self($args) { - _debug("READ THE FOLLOWING BEFORE CONTINUING!"); - _debug("* It is suggested to backup your tt-rss directory first."); - _debug("* Your database will not be modified."); - _debug("* Your current tt-rss installation directory will not be modified. It will be renamed and left in the parent directory. You will be able to migrate all your customized files after update finishes."); - _debug("Type 'yes' to continue."); - - $input = read_stdin(); - - if ($input != 'yes' && $input != 'force') - exit; - - $this->update_self_cli($input == 'force'); - } - - 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(); - $_SESSION["pref_last_version_check"] = time(); - } - - if (is_array($_SESSION["version_data"])) { - $version = $_SESSION["version_data"]["version"]; - $version_id = $_SESSION["version_data"]["version_id"]; - print_notice(T_sprintf("New version of Tiny Tiny RSS is available (%s).", "$version")); - - $details = "http://tt-rss.org/redmine/versions/$version_id"; - - print "

"; - - print "

"; - - } else { - print_notice(__("Your Tiny Tiny RSS installation is up to date.")); - - print "

"; - - } - - print "
"; #pane - } - } - - function updateSelf() { - print_warning(__("Do not close this dialog until updating is finished.")); - - print "
"; - - print ""; - - print "
    "; - print "
  • " .__("It is suggested to backup your tt-rss directory first.") . "
  • "; - print "
  • " . __("Your database will not be modified.") . "
  • "; - print "
  • " . __("Your current tt-rss installation directory will not be modified. It will be renamed and left in the parent directory. You will be able to migrate all your customized files after update finishes.") . "
  • "; - print "
  • " . __("Ready to update.") . "
  • "; - 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) { - print json_encode($this->update_self_step($step, $params, $force)); - } - } - - function api_version() { - return 2; - } - -} -?> diff --git a/plugins/updater/updater.js b/plugins/updater/updater.js deleted file mode 100644 index 4a1847372..000000000 --- a/plugins/updater/updater.js +++ /dev/null @@ -1,69 +0,0 @@ -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(__("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); - } -} - -- cgit v1.2.3-54-g00ecf From efcc5d365db4d1b0f3a26098011319daf50e018e Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 3 Feb 2015 14:39:15 +0300 Subject: add placeholder update checker using git changesets --- include/functions2.php | 29 +++++++++++++++++++++++++++++ include/version.php | 4 ++++ index.php | 4 ++++ js/tt-rss.js | 10 ++++++++++ 4 files changed, 47 insertions(+) (limited to 'js') diff --git a/include/functions2.php b/include/functions2.php index 4e133dde4..0207c1240 100644 --- a/include/functions2.php +++ b/include/functions2.php @@ -203,6 +203,26 @@ return array($prefixes, $hotkeys); } + function check_for_update() { + if (defined("GIT_VERSION_TIMESTAMP")) { + $content = @fetch_file_contents("http://tt-rss.org/version.json"); + + if ($content) { + $content = json_decode($content, true); + + if ($content && isset($content["changeset"])) { + if ((int)GIT_VERSION_TIMESTAMP < (int)$content["changeset"]["timestamp"] && + GIT_VERSION_HEAD != $content["changeset"]["id"]) { + + return $content["changeset"]["id"]; + } + } + } + } + + return false; + } + function make_runtime_info() { $data = array(); @@ -221,6 +241,15 @@ $data['dep_ts'] = calculate_dep_timestamp(); $data['reload_on_ts_change'] = !defined('_NO_RELOAD_ON_TS_CHANGE'); + + if (true || $_SESSION["last_version_check"] + 86400 + rand(-1000, 1000) < time()) { + $update_result = @check_for_update(); + + $data["update_result"] = $update_result; + + $_SESSION["last_version_check"] = time(); + } + if (file_exists(LOCK_DIRECTORY . "/update_daemon.lock")) { $data['daemon_is_running'] = (int) file_is_locked("update_daemon.lock"); diff --git a/include/version.php b/include/version.php index a7ca8a32b..34c11e6e7 100644 --- a/include/version.php +++ b/include/version.php @@ -8,6 +8,10 @@ if (is_dir("$root_dir/.git") && file_exists("$root_dir/.git/refs/heads/master")) { $suffix = substr(trim(file_get_contents("$root_dir/.git/refs/heads/master")), 0, 7); + $timestamp = filemtime("$root_dir/.git/refs/heads/master"); + + define("GIT_VERSION_HEAD", $suffix); + define("GIT_VERSION_TIMESTAMP", $timestamp); return VERSION_STATIC . ".$suffix"; } else { diff --git a/index.php b/index.php index 309ca2e29..322635978 100644 --- a/index.php +++ b/index.php @@ -252,6 +252,10 @@
    + +
    diff --git a/js/tt-rss.js b/js/tt-rss.js index 26749d108..df41a9cc5 100644 --- a/js/tt-rss.js +++ b/js/tt-rss.js @@ -767,6 +767,16 @@ function parse_runtime_info(data) { return; } + if (k == "update_result") { + var updatesIcon = dijit.byId("updatesIcon").domNode; + + if (v != "") { + Element.show(updatesIcon); + } else { + Element.hide(updatesIcon); + } + } + if (k == "daemon_stamp_ok" && v != 1) { notify_error("Update daemon is not updating feeds.", true); return; -- cgit v1.2.3-54-g00ecf From 119ba03bd4fefdcf65dc044fb5ee1a9a34d47e58 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 3 Feb 2015 14:42:20 +0300 Subject: minor fixes for previous --- include/functions2.php | 2 +- js/tt-rss.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'js') diff --git a/include/functions2.php b/include/functions2.php index 0207c1240..13b92225e 100644 --- a/include/functions2.php +++ b/include/functions2.php @@ -220,7 +220,7 @@ } } - return false; + return ""; } function make_runtime_info() { diff --git a/js/tt-rss.js b/js/tt-rss.js index df41a9cc5..e79f47176 100644 --- a/js/tt-rss.js +++ b/js/tt-rss.js @@ -770,7 +770,7 @@ function parse_runtime_info(data) { if (k == "update_result") { var updatesIcon = dijit.byId("updatesIcon").domNode; - if (v != "") { + if (v) { Element.show(updatesIcon); } else { Element.hide(updatesIcon); -- cgit v1.2.3-54-g00ecf