solidus_i18n 1.3.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +35 -50
  3. data/config/routes.rb +0 -14
  4. data/lib/solidus_i18n.rb +0 -5
  5. data/lib/solidus_i18n/engine.rb +0 -39
  6. data/lib/solidus_i18n/version.rb +2 -2
  7. data/solidus_i18n.gemspec +0 -13
  8. data/spec/{lib/solidus_i18n/locale_spec.rb → solidus_i18n_spec.rb} +16 -4
  9. data/spec/spec_helper.rb +0 -1
  10. metadata +3 -242
  11. data/app/assets/javascripts/spree/backend/edit_inline_locales.js.coffee.erb +0 -56
  12. data/app/assets/javascripts/spree/backend/helpers.js.coffee.erb +0 -14
  13. data/app/assets/javascripts/spree/backend/inline_table_locales.js.coffee +0 -16
  14. data/app/assets/javascripts/spree/backend/solidus_i18n.js +0 -2
  15. data/app/assets/javascripts/spree/backend/templates/available_locales.hbs.erb +0 -31
  16. data/app/assets/javascripts/spree/backend/translations.js.coffee +0 -3
  17. data/app/assets/javascripts/spree/frontend/locale.js.coffee +0 -3
  18. data/app/assets/javascripts/spree/frontend/solidus_i18n.js +0 -2
  19. data/app/assets/stylesheets/spree/backend/solidus_i18n.css +0 -8
  20. data/app/assets/stylesheets/spree/frontend/solidus_i18n.css +0 -8
  21. data/app/controllers/spree/admin/locales_controller.rb +0 -16
  22. data/app/controllers/spree/api/available_locales_controller.rb +0 -28
  23. data/app/controllers/spree/api/base_controller_decorator.rb +0 -3
  24. data/app/controllers/spree/base_controller_decorator.rb +0 -3
  25. data/app/controllers/spree/locale_controller_decorator.rb +0 -5
  26. data/app/helpers/solidus_i18n/locale_helper.rb +0 -29
  27. data/app/models/spree/store_decorator.rb +0 -13
  28. data/app/overrides/spree/admin/shared/_configuration_menu/add_i18n_tab.html.erb.deface +0 -2
  29. data/app/overrides/spree/shared/_main_nav_bar/locale_selector.html.erb.deface +0 -16
  30. data/app/views/spree/admin/locales/show.html.erb +0 -21
  31. data/app/views/spree/api/available_locales/show.json.jbuilder +0 -8
  32. data/config/initializers/country_names.rb +0 -51
  33. data/config/initializers/routing_filter.rb +0 -2
  34. data/db/migrate/20150609154031_remove_translations_from_spree_tables.rb +0 -65
  35. data/db/migrate/20170523151209_add_available_locales_on_store.rb +0 -14
  36. data/lib/generators/solidus_i18n/install/install_generator.rb +0 -27
  37. data/lib/solidus_i18n/configuration.rb +0 -9
  38. data/lib/solidus_i18n/controller_locale_helper.rb +0 -29
  39. data/lib/solidus_i18n/locale.rb +0 -9
  40. data/spec/controllers/locales_controller_spec.rb +0 -25
  41. data/spec/features/admin/translations_spec.rb +0 -56
  42. data/spec/features/russian_errors_translation_spec.rb +0 -17
  43. data/spec/features/translation_spec.rb +0 -31
  44. data/spec/features/translations_spec.rb +0 -30
  45. data/spec/helpers/locale_helper_spec.rb +0 -35
  46. data/spec/support/capybara.rb +0 -6
  47. data/spec/support/database_cleaner.rb +0 -23
  48. data/spec/support/factory_girl.rb +0 -5
  49. data/spec/support/i18n.rb +0 -5
  50. data/spec/support/spree.rb +0 -12
