mirror of
https://github.com/opf/openproject.git
synced 2026-06-14 03:30:14 +00:00
Moves message activity provider settings
This commit is contained in:
committed by
Sebastian Schuster
parent
03c97f1297
commit
efffb371e4
@@ -29,4 +29,59 @@
|
||||
|
||||
class Journal::MessageJournal < Journal::BaseJournal
|
||||
self.table_name = "message_journals"
|
||||
|
||||
acts_as_activity_provider type: 'messages',
|
||||
permission: :view_messages
|
||||
|
||||
def self.extend_event_query(j, ej, query)
|
||||
b = Arel::Table.new(:boards)
|
||||
|
||||
query = query.join(b).on(ej[:board_id].eq(b[:id]))
|
||||
query
|
||||
end
|
||||
|
||||
def self.event_query_projection(j, ej)
|
||||
b = Arel::Table.new(:boards)
|
||||
|
||||
[
|
||||
ej[:subject].as('message_subject'),
|
||||
ej[:content].as('message_content'),
|
||||
ej[:parent_id].as('message_parent_id'),
|
||||
b[:id].as('board_id'),
|
||||
b[:name].as('board_name')
|
||||
]
|
||||
end
|
||||
|
||||
def self.format_event(event, event_data)
|
||||
event.title = self.event_title event_data
|
||||
event.description event_data['message_content']
|
||||
event.type = self.event_type event_data
|
||||
event.url = self.event_url event_data
|
||||
|
||||
event
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def self.event_title(event)
|
||||
"#{event['board_name']}: #{event['message_subject']}"
|
||||
end
|
||||
|
||||
def self.event_type(event)
|
||||
event['parent_id'].blank? ? 'message' : 'reply'
|
||||
end
|
||||
|
||||
def self.event_url(event)
|
||||
is_reply = !event['parent_id'].blank?
|
||||
|
||||
if is_reply
|
||||
parameters = { id: event['journable_id'] }
|
||||
else
|
||||
parameters = { id: event['parent_id'], r: event['journable_id'], anchor: "message-#{event['journable_id']}" }
|
||||
end
|
||||
|
||||
parameters[:board_id] = event['board_id']
|
||||
|
||||
Rails.application.routes.url_helpers.topc_path(parameters)
|
||||
end
|
||||
end
|
||||
|
||||
+1
-12
@@ -38,18 +38,7 @@ class Message < ActiveRecord::Base
|
||||
after_remove: :attachments_changed
|
||||
belongs_to :last_reply, :class_name => 'Message', :foreign_key => 'last_reply_id'
|
||||
|
||||
acts_as_journalized :event_title => Proc.new {|o| "#{o.journal.journable.board.name}: #{o.journal.journable.subject}"},
|
||||
:event_description => :content,
|
||||
:event_type => Proc.new {|o| o.parent_id.nil? ? 'message' : 'reply'},
|
||||
:event_url => (Proc.new do |o|
|
||||
msg = o.journal.journable
|
||||
if msg.parent_id.nil?
|
||||
{:id => msg.id}
|
||||
else
|
||||
{:id => msg.parent_id, :r => msg.id, :anchor => "message-#{msg.id}"}
|
||||
end.reverse_merge :controller => '/messages', :action => 'show', :board_id => msg.board_id
|
||||
end),
|
||||
:activity_find_options => { :include => { :board => :project } }
|
||||
acts_as_journalized
|
||||
|
||||
acts_as_searchable :columns => ['subject', 'content'],
|
||||
:include => {:board => :project},
|
||||
|
||||
Reference in New Issue
Block a user