Merge pull request #298 from warpc/265-activity_feed_messages

[Refs #265] Restyle comments and issues feeds messages, refactoring, fix bugs
This commit is contained in:
Vladimir Sharshov 2012-03-14 10:29:10 -07:00
commit 79e56eec52
13 changed files with 67 additions and 48 deletions

View File

@ -15,8 +15,8 @@ class CommentsController < ApplicationController
@comment = @commentable.comments.build(params[:comment]) if @commentable.class == Issue
if @commentable.class == Grit::Commit
@comment = Comment.new(params[:comment].merge(:commentable_id => @commentable.id.hex, :commentable_type => @commentable.class.name))
@comment.project = @project
end
@comment.project = @project
@comment.user_id = current_user.id
if @comment.save
flash[:notice] = I18n.t("flash.comment.saved")

View File

@ -19,7 +19,7 @@ class ActivityFeedObserver < ActiveRecord::Observer
:user => recipient,
:kind => 'new_issue_notification',
:data => {:user_name => record.creator.name, :user_email => record.creator.email, :user_id => record.creator_id,:issue_serial_id => record.serial_id,
:issue_title => record.title, :project_id => record.project.id, :project_name => record.project.name}
:issue_title => record.title, :project_id => record.project.id, :project_name => record.project.name, :project_owner => record.project.owner.uname}
)
end
@ -29,7 +29,7 @@ class ActivityFeedObserver < ActiveRecord::Observer
:user => record.user,
:kind => 'issue_assign_notification',
:data => {:user_name => record.creator.name, :user_email => record.creator.email, :user_id => record.creator_id, :issue_serial_id => record.serial_id,
:project_id => record.project.id, :issue_title => record.title, :project_name => record.project.name}
:project_id => record.project.id, :issue_title => record.title, :project_name => record.project.name, :project_owner => record.project.owner.uname}
)
end
@ -42,8 +42,9 @@ class ActivityFeedObserver < ActiveRecord::Observer
ActivityFeed.create(
:user => subscribe.user,
:kind => 'new_comment_notification',
:data => {:user_name => record.user.name, :user_email => record.user.email, :user_id => record.user_id, :comment_body => record.body, :issue_title => record.commentable.title,
:issue_serial_id => record.commentable.serial_id, :project_id => record.commentable.project.id, :comment_id => record.id}
:data => {:user_name => record.user.name, :user_email => record.user.email, :user_id => record.user_id, :comment_body => record.body,
:issue_title => record.commentable.title, :issue_serial_id => record.commentable.serial_id, :project_id => record.commentable.project.id,
:comment_id => record.id, :project_name => record.project.name, :project_owner => record.project.owner.uname}
)
end
end
@ -51,12 +52,18 @@ class ActivityFeedObserver < ActiveRecord::Observer
subscribes = Subscribe.comment_subscribes(record).where(:status => true)
subscribes.each do |subscribe|
next if record.own_comment?(subscribe.user)
UserMailer.delay.new_comment_notification(record, subscribe.user) if subscribe.user.notifier.can_notify
if subscribe.user.notifier.can_notify and
( (subscribe.project.owner?(subscribe.user) && subscribe.user.notifier.new_comment_commit_repo_owner) or
(subscribe.user.commentor?(record.commentable) && subscribe.user.notifier.new_comment_commit_commentor) or
(subscribe.user.committer?(record.commentable) && subscribe.user.notifier.new_comment_commit_owner) )
UserMailer.delay.new_comment_notification(record, subscribe.user)
end
ActivityFeed.create(
:user => subscribe.user,
:kind => 'new_comment_commit_notification',
:data => {:user_name => record.user.name, :user_email => record.user.email, :user_id => record.user_id, :comment_body => record.body, :commit_message => record.commentable.message.encode_to_default,
:commit_id => record.commentable.id, :project_id => record.project.id, :comment_id => record.id}
:data => {:user_name => record.user.name, :user_email => record.user.email, :user_id => record.user_id, :comment_body => record.body,
:commit_message => record.commentable.message.encode_to_default, :commit_id => record.commentable.id,
:project_id => record.project.id, :comment_id => record.id, :project_name => record.project.name, :project_owner => record.project.owner.uname}
)
end
end
@ -73,11 +80,13 @@ class ActivityFeedObserver < ActiveRecord::Observer
if change_type == 'delete'
kind = 'git_delete_branch_notification'
options = {:project_id => record.project.id, :project_name => record.project.name, :branch_name => branch_name, :change_type => change_type}
options = {:project_id => record.project.id, :project_name => record.project.name, :branch_name => branch_name,
:change_type => change_type, :project_owner => record.project.owner.uname}
else
kind = 'git_new_push_notification'
options = {:project_id => record.project.id, :project_name => record.project.name, :last_commits => last_commits, :branch_name => branch_name,
:change_type => change_type, :user_email => record.project.git_repository.repo.log(branch_name, nil).first.author.email}
:change_type => change_type, :user_email => record.project.git_repository.repo.log(branch_name, nil).first.author.email,
:project_owner => record.project.owner.uname}
options.merge!({:user_id => first_commiter.id, :user_name => first_commiter.name}) if first_commiter
end
@ -100,7 +109,8 @@ class ActivityFeedObserver < ActiveRecord::Observer
ActivityFeed.create(
:user => User.find(recipient),#record.user,
:kind => 'wiki_new_commit_notification',
:data => {:user_id => actor.id, :user_name => actor.name, :user_email => actor.email, :project_id => project.id, :project_name => project_name, :commit_sha => commit_sha}
:data => {:user_id => actor.id, :user_name => actor.name, :user_email => actor.email, :project_id => project.id,
:project_name => project_name, :commit_sha => commit_sha, :project_owner => project.owner.uname}
)
end
end
@ -114,7 +124,8 @@ class ActivityFeedObserver < ActiveRecord::Observer
ActivityFeed.create(
:user => record.user,
:kind => 'issue_assign_notification',
:data => {:user_name => record.user.name, :user_email => record.user.email, :issue_serial_id => record.serial_id, :project_id => record.project.id, :issue_title => record.title}
:data => {:user_name => record.user.name, :user_email => record.user.email, :issue_serial_id => record.serial_id, :issue_title => record.title,
:project_id => record.project.id, :project_name => record.project.name, :project_owner => record.project.owner.uname}
)
end
end

