1 package com.atlassian.jira.issue.operations;
2
3 import com.atlassian.jira.ManagerFactory;
4 import com.atlassian.jira.issue.Issue;
5 import com.atlassian.jira.security.JiraAuthenticationContext;
6 import com.atlassian.jira.security.PermissionManager;
7 import com.atlassian.jira.security.Permissions;
8 import com.atlassian.jira.workflow.ExtendedWorkflowManager;
9 import com.atlassian.jira.workflow.WorkflowManager;
10 import com.atlassian.plugin.PluginController;
11 import com.atlassian.plugin.PluginManager;
12
13
14
15
16
17
18
19
20
21 public class ExtendedDeleteIssueOperation extends DeleteIssueOperation {
22
23 protected WorkflowManager workflowManager;
24 protected JiraAuthenticationContext authenticationContext;
25 protected PermissionManager permissionManager;
26
27 public ExtendedDeleteIssueOperation(JiraAuthenticationContext authenticationContext, PermissionManager permissionManager, PluginController _pluginController) {
28 super(authenticationContext, permissionManager);
29 this.authenticationContext = authenticationContext;
30 this.permissionManager = permissionManager;
31 workflowManager = ManagerFactory.getWorkflowManager();
32 _pluginController.disablePluginModule("com.atlassian.jira.plugin.system.issueoperations:delete-issue");
33 }
34
35
36
37
38
39
40
41 public boolean showOperation(final Issue _issue) {
42 return (permissionManager.hasPermission(Permissions.DELETE_ISSUE, _issue, authenticationContext.getUser()) && isDeletable(_issue));
43 }
44
45
46
47
48
49
50 protected boolean isDeletable(final Issue _issue) {
51 boolean isDeletable = true;
52 if (workflowManager instanceof ExtendedWorkflowManager) {
53 isDeletable = ((ExtendedWorkflowManager)workflowManager).isDeletable(_issue);
54 }
55 return isDeletable;
56 }
57
58 }