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/edit | |
parent | 960c55002469c33ea9b0a949ad473a705e1b6cf9 (diff) |
svc_pbx devices, for RT#24968
Diffstat (limited to 'httemplate/edit')
-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 |
4 files changed, 144 insertions, 0 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', +&> |