decidim-core 0.25.2 → 0.26.0.rc1

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.
Files changed (146) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/activity_cell.rb +2 -1
  3. data/app/cells/decidim/author/flag_user.erb +1 -1
  4. data/app/cells/decidim/author/profile_inline.erb +1 -1
  5. data/app/cells/decidim/author/withdraw.erb +2 -2
  6. data/app/cells/decidim/author_cell.rb +32 -0
  7. data/app/cells/decidim/card_m_cell.rb +1 -1
  8. data/app/cells/decidim/content_blocks/cta_cell.rb +1 -1
  9. data/app/cells/decidim/content_blocks/hero_cell.rb +1 -1
  10. data/app/cells/decidim/content_blocks/highlighted_content_banner/show.erb +1 -1
  11. data/app/cells/decidim/content_blocks/last_activity_cell.rb +1 -1
  12. data/app/cells/decidim/content_blocks/stats_cell.rb +12 -0
  13. data/app/cells/decidim/endorsers_list_cell.rb +3 -1
  14. data/app/cells/decidim/flag_modal/flag_user.erb +2 -2
  15. data/app/cells/decidim/flag_modal/show.erb +2 -2
  16. data/app/cells/decidim/flag_modal_cell.rb +10 -0
  17. data/app/cells/decidim/notification/show.erb +31 -0
  18. data/app/cells/decidim/notification_cell.rb +20 -0
  19. data/app/cells/decidim/notifications/show.erb +1 -24
  20. data/app/cells/decidim/notifications_cell.rb +0 -1
  21. data/app/cells/decidim/user_conversation/conversation_header.erb +1 -1
  22. data/app/cells/decidim/user_conversation/show.erb +4 -2
  23. data/app/cells/decidim/user_conversations/conversation_item.erb +1 -1
  24. data/app/commands/decidim/create_editor_image.rb +41 -0
  25. data/app/controllers/decidim/cookie_policy_controller.rb +2 -0
  26. data/app/controllers/decidim/editor_images_controller.rb +47 -0
  27. data/app/controllers/decidim/user_activities_controller.rb +2 -1
  28. data/app/forms/decidim/editor_image_form.rb +16 -0
  29. data/app/helpers/decidim/amendments_helper.rb +1 -1
  30. data/app/helpers/decidim/application_helper.rb +2 -2
  31. data/app/helpers/decidim/messaging/conversation_helper.rb +32 -3
  32. data/app/helpers/decidim/resource_versions_helper.rb +1 -1
  33. data/app/helpers/decidim/sanitize_helper.rb +65 -0
  34. data/app/models/decidim/editor_image.rb +14 -0
  35. data/app/models/decidim/messaging/conversation.rb +9 -0
  36. data/app/models/decidim/participatory_space_private_user.rb +16 -0
  37. data/app/models/decidim/user.rb +3 -3
  38. data/app/models/decidim/user_group.rb +40 -0
  39. data/app/packs/entrypoints/decidim_core.js +1 -0
  40. data/app/packs/src/decidim/dialog_mode.js +143 -0
  41. data/app/packs/src/decidim/dialog_mode.test.js +168 -0
  42. data/app/packs/src/decidim/editor.js +56 -14
  43. data/app/packs/src/decidim/form_attachments.js +5 -0
  44. data/app/packs/src/decidim/index.js +4 -0
  45. data/app/packs/src/decidim/vendor/image-resize.min.js +3 -0
  46. data/app/packs/src/decidim/vendor/image-upload.min.js +8 -0
  47. data/app/packs/stylesheets/decidim/extras/_extras.scss +0 -1
  48. data/app/packs/stylesheets/decidim/extras/_quill.scss +7 -0
  49. data/app/packs/stylesheets/decidim/modules/_buttons.scss +11 -4
  50. data/app/packs/stylesheets/decidim/modules/_cards.scss +4 -0
  51. data/app/packs/stylesheets/decidim/modules/_layout.scss +1 -1
  52. data/app/presenters/decidim/nil_presenter.rb +2 -2
  53. data/app/presenters/decidim/notification_presenter.rb +25 -0
  54. data/app/presenters/decidim/official_author_presenter.rb +1 -1
  55. data/app/presenters/decidim/validation_errors_presenter.rb +27 -0
  56. data/app/queries/decidim/similar_emendations.rb +1 -1
  57. data/app/resolvers/decidim/core/metric_resolver.rb +1 -1
  58. data/app/services/decidim/activity_search.rb +2 -2
  59. data/app/services/decidim/email_notification_generator.rb +4 -1
  60. data/app/services/decidim/html_truncation.rb +130 -0
  61. data/app/services/decidim/open_data_exporter.rb +29 -5
  62. data/app/services/decidim/resource_search.rb +1 -1
  63. data/app/uploaders/decidim/editor_image_uploader.rb +6 -0
  64. data/app/validators/password_validator.rb +123 -0
  65. data/app/views/decidim/account/_password_fields.html.erb +1 -1
  66. data/app/views/decidim/devise/passwords/edit.html.erb +1 -1
  67. data/app/views/decidim/devise/registrations/new.html.erb +1 -1
  68. data/app/views/decidim/devise/shared/_omniauth_buttons_mini.html.erb +6 -4
  69. data/app/views/decidim/messaging/conversations/_conversation.html.erb +3 -3
  70. data/app/views/decidim/messaging/conversations/_messages.html.erb +8 -2
  71. data/app/views/decidim/messaging/conversations/_show.html.erb +10 -12
  72. data/app/views/decidim/messaging/conversations/show.html.erb +4 -2
  73. data/app/views/decidim/newsletters/show.html.erb +1 -1
  74. data/app/views/decidim/notification_mailer/event_received.html.erb +17 -0
  75. data/app/views/decidim/pages/_tabbed.html.erb +1 -1
  76. data/app/views/decidim/searches/_filters_small_view.html.erb +3 -3
  77. data/app/views/decidim/shared/_login_modal.html.erb +5 -5
  78. data/app/views/decidim/shared/_orders.html.erb +1 -1
  79. data/app/views/decidim/shared/_results_per_page.html.erb +1 -1
  80. data/app/views/decidim/shared/participatory_space_filters/_filters_small_view.html.erb +3 -3
  81. data/app/views/layouts/decidim/_application.html.erb +1 -12
  82. data/app/views/layouts/decidim/_head.html.erb +4 -0
  83. data/app/views/layouts/decidim/_language_chooser.html.erb +1 -1
  84. data/app/views/layouts/decidim/_meta_tags_config.html.erb +11 -0
  85. data/app/views/layouts/decidim/_wrapper.html.erb +1 -1
  86. data/config/brakeman.ignore +149 -0
  87. data/config/initializers/devise.rb +1 -1
  88. data/config/initializers/rack_attack.rb +23 -21
  89. data/config/locales/ca.yml +2 -0
  90. data/config/locales/cs.yml +60 -0
  91. data/config/locales/en.yml +45 -0
  92. data/config/locales/es.yml +45 -0
  93. data/config/locales/eu.yml +5 -0
  94. data/config/locales/fi-plain.yml +6 -0
  95. data/config/locales/fi.yml +45 -0
  96. data/config/locales/fr-CA.yml +38 -0
  97. data/config/locales/fr.yml +44 -6
  98. data/config/locales/gl.yml +5 -0
  99. data/config/locales/it.yml +11 -0
  100. data/config/locales/ja.yml +72 -36
  101. data/config/locales/lb-LU.yml +1354 -0
  102. data/config/locales/lb.yml +1 -1
  103. data/config/locales/nl.yml +54 -0
  104. data/config/locales/pl.yml +5 -5
  105. data/config/locales/pt-BR.yml +1 -1
  106. data/config/locales/ro-RO.yml +8 -0
  107. data/config/locales/sv.yml +5 -0
  108. data/config/locales/val-ES.yml +1 -0
  109. data/config/routes.rb +2 -0
  110. data/db/migrate/20210730112319_create_decidim_editor_images.rb +12 -0
  111. data/db/migrate/20211126183540_add_timestamps_to_content_blocks.rb +14 -0
  112. data/db/seeds.rb +16 -14
  113. data/lib/decidim/api/functions/user_entity_list.rb +1 -0
  114. data/lib/decidim/api/input_sorts/component_input_sort.rb +1 -1
  115. data/lib/decidim/common_passwords.rb +56 -0
  116. data/lib/decidim/content_parsers/inline_images_parser.rb +68 -0
  117. data/lib/decidim/content_parsers.rb +1 -0
  118. data/lib/decidim/content_renderers/link_renderer.rb +85 -1
  119. data/lib/decidim/content_renderers/user_group_renderer.rb +1 -1
  120. data/lib/decidim/content_renderers/user_renderer.rb +1 -1
  121. data/lib/decidim/core/engine.rb +3 -12
  122. data/lib/decidim/core/test/factories.rb +7 -1
  123. data/lib/decidim/core/test/shared_examples/translated_event_examples.rb +131 -0
  124. data/lib/decidim/core/test.rb +1 -0
  125. data/lib/decidim/core/version.rb +1 -1
  126. data/lib/decidim/core.rb +22 -5
  127. data/lib/decidim/db/common-passwords.txt +128420 -0
  128. data/lib/decidim/etherpad/pad.rb +48 -0
  129. data/lib/decidim/etherpad.rb +7 -0
  130. data/lib/decidim/events/base_event.rb +18 -0
  131. data/lib/decidim/events/machine_translated_event.rb +36 -0
  132. data/lib/decidim/events/user_group_event.rb +1 -3
  133. data/lib/decidim/events.rb +1 -0
  134. data/lib/decidim/exporters/csv.rb +7 -7
  135. data/lib/decidim/faker/localized.rb +15 -6
  136. data/lib/decidim/form_builder.rb +14 -4
  137. data/lib/decidim/has_attachments.rb +11 -4
  138. data/lib/decidim/importers/import_manifest.rb +103 -3
  139. data/lib/decidim/paddable.rb +1 -9
  140. data/lib/decidim/searchable.rb +2 -2
  141. data/lib/decidim/settings_manifest.rb +2 -0
  142. data/lib/decidim/translatable_attributes.rb +6 -6
  143. data/lib/decidim/view_model.rb +10 -0
  144. data/lib/tasks/decidim_active_storage_migration_tasks.rake +68 -0
  145. metadata +56 -65
  146. data/app/packs/stylesheets/decidim/extras/_social_icons_mini.scss +0 -11
