diff options
author | ivan <ivan> | 2008-01-10 21:53:49 +0000 |
---|---|---|
committer | ivan <ivan> | 2008-01-10 21:53:49 +0000 |
commit | c371f6e225cfffa667815a51571203b034e4f75c (patch) | |
tree | 4f9e388935907076fe4eb595deb8e095dc22f064 /httemplate/edit | |
parent | 8baad1bb7327eb2f704bdcc5d040a24a94de8879 (diff) |
new rate editor
Diffstat (limited to 'httemplate/edit')
-rw-r--r-- | httemplate/edit/elements/edit.html | 4 | ||||
-rwxr-xr-x | httemplate/edit/process/rate_region.cgi | 95 | ||||
-rw-r--r-- | httemplate/edit/rate.cgi | 112 | ||||
-rw-r--r-- | httemplate/edit/rate_region.cgi | 192 |
4 files changed, 184 insertions, 219 deletions
diff --git a/httemplate/edit/elements/edit.html b/httemplate/edit/elements/edit.html index bd362e1c7..ad52f7a4c 100644 --- a/httemplate/edit/elements/edit.html +++ b/httemplate/edit/elements/edit.html @@ -173,6 +173,10 @@ Example: % if $opt{'debug'}; % % my %include_common = ( +% +% #text and derivitives +% 'size' => $f->{'size'}, +% % #checkbox, title, fixed, fixedhidden % #& deprecated weird value hashref used only by reason.html % 'value' => $f->{'value'}, diff --git a/httemplate/edit/process/rate_region.cgi b/httemplate/edit/process/rate_region.cgi index 753224565..3933ff3c5 100755 --- a/httemplate/edit/process/rate_region.cgi +++ b/httemplate/edit/process/rate_region.cgi @@ -1,52 +1,53 @@ -% -% -%my $regionnum = $cgi->param('regionnum'); -% -%my $old = qsearchs('rate_region', { 'regionnum' => $regionnum } ) if $regionnum; -% -%my $new = new FS::rate_region ( { -% map { -% $_, scalar($cgi->param($_)); -% } ( fields('rate_region') ) -%} ); -% -%my $countrycode = $cgi->param('countrycode'); -%my @npa = split(/\s*,\s*/, $cgi->param('npa')); -%$npa[0] = '' unless @npa; -%my @rate_prefix = map { -% new FS::rate_prefix { -% 'countrycode' => $countrycode, -% 'npa' => $_, -% } -% } @npa; -% -%my @dest_detail = map { -% my $ratenum = $_->ratenum; -% new FS::rate_detail { -% 'ratenum' => $ratenum, -% map { $_ => $cgi->param("$_$ratenum") } -% qw( min_included min_charge sec_granularity ) -% }; -%} qsearch('rate', {} ); -% -% -%my $error; -%if ( $regionnum ) { -% $error = $new->replace($old, 'rate_prefix' => \@rate_prefix, -% 'dest_detail' => \@dest_detail, ); -%} else { -% $error = $new->insert( 'rate_prefix' => \@rate_prefix, -% 'dest_detail' => \@dest_detail, ); -% $regionnum = $new->getfield('regionnum'); -%} -% %if ( $error ) { % $cgi->param('error', $error); -% print $cgi->redirect(popurl(2). "rate_region.cgi?". $cgi->query_string ); +<% $cgi->redirect(popurl(2). "rate_region.cgi?". $cgi->query_string ) %> %} else { -% #print $cgi->redirect(popurl(3). "browse/rate_region.cgi"); -% print $cgi->redirect(popurl(3). "browse/rate.cgi"); +<% $cgi->redirect(popurl(3). "browse/rate_region.html") %> %} -% -% +<%init> + +my $conf = new FS::Conf; +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +my $regionnum = $cgi->param('regionnum'); + +my $old = qsearchs('rate_region', { 'regionnum' => $regionnum } ) if $regionnum; + +my $new = new FS::rate_region ( { + map { + $_, scalar($cgi->param($_)); + } ( fields('rate_region') ) +} ); + +my $countrycode = $cgi->param('countrycode'); +my @npa = split(/\s*,\s*/, $cgi->param('npa')); +$npa[0] = '' unless @npa; +my @rate_prefix = map { + new FS::rate_prefix { + 'countrycode' => $countrycode, + 'npa' => $_, + } + } @npa; + +my @dest_detail = map { + my $ratenum = $_->ratenum; + new FS::rate_detail { + 'ratenum' => $ratenum, + map { $_ => $cgi->param("$_$ratenum") } + qw( min_included min_charge sec_granularity ) + }; +} qsearch('rate', {} ); + + +my $error; +if ( $regionnum ) { + $error = $new->replace($old, 'rate_prefix' => \@rate_prefix, + 'dest_detail' => \@dest_detail, ); +} else { + $error = $new->insert( 'rate_prefix' => \@rate_prefix, + 'dest_detail' => \@dest_detail, ); + $regionnum = $new->getfield('regionnum'); +} +</%init> diff --git a/httemplate/edit/rate.cgi b/httemplate/edit/rate.cgi index c44364da9..269b3b09a 100644 --- a/httemplate/edit/rate.cgi +++ b/httemplate/edit/rate.cgi @@ -1,34 +1,3 @@ -% -% -%my $rate; -%if ( $cgi->keywords ) { -% my($query) = $cgi->keywords; -% $query =~ /^(\d+)$/; -% $rate = qsearchs( 'rate', { 'ratenum' => $1 } ); -%} else { #adding -% $rate = new FS::rate {}; -%} -%my $action = $rate->ratenum ? 'Edit' : 'Add'; -% -%my $p1 = popurl(1); -% -%my %granularity = ( -% '1', => '1 second', -% '6' => '6 second', -% '30' => '30 second', # '1/2 minute', -% '60' => 'minute', -%); -% -%#my $nous = <<END; -%# WHERE 0 < ( SELECT COUNT(*) FROM rate_prefix -%# WHERE rate_region.regionnum = rate_prefix.regionnum -%# AND countrycode != '1' -%# ) -%#END -% -% - - <% include("/elements/header.html","$action Rate plan", menubar( 'Main Menu' => $p, 'View all rate plans' => "${p}browse/rate.cgi", @@ -49,72 +18,27 @@ Rate plan <INPUT TYPE="text" NAME="ratename" SIZE=32 VALUE="<% $rate->ratename %>"> <BR><BR> -<% table() %> -<TR> - <TH>Region</TH> - <TH>Prefix(es)</TH> - <TH><FONT SIZE=-1>Included<BR>minutes</FONT></TH> - <TH><FONT SIZE=-1>Charge per<BR>minute</FONT></TH> - <TH><FONT SIZE=-1>Granularity</FONT></TH> -</TR> -% foreach my $rate_region ( -% #sort { lc($a->regionname) cmp lc($b->regionname) } -% qsearch({ -% 'table' => 'rate_region', -% 'hashref' => {}, -% 'order_by' => 'ORDER BY LOWER(regionname)', -% -% #'select' => 'DISTINCT ON ( regionnum ) rate_region.*', -% #... -% #'addl_from' => 'INNER JOIN rate_prefix USING ( regionnum )', -% #'extra_sql' => "WHERE countrycode != '1'", -% -% # 'ORDER BY regionname' -% # ERROR: SELECT DISTINCT ON expressions must -% # match initial ORDER BY expressions -% # also, DISTINCT ON is a Pg-ism -% }) -% ) { -% my $n = $rate_region->regionnum; -% my $rate_detail = -% $rate->dest_detail($rate_region) -% || new FS::rate_detail { 'min_included' => 0, -% 'min_charge' => 0, -% 'sec_granularity' => '60' -% }; -% - - - <TR> - <TD><A HREF="<%$p%>edit/rate_region.cgi?<% $rate_region->regionnum %>"><% $rate_region->regionname %></A></TD> - <TD><% $rate_region->prefixes_short %></TD> - <TD><INPUT TYPE="text" SIZE=5 NAME="min_included<%$n%>" VALUE="<% $cgi->param("min_included$n") || $rate_detail->min_included %>"></TD> - <TD>$<INPUT TYPE="text" SIZE=4 NAME="min_charge<%$n%>" VALUE="<% sprintf('%.2f', $cgi->param("min_charge$n") || $rate_detail->min_charge ) %>"></TD> - <TD> - <SELECT NAME="sec_granularity<%$n%>"> -% foreach my $granularity ( keys %granularity ) { - - <OPTION VALUE="<%$granularity%>"<% $granularity == ( $cgi->param("sec_granularity$n") || $rate_detail->sec_granularity ) ? ' SELECTED' : '' %>><%$granularity{$granularity}%> -% } - - </SELECT> - </TR> -% } +<INPUT NAME="submit" TYPE="button" VALUE="<% + $rate->ratenum ? "Apply changes" : "Add rate plan" +%>" onClick="document.OneTrueForm.submit.disabled=true; process();"> +</FORM> -<TR> - <TD COLSPAN=5 ALIGN="center"> - <A HREF="<%$p%>edit/rate_region.cgi"><I>Add a region</I></A> - </TD> -</TR> +<% include('/elements/footer.html') %> -</TABLE> +<%init> -<BR><INPUT NAME="submit" TYPE="button" VALUE="<% - $rate->ratenum ? "Apply changes" : "Add rate plan" -%>" onClick="document.OneTrueForm.submit.disabled=true; process();"> +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); - </FORM> - </BODY> -</HTML> +my $rate; +if ( $cgi->keywords ) { + my($query) = $cgi->keywords; + $query =~ /^(\d+)$/; + $rate = qsearchs( 'rate', { 'ratenum' => $1 } ); +} else { #adding + $rate = new FS::rate {}; +} +my $action = $rate->ratenum ? 'Edit' : 'Add'; +</%init> diff --git a/httemplate/edit/rate_region.cgi b/httemplate/edit/rate_region.cgi index d55c0de43..47d1888e0 100644 --- a/httemplate/edit/rate_region.cgi +++ b/httemplate/edit/rate_region.cgi @@ -1,43 +1,5 @@ -<!-- mason kludge --> -% -% -%my $rate_region; -%if ( $cgi->param('error') ) { -% $rate_region = new FS::rate_region ( { -% map { $_, scalar($cgi->param($_)) } fields('rate_region') -% } ); -%} elsif ( $cgi->keywords ) { -% my($query) = $cgi->keywords; -% $query =~ /^(\d+)$/; -% $rate_region = qsearchs( 'rate_region', { 'regionnum' => $1 } ); -%} else { #adding -% $rate_region = new FS::rate_region {}; -%} -%my $action = $rate_region->regionnum ? 'Edit' : 'Add'; -% -%my $p1 = popurl(1); -% -%my %granularity = ( -% '6' => '6 second', -% '60' => 'minute', -%); -% -%my @rate_prefix = $rate_region->rate_prefix; -%my $countrycode = ''; -%if ( @rate_prefix ) { -% $countrycode = $rate_prefix[0]->countrycode; -% foreach my $rate_prefix ( @rate_prefix ) { -% errorpage('multiple country codes per region not yet supported by web UI') -% unless $rate_prefix->countrycode eq $countrycode; -% } -%} -% -% - - <% include("/elements/header.html","$action Region", menubar( - 'Main Menu' => $p, - #'View all regions' => "${p}browse/rate_region.cgi", + 'View all regions' => "${p}browse/rate_region.html", )) %> @@ -47,35 +9,56 @@ <INPUT TYPE="hidden" NAME="regionnum" VALUE="<% $rate_region->regionnum %>"> +%# region info + <% ntable('#cccccc') %> -<TR> - <TH ALIGN="right">Region name</TH> - <TD><INPUT TYPE="text" NAME="regionname" SIZE=32 VALUE="<% $rate_region->regionname %>"></TR> -</TR> -<TR> - <TH ALIGN="right">Country code</TH> - <TD><INPUT TYPE="text" NAME="countrycode" SIZE=4 MAXLENGTH=3 VALUE="<% $countrycode %>"></TR> -</TR> + <TR> + <TH ALIGN="right">Region name</TH> + <TD><INPUT TYPE="text" NAME="regionname" SIZE=32 VALUE="<% $rate_region->regionname %>"></TR> + </TR> + <TR> + <TH ALIGN="right">Country code</TH> + <TD><INPUT TYPE="text" NAME="countrycode" SIZE=4 MAXLENGTH=3 VALUE="<% $countrycode %>"></TR> + </TR> -<TR> - <TH ALIGN="right">Prefixes</TH> - <TD> - <TEXTAREA NAME="npa" WRAP=SOFT><% join(', ', map $_->npa, @rate_prefix ) %></TEXTAREA> - </TD> -</TR> + <TR> + <TD ALIGN="right"> + <B>Prefixes</B> + <BR><FONT SIZE="-1">(comma-separated)</FONT> + </TD> + <TD> + <TEXTAREA NAME="npa" WRAP=SOFT><% join(', ', map $_->npa, @rate_prefix ) %></TEXTAREA> + </TD> + </TR> </TABLE> +%# rate plan info + <BR> -<% table() %> -<TR> - <TH>Rate plan</TH> - <TH><FONT SIZE=-1>Included<BR>minutes</FONT></TH> - <TH><FONT SIZE=-1>Charge per<BR>minute</FONT></TH> - <TH><FONT SIZE=-1>Granularity</FONT></TH> -</TR> + +<% include('/elements/table-grid.html') %> +% my $bgcolor1 = '#eeeeee'; +% my $bgcolor2 = '#ffffff'; +% my $bgcolor = ''; + + <TR> + <TH CLASS="grid" BGCOLOR="#cccccc"> + Rate plan + </TH> + <TH CLASS="grid" BGCOLOR="#cccccc"> + <FONT SIZE=-1>Included<BR>minutes</FONT> + </TH> + <TH CLASS="grid" BGCOLOR="#cccccc"> + <FONT SIZE=-1>Charge per<BR>minute</FONT> + </TH> + <TH CLASS="grid" BGCOLOR="#cccccc"> + <FONT SIZE=-1>Granularity</FONT> + </TH> + </TR> + % foreach my $rate ( qsearch('rate', {}) ) { % % my $n = $rate->ratenum; @@ -85,32 +68,85 @@ % 'sec_granularity' => '60' % }; % -% +% if ( $bgcolor eq $bgcolor1 ) { +% $bgcolor = $bgcolor2; +% } else { +% $bgcolor = $bgcolor1; +% } <TR> - <TD><A HREF="<%$p%>edit/rate.cgi?<% $rate->ratenum %>"><% $rate->ratename %></TD> - <TD><INPUT TYPE="text" SIZE=5 NAME="min_included<%$n%>" VALUE="<% $cgi->param("min_included$n") || $rate_detail->min_included %>"></TD> - <TD>$<INPUT TYPE="text" SIZE=4 NAME="min_charge<%$n%>" VALUE="<% sprintf('%.2f', $cgi->param("min_charge$n") || $rate_detail->min_charge ) %>"></TD> - <TD> - <SELECT NAME="sec_granularity<%$n%>"> -% foreach my $granularity ( keys %granularity ) { - <OPTION VALUE="<%$granularity%>"<% $granularity == ( $cgi->param("sec_granularity$n") || $rate_detail->sec_granularity ) ? ' SELECTED' : '' %>><%$granularity{$granularity}%> -% } + <TD CLASS="grid" BGCOLOR="<% $bgcolor %>"> + <A HREF="<%$p%>edit/rate.cgi?<% $rate->ratenum %>"><% $rate->ratename %></A> + </TD> + <TD CLASS="grid" BGCOLOR="<% $bgcolor %>"> + <INPUT TYPE="text" SIZE=5 NAME="min_included<%$n%>" VALUE="<% $cgi->param("min_included$n") || $rate_detail->min_included %>"> + </TD> + + <TD CLASS="grid" BGCOLOR="<% $bgcolor %>"> + $<INPUT TYPE="text" SIZE=4 NAME="min_charge<%$n%>" VALUE="<% sprintf('%.2f', $cgi->param("min_charge$n") || $rate_detail->min_charge ) %>"> + </TD> + + <TD CLASS="grid" BGCOLOR="<% $bgcolor %>"> + <SELECT NAME="sec_granularity<%$n%>"> +% foreach my $granularity ( keys %granularity ) { + <OPTION VALUE="<%$granularity%>"<% $granularity == ( $cgi->param("sec_granularity$n") || $rate_detail->sec_granularity ) ? ' SELECTED' : '' %>><%$granularity{$granularity}%> +% } </SELECT> + </TD> + </TR> -% } +% } </TABLE> -<BR><BR><INPUT TYPE="submit" VALUE="<% - $rate_region->regionnum ? "Apply changes" : "Add region" -%>"> - - </FORM> - </BODY> -</HTML> - +<BR><BR> +<INPUT TYPE="submit" VALUE="<% $rate_region->regionnum ? "Apply changes" : "Add region" %>"> + +</FORM> + +<% include('/elements/footer.html') %> + +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +my $rate_region; +if ( $cgi->param('error') ) { + $rate_region = new FS::rate_region ( { + map { $_, scalar($cgi->param($_)) } fields('rate_region') + } ); +} elsif ( $cgi->keywords ) { + my($query) = $cgi->keywords; + $query =~ /^(\d+)$/ or die "unparsable regionnum"; + $rate_region = qsearchs( 'rate_region', { 'regionnum' => $1 } ) + or die "unknown regionnum $1\n"; +} else { #adding + $rate_region = new FS::rate_region {}; +} +my $action = $rate_region->regionnum ? 'Edit' : 'Add'; + +my $p1 = popurl(1); + +tie my %granularity, 'Tie::IxHash', + '1', => '1 second', + '6' => '6 second', + '30' => '30 second', # '1/2 minute', + '60' => 'minute', +; + +my @rate_prefix = $rate_region->rate_prefix; +my $countrycode = ''; +if ( @rate_prefix ) { + $countrycode = $rate_prefix[0]->countrycode; + foreach my $rate_prefix ( @rate_prefix ) { + errorpage('multiple country codes per region not yet supported by web UI') + unless $rate_prefix->countrycode eq $countrycode; + } +} + +</%init> |