decidim-core 0.26.4 → 0.26.7
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/announcement_cell.rb +1 -1
- data/app/cells/decidim/content_blocks/cta_cell.rb +1 -1
- data/app/cells/decidim/content_blocks/hero/show.erb +1 -1
- data/app/cells/decidim/content_blocks/highlighted_content_banner/show.erb +1 -1
- data/app/cells/decidim/content_blocks/sub_hero_cell.rb +1 -1
- data/app/cells/decidim/newsletter_templates/base_cell.rb +8 -0
- data/app/cells/decidim/newsletter_templates/basic_only_text/show.erb +4 -4
- data/app/cells/decidim/newsletter_templates/image_text_cta/show.erb +4 -4
- data/app/commands/decidim/unendorse_resource.rb +1 -1
- data/app/controllers/decidim/groups_controller.rb +5 -0
- data/app/controllers/decidim/links_controller.rb +10 -11
- data/app/controllers/decidim/profiles_controller.rb +1 -1
- data/app/helpers/decidim/cells_helper.rb +1 -0
- data/app/helpers/decidim/external_domain_helper.rb +14 -3
- data/app/helpers/decidim/icon_helper.rb +3 -3
- data/app/helpers/decidim/newsletters_helper.rb +1 -0
- data/app/helpers/decidim/sanitize_helper.rb +15 -5
- data/app/mailers/decidim/newsletter_mailer.rb +10 -3
- data/app/models/decidim/newsletter.rb +28 -0
- data/app/models/decidim/scope_type.rb +28 -0
- data/app/models/decidim/user.rb +0 -2
- data/app/models/decidim/user_base_entity.rb +2 -0
- data/app/models/decidim/user_block.rb +2 -2
- data/app/models/decidim/user_group.rb +1 -1
- data/app/packs/src/decidim/editor/clipboard_override.js +6 -2
- data/app/packs/src/decidim/editor.js +63 -33
- data/app/packs/src/decidim/form_filter.component.test.js +148 -5
- data/app/packs/src/decidim/form_filter.js +26 -4
- data/app/packs/stylesheets/decidim/_editor.scss +129 -0
- data/app/packs/stylesheets/decidim/email.scss +7 -0
- data/app/packs/stylesheets/decidim/extras/_quill.scss +0 -6
- data/app/packs/stylesheets/decidim/modules/_buttons.scss +10 -6
- data/app/packs/stylesheets/decidim/modules/_cards.scss +1 -1
- data/app/packs/stylesheets/decidim/modules/_comments.scss +24 -0
- data/app/packs/stylesheets/decidim/vizzs/_linechart.scss +2 -2
- data/app/packs/stylesheets/decidim/vizzs/_rowchart.scss +2 -2
- data/app/presenters/decidim/admin_log/user_group_presenter.rb +1 -1
- data/app/presenters/decidim/admin_log/user_moderation_presenter.rb +1 -1
- data/app/presenters/decidim/notification_presenter.rb +1 -1
- data/app/presenters/decidim/user_group_presenter.rb +1 -1
- data/app/presenters/decidim/user_presenter.rb +1 -1
- data/app/scrubbers/decidim/admin_input_scrubber.rb +27 -0
- data/app/scrubbers/decidim/user_input_scrubber.rb +32 -5
- data/app/services/decidim/traceability.rb +1 -0
- data/app/views/decidim/links/_invalid_url_modal.html.erb +17 -0
- data/app/views/decidim/links/_modal.html.erb +1 -1
- data/app/views/decidim/links/invalid_url.js.erb +24 -0
- data/app/views/decidim/links/new.html.erb +1 -1
- data/app/views/decidim/messaging/conversations/_conversation.html.erb +1 -5
- data/app/views/decidim/newsletter_mailer/newsletter.html.erb +3 -3
- data/app/views/decidim/newsletters/show.html.erb +1 -1
- data/app/views/decidim/pages/_standalone.html.erb +1 -1
- data/app/views/decidim/pages/_tabbed.html.erb +1 -1
- data/app/views/layouts/decidim/_mailer_logo.html.erb +2 -2
- data/app/views/layouts/decidim/newsletter_base.html.erb +2 -2
- data/config/locales/ar.yml +427 -11
- data/config/locales/bg.yml +6 -8
- data/config/locales/ca.yml +36 -30
- data/config/locales/cs.yml +27 -32
- data/config/locales/da.yml +3 -0
- data/config/locales/de.yml +4 -26
- data/config/locales/el.yml +6 -9
- data/config/locales/en.yml +21 -15
- data/config/locales/eo.yml +2 -1
- data/config/locales/es-MX.yml +28 -22
- data/config/locales/es-PY.yml +28 -22
- data/config/locales/es.yml +34 -28
- data/config/locales/et.yml +3 -0
- data/config/locales/eu.yml +108 -85
- data/config/locales/fa-IR.yml +1 -0
- data/config/locales/fi-plain.yml +6 -21
- data/config/locales/fi.yml +24 -18
- data/config/locales/fr-CA.yml +26 -20
- data/config/locales/fr.yml +24 -18
- data/config/locales/ga-IE.yml +1 -0
- data/config/locales/gl.yml +2 -26
- data/config/locales/gn-PY.yml +3 -0
- data/config/locales/hr.yml +3 -0
- data/config/locales/hu.yml +52 -29
- data/config/locales/id-ID.yml +7 -8
- data/config/locales/is-IS.yml +2 -2
- data/config/locales/it.yml +2 -16
- data/config/locales/ja.yml +29 -39
- data/config/locales/ka-GE.yml +4 -0
- data/config/locales/kaa.yml +1 -0
- data/config/locales/lb.yml +0 -8
- data/config/locales/lt.yml +0 -37
- data/config/locales/lv.yml +5 -7
- data/config/locales/nl.yml +1 -24
- data/config/locales/no.yml +3 -30
- data/config/locales/oc-FR.yml +2 -0
- data/config/locales/pl.yml +2 -38
- data/config/locales/pt-BR.yml +2 -10
- data/config/locales/pt.yml +0 -8
- data/config/locales/ro-RO.yml +10 -11
- data/config/locales/ru.yml +6 -4
- data/config/locales/sk.yml +8 -9
- data/config/locales/sl.yml +1 -0
- data/config/locales/sr-CS.yml +2 -0
- data/config/locales/sv.yml +3 -29
- data/config/locales/tr-TR.yml +7 -12
- data/config/locales/uk.yml +6 -4
- data/config/locales/zh-CN.yml +3 -8
- data/config/locales/zh-TW.yml +1712 -0
- data/lib/decidim/api/types/localized_string_type.rb +9 -0
- data/lib/decidim/api/types/translated_field_type.rb +20 -5
- data/lib/decidim/core/test/factories.rb +13 -6
- data/lib/decidim/core/test/shared_examples/comments_examples.rb +36 -0
- data/lib/decidim/core/test/shared_examples/editor_shared_examples.rb +10 -0
- data/lib/decidim/core/test/shared_examples/rich_text_editor_examples.rb +7 -3
- data/lib/decidim/core/test.rb +1 -0
- data/lib/decidim/core/version.rb +1 -1
- data/lib/decidim/form_builder.rb +1 -2
- data/lib/decidim/participatory_space_resourceable.rb +7 -1
- data/lib/decidim/publicable.rb +4 -0
- metadata +13 -6
@@ -8,6 +8,15 @@ module Decidim
|
|
8
8
|
|
9
9
|
field :locale, GraphQL::Types::String, "The standard locale of this translation.", null: false
|
10
10
|
field :text, GraphQL::Types::String, "The content of this translation.", null: true
|
11
|
+
field :machine_translated, GraphQL::Types::Boolean, "Whether this string is machine translated or not.", null: false
|
12
|
+
|
13
|
+
def machine_translated
|
14
|
+
if object.respond_to?(:machine_translated)
|
15
|
+
object.machine_translated.present?
|
16
|
+
else
|
17
|
+
false
|
18
|
+
end
|
19
|
+
end
|
11
20
|
end
|
12
21
|
end
|
13
22
|
end
|
@@ -17,19 +17,34 @@ module Decidim
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def locales
|
20
|
-
|
20
|
+
(defined_translations.keys + machine_translations.keys).uniq
|
21
21
|
end
|
22
22
|
|
23
23
|
def translation(locale: "")
|
24
|
-
|
25
|
-
translations[locale]
|
24
|
+
display_translations[locale]
|
26
25
|
end
|
27
26
|
|
28
27
|
def translations(locales: [])
|
29
|
-
translations =
|
28
|
+
translations = display_translations
|
30
29
|
translations = translations.slice(*locales) unless locales.empty?
|
31
30
|
|
32
|
-
translations.map { |locale, text| OpenStruct.new(locale: locale, text: text) }
|
31
|
+
translations.map { |locale, text| OpenStruct.new(locale: locale, text: text, machine_translated: defined_translations[locale].blank?) }
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def display_translations
|
37
|
+
@display_translations ||= locales.index_with do |locale|
|
38
|
+
defined_translations[locale].presence || machine_translations[locale]
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def defined_translations
|
43
|
+
object.stringify_keys.except("machine_translations")
|
44
|
+
end
|
45
|
+
|
46
|
+
def machine_translations
|
47
|
+
object.stringify_keys["machine_translations"]&.stringify_keys || {}
|
33
48
|
end
|
34
49
|
end
|
35
50
|
end
|
@@ -226,13 +226,20 @@ FactoryBot.define do
|
|
226
226
|
confirmed_at { Time.current }
|
227
227
|
end
|
228
228
|
|
229
|
+
trait :blocked do
|
230
|
+
blocked { true }
|
231
|
+
blocked_at { Time.current }
|
232
|
+
extended_data { { user_name: generate(:name) } }
|
233
|
+
name { "Blocked user group" }
|
234
|
+
end
|
235
|
+
|
229
236
|
after(:build) do |user_group, evaluator|
|
230
|
-
user_group.extended_data = {
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
237
|
+
user_group.extended_data = user_group.extended_data.merge({
|
238
|
+
document_number: evaluator.document_number,
|
239
|
+
phone: evaluator.phone,
|
240
|
+
rejected_at: evaluator.rejected_at,
|
241
|
+
verified_at: evaluator.verified_at
|
242
|
+
})
|
236
243
|
end
|
237
244
|
|
238
245
|
after(:create) do |user_group, evaluator|
|
@@ -213,6 +213,42 @@ shared_examples "comments" do
|
|
213
213
|
)
|
214
214
|
end
|
215
215
|
|
216
|
+
context "when user can hide replies on a thread" do
|
217
|
+
let(:thread) { comments.first }
|
218
|
+
let(:new_reply_body) { "Hey, I just jumped inside the thread!" }
|
219
|
+
let!(:new_reply) { create(:comment, commentable: thread, root_commentable: commentable, body: new_reply_body) }
|
220
|
+
|
221
|
+
it "displays the hide button" do
|
222
|
+
visit current_path
|
223
|
+
within "#comment_#{thread.id}" do
|
224
|
+
expect(page).to have_content("Hide replies")
|
225
|
+
expect(page).to have_content(new_reply_body)
|
226
|
+
end
|
227
|
+
end
|
228
|
+
|
229
|
+
it "displays the show button" do
|
230
|
+
visit current_path
|
231
|
+
within "#comment_#{thread.id}" do
|
232
|
+
click_button "Hide replies"
|
233
|
+
expect(page).to have_content("Show reply")
|
234
|
+
expect(page).not_to have_content(new_reply_body)
|
235
|
+
end
|
236
|
+
end
|
237
|
+
|
238
|
+
context "when are more replies" do
|
239
|
+
let!(:new_replies) { create_list(:comment, 2, commentable: thread, root_commentable: commentable, body: new_reply_body) }
|
240
|
+
|
241
|
+
it "displays the show button" do
|
242
|
+
visit current_path
|
243
|
+
within "#comment_#{thread.id}" do
|
244
|
+
click_button "Hide replies"
|
245
|
+
expect(page).to have_content("Show 3 replies")
|
246
|
+
expect(page).not_to have_content(new_reply_body)
|
247
|
+
end
|
248
|
+
end
|
249
|
+
end
|
250
|
+
end
|
251
|
+
|
216
252
|
context "when inside a thread reply form" do
|
217
253
|
let(:thread) { comments.first }
|
218
254
|
let(:new_reply_body) { "Hey, I just jumped inside the thread!" }
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
shared_examples_for "has embedded video in description" do |description_attribute_name, count: 1|
|
4
|
+
let(description_attribute_name) { { en: %(Description <iframe class="ql-video" allowfullscreen="true" src="#{iframe_src}" frameborder="0"></iframe>) } }
|
5
|
+
let(:iframe_src) { "http://www.example.org" }
|
6
|
+
|
7
|
+
it "shows iframe" do
|
8
|
+
expect(page).to have_selector("iframe", count: count)
|
9
|
+
end
|
10
|
+
end
|
@@ -1,13 +1,17 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
shared_examples "having a rich text editor" do |
|
4
|
-
it "has a
|
5
|
-
within
|
3
|
+
shared_examples "having a rich text editor for field" do |selector, toolbar|
|
4
|
+
it "has a rich text editor" do
|
5
|
+
within selector do
|
6
6
|
expect(page).to have_selector("div.editor-container[data-toolbar='#{toolbar}']", visible: :all)
|
7
7
|
end
|
8
8
|
end
|
9
9
|
end
|
10
10
|
|
11
|
+
shared_examples "having a rich text editor" do |css, toolbar|
|
12
|
+
it_behaves_like "having a rich text editor for field", "form.#{css}", toolbar
|
13
|
+
end
|
14
|
+
|
11
15
|
shared_context "with rich text editor content" do
|
12
16
|
let(:content) { "<p>#{safe_tags}</p>#{script}" }
|
13
17
|
let(:safe_tags) { em + u + strong }
|
data/lib/decidim/core/test.rb
CHANGED
@@ -4,6 +4,7 @@ require "decidim/core/test/shared_examples/acts_as_author_examples"
|
|
4
4
|
require "decidim/core/test/shared_examples/admin_log_presenter_examples"
|
5
5
|
require "decidim/core/test/shared_examples/authorable"
|
6
6
|
require "decidim/core/test/shared_examples/coauthorable"
|
7
|
+
require "decidim/core/test/shared_examples/editor_shared_examples"
|
7
8
|
require "decidim/core/test/shared_examples/endorsable"
|
8
9
|
require "decidim/core/test/shared_examples/publicable"
|
9
10
|
require "decidim/core/test/shared_examples/localised_email"
|
data/lib/decidim/core/version.rb
CHANGED
data/lib/decidim/form_builder.rb
CHANGED
@@ -47,7 +47,7 @@ module Decidim
|
|
47
47
|
# rubocop:enable Metrics/ParameterLists
|
48
48
|
|
49
49
|
def create_language_selector(locales, tabs_id, name)
|
50
|
-
if
|
50
|
+
if locales.count > 4
|
51
51
|
language_selector_select(locales, tabs_id, name)
|
52
52
|
else
|
53
53
|
language_tabs(locales, tabs_id, name)
|
@@ -913,7 +913,6 @@ module Decidim
|
|
913
913
|
return {} unless options[:editor_images]
|
914
914
|
|
915
915
|
{
|
916
|
-
editor_images: true,
|
917
916
|
upload_images_path: Decidim::Core::Engine.routes.url_helpers.editor_images_path,
|
918
917
|
drag_and_drop_help_text: I18n.t("drag_and_drop_help", scope: "decidim.editor_images")
|
919
918
|
}
|
@@ -47,7 +47,13 @@ module Decidim
|
|
47
47
|
.joins(:participatory_space_resource_links_to)
|
48
48
|
.where(decidim_participatory_space_links: { name: link_name, from_id: id, from_type: self.class.name })
|
49
49
|
|
50
|
-
klass.where(id: from).or(klass.where(id: to))
|
50
|
+
query = klass.where(id: from).or(klass.where(id: to)).published
|
51
|
+
|
52
|
+
if klass.column_names.include?("weight")
|
53
|
+
query.order(:weight)
|
54
|
+
else
|
55
|
+
query.order(created_at: :desc)
|
56
|
+
end
|
51
57
|
end
|
52
58
|
|
53
59
|
def participatory_space_sibling_scope(participatory_space_name)
|
data/lib/decidim/publicable.rb
CHANGED
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.26.
|
4
|
+
version: 0.26.7
|
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:
|
13
|
+
date: 2023-05-11 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: active_link_to
|
@@ -754,28 +754,28 @@ dependencies:
|
|
754
754
|
requirements:
|
755
755
|
- - '='
|
756
756
|
- !ruby/object:Gem::Version
|
757
|
-
version: 0.26.
|
757
|
+
version: 0.26.7
|
758
758
|
type: :runtime
|
759
759
|
prerelease: false
|
760
760
|
version_requirements: !ruby/object:Gem::Requirement
|
761
761
|
requirements:
|
762
762
|
- - '='
|
763
763
|
- !ruby/object:Gem::Version
|
764
|
-
version: 0.26.
|
764
|
+
version: 0.26.7
|
765
765
|
- !ruby/object:Gem::Dependency
|
766
766
|
name: decidim-dev
|
767
767
|
requirement: !ruby/object:Gem::Requirement
|
768
768
|
requirements:
|
769
769
|
- - '='
|
770
770
|
- !ruby/object:Gem::Version
|
771
|
-
version: 0.26.
|
771
|
+
version: 0.26.7
|
772
772
|
type: :development
|
773
773
|
prerelease: false
|
774
774
|
version_requirements: !ruby/object:Gem::Requirement
|
775
775
|
requirements:
|
776
776
|
- - '='
|
777
777
|
- !ruby/object:Gem::Version
|
778
|
-
version: 0.26.
|
778
|
+
version: 0.26.7
|
779
779
|
description: Adds core features so other engines can hook into the framework.
|
780
780
|
email:
|
781
781
|
- josepjaume@gmail.com
|
@@ -1679,6 +1679,7 @@ files:
|
|
1679
1679
|
- app/queries/decidim/user_groups/member_memberships.rb
|
1680
1680
|
- app/resolvers/decidim/core/metric_resolver.rb
|
1681
1681
|
- app/resolvers/decidim/hashtags_resolver.rb
|
1682
|
+
- app/scrubbers/decidim/admin_input_scrubber.rb
|
1682
1683
|
- app/scrubbers/decidim/newsletter_scrubber.rb
|
1683
1684
|
- app/scrubbers/decidim/user_input_scrubber.rb
|
1684
1685
|
- app/serializers/decidim/exporters/participatory_space_components_serializer.rb
|
@@ -1801,8 +1802,10 @@ files:
|
|
1801
1802
|
- app/views/decidim/last_activities/_activities.html.erb
|
1802
1803
|
- app/views/decidim/last_activities/index.html.erb
|
1803
1804
|
- app/views/decidim/last_activities/index.js.erb
|
1805
|
+
- app/views/decidim/links/_invalid_url_modal.html.erb
|
1804
1806
|
- app/views/decidim/links/_modal.html.erb
|
1805
1807
|
- app/views/decidim/links/_warning.html.erb
|
1808
|
+
- app/views/decidim/links/invalid_url.js.erb
|
1806
1809
|
- app/views/decidim/links/new.html.erb
|
1807
1810
|
- app/views/decidim/links/new.js.erb
|
1808
1811
|
- app/views/decidim/messaging/conversation_mailer/comanagers_new_conversation.html.erb
|
@@ -1967,6 +1970,7 @@ files:
|
|
1967
1970
|
- config/locales/et-EE.yml
|
1968
1971
|
- config/locales/et.yml
|
1969
1972
|
- config/locales/eu.yml
|
1973
|
+
- config/locales/fa-IR.yml
|
1970
1974
|
- config/locales/fi-pl.yml
|
1971
1975
|
- config/locales/fi-plain.yml
|
1972
1976
|
- config/locales/fi.yml
|
@@ -1984,6 +1988,8 @@ files:
|
|
1984
1988
|
- config/locales/is.yml
|
1985
1989
|
- config/locales/it.yml
|
1986
1990
|
- config/locales/ja.yml
|
1991
|
+
- config/locales/ka-GE.yml
|
1992
|
+
- config/locales/kaa.yml
|
1987
1993
|
- config/locales/ko-KR.yml
|
1988
1994
|
- config/locales/ko.yml
|
1989
1995
|
- config/locales/lb-LU.yml
|
@@ -2362,6 +2368,7 @@ files:
|
|
2362
2368
|
- lib/decidim/core/test/shared_examples/conversations_examples.rb
|
2363
2369
|
- lib/decidim/core/test/shared_examples/counts_commentators_as_newsletter_participants.rb
|
2364
2370
|
- lib/decidim/core/test/shared_examples/edit_link_shared_examples.rb
|
2371
|
+
- lib/decidim/core/test/shared_examples/editor_shared_examples.rb
|
2365
2372
|
- lib/decidim/core/test/shared_examples/embed_resource_examples.rb
|
2366
2373
|
- lib/decidim/core/test/shared_examples/endorsable.rb
|
2367
2374
|
- lib/decidim/core/test/shared_examples/endorsable_interface_examples.rb
|