From ae566b3bf9bf6e5fe7cb1d532f8c025686a84c40 Mon Sep 17 00:00:00 2001 From: Marius Balteanu Date: Sat, 19 Apr 2025 07:24:46 +0000 Subject: Fixes plugin activity SVG icons broken when multiple plugins are loaded (#42509). Patch by Stefan Rinkes (user:srinkes). git-svn-id: https://svn.redmine.org/redmine/trunk@23683 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/views/activities/_activities.html.erb | 2 +- lib/redmine/activity.rb | 15 +++++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/app/views/activities/_activities.html.erb b/app/views/activities/_activities.html.erb index 21ec1fb28..f2d8e22bd 100644 --- a/app/views/activities/_activities.html.erb +++ b/app/views/activities/_activities.html.erb @@ -4,7 +4,7 @@
<% sort_activity_events(events_by_day[day]).each do |e, in_group| -%>
<%= User.current.logged? && e.respond_to?(:event_author) && User.current == e.event_author ? 'me' : nil %>"> - <%= activity_event_type_icon e.event_type, plugin: Redmine::Activity.plugin_name(e.activity_provider_options.keys[0]) %> + <%= activity_event_type_icon e.event_type, plugin: Redmine::Activity.plugin_name(e.class) %> <%= avatar(e.event_author) if e.respond_to?(:event_author) %> <%= format_time(e.event_datetime, false) %> <%= content_tag('span', e.project, :class => 'project') if @project.nil? || @project != e.project %> diff --git a/lib/redmine/activity.rb b/lib/redmine/activity.rb index 826b81c9e..3189f4fb1 100644 --- a/lib/redmine/activity.rb +++ b/lib/redmine/activity.rb @@ -19,11 +19,11 @@ module Redmine module Activity - mattr_accessor :available_event_types, :default_event_types, :plugins_event_types, :providers + mattr_accessor :available_event_types, :default_event_types, :plugins_event_classes, :providers @@available_event_types = [] @@default_event_types = [] - @@plugins_event_types = {} + @@plugins_event_classes = {} @@providers = Hash.new {|h, k| h[k]=[]} class << self @@ -41,19 +41,22 @@ module Redmine @@available_event_types << event_type unless @@available_event_types.include?(event_type) @@default_event_types << event_type unless options[:default] == false - @@plugins_event_types = { event_type => options[:plugin].to_s } unless options[:plugin].nil? + if options[:plugin] + providers.each do | provider | + @@plugins_event_classes[provider] = options[:plugin].to_s + end + end @@providers[event_type] += providers end def delete(event_type) @@available_event_types.delete event_type @@default_event_types.delete event_type - @@plugins_event_types.delete(event_type) @@providers.delete(event_type) end - def plugin_name(event_type) - @@plugins_event_types[event_type] + def plugin_name(class_name) + @@plugins_event_classes[class_name.to_s] end end end -- cgit v1.2.3