decidim-term_customizer 0.16.6 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/javascripts/decidim/term_customizer/admin/translations_admin_bulk.js.es6 +113 -0
- data/app/commands/decidim/term_customizer/admin/destroy_translations.rb +40 -0
- data/app/commands/decidim/term_customizer/admin/import_set_translations.rb +139 -0
- data/app/controllers/decidim/term_customizer/admin/translation_sets_controller.rb +11 -0
- data/app/controllers/decidim/term_customizer/admin/translations_controller.rb +23 -0
- data/app/controllers/decidim/term_customizer/admin/translations_destroys_controller.rb +54 -0
- data/app/forms/decidim/term_customizer/admin/translations_destroy_form.rb +46 -0
- data/app/forms/decidim/term_customizer/admin/translations_import_form.rb +48 -0
- data/app/helpers/decidim/term_customizer/admin/translations_helper.rb +21 -0
- data/app/jobs/decidim/term_customizer/admin/export_job.rb +19 -0
- data/app/permissions/decidim/term_customizer/admin/permissions.rb +11 -1
- data/app/views/decidim/term_customizer/admin/add_translations/index.html.erb +26 -6
- data/app/views/decidim/term_customizer/admin/translation_sets/_form.html.erb +25 -1
- data/app/views/decidim/term_customizer/admin/translation_sets/index.html.erb +39 -33
- data/app/views/decidim/term_customizer/admin/translations/_export_dropdown.html.erb +8 -0
- data/app/views/decidim/term_customizer/admin/translations/_form.html.erb +27 -1
- data/app/views/decidim/term_customizer/admin/translations/bulk_actions/_destroy.html.erb +13 -0
- data/app/views/decidim/term_customizer/admin/translations/bulk_actions/_dropdown.html.erb +26 -0
- data/app/views/decidim/term_customizer/admin/translations/index.html.erb +66 -38
- data/app/views/decidim/term_customizer/admin/translations/new_import.html.erb +40 -0
- data/app/views/decidim/term_customizer/admin/translations_destroys/new.html.erb +36 -0
- data/config/locales/ca.yml +72 -26
- data/config/locales/en.yml +109 -26
- data/config/locales/es.yml +72 -26
- data/config/locales/fi.yml +72 -26
- data/config/locales/fr.yml +72 -26
- data/config/locales/sv.yml +72 -26
- data/lib/decidim/term_customizer.rb +4 -0
- data/lib/decidim/term_customizer/admin_engine.rb +11 -1
- data/lib/decidim/term_customizer/import.rb +12 -0
- data/lib/decidim/term_customizer/import/importer.rb +69 -0
- data/lib/decidim/term_customizer/import/importer_factory.rb +17 -0
- data/lib/decidim/term_customizer/import/parser.rb +49 -0
- data/lib/decidim/term_customizer/import/readers.rb +39 -0
- data/lib/decidim/term_customizer/import/readers/base.rb +36 -0
- data/lib/decidim/term_customizer/import/readers/csv.rb +23 -0
- data/lib/decidim/term_customizer/import/readers/json.rb +25 -0
- data/lib/decidim/term_customizer/import/readers/xls.rb +25 -0
- data/lib/decidim/term_customizer/translation_import_collection.rb +71 -0
- data/lib/decidim/term_customizer/translation_parser.rb +13 -0
- data/lib/decidim/term_customizer/translation_serializer.rb +28 -0
- data/lib/decidim/term_customizer/version.rb +2 -2
- metadata +39 -14
@@ -0,0 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module TermCustomizer
|
5
|
+
module Admin
|
6
|
+
# A form object to be used when admin users want to import a collection of proposals
|
7
|
+
# from a participatory text.
|
8
|
+
class TranslationsImportForm < Decidim::Form
|
9
|
+
ACCEPTED_MIME_TYPES = Decidim::TermCustomizer::Import::Readers::ACCEPTED_MIME_TYPES
|
10
|
+
MIME_TYPE_ZIP = "application/zip"
|
11
|
+
|
12
|
+
mimic :translations_import
|
13
|
+
|
14
|
+
attribute :file
|
15
|
+
|
16
|
+
validates :file, presence: true
|
17
|
+
validate :accepted_mime_type
|
18
|
+
|
19
|
+
def file_path
|
20
|
+
file&.path
|
21
|
+
end
|
22
|
+
|
23
|
+
def mime_type
|
24
|
+
file&.content_type
|
25
|
+
end
|
26
|
+
|
27
|
+
def zip_file?
|
28
|
+
mime_type == MIME_TYPE_ZIP
|
29
|
+
end
|
30
|
+
|
31
|
+
def accepted_mime_type
|
32
|
+
accepted_mime_types = ACCEPTED_MIME_TYPES.values + [MIME_TYPE_ZIP]
|
33
|
+
return if accepted_mime_types.include?(mime_type)
|
34
|
+
|
35
|
+
errors.add(
|
36
|
+
:file,
|
37
|
+
I18n.t(
|
38
|
+
"activemodel.errors.models.translations_import.attributes.file.invalid_mime_type",
|
39
|
+
valid_mime_types: ACCEPTED_MIME_TYPES.keys.map do |m|
|
40
|
+
I18n.t("decidim.term_customizer.admin.translations.new_import.accepted_mime_types.#{m}")
|
41
|
+
end.join(", ")
|
42
|
+
)
|
43
|
+
)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module TermCustomizer
|
5
|
+
module Admin
|
6
|
+
module TranslationsHelper
|
7
|
+
# Public: A formatted collection of mime_type to be used
|
8
|
+
# in forms.
|
9
|
+
def mime_types
|
10
|
+
types = ""
|
11
|
+
accepted_mime_types = Decidim::TermCustomizer::Import::Readers::ACCEPTED_MIME_TYPES.keys
|
12
|
+
accepted_mime_types.each_with_index do |mime_type, index|
|
13
|
+
types += t(".accepted_mime_types.#{mime_type}")
|
14
|
+
types += ", " unless accepted_mime_types.length == index + 1
|
15
|
+
end
|
16
|
+
types
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module TermCustomizer
|
5
|
+
module Admin
|
6
|
+
class ExportJob < ApplicationJob
|
7
|
+
queue_as :default
|
8
|
+
|
9
|
+
def perform(user, set, name, format)
|
10
|
+
export_data = Decidim::Exporters.find_exporter(format).new(
|
11
|
+
set.translations, TranslationSerializer
|
12
|
+
).export
|
13
|
+
|
14
|
+
ExportMailer.export(user, name, export_data).deliver_now
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -20,6 +20,7 @@ module Decidim
|
|
20
20
|
|
21
21
|
allowed_translation_set_action?
|
22
22
|
allowed_translation_action?
|
23
|
+
allowed_translation_bulk_action?
|
23
24
|
|
24
25
|
permission_action
|
25
26
|
end
|
@@ -40,7 +41,7 @@ module Decidim
|
|
40
41
|
case permission_action.action
|
41
42
|
when :create, :read
|
42
43
|
allow!
|
43
|
-
when :update, :destroy
|
44
|
+
when :update, :destroy, :import, :export
|
44
45
|
toggle_allow(translation_set.present?)
|
45
46
|
end
|
46
47
|
end
|
@@ -56,6 +57,15 @@ module Decidim
|
|
56
57
|
end
|
57
58
|
end
|
58
59
|
|
60
|
+
def allowed_translation_bulk_action?
|
61
|
+
return unless permission_action.subject == :translations
|
62
|
+
|
63
|
+
case permission_action.action
|
64
|
+
when :destroy
|
65
|
+
toggle_allow(translation_set.present?)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
59
69
|
def read_admin_dashboard_action?
|
60
70
|
permission_action.action == :read &&
|
61
71
|
permission_action.subject == :admin_dashboard
|
@@ -1,12 +1,32 @@
|
|
1
1
|
<div class="card" id="add-translations-search">
|
2
2
|
<div class="card-divider">
|
3
|
-
<h2 class="card-title">
|
4
|
-
|
3
|
+
<h2 class="card-title flex--sbc">
|
4
|
+
<div>
|
5
|
+
<%= link_to t("decidim.term_customizer.menu.term_customizer"), root_path %>
|
6
|
+
>
|
7
|
+
<%= link_to translated_attribute(set.name), translation_set_translations_path(set) %>
|
8
|
+
>
|
9
|
+
<%= t "decidim.term_customizer.admin.titles.add_multiple_translations" %>
|
5
10
|
|
6
|
-
|
11
|
+
<a data-toggle="help-panel" class="label secondary">
|
12
|
+
<%= icon("info") %>
|
13
|
+
<%= t("actions.help", scope: "decidim.term_customizer.admin") %>
|
14
|
+
</a>
|
15
|
+
</div>
|
16
|
+
|
17
|
+
<div class="flex--cc flex-gap--1">
|
18
|
+
<div id="js-other-actions-wrapper">
|
19
|
+
<%= link_to t("actions.back", scope: "decidim.term_customizer.admin"), translation_set_translations_path(set), class: "button hollow tiny button--simple" %>
|
20
|
+
</div>
|
21
|
+
</div>
|
7
22
|
</h2>
|
8
23
|
</div>
|
9
24
|
<div class="card-section">
|
25
|
+
<div id="help-panel" class="callout help-text hide" data-toggler=".hide">
|
26
|
+
<p><strong><%= t ".help_title" %></strong></p>
|
27
|
+
<%= t ".help_html", button_name: t(".add") %>
|
28
|
+
</div>
|
29
|
+
|
10
30
|
<div class="filters row">
|
11
31
|
<div class="column medium-4">
|
12
32
|
<%= form_tag search_translation_set_add_translations_path, method: :get do %>
|
@@ -29,7 +49,7 @@
|
|
29
49
|
<td>{{translation_key}}</td>
|
30
50
|
<td>{{translation_term}}</td>
|
31
51
|
<td>
|
32
|
-
<input type="hidden" name="keys[]" value="{{translation_key}}"
|
52
|
+
<input type="hidden" name="keys[]" value="{{translation_key}}" />
|
33
53
|
<%= icon_link_to "circle-x", "#", t("actions.destroy", scope: "decidim.admin"), class: "remove-translation-key action-icon--remove" %>
|
34
54
|
</td>
|
35
55
|
</tr>
|
@@ -38,8 +58,8 @@
|
|
38
58
|
<table class="table-list">
|
39
59
|
<thead>
|
40
60
|
<tr>
|
41
|
-
<th><%= t("models.translations.fields.key", scope: "decidim.admin") %></th>
|
42
|
-
<th><%= t("models.translations.fields.term", scope: "decidim.admin") %></th>
|
61
|
+
<th><%= t("models.translations.fields.key", scope: "decidim.term_customizer.admin") %></th>
|
62
|
+
<th><%= t("models.translations.fields.term", scope: "decidim.term_customizer.admin") %></th>
|
43
63
|
<th></th>
|
44
64
|
</tr>
|
45
65
|
</thead>
|
@@ -1,9 +1,33 @@
|
|
1
1
|
<div class="card">
|
2
2
|
<div class="card-divider">
|
3
|
-
<h2 class="card-title
|
3
|
+
<h2 class="card-title flex--sbc">
|
4
|
+
<div>
|
5
|
+
<%= link_to t("decidim.term_customizer.menu.term_customizer"), root_path %>
|
6
|
+
>
|
7
|
+
<%= t "translation_sets.form.title", scope: "decidim.term_customizer.admin" %>
|
8
|
+
|
9
|
+
<a data-toggle="help-panel" class="label secondary">
|
10
|
+
<%= icon("info") %>
|
11
|
+
<%= t("actions.help", scope: "decidim.term_customizer.admin") %>
|
12
|
+
</a>
|
13
|
+
</div>
|
14
|
+
|
15
|
+
<div class="flex--cc flex-gap--1">
|
16
|
+
<div id="js-other-actions-wrapper">
|
17
|
+
<%= link_to t("actions.back", scope: "decidim.term_customizer.admin"), root_path, class: "button hollow tiny button--simple" %>
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
</h2>
|
4
21
|
</div>
|
5
22
|
|
6
23
|
<div class="card-section">
|
24
|
+
<div id="help-panel" class="callout help-text hide" data-toggler=".hide">
|
25
|
+
<p><strong><%= t ".help_title" %></strong></p>
|
26
|
+
<%= t ".help_html" %>
|
27
|
+
<p><strong><%= t ".constraint_help_title" %></strong></p>
|
28
|
+
<%= t ".constraint_help_html" %>
|
29
|
+
</div>
|
30
|
+
|
7
31
|
<div class="row column">
|
8
32
|
<%= form.translated :text_field, :name, autofocus: true %>
|
9
33
|
</div>
|
@@ -2,53 +2,59 @@
|
|
2
2
|
<div class="card-divider">
|
3
3
|
<h2 class="card-title flex--sbc">
|
4
4
|
<div>
|
5
|
-
<%= t "decidim.admin.titles.translation_sets" %>
|
5
|
+
<%= t "decidim.term_customizer.admin.titles.translation_sets" %>
|
6
6
|
</div>
|
7
7
|
|
8
8
|
<div class="flex--cc flex-gap--1">
|
9
9
|
<div id="js-other-actions-wrapper">
|
10
10
|
<% if allowed_to? :create, :translation_set %>
|
11
|
-
<%= link_to t("actions.new_translation_set", scope: "decidim.admin"), new_translation_set_path, class: "button tiny button--simple" %>
|
11
|
+
<%= link_to t("actions.new_translation_set", scope: "decidim.term_customizer.admin"), new_translation_set_path, class: "button tiny button--simple" %>
|
12
12
|
<% end %>
|
13
13
|
<% if allowed_to? :update, :organization %>
|
14
|
-
<%= link_to t("actions.clear_cache", scope: "decidim.admin"), clear_caches_path, method: :delete, class: "button tiny button--simple", data: { confirm: t("actions.confirm_destroy", scope: "decidim.admin") } %>
|
14
|
+
<%= link_to t("actions.clear_cache", scope: "decidim.term_customizer.admin"), clear_caches_path, method: :delete, class: "button tiny button--simple", data: { confirm: t("actions.confirm_destroy", scope: "decidim.admin") } %>
|
15
15
|
<% end %>
|
16
16
|
</div>
|
17
17
|
</div>
|
18
18
|
</h2>
|
19
19
|
</div>
|
20
20
|
<div class="card-section">
|
21
|
-
|
22
|
-
<
|
23
|
-
<
|
24
|
-
<
|
25
|
-
<th><%= t("models.translation_sets.fields.name", scope: "decidim.admin") %></th>
|
26
|
-
<th></th>
|
27
|
-
</tr>
|
28
|
-
</thead>
|
29
|
-
<tbody>
|
30
|
-
<% @sets.each do |set| %>
|
21
|
+
<% if @sets.count > 0 %>
|
22
|
+
<div class="table-scroll">
|
23
|
+
<table class="table-list">
|
24
|
+
<thead>
|
31
25
|
<tr>
|
32
|
-
<
|
33
|
-
|
34
|
-
<%= link_to translated_attribute(set.name), translation_set_translations_path(set) %><br />
|
35
|
-
<% else %>
|
36
|
-
<%= translated_attribute(set.name) %>
|
37
|
-
<% end %>
|
38
|
-
</td>
|
39
|
-
<td class="table-list__actions">
|
40
|
-
<% if allowed_to? :update, :translation_set, translation_set: set %>
|
41
|
-
<%= icon_link_to "pencil", edit_translation_set_path(set), t("actions.configure", scope: "decidim.admin"), class: "action-icon--new" %>
|
42
|
-
<% end %>
|
43
|
-
|
44
|
-
<% if allowed_to? :destroy, :translation_set, translation_set: set %>
|
45
|
-
<%= icon_link_to "circle-x", translation_set_path(set), t("actions.destroy", scope: "decidim.admin"), method: :delete, class: "action-icon--remove", data: { confirm: t("actions.confirm_destroy", scope: "decidim.admin") } %>
|
46
|
-
<% end %>
|
47
|
-
</td>
|
26
|
+
<th><%= t("models.translation_sets.fields.name", scope: "decidim.term_customizer.admin") %></th>
|
27
|
+
<th></th>
|
48
28
|
</tr>
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
29
|
+
</thead>
|
30
|
+
<tbody>
|
31
|
+
<% @sets.each do |set| %>
|
32
|
+
<tr>
|
33
|
+
<td>
|
34
|
+
<% if allowed_to? :read, :translation %>
|
35
|
+
<%= link_to translated_attribute(set.name), translation_set_translations_path(set) %><br />
|
36
|
+
<% else %>
|
37
|
+
<%= translated_attribute(set.name) %>
|
38
|
+
<% end %>
|
39
|
+
</td>
|
40
|
+
<td class="table-list__actions">
|
41
|
+
<% if allowed_to? :update, :translation_set, translation_set: set %>
|
42
|
+
<%= icon_link_to "pencil", edit_translation_set_path(set), t("actions.configure", scope: "decidim.admin"), class: "action-icon--new" %>
|
43
|
+
<% end %>
|
44
|
+
|
45
|
+
<% if allowed_to? :destroy, :translation_set, translation_set: set %>
|
46
|
+
<%= icon_link_to "circle-x", translation_set_path(set), t("actions.destroy", scope: "decidim.admin"), method: :delete, class: "action-icon--remove", data: { confirm: t("actions.confirm_destroy", scope: "decidim.admin") } %>
|
47
|
+
<% end %>
|
48
|
+
</td>
|
49
|
+
</tr>
|
50
|
+
<% end %>
|
51
|
+
</tbody>
|
52
|
+
</table>
|
53
|
+
</div>
|
54
|
+
<% else %>
|
55
|
+
<div class="text-center">
|
56
|
+
<%= t ".no_records_html", new_set_link: new_translation_set_path, button_name: t("decidim.term_customizer.admin.actions.new_translation_set") %>
|
57
|
+
</div>
|
58
|
+
<% end %>
|
53
59
|
</div>
|
54
60
|
</div>
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<span class="exports dropdown tiny button button--simple" data-toggle="export-dropdown"><%= t "actions.export", scope: "decidim.admin" %></span>
|
2
|
+
<div class="dropdown-pane" id="export-dropdown" data-dropdown data-position=bottom data-alignment=right data-auto-focus="true" data-close-on-click="true">
|
3
|
+
<ul class="vertical menu add-components">
|
4
|
+
<% %w{CSV JSON Excel}.each do |format| %>
|
5
|
+
<li class="exports--format--<%= format.downcase %> exports--translations"><%= link_to t("decidim.admin.exports.export_as", name: t("decidim.term_customizer.admin.titles.translations"), export_format: format.upcase), export_translation_set_path(set, format: format), method: :post %></li>
|
6
|
+
<% end %>
|
7
|
+
</ul>
|
8
|
+
</div>
|
@@ -1,9 +1,35 @@
|
|
1
1
|
<div class="card">
|
2
2
|
<div class="card-divider">
|
3
|
-
<h2 class="card-title
|
3
|
+
<h2 class="card-title flex--sbc">
|
4
|
+
<div>
|
5
|
+
<%= link_to t("decidim.term_customizer.menu.term_customizer"), root_path %>
|
6
|
+
>
|
7
|
+
<%= link_to translated_attribute(set.name), translation_set_translations_path(set) %>
|
8
|
+
>
|
9
|
+
<%= t "translations.form.title", scope: "decidim.term_customizer.admin" %>
|
10
|
+
|
11
|
+
<a data-toggle="help-panel" class="label secondary">
|
12
|
+
<%= icon("info") %>
|
13
|
+
<%= t("actions.help", scope: "decidim.term_customizer.admin") %>
|
14
|
+
</a>
|
15
|
+
</div>
|
16
|
+
|
17
|
+
<div class="flex--cc flex-gap--1">
|
18
|
+
<div id="js-other-actions-wrapper">
|
19
|
+
<%= link_to t("actions.back", scope: "decidim.term_customizer.admin"), translation_set_translations_path(set), class: "button hollow tiny button--simple" %>
|
20
|
+
</div>
|
21
|
+
</div>
|
22
|
+
</h2>
|
4
23
|
</div>
|
5
24
|
|
6
25
|
<div class="card-section">
|
26
|
+
<div id="help-panel" class="callout help-text hide" data-toggler=".hide">
|
27
|
+
<p><strong><%= t ".help_title" %></strong></p>
|
28
|
+
<%= t ".help_html" %>
|
29
|
+
<p><strong><%= t ".term_help_title" %></strong></p>
|
30
|
+
<%= t ".term_help_html" %>
|
31
|
+
</div>
|
32
|
+
|
7
33
|
<div class="row column">
|
8
34
|
<%= form.text_field :key, autofocus: true %>
|
9
35
|
</div>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<div id="js-destroy-translations-actions" class="hide js-bulk-action-form">
|
2
|
+
<%= form_tag(translation_set_translations_destroy_path(set), method: :delete, id: "js-form-destroy-translations", class: "flex--cc flex-gap--1") do %>
|
3
|
+
<div class="checkboxes hide">
|
4
|
+
<% translations.each do |translation| %>
|
5
|
+
<%= check_box_tag "translation_ids[]", translation.id, false, class: "js-check-all-translation js-translation-id-#{translation.id}" %>
|
6
|
+
<% end %>
|
7
|
+
</div>
|
8
|
+
|
9
|
+
<%= submit_tag(t("actions.destroy", scope: "decidim.admin"), id: "js-submit-destroy-translations", class: "button small button--simple float-left") %>
|
10
|
+
|
11
|
+
<button id="js-cancel-destroy-translations" class="button tiny clear compact js-cancel-bulk-action" type="button"><%= t("decidim.term_customizer.admin.actions.cancel") %></button>
|
12
|
+
<% end %>
|
13
|
+
</div>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<div id="js-bulk-actions-wrapper">
|
2
|
+
<button
|
3
|
+
id="js-bulk-actions-button"
|
4
|
+
class="button button--nomargin tiny success light dropdown"
|
5
|
+
type="button"
|
6
|
+
data-toggle="js-bulk-actions-dropdown">
|
7
|
+
<%= t("decidim.term_customizer.admin.translations.index.actions") %>
|
8
|
+
</button>
|
9
|
+
|
10
|
+
<div
|
11
|
+
id="js-bulk-actions-dropdown"
|
12
|
+
class="dropdown-pane"
|
13
|
+
data-position="bottom"
|
14
|
+
data-alignment="right"
|
15
|
+
data-dropdown="dropdown"
|
16
|
+
data-auto-focus="false"
|
17
|
+
data-events="resize">
|
18
|
+
<ul class="list-reset">
|
19
|
+
<li>
|
20
|
+
<button type="button" data-action="destroy-translations">
|
21
|
+
<%= t("actions.destroy", scope: "decidim.admin") %>
|
22
|
+
</button>
|
23
|
+
</li>
|
24
|
+
</ul>
|
25
|
+
</div>
|
26
|
+
</div>
|
@@ -2,56 +2,84 @@
|
|
2
2
|
<div class="card-divider">
|
3
3
|
<h2 class="card-title flex--sbc">
|
4
4
|
<div>
|
5
|
-
<%= t
|
5
|
+
<%= link_to t("decidim.term_customizer.menu.term_customizer"), root_path %>
|
6
|
+
>
|
7
|
+
<%= translated_attribute(set.name) %>
|
8
|
+
|
9
|
+
<span id="js-selected-proposals-count" class="component-counter component-counter--inline" title="<%= t("decidim.term_customizer.admin.translations.index.selected") %>"></span>
|
6
10
|
</div>
|
7
11
|
|
8
12
|
<div class="flex--cc flex-gap--1">
|
13
|
+
<%= render partial: "decidim/term_customizer/admin/translations/bulk_actions/dropdown" %>
|
14
|
+
|
9
15
|
<div id="js-other-actions-wrapper">
|
10
16
|
<% if allowed_to? :create, :translation %>
|
11
|
-
<%= link_to t("actions.add_multiple_translations", scope: "decidim.admin"), translation_set_add_translations_path(set), class: "button tiny button--simple" %>
|
12
|
-
<%= link_to t("actions.new_translation", scope: "decidim.admin"), new_translation_set_translation_path(set), class: "button tiny button--simple" %>
|
17
|
+
<%= link_to t("actions.add_multiple_translations", scope: "decidim.term_customizer.admin"), translation_set_add_translations_path(set), class: "button tiny button--simple" %>
|
18
|
+
<%= link_to t("actions.new_translation", scope: "decidim.term_customizer.admin"), new_translation_set_translation_path(set), class: "button tiny button--simple" %>
|
19
|
+
<% end %>
|
20
|
+
<% if allowed_to? :import, :translation_set, translation_set: set %>
|
21
|
+
<%= link_to t("actions.import", scope: "decidim.term_customizer.admin"), import_translation_set_translations_path(set), class: "button tiny button--simple" %>
|
22
|
+
<% end %>
|
23
|
+
<% if allowed_to? :export, :translation_set, translation_set: set %>
|
24
|
+
<%= render partial: "export_dropdown" %>
|
13
25
|
<% end %>
|
14
26
|
</div>
|
27
|
+
|
28
|
+
<%= render partial: "decidim/term_customizer/admin/translations/bulk_actions/destroy" %>
|
15
29
|
</div>
|
16
30
|
</h2>
|
17
31
|
</div>
|
18
32
|
<div class="card-section">
|
19
|
-
|
20
|
-
<
|
21
|
-
<
|
22
|
-
<
|
23
|
-
<th><%= t("models.translations.fields.key", scope: "decidim.admin") %></th>
|
24
|
-
<th><%= t("models.translations.fields.original_term", scope: "decidim.admin") %></th>
|
25
|
-
<th><%= t("models.translations.fields.term", scope: "decidim.admin") %></th>
|
26
|
-
<th></th>
|
27
|
-
</tr>
|
28
|
-
</thead>
|
29
|
-
<tbody>
|
30
|
-
<% @translations.each do |translation| %>
|
33
|
+
<% if @translations.count > 0 %>
|
34
|
+
<div class="table-scroll">
|
35
|
+
<table class="table-list">
|
36
|
+
<thead>
|
31
37
|
<tr>
|
32
|
-
<
|
33
|
-
<%=
|
34
|
-
</
|
35
|
-
<
|
36
|
-
|
37
|
-
|
38
|
-
<
|
39
|
-
<%= translation.value %>
|
40
|
-
</td>
|
41
|
-
<td class="table-list__actions">
|
42
|
-
<% if allowed_to? :update, :translation, translation: translation %>
|
43
|
-
<%= icon_link_to "pencil", edit_translation_set_translation_path(set, translation), t("actions.configure", scope: "decidim.admin"), class: "action-icon--new" %>
|
44
|
-
<% end %>
|
45
|
-
|
46
|
-
<% if allowed_to? :destroy, :translation, translation: translation %>
|
47
|
-
<%= icon_link_to "circle-x", translation_set_translation_path(set, translation), t("actions.destroy", scope: "decidim.admin"), method: :delete, class: "action-icon--remove", data: { confirm: t("actions.confirm_destroy", scope: "decidim.admin") } %>
|
48
|
-
<% end %>
|
49
|
-
</td>
|
38
|
+
<th>
|
39
|
+
<%= check_box_tag "translations_bulk", "all", false, class: "js-check-all" %>
|
40
|
+
</th>
|
41
|
+
<th><%= t("models.translations.fields.key", scope: "decidim.term_customizer.admin") %></th>
|
42
|
+
<th><%= t("models.translations.fields.original_term", scope: "decidim.term_customizer.admin") %></th>
|
43
|
+
<th><%= t("models.translations.fields.term", scope: "decidim.term_customizer.admin") %></th>
|
44
|
+
<th></th>
|
50
45
|
</tr>
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
46
|
+
</thead>
|
47
|
+
<tbody>
|
48
|
+
<% @translations.each do |translation| %>
|
49
|
+
<tr>
|
50
|
+
<td>
|
51
|
+
<%= check_box_tag "translation_ids_s[]", translation.id, false, class: "js-check-all-translation js-translation-list-check js-translation-id-#{translation.id}" %><br />
|
52
|
+
</td>
|
53
|
+
<td>
|
54
|
+
<%= translation.key %>
|
55
|
+
</td>
|
56
|
+
<td>
|
57
|
+
<%= @directory.translations.term(translation.key) %>
|
58
|
+
</td>
|
59
|
+
<td>
|
60
|
+
<%= translation.value %>
|
61
|
+
</td>
|
62
|
+
<td class="table-list__actions">
|
63
|
+
<% if allowed_to? :update, :translation, translation: translation %>
|
64
|
+
<%= icon_link_to "pencil", edit_translation_set_translation_path(set, translation), t("actions.configure", scope: "decidim.admin"), class: "action-icon--new" %>
|
65
|
+
<% end %>
|
66
|
+
|
67
|
+
<% if allowed_to? :destroy, :translation, translation: translation %>
|
68
|
+
<%= icon_link_to "circle-x", translation_set_translation_path(set, translation), t("actions.destroy", scope: "decidim.admin"), method: :delete, class: "action-icon--remove", data: { confirm: t("actions.confirm_destroy", scope: "decidim.admin") } %>
|
69
|
+
<% end %>
|
70
|
+
</td>
|
71
|
+
</tr>
|
72
|
+
<% end %>
|
73
|
+
</tbody>
|
74
|
+
</table>
|
75
|
+
<%= paginate @translations, theme: "decidim" %>
|
76
|
+
</div>
|
77
|
+
<% else %>
|
78
|
+
<div class="text-center">
|
79
|
+
<%= t ".no_records_html", add_multiple_link: translation_set_add_translations_path(set), button_name: t("decidim.term_customizer.admin.actions.add_multiple_translations") %>
|
80
|
+
</div>
|
81
|
+
<% end %>
|
56
82
|
</div>
|
57
83
|
</div>
|
84
|
+
|
85
|
+
<%= javascript_include_tag "decidim/term_customizer/admin/translations_admin_bulk" %>
|