summaryrefslogtreecommitdiff
path: root/httemplate/edit/process
diff options
context:
space:
mode:
authorjeff <jeff>2008-06-28 19:25:24 +0000
committerjeff <jeff>2008-06-28 19:25:24 +0000
commita1871d3d13c1dafa93b956762c0d23728d261da7 (patch)
treeecd799ff28ca27d5e2ef07a615bcac49621dd391 /httemplate/edit/process
parent7588be4eb948426b972d0238dcdbb1537dc6a72a (diff)
agent virtualize address blocks and routers
Diffstat (limited to 'httemplate/edit/process')
-rwxr-xr-xhttemplate/edit/process/addr_block/add.cgi36
-rwxr-xr-xhttemplate/edit/process/addr_block/allocate.cgi4
-rwxr-xr-xhttemplate/edit/process/addr_block/deallocate.cgi40
-rwxr-xr-xhttemplate/edit/process/addr_block/split.cgi44
-rw-r--r--httemplate/edit/process/elements/process.html17
-rw-r--r--httemplate/edit/process/router.cgi80
-rwxr-xr-xhttemplate/edit/process/svc_acct_pop.cgi5
-rw-r--r--httemplate/edit/process/svc_broadband.cgi36
8 files changed, 84 insertions, 178 deletions
diff --git a/httemplate/edit/process/addr_block/add.cgi b/httemplate/edit/process/addr_block/add.cgi
index e9f9b9736..4321f946a 100755
--- a/httemplate/edit/process/addr_block/add.cgi
+++ b/httemplate/edit/process/addr_block/add.cgi
@@ -1,28 +1,20 @@
-%
-%
-%my $error = '';
-%my $ip_gateway = $cgi->param('ip_gateway');
-%my $ip_netmask = $cgi->param('ip_netmask');
-%
-%my $new = new FS::addr_block {
-% ip_gateway => $ip_gateway,
-% ip_netmask => $ip_netmask,
-% routernum => 0 };
-%
-%$error = $new->insert;
-%
-%if ( $error ) {
-% $cgi->param('error', $error);
-% print $cgi->redirect(popurl(4). "browse/addr_block.cgi?". $cgi->query_string );
-%} else {
-% print $cgi->redirect(popurl(4). "browse/addr_block.cgi");
-%}
-%
+<% include( '../elements/process.html',
+ 'table' => 'addr_block',
+ 'redirect' => popurl(4). 'browse/addr_block.cgi?dummy=',
+ 'error_redirect' => popurl(4). 'browse/addr_block.cgi?',
+ 'agent_virt' => 1,
+ 'agent_null_right' => 'Engineering global configuration',
+ )
+%>
<%init>
-my $conf = new FS::Conf;
+my $curuser = $FS::CurrentUser::CurrentUser;
die "access denied"
- unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
+ unless $curuser->access_right('Engineering configuration')
+ || $curuser->access_right('Engineering global configuration');
+
+$cgi->param('routernum', 0) # in FS::addr_block::check instead?
+ unless $cgi->param('routernum');
</%init>
diff --git a/httemplate/edit/process/addr_block/allocate.cgi b/httemplate/edit/process/addr_block/allocate.cgi
index d1bd73f1f..f377d8155 100755
--- a/httemplate/edit/process/addr_block/allocate.cgi
+++ b/httemplate/edit/process/addr_block/allocate.cgi
@@ -8,7 +8,9 @@
<%init>
my $conf = new FS::Conf;
+my $curuser = $FS::CurrentUser::CurrentUser;
die "access denied"
- unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
+ unless $curuser->access_right('Engineering configuration')
+ || $curuser->access_right('Engineering global configuration');
</%init>
diff --git a/httemplate/edit/process/addr_block/deallocate.cgi b/httemplate/edit/process/addr_block/deallocate.cgi
index 95e1b7e4d..91184b33e 100755
--- a/httemplate/edit/process/addr_block/deallocate.cgi
+++ b/httemplate/edit/process/addr_block/deallocate.cgi
@@ -1,32 +1,20 @@
-%
-%my $error = '';
-%my $blocknum = $cgi->param('blocknum');
-%
-%my $addr_block = qsearchs('addr_block', { blocknum => $blocknum });
-%
-%if($addr_block) {
-% my $router = $addr_block->router;
-% if ($router) {
-% $error = $addr_block->deallocate($router);
-% } else {
-% $error = "Block is not allocated to a router";
-% }
-%} else {
-% $error = "Cannot find block with blocknum $blocknum";
-%}
-%
-%if ( $error ) {
-% $cgi->param('error', $error);
-% print $cgi->redirect(popurl(4). "browse/addr_block.cgi?" . $cgi->query_string);
-%} else {
-% print $cgi->redirect(popurl(4). "browse/addr_block.cgi");
-%}
-%
-
+<% include( '../elements/process.html',
+ 'table' => 'addr_block',
+ 'copy_on_empty' => [ grep { $_ ne 'routernum' }
+ fields 'addr_block' ],
+ 'redirect' => popurl(4). 'browse/addr_block.cgi?',
+ 'error_redirect' => popurl(4). 'browse/addr_block.cgi?',
+ 'agent_virt' => 1,
+ 'agent_null_right' => 'Engineering global configuration',
+ )
+%>
<%init>
my $conf = new FS::Conf;
+my $curuser = $FS::CurrentUser::CurrentUser;
die "access denied"
- unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
+ unless $curuser->access_right('Engineering configuration')
+ || $curuser->access_right('Engineering global configuration');
+$cgi->param('routernum', 0); # just to be explicit about what we are doing
</%init>
diff --git a/httemplate/edit/process/addr_block/split.cgi b/httemplate/edit/process/addr_block/split.cgi
index b3a33b18a..eb55d008e 100755
--- a/httemplate/edit/process/addr_block/split.cgi
+++ b/httemplate/edit/process/addr_block/split.cgi
@@ -1,27 +1,27 @@
-%
-%my $error = '';
-%my $blocknum = $cgi->param('blocknum');
-%my $addr_block = qsearchs('addr_block', { blocknum => $blocknum });
-%
-%if ( $addr_block) {
-% $error = $addr_block->split_block;
-%} else {
-% $error = "Unknown blocknum: $blocknum";
-%}
-%
-%
-%if ( $error ) {
-% $cgi->param('error', $error);
-% print $cgi->redirect(popurl(4). "browse/addr_block.cgi?". $cgi->query_string );
-%} else {
-% print $cgi->redirect(popurl(4). "browse/addr_block.cgi");
-%}
-%
-
+<% $cgi->redirect(popurl(4). "browse/addr_block.cgi?". $cgi->query_string ) %>
<%init>
-my $conf = new FS::Conf;
+my $curuser = $FS::CurrentUser::CurrentUser;
+
die "access denied"
- unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
+ unless $curuser->access_right('Engineering configuration')
+ || $curuser->access_right('Engineering global configuration');
+
+my $error = '';
+$cgi->param('blocknum') =~ /^(\d+)$/ or die "invalid blocknum";
+my $blocknum = $1;
+
+my $addr_block = qsearchs({ 'table' => 'addr_block',
+ 'hashref' => { blocknum => $blocknum },
+ 'extra_sql' => ' AND '. $curuser->agentnums_sql(
+ 'null_right' => 'Engineering global configuration'
+ ),
+ })
+ or $error = "Unknown blocknum: $blocknum";
+
+$error ||= $addr_block->split_block;
+
+$cgi->param('error', $error)
+ if $error;
</%init>
diff --git a/httemplate/edit/process/elements/process.html b/httemplate/edit/process/elements/process.html
index 6f271ee29..de0304a94 100644
--- a/httemplate/edit/process/elements/process.html
+++ b/httemplate/edit/process/elements/process.html
@@ -33,7 +33,8 @@ Example:
'clear_on_error' => [ 'form_field1', 'form_field2', ... ],
- #pass an arrayref of hashrefs for multiple m2ms or m2names
+ #pass an arrayref of hashrefs for multiple m2ms or m2names
+ #be certain you incorporate m2m_Common if you see error: param
'process_m2m' => { 'link_table' => 'link_table_name',
'target_table' => 'target_table_name',
@@ -176,6 +177,13 @@ my %hash =
my $new = $class->new( \%hash );
+if ($old && exists($opt{'copy_on_empty'})) {
+ foreach my $field (@{$opt{'copy_on_empty'}}) {
+ $new->set($field, $old->get($field))
+ unless scalar($cgi->param($field));
+ }
+}
+
if ( $opt{'agent_virt'} ) {
die "illegal agentnum"
unless $curuser->agentnums_href->{$new->agentnum}
@@ -184,13 +192,6 @@ if ( $opt{'agent_virt'} ) {
&& $curuser->access_right($opt{'agent_null_right'});
}
-if ($old && exists($opt{'copy_on_empty'})) {
- foreach my $field (@{$opt{'copy_on_empty'}}) {
- $new->set($field, $old->get($field))
- unless scalar($cgi->param($field));
- }
-}
-
$error ||= $new->check;
my @args = ();
diff --git a/httemplate/edit/process/router.cgi b/httemplate/edit/process/router.cgi
index 7e0baf782..6e717d19c 100644
--- a/httemplate/edit/process/router.cgi
+++ b/httemplate/edit/process/router.cgi
@@ -1,70 +1,20 @@
-%local $FS::UID::AutoCommit=0;
-%
-%sub check {
-% my $error = shift;
-% if($error) {
-% $cgi->param('error', $error);
-% print $cgi->redirect(popurl(3) . "edit/router.cgi?". $cgi->query_string);
-% dbh->rollback;
-% exit;
-% }
-%}
-%
-%my $error = '';
-%my $routernum = $cgi->param('routernum');
-%my $routername = $cgi->param('routername');
-%my $old = qsearchs('router', { routernum => $routernum });
-%my @old_psr;
-%
-%my $new = new FS::router {
-% map {
-% ($_, scalar($cgi->param($_)));
-% } fields('router')
-%};
-%
-%if($old) {
-% $error = $new->replace($old);
-%} else {
-% $error = $new->insert;
-% $routernum = $new->routernum;
-%}
-%
-%check($error);
-%
-%if ($old) {
-% @old_psr = $old->part_svc_router;
-% foreach my $psr (@old_psr) {
-% if($cgi->param('svcpart_'.$psr->svcpart) eq 'ON') {
-% # do nothing
-% } else {
-% $error = $psr->delete;
-% }
-% }
-% check($error);
-%}
-%
-%foreach($cgi->param) {
-% if($cgi->param($_) eq 'ON' and /^svcpart_(\d+)$/) {
-% my $svcpart = $1;
-% if(grep {$_->svcpart == $svcpart} @old_psr) {
-% # do nothing
-% } else {
-% my $new_psr = new FS::part_svc_router { svcpart => $svcpart,
-% routernum => $routernum };
-% $error = $new_psr->insert;
-% }
-% check($error);
-% }
-%}
-%
-%
-%# Yay, everything worked!
-%dbh->commit or die dbh->errstr;
-%print $cgi->redirect(popurl(3). "browse/router.cgi");
-%
+<% include('elements/process.html',
+ 'table' => 'router',
+ 'viewall_dir' => 'browse',
+ 'viewall_ext' => 'cgi',
+ 'edit_ext' => 'cgi',
+ 'process_m2m' => { 'link_table' => 'part_svc_router',
+ 'target_table' => 'part_svc',
+ },
+ 'agent_virt' => 1,
+ 'agent_null_right' => 'Engineering global configuration',
+ )
+%>
<%init>
+my $curuser = $FS::CurrentUser::CurrentUser;
die "access denied"
- unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
+ unless $curuser->access_right('Engineering configuration')
+ || $curuser->access_right('Engineering global configuration');
</%init>
diff --git a/httemplate/edit/process/svc_acct_pop.cgi b/httemplate/edit/process/svc_acct_pop.cgi
index 75b89c88f..522e94948 100755
--- a/httemplate/edit/process/svc_acct_pop.cgi
+++ b/httemplate/edit/process/svc_acct_pop.cgi
@@ -6,8 +6,11 @@
%}
<%init>
+my $curuser = $FS::CurrentUser::CurrentUser;
+
die "access denied"
- unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
+ unless $curuser->access_right('Engineering configuration')
+ || $curuser->access_right('Engineering global configuration');
my $popnum = $cgi->param('popnum');
diff --git a/httemplate/edit/process/svc_broadband.cgi b/httemplate/edit/process/svc_broadband.cgi
index 8600da349..d5c9820bb 100644
--- a/httemplate/edit/process/svc_broadband.cgi
+++ b/httemplate/edit/process/svc_broadband.cgi
@@ -1,38 +1,8 @@
-%if ( $error ) {
-% $cgi->param('error', $error);
-% $cgi->param('ip_addr', $new->ip_addr);
-<% $cgi->redirect(popurl(2). "svc_broadband.cgi?". $cgi->query_string ) %>
-%} else {
-<% $cgi->redirect(popurl(3). "view/svc_broadband.cgi?" . $svcnum ) %>
-%}
+<% include('elements/svc_Common.html', 'table' => 'svc_broadband') %>
<%init>
+my $curuser = $FS::CurrentUser::CurrentUser;
die "access denied"
- unless $FS::CurrentUser::CurrentUser->access_right('Provision customer service'); #something else more specific?
-
-$cgi->param('svcnum') =~ /^(\d*)$/ or die "Illegal svcnum!";
-my $svcnum = $1;
-
-my $old;
-if ( $svcnum ) {
- $old = qsearchs('svc_broadband', { 'svcnum' => $svcnum } )
- or die "fatal: can't find broadband service (svcnum $svcnum)!";
-} else {
- $old = '';
-}
-
-my $new = new FS::svc_broadband ( {
- map {
- ($_, scalar($cgi->param($_)));
- } ( fields('svc_broadband'), qw( pkgnum svcpart ) )
-} );
-
-my $error;
-if ( $svcnum ) {
- $error = $new->replace($old);
-} else {
- $error = $new->insert;
- $svcnum = $new->svcnum;
-}
+ unless $curuser->access_right('Provision customer service'); #something else more specific?
</%init>