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