summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authorAndrew Dolgov <fox@fakecake.org>2025-01-09 08:58:44 +0000
committerAndrew Dolgov <fox@fakecake.org>2025-01-09 08:58:44 +0000
commita071edaa9d79ea646d6c36bb8b26de087d14f795 (patch)
tree1c99774820b5a61ee63e937081b9b280a988cde0 /js
parent93e00d5aabad21548f3a4c0986c0b6578773fc35 (diff)
parent5a93056c1c0e15eb3fcd8a222cb265cc363fb3a9 (diff)
Merge branch 'feature/copy-filter' into 'master'
Add the ability to clone an existing filter. See merge request tt-rss/tt-rss!97
Diffstat (limited to 'js')
-rw-r--r--js/PrefFilterTree.js33
1 files changed, 33 insertions, 0 deletions
diff --git a/js/PrefFilterTree.js b/js/PrefFilterTree.js
index 4ccddfa75..e63dd5797 100644
--- a/js/PrefFilterTree.js
+++ b/js/PrefFilterTree.js
@@ -167,6 +167,39 @@ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree"], functio
return false;
},
+ cloneSelectedFilters: function() {
+ const sel_rows = this.getSelectedFilters();
+
+ if (sel_rows.length > 0) {
+ const query = {op: "Pref_Filters", method: "clone", ids: sel_rows.toString()};
+ let proceed = false;
+
+ if (sel_rows.length === 1) {
+ const selected_filter = this.model.getCheckedItems()[0];
+ const new_filter_title = prompt(__("Name for new filter:"),
+ __("Clone of %s").replace("%s", this.model.store.getValue(selected_filter, "bare_name")));
+
+ if (new_filter_title) {
+ query.new_filter_title = new_filter_title;
+ proceed = true;
+ }
+ } else if (sel_rows.length > 1) {
+ proceed = confirm(__("Clone selected filters?"));
+ }
+
+ if (proceed) {
+ Notify.progress(__("Cloning selected filters..."));
+
+ xhr.post("backend.php", query, () => {
+ this.reload();
+ });
+ }
+ } else {
+ alert(__("No filters selected."));
+ }
+
+ return false;
+ },
});
});