decidim-core 0.29.0.rc4 → 0.29.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/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
|