summaryrefslogtreecommitdiff
path: root/app/services/issues
diff options
context:
space:
mode:
authorDouwe Maan <douwe@selenight.nl>2017-02-01 12:41:01 -0600
committerPhil Hughes <me@iamphill.com>2017-02-17 11:29:16 +0000
commitac868482a7780a332045ef270a409ff70bcf8efd (patch)
tree99ff605262028f08718f04ac0c9e42c516d38693 /app/services/issues
parent5d8f5328baca93b9134f10ae593e71834578a9f8 (diff)
downloadgitlab-ce-ac868482a7780a332045ef270a409ff70bcf8efd.tar.gz
Allow issues in boards to be ordered
Diffstat (limited to 'app/services/issues')
-rw-r--r--app/services/issues/update_service.rb21
1 files changed, 21 insertions, 0 deletions
diff --git a/app/services/issues/update_service.rb b/app/services/issues/update_service.rb
index 78cbf94ec69..ba06f208dbc 100644
--- a/app/services/issues/update_service.rb
+++ b/app/services/issues/update_service.rb
@@ -1,6 +1,7 @@
module Issues
class UpdateService < Issues::BaseService
def execute(issue)
+ handle_move_between_iids(issue)
update(issue)
end
@@ -47,6 +48,26 @@ module Issues
Issues::CloseService
end
+ def handle_move_between_iids(issue)
+ if move_between_iids = params.delete(:move_between_iids)
+ before_iid, after_iid = move_between_iids
+
+ issue_before = nil
+ if before_iid
+ issue_before = issue.project.issues.find_by(iid: before_iid)
+ issue_before = nil unless can?(current_user, :update_issue, issue_before)
+ end
+
+ issue_after = nil
+ if after_iid
+ issue_after = issue.project.issues.find_by(iid: after_iid)
+ issue_after = nil unless can?(current_user, :update_issue, issue_after)
+ end
+
+ issue.move_between(issue_before, issue_after)
+ end
+ end
+
private
def create_confidentiality_note(issue)