summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLukas Fleischer <archlinux@cryptocrack.de>2014-06-25 11:29:17 +0200
committerLukas Fleischer <archlinux@cryptocrack.de>2014-06-25 11:38:02 +0200
commit91e6b5cb2f3d531ce40cd0331e2261d30766de47 (patch)
tree1b901e6000b44569123a51fd2dd2aa371d92f443
parent959c61a77dd6a41bf82cc12b5eb873c9cfb0ffb8 (diff)
downloadaurweb-91e6b5cb2f3d531ce40cd0331e2261d30766de47.tar.xz
Add support for merge requests
This adds a new "Merge" category to the list of available request types and also adds a new "Merge into" field that is hidden via JavaScript when "Deletion" or "Orphan" is selected. Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
-rw-r--r--UPGRADING2
-rw-r--r--schema/aur-schema.sql2
-rw-r--r--web/html/pkgbase.php2
-rw-r--r--web/html/pkgmerge.php5
-rw-r--r--web/html/pkgreq.php21
-rw-r--r--web/lib/pkgbasefuncs.inc.php11
-rw-r--r--web/template/pkgreq_results.php6
7 files changed, 42 insertions, 7 deletions
diff --git a/UPGRADING b/UPGRADING
index ceee6f5..0e8edf0 100644
--- a/UPGRADING
+++ b/UPGRADING
@@ -14,12 +14,14 @@ CREATE TABLE RequestTypes (
) ENGINE = InnoDB;
INSERT INTO RequestTypes VALUES (1, 'deletion');
INSERT INTO RequestTypes VALUES (2, 'orphan');
+INSERT INTO RequestTypes VALUES (3, 'merge');
CREATE TABLE PackageRequests (
ID BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
ReqTypeID TINYINT UNSIGNED NOT NULL,
PackageBaseID INTEGER UNSIGNED NULL,
PackageBaseName VARCHAR(255) NOT NULL,
+ MergeBaseName VARCHAR(255) NULL,
UsersID INTEGER UNSIGNED NULL DEFAULT NULL,
Comments TEXT NOT NULL DEFAULT '',
RequestTS BIGINT UNSIGNED NOT NULL DEFAULT 0,
diff --git a/schema/aur-schema.sql b/schema/aur-schema.sql
index 486beef..1ec7385 100644
--- a/schema/aur-schema.sql
+++ b/schema/aur-schema.sql
@@ -297,6 +297,7 @@ CREATE TABLE RequestTypes (
) ENGINE = InnoDB;
INSERT INTO RequestTypes VALUES (1, 'deletion');
INSERT INTO RequestTypes VALUES (2, 'orphan');
+INSERT INTO RequestTypes VALUES (3, 'merge');
-- Package requests
--
@@ -305,6 +306,7 @@ CREATE TABLE PackageRequests (
ReqTypeID TINYINT UNSIGNED NOT NULL,
PackageBaseID INTEGER UNSIGNED NULL,
PackageBaseName VARCHAR(255) NOT NULL,
+ MergeBaseName VARCHAR(255) NULL,
UsersID INTEGER UNSIGNED NULL DEFAULT NULL,
Comments TEXT NOT NULL DEFAULT '',
RequestTS BIGINT UNSIGNED NOT NULL DEFAULT 0,
diff --git a/web/html/pkgbase.php b/web/html/pkgbase.php
index da88210..0b0f6ef 100644
--- a/web/html/pkgbase.php
+++ b/web/html/pkgbase.php
@@ -97,7 +97,7 @@ if (check_token()) {
} elseif (current_action("do_ChangeCategory")) {
list($ret, $output) = pkgbase_change_category($base_id, $atype);
} elseif (current_action("do_FileRequest")) {
- list($ret, $output) = pkgbase_file_request($ids, $_POST['type'], $_POST['comments']);
+ list($ret, $output) = pkgbase_file_request($ids, $_POST['type'], $_POST['merge_into'], $_POST['comments']);
} elseif (current_action("do_CloseRequest")) {
list($ret, $output) = pkgbase_close_request($_POST['reqid']);
}
diff --git a/web/html/pkgmerge.php b/web/html/pkgmerge.php
index dbc5eac..ba3f742 100644
--- a/web/html/pkgmerge.php
+++ b/web/html/pkgmerge.php
@@ -39,8 +39,11 @@ if ($atype == "Trusted User" || $atype == "Developer"): ?>
<input type="hidden" name="IDs[<?= $base_id ?>]" value="1" />
<input type="hidden" name="ID" value="<?= $base_id ?>" />
<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
+ <?php if (isset($_GET['via'])): ?>
+ <input type="hidden" name="via" value="<?= intval($_GET['via']) ?>" />
+ <?php endif; ?>
<p><label for="merge_Into" ><?= __("Merge into:") ?></label>
- <input type="text" id="merge_Into" name="merge_Into" /></p>
+ <input type="text" id="merge_Into" name="merge_Into" value="<?= isset($_GET['into']) ? $_GET['into'] : '' ?>" /></p>
<p><input type="checkbox" name="confirm_Delete" value="1" />
<?= __("Confirm package merge") ?></p>
<p><input type="submit" class="button" name="do_Delete" value="<?= __("Merge") ?>" /></p>
diff --git a/web/html/pkgreq.php b/web/html/pkgreq.php
index 05eeb51..2b46b02 100644
--- a/web/html/pkgreq.php
+++ b/web/html/pkgreq.php
@@ -90,11 +90,30 @@ if (!isset($base_id)) {
<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
<p>
<label for="id_type"><?= __("Request type") ?>:</label>
- <select name="type" id="id_type">
+ <select name="type" id="id_type" onchange="showHideMergeSection()">
<option value="deletion"><?= __('Deletion') ?></option>
+ <option value="merge"><?= __('Merge') ?></option>
<option value="orphan"><?= __('Orphan') ?></option>
</select>
</p>
+ <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
+ <script type="text/javascript">
+ function showHideMergeSection() {
+ if ($('#id_type').val() == 'merge') {
+ $('#merge_section').show();
+ } else {
+ $('#merge_section').hide();
+ }
+ }
+
+ $(document).ready(function() {
+ showHideMergeSection();
+ });
+ </script>
+ <p id="merge_section">
+ <label for="id_merge_into"><?= __("Merge into") ?>:</label>
+ <input type="text" name="merge_into" id="id_merge_into" />
+ </p>
<p>
<label for="id_comments"><?= __("Comments") ?>:</label>
<textarea name="comments" id="id_comments" rows="5" cols="50"></textarea>
diff --git a/web/lib/pkgbasefuncs.inc.php b/web/lib/pkgbasefuncs.inc.php
index 2444674..68dd656 100644
--- a/web/lib/pkgbasefuncs.inc.php
+++ b/web/lib/pkgbasefuncs.inc.php
@@ -984,6 +984,7 @@ function pkgbase_request_list() {
$q = "SELECT PackageRequests.ID, ";
$q.= "PackageRequests.PackageBaseID AS BaseID, ";
$q.= "PackageRequests.PackageBaseName AS Name, ";
+ $q.= "PackageRequests.MergeBaseName AS MergeInto, ";
$q.= "RequestTypes.Name AS Type, PackageRequests.Comments, ";
$q.= "Users.Username AS User, PackageRequests.RequestTS, ";
$q.= "PackageRequests.Status ";
@@ -1002,11 +1003,12 @@ function pkgbase_request_list() {
* @global string $AUR_REQUEST_ML The request notification mailing list
* @param string $ids The package base IDs to file the request against
* @param string $type The type of the request
+ * @param string $merge_into The target of a merge operation
* @param string $comments The comments to be added to the request
*
* @return void
*/
-function pkgbase_file_request($ids, $type, $comments) {
+function pkgbase_file_request($ids, $type, $merge_into, $comments) {
global $AUR_LOCATION;
global $AUR_REQUEST_ML;
@@ -1030,10 +1032,11 @@ function pkgbase_file_request($ids, $type, $comments) {
}
$q = "INSERT INTO PackageRequests ";
- $q.= "(ReqTypeID, PackageBaseID, PackageBaseName, UsersID, ";
- $q.= "Comments, RequestTS) VALUES (" . $type_id . ", ";
+ $q.= "(ReqTypeID, PackageBaseID, PackageBaseName, MergeBaseName, ";
+ $q.= "UsersID, Comments, RequestTS) VALUES (" . $type_id . ", ";
$q.= intval($base_id) . ", " . $dbh->quote($pkgbase_name) . ", ";
- $q.= $uid . ", " . $dbh->quote($comments) . ", UNIX_TIMESTAMP())";
+ $q.= $dbh->quote($merge_into) . ", " . $uid . ", ";
+ $q.= $dbh->quote($comments) . ", UNIX_TIMESTAMP())";
$dbh->exec($q);
/*
diff --git a/web/template/pkgreq_results.php b/web/template/pkgreq_results.php
index 8ab8351..042cc3a 100644
--- a/web/template/pkgreq_results.php
+++ b/web/template/pkgreq_results.php
@@ -36,7 +36,11 @@
<?php else: ?>
<td><?= htmlspecialchars($row["Name"]) ?></td>
<?php endif; ?>
+ <?php if ($row['Type'] == 'merge'): ?>
+ <td><?= htmlspecialchars(ucfirst($row['Type']), ENT_QUOTES); ?> (<?= htmlspecialchars(ucfirst($row['MergeInto']), ENT_QUOTES); ?>)</td>
+ <?php else: ?>
<td><?= htmlspecialchars(ucfirst($row['Type']), ENT_QUOTES); ?></td>
+ <?php endif; ?>
<td class="wrap"><?= htmlspecialchars($row['Comments'], ENT_QUOTES); ?></td>
<td>
<a href="<?= get_uri('/account/') . htmlspecialchars($row['User'], ENT_QUOTES) ?>" title="<?= __('View account information for %s', htmlspecialchars($row['User'])) ?>"><?= htmlspecialchars($row['User']) ?></a>
@@ -47,6 +51,8 @@
<?php if ($row['BaseID']): ?>
<?php if ($row['Type'] == 'deletion'): ?>
<a href="<?= get_pkgbase_uri($row['Name']) ?>delete/?via=<?= intval($row['ID']) ?>"><?= __('Accept') ?></a>
+ <?php elseif ($row['Type'] == 'merge'): ?>
+ <a href="<?= get_pkgbase_uri($row['Name']) ?>merge/?into=<?= urlencode($row['MergeInto']) ?>&via=<?= intval($row['ID']) ?>"><?= __('Accept') ?></a>
<?php elseif ($row['Type'] == 'orphan'): ?>
<form action="<?= get_pkgbase_uri($row['Name']) . 'disown/'; ?>" method="post">
<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />