Feature #32424 » 0001-Add-setting-in-admin-to-control-the-hardbreaks-behav.patch
| app/views/settings/_general.html.erb | ||
|---|---|---|
| 19 | 19 | |
| 20 | 20 |
<p><%= setting_select :protocol, [['HTTP', 'http'], ['HTTPS', 'https']] %></p> |
| 21 | 21 | |
| 22 |
<p><%= setting_select :text_formatting, Redmine::WikiFormatting.formats_for_select, :blank => :label_none %></p> |
|
| 22 |
<p> |
|
| 23 |
<%= setting_select :text_formatting, Redmine::WikiFormatting.formats_for_select, :blank => :label_none %> |
|
| 24 |
<label id="common_mark_settings" class="block <%= "hidden" unless Setting.text_formatting == "common_mark" %>"> |
|
| 25 |
<%= setting_check_box :text_formatting_common_mark_hardbreaks, label: false %> |
|
| 26 |
<%= l(:setting_text_formatting_common_mark_hardbreaks) %> |
|
| 27 |
</label> |
|
| 28 |
</p> |
|
| 23 | 29 | |
| 24 | 30 |
<p><%= setting_check_box :cache_formatted_text %></p> |
| 25 | 31 | |
| ... | ... | |
| 32 | 38 | |
| 33 | 39 |
<%= submit_tag l(:button_save) %> |
| 34 | 40 |
<% end %> |
| 41 | ||
| 42 |
<%= javascript_tag do %> |
|
| 43 |
$('#settings_text_formatting').on('change', function(e){
|
|
| 44 |
const formatter = e.target.value; |
|
| 45 |
const settings = document.getElementById("common_mark_settings");
|
|
| 46 |
if (formatter == "common_mark") {
|
|
| 47 |
settings.classList.remove('hidden');
|
|
| 48 |
} else {
|
|
| 49 |
settings.classList.add('hidden');
|
|
| 50 |
} |
|
| 51 |
}); |
|
| 52 |
<% end %> |
|
| config/locales/en.yml | ||
|---|---|---|
| 510 | 510 |
setting_project_list_defaults: Projects list defaults |
| 511 | 511 |
setting_twofa: Two-factor authentication |
| 512 | 512 |
setting_default_issue_query: Default Query |
| 513 |
setting_text_formatting_common_mark_hardbreaks: "Use regular line breaks (\\n) as hardbreaks" |
|
| 513 | 514 | |
| 514 | 515 |
permission_add_project: Create project |
| 515 | 516 |
permission_add_subprojects: Create subprojects |
| config/settings.yml | ||
|---|---|---|
| 96 | 96 |
default: 0 |
| 97 | 97 |
text_formatting: |
| 98 | 98 |
default: textile |
| 99 |
text_formatting_common_mark_hardbreaks: |
|
| 100 |
default: 1 |
|
| 99 | 101 |
cache_formatted_text: |
| 100 | 102 |
default: 0 |
| 101 | 103 |
wiki_compression: |
| lib/redmine/wiki_formatting/common_mark/formatter.rb | ||
|---|---|---|
| 42 | 42 | |
| 43 | 43 |
# https://github.com/gjtorikian/commonmarker#render-options |
| 44 | 44 |
commonmarker_render_options: [ |
| 45 |
:HARDBREAKS, |
|
| 46 | 45 |
:UNSAFE |
| 47 |
].freeze,
|
|
| 46 |
], |
|
| 48 | 47 |
}.freeze |
| 49 | 48 | |
| 50 | 49 |
MarkdownPipeline = HTML::Pipeline.new [ |
| ... | ... | |
| 57 | 56 | |
| 58 | 57 |
class Formatter < Redmine::WikiFormatting::Markdown::Formatter |
| 59 | 58 |
def to_html(*args) |
| 59 |
if Setting.text_formatting_common_mark_hardbreaks? |
|
| 60 |
PIPELINE_CONFIG[:commonmarker_render_options].push(:HARDBREAKS) unless PIPELINE_CONFIG[:commonmarker_render_options].include?(:HARDBREAKS) |
|
| 61 |
else |
|
| 62 |
PIPELINE_CONFIG[:commonmarker_render_options].delete(:HARDBREAKS) if PIPELINE_CONFIG[:commonmarker_render_options].include?(:HARDBREAKS) |
|
| 63 |
end |
|
| 64 | ||
| 60 | 65 |
result = MarkdownPipeline.call @text |
| 61 | 66 |
result[:output].to_s |
| 62 | 67 |
end |
| public/stylesheets/application.css | ||
|---|---|---|
| 849 | 849 |
float: none; |
| 850 | 850 |
} |
| 851 | 851 | |
| 852 |
.tabular label.block.hidden {
|
|
| 853 |
display: none; |
|
| 854 |
} |
|
| 855 | ||
| 852 | 856 |
.tabular label.inline{
|
| 853 | 857 |
font-weight: normal; |
| 854 | 858 |
float:none; |