]> source.dussan.org Git - redmine.git/commitdiff
Show Edit/Preview tabs for full width layout custom fields with text formatting enabl...
authorGo MAEDA <maeda@farend.jp>
Tue, 12 Feb 2019 11:50:54 +0000 (11:50 +0000)
committerGo MAEDA <maeda@farend.jp>
Tue, 12 Feb 2019 11:50:54 +0000 (11:50 +0000)
Patch by Marius BALTEANU.

git-svn-id: http://svn.redmine.org/redmine/trunk@17858 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/helpers/custom_fields_helper.rb
app/models/custom_field.rb
app/views/issues/_form_custom_fields.html.erb
test/helpers/custom_fields_helper_test.rb
test/unit/custom_field_test.rb

index 08c8c5887918453c619e52829f3ad464594b1c9d..e0ca4529b7aa6024c353e28bd2ea62dec63eef5f 100644 (file)
@@ -55,7 +55,7 @@ module CustomFieldsHelper
     items = []
     items << [l(:label_custom_field_plural), custom_fields_path]
     items << [l(custom_field.type_name), custom_fields_path(:tab => custom_field.class.name)] if custom_field
-    items << (custom_field.nil? || custom_field.new_record? ? l(:label_custom_field_new) : custom_field.name) 
+    items << (custom_field.nil? || custom_field.new_record? ? l(:label_custom_field_new) : custom_field.name)
 
     title(*items)
   end
@@ -79,11 +79,14 @@ module CustomFieldsHelper
 
   # Return custom field html tag corresponding to its format
   def custom_field_tag(prefix, custom_value)
+    css = "#{custom_value.custom_field.field_format}_cf"
+    css << ' wiki-edit' if custom_value.custom_field.full_text_formatting?
+
     custom_value.custom_field.format.edit_tag self,
       custom_field_tag_id(prefix, custom_value.custom_field),
       custom_field_tag_name(prefix, custom_value.custom_field),
       custom_value,
-      :class => "#{custom_value.custom_field.field_format}_cf"
+      :class => css
   end
 
   # Return custom field name tag
@@ -92,7 +95,7 @@ module CustomFieldsHelper
     css = title ? "field-description" : nil
     content_tag 'span', custom_field.name, :title => title, :class => css
   end
-  
+
   # Return custom field label tag
   def custom_field_label_tag(name, custom_value, options={})
     required = options[:required] || custom_value.custom_field.is_required?
index 008ef49f9aad861d4950152e3a3a91a9d49173be..1c71dfad9075a19e66ffd376ed2e545800a79ea2 100644 (file)
@@ -190,6 +190,10 @@ class CustomField < ActiveRecord::Base
     full_width_layout == '1'
   end
 
+  def full_text_formatting?
+    text_formatting == 'full'
+  end
+
   # Returns a ORDER BY clause that can used to sort customized
   # objects by their value of the custom field.
   # Returns nil if the custom field can not be used for sorting.
index 13bedd5465537fa61bca48fd6ca591de00ce9fd1..fddcd742f6acb52b9b819a4f4a73281c78165d81 100644 (file)
@@ -20,4 +20,5 @@
 
 <% custom_field_values_full_width.each do |value| %>
   <p><%= custom_field_tag_with_label :issue, value, :required => @issue.required_attribute?(value.custom_field_id) %></p>
+  <%= wikitoolbar_for "issue_custom_field_values_#{value.custom_field_id}", preview_issue_path(:project_id => @issue.project, :issue_id => @issue.id) if value.custom_field.full_text_formatting? %>
 <% end %>
index 1512575486ce837f4472adaef0ec735f70fa315a..ed0daa03a8111b59bfc43ba253ce9d8ba15f8608 100644 (file)
@@ -86,4 +86,11 @@ class CustomFieldsHelperTest < Redmine::HelperTest
     assert_select_in custom_field_tag_for_bulk_edit('object', field),
       'input[type=text][value=""][name=?]', 'object[custom_field_values][52]'
   end
+
+  def test_custom_field_tag_class_should_contain_wiki_edit_for_custom_fields_with_full_text_formatting
+    field = IssueCustomField.create!(:name => 'Long text', :field_format => 'text', :text_formatting => 'full')
+    value = CustomValue.new(:value => 'bar', :custom_field => field)
+
+    assert_select_in custom_field_tag('object', value), 'textarea[class=?]', 'text_cf wiki-edit'
+  end
 end
index 89b53caeb241b97f19e2bf480ef4b94c9b264dfe..e4c9c0b94e79c26b94dd3d80f3bff691ef77ad9e 100644 (file)
@@ -362,4 +362,12 @@ class CustomFieldTest < ActiveSupport::TestCase
       refute_includes Project.where(project_field.visibility_by_project_condition), project
     end
   end
+
+  def test_full_text_formatting?
+    field = IssueCustomField.create!(:name => 'Long text', :field_format => 'text', :text_formatting => 'full')
+    assert field.full_text_formatting?
+
+    field2 = IssueCustomField.create!(:name => 'Another long text', :field_format => 'text')
+    assert !field2.full_text_formatting?
+  end
 end