From ee5170424e8dc571b3a811e02f906aef5ee49e83 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Wed, 10 Aug 2016 10:01:05 +0300 Subject: [PATCH] dojo: main UI: load stuff asynchronously --- index.php | 11 +- js/tt-rss.js | 345 ++++++++++++++++--------------- plugins/af_zz_noautoplay/init.js | 63 +++--- plugins/shorten_expanded/init.js | 34 +-- 4 files changed, 239 insertions(+), 214 deletions(-) diff --git a/index.php b/index.php index ecde3bae2..36734619f 100644 --- a/index.php +++ b/index.php @@ -88,6 +88,15 @@ + + get_plugins() as $n => $p) { if (method_exists($p, "get_js")) { diff --git a/js/tt-rss.js b/js/tt-rss.js index 108b65a7f..776c5d02b 100644 --- a/js/tt-rss.js +++ b/js/tt-rss.js @@ -216,90 +216,94 @@ function genericSanityCheck() { function init() { try { - //dojo.registerModulePath("fox", "../../js/"); + require(['dojo/_base/kernel', 'dojo/ready', 'dojo/parser', 'dojo/_base/loader'], function(dojo, ready, parser) { - dojo.require("fox.FeedTree"); + //dojo.registerModulePath("fox", "../../js/"); - dojo.require("dijit.ColorPalette"); - dojo.require("dijit.Dialog"); - dojo.require("dijit.form.Button"); - dojo.require("dijit.form.CheckBox"); - dojo.require("dijit.form.DropDownButton"); - dojo.require("dijit.form.FilteringSelect"); - dojo.require("dijit.form.Form"); - dojo.require("dijit.form.RadioButton"); - dojo.require("dijit.form.Select"); - dojo.require("dijit.form.SimpleTextarea"); - dojo.require("dijit.form.TextBox"); - dojo.require("dijit.form.ComboBox"); - dojo.require("dijit.form.ValidationTextBox"); - dojo.require("dijit.InlineEditBox"); - dojo.require("dijit.layout.AccordionContainer"); - dojo.require("dijit.layout.BorderContainer"); - dojo.require("dijit.layout.ContentPane"); - dojo.require("dijit.layout.TabContainer"); - dojo.require("dijit.Menu"); - dojo.require("dijit.ProgressBar"); - dojo.require("dijit.ProgressBar"); - dojo.require("dijit.Toolbar"); - dojo.require("dijit.Tree"); - dojo.require("dijit.tree.dndSource"); - dojo.require("dojo.data.ItemFileWriteStore"); + dojo.require("fox.FeedTree"); - dojo.parser.parse(); + dojo.require("dijit.ColorPalette"); + dojo.require("dijit.Dialog"); + dojo.require("dijit.form.Button"); + dojo.require("dijit.form.ComboButton"); + dojo.require("dijit.form.CheckBox"); + dojo.require("dijit.form.DropDownButton"); + dojo.require("dijit.form.FilteringSelect"); + dojo.require("dijit.form.Form"); + dojo.require("dijit.form.RadioButton"); + dojo.require("dijit.form.Select"); + dojo.require("dijit.form.SimpleTextarea"); + dojo.require("dijit.form.TextBox"); + dojo.require("dijit.form.ComboBox"); + dojo.require("dijit.form.ValidationTextBox"); + dojo.require("dijit.InlineEditBox"); + dojo.require("dijit.layout.AccordionContainer"); + dojo.require("dijit.layout.BorderContainer"); + dojo.require("dijit.layout.ContentPane"); + dojo.require("dijit.layout.TabContainer"); + dojo.require("dijit.PopupMenuItem"); + dojo.require("dijit.Menu"); + dojo.require("dijit.ProgressBar"); + dojo.require("dijit.ProgressBar"); + dojo.require("dijit.Toolbar"); + dojo.require("dijit.Tree"); + dojo.require("dijit.tree.dndSource"); + dojo.require("dojo.data.ItemFileWriteStore"); - if (!genericSanityCheck()) - return false; + dojo.parser.parse(); - loading_set_progress(30); + if (!genericSanityCheck()) + return false; - var a = document.createElement('audio'); + loading_set_progress(30); - 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; + var a = document.createElement('audio'); - new Ajax.Request("backend.php", { - parameters: {op: "rpc", method: "sanityCheck", hasAudio: hasAudio, - hasMp3: hasMp3, - clientTzOffset: clientTzOffset, - hasSandbox: hasSandbox}, - onComplete: function(transport) { + 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); } }); - hotkey_actions["next_feed"] = function() { + hotkey_actions["next_feed"] = function() { var rv = dijit.byId("feedTree").getNextFeed( - getActiveFeedId(), activeFeedIsCat()); + getActiveFeedId(), activeFeedIsCat()); if (rv) viewfeed({feed: rv[0], is_cat: rv[1], can_wait: true}) - }; - hotkey_actions["prev_feed"] = function() { + }; + hotkey_actions["prev_feed"] = function() { var rv = dijit.byId("feedTree").getPreviousFeed( - getActiveFeedId(), activeFeedIsCat()); + getActiveFeedId(), activeFeedIsCat()); if (rv) viewfeed({feed: rv[0], is_cat: rv[1], can_wait: true}) - }; - hotkey_actions["next_article"] = function() { + }; + hotkey_actions["next_article"] = function() { moveToPost('next'); - }; - hotkey_actions["prev_article"] = function() { + }; + hotkey_actions["prev_article"] = function() { moveToPost('prev'); - }; - hotkey_actions["next_article_noscroll"] = function() { + }; + hotkey_actions["next_article_noscroll"] = function() { moveToPost('next', true); - }; - hotkey_actions["prev_article_noscroll"] = function() { + }; + hotkey_actions["prev_article_noscroll"] = function() { moveToPost('prev', true); - }; - hotkey_actions["next_article_noexpand"] = function() { + }; + hotkey_actions["next_article_noexpand"] = function() { moveToPost('next', true, true); - }; - hotkey_actions["prev_article_noexpand"] = function() { + }; + hotkey_actions["prev_article_noexpand"] = function() { moveToPost('prev', true, true); - }; - hotkey_actions["collapse_article"] = function() { + }; + hotkey_actions["collapse_article"] = function() { var id = getActiveArticleId(); var elem = $("CICD-"+id); @@ -311,8 +315,8 @@ function init() { cdmExpandArticle(id); } } - }; - hotkey_actions["toggle_expand"] = function() { + }; + hotkey_actions["toggle_expand"] = function() { var id = getActiveArticleId(); var elem = $("CICD-"+id); @@ -324,48 +328,48 @@ function init() { cdmExpandArticle(id); } } - }; - hotkey_actions["search_dialog"] = function() { + }; + hotkey_actions["search_dialog"] = function() { search(); - }; - hotkey_actions["toggle_mark"] = function() { + }; + hotkey_actions["toggle_mark"] = function() { selectionToggleMarked(undefined, false, true); - }; - hotkey_actions["toggle_publ"] = function() { + }; + hotkey_actions["toggle_publ"] = function() { selectionTogglePublished(undefined, false, true); - }; - hotkey_actions["toggle_unread"] = function() { + }; + hotkey_actions["toggle_unread"] = function() { selectionToggleUnread(undefined, false, true); - }; - hotkey_actions["edit_tags"] = function() { + }; + hotkey_actions["edit_tags"] = function() { var id = getActiveArticleId(); if (id) { editArticleTags(id); }; } - hotkey_actions["open_in_new_window"] = function() { + hotkey_actions["open_in_new_window"] = function() { if (getActiveArticleId()) { openArticleInNewWindow(getActiveArticleId()); return; } - }; - hotkey_actions["catchup_below"] = function() { + }; + hotkey_actions["catchup_below"] = function() { catchupRelativeToArticle(1); - }; - hotkey_actions["catchup_above"] = function() { + }; + hotkey_actions["catchup_above"] = function() { catchupRelativeToArticle(0); - }; - hotkey_actions["article_scroll_down"] = function() { + }; + hotkey_actions["article_scroll_down"] = function() { var ctr = $("content_insert") ? $("content_insert") : $("headlines-frame"); scrollArticle(40); - }; - hotkey_actions["article_scroll_up"] = function() { + }; + hotkey_actions["article_scroll_up"] = function() { var ctr = $("content_insert") ? $("content_insert") : $("headlines-frame"); scrollArticle(-40); - }; - hotkey_actions["close_article"] = function() { + }; + hotkey_actions["close_article"] = function() { if (isCdmMode()) { if (!getInitParam("cdm_expanded")) { cdmCollapseArticle(false, getActiveArticleId()); @@ -373,8 +377,8 @@ function init() { } else { closeArticlePanel(); } - }; - hotkey_actions["email_article"] = function() { + }; + hotkey_actions["email_article"] = function() { if (typeof emailArticle != "undefined") { emailArticle(); } else if (typeof mailtoArticle != "undefined") { @@ -382,103 +386,103 @@ function init() { } else { alert(__("Please enable mail plugin first.")); } - }; - hotkey_actions["select_all"] = function() { + }; + hotkey_actions["select_all"] = function() { selectArticles('all'); - }; - hotkey_actions["select_unread"] = function() { + }; + hotkey_actions["select_unread"] = function() { selectArticles('unread'); - }; - hotkey_actions["select_marked"] = function() { + }; + hotkey_actions["select_marked"] = function() { selectArticles('marked'); - }; - hotkey_actions["select_published"] = function() { + }; + hotkey_actions["select_published"] = function() { selectArticles('published'); - }; - hotkey_actions["select_invert"] = function() { + }; + hotkey_actions["select_invert"] = function() { selectArticles('invert'); - }; - hotkey_actions["select_none"] = function() { + }; + hotkey_actions["select_none"] = function() { selectArticles('none'); - }; - hotkey_actions["feed_refresh"] = function() { + }; + hotkey_actions["feed_refresh"] = function() { if (getActiveFeedId() != undefined) { viewfeed({feed: getActiveFeedId(), is_cat: activeFeedIsCat()}); return; } - }; - hotkey_actions["feed_unhide_read"] = function() { + }; + hotkey_actions["feed_unhide_read"] = function() { toggleDispRead(); - }; - hotkey_actions["feed_subscribe"] = function() { + }; + hotkey_actions["feed_subscribe"] = function() { quickAddFeed(); - }; - hotkey_actions["feed_debug_update"] = function() { - if (!activeFeedIsCat() && parseInt(getActiveFeedId()) > 0) { - window.open("backend.php?op=feeds&method=update_debugger&feed_id=" + getActiveFeedId() + - "&csrf_token=" + getInitParam("csrf_token")); - } else { - alert("You can't debug this kind of feed."); - } - }; + }; + hotkey_actions["feed_debug_update"] = function() { + if (!activeFeedIsCat() && parseInt(getActiveFeedId()) > 0) { + window.open("backend.php?op=feeds&method=update_debugger&feed_id=" + getActiveFeedId() + + "&csrf_token=" + getInitParam("csrf_token")); + } else { + alert("You can't debug this kind of feed."); + } + }; - hotkey_actions["feed_debug_viewfeed"] = function() { - viewfeed({feed: getActiveFeedId(), is_cat: activeFeedIsCat(), viewfeed_debug: true}); - }; + hotkey_actions["feed_debug_viewfeed"] = function() { + viewfeed({feed: getActiveFeedId(), is_cat: activeFeedIsCat(), viewfeed_debug: true}); + }; - hotkey_actions["feed_edit"] = function() { + hotkey_actions["feed_edit"] = function() { if (activeFeedIsCat()) alert(__("You can't edit this kind of feed.")); else editFeed(getActiveFeedId()); - }; - hotkey_actions["feed_catchup"] = function() { + }; + hotkey_actions["feed_catchup"] = function() { if (getActiveFeedId() != undefined) { catchupCurrentFeed(); return; } - }; - hotkey_actions["feed_reverse"] = function() { + }; + hotkey_actions["feed_reverse"] = function() { reverseHeadlineOrder(); - }; - hotkey_actions["feed_toggle_vgroup"] = function() { - var query_str = "?op=rpc&method=togglepref&key=VFEED_GROUP_BY_FEED"; + }; + hotkey_actions["feed_toggle_vgroup"] = function() { + var query_str = "?op=rpc&method=togglepref&key=VFEED_GROUP_BY_FEED"; - new Ajax.Request("backend.php", { - parameters: query_str, - onComplete: function(transport) { - viewCurrentFeed(); - } }); + new Ajax.Request("backend.php", { + parameters: query_str, + onComplete: function(transport) { + viewCurrentFeed(); + } }); - }; - hotkey_actions["catchup_all"] = function() { + }; + hotkey_actions["catchup_all"] = function() { catchupAllFeeds(); - }; - hotkey_actions["cat_toggle_collapse"] = function() { + }; + hotkey_actions["cat_toggle_collapse"] = function() { if (activeFeedIsCat()) { dijit.byId("feedTree").collapseCat(getActiveFeedId()); return; } - }; - hotkey_actions["goto_all"] = function() { + }; + hotkey_actions["goto_all"] = function() { viewfeed({feed: -4}); - }; - hotkey_actions["goto_fresh"] = function() { + }; + hotkey_actions["goto_fresh"] = function() { viewfeed({feed: -3}); - }; - hotkey_actions["goto_marked"] = function() { + }; + hotkey_actions["goto_marked"] = function() { viewfeed({feed: -1}); - }; - hotkey_actions["goto_published"] = function() { + }; + hotkey_actions["goto_published"] = function() { viewfeed({feed: -2}); - }; - hotkey_actions["goto_tagcloud"] = function() { + }; + hotkey_actions["goto_tagcloud"] = function() { displayDlg(__("Tag cloud"), "printTagCloud"); - }; - hotkey_actions["goto_prefs"] = function() { + }; + hotkey_actions["goto_prefs"] = function() { gotoPreferences(); - }; - hotkey_actions["select_article_cursor"] = function() { + }; + hotkey_actions["select_article_cursor"] = function() { var id = getArticleUnderPointer(); if (id) { var row = $("RROW-" + id); @@ -494,25 +498,25 @@ function init() { } } } - }; - hotkey_actions["create_label"] = function() { + }; + hotkey_actions["create_label"] = function() { addLabel(); - }; - hotkey_actions["create_filter"] = function() { + }; + hotkey_actions["create_filter"] = function() { quickAddFilter(); - }; - hotkey_actions["collapse_sidebar"] = function() { + }; + hotkey_actions["collapse_sidebar"] = function() { collapse_feedlist(); - }; - hotkey_actions["toggle_embed_original"] = function() { + }; + hotkey_actions["toggle_embed_original"] = function() { if (typeof embedOriginalArticle != "undefined") { if (getActiveArticleId()) embedOriginalArticle(getActiveArticleId()); } else { alert(__("Please enable embed_original plugin first.")); } - }; - hotkey_actions["toggle_widescreen"] = function() { + }; + hotkey_actions["toggle_widescreen"] = function() { if (!isCdmMode()) { _widescreen_mode = !_widescreen_mode; @@ -524,11 +528,11 @@ function init() { } else { alert(__("Widescreen is not available in combined mode.")); } - }; - hotkey_actions["help_dialog"] = function() { + }; + hotkey_actions["help_dialog"] = function() { helpDialog("main"); - }; - hotkey_actions["toggle_combined_mode"] = function() { + }; + hotkey_actions["toggle_combined_mode"] = function() { notify_progress("Loading, please wait..."); var value = isCdmMode() ? "false" : "true"; @@ -538,14 +542,14 @@ function init() { parameters: query, onComplete: function(transport) { setInitParam("combined_display_mode", - !getInitParam("combined_display_mode")); + !getInitParam("combined_display_mode")); closeArticlePanel(); viewCurrentFeed(); - } }); - }; - hotkey_actions["toggle_cdm_expanded"] = function() { + } }); + }; + hotkey_actions["toggle_cdm_expanded"] = function() { notify_progress("Loading, please wait..."); var value = getInitParam("cdm_expanded") ? "false" : "true"; @@ -557,8 +561,9 @@ function init() { setInitParam("cdm_expanded", !getInitParam("cdm_expanded")); viewCurrentFeed(); } }); - }; + }; + }); } catch (e) { exception_error("init", e); @@ -568,7 +573,11 @@ function init() { function init_second_stage() { try { - dojo.addOnLoad(function() { + Event.observe(window, 'resize', function() { + dijit.byId("main").resize(); + }); + + //dojo.addOnLoad(function() { updateFeedList(); closeArticlePanel(); @@ -594,7 +603,7 @@ function init_second_stage() { } }); - }); + //}); delCookie("ttrss_test"); diff --git a/plugins/af_zz_noautoplay/init.js b/plugins/af_zz_noautoplay/init.js index 9b7bf0077..3cf3a381c 100644 --- a/plugins/af_zz_noautoplay/init.js +++ b/plugins/af_zz_noautoplay/init.js @@ -1,40 +1,43 @@ -dojo.addOnLoad(function() { - PluginHost.register(PluginHost.HOOK_ARTICLE_RENDERED_CDM, function(row) { - if (row) { - console.log("af_zz_noautoplay!"); - console.log(row); +require(['dojo/_base/kernel', 'dojo/ready'], function (dojo, ready) { + dojo.addOnLoad(function () { + PluginHost.register(PluginHost.HOOK_ARTICLE_RENDERED_CDM, function (row) { + if (row) { + console.log("af_zz_noautoplay!"); + console.log(row); - var videos = row.getElementsByTagName("video"); - console.log(row.innerHTML); + var videos = row.getElementsByTagName("video"); + console.log(row.innerHTML); - for (i = 0; i < videos.length; i++) { + for (i = 0; i < videos.length; i++) { - videos[i].removeAttribute("autoplay"); - videos[i].pause(); - videos[i].onclick = function() { - this.paused ? this.play() : this.pause(); - } - } - } - - return true; - }); - - PluginHost.register(PluginHost.HOOK_ARTICLE_RENDERED, function(row) { - if (row) { - var videos = row.getElementsByTagName("video"); - - for (i = 0; i < videos.length; i++) { - videos[i].removeAttribute("autoplay"); - videos[i].pause(); - videos[i].onclick = function() { - this.paused ? this.play() : this.pause(); + videos[i].removeAttribute("autoplay"); + videos[i].pause(); + videos[i].onclick = function () { + this.paused ? this.play() : this.pause(); + } } } - } + return true; + }); + + PluginHost.register(PluginHost.HOOK_ARTICLE_RENDERED, function (row) { + if (row) { + var videos = row.getElementsByTagName("video"); + + for (i = 0; i < videos.length; i++) { + videos[i].removeAttribute("autoplay"); + videos[i].pause(); + videos[i].onclick = function () { + this.paused ? this.play() : this.pause(); + } + } + + } + + return true; + }); - return true; }); }); \ No newline at end of file diff --git a/plugins/shorten_expanded/init.js b/plugins/shorten_expanded/init.js index 5e9e84aec..899f8a54d 100644 --- a/plugins/shorten_expanded/init.js +++ b/plugins/shorten_expanded/init.js @@ -22,26 +22,30 @@ function expandSizeWrapper(id) { } -dojo.addOnLoad(function() { - PluginHost.register(PluginHost.HOOK_ARTICLE_RENDERED_CDM, function(row) { - if (getInitParam('cdm_expanded')) { +require(['dojo/_base/kernel', 'dojo/ready'], function (dojo, ready) { - window.setTimeout(function() { - if (row) { - if (row.offsetHeight >= _shorten_expanded_threshold * window.innerHeight) { - var content = row.select(".cdmContentInner")[0]; + dojo.addOnLoad(function() { + PluginHost.register(PluginHost.HOOK_ARTICLE_RENDERED_CDM, function(row) { + if (getInitParam('cdm_expanded')) { - if (content) { - content.innerHTML = "
" + - content.innerHTML + "
"; + window.setTimeout(function() { + if (row) { + if (row.offsetHeight >= _shorten_expanded_threshold * window.innerHeight) { + var content = row.select(".cdmContentInner")[0]; + if (content) { + content.innerHTML = "
" + + content.innerHTML + "
"; + + } } } - } - }, 150); - } + }, 150); + } - return true; + return true; + }); }); + });