@@ -0,0 +1,131 @@
1
+ # frozen_string_literal: true
2
+
3
+ shared_examples_for "a translated event" do
4
+ context "when it is not machine machine translated" do
5
+ let(:organization) { create(:organization, enable_machine_translations: false, machine_translation_display_priority: "original") }
6
+
7
+ it "does not perform translation" do
8
+ expect(subject.perform_translation?).to eq(false)
9
+ end
10
+
11
+ it "does not have a missing translation" do
12
+ expect(subject.translation_missing?).to eq(false)
13
+ end
14
+
15
+ it "does have content available in multiple languages" do
16
+ expect(subject.content_in_same_language?).to eq(false)
17
+ end
18
+
19
+ it "does return the original language" do
20
+ expect(subject.safe_resource_text).to eq(en_version)
21
+ end
22
+
23
+ it "does not offer an alternate translation" do
24
+ expect(subject.safe_resource_translated_text).to eq(en_version)
25
+ end
26
+ end
27
+
28
+ context "when is machine machine translated" do
29
+ let(:user) { create :user, organization: organization, locale: "ca" }
30
+
31
+ around do |example|
32
+ I18n.with_locale(user.locale) { example.run }
33
+ end
34
+
35
+ context "when priority is original" do
36
+ let(:organization) { create(:organization, enable_machine_translations: true, machine_translation_display_priority: "original") }
37
+
38
+ it "does perform translation" do
39
+ expect(subject.perform_translation?).to eq(translatable)
40
+ end
41
+
42
+ it "does not have a missing translation" do
43
+ expect(subject.translation_missing?).to eq(false)
44
+ end
45
+
46
+ it "does have content available in multiple languages" do
47
+ expect(subject.content_in_same_language?).to eq(false)
48
+ end
49
+
50
+ it "does return the original language" do
51
+ expect(subject.safe_resource_text).to eq(en_version)
52
+ end
53
+
54
+ it "does not offer an alternate translation" do
55
+ expect(subject.safe_resource_translated_text).to eq(machine_translated)
56
+ end
57
+
58
+ context "when translation is not available" do
59
+ let(:body) { { "en": en_body } }
60
+
61
+ it "does perform translation" do
62
+ expect(subject.perform_translation?).to eq(translatable)
63
+ end
64
+
65
+ it "does have a missing translation" do
66
+ expect(subject.translation_missing?).to eq(translatable)
67
+ end
68
+
69
+ it "does have content available in multiple languages" do
70
+ expect(subject.content_in_same_language?).to eq(false)
71
+ end
72
+
73
+ it "does return the original language" do
74
+ expect(subject.safe_resource_text).to eq(en_version)
75
+ end
76
+
77
+ it "does not offer an alternate translation" do
78
+ expect(subject.safe_resource_translated_text).to eq(en_version)
79
+ end
80
+ end
81
+ end
82
+
83
+ context "when priority is translation" do
84
+ let(:organization) { create(:organization, enable_machine_translations: true, machine_translation_display_priority: "translation") }
85
+
86
+ it "does perform translation" do
87
+ expect(subject.perform_translation?).to eq(translatable)
88
+ end
89
+
90
+ it "does not have a missing translation" do
91
+ expect(subject.translation_missing?).to eq(false)
92
+ end
93
+
94
+ it "does have content available in multiple languages" do
95
+ expect(subject.content_in_same_language?).to eq(false)
96
+ end
97
+
98
+ it "does return the original language" do
99
+ expect(subject.safe_resource_text).to eq(en_version)
100
+ end
101
+
102
+ it "does not offer an alternate translation" do
103
+ expect(subject.safe_resource_translated_text).to eq(machine_translated)
104
+ end
105
+
106
+ context "when translation is not available" do
107
+ let(:body) { { "en": en_body } }
108
+
109
+ it "does perform translation" do
110
+ expect(subject.perform_translation?).to eq(translatable)
111
+ end
112
+
113
+ it "does have a missing translation" do
114
+ expect(subject.translation_missing?).to eq(translatable)
115
+ end
116
+
117
+ it "does have content available in multiple languages" do
118
+ expect(subject.content_in_same_language?).to eq(false)
119
+ end
120
+
121
+ it "does return the original language" do
122
+ expect(subject.safe_resource_text).to eq(en_version)
123
+ end
124
+
125
+ it "does not offer an alternate translation" do
126
+ expect(subject.safe_resource_translated_text).to eq(en_version)
127
+ end
128
+ end
129
+ end
130
+ end
131
+ end
@@ -68,3 +68,4 @@ require "decidim/core/test/shared_examples/controller_render_views"
68
68
  require "decidim/core/test/shared_examples/share_link_examples"
