Use helper to create list of projects issue can be moved to
This also adds confirmation message if issue move has been requested.
This commit is contained in:
parent
4145589393
commit
1dd279d833
|
@ -1,4 +1,6 @@
|
|||
class @IssuableForm
|
||||
ISSUE_MOVE_CONFIRM_MSG = 'Are you sure you want to move this issue to another project?'
|
||||
|
||||
constructor: (@form) ->
|
||||
GitLab.GfmAutoComplete.setup()
|
||||
new UsersSelect()
|
||||
|
@ -6,12 +8,13 @@ class @IssuableForm
|
|||
|
||||
@titleField = @form.find("input[name*='[title]']")
|
||||
@descriptionField = @form.find("textarea[name*='[description]']")
|
||||
@issueMoveField = @form.find("#move_to_project_id")
|
||||
|
||||
return unless @titleField.length && @descriptionField.length
|
||||
|
||||
@initAutosave()
|
||||
|
||||
@form.on "submit", @resetAutosave
|
||||
@form.on "submit", @handleSubmit
|
||||
@form.on "click", ".btn-cancel", @resetAutosave
|
||||
|
||||
initAutosave: ->
|
||||
|
@ -27,6 +30,12 @@ class @IssuableForm
|
|||
"description"
|
||||
]
|
||||
|
||||
handleSubmit: (e) =>
|
||||
@resetAutosave
|
||||
|
||||
if (parseInt(@issueMoveField?.val()) ? 0) > 0
|
||||
e.preventDefault() unless confirm(ISSUE_MOVE_CONFIRM_MSG)
|
||||
|
||||
resetAutosave: =>
|
||||
@titleField.data("autosave").reset()
|
||||
@descriptionField.data("autosave").reset()
|
||||
|
|
|
@ -57,6 +57,17 @@ module IssuesHelper
|
|||
options_from_collection_for_select(milestones, 'id', 'title', object.milestone_id)
|
||||
end
|
||||
|
||||
def project_options(issuable, current_user, ability: :read_project)
|
||||
projects = current_user.authorized_projects
|
||||
projects = projects.select do |project|
|
||||
current_user.can?(ability, project) && project != issuable.project
|
||||
end
|
||||
|
||||
projects.unshift(OpenStruct.new(id: 0, name_with_namespace: 'No project'))
|
||||
|
||||
options_from_collection_for_select(projects, :id, :name_with_namespace, 0)
|
||||
end
|
||||
|
||||
def status_box_class(item)
|
||||
if item.respond_to?(:expired?) && item.expired?
|
||||
'status-box-expired'
|
||||
|
|
|
@ -72,9 +72,9 @@
|
|||
.form-group
|
||||
= f.label :move_to_project_id, 'Move', class: 'control-label'
|
||||
.col-sm-10
|
||||
= project_select_tag(:move_to_project_id, placeholder: 'Select project',
|
||||
class: 'custom-form-control', data: { 'select-id' => 'id',
|
||||
'access-level' => Gitlab::Access::REPORTER, 'without-id' => issuable.project.id })
|
||||
- projects = project_options(issuable, current_user, ability: :admin_issue)
|
||||
= select_tag(:move_to_project_id, projects, include_blank: true,
|
||||
class: 'select2', data: { placeholder: 'Select project' })
|
||||
|
||||
- if issuable.is_a?(MergeRequest)
|
||||
%hr
|
||||
|
|
|
@ -28,7 +28,7 @@ describe Issues::MoveService, services: true do
|
|||
new_project.team << [user, :reporter]
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
context 'issue movable' do
|
||||
include_context 'issue move requested'
|
||||
include_context 'user can move issue'
|
||||
|
@ -162,6 +162,18 @@ describe Issues::MoveService, services: true do
|
|||
end
|
||||
end
|
||||
|
||||
context 'moving to same project' do
|
||||
let(:new_project) { old_project }
|
||||
|
||||
include_context 'issue move requested'
|
||||
include_context 'user can move issue'
|
||||
|
||||
it 'raises error' do
|
||||
expect { move_service }
|
||||
.to raise_error(StandardError, /Cannot move issue/)
|
||||
end
|
||||
end
|
||||
|
||||
context 'issue move not requested' do
|
||||
let(:new_project_id) { nil }
|
||||
|
||||
|
@ -179,7 +191,6 @@ describe Issues::MoveService, services: true do
|
|||
end
|
||||
end
|
||||
|
||||
|
||||
describe 'move permissions' do
|
||||
include_context 'issue move requested'
|
||||
|
||||
|
|
Loading…
Reference in New Issue