catch misconfigured exports
[freeside.git] / httemplate / edit / part_export.cgi
index 31d6134..b3d42bd 100644 (file)
@@ -46,6 +46,8 @@ my $widget = new HTML::Widgets::SelectLayers(
 
     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)
@@ -60,19 +62,22 @@ my $widget = new HTML::Widgets::SelectLayers(
         foreach my $select_option ( @{$optinfo->{options}} ) {
           #if ( ref($select_option) ) {
           #} else {
-            $selected = $select_option eq $value ? ' SELECTED' : '';
+            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 WRAP="hard">!.
-                 qq!$value</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="$value" SIZE=64>!;
+        $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 .= qq!<INPUT TYPE="checkbox" NAME="$option" VALUE="1"!;
+        $html .= ' CHECKED' if $value;
+        $html .= '>';
       } else {
         $html .= "unknown type $type";
       }