OSDN Git Service

Events displayed on project page. \n Fixed theme issue. \n New issue, mr events enabled
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Thu, 1 Mar 2012 20:43:04 +0000 (22:43 +0200)
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Thu, 1 Mar 2012 20:43:04 +0000 (22:43 +0200)
13 files changed:
app/assets/stylesheets/common.scss
app/assets/stylesheets/ui_basic.scss
app/assets/stylesheets/ui_mars.scss
app/controllers/projects_controller.rb
app/models/event.rb
app/views/dashboard/_projects_feed.html.haml
app/views/dashboard/index.html.haml
app/views/events/_event.html.haml
app/views/events/_event_new_issue.html.haml [new file with mode: 0644]
app/views/events/_event_new_merge_request.html.haml [new file with mode: 0644]
app/views/events/_event_push.html.haml [new file with mode: 0644]
app/views/layouts/admin.html.haml
app/views/projects/show.html.haml

index 1d20ce3..19686ac 100644 (file)
@@ -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 }
+}
+
index b01e4d1..5147549 100644 (file)
@@ -70,7 +70,6 @@
           width:16px;
           height:16px;
           padding: 5px;
-          border: 1px solid #ccc;
           border-radius: 4px;
           margin: 0px;
           background: #eee;
index b2230f5..a4ae4d4 100644 (file)
           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;
index 26eabe5..51fd273 100644 (file)
@@ -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
index c40de6a..6b1180d 100644 (file)
@@ -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
 #
index 1d53cf7..a5fc8ce 100644 (file)
@@ -2,6 +2,7 @@
   .wll
     = link_to project do 
       %h4
+        %span.ico.project
         = project.name
         %small
           last activity at 
index c9963d7..1db8ce2 100644 (file)
@@ -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
index b6fd425..23a8601 100644 (file)
@@ -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 (file)
index 0000000..477ca48
--- /dev/null
@@ -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 (file)
index 0000000..e689535
--- /dev/null
@@ -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
+&rarr;
+%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 (file)
index 0000000..705e8a0
--- /dev/null
@@ -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
+
+
index df47166..78d3cb8 100644 (file)
@@ -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
index 5fbed30..c30837b 100644 (file)
@@ -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