activeadmin-globalize-2 1.0.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 74fe94f8cc464bd0d7b2162e29fbd14ab9751528eb0d99e8122887b6146e267f
4
- data.tar.gz: f6460a081f728312a787d109c0988408a9ce8bb7b96423c10d5c2ecdd78439cb
3
+ metadata.gz: 539edd35240f1a3962b48faa32e88c2634eb6bbc6ab2c4541f82389c59ec5a94
4
+ data.tar.gz: c232427c88e4f5661779dda77125c0955f8689ed26483c2dcfacd5b9902a244d
5
5
  SHA512:
6
- metadata.gz: 74cdc6af3c0fcf1a58c4540f11cf284655727e2748e3a719f7357cc6ab17345cc9290be1aac1bb916048e293c444566cc0893a4324b917172ffd3cce0788411c
7
- data.tar.gz: f53e505998d7222ea350779503f28c98358169f77437c858c4e54b3f56f7cdaaaffacb0b97cbb5f3321b544975547fae97fc9b7f104787062d0e0fa848d53c9a
6
+ metadata.gz: 8a67d05a9769a2942e727df1dfa828e8fe33d6a1d398e723af2730a42064311dbabaa84009b9730b86c7fa6eff7aea9d4b3370d39007da8ad59b2cde5e8e0880
7
+ data.tar.gz: 85b3d67dff8eb03b719cef29fb8bf43e2ae180aa64647da70bf5a394f3c307c93bdf84cbf908b5c7f5d3ceb78bd9c43e33b16545578ec056ffdc4495fe6c175a
data/README.md CHANGED
@@ -3,13 +3,14 @@
3
3
  Makes it easy to translate your resource fields.
4
4
 
