'clear_on_error' => [ 'form_field1', 'form_field2', ... ],
+ ## message will be returned to redirect page as cookie and read by header.html
+ ## append =status, =warning, =error to change color of message box. Default is status
+ ## status is green, warning is yellow, and error is red
+ 'message' => [ 'My message=status', 'Please restart=warning' ],
+
#pass an arrayref of hashrefs for multiple m2ms or m2names
#be certain you incorporate m2m_Common if you see error: param
</%doc>
%if ( $error ) {
+% ## flatten any array refs so multi selects are sticky on error
+% for my $param ($cgi->param) {
+% if (ref($cgi->param($param)) eq "ARRAY") {
+% $cgi->param($param, (join ",", @{$cgi->param($param)}));
+% }
+% }
%
% #my $query = $m->scomp('/elements/create_uri_query');
% #$cgi->redirect("$url?$query");
% " attempting to set redirect$session to ". $cgi->query_string."\n";
% }
%
-<% $cgi->redirect("$error_redirect"."redirect=$session") %>
+<% $cgi->redirect("$error_redirect?redirect=$session") %>
%
% } else {
%
</HTML>
%} else {
-<% $cgi->redirect($redirect) %>
+% my $cookie;
+% $cookie = CGI::Cookie->new(
+% -name => 'freeside_status',
+% -value => $messages,
+% -expires => '+5m',
+% ) if $messages;
+ <% $cgi->redirect( -uri => $redirect,
+ -cookie => $cookie,
+ )
+ %>
%}
<%init>
if ( $error ) {
- $cgi->param('error', $error);
+ if ($opt{'update_svc'}) {
+ my $encoded_error = encode_base64($error);
+ $cgi->param('error_link', $encoded_error);
+ } else {
+ $cgi->param('error', $error);
+ }
+
if ( $opt{'clear_on_error'} && scalar(@{$opt{'clear_on_error'}}) ) {
foreach my $field (@{$opt{'clear_on_error'}}) {
$cgi->param($field, '')
}
-if ($class eq "FS::tower") {
+if ($class eq "FS::tower" && !$error) {
foreach my $part_svc_broadband_export ( FS::tower_sector->part_export_svc_broadband ) {
if ($part_svc_broadband_export and $part_svc_broadband_export->can('export_tower_sector')) {
- $error = $part_svc_broadband_export->export_tower_sector($new);
+ my $export_tower = $part_svc_broadband_export->export_tower_sector($new);
+ $error = $export_tower->{'error'} if $export_tower;
}
}
+ if ($error) {
+ my $encoded_error = encode_base64($error);
+ $cgi->param('error_link', $encoded_error) if $error;
+
+ }
}
# set up redirect URLs
}
}
+my $messages = $opt{'message'} ? $opt{'message'} : '';
+
my $edit_ext = $opt{'edit_ext'} || 'html';
my $error_redirect = $opt{'error_redirect'}
|| popurl(2)."$table.$edit_ext";