diff options
author | Andrew Dolgov <[email protected]> | 2021-02-13 21:41:38 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2021-02-13 21:41:38 +0300 |
commit | 8464c619e413b4aabacb802e1afe49a7c960506a (patch) | |
tree | de14161b0a81fffefd25f57f9c239fb779362e79 /js | |
parent | 17413078a72e1298c6dc8953c40e8d83ce38c49c (diff) |
inactive feeds: use client dialog
Diffstat (limited to 'js')
-rw-r--r-- | js/PrefFeedTree.js | 109 |
1 files changed, 73 insertions, 36 deletions
diff --git a/js/PrefFeedTree.js b/js/PrefFeedTree.js index 7684c7f9d..3e3584a9a 100644 --- a/js/PrefFeedTree.js +++ b/js/PrefFeedTree.js @@ -1,5 +1,5 @@ /* eslint-disable prefer-rest-params */ -/* global __, lib, dijit, define, dojo, CommonDialogs, Notify, Tables, xhrPost, fox, App */ +/* global __, lib, dijit, define, dojo, CommonDialogs, Notify, Tables, xhrPost, xhrJson, fox, App */ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree", "dojo/_base/array", "dojo/cookie"], function (declare, domConstruct, checkBoxTree, array, cookie) { @@ -409,50 +409,87 @@ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree", "dojo/_b dialog.show(); }, showInactiveFeeds: function() { - const dialog = new fox.SingleUseDialog({ - id: "inactiveFeedsDlg", - title: __("Feeds without recent updates"), - getSelectedFeeds: function () { - return Tables.getSelected("inactive-feeds-list"); - }, - removeSelected: function () { - const sel_rows = this.getSelectedFeeds(); - - if (sel_rows.length > 0) { - if (confirm(__("Remove selected feeds?"))) { - Notify.progress("Removing selected feeds...", true); + xhrJson("backend.php", {op: 'pref-feeds', method: 'inactivefeeds'}, function (reply) { + + const dialog = new fox.SingleUseDialog({ + id: "inactiveFeedsDlg", + title: __("Feeds without recent updates"), + getSelectedFeeds: function () { + return Tables.getSelected("inactive-feeds-list"); + }, + removeSelected: function () { + const sel_rows = this.getSelectedFeeds(); + + if (sel_rows.length > 0) { + if (confirm(__("Remove selected feeds?"))) { + Notify.progress("Removing selected feeds...", true); + + const query = { + op: "pref-feeds", method: "remove", + ids: sel_rows.toString() + }; - const query = { - op: "pref-feeds", method: "remove", - ids: sel_rows.toString() - }; + xhrPost("backend.php", query, () => { + Notify.close(); - xhrPost("backend.php", query, () => { - Notify.close(); + const tree = dijit.byId("feedTree"); + if (tree) tree.reload(); - const tree = dijit.byId("feedTree"); - if (tree) tree.reload(); + dialog.hide(); + }); + } - dialog.hide(); - }); + } else { + alert(__("No feeds selected.")); } + }, + content: ` + <div dojoType='fox.Toolbar'> + <div dojoType='fox.form.DropDownButton'> + <span>${__('Select')}</span> + <div dojoType='dijit.Menu' style='display: none'> + <div onclick="Tables.select('inactive-feeds-list', true)" + dojoType='dijit.MenuItem'>${__('All')}</div> + <div onclick="Tables.select('inactive-feeds-list', false)" + dojoType='dijit.MenuItem'>${__('None')}</div> + </div> + </div> + </div> + + <div class='panel panel-scrollable'> + <table width='100%' id='inactive-feeds-list'> + ${reply.map((row) => `<tr data-row-id='${row.id}'> + <td width='5%' align='center'> + <input onclick='Tables.onRowChecked(this)' dojoType='dijit.form.CheckBox' type='checkbox'> + </td> + <td> + <a href='#' "title="${__("Click to edit feed")}" onclick="CommonDialogs.editFeed(${row.id})"> + ${App.escapeHtml(row.title)} + </a> + </td> + <td class='text-muted' align='right'> + ${row.last_article} + </td> + </tr> + `).join("")} + </table> + </div> + + <footer> + <button style='float : left' class='alt-danger' dojoType='dijit.form.Button' onclick='App.dialogOf(this).removeSelected()'> + ${__('Unsubscribe from selected feeds')} + </button> + <button dojoType='dijit.form.Button' class='alt-primary' type='submit'> + ${__('Close this window')} + </button> + </footer> + ` + }); - } else { - alert(__("No feeds selected.")); - } - }, - content: __("Loading, please wait...") - }); - - const tmph = dojo.connect(dialog, 'onShow', function () { - dojo.disconnect(tmph); + dialog.show(); - xhrPost("backend.php", {op: "pref-feeds", method: "inactivefeeds"}, (transport) => { - dialog.attr('content', transport.responseText); - }) }); - dialog.show(); } }); }); |