1 <div class="container" id="admin-workstation-printing">
4 /* TODO: more context and move me */
12 h2 { margin-bottom: 15px }
17 <div class="col-md-12">
18 <h2>[% l('Printer Settings for Remote Printing') %]</h2>
19 <div class="alert alert-warning" ng-show="hatchNotConnected()">
20 [% l("Hatch is not connected") %]
26 <div class="col-md-12">
27 <ul class="nav nav-tabs">
28 <li ng-class="{active : context == 'default'}">
29 <a href='' ng-click="setContext('default')">[% l('Default') %]</a>
31 <li ng-class="{active : context == 'receipt'}">
32 <a href='' ng-click="setContext('receipt')">[% l('Receipt') %]</a>
34 <li ng-class="{active : context == 'label'}">
35 <a href='' ng-click="setContext('label')">[% l('Label') %]</a>
37 <li ng-class="{active : context == 'mail'}">
38 <a href='' ng-click="setContext('mail')">[% l('Mail') %]</a>
40 <li ng-class="{active : context == 'offline'}">
41 <a href='' ng-click="setContext('offline')">[% l('Offline') %]</a>
43 <li ng-class="{active : isTestView}" class="pull-right">
44 <a href='' ng-click="isTestView=true">[% l('Test Printing') %]</a>
47 <div class="tab-content">
48 <div class="tab-pane active">
50 <!-- printer config UI -->
51 <div class="row" ng-hide="isTestView">
52 <div class="col-md-6">
53 <div class="input-group">
54 <div class="input-group-btn" uib-dropdown>
55 <button type="button" class="btn btn-default" uib-dropdown-toggle>
56 [% l('Select Printer') %]
57 <span class="caret"></span></button>
58 <ul uib-dropdown-menu>
59 <li ng-repeat="printer in printers">
60 <a href='' ng-click="setPrinter(printer.name)">
65 </div><!-- /btn-group -->
66 <input ng-if="!printers[0]" type="text"
67 class="form-control" disabled="disabled"
68 value="[% l('No Printers Found') %]">
69 <input ng-if="printers[0] && !printConfig[context]" type="text"
70 class="form-control" disabled="disabled"
71 value="[% l('No Printer Selected') %]">
72 <input ng-if="printConfig[context].printer" type="text"
73 class="form-control" disabled="disabled"
74 value="{{printConfig[context].printer}}">
75 </div><!-- /input-group -->
77 <div class="col-md-4">
78 <span class="pad-right-min">
79 <button class="btn btn-warning"
80 ng-click="resetPrinterSettings(context)">
84 <button class="btn btn-success"
85 ng-click="savePrinterSettings(context)">
86 [% l('Apply Changes') %]
91 <div class="row" ng-hide="isTestView">
92 <div class="col-md-10">
94 <div class="col-md-1"></div>
95 <div class="col-md-2">
96 <label>[% l('Print Color') %]</label>
98 <div class="col-md-4">
101 ng-model="printConfig[context].printColor"
102 ng-options="val for val in printerOptions.printColor | orderBy:'val'">
105 <div class="col-md-3">
106 <span>[% l('Default: [_1]',
107 '{{printerOptions.defaultPrintColor}}') %]</span>
111 <div class="col-md-1"></div>
112 <div class="col-md-2">
113 <label>[% l('Paper Source') %]</label>
115 <div class="col-md-4">
118 ng-model="printConfig[context].paperSource"
119 ng-options="val for val in printerOptions.paperSource | orderBy:'val'">
122 <div class="col-md-3">
123 <span>[% l('Default: [_1]',
124 '{{printerOptions.defaultPaperSource}}') %]</span>
129 <div class="col-md-1"></div>
130 <div class="col-md-2">
131 <label>[% l('Paper Type') %]</label>
133 <div class="col-md-4">
136 ng-model="printConfig[context].paper"
137 ng-options="val for val in printerOptions.paper | orderBy:'val'">
140 <div class="col-md-3">
141 <span>[% l('Default: [_1]',
142 '{{printerOptions.defaultPaper}}') %]</span>
147 <div class="col-md-1"></div>
148 <div class="col-md-2">
149 <label>[% l('Page Orientation') %]</label>
151 <div class="col-md-4">
154 ng-model="printConfig[context].pageOrientation"
155 ng-options="val for val in printerOptions.pageOrientation | orderBy:'val'">
158 <div class="col-md-3">
159 <span>[% l('Default: [_1]',
160 '{{printerOptions.defaultPageOrientation}}') %]</span>
165 <div class="col-md-1"></div>
166 <div class="col-md-2">
167 <label>[% l('Collation') %]</label>
169 <div class="col-md-4">
172 ng-model="printConfig[context].collation"
173 ng-options="val for val in printerOptions.collation | orderBy:'val'">
176 <div class="col-md-3">
177 <span>[% l('Default: [_1]',
178 '{{printerOptions.defaultCollation}}') %]</span>
183 <div class="col-md-1"></div>
184 <div class="col-md-2">
185 <label>[% l('Print Quality') %]</label>
187 <div class="col-md-4">
190 ng-model="printConfig[context].printQuality"
191 ng-options="val for val in printerOptions.printQuality | orderBy:'val'">
194 <div class="col-md-3">
195 <span>[% l('Default: [_1]',
196 '{{printerOptions.defaultPrintQuality}}') %]</span>
201 <div class="col-md-1"></div>
202 <div class="col-md-2">
203 <label>[% l('Print Sides') %]</label>
205 <div class="col-md-4">
208 ng-model="printConfig[context].printSides"
209 ng-options="val for val in printerOptions.printSides | orderBy:'val'">
212 <div class="col-md-3">
213 <span>[% l('Default: [_1]',
214 '{{printerOptions.defaultPrintSides}}') %]</span>
219 <div class="col-md-1"></div>
220 <div class="col-md-2">
221 <label>[% l('Number of Copies') %]</label>
223 <div class="col-md-4">
224 <input type="text" size="4" class="form-control"
225 ng-model="printConfig[context].copies"/>
227 <div class="col-md-3">
228 <span>[% l('Default: [_1]',
229 '{{printerOptions.defaultCopies}}') %]</span>
234 <div class="col-md-1">
235 <input type="radio" name="margins"
236 ng-click="printConfig[context].autoMargins=true"
237 ng-checked="printConfig[context].autoMargins"/>
239 <div class="col-md-2">
240 <label>[% l('Automatic Margins') %]</label>
242 <div class="col-md-4">
245 ng-model="printConfig[context].marginType"
246 ng-disabled="!printConfig[context].autoMargins"
247 ng-options="val for val in printerOptions.marginType | orderBy:'val'">
250 <div class="col-md-3">
251 <span>[% l('Default: [_1]',
252 '{{printerOptions.defaultMarginType}}') %]</span>
257 <div class="col-md-1">
258 <input type="radio" name="margins"
259 ng-click="printConfig[context].autoMargins=false"
260 ng-checked="!printConfig[context].autoMargins"/>
262 <div class="col-md-2">
263 <label>[% l('Manual Margins') %]</label>
265 <div class="col-md-2">
266 <div class="input-group">
267 <span class="input-group-addon">[% l('Left') %]</span>
268 <input type="text" class="form-control"
269 ng-disabled="printConfig[context].autoMargins"
270 ng-model="printConfig[context].leftMargin"/>
273 <div class="col-md-2">
274 <div class="input-group">
275 <span class="input-group-addon">[% l('Top') %]</span>
276 <input type="text" class="form-control"
277 ng-disabled="printConfig[context].autoMargins"
278 ng-model="printConfig[context].topMargin"/>
283 <div class="col-md-3"></div>
284 <div class="col-md-2">
285 <div class="input-group">
286 <span class="input-group-addon">[% l('Right') %]</span>
287 <input type="text" class="form-control"
288 ng-disabled="printConfig[context].autoMargins"
289 ng-model="printConfig[context].rightMargin"/>
292 <div class="col-md-2">
293 <div class="input-group">
294 <span class="input-group-addon">[% l('Bottom') %]</span>
295 <input type="text" class="form-control"
296 ng-disabled="printConfig[context].autoMargins"
297 ng-model="printConfig[context].bottomMargin"/>
303 <div class="col-md-1"></div>
304 <div class="col-md-2"><label>[% l('Page Ranges') %]</label></div>
305 <div class="col-md-2">
307 <input type='radio' name='pageRanges'
308 ng-checked="printConfig[context].allPages"
309 ng-click="printConfig[context].allPages=true"/>
311 <div class="col-md-2">
312 [% l('Page Range') %]
313 <input type='radio' name='pageRanges'
314 ng-checked="!printConfig[context].allPages"
315 ng-click="printConfig[context].allPages=false"/>
319 <div class="col-md-3"></div>
320 <div class="col-md-2">
321 <div class="input-group">
322 <span class="input-group-addon">[% l('Start') %]</span>
323 <input type="text" class="form-control"
324 ng-disabled="printConfig[context].allPages"
325 ng-model="printConfig[context].pageRanges[0]"/>
328 <div class="col-md-2">
329 <div class="input-group">
330 <span class="input-group-addon">[% l('End') %]</span>
331 <input type="text" class="form-control"
332 ng-disabled="printConfig[context].allPages"
333 ng-model="printConfig[context].pageRanges[1]"/>
336 <!-- TODO: support multiple page ranges by
337 dynamically adding additional pageRanges[X] pairs -->
342 <div class="row" ng-hide="isTestView">
343 <div class="col-md-12">
344 <h3>[% l('Compiled Printer Settings') %]</h3>
345 <pre>{{printerConfString()}}</pre>
349 <!-- printer test UI -->
350 <div class="row" ng-show="isTestView">
351 <div class="col-md-10">
352 <div class="btn-group">
353 <button type="button"
354 class="btn btn-default btn-lg"
355 ng-class="{active : contentType=='text/plain'}"
356 ng-click="setContentType('text/plain')">[% l('Plain Text') %]</button>
357 <button type="button"
358 class="btn btn-default btn-lg"
359 ng-class="{active : contentType=='text/html'}"
360 ng-click="setContentType('text/html')">[% l('HTML') %]</button>
363 <div class="col-md-2">
364 <div class="input-group pull-right">
365 <div class="input-group-btn">
366 <button type="button"
367 ng-click="testPrint()"
368 class="btn btn-default btn-success">
369 [% l('Print') %]</button>
370 <button type="button"
371 ng-click="testPrint(true)"
372 class="btn btn-default btn-info">
373 [% l('Print with Dialog') %]</button>
379 <div class="row" ng-show="isTestView">
380 <div class="col-md-12">
381 <div ng-show="contentType=='text/plain'"
382 ng-init="textPrintContent='
383 [% l('Test Print') %]
389 123456789012345678901234567890
391 1234567890123456789012345678901234567890
393 12345678901234567890123456789012345678901234567890
395 12345678901234567890123456789012345678901234567890123456790
397 [% l('Test Print') %]
399 <pre><textarea>{{textPrintContent}}</textarea></pre>
402 <div ng-show="contentType=='text/html'">
403 <textarea ng-model="htmlPrintContent"
404 ng-init="htmlPrintContent='
406 <style>p { color: blue }</style>
407 <h2>[% l('Test HTML Print') %]</h2>
409 <img src=\'https://[% ctx.hostname %]/opac/images/main_logo.png\' width=\'140\' height=\'24\'/>
410 <p>[% l('Welcome, Stranger!') %]</p>
413 <p>{{date_value | date}}</p>
417 </div><!-- html content -->
420 </div><!-- tab pane -->
421 </div><!-- tab content -->
424 </div><!-- container -->