service refactor!
[freeside.git] / httemplate / edit / svc_broadband.cgi
index d8a1f7a..30eb631 100644 (file)
-<!-- mason kludge -->
-<%
-
-my( $svcnum,  $pkgnum, $svcpart, $part_svc, $svc_broadband );
-if ( $cgi->param('error') ) {
-  $svc_broadband = new FS::svc_broadband ( {
-    map { $_, scalar($cgi->param($_)) } fields('svc_broadband')
-  } );
-  $svcnum = $svc_broadband->svcnum;
-  $pkgnum = $cgi->param('pkgnum');
-  $svcpart = $cgi->param('svcpart');
-  $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart});
-  die "No part_svc entry!" unless $part_svc;
-} else {
-  my($query) = $cgi->keywords;
-  if ( $query =~ /^(\d+)$/ ) { #editing
-    $svcnum=$1;
-    $svc_broadband=qsearchs('svc_broadband',{'svcnum'=>$svcnum})
-      or die "Unknown (svc_broadband) svcnum!";
-
-    my($cust_svc)=qsearchs('cust_svc',{'svcnum'=>$svcnum})
-      or die "Unknown (cust_svc) svcnum!";
-
-    $pkgnum=$cust_svc->pkgnum;
-    $svcpart=$cust_svc->svcpart;
-  
-    $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart});
-    die "No part_svc entry!" unless $part_svc;
-
-  } else { #adding
-
-    $svc_broadband = new FS::svc_broadband({});
-
-    foreach $_ (split(/-/,$query)) { #get & untaint pkgnum & svcpart
-      $pkgnum=$1 if /^pkgnum(\d+)$/;
-      $svcpart=$1 if /^svcpart(\d+)$/;
-    }
-    $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart});
-    die "No part_svc entry!" unless $part_svc;
-
-    $svcnum='';
-
-    #set fixed and default fields from part_svc
-    foreach my $part_svc_column (
-      grep { $_->columnflag } $part_svc->all_part_svc_column
-    ) {
-      $svc_broadband->setfield( $part_svc_column->columnname,
-                                $part_svc_column->columnvalue,
-                              );
-    }
-
-  }
-}
-my $action = $svc_broadband->svcnum ? 'Edit' : 'Add';
-
-my @ac_list;
-
-if ($pkgnum) {
-
-  unless ($svc_broadband->actypenum) {die "actypenum must be set fixed";};
-  @ac_list = qsearch('ac', { actypenum => $svc_broadband->getfield('actypenum') });
-
-} elsif ( $action eq 'Edit' ) {
-
-  #Nothing?
-
-} else {
-  die "\$action eq Add, but \$pkgnum is null!\n";
-}
-
-
-my $p1 = popurl(1);
-print header("Broadband Service $action", '');
-
-print qq!<FONT SIZE="+1" COLOR="#ff0000">Error: !, $cgi->param('error'),
-      "</FONT>"
-  if $cgi->param('error');
-
-print qq!<FORM ACTION="${p1}process/svc_broadband.cgi" METHOD=POST>!;
-
-#display
-
-
-#svcnum
-print qq!<INPUT TYPE="hidden" NAME="svcnum" VALUE="$svcnum">!;
-print qq!Service #<B>!, $svcnum ? $svcnum : "(NEW)", "</B><BR><BR>";
-
-#pkgnum
-print qq!<INPUT TYPE="hidden" NAME="pkgnum" VALUE="$pkgnum">!;
-#svcpart
-print qq!<INPUT TYPE="hidden" NAME="svcpart" VALUE="$svcpart">!;
-
-#actypenum
-print '<INPUT TYPE="hidden" NAME="actypenum" VALUE="' .
-      $svc_broadband->actypenum . '">';
-
-
-print &ntable("#cccccc",2) . qq!<TR><TD ALIGN="right">AC</TD><TD>!;
-
-#acnum
-if (( $part_svc->part_svc_column('acnum')->columnflag eq 'F' ) or
-    ( !$pkgnum )) {
-
-  my $ac = qsearchs('ac', { acnum => $svc_broadband->acnum });
-  my ($acnum, $acname) = ($ac->acnum, $ac->acname);
-
-  print qq!<INPUT TYPE="hidden" NAME="acnum" VALUE="${acnum}">! .
-        qq!${acnum}: ${acname}</TD></TR>!;
-
-} else {
-
-  my @ac_list = qsearch('ac', { actypenum => $svc_broadband->actypenum });
-  print qq!<SELECT NAME="acnum" SIZE="1"><OPTION VALUE=""></OPTION>!;
-
-  foreach ( @ac_list ) {
-    my ($acnum, $acname) = ($_->acnum, $_->acname);
-    print qq!<OPTION VALUE="${acnum}"! .
-          ($acnum == $svc_broadband->acnum ? ' SELECTED>' : '>') .
-          qq!${acname}</OPTION>!;
-  }
-  print '</TD></TR>';
-
-}
-
-#speed_up & speed_down
-my ($speed_up, $speed_down) = ($svc_broadband->speed_up,
-                               $svc_broadband->speed_down);
-
-print '<TR><TD ALIGN="right">Download speed</TD><TD>';
-if ( $part_svc->part_svc_column('speed_down')->columnflag eq 'F' ) {
-  print qq!<INPUT TYPE="hidden" NAME="speed_down" VALUE="${speed_down}">! .
-        qq!${speed_down}Kbps</TD></TR>!;
-} else {
-  print qq!<INPUT TYPE="text" NAME="speed_down" SIZE=5 VALUE="${speed_down}">! .
-        qq!Kbps</TD></TR>!;
-}
-
-print '<TR><TD ALIGN="right">Upload speed</TD><TD>';
-if ( $part_svc->part_svc_column('speed_up')->columnflag eq 'F' ) {
-  print qq!<INPUT TYPE="hidden" NAME="speed_up" VALUE="${speed_up}">! .
-        qq!${speed_up}Kbps</TD></TR>!;
-} else {
-  print qq!<INPUT TYPE="text" NAME="speed_up" SIZE=5 VALUE="${speed_up}">! .
-        qq!Kbps</TD></TR>!;
-}
-
-#ip_addr & ip_netmask
-#We're assuming that ip_netmask is fixed if ip_addr is fixed.
-#If it isn't, well, <shudder> what the heck are you doing!?!?
-
-my ($ip_addr, $ip_netmask) = ($svc_broadband->ip_addr,
-                              $svc_broadband->ip_netmask);
-
-print '<TR><TD ALIGN="right">IP address/Mask</TD><TD>';
-if ( $part_svc->part_svc_column('ip_addr')->columnflag eq 'F' ) {
-  print qq!<INPUT TYPE="hidden" NAME="ip_addr" VALUE="${ip_addr}">! .
-        qq!<INPUT TYPE="hidden" NAME="ip_netmask" VALUE="${ip_netmask}">! .
-        qq!${ip_addr}/${ip_netmask}</TD></TR>!;
-} else {
-  $ip_addr =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;
-  print <<END;
-  <INPUT TYPE="text" NAME="ip_addr_a" SIZE="3" MAXLENGTH="3" VALUE="${1}">.
-  <INPUT TYPE="text" NAME="ip_addr_b" SIZE="3" MAXLENGTH="3" VALUE="${2}">.
-  <INPUT TYPE="text" NAME="ip_addr_c" SIZE="3" MAXLENGTH="3" VALUE="${3}">.
-  <INPUT TYPE="text" NAME="ip_addr_d" SIZE="3" MAXLENGTH="3" VALUE="${4}">/
-  <INPUT TYPE="text" NAME="ip_netmask" SIZE="2" MAXLENGTH="2" VALUE="${ip_netmask}">
-</TD></TR>
-<TR><TD COLSPAN="2" WIDTH="300">
-<P><SMALL>Leave the IP address and netmask blank for automatic assignment of a /32 address.  Specifing the netmask and not the address will force assignment of a larger block.</SMALL></P>
-</TD></TR>
-END
-}
-
-#mac_addr
-my $mac_addr = $svc_broadband->mac_addr;
-
-unless (( $part_svc->part_svc_column('mac_addr')->columnflag eq 'F' ) and
-        ( $mac_addr eq '' )) {
-  print '<TR><TD ALIGN="right">MAC Address</TD><TD>';
-  if ( $part_svc->part_svc_column('mac_addr')->columnflag eq 'F' ) { #Why?
-    print qq!<INPUT TYPE="hidden" NAME="mac_addr" VALUE="${mac_addr}">! .
-          qq!${mac_addr}</TD></TR>!;
-  } else {
-    #Ewwww
-    $mac_addr =~ /^([a-f0-9]{2}):([a-f0-9]{2}):([a-f0-9]{2}):([a-f0-9]{2}):([a-f0-9]{2}):([a-f0-9]{2})$/i;
-    print <<END;
-  <INPUT TYPE="text" NAME="mac_addr_a" SIZE="2" MACLENGTH="2" VALUE="${1}">:
-  <INPUT TYPE="text" NAME="mac_addr_b" SIZE="2" MACLENGTH="2" VALUE="${2}">:
-  <INPUT TYPE="text" NAME="mac_addr_c" SIZE="2" MACLENGTH="2" VALUE="${3}">:
-  <INPUT TYPE="text" NAME="mac_addr_d" SIZE="2" MACLENGTH="2" VALUE="${4}">:
-  <INPUT TYPE="text" NAME="mac_addr_e" SIZE="2" MACLENGTH="2" VALUE="${5}">:
-  <INPUT TYPE="text" NAME="mac_addr_f" SIZE="2" MACLENGTH="2" VALUE="${6}">
-</TD></TR>
-END
-
-  }
-}
-
-#location
-my $location = $svc_broadband->location;
-
-print '<TR><TD VALIGN="top" ALIGN="right">Location</TD><TD BGCOLOR="#e8e8e8">';
-if ( $part_svc->part_svc_column('location')->columnflag eq 'F' ) {
-  print qq!<PRE>${location}</PRE></TD></TR>!;
-} else {
-  print qq!<TEXTAREA ROWS="4" COLS="30" NAME="location">${location}</TEXTAREA>!;
-}
-
-print '</TABLE><BR><INPUT TYPE="submit" VALUE="Submit">';
-
-print <<END;
-
-    </FORM>
-  </BODY>
+%# If it's stupid but it works, it's still stupid.
+%#  -Kristian
+%
+%use HTML::Widgets::SelectLayers;
+%use Tie::IxHash;
+%
+%my( $svcnum,  $pkgnum, $svcpart, $part_svc, $svc_broadband );
+%if ( $cgi->param('error') ) {
+%
+%  $svc_broadband = new FS::svc_broadband ( {
+%    map { $_, scalar($cgi->param($_)) } fields('svc_broadband'), qw(svcpart)
+%  } );
+%  $svcnum = $svc_broadband->svcnum;
+%  $pkgnum = $cgi->param('pkgnum');
+%  $svcpart = $svc_broadband->svcpart;
+%  $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart});
+%  die "No part_svc entry!" unless $part_svc;
+%
+%} elsif ( $cgi->param('pkgnum') && $cgi->param('svcpart') ) { #adding
+%
+%  $cgi->param('pkgnum') =~ /^(\d+)$/ or die 'unparsable pkgnum';
+%  $pkgnum = $1;
+%  $cgi->param('svcpart') =~ /^(\d+)$/ or die 'unparsable svcpart';
+%  $svcpart = $1;
+%
+%  $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart});
+%  die "No part_svc entry!" unless $part_svc;
+%
+%  $svc_broadband = new FS::svc_broadband({ svcpart => $svcpart });
+%
+%  $svcnum='';
+%
+%  $svc_broadband->set_default_and_fixed;
+%
+%} else { #editing
+%
+%  my($query) = $cgi->keywords;
+%  $query =~ /^(\d+)$/ or die "unparsable svcnum";
+%  $svcnum=$1;
+%  $svc_broadband=qsearchs('svc_broadband',{'svcnum'=>$svcnum})
+%    or die "Unknown (svc_broadband) svcnum!";
+%
+%  my($cust_svc)=qsearchs('cust_svc',{'svcnum'=>$svcnum})
+%    or die "Unknown (cust_svc) svcnum!";
+%
+%  $pkgnum=$cust_svc->pkgnum;
+%  $svcpart=$cust_svc->svcpart;
+%  
+%  $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart});
+%  die "No part_svc entry!" unless $part_svc;
+%
+%}
+%my $action = $svc_broadband->svcnum ? 'Edit' : 'Add';
+%
+%if ($pkgnum) {
+%
+%  #Nothing?
+%
+%} elsif ( $action eq 'Edit' ) {
+%
+%  #Nothing?
+%
+%} else {
+%  die "\$action eq Add, but \$pkgnum is null!\n";
+%}
+%
+%my $p1 = popurl(1);
+%
+%my ($ip_addr, $speed_up, $speed_down, $blocknum, $mac_addr,
+%    $latitude, $longitude, $altitude, $vlan_profile, $auth_key) =
+%    ($svc_broadband->ip_addr,
+%     $svc_broadband->speed_up,
+%     $svc_broadband->speed_down,
+%     $svc_broadband->blocknum,
+%     $svc_broadband->mac_addr,
+%     $svc_broadband->latitude,
+%     $svc_broadband->longitude,
+%     $svc_broadband->altitude,
+%     $svc_broadband->vlan_profile,
+%     $svc_broadband->auth_key,
+%    );
+%
+%
+
+
+<%include("/elements/header.html","Broadband Service $action", '')%>
+% if ($cgi->param('error')) { 
+
+<FONT SIZE="+1" COLOR="#ff0000">Error: <%$cgi->param('error')%></FONT><BR>
+% } 
+
+
+Service #<B><%$svcnum ? $svcnum : "(NEW)"%></B><BR><BR>
+
+<FORM ACTION="<%${p1}%>process/svc_broadband.cgi" METHOD=POST>
+  <INPUT TYPE="hidden" NAME="svcnum" VALUE="<%$svcnum%>">
+  <INPUT TYPE="hidden" NAME="pkgnum" VALUE="<%$pkgnum%>">
+  <INPUT TYPE="hidden" NAME="svcpart" VALUE="<%$svcpart%>">
+
+  <%&ntable("#cccccc",2)%>
+    <TR>
+      <TD ALIGN="right">IP Address</TD>
+      <TD BGCOLOR="#ffffff">
+% if ( $part_svc->part_svc_column('ip_addr')->columnflag eq 'F' ) { 
+
+        <INPUT TYPE="hidden" NAME="ip_addr" VALUE="<%$ip_addr%>"><%$ip_addr%>
+% } else { 
+
+        <INPUT TYPE="text" NAME="ip_addr" VALUE="<%$ip_addr%>">
+% } 
+
+      </TD>
+    </TR>
+    <TR>
+      <TD ALIGN="right">Download speed</TD>
+      <TD BGCOLOR="#ffffff">
+% if ( $part_svc->part_svc_column('speed_down')->columnflag eq 'F' ) { 
+
+        <INPUT TYPE="hidden" NAME="speed_down" VALUE="<%$speed_down%>"><%$speed_down%>Kbps
+% } else { 
+
+    <INPUT TYPE="text" NAME="speed_down" SIZE=5 VALUE="<%$speed_down%>">Kbps
+% } 
+
+      </TD>
+    </TR>
+    <TR>
+      <TD ALIGN="right">Upload speed</TD>
+      <TD BGCOLOR="#ffffff">
+% if ( $part_svc->part_svc_column('speed_up')->columnflag eq 'F' ) { 
+
+        <INPUT TYPE="hidden" NAME="speed_up" VALUE="<%$speed_up%>"><%$speed_up%>Kbps
+% } else { 
+
+        <INPUT TYPE="text" NAME="speed_up" SIZE=5 VALUE="<%$speed_up%>">Kbps
+% } 
+
+      </TD>
+    </TR>
+% if ($action eq 'Add') { 
+
+    <TR>
+      <TD ALIGN="right">Router/Block</TD>
+      <TD BGCOLOR="#ffffff">
+        <SELECT NAME="blocknum">
+%
+%  warn $svc_broadband->svcpart;
+%  foreach my $router ($svc_broadband->allowed_routers) {
+%    warn $router->routername;
+%    foreach my $addr_block ($router->addr_block) {
+%
+
+        <OPTION VALUE="<%$addr_block->blocknum%>"<%($addr_block->blocknum eq $blocknum) ? ' SELECTED' : ''%>>
+          <%$router->routername%>:<%$addr_block->ip_gateway%>/<%$addr_block->ip_netmask%></OPTION>
+%
+%    }
+%  }
+%
+
+        </SELECT>
+      </TD>
+    </TR>
+% } else { 
+
+
+    <TR>
+      <TD ALIGN="right">Router/Block</TD>
+      <TD BGCOLOR="#ffffff">
+        <%$svc_broadband->addr_block->router->routername%>:<%$svc_broadband->addr_block->NetAddr%>
+        <INPUT TYPE="hidden" NAME="blocknum" VALUE="<%$svc_broadband->blocknum%>">
+      </TD>
+    </TR>
+% } 
+    <TR>
+      <TD ALIGN="right">MAC Address</TD>
+      <TD BGCOLOR="#ffffff">
+        <INPUT TYPE="text" NAME="mac_addr" VALUE="<%$mac_addr%>">
+      </TD>
+    </TR>
+    <TR>
+      <TD ALIGN="right">Latitude</TD>
+      <TD BGCOLOR="#ffffff">
+        <INPUT TYPE="text" NAME="latitude" VALUE="<%$latitude%>">
+      </TD>
+    </TR>
+    <TR>
+      <TD ALIGN="right">Longitude</TD>
+      <TD BGCOLOR="#ffffff">
+        <INPUT TYPE="text" NAME="longitude" VALUE="<%$longitude%>">
+      </TD>
+    </TR>
+    <TR>
+      <TD ALIGN="right">Altitude</TD>
+      <TD BGCOLOR="#ffffff">
+        <INPUT TYPE="text" NAME="altitude" VALUE="<%$altitude%>">
+      </TD>
+    </TR>
+    <TR>
+      <TD ALIGN="right">VLAN Profile</TD>
+      <TD BGCOLOR="#ffffff">
+% if ( $part_svc->part_svc_column('vlan_profile')->columnflag eq 'F' ) { 
+
+        <INPUT TYPE="hidden" NAME="vlan_profile" VALUE="<%$vlan_profile%>"><%$vlan_profile%>
+% } else { 
+
+        <INPUT TYPE="text" NAME="vlan_profile" VALUE="<%$vlan_profile%>">
+% } 
+
+      </TD>
+    </TR>
+    <TR>
+      <TD ALIGN="right">Authentication Key</TD>
+      <TD BGCOLOR="#ffffff">
+% if ( $part_svc->part_svc_column('auth_key')->columnflag eq 'F' ) { 
+
+        <INPUT TYPE="hidden" NAME="auth_key" VALUE="<%$auth_key%>"><%$auth_key%>
+% } else { 
+
+        <INPUT TYPE="text" NAME="auth_key" VALUE="<%$auth_key%>">
+% } 
+
+      </TD>
+    </TR>
+%
+%foreach my $field ($svc_broadband->virtual_fields) {
+%  if ( $part_svc->part_svc_column($field)->columnflag ne 'F' &&
+%       $part_svc->part_svc_column($field)->columnflag ne 'X') {
+%    print $svc_broadband->pvf($field)->widget('HTML', 'edit',
+%        $svc_broadband->getfield($field));
+%  }
+%} 
+
+  </TABLE>
+  <BR>
+  <INPUT TYPE="submit" NAME="submit" VALUE="Submit">
+</FORM>
+</BODY>
 </HTML>
-END
-%>
+