From 92e19e95f3c07745e7ba7c6e358921b7789f8abe Mon Sep 17 00:00:00 2001 From: Marcel Korpel Date: Fri, 10 Jul 2015 18:47:31 +0200 Subject: Add comment edit icon and form Show an icon next to the comment deletion icon, which leads to a comment edit form. Signed-off-by: Marcel Korpel Signed-off-by: Lukas Fleischer --- web/html/commentedit.php | 21 +++++++++++++++ web/html/css/aurweb.css | 13 ++++++--- web/html/images/pencil.min.svg | 3 +++ web/html/images/pencil.svg | 55 +++++++++++++++++++++++++++++++++++++++ web/html/index.php | 4 +++ web/html/pkgbase.php | 4 +-- web/lib/aur.inc.php | 19 ++++++++++++++ web/lib/credentials.inc.php | 2 ++ web/lib/pkgfuncs.inc.php | 14 ++++++++++ web/template/pkg_comment_form.php | 10 ++++--- web/template/pkg_comments.php | 3 +++ 11 files changed, 139 insertions(+), 9 deletions(-) create mode 100644 web/html/commentedit.php create mode 100644 web/html/images/pencil.min.svg create mode 100644 web/html/images/pencil.svg diff --git a/web/html/commentedit.php b/web/html/commentedit.php new file mode 100644 index 0000000..83d86dd --- /dev/null +++ b/web/html/commentedit.php @@ -0,0 +1,21 @@ + + + diff --git a/web/html/images/pencil.svg b/web/html/images/pencil.svg new file mode 100644 index 0000000..91f0899 --- /dev/null +++ b/web/html/images/pencil.svg @@ -0,0 +1,55 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/web/html/index.php b/web/html/index.php index 2d5f2a9..175a533 100644 --- a/web/html/index.php +++ b/web/html/index.php @@ -89,6 +89,9 @@ if (!empty($tokens[1]) && '/' . $tokens[1] == get_pkg_route()) { case "comaintainers": include('comaintainers.php'); return; + case "edit-comment": + include('commentedit.php'); + return; default: header("HTTP/1.0 404 Not Found"); include "./404.php"; @@ -174,6 +177,7 @@ if (!empty($tokens[1]) && '/' . $tokens[1] == get_pkg_route()) { readfile("./$path"); break; case "/images/x.min.svg": + case "/images/pencil.min.svg": header("Content-Type: image/svg+xml"); readfile("./$path"); break; diff --git a/web/html/pkgbase.php b/web/html/pkgbase.php index 5179d0c..f908029 100644 --- a/web/html/pkgbase.php +++ b/web/html/pkgbase.php @@ -104,9 +104,7 @@ if (check_token()) { list($ret, $output) = pkgreq_close($_POST['reqid'], $_POST['reason'], $_POST['comments']); } elseif (current_action("do_EditComaintainers")) { list($ret, $output) = pkgbase_set_comaintainers($base_id, explode("\n", $_POST['users'])); - } - - if (isset($_REQUEST['comment'])) { + } elseif (current_action("do_AddComment")) { $uid = uid_from_sid($_COOKIE["AURSID"]); pkgbase_add_comment($base_id, $uid, $_REQUEST['comment']); $ret = true; diff --git a/web/lib/aur.inc.php b/web/lib/aur.inc.php index b410db5..9997535 100644 --- a/web/lib/aur.inc.php +++ b/web/lib/aur.inc.php @@ -576,6 +576,25 @@ function salted_hash($passwd, $salt) { return md5($salt . $passwd); } +/** + * Get a package comment + * + * @param int $comment_id The ID of the comment + * + * @return array The user ID and comment OR null, null in case of an error + */ +function comment_by_id($comment_id) { + $dbh = DB::connect(); + $q = "SELECT UsersID, Comments FROM PackageComments "; + $q.= "WHERE ID = " . intval($comment_id); + $result = $dbh->query($q); + if (!$result) { + return array(null, null); + } + + return $result->fetch(PDO::FETCH_NUM); +} + /** * Process submitted comments so any links can be followed * diff --git a/web/lib/credentials.inc.php b/web/lib/credentials.inc.php index cf1fcca..648d78c 100644 --- a/web/lib/credentials.inc.php +++ b/web/lib/credentials.inc.php @@ -7,6 +7,7 @@ define("CRED_ACCOUNT_LAST_LOGIN", 4); define("CRED_ACCOUNT_SEARCH", 5); define("CRED_COMMENT_DELETE", 6); define("CRED_COMMENT_VIEW_DELETED", 22); +define("CRED_COMMENT_EDIT", 25); define("CRED_PKGBASE_ADOPT", 7); define("CRED_PKGBASE_SET_KEYWORDS", 8); define("CRED_PKGBASE_DELETE", 9); @@ -58,6 +59,7 @@ function has_credential($credential, $approved_users=array()) { case CRED_ACCOUNT_SEARCH: case CRED_COMMENT_DELETE: case CRED_COMMENT_VIEW_DELETED: + case CRED_COMMENT_EDIT: case CRED_PKGBASE_ADOPT: case CRED_PKGBASE_SET_KEYWORDS: case CRED_PKGBASE_DELETE: diff --git a/web/lib/pkgfuncs.inc.php b/web/lib/pkgfuncs.inc.php index 110290b..7cb2ffc 100644 --- a/web/lib/pkgfuncs.inc.php +++ b/web/lib/pkgfuncs.inc.php @@ -42,6 +42,20 @@ function can_delete_comment_array($comment) { return has_credential(CRED_COMMENT_DELETE, array($comment['UsersID'])); } +/** + * Determine if the user can edit a specific package comment using an array + * + * Only the comment submitter, Trusted Users, and Developers can edit + * comments. This function is used for the frontend side of comment editing. + * + * @param array $comment All database information relating a specific comment + * + * @return bool True if the user can edit the comment, otherwise false + */ +function can_edit_comment_array($comment) { + return has_credential(CRED_COMMENT_EDIT, array($comment['UsersID'])); +} + /** * Check to see if the package name already exists in the database * diff --git a/web/template/pkg_comment_form.php b/web/template/pkg_comment_form.php index 8a74dc1..16a92b1 100644 --- a/web/template/pkg_comment_form.php +++ b/web/template/pkg_comment_form.php @@ -1,5 +1,5 @@
-

+

+ " /> + + +

- +

- " /> + " />

diff --git a/web/template/pkg_comments.php b/web/template/pkg_comments.php index 03a6581..6cc9555 100644 --- a/web/template/pkg_comments.php +++ b/web/template/pkg_comments.php @@ -39,6 +39,9 @@ $count = pkgbase_comments_count($base_id, $include_deleted); + + <?= __('Edit comment') ?> +

-- cgit v1.2.3-70-g09d2