FS/FS/pbx_extension.pm
[freeside.git] / httemplate / edit / svc_pbx.html
diff --git a/httemplate/edit/svc_pbx.html b/httemplate/edit/svc_pbx.html
new file mode 100644 (file)
index 0000000..d973bf5
--- /dev/null
@@ -0,0 +1,52 @@
+<& elements/svc_Common.html,
+     'table'          => 'svc_pbx',
+
+     'end_callback' => sub {
+       my( $cgi, $svc_pbx, $fields, $opt ) = @_;
+       $opt->{labels}{extensionnum} = ' ';
+       push @$fields,
+         { type  => 'tablebreak-tr-title',
+           value => 'Extensions',
+         },
+         {
+           field     => 'extensionnum',
+           type      => 'pbx_extension',
+           o2m_table => 'pbx_extension',
+           m2_label  => ' ',
+           m2_error_callback => $m2_error_callback,
+         },
+       ;
+
+     },
+
+&>
+<%init>
+
+my $m2_error_callback = sub {
+  my($cgi, $object) = @_;
+
+  #process_o2m fields in process/svc_pbx.html
+  my @fields = qw( extension pin sip_password phone_name );
+  my @gfields = ( '', map "_$_", @fields );
+
+  map {
+        if ( /^extensionnum(\d+)$/ ) {
+          my $num = $1;
+          if ( grep $cgi->param("extensionnum$num$_"), @gfields ) {
+            my $x = new FS::pbx_extension {
+              'extensionnum' => scalar($cgi->param("extensionnum$num")),
+              map { $_ => scalar($cgi->param("extensionnum${num}_$_")) } @fields,
+            };
+            $x;
+          } else {
+            ();
+          }
+        } else {
+          ();
+        }
+      }
+      $cgi->param;
+};
+
+
+</%init>