From 710841aeba1632f57ab34d4e2abce3d65b531f69 Mon Sep 17 00:00:00 2001 From: Christopher Burger Date: Sun, 28 Apr 2019 19:14:49 -0400 Subject: [PATCH] RT# 83204 - added link to service or tower causing error. Conflicts: httemplate/misc/progress-popup.html --- FS/FS/part_export/saisei.pm | 20 +++++++++++++++----- httemplate/edit/part_export.cgi | 9 ++++++++- httemplate/edit/process/elements/process.html | 6 +++++- httemplate/elements/error.html | 27 +++++++++++++++++++++++++-- httemplate/elements/progress-init.html | 2 +- httemplate/misc/progress-popup.html | 12 +++++++++--- 6 files changed, 63 insertions(+), 13 deletions(-) diff --git a/FS/FS/part_export/saisei.pm b/FS/FS/part_export/saisei.pm index ba6bc622f..f479c309e 100644 --- a/FS/FS/part_export/saisei.pm +++ b/FS/FS/part_export/saisei.pm @@ -62,6 +62,8 @@ tie my %scripts, 'Tie::IxHash', label => 'Export provisioned services', description => 'will export provisioned services of part service with Saisei export attached.', html_label => 'Export provisioned services attached to this export.', + error_url => '/edit/part_export.cgi?', + success_message => 'Saisei export of provisioned services successful', }, ; @@ -169,6 +171,7 @@ sub _export_insert { tower.up_rate_limit as tower_upratelimit, tower.down_rate_limit as tower_downratelimit, tower_sector.sectorname, + tower_sector.towernum, tower_sector.up_rate_limit as sector_upratelimit, tower_sector.down_rate_limit as sector_downratelimit ', 'addl_from' => 'LEFT JOIN tower USING ( towernum )', @@ -182,6 +185,7 @@ sub _export_insert { my $tower_opt = { 'tower_name' => $tower_name, + 'tower_num' => $tower_sector->{Hash}->{towernum}, 'tower_uprate_limit' => $tower_sector->{Hash}->{tower_upratelimit}, 'tower_downrate_limit' => $tower_sector->{Hash}->{tower_downratelimit}, }; @@ -194,6 +198,7 @@ sub _export_insert { my $sector_opt = { 'tower_name' => $tower_name, + 'tower_num' => $tower_sector->{Hash}->{towernum}, 'sector_name' => $sector_name, 'sector_uprate_limit' => $tower_sector->{Hash}->{sector_upratelimit}, 'sector_downrate_limit' => $tower_sector->{Hash}->{sector_downratelimit}, @@ -319,6 +324,7 @@ sub export_tower_sector { $tower_name =~ s/\s/_/g; my $tower_opt = { 'tower_name' => $tower_name, + 'tower_num' => $tower->{Hash}->{towernum}, 'tower_uprate_limit' => $tower->{Hash}->{up_rate_limit}, 'tower_downrate_limit' => $tower->{Hash}->{down_rate_limit}, 'modify_existing' => '1', # modify an existing access point with this info @@ -340,6 +346,7 @@ sub export_tower_sector { $sector_name =~ s/\s/_/g; my $sector_opt = { 'tower_name' => $tower_name, + 'tower_num' => $tower_sector->{Hash}->{towernum}, 'sector_name' => $sector_name, 'sector_uprate_limit' => $tower_sector->{Hash}->{up_rate_limit}, 'sector_downrate_limit' => $tower_sector->{Hash}->{down_rate_limit}, @@ -425,7 +432,7 @@ sub api_call { return; } elsif ($client->responseCode() eq '500') { - $self->{'__saisei_error'} = "Could not connect to the host (".$self->{Hash}->{machine}.':'.$self->option('port').") during $method , we received the responce code: " . $client->responseCode(); + $self->{'__saisei_error'} = "Could not connect to the Saisei export host machine (".$self->{Hash}->{machine}.':'.$self->option('port').") during $method , we received the responce code: " . $client->responseCode(); warn "Saisei Response Content is\n".$client->responseContent."\n" if $self->option('debug'); return; } @@ -542,8 +549,8 @@ Creates a rateplan. sub api_create_rateplan { my ($self, $svc, $rateplan) = @_; - $self->{'__saisei_error'} = "There is no download speed set for the service $rateplan with host (".$svc->{Hash}->{ip_addr}."). All services that are to be exported to Saisei need to have a download speed set for them." if !$svc->{Hash}->{speed_down}; - $self->{'__saisei_error'} = "There is no upload speed set for the service $rateplan with host (".$svc->{Hash}->{ip_addr}."). All services that are to be exported to Saisei need to have a upload speed set for them." if !$svc->{Hash}->{speed_up}; + $self->{'__saisei_error'} = "There is no download speed set for the service !--service,".$svc->svcnum.",".$rateplan."--! with host (".$svc->{Hash}->{ip_addr}."). All services that are to be exported to Saisei need to have a download speed set for them." if !$svc->{Hash}->{speed_down}; + $self->{'__saisei_error'} = "There is no upload speed set for the service !--service,".$svc->svcnum.",".$rateplan."--! with host (".$svc->{Hash}->{ip_addr}."). All services that are to be exported to Saisei need to have a upload speed set for them." if !$svc->{Hash}->{speed_up}; my $new_rateplan = $self->api_call( "PUT", @@ -605,6 +612,9 @@ Modify a existing rateplan. sub api_modify_existing_rateplan { my ($self,$svc,$rateplan_name) = @_; + $self->{'__saisei_error'} = "There is no download speed set for the service !--service,".$svc->svcnum.",".$rateplan_name."--! with host (".$svc->{Hash}->{ip_addr}."). All services that are to be exported to Saisei need to have a download speed set for them." if !$svc->{Hash}->{speed_down}; + $self->{'__saisei_error'} = "There is no upload speed set for the service !--service,".$svc->svcnum.",".$rateplan_name."--! with host (".$svc->{Hash}->{ip_addr}."). All services that are to be exported to Saisei need to have a upload speed set for them." if !$svc->{Hash}->{speed_up}; + my $modified_rateplan = $self->api_call( "PUT", "/rate_plans/$rateplan_name", @@ -783,7 +793,7 @@ sub process_tower { my ($self, $opt) = @_; if (!$opt->{tower_uprate_limit} || !$opt->{tower_downrate_limit}) { - $self->{'__saisei_error'} = "Could not export tower ".$opt->{tower_name}." because there was no up or down rates attached to the tower. Saisei requires a up and down rate be attached to each tower."; + $self->{'__saisei_error'} = "Could not export tower !--tower,".$opt->{tower_num}.",".$opt->{tower_name}."--! because there was no up or down rates attached to the tower. Saisei requires a up and down rate be attached to each tower."; return { error => $self->api_error, }; } @@ -823,7 +833,7 @@ sub process_sector { } if (!$opt->{sector_uprate_limit} || !$opt->{sector_downrate_limit}) { - $self->{'__saisei_error'} = "Could not export sector ".$opt->{tower_name}." because there was no up or down rates attached to the sector. Saisei requires a up and down rate be attached to each sector."; + $self->{'__saisei_error'} = "Could not export sector !--tower,".$opt->{tower_num}.",".$opt->{sector_name}."--! because there was no up or down rates attached to the sector. Saisei requires a up and down rate be attached to each sector."; return { error => $self->api_error, }; } diff --git a/httemplate/edit/part_export.cgi b/httemplate/edit/part_export.cgi index f6ec208be..f8a46c7fd 100644 --- a/httemplate/edit/part_export.cgi +++ b/httemplate/edit/part_export.cgi @@ -63,6 +63,8 @@ if ( $cgi->param('error') ) { $part_export = new FS::part_export ( { map { $_, scalar($cgi->param($_)) } fields('part_export') } ); +} elsif ( $cgi->param('exportnum') ) { + $part_export = qsearchs('part_export', { 'exportnum' => $cgi->param('exportnum') } ); } elsif ( $query =~ /^(\d+)$/ ) { $part_export = qsearchs('part_export', { 'exportnum' => $1 } ); } else { @@ -296,7 +298,12 @@ my $widget = new HTML::Widgets::SelectLayers( $part_export->exporttype, [ $script.'_exportnum', $script.'_script' ], rooturl().'view/svc_export/run_script.cgi', - rooturl().'edit/part_export.cgi?'.$part_export->{Hash}->{exportnum}, + { + 'error_url' => rooturl().$exports->{$layer}{scripts}{$script}->{error_url}."exportnum=".$part_export->{Hash}->{exportnum}, + 'reload_with_error' => '1', + 'url' => rooturl().'edit/part_export.cgi?'.$part_export->{Hash}->{exportnum}, + 'message' => $exports->{$layer}{scripts}{$script}->{success_message}, + }, $script, ) . ' diff --git a/httemplate/edit/process/elements/process.html b/httemplate/edit/process/elements/process.html index e954d0b47..4356621ed 100644 --- a/httemplate/edit/process/elements/process.html +++ b/httemplate/edit/process/elements/process.html @@ -486,7 +486,11 @@ if ($class eq "FS::tower" && !$error) { $error = $export_tower->{'error'} if $export_tower; } } - $cgi->param('error', $error) if $error; + if ($error) { + my $encoded_error = encode_base64($error); + $cgi->param('error_link', $encoded_error) if $error; + + } } # set up redirect URLs diff --git a/httemplate/elements/error.html b/httemplate/elements/error.html index f9664bd65..5083799fa 100644 --- a/httemplate/elements/error.html +++ b/httemplate/elements/error.html @@ -1,5 +1,28 @@ % if ( $cgi->param('error') ) { % $m->notes('error', $cgi->param('error')); <% mt("Error: [_1]", $cgi->param('error')) |h %> -

