diff --git a/classes/pref/filters.php b/classes/pref/filters.php
index cfff383d89d0ba774d68ae27761e10fba07b218d..1aeaa8a3f02848e7eb143e4abdf4d58f6b9d2231 100755
--- a/classes/pref/filters.php
+++ b/classes/pref/filters.php
@@ -389,7 +389,7 @@ class Pref_Filters extends Handler_Protected {
 					unset($line["match_on"]);
 
 					print "<li><input dojoType='dijit.form.CheckBox' type='checkbox' onclick='Lists.onRowChecked(this)'>
-						<span onclick='App.dialogOf(this).editRule(this)'>".$this->_get_rule_name($line)."</span>".
+						<span onclick='App.dialogOf(this).onRuleClicked(this)'>".$this->_get_rule_name($line)."</span>".
 						\Controls\hidden_tag("rule[]", (string)json_encode($line))."</li>";
 				}
 			}
@@ -429,7 +429,7 @@ class Pref_Filters extends Handler_Protected {
 					unset($line["id"]);
 
 					print "<li><input dojoType='dijit.form.CheckBox' type='checkbox' onclick='Lists.onRowChecked(this)'>
-						<span onclick='App.dialogOf(this).editAction(this)'>".$this->_get_action_name($line)."</span>".
+						<span onclick='App.dialogOf(this).onActionClicked(this)'>".$this->_get_action_name($line)."</span>".
 						\Controls\hidden_tag("action[]", (string)json_encode($line))."</li>";
 				}
 			}
