communigate (phase 2): rules. RT#7514
[freeside.git] / httemplate / edit / part_export.cgi
index b72b277..8b697e1 100644 (file)
@@ -1,5 +1,26 @@
-<!-- mason kludge -->
-<%
+<% include('/elements/header.html', "$action Export", '', ' onLoad="visualize()"') %>
+
+<% include('/elements/error.html') %>
+
+<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 %>">
+  </TD>
+</TR>
+<TR>
+  <TD ALIGN="right">Export</TD>
+  <TD><% $widget->html %>
+
+<% include('/elements/footer.html') %>
+<%init>
+
+die "access denied"
+  unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
 
 #if ( $cgi->param('clone') && $cgi->param('clone') =~ /^(\d+)$/ ) {
 #  $cgi->param('clone', $1);
@@ -45,13 +66,58 @@ my $widget = new HTML::Widgets::SelectLayers(
       if $layer;
 
     foreach my $option ( keys %{$exports->{$layer}{options}} ) {
-#    foreach my $option ( qw(url login password groupID ) ) {
       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 $value = $cgi->param($option) || $part_export->option($option);
-      $html .= qq!<TR><TD ALIGN="right">$label</TD>!.
-               qq!<TD><INPUT TYPE="text" NAME="$option" VALUE="$value"></TD>!.
-               '</TR>';
+      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' ) {
+        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 = ($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!$label</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>';
 
@@ -69,30 +135,4 @@ my $widget = new HTML::Widgets::SelectLayers(
   },
 );
 
-%>
-<%= header("$action Export", menubar(
-  'Main Menu' => popurl(2),
-), ' onLoad="visualize()"')
-%>
-
-<% if ( $cgi->param('error') ) { %>
-  <FONT SIZE="+1" COLOR="#ff0000">Error: <%= $cgi->param('error') %></FONT>
-  <BR><BR>
-<% } %>
-
-<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 %>">
-  </TD>
-</TR>
-<TR>
-  <TD ALIGN="right">Export</TD>
-  <TD><%= $widget->html %>
-</BODY>
-</HTML>
-
+</%init>