From cb6f229206bf8bf8f873e6d1c954139042655895 Mon Sep 17 00:00:00 2001 From: "myk%mozilla.org" <> Date: Wed, 13 Mar 2002 00:05:33 +0000 Subject: Fix for bug 97739: Confirms deletion of an attachment status in browsers with no-JS/JS-off. Patch by Jeff Hedlund . r=myk,gerv --- editattachstatuses.cgi | 49 +++++++++++++++++++++++++++++---- template/default/attachstatus/list.atml | 30 +++++++++++++++----- 2 files changed, 66 insertions(+), 13 deletions(-) diff --git a/editattachstatuses.cgi b/editattachstatuses.cgi index 0642d6bb8..61e1a15ae 100755 --- a/editattachstatuses.cgi +++ b/editattachstatuses.cgi @@ -87,11 +87,16 @@ elsif ($action eq "update") validateSortKey(); update(); } -elsif ($action eq "delete") +elsif ($action eq "confirmdelete") { validateID(); - deleteStatus(); + confirmDelete(); } +elsif ($action eq "delete") +{ + validateID(); + deleteStatus(); +} else { DisplayError("I could not figure out what you wanted to do.") @@ -174,14 +179,18 @@ sub list # Retrieve a list of attachment status flags and create an array of hashes # in which each hash contains the data for one flag. - SendSQL("SELECT id, name, description, sortkey, product - FROM attachstatusdefs ORDER BY sortkey"); + SendSQL("SELECT id, name, description, sortkey, product, count(statusid) + FROM attachstatusdefs LEFT JOIN attachstatuses + ON attachstatusdefs.id=attachstatuses.statusid + GROUP BY id + ORDER BY sortkey"); my @statusdefs; while ( MoreSQLData() ) { - my ($id, $name, $description, $sortkey, $product) = FetchSQLData(); + my ($id, $name, $description, $sortkey, $product, $attachcount) = FetchSQLData(); push @statusdefs, { 'id' => $id , 'name' => $name , 'description' => $description , - 'sortkey' => $sortkey , 'product' => $product }; + 'sortkey' => $sortkey , 'product' => $product, + 'attachcount' => $attachcount }; } # Define the variables and functions that will be passed to the UI template. @@ -293,6 +302,34 @@ sub update list("The attachment status has been updated."); } +sub confirmDelete +{ + # check if we need confirmation to delete: + + SendSQL("SELECT COUNT(attach_id), name + FROM attachstatusdefs LEFT JOIN attachstatuses + ON attachstatuses.statusid=attachstatusdefs.id + WHERE statusid = $::FORM{'id'} + GROUP BY attachstatuses.statusid;"); + + my ($attachcount, $name) = FetchSQLData(); + + if ($attachcount > 0) { + + $vars->{'id'} = $::FORM{'id'}; + $vars->{'attachcount'} = $attachcount; + $vars->{'name'} = $name; + + print "Content-type: text/html\n\n"; + + $template->process("attachstatus/delete.atml", $vars) + || DisplayError("Template process failed: " . & $template->error()) + && exit; + } + else { + deleteStatus(); + } +} sub deleteStatus { diff --git a/template/default/attachstatus/list.atml b/template/default/attachstatus/list.atml index 6828ea40c..60199a292 100755 --- a/template/default/attachstatus/list.atml +++ b/template/default/attachstatus/list.atml @@ -44,8 +44,14 @@ [% statusdef.sortkey %] [% statusdef.product %] - Edit - Delete + + Edit +  |  + + Delete @@ -59,13 +65,23 @@ - -- cgit v1.2.3-24-g4f1b