##// END OF EJS Templates
Introduce virtual MenuNodes (#15880)....
Introduce virtual MenuNodes (#15880). They are characterized by having a blank url. they will only be rendered if the user is authorized to see at least one of its children. they render as links which do nothing when clicked. Patch by Jan Schulz-Hofen. git-svn-id: http://svn.redmine.org/redmine/trunk@15501 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r14856:cda9c63d9c21
r15119:53710d80fc88
Show More
message.rb
121 lines | 4.2 KiB | text/x-ruby | RubyLexer
Toshi MARUYAMA
remove trailing white-spaces from message model source....
r5697 # Redmine - project management software
Jean-Philippe Lang
Updates copyright for 2016....
r14856 # Copyright (C) 2006-2016 Jean-Philippe Lang
Jean-Philippe Lang
Per project forums added....
r526 #
# 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 message model source....
r5697 #
Jean-Philippe Lang
Per project forums added....
r526 # 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 message model source....
r5697 #
Jean-Philippe Lang
Per project forums added....
r526 # 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 Message < ActiveRecord::Base
Jean-Philippe Lang
Prevent mass-assignment when adding/updating a forum message (#10390)....
r9013 include Redmine::SafeAttributes
Jean-Philippe Lang
Per project forums added....
r526 belongs_to :board
Jean-Philippe Lang
Removed unneeded :foreign_key option on belongs_to associations....
r13102 belongs_to :author, :class_name => 'User'
Jean-Philippe Lang
Per project forums added....
r526 acts_as_tree :counter_cache => :replies_count, :order => "#{Message.table_name}.created_on ASC"
Jean-Philippe Lang
AttachmentsController now handles attachments deletion....
r2114 acts_as_attachable
Jean-Philippe Lang
Removed unneeded :foreign_key option on belongs_to associations....
r13102 belongs_to :last_reply, :class_name => 'Message'
Jean-Philippe Lang
Merged rails-4.1 branch (#14534)....
r13100 attr_protected :id
Toshi MARUYAMA
remove trailing white-spaces from message model source....
r5697
Jean-Philippe Lang
Fixed: unable to migrate from an empty database....
r760 acts_as_searchable :columns => ['subject', 'content'],
Jean-Philippe Lang
Rewrites search engine to properly paginate results (#18631)....
r13357 :preload => {:board => :project},
:project_key => "#{Board.table_name}.project_id"
Jean-Philippe Lang
Search engines now supports pagination....
r755 acts_as_event :title => Proc.new {|o| "#{o.board.name}: #{o.subject}"},
:description => :content,
Jean-Philippe Lang
Group events in the activity view (#12542)....
r10724 :group => :parent,
Jean-Philippe Lang
Add an icon to each event on the activity view....
r1327 :type => Proc.new {|o| o.parent_id.nil? ? 'message' : 'reply'},
Toshi MARUYAMA
remove trailing white-spaces from app/models/message.rb....
r6386 :url => Proc.new {|o| {:controller => 'messages', :action => 'show', :board_id => o.board_id}.merge(o.parent_id.nil? ? {:id => o.id} :
Jean-Philippe Lang
Adds pagination to forum messages (#4664)....
r3259 {:id => o.parent_id, :r => o.id, :anchor => "message-#{o.id}"})}
Jean-Philippe Lang
Activity refactoring....
r1692
Jean-Philippe Lang
Merged rails-4.1 branch (#14534)....
r13100 acts_as_activity_provider :scope => preload({:board => :project}, :author),
Jean-Philippe Lang
Display latest user's activity on account/show view....
r2064 :author_key => :author_id
Jean-Philippe Lang
Adds watch/unwatch functionality at forum topic level (#1912)....
r1876 acts_as_watchable
Toshi MARUYAMA
remove trailing white-spaces from message model source....
r5697
Jean-Philippe Lang
Adds the ability to move threads between project forums (#2452). 'Edit message' permission is required....
r2560 validates_presence_of :board, :subject, :content
Jean-Philippe Lang
Per project forums added....
r526 validates_length_of :subject, :maximum => 255
Toshi MARUYAMA
Rails3: model: replace deprecated 'validate_on_create' method at Message model...
r7435 validate :cannot_reply_to_locked_topic, :on => :create
Toshi MARUYAMA
remove trailing white-spaces from message model source....
r5697
Jean-Philippe Lang
Fixed that deleting the last reply of a topic does not update last_reply_id....
r9756 after_create :add_author_as_watcher, :reset_counters!
Toshi MARUYAMA
Rails3: model: replace deprecated 'after_update' method at Message model...
r7336 after_update :update_messages_board
Jean-Philippe Lang
Fixed that deleting the last reply of a topic does not update last_reply_id....
r9756 after_destroy :reset_counters!
Jean-Philippe Lang
Use AR callbacks instead of observers (removed in Rails4) for notifications....
r11791 after_create :send_notification
Toshi MARUYAMA
remove trailing white-spaces from message model source....
r5697
Jean-Philippe Lang
Rewrites named scopes with ARel queries....
r10723 scope :visible, lambda {|*args|
Jean-Philippe Lang
Merged rails-4.1 branch (#14534)....
r13100 joins(:board => :project).
where(Project.allowed_to_condition(args.shift || User.current, :view_messages, *args))
Jean-Philippe Lang
Rewrites named scopes with ARel queries....
r10723 }
Toshi MARUYAMA
remove trailing white-spaces from message model source....
r5697
Jean-Philippe Lang
Prevent mass-assignment when adding/updating a forum message (#10390)....
r9013 safe_attributes 'subject', 'content'
Jean-Philippe Lang
Fixed: Unable to change locked, sticky flags and board when editing a message (#10564)....
r9216 safe_attributes 'locked', 'sticky', 'board_id',
Jean-Philippe Lang
Prevent mass-assignment when adding/updating a forum message (#10390)....
r9013 :if => lambda {|message, user|
user.allowed_to?(:edit_messages, message.project)
}
Jean-Philippe Lang
Makes user unwatch what he can no longer view after its permissions have changed (#3589)....
r3053 def visible?(user=User.current)
!user.nil? && user.allowed_to?(:view_messages, project)
end
Toshi MARUYAMA
remove trailing white-spaces from message model source....
r5697
Toshi MARUYAMA
Rails3: model: replace deprecated 'validate_on_create' method at Message model...
r7435 def cannot_reply_to_locked_topic
Jean-Philippe Lang
Forums enhancements:...
r913 # Can not reply to a locked topic
Toshi MARUYAMA
Rails3: model: replace deprecated errors.add_to_base at cannot_reply_to_locked_topic of Message...
r7487 errors.add :base, 'Topic is locked' if root.locked? && self != root
Jean-Philippe Lang
Forums enhancements:...
r913 end
Toshi MARUYAMA
remove trailing white-spaces from message model source....
r5697
Toshi MARUYAMA
Rails3: model: replace deprecated 'after_update' method at Message model...
r7336 def update_messages_board
Jean-Philippe Lang
Adds the ability to move threads between project forums (#2452). 'Edit message' permission is required....
r2560 if board_id_changed?
Toshi MARUYAMA
Rails4: replace deprecated Relation#update_all at Message model...
r12227 Message.where(["id = ? OR parent_id = ?", root.id, root.id]).update_all({:board_id => board_id})
Jean-Philippe Lang
Adds the ability to move threads between project forums (#2452). 'Edit message' permission is required....
r2560 Board.reset_counters!(board_id_was)
Board.reset_counters!(board_id)
Jean-Philippe Lang
Per project forums added....
r526 end
end
Toshi MARUYAMA
remove trailing white-spaces from message model source....
r5697
Jean-Philippe Lang
Fixed that deleting the last reply of a topic does not update last_reply_id....
r9756 def reset_counters!
if parent && parent.id
Toshi MARUYAMA
Rails4: replace deprecated Relation#update_all at Message model...
r12227 Message.where({:id => parent.id}).update_all({:last_reply_id => parent.children.maximum(:id)})
Jean-Philippe Lang
Fixed that deleting the last reply of a topic does not update last_reply_id....
r9756 end
Jean-Philippe Lang
Adds the ability to move threads between project forums (#2452). 'Edit message' permission is required....
r2560 board.reset_counters!
Jean-Philippe Lang
Forums enhancements:...
r913 end
Toshi MARUYAMA
remove trailing white-spaces from message model source....
r5697
Jean-Philippe Lang
Fixed: editing a message may cause sticky attribute to be NULL (#3356)....
r2687 def sticky=(arg)
write_attribute :sticky, (arg == true || arg.to_s == '1' ? 1 : 0)
end
Toshi MARUYAMA
remove trailing white-spaces from message model source....
r5697
Jean-Philippe Lang
Forums enhancements:...
r913 def sticky?
sticky == 1
end
Toshi MARUYAMA
remove trailing white-spaces from message model source....
r5697
Jean-Philippe Lang
Attachments can now be added to wiki pages (original patch by Pavol Murin). Only authorized users can add/delete attachments....
r538 def project
board.project
end
Jean-Philippe Lang
Adds permissions to let users edit and/or delete their messages (#854, patch by Markus Knittig with slight changes)....
r2017
def editable_by?(usr)
usr && usr.logged? && (usr.allowed_to?(:edit_messages, project) || (self.author == usr && usr.allowed_to?(:edit_own_messages, project)))
end
def destroyable_by?(usr)
usr && usr.logged? && (usr.allowed_to?(:delete_messages, project) || (self.author == usr && usr.allowed_to?(:delete_own_messages, project)))
end
Toshi MARUYAMA
remove trailing white-spaces from message model source....
r5697
Jean-Philippe Lang
Add support for multiple email addresses per user (#4244)....
r13504 def notified_users
project.notified_users.reject {|user| !visible?(user)}
end
Jean-Philippe Lang
Adds watch/unwatch functionality at forum topic level (#1912)....
r1876 private
Toshi MARUYAMA
remove trailing white-spaces from message model source....
r5697
Jean-Philippe Lang
Adds watch/unwatch functionality at forum topic level (#1912)....
r1876 def add_author_as_watcher
Watcher.create(:watchable => self.root, :user => author)
end
Jean-Philippe Lang
Use AR callbacks instead of observers (removed in Rails4) for notifications....
r11791
def send_notification
if Setting.notified_events.include?('message_posted')
Mailer.message_posted(self).deliver
end
end
Jean-Philippe Lang
Per project forums added....
r526 end