From 5263dd4297e2ba71c40d74dcfb8511fec68e6620 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Thu, 1 Mar 2012 22:43:04 +0200 Subject: [PATCH] Events displayed on project page. \n Fixed theme issue. \n New issue, mr events enabled --- app/assets/stylesheets/common.scss | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++-------------- app/assets/stylesheets/ui_basic.scss | 1 - app/assets/stylesheets/ui_mars.scss | 3 +-- app/controllers/projects_controller.rb | 4 ++-- app/models/event.rb | 32 ++++++++++++++++++++++++++++++-- app/views/dashboard/_projects_feed.html.haml | 1 + app/views/dashboard/index.html.haml | 2 ++ app/views/events/_event.html.haml | 38 +++++++------------------------------- app/views/events/_event_new_issue.html.haml | 10 ++++++++++ app/views/events/_event_new_merge_request.html.haml | 15 +++++++++++++++ app/views/events/_event_push.html.haml | 30 ++++++++++++++++++++++++++++++ app/views/layouts/admin.html.haml | 2 +- app/views/projects/show.html.haml | 7 +++---- 13 files changed, 153 insertions(+), 57 deletions(-) create mode 100644 app/views/events/_event_new_issue.html.haml create mode 100644 app/views/events/_event_new_merge_request.html.haml create mode 100644 app/views/events/_event_push.html.haml diff --git a/app/assets/stylesheets/common.scss b/app/assets/stylesheets/common.scss index 1d20ce3..19686ac 100644 --- a/app/assets/stylesheets/common.scss +++ b/app/assets/stylesheets/common.scss @@ -610,6 +610,35 @@ p.time { .dashboard_category { margin-bottom:30px; + .ico { + background: url("images.png") no-repeat -85px -77px; + width: 19px; + height: 16px; + float: left; + position: relative; + margin-right: 10px; + top: 8px; + + &.project { + background-position: -37px -77px; + } + + &.activities { + background-position:-162px -22px; + } + &.projects { + background-position:-209px -21px; + } + } + + + h3 a { + color:#474D57; + + &:hover { + text-decoration:underline; + } + } .dashboard_block { width:700px; margin:auto; @@ -625,20 +654,6 @@ p.time { h4 { color:#666; } - &.event_feed { - min-height:40px; - border-bottom:1px solid #eee; - .avatar { - width:32px; - } - ul { - margin-left:50px; - margin-bottom:5px; - .avatar { - width:24px; - } - } - } } } } @@ -651,3 +666,25 @@ p.time { -webkit-box-shadow: 0 0 5px#888; box-shadow: 0 0 5px #888; } + +.event_feed { + min-height:40px; + border-bottom:1px solid #eee; + .avatar { + width:32px; + } + ul { + margin-left:50px; + margin-bottom:5px; + .avatar { + width:24px; + } + } + + padding: 10px 5px; + border-bottom: 1px solid #eee; + border-bottom: 1px solid rgba(0, 0, 0, 0.05); + &:last-child { border:none } + .wll:hover { background:none } +} + diff --git a/app/assets/stylesheets/ui_basic.scss b/app/assets/stylesheets/ui_basic.scss index b01e4d1..5147549 100644 --- a/app/assets/stylesheets/ui_basic.scss +++ b/app/assets/stylesheets/ui_basic.scss @@ -70,7 +70,6 @@ width:16px; height:16px; padding: 5px; - border: 1px solid #ccc; border-radius: 4px; margin: 0px; background: #eee; diff --git a/app/assets/stylesheets/ui_mars.scss b/app/assets/stylesheets/ui_mars.scss index b2230f5..a4ae4d4 100644 --- a/app/assets/stylesheets/ui_mars.scss +++ b/app/assets/stylesheets/ui_mars.scss @@ -97,14 +97,13 @@ width:16px; height:16px; padding: 5px; - border: 1px solid #888; border-radius: 4px; margin: 0px; background:#474D57 ; margin-left:20px; margin-top:4px; &:hover { - background:#f7f7f7; + background:#555; } img { width:16px; diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 26eabe5..51fd273 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -68,8 +68,8 @@ class ProjectsController < ApplicationController def show return render "projects/empty" unless @project.repo_exists? && @project.has_commits? - limit = (params[:limit] || 10).to_i - @activities = @project.activities(limit) + limit = (params[:limit] || 20).to_i + @events = @project.events.recent.limit(limit) end def files diff --git a/app/models/event.rb b/app/models/event.rb index c40de6a..6b1180d 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -21,9 +21,12 @@ class Event < ActiveRecord::Base end end - # For now only push events enabled for system + # Next events currently enabled for system + # - push + # - new issue + # - merge request def allowed? - push? + push? || new_issue? || new_merge_request? end def push? @@ -49,6 +52,28 @@ class Event < ActiveRecord::Base def pusher User.find_by_id(data[:user_id]) end + + def new_issue? + target_type == "Issue" && + action == Created + end + + def new_merge_request? + target_type == "MergeRequest" && + action == Created + end + + def issue + target if target_type == "Issue" + end + + def merge_request + target if target_type == "MergeRequest" + end + + def author + target.author + end def commits @commits ||= data[:commits].map do |commit| @@ -57,6 +82,9 @@ class Event < ActiveRecord::Base end delegate :id, :name, :email, :to => :pusher, :prefix => true, :allow_nil => true + delegate :name, :email, :to => :author, :prefix => true, :allow_nil => true + delegate :title, :to => :issue, :prefix => true, :allow_nil => true + delegate :title, :to => :merge_request, :prefix => true, :allow_nil => true end # == Schema Information # diff --git a/app/views/dashboard/_projects_feed.html.haml b/app/views/dashboard/_projects_feed.html.haml index 1d53cf7..a5fc8ce 100644 --- a/app/views/dashboard/_projects_feed.html.haml +++ b/app/views/dashboard/_projects_feed.html.haml @@ -2,6 +2,7 @@ .wll = link_to project do %h4 + %span.ico.project = project.name %small last activity at diff --git a/app/views/dashboard/index.html.haml b/app/views/dashboard/index.html.haml index c9963d7..1db8ce2 100644 --- a/app/views/dashboard/index.html.haml +++ b/app/views/dashboard/index.html.haml @@ -8,6 +8,7 @@ %div.dashboard_category %h3 + %span.ico.projects = link_to "Projects" , "#projects", :id => "projects" %small ( most recent ) @@ -59,6 +60,7 @@ - unless @events.blank? %div.dashboard_category %h3 + %span.ico.activities = link_to "Activities" , "#activities", :id => "activities" %hr diff --git a/app/views/events/_event.html.haml b/app/views/events/_event.html.haml index b6fd425..23a8601 100644 --- a/app/views/events/_event.html.haml +++ b/app/views/events/_event.html.haml @@ -1,32 +1,8 @@ - if event.allowed? - .wll.event_feed - - if event.push? - - if event.new_branch? - = image_tag gravatar_icon(event.pusher_email), :class => "avatar" - %strong #{event.pusher_name} - pushed new branch - = link_to project_commits_path(event.project, :ref => event.branch_name) do - %strong= event.branch_name - at - %strong= link_to event.project.name, event.project - %span.cgray - = time_ago_in_words(event.created_at) - ago. - - else - = image_tag gravatar_icon(event.pusher_email), :class => "avatar" - %strong #{event.pusher_name} - pushed to - = link_to project_commits_path(event.project, :ref => event.branch_name) do - %strong= event.branch_name - at - %strong= link_to event.project.name, event.project - %span.cgray - = time_ago_in_words(event.created_at) - ago. - - if event.commits.count > 1 - = link_to compare_project_commits_path(event.project, :from => event.commits.first.prev_commit_id, :to => event.commits.last.id) do - Compare #{event.commits.first.commit.id[0..8]}...#{event.commits.last.id[0..8]} - - @project = event.project - %ul.unstyled - = render event.commits - + .event_feed + - if event.new_issue? + = render "events/event_new_issue", :event => event + - if event.new_merge_request? + = render "events/event_new_merge_request", :event => event + - elsif event.push? + = render "events/event_push", :event => event diff --git a/app/views/events/_event_new_issue.html.haml b/app/views/events/_event_new_issue.html.haml new file mode 100644 index 0000000..477ca48 --- /dev/null +++ b/app/views/events/_event_new_issue.html.haml @@ -0,0 +1,10 @@ += image_tag gravatar_icon(event.author_email), :class => "avatar" +%strong #{event.author_name} +created new issue += link_to project_issue_path(event.project, event.issue) do + %strong= truncate event.issue_title +at +%strong= link_to event.project.name, event.project +%span.cgray + = time_ago_in_words(event.created_at) + ago. diff --git a/app/views/events/_event_new_merge_request.html.haml b/app/views/events/_event_new_merge_request.html.haml new file mode 100644 index 0000000..e689535 --- /dev/null +++ b/app/views/events/_event_new_merge_request.html.haml @@ -0,0 +1,15 @@ += image_tag gravatar_icon(event.author_email), :class => "avatar" +%strong #{event.author_name} +requested merge += link_to project_merge_request_path(event.project, event.merge_request) do + %strong= truncate event.merge_request_title +at +%strong= link_to event.project.name, event.project +%span.cgray + = time_ago_in_words(event.created_at) + ago. +%br +%span.label= event.merge_request.source_branch +→ +%span.label= event.merge_request.target_branch + diff --git a/app/views/events/_event_push.html.haml b/app/views/events/_event_push.html.haml new file mode 100644 index 0000000..705e8a0 --- /dev/null +++ b/app/views/events/_event_push.html.haml @@ -0,0 +1,30 @@ +- if event.new_branch? + = image_tag gravatar_icon(event.pusher_email), :class => "avatar" + %strong #{event.pusher_name} + pushed new branch + = link_to project_commits_path(event.project, :ref => event.branch_name) do + %strong= event.branch_name + at + %strong= link_to event.project.name, event.project + %span.cgray + = time_ago_in_words(event.created_at) + ago. +- else + = image_tag gravatar_icon(event.pusher_email), :class => "avatar" + %strong #{event.pusher_name} + pushed to + = link_to project_commits_path(event.project, :ref => event.branch_name) do + %strong= event.branch_name + at + %strong= link_to event.project.name, event.project + %span.cgray + = time_ago_in_words(event.created_at) + ago. + - if event.commits.count > 1 + = link_to compare_project_commits_path(event.project, :from => event.commits.first.prev_commit_id, :to => event.commits.last.id) do + Compare #{event.commits.first.commit.id[0..8]}...#{event.commits.last.id[0..8]} + - @project = event.project + %ul.unstyled + = render event.commits + + diff --git a/app/views/layouts/admin.html.haml b/app/views/layouts/admin.html.haml index df47166..78d3cb8 100644 --- a/app/views/layouts/admin.html.haml +++ b/app/views/layouts/admin.html.haml @@ -1,7 +1,7 @@ !!! 5 %html{ :lang => "en"} = render "layouts/head" - %body.ui_basic.admin + %body{:class => "#{app_theme} admin"} = render "layouts/flash" = render "layouts/head_panel", :title => "Admin area" .container diff --git a/app/views/projects/show.html.haml b/app/views/projects/show.html.haml index 5fbed30..c30837b 100644 --- a/app/views/projects/show.html.haml +++ b/app/views/projects/show.html.haml @@ -14,9 +14,8 @@ = text_field_tag :project_clone, @project.url_to_repo, :class => "xlarge one_click_select git_clone_url" = simple_format @project.description -- unless @activities.blank? - .ui-box - %h5.cgray Recent Activity - .content_list= render "feed" +- unless @events.blank? + %h5.cgray Recent Activity + .content_list= render @events -- libgit2 0.21.2