diff options
author | ivan <ivan> | 2005-02-24 14:24:07 +0000 |
---|---|---|
committer | ivan <ivan> | 2005-02-24 14:24:07 +0000 |
commit | 4d599c8ce382f51d7bfbb4172cdc73a2c8bd400d (patch) | |
tree | 495cce273f64cd9f7e791014b8cf50bc973a4869 /httemplate | |
parent | 41a036e2d95b39e28eecc624203024e27b3f539b (diff) |
add progressbar to service definition add - duplicate checking can take a while, closes: Bug#1126
Diffstat (limited to 'httemplate')
-rwxr-xr-x | httemplate/edit/part_svc.cgi | 79 | ||||
-rwxr-xr-x | httemplate/edit/process/part_svc.cgi | 4 | ||||
-rw-r--r-- | httemplate/elements/progress-init.html | 46 | ||||
-rw-r--r-- | httemplate/elements/progress-popup.html | 7 |
4 files changed, 57 insertions, 79 deletions
diff --git a/httemplate/edit/part_svc.cgi b/httemplate/edit/part_svc.cgi index befd9b24a..bc38c34bd 100755 --- a/httemplate/edit/part_svc.cgi +++ b/httemplate/edit/part_svc.cgi @@ -1,52 +1,7 @@ <% my $part_svc; my $clone = ''; -my $error = ''; -if ( $cgi->param('magic') eq 'process' ) { - - my $svcpart = $cgi->param('svcpart'); - my $old = qsearchs('part_svc', { 'svcpart' => $svcpart }) if $svcpart; - - $cgi->param( 'svc_acct__usergroup', - join(',', $cgi->param('svc_acct__usergroup') ) ); - - my $new = new FS::part_svc ( { - map { - $_, scalar($cgi->param($_)); - # } qw(svcpart svc svcdb) - } ( fields('part_svc'), - map { my $svcdb = $_; - my @fields = fields($svcdb); - push @fields, 'usergroup' if $svcdb eq 'svc_acct'; #kludge - map { ( $svcdb.'__'.$_, $svcdb.'__'.$_.'_flag' ) } @fields; - } grep defined( $FS::Record::dbdef->table($_) ), - qw( svc_acct svc_domain svc_forward svc_www svc_broadband ) - ) - } ); - - my %exportnums = - map { $_->exportnum => ( $cgi->param('exportnum'.$_->exportnum) || '') } - qsearch('part_export', {} ); - - if ( $svcpart ) { - $error = $new->replace($old, '1.3-COMPAT', [ 'usergroup' ], \%exportnums ); - } else { - $error = $new->insert( [ 'usergroup' ], \%exportnums ); - $svcpart = $new->getfield('svcpart'); - } - - unless ( $error ) { #no error, redirect - #print $cgi->redirect(popurl(3)."browse/part_svc.cgi"); - print $cgi->redirect("${p}browse/part_svc.cgi"); - myexit; - } - - $part_svc = $new; #?? - #$part_svc = new FS::part_svc ( { - # map { $_, scalar($cgi->param($_)) } fields('part_svc') - #} ); - -} elsif ( $cgi->param('clone') && $cgi->param('clone') =~ /^(\d+)$/ ) {#clone +if ( $cgi->param('clone') && $cgi->param('clone') =~ /^(\d+)$/ ) {#clone #$cgi->param('clone') =~ /^(\d+)$/ or die "malformed query: $query"; $part_svc = qsearchs('part_svc', { 'svcpart'=>$1 } ) or die "unknown svcpart: $1"; @@ -76,17 +31,12 @@ my $hashref = $part_svc->hashref; ) %> -<% if ( $error ) { %> -<FONT SIZE="+1" COLOR="#ff0000">Error: <%= $error %></FONT> -<% } %> - <FORM NAME="dummy"> Service Part #<%= $part_svc->svcpart ? $part_svc->svcpart : "(NEW)" %> <BR><BR> Service <INPUT TYPE="text" NAME="svc" VALUE="<%= $hashref->{svc} %>"><BR> Disable new orders <INPUT TYPE="checkbox" NAME="disabled" VALUE="Y"<%= $hashref->{disabled} eq 'Y' ? ' CHECKED' : '' %>><BR> -<INPUT TYPE="hidden" NAME="magic" VALUE="process"> <INPUT TYPE="hidden" NAME="svcpart" VALUE="<%= $hashref->{svcpart} %>"> <BR> Services are items you offer to your customers. @@ -213,10 +163,11 @@ my %defs = ( 'form_name' => 'dummy', #'form_action' => 'process/part_svc.cgi', 'form_action' => 'part_svc.cgi', #self - 'form_text' => [ qw( magic svc svcpart ) ], + 'form_text' => [ qw( svc svcpart ) ], 'form_checkbox' => [ 'disabled' ], 'layer_callback' => sub { my $layer = shift; + my $html = qq!<INPUT TYPE="hidden" NAME="svcdb" VALUE="$layer">!; my $columns = 3; @@ -250,12 +201,8 @@ my %defs = ( $part_svc->svcpart($clone) if $clone; #haha, undone below foreach my $field (@fields) { my $part_svc_column = $part_svc->part_svc_column($field); - my $value = $error - ? $cgi->param("${layer}__${field}") - : $part_svc_column->columnvalue; - my $flag = $error - ? $cgi->param("${layer}__${field}_flag") - : $part_svc_column->columnflag; + my $value = $part_svc_column->columnvalue; + my $flag = $part_svc_column->columnflag; my $def = $defs{$layer}{$field}; my $desc = ref($def) ? $def->{desc} : $def; @@ -317,8 +264,20 @@ my %defs = ( $part_svc->svcpart('') if $clone; #undone $html .= "</TABLE>"; - $html .= '<BR><INPUT TYPE="submit" VALUE="'. - ($hashref->{svcpart} ? 'Apply changes' : 'Add service'). '">'; + $html .= include('/elements/progress-init.html', + $layer, #form name + [ qw(svc svcpart disabled exportnum), @fields ], + 'process/part_svc.cgi', + $p.'browse/part_svc.cgi', + $layer, + ); + $html .= '<BR><INPUT NAME="submit" TYPE="button" VALUE="'. + ($hashref->{svcpart} ? 'Apply changes' : 'Add service'). '" '. + ' onClick="document.'. "$layer.submit.disabled=true; ". + "fixup(document.$layer); $layer". 'process();">'; + + #$html .= '<BR><INPUT TYPE="submit" VALUE="'. + # ($hashref->{svcpart} ? 'Apply changes' : 'Add service'). '">'; $html; diff --git a/httemplate/edit/process/part_svc.cgi b/httemplate/edit/process/part_svc.cgi new file mode 100755 index 000000000..664e5212a --- /dev/null +++ b/httemplate/edit/process/part_svc.cgi @@ -0,0 +1,4 @@ +<% +my $server = new FS::UI::Web::JSRPC 'FS::part_svc::process'; +$server->process; +%> diff --git a/httemplate/elements/progress-init.html b/httemplate/elements/progress-init.html index 7edb831c5..41feaac4b 100644 --- a/httemplate/elements/progress-init.html +++ b/httemplate/elements/progress-init.html @@ -1,44 +1,58 @@ -<% my( $formname, $fields, $action, $success_url ) = @_; %> +<% + my( $formname, $fields, $action, $success_url, $key ) = @_; + $key = '' unless defined $key; +%> <SCRIPT TYPE="text/javascript" SRC="../elements/jsrsClient.js"></SCRIPT> <SCRIPT TYPE="text/javascript" SRC="../elements/overlibmws.js"></SCRIPT> <SCRIPT TYPE="text/javascript"> function OLiframeContent(src, width, height, name) { return ('<iframe src="'+src+'" width="'+width+'" height="'+height+'"' - +(name?' name="'+name+'" id="'+name+'"':'')+' scrolling="no">' + +(name?' name="'+name+'" id="'+name+'"':'')+' scrolling="auto">' +'<div>[iframe not supported]</div></iframe>'); } -function process () { +function <%=$key%>process () { - document.OneTrueForm.submit.disabled=true; + document.<%=$formname%>.submit.disabled=true; - overlib( 'Submitting job to server...', WIDTH, 420, HEIGHT, 128, CAPTION, 'Please wait...', STICKY, AUTOSTATUSCAP, CLOSETEXT, '', CLOSECLICK, MIDX, 0, MIDY, 0 ); + overlib( 'Submitting job to server...', WIDTH, 432, HEIGHT, 136, CAPTION, 'Please wait...', STICKY, AUTOSTATUSCAP, CLOSETEXT, '', CLOSECLICK, MIDX, 0, MIDY, 0 ); var Hash = new Array(); var x = 0; var fieldName; - for (var i = 0; i<document.OneTrueForm.elements.length; i++) { - fieldName = document.OneTrueForm.elements[i].name; -// (fieldName.indexOf('rate') > -1) -// || (fieldName.indexOf('min_') > -1) -// || (fieldName.indexOf('sec_') > -1) - if ( <%= join(' || ', map { "(fieldName.indexOf('$_') > -1)" } @$fields ) %> + for (var i = 0; i<document.<%=$formname%>.elements.length; i++) { + field = document.<%=$formname%>.elements[i]; + if ( <%= join(' || ', map { "(field.name.indexOf('$_') > -1)" } @$fields ) %> ) { - Hash[x++] = fieldName; - Hash[x++] = document.OneTrueForm.elements[i].value; + if ( field.type == 'select-multiple' ) { + for (var j=0; j < field.options.length; j++) { + if ( field.options[j].selected ) { + Hash[x++] = field.name; + Hash[x++] = field.options[j].value; + } + } + } else if ( ( field.type != 'radio' && field.type != 'checkbox' ) + || ( ( field.type == 'radio' || field.type == 'checkbox' ) + && document.<%=$formname%>.elements[i].checked + ) + ) + { + Hash[x++] = field.name; + Hash[x++] = field.value; + } } } jsrsPOST = true; - jsrsExecute( '<%= $action %>', myCallback, 'start_job', Hash ); + jsrsExecute( '<%= $action %>', <%=$key%>myCallback, 'start_job', Hash ); } -function myCallback( jobnum ) { +function <%=$key%>myCallback( jobnum ) { - overlib( OLiframeContent('<%=$p%>elements/progress-popup.html?jobnum=' + jobnum + ';url=<%=$success_url%>' , 420, 128, 'progress_popup'), CAPTION, 'Please wait...', STICKY, AUTOSTATUSCAP, CLOSETEXT, '', CLOSECLICK, MIDX, 0, MIDY, 0 ); + overlib( OLiframeContent('<%=$p%>elements/progress-popup.html?jobnum=' + jobnum + ';url=<%=$success_url%>;formname=<%=$formname%>' , 432, 136, 'progress_popup'), CAPTION, 'Please wait...', STICKY, AUTOSTATUSCAP, CLOSETEXT, '', CLOSECLICK, MIDX, 0, MIDY, 0 ); } diff --git a/httemplate/elements/progress-popup.html b/httemplate/elements/progress-popup.html index 0881a9643..d180c17d4 100644 --- a/httemplate/elements/progress-popup.html +++ b/httemplate/elements/progress-popup.html @@ -1,6 +1,7 @@ <% - my( $jobnum ) = $cgi->param('jobnum'); - my( $url ) = $cgi->param('url'); + my $jobnum = $cgi->param('jobnum'); + my $url = $cgi->param('url'); + my $formname = scalar($cgi->param('formname')); %> <HTML> <HEAD> @@ -34,7 +35,7 @@ function updateStatus( status_statustext ) { document.getElementById("progress_bar").innerHTML = ''; document.getElementById("progress_percent").innerHTML = '<INPUT TYPE="button" VALUE="OK" onClick="parent.nd(1);">'; document.getElementById("progress_jobnum").innerHTML = ''; - parent.document.OneTrueForm.submit.disabled=false; + parent.document.<%=$formname%>.submit.disabled=false; } else { alert('XXX unknown status returned from server: ' + status); } |