decidim-core 0.27.5 → 0.27.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/activity_cell.rb +2 -2
- data/app/cells/decidim/card_cell.rb +2 -2
- data/app/cells/decidim/card_m/top.erb +1 -1
- data/app/cells/decidim/card_m_cell.rb +1 -1
- data/app/cells/decidim/follow_button_cell.rb +1 -1
- data/app/cells/decidim/notification/moderated.erb +24 -0
- data/app/cells/decidim/notification_cell.rb +5 -1
- data/app/cells/decidim/scopes_picker/scope_picker_values.erb +1 -1
- data/app/cells/decidim/tags_cell.rb +3 -1
- data/app/cells/decidim/user_profile_cell.rb +1 -1
- data/app/commands/decidim/create_omniauth_registration.rb +2 -4
- data/app/commands/decidim/messaging/reply_to_conversation.rb +3 -0
- data/app/commands/decidim/messaging/start_conversation.rb +3 -0
- data/app/controllers/concerns/decidim/devise_authentication_methods.rb +36 -0
- data/app/controllers/concerns/decidim/force_authentication.rb +1 -1
- data/app/controllers/concerns/decidim/paginable.rb +1 -1
- data/app/controllers/concerns/decidim/use_organization_time_zone.rb +1 -1
- data/app/controllers/decidim/devise/omniauth_registrations_controller.rb +1 -22
- data/app/controllers/decidim/devise/sessions_controller.rb +1 -24
- data/app/controllers/decidim/links_controller.rb +13 -1
- data/app/controllers/decidim/widgets_controller.rb +6 -0
- data/app/events/decidim/welcome_notification_event.rb +6 -9
- data/app/helpers/decidim/cells_paginate_helper.rb +1 -1
- data/app/helpers/decidim/check_boxes_tree_helper.rb +4 -4
- data/app/helpers/decidim/newsletters_helper.rb +83 -16
- data/app/helpers/decidim/resource_helper.rb +1 -1
- data/app/helpers/decidim/sanitize_helper.rb +9 -0
- data/app/helpers/decidim/user_profile_helper.rb +7 -2
- data/app/mailers/decidim/application_mailer.rb +40 -6
- data/app/mailers/decidim/messaging/conversation_mailer.rb +3 -72
- data/app/models/decidim/push_notification_message.rb +39 -0
- data/app/packs/images/decidim/.keep +0 -0
- data/app/packs/src/decidim/input_hashtags.js +1 -1
- data/app/packs/src/decidim/input_mentions.js +1 -1
- data/app/packs/src/decidim/input_multiple_mentions.js +1 -1
- data/app/packs/src/decidim/vizzs/index.js +1 -1
- data/app/packs/stylesheets/decidim/plugins/leaflet.scss +118 -114
- data/app/presenters/decidim/admin_log/oauth_application_resource_presenter.rb +1 -1
- data/app/presenters/decidim/admin_log/organization_presenter.rb +1 -1
- data/app/presenters/decidim/log/resource_presenter.rb +7 -1
- data/app/presenters/decidim/notification_to_mailer_presenter.rb +9 -0
- data/app/services/decidim/events_manager.rb +6 -0
- data/app/services/decidim/log/diff_changeset_calculator.rb +1 -1
- data/app/services/decidim/push_notification_message_sender.rb +36 -0
- data/app/services/decidim/send_push_notification.rb +22 -8
- data/app/views/decidim/devise/registrations/new.html.erb +2 -2
- data/app/views/decidim/links/new.html.erb +2 -0
- data/app/views/decidim/notifications_digest_mailer/_email_content.html.erb +7 -0
- data/app/views/decidim/shared/_address_details.html.erb +2 -2
- data/app/views/layouts/decidim/_js_configuration.html.erb +1 -0
- data/config/locales/ar.yml +4 -3
- data/config/locales/bg.yml +484 -1
- data/config/locales/ca.yml +23 -22
- data/config/locales/cs.yml +0 -1
- data/config/locales/de.yml +28 -27
- data/config/locales/el.yml +5 -4
- data/config/locales/en.yml +1 -0
- data/config/locales/eo.yml +3 -0
- data/config/locales/es-MX.yml +6 -5
- data/config/locales/es-PY.yml +6 -5
- data/config/locales/es.yml +25 -24
- data/config/locales/eu.yml +12 -2
- data/config/locales/fi-plain.yml +1 -0
- data/config/locales/fi.yml +4 -3
- data/config/locales/fr-CA.yml +5 -4
- data/config/locales/fr.yml +3 -2
- data/config/locales/ga-IE.yml +5 -0
- data/config/locales/gl.yml +3 -0
- data/config/locales/he-IL.yml +1 -0
- data/config/locales/hu.yml +41 -9
- data/config/locales/it.yml +5 -4
- data/config/locales/ja.yml +5 -3
- data/config/locales/lb.yml +5 -4
- data/config/locales/lt.yml +4 -4
- data/config/locales/lv.yml +4 -1
- data/config/locales/nl.yml +4 -1
- data/config/locales/no.yml +5 -4
- data/config/locales/pl.yml +168 -1
- data/config/locales/pt-BR.yml +113 -22
- data/config/locales/pt.yml +5 -4
- data/config/locales/ro-RO.yml +1 -3
- data/config/locales/ru.yml +13 -0
- data/config/locales/sk.yml +6 -1
- data/config/locales/sl.yml +5 -0
- data/config/locales/sv.yml +26 -3
- data/config/locales/tr-TR.yml +3 -3
- data/config/locales/uk.yml +15 -0
- data/config/locales/zh-CN.yml +0 -4
- data/config/locales/zh-TW.yml +4 -4
- data/decidim-core.gemspec +78 -0
- data/lib/decidim/acts_as_tree.rb +14 -1
- data/lib/decidim/asset_router/storage.rb +4 -0
- data/lib/decidim/attribute_encryptor.rb +6 -4
- data/lib/decidim/core/engine.rb +7 -3
- data/lib/decidim/core/test/factories.rb +314 -95
- data/lib/decidim/core/test/shared_examples/amendable/amendment_created_event_examples.rb +6 -26
- data/lib/decidim/core/test/shared_examples/amendable/amendment_promoted_event_examples.rb +8 -26
- data/lib/decidim/core/test/shared_examples/comments_examples.rb +32 -0
- data/lib/decidim/core/test/shared_examples/embed_resource_examples.rb +187 -11
- data/lib/decidim/core/test/shared_examples/has_attachment_collections.rb +8 -6
- data/lib/decidim/core/test/shared_examples/has_attachments.rb +4 -4
- data/lib/decidim/core/test/shared_examples/has_category.rb +27 -0
- data/lib/decidim/core/test/shared_examples/has_reference.rb +1 -1
- data/lib/decidim/core/test/shared_examples/has_space_in_mcell_examples.rb +1 -2
- data/lib/decidim/core/test/shared_examples/resource_endorsed_event_examples.rb +6 -3
- data/lib/decidim/core/test/shared_examples/resource_locator_presenter_examples.rb +134 -0
- data/lib/decidim/core/test/shared_examples/searchable_results_examples.rb +1 -1
- data/lib/decidim/core/test/shared_examples/simple_event.rb +50 -2
- data/lib/decidim/core/test.rb +1 -0
- data/lib/decidim/core/version.rb +1 -1
- data/lib/decidim/core.rb +1 -0
- data/lib/decidim/engine_router.rb +17 -4
- data/lib/decidim/events/base_event.rb +9 -2
- data/lib/decidim/events/simple_event.rb +3 -17
- data/lib/decidim/form_builder.rb +13 -1
- data/lib/decidim/has_category.rb +1 -1
- data/lib/decidim/has_conversations.rb +91 -0
- data/lib/decidim/organization_settings.rb +10 -2
- data/lib/decidim/participable.rb +17 -0
- data/lib/decidim/view_model.rb +1 -0
- data/lib/decidim/webpacker/webpack/.modernizrrc +9 -0
- data/lib/premailer/adapter/decidim.rb +5 -4
- data/lib/tasks/decidim_reminders_tasks.rake +1 -0
- data/lib/tasks/upgrade/decidim_fix_categorization.rake +15 -0
- metadata +29 -27
- data/config/environment.rb +0 -3
data/config/locales/uk.yml
CHANGED
@@ -172,6 +172,11 @@ uk:
|
|
172
172
|
ok: Гаразд
|
173
173
|
title: Недостатньо прав через відсутність підтвердження особи
|
174
174
|
collapsible_list:
|
175
|
+
hidden_elements_count:
|
176
|
+
one: і ще %{count}
|
177
|
+
few: і ще %{count}
|
178
|
+
many: і ще %{count}
|
179
|
+
other: і ще %{count}
|
175
180
|
see_less: "(читати менше)"
|
176
181
|
see_more: "(читати далі)"
|
177
182
|
components:
|
@@ -221,6 +226,7 @@ uk:
|
|
221
226
|
already_have_an_account?: Вже маєте обліковий запис?
|
222
227
|
newsletter: Отримувати іноді розсилання зі свіжими новинами
|
223
228
|
newsletter_title: Дозвіл на зв'язок
|
229
|
+
sign_in: Увійти
|
224
230
|
sign_up: Зареєструватися
|
225
231
|
sign_up_as:
|
226
232
|
legend: Зареєструватися як
|
@@ -377,11 +383,17 @@ uk:
|
|
377
383
|
create:
|
378
384
|
error: Бесіда не розпочата. Спробуйте ще раз пізніше
|
379
385
|
index:
|
386
|
+
from: Від
|
380
387
|
no_conversations: У вас ще немає бесід
|
388
|
+
title: Бесіди
|
381
389
|
reply:
|
382
390
|
send: Надіслати
|
391
|
+
title: Відповісти
|
392
|
+
show:
|
393
|
+
title: Бесіда з %{usernames}
|
383
394
|
start:
|
384
395
|
send: Надіслати
|
396
|
+
title: Почати бесіду
|
385
397
|
newsletter_mailer:
|
386
398
|
newsletter:
|
387
399
|
note: Ви отримали цього електронного листа, оскільки ви підписалися на новини щодо %{organization_name}. Ви можете змінити свої налаштування на <a href="%{link}">сторінці сповіщень</a>.
|
@@ -462,6 +474,7 @@ uk:
|
|
462
474
|
profiles:
|
463
475
|
default_officialization_text_for_users: Особу цього учасника прилюдно підтверджено, його ім'я чи роль перевірено на відповідність його справжньому імені та ролі
|
464
476
|
show:
|
477
|
+
conversations: Бесіди
|
465
478
|
followers: Ті, хто стежить
|
466
479
|
following: 'Стежить за:'
|
467
480
|
user:
|
@@ -527,6 +540,8 @@ uk:
|
|
527
540
|
user_conversations:
|
528
541
|
index:
|
529
542
|
close: Закрити
|
543
|
+
show:
|
544
|
+
title: Бесіда з %{usernames}
|
530
545
|
update:
|
531
546
|
error: Повідомлення не надіслано. Спробуйте ще раз пізніше
|
532
547
|
version_author:
|
data/config/locales/zh-CN.yml
CHANGED
@@ -57,9 +57,6 @@ zh-CN:
|
|
57
57
|
booleans:
|
58
58
|
'false': '否'
|
59
59
|
'true': '否'
|
60
|
-
carrierwave:
|
61
|
-
errors:
|
62
|
-
not_inside_organization: 该文件没有附加到任何组织
|
63
60
|
date:
|
64
61
|
formats:
|
65
62
|
decidim_short: "%d/%m/%Y"
|
@@ -215,7 +212,6 @@ zh-CN:
|
|
215
212
|
'1': 创建您的修改
|
216
213
|
'2': 比较您的修改
|
217
214
|
'3': 完成您的修改
|
218
|
-
'4': 发布您的修改
|
219
215
|
anonymous_user: 匿名的
|
220
216
|
application:
|
221
217
|
collection:
|
data/config/locales/zh-TW.yml
CHANGED
@@ -71,10 +71,7 @@ zh-TW:
|
|
71
71
|
'true': '是'
|
72
72
|
carrierwave:
|
73
73
|
errors:
|
74
|
-
file_cannot_be_processed: 無法處理檔案
|
75
|
-
file_resolution_too_large: 檔案解析度過大
|
76
74
|
file_size_too_large: 檔案太大。
|
77
|
-
not_inside_organization: 該文件未附加到任何組織
|
78
75
|
date:
|
79
76
|
formats:
|
80
77
|
decidim_short: "%d/%m/%Y"
|
@@ -317,7 +314,6 @@ zh-TW:
|
|
317
314
|
'1': 創建您的修正案
|
318
315
|
'2': 比較您的修正案
|
319
316
|
'3': 完成您的修正案
|
320
|
-
'4': 發佈您的修正案
|
321
317
|
anonymous_user: 匿名
|
322
318
|
application:
|
323
319
|
collection:
|
@@ -519,6 +515,7 @@ zh-TW:
|
|
519
515
|
newsletter: 偶爾收到包含相關信息的時事通訊。
|
520
516
|
newsletter_title: 聯絡人權限
|
521
517
|
nickname_help: 在 %{organization} 中的別名。只能包含字母、數字、'-' 和 '_'。
|
518
|
+
sign_in: 登入
|
522
519
|
sign_up: 註冊登記
|
523
520
|
sign_up_as:
|
524
521
|
legend: 註冊登記為
|
@@ -1636,6 +1633,8 @@ zh-TW:
|
|
1636
1633
|
updated: 您的帳號已成功升級。
|
1637
1634
|
sessions:
|
1638
1635
|
already_signed_out: 已成功登出。
|
1636
|
+
new:
|
1637
|
+
sign_in: 登入
|
1639
1638
|
signed_in: 已成功登入。
|
1640
1639
|
signed_out: 已成功登出。
|
1641
1640
|
shared:
|
@@ -1644,6 +1643,7 @@ zh-TW:
|
|
1644
1643
|
didn_t_receive_confirmation_instructions: 沒有收到確認的說明嗎?
|
1645
1644
|
didn_t_receive_unlock_instructions: 沒有收到解鎖說明?
|
1646
1645
|
forgot_your_password: 忘記密碼了嗎?
|
1646
|
+
sign_in: 登入
|
1647
1647
|
sign_in_with_provider: 用%{provider} 登錄
|
1648
1648
|
sign_up: 註冊登記
|
1649
1649
|
minimum_password_length:
|
@@ -0,0 +1,78 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
$LOAD_PATH.push File.expand_path("lib", __dir__)
|
4
|
+
|
5
|
+
# Maintain your gem's version:
|
6
|
+
require "decidim/core/version"
|
7
|
+
|
8
|
+
# Describe your gem and declare its dependencies:
|
9
|
+
Gem::Specification.new do |s|
|
10
|
+
s.name = "decidim-core"
|
11
|
+
s.version = Decidim::Core.version
|
12
|
+
s.authors = ["Josep Jaume Rey Peroy", "Marc Riera Casals", "Oriol Gual Oliva"]
|
13
|
+
s.email = ["josepjaume@gmail.com", "mrc2407@gmail.com", "oriolgual@gmail.com"]
|
14
|
+
s.homepage = "https://github.com/decidim/decidim"
|
15
|
+
s.summary = "The core of the Decidim framework."
|
16
|
+
s.description = "Adds core features so other engines can hook into the framework."
|
17
|
+
s.license = "AGPL-3.0"
|
18
|
+
s.required_ruby_version = "~> 3.0.0"
|
19
|
+
|
20
|
+
s.files = Dir.chdir(__dir__) do
|
21
|
+
`git ls-files -z`.split("\x0").select do |f|
|
22
|
+
(File.expand_path(f) == __FILE__) ||
|
23
|
+
f.start_with?(*%w(app/ config/ db/ lib/ Rakefile README.md))
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
s.add_dependency "active_link_to", "~> 1.0"
|
28
|
+
s.add_dependency "acts_as_list", "~> 0.9"
|
29
|
+
s.add_dependency "batch-loader", "~> 1.2"
|
30
|
+
s.add_dependency "browser", "~> 2.7"
|
31
|
+
s.add_dependency "carrierwave", "~> 2.2.5", ">= 2.2.5"
|
32
|
+
s.add_dependency "cells-erb", "~> 0.1.0"
|
33
|
+
s.add_dependency "cells-rails", "~> 0.1.3"
|
34
|
+
s.add_dependency "charlock_holmes", "~> 0.7"
|
35
|
+
s.add_dependency "date_validator", "~> 0.12.0"
|
36
|
+
s.add_dependency "devise", "~> 4.7"
|
37
|
+
s.add_dependency "devise-i18n", "~> 1.2"
|
38
|
+
s.add_dependency "diffy", "~> 3.3"
|
39
|
+
s.add_dependency "doorkeeper", "~> 5.1"
|
40
|
+
s.add_dependency "doorkeeper-i18n", "~> 4.0"
|
41
|
+
s.add_dependency "file_validators", "~> 3.0"
|
42
|
+
s.add_dependency "fog-local", "~> 0.6"
|
43
|
+
s.add_dependency "foundation_rails_helper", "~> 4.0"
|
44
|
+
s.add_dependency "geocoder", "~> 1.8"
|
45
|
+
s.add_dependency "hashdiff", ">= 0.4.0", "< 2.0.0"
|
46
|
+
s.add_dependency "invisible_captcha", "~> 0.12"
|
47
|
+
s.add_dependency "kaminari", "~> 1.2", ">= 1.2.1"
|
48
|
+
s.add_dependency "loofah", "~> 2.19.0"
|
49
|
+
s.add_dependency "mime-types", ">= 1.16", "< 4.0"
|
50
|
+
s.add_dependency "mini_magick", "~> 4.9"
|
51
|
+
s.add_dependency "omniauth", "~> 2.0"
|
52
|
+
s.add_dependency "omniauth-facebook", "~> 5.0"
|
53
|
+
s.add_dependency "omniauth-google-oauth2", "~> 1.0"
|
54
|
+
s.add_dependency "omniauth-rails_csrf_protection", "~> 1.0"
|
55
|
+
s.add_dependency "omniauth-twitter", "~> 1.4"
|
56
|
+
s.add_dependency "paper_trail", "~> 12.0"
|
57
|
+
s.add_dependency "pg", "~> 1.1.4", "< 2"
|
58
|
+
s.add_dependency "pg_search", "~> 2.2"
|
59
|
+
s.add_dependency "premailer-rails", "~> 1.10"
|
60
|
+
s.add_dependency "rack", "~> 2.2", ">= 2.2.3"
|
61
|
+
s.add_dependency "rack-attack", "~> 6.0"
|
62
|
+
s.add_dependency "rails", "~> 6.1.0"
|
63
|
+
s.add_dependency "rails-i18n", "~> 6.0"
|
64
|
+
s.add_dependency "ransack", "~> 2.4.1"
|
65
|
+
s.add_dependency "redis", "~> 4.1"
|
66
|
+
s.add_dependency "request_store", "~> 1.5.0"
|
67
|
+
s.add_dependency "rubyXL", "~> 3.4"
|
68
|
+
s.add_dependency "rubyzip", "~> 2.0"
|
69
|
+
s.add_dependency "seven_zip_ruby", "~> 1.3"
|
70
|
+
s.add_dependency "social-share-button", "~> 1.2", ">= 1.2.1"
|
71
|
+
s.add_dependency "valid_email2", "~> 2.1"
|
72
|
+
s.add_dependency "webpacker", "= 6.0.0.rc.5"
|
73
|
+
s.add_dependency "webpush", "~> 1.1"
|
74
|
+
s.add_dependency "wisper", "~> 2.0"
|
75
|
+
|
76
|
+
s.add_development_dependency "decidim-api", Decidim::Core.version
|
77
|
+
s.add_development_dependency "decidim-dev", Decidim::Core.version
|
78
|
+
end
|
data/lib/decidim/acts_as_tree.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Decidim
|
4
|
+
# Adapted from https://hashrocket.com/blog/posts/recursive-sql-in-activerecord
|
4
5
|
module ActsAsTree
|
5
6
|
extend ActiveSupport::Concern
|
6
7
|
|
@@ -15,10 +16,22 @@ module Decidim
|
|
15
16
|
@parent_item_foreign_key = name
|
16
17
|
end
|
17
18
|
|
19
|
+
def parent_item_polymorphic_type_key(name = nil)
|
20
|
+
return @parent_item_polymorphic_type_key unless name
|
21
|
+
|
22
|
+
@parent_item_polymorphic_type_key = name
|
23
|
+
end
|
24
|
+
|
18
25
|
def tree_for(item)
|
19
26
|
where(Arel.sql("#{table_name}.id IN (#{tree_sql_for(item)})")).order("#{table_name}.id")
|
20
27
|
end
|
21
28
|
|
29
|
+
def polymorphic_condition(item)
|
30
|
+
return "" if parent_item_polymorphic_type_key.blank?
|
31
|
+
|
32
|
+
"AND #{table_name}.#{parent_item_polymorphic_type_key} = '#{item.class.name}'"
|
33
|
+
end
|
34
|
+
|
22
35
|
def tree_sql_for(item)
|
23
36
|
<<-SQL.squish
|
24
37
|
WITH RECURSIVE search_tree(id, path) AS (
|
@@ -28,7 +41,7 @@ module Decidim
|
|
28
41
|
UNION ALL
|
29
42
|
SELECT #{table_name}.id, path || #{table_name}.id
|
30
43
|
FROM search_tree
|
31
|
-
JOIN #{table_name} ON #{table_name}.#{parent_item_foreign_key} = search_tree.id
|
44
|
+
JOIN #{table_name} ON #{table_name}.#{parent_item_foreign_key} = search_tree.id #{polymorphic_condition(item)}
|
32
45
|
WHERE NOT #{table_name}.id = ANY(path)
|
33
46
|
)
|
34
47
|
SELECT id FROM search_tree ORDER BY path
|
@@ -19,13 +19,17 @@ module Decidim
|
|
19
19
|
#
|
20
20
|
# @param options The options for the URL that are the normal route options
|
21
21
|
# Rails route helpers accept
|
22
|
+
# rubocop:disable Style/CaseLikeIf
|
22
23
|
def url(**options)
|
23
24
|
if asset.is_a? ActiveStorage::Attached
|
24
25
|
routes.rails_blob_url(asset.blob, **default_options.merge(options))
|
26
|
+
elsif asset.is_a? ActiveStorage::Blob
|
27
|
+
routes.rails_blob_url(asset, **default_options.merge(options))
|
25
28
|
else
|
26
29
|
routes.rails_representation_url(asset, **default_options.merge(options))
|
27
30
|
end
|
28
31
|
end
|
32
|
+
# rubocop:enable Style/CaseLikeIf
|
29
33
|
|
30
34
|
private
|
31
35
|
|
@@ -19,10 +19,12 @@ module Decidim
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def self.cryptor
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
22
|
+
@cryptor ||= begin
|
23
|
+
key = ActiveSupport::KeyGenerator.new("attribute").generate_key(
|
24
|
+
Rails.application.secrets.secret_key_base, ActiveSupport::MessageEncryptor.key_len
|
25
|
+
)
|
26
|
+
ActiveSupport::MessageEncryptor.new(key)
|
27
|
+
end
|
26
28
|
end
|
27
29
|
end
|
28
30
|
end
|
data/lib/decidim/core/engine.rb
CHANGED
@@ -246,9 +246,13 @@ module Decidim
|
|
246
246
|
end
|
247
247
|
|
248
248
|
initializer "decidim.notifications" do
|
249
|
-
|
250
|
-
|
251
|
-
|
249
|
+
if Rails.autoloaders.zeitwerk_enabled?
|
250
|
+
config.after_initialize do
|
251
|
+
Decidim::EventsManager.subscribe_events!
|
252
|
+
end
|
253
|
+
else
|
254
|
+
config.to_prepare do
|
255
|
+
Decidim::EventsManager.subscribe_events!
|
252
256
|
end
|
253
257
|
end
|
254
258
|
end
|