diff options
author | Ivan Kohler <ivan@freeside.biz> | 2014-01-24 00:39:40 -0800 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2014-01-24 00:39:40 -0800 |
commit | f3ac48703be75c0e2aec161487057eafeb8fc74f (patch) | |
tree | fd3bc7402cf055bbdccd86927532283cde51b562 /httemplate | |
parent | 960c55002469c33ea9b0a949ad473a705e1b6cf9 (diff) |
svc_pbx devices, for RT#24968
Diffstat (limited to 'httemplate')
-rw-r--r-- | httemplate/edit/elements/device_Common.html | 110 | ||||
-rw-r--r-- | httemplate/edit/pbx_device.html | 4 | ||||
-rw-r--r-- | httemplate/edit/process/elements/device_Common.html | 27 | ||||
-rw-r--r-- | httemplate/edit/process/pbx_device.html | 3 | ||||
-rwxr-xr-x | httemplate/misc/delete-pbx_device.html | 23 | ||||
-rw-r--r-- | httemplate/view/elements/svc_devices.html | 8 |
6 files changed, 171 insertions, 4 deletions
diff --git a/httemplate/edit/elements/device_Common.html b/httemplate/edit/elements/device_Common.html new file mode 100644 index 000000000..ab8135784 --- /dev/null +++ b/httemplate/edit/elements/device_Common.html @@ -0,0 +1,110 @@ +<& edit.html, + 'labels' => { + 'devicenum' => 'Device', + 'devicepart' => 'Device type', + 'mac_addr' => 'MAC address', + }, + 'fields' => [ { 'field' => 'devicepart', + 'type' => 'select-table', + 'table' => 'part_device', + 'name_col' => 'devicename', + 'onchange' => 'devicepart_changed', + 'empty_label' =>'Select device type', + #'hashref' =>{ disabled => '' }, + }, + { field => 'mac_addr', + type => 'select-mac', + }, + { 'field' => 'svcnum', + 'type' => 'hidden', + }, + ], + 'menubar' => [], #disable viewall + #'viewall_dir' => 'browse', + 'new_callback' => sub { + my( $cgi, $object ) = @_; + $object->svcnum( $cgi->param('svcnum') ); + }, + 'html_foot' => $html_foot, + %opt, +&> +<%init> + +my %opt = @_; + +my @deviceparts_with_inventory = + map $_->devicepart, + qsearch({ 'table' => 'part_device', + 'extra_sql' => 'WHERE inventory_classnum IS NOT NULL', + }); + +my $html_foot = sub { + my $js = " +<SCRIPT TYPE=\"text/javascript\"> + + function opt(what,value,text) { + var optionName = new Option(text, value, false, false); + var length = what.length; + what.options[length] = optionName; + } + + function devicepart_changed(what){ + + var macsel = document.getElementById('sel_mac_addr'); + var mac = document.getElementById('mac_addr'); + + function update_macs(macs) { + for ( var i = macsel.length; i >= 0; i-- ) + macsel.options[i] = null; + + var macArray = eval('(' + macs + ')' ); + if(macArray.length == 0) + opt(macsel,'','No MAC addresses found in inventory for this device type'); + else + opt(macsel,'','Select MAC address'); + + for ( var i = 0; i < macArray.length; i++ ) { + opt(macsel,macArray[i],macArray[i]); + } + + } + + var devicepart = what.options[what.selectedIndex].value; + + var deviceparts_with_inventory = new Array("; +$js .= join(',', map qq("$_"), @deviceparts_with_inventory); +$js .= "); + + var hasInventory = false; + for ( i = 0; i < deviceparts_with_inventory.length; i++ ) { + if ( deviceparts_with_inventory[i] == devicepart ) + hasInventory = true; + } + + + if(hasInventory) { // do the AJAX thing, disable text field + macsel.style.display = 'inline'; + mac.style.display = 'none'; + mac.value = ''; + get_macs( devicepart, update_macs ); + } else { // clear & display text field only, clear/hide select + mac.style.display = 'inline'; + macsel.style.display = 'none'; + macsel.selectedIndex = 0; + } + + } + + devicepart_changed(document.getElementById('devicepart')); +</SCRIPT>"; + + $js; +}; + +# :/ needs agent-virt so you can't futz with arbitrary devices + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Provision customer service'); #something else more specific? + + +</%init> diff --git a/httemplate/edit/pbx_device.html b/httemplate/edit/pbx_device.html new file mode 100644 index 000000000..457ec7121 --- /dev/null +++ b/httemplate/edit/pbx_device.html @@ -0,0 +1,4 @@ +<& elements/device_Common.html, + 'name' => 'PBX device', + 'table' => 'pbx_device', +&> diff --git a/httemplate/edit/process/elements/device_Common.html b/httemplate/edit/process/elements/device_Common.html new file mode 100644 index 000000000..7b6f2cd78 --- /dev/null +++ b/httemplate/edit/process/elements/device_Common.html @@ -0,0 +1,27 @@ +<& process.html, + 'redirect' => sub { + my( $cgi, $X_device ) = @_; + popurl(3)."view/$svc_table.cgi?". + 'svcnum='. $X_device->svcnum. + ';devicenum='; + }, + %opt, +&> +<%init> + +my %opt = @_; + +warn my $table = $opt{table}; +( my $svc_table = $table ) =~ s/_device//; +$svc_table = "svc_$svc_table"; + +if($cgi->param('sel_mac_addr') && !$cgi->param('mac_addr')) { + $cgi->param('mac_addr',$cgi->param('sel_mac_addr')); +} + +# :/ needs agent-virt so you can't futz with arbitrary devices + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Provision customer service'); #something else more specific? + +</%init> diff --git a/httemplate/edit/process/pbx_device.html b/httemplate/edit/process/pbx_device.html new file mode 100644 index 000000000..664a9e715 --- /dev/null +++ b/httemplate/edit/process/pbx_device.html @@ -0,0 +1,3 @@ +<& elements/device_Common.html, + 'table' => 'pbx_device', +&> diff --git a/httemplate/misc/delete-pbx_device.html b/httemplate/misc/delete-pbx_device.html new file mode 100755 index 000000000..7540d2f9f --- /dev/null +++ b/httemplate/misc/delete-pbx_device.html @@ -0,0 +1,23 @@ +% if ( $error ) { +% errorpage($error); +% } else { +<% $cgi->redirect($p. "view/svc_pbx.cgi?". $svcnum) %> +% } +<%init> + +# :/ needs agent-virt so you can't futz with arbitrary devices + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Provision customer service'); #something else more specific? + +#untaint devicenum +my($query) = $cgi->keywords; +$query =~ /^(\d+)$/ || die "Illegal devicenum"; +my $devicenum = $1; + +my $pbx_device = qsearchs('pbx_device', { 'devicenum' => $devicenum } ); +my $svcnum = $pbx_device->svcnum; + +my $error = $pbx_device->delete; + +</%init> diff --git a/httemplate/view/elements/svc_devices.html b/httemplate/view/elements/svc_devices.html index 9458c922c..c9f5eda78 100644 --- a/httemplate/view/elements/svc_devices.html +++ b/httemplate/view/elements/svc_devices.html @@ -15,7 +15,7 @@ %if ( @devices || $num_part_device || $table eq 'dsl_device' ) { % my $svcnum = $svc_x->svcnum; - Devices + <FONT CLASS="fsinnerbox-title">Devices</FONT> (<A HREF="<%$p%>edit/<%$table%>.html?svcnum=<%$svcnum%>">Add device</A>) <BR> @@ -30,7 +30,7 @@ <& /elements/table-grid.html &> <TR> -% if ( $table eq 'phone_device' || $table eq 'cable_device' ) { +% if ( $table ne 'dsl_device' ) { # ( $table eq 'phone_device' || $table eq 'cable_device' || $table eq 'pbx_device' ) { <TH CLASS="grid" BGCOLOR="#cccccc">Type</TH> % } <TH CLASS="grid" BGCOLOR="#cccccc">MAC Addr</TH> @@ -62,7 +62,7 @@ % if ( $table eq 'phone_device' || $svc_x->isa('FS::device_Common') ) { <% $td %><% $device->part_device->devicename |h %></TD> % } - <% $td %><% $device->mac_addr %></TD> + <% $td %><% $device->mac_addr_pretty %></TD> <% $td %><% $export_links %></TD> <% $td %>( % unless ( $opt{'no_edit'} ) { @@ -85,7 +85,7 @@ my $table = $opt{'table'}; #part_device, dsl_device my $svc_x = $opt{'svc_x'}; my $num_part_device = 0; -if ( $table eq 'phone_device' || $table eq 'cable_device' ) { +if ( $table ne 'dsl_device' ) { # ( $table eq 'phone_device' || $table eq 'cable_device' || $table eq 'pbx_device' ) { my $sth = dbh->prepare("SELECT COUNT(*) FROM part_device") #WHERE disabled = '' OR disabled IS NULL;"); or die dbh->errstr; |