<!-- mason kludge -->
-<%
+%
+%
+%#if ( $cgi->param('clone') && $cgi->param('clone') =~ /^(\d+)$/ ) {
+%# $cgi->param('clone', $1);
+%#} else {
+%# $cgi->param('clone', '');
+%#}
+%
+%my($query) = $cgi->keywords;
+%my $action = '';
+%my $part_export = '';
+%if ( $cgi->param('error') ) {
+% $part_export = new FS::part_export ( {
+% map { $_, scalar($cgi->param($_)) } fields('part_export')
+% } );
+%} elsif ( $query =~ /^(\d+)$/ ) {
+% $part_export = qsearchs('part_export', { 'exportnum' => $1 } );
+%} else {
+% $part_export = new FS::part_export;
+%}
+%$action ||= $part_export->exportnum ? 'Edit' : 'Add';
+%
+%#my $exports = FS::part_export::export_info($svcdb);
+%my $exports = FS::part_export::export_info();
+%
+%my %layers = map { $_ => "$_ - ". $exports->{$_}{desc} } keys %$exports;
+%$layers{''}='';
+%
+%my $widget = new HTML::Widgets::SelectLayers(
+% 'selected_layer' => $part_export->exporttype,
+% 'options' => \%layers,
+% 'form_name' => 'dummy',
+% 'form_action' => 'process/part_export.cgi',
+% 'form_text' => [qw( exportnum machine )],
+%# 'form_checkbox' => [qw()],
+% 'html_between' => "</TD></TR></TABLE>\n",
+% 'layer_callback' => sub {
+% my $layer = shift;
+% my $html = qq!<INPUT TYPE="hidden" NAME="exporttype" VALUE="$layer">!.
+% ntable("#cccccc",2);
+%
+% $html .= '<TR><TD ALIGN="right">Description</TD><TD BGCOLOR=#ffffff>'.
+% $exports->{$layer}{notes}. '</TD></TR>'
+% if $layer;
+%
+% foreach my $option ( keys %{$exports->{$layer}{options}} ) {
+% my $optinfo = $exports->{$layer}{options}{$option};
+% die "Retreived non-ref export info option from $layer export: $optinfo"
+% unless ref($optinfo);
+% my $label = $optinfo->{label};
+% my $type = defined($optinfo->{type}) ? $optinfo->{type} : 'text';
+% my $value = $cgi->param($option)
+% || ( $part_export->exportnum && $part_export->option($option) )
+% || ( (exists $optinfo->{default} && !$part_export->exportnum)
+% ? $optinfo->{default}
+% : ''
+% );
+% $html .= qq!<TR><TD ALIGN="right">$label</TD><TD>!;
+% if ( $type eq 'select' ) {
+% $html .= qq!<SELECT NAME="$option">!;
+% foreach my $select_option ( @{$optinfo->{options}} ) {
+% #if ( ref($select_option) ) {
+% #} else {
+% my $selected = $select_option eq $value ? ' SELECTED' : '';
+% $html .= qq!<OPTION VALUE="$select_option"$selected>!.
+% qq!$select_option</OPTION>!;
+% #}
+% }
+% $html .= '</SELECT>';
+% } elsif ( $type eq 'textarea' ) {
+% $html .= qq!<TEXTAREA NAME="$option" COLS=80 ROWS=8 WRAP="virtual">!.
+% encode_entities($value). '</TEXTAREA>';
+% } elsif ( $type eq 'text' ) {
+% $html .= qq!<INPUT TYPE="text" NAME="$option" VALUE="!.
+% encode_entities($value). '" SIZE=64>';
+% } elsif ( $type eq 'checkbox' ) {
+% $html .= qq!<INPUT TYPE="checkbox" NAME="$option" VALUE="1"!;
+% $html .= ' CHECKED' if $value;
+% $html .= '>';
+% } else {
+% $html .= "unknown type $type";
+% }
+% $html .= '</TD></TR>';
+% }
+% $html .= '</TABLE>';
+%
+% $html .= '<INPUT TYPE="hidden" NAME="options" VALUE="'.
+% join(',', keys %{$exports->{$layer}{options}} ). '">';
+%
+% $html .= '<INPUT TYPE="hidden" NAME="nodomain" VALUE="'.
+% $exports->{$layer}{nodomain}. '">';
+%
+% $html .= '<INPUT TYPE="submit" VALUE="'.
+% ( $part_export->exportnum ? "Apply changes" : "Add export" ).
+% '">';
+%
+% $html;
+% },
+%);
+%
+%
-#if ( $cgi->param('clone') && $cgi->param('clone') =~ /^(\d+)$/ ) {
-# $cgi->param('clone', $1);
-#} else {
-# $cgi->param('clone', '');
-#}
-#if ( $cgi->param('svcpart') && $cgi->param('svcpart') =~ /^(\d+)$/ ) {
-# $cgi->param('svcpart', $1);
-#} else {
-# $cgi->param('svcpart', '');
-#}
-
-my($query) = $cgi->keywords;
-my $action = '';
-my $part_export = '';
-my $options = {};
-if ( $cgi->param('error') ) {
- $part_export = new FS::part_export ( {
- map { $_, scalar($cgi->param($_)) } fields('part_export')
- } );
-}
-
-warn "***$query***";
-if ( $cgi->param('clone') && $cgi->param('clone') =~ /^(\d+)$/ ) {
- $action = 'Add';
- my $old_part_export = qsearchs('part_export', { 'exportnum' => $1 } );
- unless ( $part_export ) {
- ($part_export, $options) = $old_part_export->clone;
- }
-} elsif ( $cgi->param('new_with_svcpart')
- && $cgi->param('new_with_svcpart') =~ /^(\d+)$/ ) {
- $part_export ||= new FS::part_export ( { 'svcpart' => $1 } );
-} elsif ( $query =~ /^(\d+)$/ ) {
- $part_export ||= qsearchs('part_export', { 'exportnum' => $1 } );
-}
-$action ||= $part_export->exportnum ? 'Edit' : 'Add';
-
-my @types = qw(shell bsdshell textradius sqlradius cp);
-
-%>
-<%= header("$action Export", menubar(
+<% include("/elements/header.html","$action Export", menubar(
'Main Menu' => popurl(2),
), ' onLoad="visualize()"')
%>
+% if ( $cgi->param('error') ) {
-<% if ( $cgi->param('error') ) { %>
-<FONT SIZE="+1" COLOR="#ff0000">Error: <%= $cgi->param('error') %></FONT>
-<% } %>
+ <FONT SIZE="+1" COLOR="#ff0000">Error: <% $cgi->param('error') %></FONT>
+ <BR><BR>
+% }
-<FORM ACTION="<%= popurl(1) %>process/part_export.cgi" METHOD=POST>
-<% #print '<FORM NAME="dummy">'; %>
-<%= ntable("#cccccc",2) %>
-<TR>
- <TD ALIGN="right">Service</TD>
- <TD BGCOLOR="#ffffff">
- <%= $part_export->svcpart %> - <%= $part_export->part_svc->svc %>
- </TD>
-</TR>
-<TR>
- <TD ALIGN="right">Export</TD>
- <TD><SELECT NAME="exporttype"><OPTION></OPTION>
-<% foreach my $type ( @types ) { %>
- <OPTION><%= $type %></OPTION>
-<% } %>
- </SELECT></TD>
-</TR>
+<FORM NAME="dummy">
+<INPUT TYPE="hidden" NAME="exportnum" VALUE="<% $part_export->exportnum %>">
+
+<% ntable("#cccccc",2) %>
<TR>
<TD ALIGN="right">Export host</TD>
<TD>
- <INPUT TYPE="text" NAME="machine" VALUE="<%= $part_export->machine %>">
+ <INPUT TYPE="text" NAME="machine" VALUE="<% $part_export->machine %>">
</TD>
</TR>
-</TABLE>
-</FORM>
+<TR>
+ <TD ALIGN="right">Export</TD>
+ <TD><% $widget->html %>
</BODY>
</HTML>