2017-07-26 11:01:51 +02:00
module Additionals
MAX_CUSTOM_MENU_ITEMS = 5
2017-11-17 07:10:50 +01:00
SELECT2_INIT_ENTRIES = 20
2017-07-26 11:01:51 +02:00
2017-10-03 14:09:32 +02:00
class << self
2018-02-12 14:53:05 +01:00
def setup
incompatible_plugins ( %w[ redmine_tweaks
common_libraries
redmine_editauthor
redmine_changeauthor
redmine_auto_watch
redmine_base_deface ] )
patch ( %w[ AccountController
Issue
IssuesController
TimeEntry
Wiki
WikiController
UserPreference
ApplicationController ] )
patch ( %w[ QueryFilter ] ) if Redmine :: VERSION . to_s > = '3.4'
Rails . configuration . assets . paths << Emoji . images_path
# Send Emoji Patches to all wiki formatters available to be able to switch formatter without app restart
Redmine :: WikiFormatting . format_names . each do | format |
case format
when 'markdown'
require_dependency 'additionals/patches/formatter_markdown_patch'
when 'textile'
require_dependency 'additionals/patches/formatter_textile_patch'
end
end
# Static class patches
require_dependency 'additionals/patches/wiki_pdf_helper_patch'
require_dependency 'additionals/patches/access_control_patch'
# Global helpers
require_dependency 'additionals/helpers'
# Hooks
require_dependency 'additionals/hooks'
# Macros
load_macros ( %w[ calendar cryptocompare date gist gmap group_users iframe issue
last_updated_at last_updated_by meteoblue member project recently_updated
reddit slideshare tradingview twitter user vimeo youtube ] )
end
2017-10-03 14:09:32 +02:00
def settings
ActionController :: Parameters . new ( Setting [ :plugin_additionals ] )
end
2017-07-26 11:01:51 +02:00
2017-10-03 14:09:32 +02:00
def setting? ( value )
2017-10-28 17:31:15 +02:00
true ? ( settings [ value ] )
end
def true? ( value )
return true if value . to_i == 1 || value . to_s . casecmp ( 'true' ) . zero?
false
2017-10-03 14:09:32 +02:00
end
2017-08-29 15:39:12 +02:00
2017-10-03 14:09:32 +02:00
def incompatible_plugins ( plugins = [ ] , title = 'additionals' )
plugins . each do | plugin |
2017-12-13 07:07:18 +01:00
raise " \n \033 [31m #{ title } plugin cannot be used with #{ plugin } plugin'. \033 [0m " if Redmine :: Plugin . installed? ( plugin )
2017-07-13 12:05:17 +02:00
end
end
2017-07-26 11:01:51 +02:00
2017-10-03 14:09:32 +02:00
def patch ( patches = [ ] , plugin_id = 'additionals' )
patches . each do | name |
patch_dir = Rails . root . join ( 'plugins' , plugin_id , 'lib' , plugin_id , 'patches' )
require " #{ patch_dir } / #{ name . underscore } _patch "
2017-07-26 11:01:51 +02:00
2017-10-03 14:09:32 +02:00
target = name . constantize
patch = " #{ plugin_id . camelize } ::Patches:: #{ name } Patch " . constantize
2017-07-13 12:05:17 +02:00
2017-12-12 22:10:10 +01:00
target . send ( :include , patch ) unless target . included_modules . include? ( patch )
2017-07-26 11:01:51 +02:00
end
2017-06-07 19:23:20 +02:00
end
2017-10-03 14:09:32 +02:00
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 "
end
2017-06-07 19:23:20 +02:00
end
2017-10-03 14:09:32 +02:00
def load_settings ( plugin_id = 'additionals' )
data = YAML . safe_load ( ERB . new ( IO . read ( Rails . root . join ( 'plugins' ,
plugin_id ,
'config' ,
'settings.yml' ) ) ) . result ) || { }
data . symbolize_keys
end
2017-07-26 11:01:51 +02:00
end
end