View File

@ -19,10 +19,7 @@ class Subscribe < ActiveRecord::Base
def self.subscribed_to_commit?(project, user, commit)
subscribe = user.subscribes.where(:subscribeable_id => commit.id.hex, :subscribeable_type => commit.class.name, :project_id => project.id).first
return subscribe.subscribed? if subscribe # return status if already subscribe present
# return status by settings
(project.owner?(user) && user.notifier.new_comment_commit_repo_owner) or
(user.commentor?(commit) && user.notifier.new_comment_commit_commentor) or
(user.committer?(commit) && user.notifier.new_comment_commit_owner)
true
end
def self.subscribe_to_commit(options)

View File

@ -1,6 +1,8 @@
.top
%span= t('notifications.bodies.delete_branch', {:branch_name => branch_name, :project_name => project_name})
= activity_feed.created_at
.text
%span
= t('notifications.bodies.delete_branch', :branch_name => branch_name)
= raw t("notifications.bodies.project", :project_link => link_to("#{project_owner}/#{project_name}", project_path(project_id)) )
.both
%span.date= activity_feed.created_at
.both
.fulltext
= link_to(project_name, project_path(project_id))

View File

@ -4,12 +4,11 @@
= image_tag(avatar_url_by_email(user_email, :small), :alt => 'avatar')
.text
%span
= raw t("notifications.bodies.#{change_type}_branch", {:branch_name => branch_name})
= raw t("notifications.bodies.project", :project_link => link_to(project_name, project_path(project_id)))
= raw t("notifications.bodies.#{change_type}_branch", {:branch_name => branch_name, :user_link => defined?(user_name) ? link_to(user_name, user_path(user_id)) : user_email})
= raw t("notifications.bodies.project", :project_link => link_to("#{project_owner}/#{project_name}", project_path(project_id)) )
.both
%span.date= activity_feed.created_at
.both
%br
%span.subject
- last_commits.each do |commit|
= link_to commit[0], commit_path(project_id, commit[0])

View File

@ -1,10 +1,8 @@
.top
.image
= image_tag(avatar_url_by_email(activity_feed.user.email, :small), :alt => 'avatar')
.text
%span
= raw t("notifications.bodies.issue_assign_notification", { :issue_link => link_to(issue_title, project_issue_path(project_id, issue_serial_id))})
= raw t("notifications.bodies.project", :project_link => link_to(project_name, project_path(project_id))) if defined? project_name
= raw t("notifications.bodies.project", :project_link => link_to("#{project_owner}/#{project_name}", project_path(project_id)) )
.both
%span.date= activity_feed.created_at
.both

View File

@ -4,8 +4,9 @@
.text
%span
= raw t("notifications.bodies.new_comment_notification.title", :user_link => link_to(user_name, user_path(user_id)) )
= raw t("notifications.bodies.new_comment_notification.commit_content", {:commit_link => link_to(commit_message, commit_path(project_id, commit_id))})
= raw t("notifications.bodies.new_comment_notification.commit_content", {:commit_link => link_to(commit_message, commit_path(project_id, commit_id) + "#comment##{comment_id}")})
= raw t("notifications.bodies.project", :project_link => link_to("#{project_owner}/#{project_name}", project_path(project_id)) )
.both
%span.date= activity_feed.created_at
.both
%span.subject= link_to comment_body, commit_path(project_id, commit_id) + (defined?(comment_id) ? "#comment##{comment_id}" : '')
%span.subject= comment_body

View File

