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

(-)a/koha-tmpl/intranet-tmpl/prog/css/printreceiptinvoice.css (-210 / +220 lines)
Lines 1-322 Link Here
1
a:link {
1
a:link {
2
	color : #000000;
2
    color: #000000;
3
	text-decoration: none;
3
    text-decoration: none;
4
}
4
}
5
5
6
a:visited {
6
a:visited {
7
	color : #000000;
7
    color: #000000;
8
	text-decoration: none;
8
    text-decoration: none;
9
}
9
}
10
10
11
a:hover {
11
a:hover {
12
	color : #993300;
12
    color: #993300;
13
	text-decoration: none;
13
    text-decoration: none;
14
}
14
}
15
15
16
body {
16
body {
17
	background-color : #FFF;
17
    background-color: #fff;
18
	color : #333333;
18
    color: #333333;
19
	font-family : arial, geneva, sans-serif;
19
    font-family: arial, geneva, sans-serif;
20
	font-size : 14px;
20
    font-size: 14px;
21
	margin : 0px 0px 0px 0px;
21
    margin: 0px 0px 0px 0px;
22
}
22
}
23
23
24
caption {
24
caption {
25
	color : #000000;
25
    color: #000000;
26
	font-size : 18px;
26
    font-size: 18px;
27
	font-weight : bold;
27
    font-weight: bold;
28
	margin-top : 5px;
28
    margin-top: 5px;
29
	text-align : left;
29
    text-align: left;
30
}
30
}
31
31
32
form {
32
form {
33
	margin : 0px;
33
    margin: 0px;
34
	padding : 0px;
34
    padding: 0px;
35
}
35
}
36
36
37
h1
37
h1 {
38
	{
38
    color: #000000;
39
	color : #000000;
39
    font-size: 22px;
40
	font-size : 22px;
40
    font-weight: bold;
41
	font-weight : bold;
41
    margin-bottom: 3px;
42
	margin-bottom : 3px;
42
    margin-top: 3px;
43
	margin-top : 3px;
44
}
43
}
45
44
46
h1#logo {
45
h1#logo {
47
	display: none;
46
    display: none;
