X-Git-Url: http://git.shiar.net/minimedit.git/blobdiff_plain/1b37c53095bb46844910ce3f0b699ea9a0b152d8..8216853ef9dabf609c67f2cfea3b71a5c9811c6e:/widget/reply.php diff --git a/widget/reply.php b/widget/reply.php index 4da0ffa..4f6a2c8 100644 --- a/widget/reply.php +++ b/widget/reply.php @@ -1,75 +1,12 @@ 'Toegewezen aan', - 'subject' => 'Onderwerp', -]; +require_once 'upload.inc.php'; if ($_POST) { - require_once 'upload.inc.php'; try { - $html = messagehtml($_POST['reply']); - if ($_FILES and !empty($_FILES['image'])) { - $target = 'data/upload'; - if (!file_exists($target)) { - throw new Exception("er is geen uploadmap aanwezig op $target"); - } - $target .= '/' . $User->login; - if ($result = userupload($_FILES['image'], $target)) { - if (preg_match('(^image/)', $_FILES['image']['type'])) { - $html .= sprintf('

', $result); - } - else { - $html .= sprintf('

Bijgevoegd bestand: %s

', - $result, basename($result) - ); - } - } - } - $query = $Db->set('comments', [ - 'page' => $Page->link, - 'message' => $html, - 'author' => $User->login, - ]); - if (!$query->rowCount()) { - throw new Exception('Fout bij opslaan'); - } - $newcomment = $Db->dbh->lastInsertId('comments_id_seq'); - - if (isset($Issue)) { - $row = []; - foreach (array_keys($journalcol) as $col) { - if (!isset($_POST[$col])) continue; - $row[$col] = $_POST[$col] ?: NULL; - } - if (isset($_POST['status'])) { - $reset = !empty($_POST['status']); - if (isset($Issue->closed) !== $reset) { - $row['closed'] = $reset ? ['now()'] : NULL; - } - } - $derived = ['updated' => ['now()']]; - $filter = ['id = ? RETURNING *', $Issue->id]; - $subquery = $Db->set('issues', $row + $derived, $filter); - - if ($updated = $subquery->fetch()) { - foreach (array_keys($row) as $col) { - if ($updated->$col === $Issue->$col) continue; # unaltered - $Db->set('journal', [ - 'comment_id' => $newcomment, - 'property' => 'attr', - 'col' => $col, - 'old_value' => $Issue->$col, - 'value' => $updated->$col, - ]); - } - $Issue = $updated; - } - } - - $target = "/{$Page->link}/$newcomment#$newcomment"; + $newcomment = createcomment($_POST, $Issue); + $target = "/{$Page->link}?last=$newcomment#$newcomment"; abort($target, ($Page->api ? 200 : 303) . ' reply success'); $_POST['reply'] = NULL; } @@ -77,22 +14,36 @@ if ($_POST) { if ($Page->api) { abort(ucfirst($e->getMessage()), '500 reply error'); } - print "

Antwoord niet opgeslagen: {$e->getMessage()}.

\n\n"; + printf("

Antwoord niet opgeslagen: %s.

\n\n", + nl2br(htmlspecialchars($e->getMessage())) + ); } } -$cols = '*, (SELECT json_agg(journal.*) FROM journal WHERE comment_id = comments.id) AS journal'; +$cols = "*, (SELECT json_agg(journal.*) FROM journal WHERE comment_id = comments.id AND property = 'attr') AS journal"; $query = $Db->query("SELECT $cols FROM comments WHERE page = ? ORDER BY created", [$Page->link]); -print '\n"; } - print "\n"; + print "\n"; } if ($User->login) { - print '
  • '; + print '

    '; print '
    '; if (isset($Issue) and $User->admin("edit {$Page->link}")) { + print "\n"; + } + { + print '

    '; + printf( + '' + . "Geplaatste berichten zijn hier direct zichtbaar voor bewoners.\n" + . '' + . ''."\n", + 'announce', + '1', + ($_POST['announce'] ?? TRUE) ? ' checked' : '', + ' onclick="this.nextSibling.hidden = !this.checked"', + "De eerste regel wordt ook weergegeven op het scherm in de hal." + ); + print "

    \n"; } if (isset($Issue)) { printf( @@ -161,7 +139,7 @@ if ($User->login) { print ''."\n"; print "
    "; print ''; - print "
  • \n"; + print "\n"; } -print "\n\n"; +print "\n\n";