зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
2b094e1eca
Коммит
1a2c88b4cf
|
@ -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>
|
||||
|
|
||||
<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>
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче