Sha256: 8a6793665e45396df0edabb0bcce93872b87fde7b930cb94554e563127f5c918

Contents?: true

Size: 1.34 KB

Versions: 28

Compression:

Stored size: 1.34 KB

Contents

module Locomotive
  module Steam
    module Middlewares

      class MissingTranslations

        def initialize(app, opts = {})
          @app = app
        end

        def call(env)
          find_and_persist_missing_translations(env['locomotive.site']) do
            @app.call(env)
          end
        end

        def find_and_persist_missing_translations(site)
          translations = []

          subscription = ActiveSupport::Notifications.subscribe('steam.missing_translation') do |name, start, finish, id, payload|
            translations << { key: payload[:input], values: { payload[:input] => false } }
          end

          yield.tap do
            ActiveSupport::Notifications.unsubscribe(subscription)
            persist_missing_translations(site, translations) unless translations.empty?
          end
        end

        def persist_missing_translations(site, translations)
          new_translations = []

          translations.each do |attributes|
            if existing = site.translations.where(key: attributes[:key]).first
              existing.update_attribute :values, existing.values.merge(attributes[:values])
            else
              new_translations << attributes
            end
          end

          site.translations.create(new_translations) unless new_translations.empty?
        end

      end

    end
  end
end

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
locomotivecms-4.0.0.rc0 lib/locomotive/steam/middlewares/missing_translations.rb
locomotivecms-4.0.0.alpha3 lib/locomotive/steam/middlewares/missing_translations.rb
locomotivecms-3.4.1 lib/locomotive/steam/middlewares/missing_translations.rb
locomotivecms-4.0.0.alpha2 lib/locomotive/steam/middlewares/missing_translations.rb
locomotivecms-4.0.0.alpha1 lib/locomotive/steam/middlewares/missing_translations.rb
locomotivecms-3.4.0 lib/locomotive/steam/middlewares/missing_translations.rb
locomotivecms-3.3.0 lib/locomotive/steam/middlewares/missing_translations.rb
locomotivecms-3.3.0.rc3 lib/locomotive/steam/middlewares/missing_translations.rb
locomotivecms-3.3.0.rc2 lib/locomotive/steam/middlewares/missing_translations.rb
locomotivecms-3.1.2 lib/locomotive/steam/middlewares/missing_translations.rb
locomotivecms-3.2.1 lib/locomotive/steam/middlewares/missing_translations.rb
locomotivecms-3.3.0.rc1 lib/locomotive/steam/middlewares/missing_translations.rb
locomotivecms-3.2.0 lib/locomotive/steam/middlewares/missing_translations.rb
locomotivecms-3.2.0.rc2 lib/locomotive/steam/middlewares/missing_translations.rb
locomotivecms-3.2.0.rc1 lib/locomotive/steam/middlewares/missing_translations.rb
locomotivecms-3.1.1 lib/locomotive/steam/middlewares/missing_translations.rb
locomotivecms-3.1.0 lib/locomotive/steam/middlewares/missing_translations.rb
locomotivecms-3.1.0.rc3 lib/locomotive/steam/middlewares/missing_translations.rb
locomotivecms-3.1.0.rc2 lib/locomotive/steam/middlewares/missing_translations.rb
locomotivecms-3.1.0.rc1 lib/locomotive/steam/middlewares/missing_translations.rb