summaryrefslogtreecommitdiff
path: root/app/views/shared/issuable/_form.html.haml
blob: ae8b266c092f20e0ed68fdcebb92ce1a51a64a2b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
- form = local_assigns.fetch(:f)
- commits = local_assigns[:commits]
- project = @target_project || @project
- presenter = local_assigns.fetch(:presenter, nil)

= form_errors(issuable, pajamas_alert: true)

- if @conflict
  = render Pajamas::AlertComponent.new(variant: :danger,
    dismissible: false,
    alert_options: { class: 'gl-mb-5' }) do |c|
    = c.body do
      Someone edited the #{issuable.class.model_name.human.downcase} the same time you did.
      Please check out
      = link_to "the #{issuable.class.model_name.human.downcase}", polymorphic_path([@project, issuable]), target: "_blank", rel: 'noopener noreferrer'
      and make sure your changes will not unintentionally remove theirs

= render 'shared/issuable/form/branch_chooser', issuable: issuable, form: form

.form-group
  = form.label :title do
    = _('Title (required)')

  = render 'shared/issuable/form/title', issuable: issuable, form: form, has_wip_commits: commits && commits.detect(&:draft?)
#js-suggestions{ data: { project_path: @project.full_path } }

= render 'shared/issuable/form/type_selector', issuable: issuable, form: form

= render 'shared/form_elements/description', model: issuable, form: form, project: project

= render 'shared/issuable/form/metadata', issuable: issuable, form: form, project: project, presenter: presenter

= render 'shared/issuable/form/merge_params', issuable: issuable, project: project

= render 'shared/issuable/form/contribution', issuable: issuable, form: form

- if @merge_request_to_resolve_discussions_of
  .form-group
    = sprite_icon('information-o')
    - if @merge_request_to_resolve_discussions_of.discussions_can_be_resolved_by?(current_user)
      = hidden_field_tag 'merge_request_to_resolve_discussions_of', @merge_request_to_resolve_discussions_of.iid
      - if @discussion_to_resolve
        = hidden_field_tag 'discussion_to_resolve', @discussion_to_resolve.id
        Creating this issue will resolve the thread in
      - else
        Creating this issue will resolve all threads in
      = link_to_discussions_to_resolve(@merge_request_to_resolve_discussions_of, @discussion_to_resolve)
    - else
      The
      = @discussion_to_resolve ? 'thread' : 'threads'
      at
      = link_to_discussions_to_resolve(@merge_request_to_resolve_discussions_of, @discussion_to_resolve)
      will stay unresolved. Ask someone with permission to resolve
      = @discussion_to_resolve ? 'it.' : 'them.'

- is_footer = !(issuable.is_a?(MergeRequest) && issuable.new_record?)
.gl-mt-5{ class: (is_footer ? "footer-block" : "middle-block") }
  - if !issuable.persisted? && !issuable.project.empty_repo? && (guide_url = issuable.project.present.contribution_guide_path)
    .gl-mb-5
      - contribution_guidelines_start = '<strong><a href="%{url}">'.html_safe % {url: strip_tags(guide_url)}
      - contribution_guidelines_end = '</a></strong>'.html_safe
      = sanitize(html_escape(_('Please review the %{linkStart}contribution guidelines%{linkEnd} for this project.')) % { linkStart: contribution_guidelines_start, linkEnd: contribution_guidelines_end })

  - if issuable.new_record?
    = form.submit "#{_('Create')} #{issuable.class.model_name.human.downcase}", class: 'gl-button btn btn-confirm gl-mr-2', data: { qa_selector: 'issuable_create_button', track_experiment: 'promote_mr_approvals_in_free', track_action: 'click_button', track_label: 'submit_mr', track_value: 0 }
  - else
    = form.submit _('Save changes'), class: 'gl-button btn btn-confirm gl-mr-2', data: { track_experiment: 'promote_mr_approvals_in_free', track_action: 'click_button', track_label: 'submit_mr', track_value: 0 }

  - if issuable.new_record?
    = link_to _('Cancel'), polymorphic_path([@project, issuable.class]), class: 'btn gl-button btn-default js-reset-autosave'
  - else
    = link_to _('Cancel'), polymorphic_path([@project, issuable]), class: 'gl-button btn btn-default js-reset-autosave'
    - if can?(current_user, :"destroy_#{issuable.to_ability_name}", @project)
      = link_to 'Delete', polymorphic_path([@project, issuable], params: { destroy_confirm: true }), data: { confirm: _('%{issuableType} will be removed! Are you sure?') % { issuableType: issuable.human_class_name } }, method: :delete, class: 'btn gl-button btn-danger btn-danger-secondary gl-float-right js-reset-autosave'

- if issuable.respond_to?(:issue_type)
  = form.hidden_field :issue_type

= form.hidden_field :lock_version

- if @vulnerability_id
  = hidden_field_tag 'vulnerability_id', @vulnerability_id