@@ -1,56 +0,0 @@
1
- Spree.EditInlineLocales = Backbone.View.extend(
2
- initialize: ->
3
- @editing = false
4
- @render()
5
-
6
- events:
7
- 'click [data-action=edit]': 'onEdit'
8
- 'click [data-action=save]': 'onSave'
9
- 'click [data-action=cancel]': 'onCancel'
10
-
11
- onEdit: (e) ->
12
- return if @editing
13
- @$el.addClass 'editing'
14
- @editing = true
15
- @render()
16
-
17
- onCancel: (e) ->
18
- e.preventDefault()
19
- @$el.removeClass("editing")
20
- @editing = false
21
- @render()
22
-
23
- onSave: (e) ->
24
- e.preventDefault()
25
- preferred_available_locales = $('#available-locales-store-' + @model.id)
26
- Spree.ajax
27
- type: 'PUT'
28
- url: Spree.routes.available_locales_api + '/' + @model.id + '.json'
29
- data:
30
- store:
31
- preferred_available_locales: preferred_available_locales.val()
32
- success: (response) =>
33
- @model = response.store
34
- @editing = false
35
- @$el.removeClass("editing")
36
- @render()
37
- error: (response) =>
38
- show_flash 'error', response.responseJSON.error
39
-
40
- render: ->
41
- renderAttr =
42
- availableLocales: <%= SolidusI18n::Locale.all.push(:en).to_json %>
43
- availableLocalesPresentation: <%= Hash[(SolidusI18n::Locale.all + [:en]).map do |locale|
44
- [locale, Spree.t(:'i18n.this_file_language', locale: locale)]
45
- end].to_json %>
46
- store: @model
47
- editing: @editing
48
- _.extend(renderAttr, @model.attributes)
49
-
50
- @$el.html(HandlebarsTemplates['available_locales'](renderAttr))
51
- $('.available-locales').select2({placeholder: Spree.translations['please_choose_language'], width: 'element'})
52
-
53
- return @
54
- )
55
-
56
- Spree.routes.available_locales_api = Spree.pathFor('api/config/available_locales');
@@ -1,14 +0,0 @@
1
- window.Handlebars.registerHelper 'locale-presentation', (locale, localePresentationHashmap, options) ->
2
- localePresentationHashmap[locale]
3
-
4
- window.Handlebars.registerHelper 'selected', (locale, store, options) ->
5
- for k of store.preferences.available_locales
6
- value = store.preferences.available_locales[k]
7
- return 'selected="selected"' if value == locale
8
-
9
- window.Handlebars.registerHelper 'store-available-locales', (store, options) ->
10
- locales = for k of store.preferences.available_locales
11
- locale = store.preferences.available_locales[k]
12
- @availableLocalesPresentation[locale]
13
-
14
- locales.join(',')
@@ -1,16 +0,0 @@
1
- Spree.InlineTableLocales = Backbone.View.extend(
2
- initialize: ->
3
- if @$el.length
4
- Spree.ajax({
5
- type: 'GET'
6
- url: "/api/config/available_locales"
7
- success: (collection) =>
8
- for store in collection
9
- row = $("<tr id='store-id-#{store.id}'/>")
10
- @$el.append(row)
11
- new Spree.EditInlineLocales({
12
- el: row
13
- model: store
14
- });
15
- })
16
- )
@@ -1,2 +0,0 @@
1
- //= require spree/backend
2
- //= require_tree .
@@ -1,31 +0,0 @@
1
- <td>
2
- {{store.name}}
3
- {{#if store.default}}
4
- <span class="label label-default">default</span>
5
- {{/if}}
6
- </td>
7
- <td>{{store.url}}</td>
8
- <td>
9
- {{#if editing}}
10
- <select id='available-locales-store-{{store.id}}' class='available-locales select2 fullwidth' name='store[preferred_available_locales][]' multiple='true'>
11
- {{#each availableLocales}}
12
- <option value="{{ this }}" {{#selected this ../store}}{{/selected}}>
13
- {{#locale-presentation this ../availableLocalesPresentation}}{{/locale-presentation}}
14
- </option>
15
- {{/each}}
16
- </select>
17
- {{else}}
18
- {{store-available-locales store availableLocales}}
19
- {{#each store.preferences.available_locales}}
20
- {{locale-presentation this}}
21
- {{/each}}
22
- {{/if}}
23
- </td>
24
- <td class="actions">
25
- {{#if editing}}
26
- <a class="fa fa-check icon_link with-tip no-text" data-action="save" data-id="{{id}}" href="#"></a>
27
- <a class="fa fa-cancel icon_link with-tip no-text" data-action="cancel" data-id="{{id}}" href="#"></a>
28
- {{else}}
29
- <a class="fa fa-edit icon_link with-tip no-text" data-action="edit" data-id="{{id}}" href="#"></a>
30
- {{/if}}
31
- </td>
@@ -1,3 +0,0 @@
1
- $ ->
2
- _.extend (Spree.translations),
3
- please_choose_language: "<%= Spree.t(:'i18n.choose_language') %>"
@@ -1,3 +0,0 @@
1
- $ ->
2
- $('#locale-select select').change ->
3
- @form.submit()
@@ -1,2 +0,0 @@
1
- //= require spree/frontend
2
- //= require_tree .
@@ -1,8 +0,0 @@
1
- /*
2
- * This is a manifest file that'll automatically include all the stylesheets available in this directory
3
- * and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
4
- * the top of the compiled file, but it's generally better to create a new file per style scope.
5
- *
6
- *= require spree/backend
7
- *= require_tree .
8
- */
@@ -1,8 +0,0 @@
1
- /*
2
- * This is a manifest file that'll automatically include all the stylesheets available in this directory
3
- * and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
4
- * the top of the compiled file, but it's generally better to create a new file per style scope.
5
- *
6
- *= require spree/frontend
7
- *= require_tree .
8
- */
@@ -1,16 +0,0 @@
1
- module Spree
2
- module Admin
3
- class LocalesController < Spree::Admin::BaseController
4
- def show
5
- end
6
-
7
- def update
8
- params.each do |name, value|
9
- next unless SolidusI18n::Config.has_preference? name
10
- SolidusI18n::Config[name] = value.map(&:to_sym)
11
- end
12
- redirect_to admin_locale_path
13
- end
14
- end
15
- end
16
- end
@@ -1,28 +0,0 @@
1
- module Spree
2
- module Api
3
- class AvailableLocalesController < Spree::Api::BaseController
4
- def index
5
- respond_with Store.all
6
- end
7
-
8
- def update
9
- authorize! :update, store
10
- if store.update_attributes(store_params)
11
- respond_with(store, status: 200, default_template: :show)
12
- else
13
- invalid_resource!(store)
14
- end
15
- end
16
-
17
- private
18
-
19
- def store_params
20
- params.require(:store).permit(preferred_available_locales: [])
21
- end
22
-
23
- def store
24
- @store ||= Store.find(params[:id])
25
- end
26
- end
27
- end
28
- end
@@ -1,3 +0,0 @@
1
- Spree::Api::BaseController.class_eval do
2
- include SolidusI18n::ControllerLocaleHelper
3
- end
@@ -1,3 +0,0 @@
1
- Spree::BaseController.class_eval do
2
- include SolidusI18n::ControllerLocaleHelper
3
- end
@@ -1,5 +0,0 @@
1
- Spree::LocaleController.class_eval do
2
- def set
3
- redirect_to root_path(locale: params[:switch_to_locale])
4
- end
5
- end
@@ -1,29 +0,0 @@
1
- module SolidusI18n
2
- module LocaleHelper
3
- def select_available_locales(store = nil)
4
- select_tag('store[preferred_available_locales][]',
5
- options_for_select(
6
- all_locales_options,
7
- store.preferred_available_locales
8
- ), common_options)
9
- end
10
-
11
- def available_locales_options
12
- current_store.preferred_available_locales.map { |locale| locale_presentation(locale) }
13
- end
14
-
15
- def all_locales_options
16
- SolidusI18n::Locale.all.map { |locale| locale_presentation(locale) }
17
- end
18
-
19
- private
20
-
21
- def locale_presentation(locale)
22
- [Spree.t(:'i18n.this_file_language', locale: locale), locale]
23
- end
24
-
25
- def common_options
26
- { class: 'fullwidth', multiple: 'true' }
27
- end
28
- end
29
- end
@@ -1,13 +0,0 @@
1
- module SolidusI18n
2
- module AddAvailableLanguagesPreferenceToStore
3
- def self.prepended(base)
4
- base.preference :available_locales, :array, default: [:en]
5
- end
6
-
7
- def preferred_available_locales
8
- super.map(&:to_sym)
9
- end
10
- end
11
-
12
- Spree::Store.prepend AddAvailableLanguagesPreferenceToStore
13
- end
@@ -1,2 +0,0 @@
1
- <!-- insert_bottom '[data-hook=admin_configurations_sidebar_menu]'-->
2
- <%= tab :locales, url: spree.admin_locale_path %>
@@ -1,16 +0,0 @@
1
- <!-- insert_bottom '#main-nav-bar' -->
2
- <% if current_store.preferred_available_locales.many? %>
3
- <li id="locale-select" data-hook>
4
- <%= form_tag spree.set_locale_path, class: 'navbar-form' do %>
5
- <div class="form-group">
6
- <label for="switch_to_locale" class="sr-only">
7
- <%= Spree.t(:'i18n.language') %>
8
- </label>
9
- <%= select_tag(:switch_to_locale,
10
- options_for_select(available_locales_options, I18n.locale),
11
- class: 'form-control') %>
12
- <noscript><%= submit_tag %></noscript>
13
- </div>
14
- <% end %>
15
- </li>
16
- <% end %>
@@ -1,21 +0,0 @@
1
- <%= render 'spree/admin/shared/configuration_menu' %>
2
-
3
- <table class="index locales-settings">
4
- <thead>
5
- <tr>
6
- <th><%= Spree::Store.human_attribute_name(:name) %></th>
7
- <th><%= Spree::Store.human_attribute_name(:url) %></th>
8
- <th><%= Spree.t(:'i18n.locales_displayed_on_frontend_select_box') %></th>
9
- <th class="actions"></th>
10
- </tr>
11
- </thead>
12
- <tbody>
13
- <%# Rendered by JS %>
14
- </tbody>
15
- </table>
16
-
17
- <script>
18
- Spree.ready(function(){
19
- new Spree.InlineTableLocales({ el: $("table.locales-settings > tbody") });
20
- })
21
- </script>
@@ -1,8 +0,0 @@
1
- json.store do
2
- json.extract!(@store, :id, :name, :url, :meta_description, :meta_keywords,
3
- :seo_title, :mail_from_address, :default_currency, :code, :default)
4
-
5
- json.preferences do
6
- json.available_locales @store.preferences[:available_locales]
7
- end
8
- end
@@ -1,51 +0,0 @@
1
- require 'i18n_data'
2
-
3
- module I18n
4
- module Backend
5
- class I18nDataBackend
6
- module Implementation
7
- include Base, Flatten
8
-
9
- def available_locales
10
- I18nData.languages.keys.map(&:to_sym)
11
- end
12
-
13
- def lookup(locale, key, scope = [], options = {})
14
- I18nData.countries(locale)[key]
15
- rescue I18nData::NoTranslationAvailable
16
- # rescue failed lookup to fall back to this extensions locale files.
17
- end
18
- end
19
-
20
- include Implementation
21
- end
22
- end
23
- end
24
-
25
- I18n.backend = I18n::Backend::Chain.new(I18n::Backend::I18nDataBackend.new, I18n.backend)
26
-
27
- module I18nData
28
- private
29
-
30
- def self.normal_to_region_code(normal)
31
- country_mappings = {
32
- 'DE-CH' => 'de',
33
- 'FR-CH' => 'fr',
34
- 'EN-AU' => 'en',
35
- 'EN-GB' => 'en',
36
- 'EN-US' => 'en',
37
- 'EN-IN' => 'en',
38
- 'EN-NZ' => 'en',
39
- 'ES-CL' => 'es',
40
- 'ES-EC' => 'es',
41
- 'ES-MX' => 'es',
42
- 'PT-BR' => 'pt',
43
- 'SL-SI' => 'sl',
44
- 'ZH-TW' => 'zh_TW',
45
- 'ZH-CN' => 'zh_CN',
46
- 'ZH' => 'zh_CN',
47
- 'BN' => 'bn_IN'
48
- }
49
- country_mappings[normal] || normal
50
- end
51
- end
@@ -1,2 +0,0 @@
1
- # do not include the default locale in the URL
2
- RoutingFilter::Locale.include_default_locale = false
@@ -1,65 +0,0 @@
1
- class RemoveTranslationsFromSpreeTables < SolidusSupport::Migration[4.2]
2
- def up
3
- # Don't migrate if we still use Globalize, i.e. through spree_globalize Gem
4
- return if defined?(Globalize)
5
-
6
- %w(
7
- OptionType
8
- OptionValue
9
- ProductProperty
10
- Product
11
- Promotion
12
- Property
13
- Store
14
- Taxon
15
- Taxonomy
16
- ).each do |class_name|
17
- migrate_translation_data!(class_name)
18
- end
19
- end
20
-
21
- def down
22
- return if defined?(Globalize)
23
- raise ActiveRecord::IrreversibleMigration
24
- end
25
-
26
- private
27
-
28
- def current_locale
29
- I18n.default_locale || 'en'
30
- end
31
-
32
- def migrate_translation_data!(class_name)
33
- klass = "Spree::#{class_name}".constantize
34
- table_name = klass.table_name
35
- singular_table_name = table_name.singularize
36
-
37
- return if !table_exists?(table_name) || !table_exists?("#{singular_table_name}_translations")
38
-
39
- # We can't rely on Globalize drop_translation_table! here,
40
- # because the Gem has been already removed, so we need to run custom SQL
41
- records = exec_query("SELECT * FROM #{singular_table_name}_translations WHERE locale = '#{current_locale}';")
42
-
43
- records.each do |record|
44
- id = record["#{singular_table_name}_id"]
45
- attributes = record.except(
46
- 'id',
47
- "#{singular_table_name}_id",
48
- 'locale',
49
- 'deleted_at',
50
- 'created_at',
51
- 'updated_at'
52
- )
53
- object = if klass.respond_to?(:with_deleted)
54
- klass.with_deleted.find(id)
55
- else
56
- klass.find(id)
57
- end
58
- object.update_columns(attributes)
59
- end
60
-
61
- say "Migrated #{current_locale} translation for #{class_name} back into original table."
62
-
63
- drop_table "#{singular_table_name}_translations"
64
- end
65
- end