View | Details | Raw Unified | Return to bug 6372
Collapse All | Expand All

(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/background-job.inc (-91 lines)
Lines 1-91 Link Here
1
<!-- Background job progress indicator -->
2
<script type="text/javascript">
3
    //<![CDATA[
4
    var backgroundJobProgressTimer = 0;
5
    var jobID = '';
6
    var savedForm;
7
    var inBackgroundJobProgressTimer = false;
8
    function updateJobProgress() {
9
        if (inBackgroundJobProgressTimer) {
10
            return;
11
        }
12
        inBackgroundJobProgressTimer = true;
13
        $.getJSON("/cgi-bin/koha/tools/background-job-progress.pl?jobID=" + jobID, function(json) {
14
            var percentage = Math.floor(100 * json.progress / json.job_size);
15
            if (json.job_status == 'completed') {
16
                percentage = 100;
17
            }
18
				var bgproperty = (parseInt(percentage/2)*3-300)+"px 0px";
19
                $("#jobprogress").css("background-position",bgproperty);
20
				$("#jobprogresspercent").text(percentage);
21
22
            if (percentage == 100) {
23
                clearInterval(backgroundJobProgressTimer); // just in case form submission fails
24
                completeJob();
25
            }
26
            inBackgroundJobProgressTimer = false;
27
        });
28
    }
29
30
    function completeJob() {
31
        savedForm.completedJobID.value = jobID;
32
        savedForm.submit();
33
    }
34
35
    // submit a background job with data
36
    // supplied from form f and activate
37
    // progress indicator
38
    function submitBackgroundJob(f) {
39
        // check for background field
40
        if (f.runinbackground) {
41
            // set value of this hidden field for 
42
            // use by CGI script
43
            savedForm = f;
44
            f.mainformsubmit.disabled = true;
45
            f.runinbackground.value = 'true';
46
47
            // gather up form submission
48
            var inputs = [];
49
            $(':input', f).each(function() {
50
                if (this.type == 'radio' || this.type == 'checkbox') {
51
                    if (this.checked) {
52
                        inputs.push(this.name + '=' + escape(this.value));
53
                    }
54
                } else if (this.type == 'button') {
55
                    ; // do nothing
56
                } else {
57
                    inputs.push(this.name + '=' + escape(this.value));
58
                }
59
                
60
            });
61
62
            // and submit the request
63
			$("#jobpanel").show();
64
            $("#jobstatus").show();
65
            $.ajax({
66
                data: inputs.join('&'),
67
                url: f.action,
68
                dataType: 'json',
69
		        type: 'post',
70
                success: function(json) {
71
                    jobID = json.jobID;
72
                    inBackgroundJobProgressTimer = false;
73
                    backgroundJobProgressTimer = setInterval("updateJobProgress()", 500);
74
                },
75
                error: function(xml, textStatus) {
76
                    alert(_('Failed to submit form: ') + textStatus);
77
                }
78
79
            });
80
81
        } else {
82
            // background job support not enabled,
83
            // so just do a normal form submission
84
            f.submit();
85
        }
86
        
87
        return false;
88
89
    }
90
    //]]>
91
</script>
(-)a/koha-tmpl/intranet-tmpl/prog/en/js/background-job-progressbar.js (+84 lines)
Line 0 Link Here
1
var backgroundJobProgressTimer = 0;
2
var jobID = '';
3
var savedForm;
4
var inBackgroundJobProgressTimer = false;
5
function updateJobProgress() {
6
    if (inBackgroundJobProgressTimer) {
7
        return;
8
    }
9
    inBackgroundJobProgressTimer = true;
10
    $.getJSON("/cgi-bin/koha/tools/background-job-progress.pl?jobID=" + jobID, function(json) {
11
        var percentage = json.job_status == 'completed' ? 100 :
12
                            json.job_size > 0              ? Math.floor(100 * json.progress / json.job_size) :
13
                            100;
14
        var bgproperty = (parseInt(percentage/2)*3-300)+"px 0px";
15
        $("#jobprogress").css("background-position",bgproperty);
16
        $("#jobprogresspercent").text(percentage);
17
18
        if (percentage == 100) {
19
            clearInterval(backgroundJobProgressTimer); // just in case form submission fails
20
            completeJob();
21
        }
22
        inBackgroundJobProgressTimer = false;
23
    });
24
}
25
26
function completeJob() {
27
    savedForm.completedJobID.value = jobID;
28
    savedForm.submit();
29
}
30
31
// submit a background job with data
32
// supplied from form f and activate
33
// progress indicator
34
function submitBackgroundJob(f) {
35
    // check for background field
36
    if (f.runinbackground) {
37
        // set value of this hidden field for 
38
        // use by CGI script
39
        savedForm = f;
40
        f.mainformsubmit.disabled = true;
41
        f.runinbackground.value = 'true';
42
43
        // gather up form submission
44
        var inputs = [];
45
        $(':input', f).each(function() {
46
            if (this.type == 'radio' || this.type == 'checkbox') {
47
                if (this.checked) {
48
                    inputs.push(this.name + '=' + escape(this.value));
49
                }
50
            } else if (this.type == 'button') {
51
                ; // do nothing
52
            } else {
53
                inputs.push(this.name + '=' + escape(this.value));
54
            }
55
            
56
        });
57
58
        // and submit the request
59
        $("#jobpanel").show();
60
        $("#jobstatus").show();
61
        $.ajax({
62
            data: inputs.join('&'),
63
            url: f.action,
64
            dataType: 'json',
65
            type: 'post',
66
            success: function(json) {
67
                jobID = json.jobID;
68
                inBackgroundJobProgressTimer = false;
69
                backgroundJobProgressTimer = setInterval("updateJobProgress()", 500);
70
            },
71
            error: function(xml, textStatus) {
72
                alert('Failed to submit form: ' + textStatus);
73
            }
74
75
        });
76
77
    } else {
78
        // background job support not enabled,
79
        // so just do a normal form submission
80
        f.submit();
81
    }
82
    
83
    return false;
84
}
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/offline_circ/process_koc.tt (-1 / +1 lines)
Lines 2-8 Link Here
2
<title>Koha &rsaquo; Circulation &rsaquo; Offline Circulation File Upload</title>
2
<title>Koha &rsaquo; Circulation &rsaquo; Offline Circulation File Upload</title>
3
[% INCLUDE 'doc-head-close.inc' %]
3
[% INCLUDE 'doc-head-close.inc' %]
4
[% INCLUDE 'file-upload.inc' %]
4
[% INCLUDE 'file-upload.inc' %]
5
[% INCLUDE 'background-job.inc' %]
5
<script type="text/javascript" src="[% themelang %]/js/background-job-progressbar.js"></script>
6
<script type="text/javascript">
6
<script type="text/javascript">
7
//<![CDATA[
7
//<![CDATA[
8
$(document).ready(function(){
8
$(document).ready(function(){
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/test/progressbar.tt (-1 / +1 lines)
Lines 2-8 Link Here
2
<title>Koha &rsaquo; Tools &rsaquo; Stage MARC Records For Import</title>
2
<title>Koha &rsaquo; Tools &rsaquo; Stage MARC Records For Import</title>
3
[% INCLUDE 'doc-head-close.inc' %]
3
[% INCLUDE 'doc-head-close.inc' %]
4
[% INCLUDE 'file-upload.inc' %]
4
[% INCLUDE 'file-upload.inc' %]
5
[% INCLUDE 'background-job.inc' %]
5
<script type="text/javascript" src="[% themelang %]/js/background-job-progressbar.js"></script>
6
<style type="text/css">
6
<style type="text/css">
7
	#uploadpanel,#fileuploadstatus,#fileuploadfailed,#jobpanel,#jobstatus,#jobfailed { display : none; }
7
	#uploadpanel,#fileuploadstatus,#fileuploadfailed,#jobpanel,#jobstatus,#jobfailed { display : none; }
8
	#fileuploadstatus,#jobstatus { margin:.4em; }
8
	#fileuploadstatus,#jobstatus { margin:.4em; }
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-del.tt (-1 / +1 lines)
Lines 1-7 Link Here
1
[% INCLUDE 'doc-head-open.inc' %]
1
[% INCLUDE 'doc-head-open.inc' %]
2
<title>Koha &rsaquo; Tools &rsaquo; Batch item deletion</title>
2
<title>Koha &rsaquo; Tools &rsaquo; Batch item deletion</title>
3
[% INCLUDE 'doc-head-close.inc' %]
3
[% INCLUDE 'doc-head-close.inc' %]
4
[% INCLUDE 'background-job.inc' %]
4
<script type="text/javascript" src="[% themelang %]/js/background-job-progressbar.js"></script>
5
<link rel="stylesheet" type="text/css" href="[% themelang %]/css/pages/batchMod.css" />
5
<link rel="stylesheet" type="text/css" href="[% themelang %]/css/pages/batchMod.css" />
6
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.tablesorter.min.js"></script>
6
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.tablesorter.min.js"></script>
7
<script src="[% themelang %]/lib/yui/cookie/cookie-min.js"></script>
7
<script src="[% themelang %]/lib/yui/cookie/cookie-min.js"></script>
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-edit.tt (-1 / +1 lines)
Lines 1-7 Link Here
1
[% INCLUDE 'doc-head-open.inc' %]
1
[% INCLUDE 'doc-head-open.inc' %]
2
<title>Koha &rsaquo; Tools &rsaquo; Batch item modification</title>
2
<title>Koha &rsaquo; Tools &rsaquo; Batch item modification</title>
3
[% INCLUDE 'doc-head-close.inc' %]
3
[% INCLUDE 'doc-head-close.inc' %]
4
[% INCLUDE 'background-job.inc' %]
4
<script type="text/javascript" src="[% themelang %]/js/background-job-progressbar.js"></script>
5
<link rel="stylesheet" type="text/css" href="[% themelang %]/css/pages/batchMod.css" />
5
<link rel="stylesheet" type="text/css" href="[% themelang %]/css/pages/batchMod.css" />
6
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.tablesorter.min.js"></script>
6
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.tablesorter.min.js"></script>
7
<script src="[% themelang %]/lib/yui/cookie/cookie-min.js"></script>
7
<script src="[% themelang %]/lib/yui/cookie/cookie-min.js"></script>
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/manage-marc-import.tt (-1 / +1 lines)
Lines 6-12 Link Here
6
</title>
6
</title>
7
[% INCLUDE 'greybox.inc' %]
7
[% INCLUDE 'greybox.inc' %]
8
[% INCLUDE 'doc-head-close.inc' %]
8
[% INCLUDE 'doc-head-close.inc' %]
9
[% INCLUDE 'background-job.inc' %]
9
<script type="text/javascript" src="[% themelang %]/js/background-job-progressbar.js"></script>
10
<script type="text/JavaScript" language="JavaScript">
10
<script type="text/JavaScript" language="JavaScript">
11
//<![CDATA[
11
//<![CDATA[
12
$(document).ready(function(){
12
$(document).ready(function(){
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/stage-marc-import.tt (-1 / +1 lines)
Lines 2-8 Link Here
2
<title>Koha &rsaquo; Tools &rsaquo; Stage MARC Records For Import</title>
2
<title>Koha &rsaquo; Tools &rsaquo; Stage MARC Records For Import</title>
3
[% INCLUDE 'doc-head-close.inc' %]
3
[% INCLUDE 'doc-head-close.inc' %]
4
[% INCLUDE 'file-upload.inc' %]
4
[% INCLUDE 'file-upload.inc' %]
5
[% INCLUDE 'background-job.inc' %]
5
<script type="text/javascript" src="[% themelang %]/js/background-job-progressbar.js"></script>
6
<style type="text/css">
6
<style type="text/css">
7
	#uploadpanel,#fileuploadstatus,#fileuploadfailed,#jobpanel,#jobstatus,#jobfailed { display : none; }
7
	#uploadpanel,#fileuploadstatus,#fileuploadfailed,#jobpanel,#jobstatus,#jobfailed { display : none; }
8
	#fileuploadstatus,#jobstatus { margin:.4em; }
8
	#fileuploadstatus,#jobstatus { margin:.4em; }
(-)a/tools/batchMod.pl (-11 lines)
Lines 120-131 if ($op eq "action") { Link Here
120
	# Job size is the number of items we have to process
120
	# Job size is the number of items we have to process
121
	my $job_size = scalar(@itemnumbers);
121
	my $job_size = scalar(@itemnumbers);
122
	my $job = undef;
122
	my $job = undef;
123
	my $callback = sub {};
124
123
125
	# If we asked for background processing
124
	# If we asked for background processing
126
	if ($runinbackground) {
125
	if ($runinbackground) {
127
	    $job = put_in_background($job_size);
126
	    $job = put_in_background($job_size);
128
	    $callback = progress_callback($job, $dbh);
129
	}
127
	}
130
128
131
	# For each item
129
	# For each item
Lines 579-591 sub put_in_background { Link Here
579
    return $job;
577
    return $job;
580
}
578
}
581
579
582
sub progress_callback {
583
    my $job = shift;
584
    my $dbh = shift;
585
    return sub {
586
        my $progress = shift;
587
        $job->progress($progress);
588
    }
589
}
590
580
591
581
592
- 

Return to bug 6372