From 25520e978436b29f77f3504e698f8f8609e60a1f Mon Sep 17 00:00:00 2001 From: Andrew Dolgov <noreply@fakecake.org> Date: Sun, 17 Jan 2021 11:27:07 +0300 Subject: [PATCH] Select... dropdown: replace dijit Select with DropDownButton, simplify layout PluginHost: add HOOK_HEADLINE_TOOLBAR_SELECT_MENU_ITEM Headlines.onActionChanged: removed --- classes/feeds.php | 59 ++++++++++++++++++------------------------ classes/pluginhost.php | 1 + js/Headlines.js | 5 ---- 3 files changed, 26 insertions(+), 39 deletions(-) diff --git a/classes/feeds.php b/classes/feeds.php index fcbb2e7f1..a46d008a5 100755 --- a/classes/feeds.php +++ b/classes/feeds.php @@ -61,51 +61,42 @@ class Feeds extends Handler_Protected { $reply .= "<span class=\"right\">"; $reply .= "<span id='selected_prompt'></span>"; $reply .= " "; - $reply .= "<select dojoType=\"fox.form.Select\" - onchange=\"Headlines.onActionChanged(this)\">"; - $reply .= "<option value=\"0\" disabled='1'>".__('Select...')."</option>"; - - $reply .= "<option value=\"Headlines.select('all')\">".__('All')."</option>"; - $reply .= "<option value=\"Headlines.select('unread')\">".__('Unread')."</option>"; - $reply .= "<option value=\"Headlines.select('invert')\">".__('Invert')."</option>"; - $reply .= "<option value=\"Headlines.select('none')\">".__('None')."</option>"; - - $reply .= "<option value=\"0\" disabled=\"1\">".__('Selection toggle:')."</option>"; - - $reply .= "<option value=\"Headlines.selectionToggleUnread()\">".__('Unread')."</option> - <option value=\"Headlines.selectionToggleMarked()\">".__('Starred')."</option> - <option value=\"Headlines.selectionTogglePublished()\">".__('Published')."</option>"; - - $reply .= "<option value=\"0\" disabled=\"1\">".__('Selection:')."</option>"; - - $reply .= "<option value=\"Headlines.catchupSelection()\">".__('Mark as read')."</option>"; - $reply .= "<option value=\"Article.selectionSetScore()\">".__('Set score')."</option>"; - - if ($feed_id == 0 && !$is_cat) { - $reply .= "<option value=\"Headlines.deleteSelection()\">".__('Delete')."</option>"; - } + $reply .= "<div dojoType='fox.form.DropDownButton' title='".__('Select articles')."'> + <span>".__("Select...")."</span> + <div dojoType='dijit.Menu' style='display: none;'> + <div dojoType='dijit.MenuItem' onclick='Headlines.select(\"all\")'>".__('All')."</div> + <div dojoType='dijit.MenuItem' onclick='Headlines.select(\"unread\")'>".__('Unread')."</div> + <div dojoType='dijit.MenuItem' onclick='Headlines.select(\"invert\")'>".__('Invert')."</div> + <div dojoType='dijit.MenuItem' onclick='Headlines.select(\"none\")'>".__('None')."</div> + <div dojoType='dijit.MenuSeparator'></div> + <div dojoType='dijit.MenuItem' onclick='Headlines.selectionToggleUnread()'>".__('Toggle unread')."</div> + <div dojoType='dijit.MenuItem' onclick='Headlines.selectionToggleMarked()'>".__('Toggle starred')."</div> + <div dojoType='dijit.MenuItem' onclick='Headlines.selectionTogglePublished()'>".__('Toggle published')."</div> + <div dojoType='dijit.MenuSeparator'></div> + <div dojoType='dijit.MenuItem' onclick='Headlines.catchupSelection()'>".__('Mark as read')."</div> + <div dojoType='dijit.MenuItem' onclick='Article.selectionSetScore()'>".__('Set score')."</div>"; if (PluginHost::getInstance()->get_plugin("mail")) { - $reply .= "<option value=\"Plugins.Mail.send()\">".__('Forward by email'). - "</option>"; + $reply .= "<div dojoType='dijit.MenuItem' value='Plugins.Mail.send()'>".__('Forward by email')."</div>"; } if (PluginHost::getInstance()->get_plugin("mailto")) { - $reply .= "<option value=\"Plugins.Mailto.send()\">".__('Forward by email'). - "</option>"; + $reply .= "<div dojoType='dijit.MenuItem' value='Plugins.Mailto.send()'>".__('Forward by email')."</div>"; } - //$reply .= "<option value=\"0\" disabled=\"1\">".__('Feed:')."</option>"; - - //$reply .= "<option value=\"catchupPage()\">".__('Mark as read')."</option>"; + foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_HEADLINE_TOOLBAR_SELECT_MENU_ITEM) as $p) { + $reply .= $p->hook_headline_toolbar_select_menu_item($feed_id, $is_cat); + } - /*$reply .= "<option value=\"App.displayDlg('".__("Show as feed")."','generatedFeed', '$feed_id:$is_cat:$rss_link')\">". - __('Show as feed')."</option>";*/ + if ($feed_id == 0 && !$is_cat) { + $reply .= "<div dojoType='dijit.MenuSeparator'></div> + <div dojoType='dijit.MenuItem' class='text-error' onclick='Headlines.deleteSelection()'>".__('Delete permanently')."</div>"; + } - $reply .= "</select>"; + $reply .= "</div>"; /* menu */ - //$reply .= "</h2"; + $reply .= "</div>"; /* dropdown */ foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_HEADLINE_TOOLBAR_BUTTON) as $p) { $reply .= $p->hook_headline_toolbar_button($feed_id, $is_cat); diff --git a/classes/pluginhost.php b/classes/pluginhost.php index f84b07251..08871af51 100755 --- a/classes/pluginhost.php +++ b/classes/pluginhost.php @@ -69,6 +69,7 @@ class PluginHost { const HOOK_ENCLOSURE_IMPORTED = 45; const HOOK_HEADLINES_CUSTOM_SORT_MAP = 46; const HOOK_HEADLINES_CUSTOM_SORT_OVERRIDE = 47; + const HOOK_HEADLINE_TOOLBAR_SELECT_MENU_ITEM = 48; const KIND_ALL = 1; const KIND_SYSTEM = 2; diff --git a/js/Headlines.js b/js/Headlines.js index 78ad6d9c4..03e3f506a 100755 --- a/js/Headlines.js +++ b/js/Headlines.js @@ -1207,11 +1207,6 @@ const Headlines = { }); } }, - onActionChanged: function (elem) { - // eslint-disable-next-line no-eval - eval(elem.value); - elem.attr('value', 'false'); - }, scrollToArticleId: function (id) { const container = $("headlines-frame"); const row = $("RROW-" + id); -- GitLab