48
}
47
}
49
48
50
h2 {
49
h2 {
51
	color : #000000;
50
    color: #000000;
52
	font-size : 20px;
51
    font-size: 20px;
53
	font-weight : bold;
52
    font-weight: bold;
54
	margin-bottom : 3px;
53
    margin-bottom: 3px;
55
	margin-top : 3px;
54
    margin-top: 3px;
56
}
55
}
57
56
58
h3 {
57
h3 {
59
	color : #000000;
58
    color: #000000;
60
	font-size : 18px;
59
    font-size: 18px;
61
	font-weight : bold;
60
    font-weight: bold;
62
	margin-bottom : 3px;
61
    margin-bottom: 3px;
63
	margin-top : 3px;
62
    margin-top: 3px;
64
}
63
}
65
64
66
h4 {
65
h4 {
67
	color : #000000;
66
    color: #000000;
68
	font-size : 16px;
67
    font-size: 16px;
69
	font-weight : bold;
68
    font-weight: bold;
70
	margin-bottom : 3px;
69
    margin-bottom: 3px;
71
	margin-top : 3px;
70
    margin-top: 3px;
72
}
71
}
73
72
74
h5 {
73
h5 {
75
	color : #000000;
74
    color: #000000;
76
	font-size : 15px;
75
    font-size: 15px;
77
	font-weight : bold;
76
    font-weight: bold;
78
	margin-bottom : 1px;
77
    margin-bottom: 1px;
79
	margin-top : 1px;
78
    margin-top: 1px;
80
}
79
}
81
80
82
h6 {
81
h6 {
83
	color : #000000;
82
    color: #000000;
84
	font-size : 14px;
83
    font-size: 14px;
85
	font-weight : bold;
84
    font-weight: bold;
86
	margin-bottom : 1px;
85
    margin-bottom: 1px;
87
	margin-top : 1px;
86
    margin-top: 1px;
88
}
87
}
89
88
90
table {
89
table {
91
	background-color : #FFFFFF;
90
    background-color: #ffffff;
92
	border-bottom : 1px solid #CCCCCC;
91
    border-bottom: 1px solid #cccccc;
93
	border-collapse : collapse;
92
    border-collapse: collapse;
94
	border-left : 1px solid #CCCCCC;
93
    border-left: 1px solid #cccccc;
95
	margin : 3px 0px 5px 0px;
94
    margin: 3px 0px 5px 0px;
96
	padding : 0px;
95
    padding: 0px;
97
	width : 99%;
96
    width: 99%;
98
}
97
}
99
98
100
table.list {
99
table.list {
101
	background-color : #FFFFFF;
100
    background-color: #ffffff;
102
	border : 0;
101
    border: 0;
103
	border-collapse : collapse;
102
    border-collapse: collapse;
104
	margin : 3px 0px 5px 0px;
103
    margin: 3px 0px 5px 0px;
105
	padding : 0px;
104
    padding: 0px;
106
	width : 99%;
105
    width: 99%;
107
}
106
}
108
107
109
td {
108
td {
110
	background-color : #FFF;
109
    background-color: #fff;
111
	border-bottom : 1px solid #CCCCCC;
110
    border-bottom: 1px solid #cccccc;
112
	border-right : 1px solid #CCCCCC;
111
    border-right: 1px solid #cccccc;
113
	border-top : 0;
112
    border-top: 0;
114
	border-left : 0;
113
    border-left: 0;
115
	font-size : 12px;
114
    font-size: 12px;
116
	padding : 5px 5px 5px 5px;
115
    padding: 5px 5px 5px 5px;
117
}
116
}
118
117
119
td:last-child {
118
td:last-child {
120
	background-color : #FFF;
119
    background-color: #fff;
121
	border-bottom : 1px solid #CCCCCC;
120
    border-bottom: 1px solid #cccccc;
122
	border-right : 0px solid #CCCCCC;
121
    border-right: 0px solid #cccccc;
123
	border-top : 0;
122
    border-top: 0;
124
	border-left : 0;
123
    border-left: 0;
125
	font-size : 12px;
124
    font-size: 12px;
126
	padding : 5px 5px 5px 5px;
125
    padding: 5px 5px 5px 5px;
127
}
126
}
128
127
129
table.list th {
128
table.list th {
130
	background-color : #FFFFFF;
129
    background-color: #ffffff;
131
	border-top : 0;
130
    border-top: 0;
132
	border-left : 0;
131
    border-left: 0;
133
	text-align: left;
132
    text-align: left;
134
	font-size: 12px;
133
    font-size: 12px;
135
	font-weight: bold;
134
    font-weight: bold;
136
	padding: 5px;
135
    padding: 5px;
137
	width : 25%;
136
    width: 25%;
138
}
137
}
139
138
140
th {
139
th {
141
	background-color : #E9E9E9;
140
    background-color: #e9e9e9;
142
	border-bottom : 1px solid #CCCCCC;
141
    border-bottom: 1px solid #cccccc;
143
	border-right : 1px solid #CCCCCC;
142
    border-right: 1px solid #cccccc;
144
	border-top : 0;
143
    border-top: 0;
145
	border-left : 0;
144
    border-left: 0;
146
	font-size : 14px;
145
    font-size: 14px;
147
	font-weight : bold;
146
    font-weight: bold;
148
	padding : 5px 5px 5px 5px;
147
    padding: 5px 5px 5px 5px;
149
}
148
}
150
149
151
th:last-child {
150
th:last-child {
152
	background-color : #E9E9E9;
151
    background-color: #e9e9e9;
153
	border-bottom : 1px solid #CCCCCC;
152
    border-bottom: 1px solid #cccccc;
154
	border-right : 0px solid #CCCCCC;
153
    border-right: 0px solid #cccccc;
155
	border-top : 0;
154
    border-top: 0;
156
	border-left : 0;
155
    border-left: 0;
157
	font-size : 14px;
156
    font-size: 14px;
158
	font-weight : bold;
157
    font-weight: bold;
159
	padding : 5px 5px 5px 5px;
158
    padding: 5px 5px 5px 5px;
160
}
159
}
161
160
162
td.input, div.form td, div.details td {
161
td.input,
163
	border-bottom : 1px solid #CCCCCC;
162
div.form td,
164
	border-left : 1px solid #CCCCCC;
163
div.details td {
165
	border-right : 1px solid #CCCCCC;
164
    border-bottom: 1px solid #cccccc;
166
	border-top : 1px solid #CCCCCC;
165
    border-left: 1px solid #cccccc;
167
	color : #000000;
166
    border-right: 1px solid #cccccc;
168
	line-height : 1.5em;
167
    border-top: 1px solid #cccccc;
169
	padding : 4px;
168
    color: #000000;
170
	text-align : left;
169
    line-height: 1.5em;
171
}
170
    padding: 4px;
172
171
    text-align: left;
173
td.label, div.form th, div.details th {
172
}
174
	background-color : #FFF;
173
175
	border-bottom : 1px solid #CCCCCC;
174
td.label,
176
	border-left : 1px solid #CCCCCC;
175
div.form th,
177
	border-right : 0px;
176
div.details th {
178
	border-top : 0px;
177
    background-color: #fff;
179
	color : #000088;
178
    border-bottom: 1px solid #cccccc;
180
	font-weight : bold;
179
    border-left: 1px solid #cccccc;
181
	line-height : 1.5em;
180
    border-right: 0px;
182
	padding : 4px;
181
    border-top: 0px;
183
	text-align : right;
182
    color: #000088;
184
	vertical-align : top;
183
    font-weight: bold;
184
    line-height: 1.5em;
185
    padding: 4px;
186
    text-align: right;
187
    vertical-align: top;
185
}
188
}
186
189
187
tr.highlight {
190
tr.highlight {
188
	background-color: #CCCCCC;
191
    background-color: #cccccc;
189
	border-bottom : 1px solid #CCCCCC;
192
    border-bottom: 1px solid #cccccc;
190
	border-left : 1px solid #CCCCCC;
193
    border-left: 1px solid #cccccc;
191
	border-right : 1px solid #CCCCCC;
194
    border-right: 1px solid #cccccc;
192
	border-top : 1px solid #CCCCCC;
195
    border-top: 1px solid #cccccc;
193
}
196
}
194
197
195
.error {
198
.error {
196
	font-weight: bold;
199
    font-weight: bold;
197
}
200
}
198
201
199
.ex {
202
.ex {
200
	font-family : "Courier New", Courier, monospace;
203
    font-family: "Courier New", Courier, monospace;
201
}
204
}
202
.inline {
205
.inline {
203
	display : inline;
206
    display: inline;
204
}
207
}
205
208
206
tr.overdue {
209
tr.overdue {
207
	font-weight : bold;
210
    font-weight: bold;
208
}
211
}
209
212
210
tfoot {
213
tfoot {
211
	font-weight : bold;
214
    font-weight: bold;
212
}
215
}
213
216
214
tfoot td, tfoot td:last-child {
217
tfoot td,
215
	background-color : #EEEEEE;
218
tfoot td:last-child {
216
	border-right : 1px solid #666666;
219
    background-color: #eeeeee;
217
	border-bottom : 1px solid #666666;
220
    border-right: 1px solid #666666;
221
    border-bottom: 1px solid #666666;
218
}
222
}
219
223
220
td.credit, td.debit, td.sum {
224
td.credit,
221
	font-family : "Courier New", Courier, monospace;
225
td.debit,
222
	text-align : right;
226
td.sum {
223
	border-bottom : 1px solid #CCCCCC;
227
    font-family: "Courier New", Courier, monospace;
224
	border-left : 1px solid #CCCCCC;
228
    text-align: right;
225
	border-right : 1px solid #CCCCCC;
229
    border-bottom: 1px solid #cccccc;
226
	border-top : 1px solid #CCCCCC;
230
    border-left: 1px solid #cccccc;
231
    border-right: 1px solid #cccccc;
232
    border-top: 1px solid #cccccc;
227
}
233
}
228
234
229
td.debit {
235
td.debit {
230
	color : #990000;
236
    color: #990000;
231
	border-bottom : 1px solid #CCCCCC;
237
    border-bottom: 1px solid #cccccc;
232
	border-left : 1px solid #CCCCCC;
238
    border-left: 1px solid #cccccc;
233
	border-right : 1px solid #CCCCCC;
239
    border-right: 1px solid #cccccc;
234
	border-top : 1px solid #CCCCCC;
240
    border-top: 1px solid #cccccc;
235
}
241
}
236
242
237
#receipt {
243
#receipt {
238
	background-color : #FFFFFF;