69
69
  require "decidim/core/test/shared_examples/categories_container_examples"
70
70
  require "decidim/core/test/shared_examples/assembly_announcements_examples"
71
+ require "decidim/core/test/shared_examples/translated_event_examples"
@@ -4,7 +4,7 @@ module Decidim
4
4
  # This holds the decidim-core version.
5
5
  module Core
6
6
  def self.version
7
- "0.25.2"
7
+ "0.26.0.rc1"
8
8
  end
9
9
  end
10
10
  end
data/lib/decidim/core.rb CHANGED
@@ -77,6 +77,7 @@ module Decidim
77
77
  autoload :Amendable, "decidim/amendable"
78
78
  autoload :Gamification, "decidim/gamification"
79
79
  autoload :Hashtag, "decidim/hashtag"
80
+ autoload :Etherpad, "decidim/etherpad"
80
81
  autoload :Paddable, "decidim/paddable"
81
82
  autoload :OpenDataExporter, "decidim/open_data_exporter"
82
83
  autoload :IoEncoder, "decidim/io_encoder"
@@ -95,6 +96,7 @@ module Decidim
95
96
  autoload :RecordEncryptor, "decidim/record_encryptor"
96
97
  autoload :AttachmentAttributes, "decidim/attachment_attributes"
97
98
  autoload :CarrierWaveMigratorService, "decidim/carrier_wave_migrator_service"
