New company logbook
authorJoey Schulze <joey@infodrom.org>
Mon, 8 Sep 2008 10:45:50 +0000 (10:45 +0000)
committerJoey Schulze <joey@infodrom.org>
Mon, 8 Sep 2008 10:45:50 +0000 (10:45 +0000)
src/InfoCon/logbook/all.wml [new file with mode: 0644]
src/InfoCon/logbook/edit.wml [new file with mode: 0644]
src/InfoCon/logbook/find.wml [new file with mode: 0644]
src/InfoCon/logbook/index.wml [new file with mode: 0644]
src/InfoCon/logbook/public.wml [new file with mode: 0644]
src/InfoCon/logbook/search.wml [new file with mode: 0644]
src/InfoCon/logbook/show.wml [new file with mode: 0644]
src/InfoCon/logbook/submenu.inc [new file with mode: 0644]
src/InfoCon/logbook/update.wml [new file with mode: 0644]

diff --git a/src/InfoCon/logbook/all.wml b/src/InfoCon/logbook/all.wml
new file mode 100644 (file)
index 0000000..28d0c8e
--- /dev/null
@@ -0,0 +1,38 @@
+#include <infocon.style>
+
+<page func="Information & Consulting" title="Logbook">
+
+<table width=100% class=font border=0 cellspacing=3 bgcolor="#<cold>">\
+<tr bgcolor=#<colh>>\
+<th width=15%><font face="Helvetica,Arial">Datum</font></th>\
+<th width=85%><font face="Helvetica,Arial">Titel</font></th></tr>
+
+<?
+  $dbh = pg_pconnect ("<dbhost>", "<dbport>", "<dbname>")
+              or die("Unable to connect to SQL server");
+
+  pg_exec ($dbh, "SET DateStyle = 'ISO'") or die("Datenbank-Abfrage!");
+
+  $query = "SELECT id,teaser,created FROM logbook ORDER BY created DESC";
+  $sth = pg_exec ($dbh, $query) or die("Datenbank-Abfrage!");
+
+  for ($nr=0; $nr < pg_NumRows ($sth); $nr++) {
+    $row = pg_fetch_array ($sth, $nr);
+    $date = explode (" ", $row['created']);
+    $time = explode (":", $date[1]);
+    $date = explode ("-", $date[0]);
+    $date = sprintf ("%d.%d.%d %02d:%02d", $date[2], $date[1], $date[0], $time[0], $time[1]);
+
+    printf ("<tr><td align=\"right\">%s</td><td><a href=\"show.php?id=%s\">%s</a></td></tr>",
+          $date, $row['id'], $row['teaser']);
+  }
+?>
+
+</table>
+
+</page>
+
+# Local variables:
+# mode: text
+# mode: auto-fill
+# end:
diff --git a/src/InfoCon/logbook/edit.wml b/src/InfoCon/logbook/edit.wml
new file mode 100644 (file)
index 0000000..d06a79d
--- /dev/null
@@ -0,0 +1,57 @@
+#include <infocon.style>
+
+<page func="Information & Consulting" title="Logbook">
+
+<?
+    $dbh = pg_pconnect ("<dbhost>", "<dbport>", "<dbname>")
+                or die("Unable to connect to SQL server");
+
+    pg_exec ($dbh, "SET DateStyle = 'ISO'") or die("Datenbank-Abfrage!");
+
+  if ($_GET['id'] > 0) {
+    $query = sprintf ("SELECT oid,* FROM logbook WHERE id = '%s'", $_GET['id']);
+    $sth = pg_exec ($dbh, $query) or die("Datenbank-Abfrage! ".$query);
+
+    if (pg_NumRows ($sth) > 0) {
+      $row = pg_fetch_array ($sth, 0);
+
+      $date = explode (" ", $row['created']);
+      $time = explode (":", $date[1]);
+      $date = explode ("-", $date[0]);
+      $date = sprintf ("%d.%d.%d %02d:%02d", $date[2], $date[1], $date[0], $time[0], $time[1]);
+    }
+  } else {
+    $row['category'] = 'misc';
+  }
+?>
+
+<form method=post action="update.php">
+<input type=hidden name=oid value="<? echo $row['oid']; ?>">
+<b>Category:</b> <select name=category><?
+  $sth = pg_exec ($dbh, "SELECT DISTINCT category FROM logbook ORDER BY category") or die("Datenbank-Abfrage!");
+  for ($nr=0; $nr < pg_NumRows ($sth); $nr++) {
+    $srow = pg_fetch_array ($sth, $nr);
+    printf ("<option value=\"%s\"%s>%s\n", $srow['category'],
+        $row['category'] == $srow['category']?" selected":¨, $srow['category']);
+  }
+?></select><br>
+<b>Teaser:</b> <input name=teaser size=60 maxlength=120 value="<? echo $row['teaser']; ?>"><br>
+<b>Text:</b> <br><textarea name=body rows=16 cols=79><? echo str_replace ("&", "&amp;", $row['body']); ?></textarea><p>
+<b>Public:</b> <input name=public type=checkbox value="1" <? if ($row['public']==1) { echo "checked";} ?>><br>
+
+<? if ($_GET['id'] > 0) { ?>
+<b>Created:</b> <? echo $date; ?><br>
+<? } ?>
+
+<p><center><input type=submit value="<? echo $_GET['id']>0?"Update":"Insert"; ?>">\
+&nbsp;&nbsp;&nbsp;&nbsp;
+<input type=reset value="Reset"></center><p>
+</form>
+
+</page>
+
+# Local variables:
+# mode: text
+# mode: auto-fill
+# mode: iso-accents
+# end:
diff --git a/src/InfoCon/logbook/find.wml b/src/InfoCon/logbook/find.wml
new file mode 100644 (file)
index 0000000..29d9c5c
--- /dev/null
@@ -0,0 +1,127 @@
+#include <infocon.style>
+
+<page func="Information & Consulting" title="Logbook">
+
+<p>Public Logbook</p>
+
+<?
+  $parms = array ("keyword","category","public","teaser","text");
+  $urlbase = "";
+
+  foreach ($parms as $arg) {
+    if (isset($_REQUEST[$arg])) {
+      if (strlen($urlbase) == 0)
+        $urlbase = "find.php?";
+      else
+       $urlbase .= "&";
+      $urlbase .= $arg . '=' . urlencode($_REQUEST[$arg]);
+    }
+  }
+
+  if (strlen($urlbase) == 0) {
+    echo "<p><b>No search restriction provided.</b></p>";
+    exit;
+  }
+
+  if (isset($_REQUEST["offset"]))
+    $linkbase = sprintf ("%s&offset=%d", $urlbase, $_REQUEST["offset"]);
+  else
+    $linkbase = $urlbase;
+
+  $link_date = sprintf ('<a href="%s&sort=date">Date</a>', $linkbase);
+  $link_category = sprintf ('<a href="%s&sort=category">Category</a>', $linkbase);
+  $link_title = sprintf ('<a href="%s&sort=title">Title</a>', $linkbase);
+?>
+
+<table width=100% class=font border=0 cellspacing=3 bgcolor="#<cold>">\
+<tr bgcolor=#<colh>>\
+<th width=15%><? echo $link_date; ?></th>\
+<th width=15%><? echo $link_category; ?></th>
+<th width=70%><? echo $link_title; ?></th>
+</tr>
+
+<?
+  $limit = 50;
+  $dbh = pg_pconnect ("<dbhost>", "<dbport>", "<dbname>")
+              or die("Unable to connect to SQL server");
+
+  pg_exec ($dbh, "SET DateStyle = 'ISO'") or die("Datenbank-Abfrage!");
+
+  $query = "SELECT id,category,teaser,created,public FROM logbook WHERE ";
+  $where = array();
+  if (strlen($_REQUEST[keyword])) {
+    if (isset($_REQUEST['text'])) {
+      $where[] = sprintf ("( teaser ~* '%s' OR body ~* '%s')",
+                        addslashes ($_REQUEST[keyword]),
+                        addslashes ($_REQUEST[keyword]));
+    } else {
+      $where[] = sprintf ("teaser ~* '%s'",
+                        addslashes ($_REQUEST[keyword]));
+    }
+  }
+
+  if (strlen($_REQUEST[category])) {
+    $where[] = sprintf ("category = '%s'", addslashes ($_REQUEST[category]));
+  }
+
+  if (strlen($_REQUEST['public'])) {
+    $where[] = "public = 1";
+  }
+
+  $query .= implode (" AND ", $where);
+
+  if (isset($_REQUEST[sort]) && $_REQUEST[sort] == "title") {
+    $query .= "ORDER BY teaser,created";
+  } elseif (isset($_REQUEST[sort]) && $_REQUEST[sort] == "category") {
+    $query .= "ORDER BY category,created";
+  } else {
+    $query .= "ORDER BY created";
+  }
+  $query .= " LIMIT $limit";
+  if (isset ($_GET["offset"]))
+    $query .= sprintf (" OFFSET %d\n", $_GET["offset"]);
+
+  $sth = pg_exec ($dbh, $query) or die("Datenbank-Abfrage!");
+
+  $color = "<coln>";
+  for ($nr=0; $nr < pg_NumRows ($sth); $nr++) {
+    $row = pg_fetch_array ($sth, $nr);
+    $date = explode (" ", $row['created']);
+    $time = explode (":", $date[1]);
+    $date = explode ("-", $date[0]);
+    $date = sprintf ("%d.%d.%d %02d:%02d", $date[2], $date[1], $date[0], $time[0], $time[1]);
+
+    $color = $color == "<cold>"?"<coln>" : "<cold>";
+    if ($row['public'] == 0) {
+      printf ("<tr bgcolor=\"#%s\"><td align=\"right\">%s</td><td align=\"center\">%s</td>"
+            ."<td><a href=\"show.php?id=%s\">%s</a></td></tr>",
+            $color,
+            $date, $row['category'], $row['id'], $row['teaser']);
+    } else {
+      $pubbase = 'http://infocon.infodrom.org//logbook/';
+      printf ("<tr bgcolor=\"#%s\"><td align=\"right\">%s</td><td align=\"center\">%s</td><td><a href=\"show.php?id=%s\">%s</a>"
+            ." (<a href=\"%s?%s\">pub</a>)</td></tr>",
+            $color,
+            $date, $row['category'], $row['id'], $row['teaser'], $pubbase, $row['id']);
+    }
+  }
+
+  echo ("</table>\n");
+
+  if ($nr >= $limit) {
+    if (isset($_REQUEST["sort"]))
+      $url = sprintf ("%s&sort=%s&offset=%d", $urlbase, urlencode($_REQUEST["sort"]), $_GET["offset"]+$limit);
+    else
+      $url = sprintf ("%s&offset=%d", $urlbase, $_GET["offset"]+$limit);
+
+    printf ("<p><a href=\"%s\">next</a></p>\n", $url);
+  }
+
+?>
+
+</page>
+
+# Local variables:
+# mode: text
+# mode: auto-fill
+# end:
diff --git a/src/InfoCon/logbook/index.wml b/src/InfoCon/logbook/index.wml
new file mode 100644 (file)
index 0000000..26cad92
--- /dev/null
@@ -0,0 +1,50 @@
+#include <infocon.style>
+
+<page func="Information & Consulting" title="Logbook">
+
+<table width=100% class="font height border" border=0 cellspacing=0>\
+<tr bgcolor=#<colh>>\
+<th width=15%>Datum</th>\
+<th width=15%>Category</th>\
+<th width=70%>Titel</th></tr>
+
+<?
+  $limit = 50;
+  $dbh = pg_pconnect ("<dbhost>", "<dbport>", "<dbname>")
+              or die("Unable to connect to SQL server");
+
+  pg_exec ($dbh, "SET DateStyle = 'ISO'") or die("Datenbank-Abfrage!");
+
+  $query = sprintf("SELECT id,teaser,category,created FROM logbook ORDER BY created DESC LIMIT %d", $limit+1);
+  if (isset ($_GET["offset"]))
+    $query .= sprintf (" OFFSET %d", $_GET["offset"]);
+  $sth = pg_exec ($dbh, $query) or die("Datenbank-Abfrage!");
+
+  $color = "<coln>";
+  for ($nr=0; $nr < pg_NumRows ($sth) && $nr < $limit; $nr++) {
+    $row = pg_fetch_array ($sth, $nr);
+    $date = explode (" ", $row['created']);
+    $time = explode (":", $date[1]);
+    $date = explode ("-", $date[0]);
+    $date = sprintf ("%d.%d.%d %02d:%02d", $date[2], $date[1], $date[0], $time[0], $time[1]);
+
+    $color = $color == "<cold>"?"<coln>" : "<cold>";
+    printf ("<tr bgcolor=\"#%s\"><td align=\"right\">%s</td><td align=\"center\">%s</td>"
+          ."<td><a href=\"show.php?id=%s\">%s</a></td></tr>",
+          $color,
+          $date, $row['category'], $row['id'], $row['teaser']);
+  }
+
+  echo ("</table>\n");
+
+  if (pg_NumRows ($sth) > $nr) {
+    printf ("<p><a href=\"index.php?offset=%d\">next</a></p>\n", $_GET["offset"]+$limit);
+  }
+?>
+
+</page>
+
+# Local variables:
+# mode: text
+# mode: auto-fill
+# end:
diff --git a/src/InfoCon/logbook/public.wml b/src/InfoCon/logbook/public.wml
new file mode 100644 (file)
index 0000000..fbefc41
--- /dev/null
@@ -0,0 +1,45 @@
+#include <infocon.style>
+
+<page func="Information & Consulting" title="Logbook">
+
+<p>Public Logbook</p>
+
+<table width=100% class=font border=0 cellspacing=0>\
+<tr bgcolor=#<colh>>\
+<th width=20%>Datum</th>\
+<th width=150%>Category</th>\
+<th width=65%>Titel</th></tr>
+
+<?
+  $dbh = pg_pconnect ("<dbhost>", "<dbport>", "<dbname>")
+              or die("Unable to connect to SQL server");
+
+  pg_exec ($dbh, "SET DateStyle = 'ISO'") or die("Datenbank-Abfrage!");
+
+  $query = "SELECT id,teaser,category,created FROM logbook WHERE public=1 ORDER BY created DESC";
+  $sth = pg_exec ($dbh, $query) or die("Datenbank-Abfrage!");
+
+  $color = "<coln>";
+  for ($nr=0; $nr < pg_NumRows ($sth); $nr++) {
+    $row = pg_fetch_array ($sth, $nr);
+    $date = explode (" ", $row['created']);
+    $time = explode (":", $date[1]);
+    $date = explode ("-", $date[0]);
+    $date = sprintf ("%d.%d.%d %02d:%02d", $date[2], $date[1], $date[0], $time[0], $time[1]);
+
+    $color = $color == "<cold>"?"<coln>" : "<cold>";
+    printf ("<tr bgcolor=\"#%s\"><td align=\"right\">%s</td><td align=\"center\">%s</td><td><a href=\"show.php?id=%s\">%s</a>"
+          ." (<a href=\"http://infocon.infodrom.org/logbook/?%s\">pub</a>)</td></tr>",
+          $color,
+          $date, $row['category'], $row['id'], $row['teaser'], $row['id']);
+  }
+?>
+
+</table>
+
+</page>
+
+# Local variables:
+# mode: text
+# mode: auto-fill
+# end:
diff --git a/src/InfoCon/logbook/search.wml b/src/InfoCon/logbook/search.wml
new file mode 100644 (file)
index 0000000..cd150ac
--- /dev/null
@@ -0,0 +1,31 @@
+#include <infocon.style>
+
+<page func="Information & Consulting" title="Logbook">
+
+<form method=post action=find.php>
+<b>Keyword:</b> <input name=keyword size=30 maxlength=80><br>
+<b>Category:</b> <select name=category><option value="">any<?
+  $dbh = pg_pconnect ("<dbhost>", "<dbport>", "<dbname>")
+                or die("Unable to connect to SQL server");
+
+  $sth = pg_exec ($dbh, "SELECT DISTINCT category FROM logbook ORDER BY category") or die("Datenbank-Abfrage!");
+  for ($nr=0; $nr < pg_NumRows ($sth); $nr++) {
+    $srow = pg_fetch_array ($sth, $nr);
+    printf ("<option value=\"%s\"%s>%s\n", $srow['category'],
+        $row['category'] == $srow['category']?" selected":¨, $srow['category']);
+  }
+?></select><br>
+<b>Text:</b> <input name=text type=checkbox value=1><br>
+<b>Public:</b> <input name=public type=checkbox value=1>
+
+<p><center><input type=submit value="Search">\
+&nbsp;&nbsp;&nbsp;&nbsp;
+<input type=reset value="Reset"></center><p>
+</form>
+
+</page>
+
+# Local variables:
+# mode: text
+# mode: auto-fill
+# end:
diff --git a/src/InfoCon/logbook/show.wml b/src/InfoCon/logbook/show.wml
new file mode 100644 (file)
index 0000000..930daed
--- /dev/null
@@ -0,0 +1,44 @@
+#include <infocon.style>
+
+<page func="Information & Consulting" title="Logbook">
+
+<?
+  if ($_GET[id] > 0) {
+    $dbh = pg_pconnect ("<dbhost>", "<dbport>", "<dbname>")
+                or die("Unable to connect to SQL server");
+
+    pg_exec ($dbh, "SET DateStyle = 'ISO'") or die("Datenbank-Abfrage!");
+
+    $query = "SELECT oid,* FROM logbook WHERE id = '$_GET[id]'";
+    $sth = pg_exec ($dbh, $query) or die("Datenbank-Abfrage!");
+
+    if (pg_NumRows ($sth) > 0) {
+      $row = pg_fetch_array ($sth, 0);
+
+      $date = explode (" ", $row['created']);
+      $time = explode (":", $date[1]);
+      $date = explode ("-", $date[0]);
+      $date = sprintf ("%d.%d.%d %02d:%02d", $date[2], $date[1], $date[0], $time[0], $time[1]);
+    }
+  }
+
+printf ("<h3>%s</h3>", $row['teaser']);
+printf ("<p>Date: %s", $date);
+printf ("<br>Category: %s", $row['category']);
+if ($row['public'] > 0) {
+  printf (' &mdash; <a href="http://infocon.infodrom.org//logbook/?%s">public link</a>',
+    $row['id']);
+}
+echo "</p>";
+
+printf ("%s", str_replace ("\\\n", "",
+               str_replace ("\r", "",
+                 $row['body'])));
+
+?>
+
+</page>
+
+# Local variables:
+# mode: text
+# end:
diff --git a/src/InfoCon/logbook/submenu.inc b/src/InfoCon/logbook/submenu.inc
new file mode 100644 (file)
index 0000000..89cfeda
--- /dev/null
@@ -0,0 +1,19 @@
+<Strong>Menu</strong><br>
+
+&nbsp;<menu-item base=index text=Index href=index.php><br>
+
+<when <string-eq "<get-var WML_SRC_BASENAME>" "show" />>
+<?
+   if ($_GET['id'] > 0)
+     printf('&nbsp;<a href="edit.php?id=%d">Edit</a><br>', $_GET['id']);
+?>
+</when>
+
+&nbsp;<menu-item base=edit text="New Entry" href=edit.php><br>
+&nbsp;<menu-item base=public text=Public href=public.php><br>
+&nbsp;<menu-item base=search text=Search href=search.php><br>
+&nbsp;<menu-item base=all text="All" href=all.php><br>
+
+<menu-rule>
+
+#include "../functions.inc" prefix="../"
diff --git a/src/InfoCon/logbook/update.wml b/src/InfoCon/logbook/update.wml
new file mode 100644 (file)
index 0000000..c1253ed
--- /dev/null
@@ -0,0 +1,76 @@
+#include <infocon.style>
+#include <phptools.inc>
+
+<page func="Information & Consulting" title="Logbook">
+
+<sql_prepare>
+<?
+  $dbh = pg_pconnect ("<dbhost>", "<dbport>", "<dbname>")
+        or die("Unable to connect to SQL server");
+
+<:
+  for $i (('teaser','body')) {
+    printf "  \$o_%s = \$_POST[%s];\n", $i, $i;
+    printf "  \$%s = sql_prepare (\$_POST[%s]);\n", $i, $i;
+  }
+:>
+  if ($_POST["public"] != 1) {
+    $_POST["public"] = 0;
+  }
+
+  if ($_POST[oid] > 0) {
+    $query = sprintf ("UPDATE logbook SET category='%s',teaser='%s',public=%d,body='%s' "
+                    ."WHERE oid = %d",
+                    $_POST[category],
+                    $teaser,
+                    $_POST["public"],
+                    $body,
+                    $_POST[oid]);
+  } else {
+    $date = date ("Y-m-d H:i");
+    $id = date ("YmdHi");
+
+    $query = sprintf ("INSERT INTO logbook (id,category,teaser,body,public,created) VALUES "
+                    ."('%s','%s','%s','%s',%d,'%s')",
+                    $id,
+                    $_POST["category"],
+                    $teaser,
+                    $body,
+                    $_POST["public"],
+                    $date);
+  }
+  // printf ("<pre>\n%s\n</pre>\n", $query);
+  $sth = pg_exec ($dbh, $query) or die("Datenbank-Abfrage!");
+?>
+
+<h3><? echo $o_teaser; ?></h3>
+
+<?
+  if (! isset($_POST[oid]) || $_POST[oid] == 0) {
+    $oid = pg_getlastoid ($sth);
+  } else {
+    $oid = $_POST[oid];
+  }
+
+  $query = sprintf ("SELECT id,public FROM logbook WHERE oid = %d", $oid);
+  $sth = pg_exec ($dbh, $query) or die("Datenbank-Abfrage!");
+  if (pg_NumRows ($sth) > 0) {
+    $row = pg_fetch_array ($sth, 0);
+
+    printf ('<p><a href="edit.php?oid=%d">edit</a>', $oid);
+    if ($row['public'] > 0) {
+      printf (' &mdash; <a href="http://infocon.infodrom.org/logbook/?%s">public link</a>',
+        $row['id']);
+    }
+    echo "</p>";
+  }
+?>
+
+<? echo str_replace ("\\\n", "", str_replace ("\r", "", $o_body)); ?>
+
+</page>
+
+# Local variables:
+# mode: text
+# mode: auto-fill
+# end: