Commit 05e63fe09c8a44ed14d4282db81d18927ce1a5ad

Authored by Dmitriy Zaporozhets
1 parent 23de3551

MergeRequest#new 2 step process

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
app/views/projects/merge_requests/_new_compare.html.haml 0 → 100644
... ... @@ -0,0 +1,69 @@
  1 +%h3.page-title Compare changes for new merge request
  2 +%hr
  3 +
  4 += form_for [@project, @merge_request], url: new_project_merge_request_path(@project), method: :get, html: { class: "merge-request-form form-inline" } do |f|
  5 + .merge-request-branches.row
  6 + .col-md-6
  7 + .panel.panel-default
  8 + .panel-heading
  9 + From
  10 + .panel-body
  11 + = f.select(:source_project_id, [[@merge_request.source_project_path,@merge_request.source_project.id]] , {}, { class: 'source_project select2 span3', disabled: @merge_request.persisted? })
  12 + &nbsp;
  13 + = f.select(:source_branch, @merge_request.source_branches, { include_blank: "Select branch" }, {class: 'source_branch select2 span2'})
  14 + .panel-footer
  15 + .mr_source_commit
  16 +
  17 + .col-md-6
  18 + .panel.panel-default
  19 + .panel-heading
  20 + To
  21 + .panel-body
  22 + - projects = @project.forked_from_project.nil? ? [@project] : [@project, @project.forked_from_project]
  23 + = f.select(:target_project_id, options_from_collection_for_select(projects, 'id', 'path_with_namespace', f.object.target_project_id), {}, { class: 'target_project select2 span3', disabled: @merge_request.persisted? })
  24 + &nbsp;
  25 + = f.select(:target_branch, @merge_request.target_branches, { include_blank: "Select branch" }, {class: 'target_branch select2 span2'})
  26 + .panel-footer
  27 + .mr_target_commit
  28 +
  29 + -if @merge_request.errors.any?
  30 + .alert.alert-danger
  31 + - @merge_request.errors.full_messages.each do |msg|
  32 + %div= msg
  33 +
  34 + - if @merge_request.source_branch.present? && @merge_request.target_branch.present?
  35 + .light-well
  36 + %center
  37 + %h4
  38 + There isn't anything to merge.
  39 + %p.slead
  40 + - if @merge_request.source_branch == @merge_request.target_branch
  41 + You'll need to use different branch names to get a valid comparison.
  42 + - else
  43 + %span.label-branch #{@merge_request.source_branch}
  44 + and
  45 + %span.label-branch #{@merge_request.target_branch}
  46 + are the same.
  47 +
  48 + .form-actions
  49 + = f.submit 'Compare branches', class: "btn btn-primary"
  50 +
  51 +:javascript
  52 + var source_branch = $("#merge_request_source_branch")
  53 + , target_branch = $("#merge_request_target_branch")
  54 + , target_project = $("#merge_request_target_project_id");
  55 +
  56 + $.get("#{branch_from_project_merge_requests_path(@source_project)}", {ref: source_branch.val() });
  57 + $.get("#{branch_to_project_merge_requests_path(@source_project)}", {target_project_id: target_project.val(),ref: target_branch.val() });
  58 +
  59 + target_project.on("change", function() {
  60 + $.get("#{update_branches_project_merge_requests_path(@source_project)}", {target_project_id: $(this).val() });
  61 + });
  62 + source_branch.on("change", function() {
  63 + $.get("#{branch_from_project_merge_requests_path(@source_project)}", {ref: $(this).val() });
  64 + });
  65 + target_branch.on("change", function() {
  66 + $.get("#{branch_to_project_merge_requests_path(@source_project)}", {target_project_id: target_project.val(),ref: $(this).val() });
  67 + });
  68 +
  69 +
... ...
app/views/projects/merge_requests/_new_submit.html.haml 0 → 100644
... ... @@ -0,0 +1,60 @@
  1 +%h3.page-title
  2 + New merge request
  3 +%p.slead
  4 + From
  5 + %strong.monospace
  6 + #{@merge_request.source_project_namespace}:#{@merge_request.source_branch}
  7 + into
  8 + %strong.monospace
  9 + #{@merge_request.target_project_namespace}:#{@merge_request.target_branch}
  10 +
  11 + %span.pull-right
  12 + = link_to 'Change branches', new_project_merge_request_path(@project)
  13 +
  14 += form_for [@project, @merge_request], html: { class: "merge-request-form" } do |f|
  15 + .panel.panel-default
  16 +
  17 + .panel-body
  18 + .form-group
  19 + .light
  20 + = f.label :title do
  21 + = "Title *"
  22 + = f.text_field :title, class: "form-control input-lg js-gfm-input", maxlength: 255, rows: 5, required: true
  23 + .form-group
  24 + .light
  25 + = f.label :description, "Description"
  26 + = f.text_area :description, class: "form-control js-gfm-input", rows: 10
  27 + %p.hint Description is parsed with #{link_to "GitLab Flavored Markdown", help_markdown_path, target: '_blank'}.
  28 + .panel-footer
  29 + - if @target_repo.contribution_guide
  30 + - contribution_guide_url = project_blob_path(@target_project, tree_join(@target_repo.root_ref, @target_repo.contribution_guide.name))
  31 + %p
  32 + Please review the
  33 + %strong #{link_to "guidelines for contribution", contribution_guide_url}
  34 + to this repository.
  35 + = f.hidden_field :source_project_id
  36 + = f.hidden_field :target_project_id
  37 + = f.hidden_field :target_branch
  38 + = f.hidden_field :source_branch
  39 + = f.submit 'Submit a merge request', class: "btn btn-create"
  40 +
  41 +.mr-compare
  42 + %div.ui-box
  43 + .title
  44 + Commits (#{@commits.count})
  45 + - if @commits.size > MergeRequestDiff::COMMITS_SAFE_SIZE
  46 + %ul.well-list
  47 + - Commit.decorate(@commits.first(MergeRequestDiff::COMMITS_SAFE_SIZE)).each do |commit|
  48 + = render "projects/commits/inline_commit", commit: commit, project: @project
  49 + %li.warning-row.unstyled
  50 + other #{@commits.size - MergeRequestDiff::COMMITS_SAFE_SIZE} commits hidden to prevent performance issues.
  51 + - else
  52 + %ul.well-list= render Commit.decorate(@commits), project: @project
  53 +
  54 + %h4 Changes
  55 + - if @diffs.present?
  56 + = render "projects/commits/diffs", diffs: @diffs, project: @project
  57 + - elsif @commits.size > MergeRequestDiff::COMMITS_SAFE_SIZE
  58 + .bs-callout.bs-callout-danger
  59 + %h4 This comparison includes more than #{MergeRequestDiff::COMMITS_SAFE_SIZE} commits.
  60 + %p To preserve performance the line changes are not shown.
... ...
app/views/projects/merge_requests/new.html.haml
1   -%h3.page-title New Merge Request
2   -%hr
3   -= render 'form'
  1 +- if @commits.present?
  2 + = render 'new_submit'
  3 +- else
  4 + = render 'new_compare'
... ...