Commit ecdf778e authored by randx's avatar randx

Merge branch 'public_submission_milestones_for_mr' of...

Merge branch 'public_submission_milestones_for_mr' of https://github.com/piffio/gitlabhq into piffio-public_submission_milestones_for_mr

Conflicts:
	app/views/merge_requests/_form.html.haml
parents 50a6c614 263282de
...@@ -115,4 +115,15 @@ var MergeRequest = { ...@@ -115,4 +115,15 @@ var MergeRequest = {
$(".merge_in_progress").hide(); $(".merge_in_progress").hide();
$(".automerge_widget.already_cannot_be_merged").show(); $(".automerge_widget.already_cannot_be_merged").show();
} }
};
/*
* Filter merge requests
*/
function merge_requestsPage() {
$("#assignee_id").chosen();
$("#milestone_id").chosen();
$("#milestone_id, #assignee_id").on("change", function(){
$(this).closest("form").submit();
});
} }
...@@ -121,3 +121,20 @@ li.merge_request { ...@@ -121,3 +121,20 @@ li.merge_request {
.mr_direction_tip { .mr_direction_tip {
margin-top:40px margin-top:40px
} }
.merge_requests_form_box {
@extend .main_box;
.merge_requests_middle_box {
@extend .middle_box_content;
height:30px;
.merge_requests_assignee {
@extend .span6;
float:left;
}
.merge_requests_milestone {
@extend .span4;
float:left;
}
}
}
...@@ -2,7 +2,7 @@ class MergeRequestsLoadContext < BaseContext ...@@ -2,7 +2,7 @@ class MergeRequestsLoadContext < BaseContext
def execute def execute
type = params[:f] type = params[:f]
merge_requests = project.merge_requests merge_requests = @project.merge_requests
merge_requests = case type merge_requests = case type
when 'all' then merge_requests when 'all' then merge_requests
...@@ -12,5 +12,18 @@ class MergeRequestsLoadContext < BaseContext ...@@ -12,5 +12,18 @@ class MergeRequestsLoadContext < BaseContext
end.page(params[:page]).per(20) end.page(params[:page]).per(20)
merge_requests.includes(:author, :project).order("closed, created_at desc") merge_requests.includes(:author, :project).order("closed, created_at desc")
@merge_requests = merge_requests
# Filter by specific assignee_id (or lack thereof)?
if params[:assignee_id].present?
@merge_requests = merge_requests.where(assignee_id: (params[:assignee_id] == '0' ? nil : params[:assignee_id]))
end
# Filter by specific milestone_id (or lack thereof)?
if params[:milestone_id].present?
@merge_requests = merge_requests.where(milestone_id: (params[:milestone_id] == '0' ? nil : params[:milestone_id]))
end
@merge_requests
end end
end end
...@@ -32,6 +32,7 @@ class MilestonesController < ProjectResourceController ...@@ -32,6 +32,7 @@ class MilestonesController < ProjectResourceController
def show def show
@issues = @milestone.issues @issues = @milestone.issues
@users = @milestone.participants @users = @milestone.participants
@merge_requests = @milestone.merge_requests
respond_to do |format| respond_to do |format|
format.html format.html
......
...@@ -4,11 +4,13 @@ class MergeRequest < ActiveRecord::Base ...@@ -4,11 +4,13 @@ class MergeRequest < ActiveRecord::Base
include IssueCommonality include IssueCommonality
include Votes include Votes
attr_accessible :title, :assignee_id, :closed, :target_branch, :source_branch, attr_accessible :title, :assignee_id, :closed, :target_branch, :source_branch, :milestone_id,
:author_id_of_changes :author_id_of_changes
attr_accessor :should_remove_source_branch attr_accessor :should_remove_source_branch
belongs_to :milestone
BROKEN_DIFF = "--broken-diff" BROKEN_DIFF = "--broken-diff"
UNCHECKED = 1 UNCHECKED = 1
...@@ -26,6 +28,10 @@ class MergeRequest < ActiveRecord::Base ...@@ -26,6 +28,10 @@ class MergeRequest < ActiveRecord::Base
where("source_branch LIKE :branch OR target_branch LIKE :branch", branch: branch_name) where("source_branch LIKE :branch OR target_branch LIKE :branch", branch: branch_name)
end end
def self.find_all_by_milestone(milestone)
where("milestone_id = :milestone_id", milestone_id: milestone)
end
def human_state def human_state
states = { states = {
CAN_BE_MERGED => "can_be_merged", CAN_BE_MERGED => "can_be_merged",
...@@ -212,5 +218,6 @@ end ...@@ -212,5 +218,6 @@ end
# st_diffs :text(4294967295 # st_diffs :text(4294967295
# merged :boolean default(FALSE), not null # merged :boolean default(FALSE), not null
# state :integer default(1), not null # state :integer default(1), not null
# milestone_id :integer
# #
...@@ -3,6 +3,7 @@ class Milestone < ActiveRecord::Base ...@@ -3,6 +3,7 @@ class Milestone < ActiveRecord::Base
belongs_to :project belongs_to :project
has_many :issues has_many :issues
has_many :merge_requests
validates :title, presence: true validates :title, presence: true
validates :project, presence: true validates :project, presence: true
......
...@@ -28,16 +28,22 @@ ...@@ -28,16 +28,22 @@
%h4.cdark 2. Fill info %h4.cdark 2. Fill info
.clearfix .clearfix
.main_box .merge_requests_form_box
.top_box_content .top_box_content
= f.label :title do = f.label :title do
%strong= "Title *" %strong= "Title *"
.input= f.text_field :title, class: "input-xxlarge pad js-gfm-input", maxlength: 255, rows: 5 .input= f.text_field :title, class: "input-xxlarge pad js-gfm-input", maxlength: 255, rows: 5
.middle_box_content .merge_requests_middle_box
.merge_requests_assignee
= f.label :assignee_id do = f.label :assignee_id do
%i.icon-user %i.icon-user
Assign to Assign to
.input= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { include_blank: "Select user" }, {class: 'chosen span3'}) .input= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { include_blank: "Select user" }, {class: 'chosen span3'})
.merge_requests_milestone
= f.label :milestone_id do
%i.icon-time
Milestone
.input= f.select(:milestone_id, @project.milestones.active.all.collect {|p| [ p.title, p.id ] }, { include_blank: "Select milestone" }, {class: 'chosen'})
.control-group .control-group
......
...@@ -10,6 +10,10 @@ ...@@ -10,6 +10,10 @@
%span.btn.small.disabled.grouped %span.btn.small.disabled.grouped
%i.icon-comment %i.icon-comment
= merge_request.mr_and_commit_notes.count = merge_request.mr_and_commit_notes.count
- if merge_request.milestone_id?
%span.btn.small.disabled.grouped
%i.icon-time
= merge_request.project.milestones.find(merge_request.milestone_id).title
%span.btn.small.disabled.grouped %span.btn.small.disabled.grouped
= merge_request.source_branch = merge_request.source_branch
&rarr; &rarr;
......
...@@ -9,19 +9,26 @@ ...@@ -9,19 +9,26 @@
.ui-box .ui-box
.title .title
.left
%ul.nav.nav-pills %ul.nav.nav-pills
%li{class: ("active" if (params[:f] == 'open' || !params[:f]))} %li{class: ("active" if (params[:f] == 'open' || !params[:f]))}
= link_to project_merge_requests_path(@project, f: 'open') do = link_to project_merge_requests_path(@project, f: 'open', milestone_id: params[:milestone_id]) do
Open Open
%li{class: ("active" if params[:f] == "closed")} %li{class: ("active" if params[:f] == "closed")}
= link_to project_merge_requests_path(@project, f: "closed") do = link_to project_merge_requests_path(@project, f: "closed", milestone_id: params[:milestone_id]) do
Closed Closed
%li{class: ("active" if params[:f] == 'assigned-to-me')} %li{class: ("active" if params[:f] == 'assigned-to-me')}
= link_to project_merge_requests_path(@project, f: 'assigned-to-me') do = link_to project_merge_requests_path(@project, f: 'assigned-to-me', milestone_id: params[:milestone_id]) do
To Me To Me
%li{class: ("active" if params[:f] == 'all')} %li{class: ("active" if params[:f] == 'all')}
= link_to project_merge_requests_path(@project, f: 'all') do = link_to project_merge_requests_path(@project, f: 'all', milestone_id: params[:milestone_id]) do
All All
.right
= form_tag project_merge_requests_path(@project), id: "merge_requests_search_form", method: :get, class: :right do
= select_tag(:assignee_id, options_from_collection_for_select([unassigned_filter] + @project.users.all, "id", "name", params[:assignee_id]), prompt: "Assignee")
= select_tag(:milestone_id, options_from_collection_for_select([unassigned_filter] + @project.milestones.order("id desc").all, "id", "title", params[:milestone_id]), prompt: "Milestone")
= hidden_field_tag :f, params[:f]
.clearfix
%ul.unstyled %ul.unstyled
= render @merge_requests = render @merge_requests
...@@ -35,3 +42,7 @@ ...@@ -35,3 +42,7 @@
.span4.right .span4.right
%span.cgray.right #{@merge_requests.total_count} merge requests for this filter %span.cgray.right #{@merge_requests.total_count} merge requests for this filter
:javascript
$(function() {
merge_requestsPage();
})
...@@ -14,9 +14,13 @@ ...@@ -14,9 +14,13 @@
%strong.author= link_to_merge_request_author(@merge_request) %strong.author= link_to_merge_request_author(@merge_request)
- if @merge_request.assignee - if @merge_request.assignee
%cite.cgray and currently assigned to %cite.cgray , currently assigned to
= image_tag gravatar_icon(@merge_request.assignee_email), width: 16, class: "lil_av" = image_tag gravatar_icon(@merge_request.assignee_email), width: 16, class: "lil_av"
%strong.author= link_to_merge_request_assignee(@merge_request) %strong.author= link_to_merge_request_assignee(@merge_request)
- if @merge_request.milestone
- milestone = @merge_request.milestone
%cite.cgray and attached to milestone
%strong= link_to_gfm truncate(milestone.title, length: 20), project_milestone_path(milestone.project, milestone)
- if @merge_request.closed - if @merge_request.closed
......
...@@ -4,6 +4,10 @@ ...@@ -4,6 +4,10 @@
%span.btn.small.disabled.grouped= pluralize milestone.issues.count, 'issues' %span.btn.small.disabled.grouped= pluralize milestone.issues.count, 'issues'
- if milestone.issues.count > 0 - if milestone.issues.count > 0
= link_to 'Browse Issues', project_issues_path(milestone.project, milestone_id: milestone.id), class: "btn small grouped" = link_to 'Browse Issues', project_issues_path(milestone.project, milestone_id: milestone.id), class: "btn small grouped"
- if milestone.merge_requests.any?
%span.btn.small.disabled.grouped= pluralize milestone.issues.count, 'Merge Requests'
- if milestone.merge_requests.count > 0
= link_to 'Browse Merge Requests', project_merge_requests_path(milestone.project, milestone_id: milestone.id), class: "btn small grouped"
- if can? current_user, :admin_milestone, milestone.project - if can? current_user, :admin_milestone, milestone.project
= link_to 'Edit', edit_project_milestone_path(milestone.project, milestone), class: "btn small edit-milestone-link grouped" = link_to 'Edit', edit_project_milestone_path(milestone.project, milestone), class: "btn small edit-milestone-link grouped"
%h4 %h4
......
...@@ -60,6 +60,22 @@ ...@@ -60,6 +60,22 @@
= link_to_gfm truncate(issue.title, length: 60), [@project, issue] = link_to_gfm truncate(issue.title, length: 60), [@project, issue]
%br %br
.span6
%table.milestone-merge_requests-filter
%thead
%th
%ul.nav.nav-pills
%li.active= link_to('Open Merge Requests', '#')
%li=link_to('All Merge Requests', '#')
- @merge_requests.each do |merge_request|
%tr{data: {closed: merge_request.closed}}
%td
= link_to [@project, merge_request] do
%span.badge.badge-info ##{merge_request.id}
&ndash;
= link_to_gfm truncate(merge_request.title, length: 60), [@project, merge_request]
%br
.span6 .span6
%table %table
%thead %thead
......
class AddMilestoneIdToMergeRequests < ActiveRecord::Migration
def change
add_column :merge_requests, :milestone_id, :integer, :null => true
end
end
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
# #
# It's strongly recommended to check this file into your version control system. # It's strongly recommended to check this file into your version control system.
ActiveRecord::Schema.define(:version => 20121009205010) do ActiveRecord::Schema.define(:version => 20121026114600) do
create_table "events", :force => true do |t| create_table "events", :force => true do |t|
t.string "target_type" t.string "target_type"
...@@ -73,6 +73,7 @@ ActiveRecord::Schema.define(:version => 20121009205010) do ...@@ -73,6 +73,7 @@ ActiveRecord::Schema.define(:version => 20121009205010) do
t.text "st_diffs", :limit => 2147483647 t.text "st_diffs", :limit => 2147483647
t.boolean "merged", :default => false, :null => false t.boolean "merged", :default => false, :null => false
t.integer "state", :default => 1, :null => false t.integer "state", :default => 1, :null => false
t.integer "milestone_id"
end end
add_index "merge_requests", ["project_id"], :name => "index_merge_requests_on_project_id" add_index "merge_requests", ["project_id"], :name => "index_merge_requests_on_project_id"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment