Merge pull request #71 from finnlabs/refactor/activity_providers

[Refactoring] Activity providers
pull/6827/head
sschu 11 years ago
commit d17d7a8a8b
  1. 1
      CHANGELOG.md
  2. 42
      app/models/activity/cost_object_activity_provider.rb
  3. 41
      app/models/journal/cost_object_journal.rb
  4. 2
      lib/open_project/costs/engine.rb

@ -4,6 +4,7 @@
* `#1020` fix XSS when displaying costs
* `#2591` Fix: Costs prevents work package context menu
* `#2759` Fix: [Performance] Activity View very slow
* `#3329` Refactor Duplicated Code Journals
* added icon for new project menu
## 5.0.1.pre9

@ -0,0 +1,42 @@
#-- encoding: UTF-8
#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Foundation (OPF)
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
class Activity::CostObjectActivityProvider < Activity::BaseActivityProvider
acts_as_activity_provider type: 'cost_objects',
permission: :view_cost_objects
def event_query_projection(activity)
[
activity_journal_projection_statement(:subject, 'cost_object_subject', activity),
activity_journal_projection_statement(:project_id, 'project_id', activity)
]
end
def event_title(event, activity)
"#{l(:label_cost_object)} ##{event['journable_id']}: #{event['cost_object_subject']}"
end
def event_path(event, activity)
Rails.application.routes.url_helpers.cost_object_path(url_helper_parameter(event))
end
def event_url(event, activity)
Rails.application.routes.url_helpers.cost_object_url(url_helper_parameter(event),
host: ::Setting.host_name)
end
private
def url_helper_parameter(event)
event['journable_id']
end
end

@ -12,45 +12,4 @@
class Journal::CostObjectJournal < Journal::BaseJournal
self.table_name = "cost_object_journals"
acts_as_activity_provider type: 'cost_objects',
permission: :view_cost_objects
def self.extend_event_query(j, ej, query)
[ej, query]
end
def self.event_query_projection(j, ej)
[
ej[:subject].as('cost_object_subject'),
ej[:project_id].as('project_id')
]
end
def self.format_event(event, event_data)
event.event_title = self.event_title event_data
event.event_path = self.event_path event_data
event.event_url = self.event_url event_data
event
end
private
def self.event_title(event)
"#{l(:label_cost_object)} ##{event['journable_id']}: #{event['cost_object_subject']}"
end
def self.event_path(event)
Rails.application.routes.url_helpers.cost_object_path(self.url_helper_parameter(event))
end
def self.event_url(event)
Rails.application.routes.url_helpers.cost_object_url(self.url_helper_parameter(event),
host: ::Setting.host_name)
end
def self.url_helper_parameter(event)
event['journable_id']
end
end

@ -184,7 +184,7 @@ module OpenProject::Costs
:html => {:class => 'icon2 icon-list-view1'}
Redmine::Activity.map do |activity|
activity.register :cost_objects, class_name: 'Journal::CostObjectJournal', default: false
activity.register :cost_objects, class_name: 'Activity::CostObjectActivityProvider', default: false
end
end
end

Loading…
Cancel
Save