summaryrefslogtreecommitdiff
path: root/prefs.js
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2010-11-11 14:26:44 +0300
committerAndrew Dolgov <[email protected]>2010-11-11 14:26:44 +0300
commitf705f2065695c059e7fd5b5de875f005c1e0e006 (patch)
treeed3ab8ad901c35a5831eb8876d15f5c2d340affa /prefs.js
parenta9d63d29a1ce7ed4d1d5575308a0c72568381c99 (diff)
check regular expression before adding/saving filter
Diffstat (limited to 'prefs.js')
-rw-r--r--prefs.js55
1 files changed, 48 insertions, 7 deletions
diff --git a/prefs.js b/prefs.js
index ed8d1679c..2d8b02942 100644
--- a/prefs.js
+++ b/prefs.js
@@ -764,19 +764,44 @@ function userEditSave() {
function filterEditSave() {
-
try {
+ var reg_exp = document.forms["filter_edit_form"].reg_exp.value;
- notify_progress("Saving filter...");
-
- var query = "?" + Form.serialize("filter_edit_form");
-
- closeInfoBox();
+ var query = "?op=rpc&subop=verifyRegexp&reg_exp=" + param_escape(reg_exp);
+
+ notify_progress("Verifying regular expression...");
new Ajax.Request("backend.php", {
parameters: query,
onComplete: function(transport) {
- filterlist_callback2(transport);
+ handle_rpc_reply(transport);
+
+ var response = transport.responseXML;
+
+ if (response) {
+ var s = response.getElementsByTagName("status")[0].firstChild.nodeValue;
+
+ notify('');
+
+ if (s == "INVALID") {
+ alert("Match regular expression seems to be invalid.");
+ return;
+ } else {
+
+ var query = "?" + Form.serialize("filter_edit_form");
+
+ notify_progress("Saving filter...");
+
+ Form.disable("filter_edit_form");
+
+ new Ajax.Request("backend.php", {
+ parameters: query,
+ onComplete: function(transport) {
+ closeInfoBox();
+ filterlist_callback2(transport);
+ } });
+ }
+ }
} });
} catch (e) {
@@ -2099,4 +2124,20 @@ function clearFeedAccessKeys() {
return false;
}
+function handle_rpc_reply(transport, scheduled_call) {
+ try {
+ if (transport.responseXML) {
+
+ if (!transport_error_check(transport)) return false;
+
+ } else {
+ notify_error("Error communicating with server.");
+ }
+
+ } catch (e) {
+ exception_error("handle_rpc_reply", e, transport);
+ }
+
+ return true;
+}