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">
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) {
39 $('#preview_image').Jcrop({
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
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
)]);
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
;
81 if(current_pagesize
!== value_to_select
) $
('#pagesize').val(value_to_select
).change();
85 //jcrop onRelease event handler
86 function clearCoords()
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 ?
>;
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
);
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 ////////////////////////////////////////////////////////
124 //enable msDropDown on select boxes
126 $
("body select").msDropDown();
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" ?
>
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();
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" ?
>
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();
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) {
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
) {
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();}
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
);
291 alert('<?php echo $lang[$lang_id][13] ?>');
295 alert('<?php echo $lang[$lang_id][13] ?>');
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))) {
309 if(confirm('{$lang[$lang_id][50]}')) {
310 $('#append_file').val('{$file_save}');
311 $('#tab_menu_buttons_accept').click();
315 ////////////////////////////////////////////////////////
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";
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 ////////////////////////////////////////////////////////////////////////
338 echo " <table id='page_header' width='100%'>
341 <a href='phpsane.php'>
342 <img id='logo' src='images/logo.jpg' alt='phpSANE'>
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) {
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>
368 <tr><td class='ruler' colspan=2 /></tr>
371 ////////////////////////////////////////////////////////////////////////
374 ////////////////////////////////////////////////////////////////////////
378 <table id='page_body' style='height: {$PREVIEW_HEIGHT_PX}px;'>
380 <td id='tab_preview'>
381 <img src='$preview_images' id='preview_image' width='$PREVIEW_WIDTH_PX' height='$PREVIEW_HEIGHT_PX' />
383 <td id='tab_menu'>\n";
385 include("incl/menu.php");
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."'>
400 <td id='tab_menu_error_text'>".$lang[$lang_id][33]."</td>
403 <td><input id='tab_menu_error_button' type='submit' name='action' value='".$lang[$lang_id][34]."'></td>
411 include("incl/files.php");
417 ////////////////////////////////////////////////////////////////////////
420 ////////////////////////////////////////////////////////////////////////
423 <table id='page_footer'>
424 <tr><td class='ruler' /></tr>
430 <tr><td class='ruler' /></tr>