Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-12-04 22:49:19 +0300
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-12-04 22:49:19 +0300
commita46fe875c6aea206e575e2b083bd31ed36ee1b1e (patch)
tree0b62aa051190b1a276dd0f83f671ff2be1fc7ea7 /app
parent05d713be1900988bfff9cc5a94c490519add4a62 (diff)
Feature: atom feed for user activity
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Diffstat (limited to 'app')
-rw-r--r--app/controllers/users_controller.rb7
-rw-r--r--app/views/users/show.atom.builder29
-rw-r--r--app/views/users/show.html.haml10
3 files changed, 44 insertions, 2 deletions
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index 0b442f5383a..67af1801bda 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -20,9 +20,14 @@ class UsersController < ApplicationController
# Get user activity feed for projects common for both users
@events = @user.recent_events.
- where(project_id: authorized_projects_ids).limit(20)
+ where(project_id: authorized_projects_ids).limit(30)
@title = @user.name
+
+ respond_to do |format|
+ format.html
+ format.atom { render layout: false }
+ end
end
def determine_layout
diff --git a/app/views/users/show.atom.builder b/app/views/users/show.atom.builder
new file mode 100644
index 00000000000..0d61a9e8097
--- /dev/null
+++ b/app/views/users/show.atom.builder
@@ -0,0 +1,29 @@
+xml.instruct!
+xml.feed "xmlns" => "http://www.w3.org/2005/Atom", "xmlns:media" => "http://search.yahoo.com/mrss/" do
+ xml.title "Activity feed for #{@user.name}"
+ xml.link :href => user_url(@user, :atom), :rel => "self", :type => "application/atom+xml"
+ xml.link :href => user_url(@user), :rel => "alternate", :type => "text/html"
+ xml.id projects_url
+ xml.updated @events.maximum(:updated_at).strftime("%Y-%m-%dT%H:%M:%SZ") if @events.any?
+
+ @events.each do |event|
+ if event.proper?
+ xml.entry do
+ event_link = event_feed_url(event)
+ event_title = event_feed_title(event)
+ event_summary = event_feed_summary(event)
+
+ xml.id "tag:#{request.host},#{event.created_at.strftime("%Y-%m-%d")}:#{event.id}"
+ xml.link :href => event_link
+ xml.title truncate(event_title, :length => 80)
+ xml.updated event.created_at.strftime("%Y-%m-%dT%H:%M:%SZ")
+ xml.media :thumbnail, :width => "40", :height => "40", :url => avatar_icon(event.author_email)
+ xml.author do |author|
+ xml.name event.author_name
+ xml.email event.author_email
+ end
+ xml.summary(:type => "xhtml") { |x| x << event_summary unless event_summary.nil? }
+ end
+ end
+ end
+end
diff --git a/app/views/users/show.html.haml b/app/views/users/show.html.haml
index cb49c030af2..54f2666ce5d 100644
--- a/app/views/users/show.html.haml
+++ b/app/views/users/show.html.haml
@@ -18,7 +18,15 @@
%h4 Groups:
= render 'groups', groups: @groups
%hr
- %h4 User Activity:
+ %h4
+ User Activity:
+
+ - if current_user
+ %span.rss-icon.pull-right
+ = link_to user_path(@user, :atom, { private_token: current_user.private_token }) do
+ %strong
+ %i.fa.fa-rss
+
= render @events
.col-md-4
= render 'profile', user: @user