summaryrefslogtreecommitdiff
path: root/functions.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 /functions.js
parenta9d63d29a1ce7ed4d1d5575308a0c72568381c99 (diff)
check regular expression before adding/saving filter
Diffstat (limited to 'functions.js')
-rw-r--r--functions.js98
1 files changed, 37 insertions, 61 deletions
diff --git a/functions.js b/functions.js
index 9e65a6dce..56285b731 100644
--- a/functions.js
+++ b/functions.js
@@ -577,55 +577,6 @@ function parse_counters(reply, scheduled_call) {
} */
-function handle_rpc_reply(transport, scheduled_call) {
- try {
- if (offline_mode) return false;
-
- if (!transport.responseText && db) {
- offlineConfirmModeChange();
- return false;
- }
-
- if (transport.responseXML) {
-
- if (!transport_error_check(transport)) return false;
-
- var message = transport.responseXML.getElementsByTagName("message")[0];
-
- if (message) {
- message = message.firstChild.nodeValue;
-
- if (message == "UPDATE_COUNTERS") {
- setInitParam("last_article_id", -1);
- _force_scheduled_update = true;
- }
- }
-
- var counters = transport.responseXML.getElementsByTagName("counters")[0];
-
- if (counters)
- parse_counters(counters, scheduled_call);
-
- var runtime_info = transport.responseXML.getElementsByTagName("runtime-info")[0];
-
- if (runtime_info)
- parse_runtime_info(runtime_info);
-
- if (feedsSortByUnread())
- resort_feedlist();
-
- hideOrShowFeeds(getInitParam("hide_read_feeds") == 1);
-
- } else {
- notify_error("Error communicating with server.");
- }
-
- } catch (e) {
- exception_error("handle_rpc_reply", e, transport);
- }
-
- return true;
-}
function get_feed_unread(id) {
try {
@@ -1290,20 +1241,45 @@ function createFilter() {
alert(__("Can't add filter: nothing to match on."));
return false;
}
+
+ 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) {
+ handle_rpc_reply(transport);
+
+ var response = transport.responseXML;
+
+ if (response) {
+ var s = response.getElementsByTagName("status")[0].firstChild.nodeValue;
- var query = Form.serialize("filter_add_form");
-
- // we can be called from some other tab in Prefs
- if (typeof active_tab != 'undefined' && active_tab) {
- active_tab = "filterConfig";
- }
-
- new Ajax.Request("backend.php?" + query, {
- onComplete: function (transport) {
- infobox_submit_callback2(transport);
+ notify('');
+
+ if (s == "INVALID") {
+ alert("Match regular expression seems to be invalid.");
+ return;
+ } else {
+
+ var query = Form.serialize("filter_add_form");
+
+ // we can be called from some other tab in Prefs
+ if (typeof active_tab != 'undefined' && active_tab) {
+ active_tab = "filterConfig";
+ }
+
+ new Ajax.Request("backend.php?" + query, {
+ onComplete: function (transport) {
+ infobox_submit_callback2(transport);
+ } });
+
+ return true;
+ }
+ }
+
} });
-
- return true;
} catch (e) {
exception_error("createFilter", e);