diff --git a/app/assets/javascripts/globalize.js.coffee b/app/assets/javascripts/globalize.js.coffee index 027ac498e..068ca88c8 100644 --- a/app/assets/javascripts/globalize.js.coffee +++ b/app/assets/javascripts/globalize.js.coffee @@ -36,6 +36,10 @@ App.Globalize = disable_locale: (locale) -> $("#enabled_translations_" + locale).val(0) + refresh_visible_translations: -> + locale = $('.js-globalize-locale-link.is-active').data("locale") + App.Globalize.display_translations(locale) + initialize: -> $('.js-globalize-locale').on 'change', -> App.Globalize.display_translations($(this).val()) diff --git a/app/assets/javascripts/legislation_admin.js.coffee b/app/assets/javascripts/legislation_admin.js.coffee index fc1d7cab4..f7f9ea17a 100644 --- a/app/assets/javascripts/legislation_admin.js.coffee +++ b/app/assets/javascripts/legislation_admin.js.coffee @@ -12,3 +12,5 @@ App.LegislationAdmin = else $(this).val("") + $("#nested-question-options").on "cocoon:after-insert", -> + App.Globalize.refresh_visible_translations() diff --git a/app/controllers/admin/legislation/questions_controller.rb b/app/controllers/admin/legislation/questions_controller.rb index bac16295e..da73e905c 100644 --- a/app/controllers/admin/legislation/questions_controller.rb +++ b/app/controllers/admin/legislation/questions_controller.rb @@ -1,4 +1,6 @@ class Admin::Legislation::QuestionsController < Admin::Legislation::BaseController + include Translatable + load_and_authorize_resource :process, class: "Legislation::Process" load_and_authorize_resource :question, class: "Legislation::Question", through: :process @@ -46,7 +48,13 @@ class Admin::Legislation::QuestionsController < Admin::Legislation::BaseControll def question_params params.require(:legislation_question).permit( :title, - question_options_attributes: [:id, :value, :_destroy] + *translation_params(::Legislation::Question), + question_options_attributes: [:id, :value, + *translation_params(::Legislation::QuestionOption)] ) end + + def resource + @question || ::Legislation::Question.find(params[:id]) + end end diff --git a/app/models/legislation/question.rb b/app/models/legislation/question.rb index 2ca5fb39a..859990928 100644 --- a/app/models/legislation/question.rb +++ b/app/models/legislation/question.rb @@ -3,6 +3,9 @@ class Legislation::Question < ActiveRecord::Base include ActsAsParanoidAliases include Notifiable + translates :title, touch: :true + globalize_accessors + belongs_to :author, -> { with_hidden }, class_name: 'User', foreign_key: 'author_id' belongs_to :process, class_name: 'Legislation::Process', foreign_key: 'legislation_process_id' @@ -11,7 +14,7 @@ class Legislation::Question < ActiveRecord::Base has_many :answers, class_name: 'Legislation::Answer', foreign_key: 'legislation_question_id', dependent: :destroy, inverse_of: :question has_many :comments, as: :commentable, dependent: :destroy - accepts_nested_attributes_for :question_options, reject_if: proc { |attributes| attributes[:value].blank? }, allow_destroy: true + accepts_nested_attributes_for :question_options, reject_if: proc { |attributes| attributes.all? { |k, v| v.blank? } }, allow_destroy: true validates :process, presence: true validates :title, presence: true diff --git a/app/models/legislation/question_option.rb b/app/models/legislation/question_option.rb index f7927dd1a..2282c31d3 100644 --- a/app/models/legislation/question_option.rb +++ b/app/models/legislation/question_option.rb @@ -2,6 +2,9 @@ class Legislation::QuestionOption < ActiveRecord::Base acts_as_paranoid column: :hidden_at include ActsAsParanoidAliases + translates :value, touch: :true + globalize_accessors + belongs_to :question, class_name: 'Legislation::Question', foreign_key: 'legislation_question_id', inverse_of: :question_options has_many :answers, class_name: 'Legislation::Answer', foreign_key: 'legislation_question_id', dependent: :destroy, inverse_of: :question diff --git a/app/views/admin/legislation/questions/_form.html.erb b/app/views/admin/legislation/questions/_form.html.erb index f31e5a61d..10902b78d 100644 --- a/app/views/admin/legislation/questions/_form.html.erb +++ b/app/views/admin/legislation/questions/_form.html.erb @@ -1,4 +1,6 @@ -<%= form_for [:admin, @process, @question], url: url, html: {data: {watch_changes: true}} do |f| %> +<%= render "admin/shared/globalize_locales", resource: @question %> + +<%= translatable_form_for [:admin, @process, @question], url: url, html: {data: {watch_changes: true}} do |f| %> <% if @question.errors.any? %>