diff options
author | ivan <ivan> | 2009-06-30 01:42:56 +0000 |
---|---|---|
committer | ivan <ivan> | 2009-06-30 01:42:56 +0000 |
commit | 665067cef48a5516e0bfb2dd79d99b8495e25ee5 (patch) | |
tree | 40b11281ad950b57c1dc940e35a691ae62811a17 /httemplate | |
parent | f544c8f095cfb2e844810d31b6230b96033cb1e8 (diff) |
phone devices (for netsapiens integration), RT#5226
Diffstat (limited to 'httemplate')
-rw-r--r-- | httemplate/browse/part_device.html | 27 | ||||
-rw-r--r-- | httemplate/edit/part_device.html | 16 | ||||
-rw-r--r-- | httemplate/edit/phone_device.html | 37 | ||||
-rw-r--r-- | httemplate/edit/process/part_device.html | 11 | ||||
-rw-r--r-- | httemplate/edit/process/phone_device.html | 18 | ||||
-rw-r--r-- | httemplate/elements/menu.html | 7 | ||||
-rwxr-xr-x | httemplate/misc/delete-phone_device.html | 23 | ||||
-rw-r--r-- | httemplate/misc/part_device-import.html | 53 | ||||
-rw-r--r-- | httemplate/misc/process/part_device-import.html | 9 | ||||
-rw-r--r-- | httemplate/view/svc_phone.cgi | 73 |
10 files changed, 274 insertions, 0 deletions
diff --git a/httemplate/browse/part_device.html b/httemplate/browse/part_device.html new file mode 100644 index 000000000..5c8fde339 --- /dev/null +++ b/httemplate/browse/part_device.html @@ -0,0 +1,27 @@ +<% include( 'elements/browse.html', + 'title' => 'Phone device types', + 'name' => 'phone device types', + 'menubar' => [ 'Add a new device type' => + $p.'edit/part_device.html', + 'Import device types' => + $p.'misc/part_device-import.html', + ], + 'query' => { 'table' => 'part_device', }, + 'count_query' => 'SELECT COUNT(*) FROM part_device', + 'header' => [ '#', 'Device type' ], + 'fields' => [ 'devicepart', + 'devicename', + ], + 'links' => [ $link, + $link, + ], + ) +%> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +my $link = [ "${p}edit/part_device.html?", 'devicepart' ]; + +</%init> diff --git a/httemplate/edit/part_device.html b/httemplate/edit/part_device.html new file mode 100644 index 000000000..4f2fe93b4 --- /dev/null +++ b/httemplate/edit/part_device.html @@ -0,0 +1,16 @@ +<% include( 'elements/edit.html', + 'name' => 'Phone device type', + 'table' => 'part_device', + 'labels' => { + 'devicepart' => 'Part number', + 'devicename' => 'Device name', + }, + 'viewall_dir' => 'browse', + ) +%> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +</%init> diff --git a/httemplate/edit/phone_device.html b/httemplate/edit/phone_device.html new file mode 100644 index 000000000..a1aa16620 --- /dev/null +++ b/httemplate/edit/phone_device.html @@ -0,0 +1,37 @@ +<% include( 'elements/edit.html', + 'name' => 'Phone device', + 'table' => 'phone_device', + 'labels' => { + 'devicenum' => 'Device', + 'devicepart' => 'Device type', + 'mac_addr' => 'MAC address', + }, + 'fields' => [ { 'field' => 'devicepart', + 'type' => 'select-table', + 'table' => 'part_device', + 'name_col' => 'devicename', + 'empty_label' =>'Select device type', + #'hashref' =>{ disabled => '' }, + }, + 'mac_addr', + { 'field' => 'svcnum', + 'type' => 'hidden', + }, + ], + 'menubar' => [], #disable viewall + #'viewall_dir' => 'browse', + 'new_callback' => sub { + my( $cgi, $object ) = @_; + $object->svcnum( $cgi->param('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? + + +</%init> diff --git a/httemplate/edit/process/part_device.html b/httemplate/edit/process/part_device.html new file mode 100644 index 000000000..2b7e1da49 --- /dev/null +++ b/httemplate/edit/process/part_device.html @@ -0,0 +1,11 @@ +<% include( 'elements/process.html', + 'table' => 'part_device', + 'viewall_dir' => 'browse', + ) +%> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +</%init> diff --git a/httemplate/edit/process/phone_device.html b/httemplate/edit/process/phone_device.html new file mode 100644 index 000000000..df9d5e793 --- /dev/null +++ b/httemplate/edit/process/phone_device.html @@ -0,0 +1,18 @@ +<% include( 'elements/process.html', + 'table' => 'phone_device', + 'redirect' => sub { + my( $cgi, $phone_device ) = @_; + popurl(3).'view/svc_phone.cgi?'. + 'svcnum='. $phone_device->svcnum. + ';devicenum='; + }, + ) +%> +<%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? + +</%init> diff --git a/httemplate/elements/menu.html b/httemplate/elements/menu.html index cda1efcae..b855f790c 100644 --- a/httemplate/elements/menu.html +++ b/httemplate/elements/menu.html @@ -332,6 +332,10 @@ tie my %config_broadband, 'Tie::IxHash', 'View/Edit address blocks' => [ $fsurl.'browse/addr_block.cgi', 'Manage address blocks and block assignments to broadband routers' ], ; +tie my %config_phone, 'Tie::IxHash', + 'View/Edit phone device types' => [ $fsurl.'browse/part_device.html', 'Phone device types' ], +; + tie my %config_misc, 'Tie::IxHash'; $config_misc{'View/Edit advertising sources'} = [ $fsurl.'browse/part_referral.html', 'Where a customer heard about your service. Tracked for informational purposes' ] if $curuser->access_right('Edit advertising sources') @@ -364,6 +368,8 @@ $config_menu{'Dialup'} = [ \%config_dialup, '' ] if ( $curuser->access_right('Dialup configuration') ); $config_menu{'Fixed (username-less) broadband'} = [ \%config_broadband, '' ] if ( $curuser->access_right('Broadband configuration') ); +$config_menu{'Phone'} = [ \%config_phone, '' ] + if ( $curuser->access_right('Configuration') ); $config_menu{'Miscellaneous'} = [ \%config_misc, '' ] if $curuser->access_right('Edit advertising sources') || $curuser->access_right('Edit global advertising sources'); @@ -393,6 +399,7 @@ $menu{'Configuration'} = [ \%config_menu, 'Configuraiton and setup' ] || $curuser->access_right('Edit global billing events') || $curuser->access_right('Dialup configuration') || $curuser->access_right('Broadband configuration') + || $curuser->access_right('Phone configuration') || $curuser->access_right('Edit advertising sources') || $curuser->access_right('Edit global advertising sources'); diff --git a/httemplate/misc/delete-phone_device.html b/httemplate/misc/delete-phone_device.html new file mode 100755 index 000000000..7220c41e3 --- /dev/null +++ b/httemplate/misc/delete-phone_device.html @@ -0,0 +1,23 @@ +% if ( $error ) { +% errorpage($error); +% } else { +<% $cgi->redirect($p. "view/svc_phone.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 $phone_device = qsearchs('phone_device', { 'devicenum' => $devicenum } ); +my $svcnum = $phone_device->svcnum; + +my $error = $phone_device->delete; + +</%init> diff --git a/httemplate/misc/part_device-import.html b/httemplate/misc/part_device-import.html new file mode 100644 index 000000000..7bd640459 --- /dev/null +++ b/httemplate/misc/part_device-import.html @@ -0,0 +1,53 @@ +<% include("/elements/header.html", 'Import device types') %> + +Import a file containing phone device types, one per line. +<BR><BR> + +<% include( '/elements/form-file_upload.html', + 'name' => 'PartDeviceImportForm', + 'action' => 'process/part_device-import.html', + 'num_files' => 1, + 'fields' => [ 'format', ], + 'message' => 'Device type import successful', + 'url' => $p.'browse/part_device.html', + ) +%> + +<% &ntable("#cccccc", 2) %> + + <INPUT TYPE="hidden" NAME="format" VALUE="default"> + + <% include( '/elements/file-upload.html', + 'field' => 'file', + 'label' => 'Filename', + ) + %> + + <TR> + <TD COLSPAN=2 ALIGN="center" STYLE="padding-top:6px"> + <INPUT TYPE = "submit" + ID = "submit" + VALUE = "Import file" + onClick = "document.PartDeviceImportForm.submit.disabled=true;" + > + </TD> + </TR> + +</TABLE> + +</FORM> + +<BR> + +Upload file can be a text file or Excel spreadsheet. If an Excel spreadsheet, + should have an .XLS extension. +<BR><BR> + +<% include('/elements/footer.html') %> + +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Import'); + +</%init> diff --git a/httemplate/misc/process/part_device-import.html b/httemplate/misc/process/part_device-import.html new file mode 100644 index 000000000..eac111a40 --- /dev/null +++ b/httemplate/misc/process/part_device-import.html @@ -0,0 +1,9 @@ +<% $server->process %> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Import'); + +my $server = new FS::UI::Web::JSRPC 'FS::part_device::process_batch_import', $cgi; + +</%init> diff --git a/httemplate/view/svc_phone.cgi b/httemplate/view/svc_phone.cgi index f604daa47..3d4045b99 100644 --- a/httemplate/view/svc_phone.cgi +++ b/httemplate/view/svc_phone.cgi @@ -22,6 +22,74 @@ my $html_foot = sub { my $svc_phone = shift; + ### + # Devices + ### + + my $devices = ''; + + my $sth = dbh->prepare("SELECT COUNT(*) FROM part_device") #WHERE disabled = '' OR disabled IS NULL;"); + or die dbh->errstr; + $sth->execute or die $sth->errstr; + my $num_part_device = $sth->fetchrow_arrayref->[0]; + + my @phone_device = $svc_phone->phone_device; + if ( @phone_device || $num_part_device ) { + my $svcnum = $svc_phone->svcnum; + $devices .= + qq[Devices (<A HREF="${p}edit/phone_device.html?svcnum=$svcnum">Add device</A>)<BR>]; + if ( @phone_device ) { + + $devices .= qq! + <SCRIPT> + function areyousure(href) { + if (confirm("Are you sure you want to delete this device?") == true) + window.location.href = href; + } + </SCRIPT> + !; + + + $devices .= + include('/elements/table-grid.html'). + '<TR>'. + '<TH CLASS="grid" BGCOLOR="#cccccc">Type</TH>'. + '<TH CLASS="grid" BGCOLOR="#cccccc">MAC Addr</TH>'. + '<TH CLASS="grid" BGCOLOR="#cccccc"></TH>'. + '</TR>'; + my $bgcolor1 = '#eeeeee'; + my $bgcolor2 = '#ffffff'; + my $bgcolor = ''; + + foreach my $phone_device ( @phone_device ) { + + if ( $bgcolor eq $bgcolor1 ) { + $bgcolor = $bgcolor2; + } else { + $bgcolor = $bgcolor1; + } + my $td = qq(<TD CLASS="grid" BGCOLOR="$bgcolor">); + + my $devicenum = $phone_device->devicenum; + + $devices .= '<TR>'. + $td. $phone_device->part_device->devicename. '</TD>'. + $td. $phone_device->mac_addr. '</TD>'. + "$td( ". + qq(<A HREF="${p}edit/phone_device.html?$devicenum">edit</A> | ). + qq(<A HREF="javascript:areyousure('${p}misc/delete-phone_device.html?$devicenum')">delete</A>). + ' )</TD>'. + '</TR>'; + } + $devices .= '</TABLE><BR>'; + } + $devices .= '<BR>'; + } + + ## + # CDR links + ## + tie my %what, 'Tie::IxHash', 'pending' => 'NULL', 'billed' => 'done', @@ -46,6 +114,11 @@ my $html_foot = sub { my @ilinks = ( qq(<A HREF="${p}search/cdr.html?dst=$number">). 'View incoming CDRs</A>' ); + ### + # concatenate & return + ### + + $devices. join(' | ', @links ). '<BR>'. join(' | ', @ilinks). '<BR>'; |