Reverted menu-left-example.png back to original and cleaned up menu-top-example to...
[freeside.git] / httemplate / edit / radius_group.html
index 80e17ed..d3ef40c 100644 (file)
@@ -1,16 +1,82 @@
 <& elements/edit.html,
-                 'name'   => 'RADIUS Group',
-                 'table'  => 'radius_group',
-                 'labels' => { 
-                               'groupnum'  => 'Group',
-                               'groupname' => 'RADIUS Group',
-                               'description' => 'Description',
-                             },
-                 'viewall_dir' => 'browse',
+  'name'   => 'RADIUS Group',
+  'table'  => 'radius_group',
+  'labels' => { 
+    'groupnum'  => 'Group',
+    'groupname' => 'RADIUS Group',
+    'description' => 'Description',
+    'attrnum'   => 'Attribute',
+    'priority'  => 'Priority',
+    'speed_down'  => 'Download speed',
+    'speed_up'    => 'Upload speed',
+  },
+  'viewall_dir' => 'browse',
+  'menubar' => \@menubar,
+  'edit_callback' => $edit_callback,
+  'error_callback' => $edit_callback,
+  'fields' => [
+    { 'field'     => 'groupname',
+      'type'      => 'text',
+      'size'      => 20,
+      'colspan'   => 6, # just to not interfere with radius_attr columns
+    },
+    { 'field'     => 'description',
+      'type'      => 'text',
+      'size'      => 40,
+      'colspan'   => 6,
+    },
+    { 'field'     => 'priority',
+      'type'      => 'text',
+      'size'      => 2,
+      'colspan'   => 6, # just to not interfere with radius_attr columns
+    },
+    { 'field'     => 'speed_down',
+      'type'      => 'text',
+      'size'      => 8,
+      'colspan'   => 6,
+    },
+    { 'field'     => 'speed_up',
+      'type'      => 'text',
+      'size'      => 8,
+      'colspan'   => 6,
+    },
+    {
+      'field'     => 'attrnum',
+      'type'      => 'radius_attr',
+      'o2m_table' => 'radius_attr',
+      'm2_label'  => 'Attribute',
+      'm2_error_callback' => $m2_error_callback,
+    },
+  ],
+  #debug => 1
 &>
 <%init>
 
 die "access denied"
   unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
 
+my @menubar = ('View all RADIUS Groups' => $p.'browse/radius_group.html');
+
+my $edit_callback = sub {
+  my ($cgi, $object) = @_;
+  if ( $object->groupnum ) {
+    my $link = $p.'misc/delete-radius_group.html?'.$object->groupnum;
+    push @menubar, 'Delete this Group', $link;
+  }
+};
+
+my $m2_error_callback = sub { # reconstruct the list
+  my ($cgi, $object) = @_;
+
+  my @fields = qw(attrname attrtype op value);
+  map {
+    my $k = $_;
+    next if !length($cgi->param($k.'_attrname'));
+    new FS::radius_attr {
+      'groupnum' => $object->groupnum,
+      'attrnum'  => scalar( $cgi->param($k) ),
+      map {  $_  => scalar( $cgi->param($k.'_'.$_) ) } @fields,
+    };
+  } grep /^attrnum\d+$/, ($cgi->param);
+};
 </%init>