index.php
changeset 3 6d109e3804ac
parent 2 def69d70eb6e
child 5 879f0956be86
--- a/index.php	Tue Oct 25 22:24:36 2011 +0200
+++ b/index.php	Tue Oct 25 23:55:33 2011 +0200
@@ -1,124 +1,47 @@
 <?php
+// Template Engine
+require_once 'Twig-1.3.0/lib/Twig/Autoloader.php';
+Twig_Autoloader::register();
+$twig = new Twig_Environment(new Twig_Loader_Filesystem("templates"));
 
 const FILE = "var/abook.txt";
 
-require 'addressbook.class.php';
-
-$abook = new AddressBook(FILE);
+if ($_REQUEST) {
+    require 'addressbook.class.php';
+    $abook = new AddressBook(FILE);
 
-switch (@$_REQUEST['action']) {
-	case 'add':	if ($abook->add_entry($_REQUEST)) {
-			    header("Location: $_SERVER[PHP_SELF]?action=add");
-			    exit(0);
-			}
-			break;
-	case 'search':  $entries = $abook->search_entries($_REQUEST['pattern']);
-			if (@$_REQUEST['format'] == 'table') {
-			    header("Content-Type: text/html; charset=UTF-8");
-			    if (!$entries) {
-				echo "Sorry, keine Einträge.";
+    switch (@$_REQUEST['action']) {
+	    // Nach dem Eintragen bleiben wir auf der Eintragsseite,
+	    // aber wir verhindern Duplikate, die mit RELOAD passieren
+	    case 'add':	if ($abook->add_entry($_REQUEST)) {
+				header("Location: $_SERVER[PHP_SELF]?action=add");
 				exit(0);
+			}
+			echo $twig->render("add.html", array());
+			exit;
+			break;
+
+	    // Suchen…
+	    case 'search':  $entries = $abook->search_entries($_REQUEST['pattern']);
+			    if (@$_REQUEST['format'] == 'table') {
+				if (is_numeric($_REQUEST['max'])) {
+				    $left = count($entries) - $_REQUEST['max'];
+				    if ($left > 0) 
+					$entries = array_slice($entries, 0, $_REQUEST['max']);
+				    else
+					$left = NULL;
+				}
+				echo $twig->render("results.html",
+				    array('entries' => $entries, 'left' => $left));
+				exit;
 			    }
-			    echo "<table><tr><th>Name<th>Tel<th>Mail</tr>";
-			    for ($i = 1; $entry = array_shift($entries); $i++) {
-				echo "<tr>"
-				    . "<td>" . htmlspecialchars($entry['name'])
-				    . "<td>" . htmlspecialchars($entry['tel'])
-				    . "<td>" . htmlspecialchars($entry['mail']);
-				if ($i > @$_REQUEST['max']) break;
-			    }
-			    echo "</table>";
-			    if ($entries)
-				echo "<p>Und noch ".count($entries)." weitere Einträge";
-			    exit(0);
-			}
-			break;
+			    echo $twig->render("search.html", array('entries' => $entries));
+			    exit;
+			    break;
+    }
 }
 
-
-?>
-<!-- HTML -->
-<?=header("Content-Type: text/html; charset=UTF-8");?>
-<html>
-<head>
-
-<script type=text/javascript>
-    // source: http://de.wikibooks.org/wiki/Websiteentwicklung:_AJAX:_Erstes_Programm
-    var _ajax;
-    
-    function got_answer() {
-	if (_ajax.readyState == 4 && _ajax.status == 200) {
-	    document.getElementById('result').innerHTML = _ajax.responseText;
-	}
-    }
-
-    function search_entries(value) {
-	value = encodeURIComponent(value);
-	request = "?action=search&format=table&max=3&pattern=" + value;
-	_ajax = new XMLHttpRequest();
-	_ajax.onreadystatechange = got_answer;
-	_ajax.open("GET", request, true);
-	_ajax.send();
-    }
-</script>
-
-<style type="text/css">
-	form label { display:block; float:left; width:10ex; }
-</style>
-
-</head><body>
-
-<? if (@$_REQUEST['action'] == 'add') { ?>
-	[ <a href="<?=$_SERVER['PHP_SELF']?>">Home</a> ]
-<? } else { ?>
-	[ <a href="<?=$_SERVER['PHP_SELF']?>?action=add">Add Entries</a> ]
-<? } ?>
-
-<div id=debug>
-    DEBUG
-</div>
-<h1>Adressbuch</h1>
+echo $twig->render("search.html", array());
 
-<? if (@$_REQUEST['action'] == 'add') { ?>
-	<p>
-	<form>
-	<label for=name>Name</label>
-	<input  id=name type=text name=name /><br>
-	<label for=tel>Telefon</label>
-	<input  id=tel type=text name=tel /><br>
-	<label for=mail>Mail</label>
-	<input  id=mail type=text name=mail /><br>
-	<input type=hidden name=action value=add />
-	<input type=submit />
-	</form>
-
-<? } else { ?>
-
-	<form autocomplete=off>
-	<input type=text name=pattern 
-	    onKeyUp="search_entries(this.value)" 
-	    onChange="submit()") />
-	<input type=hidden name=action value=search autocomplete=off />
-	<noscript><input type=submit /></noscript>
-	</form>
-
-	<div id=result>
-	<? if (isset($entries) and $entries) { ?>
-		<table>
-		<tr><th>Name<th>Telefon<th>Mail</tr>
-		<? foreach ($entries as $entry) { ?>
-			<tr>
-				<td><?=$entry['name']?>
-				<td><?=$entry['tel']?>
-				<td><?=$entry['mail']?>
-			</tr>
-		<? } ?>
-		</table>
-	<? } else { ?>
-		Sorry.
-	<? } ?>
-	</div>
-
-<? } ?>
-
-</body>
+exit;
+?>