+++ /dev/null
-<!-- Background job progress indicator -->
-<script type="text/javascript">
- //<![CDATA[
- var backgroundJobProgressTimer = 0;
- var jobID = '';
- var savedForm;
- var inBackgroundJobProgressTimer = false;
- function updateJobProgress() {
- if (inBackgroundJobProgressTimer) {
- return;
- }
- inBackgroundJobProgressTimer = true;
- $.getJSON("/cgi-bin/koha/tools/background-job-progress.pl?jobID=" + jobID, function(json) {
- var percentage = Math.floor(100 * json.progress / json.job_size);
- if (json.job_status == 'completed') {
- percentage = 100;
- }
- var bgproperty = (parseInt(percentage/2)*3-300)+"px 0px";
- $("#jobprogress").css("background-position",bgproperty);
- $("#jobprogresspercent").text(percentage);
-
- if (percentage == 100) {
- clearInterval(backgroundJobProgressTimer); // just in case form submission fails
- completeJob();
- }
- inBackgroundJobProgressTimer = false;
- });
- }
-
- function completeJob() {
- savedForm.completedJobID.value = jobID;
- savedForm.submit();
- }
-
- // submit a background job with data
- // supplied from form f and activate
- // progress indicator
- function submitBackgroundJob(f) {
- // check for background field
- if (f.runinbackground) {
- // set value of this hidden field for
- // use by CGI script
- savedForm = f;
- f.mainformsubmit.disabled = true;
- f.runinbackground.value = 'true';
-
- // gather up form submission
- var inputs = [];
- $(':input', f).each(function() {
- if (this.type == 'radio' || this.type == 'checkbox') {
- if (this.checked) {
- inputs.push(this.name + '=' + escape(this.value));
- }
- } else if (this.type == 'button') {
- ; // do nothing
- } else {
- inputs.push(this.name + '=' + escape(this.value));
- }
-
- });
-
- // and submit the request
- $("#jobpanel").show();
- $("#jobstatus").show();
- $.ajax({
- data: inputs.join('&'),
- url: f.action,
- dataType: 'json',
- type: 'post',
- success: function(json) {
- jobID = json.jobID;
- inBackgroundJobProgressTimer = false;
- backgroundJobProgressTimer = setInterval("updateJobProgress()", 500);
- },
- error: function(xml, textStatus) {
- alert(_('Failed to submit form: ') + textStatus);
- }
-
- });
-
- } else {
- // background job support not enabled,
- // so just do a normal form submission
- f.submit();
- }
-
- return false;
-
- }
- //]]>
-</script>
--- /dev/null
+var backgroundJobProgressTimer = 0;
+var jobID = '';
+var savedForm;
+var inBackgroundJobProgressTimer = false;
+function updateJobProgress() {
+ if (inBackgroundJobProgressTimer) {
+ return;
+ }
+ inBackgroundJobProgressTimer = true;
+ $.getJSON("/cgi-bin/koha/tools/background-job-progress.pl?jobID=" + jobID, function(json) {
+ var percentage = json.job_status == 'completed' ? 100 :
+ json.job_size > 0 ? Math.floor(100 * json.progress / json.job_size) :
+ 100;
+ var bgproperty = (parseInt(percentage/2)*3-300)+"px 0px";
+ $("#jobprogress").css("background-position",bgproperty);
+ $("#jobprogresspercent").text(percentage);
+
+ if (percentage == 100) {
+ clearInterval(backgroundJobProgressTimer); // just in case form submission fails
+ completeJob();
+ }
+ inBackgroundJobProgressTimer = false;
+ });
+}
+
+function completeJob() {
+ savedForm.completedJobID.value = jobID;
+ savedForm.submit();
+}
+
+// submit a background job with data
+// supplied from form f and activate
+// progress indicator
+function submitBackgroundJob(f) {
+ // check for background field
+ if (f.runinbackground) {
+ // set value of this hidden field for
+ // use by CGI script
+ savedForm = f;
+ f.mainformsubmit.disabled = true;
+ f.runinbackground.value = 'true';
+
+ // gather up form submission
+ var inputs = [];
+ $(':input', f).each(function() {
+ if (this.type == 'radio' || this.type == 'checkbox') {
+ if (this.checked) {
+ inputs.push(this.name + '=' + escape(this.value));
+ }
+ } else if (this.type == 'button') {
+ ; // do nothing
+ } else {
+ inputs.push(this.name + '=' + escape(this.value));
+ }
+
+ });
+
+ // and submit the request
+ $("#jobpanel").show();
+ $("#jobstatus").show();
+ $.ajax({
+ data: inputs.join('&'),
+ url: f.action,
+ dataType: 'json',
+ type: 'post',
+ success: function(json) {
+ jobID = json.jobID;
+ inBackgroundJobProgressTimer = false;
+ backgroundJobProgressTimer = setInterval("updateJobProgress()", 500);
+ },
+ error: function(xml, textStatus) {
+ alert('Failed to submit form: ' + textStatus);
+ }
+
+ });
+
+ } else {
+ // background job support not enabled,
+ // so just do a normal form submission
+ f.submit();
+ }
+
+ return false;
+}
<title>Koha › Circulation › Offline circulation file upload</title>
[% INCLUDE 'doc-head-close.inc' %]
[% INCLUDE 'file-upload.inc' %]
-[% INCLUDE 'background-job.inc' %]
+<script type="text/javascript" src="[% themelang %]/js/background-job-progressbar.js"></script>
<script type="text/javascript">
//<![CDATA[
$(document).ready(function(){
<title>Koha › Tools › Stage MARC records for import</title>
[% INCLUDE 'doc-head-close.inc' %]
[% INCLUDE 'file-upload.inc' %]
-[% INCLUDE 'background-job.inc' %]
+<script type="text/javascript" src="[% themelang %]/js/background-job-progressbar.js"></script>
<style type="text/css">
#uploadpanel,#fileuploadstatus,#fileuploadfailed,#jobpanel,#jobstatus,#jobfailed { display : none; }
#fileuploadstatus,#jobstatus { margin:.4em; }
[% INCLUDE 'doc-head-open.inc' %]
<title>Koha › Tools › Batch item deletion</title>
[% INCLUDE 'doc-head-close.inc' %]
-[% INCLUDE 'background-job.inc' %]
+<script type="text/javascript" src="[% themelang %]/js/background-job-progressbar.js"></script>
<link rel="stylesheet" type="text/css" href="[% themelang %]/css/pages/batchMod.css" />
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.tablesorter.min.js"></script>
<script src="[% themelang %]/lib/yui/cookie/cookie-min.js"></script>
[% INCLUDE 'doc-head-open.inc' %]
<title>Koha › Tools › Batch item modification</title>
[% INCLUDE 'doc-head-close.inc' %]
-[% INCLUDE 'background-job.inc' %]
+<script type="text/javascript" src="[% themelang %]/js/background-job-progressbar.js"></script>
<link rel="stylesheet" type="text/css" href="[% themelang %]/css/pages/batchMod.css" />
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.tablesorter.min.js"></script>
<script src="[% themelang %]/lib/yui/cookie/cookie-min.js"></script>
</title>
[% INCLUDE 'greybox.inc' %]
[% INCLUDE 'doc-head-close.inc' %]
-[% INCLUDE 'background-job.inc' %]
+<script type="text/javascript" src="[% themelang %]/js/background-job-progressbar.js"></script>
<script type="text/JavaScript" language="JavaScript">
//<![CDATA[
$(document).ready(function(){
<title>Koha › Tools › Stage MARC records for import</title>
[% INCLUDE 'doc-head-close.inc' %]
[% INCLUDE 'file-upload.inc' %]
-[% INCLUDE 'background-job.inc' %]
+<script type="text/javascript" src="[% themelang %]/js/background-job-progressbar.js"></script>
<style type="text/css">
#uploadpanel,#fileuploadstatus,#fileuploadfailed,#jobpanel,#jobstatus,#jobfailed { display : none; }
#fileuploadstatus,#jobstatus { margin:.4em; }
<title>Koha › Tools › Upload images</title>
[% INCLUDE 'doc-head-close.inc' %]
[% INCLUDE 'file-upload.inc' %]
-[% INCLUDE 'background-job.inc' %]
+<script type="text/javascript" src="[% themelang %]/js/background-job-progressbar.js"></script>
<style type="text/css">
#uploadpanel,#fileuploadstatus,#fileuploadfailed,#jobpanel,#jobstatus,#jobfailed { display : none; }
#fileuploadstatus,#jobstatus { margin:.4em; }
# Job size is the number of items we have to process
my $job_size = scalar(@itemnumbers);
my $job = undef;
- my $callback = sub {};
# If we asked for background processing
if ($runinbackground) {
$job = put_in_background($job_size);
- $callback = progress_callback($job, $dbh);
}
#initializing values for updates
return $job;
}
-sub progress_callback {
- my $job = shift;
- my $dbh = shift;
- return sub {
- my $progress = shift;
- $job->progress($progress);
- }
-}