-% } +
+% } + +% if ( $cgi->param('error_link') ) { +% $m->notes('error', $error_link); + <% $error_link %> +
+% } +
+ +<%init> + +my %type_error_links = ( + 'service' => rooturl()."/view/svc_broadband.cgi?", + 'tower' => rooturl()."/edit/tower.html?", +); + +my $error_link; + +if ( $cgi->param('error_link') ) { + $error_link = encode_entities(decode_base64($cgi->param('error_link'))); + $error_link =~ s/!--(.*)\,(.*)\,(.*)--!/$3<\/b><\/font><\/a>/g; +} + + \ No newline at end of file diff --git a/httemplate/elements/progress-init.html b/httemplate/elements/progress-init.html index 0c2b8165a..24ad55939 100644 --- a/httemplate/elements/progress-init.html +++ b/httemplate/elements/progress-init.html @@ -155,7 +155,7 @@ my %dest_info; if ( ref($url_or_message) ) { #its a message or something %dest_info = map { $_ => $url_or_message->{$_} } grep { $url_or_message->{$_} } - qw( message url popup_url error_url ); + qw( message url popup_url error_url reload_with_error ); } else { # it can also just be a url %dest_info = ( 'url' => $url_or_message ); diff --git a/httemplate/misc/progress-popup.html b/httemplate/misc/progress-popup.html index 8e2d6760b..f75a9c792 100644 --- a/httemplate/misc/progress-popup.html +++ b/httemplate/misc/progress-popup.html @@ -5,6 +5,7 @@ % my $popup_url = $cgi->param('popup_url'); % my $formname = scalar($cgi->param('formname')); % my $error_url = $cgi->param('error_url'); +% my $reload_with_error = $cgi->param('reload_with_error'); % @@ -86,7 +87,13 @@ function updateStatus( status_statustext ) { % # default behavior: just close the popup % my $onClick = 'parent.nd(1);'; % if ( $error_url ) { # then on clicking to confirm, redirect somewhere -% $onClick = "window.top.location.href = \\'$error_url\\';"; +% if ( $reload_with_error ) { + var encodedString = btoa(statustext); + parent.nd(1); + window.top.location.href = '<% $error_url."&error_link=" %>'+encodedString; +% } +% +% $onClick = "window.top.location.href = \\'$error_url\\';"; % } document.getElementById("progress_message").innerHTML = 'Error: ' + statustext + ''; @@ -131,5 +138,4 @@ function updateStatus( status_statustext ) { - - + \ No newline at end of file -- 2.11.0