summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xeditattachstatuses.cgi49
-rwxr-xr-xtemplate/default/attachstatus/list.atml30
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 @@
<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>