From 40fe2d73821788e7c202191dc7b94b025585d338 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 16 Apr 2013 15:44:38 +0400 Subject: remove js-based player, better mp3 support detection for html5 audio --- js/tt-rss.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'js/tt-rss.js') diff --git a/js/tt-rss.js b/js/tt-rss.js index a572e5324..fe12297d4 100644 --- a/js/tt-rss.js +++ b/js/tt-rss.js @@ -248,11 +248,15 @@ function init() { loading_set_progress(20); - var hasAudio = !!((myAudioTag = document.createElement('audio')).canPlayType); + var a = document.createElement('audio'); + + var hasAudio = !!a.canPlayType; var hasSandbox = "sandbox" in document.createElement("iframe"); + var hasMp3 = !!(a.canPlayType && a.canPlayType('audio/mpeg;').replace(/no/, '')); new Ajax.Request("backend.php", { parameters: {op: "rpc", method: "sanityCheck", hasAudio: hasAudio, + hasMp3: hasMp3, hasSandbox: hasSandbox}, onComplete: function(transport) { backend_sanity_check_callback(transport); -- cgit v1.2.3-54-g00ecf From 3cc5a3cd43be77b64e395d8a9178814330505ce2 Mon Sep 17 00:00:00 2001 From: supahgreg Date: Tue, 16 Apr 2013 20:08:17 -0500 Subject: minor typo fix in hash_get() --- js/tt-rss.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'js/tt-rss.js') diff --git a/js/tt-rss.js b/js/tt-rss.js index fe12297d4..9a223733f 100644 --- a/js/tt-rss.js +++ b/js/tt-rss.js @@ -1076,7 +1076,7 @@ function hash_get(key) { kv = window.location.hash.substring(1).toQueryParams(); return kv[key]; } catch (e) { - exception_error("hash_set", e); + exception_error("hash_get", e); } } function hash_set(key, value) { -- cgit v1.2.3-54-g00ecf From da76e61af8d8c9129acfbf0db670342853a62747 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Wed, 17 Apr 2013 19:58:04 +0400 Subject: catchupAllFeeds: do not call obsolete callback --- js/tt-rss.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'js/tt-rss.js') diff --git a/js/tt-rss.js b/js/tt-rss.js index 9a223733f..9e4cb63ce 100644 --- a/js/tt-rss.js +++ b/js/tt-rss.js @@ -134,7 +134,8 @@ function catchupAllFeeds() { new Ajax.Request("backend.php", { parameters: query_str, onComplete: function(transport) { - feedlist_callback2(transport); + request_counters(true); + viewCurrentFeed(); } }); global_unread = 0; -- cgit v1.2.3-54-g00ecf From 8d388f321b22691246393e3f812d42ab388c8c42 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Wed, 24 Apr 2013 19:49:37 +0400 Subject: add a simple JS-based hook host --- index.php | 2 +- js/feedlist.js | 1 + js/tt-rss.js | 2 ++ js/viewfeed.js | 5 +++++ 4 files changed, 9 insertions(+), 1 deletion(-) (limited to 'js/tt-rss.js') diff --git a/index.php b/index.php index bf78be1f3..6a34be5e8 100644 --- a/index.php +++ b/index.php @@ -100,7 +100,7 @@ require 'lib/jshrink/Minifier.php'; print get_minified_js(array("tt-rss", - "functions", "feedlist", "viewfeed", "FeedTree")); + "functions", "feedlist", "viewfeed", "FeedTree", "PluginHost")); foreach (PluginHost::getInstance()->get_plugins() as $n => $p) { if (method_exists($p, "get_js")) { diff --git a/js/feedlist.js b/js/feedlist.js index f4e07517e..2c1acc310 100644 --- a/js/feedlist.js +++ b/js/feedlist.js @@ -139,6 +139,7 @@ function viewfeed(feed, method, is_cat, offset, background, infscroll_req) { onComplete: function(transport) { setFeedExpandoIcon(feed, is_cat, 'images/blank_icon.gif'); headlines_callback2(transport, offset, background, infscroll_req); + PluginHost.run(PluginHost.HOOK_FEED_LOADED, [feed, is_cat]); } }); } catch (e) { diff --git a/js/tt-rss.js b/js/tt-rss.js index 9e4cb63ce..3f8545149 100644 --- a/js/tt-rss.js +++ b/js/tt-rss.js @@ -40,6 +40,8 @@ function setActiveFeedId(id, is_cat) { $("headlines-frame").setAttribute("is-cat", is_cat ? 1 : 0); selectFeed(id, is_cat); + + PluginHost.run(PluginHost.HOOK_FEED_SET_ACTIVE, _active_article_id); } catch (e) { exception_error("setActiveFeedId", e); } diff --git a/js/viewfeed.js b/js/viewfeed.js index ddee1e461..14ef2f816 100644 --- a/js/viewfeed.js +++ b/js/viewfeed.js @@ -232,6 +232,8 @@ function render_article(article) { c.domNode.scrollTop = 0; } catch (e) { }; + PluginHost.run(PluginHost.HOOK_ARTICLE_RENDERED, article); + c.attr('content', article); correctHeadlinesOffset(getActiveArticleId()); @@ -1193,6 +1195,7 @@ function cdmScrollToArticleId(id, force) { function setActiveArticleId(id) { _active_article_id = id; + PluginHost.run(PluginHost.HOOK_ARTICLE_SET_ACTIVE, _active_article_id); } function getActiveArticleId() { @@ -1219,6 +1222,8 @@ function unpackVisibleHeadlines() { var cencw = $("CENCW-" + child.id.replace("RROW-", "")); if (cencw) { + PluginHost.run(PluginHost.HOOK_ARTICLE_RENDERED_CDM, child); + cencw.innerHTML = htmlspecialchars_decode(cencw.innerHTML); cencw.setAttribute('id', ''); Element.show(cencw); -- cgit v1.2.3-54-g00ecf From 204f9b186ff903bb5638320ba73614a6a89e2d6d Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Thu, 25 Apr 2013 14:04:49 +0400 Subject: remove cdmUnexpandArticle --- js/tt-rss.js | 2 +- js/viewfeed.js | 36 ++++++++++-------------------------- 2 files changed, 11 insertions(+), 27 deletions(-) (limited to 'js/tt-rss.js') diff --git a/js/tt-rss.js b/js/tt-rss.js index 3f8545149..88a360f99 100644 --- a/js/tt-rss.js +++ b/js/tt-rss.js @@ -309,7 +309,7 @@ function init() { var id = getActiveArticleId(); var elem = $("CICD-"+id); if(elem.visible()) { - cdmUnexpandArticle(null, id); + cdmCollapseArticle(null, id, false); } else { cdmExpandArticle(id); diff --git a/js/viewfeed.js b/js/viewfeed.js index da869d92a..ada225cbf 100644 --- a/js/viewfeed.js +++ b/js/viewfeed.js @@ -1395,8 +1395,10 @@ function catchupRelativeToArticle(below, id) { } } -function cdmCollapseArticle(event, id) { +function cdmCollapseArticle(event, id, unmark) { try { + if (unmark == undefined) unmark = true; + var row = $("RROW-" + id); var elem = $("CICD-" + id); @@ -1407,12 +1409,15 @@ function cdmCollapseArticle(event, id) { Element.hide(elem); Element.show("CEXC-" + id); Element.hide(collapse); - row.removeClassName("active"); - markHeadline(id, false); + if (unmark) { + row.removeClassName("active"); + + markHeadline(id, false); - if (id == getActiveArticleId()) { - setActiveArticleId(0); + if (id == getActiveArticleId()) { + setActiveArticleId(0); + } } if (event) Event.stop(event); @@ -1425,27 +1430,6 @@ function cdmCollapseArticle(event, id) { } } -function cdmUnexpandArticle(event, id) { - try { - var row = $("RROW-" + id); - var elem = $("CICD-" + id); - - if (elem && row) { - var collapse = $$("div#RROW-" + id + - " span[class='collapseBtn']")[0]; - - Element.hide(elem); - Element.show("CEXC-" + id); - Element.hide(collapse); - - if (event) Event.stop(event); - } - - } catch (e) { - exception_error("cdmUnexpandArticle", e); - } -} - function cdmExpandArticle(id, noexpand) { try { console.log("cdmExpandArticle " + id); -- cgit v1.2.3-54-g00ecf From 6bfc97da869ca180d2f5fee01c9ff503cb47b1bd Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Fri, 26 Apr 2013 10:31:57 +0400 Subject: add automatic timezone (based on client tz offset) --- classes/rpc.php | 1 + include/functions.php | 17 +++++++++++------ js/prefs.js | 5 ++++- js/tt-rss.js | 2 ++ lib/timezones.txt | 1 + 5 files changed, 19 insertions(+), 7 deletions(-) (limited to 'js/tt-rss.js') diff --git a/classes/rpc.php b/classes/rpc.php index 750aa2cb1..62d884673 100644 --- a/classes/rpc.php +++ b/classes/rpc.php @@ -334,6 +334,7 @@ class RPC extends Handler_Protected { $_SESSION["hasAudio"] = $_REQUEST["hasAudio"] === "true"; $_SESSION["hasSandbox"] = $_REQUEST["hasSandbox"] === "true"; $_SESSION["hasMp3"] = $_REQUEST["hasMp3"] === "true"; + $_SESSION["clientTzOffset"] = $_REQUEST["clientTzOffset"]; $reply = array(); diff --git a/include/functions.php b/include/functions.php index b54187e18..4272c649d 100644 --- a/include/functions.php +++ b/include/functions.php @@ -862,13 +862,18 @@ $user_tz_string = get_pref('USER_TIMEZONE', $owner_uid); - try { - if (!$user_tz) $user_tz = new DateTimeZone($user_tz_string); - } catch (Exception $e) { - $user_tz = $utc_tz; - } + if ($user_tz_string != 'Automatic') { - $tz_offset = $user_tz->getOffset($dt); + try { + if (!$user_tz) $user_tz = new DateTimeZone($user_tz_string); + } catch (Exception $e) { + $user_tz = $utc_tz; + } + + $tz_offset = $user_tz->getOffset($dt); + } else { + $tz_offset = (int) $_SESSION["clientTzOffset"]; + } $user_timestamp = $dt->format('U') + $tz_offset; diff --git a/js/prefs.js b/js/prefs.js index 8612b70fb..431a1fe84 100644 --- a/js/prefs.js +++ b/js/prefs.js @@ -962,8 +962,11 @@ function init() { dojo.addOnLoad(function() { loading_set_progress(50); + var clientTzOffset = new Date().getTimezoneOffset() * 60; + new Ajax.Request("backend.php", { - parameters: {op: "rpc", method: "sanityCheck"}, + parameters: {op: "rpc", method: "sanityCheck", + clientTzOffset: clientTzOffset }, onComplete: function(transport) { backend_sanity_check_callback(transport); } }); diff --git a/js/tt-rss.js b/js/tt-rss.js index 88a360f99..a7518959c 100644 --- a/js/tt-rss.js +++ b/js/tt-rss.js @@ -256,10 +256,12 @@ function init() { var hasAudio = !!a.canPlayType; var hasSandbox = "sandbox" in document.createElement("iframe"); var hasMp3 = !!(a.canPlayType && a.canPlayType('audio/mpeg;').replace(/no/, '')); + var clientTzOffset = new Date().getTimezoneOffset() * 60; new Ajax.Request("backend.php", { parameters: {op: "rpc", method: "sanityCheck", hasAudio: hasAudio, hasMp3: hasMp3, + clientTzOffset: clientTzOffset, hasSandbox: hasSandbox}, onComplete: function(transport) { backend_sanity_check_callback(transport); diff --git a/lib/timezones.txt b/lib/timezones.txt index 66824ec93..58108f031 100644 --- a/lib/timezones.txt +++ b/lib/timezones.txt @@ -1,3 +1,4 @@ +Automatic Africa/Abidjan Africa/Accra Africa/Addis_Ababa -- cgit v1.2.3-54-g00ecf From 8ceea119a8287568439a2a9d167b333f74a47e21 Mon Sep 17 00:00:00 2001 From: supahgreg Date: Sat, 27 Apr 2013 11:01:54 -0500 Subject: Add JS PluginHost.HOOK_PARAMS_LOADED and PluginHost.HOOK_RUNTIME_INFO_LOADED to notify when interesting info has been created/updated. --- js/PluginHost.js | 2 ++ js/functions.js | 3 +++ js/tt-rss.js | 4 +++- 3 files changed, 8 insertions(+), 1 deletion(-) (limited to 'js/tt-rss.js') diff --git a/js/PluginHost.js b/js/PluginHost.js index de4c57b60..668d215f9 100644 --- a/js/PluginHost.js +++ b/js/PluginHost.js @@ -8,6 +8,8 @@ var PluginHost = { HOOK_FEED_LOADED: 5, HOOK_ARTICLE_EXPANDED: 6, HOOK_ARTICLE_COLLAPSED: 7, + HOOK_PARAMS_LOADED: 8, + HOOK_RUNTIME_INFO_LOADED: 9, hooks: [], register: function (name, callback) { if (typeof(this.hooks[name]) == 'undefined') diff --git a/js/functions.js b/js/functions.js index 87c52b709..8691c1ee5 100644 --- a/js/functions.js +++ b/js/functions.js @@ -1277,6 +1277,9 @@ function backend_sanity_check_callback(transport) { } init_params = params; + + // PluginHost might not be available on non-index pages + window.PluginHost && PluginHost.run(PluginHost.HOOK_PARAMS_LOADED, init_params); } sanity_check_done = true; diff --git a/js/tt-rss.js b/js/tt-rss.js index a7518959c..2a741ab2d 100644 --- a/js/tt-rss.js +++ b/js/tt-rss.js @@ -753,6 +753,8 @@ function parse_runtime_info(data) { init_params[k] = v; notify(''); } + + PluginHost.run(PluginHost.HOOK_RUNTIME_INFO_LOADED, data); } function collapse_feedlist() { @@ -992,7 +994,7 @@ function handle_rpc_json(transport, scheduled_call) { if (counters) parse_counters(counters, scheduled_call); - var runtime_info = reply['runtime-info'];; + var runtime_info = reply['runtime-info']; if (runtime_info) parse_runtime_info(runtime_info); -- cgit v1.2.3-54-g00ecf From 27372ddac6b17ab2700ec2f9bc6bc1ac0ea153fe Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 30 Apr 2013 20:07:08 +0400 Subject: fix editArticleTags() call broken on archived feed --- classes/feeds.php | 2 +- js/tt-rss.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'js/tt-rss.js') diff --git a/classes/feeds.php b/classes/feeds.php index 567d13b25..f21bb3ce5 100644 --- a/classes/feeds.php +++ b/classes/feeds.php @@ -687,7 +687,7 @@ class Feeds extends Handler_Protected { $reply['content'] .= "Tags $tags_str (+)"; + href=\"#\" onclick=\"editArticleTags($id)\">(+)"; $num_comments = $line["num_comments"]; $entry_comments = ""; diff --git a/js/tt-rss.js b/js/tt-rss.js index 2a741ab2d..c6c0c13dd 100644 --- a/js/tt-rss.js +++ b/js/tt-rss.js @@ -332,7 +332,7 @@ function init() { hotkey_actions["edit_tags"] = function() { var id = getActiveArticleId(); if (id) { - editArticleTags(id, getActiveFeedId(), isCdmMode()); + editArticleTags(id); }; } hotkey_actions["dismiss_selected"] = function() { -- cgit v1.2.3-54-g00ecf From ea18cceaca2fb7562f07a78248fcc15469413629 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Thu, 2 May 2013 09:48:38 +0400 Subject: remove splash before freshfeed is loaded --- js/feedlist.js | 2 ++ js/tt-rss.js | 4 ++-- js/viewfeed.js | 2 -- 3 files changed, 4 insertions(+), 4 deletions(-) (limited to 'js/tt-rss.js') diff --git a/js/feedlist.js b/js/feedlist.js index 2c1acc310..932297be8 100644 --- a/js/feedlist.js +++ b/js/feedlist.js @@ -151,6 +151,8 @@ function feedlist_init() { try { console.log("in feedlist init"); + loading_set_progress(50); + document.onkeydown = hotkey_handler; setTimeout("hotkey_prefix_timeout()", 5*1000); diff --git a/js/tt-rss.js b/js/tt-rss.js index c6c0c13dd..577922948 100644 --- a/js/tt-rss.js +++ b/js/tt-rss.js @@ -249,7 +249,7 @@ function init() { if (!genericSanityCheck()) return false; - loading_set_progress(20); + loading_set_progress(30); var a = document.createElement('audio'); @@ -573,7 +573,7 @@ function init_second_stage() { setActiveFeedId(hash_feed_id, hash_feed_is_cat); } - loading_set_progress(30); + loading_set_progress(50); // can't use cache_clear() here because viewfeed might not have initialized yet if ('sessionStorage' in window && window['sessionStorage'] !== null) diff --git a/js/viewfeed.js b/js/viewfeed.js index ada225cbf..3e78f4ca9 100644 --- a/js/viewfeed.js +++ b/js/viewfeed.js @@ -20,8 +20,6 @@ function headlines_callback2(transport, offset, background, infscroll_req) { try { handle_rpc_json(transport); - loading_set_progress(25); - console.log("headlines_callback2 [offset=" + offset + "] B:" + background + " I:" + infscroll_req); var is_cat = false; -- cgit v1.2.3-54-g00ecf