99
+ autoload :CommonPasswords, "decidim/common_passwords"
98
100
 
99
101
  include ActiveSupport::Configurable
100
102
  # Loads seeds from all engines.
@@ -145,9 +147,9 @@ module Decidim
145
147
  # the mails.
146
148
  config_accessor :mailer_sender
147
149
 
148
- # Whether SSL should be enabled or not.
150
+ # Whether SSL should be forced or not.
149
151
  config_accessor :force_ssl do
150
- true
152
+ Rails.env.starts_with?("production") || Rails.env.starts_with?("staging")
151
153
  end
152
154
 
153
155
  # Having this on true will change the way the svg assets are being served.
@@ -274,7 +276,7 @@ module Decidim
274
276
 
275
277
  # Time window were users can access the website even if their email is not confirmed.
276
278
  config_accessor :unconfirmed_access_for do
277
- 2.days
279
+ 0.days
278
280
  end
279
281
 
280
282
  # Allow machine translations
@@ -384,6 +386,18 @@ module Decidim
384
386
  "decidim-cc"
385
387
  end
386
388
 
389
+ # Blacklisted passwords. Array may contain strings and regex entries.
390
+ config_accessor :password_blacklist do
391
+ []
392
+ end
393
+
394
+ # This is an internal key that allow us to properly configure the caching key separator. This is useful for redis cache store
395
+ # as it creates some namespaces within the cached data.
396
+ # use `config.cache_key_separator = ":"` in your initializer to have namespaced data
397
+ config_accessor :cache_key_separator do
398
+ "/"
399
+ end
400
+
387
401
  # Public: Registers a global engine. This method is intended to be used
388
402
  # by component engines that also offer unscoped functionality
389
403
  #
@@ -593,8 +607,11 @@ module Decidim
593
607
  end
594
608
 
595
609
  # Defines the time after which the machine translation job should be enabled.
596
- # In some cases, it is required to have a delay, otherwise the ttanslation job will be discarded:
597
- # Discarded Decidim::MachineTranslationResourceJob due to a ActiveJob::DeserializationError.
610
+ # In some cases, like when Workers is processing faster than ActiveRecord can commit to Database,
611
+ # it is required to have a delay, to prevent any discarding with
612
+ # Decidim::MachineTranslationResourceJob due to a ActiveJob::DeserializationError.
613
+ # In some Decidim Installations, ActiveJob can be configured to discard jobs failing with
614
+ # ActiveJob::DeserializationError
598
615
  config_accessor :machine_translation_delay do
599
616
  0.seconds
600
617
  end