X-Git-Url: http://git.shiar.nl/minimedit.git/blobdiff_plain/05c560470887c86a30c82360d7be5caf0de1baa4..ecfc420d52ce7983a6361ccc7dec24fd46ec2d07:/issue/index.php diff --git a/issue/index.php b/issue/index.php index a4b1314..df1aa68 100644 --- a/issue/index.php +++ b/issue/index.php @@ -10,10 +10,32 @@ if ($id and ctype_digit($id)) { 'SELECT * FROM issues WHERE page = ? AND id = ?', [$Page->handler, $id] )->fetch(); if (!$Issue) throw new Exception('Issuenummer niet gevonden'); + $Page->title .= ': '.htmlspecialchars($Issue->subject); - $replies = $Page->widget('reply'); # handle updates + if ($title and ctype_digit($title)) { + $Page->title = "Antwoord op {$Page->title}"; + $Page->handler = $Page->link; + $Page->link .= "/$title"; + $row = $Db->query( + 'SELECT * FROM comments WHERE id = ?', [$title] + )->fetch(); + if (!$row) throw new Exception('Antwoordnummer niet gevonden'); - $Page->title .= ': '.htmlspecialchars($Issue->subject); + print "

{$Page->title}

\n"; + printf('
', + $Page->handler + ); + printf(''."\n", 'id', $row->id); + printf(''."\n", + 'reply', + htmlspecialchars($row->raw) + ); + print ''."\n"; + print "
\n"; + return; + } + + $replies = $Page->widget('reply'); # handle updates $Page->body = $replies; # find image if ($Page->api) return; @@ -44,7 +66,10 @@ if ($Page->api) return; if ($_POST and isset($_POST['subject'])) { require_once 'upload.inc.php'; if (strlen($_POST['subject']) < 2) { - throw new Exception('Een minimaal onderwerp is verplicht om een issue aan te maken.'); + throw new Exception('Vul een onderwerp in om de issue te kunnen benoemen.'); + } + if (!preg_match('/\S/', $_POST['reply'])) { + throw new Exception('Een korte beschrijving is verplicht om een issue aan te maken.'); } $query = $Db->set('issues', [ 'page' => $Page->handler, @@ -59,14 +84,11 @@ if ($_POST and isset($_POST['subject'])) { if (!$row->id) { throw new Exception('Issue niet goed opgeslagen.'); } - $query = $Db->set('comments', [ - 'page' => "{$Page->handler}/{$row->id}", - 'raw' => $_POST['body'], - 'message' => messagehtml($_POST['body']), - 'author' => $User->login, - ]); - if (!$query->rowCount()) { - throw new Exception('Issueinhoud niet opgeslagen.'); + try { + createcomment($_POST, $row); + } + catch (Exception $e) { + throw new Exception("Issueinhoud niet opgeslagen: {$e->getMessage()}."); } $_POST = []; } @@ -78,7 +100,7 @@ $sql = "SELECT $cols FROM issues i WHERE page = ?"; if (isset($_GET['open'])) { $sql .= ' AND closed IS NULL'; } -$sql .= ' ORDER BY closed IS NOT NULL, updated DESC'; +$sql .= ' ORDER BY updated DESC'; $query = $Db->query($sql, [$Page->handler]); if ($id == 'feed') { @@ -86,6 +108,12 @@ if ($id == 'feed') { } ob_start(); +$stats = $Db->query( + "SELECT count(*) AS total, count(closed) AS closed FROM issues" +)->fetch(); +printf("

%d lopende zaken, %s opgelost

\n", + $stats->total - $stats->closed, $stats->closed +); print '