Commit e0d1fba15e86771e7ecf820d1bec68aa5c0e9cb1

Authored by Dmitriy Zaporozhets
1 parent 40af6e1a

Recent push event

app/assets/stylesheets/common.scss
@@ -733,3 +733,16 @@ li.note { @@ -733,3 +733,16 @@ li.note {
733 .chzn-container-active .chzn-single { 733 .chzn-container-active .chzn-single {
734 background:#fff; 734 background:#fff;
735 } 735 }
  736 +
  737 +/**
  738 + * Push event widget
  739 + *
  740 + */
  741 +.event_lp {
  742 + @extend .alert-info;
  743 + margin-bottom:15px;
  744 + padding:8px;
  745 + border-style: solid;
  746 + border-width: 1px;
  747 + @include border-radius(4px);
  748 +}
app/assets/stylesheets/themes/ui_modern.scss
@@ -50,13 +50,12 @@ @@ -50,13 +50,12 @@
50 } 50 }
51 } 51 }
52 52
53 - .alert {  
54 - &.alert-info {  
55 - border-color:#FDA;  
56 - background:#FED;  
57 - color:#D70;  
58 - } 53 + .alert-info {
  54 + border-color:#FDA;
  55 + background:#FED;
  56 + color:#D70;
59 } 57 }
  58 +
60 59
61 .progress .bar { 60 .progress .bar {
62 background:#D80; 61 background:#D80;
app/controllers/merge_requests_controller.rb
@@ -63,7 +63,7 @@ class MergeRequestsController < ApplicationController @@ -63,7 +63,7 @@ class MergeRequestsController < ApplicationController
63 end 63 end
64 64
65 def new 65 def new
66 - @merge_request = @project.merge_requests.new 66 + @merge_request = @project.merge_requests.new(params[:merge_request])
67 end 67 end
68 68
69 def edit 69 def edit
app/controllers/projects_controller.rb
@@ -15,6 +15,8 @@ class ProjectsController < ApplicationController @@ -15,6 +15,8 @@ class ProjectsController < ApplicationController
15 @projects = @projects.page(params[:page]).per(40) 15 @projects = @projects.page(params[:page]).per(40)
16 @events = Event.where(:project_id => current_user.projects.map(&:id)).recent.limit(20) 16 @events = Event.where(:project_id => current_user.projects.map(&:id)).recent.limit(20)
17 17
  18 + @last_push = current_user.recent_push
  19 +
18 respond_to do |format| 20 respond_to do |format|
19 format.html 21 format.html
20 format.atom { render :layout => false } 22 format.atom { render :layout => false }
@@ -69,6 +71,7 @@ class ProjectsController < ApplicationController @@ -69,6 +71,7 @@ class ProjectsController < ApplicationController
69 respond_to do |format| 71 respond_to do |format|
70 format.html do 72 format.html do
71 if @project.repo_exists? && @project.has_commits? 73 if @project.repo_exists? && @project.has_commits?
  74 + @last_push = current_user.recent_push(@project.id)
72 render :show 75 render :show
73 else 76 else
74 render "projects/empty" 77 render "projects/empty"
app/helpers/merge_requests_helper.rb
@@ -20,4 +20,15 @@ module MergeRequestsHelper @@ -20,4 +20,15 @@ module MergeRequestsHelper
20 merge_request.author_name 20 merge_request.author_name
21 end 21 end
22 end 22 end
  23 +
  24 + def new_mr_path_from_push_event(event)
  25 + new_project_merge_request_path(
  26 + event.project,
  27 + :merge_request => {
  28 + :source_branch => event.branch_name,
  29 + :target_branch => event.project.root_ref,
  30 + :title => event.branch_name.titleize
  31 + }
  32 + )
  33 + end
23 end 34 end
app/roles/account.rb
@@ -46,4 +46,13 @@ module Account @@ -46,4 +46,13 @@ module Account
46 return 100 if projects_limit.zero? 46 return 100 if projects_limit.zero?
47 (my_own_projects.count.to_f / projects_limit) * 100 47 (my_own_projects.count.to_f / projects_limit) * 100
48 end 48 end
  49 +
  50 + def recent_push project_id = nil
  51 + # Get push events not earlier than 6 hours ago
  52 + events = recent_events.code_push.where("created_at > ?", Time.now - 6.hours)
  53 + events = events.where(:project_id => project_id) if project_id
  54 +
  55 + # Take only latest one
  56 + events = events.recent.limit(1).first
  57 + end
49 end 58 end
app/views/events/_event.html.haml
1 - if event.allowed? 1 - if event.allowed?
2 - .event_feed  
3 - - if event.issue? 2 + - if event.issue?
  3 + .event_feed
4 = render "events/event_issue", :event => event 4 = render "events/event_issue", :event => event
5 - - elsif event.merge_request? 5 +
  6 + - elsif event.merge_request?
  7 + .event_feed
6 = render "events/event_merge_request", :event => event 8 = render "events/event_merge_request", :event => event
7 - - elsif event.push? 9 +
  10 + - elsif event.push?
  11 + .event_feed
8 = render "events/event_push", :event => event 12 = render "events/event_push", :event => event
  13 +
app/views/events/_event_last_push.html.haml 0 → 100644
@@ -0,0 +1,16 @@ @@ -0,0 +1,16 @@
  1 +- if event && event.branch_name && event.project.merge_requests_enabled
  2 + .event_lp
  3 + %div
  4 + = image_tag gravatar_icon(event.author_email), :class => "avatar"
  5 + %span Your last push was to
  6 + = event.ref_type
  7 + = link_to project_commits_path(event.project, :ref => event.ref_name) do
  8 + %strong= event.ref_name
  9 + at
  10 + %strong= link_to event.project.name, event.project
  11 + %span.cgray
  12 + = time_ago_in_words(event.created_at)
  13 + ago.
  14 +
  15 + = link_to new_mr_path_from_push_event(event), :title => "New Merge Request", :class => "btn small padded primary" do
  16 + Merge Request
app/views/events/_event_push.html.haml
@@ -27,3 +27,4 @@ @@ -27,3 +27,4 @@
27 - else 27 - else
28 - event.commits.each do |commit| 28 - event.commits.each do |commit|
29 = render "events/commit", :commit => commit, :project => project 29 = render "events/commit", :commit => commit, :project => project
  30 +
app/views/projects/index.html.haml
@@ -14,6 +14,7 @@ @@ -14,6 +14,7 @@
14 - else 14 - else
15 %h4.nothing_here_message Projects activity will be displayed here 15 %h4.nothing_here_message Projects activity will be displayed here
16 .side 16 .side
  17 + = render "events/event_last_push", :event => @last_push
17 .projects_box 18 .projects_box
18 %h5 19 %h5
19 Projects 20 Projects
app/views/projects/show.html.haml
@@ -24,6 +24,7 @@ @@ -24,6 +24,7 @@
24 = link_to new_project_issue_path(@project), :title => "New Issue", :class => "btn small" do 24 = link_to new_project_issue_path(@project), :title => "New Issue", :class => "btn small" do
25 Issue 25 Issue
26 26
  27 += render "events/event_last_push", :event => @last_push
27 - unless @events.blank? 28 - unless @events.blank?
28 %br 29 %br
29 %h5.cgray 30 %h5.cgray