import torrus 1.0.9
[freeside.git] / httemplate / edit / part_export.cgi
index d579797..32ed1fc 100644 (file)
@@ -7,6 +7,12 @@
 
 <% ntable("#cccccc",2) %>
 <TR>
+  <TD ALIGN="right">Export name</TD>
+  <TD>
+    <INPUT TYPE="text" NAME="exportname" VALUE="<% $part_export->exportname %>">
+  </TD>
+</TR>
+<TR>
   <TD ALIGN="right">Export host</TD>
   <TD>
     <INPUT TYPE="text" NAME="machine" VALUE="<% $part_export->machine %>">
@@ -53,7 +59,7 @@ my $widget = new HTML::Widgets::SelectLayers(
   'options'        => \%layers,
   'form_name'      => 'dummy',
   'form_action'    => 'process/part_export.cgi',
-  'form_text'      => [qw( exportnum machine )],
+  'form_text'      => [qw( exportnum exportname machine )],
 #  'form_checkbox'  => [qw()],
   'html_between'    => "</TD></TR></TABLE>\n",
   'layer_callback'  => sub {
@@ -77,15 +83,39 @@ my $widget = new HTML::Widgets::SelectLayers(
                       ? $optinfo->{default}
                       : ''
                     );
-      $html .= qq!<TR><TD ALIGN="right">$label</TD><TD>!;
+      # 'freeform': disables table formatting of options.  Instead, each 
+      # option can define "before" and "after" strings which are inserted 
+      # around the selector.
+      my $freeform = $optinfo->{freeform};
+      if ( $freeform ) {
+        $html .= $optinfo->{before} || '';
+      }
+      else {
+        $html .= qq!<TR><TD ALIGN="right">$label</TD><TD>!;
+      }
       if ( $type eq 'select' ) {
-        $html .= qq!<SELECT NAME="$option">!;
-        foreach my $select_option ( @{$optinfo->{options}} ) {
+        my $size = defined($optinfo->{size}) ? " SIZE=" . $optinfo->{size} : '';
+        my $multi = defined($optinfo->{multi}) ? ' MULTIPLE' : '';
+        $html .= qq!<SELECT NAME="$option"$multi$size>!;
+        my @values = split '\s+', $value if $multi;
+        my @options;
+        if (defined($optinfo->{option_values})) {
+          my $valsub = $optinfo->{option_values};
+          @options = &$valsub();
+        } elsif (defined($optinfo->{options})) {
+          @options = @{$optinfo->{options}};
+        }
+        foreach my $select_option ( @options ) {
           #if ( ref($select_option) ) {
           #} else {
-            my $selected = $select_option eq $value ? ' SELECTED' : '';
+            my $selected = ($multi ? grep {$_ eq $select_option} @values : $select_option eq $value ) ? ' SELECTED' : '';
+            my $label = $select_option;
+            if (defined($optinfo->{option_label})) {
+              my $labelsub = $optinfo->{option_label};
+              $label = &$labelsub($select_option);
+            }
             $html .= qq!<OPTION VALUE="$select_option"$selected>!.
-                     qq!$select_option</OPTION>!;
+                     qq!$label</OPTION>!;
           #}
         }
         $html .= '</SELECT>';
@@ -93,7 +123,7 @@ my $widget = new HTML::Widgets::SelectLayers(
         $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="!.
+        $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"!;
@@ -102,7 +132,12 @@ my $widget = new HTML::Widgets::SelectLayers(
       } else {
         $html .= "unknown type $type";
       }
-      $html .= '</TD></TR>';
+      if ( $freeform ) {
+        $html .= $optinfo->{after} || '';
+      }
+      else {
+        $html .= '</TD></TR>';
+      }
     }
     $html .= '</TABLE>';