+<%doc>
+Example:
+In misc/something.html:
+
+ <FORM NAME="MyForm">
+ <INPUT TYPE="hidden" NAME="recordnum" VALUE="42">
+ <INPUT TYPE="hidden" NAME="what_to_do" VALUE="delete">
+ <% include( '/elements/progress-init.html',
+ 'MyForm',
+ [ 'recordnum', 'what_to_do' ],
+ $p.'misc/process_something.html',
+ { url => $p.'where_to_go_next.html' },
+ #or { message => 'Finished!' },
+ #or { url => $p.'where_to_go.html',
+ message => 'Finished' },
+ # which displays the message, then waits for confirmation before
+ # redirecting to the URL.
+ #or { popup_url => $p.'popup_contents.html' }
+ # which loads that URL into the popup after completion
+ ) %>
+ </FORM>
+ <SCRIPT TYPE="text/javascript>process();</SCRIPT>
+
+In misc/process_something.html:
+
+<%init>
+my $server = FS::UI::Web::JSRPC->new('FS::something::process_whatever', $cgi);
+</%init>
+<% $server->process %>
+
+In FS/something.pm:
+
+sub process_whatever { #class method
+ my $job = shift;
+ my $param = thaw(base64_decode(shift));
+ # param = { 'recordnum' => 42, 'what_to_do' => delete }
+ # make use of this as you like
+ do_phase1;
+ $job->update_statustext(20);
+ do_phase2;
+ $job->update_statustext(40);
+ do_phase3;
+ $job->update_statustext(60);
+ # etc.
+ return 'this value will be ignored';
+}
+
+</%doc>
<% include('/elements/xmlhttp.html',
'method' => 'POST',
'url' => $action,
)
%>
-<% include('/elements/init_overlib.html') %>
+<& /elements/init_overlib.html &>
<SCRIPT TYPE="text/javascript">
function <%$key%>myCallback( jobnum ) {
- overlib( OLiframeContent('<%$p%>elements/progress-popup.html?jobnum=' + jobnum + ';<%$url_or_message_link%>;formname=<%$formname%>' , 444, 168, '<% $popup_name %>'), CAPTION, 'Please wait...', STICKY, AUTOSTATUSCAP, CLOSETEXT, '', CLOSECLICK, MIDX, 0, MIDY, 0 );
+ overlib( OLiframeContent('<%$fsurl%>elements/progress-popup.html?jobnum=' + jobnum + ';<%$url_or_message_link%>;formname=<%$formname%>' , 444, 168, '<% $popup_name %>'), CAPTION, 'Please wait...', STICKY, AUTOSTATUSCAP, CLOSETEXT, '', CLOSECLICK, MIDX, 0, MIDY, 0 );
}
$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'};
+ $url_or_message_link = 'popup_url=' .uri_escape( $url_or_message->{'popup_url'} )
+ if $url_or_message->{'popup_url'};
+
} else {
$url_or_message_link = "url=$url_or_message";
}