@ -4,8 +4,9 @@
.text
%span
= raw t("notifications.bodies.new_comment_notification.title", {:user_link => link_to(user_name, user_path(user_id))})
= raw t("notifications.bodies.new_comment_notification.content", {:issue_link => link_to(issue_title, project_issue_path(project_id, issue_serial_id))})
= raw t("notifications.bodies.new_comment_notification.content", {:issue_link => link_to(issue_title, project_issue_path(project_id, issue_serial_id) + "#comment##{comment_id}")})
= raw t("notifications.bodies.project", :project_link => link_to("#{project_owner}/#{project_name}", project_path(project_id)) )
.both
%span.date= activity_feed.created_at
.both
%span.subject= link_to comment_body, project_issue_path(project_id, issue_serial_id) + (defined?(comment_id) ? "#comment##{comment_id}" : '')
%span.subject= comment_body

View File

@ -3,9 +3,9 @@
= image_tag(avatar_url_by_email(user_email, :small), :alt => 'avatar')
.text
%span
= raw t("notifications.bodies.new_issue_notification", { :user_link => link_to(activity_feed.user.uname, user_path(activity_feed.user.uname))})
= raw t("notifications.bodies.project", :project_link => link_to(project_name, project_path(project_id)))
= raw t("notifications.bodies.new_issue_notification", { :user_link => link_to(user_name, user_path(user_id)), :issue_link => project_issue_path(project_id, issue_serial_id)})
= raw t("notifications.bodies.project", :project_link => link_to("#{project_owner}/#{project_name}", project_path(project_id)) )
.both
%span.date= activity_feed.created_at
.both
%span.subject= link_to(issue_title, project_issue_path(project_id, issue_serial_id))
%span.subject= issue_title

View File

@ -4,7 +4,7 @@
.text
%span
= raw t("notifications.bodies.wiki_new_commit_notification", {:user_link => user_name, :history_link => link_to("wiki", history_project_wiki_index_path(project_id))})
= raw t("notifications.bodies.project", :project_link => link_to(project_name, project_path(project_id)))
= raw t("notifications.bodies.project", :project_link => link_to("#{project_owner}/#{project_name}", project_path(project_id)) )
.both
%span.date= activity_feed.created_at
.both

View File

@ -20,19 +20,20 @@ en:
bodies:
new_comment_notification:
title: '%{user_link} has been added a new comment'
content: in issue %{issue_link}.
commit_content: in commit %{commit_link}.
new_issue_notification: '%{user_link} has been added an issue'
content: in issue %{issue_link}
commit_content: in commit %{commit_link}
new_issue_notification: '%{user_link} has been added a new <a href="%{issue_link}">issue</a>'
ussue: issue
new_user_notification:
title: Hello, %{user_name}.
content: You have been sign up to project «ROSA Build System» and now can sign in.
email: ==Your email %{user_email}
password: ==Your password %{user_password}
issue_assign_notification: You have been assigned to issue %{issue_link}
wiki_new_commit_notification: '%{user_link} has been updated wiki %{history_link}'
wiki_new_commit_notification: '%{user_link} has been updated %{history_link}'
invite_approve_notification: Invite to ABF
project: in project %{project_link}.
project: in project %{project_link}
delete_branch: Branch %{branch_name} has been deleted
create_branch: created new branch %{branch_name}
update_branch: pushed to branch %{branch_name}
create_branch: '%{user_link} has been created a new branch %{branch_name}'
update_branch: '%{user_link} has been pushed to branch %{branch_name}'

View File

@ -20,19 +20,20 @@ ru:
bodies:
new_comment_notification:
title: '%{user_link} добавил новый комментарий'
content: в задаче %{issue_link}.
commit_content: в коммите %{commit_link}.
new_issue_notification: '%{user_link} добавил новую задачу'
content: в задаче %{issue_link}
commit_content: в коммите %{commit_link}
new_issue_notification: '%{user_link} добавил новую <a href="%{issue_link}">задачу</a>'
issue: задачу
new_user_notification:
title: Здравствуйте, %{user_name}.
content: Вы зарегистрированы на проекте «ROSA Build System» и теперь можете войти в систему.
email: ==Ваш email %{user_email}
password: ==Ваш пароль %{user_password}
issue_assign_notification: Вам была назначена задача %{issue_link}
wiki_new_commit_notification: '%{user_link} обновил wiki %{history_link}'
wiki_new_commit_notification: '%{user_link} обновил %{history_link}'
invite_approve_notification: Приглашение в ABF
project: в проекте %{project_link}.
project: в проекте %{project_link}
delete_branch: Удалена ветка %{branch_name}
create_branch: создал новую ветку %{branch_name}
update_branch: внес изменения в ветку %{branch_name}
create_branch: '%{user_link} создал новую ветку %{branch_name}'
update_branch: '%{user_link} внес изменения в ветку %{branch_name}'

View File

@ -0,0 +1,8 @@
class TruncateActivityFeed < ActiveRecord::Migration
def up
ActivityFeed.destroy_all
end
def down
end
end