244
    background-color: #ffffff;
239
	font-family : serif;
245
    font-family: serif;
240
	font-size : .9em;
246
    font-size: 0.9em;
241
	margin : 0 0px 0px 0;
247
    margin: 0 0px 0px 0;
242
	padding : 0px;
248
    padding: 0px;
243
	position : relative;
249
    position: relative;
244
}
250
}
245
251
246
#receipt a:link {
252
#receipt a:link {
247
	color : #000000;
253
    color: #000000;
248
	text-decoration: none;
254
    text-decoration: none;
249
}
255
}
250
256
251
#receipt a:visited {
257
#receipt a:visited {
252
	color : #000000;
258
    color: #000000;
253
	text-decoration: none;
259
    text-decoration: none;
254
}
260
}
255
261
256
#receipt a:hover {
262
#receipt a:hover {
257
	color : #993300;
263
    color: #993300;
258
	text-decoration: none;
264
    text-decoration: none;
259
}
265
}
260
266
261
#receipt caption {
267
#receipt caption {
262
	color : #000000;
268
    color: #000000;
263
	font-weight : bold;
269
    font-weight: bold;
264
	margin-top : 5px;
270
    margin-top: 5px;
265
	text-align : left;
271
    text-align: left;
266
}
272
}
267
273
268
#receipt div.table {
274
#receipt div.table {
269
	background-color : transparent;
