diff --git a/app/controllers/remote_translations_controller.rb b/app/controllers/remote_translations_controller.rb index b1207157c..7ff8c9602 100644 --- a/app/controllers/remote_translations_controller.rb +++ b/app/controllers/remote_translations_controller.rb @@ -2,34 +2,21 @@ class RemoteTranslationsController < ApplicationController skip_authorization_check respond_to :html, :js - before_action :set_remote_translations, only: :create - def create - @remote_translations.each do |remote_translation| - RemoteTranslation.create!(remote_translation) unless translations_enqueued?(remote_translation) - end + RemoteTranslation.create_all(remote_translations_params) + redirect_to request.referer, notice: t("remote_translations.create.enqueue_remote_translation") end private def remote_translations_params - params.permit(allowed_params) - end - - def allowed_params - [:remote_translations] - end - - def set_remote_translations - remote_translations = remote_translations_params["remote_translations"] - decoded_remote_translations = ActiveSupport::JSON.decode(remote_translations) - @remote_translations = decoded_remote_translations.map do |remote_translation| - remote_translation.slice("remote_translatable_id", "remote_translatable_type", "locale") + ActiveSupport::JSON.decode(params["remote_translations"]).map do |remote_translation_params| + remote_translation_params.slice(*allowed_params) end end - def translations_enqueued?(remote_translation) - RemoteTranslation.remote_translation_enqueued?(remote_translation) + def allowed_params + ["remote_translatable_id", "remote_translatable_type", "locale"] end end diff --git a/app/models/remote_translation.rb b/app/models/remote_translation.rb index 6eec7ca0a..97d53216c 100644 --- a/app/models/remote_translation.rb +++ b/app/models/remote_translation.rb @@ -41,6 +41,12 @@ class RemoteTranslation < ApplicationRecord resource.class.translates? && resource.translations.where(locale: I18n.locale).empty? end + def self.create_all(remote_translations_params) + remote_translations_params.each do |remote_translation_params| + create!(remote_translation_params) unless remote_translation_enqueued?(remote_translation_params) + end + end + def already_translated_resource if remote_translatable&.translations&.where(locale: locale).present? errors.add(:locale, :already_translated)