diff --git a/lib/redmine/field_format.rb b/lib/redmine/field_format.rb index 4d168b434b..66b4cb1ab8 100644 --- a/lib/redmine/field_format.rb +++ b/lib/redmine/field_format.rb @@ -415,7 +415,27 @@ module Redmine end def edit_tag(view, tag_id, tag_name, custom_value, options={}) - view.text_area_tag(tag_name, custom_value.value, options.merge(:id => tag_id, :rows => 8)) + not_full_width_custom_fields = %w(IssueCustomField UserCustomField TimeEntryActivityCustomField) + + # Display wikitoolbar only if textarea is full width + if custom_value.custom_field.text_formatting == 'full' && + (not_full_width_custom_fields.exclude?(custom_value.custom_field.type) ||custom_value.custom_field.full_width_layout?) + + if custom_value.custom_field.type == "IssueCustomField" + preview_url = view.preview_issue_url(:project_id => custom_value.customized.project.id, :issue_id => custom_value.customized.id) + else + preview_url = view.preview_text_url + end + view.content_tag('span', :id => "#{tag_id}_and_toolbar") do + view.text_area_tag(tag_name, custom_value.value, + options.merge(:id => tag_id, + :rows => 8, + :class => 'wiki-edit' + )) + end + view.wikitoolbar_for(tag_id, preview_url) + else + view.text_area_tag(tag_name, custom_value.value, options.merge(:id => tag_id, :rows => 8)) + end end def bulk_edit_tag(view, tag_id, tag_name, custom_field, objects, value, options={}) diff --git a/test/unit/lib/redmine/field_format/field_format_test.rb b/test/unit/lib/redmine/field_format/field_format_test.rb index f066389446..51f64bce24 100644 --- a/test/unit/lib/redmine/field_format/field_format_test.rb +++ b/test/unit/lib/redmine/field_format/field_format_test.rb @@ -98,4 +98,40 @@ class Redmine::FieldFormatTest < ActionView::TestCase assert_equal "foo bar", field.format.formatted_custom_value(self, custom_value, false) assert_equal 'foo bar', field.format.formatted_custom_value(self, custom_value, true) end + + def test_edit_tag_should_display_wikitoolbar_if_text_formatting_enabled + field = ProjectCustomField.new(:field_format => 'text', :text_formatting => 'full') + custom_value = CustomValue.new(:custom_field => field, :customized => Project.first, :value => "foo bar") + edit_tag = field.format.edit_tag(self, "tag_id", "tag_name", custom_value) + + assert_includes edit_tag, "" + assert_includes edit_tag, wikitoolbar_for('tag_id', preview_text_url) + end + + def test_edit_tag_should_not_display_wikitoolbar_if_text_formatting_disabled + field = ProjectCustomField.new(:field_format => 'text', :text_formatting => nil) + custom_value = CustomValue.new(:custom_field => field, :customized => Project.first, :value => "foo bar") + edit_tag = field.format.edit_tag(self, "tag_id", "tag_name", custom_value) + + assert_includes edit_tag, "" + assert_not_includes edit_tag, wikitoolbar_for('tag_id', preview_text_url) + end + + def test_edit_tag_should_not_display_wikitoolbar_if_the_field_is_not_full_width_layout + field = IssueCustomField.new(:field_format => 'text', :full_width_layout => nil, :text_formatting => 'full') + custom_value = CustomValue.new(:custom_field => field, :customized => Issue.first, :value => "foo bar") + edit_tag = field.format.edit_tag(self, "tag_id", "tag_name", custom_value) + + assert_includes edit_tag, "" + assert_not_includes edit_tag, wikitoolbar_for('tag_id', preview_text_url) + end + + def test_edit_tag_should_display_wikitoolbar_if_the_field_is_full_width_layout + field = IssueCustomField.new(:field_format => 'text', :full_width_layout => '1', :text_formatting => 'full') + custom_value = CustomValue.new(:custom_field => field, :customized => Issue.first, :value => "foo bar") + edit_tag = field.format.edit_tag(self, "tag_id", "tag_name", custom_value) + + assert_includes edit_tag, "" + assert_includes edit_tag, wikitoolbar_for('tag_id', preview_issue_url(:project_id => Issue.first.project.id, :issue_id => Issue.first.id)) + end end