para-i18n 0.5.0 → 0.5.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.vscode/settings.json +5 -0
- data/README.md +1 -1
- data/app/controllers/para/admin/translations_controller.rb +7 -0
- data/app/helpers/para/i18n/urls_helper.rb +9 -0
- data/app/javascripts/para/admin/translation_locale_select_controller.js +20 -0
- data/app/javascripts/para/i18n.js +11 -0
- data/app/views/para/admin/resources/_translations_fields.html.haml +0 -3
- data/app/views/para/admin/resources/_translations_fields_container.html.haml +9 -0
- data/app/views/para/admin/resources/_translations_form.html.haml +0 -3
- data/app/views/para/admin/translations/_target_locale_select.html.erb +17 -0
- data/dist/index.js +19 -0
- data/dist/index.js.map +7 -0
- data/lib/para/i18n/form_builder/nested_form.rb +1 -1
- data/lib/para/i18n/friendly_id.rb +1 -1
- data/lib/para/i18n/model.rb +35 -0
- data/lib/para/i18n/resources_buttons.rb +7 -2
- data/lib/para/i18n/version.rb +1 -1
- data/package.json +27 -0
- data/yarn.lock +161 -0
- metadata +16 -9
- data/app/assets/javascripts/para/admin/translation.coffee +0 -10
- data/app/assets/javascripts/para/i18n.coffee +0 -1
- data/app/views/para/admin/translations/_target_locale_select.html.haml +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7a0c2cb5b72d32e5b2f3004cf1058e38c2d8d6bfcd27b934209b14c34efb735c
|
4
|
+
data.tar.gz: b48b78e2882e346bfd623e82b2db83242e7fd646fc6f2004f9403c083016384a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ac1aebbd243360b95d1cb944bdc76579448dad4c6161440ce1d12361536b46fc4a2b5eeb7ad135490c0462d77845d01d3e49363e325de88f27668c661a75aff7
|
7
|
+
data.tar.gz: 4de0c69944f80774d48a8e06fdc42eccf11232424c2f89941887ad6f3617597c03dffa02ac2a722dc439f8003b193033ae1a5060164952c3229e1c749a5b9a5a
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -24,7 +24,7 @@ Or install it yourself as:
|
|
24
24
|
|
25
25
|
$ gem install para-i18n
|
26
26
|
|
27
|
-
Add the para-i18n javascript file to your app's admin manifest at `app/assets/javascripts/admin/app.
|
27
|
+
Add the para-i18n javascript file to your app's admin manifest at `app/assets/javascripts/admin/app.js` :
|
28
28
|
|
29
29
|
```javascript
|
30
30
|
//= require para/i18n
|
@@ -22,6 +22,13 @@ module Para
|
|
22
22
|
|
23
23
|
private
|
24
24
|
|
25
|
+
def after_form_submit_path
|
26
|
+
path = super
|
27
|
+
return path unless params[:_save_and_edit]
|
28
|
+
|
29
|
+
path.merge(target_locale: @target_locale)
|
30
|
+
end
|
31
|
+
|
25
32
|
def load_and_authorize_crud_resource
|
26
33
|
options = { class: resource_model }
|
27
34
|
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import { Controller } from "@hotwired/stimulus";
|
2
|
+
import TomSelect from "tom-select";
|
3
|
+
|
4
|
+
export default class extends Controller {
|
5
|
+
static values = { pathTemplate: String };
|
6
|
+
|
7
|
+
connect() {
|
8
|
+
this.localeSelect = new TomSelect(this.element);
|
9
|
+
}
|
10
|
+
|
11
|
+
disconnect() {
|
12
|
+
this.localeSelect.destroy();
|
13
|
+
}
|
14
|
+
|
15
|
+
switchLocale() {
|
16
|
+
const url = this.pathTemplateValue.replace("__locale__", this.element.value);
|
17
|
+
|
18
|
+
Turbo.visit(url);
|
19
|
+
}
|
20
|
+
}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
const application = window.Stimulus;
|
2
|
+
|
3
|
+
if (!application) {
|
4
|
+
throw new Error(
|
5
|
+
"Stimulus is not available in the global scope. Make sure to require Para and / " +
|
6
|
+
"or initialize Stimulus in your application before loading this file."
|
7
|
+
);
|
8
|
+
}
|
9
|
+
|
10
|
+
import TranslationLocaleSelectController from "./admin/translation_locale_select_controller";
|
11
|
+
application.register("translations-locale-select", TranslationLocaleSelectController);
|
@@ -0,0 +1,9 @@
|
|
1
|
+
- if form.object.class.translates? && form.options["locale"]
|
2
|
+
-# Process the label value here while we're in the locale of the UI, and not in the
|
3
|
+
-# target translation locale
|
4
|
+
- label = t("para.i18n.disabled_for_locale")
|
5
|
+
|
6
|
+
- I18n.with_locale(form.options["locale"]) do
|
7
|
+
= form.input :_disabled_for_locale, as: :boolean, label:
|
8
|
+
|
9
|
+
= render partial: find_partial_for(form.object.class, "translations_fields"), locals: local_assigns
|
@@ -2,9 +2,6 @@
|
|
2
2
|
= target_locale_select
|
3
3
|
|
4
4
|
= form.fieldset do
|
5
|
-
- I18n.with_locale(@target_locale) do
|
6
|
-
= form.input :_disabled_for_locale, as: :boolean, label: t("para.i18n.disabled_for_locale")
|
7
|
-
|
8
5
|
- translated_model_fields_for(resource.class).each do |field|
|
9
6
|
= form.input field.field_name, as: :i18n
|
10
7
|
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<div class="block form-inputs">
|
2
|
+
<div class="form-group">
|
3
|
+
<%= label :target_locale, t('para.i18n.choose_locale'), class: 'control-label col-md-3 pull-left' %>
|
4
|
+
|
5
|
+
<div class="col-md-9">
|
6
|
+
<%= select_tag :target_locale,
|
7
|
+
options_for_select(
|
8
|
+
locales.map { |locale| [locale, locale] }, target_locale),
|
9
|
+
data: {
|
10
|
+
controller: "translations-locale-select",
|
11
|
+
action: "change->translations-locale-select#switchLocale",
|
12
|
+
"translations-locale-select-path-template-value": translations_form_locale_path_for(resource, "__locale__"),
|
13
|
+
}
|
14
|
+
%>
|
15
|
+
</div>
|
16
|
+
</div>
|
17
|
+
</div>
|
data/dist/index.js
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
(() => {
|
2
|
+
// app/javascripts/para/admin/translation.js
|
3
|
+
var TranslationLocaleSelect;
|
4
|
+
TranslationLocaleSelect = class TranslationLocaleSelect2 {
|
5
|
+
static onChange($field) {
|
6
|
+
var targetLocale, targetURL;
|
7
|
+
targetURL = $field.data("locale-select-target-url");
|
8
|
+
targetLocale = $field.val();
|
9
|
+
targetURL = targetURL.replace("target_locale=_", ["target_locale", targetLocale].join("="));
|
10
|
+
return Turbolinks.visit(targetURL.replace(":locale", targetLocale));
|
11
|
+
}
|
12
|
+
};
|
13
|
+
$(document).on("turbo:load turbo:frame-load", function() {
|
14
|
+
return $("body").on("change", "[data-locale-select]", function(e) {
|
15
|
+
return TranslationLocaleSelect.onChange($(e.currentTarget));
|
16
|
+
});
|
17
|
+
});
|
18
|
+
})();
|
19
|
+
//# sourceMappingURL=index.js.map
|
data/dist/index.js.map
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
{
|
2
|
+
"version": 3,
|
3
|
+
"sources": ["../app/javascripts/para/admin/translation.js"],
|
4
|
+
"sourcesContent": ["var TranslationLocaleSelect;\n\nTranslationLocaleSelect = class TranslationLocaleSelect {\n static onChange($field) {\n var targetLocale, targetURL;\n targetURL = $field.data('locale-select-target-url');\n targetLocale = $field.val();\n targetURL = targetURL.replace('target_locale=_', ['target_locale', targetLocale].join('='));\n return Turbolinks.visit(targetURL.replace(':locale', targetLocale));\n }\n\n};\n\n$(document).on('turbo:load turbo:frame-load', function() {\n return $('body').on('change', '[data-locale-select]', function(e) {\n return TranslationLocaleSelect.onChange($(e.currentTarget));\n });\n});\n"],
|
5
|
+
"mappings": ";;AAAA,MAAI;AAEJ,4BAA0B,MAAMA,yBAAwB;AAAA,IACtD,OAAO,SAAS,QAAQ;AACtB,UAAI,cAAc;AAClB,kBAAY,OAAO,KAAK,0BAA0B;AAClD,qBAAe,OAAO,IAAI;AAC1B,kBAAY,UAAU,QAAQ,mBAAmB,CAAC,iBAAiB,YAAY,EAAE,KAAK,GAAG,CAAC;AAC1F,aAAO,WAAW,MAAM,UAAU,QAAQ,WAAW,YAAY,CAAC;AAAA,IACpE;AAAA,EAEF;AAEA,IAAE,QAAQ,EAAE,GAAG,+BAA+B,WAAW;AACvD,WAAO,EAAE,MAAM,EAAE,GAAG,UAAU,wBAAwB,SAAS,GAAG;AAChE,aAAO,wBAAwB,SAAS,EAAE,EAAE,aAAa,CAAC;AAAA,IAC5D,CAAC;AAAA,EACH,CAAC;",
|
6
|
+
"names": ["TranslationLocaleSelect"]
|
7
|
+
}
|
@@ -38,7 +38,7 @@ module Para
|
|
38
38
|
# a different nested fields partial when the builder is a translations form
|
39
39
|
#
|
40
40
|
def nested_fields_partial_name
|
41
|
-
translations_form? ? :
|
41
|
+
translations_form? ? :translations_fields_container : :fields
|
42
42
|
end
|
43
43
|
end
|
44
44
|
end
|
@@ -76,7 +76,7 @@ module FriendlyId
|
|
76
76
|
where(friendly_id_config.query_field => id)
|
77
77
|
else
|
78
78
|
json_path = "{#{ locale },#{ friendly_id_config.query_field }}"
|
79
|
-
where("_translations#>>'#{ json_path }' = ?", id)
|
79
|
+
where("#{table_name}._translations#>>'#{ json_path }' = ?", id)
|
80
80
|
end
|
81
81
|
end
|
82
82
|
end
|
data/lib/para/i18n/model.rb
CHANGED
@@ -6,6 +6,29 @@ module Para
|
|
6
6
|
included do
|
7
7
|
class_attribute :translated_attribute_names
|
8
8
|
class_attribute :translatable
|
9
|
+
|
10
|
+
# Fetch all records of the current model that are not disabled for the provided
|
11
|
+
# locale, which also includes models that are not translatable and records of
|
12
|
+
# translatable models that are not translated for the current locale.
|
13
|
+
#
|
14
|
+
scope :enabled_for_locale, ->(locale = I18n.locale) {
|
15
|
+
# Models that are not translatable don't have the `_translations` column, so we
|
16
|
+
# avoid any query for them.
|
17
|
+
next all unless translates?
|
18
|
+
|
19
|
+
with_disabled_for_locale_state(disabled: false, locale: locale)
|
20
|
+
}
|
21
|
+
|
22
|
+
# Fetch all records of the current model that are explicitly disabled for the
|
23
|
+
# provided locale.
|
24
|
+
#
|
25
|
+
scope :disabled_for_locale, ->(locale = I18n.locale) {
|
26
|
+
# Models that are not translatable don't have the `_translations` column, so we
|
27
|
+
# avoid any query for them.
|
28
|
+
next none unless translates?
|
29
|
+
|
30
|
+
with_disabled_for_locale_state(disabled: true, locale: locale)
|
31
|
+
}
|
9
32
|
end
|
10
33
|
|
11
34
|
def read_translated_attribute(field, locale = ::I18n.locale)
|
@@ -103,6 +126,18 @@ module Para
|
|
103
126
|
translatable
|
104
127
|
end
|
105
128
|
|
129
|
+
# This methods is used by both the enabled_for_locale and disabled_for_locale
|
130
|
+
# scopes to filter the records based on the _disabled_for_locale attribute stored
|
131
|
+
# in the translations JSONB column for the provided locale.
|
132
|
+
def with_disabled_for_locale_state(disabled:, locale: I18n.locale)
|
133
|
+
predicate = disabled ? 'IN' : 'NOT IN'
|
134
|
+
|
135
|
+
where(<<-SQL.squish, locale, %w[1 t true])
|
136
|
+
COALESCE(#{table_name}._translations->?->>'_disabled_for_locale', '0')
|
137
|
+
#{predicate} (?)
|
138
|
+
SQL
|
139
|
+
end
|
140
|
+
|
106
141
|
private
|
107
142
|
|
108
143
|
def prepare_attribute_translation(attribute)
|
@@ -5,9 +5,14 @@ module Para
|
|
5
5
|
return unless resource.class.translates? && view.can?(:translate, resource)
|
6
6
|
|
7
7
|
path = component.relation_path(resource, :translation, action: :edit)
|
8
|
-
options = { class: 'btn btn-default' }
|
9
8
|
|
10
|
-
|
9
|
+
options = {
|
10
|
+
class: 'btn btn-sm btn-icon-info btn-shadow hint--left',
|
11
|
+
data: { 'turbo-frame': '_top' },
|
12
|
+
aria: { label: I18n.t('para.i18n.translate') }
|
13
|
+
}
|
14
|
+
|
15
|
+
view.link_to(path, **options) do
|
11
16
|
content_tag(:i, '', class: 'fa fa-globe')
|
12
17
|
end
|
13
18
|
end
|
data/lib/para/i18n/version.rb
CHANGED
data/package.json
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
{
|
2
|
+
"name": "@para/i18n",
|
3
|
+
"version": "1.0.2",
|
4
|
+
"description": "Javascript engine for Para's I18n Extension",
|
5
|
+
"main": "app/javascripts/para/i18n.js",
|
6
|
+
"files": [
|
7
|
+
"app/javascripts/para"
|
8
|
+
],
|
9
|
+
"repository": {
|
10
|
+
"type": "git",
|
11
|
+
"url": "git+https://github.com/respublica-conseil/simple_form_extension.git"
|
12
|
+
},
|
13
|
+
"author": "Valentin Ballestrino",
|
14
|
+
"license": "MIT",
|
15
|
+
"homepage": "https://github.com/respublica-conseil/simple_form_extension",
|
16
|
+
"dependencies": {
|
17
|
+
"tom-select": "^2.2.2"
|
18
|
+
},
|
19
|
+
"peerDependencies": {
|
20
|
+
"jquery": "^3.6.0",
|
21
|
+
"@hotwired/stimulus": "^3.2.2",
|
22
|
+
"@para/para": "^1.0.0"
|
23
|
+
},
|
24
|
+
"devDependencies": {
|
25
|
+
"esbuild": "^0.19.8"
|
26
|
+
}
|
27
|
+
}
|
data/yarn.lock
ADDED
@@ -0,0 +1,161 @@
|
|
1
|
+
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
2
|
+
# yarn lockfile v1
|
3
|
+
|
4
|
+
|
5
|
+
"@esbuild/android-arm64@0.19.8":
|
6
|
+
version "0.19.8"
|
7
|
+
resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.8.tgz#fb7130103835b6d43ea499c3f30cfb2b2ed58456"
|
8
|
+
integrity sha512-B8JbS61bEunhfx8kasogFENgQfr/dIp+ggYXwTqdbMAgGDhRa3AaPpQMuQU0rNxDLECj6FhDzk1cF9WHMVwrtA==
|
9
|
+
|
10
|
+
"@esbuild/android-arm@0.19.8":
|
11
|
+
version "0.19.8"
|
12
|
+
resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.8.tgz#b46e4d9e984e6d6db6c4224d72c86b7757e35bcb"
|
13
|
+
integrity sha512-31E2lxlGM1KEfivQl8Yf5aYU/mflz9g06H6S15ITUFQueMFtFjESRMoDSkvMo8thYvLBax+VKTPlpnx+sPicOA==
|
14
|
+
|
15
|
+
"@esbuild/android-x64@0.19.8":
|
16
|
+
version "0.19.8"
|
17
|
+
resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.8.tgz#a13db9441b5a4f4e4fec4a6f8ffacfea07888db7"
|
18
|
+
integrity sha512-rdqqYfRIn4jWOp+lzQttYMa2Xar3OK9Yt2fhOhzFXqg0rVWEfSclJvZq5fZslnz6ypHvVf3CT7qyf0A5pM682A==
|
19
|
+
|
20
|
+
"@esbuild/darwin-arm64@0.19.8":
|
21
|
+
version "0.19.8"
|
22
|
+
resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.8.tgz#49f5718d36541f40dd62bfdf84da9c65168a0fc2"
|
23
|
+
integrity sha512-RQw9DemMbIq35Bprbboyf8SmOr4UXsRVxJ97LgB55VKKeJOOdvsIPy0nFyF2l8U+h4PtBx/1kRf0BelOYCiQcw==
|
24
|
+
|
25
|
+
"@esbuild/darwin-x64@0.19.8":
|
26
|
+
version "0.19.8"
|
27
|
+
resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.8.tgz#75c5c88371eea4bfc1f9ecfd0e75104c74a481ac"
|
28
|
+
integrity sha512-3sur80OT9YdeZwIVgERAysAbwncom7b4bCI2XKLjMfPymTud7e/oY4y+ci1XVp5TfQp/bppn7xLw1n/oSQY3/Q==
|
29
|
+
|
30
|
+
"@esbuild/freebsd-arm64@0.19.8":
|
31
|
+
version "0.19.8"
|
32
|
+
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.8.tgz#9d7259fea4fd2b5f7437b52b542816e89d7c8575"
|
33
|
+
integrity sha512-WAnPJSDattvS/XtPCTj1tPoTxERjcTpH6HsMr6ujTT+X6rylVe8ggxk8pVxzf5U1wh5sPODpawNicF5ta/9Tmw==
|
34
|
+
|
35
|
+
"@esbuild/freebsd-x64@0.19.8":
|
36
|
+
version "0.19.8"
|
37
|
+
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.8.tgz#abac03e1c4c7c75ee8add6d76ec592f46dbb39e3"
|
38
|
+
integrity sha512-ICvZyOplIjmmhjd6mxi+zxSdpPTKFfyPPQMQTK/w+8eNK6WV01AjIztJALDtwNNfFhfZLux0tZLC+U9nSyA5Zg==
|
39
|
+
|
40
|
+
"@esbuild/linux-arm64@0.19.8":
|
41
|
+
version "0.19.8"
|
42
|
+
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.8.tgz#c577932cf4feeaa43cb9cec27b89cbe0df7d9098"
|
43
|
+
integrity sha512-z1zMZivxDLHWnyGOctT9JP70h0beY54xDDDJt4VpTX+iwA77IFsE1vCXWmprajJGa+ZYSqkSbRQ4eyLCpCmiCQ==
|
44
|
+
|
45
|
+
"@esbuild/linux-arm@0.19.8":
|
46
|
+
version "0.19.8"
|
47
|
+
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.8.tgz#d6014d8b98b5cbc96b95dad3d14d75bb364fdc0f"
|
48
|
+
integrity sha512-H4vmI5PYqSvosPaTJuEppU9oz1dq2A7Mr2vyg5TF9Ga+3+MGgBdGzcyBP7qK9MrwFQZlvNyJrvz6GuCaj3OukQ==
|
49
|
+
|
50
|
+
"@esbuild/linux-ia32@0.19.8":
|
51
|
+
version "0.19.8"
|
52
|
+
resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.8.tgz#2379a0554307d19ac4a6cdc15b08f0ea28e7a40d"
|
53
|
+
integrity sha512-1a8suQiFJmZz1khm/rDglOc8lavtzEMRo0v6WhPgxkrjcU0LkHj+TwBrALwoz/OtMExvsqbbMI0ChyelKabSvQ==
|
54
|
+
|
55
|
+
"@esbuild/linux-loong64@0.19.8":
|
56
|
+
version "0.19.8"
|
57
|
+
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.8.tgz#e2a5bbffe15748b49356a6cd7b2d5bf60c5a7123"
|
58
|
+
integrity sha512-fHZWS2JJxnXt1uYJsDv9+b60WCc2RlvVAy1F76qOLtXRO+H4mjt3Tr6MJ5l7Q78X8KgCFudnTuiQRBhULUyBKQ==
|
59
|
+
|
60
|
+
"@esbuild/linux-mips64el@0.19.8":
|
61
|
+
version "0.19.8"
|
62
|
+
resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.8.tgz#1359331e6f6214f26f4b08db9b9df661c57cfa24"
|
63
|
+
integrity sha512-Wy/z0EL5qZYLX66dVnEg9riiwls5IYnziwuju2oUiuxVc+/edvqXa04qNtbrs0Ukatg5HEzqT94Zs7J207dN5Q==
|
64
|
+
|
65
|
+
"@esbuild/linux-ppc64@0.19.8":
|
66
|
+
version "0.19.8"
|
67
|
+
resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.8.tgz#9ba436addc1646dc89dae48c62d3e951ffe70951"
|
68
|
+
integrity sha512-ETaW6245wK23YIEufhMQ3HSeHO7NgsLx8gygBVldRHKhOlD1oNeNy/P67mIh1zPn2Hr2HLieQrt6tWrVwuqrxg==
|
69
|
+
|
70
|
+
"@esbuild/linux-riscv64@0.19.8":
|
71
|
+
version "0.19.8"
|
72
|
+
resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.8.tgz#fbcf0c3a0b20f40b5fc31c3b7695f0769f9de66b"
|
73
|
+
integrity sha512-T2DRQk55SgoleTP+DtPlMrxi/5r9AeFgkhkZ/B0ap99zmxtxdOixOMI570VjdRCs9pE4Wdkz7JYrsPvsl7eESg==
|
74
|
+
|
75
|
+
"@esbuild/linux-s390x@0.19.8":
|
76
|
+
version "0.19.8"
|
77
|
+
resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.8.tgz#989e8a05f7792d139d5564ffa7ff898ac6f20a4a"
|
78
|
+
integrity sha512-NPxbdmmo3Bk7mbNeHmcCd7R7fptJaczPYBaELk6NcXxy7HLNyWwCyDJ/Xx+/YcNH7Im5dHdx9gZ5xIwyliQCbg==
|
79
|
+
|
80
|
+
"@esbuild/linux-x64@0.19.8":
|
81
|
+
version "0.19.8"
|
82
|
+
resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.8.tgz#b187295393a59323397fe5ff51e769ec4e72212b"
|
83
|
+
integrity sha512-lytMAVOM3b1gPypL2TRmZ5rnXl7+6IIk8uB3eLsV1JwcizuolblXRrc5ShPrO9ls/b+RTp+E6gbsuLWHWi2zGg==
|
84
|
+
|
85
|
+
"@esbuild/netbsd-x64@0.19.8":
|
86
|
+
version "0.19.8"
|
87
|
+
resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.8.tgz#c1ec0e24ea82313cb1c7bae176bd5acd5bde7137"
|
88
|
+
integrity sha512-hvWVo2VsXz/8NVt1UhLzxwAfo5sioj92uo0bCfLibB0xlOmimU/DeAEsQILlBQvkhrGjamP0/el5HU76HAitGw==
|
89
|
+
|
90
|
+
"@esbuild/openbsd-x64@0.19.8":
|
91
|
+
version "0.19.8"
|
92
|
+
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.8.tgz#0c5b696ac66c6d70cf9ee17073a581a28af9e18d"
|
93
|
+
integrity sha512-/7Y7u77rdvmGTxR83PgaSvSBJCC2L3Kb1M/+dmSIvRvQPXXCuC97QAwMugBNG0yGcbEGfFBH7ojPzAOxfGNkwQ==
|
94
|
+
|
95
|
+
"@esbuild/sunos-x64@0.19.8":
|
96
|
+
version "0.19.8"
|
97
|
+
resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.8.tgz#2a697e1f77926ff09fcc457d8f29916d6cd48fb1"
|
98
|
+
integrity sha512-9Lc4s7Oi98GqFA4HzA/W2JHIYfnXbUYgekUP/Sm4BG9sfLjyv6GKKHKKVs83SMicBF2JwAX6A1PuOLMqpD001w==
|
99
|
+
|
100
|
+
"@esbuild/win32-arm64@0.19.8":
|
101
|
+
version "0.19.8"
|
102
|
+
resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.8.tgz#ec029e62a2fca8c071842ecb1bc5c2dd20b066f1"
|
103
|
+
integrity sha512-rq6WzBGjSzihI9deW3fC2Gqiak68+b7qo5/3kmB6Gvbh/NYPA0sJhrnp7wgV4bNwjqM+R2AApXGxMO7ZoGhIJg==
|
104
|
+
|
105
|
+
"@esbuild/win32-ia32@0.19.8":
|
106
|
+
version "0.19.8"
|
107
|
+
resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.8.tgz#cbb9a3146bde64dc15543e48afe418c7a3214851"
|
108
|
+
integrity sha512-AIAbverbg5jMvJznYiGhrd3sumfwWs8572mIJL5NQjJa06P8KfCPWZQ0NwZbPQnbQi9OWSZhFVSUWjjIrn4hSw==
|
109
|
+
|
110
|
+
"@esbuild/win32-x64@0.19.8":
|
111
|
+
version "0.19.8"
|
112
|
+
resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.8.tgz#c8285183dbdb17008578dbacb6e22748709b4822"
|
113
|
+
integrity sha512-bfZ0cQ1uZs2PqpulNL5j/3w+GDhP36k1K5c38QdQg+Swy51jFZWWeIkteNsufkQxp986wnqRRsb/bHbY1WQ7TA==
|
114
|
+
|
115
|
+
"@orchidjs/sifter@^1.0.3":
|
116
|
+
version "1.0.3"
|
117
|
+
resolved "https://registry.yarnpkg.com/@orchidjs/sifter/-/sifter-1.0.3.tgz#43f42519472282eb632d0a1589184f044d64129b"
|
118
|
+
integrity sha512-zCZbwKegHytfsPm8Amcfh7v/4vHqTAaOu6xFswBYcn8nznBOuseu6COB2ON7ez0tFV0mKL0nRNnCiZZA+lU9/g==
|
119
|
+
dependencies:
|
120
|
+
"@orchidjs/unicode-variants" "^1.0.4"
|
121
|
+
|
122
|
+
"@orchidjs/unicode-variants@^1.0.4":
|
123
|
+
version "1.0.4"
|
124
|
+
resolved "https://registry.yarnpkg.com/@orchidjs/unicode-variants/-/unicode-variants-1.0.4.tgz#6d2f812e3b19545bba2d81caffff1204de9a6a58"
|
125
|
+
integrity sha512-NvVBRnZNE+dugiXERFsET1JlKZfM5lJDEpSMilKW4bToYJ7pxf0Zne78xyXB2ny2c2aHfJ6WLnz1AaTNHAmQeQ==
|
126
|
+
|
127
|
+
esbuild@^0.19.8:
|
128
|
+
version "0.19.8"
|
129
|
+
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.8.tgz#ad05b72281d84483fa6b5345bd246c27a207b8f1"
|
130
|
+
integrity sha512-l7iffQpT2OrZfH2rXIp7/FkmaeZM0vxbxN9KfiCwGYuZqzMg/JdvX26R31Zxn/Pxvsrg3Y9N6XTcnknqDyyv4w==
|
131
|
+
optionalDependencies:
|
132
|
+
"@esbuild/android-arm" "0.19.8"
|
133
|
+
"@esbuild/android-arm64" "0.19.8"
|
134
|
+
"@esbuild/android-x64" "0.19.8"
|
135
|
+
"@esbuild/darwin-arm64" "0.19.8"
|
136
|
+
"@esbuild/darwin-x64" "0.19.8"
|
137
|
+
"@esbuild/freebsd-arm64" "0.19.8"
|
138
|
+
"@esbuild/freebsd-x64" "0.19.8"
|
139
|
+
"@esbuild/linux-arm" "0.19.8"
|
140
|
+
"@esbuild/linux-arm64" "0.19.8"
|
141
|
+
"@esbuild/linux-ia32" "0.19.8"
|
142
|
+
"@esbuild/linux-loong64" "0.19.8"
|
143
|
+
"@esbuild/linux-mips64el" "0.19.8"
|
144
|
+
"@esbuild/linux-ppc64" "0.19.8"
|
145
|
+
"@esbuild/linux-riscv64" "0.19.8"
|
146
|
+
"@esbuild/linux-s390x" "0.19.8"
|
147
|
+
"@esbuild/linux-x64" "0.19.8"
|
148
|
+
"@esbuild/netbsd-x64" "0.19.8"
|
149
|
+
"@esbuild/openbsd-x64" "0.19.8"
|
150
|
+
"@esbuild/sunos-x64" "0.19.8"
|
151
|
+
"@esbuild/win32-arm64" "0.19.8"
|
152
|
+
"@esbuild/win32-ia32" "0.19.8"
|
153
|
+
"@esbuild/win32-x64" "0.19.8"
|
154
|
+
|
155
|
+
tom-select@^2.2.2:
|
156
|
+
version "2.3.1"
|
157
|
+
resolved "https://registry.yarnpkg.com/tom-select/-/tom-select-2.3.1.tgz#df338d9082874cd0bceb3bee87ed0184447c47f1"
|
158
|
+
integrity sha512-QS4vnOcB6StNGqX4sGboGXL2fkhBF2gIBB+8Hwv30FZXYPn0CyYO8kkdATRvwfCTThxiR4WcXwKJZ3cOmtI9eg==
|
159
|
+
dependencies:
|
160
|
+
"@orchidjs/sifter" "^1.0.3"
|
161
|
+
"@orchidjs/unicode-variants" "^1.0.4"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: para-i18n
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Valentin Ballestrino
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-02-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: para
|
@@ -82,21 +82,26 @@ files:
|
|
82
82
|
- ".gitignore"
|
83
83
|
- ".rspec"
|
84
84
|
- ".travis.yml"
|
85
|
+
- ".vscode/settings.json"
|
85
86
|
- Gemfile
|
86
87
|
- LICENSE.txt
|
87
88
|
- README.md
|
88
89
|
- Rakefile
|
89
|
-
- app/assets/javascripts/para/admin/translation.coffee
|
90
|
-
- app/assets/javascripts/para/i18n.coffee
|
91
90
|
- app/controllers/para/admin/translations_controller.rb
|
92
91
|
- app/helpers/para/i18n/form_helper.rb
|
92
|
+
- app/helpers/para/i18n/urls_helper.rb
|
93
|
+
- app/javascripts/para/admin/translation_locale_select_controller.js
|
94
|
+
- app/javascripts/para/i18n.js
|
93
95
|
- app/views/para/admin/resources/_translations_fields.html.haml
|
96
|
+
- app/views/para/admin/resources/_translations_fields_container.html.haml
|
94
97
|
- app/views/para/admin/resources/_translations_form.html.haml
|
95
|
-
- app/views/para/admin/translations/_target_locale_select.html.
|
98
|
+
- app/views/para/admin/translations/_target_locale_select.html.erb
|
96
99
|
- app/views/para/admin/translations/edit.html.haml
|
97
100
|
- bin/console
|
98
101
|
- bin/setup
|
99
102
|
- config/locales/para-i18n.fr.yml
|
103
|
+
- dist/index.js
|
104
|
+
- dist/index.js.map
|
100
105
|
- lib/generators/para/i18n/base_form_generator.rb
|
101
106
|
- lib/generators/para/i18n/form/form_generator.rb
|
102
107
|
- lib/generators/para/i18n/form/templates/_translations_form.html.haml
|
@@ -125,12 +130,14 @@ files:
|
|
125
130
|
- lib/para/i18n/resources_buttons.rb
|
126
131
|
- lib/para/i18n/resources_table.rb
|
127
132
|
- lib/para/i18n/version.rb
|
133
|
+
- package.json
|
128
134
|
- para-i18n.gemspec
|
135
|
+
- yarn.lock
|
129
136
|
homepage: https://github.com/para-cms/para-i18n
|
130
137
|
licenses:
|
131
138
|
- MIT
|
132
139
|
metadata: {}
|
133
|
-
post_install_message:
|
140
|
+
post_install_message:
|
134
141
|
rdoc_options: []
|
135
142
|
require_paths:
|
136
143
|
- lib
|
@@ -145,8 +152,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
145
152
|
- !ruby/object:Gem::Version
|
146
153
|
version: '0'
|
147
154
|
requirements: []
|
148
|
-
rubygems_version: 3.
|
149
|
-
signing_key:
|
155
|
+
rubygems_version: 3.5.16
|
156
|
+
signing_key:
|
150
157
|
specification_version: 4
|
151
158
|
summary: Para CMS I18n admin module for models
|
152
159
|
test_files: []
|
@@ -1,10 +0,0 @@
|
|
1
|
-
class TranslationLocaleSelect
|
2
|
-
@onChange = ($field) ->
|
3
|
-
targetURL = $field.data('locale-select-target-url')
|
4
|
-
targetLocale = $field.val()
|
5
|
-
targetURL = targetURL.replace('target_locale=_', ['target_locale', targetLocale].join('='))
|
6
|
-
Turbolinks.visit(targetURL.replace(':locale', targetLocale))
|
7
|
-
|
8
|
-
$(document).on 'page:change turbolinks:load', ->
|
9
|
-
$('body').on 'change', '[data-locale-select]', (e) ->
|
10
|
-
TranslationLocaleSelect.onChange($(e.currentTarget))
|
@@ -1 +0,0 @@
|
|
1
|
-
#= require ./admin/translation
|
@@ -1,5 +0,0 @@
|
|
1
|
-
.block.form-inputs
|
2
|
-
.form-group
|
3
|
-
= label :target_locale, t('para.i18n.choose_locale'), class: 'control-label col-md-3 pull-left'
|
4
|
-
.col-md-9
|
5
|
-
= select_tag :target_locale, options_for_select(locales.map { |locale| [locale, locale] }, target_locale), data: { :'locale-select' => true, selectize: true, multi: false, value: { text: target_locale, value: target_locale }, :'locale-select-target-url' => @component.relation_path(resource, :translation, action: :edit, target_locale: '_') }
|