Alert commit author on note

Allows to alert only the commit author when a new note is added on a commit, useful when gitlabhq is used for code
reviews, allows less noise with mails...
This commit is contained in:
Cedric Gatay 2011-12-24 17:28:20 +01:00
parent 89a43543e9
commit c0b47d3245
5 changed files with 13 additions and 2 deletions

View file

@ -13,6 +13,7 @@ class NotesController < ApplicationController
@note = @project.notes.new(params[:note]) @note = @project.notes.new(params[:note])
@note.author = current_user @note.author = current_user
@note.notify = true if params[:notify] == '1' @note.notify = true if params[:notify] == '1'
@note.notify_author = true if params[:notify_author] == '1'
@note.save @note.save
respond_to do |format| respond_to do |format|

View file

@ -28,6 +28,7 @@ class Notify < ActionMailer::Base
@note = note @note = note
@project = note.project @project = note.project
@commit = @project.repo.commits(note.noteable_id).first @commit = @project.repo.commits(note.noteable_id).first
return unless ( note.notify or ( note.notify_author and @commit.author.email == @user.email ) )
mail(:to => @user.email, :subject => "gitlab | #{@note.project.name} ") mail(:to => @user.email, :subject => "gitlab | #{@note.project.name} ")
end end

View file

@ -27,7 +27,7 @@ class MailerObserver < ActiveRecord::Observer
end end
def new_note(note) def new_note(note)
return unless note.notify return unless note.notify or note.notify_author
note.project.users.reject { |u| u.id == current_user.id } .each do |u| note.project.users.reject { |u| u.id == current_user.id } .each do |u|
case note.noteable_type case note.noteable_type
when "Commit" then when "Commit" then

View file

@ -14,6 +14,7 @@ class Note < ActiveRecord::Base
attr_protected :author, :author_id attr_protected :author, :author_id
attr_accessor :notify attr_accessor :notify
attr_accessor :notify_author
validates_presence_of :project validates_presence_of :project
@ -40,6 +41,10 @@ class Note < ActiveRecord::Base
def notify def notify
@notify ||= false @notify ||= false
end end
def notify_author
@notify_author ||= false
end
end end
# == Schema Information # == Schema Information
# #

View file

@ -23,9 +23,13 @@
%br %br
= f.file_field :attachment = f.file_field :attachment
= check_box_tag :notify, 1, true = check_box_tag :notify, 1, @note.noteable_type != "Commit"
= label_tag :notify, "Notify project team about your note" = label_tag :notify, "Notify project team about your note"
-if @note.noteable_type == "Commit"
= check_box_tag :notify_author, 1 , @note.noteable_type == "Commit"
= label_tag :notify_author, "Notify commit author about your note"
.clear .clear
%br %br
= f.submit 'Add note', :class => "grey-button", :id => "submit_note" = f.submit 'Add note', :class => "grey-button", :id => "submit_note"