Fix for bug 97739: Confirms deletion of an attachment status in browsers with no-JS/JS-off.

Patch by Jeff Hedlund <jeff.hedlund@matrixsi.com>.
r=myk,gerv
This commit is contained in:
myk%mozilla.org 2002-03-12 16:05:35 +00:00
Родитель 2b094e1eca
Коммит 1a2c88b4cf
2 изменённых файлов: 66 добавлений и 13 удалений

Просмотреть файл

@ -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
{

Просмотреть файл

@ -44,8 +44,14 @@
<td>[% statusdef.sortkey %]</td>
<td>[% statusdef.product %]</td>
<td>
<a href="editattachstatuses.cgi?action=edit&id=[% statusdef.id %]">Edit</a>
<a href="editattachstatuses.cgi?action=delete&id=[% statusdef.id %]" onclick="return confirmDelete();">Delete</a>
<a href="editattachstatuses.cgi?action=edit&id=[% statusdef.id %]">
Edit</a>
&nbsp;|&nbsp;
<a href="editattachstatuses.cgi?action=confirmdelete&id=[% statusdef.id %]"
onclick="return confirmDelete([% statusdef.attachcount %],
'[% statusdef.name FILTER js %]',
[% statusdef.id %]);">
Delete</a>
</td>
</tr>
@ -59,13 +65,23 @@
</tr>
</table>
<script language="JavaScript">
function confirmDelete()
function confirmDelete(attachcount, name, id)
{
return confirm('Are you sure you want to permanently delete ' +
'this attachment status? All attachments ' +
'with this status will have it unset.');
if (attachcount > 0) {
msg = attachcount + ' attachments have the status ' +
name + '. If you delete it, those attachments ' +
'will lose this status. Do you really want to ' +
'delete this status?';
}
else {
msg = 'Are you sure you want to delete attachment status ' +
name + '?';
}
if (confirm(msg)) {
location.href = "editattachstatuses.cgi?action=delete&id=" + id;
}
return false;
}
</script>