From 4670c76fe96e1ff78ff094e6fae8469d2d10d747 Mon Sep 17 00:00:00 2001
From: Jacek Kowalski <Jacek@jacekk.info>
Date: Sat, 07 Jul 2012 20:37:10 +0000
Subject: [PATCH] Poprawki i dalsza część budowy systemu inwentaryzacji: - dodanie strony zakończenia inwentaryzacji, - aktualizacja instrukcji przed rozpoczęciem procesu, - zmiany w wyświetlanych tekstach.

---
 inwentaryzacja/locate.js |   84 ++++++++++++++++++++++++++++++------------
 inwentaryzacja/make.php  |    3 +
 inwentaryzacja/end.php   |   18 +++++++--
 inwentaryzacja/begin.php |    8 ++-
 4 files changed, 81 insertions(+), 32 deletions(-)

diff --git a/inwentaryzacja/begin.php b/inwentaryzacja/begin.php
index 7b1a73b..4895a7b 100644
--- a/inwentaryzacja/begin.php
+++ b/inwentaryzacja/begin.php
@@ -7,12 +7,14 @@
 
 <p>Ten krok służy do przygotowania listy książek, które zostaną objęte inwentaryzacją.</p>
 
-<p>W trakcie inwentaryzacji zaleca się nie zmieniać położenia książek za pomocą interfejsu, gdyż dane te zostaną po zakończeniu procesu (krok 3) nadpisane.</p>
+<p>W trakcie inwentaryzacji zaleca się nie zmieniać położenia książek za pomocą interfejsu, gdyż dane te mogą zostać nadpisane po zakończeniu procesu (krok 3).</p>
+
+<p>Z interfejsu inwentaryzacji w danej chwili powinna korzystać tylko jedna osoba, w przeciwnym wypadku osoby inwentaryzujące mogą wzajemnie nadpisywać dane.</p>
 
 <?php
-if(file_exists('list.txt')) {
+if(file_exists('list.xml')) {
 ?>
-<p><strong>Niezapisane dane z poprzedniej inwentaryzacji zostaną usunięte!</strong></p>
+<p><strong>Dane z poprzedniej (niedokończonej) inwentaryzacji zostaną usunięte!</strong></p>
 
 <?php
 }
diff --git a/inwentaryzacja/end.php b/inwentaryzacja/end.php
index 49c8238..21ccd63 100644
--- a/inwentaryzacja/end.php
+++ b/inwentaryzacja/end.php
@@ -14,11 +14,11 @@
 }
 ?>
 
-<p>Poniżej znajduje się lista zmian do wykonania. Aby zatrzymać dane zmiany należy odznaczyć odpowiednie pole wyboru.</p>
+<p>Poniżej znajduje się lista zmian do wykonania. Aby nie dokonywać danej zmiany należy odznaczyć odpowiednie pole wyboru.</p>
 
 <form action="finish.php">
 <table class="width">
-<tr> <th>Okł.</th> <th> <b>Kod</b> <br /> Wyd. </th> <th> Autor <br /> <b>Tytuł</b> </th> <th> Miejsce, rok <br /> Wydawnictwo </th> <th> Akcje </th> </tr>
+<tr> <th> <b>Kod</b> <br /> Wyd. </th> <th> Autor <br /> <b>Tytuł</b> </th> <th> Miejsce, rok <br /> Wydawnictwo </th> <th> Akcje </th> </tr>
 <?php
 $doc = new DOMDocument;
 if(!$doc->load('list.xml')) {
@@ -32,6 +32,8 @@
 	if(!($loc instanceof DOMElement) || $loc->tagName != 'lokalizacja') {
 		continue;
 	}
+	
+	$location = $loc->getAttribute('regal').'/'.$loc->getAttribute('polka').'/'.$loc->getAttribute('rzad');
 	
 	foreach($loc->childNodes as $node) {
 		if(!($node instanceof DOMElement) || $node->tagName != 'ksiazka') {
@@ -52,13 +54,21 @@
 			}
 		}
 		
-		echo '<tr> <td></td> <td> <b>'.$dane['id'].'</b> <br /> </td> <td>'.$dane['autor'].' <br /> <b>'.$dane['tytul'].'</b></td> <td>'.$dane['miejsce'].' '.$dane['rok'].' <br /> '.$dane['wydawnictwo'].'</td> <td></td> </tr>'."\n";
+		echo '<tr class="'.($dane['status'] == 'moved' ? 'poz' : 'wyc').'"> <td> <b>'.$dane['id'].'</b> <br /> </td> <td>'.$dane['autor'].' <br /> <b>'.$dane['tytul'].'</b></td> <td>'.$dane['miejsce'].' '.$dane['rok'].' <br /> '.$dane['wydawnictwo'].'</td> <td>';
+		if($dane['status'] == 'moved') {
+			echo '<label><input type="checkbox" name="move['.$dane['id'].']" value="'.htmlspecialchars($location).'" checked="checked" />Przenieś do '.htmlspecialchars($location).'</label>';
+		}
+		else
+		{
+			echo '<label><input type="checkbox" name="repulse['.$dane['id'].']" value="1" checked="checked" />Wycofaj</label>';
+		}
+		echo '</td> </tr>'."\n";
 	}
 }
 ?>
 </table>
 
