decidim-core 0.31.2 → 0.31.4
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/content_blocks/highlighted_elements_with_cell_for_list_cell.rb +5 -1
- data/app/cells/decidim/nav_links/show.erb +3 -3
- data/app/cells/decidim/participatory_space_private_user/show.erb +6 -6
- data/app/cells/decidim/participatory_space_private_user_cell.rb +0 -4
- data/app/cells/decidim/report_button/already_reported_modal.erb +1 -1
- data/app/cells/decidim/report_button/flag_modal.erb +1 -1
- data/app/cells/decidim/report_user_button/already_reported_modal.erb +1 -1
- data/app/cells/decidim/report_user_button/flag_modal.erb +1 -1
- data/app/cells/decidim/share_text_widget/modal.erb +1 -1
- data/app/cells/decidim/upload_modal/files.erb +5 -1
- data/app/cells/decidim/upload_modal_cell.rb +10 -1
- data/app/commands/decidim/multiple_attachments_methods.rb +20 -3
- data/app/helpers/decidim/mailer_helper.rb +36 -0
- data/app/helpers/decidim/menu_helper.rb +2 -1
- data/app/helpers/decidim/newsletters_helper.rb +4 -22
- data/app/jobs/decidim/find_and_update_descendants_job.rb +8 -2
- data/app/jobs/decidim/update_search_indexes_job.rb +2 -2
- data/app/mailers/decidim/application_mailer.rb +4 -0
- data/app/packs/src/decidim/a11y.js +29 -0
- data/app/packs/src/decidim/a11y.test.js +81 -0
- data/app/packs/src/decidim/confirm.js +8 -1
- data/app/packs/src/decidim/confirm.test.js +225 -0
- data/app/packs/src/decidim/controllers/accordion/accordion.test.js +118 -0
- data/app/packs/src/decidim/controllers/accordion/controller.js +24 -0
- data/app/packs/src/decidim/controllers/dropdown/controller.js +26 -0
- data/app/packs/src/decidim/controllers/dropdown/dropdown.test.js +187 -0
- data/app/packs/src/decidim/controllers/form_validator/form_validator.js +3 -2
- data/app/packs/src/decidim/controllers/form_validator/form_validator.test.js +5 -0
- data/app/packs/src/decidim/controllers/language_change/controller.js +1 -0
- data/app/packs/src/decidim/controllers/language_change/language_change.test.js +13 -0
- data/app/packs/src/decidim/datepicker/datepicker_functions.js +26 -0
- data/app/packs/src/decidim/datepicker/generate_datepicker.js +2 -1
- data/app/packs/src/decidim/datepicker/generate_timepicker.js +3 -2
- data/app/packs/src/decidim/datepicker/test/datepicker_functions_adjust_picker_position.test.js +234 -0
- data/app/packs/src/decidim/editor/extensions/image/index.js +49 -11
- data/app/packs/src/decidim/editor/extensions/image/node_view.js +9 -1
- data/app/packs/src/decidim/editor/extensions/link/bubble_menu.js +34 -6
- data/app/packs/src/decidim/editor/extensions/link/index.js +45 -12
- data/app/packs/src/decidim/editor/test/extensions/image_links.test.js +161 -0
- data/app/packs/src/decidim/refactor/moved/focus_guard.js +4 -4
- data/app/packs/stylesheets/decidim/_cards.scss +12 -4
- data/app/packs/stylesheets/decidim/_flash.scss +1 -1
- data/app/packs/stylesheets/decidim/_rich_text.scss +17 -0
- data/app/packs/stylesheets/decidim/editor.scss +10 -0
- data/app/presenters/decidim/menu_item_presenter.rb +7 -1
- data/app/views/decidim/devise/invitations/edit.html.erb +3 -3
- data/app/views/decidim/devise/registrations/new.html.erb +1 -0
- data/app/views/decidim/devise/shared/_tos_fields.html.erb +3 -3
- data/app/views/decidim/notification_mailer/event_received.html.erb +3 -3
- 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/filters/_check_boxes_tree.html.erb +1 -1
- data/app/views/decidim/shared/filters/_collection.html.erb +1 -1
- data/config/initializers/devise.rb +6 -0
- data/config/locales/ar.yml +3 -3
- data/config/locales/bg.yml +0 -4
- data/config/locales/ca-IT.yml +7 -6
- data/config/locales/ca.yml +7 -6
- data/config/locales/cs.yml +5 -8
- data/config/locales/de.yml +31 -8
- data/config/locales/el.yml +0 -2
- data/config/locales/en.yml +5 -4
- data/config/locales/es-MX.yml +10 -9
- data/config/locales/es-PY.yml +10 -9
- data/config/locales/es.yml +12 -11
- data/config/locales/eu.yml +7 -5
- data/config/locales/fi-plain.yml +10 -4
- data/config/locales/fi.yml +11 -5
- data/config/locales/fr-CA.yml +7 -5
- data/config/locales/fr.yml +8 -7
- data/config/locales/gl.yml +0 -2
- data/config/locales/hu.yml +4 -8
- data/config/locales/id-ID.yml +0 -2
- data/config/locales/it.yml +1 -3
- data/config/locales/ja.yml +7 -8
- data/config/locales/lb.yml +0 -2
- data/config/locales/lt.yml +1 -3
- data/config/locales/lv.yml +0 -2
- data/config/locales/nl.yml +0 -2
- data/config/locales/no.yml +0 -2
- data/config/locales/pl.yml +0 -4
- data/config/locales/pt-BR.yml +4 -5
- data/config/locales/pt.yml +0 -2
- data/config/locales/ro-RO.yml +1 -5
- data/config/locales/ru.yml +0 -2
- data/config/locales/sk.yml +0 -4
- data/config/locales/sv.yml +8 -7
- data/config/locales/tr-TR.yml +17 -5
- data/config/locales/zh-CN.yml +0 -2
- data/config/locales/zh-TW.yml +1 -3
- data/lib/decidim/assets/tailwind/tailwind.config.js.erb +1 -1
- data/lib/decidim/content_parsers/blob_parser.rb +3 -3
- data/lib/decidim/content_renderers/blob_renderer.rb +2 -2
- data/lib/decidim/core/test/shared_examples/participatory_space_members_shared_examples.rb +121 -0
- data/lib/decidim/core/version.rb +1 -1
- data/lib/decidim/form_builder.rb +58 -36
- data/lib/decidim/maintenance/taxonomy_importer.rb +1 -1
- data/lib/decidim/participatory_space_user.rb +1 -1
- data/lib/decidim/searchable.rb +4 -4
- metadata +14 -6
|
@@ -18,8 +18,8 @@ module Decidim
|
|
|
18
18
|
#
|
|
19
19
|
# @see BaseRenderer Examples of how to use a content renderer
|
|
20
20
|
class BlobRenderer < BaseRenderer
|
|
21
|
-
# Matches a global id representing a
|
|
22
|
-
GLOBAL_ID_REGEX = %r{(gid://[\w-]+/ActiveStorage::Blob/\d+)(/([\w=-]+))?}
|
|
21
|
+
# Matches a global id representing an ActiveStorage::Blob (optionally with a variant key)
|
|
22
|
+
GLOBAL_ID_REGEX = %r{(gid://[\w-]+/ActiveStorage::Blob/\d+)(/([\w=-]+))?(?:[^\s"'<>]*)}
|
|
23
23
|
|
|
24
24
|
# Replaces found Global IDs matching an existing blob with a URL to
|
|
25
25
|
# that blob. The Global IDs representing an invalid ActiveStorage::Blob
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
shared_examples "participatory space members" do
|
|
4
|
+
let(:blocks_manifests) { [] }
|
|
5
|
+
let(:organization) { create(:organization) }
|
|
6
|
+
let(:user) { create(:user, organization: participatory_space.organization) }
|
|
7
|
+
let(:unpublished_user) { create(:user, organization: participatory_space.organization) }
|
|
8
|
+
|
|
9
|
+
before do
|
|
10
|
+
switch_to_host(organization.host)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
context "when there are no members and directly accessing from URL" do
|
|
14
|
+
it_behaves_like "a 404 page" do
|
|
15
|
+
let(:target_path) { members_path }
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
context "when there are no members and accessing from the space homepage" do
|
|
20
|
+
context "and the main data content block is disabled" do
|
|
21
|
+
it "the menu nav is not shown" do
|
|
22
|
+
visit participatory_space_homepage_path
|
|
23
|
+
|
|
24
|
+
expect(page).to have_no_css(".participatory-space__nav-container")
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
context "and the main data content block is enabled" do
|
|
29
|
+
let(:blocks_manifests) { ["main_data"] }
|
|
30
|
+
|
|
31
|
+
it "the menu link is not shown" do
|
|
32
|
+
visit participatory_space_homepage_path
|
|
33
|
+
|
|
34
|
+
expect(page).to have_no_content("Members")
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
context "when the participatory space does not exist" do
|
|
40
|
+
it_behaves_like "a 404 page" do
|
|
41
|
+
let(:target_path) { unexisting_participatory_space_members_path }
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
context "when there are some members and all are unpublished" do
|
|
46
|
+
before do
|
|
47
|
+
create(:member, user:, participatory_space:, published: false)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
context "and directly accessing from URL" do
|
|
51
|
+
it_behaves_like "a 404 page" do
|
|
52
|
+
let(:target_path) { members_path }
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
context "and accessing from the homepage" do
|
|
57
|
+
context "and the main data content block is disabled" do
|
|
58
|
+
it "the menu nav is not shown" do
|
|
59
|
+
visit participatory_space_homepage_path
|
|
60
|
+
|
|
61
|
+
expect(page).to have_no_css(".participatory-space__nav-container")
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
context "and the main data content block is enabled" do
|
|
66
|
+
let(:blocks_manifests) { ["main_data"] }
|
|
67
|
+
|
|
68
|
+
it "the menu link is not shown" do
|
|
69
|
+
visit participatory_space_homepage_path
|
|
70
|
+
|
|
71
|
+
expect(page).to have_no_content("Members")
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
context "when there are some published members" do
|
|
78
|
+
let!(:member) { create(:member, user:, participatory_space:, published: true) }
|
|
79
|
+
let!(:unpublished_member) { create(:member, user: unpublished_user, participatory_space:, published: false) }
|
|
80
|
+
|
|
81
|
+
before do
|
|
82
|
+
visit members_path
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
context "and accessing from the space homepage" do
|
|
86
|
+
context "and the main data content block is disabled" do
|
|
87
|
+
it "the menu nav is not shown" do
|
|
88
|
+
visit participatory_space_homepage_path
|
|
89
|
+
|
|
90
|
+
expect(page).to have_no_css(".participatory-space__nav-container")
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
context "and the main data content block is enabled" do
|
|
95
|
+
let(:blocks_manifests) { ["main_data"] }
|
|
96
|
+
|
|
97
|
+
it "the menu link is shown" do
|
|
98
|
+
visit participatory_space_homepage_path
|
|
99
|
+
|
|
100
|
+
within ".participatory-space__nav-container" do
|
|
101
|
+
expect(page).to have_content("Members")
|
|
102
|
+
click_on "Members"
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
expect(page).to have_current_path members_path
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
it "lists all the members" do
|
|
110
|
+
within ".layout-main__section" do
|
|
111
|
+
expect(page).to have_css(".profile__user", count: 1)
|
|
112
|
+
expect(page).to have_no_content(Decidim::ParticipatorySpace::MemberPresenter.new(unpublished_member).name)
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
click_on(member.name)
|
|
116
|
+
|
|
117
|
+
expect(page).to have_content("Profile")
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
end
|
data/lib/decidim/core/version.rb
CHANGED
data/lib/decidim/form_builder.rb
CHANGED
|
@@ -45,14 +45,6 @@ module Decidim
|
|
|
45
45
|
end
|
|
46
46
|
# rubocop:enable Metrics/ParameterLists
|
|
47
47
|
|
|
48
|
-
def create_language_selector(locales, tabs_id, name)
|
|
49
|
-
if locales.count > 4
|
|
50
|
-
language_selector_select(locales, tabs_id, name)
|
|
51
|
-
else
|
|
52
|
-
language_tabs(locales, tabs_id, name)
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
|
|
56
48
|
# Public: Generates a form field for each locale.
|
|
57
49
|
#
|
|
58
50
|
# type - The form field's type, like `text_area` or `text_field`
|
|
@@ -65,23 +57,11 @@ module Decidim
|
|
|
65
57
|
|
|
66
58
|
tabs_id = sanitize_tabs_selector(options[:tabs_id] || "#{object_name}-#{name}-tabs")
|
|
67
59
|
|
|
68
|
-
|
|
69
|
-
field_label = label_i18n(name, options[:label] || label_for(name), required: options[:required])
|
|
60
|
+
error_on_locale = locales.find { |locale| error?(name_with_locale(name, locale)) }
|
|
70
61
|
|
|
71
|
-
|
|
72
|
-
language_selector = create_language_selector(locales, tabs_id, name) if options[:label] != false
|
|
62
|
+
label_tabs = translated_labels(name, options, tabs_id, error_on_locale)
|
|
73
63
|
|
|
74
|
-
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
tabs_content = content_tag(:div, class: "tabs-content", data: { tabs_content: tabs_id }) do
|
|
78
|
-
locales.each_with_index.inject("".html_safe) do |string, (locale, index)|
|
|
79
|
-
tab_content_id = "#{tabs_id}-#{name}-panel-#{index}"
|
|
80
|
-
string + content_tag(:div, class: tab_element_class_for("panel", index), id: tab_content_id, "aria-hidden": tab_attr_aria_hidden_for(index)) do
|
|
81
|
-
send(type, name_with_locale(name, locale), options.merge(label: false))
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
end
|
|
64
|
+
tabs_content = translated_tabs(type, name, options, tabs_id, error_on_locale)
|
|
85
65
|
|
|
86
66
|
safe_join [label_tabs, tabs_content]
|
|
87
67
|
end
|
|
@@ -452,6 +432,44 @@ module Decidim
|
|
|
452
432
|
|
|
453
433
|
private
|
|
454
434
|
|
|
435
|
+
def translated_tabs(type, name, options, tabs_id, error_on_locale = nil)
|
|
436
|
+
content_tag(:div, class: "tabs-content", data: { tabs_content: tabs_id }) do
|
|
437
|
+
locales.each_with_index.inject("".html_safe) do |string, (locale, index)|
|
|
438
|
+
tab_content_id = sanitize_tabs_selector "#{tabs_id}-#{name}-panel-#{index}"
|
|
439
|
+
|
|
440
|
+
aria_hidden = (error_on_locale.present? ? !locale.eql?(error_on_locale) : index.positive?).to_s
|
|
441
|
+
css_class = if error_on_locale.present?
|
|
442
|
+
tab_element_class_for("panel", locale.eql?(error_on_locale) ? 0 : 1)
|
|
443
|
+
else
|
|
444
|
+
tab_element_class_for("panel", index)
|
|
445
|
+
end
|
|
446
|
+
|
|
447
|
+
string + content_tag(:div, class: css_class, id: tab_content_id, "aria-hidden": aria_hidden) do
|
|
448
|
+
send(type, name_with_locale(name, locale), options.merge(label: false))
|
|
449
|
+
end
|
|
450
|
+
end
|
|
451
|
+
end
|
|
452
|
+
end
|
|
453
|
+
|
|
454
|
+
def create_language_selector(locales, tabs_id, name, error_on_locale = nil)
|
|
455
|
+
if locales.count > 4
|
|
456
|
+
language_selector_select(locales, tabs_id, name, error_on_locale)
|
|
457
|
+
else
|
|
458
|
+
language_tabs(locales, tabs_id, name, error_on_locale)
|
|
459
|
+
end
|
|
460
|
+
end
|
|
461
|
+
|
|
462
|
+
def translated_labels(name, options, tabs_id, error_on_locale = nil)
|
|
463
|
+
content_tag(:div, class: "label--tabs") do
|
|
464
|
+
field_label = label_i18n(name, options[:label] || label_for(name), required: options[:required])
|
|
465
|
+
|
|
466
|
+
language_selector = "".html_safe
|
|
467
|
+
language_selector = create_language_selector(locales, tabs_id, name, error_on_locale) if options[:label] != false
|
|
468
|
+
|
|
469
|
+
safe_join [field_label, language_selector]
|
|
470
|
+
end
|
|
471
|
+
end
|
|
472
|
+
|
|
455
473
|
def editor_hidden_options(name, options)
|
|
456
474
|
hidden_options = extract_validations(name, options).merge(options)
|
|
457
475
|
if hidden_options[:minlength] || hidden_options[:maxlength]
|
|
@@ -682,9 +700,7 @@ module Decidim
|
|
|
682
700
|
end
|
|
683
701
|
|
|
684
702
|
def tab_attr_aria_hidden_for(index)
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
"true"
|
|
703
|
+
index.positive?.to_s
|
|
688
704
|
end
|
|
689
705
|
|
|
690
706
|
def locales
|
|
@@ -799,29 +815,35 @@ module Decidim
|
|
|
799
815
|
class: "columns")
|
|
800
816
|
end
|
|
801
817
|
|
|
802
|
-
|
|
818
|
+
# i18n-tasks-use t('locale.name_with_error')
|
|
819
|
+
# i18n-tasks-use t('locale.name')
|
|
820
|
+
def language_selector_select(locales, tabs_id, name, error_on_locale = nil)
|
|
803
821
|
content_tag(:div) do
|
|
804
822
|
content_tag(:select, id: tabs_id, class: "language-change", data: { controller: "language-change" }) do
|
|
805
823
|
locales.each_with_index.inject("".html_safe) do |string, (locale, index)|
|
|
806
|
-
title =
|
|
807
|
-
|
|
808
|
-
else
|
|
809
|
-
I18n.with_locale(locale) { I18n.t("name", scope: "locale") }
|
|
810
|
-
end
|
|
824
|
+
title = locale.eql?(error_on_locale) ? "name_with_error" : "name"
|
|
825
|
+
title = I18n.with_locale(locale) { I18n.t(title, scope: "locale") }
|
|
811
826
|
tab_content_id = sanitize_tabs_selector "#{tabs_id}-#{name}-panel-#{index}"
|
|
812
|
-
string + content_tag(:option, title, value: "##{tab_content_id}")
|
|
827
|
+
string + content_tag(:option, title, value: "##{tab_content_id}", selected: locale.eql?(error_on_locale))
|
|
813
828
|
end
|
|
814
829
|
end
|
|
815
830
|
end
|
|
816
831
|
end
|
|
817
832
|
|
|
818
|
-
def language_tabs(locales, tabs_id, name)
|
|
833
|
+
def language_tabs(locales, tabs_id, name, error_on_locale = nil)
|
|
819
834
|
content_tag(:ul, class: "tabs tabs--lang", id: tabs_id, data: { tabs: true }) do
|
|
820
835
|
locales.each_with_index.inject("".html_safe) do |string, (locale, index)|
|
|
821
|
-
|
|
836
|
+
display = if error_on_locale.nil?
|
|
837
|
+
index
|
|
838
|
+
else
|
|
839
|
+
locale.eql?(error_on_locale) ? 0 : 1
|
|
840
|
+
end
|
|
841
|
+
|
|
842
|
+
css_class = tab_element_class_for("title", display)
|
|
843
|
+
string + content_tag(:li, class: css_class) do
|
|
822
844
|
title = I18n.with_locale(locale) { I18n.t("name", scope: "locale") }
|
|
823
845
|
element_class = nil
|
|
824
|
-
element_class = "is-tab-error" if
|
|
846
|
+
element_class = "is-tab-error" if locale.eql?(error_on_locale)
|
|
825
847
|
tab_content_id = sanitize_tabs_selector "#{tabs_id}-#{name}-panel-#{index}"
|
|
826
848
|
content_tag(:a, title, href: "##{tab_content_id}", class: element_class)
|
|
827
849
|
end
|
|
@@ -85,7 +85,7 @@ module Decidim
|
|
|
85
85
|
component = GlobalID::Locator.locate(component_id)
|
|
86
86
|
if component
|
|
87
87
|
begin
|
|
88
|
-
component.update!(settings:
|
|
88
|
+
component.update!(settings: component.settings.to_h.merge(taxonomy_filters: [filter.id.to_s]))
|
|
89
89
|
result[:components_assigned][filter.internal_name[organization.default_locale]] ||= []
|
|
90
90
|
result[:components_assigned][filter.internal_name[organization.default_locale]] << component_id
|
|
91
91
|
rescue ActiveRecord::RecordInvalid
|
|
@@ -11,7 +11,7 @@ module Decidim
|
|
|
11
11
|
included do
|
|
12
12
|
validate :user_and_space_same_organization
|
|
13
13
|
|
|
14
|
-
belongs_to :user, foreign_key: "decidim_user_id", class_name: "Decidim::User"
|
|
14
|
+
belongs_to :user, foreign_key: "decidim_user_id", class_name: "Decidim::User"
|
|
15
15
|
|
|
16
16
|
ransacker :name do
|
|
17
17
|
Arel.sql(%{("decidim_users"."name")::text})
|
data/lib/decidim/searchable.rb
CHANGED
|
@@ -101,7 +101,7 @@ module Decidim
|
|
|
101
101
|
|
|
102
102
|
# Public: after_update callback to update index information of the model.
|
|
103
103
|
#
|
|
104
|
-
def try_update_index_for_search_resource
|
|
104
|
+
def try_update_index_for_search_resource(current_depth = 0)
|
|
105
105
|
return unless self.class.searchable_resource?(self)
|
|
106
106
|
|
|
107
107
|
org = self.class.search_resource_fields_mapper.retrieve_organization(self)
|
|
@@ -124,13 +124,13 @@ module Decidim
|
|
|
124
124
|
searchables_in_org.destroy_all
|
|
125
125
|
end
|
|
126
126
|
|
|
127
|
-
find_and_update_descendants
|
|
127
|
+
find_and_update_descendants(current_depth)
|
|
128
128
|
end
|
|
129
129
|
|
|
130
130
|
private
|
|
131
131
|
|
|
132
|
-
def find_and_update_descendants
|
|
133
|
-
Decidim::FindAndUpdateDescendantsJob.perform_later(self)
|
|
132
|
+
def find_and_update_descendants(current_depth = 0)
|
|
133
|
+
Decidim::FindAndUpdateDescendantsJob.perform_later(self, current_depth)
|
|
134
134
|
end
|
|
135
135
|
|
|
136
136
|
def contents_to_searchable_resource_attributes(fields, locale)
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: decidim-core
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.31.
|
|
4
|
+
version: 0.31.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Josep Jaume Rey Peroy
|
|
@@ -10,7 +10,7 @@ authors:
|
|
|
10
10
|
autorequire:
|
|
11
11
|
bindir: bin
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date: 2026-
|
|
13
|
+
date: 2026-04-24 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: concurrent-ruby
|
|
@@ -828,28 +828,28 @@ dependencies:
|
|
|
828
828
|
requirements:
|
|
829
829
|
- - '='
|
|
830
830
|
- !ruby/object:Gem::Version
|
|
831
|
-
version: 0.31.
|
|
831
|
+
version: 0.31.4
|
|
832
832
|
type: :development
|
|
833
833
|
prerelease: false
|
|
834
834
|
version_requirements: !ruby/object:Gem::Requirement
|
|
835
835
|
requirements:
|
|
836
836
|
- - '='
|
|
837
837
|
- !ruby/object:Gem::Version
|
|
838
|
-
version: 0.31.
|
|
838
|
+
version: 0.31.4
|
|
839
839
|
- !ruby/object:Gem::Dependency
|
|
840
840
|
name: decidim-dev
|
|
841
841
|
requirement: !ruby/object:Gem::Requirement
|
|
842
842
|
requirements:
|
|
843
843
|
- - '='
|
|
844
844
|
- !ruby/object:Gem::Version
|
|
845
|
-
version: 0.31.
|
|
845
|
+
version: 0.31.4
|
|
846
846
|
type: :development
|
|
847
847
|
prerelease: false
|
|
848
848
|
version_requirements: !ruby/object:Gem::Requirement
|
|
849
849
|
requirements:
|
|
850
850
|
- - '='
|
|
851
851
|
- !ruby/object:Gem::Version
|
|
852
|
-
version: 0.31.
|
|
852
|
+
version: 0.31.4
|
|
853
853
|
description: Adds core features so other engines can hook into the framework.
|
|
854
854
|
email:
|
|
855
855
|
- josepjaume@gmail.com
|
|
@@ -1368,6 +1368,7 @@ files:
|
|
|
1368
1368
|
- app/helpers/decidim/layout_helper.rb
|
|
1369
1369
|
- app/helpers/decidim/likeable_helper.rb
|
|
1370
1370
|
- app/helpers/decidim/localized_locales_helper.rb
|
|
1371
|
+
- app/helpers/decidim/mailer_helper.rb
|
|
1371
1372
|
- app/helpers/decidim/map_helper.rb
|
|
1372
1373
|
- app/helpers/decidim/markup_helper.rb
|
|
1373
1374
|
- app/helpers/decidim/menu_helper.rb
|
|
@@ -1570,12 +1571,15 @@ files:
|
|
|
1570
1571
|
- app/packs/images/decidim/vendor/social-share-button/x.svg
|
|
1571
1572
|
- app/packs/images/decidim/vendor/social-share-button/xing.svg
|
|
1572
1573
|
- app/packs/src/decidim/a11y.js
|
|
1574
|
+
- app/packs/src/decidim/a11y.test.js
|
|
1573
1575
|
- app/packs/src/decidim/append_redirect_url_to_modals.js
|
|
1574
1576
|
- app/packs/src/decidim/attachments/file_or_link_tabs.js
|
|
1575
1577
|
- app/packs/src/decidim/attachments/index.js
|
|
1576
1578
|
- app/packs/src/decidim/callout.js
|
|
1577
1579
|
- app/packs/src/decidim/confirm.js
|
|
1580
|
+
- app/packs/src/decidim/confirm.test.js
|
|
1578
1581
|
- app/packs/src/decidim/controllers/.keep
|
|
1582
|
+
- app/packs/src/decidim/controllers/accordion/accordion.test.js
|
|
1579
1583
|
- app/packs/src/decidim/controllers/accordion/controller.js
|
|
1580
1584
|
- app/packs/src/decidim/controllers/account_form/account_form.test.js
|
|
1581
1585
|
- app/packs/src/decidim/controllers/account_form/controller.js
|
|
@@ -1586,6 +1590,7 @@ files:
|
|
|
1586
1590
|
- app/packs/src/decidim/controllers/delete_account_form/controller.js
|
|
1587
1591
|
- app/packs/src/decidim/controllers/delete_account_form/delete_account_form.test.js
|
|
1588
1592
|
- app/packs/src/decidim/controllers/dropdown/controller.js
|
|
1593
|
+
- app/packs/src/decidim/controllers/dropdown/dropdown.test.js
|
|
1589
1594
|
- app/packs/src/decidim/controllers/editor/controller.js
|
|
1590
1595
|
- app/packs/src/decidim/controllers/emoji/controller.js
|
|
1591
1596
|
- app/packs/src/decidim/controllers/emoji/emoji.js
|
|
@@ -1632,6 +1637,7 @@ files:
|
|
|
1632
1637
|
- app/packs/src/decidim/datepicker/generate_datepicker.js
|
|
1633
1638
|
- app/packs/src/decidim/datepicker/generate_timepicker.js
|
|
1634
1639
|
- app/packs/src/decidim/datepicker/test/date.test.js
|
|
1640
|
+
- app/packs/src/decidim/datepicker/test/datepicker_functions_adjust_picker_position.test.js
|
|
1635
1641
|
- app/packs/src/decidim/datepicker/test/time.test.js
|
|
1636
1642
|
- app/packs/src/decidim/decidim_application.js
|
|
1637
1643
|
- app/packs/src/decidim/direct_uploads/upload_field.js
|
|
@@ -1667,6 +1673,7 @@ files:
|
|
|
1667
1673
|
- app/packs/src/decidim/editor/test/extensions/emoji.test.js
|
|
1668
1674
|
- app/packs/src/decidim/editor/test/extensions/heading.test.js
|
|
1669
1675
|
- app/packs/src/decidim/editor/test/extensions/image.test.js
|
|
1676
|
+
- app/packs/src/decidim/editor/test/extensions/image_links.test.js
|
|
1670
1677
|
- app/packs/src/decidim/editor/test/extensions/indent.test.js
|
|
1671
1678
|
- app/packs/src/decidim/editor/test/extensions/link.test.js
|
|
1672
1679
|
- app/packs/src/decidim/editor/test/extensions/mention.test.js
|
|
@@ -2836,6 +2843,7 @@ files:
|
|
|
2836
2843
|
- lib/decidim/core/test/shared_examples/paginated_resource_examples.rb
|
|
2837
2844
|
- lib/decidim/core/test/shared_examples/participatory_space_dropdown_metadata_cell_examples.rb
|
|
2838
2845
|
- lib/decidim/core/test/shared_examples/participatory_space_members_page_examples.rb
|
|
2846
|
+
- lib/decidim/core/test/shared_examples/participatory_space_members_shared_examples.rb
|
|
2839
2847
|
- lib/decidim/core/test/shared_examples/participatory_space_search_examples.rb
|
|
2840
2848
|
- lib/decidim/core/test/shared_examples/permissions.rb
|
|
2841
2849
|
- lib/decidim/core/test/shared_examples/preview_with_share_token_examples.rb
|