275
    background-color: transparent;
270
	font-weight: normal;
276
    font-weight: normal;
271
}
277
}
272
278
273
#receipt h3, #receipt caption, #receipt h4 {
279
#receipt h3,
274
	background-color : transparent;
280
#receipt caption,
275
	color : #000000;
281
#receipt h4 {
276
	font-size : 1em;
282
    background-color: transparent;
277
	font-weight : bold;
283
    color: #000000;
278
	margin-bottom : 3px;
284
    font-size: 1em;
279
	margin-top : 3px;
285
    font-weight: bold;
286
    margin-bottom: 3px;
287
    margin-top: 3px;
280
}
288
}
281
289
282
#receipt h2 {
290
#receipt h2 {
283
	background-color : transparent;
291
    background-color: transparent;
284
	color : #000000;
292
    color: #000000;
285
	font-weight : bold;
293
    font-weight: bold;
286
	margin-bottom : 3px;
294
    margin-bottom: 3px;
287
	margin-top : 3px;
295
    margin-top: 3px;
288
}
296
}
289
297
290
#receipt table {
298
#receipt table {
291
	background-color : transparent;
299
    background-color: transparent;
292
	border : 0;
300
    border: 0;
293
	border-collapse : collapse;
301
    border-collapse: collapse;
294
	width : auto;
302
    width: auto;
295
}
303
}
296
304
297
#receipt td, #receipt th {
305
#receipt td,
298
	background-color : transparent;
306
#receipt th {
299
	border : 0;
307
    background-color: transparent;
300
	font-size : 1em;
308
    border: 0;
301
	font-weight : normal;
309
    font-size: 1em;
302
	padding : 1px;
310
    font-weight: normal;
303
	border-bottom : 1px solid #000000;
311
    padding: 1px;
304
	border-left : 1px solid #000000;
312
    border-bottom: 1px solid #000000;
305
	border-right : 1px solid #000000;
313
    border-left: 1px solid #000000;
306
	border-top : 1px solid #000000;
314
    border-right: 1px solid #000000;
307
	}
315
    border-top: 1px solid #000000;
316
}
308
317
309
#receipt th {
318
#receipt th {
310
	font-weight : bold;
319
    font-weight: bold;
311
	text-align : left;
320
    text-align: left;
312
	}
321
}
313
322
314
#receipt th.centerednames {
323
#receipt th.centerednames {
315
	font-weight : bold;
324
    font-weight: bold;
316
	text-align: center;
325
    text-align: center;
317
	color: red;
326
    color: red;
318
	border-top : 1px solid #000000;
327
    border-top: 1px solid #000000;
319
	border-bottom : 0px;
328
    border-bottom: 0px;
