x11-misc/xkeyboard-config-2.16 (fix)
[anomen-overlay.git] / www-apps / phpSANE / dev / phpsane.php
blobb82335ca04705f9b1b01f86b05e7b044cfffe2e2
1 <?php
2 // phpSANE
3 // Version: 0.8.0-as
4 // John Walsh <john.walsh@mini-net.co.uk>
5 // Wojciech Bronisz <wojtek@bronisz.eu>
6 include("incl/functions.php");
7 include("incl/language.php");
8 include("incl/config.php");
9 include("incl/security.php");
10 include("incl/scan.php");
12 //set localized formatting
13 setlocale(LC_ALL, $lang[$lang_id][19]);
15 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
16 <html>
17 <head>
18 <meta name="author" content="root">
19 <meta name="robots" content="noindex">
20 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
21 <title>phpSANE</title>
22 <link rel="icon" href="favicon.ico" type="image/x-icon" />
23 <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
24 <link rel="stylesheet" href="css/jquery.jcrop.css" type="text/css" />
25 <link rel="stylesheet" href="css/style.css" type="text/css" />
26 <link rel="stylesheet" href="css/msdropdown.css" type="text/css" />
27 <link rel="stylesheet" href="css/nouislider.fox.css" type="text/css" />
28 <script src="javascript/jquery.min.js" type="text/javascript"></script>
29 <script src="javascript/jquery.jcrop.min.js" type="text/javascript"></script>
30 <script src="javascript/jquery.msdropdown_custom.min.js" type="text/javascript"></script>
31 <script src="javascript/jquery.nouislider.min.js" type="text/javascript"></script>
32 <script type="text/javascript">
33 $(document).ready(function() {
34 ////////////////////////////////////////////////////////
35 //////scan area selection
36 <?php if ($scanner_ok) {
37 echo "
38 var jcrop_api;
39 $('#preview_image').Jcrop({
40 onChange: showCoords,
41 onSelect: showCoords,
42 onRelease: clearCoords, setSelect: [" . ($PREVIEW_SCALE * $pos_x) . ", "
43 . ($PREVIEW_SCALE * $pos_y) . ", "
44 . ($PREVIEW_SCALE * ($pos_x + $geometry_x)) . ", "
45 . ($PREVIEW_SCALE * ($pos_y + $geometry_y)) . "]\n
46 }, function(){
47 jcrop_api = this;
48 });";
49 }?>
51 $('#menuForm').on('change','input',function(e){
52 var pos_x = getSizePx($('#pos_x').val()),
53 pos_y = getSizePx($('#pos_y').val()),
54 geometry_x = getSizePx($('#geometry_x').val()),
55 geometry_y = getSizePx($('#geometry_y').val());
57 jcrop_api.setSelect([pos_x, pos_y, (pos_x + geometry_x), (pos_y + geometry_y)]);
58 });
60 //jcrop onChange and onSelect event handler
61 function showCoords(c)
63 var pos_x = getSizeMm(c.x);
64 var pos_y = getSizeMm(c.y);
65 if($('#pos_x').val !== pos_x) $('#pos_x').val(pos_x);
66 if($('#pos_y').val !== pos_y) $('#pos_y').val(pos_y);
68 var geometry_x = getSizeMm(c.w);
69 var geometry_y = getSizeMm(c.h);
70 if($('#geometry_x').val !== geometry_x) $('#geometry_x').val(geometry_x);
71 if($('#geometry_y').val !== geometry_y) $('#geometry_y').val(geometry_y);
73 var pagesize_string = geometry_x + ',' + geometry_y;
74 var current_pagesize = $('#pagesize').val();
75 if(current_pagesize !== pagesize_string) {
76 var value_to_select = "0,0";
77 $("#pagesize > option").each(function() {
78 if(this.value === pagesize_string) value_to_select = this.value;
79 });
81 if(current_pagesize !== value_to_select) $('#pagesize').val(value_to_select).change();
85 //jcrop onRelease event handler
86 function clearCoords()
88 $('#pos_x').val(0);
89 $('#pos_y').val(0);
90 $('#geometry_x').val('');
91 $('#geometry_y').val('');
94 function getSizeMm(sizePx) {
95 return sizePx / <?php echo $PREVIEW_SCALE ?>;
98 function getSizePx(sizeMm) {
99 return sizeMm * <?php echo $PREVIEW_SCALE ?>;
102 //change page size
103 $("#pagesize").change(function(){
104 var page_width_mm = parseFloat(this.value.split(",")[0]);
105 var page_height_mm = parseFloat(this.value.split(",")[1]);
106 if ((page_width_mm > 0) && (page_height_mm > 0)) {
107 var preview_width_mm = <?php echo $PREVIEW_WIDTH_MM ?>;
109 $('#pos_x').val(preview_width_mm - page_width_mm);
110 $('#pos_y').val(0);
111 $('#geometry_x').val(preview_width_mm);
112 $('#geometry_y').val(page_height_mm);
114 //trigger the change event on one of the fields so crop selection changes
115 $('#pos_x').trigger('change');
118 ////////////////////////////////////////////////////////
121 ////////////////////////////////////////////////////////
122 //////various
124 //enable msDropDown on select boxes
125 try {
126 $("body select").msDropDown();
127 } catch(e) {
128 alert(e.message);
131 //prevent form submit when pressing enter key in text field
132 $(document).keypress(function(event) {
133 var event = (event) ? event : ((event) ? event : null);
134 var node = (event.target) ? event.target : ((event.srcElement) ? event.srcElement : null);
135 if ((event.keyCode == 13) && (node.type=="text")) {node.blur(); return false;}
138 //save language id in cookie
139 $("#language_select").change(function(){
140 document.cookie = "language_id=" + this.value + "; max-age=" + 10 * 365 * 24 * 60 * 60 + "; path=/;"
141 $("#menuForm").submit();
144 //brightness menu option
145 $("#brightness_slider").noUiSlider({
146 range: [<?php echo $brightness_minimum . ',' . $brightness_maximum ?>]
147 ,start: <?php echo $brightness . "\r\n" ?>
148 ,step: 1
149 ,handles: 1
150 ,slide: function(){
151 var values = $(this).val();
152 $("#brightness").val(values);
155 $("#brightness").change(function() {
156 var brightnessValue = parseInt(this.value);
157 if(isNaN(brightnessValue)) {
158 this.value = $("#brightness_slider").val();
160 else {
161 $("#brightness_slider").val(brightnessValue);
162 this.value = $("#brightness_slider").val();
166 //contrast menu option
167 $("#contrast_slider").noUiSlider({
168 range: [<?php echo $contrast_minimum . ',' . $contrast_maximum ?>]
169 ,start: <?php echo $contrast . "\r\n" ?>
170 ,step: 1
171 ,handles: 1
172 ,slide: function(){
173 var values = $(this).val();
174 $("#contrast").val(values);
177 $("#contrast").change(function() {
178 var contrastValue = parseInt(this.value);
179 if(isNaN(contrastValue)) {
180 this.value = $("#contrast_slider").val();
182 else {
183 $("#contrast_slider").val(contrastValue);
184 this.value = $("#contrast_slider").val();
187 ////////////////////////////////////////////////////////
190 ////////////////////////////////////////////////////////
191 //////file selection and buttons
193 $("#select_menu_button").mousedown(function(event) {
194 if(event.target.id != "select_menu_checkbox") {
195 $("#select_menu_dropdown").toggle();
199 $(document).click(function(event) {
200 if(event.target.id != "select_menu_button" && $(event.target).parents('#select_menu_button').length == 0) {
201 $("#select_menu_dropdown").hide();
205 $("#select_menu_checkbox").click(function(){fileSelectAll($("#select_menu_checkbox").prop('checked'));});
206 $("#select_menu_all").mouseup(function(){fileSelectAll(true);});
207 $("#select_menu_none").mouseup(function(){fileSelectAll(false);});
208 function fileSelectAll(select) {
209 $(".selected_files").each(function() {
210 $(this).prop('checked', select);
211 $("#select_menu_checkbox").prop('checked', select);
213 fileSelectEvaluateCheckbox();
214 $("#select_menu_dropdown").hide();
217 $("#select_menu_documents").mouseup(function(){fileSelectCategory('document');});
218 $("#select_menu_images").mouseup(function(){fileSelectCategory('image');});
219 $("#select_menu_other").mouseup(function(){fileSelectCategory('other');});
220 function fileSelectCategory(category) {
221 //skip the header row
222 var rows = $("#files_table tr:gt(0)");
223 rows.each(function() {
224 var fileCategory = $(this).find(".file_column_category").html();
225 $(this).find(".selected_files").prop('checked', fileCategory == category);
227 fileSelectEvaluateCheckbox();
228 $("#select_menu_dropdown").hide();
231 $(".selected_files").click(fileSelectEvaluateCheckbox);
232 function fileSelectEvaluateCheckbox() {
233 var nrOfFiles = $(".selected_files").length;
234 var nrOfSelectedFiles = $(".selected_files:checked").length;
236 var buttonCheckbox = $("#select_menu_checkbox");
237 var buttonDelete = $("#file_delete");
238 var buttonDownload = $("#file_download");
239 if(nrOfSelectedFiles == 0) {
240 //no files selected
241 if(buttonCheckbox.length > 0) {
242 buttonCheckbox.prop('indeterminate', false);
243 buttonCheckbox.prop('checked', false);
245 if(buttonDelete.length > 0){buttonDelete.hide();}
246 if(buttonDownload.length > 0){buttonDownload.hide();}
248 else if(nrOfFiles == nrOfSelectedFiles) {
249 //all files selected
250 if(buttonCheckbox.length > 0) {
251 buttonCheckbox.prop('indeterminate', false);
252 buttonCheckbox.prop('checked', true);
254 if(buttonDelete.length > 0){buttonDelete.show();}
255 if(buttonDownload.length > 0){buttonDownload.show();}
257 else {
258 //some files selected
259 if(buttonCheckbox.length > 0) {
260 buttonCheckbox.prop('indeterminate', true);
261 buttonCheckbox.prop('checked', true);
263 if(buttonDelete.length > 0){buttonDelete.show();}
264 if(buttonDownload.length > 0){buttonDownload.show();}
268 //delete selected files
269 $("#file_delete").click(function(event){
270 if(!confirm('<?php echo $lang[$lang_id][12] ?>')) {
271 //user cancelled, prevent commit
272 event.preventDefault();
276 //download selected files
277 $("#file_download").click(function(event){
278 event.target.disabled = true;
279 $('#file_download_spinner').show();
281 var selectedFiles = [];
282 $('.selected_files:checked').each(function() {
283 selectedFiles.push($(this).val());
285 $.post('./download.php', {selected_files: selectedFiles})
286 .done(function(data) {
287 if(data.length > 0) {
288 window.location.assign(data);
290 else {
291 alert('<?php echo $lang[$lang_id][13] ?>');
294 .fail(function() {
295 alert('<?php echo $lang[$lang_id][13] ?>');
297 .always(function() {
298 event.target.disabled = false;
299 $('#file_download_spinner').hide();
302 ////////////////////////////////////////////////////////
305 ////////////////////////////////////////////////////////
306 //////extend scanned document with another page
307 <?php if ($action_save && (($format == "pdf" && $do_append_pdf) || ($format == "txt" && $do_append_txt))) {
308 echo "
309 if(confirm('{$lang[$lang_id][50]}')) {
310 $('#append_file').val('{$file_save}');
311 $('#tab_menu_buttons_accept').click();
313 } ?>
315 ////////////////////////////////////////////////////////
317 </script>
318 </head>
319 <body>
320 <?php
322 ////////////////////////////////////////////////////////////////////////
323 echo "<form id='menuForm' action='phpsane.php' method='POST'>
324 <input type=hidden name='first' value='$first'>
325 <input type=hidden name='lang_id' id='lang_id' value='$lang_id'>
326 <input type=hidden name='sid' value='$sid'>
327 <input type=hidden name='preview_images' value='$preview_images'>
328 <input type=hidden name='append_file' id='append_file' value=''>\n";
329 if(!$do_file_name) {
330 $filename = ($file_name_prefix !== -1 ? $file_name_prefix : $lang[$lang_id][60]) . date("Y-m-d H.i.s", time());
331 echo " <input type=hidden name='file_name' id='file_name' value='$filename'>\n";
335 ////////////////////////////////////////////////////////////////////////
336 // page header
338 echo " <table id='page_header' width='100%'>
339 <tr>
340 <td>
341 <a href='phpsane.php'>
342 <img id='logo' src='images/logo.jpg' alt='phpSANE'>
343 </a>";
345 if($do_btn_help || $do_lang_toggle) {
346 echo "<ul id='header_menu'>";
347 if($do_btn_help) echo "<li><a href='help/help_{$lang_id}.php' target='_blank'>{$lang[$lang_id][37]}</a></li>";
348 if($do_lang_toggle) {
349 echo "<li>
350 <!--<select id='language_select' name='lang_id' onchange='setLanguage(this.value);this.form.submit()'>//-->
351 <select id='language_select' name='lang_id'>
352 <option"; if ($lang_id==0) echo " selected"; echo " value='0' data-image='images/lang_de.gif'>" . $lang[0][20]."</option>
353 <option"; if ($lang_id==1) echo " selected"; echo " value='1' data-image='images/lang_en.gif'>" . $lang[1][20]."</option>
354 <option"; if ($lang_id==2) echo " selected"; echo " value='2' data-image='images/lang_pl.gif'>" . $lang[2][20]."</option>
355 <option"; if ($lang_id==3) echo " selected"; echo " value='3' data-image='images/lang_fi.gif'>" . $lang[3][20]."</option>
356 <option"; if ($lang_id==4) echo " selected"; echo " value='4' data-image='images/lang_ru.gif'>" . $lang[4][20]."</option>
357 <option"; if ($lang_id==5) echo " selected"; echo " value='5' data-image='images/lang_uk.gif'>" . $lang[5][20]."</option>
358 <option"; if ($lang_id==6) echo " selected"; echo " value='6' data-image='images/lang_fr.gif'>" . $lang[6][20]."</option>
359 <option"; if ($lang_id==7) echo " selected"; echo " value='7' data-image='images/lang_nl.gif'>" . $lang[7][20]."</option>
360 <option"; if ($lang_id==8) echo " selected"; echo " value='8' data-image='images/lang_cz.gif'>" . $lang[8][20]."</option>
361 </select>
362 </li>
363 </ul>";
366 echo " </td>
367 </tr>
368 <tr><td class='ruler' colspan=2 /></tr>
369 </table>\n";
370 // page header - end
371 ////////////////////////////////////////////////////////////////////////
374 ////////////////////////////////////////////////////////////////////////
375 // page body
377 echo "
378 <table id='page_body' style='height: {$PREVIEW_HEIGHT_PX}px;'>
379 <tr>
380 <td id='tab_preview'>
381 <img src='$preview_images' id='preview_image' width='$PREVIEW_WIDTH_PX' height='$PREVIEW_HEIGHT_PX' />
382 </td>
383 <td id='tab_menu'>\n";
384 if ($scanner_ok) {
385 include("incl/menu.php");
386 } else {
387 echo "
388 <input type=hidden name='pos_x' value='".$pos_x."'>
389 <input type=hidden name='pos_y' value='".$pos_y."'>
390 <input type=hidden name='geometry_x' value='".$geometry_x."'>
391 <input type=hidden name='geometry_y' value='".$geometry_y."'>
392 <input type=hidden name='format' value='".$format."'>
393 <input type=hidden name='mode' value='".$mode."'>
394 <input type=hidden name='resolution' value='".$resolution."'>
395 <input type=hidden name='brightness' value='".$brightness."'>
396 <input type=hidden name='contrast' value='".$contrast."'>
398 <table>
399 <tr>
400 <td id='tab_menu_error_text'>".$lang[$lang_id][33]."</td>
401 </tr>
402 <tr>
403 <td><input id='tab_menu_error_button' type='submit' name='action' value='".$lang[$lang_id][34]."'></td>
404 </tr>
405 </table>\n";
407 echo "</td>
408 </tr>
409 <tr>
410 <td colspan='2'>\n";
411 include("incl/files.php");
412 echo "
413 </td>
414 </table>\n";
416 // page body - end
417 ////////////////////////////////////////////////////////////////////////
420 ////////////////////////////////////////////////////////////////////////
421 // page footer
422 echo "
423 <table id='page_footer'>
424 <tr><td class='ruler' /></tr>
425 <tr>
426 <td>
427 # $cmd_device
428 </td>
429 </tr>
430 <tr><td class='ruler' /></tr>
431 </table>
432 </form>
433 </body>
434 </html>\n";