This patch adds a confirmation checkbox for package deletion
(non-Javascript solution). Fixes FS#6515 [1].

[1] http://bugs.archlinux.org/task/6515
>From 1011c4643e681793377267002e32ea33f9cf9382 Mon Sep 17 00:00:00 2001
From: Lukas Fleischer <[email protected]>
Date: Fri, 25 Jun 2010 17:16:05 +0200
Subject: [PATCH] Confirmation when deleting packages

---
 web/html/packages.php               |    9 +++++++--
 web/lib/pkgfuncs.inc                |    2 +-
 web/template/actions_form.php       |    2 ++
 web/template/pkg_search_results.php |    3 +++
 4 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/web/html/packages.php b/web/html/packages.php
index 2553590..472f6a2 100644
--- a/web/html/packages.php
+++ b/web/html/packages.php
@@ -46,8 +46,13 @@ if ($_POST['action'] == "do_Flag" || 
isset($_POST['do_Flag'])) {
 } elseif ($_POST['action'] == "do_UnVote" || isset($_POST['do_UnVote'])) {
        $output = pkg_vote($atype, $ids, False);
 } elseif ($_POST['action'] == "do_Delete" || isset($_POST['do_Delete'])) {
-       $output = pkg_delete($atype, $ids);
-       unset($_GET['ID']);
+       if (isset($_POST['confirm_Delete'])) {
+               $output = pkg_delete($atype, $ids);
+               unset($_GET['ID']);
+       }
+       else {
+               $output = __("The selected packages have not been deleted, 
check the confirmation checkbox.");
+       }
 } elseif ($_POST['action'] == "do_Notify" || isset($_POST['do_Notify'])) {
        $output = pkg_notify($atype, $ids);
 } elseif ($_POST['action'] == "do_UnNotify" || isset($_POST['do_UnNotify'])) {
diff --git a/web/lib/pkgfuncs.inc b/web/lib/pkgfuncs.inc
index 43a7a6f..5605daa 100644
--- a/web/lib/pkgfuncs.inc
+++ b/web/lib/pkgfuncs.inc
@@ -402,7 +402,7 @@ function package_details($id=0, $SID="") {
  *                     do_UnFlag - Remove out-of-date flag
  *                     do_Adopt  - Adopt
  *                     do_Disown - Disown
- *                     do_Delete - Delete
+ *                     do_Delete - Delete (requires confirm_Delete to be set)
  *                     do_Notify - Enable notification
  *                     do_UnNotify - Disable notification
  */
diff --git a/web/template/actions_form.php b/web/template/actions_form.php
index de77645..d1559f5 100644
--- a/web/template/actions_form.php
+++ b/web/template/actions_form.php
@@ -47,6 +47,8 @@ if ($row["MaintainerUID"] == 0) {
                if ($atype == "Trusted User" || $atype == "Developer") {
                        echo "<input type='submit' class='button' 
name='do_Delete'";
                        echo " value='".__("Delete Packages")."'>\n";
+                       echo "<input type='checkbox' name='confirm_Delete' 
value='1' /> ";
+                       echo __("Confirm")."\n";
                }
 ?>
                                
diff --git a/web/template/pkg_search_results.php 
b/web/template/pkg_search_results.php
index 364a352..bb898df 100644
--- a/web/template/pkg_search_results.php
+++ b/web/template/pkg_search_results.php
@@ -108,6 +108,9 @@ for ($i = 0; $row = mysql_fetch_assoc($result); $i++) {
                        <option value='do_Notify'><?php print __("Notify") 
?></option>
                        <option value='do_UnNotify'><?php print __("UnNotify") 
?></option>
                </select>
+               <?php if ($atype == "Trusted User" || $atype == "Developer"): ?>
+               <input type='checkbox' name='confirm_Delete' value='1' /> <?php 
print __("Confirm") ?>
+               <?php endif; ?>
                <input type='submit' class='button' style='width: 80px' 
value='<?php print __("Go") ?>' />
        </div>
        <?php endif; ?>
-- 
1.7.1

Reply via email to