Skip to content

Commit

Permalink
issue: Remove milestone when moving issues
Browse files Browse the repository at this point in the history
See: Yona Github issue #188
  • Loading branch information
doortts committed Mar 23, 2017
1 parent 36d330f commit a76238f
Showing 1 changed file with 19 additions and 11 deletions.
30 changes: 19 additions & 11 deletions app/controllers/IssueApp.java
Original file line number Diff line number Diff line change
Expand Up @@ -407,7 +407,7 @@ public static Result newIssue(String ownerName, String projectName) {
}

final Issue newIssue = issueForm.get();
if(StringUtils.isNotEmpty(newIssue.targetProjectId)){
if(hasTargetProject(newIssue)){
Project toAnotherProject = Project.find.byId(Long.valueOf(newIssue.targetProjectId));
if(toAnotherProject == null){
flash(Constants.WARNING, Messages.get("error.notfound.project"));
Expand Down Expand Up @@ -549,20 +549,25 @@ public static Result editIssue(String ownerName, String projectName, Long number
issue.dueDate = JodaDateUtil.lastSecondOfDay(issue.dueDate);

Issue originalIssue = Issue.findByNumber(project, number);
if(StringUtils.isNotEmpty(issue.targetProjectId)){
if(hasTargetProject(issue)) {
Project toOtherProject = Project.find.byId(Long.valueOf(issue.targetProjectId));
if(toOtherProject == null){
if (toOtherProject == null) {
flash(Constants.WARNING, Messages.get("error.notfound.project"));
return badRequest(edit.render("error.validation", issueForm, Issue.findByNumber(project, number), project));
} else if (isRequestedToOtherProject(project, toOtherProject)) {
if (!AccessControl.isProjectResourceCreatable(
UserApp.currentUser(), toOtherProject, ResourceType.ISSUE_POST)) {
return forbidden(ErrorViews.Forbidden.render("error.forbidden", toOtherProject));
}
}

if (!AccessControl.isProjectResourceCreatable(
UserApp.currentUser(), toOtherProject, ResourceType.ISSUE_POST)) {
return forbidden(ErrorViews.Forbidden.render("error.forbidden", toOtherProject));
}

if (isRequestedToOtherProject(project, toOtherProject)) {
moveIssueToOtherProject(originalIssue, toOtherProject);
issue.milestone = null;
} else {
updateSubtaskRelation(issue, originalIssue);
}
}
updateSubtaskRelation(issue, originalIssue);

Call redirectTo = routes.IssueApp.issue(originalIssue.project.owner, originalIssue.project.name, originalIssue.getNumber());

Expand Down Expand Up @@ -599,6 +604,10 @@ public void run() {
return editPosting(originalIssue, issue, issueForm, redirectTo, preUpdateHook);
}

private static boolean hasTargetProject(Issue issue) {
return StringUtils.isNotEmpty(issue.targetProjectId);
}

private static boolean isFromMyOwnPrivateProject(Project previous) {
return previous.isPrivate() && previous.owner.equalsIgnoreCase(UserApp.currentUser().loginId);
}
Expand All @@ -617,8 +626,8 @@ private static void moveIssueToOtherProject(Issue originalIssue, Project toOther
transferLabels(originalIssue, toOtherProject);
} else {
originalIssue.labels = new HashSet<>();
originalIssue.update();
}
originalIssue.update();
}

private static void transferLabels(Issue originalIssue, Project toProject) {
Expand All @@ -641,7 +650,6 @@ private static void transferLabels(Issue originalIssue, Project toProject) {
}

originalIssue.labels = new HashSet<>(newLabels);
originalIssue.update();
}

private static boolean isRequestedToOtherProject(Project project, Project toOtherProject) {
Expand Down

0 comments on commit a76238f

Please sign in to comment.