diff --git a/app/helpers/translatable_form_helper.rb b/app/helpers/translatable_form_helper.rb index 14d746a4f..decab4dd7 100644 --- a/app/helpers/translatable_form_helper.rb +++ b/app/helpers/translatable_form_helper.rb @@ -10,14 +10,16 @@ module TranslatableFormHelper @object.globalize_locales.map do |locale| Globalize.with_locale(locale) do fields_for(:translations, translation_for(locale), builder: TranslationsFieldsBuilder) do |translations_form| - @template.concat translations_form.hidden_field( - :_destroy, - class: "destroy_locale", - data: { locale: locale }) + @template.content_tag :div, translations_options(translations_form.object, locale) do + @template.concat translations_form.hidden_field( + :_destroy, + class: "destroy_locale", + data: { locale: locale }) - @template.concat translations_form.hidden_field(:locale, value: locale) + @template.concat translations_form.hidden_field(:locale, value: locale) - yield translations_form + yield translations_form + end end end end.join.html_safe @@ -38,27 +40,24 @@ module TranslatableFormHelper translation.mark_for_destruction unless locale == I18n.locale end end + + private + + def translations_options(resource, locale) + { + class: " js-globalize-attribute", + style: @template.display_translation_style(resource.globalized_model, locale), + data: { locale: locale } + } + end end class TranslationsFieldsBuilder < FoundationRailsHelper::FormBuilder %i[text_field text_area cktext_area].each do |field| define_method field do |attribute, options = {}| - final_options = translations_options(options) - - label_help_text_and_field = - custom_label(attribute, final_options[:label], final_options[:label_options]) + - help_text(final_options[:hint]) + - super(attribute, final_options.merge(label: false, hint: false)) - - if field == :cktext_area - content_tag :div, - label_help_text_and_field, - class: "js-globalize-attribute", - style: display_style, - data: { locale: locale } - else - label_help_text_and_field - end + custom_label(attribute, options[:label], options[:label_options]) + + help_text(options[:hint]) + + super(attribute, options.merge(label: false, hint: false)) end end @@ -67,44 +66,17 @@ module TranslatableFormHelper end def label(attribute, text = nil, options = {}) - label_options = translations_options(options) + label_options = options.dup hint = label_options.delete(:hint) super(attribute, text, label_options) + help_text(hint) end - def display_style - @template.display_translation_style(@object.globalized_model, locale) - end - - def error_for(attribute, options = {}) - final_options = translations_options(options).merge(class: "error js-globalize-attribute") - - return unless has_error?(attribute) - - error_messages = object.errors[attribute].join(', ') - error_messages = error_messages.html_safe if options[:html_safe_errors] - content_tag(:small, error_messages, final_options) - end - private def help_text(text) if text - content_tag :span, text, - class: "help-text js-globalize-attribute", - data: { locale: locale }, - style: display_style - else - "" + content_tag :span, text, class: "help-text" end end - - def translations_options(options) - options.merge( - class: "#{options[:class]} js-globalize-attribute".strip, - style: "#{options[:style]} #{display_style}".strip, - data: (options[:data] || {}).merge(locale: locale) - ) - end end end diff --git a/app/views/admin/legislation/draft_versions/_form.html.erb b/app/views/admin/legislation/draft_versions/_form.html.erb index 417a303fe..93e955a0b 100644 --- a/app/views/admin/legislation/draft_versions/_form.html.erb +++ b/app/views/admin/legislation/draft_versions/_form.html.erb @@ -32,11 +32,7 @@ <%= translations_form.label :body, nil, hint: t("admin.legislation.draft_versions.form.use_markdown") %> - <%= content_tag :div, - class: "markdown-editor clear js-globalize-attribute", - data: { locale: translations_form.locale }, - style: translations_form.display_style do %> - +