decidim-core 0.29.4 → 0.29.6
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/cells/decidim/activity/show.erb +6 -6
- data/app/cells/decidim/author/badge.erb +6 -0
- data/app/cells/decidim/author/show.erb +8 -2
- data/app/cells/decidim/author_cell.rb +10 -0
- data/app/cells/decidim/content_blocks/participatory_space_main_data/title.erb +11 -2
- data/app/cells/decidim/footer_topics/show.erb +2 -2
- data/app/cells/decidim/group_admins/show.erb +3 -1
- data/app/cells/decidim/group_members/show.erb +6 -2
- data/app/cells/decidim/images_panel/show.erb +5 -2
- data/app/cells/decidim/profile/avatar.erb +0 -2
- data/app/cells/decidim/profile/badge.erb +3 -3
- data/app/cells/decidim/profile/details.erb +2 -1
- data/app/cells/decidim/report_button/flag_modal.erb +11 -9
- data/app/cells/decidim/report_user_button/flag_modal.erb +11 -10
- data/app/cells/decidim/upload_modal/files.erb +4 -4
- data/app/cells/decidim/upload_modal_cell.rb +5 -3
- data/app/cells/decidim/user_activity_cell.rb +6 -1
- data/app/commands/decidim/amendable/accept.rb +2 -1
- data/app/controllers/concerns/decidim/headers/browser_feature_permissions.rb +50 -0
- data/app/controllers/decidim/amendments_controller.rb +3 -3
- data/app/controllers/decidim/application_controller.rb +1 -0
- data/app/forms/decidim/user_group_form.rb +2 -0
- data/app/helpers/decidim/amendments_helper.rb +2 -1
- data/app/helpers/decidim/filters_helper.rb +25 -0
- data/app/helpers/decidim/layout_helper.rb +6 -0
- data/app/helpers/decidim/map_helper.rb +1 -1
- data/app/packs/images/decidim/default-avatar.svg +1 -1
- data/app/packs/src/decidim/callout.js +13 -8
- data/app/packs/src/decidim/confirm.js +79 -59
- data/app/packs/src/decidim/datepicker/generate_datepicker.js +2 -0
- data/app/packs/src/decidim/datepicker/generate_timepicker.js +2 -0
- data/app/packs/src/decidim/direct_uploads/upload_field.js +3 -4
- data/app/packs/src/decidim/direct_uploads/upload_modal.js +8 -9
- data/app/packs/src/decidim/dropdown_menu.js +18 -0
- data/app/packs/src/decidim/editor/common/suggestion.js +11 -1
- data/app/packs/src/decidim/form_filter.js +6 -0
- data/app/packs/src/decidim/form_remote.js +1 -1
- data/app/packs/src/decidim/impersonation.js +1 -1
- data/app/packs/src/decidim/index.js +5 -1
- data/app/packs/src/decidim/session_timeouter.js +1 -1
- data/app/packs/src/decidim/utilities/dom.js +148 -0
- data/app/packs/stylesheets/decidim/_activity.scss +4 -4
- data/app/packs/stylesheets/decidim/_author.scss +8 -0
- data/app/packs/stylesheets/decidim/_cards.scss +10 -2
- data/app/packs/stylesheets/decidim/_filters.scss +1 -1
- data/app/packs/stylesheets/decidim/_header.scss +11 -3
- data/app/packs/stylesheets/decidim/_layout.scss +2 -2
- data/app/packs/stylesheets/decidim/_modal.scss +1 -5
- data/app/packs/stylesheets/decidim/_modal_update.scss +5 -1
- data/app/packs/stylesheets/decidim/_profile.scss +6 -6
- data/app/packs/stylesheets/decidim/editor.scss +3 -1
- data/app/permissions/decidim/permissions.rb +13 -1
- data/app/validators/password_validator.rb +3 -1
- data/app/views/decidim/application/_document.html.erb +2 -2
- data/app/views/decidim/errors/internal_server_error.html.erb +1 -1
- data/app/views/decidim/errors/not_found.html.erb +1 -1
- data/app/views/decidim/newsletters/unsubscribe.html.erb +16 -4
- data/app/views/decidim/searches/_filters.html.erb +48 -13
- data/app/views/decidim/shared/_component_announcement.html.erb +1 -1
- data/app/views/decidim/shared/_confirm_modal.html.erb +3 -5
- data/app/views/decidim/shared/_filters.html.erb +7 -5
- data/app/views/layouts/decidim/_application.html.erb +1 -1
- data/app/views/layouts/decidim/_js_configuration.html.erb +1 -0
- data/app/views/layouts/decidim/footer/_main.html.erb +1 -1
- data/app/views/layouts/decidim/footer/_main_intro.html.erb +1 -1
- data/app/views/layouts/decidim/footer/_mini.html.erb +2 -2
- data/app/views/layouts/decidim/header/_main.html.erb +2 -2
- data/app/views/layouts/decidim/header/_main_links_desktop.html.erb +6 -0
- data/app/views/layouts/decidim/header/_main_links_dropdown.html.erb +2 -0
- data/app/views/layouts/decidim/header/_main_links_mobile_account.html.erb +1 -1
- data/app/views/layouts/decidim/header/_mobile_language_choose.html.erb +1 -1
- data/config/locales/ar.yml +0 -3
- data/config/locales/bg-BG.yml +2 -2
- data/config/locales/bg.yml +0 -5
- data/config/locales/ca-IT.yml +37 -13
- data/config/locales/ca.yml +37 -13
- data/config/locales/cs.yml +20 -6
- data/config/locales/de.yml +48 -23
- data/config/locales/el.yml +0 -4
- data/config/locales/en.yml +29 -5
- data/config/locales/es-MX.yml +29 -5
- data/config/locales/es-PY.yml +29 -5
- data/config/locales/es.yml +29 -5
- data/config/locales/eu.yml +94 -70
- data/config/locales/fi-plain.yml +58 -5
- data/config/locales/fi.yml +59 -6
- data/config/locales/fr-CA.yml +29 -5
- data/config/locales/fr-LU.yml +3 -3
- data/config/locales/fr.yml +29 -5
- data/config/locales/gl.yml +0 -3
- data/config/locales/hu.yml +0 -5
- data/config/locales/id-ID.yml +0 -3
- data/config/locales/is-IS.yml +0 -1
- data/config/locales/it.yml +124 -3
- data/config/locales/ja.yml +30 -5
- data/config/locales/lb-LU.yml +2 -2
- data/config/locales/lb.yml +0 -3
- data/config/locales/lt.yml +0 -5
- data/config/locales/lv.yml +0 -3
- data/config/locales/nl.yml +0 -3
- data/config/locales/no.yml +0 -3
- data/config/locales/pl.yml +0 -5
- data/config/locales/pt-BR.yml +1 -4
- data/config/locales/pt.yml +0 -3
- data/config/locales/ro-RO.yml +0 -4
- data/config/locales/ru.yml +0 -3
- data/config/locales/sk-SK.yml +3 -3
- data/config/locales/sk.yml +2 -3
- data/config/locales/sv.yml +28 -4
- data/config/locales/tr-TR.yml +0 -3
- data/config/locales/uk.yml +0 -2
- data/config/locales/zh-CN.yml +0 -3
- data/config/locales/zh-TW.yml +0 -5
- data/lib/decidim/asset_router/storage.rb +8 -8
- data/lib/decidim/assets/tailwind/tailwind.config.js.erb +2 -1
- data/lib/decidim/core/test/factories.rb +2 -2
- data/lib/decidim/core/test/shared_examples/announcements_examples.rb +4 -0
- data/lib/decidim/core/version.rb +1 -1
- data/lib/decidim/form_builder.rb +15 -1
- metadata +10 -6
|
@@ -61,7 +61,7 @@ header {
|
|
|
61
61
|
@apply hidden md:block col-span-2 col-start-5 xl:col-start-4;
|
|
62
62
|
|
|
63
63
|
form {
|
|
64
|
-
@apply block relative rounded text-md bg-background;
|
|
64
|
+
@apply block relative rounded text-md border border-neutral-200 outline outline-1 outline-transparent rounded bg-background-2 leading-relaxed;
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
input[type="text"] {
|
|
@@ -69,7 +69,7 @@ header {
|
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
button[type="submit"] {
|
|
72
|
-
@apply absolute ltr:right-2 rtl:left-2 inset-y-
|
|
72
|
+
@apply absolute ltr:right-2 rtl:left-2 inset-y-0 text-secondary px-2;
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
75
|
|
|
@@ -404,7 +404,7 @@ header {
|
|
|
404
404
|
@apply w-full px-4;
|
|
405
405
|
|
|
406
406
|
&-menu {
|
|
407
|
-
@apply w-full md:w-
|
|
407
|
+
@apply w-full md:w-[100%] mt-0 grid md:grid-cols-2 gap-x-6 text-secondary;
|
|
408
408
|
|
|
409
409
|
> * {
|
|
410
410
|
@apply py-3 md:py-3.5 border-b last:border-0 border-gray-3;
|
|
@@ -431,6 +431,14 @@ header {
|
|
|
431
431
|
|
|
432
432
|
&__bottom {
|
|
433
433
|
@apply hidden md:flex;
|
|
434
|
+
|
|
435
|
+
&-right {
|
|
436
|
+
@apply mr-2 mb-2;
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
&-left {
|
|
440
|
+
@apply mr-2 mt-1;
|
|
441
|
+
}
|
|
434
442
|
}
|
|
435
443
|
|
|
436
444
|
&__title {
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
@apply flex flex-col min-h-screen;
|
|
3
3
|
|
|
4
4
|
&__skip {
|
|
5
|
-
@apply absolute z-
|
|
5
|
+
@apply absolute z-[9999] left-0 -translate-x-full py-1 px-4 bg-primary rounded-br-lg text-white cursor-pointer transition focus:translate-x-0;
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
[data-content] {
|
|
9
|
-
@apply relative flex flex-col;
|
|
9
|
+
@apply relative flex flex-col flex-1;
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
12
|
|
|
@@ -18,15 +18,11 @@
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
[data-dialog-container] {
|
|
21
|
-
@apply grid grid-
|
|
21
|
+
@apply grid grid-rows-[auto_1fr] items-start md:items-center gap-2 text-left;
|
|
22
22
|
|
|
23
23
|
> svg {
|
|
24
24
|
@apply w-6 h-6 text-gray fill-current flex-none;
|
|
25
25
|
}
|
|
26
|
-
|
|
27
|
-
> :last-child {
|
|
28
|
-
@apply col-span-2 md:col-span-1 md:col-start-2;
|
|
29
|
-
}
|
|
30
26
|
}
|
|
31
27
|
|
|
32
28
|
[data-dialog-title] {
|
|
@@ -9,18 +9,18 @@
|
|
|
9
9
|
&-container {
|
|
10
10
|
@apply w-24 h-24 relative;
|
|
11
11
|
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
&__details {
|
|
15
|
+
@apply pb-3 space-y-2;
|
|
12
16
|
|
|
13
17
|
&-badge {
|
|
14
|
-
@apply
|
|
18
|
+
@apply flex items-center gap-1 text-sm text-gray-2;
|
|
15
19
|
|
|
16
20
|
svg {
|
|
17
|
-
@apply w-4 h-4 text-white fill-current;
|
|
21
|
+
@apply w-4 h-4 inline-block bg-primary rounded-full text-white fill-current;
|
|
18
22
|
}
|
|
19
23
|
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
&__details {
|
|
23
|
-
@apply pb-3 space-y-2;
|
|
24
24
|
|
|
25
25
|
&-data {
|
|
26
26
|
@apply flex flex-wrap gap-x-6 gap-y-4;
|
|
@@ -89,7 +89,9 @@
|
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
.ProseMirror {
|
|
92
|
-
@apply relative p-2.5 outline-0
|
|
92
|
+
@apply relative p-2.5 outline-0 resize-y overflow-hidden prose max-w-none prose-headings:first:mt-0 prose-p:first:mt-0 prose-ul:first:mt-0 prose-ol:first:mt-0 prose-blockquote:first:mt-0 prose-pre:first:mt-0;
|
|
93
|
+
|
|
94
|
+
min-height: inherit;
|
|
93
95
|
|
|
94
96
|
&.ProseMirror-focused,
|
|
95
97
|
&.dialog-open {
|
|
@@ -106,7 +106,19 @@ module Decidim
|
|
|
106
106
|
return allow! if component.current_settings.amendment_creation_enabled
|
|
107
107
|
when :accept,
|
|
108
108
|
:reject
|
|
109
|
-
return
|
|
109
|
+
return disallow! unless component.current_settings.amendment_reaction_enabled
|
|
110
|
+
|
|
111
|
+
amendable = context.fetch(:amendable, nil)
|
|
112
|
+
|
|
113
|
+
if amendable.respond_to?(:official?) && amendable.official?
|
|
114
|
+
return allow! if user.admin?
|
|
115
|
+
|
|
116
|
+
return disallow!
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
return disallow! unless amendable.authored_by?(user)
|
|
120
|
+
|
|
121
|
+
return allow!
|
|
110
122
|
when :promote
|
|
111
123
|
return allow! if component.current_settings.amendment_promotion_enabled
|
|
112
124
|
end
|
|
@@ -55,7 +55,9 @@ class PasswordValidator < ActiveModel::EachValidator
|
|
|
55
55
|
attr_reader :record, :attribute, :value
|
|
56
56
|
|
|
57
57
|
def get_message(reason)
|
|
58
|
-
I18n.t "password_validator.#{reason}"
|
|
58
|
+
I18n.t! "password_validator.#{reason}"
|
|
59
|
+
rescue I18n::MissingTranslationData
|
|
60
|
+
I18n.t "password_validator.fallback"
|
|
59
61
|
end
|
|
60
62
|
|
|
61
63
|
def organization
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<div id="<%= dom_id(document) %>">
|
|
2
2
|
<div class="card__list-content">
|
|
3
|
-
|
|
3
|
+
<span class="card__list-title">
|
|
4
4
|
<%= h attachment_title(document) %>
|
|
5
|
-
|
|
5
|
+
</span>
|
|
6
6
|
<% if document.description.present? %>
|
|
7
7
|
<div class="card__list-text"><%= decidim_escape_translated(document.description) %></div>
|
|
8
8
|
<% end %>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<%= render layout: "layouts/decidim/shared/layout_center" do %>
|
|
2
2
|
|
|
3
|
-
<div class="
|
|
3
|
+
<div class="flex flex-col items-center">
|
|
4
4
|
<div class="flex justify-center">
|
|
5
5
|
<h1 class="title-decorator my-12"><%= t("title", scope: "decidim.errors.internal_server_error") %></h1>
|
|
6
6
|
</div>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<%= render layout: "layouts/decidim/shared/layout_center" do %>
|
|
2
2
|
|
|
3
|
-
<div class="
|
|
3
|
+
<div class="flex flex-col items-center">
|
|
4
4
|
<div class="flex justify-center">
|
|
5
5
|
<h1 class="title-decorator my-12"><%= t("title", scope: "decidim.errors.not_found") %></h1>
|
|
6
6
|
</div>
|
|
@@ -1,4 +1,16 @@
|
|
|
1
|
-
<
|
|
2
|
-
<
|
|
3
|
-
|
|
4
|
-
</div>
|
|
1
|
+
<main class="layout-1col cols-6">
|
|
2
|
+
<div class="text-center py-12">
|
|
3
|
+
<h1 class="h1 decorator inline-block text-left"><%= t ".unsubscribe" %></h1>
|
|
4
|
+
</div>
|
|
5
|
+
<div class="page__container">
|
|
6
|
+
<div class="editor-content">
|
|
7
|
+
<div class="rich-text-display">
|
|
8
|
+
<%= t ".subscription_preferences", organization_name: translated_attribute(current_organization.name) %>
|
|
9
|
+
</div>
|
|
10
|
+
<br>
|
|
11
|
+
<div class="rich-text-display">
|
|
12
|
+
<%= t ".check_subscription_html", link: decidim.notifications_settings_path %>
|
|
13
|
+
</div>
|
|
14
|
+
</div>
|
|
15
|
+
</div>
|
|
16
|
+
</main>
|
|
@@ -12,35 +12,70 @@
|
|
|
12
12
|
<%= icon "arrow-down-s-line", class: "w-8 h-8 flex-none text-secondary fill-current" %>
|
|
13
13
|
<%= icon "arrow-up-s-line", class: "w-8 h-8 flex-none text-secondary fill-current" %>
|
|
14
14
|
</button>
|
|
15
|
-
<
|
|
16
|
-
<
|
|
17
|
-
<%= link_to main_search_path, class: "filter#{" is-active" if params.dig(:filter, :with_resource_type) == nil}" do %>
|
|
15
|
+
<ul id="dropdown-menu-search" aria-hidden="true">
|
|
16
|
+
<li>
|
|
17
|
+
<%= link_to main_search_path, class: "filter#{" is-active" if params.dig(:filter, :with_resource_type) == nil}", "aria-current": params.dig(:filter, :with_resource_type) == nil ? "true" : "" do %>
|
|
18
18
|
<%= resource_type_icon("all") %>
|
|
19
19
|
<span><%= t("all", scope: "decidim.searches.filters.state") %></span>
|
|
20
20
|
<span class="label ml-auto"><%= @results_count %></span>
|
|
21
21
|
<% end %>
|
|
22
|
-
</
|
|
22
|
+
</li>
|
|
23
23
|
<% @blocks.each do |elements| %>
|
|
24
|
-
<
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
<li>
|
|
25
|
+
<ul>
|
|
26
|
+
<% elements.each do |type, results| %>
|
|
27
27
|
<% if results[:count].positive? %>
|
|
28
|
-
|
|
28
|
+
<li>
|
|
29
|
+
<%= link_to search_path_by_resource_type(type), class: "filter#{" is-active" if params.dig(:filter, :with_resource_type) == type}", "aria-current": params.dig(:filter, :with_resource_type) == type ? "true" : "" do %>
|
|
29
30
|
<%= resource_type_icon(type) %>
|
|
30
31
|
<span><%= searchable_resource_human_name(type) %></span>
|
|
31
32
|
<span class="label ml-auto"><%= results[:count] %></span>
|
|
32
33
|
<% end %>
|
|
34
|
+
</li>
|
|
33
35
|
<% else %>
|
|
34
|
-
<%= content_tag :
|
|
36
|
+
<%= content_tag :li, class: "filter#{" is-empty" if results[:count].zero?}" do %>
|
|
35
37
|
<%= resource_type_icon(type) %>
|
|
36
38
|
<span><%= searchable_resource_human_name(type) %></span>
|
|
37
39
|
<span class="label ml-auto"><%= results[:count] %></span>
|
|
38
40
|
<% end %>
|
|
39
41
|
<% end %>
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
</
|
|
42
|
+
<% end %>
|
|
43
|
+
</ul>
|
|
44
|
+
</li>
|
|
43
45
|
<% end %>
|
|
44
|
-
</
|
|
46
|
+
</ul>
|
|
45
47
|
</div>
|
|
46
48
|
</nav>
|
|
49
|
+
<script type="text/javascript">
|
|
50
|
+
const button = document.querySelector('#dropdown-trigger-search');
|
|
51
|
+
const arrowDown = button.querySelector('svg:first-of-type');
|
|
52
|
+
const arrowUp = button.querySelector('svg:last-of-type');
|
|
53
|
+
const list = document.querySelector('#dropdown-menu-search');
|
|
54
|
+
// the arrow is up when user arrives on the page, with the list displayed
|
|
55
|
+
arrowUp.addEventListener('click', function(){
|
|
56
|
+
setTimeout(() => {
|
|
57
|
+
button.setAttribute('aria-expanded', 'false');
|
|
58
|
+
list.style.display = "none";
|
|
59
|
+
}, 300)
|
|
60
|
+
})
|
|
61
|
+
arrowDown.addEventListener('click', function(){
|
|
62
|
+
setTimeout(() => {
|
|
63
|
+
button.setAttribute('aria-expanded', 'true');
|
|
64
|
+
list.style.display = "block";
|
|
65
|
+
}, 300)
|
|
66
|
+
})
|
|
67
|
+
// 32 is code for space bar and 13 is code for enter
|
|
68
|
+
button.addEventListener('keydown', function(e){
|
|
69
|
+
if ((e.keyCode === 13 || e.keyCode === 32) && button.getAttribute('aria-expanded') === 'true') {
|
|
70
|
+
setTimeout(() => {
|
|
71
|
+
button.setAttribute('aria-expanded', 'false');
|
|
72
|
+
list.style.display = "none";
|
|
73
|
+
}, 300)
|
|
74
|
+
} else if ((e.keyCode === 13 || e.keyCode === 32) && button.getAttribute('aria-expanded') === 'false'){
|
|
75
|
+
setTimeout(() => {
|
|
76
|
+
button.setAttribute('aria-expanded', 'true');
|
|
77
|
+
list.style.display = "block";
|
|
78
|
+
}, 300)
|
|
79
|
+
}
|
|
80
|
+
})
|
|
81
|
+
</script>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<% announcement = translated_attribute(current_settings.announcement).presence || translated_attribute(component_settings.announcement).presence %>
|
|
2
|
-
<% if announcement %>
|
|
2
|
+
<% if strip_tags(announcement).present? %>
|
|
3
3
|
<section class="layout-main__section">
|
|
4
4
|
<%= cell("decidim/announcement", announcement, local_assigns.merge(callout_class: "editor-content")) %>
|
|
5
5
|
</section>
|
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
<%= decidim_modal id: "confirm-modal" do %>
|
|
2
2
|
<div data-dialog-container>
|
|
3
|
-
<%= icon "delete-bin-line" %>
|
|
4
3
|
<h2 class="h2" data-dialog-title id="dialog-title-confirm-modal"><%= t("title", scope: "decidim.shared.confirm_modal") %></h2>
|
|
5
|
-
|
|
6
4
|
<div data-confirm-modal-content></div>
|
|
7
5
|
</div>
|
|
8
6
|
|
|
9
|
-
<div data-dialog-actions>
|
|
10
|
-
<button class="button button__lg button__transparent-secondary" data-confirm-cancel data-dialog-close="confirm-modal">
|
|
7
|
+
<div data-dialog-actions class="flex flex-col-reverse md:flex-row">
|
|
8
|
+
<button class="button button__lg button__transparent-secondary w-full md:w-auto" data-confirm-cancel data-dialog-close="confirm-modal">
|
|
11
9
|
<span><%= t("cancel", scope: "decidim.shared.confirm_modal") %></span>
|
|
12
10
|
</button>
|
|
13
|
-
<button class="button button__lg button__secondary" data-confirm-ok>
|
|
11
|
+
<button class="button button__lg button__secondary w-full md:w-auto" data-confirm-ok>
|
|
14
12
|
<span><%= t("ok", scope: "decidim.shared.confirm_modal") %></span>
|
|
15
13
|
</button>
|
|
16
14
|
</div>
|
|
@@ -14,18 +14,20 @@
|
|
|
14
14
|
|
|
15
15
|
<div id="dropdown-menu-filters">
|
|
16
16
|
<% if local_assigns.has_key?(:skip_to_id) %>
|
|
17
|
-
<%= link_to t("skip", scope: "decidim.shared.filter_form_help"), "##{skip_to_id}", class: "filter-skip", role: "menuitem" %>
|
|
17
|
+
<%= link_to t("skip", scope: "decidim.shared.filter_form_help"), "##{skip_to_id}", class: "filter-skip", role: "menuitem", "data-skip-to-content": true %>
|
|
18
18
|
<% end %>
|
|
19
|
-
|
|
19
|
+
|
|
20
|
+
<p id="filter-help-text" class="filter-help" role="menuitem" aria-disabled="true"><%= t("help", scope: "decidim.shared.filter_form_help") %></p>
|
|
20
21
|
|
|
21
22
|
<% if local_assigns.has_key?(:search_variable) %>
|
|
22
23
|
<div class="filter-search filter-container" role="menuitem">
|
|
23
24
|
<%= form.search_field search_variable,
|
|
24
25
|
label: false,
|
|
25
26
|
placeholder: search_label,
|
|
26
|
-
title: search_label,
|
|
27
|
-
"aria-label": search_label
|
|
28
|
-
|
|
27
|
+
title: filter_search_label(search_label, skip_to_id),
|
|
28
|
+
"aria-label": filter_search_label(search_label, skip_to_id),
|
|
29
|
+
"aria-describedby": "filter-help-text" %>
|
|
30
|
+
<button type="submit" aria-label="<%= filter_search_label(search_label, skip_to_id) %>">
|
|
29
31
|
<%= icon "search-line" %>
|
|
30
32
|
</button>
|
|
31
33
|
</div>
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
<body class="text-black text-md form-defaults<%= yield (:body_class) %>">
|
|
10
10
|
<!--noindex--><!--googleoff: all-->
|
|
11
|
-
<%= link_to t("skip_button", scope: "decidim.accessibility"), "#content", class: "layout-container__skip" %>
|
|
11
|
+
<%= link_to t("skip_button", scope: "decidim.accessibility"), "#content", class: "layout-container__skip", "data-skip-to-content": true %>
|
|
12
12
|
<%= cell("decidim/data_consent", current_organization) %>
|
|
13
13
|
<!--googleon: all--><!--/noindex-->
|
|
14
14
|
|
|
@@ -7,6 +7,7 @@ js_configs = {
|
|
|
7
7
|
"mentionsModal": {
|
|
8
8
|
"removeRecipient": t("decidim.shared.mentions_modal.remove_recipient", name: "%name%")
|
|
9
9
|
},
|
|
10
|
+
"confirmUnload": t("decidim.shared.confirm_unload"),
|
|
10
11
|
emojis: I18n.t("emojis").deep_transform_keys { |k| k.to_s.camelize(:lower) },
|
|
11
12
|
editor: I18n.t("editor"),
|
|
12
13
|
date: I18n.t("date"),
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
<nav class="md:w-1/2 lg:w-auto" role="navigation" aria-label="Legal">
|
|
12
12
|
<%= render partial: "layouts/decidim/footer/main_legal" %>
|
|
13
13
|
</nav>
|
|
14
|
-
<nav class="w-full md:w-auto md:ml-auto" role="navigation" aria-label="
|
|
14
|
+
<nav class="w-full md:w-auto md:ml-auto" role="navigation" aria-label="<%= t("layouts.decidim.footer.social_media") %>">
|
|
15
15
|
<%= render partial: "layouts/decidim/footer/main_social_media_links" %>
|
|
16
16
|
</nav>
|
|
17
17
|
<%= render partial: "layouts/decidim/footer/main_language_chooser" %>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<% if current_organization.official_img_footer.attached? %>
|
|
2
2
|
<%= link_to current_organization.official_url, class: "block mb-6" do %>
|
|
3
|
-
<%= image_tag current_organization.attached_uploader(:official_img_footer).url, alt: current_organization_name, class: "max-h-16" %>
|
|
3
|
+
<%= image_tag current_organization.attached_uploader(:official_img_footer).url, alt: t("layouts.decidim.footer.current_organization_img", organization: current_organization_name), class: "max-h-16" %>
|
|
4
4
|
<% end %>
|
|
5
5
|
<% end %>
|
|
6
6
|
<div class="text-sm text-white prose">
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
<a rel="decidim noopener noreferrer" href="https://decidim.org/" target="_blank" data-external-link="text-only">
|
|
5
5
|
<%= image_pack_tag("media/images/decidim-logo.svg", alt: t("layouts.decidim.footer.decidim_logo"), class: "max-h-8 block") %>
|
|
6
6
|
</a>
|
|
7
|
-
<
|
|
7
|
+
<p class="text-xs mt-2 [&_a]:underline">
|
|
8
8
|
<%= t("layouts.decidim.footer.made_with_open_source").html_safe %>
|
|
9
|
-
</
|
|
9
|
+
</p>
|
|
10
10
|
</div>
|
|
11
11
|
<a class="flex gap-1 hover:opacity-50" rel="license noopener noreferrer" href="http://creativecommons.org/licenses/by-sa/4.0/" target="_blank" data-external-link="text-only">
|
|
12
12
|
<span class="sr-only"><%= t("layouts.decidim.footer.cc_by_license") %></span>
|
|
@@ -8,10 +8,10 @@
|
|
|
8
8
|
<%= render partial: "layouts/decidim/logo_mobile", locals: { organization: current_organization } %>
|
|
9
9
|
</div>
|
|
10
10
|
</div>
|
|
11
|
-
<div class="main-bar__search">
|
|
11
|
+
<div role="search" class="main-bar__search">
|
|
12
12
|
<%= render partial: "layouts/decidim/header/main_search" %>
|
|
13
13
|
</div>
|
|
14
|
-
<div class="main-bar__links-desktop">
|
|
14
|
+
<div role="navigation" class="main-bar__links-desktop">
|
|
15
15
|
<%= render partial: "layouts/decidim/header/main_links_desktop" %>
|
|
16
16
|
</div>
|
|
17
17
|
<div class="main-bar__menu-mobile">
|
|
@@ -30,6 +30,12 @@
|
|
|
30
30
|
<% unread_data = current_user_unread_data %>
|
|
31
31
|
<% if unread_data[:unread_items] %>
|
|
32
32
|
<%= content_tag :span, "", class: "main-bar__notification", data: unread_data %>
|
|
33
|
+
<% if unread_data[:unread_notifications] %>
|
|
34
|
+
<%= content_tag :span, t("layouts.decidim.user_menu.unread_notifications"), class: "sr-only" %>
|
|
35
|
+
<% end %>
|
|
36
|
+
<% if unread_data[:unread_conversations] %>
|
|
37
|
+
<%= content_tag :span, t("layouts.decidim.user_menu.unread_conversations"), class: "sr-only" %>
|
|
38
|
+
<% end %>
|
|
33
39
|
<% end %>
|
|
34
40
|
<% if current_user.avatar.attached? %>
|
|
35
41
|
<span class="main-bar__avatar">
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
<span class="text-secondary"><%= t("layouts.decidim.user_menu.notifications") %></span>
|
|
18
18
|
<% if unread_data[:unread_notifications] %>
|
|
19
19
|
<%= content_tag :span, "", class: "main-bar__dropdown-notification", data: unread_data %>
|
|
20
|
+
<%= content_tag :span, t("layouts.decidim.user_menu.unread_notifications"), class: "sr-only" %>
|
|
20
21
|
<% end %>
|
|
21
22
|
<% end %>
|
|
22
23
|
</li>
|
|
@@ -26,6 +27,7 @@
|
|
|
26
27
|
<span class="text-secondary"><%= t("layouts.decidim.user_menu.conversations") %></span>
|
|
27
28
|
<% if unread_data[:unread_conversations] %>
|
|
28
29
|
<%= content_tag :span, "", class: "main-bar__dropdown-notification", data: unread_data %>
|
|
30
|
+
<%= content_tag :span, t("layouts.decidim.user_menu.unread_conversations"), class: "sr-only" %>
|
|
29
31
|
<% end %>
|
|
30
32
|
<% end %>
|
|
31
33
|
</li>
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
</div>
|
|
11
11
|
|
|
12
12
|
<div>
|
|
13
|
-
<div class="main-bar__links-mobile__trigger" onclick="document.querySelector('#dropdown-trigger-links-mobile').click();">
|
|
13
|
+
<div class="main-bar__links-mobile__trigger" onclick="document.querySelector('#dropdown-trigger-links-mobile').click();document.querySelector('#dropdown-menu-account-mobile').removeAttribute('aria-modal')">
|
|
14
14
|
<%= icon "close-line" %>
|
|
15
15
|
</div>
|
|
16
16
|
</div>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<% if available_locales.length > 1 %>
|
|
2
2
|
<div>
|
|
3
3
|
<button id="dropdown-trigger-language-chooser-mobile" data-component="dropdown" data-target="dropdown-menu-language-chooser-mobile" class="mt-8 rounded-lg py-0 bg-gray-5 h-10 border border-gray outline outline-1 outline-transparent">
|
|
4
|
-
<span><%= t("name", scope: "locale" ) %></span>
|
|
4
|
+
<span class="ml-2"><%= t("name", scope: "locale" ) %></span>
|
|
5
5
|
<%= icon "arrow-down-s-line" %>
|
|
6
6
|
<%= icon "arrow-up-s-line" %>
|
|
7
7
|
<span class="sr-only">
|
data/config/locales/ar.yml
CHANGED
|
@@ -864,7 +864,6 @@ ar:
|
|
|
864
864
|
reject_invitation: رفض
|
|
865
865
|
group_members:
|
|
866
866
|
actions:
|
|
867
|
-
are_you_sure: هل أنت واثق؟
|
|
868
867
|
promote_to_admin: جعل المشرف
|
|
869
868
|
remove_from_group: إزالة المشارك
|
|
870
869
|
index:
|
|
@@ -1053,10 +1052,8 @@ ar:
|
|
|
1053
1052
|
unsubscribe:
|
|
1054
1053
|
success: أنت غير مشترك بنجاح.
|
|
1055
1054
|
token_error: انتهت صلاحية الرابط.
|
|
1056
|
-
unsubscribe: إلغاء الاشتراك
|
|
1057
1055
|
newsletters_opt_in_mailer:
|
|
1058
1056
|
notify:
|
|
1059
|
-
body_1: تزداد أهمية معالجة البيانات الشخصية وحمايتها بالنسبة لنا جميعًا. مع اللائحة العامة الجديدة لحماية البيانات (GDPR) المؤرخة 25 مايو 2018 ، أصبح للأفراد سيطرة أفضل على بياناتهم الشخصية. لهذا السبب نحتاج إلى "موافق" لمواصلة إرسال المعلومات ذات الصلة حول أنشطة %{organization_name}.
|
|
1060
1057
|
body_2: 'كيف يمكنك أن تعطينا موافقتك؟ فقط انقر على الزر التالي:'
|
|
1061
1058
|
body_3: مع هذه الموافقة ، ستتمكن من متابعة تلقي معلومات حول خدمات النظام الأساسي. على العكس من ذلك ، إذا لم نتلق تأكيدًا إيجابيًا من جانبك ، فسنوقف إرسال رسائلنا إليك. إذا أكدت رغبتك في أن تظل على اطلاع ، فسيكون لديك دائمًا خيار الإلغاء في أي وقت.
|
|
1062
1059
|
button: نعم ، أرغب في متابعة تلقي المعلومات ذات الصلة
|
data/config/locales/bg-BG.yml
CHANGED
|
@@ -405,7 +405,7 @@ bg:
|
|
|
405
405
|
newsletter: Получавайте извънреден бюлетин с подходяща информация
|
|
406
406
|
newsletter_title: Разрешение за контакт с Вас
|
|
407
407
|
nickname_help: Вашя псевдоним в %{organization}
|
|
408
|
-
password_help: "Минимум %{
|
|
408
|
+
password_help: "Минимум %{minimum_characters} символа, не трябва да са разпространени (например, 123456) и трябва да са различни от вашите име и ел. поща."
|
|
409
409
|
sign_in: Вход
|
|
410
410
|
sign_up: Регистрация
|
|
411
411
|
sign_up_as:
|
|
@@ -1315,7 +1315,7 @@ bg:
|
|
|
1315
1315
|
change_your_password: Промени паролата си
|
|
1316
1316
|
confirm_new_password: Потвърди нова парола
|
|
1317
1317
|
new_password: Нова парола
|
|
1318
|
-
password_help: "Минимум %{
|
|
1318
|
+
password_help: "Минимум %{minimum_characters} символа, не трябва да са разпространени (например, 123456) и трябва да са различни от вашите име и ел. поща."
|
|
1319
1319
|
new:
|
|
1320
1320
|
forgot_your_password: Забравили сте паролата си?
|
|
1321
1321
|
send_me_reset_password_instructions: Изпрати ми инструкции за възстановяване на паролата
|
data/config/locales/bg.yml
CHANGED
|
@@ -955,7 +955,6 @@ bg:
|
|
|
955
955
|
title: Какви са значките?
|
|
956
956
|
group_admins:
|
|
957
957
|
actions:
|
|
958
|
-
are_you_sure: Сигурни ли сте? Това няма да премахне участника от групата.
|
|
959
958
|
demote_admin: Премахни администратор
|
|
960
959
|
demote:
|
|
961
960
|
error: Възникна проблем при премахването на този участник от списъка с администратори.
|
|
@@ -985,7 +984,6 @@ bg:
|
|
|
985
984
|
error: Възникна проблем при приемането на заявката за присъединяване.
|
|
986
985
|
success: Заявката за присъединяване е приета успешно.
|
|
987
986
|
actions:
|
|
988
|
-
are_you_sure: Сигурни ли сте?
|
|
989
987
|
promote_to_admin: Направи администратор
|
|
990
988
|
remove_from_group: Премахни участник
|
|
991
989
|
index:
|
|
@@ -1215,11 +1213,9 @@ bg:
|
|
|
1215
1213
|
main_image: Основно изображение
|
|
1216
1214
|
newsletters:
|
|
1217
1215
|
unsubscribe:
|
|
1218
|
-
check_subscription: За да зададете предпочитанията си, отидете в страницата <a href="%{link}" target="_blank">настройки</a>.
|
|
1219
1216
|
error: Възникна проблем при прекратяването на абонамента.
|
|
1220
1217
|
success: Отписахте се успешно.
|
|
1221
1218
|
token_error: Срокът на връзката е изтекъл.
|
|
1222
|
-
unsubscribe: Отписване
|
|
1223
1219
|
newsletters_opt_in:
|
|
1224
1220
|
unauthorized: Съжаляваме, този линк вече не е активен.
|
|
1225
1221
|
update:
|
|
@@ -1227,7 +1223,6 @@ bg:
|
|
|
1227
1223
|
success: Настройките за бюлетина са успешно обновени.
|
|
1228
1224
|
newsletters_opt_in_mailer:
|
|
1229
1225
|
notify:
|
|
1230
|
-
body_1: Обработката на личните данни и тяхната защита стават все по-важни за всички нас. С новия Общ регламент за защита на данните (GDPR) от 25 май 2018 г. лицата имат по-добър контрол върху личните си данни. Поради тази причина се нуждаем от вашето съгласие, за да продължим да изпращаме подходяща информация за дейностите на %{organization_name}.
|
|
1231
1226
|
body_2: 'Как можете да ни дадете своето съгласие? Просто щракнете върху следния бутон:'
|
|
1232
1227
|
body_3: С това съгласие ще продължите да получавате информация за дейностите в платформата. Ако не получим потвърждение от Ваша страна, ще спрем да ви изпращаме нашите съобщения. Дори да потвърдите, че желаете да бъдете информирани, винаги ще имате възможност да се откажете по всяко време.
|
|
1233
1228
|
button: Да, желая да продължа да получавам подбрана информация
|