diff --git a/lib/WebGUI/PassiveAnalytics/Flow.pm b/lib/WebGUI/PassiveAnalytics/Flow.pm index a1b9905bf..291233ca7 100644 --- a/lib/WebGUI/PassiveAnalytics/Flow.pm +++ b/lib/WebGUI/PassiveAnalytics/Flow.pm @@ -175,9 +175,12 @@ Displays a form to edit the properties rule. =cut sub www_editRule { - my $session = shift; + my ($session, $error) = @_; return $session->privilege->insufficient() unless canView($session); + if ($error) { + $error = qq|
$error
\n|; + } ##Make a PassiveAnalytics rule to use to populate the form. my $ruleId = $session->form->get('ruleId'); my $rule; @@ -204,7 +207,7 @@ sub www_editRule { if ($ruleId eq 'new') { $rule->delete; } - return $ac->render($form->print,$i18n->get('Edit Rule')); + return $ac->render($error.$form->print,$i18n->get('Edit Rule')); } #------------------------------------------------------------------- @@ -217,8 +220,19 @@ Saves the results of www_editRule(). sub www_editRuleSave { my $session = shift; + my $form = $session->form; return $session->privilege->insufficient() unless canView($session); - my $ruleId = $session->form->get('ruleId'); + my $regexp = $form->get('regexp'); + eval { + 'fooBarBaz' =~ qr/$regexp/; + }; + if ($@) { + $session->log->warn("Error: $@"); + my $error = $@; + $error =~ s/at \S+?\.pm line \d+.*$//; + return www_editRule($session, $error); + } + my $ruleId = $form->get('ruleId'); my $rule; if ($ruleId eq 'new') { $rule = WebGUI::PassiveAnalytics::Rule->create($session, {});