-<p><input type="submit" value="Wykonaj wybrane operacje" /></p>
+<p><input type="submit" value="Wykonaj wybrane operacje" /> <a href="locate.htm">Kontynuuj inwentaryzację</a> <a href="begin.php">Zacznij inwentaryzację od nowa</a></p>
 </form>
 
 <?php
diff --git a/inwentaryzacja/locate.js b/inwentaryzacja/locate.js
index 41494b0..64a84de 100644
--- a/inwentaryzacja/locate.js
+++ b/inwentaryzacja/locate.js
@@ -140,6 +140,10 @@
 }
 
 function changeBook(book) {
+	if(document.getElementById('input').style.display != 'block') {
+		return false;
+	}
+	
 	if(book.parentNode == loc) {
 		xml.getElementById(book.id).setAttribute('status', 'ok');
 		
@@ -175,6 +179,10 @@
 }
 
 function processInput() {
+	if(document.getElementById('input').style.display != 'block') {
+		return false;
+	}
+	
 	var reg = /^([0-9]{1,8})$/;
 	var i1 = document.getElementById('i1').value;
 	var i2 = document.getElementById('i2').value;
@@ -220,6 +228,57 @@
 		clearInput();
 		return false;
 	}
+}
+
+function saveWithCallback(callback) {
+	ajax.open('POST', 'save.php', true);
+	ajax.onreadystatechange = callback;
+	ajax.send(xml);
+}
+
+function save() {
+	document.getElementById('input').style.display = 'none';
+	status('Zapisywanie. Proszę czekać...');
+	
+	saveWithCallback(function() {
+		if(ajax.readyState == 3) {
+			status('Wysyłanie danych...');
+		}
+		else if(ajax.readyState == 4) {
+			if(ajax.status == 200) {
+				status('Dane zostały zapisane. '+ajax.status);
+			}
+			else
+			{
+				error('Zapis nie powiódł się. Błąd HTTP '+ajax.status);
+			}
+			
+			document.getElementById('input').style.display = 'block';
+		}
+	});
+}
+
+function end() {
+	document.getElementById('input').style.display = 'none';
+	status('Zapisywanie. Proszę czekać...');
+	
+	saveWithCallback(function() {
+		if(ajax.readyState == 3) {
+			status('Wysyłanie danych...');
+		}
+		else if(ajax.readyState == 4) {
+			if(ajax.status == 200) {
+				status('Dane zostały zapisane. '+ajax.status);
+				status('Przekierowywanie... Proszę czekać...');
+				window.location.replace('end.php');
+			}
+			else
+			{
+				error('Zapis nie powiódł się. Błąd HTTP '+ajax.status);
+				document.getElementById('input').style.display = 'block';
+			}
+		}
+	});
 }
 
 function process() {
@@ -269,33 +328,10 @@
 	document.getElementById('i1').onkeydown = document.getElementById('i2').onkeydown = document.getElementById('i3').onkeydown = keyEvent;
 	document.getElementById('i4').onclick = processInput;
 	document.getElementById('i5').onclick = save;
+	document.getElementById('i6').onclick = end;
 	document.getElementById('i1').focus();
 	
 	status('Gotowy do pracy.');
-}
-
-function save() {
-	document.getElementById('input').style.display = 'none';
-	status('Zapisywanie. Proszę czekać...');
-	
-	ajax.open('POST', 'save.php', true);
-	ajax.onreadystatechange = function() {
-		if(ajax.readyState == 3) {
-			status('Wysyłanie danych...');
-		}
-		else if(ajax.readyState == 4) {
-			if(ajax.status == 200) {
-				status('Dane zostały zapisane. '+ajax.status);
-			}
-			else
-			{
-				error('Zapis nie powiódł się. Błąd HTTP '+ajax.status);
-			}
-			
-			document.getElementById('input').style.display = 'block';
-		}
-	};
-	ajax.send(xml);
 }
 
 function getData() {
diff --git a/inwentaryzacja/make.php b/inwentaryzacja/make.php
index dee8cb5..5544aab 100644
--- a/inwentaryzacja/make.php
+++ b/inwentaryzacja/make.php
@@ -1,6 +1,7 @@
 <?php
 $title = 'Inwentaryzacja - rozpoczęcie';
 include('design/top.php');
+include('../includes/config.php');
 include('../includes/db2.php');
 
 $fields = array('tytul', 'autor', 'miejsce', 'rok', 'wydawnictwo');
@@ -64,7 +65,7 @@
 
 <p>Jeżeli nie widzisz błędów powyżej to krok pierwszy został pomyślnie zakończony.</p>
 
-<form action="locate.php">
+<form action="locate.htm">
 <p>Możesz: <input type="submit" value="Rozpocząć inwentaryzację" /></p>
 </form>
 

--
Gitblit v1.9.1