@@ -861,7 +861,7 @@ class Pref_Filters extends Handler_Protected {
 		print "<section>";
 
 		print "<select name='action_id' dojoType='fox.form.Select'
-			onchange='Filters.hideOrShowActionParam(this)'>";
+			onchange='App.dialogOf(this).hideOrShowActionParam(this)'>";
 
 		$res = $this->pdo->query("SELECT id,description FROM ttrss_filter_actions
 			ORDER BY name");
diff --git a/js/CommonFilters.js b/js/CommonFilters.js
index 222bba4bda88bd8a83e9ddadfc15922afe655e5e..210c6347982dc60fe3c552418bd3f5231171561d 100644
--- a/js/CommonFilters.js
+++ b/js/CommonFilters.js
@@ -5,7 +5,8 @@
 /* global __, App, Article, Lists, fox */
 /* global xhr, dojo, dijit, Notify, Feeds */
 
-const	Filters = {	
+/* exported Filters */
+const	Filters = {
 	edit: function(id) { // if no id, new filter dialog
 		let query;
 
@@ -112,36 +113,6 @@ const	Filters = {
 
 						test_dialog.show();
 					},
-					hideOrShowActionParam: function(sender) {
-						const action = sender.value;
-
-						const action_param = App.byId("filterDlg_paramBox");
-
-						if (!action_param) {
-							console.log("hideOrShowActionParam: can't find action param box!");
-							return;
-						}
-
-						// if selected action supports parameters, enable params field
-						if (action == 4 || action == 6 || action == 7 || action == 9) {
-							Element.show(action_param);
-
-							Element.hide(dijit.byId("filterDlg_actionParam").domNode);
-							Element.hide(dijit.byId("filterDlg_actionParamLabel").domNode);
-							Element.hide(dijit.byId("filterDlg_actionParamPlugin").domNode);
-
-							if (action == 7) {
-								Element.show(dijit.byId("filterDlg_actionParamLabel").domNode);
-							} else if (action == 9) {
-								Element.show(dijit.byId("filterDlg_actionParamPlugin").domNode);
-							} else {
-								Element.show(dijit.byId("filterDlg_actionParam").domNode);
-							}
-
-						} else {
-							Element.hide(action_param);
-						}
-					},
 					createNewRuleElement: function(parentNode, replaceNode) {
 						const rule = dojo.formToJson("filter_new_rule_form");
 
@@ -150,7 +121,7 @@ const	Filters = {
 								const li = document.createElement('li');
 
 								li.innerHTML = `<input dojoType='dijit.form.CheckBox' type='checkbox' onclick='Lists.onRowChecked(this)'>
-										<span onclick='App.dialogOf(this).editRule(this)'>${reply}</span>
+										<span onclick='App.dialogOf(this).onRuleClicked(this)'>${reply}</span>
 									${App.FormFields.hidden_tag("rule[]", rule)}`;
 
 								dojo.parser.parse(li);
@@ -181,7 +152,7 @@ const	Filters = {
 								const li = document.createElement('li');
 
 								li.innerHTML = `<input dojoType='dijit.form.CheckBox' type='checkbox' onclick='Lists.onRowChecked(this)'>
-										<span onclick='App.dialogOf(this).editAction(this)'>${reply}</span>
+										<span onclick='App.dialogOf(this).onActionClicked(this)'>${reply}</span>
 									${App.FormFields.hidden_tag("action[]", action)}`;
 
 								dojo.parser.parse(li);
@@ -197,8 +168,8 @@ const	Filters = {
 							}
 						});
 					},
-					addFilterRule: function(replaceNode, ruleStr) {
-						const add_dialog = new fox.SingleUseDialog({
+					editRule: function(replaceNode, ruleStr) {
+						const edit_rule_dialog = new fox.SingleUseDialog({
 							id: "filterNewRuleDlg",
 							title: ruleStr ? __("Edit rule") : __("Add rule"),
 							execute: function () {
@@ -210,19 +181,50 @@ const	Filters = {
 							content: __('Loading, please wait...'),
 						});
 
-						const tmph = dojo.connect(add_dialog, "onShow", null, function (/* e */) {
+						const tmph = dojo.connect(edit_rule_dialog, "onShow", null, function (/* e */) {
 							dojo.disconnect(tmph);
 
 							xhr.post("backend.php", {op: 'pref-filters', method: 'newrule', rule: ruleStr}, (reply) => {
-								add_dialog.attr('content', reply);
+								edit_rule_dialog.attr('content', reply);
 							});
 						});
 
-						add_dialog.show();
+						edit_rule_dialog.show();
 					},
-					addFilterAction: function(replaceNode, actionStr) {
-						const add_dialog = new fox.SingleUseDialog({
+					editAction: function(replaceNode, actionStr) {
+						const edit_action_dialog = new fox.SingleUseDialog({
 							title: actionStr ? __("Edit action") : __("Add action"),
+							hideOrShowActionParam: function(sender) {
+								const action = sender.value;
+
+								const action_param = App.byId("filterDlg_paramBox");
+
+								if (!action_param) {
+									console.log("hideOrShowActionParam: can't find action param box!");
+									return;
+								}
+
+								// if selected action supports parameters, enable params field
+								if (action == 4 || action == 6 || action == 7 || action == 9) {
+									Element.show(action_param);
+
+									Element.hide(dijit.byId("filterDlg_actionParam").domNode);
+									Element.hide(dijit.byId("filterDlg_actionParamLabel").domNode);
+									Element.hide(dijit.byId("filterDlg_actionParamPlugin").domNode);
+
+									if (action == 7) {
+										Element.show(dijit.byId("filterDlg_actionParamLabel").domNode);
+									} else if (action == 9) {
+										Element.show(dijit.byId("filterDlg_actionParamPlugin").domNode);
+									} else {
+										Element.show(dijit.byId("filterDlg_actionParam").domNode);
+									}
+
+								} else {
+									Element.hide(action_param);
+								}
+							},
+
 							execute: function () {
 								if (this.validate()) {
 									dialog.createNewActionElement(App.byId("filterDlg_Actions"), replaceNode);
@@ -231,15 +233,15 @@ const	Filters = {
 							}
 						});
 
-						const tmph = dojo.connect(add_dialog, "onShow", null, function (/* e */) {
+						const tmph = dojo.connect(edit_action_dialog, "onShow", null, function (/* e */) {
 							dojo.disconnect(tmph);
 
 							xhr.post("backend.php", {op: 'pref-filters', method: 'newaction', action: actionStr}, (reply) => {
-								add_dialog.attr('content', reply);
+								edit_action_dialog.attr('content', reply);
 							});
 						});
 
-						add_dialog.show();
+						edit_action_dialog.show();
 					},
 					selectRules: function (select) {
 						Lists.select("filterDlg_Matches", select);
@@ -247,17 +249,17 @@ const	Filters = {
 					selectActions: function (select) {
 						Lists.select("filterDlg_Actions", select);
 					},
-					editRule: function (e) {
+					onRuleClicked: function (e) {
 						const li = e.closest('li');
 						const rule = li.querySelector('input[name="rule[]"]').value
 
-						this.addFilterRule(li, rule);
+						this.editRule(li, rule);
 					},
-					editAction: function (e) {
+					onActionClicked: function (e) {
 						const li = e.closest('li');
 						const action = li.querySelector('input[name="action[]"]').value
 
-						this.addFilterAction(li, action);
+						this.editAction(li, action);
 					},
 					removeFilter: function () {
 						const msg = __("Remove filter?");
@@ -277,10 +279,10 @@ const	Filters = {
 						}
 					},
 					addAction: function () {
-						this.addFilterAction();
+						this.editAction();
 					},
 					addRule: function () {
-						this.addFilterRule();
+						this.editRule();
 					},
 					deleteAction: function () {
 						App.findAll("#filterDlg_Actions li[class*=Selected]").forEach(function (e) {
@@ -322,7 +324,7 @@ const	Filters = {
 
 							const rule = {reg_exp: selectedText, feed_id: [feed_id], filter_type: 1};
 
-							dialog.addFilterRule(null, dojo.toJson(rule));
+							dialog.editRule(null, dojo.toJson(rule));
 
 						} else {
 
@@ -342,7 +344,7 @@ const	Filters = {
 
 									const rule = {reg_exp: title, feed_id: [feed_id], filter_type: 1};
 
-									dialog.addFilterRule(null, dojo.toJson(rule));
+									dialog.editRule(null, dojo.toJson(rule));
 								}
 							});
 						}