From abb31a695543b800617e6eac8404ef517c91cb68 Mon Sep 17 00:00:00 2001 From: Marius BALTEANU Date: Sun, 3 Feb 2019 20:03:44 +0000 Subject: [PATCH] Show Edit/Preview tabs for full width layout custom fields with text formatting enabled --- app/helpers/custom_fields_helper.rb | 9 ++++++--- app/models/custom_field.rb | 4 ++++ app/views/issues/_form_custom_fields.html.erb | 1 + test/helpers/custom_fields_helper_test.rb | 7 +++++++ test/unit/custom_field_test.rb | 8 ++++++++ 5 files changed, 26 insertions(+), 3 deletions(-) diff --git a/app/helpers/custom_fields_helper.rb b/app/helpers/custom_fields_helper.rb index 08c8c58..e0ca452 100644 --- a/app/helpers/custom_fields_helper.rb +++ b/app/helpers/custom_fields_helper.rb @@ -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? diff --git a/app/models/custom_field.rb b/app/models/custom_field.rb index 008ef49..1c71dfa 100644 --- a/app/models/custom_field.rb +++ b/app/models/custom_field.rb @@ -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. diff --git a/app/views/issues/_form_custom_fields.html.erb b/app/views/issues/_form_custom_fields.html.erb index 13bedd5..fddcd74 100644 --- a/app/views/issues/_form_custom_fields.html.erb +++ b/app/views/issues/_form_custom_fields.html.erb @@ -20,4 +20,5 @@ <% custom_field_values_full_width.each do |value| %>

<%= custom_field_tag_with_label :issue, value, :required => @issue.required_attribute?(value.custom_field_id) %>

+ <%= 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 %> diff --git a/test/helpers/custom_fields_helper_test.rb b/test/helpers/custom_fields_helper_test.rb index 1512575..ed0daa0 100644 --- a/test/helpers/custom_fields_helper_test.rb +++ b/test/helpers/custom_fields_helper_test.rb @@ -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 diff --git a/test/unit/custom_field_test.rb b/test/unit/custom_field_test.rb index 89b53ca..e4c9c0b 100644 --- a/test/unit/custom_field_test.rb +++ b/test/unit/custom_field_test.rb @@ -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 -- 2.1.4