Actualiza el plugin Additionals a 3.0.2-master

This commit is contained in:
Manuel Cillero 2021-03-20 11:12:56 +01:00
parent 3b6a41320c
commit cfa0d58b18
164 changed files with 2027 additions and 58190 deletions

View file

@ -1,3 +1,5 @@
require 'additionals/version'
module Additionals
MAX_CUSTOM_MENU_ITEMS = 5
SELECT2_INIT_ENTRIES = 20
@ -5,17 +7,15 @@ module Additionals
GOTO_LIST = " \xc2\xbb".freeze
LIST_SEPARATOR = "#{GOTO_LIST} ".freeze
RenderAsync.configuration.jquery = true
class << self
def setup
incompatible_plugins %w[redmine_issue_control_panel
redmine_editauthor
RenderAsync.configuration.jquery = true
incompatible_plugins %w[redmine_editauthor
redmine_changeauthor
redmine_auto_watch]
patch %w[AccountController
ApplicationController
patch %w[ApplicationController
AutoCompletesController
Issue
IssuePriority
@ -60,22 +60,7 @@ module Additionals
require_dependency 'additionals/hooks'
# Macros
load_macros %w[cryptocompare date fa gist gmap google_docs group_users iframe
issue redmine_issue redmine_wiki
last_updated_at last_updated_by meteoblue member new_issue project
recently_updated reddit slideshare tradingview twitter user vimeo youtube asciinema]
end
def settings_compatible(plugin_name)
if Setting[plugin_name].class == Hash
# convert Rails 4 data (this runs only once)
new_settings = ActiveSupport::HashWithIndifferentAccess.new(Setting[plugin_name])
Setting.send("#{plugin_name}=", new_settings)
new_settings
else
# Rails 5 uses ActiveSupport::HashWithIndifferentAccess
Setting[plugin_name]
end
load_macros
end
# support with default setting as fall back
@ -91,6 +76,15 @@ module Additionals
true? setting(value)
end
# required multiple times because of this bug: https://www.redmine.org/issues/33290
def redmine_database_ready?(with_table = nil)
ActiveRecord::Base.connection
rescue ActiveRecord::NoDatabaseError
false
else
with_table.nil? || ActiveRecord::Base.connection.table_exists?(with_table)
end
def true?(value)
return false if value.is_a? FalseClass
return true if value.is_a?(TrueClass) || value.to_i == 1 || value.to_s.casecmp('true').zero?
@ -98,6 +92,17 @@ module Additionals
false
end
def debug(message)
return if Rails.env.production?
Rails.logger.debug "#{Time.current.strftime('%H:%M:%S')} DEBUG [#{caller_locations(1..1).first.label}]: #{message}"
end
def class_prefix(klass)
klass_name = klass.is_a?(String) ? klass : klass.name
klass_name.underscore.tr '/', '_'
end
def now_with_user_time_zone(user = User.current)
if user.time_zone.nil?
Time.zone.now
@ -108,7 +113,7 @@ module Additionals
def incompatible_plugins(plugins = [], title = 'additionals')
plugins.each do |plugin|
raise "\n\033[31m#{title} plugin cannot be used with #{plugin} plugin'.\033[0m" if Redmine::Plugin.installed?(plugin)
raise "\n\033[31m#{title} plugin cannot be used with #{plugin} plugin.\033[0m" if Redmine::Plugin.installed?(plugin)
end
end
@ -124,10 +129,19 @@ module Additionals
end
end
def load_macros(macros = [], plugin_id = 'additionals')
macro_dir = Rails.root.join("plugins/#{plugin_id}/lib/#{plugin_id}/wiki_macros")
macros.each do |macro|
require_dependency "#{macro_dir}/#{macro.underscore}_macro"
def load_macros(plugin_id = 'additionals')
Dir[File.join(plugin_dir(plugin_id),
'lib',
plugin_id,
'wiki_macros',
'**/*_macro.rb')].sort.each { |f| require f }
end
def plugin_dir(plugin_id = 'additionals')
if Gem.loaded_specs[plugin_id].nil?
File.join Redmine::Plugin.directory, plugin_id
else
Gem.loaded_specs[plugin_id].full_gem_path
end
end
@ -135,7 +149,7 @@ module Additionals
cached_settings_name = "@load_settings_#{plugin_id}"
cached_settings = instance_variable_get cached_settings_name
if cached_settings.nil?
data = YAML.safe_load(ERB.new(IO.read(Rails.root.join("plugins/#{plugin_id}/config/settings.yml"))).result) || {}
data = YAML.safe_load(ERB.new(IO.read(File.join(plugin_dir(plugin_id), '/config/settings.yml'))).result) || {}
instance_variable_set cached_settings_name, data.symbolize_keys
else
cached_settings
@ -156,7 +170,31 @@ module Additionals
private
def settings
settings_compatible :plugin_additionals
Setting[:plugin_additionals]
end
end
# Run the classic redmine plugin initializer after rails boot
class Plugin < ::Rails::Engine
require 'deface'
require 'emoji'
require 'render_async'
require 'rss'
require 'slim'
config.after_initialize do
# engine_name could be used (additionals_plugin), but can
# create some side effencts
plugin_id = 'additionals'
# if plugin is already in plugins directory, use this and leave here
next if Redmine::Plugin.installed? plugin_id
# gem is used as redmine plugin
require File.expand_path '../init', __dir__
AdditionalTags.setup
Additionals::Gemify.install_assets plugin_id
Additionals::Gemify.create_plugin_hint plugin_id
end
end
end