From e0d1fba15e86771e7ecf820d1bec68aa5c0e9cb1 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Tue, 12 Jun 2012 17:43:16 +0300 Subject: Recent push event --- app/assets/stylesheets/common.scss | 13 +++++++++++++ app/assets/stylesheets/themes/ui_modern.scss | 11 +++++------ app/controllers/merge_requests_controller.rb | 2 +- app/controllers/projects_controller.rb | 3 +++ app/helpers/merge_requests_helper.rb | 11 +++++++++++ app/roles/account.rb | 9 +++++++++ app/views/events/_event.html.haml | 13 +++++++++---- app/views/events/_event_last_push.html.haml | 16 ++++++++++++++++ app/views/events/_event_push.html.haml | 1 + app/views/projects/index.html.haml | 1 + app/views/projects/show.html.haml | 1 + 11 files changed, 70 insertions(+), 11 deletions(-) create mode 100644 app/views/events/_event_last_push.html.haml (limited to 'app') diff --git a/app/assets/stylesheets/common.scss b/app/assets/stylesheets/common.scss index 5ce1b64c850..f7c24191c4f 100644 --- a/app/assets/stylesheets/common.scss +++ b/app/assets/stylesheets/common.scss @@ -733,3 +733,16 @@ li.note { .chzn-container-active .chzn-single { background:#fff; } + +/** + * Push event widget + * + */ +.event_lp { + @extend .alert-info; + margin-bottom:15px; + padding:8px; + border-style: solid; + border-width: 1px; + @include border-radius(4px); +} diff --git a/app/assets/stylesheets/themes/ui_modern.scss b/app/assets/stylesheets/themes/ui_modern.scss index d0f32a7f140..fc4aabae400 100644 --- a/app/assets/stylesheets/themes/ui_modern.scss +++ b/app/assets/stylesheets/themes/ui_modern.scss @@ -50,13 +50,12 @@ } } - .alert { - &.alert-info { - border-color:#FDA; - background:#FED; - color:#D70; - } + .alert-info { + border-color:#FDA; + background:#FED; + color:#D70; } + .progress .bar { background:#D80; diff --git a/app/controllers/merge_requests_controller.rb b/app/controllers/merge_requests_controller.rb index c4bbc747dc7..54227fc2c80 100644 --- a/app/controllers/merge_requests_controller.rb +++ b/app/controllers/merge_requests_controller.rb @@ -63,7 +63,7 @@ class MergeRequestsController < ApplicationController end def new - @merge_request = @project.merge_requests.new + @merge_request = @project.merge_requests.new(params[:merge_request]) end def edit diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 2da97098719..d049ce56f88 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -15,6 +15,8 @@ class ProjectsController < ApplicationController @projects = @projects.page(params[:page]).per(40) @events = Event.where(:project_id => current_user.projects.map(&:id)).recent.limit(20) + @last_push = current_user.recent_push + respond_to do |format| format.html format.atom { render :layout => false } @@ -69,6 +71,7 @@ class ProjectsController < ApplicationController respond_to do |format| format.html do if @project.repo_exists? && @project.has_commits? + @last_push = current_user.recent_push(@project.id) render :show else render "projects/empty" diff --git a/app/helpers/merge_requests_helper.rb b/app/helpers/merge_requests_helper.rb index afdf65bd568..96e0ab4dd5a 100644 --- a/app/helpers/merge_requests_helper.rb +++ b/app/helpers/merge_requests_helper.rb @@ -20,4 +20,15 @@ module MergeRequestsHelper merge_request.author_name end end + + def new_mr_path_from_push_event(event) + new_project_merge_request_path( + event.project, + :merge_request => { + :source_branch => event.branch_name, + :target_branch => event.project.root_ref, + :title => event.branch_name.titleize + } + ) + end end diff --git a/app/roles/account.rb b/app/roles/account.rb index 62492b83b9b..8ff5c613e51 100644 --- a/app/roles/account.rb +++ b/app/roles/account.rb @@ -46,4 +46,13 @@ module Account return 100 if projects_limit.zero? (my_own_projects.count.to_f / projects_limit) * 100 end + + def recent_push project_id = nil + # Get push events not earlier than 6 hours ago + events = recent_events.code_push.where("created_at > ?", Time.now - 6.hours) + events = events.where(:project_id => project_id) if project_id + + # Take only latest one + events = events.recent.limit(1).first + end end diff --git a/app/views/events/_event.html.haml b/app/views/events/_event.html.haml index 6321df6386c..b3db83c26dd 100644 --- a/app/views/events/_event.html.haml +++ b/app/views/events/_event.html.haml @@ -1,8 +1,13 @@ - if event.allowed? - .event_feed - - if event.issue? + - if event.issue? + .event_feed = render "events/event_issue", :event => event - - elsif event.merge_request? + + - elsif event.merge_request? + .event_feed = render "events/event_merge_request", :event => event - - elsif event.push? + + - elsif event.push? + .event_feed = render "events/event_push", :event => event + diff --git a/app/views/events/_event_last_push.html.haml b/app/views/events/_event_last_push.html.haml new file mode 100644 index 00000000000..95ae01bd49e --- /dev/null +++ b/app/views/events/_event_last_push.html.haml @@ -0,0 +1,16 @@ +- if event && event.branch_name && event.project.merge_requests_enabled + .event_lp + %div + = image_tag gravatar_icon(event.author_email), :class => "avatar" + %span Your last push was to + = event.ref_type + = link_to project_commits_path(event.project, :ref => event.ref_name) do + %strong= event.ref_name + at + %strong= link_to event.project.name, event.project + %span.cgray + = time_ago_in_words(event.created_at) + ago. + + = link_to new_mr_path_from_push_event(event), :title => "New Merge Request", :class => "btn small padded primary" do + Merge Request diff --git a/app/views/events/_event_push.html.haml b/app/views/events/_event_push.html.haml index 13ef0f8f839..3aadd226614 100644 --- a/app/views/events/_event_push.html.haml +++ b/app/views/events/_event_push.html.haml @@ -27,3 +27,4 @@ - else - event.commits.each do |commit| = render "events/commit", :commit => commit, :project => project + diff --git a/app/views/projects/index.html.haml b/app/views/projects/index.html.haml index a8bc8ef31b3..3a77e39d645 100644 --- a/app/views/projects/index.html.haml +++ b/app/views/projects/index.html.haml @@ -14,6 +14,7 @@ - else %h4.nothing_here_message Projects activity will be displayed here .side + = render "events/event_last_push", :event => @last_push .projects_box %h5 Projects diff --git a/app/views/projects/show.html.haml b/app/views/projects/show.html.haml index 22fbd9d2e95..9ecbce38658 100644 --- a/app/views/projects/show.html.haml +++ b/app/views/projects/show.html.haml @@ -24,6 +24,7 @@ = link_to new_project_issue_path(@project), :title => "New Issue", :class => "btn small" do Issue += render "events/event_last_push", :event => @last_push - unless @events.blank? %br %h5.cgray -- cgit v1.2.3