decidim-core 0.29.0.rc4 → 0.29.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/cells/decidim/address/online.erb +2 -2
- data/app/cells/decidim/address_cell.rb +4 -0
- data/app/cells/decidim/nav_links/show.erb +3 -3
- data/app/cells/decidim/resource_types_filter/show.erb +11 -12
- data/app/controllers/concerns/decidim/paginable.rb +1 -1
- data/app/helpers/decidim/menu_helper.rb +1 -1
- data/app/helpers/decidim/paginate_helper.rb +3 -5
- data/app/models/decidim/component.rb +4 -1
- data/app/packs/src/decidim/a11y.js +11 -15
- data/app/packs/src/decidim/attachments/file_or_link_tabs.js +7 -3
- data/app/packs/src/decidim/input_character_counter.js +1 -1
- data/app/packs/stylesheets/decidim/_dropdown.scss +9 -9
- data/app/packs/stylesheets/decidim/_forms.scss +4 -4
- data/app/packs/stylesheets/decidim/_tooltip.scss +10 -10
- data/app/packs/stylesheets/decidim/editor.scss +1 -1
- data/app/presenters/decidim/menu_item_presenter.rb +1 -1
- data/app/services/decidim/open_data_exporter.rb +8 -7
- data/app/views/decidim/pages/_tabbed.html.erb +3 -3
- data/app/views/decidim/shared/_filters.html.erb +5 -5
- data/app/views/decidim/shared/_orders.html.erb +3 -2
- data/app/views/decidim/shared/filters/_check_boxes_tree.html.erb +1 -1
- data/app/views/decidim/shared/filters/_collection.html.erb +1 -1
- data/app/views/layouts/decidim/shared/_layout_user_profile.html.erb +2 -2
- data/config/locales/ca.yml +3 -3
- data/config/locales/cs.yml +14 -0
- data/config/locales/fi-plain.yml +3 -3
- data/config/locales/fi.yml +28 -28
- data/config/locales/sv.yml +72 -64
- data/db/migrate/20181025082245_add_timestamps_to_components.rb +5 -1
- data/lib/decidim/core/test/shared_examples/follows_examples.rb +8 -3
- data/lib/decidim/core/test/shared_examples/paginated_resource_examples.rb +5 -5
- data/lib/decidim/core/version.rb +1 -1
- data/lib/tasks/upgrade/decidim_fix_categorization.rake +100 -0
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 37f39b870aa9a840fbf4c415858b3210d520511f8efb0327bb90e8aa0126f243
|
4
|
+
data.tar.gz: 16fa93602fc35d288ddeef831f50f3e3878714ea4fae6547064c9be0a148fad0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0ae69c163d580612c4a8f4f4cf8d9c460aebc24270a67f4a245d25f4fceb2988075664aab8f97977ae19b75d90c42e1cdb03ad2591bd546c5acf9f8562d5852f
|
7
|
+
data.tar.gz: 23132fff12f59d0bb72b073e6729ccb5f439f5c59493d8a3f8f7026dbb45cf20e56f1cac34b07bc8a2d10e757b4cd6efe60bc93180f22d2a4764db597913a1b6
|
@@ -5,8 +5,8 @@
|
|
5
5
|
<div class="address">
|
6
6
|
<div class="address__location"><%= t(model.type_of_meeting, scope: "decidim.meetings.meetings.filters.type_values") %></div>
|
7
7
|
<% if display_online_meeting_url? %>
|
8
|
-
<a href="<%=
|
9
|
-
<%=
|
8
|
+
<a href="<%= online_meeting_url %>" target="_blank" rel="noopener noreferrer" class="address__hints underline break-all">
|
9
|
+
<%= online_meeting_url %>
|
10
10
|
<% end %>
|
11
11
|
</a>
|
12
12
|
</div>
|
@@ -43,6 +43,10 @@ module Decidim
|
|
43
43
|
HTML
|
44
44
|
end
|
45
45
|
|
46
|
+
def online_meeting_url
|
47
|
+
URI::Parser.new.escape(model.online_meeting_url)
|
48
|
+
end
|
49
|
+
|
46
50
|
def display_online_meeting_url?
|
47
51
|
return true unless model.respond_to?(:online?)
|
48
52
|
return true unless model.respond_to?(:iframe_access_level_allowed_for_user?)
|
@@ -1,12 +1,12 @@
|
|
1
1
|
<div class="participatory-space__nav-container">
|
2
|
-
<button id="dropdown-trigger-participatory-space" data-component="dropdown" data-target="dropdown-menu-participatory-space" data-auto-close="true" data-scroll-to-menu="true">
|
2
|
+
<button id="dropdown-trigger-participatory-space" data-component="dropdown" data-target="dropdown-menu-participatory-space" data-auto-close="true" data-scroll-to-menu="true" data-open-md="true">
|
3
3
|
<span><%= t("decidim.searches.filters.jump_to") %></span>
|
4
4
|
<%= icon "arrow-down-s-line" %>
|
5
5
|
<%= icon "arrow-up-s-line" %>
|
6
6
|
</button>
|
7
|
-
<ul id="dropdown-menu-participatory-space" class="participatory-space__nav"
|
7
|
+
<ul id="dropdown-menu-participatory-space" class="participatory-space__nav">
|
8
8
|
<% model.each do |item| %>
|
9
|
-
<li>
|
9
|
+
<li role="menuitem">
|
10
10
|
<%= link_to item[:url], class: "participatory-space__nav-item" do %>
|
11
11
|
<%= item[:name] %>
|
12
12
|
<%= icon "arrow-right-line" %>
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<div id="<%= id %>" class="filter-container">
|
2
|
-
<button id="dropdown-trigger-resource" data-component="dropdown" data-target="dropdown-menu-resource" data-
|
2
|
+
<button id="dropdown-trigger-resource" data-component="dropdown" data-target="dropdown-menu-resource" data-open-md="true">
|
3
3
|
<% resource_types.each do |resource_type| %>
|
4
4
|
<span data-value="<%= resource_type[0] %>" class="<%= "is-active" if filter_param == resource_type[0] %>">
|
5
5
|
<%= text_with_resource_icon(*resource_type) %>
|
@@ -8,15 +8,14 @@
|
|
8
8
|
<%= icon "arrow-down-s-line" %>
|
9
9
|
<%= icon "arrow-up-s-line" %>
|
10
10
|
</button>
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
<% end %>
|
11
|
+
<ul id="dropdown-menu-resource">
|
12
|
+
<% resource_types.each do |resource_type| %>
|
13
|
+
<li role="menuitem">
|
14
|
+
<%= link_to decidim.last_activities_path(filter: { with_resource_type: resource_type[0] } ), class: "filter#{" is-active" if filter_param == resource_type[0]}" do %>
|
15
|
+
<span class="sr-only"><%= resource_type[1] %></span>
|
16
|
+
<%= text_with_resource_icon(*resource_type) %>
|
17
|
+
<% end %>
|
18
|
+
</li>
|
19
|
+
<% end %>
|
20
|
+
</ul>
|
22
21
|
</div>
|
@@ -57,7 +57,7 @@ module Decidim
|
|
57
57
|
self,
|
58
58
|
element_class: "font-semibold underline",
|
59
59
|
active_class: "is-active",
|
60
|
-
container_options: { class: "space-y-4 break-inside-avoid" },
|
60
|
+
container_options: { class: "space-y-4 break-inside-avoid", role: :menu },
|
61
61
|
label: t("layouts.decidim.footer.decidim_title")
|
62
62
|
)
|
63
63
|
end
|
@@ -11,16 +11,14 @@ module Decidim
|
|
11
11
|
def decidim_paginate(collection, paginate_params = {})
|
12
12
|
return if collection.total_pages <= 1
|
13
13
|
|
14
|
+
per_page = (params[:per_page] || paginate_params[:per_page] || Decidim::Paginable::OPTIONS.first).to_i
|
15
|
+
|
14
16
|
content_tag :div, class: "flex flex-col-reverse md:flex-row items-center justify-between gap-1 py-8 md:py-16", data: { pagination: "" } do
|
15
17
|
template = ""
|
16
|
-
template += render(partial: "decidim/shared/results_per_page", formats: [:html]) if collection.total_pages.positive?
|
18
|
+
template += render(partial: "decidim/shared/results_per_page", locals: { per_page: }, formats: [:html]) if collection.total_pages.positive?
|
17
19
|
template += paginate collection, window: 2, outer_window: 1, theme: "decidim", params: paginate_params
|
18
20
|
template.html_safe
|
19
21
|
end
|
20
22
|
end
|
21
|
-
|
22
|
-
def per_page
|
23
|
-
params[:per_page].to_i || Decidim::Paginable::OPTIONS.first
|
24
|
-
end
|
25
23
|
end
|
26
24
|
end
|
@@ -14,7 +14,10 @@ module Decidim
|
|
14
14
|
|
15
15
|
belongs_to :participatory_space, polymorphic: true
|
16
16
|
|
17
|
-
|
17
|
+
scope :registered_component_manifests, -> { where(manifest_name: Decidim.component_registry.manifests.collect(&:name)) }
|
18
|
+
scope :registered_space_manifests, -> { where(participatory_space_type: Decidim.participatory_space_registry.manifests.collect(&:model_class_name)) }
|
19
|
+
|
20
|
+
default_scope { registered_component_manifests.registered_space_manifests.order(arel_table[:weight].asc, arel_table[:manifest_name].asc) }
|
18
21
|
|
19
22
|
delegate :organization, :categories, to: :participatory_space
|
20
23
|
|
@@ -59,7 +59,6 @@ const createDropdown = (component) => {
|
|
59
59
|
const dropdownOptions = {};
|
60
60
|
dropdownOptions.dropdown = component.dataset.target;
|
61
61
|
dropdownOptions.hover = component.dataset.hover === "true";
|
62
|
-
dropdownOptions.isOpen = component.dataset.open === "true";
|
63
62
|
dropdownOptions.autoClose = component.dataset.autoClose === "true";
|
64
63
|
|
65
64
|
// This snippet allows to disable the dropdown based on the current viewport
|
@@ -78,6 +77,17 @@ const createDropdown = (component) => {
|
|
78
77
|
return
|
79
78
|
}
|
80
79
|
|
80
|
+
dropdownOptions.isOpen = component.dataset.open === "true";
|
81
|
+
|
82
|
+
const isOpen = Object.keys(screens).some((key) => {
|
83
|
+
if (!isScreenSize(key)) {
|
84
|
+
return false;
|
85
|
+
}
|
86
|
+
return Boolean(component.dataset[`open-${key}`.replace(/-([a-z])/g, (str) => str[1].toUpperCase())]);
|
87
|
+
});
|
88
|
+
|
89
|
+
dropdownOptions.isOpen = dropdownOptions.isOpen || isOpen;
|
90
|
+
|
81
91
|
if (!component.id) {
|
82
92
|
// when component has no id, we enforce to have it one
|
83
93
|
component.id = `dropdown-${Math.random().toString(36).substring(7)}`
|
@@ -104,20 +114,6 @@ const createDropdown = (component) => {
|
|
104
114
|
});
|
105
115
|
}
|
106
116
|
|
107
|
-
// Disable focus on children elements so we can pass the AXE accessibility tests
|
108
|
-
const dropdownMenu = document.getElementById(dropdownOptions.dropdown);
|
109
|
-
if (dropdownMenu.getAttribute("aria-hidden") === "true") {
|
110
|
-
dropdownMenu.
|
111
|
-
querySelectorAll("a, input, button").
|
112
|
-
forEach((element) => { element.tabIndex = -1 })
|
113
|
-
}
|
114
|
-
|
115
|
-
component.addEventListener("click", () => {
|
116
|
-
dropdownMenu.
|
117
|
-
querySelectorAll("a, input, button").
|
118
|
-
forEach((element) => { element.tabIndex = 0 })
|
119
|
-
})
|
120
|
-
|
121
117
|
Dropdowns.render(component.id, dropdownOptions);
|
122
118
|
}
|
123
119
|
|
@@ -36,10 +36,14 @@ const initializeTabs = (container) => {
|
|
36
36
|
updateTabsState(container);
|
37
37
|
});
|
38
38
|
|
39
|
-
|
40
|
-
|
41
|
-
|
39
|
+
const observer = new MutationObserver((mutationsList) => {
|
40
|
+
mutationsList.forEach((mutation) => {
|
41
|
+
if (mutation.type === "childList") {
|
42
|
+
updateTabsState(container);
|
43
|
+
}
|
44
|
+
});
|
42
45
|
});
|
46
|
+
observer.observe(uploadsContainer, {childList: true, subtree: true});
|
43
47
|
|
44
48
|
updateTabsState(container);
|
45
49
|
};
|
@@ -74,7 +74,7 @@ export default class InputCharacterCounter {
|
|
74
74
|
|
75
75
|
// If input is a hidden for WYSIWYG editor add it at the end
|
76
76
|
if (this.$input.parent().is(".editor")) {
|
77
|
-
this.$input.parent().
|
77
|
+
this.$input.parent().append(container);
|
78
78
|
} else {
|
79
79
|
const wrapper = document.createElement("span")
|
80
80
|
wrapper.className = "input-character-counter"
|
@@ -72,6 +72,15 @@
|
|
72
72
|
.dropdown {
|
73
73
|
@apply absolute border-2 border-gray-3 rounded min-w-max p-4 drop-shadow-md text-left z-10;
|
74
74
|
|
75
|
+
/*
|
76
|
+
NOTE: the calculated value is the sum of the arrow offset position plus the half of the arrow size:
|
77
|
+
- offset position: 20%
|
78
|
+
- arrow size: 1.5rem
|
79
|
+
*/
|
80
|
+
--arrow-offset: 20%;
|
81
|
+
--arrow-size: 1.5rem;
|
82
|
+
--arrow-visible-size: var(--arrow-size) * 0.5;
|
83
|
+
|
75
84
|
& > * {
|
76
85
|
@apply relative z-10 p-3.5 first:pt-1.5 last:pb-1.5;
|
77
86
|
}
|
@@ -90,15 +99,6 @@
|
|
90
99
|
}
|
91
100
|
}
|
92
101
|
|
93
|
-
/*
|
94
|
-
NOTE: the calculated value is the sum of the arrow offset position plus the half of the arrow size:
|
95
|
-
- offset position: 20%
|
96
|
-
- arrow size: 1.5rem
|
97
|
-
*/
|
98
|
-
--arrow-offset: 20%;
|
99
|
-
--arrow-size: 1.5rem;
|
100
|
-
--arrow-visible-size: var(--arrow-size) * 0.5;
|
101
|
-
|
102
102
|
&__bottom {
|
103
103
|
@apply top-full right-0 mt-3 translate-x-[calc(var(--arrow-offset)-var(--arrow-visible-size))] before:content-[''] before:absolute before:right-[var(--arrow-offset)] before:-top-2 before:w-[var(--arrow-size)] before:h-[var(--arrow-size)] before:rotate-45 before:bg-white before:rounded before:border-2 before:border-gray-3 after:content-[''] after:absolute after:left-0 after:top-0 after:w-full after:h-full after:bg-white;
|
104
104
|
}
|
@@ -53,16 +53,16 @@
|
|
53
53
|
}
|
54
54
|
|
55
55
|
select {
|
56
|
-
&:not(.reset-defaults) {
|
57
|
-
@apply pr-8;
|
58
|
-
}
|
59
|
-
|
60
56
|
@apply appearance-none;
|
61
57
|
|
62
58
|
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 12 8'%3e%3cpath fill='%233E4C5C' d='M5.99962 4.97656L10.1246 0.851562L11.303 2.0299L5.99962 7.33323L0.696289 2.0299L1.87462 0.851562L5.99962 4.97656Z'/%3e%3c/svg%3e");
|
63
59
|
background-position: right 1rem center;
|
64
60
|
background-repeat: no-repeat;
|
65
61
|
background-size: 0.75rem;
|
62
|
+
|
63
|
+
&:not(.reset-defaults) {
|
64
|
+
@apply pr-8;
|
65
|
+
}
|
66
66
|
}
|
67
67
|
}
|
68
68
|
|
@@ -1,6 +1,16 @@
|
|
1
1
|
[role="tooltip"] {
|
2
2
|
@apply absolute bg-black z-10 px-4 py-2 w-max max-w-xs rounded text-left text-white;
|
3
3
|
|
4
|
+
/*
|
5
|
+
NOTE: the calculated value is the sum of the arrow offset position plus the half of the arrow size:
|
6
|
+
- offset position: 20%
|
7
|
+
- arrow size: 16px
|
8
|
+
*/
|
9
|
+
--arrow-offset: 20%;
|
10
|
+
--arrow-size: 16px;
|
11
|
+
--arrow-visible-size: var(--arrow-size) * 0.5;
|
12
|
+
--arrow-margin: var(--arrow-visible-size) * 1.4142135623730951; // due to the rotation, the margin is SQRT2 times the visible size
|
13
|
+
|
4
14
|
& > * {
|
5
15
|
@apply relative z-20;
|
6
16
|
}
|
@@ -41,16 +51,6 @@
|
|
41
51
|
}
|
42
52
|
}
|
43
53
|
|
44
|
-
/*
|
45
|
-
NOTE: the calculated value is the sum of the arrow offset position plus the half of the arrow size:
|
46
|
-
- offset position: 20%
|
47
|
-
- arrow size: 16px
|
48
|
-
*/
|
49
|
-
--arrow-offset: 20%;
|
50
|
-
--arrow-size: 16px;
|
51
|
-
--arrow-visible-size: var(--arrow-size) * 0.5;
|
52
|
-
--arrow-margin: var(--arrow-visible-size) * 1.4142135623730951; // due to the rotation, the margin is SQRT2 times the visible size
|
53
|
-
|
54
54
|
&.top {
|
55
55
|
@apply -translate-x-[calc(100%-var(--arrow-offset))] -translate-y-[calc(100%+var(--arrow-margin))] before:content-[''] before:absolute before:-z-10 before:right-[calc(var(--arrow-offset)-var(--arrow-visible-size))] before:-bottom-[var(--arrow-visible-size)] before:w-[var(--arrow-size)] before:h-[var(--arrow-size)] before:rotate-45 before:bg-black before:rounded-br;
|
56
56
|
}
|
@@ -21,7 +21,7 @@
|
|
21
21
|
}
|
22
22
|
|
23
23
|
.editor-container {
|
24
|
-
@apply editor-props editor-suggestions-props flex flex-col
|
24
|
+
@apply editor-props editor-suggestions-props flex flex-col mt-4 border editor-border;
|
25
25
|
|
26
26
|
&.editor-disabled {
|
27
27
|
.editor-input .ProseMirror {
|
@@ -26,7 +26,7 @@ module Decidim
|
|
26
26
|
delegate :content_tag, :safe_join, :link_to, :active_link_to_class, :is_active_link?, :icon, to: :@view
|
27
27
|
|
28
28
|
def render
|
29
|
-
content_tag :li, class: link_wrapper_classes do
|
29
|
+
content_tag :li, role: :menuitem, class: link_wrapper_classes do
|
30
30
|
output = if url == "#"
|
31
31
|
[content_tag(:span, composed_label, class: "sidebar-menu__item-disabled")]
|
32
32
|
else
|
@@ -51,13 +51,14 @@ module Decidim
|
|
51
51
|
headers.push(*exporter.headers)
|
52
52
|
exported = exporter.export
|
53
53
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
54
|
+
tmpdir = Dir::Tmpname.create(export_manifest.name.to_s) do
|
55
|
+
# just get an empty file name
|
56
|
+
end
|
57
|
+
filename = File.join(tmpdir, "#{component.id}.csv")
|
58
|
+
Dir.mkdir(tmpdir)
|
59
|
+
File.write(filename, exported.read)
|
60
|
+
|
61
|
+
collection.push(filename)
|
61
62
|
end
|
62
63
|
end
|
63
64
|
end
|
@@ -11,16 +11,16 @@
|
|
11
11
|
|
12
12
|
<div class="vertical-tabs">
|
13
13
|
<nav>
|
14
|
-
<button id="dropdown-trigger-pages" data-component="dropdown" data-target="dropdown-menu-pages" data-auto-close="true">
|
14
|
+
<button id="dropdown-trigger-pages" data-component="dropdown" data-target="dropdown-menu-pages" data-open-md="true" data-auto-close="true">
|
15
15
|
<span>
|
16
16
|
<%= translated_attribute(page.title) %>
|
17
17
|
</span>
|
18
18
|
<%= icon "arrow-down-s-line" %>
|
19
19
|
<%= icon "arrow-up-s-line" %>
|
20
20
|
</button>
|
21
|
-
<ul id="dropdown-menu-pages" class="vertical-tabs__list"
|
21
|
+
<ul id="dropdown-menu-pages" class="vertical-tabs__list" role="menu">
|
22
22
|
<% pages.each do |sibling| %>
|
23
|
-
<li class="<%= "is-active" if page == sibling %>">
|
23
|
+
<li class="<%= "is-active" if page == sibling %>" role="menuitem">
|
24
24
|
<%= link_to translated_attribute(sibling.title), page_path(sibling.slug) %>
|
25
25
|
</li>
|
26
26
|
<% end %>
|
@@ -4,7 +4,7 @@
|
|
4
4
|
<% if filter_sections.present? || local_assigns.has_key?(:search_variable) %>
|
5
5
|
<%= filter_form_for filter, url_for, class: "new_filter self-stretch", data: { filters: "", component: "accordion" } do |form| %>
|
6
6
|
|
7
|
-
<button id="dropdown-trigger-filters" data-component="dropdown" data-target="dropdown-menu-filters">
|
7
|
+
<button id="dropdown-trigger-filters" data-component="dropdown" data-target="dropdown-menu-filters" data-open-md="true">
|
8
8
|
<%= icon "arrow-down-s-line" %>
|
9
9
|
<%= icon "arrow-up-s-line" %>
|
10
10
|
<span>
|
@@ -12,14 +12,14 @@
|
|
12
12
|
</span>
|
13
13
|
</button>
|
14
14
|
|
15
|
-
<div id="dropdown-menu-filters"
|
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" %>
|
17
|
+
<%= link_to t("skip", scope: "decidim.shared.filter_form_help"), "##{skip_to_id}", class: "filter-skip", role: "menuitem" %>
|
18
18
|
<% end %>
|
19
|
-
<p class="filter-help"><%= t("help", scope: "decidim.shared.filter_form_help") %></p>
|
19
|
+
<p class="filter-help" role="menuitem" aria-disabled="true"><%= t("help", scope: "decidim.shared.filter_form_help") %></p>
|
20
20
|
|
21
21
|
<% if local_assigns.has_key?(:search_variable) %>
|
22
|
-
<div class="filter-search filter-container">
|
22
|
+
<div class="filter-search filter-container" role="menuitem">
|
23
23
|
<%= form.search_field search_variable,
|
24
24
|
label: false,
|
25
25
|
placeholder: search_label,
|
@@ -1,13 +1,14 @@
|
|
1
|
-
<button class="order-by__button" id="dropdown-trigger-order" data-component="dropdown" data-target="dropdown-menu-order" data-open="
|
1
|
+
<button class="order-by__button" id="dropdown-trigger-order" data-component="dropdown" data-target="dropdown-menu-order" data-open-md="true">
|
2
2
|
<%= icon "arrow-down-s-line" %>
|
3
3
|
<%= icon "arrow-up-s-line" %>
|
4
4
|
<span><%= t("#{i18n_scope}.label") %></span>
|
5
5
|
</button>
|
6
|
-
<div id="dropdown-menu-order" class="order-by"
|
6
|
+
<div id="dropdown-menu-order" class="order-by">
|
7
7
|
<% orders.each do |order_name| %>
|
8
8
|
<%= order_link order_name,
|
9
9
|
i18n_scope:,
|
10
10
|
title: t("#{i18n_scope}.label"),
|
11
|
+
role: :menuitem,
|
11
12
|
class: "button button__sm button__text-secondary #{order_name == order ? "underline font-bold" : "font-normal"}" %>
|
12
13
|
<% end %>
|
13
14
|
</div>
|
@@ -10,12 +10,12 @@
|
|
10
10
|
|
11
11
|
<div class="vertical-tabs">
|
12
12
|
<nav aria-label="menu-vertical">
|
13
|
-
<button id="dropdown-trigger-profile" data-component="dropdown" data-target="dropdown-menu-profile">
|
13
|
+
<button id="dropdown-trigger-profile" data-open-md="true" data-component="dropdown" data-target="dropdown-menu-profile">
|
14
14
|
<span><%= user_menu.active_item&.label || t("decidim.searches.filters.jump_to") %></span>
|
15
15
|
<%= icon "arrow-down-s-line" %>
|
16
16
|
<%= icon "arrow-up-s-line" %>
|
17
17
|
</button>
|
18
|
-
<ul id="dropdown-menu-profile" class="vertical-tabs__list"
|
18
|
+
<ul id="dropdown-menu-profile" class="vertical-tabs__list">
|
19
19
|
<%= user_menu.render %>
|
20
20
|
</ul>
|
21
21
|
</nav>
|
data/config/locales/ca.yml
CHANGED
@@ -532,8 +532,8 @@ ca:
|
|
532
532
|
html_content: Contingut HTML
|
533
533
|
name: Bloc HTML
|
534
534
|
last_activity:
|
535
|
-
name:
|
536
|
-
title:
|
535
|
+
name: Darrera activitat
|
536
|
+
title: Darrera activitat
|
537
537
|
view_all: Veure-ho tot
|
538
538
|
last_activity_settings_form:
|
539
539
|
max_last_activity_users: Número màxim d'avatars de participants amb activitat recent a mostrar
|
@@ -1049,7 +1049,7 @@ ca:
|
|
1049
1049
|
last_activities:
|
1050
1050
|
all: Tots els tipus d'activitats
|
1051
1051
|
index:
|
1052
|
-
last_activity:
|
1052
|
+
last_activity: Darrera activitat
|
1053
1053
|
name: Darreres activitats
|
1054
1054
|
no_activities_warning: No hi ha res a mostrar per a aquest tipus d'activitat.
|
1055
1055
|
linked_resource_from:
|
data/config/locales/cs.yml
CHANGED
@@ -383,6 +383,7 @@ cs:
|
|
383
383
|
wizard_step_form:
|
384
384
|
steps:
|
385
385
|
'1': Vytvořte svůj pozměňovací návrh
|
386
|
+
'2': Publikovat svůj pozměňovací návrh
|
386
387
|
anonymous_user: Anonymní
|
387
388
|
application:
|
388
389
|
document:
|
@@ -618,6 +619,7 @@ cs:
|
|
618
619
|
complete_profile: Dokončit profil
|
619
620
|
nickname_help: Váš alias v %{organization}. Může obsahovat pouze písmena, číslice, '-' a '_'.
|
620
621
|
sign_up: Prosím, vyplňte svůj profil
|
622
|
+
subtitle: Vyplňte prosím následující formulář pro dokončení vytvoření účtu
|
621
623
|
username_help: Veřejné jméno, které se zobrazí ve vašich příspěvcích. S cílem zaručit anonymitu může být jakékoliv jméno.
|
622
624
|
registrations:
|
623
625
|
create:
|
@@ -627,6 +629,8 @@ cs:
|
|
627
629
|
log_in: Přihlásit
|
628
630
|
newsletter: Chci dostávat příležitostný zpravodaj s relevantními informacemi
|
629
631
|
newsletter_title: Povolení kontaktu
|
632
|
+
sign_up: Vytvořit účet
|
633
|
+
subtitle: Pro účast na platformě vytvořte účet.
|
630
634
|
terms: podmínky poskytování služeb
|
631
635
|
tos_agreement: Přihlášením souhlasíte s %{link}.
|
632
636
|
tos_title: Smluvní podmínky
|
@@ -636,6 +640,7 @@ cs:
|
|
636
640
|
are_you_new?: Jste na platformě poprvé?
|
637
641
|
register: Vytvořit účet
|
638
642
|
sign_in_disabled: Můžete přistupovat pomocí externího účtu.
|
643
|
+
sign_up_disabled: Vytvoření účtu je zakázáno, pro přístup můžete použít existující účet.
|
639
644
|
user:
|
640
645
|
timed_out: Byli jste neaktivní příliš dlouho a byli jste automaticky odhlášeni ze služby. Pokud chcete pokračovat v používání služby, přihlaste se prosím znovu.
|
641
646
|
shared:
|
@@ -913,10 +918,16 @@ cs:
|
|
913
918
|
create:
|
914
919
|
button: Sledovat
|
915
920
|
error: Při sledování tohoto zdroje došlo k chybě.
|
921
|
+
participatory_space: Sleduje <span>%{resource_name}</span>
|
916
922
|
destroy:
|
917
923
|
button: Ukončit sledování
|
918
924
|
error: Při sledování tohoto zdroje došlo k chybě.
|
919
925
|
forms:
|
926
|
+
attachment_link:
|
927
|
+
explanation: Pokyny pro odkazy na přílohy
|
928
|
+
help_messages:
|
929
|
+
- Akceptovány jsou pouze správné formáty URL.
|
930
|
+
- Vezměte prosím na vědomí, že odkazy musí být veřejné, aby k nim měli přístup všichni účastníci.
|
920
931
|
errors:
|
921
932
|
decidim/user:
|
922
933
|
password: Heslo je příliš krátké.
|
@@ -1272,9 +1283,11 @@ cs:
|
|
1272
1283
|
same_language: Obsah byl zveřejněn ve vašem preferovaném jazyce (%{language}), proto se v tomto e-mailu nezobrazuje automatický překlad.
|
1273
1284
|
translated_text: 'Automaticky přeložený text:'
|
1274
1285
|
notifications:
|
1286
|
+
action_error: Při aktualizaci oznámení došlo k chybě.
|
1275
1287
|
no_notifications: Zatím žádné oznámení.
|
1276
1288
|
show:
|
1277
1289
|
missing_event: Jejda, toto oznámení patří k položce, která již není k dispozici. Můžete ho zahodit.
|
1290
|
+
moderated: Obsah upraven
|
1278
1291
|
notifications_digest_mailer:
|
1279
1292
|
header:
|
1280
1293
|
daily: Denní výběr oznámení
|
@@ -1882,6 +1895,7 @@ cs:
|
|
1882
1895
|
long_words: obsahuje slova, která jsou příliš dlouhá (přes 35 znaků)
|
1883
1896
|
must_start_with_caps: musí začínat velkým písmenem
|
1884
1897
|
nesting_too_deep: nemůže být uvnitř podkategorie
|
1898
|
+
not_found: se nepodařilo najít. Vytvořili jste si účet již dříve?
|
1885
1899
|
not_locked: nebyl uzamčen
|
1886
1900
|
not_saved:
|
1887
1901
|
one: 'Při zpracování vašeho požadavku došlo k chybě:'
|
data/config/locales/fi-plain.yml
CHANGED
@@ -1287,7 +1287,7 @@ fi-pl:
|
|
1287
1287
|
name: Offline
|
1288
1288
|
show:
|
1289
1289
|
message_1: Verkkoyhteytesi näyttää olevan poissa käytöstä tällä hetkellä.
|
1290
|
-
message_2: Yritä myöhemmin
|
1290
|
+
message_2: Yritä myöhemmin uudestaan.
|
1291
1291
|
retry: Yritä uudestaan
|
1292
1292
|
open_data:
|
1293
1293
|
not_available_yet: Avoimet datatiedostot eivät ole vielä käytettävissä, yritä uudelleen muutaman minuutin kuluttua.
|
@@ -1384,7 +1384,7 @@ fi-pl:
|
|
1384
1384
|
manage_user_group_admins: Hallinnoi ylläpitäjiä
|
1385
1385
|
manage_user_group_users: Hallinnoi jäseniä
|
1386
1386
|
message: Viesti
|
1387
|
-
resend_email_confirmation_instructions: Lähetä sähköpostin vahvistusohjeet
|
1387
|
+
resend_email_confirmation_instructions: Lähetä sähköpostin vahvistusohjeet uudestaan
|
1388
1388
|
confirmation_instructions_sent: Sähköpostivahvistuksen ohjeet lähetetty.
|
1389
1389
|
create_user_group: Luo ryhmä
|
1390
1390
|
edit_profile: Muokkaa profiilia
|
@@ -1837,7 +1837,7 @@ fi-pl:
|
|
1837
1837
|
errors:
|
1838
1838
|
messages:
|
1839
1839
|
allowed_file_content_types: 'ainoastaan seuraavat tiedostomuodot on sallittu: %{types}'
|
1840
|
-
already_confirmed: on jo vahvistettu, yritä kirjautua sisään
|
1840
|
+
already_confirmed: on jo vahvistettu, yritä kirjautua sisään uudestaan
|
1841
1841
|
blank: ei voi olla tyhjä
|
1842
1842
|
cannot_be_blank: ei voi olla tyhjä
|
1843
1843
|
confirmation: ei täsmää kentän %{attribute} kanssa
|