diff options
Diffstat (limited to 'httemplate')
| -rw-r--r-- | httemplate/elements/file-upload.html | 54 | ||||
| -rw-r--r-- | httemplate/elements/form-file_upload.html | 93 | ||||
| -rw-r--r-- | httemplate/elements/progress-init.html | 5 | ||||
| -rw-r--r-- | httemplate/elements/progress-popup.html | 19 | ||||
| -rw-r--r-- | httemplate/misc/cust_main-import.cgi | 67 | ||||
| -rw-r--r-- | httemplate/misc/file-upload.html | 10 | ||||
| -rw-r--r-- | httemplate/misc/process/cust_main-import.cgi | 37 | ||||
| -rwxr-xr-x | httemplate/search/cust_main.html | 4 |
8 files changed, 192 insertions, 97 deletions
diff --git a/httemplate/elements/file-upload.html b/httemplate/elements/file-upload.html index 2859a676f..023bffb1e 100644 --- a/httemplate/elements/file-upload.html +++ b/httemplate/elements/file-upload.html @@ -1,10 +1,13 @@ - -<script type="text/javascript"> +<SCRIPT TYPE="text/javascript"> function doUpload(form, callback) { var name = 'form' + Math.floor(Math.random() * 99999); // perlize? var d = document.createElement('DIV'); - d.innerHTML = '<iframe style="display:none" src="about:blank" id="'+name+'" name="'+name+'" onload="uploadComplete(\''+name+'\')"></iframe>'; + d.innerHTML = '<iframe style="display:none" src="about:blank" ' + + 'id="' + name + '" ' + + 'name="' + name + '" ' + + 'onload="uploadComplete(\'' + name + '\')">' + + '</iframe>'; document.body.appendChild(d); var i = document.getElementById(name); @@ -32,8 +35,8 @@ document.getElementById('r').innerHTML = d.body.innerHTML; if (typeof(i.onComplete) == 'function') { var p; - if (p = d.body.innerHTML.indexOf("Freeside File Upload Successful ") >= 0) { - var v = d.body.innerHTML.substr(p+33) + if (p = d.body.innerHTML.indexOf("File Upload Successful ") >= 0) { + var v = d.body.innerHTML.substr(p+24); var u = document.getElementById('uploaded_files'); v = v.substr(0, v.indexOf(';')); u.value = v; @@ -44,37 +47,28 @@ } } -</script> +</SCRIPT> + +<INPUT TYPE="hidden" NAME="uploaded_files" ID="uploaded_files" VALUE="" /> + +<INPUT TYPE="hidden" NAME="upload_fields" VALUE="<% join(',', @field) %>" /> - <input type="hidden" name="uploaded_files" id="uploaded_files" value="" /> - <input type="hidden" name="upload_fields" value="<% join(',', @field) %>" /> % foreach (@field) { - <tr> - <th><% shift @label %></th> - <td><input type="file" name="<% $_ %>" /></td> - </tr> + <TR> + <TH><% shift @label %></TH> + <TD><INPUT TYPE="file" NAME="<% $_ %>" /></TD> + </TR> % } - <div style="display:<% $debug ? 'visible' : 'none' %>">Debugging: <pre id="r"></pre></div> - -<%init> -my %param = @_; -my $debug = $param{'debug'}; +<DIV STYLE="display:<% $param{debug} ? 'visible' : 'none' %>"> + Debugging: <PRE ID="r"></PRE> +</DIV> -my $callback = $param{'callback'} || "''"; +<%init> -my @label = (); -if ( ref($param{'label'}) ) { - push @label, @{$param{'label'}}; -}else{ - push @label, $param{'label'}; -} +my %param = @_; -my @field = (); -if ( ref($param{'field'}) ) { - push @field, @{$param{'field'}}; -}else{ - push @field, $param{'field'}; -} +my @label = ref($param{'label'}) ? @{$param{'label'}} : ($param{'label'}); +my @field = ref($param{'field'}) ? @{$param{'field'}} : ($param{'field'}); </%init> diff --git a/httemplate/elements/form-file_upload.html b/httemplate/elements/form-file_upload.html new file mode 100644 index 000000000..f398ba42d --- /dev/null +++ b/httemplate/elements/form-file_upload.html @@ -0,0 +1,93 @@ +<%doc> + +Example: + + <% include( '/elements/form-file_upload.html', + + 'name' => 'form_name', + 'action' => 'process/target.cgi', #progress-init target + 'fields' => [ 'other', 'form', 'fields' ], + 'num_files' => 1, #or more + + 'url' => $url + #OR + 'message' => 'Message', + + #optional + 'key' => 'unique_key', #for using more than once on a page + ) + +% #... + +% # num_files=>1 + include( '/elements/file-upload.html', + 'field' => 'element', + 'label' => 'Label', + ) + +% # OR + +% # num_files=>2 # or more + include( '/elements/file-upload.html', + 'field' => [ 'element', 'element2', ], #etc. + 'label' => [ 'Label', 'Label2', ], #etc. + ) + + +%> + +</%doc> + +<% include( '/elements/progress-init.html', + $opt{name}, + $opt{fields}, + $opt{action}, + $msg_or_url, + $opt{key}, + ) +%> + +<SCRIPT> + + function <% $opt{key} %>gotUploaded(success, message) { + + var uploaded = document.getElementById('uploaded_files'); + var a = uploaded.value.split(','); + if (uploaded.value.split(',').length == <% $opt{num_files} %>){ + process(); + }else{ + var p = document.getElementById('uploadError'); + p.innerHTML='<FONT SIZE="+1" COLOR="#ff0000">Error: '+message+'</FONT><BR><BR>'; + p.style='display:visible'; + return false; + } + + } + +</SCRIPT> + +<div style="display:none:" id="uploadError"></div> + +<FORM NAME = "<% $opt{name} %>" + ACTION = "<% $fsurl %>misc/file-upload.html" + METHOD = "POST" + ENCTYPE = "multipart/form-data" + onSubmit = "return doUpload(this, <% $opt{key} %>gotUploaded)" +> + +<%init> + +#my( $formname, $fields, $action, $url_or_message, $key ) = @_; +my %opt = ref($_[0]) ? %{ $_[0] } : @_; + +my $key = exists $opt{key} ? $opt{key} : ''; + +push @{ $opt{fields} }, 'uploaded_files'; + +my $msg_or_url = $opt{message} + ? { 'message' => $opt{message}, + 'url' => $opt{url}, + } + : $opt{url}; + +</%init> diff --git a/httemplate/elements/progress-init.html b/httemplate/elements/progress-init.html index 2cde86f5b..194fc7480 100644 --- a/httemplate/elements/progress-init.html +++ b/httemplate/elements/progress-init.html @@ -73,8 +73,9 @@ $key = '' unless defined $key; my $url_or_message_link; if ( ref($url_or_message) ) { #its a message or something - $url_or_message_link = - 'message='. uri_escape( $url_or_message->{'message'} ) + $url_or_message_link = 'message='. uri_escape( $url_or_message->{'message'} ); + $url_or_message_link .= ';url='. uri_escape( $url_or_message->{'url'} ) + if $url_or_message->{'url'}; } else { $url_or_message_link = "url=$url_or_message"; } diff --git a/httemplate/elements/progress-popup.html b/httemplate/elements/progress-popup.html index cda704a12..0bd71ff4a 100644 --- a/httemplate/elements/progress-popup.html +++ b/httemplate/elements/progress-popup.html @@ -41,15 +41,24 @@ function updateStatus( status_statustext ) { //jsrsExecute( '<%$p%>elements/jsrsServer.html', updateStatus, 'job_status', '<% $jobnum %>' ); job_status( '<% $jobnum %>', updateStatus ); } else if ( status.indexOf('complete') > -1 ) { -% if ( $message ) { +% if ( $message ) { +% +% my $onClick = $url +% ? "window.top.location.href = \\'$url\\';" +% : 'parent.nd(1);'; document.getElementById("progress_message").innerHTML = "<% $message %>"; document.getElementById("progress_bar").innerHTML = ''; - document.getElementById("progress_percent").innerHTML = '<INPUT TYPE="button" VALUE="OK" onClick="parent.nd(1);">'; + document.getElementById("progress_percent").innerHTML = + '<INPUT TYPE="button" VALUE="OK" onClick="<% $onClick %>">'; document.getElementById("progress_jobnum").innerHTML = ''; - if ( parent.document.<%$formname%>.submit.disabled == true ) { - parent.document.<%$formname%>.submit.disabled=false; - } + +% unless ( $url ) { + if ( parent.document.<%$formname%>.submit.disabled == true ) { + parent.document.<%$formname%>.submit.disabled=false; + } +% } + % } elsif ( $url ) { window.top.location.href = '<% $url %>'; diff --git a/httemplate/misc/cust_main-import.cgi b/httemplate/misc/cust_main-import.cgi index 8e170c3c6..bbeaa5187 100644 --- a/httemplate/misc/cust_main-import.cgi +++ b/httemplate/misc/cust_main-import.cgi @@ -3,32 +3,45 @@ Import a file containing customer records. <BR><BR> -<FORM ACTION="process/cust_main-import.cgi" METHOD="post" ENCTYPE="multipart/form-data"> +<% include( '/elements/form-file_upload.html', + 'name' => 'CustomerImportForm', + 'action' => 'process/cust_main-import.cgi', + 'num_files' => 1, + 'fields' => [ 'agentnum', 'custbatch', 'format' ], + 'message' => 'Customer import successful', + 'url' => $p."search/cust_main.html?custbatch=$custbatch", + ) +%> <% &ntable("#cccccc", 2) %> -<% include('/elements/tr-select-agent.html', - #'curr_value' => '', #$agentnum, - 'label' => "<B>Agent</B>", - 'empty_label' => 'Select agent', - ) -%> + <% include( '/elements/tr-select-agent.html', + #'curr_value' => '', #$agentnum, + 'label' => "<B>Agent</B>", + 'empty_label' => 'Select agent', + ) + %> + + <INPUT TYPE="hidden" NAME="custbatch" VALUE="<% $custbatch %>"%> + + <TR> + <TH ALIGN="right">Format</TH> + <TD> + <SELECT NAME="format"> + <!-- <OPTION VALUE="simple">Simple --> + <OPTION VALUE="extended" SELECTED>Extended + <OPTION VALUE="extended-plus_company">Extended plus company + </SELECT> + </TD> + </TR> + + <% include( '/elements/file-upload.html', + 'field' => 'file', + 'label' => 'Filename', + ) + %> -<TR> - <TH ALIGN="right">Format</TH> - <TD> - <SELECT NAME="format"> -<!-- <OPTION VALUE="simple">Simple --> - <OPTION VALUE="extended" SELECTED>Extended - <OPTION VALUE="extended-plus_company">Extended plus company - </SELECT> - </TD> -</TR> -<TR> - <TH ALIGN="right">Filename</TH> - <TD><INPUT TYPE="file" NAME="file"></TD> -</TR> % #include('/elements/tr-select-part_referral.html') % @@ -49,7 +62,15 @@ Import a file containing customer records. </TR> --> -<TR><TD COLSPAN=2 ALIGN="center" STYLE="padding-top:6px"><INPUT TYPE="submit" VALUE="Import file"></TD></TR> + <TR> + <TD COLSPAN=2 ALIGN="center" STYLE="padding-top:6px"> + <INPUT TYPE = "submit" + ID = "submit" + VALUE = "Import file" + onClick = "document.CustomerImportForm.submit.disabled=true;" + > + </TD> + </TR> </TABLE> @@ -109,4 +130,6 @@ my $req = qq!<font color="#ff0000">*</font>!; die "access denied" unless $FS::CurrentUser::CurrentUser->access_right('Import'); +my $custbatch = time2str('webimport-%Y/%m/%d-%T'. "-$$-". rand() * 2**32, time); + </%init> diff --git a/httemplate/misc/file-upload.html b/httemplate/misc/file-upload.html index 9649d3663..469274c69 100644 --- a/httemplate/misc/file-upload.html +++ b/httemplate/misc/file-upload.html @@ -2,7 +2,7 @@ % if ($error) { Error: <% $error %> % }else{ -Freeside File Upload Successful <% join(',', @filenames) %>; +File Upload Successful <% join(',', @filenames) %>; % } <% include('/elements/footer.html') %> <%init> @@ -17,7 +17,7 @@ $cgi->param('upload_fields') =~ /^([,\w]+)$/ or $error = "invalid upload_fields"; my $fields = $1; -my $dir = $FS::UID::conf_dir. "/cache.". $FS::UID::datasrc; +my $dir = $FS::UID::cache_dir. "/cache.". $FS::UID::datasrc; foreach my $field (split /,/, $fields) { next if $error; @@ -25,7 +25,13 @@ foreach my $field (split /,/, $fields) { my $fh = $cgi->upload($field) or $error = "No valid file was provided."; + my $suffix = ''; + if ( $cgi->param($field) =~ /(\.\w+)$/i ) { + $suffix = lc($1); + } + my $sh = new File::Temp( TEMPLATE => 'upload.XXXXXXXX', + SUFFIX => $suffix, DIR => $dir, UNLINK => 0, ) diff --git a/httemplate/misc/process/cust_main-import.cgi b/httemplate/misc/process/cust_main-import.cgi index 2568d1c7b..df61eb632 100644 --- a/httemplate/misc/process/cust_main-import.cgi +++ b/httemplate/misc/process/cust_main-import.cgi @@ -1,42 +1,9 @@ -% if ( $error ) { -% errorpage($error); -% } else { - <% include('/elements/header.html','Import successful') %> - <% include('/elements/footer.html') %> -% } +<% $server->process %> <%init> die "access denied" unless $FS::CurrentUser::CurrentUser->access_right('Import'); -my $fh = $cgi->upload('file'); -my $error = ''; -if ( defined($fh) ) { - - my $type; - if ( $cgi->param('file') =~ /\.(\w+)$/i ) { - $type = lc($1); - } else { - #or error out??? - warn "can't parse file type from filename ". $cgi->param('file'). - '; defaulting to CSV'; - $type = 'csv'; - } - - $error = - FS::cust_main::batch_import( { - filehandle => $fh, - type => $type, - agentnum => scalar($cgi->param('agentnum')), - refnum => scalar($cgi->param('refnum')), - pkgpart => scalar($cgi->param('pkgpart')), - #'fields' => [qw( cust_pkg.setup dayphone first last address1 address2 - # city state zip comments )], - 'format' => scalar($cgi->param('format')), - } ); - -} else { - $error = 'No file'; -} +my $server = new FS::UI::Web::JSRPC 'FS::cust_main::process_batch_import', $cgi; </%init> diff --git a/httemplate/search/cust_main.html b/httemplate/search/cust_main.html index cd5e51f25..3282f0f31 100755 --- a/httemplate/search/cust_main.html +++ b/httemplate/search/cust_main.html @@ -43,7 +43,9 @@ my %search_hash = (); #$search_hash{'query'} = $cgi->keywords; #scalars -for my $param (qw( agentnum status cancelled_pkgs cust_fields flattened_pkgs)) { +for my $param (qw( + agentnum status cancelled_pkgs cust_fields flattened_pkgs custbatch +)) { $search_hash{$param} = scalar( $cgi->param($param) ) if $cgi->param($param); } |
