stray closing /TABLE in the no-ticket case
[freeside.git] / httemplate / edit / part_export.cgi
index 2897cf3..5411feb 100644 (file)
@@ -183,6 +183,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!<TR><TH COLSPAN=1 ALIGN="right"><FONT SIZE="+1">! .
                  $label .
@@ -201,6 +205,15 @@ my $widget = new HTML::Widgets::SelectLayers(
         $html .= qq!<TR><TD ALIGN="right">$label</TD><TD>!;
       }
       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 +231,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!<OPTION VALUE="$select_option"$selected>!.
                      qq!$label</OPTION>!;
           #}
@@ -267,8 +285,24 @@ my $widget = new HTML::Widgets::SelectLayers(
       $html .= '</TD></TR>';
     }
 
+    $html .= '<TR><TD ALIGN="right">Do not suspend services</TD>' .
+                '<TD><INPUT TYPE="checkbox" NAME="no_suspend" VALUE="Y"';
+    $html .= ' CHECKED' if $part_export->no_suspend eq 'Y';
+    $html .= '></TD></TR>';
+
     $html .= '</TABLE>';
 
+    # 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 .= '<INPUT TYPE="hidden" NAME="options" VALUE="'.
              join(',', keys %{$exports->{$layer}{options}} ). '">';