pkg_comments.php: Make comment timestamps link to the comment

As of today, there is no easy way to obtain a link to a specific
comment on a package page.

Many implementations of forums and comment systems today seem to
follow a convention where a comment's timestamp is an unobtrusive link
to the comment itself. Some examples are:

- phpBB (e.g. bbs.archlinux.org)
- GitHub
- Disqus
- Discourse

This patch adopts this convention as well, by making the timestamp a
link to the comment.
This commit is contained in:
Vladimir Panteleev 2018-10-17 01:31:38 +00:00 committed by Eli Schwartz
parent 8a2f13f8c2
commit f046dd5828
No known key found for this signature in database
GPG key ID: CEB167EFB5722BD6

View file

@ -53,17 +53,19 @@ if ($comment_section == "package") {
$pkgbase_name = $row["PackageBaseName"]; $pkgbase_name = $row["PackageBaseName"];
} }
$anchor = (isset($pinned) ? "pinned-" : "comment-") . $row['ID'];
$date_fmtd = date('Y-m-d H:i', $row['CommentTS']); $date_fmtd = date('Y-m-d H:i', $row['CommentTS']);
$date_link = '<a href="#' . $anchor . '" class="date">' . $date_fmtd . '</a>';
if ($comment_section == "package") { if ($comment_section == "package") {
if ($row['UserName']) { if ($row['UserName']) {
$user_fmtd = html_format_username($row['UserName']); $user_fmtd = html_format_username($row['UserName']);
$heading = __('%s commented on %s', $user_fmtd, $date_fmtd); $heading = __('%s commented on %s', $user_fmtd, $date_link);
} else { } else {
$heading = __('Anonymous comment on %s', $date_fmtd); $heading = __('Anonymous comment on %s', $date_link);
} }
} elseif ($comment_section == "account") { } elseif ($comment_section == "account") {
$pkg_uri = '<a href=' . htmlspecialchars(get_pkg_uri($row['PackageBaseName']), ENT_QUOTES) . '>' . htmlspecialchars($row['PackageBaseName']) . '</a></td>'; $pkg_uri = '<a href=' . htmlspecialchars(get_pkg_uri($row['PackageBaseName']), ENT_QUOTES) . '>' . htmlspecialchars($row['PackageBaseName']) . '</a></td>';
$heading = __('Commented on package %s on %s', $pkg_uri, $date_fmtd); $heading = __('Commented on package %s on %s', $pkg_uri, $date_link);
} }
$is_deleted = $row['DelTS']; $is_deleted = $row['DelTS'];
@ -97,7 +99,7 @@ if ($comment_section == "package") {
$comment_classes .= " comment-deleted"; $comment_classes .= " comment-deleted";
} }
?> ?>
<h4 id="<?= isset($pinned) ? "pinned-" : "comment-" ?><?= $row['ID'] ?>" class="<?= $comment_classes ?>"> <h4 id="<?= $anchor ?>" class="<?= $comment_classes ?>">
<?= $heading ?> <?= $heading ?>
<?php if ($is_deleted && has_credential(CRED_COMMENT_UNDELETE)): ?> <?php if ($is_deleted && has_credential(CRED_COMMENT_UNDELETE)): ?>
<form class="undelete-comment-form" method="post" action="<?= htmlspecialchars(get_pkgbase_uri($pkgbase_name), ENT_QUOTES); ?>"> <form class="undelete-comment-form" method="post" action="<?= htmlspecialchars(get_pkgbase_uri($pkgbase_name), ENT_QUOTES); ?>">
@ -152,7 +154,7 @@ if ($comment_section == "package") {
</form> </form>
<?php endif; ?> <?php endif; ?>
</h4> </h4>
<div id="<?= isset($pinned) ? "pinned-" : "comment-" ?><?= $row['ID'] ?>-content" class="article-content<?php if ($is_deleted): ?> comment-deleted<?php endif; ?>"> <div id="<?= $anchor ?>-content" class="article-content<?php if ($is_deleted): ?> comment-deleted<?php endif; ?>">
<div> <div>
<?php if (!empty($row['RenderedComment'])): ?> <?php if (!empty($row['RenderedComment'])): ?>
<?= $row['RenderedComment'] ?> <?= $row['RenderedComment'] ?>