X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=httemplate%2Fedit%2Fpart_export.cgi;h=30e4218e2e2837499b761444830153bc9d7b4c64;hp=2897cf39da7abd81cfac6bc2176286d43f2232cc;hb=ac3296dc4d9c1c7ff3646df6496a4f49d9e07b9b;hpb=54a357b171aa44f9399b4c146acd2afd3b686075 diff --git a/httemplate/edit/part_export.cgi b/httemplate/edit/part_export.cgi index 2897cf39d..30e4218e2 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 { @@ -183,6 +185,10 @@ my $widget = new HTML::Widgets::SelectLayers( ? $optinfo->{default} : '' ); + + #handle these with post_config_element + next if $type eq 'custom'; + if ( $type eq 'title' ) { $html .= qq!! . $label . @@ -201,6 +207,15 @@ my $widget = new HTML::Widgets::SelectLayers( $html .= qq!$label!; } if ( $type eq 'select' ) { + + # 'select' options can specify options one of two ways: + # the "preferred" way: + # options: arrayref of allowed option values + # option_labels: hashref of option value => label + # OR the weird and semi-deprecated way: + # option_values: coderef to return a list of allowed option values + # option_label: coderef to take an option value and return its label + my $size = defined($optinfo->{size}) ? " SIZE=" . $optinfo->{size} : ''; my $multi = ($optinfo->{multi} || $optinfo->{multiple}) ? ' MULTIPLE' : ''; @@ -218,10 +233,15 @@ my $widget = new HTML::Widgets::SelectLayers( #} else { my $selected = ($multi ? grep {$_ eq $select_option} @values : $select_option eq $value ) ? ' SELECTED' : ''; my $label = $select_option; - if (defined($optinfo->{option_label})) { + if ( defined $optinfo->{option_label} ) { my $labelsub = $optinfo->{option_label}; $label = &$labelsub($select_option); + } elsif ( defined $optinfo->{option_labels} ) { + if (exists $optinfo->{option_labels}->{$select_option}) { + $label = $optinfo->{option_labels}->{$select_option}; + } } + $html .= qq!!; #} @@ -267,8 +287,42 @@ my $widget = new HTML::Widgets::SelectLayers( $html .= ''; } + $html .= 'Do not suspend services' . + 'no_suspend eq 'Y'; + $html .= '>'; + + foreach my $script ( keys %{$exports->{$layer}{scripts}} ) { + $html .= '' . + include('/elements/progress-init.html', + $part_export->exporttype, + [ $script.'_exportnum' ], + rooturl().'view/svc_export/run_script.cgi', + { + '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, + ) . + ' + '.$exports->{$layer}{scripts}{$script}->{html_label}.''; + } + $html .= ''; + # false laziness with config_element above + # create 'post_config_element' to generate the whole layer with a Mason component + if ( my $include = $exports->{$layer}{post_config_element} ) { + # might need to adjust the scope of this at some point + $html .= $m->scomp($include, + part_export => $part_export, + layer => $layer, + export_info => $exports->{$layer} + ); + } + $html .= '';