320
}
329
}
321
330
322
div#breadcrumbs,
331
div#breadcrumbs,
Lines 327-332 div#toolbar, Link Here
327
div#changelanguage,
336
div#changelanguage,
328
div#menu,
337
div#menu,
329
.noprint,
338
.noprint,
339
.no-print,
330
form#sortbyform,
340
form#sortbyform,
331
#cartDetails,
341
#cartDetails,
332
fieldset.action,
342
fieldset.action,
Lines 336-343 fieldset.action, Link Here
336
}
346
}
337
347
338
fieldset {
348
fieldset {
339
	border : 0;
349
    border: 0;
340
}
350
}
341
#cataloguing_additem_itemlist {
351
#cataloguing_additem_itemlist {
342
	overflow : visible !important;
352
    overflow: visible !important;
343
}
353
}
(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/slip-print.inc (-2 / +1 lines)
Lines 6-17 Link Here
6
        [% Koha.Preference('IntranetSlipPrinterJS') | $raw %]
6
        [% Koha.Preference('IntranetSlipPrinterJS') | $raw %]
7
    [% ELSE %]
7
    [% ELSE %]
8
        let autoprint = true;
8
        let autoprint = true;
9
        $( window ).load(function() {
9
        window.addEventListener('load', function() {
10
            window.print();
10
            window.print();
11
            window.onafterprint = function () {
11
            window.onafterprint = function () {
12
                window.close();
12
                window.close();
13
            }
13
            }
14
            setTimeout('window.close()', 1000); //Hack from Chrome < 63
15
        });
14
        });
16
    [% END %]
15
    [% END %]
17
</script>
16
</script>
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/pos/pay.tt (-11 / +6 lines)
Lines 59-65 Link Here
59
            </div>
59
            </div>
60
        [% END %]
60
        [% END %]
61
61
62
        [% IF Koha.Preference('FinePaymentAutoPopup') %]
63
        <form name="payForm" id="payForm" method="post" action="/cgi-bin/koha/pos/pay.pl" target="_blank">
64
        [% ELSE %]
62
        <form name="payForm" id="payForm" method="post" action="/cgi-bin/koha/pos/pay.pl">
65
        <form name="payForm" id="payForm" method="post" action="/cgi-bin/koha/pos/pay.pl">
66
        [% END %]
63
            [% INCLUDE 'csrf-token.inc' %]
67
            [% INCLUDE 'csrf-token.inc' %]
64
            <input type="hidden" name="op" value="cud-pay" />
68
            <input type="hidden" name="op" value="cud-pay" />
65
            <div class="row">
69
            <div class="row">
Lines 240-249 Link Here
240
    </div>
244
    </div>
241
</div>
245
</div>
242
246
243
[% IF payment_id && Koha.Preference('FinePaymentAutoPopup') %]
247
244
    <!-- Automatic Print Receipt -->
245
    <a id="printReceipt" style="display: none" href="#"></a>
246
[% END %]
247
248
248
[% MACRO jsinclude BLOCK %]
249
[% MACRO jsinclude BLOCK %]
249
    [% INCLUDE 'format_price.inc' %]
250
    [% INCLUDE 'format_price.inc' %]
Lines 519-531 Link Here
519
                }
520
                }
520
            });
521
            });
521
522
522
            [% IF payment_id && Koha.Preference('FinePaymentAutoPopup') %]
523
            
523
                $("#printReceipt").click(function() {
524
                    var win = window.open('/cgi-bin/koha/pos/printreceipt.pl?action=print&accountlines_id=[% payment_id | uri %]&tendered=[% tendered | uri %]&change=[% change | uri %]', '_blank');
525
                    win.focus();
526
                });
527
                $("#printReceipt").click();
528
            [% END %]
529
        });
524
        });
530
    </script>
525
    </script>
