diff --git a/app/controllers/pull_requests_controller.rb b/app/controllers/pull_requests_controller.rb index 8e119b19c..00ba47dec 100644 --- a/app/controllers/pull_requests_controller.rb +++ b/app/controllers/pull_requests_controller.rb @@ -3,6 +3,7 @@ class PullRequestsController < ApplicationController before_filter :connect_gitlab, :only => [:index, :show, :create, :accept_pull_request, :pull_request_commits, :pull_request_changes, :new] layout "base_projects" include PullRequestsHelper + include ApplicationHelper # 返回json格式 def index @@ -21,16 +22,19 @@ class PullRequestsController < ApplicationController end end + # 主要取源项目和目标项目分支及标识(用户名/版本库名) def new - @rev = @g.branches(@project.gpid).map{|b| b.name} - @target_project = [] + identifier = get_rep_identifier_by_project @project + @source_project_name = "#{get_user_name(@project.user_id)}/#{identifier}" + @source_rev = @g.branches(@project.gpid).map{|b| b.name} + + # 获取forked源项目信息 if @project.forked_from_project_id @forked_project = Project.find(@project.forked_from_project_id) - @target_project << "#{get_user_name(@forked_project.user_id)}/#{@forked_project.name}" + identifier = get_rep_identifier_by_project @forked_project + @forked_project_name = "#{get_user_name(@forked_project.user_id)}/#{identifier}" + @forked_rev = @g.branches(@forked_project.gpid).map{|b| b.name} end - # @forked_rev = @g.branches(forked_project.gpid).map{|b| b.name} - @target_project << "#{get_user_name(@project.user_id)}/#{@project.name}" - end # Creates a merge request. diff --git a/app/views/pull_requests/_form.html.erb b/app/views/pull_requests/_form.html.erb index 9b44fa943..c7e21a7b9 100644 --- a/app/views/pull_requests/_form.html.erb +++ b/app/views/pull_requests/_form.html.erb @@ -9,15 +9,26 @@
源分支
- <%= select_tag :branch, options_for_select(@rev), :name => "source_branch", :value => "source_branch", :class => "ml30 fontGrey3 fb fl", :style => "padding:5px 0 5px 5px;" %> + <%= select_tag :branch, options_for_select(@source_rev), :name => "source_branch", :value => "source_branch", :class => "ml30 fontGrey3 fb fl", :style => "padding:5px 0 5px 5px;" %>
目标分支
- <% unless @target_project.blank? %> - <%= select_tag :branch, options_for_select(@target_project), :name => "target_project", :value => "target_project", :class => "ml30 fontGrey3 fb fl", :style => "padding:5px 0 5px 5px;", :id => "targetProject" %> + <% if @forked_project.nil? %> + <%= select_tag :branch, options_for_select(@source_project_name), :name => "target_project", :value => "target_project", + :class => "ml30 fontGrey3 fb fl", :style => "padding:5px 0 5px 5px;", :id => "targetProject" %>\ + <%= select_tag :branch, options_for_select(@source_rev), :name => "target_branch", :value => "target_branch", + :class => "ml30 fontGrey3 fb fl", :style => "padding:5px 0 5px 5px;", :id => "targetBranch" %> + <% else %> + + + <%#= select_tag :branch, options_for_select([@source_project_name, @forked_project_name]), :name => "target_project", :value => "target_project", + :class => "ml30 fontGrey3 fb fl", :style => "padding:5px 0 5px 5px;", :id => "targetProject" %> + <%#= select_tag :branch, options_for_select(@source_rev), :name => "target_branch", :value => "target_branch", + :class => "ml30 fontGrey3 fb fl", :style => "padding:5px 0 5px 5px;", :id => "targetBranch" %> <% end %> - <%= select_tag :branch, options_for_select(@rev), :name => "target_branch", :value => "target_branch", :class => "ml30 fontGrey3 fb fl", :style => "padding:5px 0 5px 5px;", :id => "targetBranch" %> -
diff --git a/public/javascripts/project.js b/public/javascripts/project.js index fa5648ffa..3918c116d 100644 --- a/public/javascripts/project.js +++ b/public/javascripts/project.js @@ -658,3 +658,25 @@ function search_tag_attachment(url,tag_name,q,course_id,sort) } } + + +function choice_branch(name, branch, source_rev, forked_rev) { + switch (name) { + case "source_project_name" : + alert(source_rev); + var branchOptions = source_rev; + break; + case "forked_project_name" : + alert(forked_rev); + var branchOptions = forked_rev; + break; + default: + var branchOptions = new Array(""); + break; + } + + branch.options.length = 0; + for (var i = 0; i < branchOptions.length; i++) { + branch.options[i] = new Option(branchOptions[i], branchOptions[i]); + } +} \ No newline at end of file