Class: JournalObserver

Inherits:
ActiveRecord::Observer
  • Object
show all
Defined in:
app/models/journal_observer.rb

Overview

– copyright ChiliProject is a project management system.

Copyright (C) 2010-2013 the ChiliProject Team

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

See doc/COPYRIGHT.rdoc for more details. ++

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#send_notificationObject

Wrap send_notification so it defaults to true, when it's nil


58
59
60
# File 'app/models/journal_observer.rb', line 58

def send_notification
  @send_notification
end

Instance Method Details

#after_create(journal) ⇒ Object


18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'app/models/journal_observer.rb', line 18

def after_create(journal)
  case journal.type
  when "IssueJournal"
    if !journal.initial? && send_notification
      after_create_issue_journal(journal)
    end
  when "WikiContentJournal"
    wiki_content = journal.journaled
    wiki_page = wiki_content.page

    if journal.initial?
      if Setting.notified_events.include?('wiki_content_added')
        (wiki_content.recipients + wiki_page.wiki.watcher_recipients).uniq.each do |recipient|
          Mailer.deliver_wiki_content_added(wiki_content, recipient)
        end
      end
    else
      if Setting.notified_events.include?('wiki_content_updated')
        (wiki_content.recipients + wiki_page.wiki.watcher_recipients + wiki_page.watcher_recipients).uniq.each do |recipient|
          Mailer.deliver_wiki_content_updated(wiki_content, recipient)
        end
      end
    end
  end
  clear_notification
end

#after_create_issue_journal(journal) ⇒ Object


45
46
47
48
49
50
51
52
53
54
55
# File 'app/models/journal_observer.rb', line 45

def after_create_issue_journal(journal)
  if Setting.notified_events.include?('issue_updated') ||
      (Setting.notified_events.include?('issue_note_added') && journal.notes.present?) ||
      (Setting.notified_events.include?('issue_status_updated') && journal.new_status.present?) ||
      (Setting.notified_events.include?('issue_priority_updated') && journal.new_value_for('priority_id').present?)
    issue = journal.issue
    (issue.recipients + issue.watcher_recipients).uniq.each do |recipient|
      Mailer.deliver_issue_edit(journal, recipient)
    end
  end
end