diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index c3296038c..f519fddca 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -923,7 +923,7 @@ module ApplicationHelper if options[:formatting] == false text = h(text) else - formatting = Setting.text_formatting + formatting = Setting.text_formatting_for(project) text = Redmine::WikiFormatting.to_html(formatting, text, :object => obj, :attribute => attr) end @@ -1950,7 +1950,7 @@ module ApplicationHelper private def wiki_helper - helper = Redmine::WikiFormatting.helper_for(Setting.text_formatting) + helper = Redmine::WikiFormatting.helper_for(Setting.text_formatting_for(@project)) extend helper return self end diff --git a/app/helpers/settings_helper.rb b/app/helpers/settings_helper.rb index 85eac4a37..55e659b94 100644 --- a/app/helpers/settings_helper.rb +++ b/app/helpers/settings_helper.rb @@ -110,6 +110,11 @@ module SettingsHelper check_box_tag("settings[#{setting}]", 1, setting_value(setting).to_s != '0', options).html_safe end + def setting_date_field(setting, options={}) + setting_label(setting, options).html_safe + + date_field_tag("settings[#{setting}]", setting_value(setting), options).html_safe + end + def setting_label(setting, options={}) label = options.delete(:label) if label == false diff --git a/app/models/setting.rb b/app/models/setting.rb index e955a7335..2ffe73e68 100644 --- a/app/models/setting.rb +++ b/app/models/setting.rb @@ -273,6 +273,15 @@ class Setting < ApplicationRecord a end + def self.text_formatting_for(project) + cutoff = Setting.use_textile_before_date.to_date rescue nil + default_text_formatting = Setting.default_text_formatting + return default_text_formatting if project.nil? || cutoff.blank? || default_text_formatting == "textile" + + created = project.created_on.utc.to_date + created < cutoff ? :textile : default_text_formatting + end + # Checks if settings have changed since the values were read # and clears the cache hash if it's the case # Called once per request @@ -334,6 +343,10 @@ class Setting < ApplicationRecord load_available_settings load_plugin_settings + class << self + alias_method :default_text_formatting, :text_formatting + end + private def force_utf8_strings(arg) diff --git a/app/views/settings/_general.html.erb b/app/views/settings/_general.html.erb index 934f63411..6643ee13c 100644 --- a/app/views/settings/_general.html.erb +++ b/app/views/settings/_general.html.erb @@ -33,6 +33,8 @@

<%= setting_check_box :cache_formatted_text %>

+

<%= setting_date_field :use_textile_before_date %>

+

<%= setting_select :wiki_compression, [['Gzip', 'gzip']], :blank => :label_none %>

<%= setting_text_field :feeds_limit, :size => 6 %>

diff --git a/config/locales/en.yml b/config/locales/en.yml index 005487b4f..f9aab5c9d 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -442,6 +442,7 @@ en: setting_plain_text_mail: Plain text mail (no HTML) setting_host_name: Host name and path setting_text_formatting: Text formatting + setting_use_textile_before_date: "Use Textile for projects created before" setting_wiki_compression: Wiki history compression setting_feeds_limit: Maximum number of items in Atom feeds setting_default_projects_public: New projects are public by default diff --git a/config/settings.yml b/config/settings.yml index 5c8b1fe7c..c43c43fdf 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -373,3 +373,5 @@ wiki_tablesort_enabled: default: 0 reactions_enabled: default: 1 +use_textile_before_date: + default: ''