mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
added comments/category editing, and closed #2280
This commit is contained in:
parent
9d69979bb9
commit
7fccb8b634
8 changed files with 282 additions and 27 deletions
|
@ -183,11 +183,13 @@ CREATE TABLE PackageContents (
|
|||
-- Record comments for packages
|
||||
--
|
||||
CREATE TABLE PackageComments (
|
||||
ID BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
PackageID INTEGER UNSIGNED NOT NULL,
|
||||
UsersID INTEGER UNSIGNED NOT NULL,
|
||||
Comments TEXT NOT NULl DEFAULT '',
|
||||
CommentTS BIGINT UNSIGNED NOT NULL DEFAULT 0,
|
||||
DelUsersID INTEGER UNSIGNED NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (ID),
|
||||
INDEX (UsersID),
|
||||
INDEX (PackageID),
|
||||
FOREIGN KEY (UsersID) REFERENCES Users(ID) ON DELETE CASCADE,
|
||||
|
|
BIN
web/html/images/x.png
Normal file
BIN
web/html/images/x.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 725 B |
|
@ -1,10 +1,11 @@
|
|||
<?
|
||||
include("aur.inc"); # access AUR common functions
|
||||
include("pkgfuncs.inc"); # use some form of this for i18n support
|
||||
include("pkgedit_po.inc"); # i18n translations for this script
|
||||
set_lang(); # this sets up the visitor's language
|
||||
check_sid(); # see if they're still logged in
|
||||
html_header(); # print out the HTML header
|
||||
|
||||
$svn_idstr = "\$Id$";
|
||||
|
||||
$DBUG = 0;
|
||||
if ($DBUG) {
|
||||
|
@ -13,36 +14,142 @@ if ($DBUG) {
|
|||
print "</pre>\n";
|
||||
}
|
||||
|
||||
# Make sure this visitor is logged in
|
||||
#
|
||||
if (isset($_COOKIE["AURSID"])) {
|
||||
$atype = account_from_sid($_COOKIE["AURSID"]);
|
||||
} else {
|
||||
$atype = "";
|
||||
}
|
||||
|
||||
if (!$atype) {
|
||||
print __("You must be logged in before you can edit package information.");
|
||||
print "<br />\n";
|
||||
} else {
|
||||
if (!$_REQUEST["ID"]) {
|
||||
print __("Missing package ID.");
|
||||
print "<br />\n";
|
||||
} else {
|
||||
|
||||
# Main script processing here... basic error checking done.
|
||||
#
|
||||
if ($_REQUEST["add_Comment"]) {
|
||||
if ($_REQUEST["comment"]) {
|
||||
} else {
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
html_footer($svn_idstr);
|
||||
exit();
|
||||
}
|
||||
|
||||
html_footer("\$Id$"); # Use the $Id$ keyword
|
||||
# Must know what package to operate on throughout this entire script
|
||||
#
|
||||
if (!$_REQUEST["ID"]) {
|
||||
print __("Missing package ID.");
|
||||
print "<br />\n";
|
||||
html_footer($svn_idstr);
|
||||
}
|
||||
|
||||
|
||||
# Delete a comment for this package
|
||||
#
|
||||
if ($_REQUEST["del_Comment"]) {
|
||||
if ($_REQUEST["comment_id"]) {
|
||||
if (canDeleteComment($_REQUEST["comment_id"], $atype, $_COOKIE["AURSID"])) {
|
||||
$dbh = db_connect();
|
||||
$uid = uid_from_sid($_COOKIE["AURSID"]);
|
||||
$q = "UPDATE PackageComments ";
|
||||
$q.= "SET DelUsersID = ".$uid." ";
|
||||
$q.= "WHERE ID = ".intval($_REQUEST["comment_id"]);
|
||||
db_query($q, $dbh);
|
||||
print __("Comment has been deleted.")."<br />\n";
|
||||
} else {
|
||||
print __("You are not allowed to delete this comment.")."<br />\n";
|
||||
}
|
||||
} else {
|
||||
print __("Missing comment ID.")."<br />\n";
|
||||
}
|
||||
pkgdetails_link($_REQUEST["ID"]);
|
||||
html_footer($svn_idstr);
|
||||
exit();
|
||||
}
|
||||
|
||||
# Add a comment to this package
|
||||
#
|
||||
if ($_REQUEST["add_Comment"]) {
|
||||
if ($_REQUEST["comment"]) {
|
||||
# Insert the comment
|
||||
#
|
||||
$dbh = db_connect();
|
||||
$q = "INSERT INTO PackageComments ";
|
||||
$q.= "(PackageID, UsersID, Comments, CommentTS) VALUES (";
|
||||
$q.= intval($_REQUEST["ID"]).", ".uid_from_sid($_COOKIE["AURSID"]) . ", ";
|
||||
$q.= "'".mysql_escape_string($_REQUEST["comment"])."', ";
|
||||
$q.= "UNIX_TIMESTAMP())";
|
||||
db_query($q, $dbh);
|
||||
print __("Comment has been added.")."<br /> <br />\n";
|
||||
pkgdetails_link($_REQUEST["ID"]);
|
||||
|
||||
} else {
|
||||
# Prompt visitor for comment
|
||||
#
|
||||
print "<form action='/pkgedit.php' method='post'>\n";
|
||||
print "<input type='hidden' name='add_Comment' value='1'>\n";
|
||||
print "<input type='hidden' name='ID' value=\"".$_REQUEST["ID"]."\">\n";
|
||||
print __("Enter your comment below.")."<br /> <br />\n";
|
||||
print "<textarea name='comment' rows='10' cols='50'></textarea>\n";
|
||||
print "<br /> <br />\n";
|
||||
print "<input type='submit' value=\"".__("Submit")."\">\n";
|
||||
print "<input type='reset' value=\"".__("Reset")."\">\n";
|
||||
print "</form>\n";
|
||||
}
|
||||
html_footer($svn_idstr);
|
||||
exit();
|
||||
}
|
||||
|
||||
# Change package category
|
||||
#
|
||||
if ($_REQUEST["change_Category"]) {
|
||||
$cat_array = pkgCategories();
|
||||
$dbh = db_connect();
|
||||
|
||||
if ($_REQUEST["category_id"]) {
|
||||
# Try and set the requested category_id
|
||||
#
|
||||
if (array_key_exists($_REQUEST["category_id"], $cat_array)) {
|
||||
$q = "UPDATE Packages SET CategoryID = ".intval($_REQUEST["category_id"]);
|
||||
$q.= " WHERE ID = ".intval($_REQUEST["ID"]);
|
||||
db_query($q, $dbh);
|
||||
print __("Package category updated.")."<br />\n";
|
||||
|
||||
} else {
|
||||
print __("Invalid category ID.")."<br />\n";
|
||||
}
|
||||
pkgdetails_link($_REQUEST["ID"]);
|
||||
|
||||
} else {
|
||||
# Prompt visitor for new category_id
|
||||
#
|
||||
$q = "SELECT CategoryID FROM Packages WHERE ID = ".intval($_REQUEST["ID"]);
|
||||
$result = db_query($q, $dbh);
|
||||
if ($result != NULL) {
|
||||
$catid = mysql_fetch_row($result);
|
||||
}
|
||||
print "<form action='/pkgedit.php' method='post'>\n";
|
||||
print "<input type='hidden' name='change_Category' value='1'>\n";
|
||||
print "<input type='hidden' name='ID' value=\"".$_REQUEST["ID"]."\">\n";
|
||||
print __("Select new category").": \n";
|
||||
print "<select name='category_id'>\n";
|
||||
while (list($id,$cat) = each($cat_array)) {
|
||||
print "<option value='".$id."'";
|
||||
if ($id == $catid[0]) {
|
||||
print " selected";
|
||||
}
|
||||
print "> ".$cat."</option>\n";
|
||||
}
|
||||
print "</select>\n";
|
||||
print "<br /> <br />\n";
|
||||
print "<input type='submit' value=\"".__("Submit")."\">\n";
|
||||
print "<input type='reset' value=\"".__("Reset")."\">\n";
|
||||
print "</form>\n";
|
||||
|
||||
}
|
||||
html_footer($svn_idstr);
|
||||
exit();
|
||||
}
|
||||
|
||||
print __("You've found a bug if you see this....")."<br />\n";
|
||||
|
||||
html_footer($svn_idstr); # Use the $Id$ keyword
|
||||
# NOTE: when checking in a new file, use
|
||||
# 'svn propset svn:keywords "Id" filename.php'
|
||||
# to tell svn to expand the "Id" keyword.
|
||||
|
||||
# vim: ts=2 sw=2 et ft=php
|
||||
# vim: ts=2 sw=2 noet ft=php
|
||||
?>
|
||||
|
|
|
@ -239,7 +239,10 @@ if ($_COOKIE["AURSID"]) {
|
|||
$seen_build_function = 1;
|
||||
}
|
||||
}
|
||||
if ($seen_build_function) {break;}
|
||||
# XXX: closes bug #2280? Might as well let the loop complete rather
|
||||
# than break after the build() function.
|
||||
#
|
||||
#if ($seen_build_function) {break;}
|
||||
}
|
||||
|
||||
# some error checking on PKGBUILD contents - just make sure each
|
||||
|
@ -534,7 +537,7 @@ if ($_COOKIE["AURSID"]) {
|
|||
print "<br />\n";
|
||||
}
|
||||
} else {
|
||||
print __("Package upload successful");
|
||||
print __("Package upload successful.");
|
||||
}
|
||||
|
||||
} else {
|
||||
|
|
79
web/lang/pkgedit_po.inc
Normal file
79
web/lang/pkgedit_po.inc
Normal file
|
@ -0,0 +1,79 @@
|
|||
<?
|
||||
# INSTRUCTIONS TO TRANSLATORS
|
||||
#
|
||||
# This file contains the i18n translations for a subset of the
|
||||
# Arch Linux User-community Repository (AUR). This is a PHP
|
||||
# script, and as such, you MUST pay great attention to the syntax.
|
||||
# If your text contains any double-quotes ("), you MUST escape
|
||||
# them with the backslash character (\).
|
||||
#
|
||||
|
||||
include_once("translator.inc");
|
||||
global $_t;
|
||||
|
||||
$_t["en"]["You must be logged in before you can edit package information."] = "You must be logged in before you can edit package information.";
|
||||
# $_t["es"]["Category"] = "--> Traducción española aquí. <--";
|
||||
# $_t["fr"]["Category"] = "--> Traduction française ici. <--";
|
||||
# $_t["de"]["Category"] = "--> Deutsche Übersetzung hier. <--";
|
||||
|
||||
$_t["en"]["Missing package ID."] = "Missing package ID.";
|
||||
# $_t["es"]["Category"] = "--> Traducción española aquí. <--";
|
||||
# $_t["fr"]["Category"] = "--> Traduction française ici. <--";
|
||||
# $_t["de"]["Category"] = "--> Deutsche Übersetzung hier. <--";
|
||||
|
||||
$_t["en"]["Comment has been deleted."] = "Comment has been deleted.";
|
||||
# $_t["es"]["Category"] = "--> Traducción española aquí. <--";
|
||||
# $_t["fr"]["Category"] = "--> Traduction française ici. <--";
|
||||
# $_t["de"]["Category"] = "--> Deutsche Übersetzung hier. <--";
|
||||
|
||||
$_t["en"]["You are not allowed to delete this comment."] = "You are not allowed to delete this comment.";
|
||||
# $_t["es"]["Category"] = "--> Traducción española aquí. <--";
|
||||
# $_t["fr"]["Category"] = "--> Traduction française ici. <--";
|
||||
# $_t["de"]["Category"] = "--> Deutsche Übersetzung hier. <--";
|
||||
|
||||
$_t["en"]["Missing comment ID."] = "Missing comment ID.";
|
||||
# $_t["es"]["Category"] = "--> Traducción española aquí. <--";
|
||||
# $_t["fr"]["Category"] = "--> Traduction française ici. <--";
|
||||
# $_t["de"]["Category"] = "--> Deutsche Übersetzung hier. <--";
|
||||
|
||||
$_t["en"]["Comment has been added."] = "Comment has been added.";
|
||||
# $_t["es"]["Category"] = "--> Traducción española aquí. <--";
|
||||
# $_t["fr"]["Category"] = "--> Traduction française ici. <--";
|
||||
# $_t["de"]["Category"] = "--> Deutsche Übersetzung hier. <--";
|
||||
|
||||
$_t["en"]["Enter your comment below."] = "Enter your comment below.";
|
||||
# $_t["es"]["Category"] = "--> Traducción española aquí. <--";
|
||||
# $_t["fr"]["Category"] = "--> Traduction française ici. <--";
|
||||
# $_t["de"]["Category"] = "--> Deutsche Übersetzung hier. <--";
|
||||
|
||||
$_t["en"]["Submit"] = "Submit";
|
||||
# $_t["es"]["Category"] = "--> Traducción española aquí. <--";
|
||||
# $_t["fr"]["Category"] = "--> Traduction française ici. <--";
|
||||
# $_t["de"]["Category"] = "--> Deutsche Übersetzung hier. <--";
|
||||
|
||||
$_t["en"]["Reset"] = "Reset";
|
||||
# $_t["es"]["Category"] = "--> Traducción española aquí. <--";
|
||||
# $_t["fr"]["Category"] = "--> Traduction française ici. <--";
|
||||
# $_t["de"]["Category"] = "--> Deutsche Übersetzung hier. <--";
|
||||
|
||||
$_t["en"]["Package category updated."] = "Package category updated.";
|
||||
# $_t["es"]["Category"] = "--> Traducción española aquí. <--";
|
||||
# $_t["fr"]["Category"] = "--> Traduction française ici. <--";
|
||||
# $_t["de"]["Category"] = "--> Deutsche Übersetzung hier. <--";
|
||||
|
||||
$_t["en"]["Invalid category ID."] = "Invalid category ID.";
|
||||
# $_t["es"]["Category"] = "--> Traducción española aquí. <--";
|
||||
# $_t["fr"]["Category"] = "--> Traduction française ici. <--";
|
||||
# $_t["de"]["Category"] = "--> Deutsche Übersetzung hier. <--";
|
||||
|
||||
$_t["en"]["Select new category"] = "Select new category";
|
||||
# $_t["es"]["Category"] = "--> Traducción española aquí. <--";
|
||||
# $_t["fr"]["Category"] = "--> Traduction française ici. <--";
|
||||
# $_t["de"]["Category"] = "--> Deutsche Übersetzung hier. <--";
|
||||
|
||||
$_t["en"]["You've found a bug if you see this...."] = "You've found a bug if you see this....";
|
||||
# $_t["es"]["Category"] = "--> Traducción española aquí. <--";
|
||||
# $_t["fr"]["Category"] = "--> Traduction française ici. <--";
|
||||
# $_t["de"]["Category"] = "--> Deutsche Übersetzung hier. <--";
|
||||
|
||||
?>
|
|
@ -11,6 +11,26 @@
|
|||
include_once("translator.inc");
|
||||
global $_t;
|
||||
|
||||
$_t["en"]["Go back to %hpackage details view%h."] = "Go back to %hpackage details view%h.";
|
||||
# $_t["es"]["Category"] = "--> Traducción española aquí. <--";
|
||||
# $_t["fr"]["Category"] = "--> Traduction française ici. <--";
|
||||
# $_t["de"]["Category"] = "--> Deutsche Übersetzung hier. <--";
|
||||
|
||||
$_t["en"]["None"] = "None";
|
||||
# $_t["es"]["Category"] = "--> Traducción española aquí. <--";
|
||||
# $_t["fr"]["Category"] = "--> Traduction française ici. <--";
|
||||
# $_t["de"]["Category"] = "--> Deutsche Übersetzung hier. <--";
|
||||
|
||||
$_t["en"]["change category"] = "change category";
|
||||
# $_t["es"]["Category"] = "--> Traducción española aquí. <--";
|
||||
# $_t["fr"]["Category"] = "--> Traduction française ici. <--";
|
||||
# $_t["de"]["Category"] = "--> Deutsche Übersetzung hier. <--";
|
||||
|
||||
$_t["en"]["Delete comment"] = "Delete comment";
|
||||
# $_t["es"]["Category"] = "--> Traducción española aquí. <--";
|
||||
# $_t["fr"]["Category"] = "--> Traduction française ici. <--";
|
||||
# $_t["de"]["Category"] = "--> Deutsche Übersetzung hier. <--";
|
||||
|
||||
$_t["en"]["Comment by: %h%s%h on %h%s%h"] = "Comment by: %h%s%h on %h%s%h";
|
||||
# $_t["es"]["Category"] = "--> Traducción española aquí. <--";
|
||||
# $_t["fr"]["Category"] = "--> Traduction française ici. <--";
|
||||
|
|
|
@ -196,7 +196,7 @@ $_t["en"]["You must supply a comment for this upload/change."] = "You must suppl
|
|||
# $_t["fr"]["You must supply a comment for this upload/change."] = "--> Traduction française ici. <--";
|
||||
# $_t["de"]["You must supply a comment for this upload/change."] = "--> Deutsche Übersetzung hier. <--";
|
||||
|
||||
$_t["en"]["Package upload successful"] = "Package upload successful";
|
||||
$_t["en"]["Package upload successful."] = "Package upload successful.";
|
||||
# $_t["es"]["Package upload successful"] = "--> Traducción española aquí. <--";
|
||||
# $_t["fr"]["Package upload successful"] = "--> Traduction française ici. <--";
|
||||
# $_t["de"]["Package upload successful"] = "--> Deutsche Übersetzung hier. <--";
|
||||
|
|
|
@ -6,6 +6,17 @@ include_once("pkgfuncs_po.inc");
|
|||
$pkgsearch_vars = array("O", "L", "C", "K", "SB", "PP", "do_MyPackages");
|
||||
|
||||
|
||||
# print out the 'return to package details' link
|
||||
#
|
||||
function pkgdetails_link($id=0) {
|
||||
$url_data = "<a href='/packages.php?do_Details=1&ID=".intval($id)."'>";
|
||||
print __("Go back to %hpackage details view%h.",
|
||||
array($url_data, "</a>"));
|
||||
print "\n<br />\n";
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
# print out the 'return to search results' link
|
||||
#
|
||||
function pkgsearch_results_link() {
|
||||
|
@ -28,6 +39,30 @@ function pkgsearch_results_link() {
|
|||
return;
|
||||
}
|
||||
|
||||
# Make sure this visitor can delete the requested package comment
|
||||
# They can delete if they were the comment submitter, or if they are a TU/Dev
|
||||
#
|
||||
function canDeleteComment($comment_id=0, $atype="", $SID="") {
|
||||
if ($atype == "Trusted User" || $atype == "Developer") {
|
||||
# A TU/Dev can delete any comment
|
||||
#
|
||||
return TRUE;
|
||||
}
|
||||
$uid = uid_from_sid($SID);
|
||||
$dbh = db_connect();
|
||||
$q = "SELECT COUNT(ID) AS CNT ";
|
||||
$q.= "FROM PackageComments ";
|
||||
$q.= "WHERE ID = " . intval($comment_id);
|
||||
$q.= " AND UsersID = " . $uid;
|
||||
$result = db_query($q, $dbh);
|
||||
if ($result != NULL) {
|
||||
$row = mysql_fetch_assoc($result);
|
||||
if ($row['CNT'] > 0) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
# see if this Users.ID can manage the package
|
||||
#
|
||||
|
@ -154,7 +189,7 @@ function package_comments($pkgid=0) {
|
|||
$comments = array();
|
||||
if ($pkgid) {
|
||||
$dbh = db_connect();
|
||||
$q = "SELECT UserName, Comments, CommentTS ";
|
||||
$q = "SELECT PackageComments.ID, UserName, Comments, CommentTS ";
|
||||
$q.= "FROM PackageComments, Users ";
|
||||
$q.= "WHERE PackageComments.UsersID = Users.ID";
|
||||
$q.= " AND PackageID = ".mysql_escape_string($pkgid);
|
||||
|
@ -261,7 +296,11 @@ function package_details($id=0) {
|
|||
print "</tr>\n";
|
||||
print "<tr>\n";
|
||||
print " <td colspan='2'><span class='f3'>";
|
||||
print $row["Location"]." :: ".$row["Category"]."</span></td>";
|
||||
$edit_cat = "<a href='/pkgedit.php?change_Category=1&ID=";
|
||||
$edit_cat .= intval($_REQUEST["ID"])."'>".$row["Category"]."</a>";
|
||||
$edit_cat .= " <span class='fix'>(";
|
||||
$edit_cat .= __("change category").")</span>";
|
||||
print $row["Location"]." :: ".$edit_cat."</span></td>";
|
||||
print "</tr>\n";
|
||||
print "<tr>\n";
|
||||
print " <td colspan='2'><span class='f3'>".__("Maintainer").": ";
|
||||
|
@ -344,10 +383,15 @@ function package_details($id=0) {
|
|||
print " <td valign='top' style='padding-right: 10' colspan='2'>";
|
||||
print "<table class='boxSoft' width='100%'>";
|
||||
print "<tr><td class='boxSoftTitle'><span class='f3'>";
|
||||
$durl = "<a href='/pkgedit.php?del_Comment=1";
|
||||
$durl.= "&comment_id=".$carr["ID"]."&ID=".$row["ID"];
|
||||
$durl.= "'><img src='/images/x.png' border='0'";
|
||||
$durl.= " alt=\"".__("Delete comment")."\"></a>";
|
||||
print $durl . " ";
|
||||
print __("Comment by: %h%s%h on %h%s%h",
|
||||
array("<b>",$carr["UserName"],"</b>",
|
||||
"<i>",date("Ymd [H:i:s]",$carr["CommentTS"]),"</i>"));
|
||||
print "</span></td></tr>\n";
|
||||
print "</span>";
|
||||
print "<tr><td class='boxSoft'>";
|
||||
print "<pre>\n";
|
||||
print str_replace('"',""", stripslashes($carr["Comments"]));
|
||||
|
@ -783,7 +827,7 @@ function pkg_search_page($SID="") {
|
|||
} elseif (isset($tus[$row["MaintainerUID"]])) {
|
||||
print $tus[$row["MaintainerUID"]]["Username"];
|
||||
} else {
|
||||
print "None";
|
||||
print __("None");
|
||||
$managed = 0;
|
||||
}
|
||||
print "</span></span></td>\n";
|
||||
|
|
Loading…
Add table
Reference in a new issue