5
5
  [![Gem Version](https://badge.fury.io/rb/activeadmin-globalize-2.svg)](http://badge.fury.io/rb/activeadmin-globalize-2)
6
+ [![Build Status](https://travis-ci.org/Celkee/activeadmin-globalize-2.svg?branch=master)](https://travis-ci.org/Celkee/activeadmin-globalize-2)
6
7
 
7
8
  ## Installation
8
9
 
9
- Current version targets Rails 4.2-5.2 and ActiveAdmin 1.x.
10
+ Current version targets Rails >= 5.2 and ActiveAdmin >= 1.3.0.
10
11
 
11
12
  ```ruby
12
- gem 'activeadmin-globalize-2', '~> 1.0.0'
13
+ gem 'activeadmin-globalize-2', '~> 2.0.0'
13
14
  ```
14
15
 
15
16
  ## Require Assets
@@ -0,0 +1,206 @@
1
+ $(
2
+ function () {
3
+ var translations = function () {
4
+ // Hides or shows the + button and the remove button.
5
+ var updateLocaleButtonsStatus = function ($dom) {
6
+ var $localeList = $dom.find(".add-locale ul li:not(.hidden)");
7
+ var $localeAdd = $dom.find(".add-locale");
8
+ return $localeList.length === 0 ?
9
+ $localeAdd.hide()
10
+ : $localeAdd.show();
11
+ };
12
+
13
+ // Hides or shows the locale tab and its corresponding element in the add menu.
14
+ var toggleTab = function ($tab, active) {
15
+ var $addButton = $tab.parents("ul").find('.add-locale li:has(a[href="' + $tab.attr("href") + '"])');
16
+ if (active) {
17
+ $tab.addClass("hidden").show().removeClass("hidden");
18
+ return $addButton.hide().addClass("hidden");
19
+ } else {
20
+ $tab.addClass("hidden").hide().addClass("hidden");
21
+ return $addButton.show().removeClass("hidden");
22
+ }
23
+ };
24
+
25
+ return $(".activeadmin-translations > ul").each(
26
+ function () {
27
+ var $dom = $(this);
28
+ // true when tabs are used in show action, false in form
29
+ var showAction = $dom.hasClass("locale-selector");
30
+
31
+ if (!$dom.data("ready")) {
32
+ $dom.data("ready", true);
33
+ var $tabs = $("li > a", this);
34
+ // content to toggle is different according to current action
35
+ var $contents = $(this).siblings(showAction ? "div.field-translation" : "fieldset");
36
+
37
+ $tabs.click(
38
+ function (event) {
39
+ var $tab = $(this);
40
+ $tabs.not($tab).removeClass("active");
41
+ $tab.addClass("active");
42
+ $contents.hide();
43
+ $contents.filter($tab.attr("href")).show();
44
+ return event.preventDefault();
45
+ }
46
+ );
47
+
48
+ $tabs.eq(0).click();
49
+
50
+ // Add button and other behavior is not needed in show action
51
+ if (showAction) {
52
+ return;
53
+ }
54
+
55
+ // Collect tha available locales.
56
+ var availableLocales = [];
57
+ $tabs.not(".default").each(
58
+ function () {
59
+ return availableLocales.push($("<li></li>").append($(this).clone().removeClass("active")));
60
+ }
61
+ );
62
+
63
+ // Create a new tab as the root of the drop down menu.
64
+ var $addLocaleButton = $('<li class="add-locale"><a href="#">+</a></li>');
65
+ $addLocaleButton.append($("<ul></ul>").append(availableLocales));
66
+
67
+ // Handle locale addition
68
+ $addLocaleButton.find("ul a").click(
69
+ function (event) {
70
+ var href = $(this).attr("href");
71
+ var $tab = $tabs.filter('[href="' + href + '"]');
72
+ toggleTab($tab, true);
73
+ $tab.click();
74
+ updateLocaleButtonsStatus($dom);
75
+ return event.preventDefault();
76
+ }
77
+ );
78
+
79
+ // Remove a locale from the tab.
80
+ var $removeButton = $('<span class="remove">x</span>').click(
81
+ function (event) {
82
+ event.stopImmediatePropagation();
83
+ event.preventDefault();
84
+ var $tab = $(this).parent();
85
+ toggleTab($tab, false);
86
+ if ($tab.hasClass("active")) {
87
+ $tabs.not(".hidden").eq(0).click();
88
+ }
89
+
90
+ return updateLocaleButtonsStatus($dom);
91
+ }
92
+ );
93
+
94
+ // Add the remove button to every tab.
95
+ $tabs.not(".default").append($removeButton);
96
+
97
+ // Add the new button at the end of the locale list.
98
+ $dom.append($addLocaleButton);
99
+
100
+ $tabs.each(
101
+ function () {
102
+ var $tab = $(this);
103
+ var $content = $contents.filter($tab.attr("href"));
104
+ var containsErrors = $content.find(".input.error").length > 0;
105
+ $tab.toggleClass("error", containsErrors);
106
+ // Find those tabs that are in use.
107
+ var hide = true;
108
+ // We will not hide the tabs that have any error.
109
+ if ($tab.hasClass("error") || $tab.hasClass("default")) {
110
+ hide = false;
111
+ } else {
112
+ // Check whether the input fields are empty or not.
113
+ $content.find("[name]").not('[type="hidden"]').each(
114
+ function () {
115
+ if ($(this).val()) {
116
+ // We will not hide the tab because it has some data.
117
+ hide = false;
118
+ return false;
119
+ }
120
+ }
121
+ );
122
+ }
123
+
124
+ return toggleTab($tab, !hide);
125
+ }
126
+ );
127
+
128
+ // Remove the fields of hidden locales before form submission.
129
+ var $form = $dom.parents("form");
130
+ if (!$form.data("ready")) {
131
+ $form.data("ready");
132
+ $form.submit(
133
+ function () {
134
+ // Get all translations (the nested ones too).
135
+ return $(".activeadmin-translations > ul").each(
136
+ function () {
137
+ // Get the corresponding fieldsets.
138
+ var $fieldsets = $(this).siblings("fieldset");
139
+ return $("li:not(.add-locale) > a", this).each(
140
+ function () {
141
+ var $tab = $(this);
142
+ // Remove them if the locale is hidden.
143
+ if ($tab.hasClass("hidden")) {
144
+ var localeClassSelector = $tab.attr("href");
145
+ // check if it's an existing translation otherwise remove it
146
+ var $currentFieldset = $("fieldset" + localeClassSelector);
147
+ var $translationId = $("input[id$=_id]", $currentFieldset);
148
+ if ($translationId.val()) {
149
+ // mark it for database removal appending a _destroy element
150
+ var $destroy = $("<input/>").attr({
151
+ type: "hidden",
152
+ name: $translationId.attr("name").replace("[id]", "[_destroy]"),
153
+ id: $translationId.attr("id").replace("_id", "_destroy"),
154
+ value: "1"
155
+ });
156
+ return $destroy.appendTo($currentFieldset);
157
+ } else {
158
+ // remove the fieldset from dom so it won't be submitted
159
+ return $fieldsets.filter(localeClassSelector).remove();
160
+ }
161
+ }
162
+ }
163
+ );
164
+ }
165
+ );
166
+ }
167
+ );
168
+ }
169
+
170
+ // Initially update the buttons' status
171
+ updateLocaleButtonsStatus($dom);
172
+ return $tabs.filter(".default").click();
173
+ }
174
+ }
175
+ );
176
+ };
177
+
178
+ // this is to handle elements created with has_many
179
+ $("a").on(
180
+ "click",
181
+ function () {
182
+ return setTimeout(
183
+ function () {
184
+ return translations();
185
+ },
186
+ 50
187
+ );
188
+ }
189
+ );
190
+
191
+ // Used to toggle translations values for inline fields
192
+ $("a.ui-translation-trigger").click(
193
+ function (event) {
194
+ var $locale = $(this).data("locale");
195
+ var $td = $(this).closest("td");
196
+ $(".field-translation", $td).hide();
197
+ $(".locale-" + $locale, $td).show();
198
+ $(this).parent().children("a.ui-translation-trigger").removeClass("active");
199
+ $(this).addClass("active");
200
+ return event.preventDefault();
201
+ }
202
+ );
203
+
204
+ return translations();
205
+ }
206
+ );
@@ -1,27 +1,19 @@
1
1
  @mixin border-top-radius($radius)
2
- -webkit-border-top-right-radius: $radius
3
2
  border-top-right-radius: $radius
4
- -webkit-border-top-left-radius: $radius
5
3
  border-top-left-radius: $radius
6
4
  background-clip: padding-box
7
5
 
8
6
  @mixin border-right-radius($radius)
9
- -webkit-border-bottom-right-radius: $radius
10
7
  border-bottom-right-radius: $radius
11
- -webkit-border-top-right-radius: $radius
12
8
  border-top-right-radius: $radius
13
9
  background-clip: padding-box
14
10
 
15
11
  @mixin border-bottom-radius($radius)
16
- -webkit-border-bottom-right-radius: $radius
17
12
  border-bottom-right-radius: $radius
18
- -webkit-border-bottom-left-radius: $radius
19
13
  border-bottom-left-radius: $radius
20
14
  background-clip: padding-box
21
15
 
22
16
  @mixin border-left-radius($radius)
23
- -webkit-border-bottom-left-radius: $radius
24
17
  border-bottom-left-radius: $radius
25
- -webkit-border-top-left-radius: $radius
26
18
  border-top-left-radius: $radius
27
19
  background-clip: padding-box
@@ -1,5 +1,5 @@
1
1
  module ActiveAdmin
2
2
  module Globalize
3
- VERSION = '1.0.0'
3
+ VERSION = '2.0.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activeadmin-globalize-2
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefano Verna
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2022-06-06 00:00:00.000000000 Z
13
+ date: 2022-06-07 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activeadmin
@@ -18,54 +18,54 @@ dependencies:
18
18
  requirements:
19
19
  - - ">="
20
20
  - !ruby/object:Gem::Version
21
- version: '1.0'
21
+ version: '1.3'
22
22
  - - "<"
23
23
  - !ruby/object:Gem::Version
24
- version: '2.0'
24
+ version: '3.0'
25
25
  type: :runtime
26
26
  prerelease: false
27
27
  version_requirements: !ruby/object:Gem::Requirement
28
28
  requirements:
29
29
  - - ">="
30
30
  - !ruby/object:Gem::Version
31
- version: '1.0'
31
+ version: '1.3'
32
32
  - - "<"
33
33
  - !ruby/object:Gem::Version
34
- version: '2.0'
34
+ version: '3.0'
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: globalize
37
37
  requirement: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - ">="
40
40
  - !ruby/object:Gem::Version
41
- version: 4.0.0
41
+ version: '5.2'
42
42
  - - "<"
43
43
  - !ruby/object:Gem::Version
44
- version: '6.0'
44
+ version: '7.0'
45
45
  type: :runtime
46
46
  prerelease: false
47
47
  version_requirements: !ruby/object:Gem::Requirement
48
48
  requirements:
49
49
  - - ">="
50
50
  - !ruby/object:Gem::Version
51
- version: 4.0.0
51
+ version: '5.2'
52
52
  - - "<"
53
53
  - !ruby/object:Gem::Version
54
- version: '6.0'
54
+ version: '7.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: 1.6.1
61
+ version: 2.0.2
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: 1.6.1
68
+ version: 2.0.2
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -80,7 +80,7 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
- description: Handles globalize translations in ActiveAdmin 1.x and Rails 4.x-5.x
83
+ description: Handles globalize translations in ActiveAdmin >=1.3 and Rails >=5.2
84
84
  email:
85
85
  executables: []
86
86
  extensions: []
@@ -89,7 +89,7 @@ files:
89
89
  - MIT-LICENSE
90
90
  - README.md
91
91
  - app/assets/images/active_admin/flags.png
92
- - app/assets/javascripts/active_admin/active_admin_globalize.js.coffee
92
+ - app/assets/javascripts/active_admin/active_admin_globalize.js
93
93
  - app/assets/stylesheets/active_admin/active_admin_globalize.sass
94
94
  - app/assets/stylesheets/active_admin/active_admin_globalize_flags.sass
95
95
  - app/assets/stylesheets/active_admin/active_admin_globalize_mixins.sass
@@ -1,159 +0,0 @@
1
- $ ->
2
-
3
- translations = ->
4
-
5
- # Hides or shows the + button and the remove button.
6
- updateLocaleButtonsStatus = ($dom) ->
7
- $localeList = $dom.find('.add-locale ul li:not(.hidden)')
8
- if $localeList.length == 0
9
- $dom.find('.add-locale').hide()
10
- else
11
- $dom.find('.add-locale').show()
12
-
13
-
14
- # Hides or shows the locale tab and its corresponding element in the add menu.
15
- toggleTab = ($tab, active) ->
16
- $addButton = $tab.parents('ul').find('.add-locale li:has(a[href="' + $tab.attr('href') + '"])')
17
- if active
18
- $tab.addClass('hidden').show().removeClass('hidden')
19
- $addButton.hide().addClass('hidden')
20
- else
21
- $tab.addClass('hidden').hide().addClass('hidden')
22
- $addButton.show().removeClass('hidden')
23
-
24
- $(".activeadmin-translations > ul").each ->
25
- $dom = $(this)
26
- # true when tabs are used in show action, false in form
27
- showAction = $dom.hasClass('locale-selector')
28
-
29
- if !$dom.data("ready")
30
- $dom.data("ready", true)
31
- $tabs = $("li > a", this)
32
- # content to toggle is different according to current action
33
- $contents = if showAction then $(this).siblings("div.field-translation") else $(this).siblings("fieldset")
34
-
35
- $tabs.click (e) ->
36
- $tab = $(this)
37
- $tabs.not($tab).removeClass("active")
38
- $tab.addClass("active")
39
- $contents.hide()
40
- $contents.filter($tab.attr("href")).show()
41
- e.preventDefault()
42
-
43
- $tabs.eq(0).click()
44
-
45
- # Add button and other behavior is not needed in show action
46
- return if showAction
47
-
48
- # Collect tha available locales.
49
- availableLocales = []
50
- $tabs.not('.default').each ->
51
- availableLocales.push($('<li></li>').append($(this).clone().removeClass('active')))
52
-
53
- # Create a new tab as the root of the drop down menu.
54
- $addLocaleButton = $('<li class="add-locale"><a href="#">+</a></li>')
55
- $addLocaleButton.append($('<ul></ul>').append(availableLocales))
56
-
57
- # Handle locale addition
58
- $addLocaleButton.find('ul a').click (e) ->
59
- href = $(this).attr('href')
60
- $tab = $tabs.filter('[href="' + href + '"]')
61
- toggleTab($tab, true)
62
- $tab.click()
63
- updateLocaleButtonsStatus($dom)
64
- e.preventDefault()
65
-
66
- # Remove a locale from the tab.
67
- $removeButton = $('<span class="remove">x</span>').click (e) ->
68
- e.stopImmediatePropagation()
69
- e.preventDefault()
70
- $tab = $(this).parent()
71
- toggleTab($tab, false)
72
- if $tab.hasClass('active')
73
- $tabs.not('.hidden').eq(0).click()
74
-
75
- updateLocaleButtonsStatus($dom)
76
-
77
- # Add the remove button to every tab.
78
- $tabs.not('.default').append($removeButton)
79
-
80
- # Add the new button at the end of the locale list.
81
- $dom.append($addLocaleButton)
82
-
83
- $tabs.each ->
84
- $tab = $(@)
85
- $content = $contents.filter($tab.attr("href"))
86
- containsErrors = $content.find(".input.error").length > 0
87
- $tab.toggleClass("error", containsErrors)
88
- # Find those tabs that are in use.
89
- hide = true
90
- # We will not hide the tabs that have any error.
91
- if $tab.hasClass('error') || $tab.hasClass('default')
92
- hide = false
93
- else
94
- # Check whether the input fields are empty or not.
95
- $content.find('[name]').not('[type="hidden"]').each ->
96
- if $(this).val()
97
- # We will not hide the tab because it has some data.
98
- hide = false
99
- return false
100
-
101
- if hide
102
- toggleTab($tab, false)
103
- else
104
- toggleTab($tab, true)
105
-
106
- # Remove the fields of hidden locales before form submission.
107
- $form = $dom.parents('form')
108
- if !$form.data('ready')
109
- $form.data('ready')
110
- $form.submit ->
111
- # Get all translations (the nested ones too).
112
- $('.activeadmin-translations > ul').each ->
113
- # Get the corresponding fieldsets.
114
- $fieldsets = $(this).siblings('fieldset')
115
- $("li:not(.add-locale) > a", this).each ->
116
- # Remove them if the locale is hidden.
117
- if $(this).hasClass('hidden')
118
- # check if it's an existing translation otherwise remove it
119
- $currentFieldset = $("fieldset#{$(this).attr('href')}")
120
- $translationId = $('input[id$=_id]', $currentFieldset)
121
- if $translationId.val()
122
- # mark it for database removal appending a _destroy element
123
- $destroy = $('<input/>').attr(
124
- type: 'hidden',
125
- name: $translationId.attr('name').replace('[id]', '[_destroy]'),
126
- id: $translationId.attr('id').replace('_id', '_destroy'),
127
- value: '1'
128
- )
129
- $destroy.appendTo($currentFieldset)
130
- else
131
- # remove the fieldset from dom so it won't be submitted
132
- $fieldsets.filter($(this).attr('href')).remove()
133
-
134
- #Initially update the buttons' status
135
- updateLocaleButtonsStatus($dom)
136
- $tabs.filter('.default').click()
137
-
138
- $a = $("a")
139
- # jQuery 1.7 introduced "on" and deprecated "bind"
140
- # AA 1.2 bumps jquery-rails to >= 4.2, so we can drop "bind" once AA req is bumped
141
- bindingMethod = if ("on" of $a && typeof $a.on == 'function') then "on" else "bind"
142
- # this is to handle elements created with has_many
143
- $a[bindingMethod] "click", ->
144
- setTimeout(
145
- -> translations()
146
- 50
147
- )
148
-
149
- # Used to toggle translations values for inline fields
150
- $('a.ui-translation-trigger').click (e) ->
151
- $locale = $(this).data('locale')
152
- $td = $(this).closest('td')
153
- $('.field-translation', $td).hide()
154
- $(".locale-#{$locale}", $td).show()
155
- $(this).parent().children('a.ui-translation-trigger').removeClass('active')
156
- $(this).addClass('active')
157
- e.preventDefault()
158
-
159
- translations()