##// END OF EJS Templates
Log an error when trying to send an attachment that cannot be read....
Log an error when trying to send an attachment that cannot be read. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11084 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r10724:0e30724d6601
r10854:c87f36d20b26
Show More
journal.rb
132 lines | 4.6 KiB | text/x-ruby | RubyLexer
Jean-Philippe Lang
Adds a visible scope to the Journal model....
r5022 # Redmine - project management software
Jean-Philippe Lang
Copyright update....
r9453 # Copyright (C) 2006-2012 Jean-Philippe Lang
Jean-Philippe Lang
improved issues change history...
r52 #
# 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.
Toshi MARUYAMA
remove trailing white-spaces from app/models/journal.rb....
r6735 #
Jean-Philippe Lang
improved issues change history...
r52 # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
Toshi MARUYAMA
remove trailing white-spaces from app/models/journal.rb....
r6735 #
Jean-Philippe Lang
improved issues change history...
r52 # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class Journal < ActiveRecord::Base
belongs_to :journalized, :polymorphic => true
Jean-Philippe Lang
added rss/atom feeds at project levels for:...
r336 # added as a quick fix to allow eager loading of the polymorphic association
# since always associated to an issue, for now
belongs_to :issue, :foreign_key => :journalized_id
Toshi MARUYAMA
remove trailing white-spaces from app/models/journal.rb....
r6735
Jean-Philippe Lang
improved issues change history...
r52 belongs_to :user
Jean-Philippe Lang
replaced deprecated ":dependent => true" statements...
r120 has_many :details, :class_name => "JournalDetail", :dependent => :delete_all
Jean-Philippe Lang
Add a user preference to choose how comments/replies are displayed: in chronological or reverse chronological order (#589, #776)....
r1183 attr_accessor :indice
Toshi MARUYAMA
remove trailing white-spaces from app/models/journal.rb....
r6735
Jean-Philippe Lang
Display status change before subject of issue on the activity view otherwise it may be truncated....
r1491 acts_as_event :title => Proc.new {|o| status = ((s = o.new_status) ? " (#{s})" : nil); "#{o.issue.tracker} ##{o.issue.id}#{status}: #{o.issue.subject}" },
Jean-Philippe Lang
ProjectsController#list_issues, #export_issues_csv and #export_issues_pdf merged into IssuesController#index...
r874 :description => :notes,
Jean-Philippe Lang
Added issues status changes on the activity view (initial patch by Cyril Mougel)....
r879 :author => :user,
Jean-Philippe Lang
Group events in the activity view (#12542)....
r10724 :group => :issue,
Jean-Philippe Lang
Display issue notes in the activity view (#1509)....
r1553 :type => Proc.new {|o| (s = o.new_status) ? (s.is_closed? ? 'issue-closed' : 'issue-edit') : 'issue-note' },
Jean-Philippe Lang
Atom feeds:...
r1140 :url => Proc.new {|o| {:controller => 'issues', :action => 'show', :id => o.issue.id, :anchor => "change-#{o.id}"}}
Jean-Philippe Lang
ProjectsController#list_issues, #export_issues_csv and #export_issues_pdf merged into IssuesController#index...
r874
Jean-Philippe Lang
Activity refactoring....
r1692 acts_as_activity_provider :type => 'issues',
Jean-Philippe Lang
Display latest user's activity on account/show view....
r2064 :author_key => :user_id,
Jean-Philippe Lang
Activity refactoring....
r1692 :find_options => {:include => [{:issue => :project}, :details, :user],
:conditions => "#{Journal.table_name}.journalized_type = 'Issue' AND" +
" (#{JournalDetail.table_name}.prop_key = 'status_id' OR #{Journal.table_name}.notes <> '')"}
Toshi MARUYAMA
remove trailing white-spaces from app/models/journal.rb....
r6735
Jean-Philippe Lang
Private issue notes (#1554)....
r10336 before_create :split_private_notes
scope :visible, lambda {|*args|
user = args.shift || User.current
includes(:issue => :project).
where(Issue.visible_condition(user, *args)).
where("(#{Journal.table_name}.private_notes = ? OR (#{Project.allowed_to_condition(user, :view_private_notes, *args)}))", false)
}
Toshi MARUYAMA
remove trailing white-spaces from app/models/journal.rb....
r6735
Jean-Philippe Lang
Fixes Journal#save signature (#3014)....
r2539 def save(*args)
Jean-Philippe Lang
Fixed: unable to add a file to an issue without entering a note....
r840 # Do not save an empty journal
(details.empty? && notes.blank?) ? false : super
end
Toshi MARUYAMA
remove trailing white-spaces from app/models/journal.rb....
r6735
Jean-Philippe Lang
Added issues status changes on the activity view (initial patch by Cyril Mougel)....
r879 # Returns the new status if the journal contains a status change, otherwise nil
def new_status
c = details.detect {|detail| detail.prop_key == 'status_id'}
(c && c.value) ? IssueStatus.find_by_id(c.value.to_i) : nil
end
Toshi MARUYAMA
remove trailing white-spaces from app/models/journal.rb....
r6735
Jean-Philippe Lang
Display the issue status in the email subject only if the status was actually changed....
r1065 def new_value_for(prop)
c = details.detect {|detail| detail.prop_key == prop}
c ? c.value : nil
end
Toshi MARUYAMA
remove trailing white-spaces from app/models/journal.rb....
r6735
Jean-Philippe Lang
Administrators can edit issue notes....
r1091 def editable_by?(usr)
Jean-Philippe Lang
Added the following permissions (#527, #585, #627):...
r1138 usr && usr.logged? && (usr.allowed_to?(:edit_issue_notes, project) || (self.user == usr && usr.allowed_to?(:edit_own_issue_notes, project)))
Jean-Philippe Lang
Administrators can edit issue notes....
r1091 end
Toshi MARUYAMA
remove trailing white-spaces from app/models/journal.rb....
r6735
Jean-Philippe Lang
Fixes:...
r1147 def project
journalized.respond_to?(:project) ? journalized.project : nil
end
Toshi MARUYAMA
remove trailing white-spaces from app/models/journal.rb....
r6735
Jean-Philippe Lang
Fixes:...
r1147 def attachments
journalized.respond_to?(:attachments) ? journalized.attachments : nil
end
Eric Davis
Refactor: move method to model. (references r4057)...
r3948
# Returns a string of css classes
def css_classes
s = 'journal'
s << ' has-notes' unless notes.blank?
s << ' has-details' unless details.blank?
Jean-Philippe Lang
Private issue notes (#1554)....
r10336 s << ' private-notes' if private_notes?
Eric Davis
Refactor: move method to model. (references r4057)...
r3948 s
end
Toshi MARUYAMA
remove trailing white-spaces from app/models/journal.rb....
r6735
Jean-Philippe Lang
Fixed: notes are lost when copying issue(s) (#6901, #8239)....
r5482 def notify?
@notify != false
end
Toshi MARUYAMA
remove trailing white-spaces from app/models/journal.rb....
r6735
Jean-Philippe Lang
Fixed: notes are lost when copying issue(s) (#6901, #8239)....
r5482 def notify=(arg)
@notify = arg
end
Jean-Philippe Lang
Private issue notes (#1554)....
r10336
def recipients
notified = journalized.notified_users
if private_notes?
notified = notified.select {|user| user.allowed_to?(:view_private_notes, journalized.project)}
end
notified.map(&:mail)
end
Jean-Philippe Lang
Fixed that watchers receive notifications for private comments without permission (#12286)....
r10567 def watcher_recipients
notified = journalized.notified_watchers
if private_notes?
notified = notified.select {|user| user.allowed_to?(:view_private_notes, journalized.project)}
end
notified.map(&:mail)
end
Jean-Philippe Lang
Private issue notes (#1554)....
r10336 private
def split_private_notes
if private_notes?
if notes.present?
if details.any?
# Split the journal (notes/changes) so we don't have half-private journals
journal = Journal.new(:journalized => journalized, :user => user, :notes => nil, :private_notes => false)
journal.details = details
journal.save
self.details = []
self.created_on = journal.created_on
end
else
# Blank notes should not be private
self.private_notes = false
end
end
true
end
Jean-Philippe Lang
improved issues change history...
r52 end