From 56fbb82cb004fb6f8689ee7f50be05d6a927f9f1 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 21 Feb 2012 12:36:29 +0400 Subject: properly handle invalid regular expressions supplied when testing filters, add some additional regexp checks (closes #427) --- js/functions.js | 42 +++++++++++++++++++++++++++++++----------- 1 file changed, 31 insertions(+), 11 deletions(-) (limited to 'js') diff --git a/js/functions.js b/js/functions.js index bd0d5fb73..4a4602f9e 100644 --- a/js/functions.js +++ b/js/functions.js @@ -982,19 +982,39 @@ function quickAddFilter() { test: function() { if (this.validate()) { - if (dijit.byId("filterTestDlg")) - dijit.byId("filterTestDlg").destroyRecursive(); + var query = "?op=rpc&method=verifyRegexp®_exp=" + + param_escape(dialog.attr('value').reg_exp); + + notify_progress("Verifying regular expression..."); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + var reply = JSON.parse(transport.responseText); + + if (reply) { + notify(''); + + if (!reply['status']) { + alert("Invalid regular expression."); + return; + } else { - tdialog = new dijit.Dialog({ - id: "filterTestDlg", - title: __("Filter Test Results"), - style: "width: 600px", - href: "backend.php?savemode=test&" + - dojo.objectToQuery(dialog.attr('value')), - }); + if (dijit.byId("filterTestDlg")) + dijit.byId("filterTestDlg").destroyRecursive(); - tdialog.show(); + tdialog = new dijit.Dialog({ + id: "filterTestDlg", + title: __("Filter Test Results"), + style: "width: 600px", + href: "backend.php?savemode=test&" + + dojo.objectToQuery(dialog.attr('value')), + }); + tdialog.show(); + } + } + }}); } }, execute: function() { @@ -1014,7 +1034,7 @@ function quickAddFilter() { notify(''); if (!reply['status']) { - alert("Match regular expression seems to be invalid."); + alert("Invalid regular expression."); return; } else { notify_progress("Saving data...", true); -- cgit v1.2.3-54-g00ecf