531
[% END %]
526
[% END %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/pos/printreceipt.tt (-1 / +37 lines)
Lines 38-45 Link Here
38
    [% END %]
38
    [% END %]
39
</div>
39
</div>
40
40
41
[% IF error_msg %]
42
    <div class="alert alert-danger">
43
        <p>[% error_msg | html %]</p>
44
        <button id="close-window" class="btn btn-secondary" onclick="window.close();">
45
            [% t("Close") %]
46
        </button>
47
    </div>
48
[% ELSE %]
49
    <div class="no-print" style="margin-top: 20px; text-align: center;">
50
        <button id="print-receipt" class="btn btn-primary">
51
            <i class="fa fa-print"></i> [% t("Print receipt") %]
52
        </button>
53
        <button id="close-window" class="btn btn-secondary" onclick="window.close();">
54
            [% t("Close") %]
55
        </button>
56
    </div>
57
[% END %]
58
41
[% MACRO jsinclude BLOCK %]
59
[% MACRO jsinclude BLOCK %]
42
    [% INCLUDE 'slip-print.inc' #printThenClose %]
60
    <script>
61
        function doPrint() {
62
            window.print();
63
        }
64
65
        // Best-effort auto-close
66
        window.onafterprint = () => {
67
            window.close();
68
        };
69
70
        window.addEventListener('load', () => {
71
            if ( [% autoprint | js %] == 1 ) {
72
                doPrint();
73
            }
74
        });
75
76
        document.getElementById('print-receipt')
77
            .addEventListener('click', doPrint);
78
    </script>
43
[% END %]
79
[% END %]
44
80
45
[% INCLUDE 'intranet-bottom.inc' %]
81
[% INCLUDE 'intranet-bottom.inc' %]
(-)a/pos/pay.pl (-5 / +18 lines)
Lines 78-88 if ( $op eq 'cud-pay' ) { Link Here
78
78
79
        my $payment = $sale->purchase( { payment_type => $payment_type } );
79
        my $payment = $sale->purchase( { payment_type => $payment_type } );
80
80
81
        $template->param(
81
        my $redirect_url;
82
            payment_id => $payment->accountlines_id,
82
        if ( C4::Context->preference('FinePaymentAutoPopup') ) {
83
            tendered   => scalar $input->param('tendered'),
83
            # PRG Flow: Redirect to receipt print page
84
            change     => scalar $input->param('change')
84
            $redirect_url = C4::Context->uri_for("/cgi-bin/koha/pos/printreceipt.pl")
85
        );
85
                . "?accountlines_id=" . $payment->accountlines_id
86
                . "&tendered=" . scalar $input->param('tendered')
87
                . "&change=" . scalar $input->param('change')
88
                . "&autoprint=1";
89
90
        } else {
91
            # PRG Flow: Redirect to pos with payment details
92
            $redirect_url = C4::Context->uri_for("/cgi-bin/koha/pos/pay.pl")
93
                . '?payment_id=' . $payment->accountlines_id
94
                . '&tendered=' . scalar $input->param('tendered')
95
                . '&change=' . scalar $input->param('change');
96
        }
97
        print $input->redirect( -uri => $redirect_url, -status => 303 );
98
        exit; # Terminate the script immediately after redirect headers are sent
86
    }
99
    }
87
}
100
}
88
101
(-)a/pos/printreceipt.pl (-2 / +10 lines)
Lines 37-43 my ( $template, $loggedinuser, $cookie ) = get_template_and_user( Link Here
37
37
38
my $payment_id = $input->param('accountlines_id');
38
my $payment_id = $input->param('accountlines_id');
39
my $payment    = Koha::Account::Lines->find($payment_id);
39
my $payment    = Koha::Account::Lines->find($payment_id);
40
my $patron     = $payment->patron;
40
if ( !$payment ) {
41
    $template->param(
42
        error_msg => 'Receipt not found or access denied.',
43
    );
44
    output_html_with_http_headers $input, $cookie, $template->output;
45
    exit;
46
}
47
my $patron = $payment->patron;
48
my $autoprint = $input->param('autoprint') // 0;
41
49
42
my $logged_in_user = Koha::Patrons->find($loggedinuser) or die "Not logged in";
50
my $logged_in_user = Koha::Patrons->find($loggedinuser) or die "Not logged in";
43
output_and_exit_if_error(
51
output_and_exit_if_error(
Lines 71-76 $template->param( Link Here
71
    slip  => $letter->{content},
79
    slip  => $letter->{content},
72
    plain => !$letter->{is_html},
80
    plain => !$letter->{is_html},
73
    style => $letter->{style},
81
    style => $letter->{style},
82
    autoprint => $autoprint,
74
);
83
);
75
84
76
output_html_with_http_headers $input, $cookie, $template->output;
85
output_html_with_http_headers $input, $cookie, $template->output;
77
- 

Return to bug 41705