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.
---

Version 2: Removed the CSS rule making the link color same as the
text, thus making the link more discoverable.

 web/template/pkg_comments.php | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/web/template/pkg_comments.php b/web/template/pkg_comments.php
index 3001a34..3bcf1a3 100644
--- a/web/template/pkg_comments.php
+++ b/web/template/pkg_comments.php
@@ -53,17 +53,19 @@ if ($comment_section == "package") {
                        $pkgbase_name = $row["PackageBaseName"];
                }
 
+               $anchor = (isset($pinned) ? "pinned-" : "comment-") . 
$row['ID'];
                $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 ($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 {
-                               $heading = __('Anonymous comment on %s', 
$date_fmtd);
+                               $heading = __('Anonymous comment on %s', 
$date_link);
                        }
                } elseif ($comment_section == "account") {
                        $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'];
@@ -97,7 +99,7 @@ if ($comment_section == "package") {
                        $comment_classes .= " comment-deleted";
                }
                ?>
-               <h4 id="<?= isset($pinned) ? "pinned-" : "comment-" ?><?= 
$row['ID'] ?>" class="<?= $comment_classes ?>">
+               <h4 id="<?= $anchor ?>" class="<?= $comment_classes ?>">
                        <?= $heading ?>
                        <?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); ?>">
@@ -152,7 +154,7 @@ if ($comment_section == "package") {
                                </form>
                        <?php endif; ?>
                </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>
                                <?php if (!empty($row['RenderedComment'])): ?>
                                <?= $row['RenderedComment'] ?>
-- 
2.19.0

Reply via email to