decidim-core 0.28.0 → 0.28.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (246) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/activity_cell.rb +2 -2
  3. data/app/cells/decidim/address/online.erb +27 -9
  4. data/app/cells/decidim/address/show.erb +27 -12
  5. data/app/cells/decidim/address_cell.rb +29 -0
  6. data/app/cells/decidim/announcement/show.erb +2 -2
  7. data/app/cells/decidim/author/show.erb +5 -5
  8. data/app/cells/decidim/authorization_modal/show.erb +8 -4
  9. data/app/cells/decidim/authorization_modal_cell.rb +1 -0
  10. data/app/cells/decidim/card/show.erb +1 -1
  11. data/app/cells/decidim/card_metadata/show.erb +2 -2
  12. data/app/cells/decidim/card_metadata_cell.rb +3 -3
  13. data/app/cells/decidim/coauthorships_cell.rb +1 -1
  14. data/app/cells/decidim/content_blocks/menu_breadcrumb_last_activity_cell.rb +6 -0
  15. data/app/cells/decidim/content_blocks/participatory_space_hero_cell.rb +20 -4
  16. data/app/cells/decidim/content_blocks/participatory_space_hero_settings_form/show.erb +8 -0
  17. data/app/cells/decidim/content_blocks/participatory_space_hero_settings_form_cell.rb +13 -0
  18. data/app/cells/decidim/content_blocks/participatory_space_metadata_cell.rb +1 -1
  19. data/app/cells/decidim/data_consent/category.erb +1 -1
  20. data/app/cells/decidim/footer_pages_cell.rb +3 -3
  21. data/app/cells/decidim/nav_links/show.erb +2 -2
  22. data/app/cells/decidim/notification/moderated.erb +12 -0
  23. data/app/cells/decidim/notification_cell.rb +5 -1
  24. data/app/cells/decidim/profile/details.erb +1 -1
  25. data/app/cells/decidim/profile/tabs.erb +3 -2
  26. data/app/cells/decidim/progress_bar/show.erb +1 -1
  27. data/app/cells/decidim/progress_bar_cell.rb +2 -0
  28. data/app/cells/decidim/report_button/flag_modal.erb +5 -1
  29. data/app/cells/decidim/resource_types_filter/show.erb +3 -3
  30. data/app/cells/decidim/statistic/show.erb +2 -2
  31. data/app/cells/decidim/tags_cell.rb +3 -1
  32. data/app/cells/decidim/upload_modal/modal.erb +1 -2
  33. data/app/commands/decidim/create_omniauth_registration.rb +1 -3
  34. data/app/commands/decidim/messaging/reply_to_conversation.rb +3 -0
  35. data/app/commands/decidim/messaging/start_conversation.rb +3 -0
  36. data/app/controllers/concerns/decidim/devise_authentication_methods.rb +36 -0
  37. data/app/controllers/concerns/decidim/force_authentication.rb +1 -1
  38. data/app/controllers/concerns/decidim/paginable.rb +1 -1
  39. data/app/controllers/concerns/decidim/use_organization_time_zone.rb +1 -1
  40. data/app/controllers/decidim/devise/omniauth_registrations_controller.rb +1 -22
  41. data/app/controllers/decidim/devise/sessions_controller.rb +1 -24
  42. data/app/controllers/decidim/gamification/badges_controller.rb +2 -0
  43. data/app/controllers/decidim/links_controller.rb +15 -2
  44. data/app/events/decidim/welcome_notification_event.rb +6 -9
  45. data/app/helpers/concerns/decidim/flash_helper_extensions.rb +2 -2
  46. data/app/helpers/decidim/application_helper.rb +0 -18
  47. data/app/helpers/decidim/cells_paginate_helper.rb +1 -1
  48. data/app/helpers/decidim/check_boxes_tree_helper.rb +7 -8
  49. data/app/helpers/decidim/layout_helper.rb +1 -1
  50. data/app/helpers/decidim/map_helper.rb +1 -1
  51. data/app/helpers/decidim/menu_helper.rb +2 -0
  52. data/app/helpers/decidim/newsletters_helper.rb +83 -16
  53. data/app/helpers/decidim/paginate_helper.rb +1 -1
  54. data/app/helpers/decidim/sanitize_helper.rb +9 -0
  55. data/app/helpers/decidim/social_share_button_helper.rb +1 -1
  56. data/app/helpers/decidim/user_profile_helper.rb +7 -2
  57. data/app/mailers/decidim/application_mailer.rb +40 -6
  58. data/app/mailers/decidim/messaging/conversation_mailer.rb +3 -72
  59. data/app/models/decidim/push_notification_message.rb +38 -0
  60. data/app/packs/entrypoints/decidim_overrides.scss +2 -0
  61. data/app/packs/images/decidim/.keep +0 -0
  62. data/app/packs/src/decidim/a11y.js +15 -1
  63. data/app/packs/src/decidim/abide_form_validator_fixer.js +44 -0
  64. data/app/packs/src/decidim/account_form.js +1 -1
  65. data/app/packs/src/decidim/data_consent/consent_manager.test.js +1 -1
  66. data/app/packs/src/decidim/data_consent/index.js +1 -1
  67. data/app/packs/src/decidim/direct_uploads/upload_field.js +1 -1
  68. data/app/packs/src/decidim/direct_uploads/upload_modal.js +5 -5
  69. data/app/packs/src/decidim/editor/extensions/hashtag/index.js +1 -1
  70. data/app/packs/src/decidim/editor/extensions/mention/index.js +1 -1
  71. data/app/packs/src/decidim/editor/extensions/video_embed/index.js +3 -0
  72. data/app/packs/src/decidim/editor/test/editor/create.test.js +1 -1
  73. data/app/packs/src/decidim/editor/test/extensions/bold.test.js +2 -3
  74. data/app/packs/src/decidim/editor/test/extensions/character_count.test.js +2 -2
  75. data/app/packs/src/decidim/editor/test/extensions/decidim_kit.test.js +2 -3
  76. data/app/packs/src/decidim/editor/test/extensions/dialog.test.js +2 -2
  77. data/app/packs/src/decidim/editor/test/extensions/emoji.test.js +2 -2
  78. data/app/packs/src/decidim/editor/test/extensions/hashtag.test.js +2 -2
  79. data/app/packs/src/decidim/editor/test/extensions/heading.test.js +2 -2
  80. data/app/packs/src/decidim/editor/test/extensions/image.test.js +4 -4
  81. data/app/packs/src/decidim/editor/test/extensions/indent.test.js +2 -2
  82. data/app/packs/src/decidim/editor/test/extensions/link.test.js +3 -3
  83. data/app/packs/src/decidim/editor/test/extensions/mention.test.js +2 -2
  84. data/app/packs/src/decidim/editor/test/extensions/ordered_list.test.js +2 -2
  85. data/app/packs/src/decidim/editor/test/extensions/video_embed.test.js +3 -3
  86. data/app/packs/src/decidim/editor/test/helpers.js +5 -4
  87. data/app/packs/src/decidim/editor/test/toolbar/basic.test.js +2 -2
  88. data/app/packs/src/decidim/editor/test/toolbar/content.test.js +2 -2
  89. data/app/packs/src/decidim/editor/test/toolbar/full.test.js +3 -3
  90. data/app/packs/src/decidim/editor/test/toolbar/shared/behaves_like_basic.js +6 -6
  91. data/app/packs/src/decidim/editor/test/toolbar/shared/behaves_like_basic_block.js +2 -2
  92. data/app/packs/src/decidim/editor/test/toolbar/shared/behaves_like_basic_formatting.js +1 -1
  93. data/app/packs/src/decidim/editor/test/toolbar/shared/behaves_like_basic_indent.js +2 -2
  94. data/app/packs/src/decidim/editor/test/toolbar/shared/behaves_like_basic_link.js +2 -2
  95. data/app/packs/src/decidim/editor/test/toolbar/shared/behaves_like_basic_list.js +2 -2
  96. data/app/packs/src/decidim/editor/test/toolbar/shared/behaves_like_basic_styling.js +2 -2
  97. data/app/packs/src/decidim/editor/test/toolbar/shared/behaves_like_content.js +7 -7
  98. data/app/packs/src/decidim/editor/test/toolbar/shared/behaves_like_content_styling.js +2 -2
  99. data/app/packs/src/decidim/editor/test/toolbar/shared/context.js +1 -1
  100. data/app/packs/src/decidim/editor/test/utilities/paste_transform.test.js +2 -2
  101. data/app/packs/src/decidim/external_domain_warning.js +13 -0
  102. data/app/packs/src/decidim/external_domain_warning.test.js +1 -1
  103. data/app/packs/src/decidim/external_link.js +48 -9
  104. data/app/packs/src/decidim/external_link.test.js +1 -1
  105. data/app/packs/src/decidim/focus_guard.js +8 -20
  106. data/app/packs/src/decidim/form_filter.component_for_testing.js +1 -1
  107. data/app/packs/src/decidim/form_filter.js +3 -3
  108. data/app/packs/src/decidim/geocoding/attach_input.js +1 -1
  109. data/app/packs/src/decidim/i18n.test.js +1 -1
  110. data/app/packs/src/decidim/index.js +33 -2
  111. data/app/packs/src/decidim/input_hashtags.js +1 -1
  112. data/app/packs/src/decidim/input_mentions.js +1 -1
  113. data/app/packs/src/decidim/input_multiple_mentions.js +1 -1
  114. data/app/packs/src/decidim/sw/index.js +3 -3
  115. data/app/packs/src/decidim/user_registrations.js +1 -1
  116. data/app/packs/src/decidim/vizzs/index.js +1 -1
  117. data/app/packs/stylesheets/decidim/_accordion.scss +2 -2
  118. data/app/packs/stylesheets/decidim/_cards.scss +4 -4
  119. data/app/packs/stylesheets/decidim/_dropdown.scss +2 -2
  120. data/app/packs/stylesheets/decidim/_layout.scss +7 -7
  121. data/app/packs/stylesheets/decidim/_modal_update.scss +1 -3
  122. data/app/packs/stylesheets/decidim/application.scss +0 -3
  123. data/app/packs/stylesheets/decidim/decidim_application.scss +4 -0
  124. data/app/packs/stylesheets/decidim/legacy/leaflet.scss +88 -107
  125. data/app/presenters/decidim/admin_log/oauth_application_resource_presenter.rb +1 -1
  126. data/app/presenters/decidim/admin_log/organization_presenter.rb +1 -1
  127. data/app/presenters/decidim/log/diff_presenter.rb +1 -1
  128. data/app/presenters/decidim/log/resource_presenter.rb +7 -1
  129. data/app/presenters/decidim/notification_to_mailer_presenter.rb +9 -0
  130. data/app/services/decidim/events_manager.rb +6 -0
  131. data/app/services/decidim/iframe_disabler.rb +4 -0
  132. data/app/services/decidim/log/diff_changeset_calculator.rb +1 -1
  133. data/app/services/decidim/push_notification_message_sender.rb +40 -0
  134. data/app/services/decidim/send_push_notification.rb +22 -8
  135. data/app/uploaders/decidim/background_image_uploader.rb +11 -0
  136. data/app/views/decidim/account/show.html.erb +2 -2
  137. data/app/views/decidim/application/_collection.html.erb +2 -2
  138. data/app/views/decidim/application/_document.html.erb +3 -3
  139. data/app/views/decidim/devise/registrations/new.html.erb +2 -2
  140. data/app/views/decidim/endorsements/update_buttons_and_counters.js.erb +2 -1
  141. data/app/views/decidim/gamification/badges/index.html.erb +34 -33
  142. data/app/views/decidim/links/_modal.html.erb +1 -1
  143. data/app/views/decidim/links/new.html.erb +3 -1
  144. data/app/views/decidim/manifests/show.json.erb +1 -1
  145. data/app/views/decidim/messaging/conversations/create.js.erb +1 -1
  146. data/app/views/decidim/notifications_digest_mailer/_email_content.html.erb +7 -0
  147. data/app/views/decidim/notifications_settings/show.html.erb +6 -6
  148. data/app/views/decidim/offline/show.html.erb +15 -9
  149. data/app/views/decidim/pages/_tabbed.html.erb +2 -2
  150. data/app/views/decidim/searches/_filters.html.erb +2 -2
  151. data/app/views/decidim/shared/_filters.html.erb +2 -2
  152. data/app/views/decidim/shared/_orders.html.erb +2 -2
  153. data/app/views/decidim/shared/filters/_collection.html.erb +5 -3
  154. data/app/views/decidim/shared/filters/_dropdown_label.html.erb +21 -19
  155. data/app/views/layouts/decidim/_head.html.erb +1 -0
  156. data/app/views/layouts/decidim/_js_configuration.html.erb +3 -1
  157. data/app/views/layouts/decidim/_wrapper.html.erb +1 -1
  158. data/app/views/layouts/decidim/footer/_main_links.html.erb +3 -1
  159. data/app/views/layouts/decidim/footer/_main_social_media_links.html.erb +5 -5
  160. data/app/views/layouts/decidim/footer/_mini.html.erb +2 -2
  161. data/app/views/layouts/decidim/header/_main_links_desktop.html.erb +4 -2
  162. data/app/views/layouts/decidim/header/_menu_breadcrumb_items.html.erb +2 -0
  163. data/app/views/layouts/decidim/header/_menu_breadcrumb_mobile_tablet.html.erb +1 -1
  164. data/app/views/layouts/decidim/shared/_layout_user_profile.html.erb +2 -2
  165. data/config/assets.rb +1 -0
  166. data/config/locales/ar.yml +60 -8
  167. data/config/locales/bg.yml +909 -2
  168. data/config/locales/ca.yml +31 -24
  169. data/config/locales/cs.yml +7 -3
  170. data/config/locales/de.yml +37 -30
  171. data/config/locales/el.yml +11 -7
  172. data/config/locales/en.yml +10 -3
  173. data/config/locales/es-MX.yml +17 -10
  174. data/config/locales/es-PY.yml +17 -10
  175. data/config/locales/es.yml +59 -52
  176. data/config/locales/eu.yml +26 -10
  177. data/config/locales/fi-plain.yml +11 -4
  178. data/config/locales/fi.yml +14 -7
  179. data/config/locales/fr-CA.yml +14 -7
  180. data/config/locales/fr.yml +14 -7
  181. data/config/locales/ga-IE.yml +9 -0
  182. data/config/locales/gl.yml +5 -2
  183. data/config/locales/he-IL.yml +1 -0
  184. data/config/locales/hu.yml +264 -8
  185. data/config/locales/id-ID.yml +0 -2
  186. data/config/locales/it.yml +9 -6
  187. data/config/locales/ja.yml +14 -7
  188. data/config/locales/kaa.yml +5 -0
  189. data/config/locales/lb.yml +9 -6
  190. data/config/locales/lt.yml +8 -12
  191. data/config/locales/lv.yml +8 -3
  192. data/config/locales/nl.yml +8 -3
  193. data/config/locales/no.yml +9 -6
  194. data/config/locales/pl.yml +616 -2
  195. data/config/locales/pt-BR.yml +202 -19
  196. data/config/locales/pt.yml +9 -6
  197. data/config/locales/ro-RO.yml +10 -5
  198. data/config/locales/ru.yml +15 -2
  199. data/config/locales/sk.yml +8 -3
  200. data/config/locales/sl.yml +8 -0
  201. data/config/locales/sv.yml +32 -6
  202. data/config/locales/tr-TR.yml +24 -9
  203. data/config/locales/uk.yml +22 -2
  204. data/config/locales/zh-CN.yml +0 -6
  205. data/config/locales/zh-TW.yml +10 -11
  206. data/decidim-core.gemspec +90 -0
  207. data/lib/decidim/asset_router/storage.rb +2 -0
  208. data/lib/decidim/attribute_encryptor.rb +6 -4
  209. data/lib/decidim/attributes/time_with_zone.rb +1 -1
  210. data/lib/decidim/core/engine.rb +7 -6
  211. data/lib/decidim/core/seeds.rb +37 -33
  212. data/lib/decidim/core/test/factories.rb +296 -89
  213. data/lib/decidim/core/test/shared_examples/amendable/amendment_created_event_examples.rb +6 -26
  214. data/lib/decidim/core/test/shared_examples/amendable/amendment_promoted_event_examples.rb +8 -26
  215. data/lib/decidim/core/test/shared_examples/comments_examples.rb +76 -6
  216. data/lib/decidim/core/test/shared_examples/has_attachment_collections.rb +8 -6
  217. data/lib/decidim/core/test/shared_examples/has_attachments.rb +8 -8
  218. data/lib/decidim/core/test/shared_examples/has_category.rb +27 -0
  219. data/lib/decidim/core/test/shared_examples/has_reference.rb +1 -1
  220. data/lib/decidim/core/test/shared_examples/has_space_in_mcell_examples.rb +1 -1
  221. data/lib/decidim/core/test/shared_examples/logo_email.rb +2 -2
  222. data/lib/decidim/core/test/shared_examples/map_examples.rb +3 -0
  223. data/lib/decidim/core/test/shared_examples/resource_endorsed_event_examples.rb +5 -2
  224. data/lib/decidim/core/test/shared_examples/resource_locator_presenter_examples.rb +134 -0
  225. data/lib/decidim/core/test/shared_examples/simple_event.rb +18 -2
  226. data/lib/decidim/core/test.rb +1 -0
  227. data/lib/decidim/core/version.rb +1 -1
  228. data/lib/decidim/core.rb +7 -1
  229. data/lib/decidim/engine_router.rb +17 -4
  230. data/lib/decidim/events/base_event.rb +7 -3
  231. data/lib/decidim/events/simple_event.rb +3 -17
  232. data/lib/decidim/form_builder.rb +8 -2
  233. data/lib/decidim/has_category.rb +1 -1
  234. data/lib/decidim/has_conversations.rb +91 -0
  235. data/lib/decidim/organization_settings.rb +10 -2
  236. data/lib/decidim/participable.rb +17 -0
  237. data/lib/decidim/upgrade/wysiwyg_migrator.rb +7 -0
  238. data/lib/decidim/view_model.rb +1 -0
  239. data/lib/decidim/webpacker/webpack/.modernizrrc +9 -0
  240. data/lib/premailer/adapter/decidim.rb +5 -4
  241. data/lib/tasks/decidim_reminders_tasks.rake +1 -0
  242. data/lib/tasks/upgrade/decidim_fix_categorization.rake +15 -0
  243. metadata +26 -27
  244. data/app/views/decidim/searches/index.js.erb +0 -7
  245. data/config/brakeman.ignore +0 -37
  246. data/config/environment.rb +0 -3
@@ -74,10 +74,7 @@ zh-TW:
74
74
  'true': '是'
75
75
  carrierwave:
76
76
  errors:
77
- file_cannot_be_processed: 無法處理檔案
78
- file_resolution_too_large: 檔案解析度過大
79
77
  file_size_too_large: 檔案太大。
80
- not_inside_organization: 該文件未附加到任何組織
81
78
  date:
82
79
  formats:
83
80
  decidim_short: "%d/%m/%Y"
@@ -318,7 +315,6 @@ zh-TW:
318
315
  '1': 創建您的修正案
319
316
  '2': 比較您的修正案
320
317
  '3': 完成您的修正案
321
- '4': 發佈您的修正案
322
318
  anonymous_user: 匿名
323
319
  application:
324
320
  document:
@@ -464,8 +460,6 @@ zh-TW:
464
460
  description: 說明
465
461
  footer_sub_hero:
466
462
  name: 頁尾子英雄橫幅
467
- hero:
468
- name: 英雄圖像
469
463
  hero_settings_form:
470
464
  background_image: 背景圖片
471
465
  welcome_text: 歡迎文字
@@ -519,6 +513,7 @@ zh-TW:
519
513
  registrations:
520
514
  new:
521
515
  already_have_an_account?: 已經有帳號了嗎?
516
+ log_in: 登入
522
517
  newsletter: 偶爾收到包含相關信息的時事通訊。
523
518
  newsletter_title: 聯絡人權限
524
519
  sign_up: 註冊登記
@@ -824,6 +819,7 @@ zh-TW:
824
819
  filename: 檔案名稱
825
820
  remove: 移除
826
821
  replace: 替換
822
+ save: 儲存
827
823
  title: 標題
828
824
  title_required: 標題為必填欄位!
829
825
  uploaded: 已上傳
@@ -1106,7 +1102,6 @@ zh-TW:
1106
1102
  token_error: 該連結已過期。
1107
1103
  unsubscribe: 取消訂閱
1108
1104
  newsletters_opt_in:
1109
- unathorized: 抱歉,此連結已不再可用。
1110
1105
  update:
1111
1106
  error: 儲存通訊設定時出現問題。
1112
1107
  success: 成功更新電子報設定.
@@ -1168,7 +1163,6 @@ zh-TW:
1168
1163
  success: 您的通知設定已成功更新。
1169
1164
  offline:
1170
1165
  show:
1171
- message: 看起來您目前處於離線狀態,請稍後再試。
1172
1166
  retry: 重試
1173
1167
  open_data:
1174
1168
  not_available_yet: 開放數據檔案尚未可用,請稍後再試。
@@ -1192,11 +1186,13 @@ zh-TW:
1192
1186
  register: 註冊
1193
1187
  hero:
1194
1188
  participate: 參與
1189
+ participate_title: 參與平台的流程
1195
1190
  welcome: 歡迎來到 %{organization}!
1196
1191
  statistics:
1197
1192
  headline: '%{organization} 的目前狀態'
1198
1193
  sub_hero:
1199
1194
  register: 註冊
1195
+ register_title: 註冊以創建帳戶
1200
1196
  index:
1201
1197
  standalone_pages: 頁
1202
1198
  subheading: 瀏覽 %{name} 的幫助頁面
@@ -1570,12 +1566,16 @@ zh-TW:
1570
1566
  signed_up_but_unconfirmed: 確認信件已送至您的 Email 信箱,請點擊信件內連結以啓動您的帳號。
1571
1567
  update_needs_confirmation: 您已經成功的更新帳號資訊,但我們仍需確認您的電子信箱,請至新信箱收信並點擊連結以確認您的新電子郵件帳號。
1572
1568
  updated: 您的帳號已成功升級。
1569
+ sessions:
1570
+ new:
1571
+ log_in: 登入
1573
1572
  shared:
1574
1573
  links:
1575
1574
  back: 返回
1576
1575
  didn_t_receive_confirmation_instructions: 沒有收到確認的說明嗎?
1577
1576
  didn_t_receive_unlock_instructions: 沒有收到解鎖說明?
1578
1577
  forgot_your_password: 忘記密碼了嗎?
1578
+ log_in: 登入
1579
1579
  sign_up: 註冊登記
1580
1580
  minimum_password_length:
1581
1581
  other: "One\n(最少%{count} 個字符)\n\nOther\n(最少%{count} 個字符)"
@@ -1591,16 +1591,13 @@ zh-TW:
1591
1591
  button: 新增Emoji
1592
1592
  categories:
1593
1593
  activities: 活躍狀態
1594
- animals-nature: 動物與自然
1595
1594
  custom: 自訂
1596
1595
  flags: 旗幟
1597
- food-drink: 食物 & 飲料
1598
1596
  objects: 目標
1599
1597
  people-body: 人與身體
1600
1598
  recents: 最近使用的
1601
1599
  smileys-emotion: 表情符號和情感
1602
1600
  symbols: 符號
1603
- travel-places: 旅遊與地點
1604
1601
  error:
1605
1602
  load: 無法載入表情符號
1606
1603
  recents:
@@ -1703,9 +1700,11 @@ zh-TW:
1703
1700
  data_consent_settings: Cookie 設定
1704
1701
  decidim_logo: Decidim 商標
1705
1702
  download_open_data: 下載開放數據檔案
1703
+ log_in: 登入
1706
1704
  made_with_open_source: 使用<a target="_blank" href="https://github.com/decidim/decidim">自由軟體</a>建立的網站。
1707
1705
  sign_up: 註冊
1708
1706
  header:
1707
+ log_in: 登入
1709
1708
  main_menu: 主選單
1710
1709
  user_menu: 使用者選單
1711
1710
  impersonation_warning:
@@ -0,0 +1,90 @@
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://decidim.org"
15
+ s.metadata = {
16
+ "bug_tracker_uri" => "https://github.com/decidim/decidim/issues",
17
+ "documentation_uri" => "https://docs.decidim.org/",
18
+ "funding_uri" => "https://opencollective.com/decidim",
19
+ "homepage_uri" => "https://decidim.org",
20
+ "source_code_uri" => "https://github.com/decidim/decidim"
21
+ }
22
+ s.summary = "The core of the Decidim framework."
23
+ s.description = "Adds core features so other engines can hook into the framework."
24
+ s.license = "AGPL-3.0"
25
+ s.required_ruby_version = "~> 3.1.0"
26
+
27
+ s.files = Dir.chdir(__dir__) do
28
+ `git ls-files -z`.split("\x0").select do |f|
29
+ (File.expand_path(f) == __FILE__) ||
30
+ f.start_with?(*%w(app/ config/ db/ lib/ Rakefile README.md))
31
+ end
32
+ end
33
+
34
+ s.add_dependency "active_link_to", "~> 1.0"
35
+ s.add_dependency "acts_as_list", "~> 1.0"
36
+ s.add_dependency "batch-loader", "~> 1.2"
37
+ s.add_dependency "browser", "~> 2.7"
38
+ s.add_dependency "carrierwave", "~> 2.2.5", ">= 2.2.5"
39
+ s.add_dependency "cells-erb", "~> 0.1.0"
40
+ s.add_dependency "cells-rails", "~> 0.1.3"
41
+ s.add_dependency "charlock_holmes", "~> 0.7"
42
+ s.add_dependency "date_validator", "~> 0.12.0"
43
+ s.add_dependency "devise", "~> 4.7"
44
+ s.add_dependency "devise-i18n", "~> 1.2", "< 1.11.1"
45
+ s.add_dependency "diffy", "~> 3.3"
46
+ s.add_dependency "doorkeeper", "~> 5.6", ">= 5.6.6"
47
+ s.add_dependency "doorkeeper-i18n", "~> 4.0"
48
+ s.add_dependency "file_validators", "~> 3.0"
49
+ s.add_dependency "fog-local", "~> 0.6"
50
+ s.add_dependency "foundation_rails_helper", "~> 4.0"
51
+ s.add_dependency "geocoder", "~> 1.8"
52
+ s.add_dependency "hashdiff", ">= 0.4.0", "< 2.0.0"
53
+ s.add_dependency "invisible_captcha", "~> 0.12"
54
+ s.add_dependency "kaminari", "~> 1.2", ">= 1.2.1"
55
+ s.add_dependency "loofah", "~> 2.19", ">= 2.19.1"
56
+ s.add_dependency "mime-types", ">= 1.16", "< 4.0"
57
+ s.add_dependency "mini_magick", "~> 4.9"
58
+ s.add_dependency "net-smtp", "~> 0.3.1"
59
+ s.add_dependency "omniauth", "~> 2.0"
60
+ s.add_dependency "omniauth-facebook", "~> 5.0"
61
+ s.add_dependency "omniauth-google-oauth2", "~> 1.0"
62
+ s.add_dependency "omniauth-rails_csrf_protection", "~> 1.0"
63
+ s.add_dependency "omniauth-twitter", "~> 1.4"
64
+ s.add_dependency "paper_trail", "~> 12.0"
65
+ s.add_dependency "pg", "~> 1.4.0", "< 2"
66
+ s.add_dependency "pg_search", "~> 2.2"
67
+ s.add_dependency "premailer-rails", "~> 1.10"
68
+ # We need psych 4+ in order to use the `aliases: true` option,
69
+ # see https://stackoverflow.com/questions/71191685/visit-psych-nodes-alias-unknown-alias-default-psychbadalias
70
+ # Also note that we need Rails 6.1.5+,
71
+ # see https://gist.github.com/yahonda/2776d8d7b6ea7045359f38c10449937b
72
+ s.add_dependency "psych", "~> 4.0"
73
+ s.add_dependency "rack", "~> 2.2", ">= 2.2.6.4"
74
+ s.add_dependency "rack-attack", "~> 6.0"
75
+ s.add_dependency "rails", "~> 6.1.7", ">=6.1.7.4"
76
+ s.add_dependency "rails-i18n", "~> 6.0"
77
+ s.add_dependency "ransack", "~> 3.2.1"
78
+ s.add_dependency "redis", "~> 4.1"
79
+ s.add_dependency "request_store", "~> 1.5.0"
80
+ s.add_dependency "rubyXL", "~> 3.4"
81
+ s.add_dependency "rubyzip", "~> 2.0"
82
+ s.add_dependency "seven_zip_ruby", "~> 1.3"
83
+ s.add_dependency "shakapacker", "~> 7.1.0"
84
+ s.add_dependency "valid_email2", "~> 4.0"
85
+ s.add_dependency "web-push", "~> 3.0"
86
+ s.add_dependency "wisper", "~> 2.0"
87
+
88
+ s.add_development_dependency "decidim-api", Decidim::Core.version
89
+ s.add_development_dependency "decidim-dev", Decidim::Core.version
90
+ end
@@ -22,6 +22,8 @@ module Decidim
22
22
  def url(**options)
23
23
  if asset.is_a? ActiveStorage::Attached
24
24
  routes.rails_blob_url(asset.blob, **default_options.merge(options))
25
+ elsif asset.is_a? ActiveStorage::Blob
26
+ routes.rails_blob_url(asset, **default_options.merge(options))
25
27
  else
26
28
  representation_url(**options)
27
29
  end
@@ -19,10 +19,12 @@ module Decidim
19
19
  end
20
20
 
21
21
  def self.cryptor
22
- key = ActiveSupport::KeyGenerator.new("attribute").generate_key(
23
- Rails.application.secrets.secret_key_base, ActiveSupport::MessageEncryptor.key_len
24
- )
25
- ActiveSupport::MessageEncryptor.new(key)
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
@@ -19,7 +19,7 @@ module Decidim
19
19
  fallback = super
20
20
  return fallback unless fallback.is_a?(Time)
21
21
 
22
- ActiveSupport::TimeWithZone.new(fallback, Time.zone)
22
+ Time.zone.parse(fallback.strftime("%F %T"))
23
23
  end
24
24
  end
25
25
  end
@@ -379,16 +379,17 @@ module Decidim
379
379
 
380
380
  initializer "decidim_core.menu" do
381
381
  Decidim::Core::Menu.register_menu!
382
- end
383
-
384
- initializer "decidim_core.user_menu" do
385
382
  Decidim::Core::Menu.register_user_menu!
386
383
  end
387
384
 
388
385
  initializer "decidim_core.notifications" do
389
- config.to_prepare do
390
- Decidim::EventsManager.subscribe(/^decidim\.events\./) do |event_name, data|
391
- EventPublisherJob.perform_later(event_name, data)
386
+ if Rails.autoloaders.zeitwerk_enabled?
387
+ config.after_initialize do
388
+ Decidim::EventsManager.subscribe_events!
389
+ end
390
+ else
391
+ config.to_prepare do
392
+ Decidim::EventsManager.subscribe_events!
392
393
  end
393
394
  end
394
395
  end
@@ -25,11 +25,11 @@ module Decidim
25
25
  smtp_email = ENV.fetch("SMTP_FROM_EMAIL", ::Faker::Internet.email)
26
26
 
27
27
  primary_color, secondary_color, tertiary_color = [
28
- ["#e02d2d", "#155abf", "#ebc34b"],
29
- ["#4caf50", "#a0309e", "#a8753e"],
30
- ["#e91e63", "#1ee9a5", "#e9b61e"],
31
- ["#009688", "#d12c26", "#b4a110"],
32
- ["#ff9800", "#00bcd4", "#ea0094"]
28
+ ["#bf4044", "#09780e", "#3584e4"],
29
+ ["#09780e", "#4448bb", "#da565b"],
30
+ ["#bf4086", "#487511", "#5384ac"],
31
+ ["#086263", "#811380", "#abac53"],
32
+ ["#5340bf", "#a82c2c", "#40bf53"]
33
33
  ].sample
34
34
 
35
35
  colors = {
@@ -77,34 +77,12 @@ module Decidim
77
77
  )
78
78
 
79
79
  if organization.top_scopes.none?
80
- province = Decidim::ScopeType.create!(
81
- name: Decidim::Faker::Localized.literal("province"),
82
- plural: Decidim::Faker::Localized.literal("provinces"),
83
- organization:
84
- )
85
-
86
- municipality = Decidim::ScopeType.create!(
87
- name: Decidim::Faker::Localized.literal("municipality"),
88
- plural: Decidim::Faker::Localized.literal("municipalities"),
89
- organization:
90
- )
91
-
92
- 3.times do |time|
93
- parent = Decidim::Scope.create!(
94
- name: Decidim::Faker::Localized.literal(::Faker::Address.unique.state),
95
- code: "#{::Faker::Address.country_code}_#{time}",
96
- scope_type: province,
97
- organization:
98
- )
99
-
80
+ province = create_scope_type!(name: "province", plural: "provinces")
81
+ municipality = create_scope_type!(name: "municipality", plural: "municipalities")
82
+ 3.times do
83
+ parent = create_scope!(scope_type: province, parent: nil)
100
84
  5.times do
101
- Decidim::Scope.create!(
102
- name: Decidim::Faker::Localized.literal(::Faker::Address.unique.city),
103
- code: "#{parent.code}-#{::Faker::Address.unique.state_abbr}",
104
- scope_type: municipality,
105
- organization:,
106
- parent:
107
- )
85
+ create_scope!(scope_type: municipality, parent:)
108
86
  end
109
87
  end
110
88
  end
@@ -231,7 +209,7 @@ module Decidim
231
209
 
232
210
  oauth_application.organization_logo.attach(io: File.open(File.join(seeds_root, "homepage_image.jpg")), filename: "organization_logo.jpg", content_type: "image/jpeg")
233
211
 
234
- Decidim::System::CreateDefaultContentBlocks.call(organization)
212
+ Decidim::ContentBlocksCreator.new(organization).create_default!
235
213
 
236
214
  hero_content_block = Decidim::ContentBlock.find_by(organization:, manifest_name: :hero, scope_name: :homepage)
237
215
  hero_content_block.images_container.background_image = create_blob!(seeds_file: "homepage_image.jpg", filename: "homepage_image.jpg", content_type: "image/jpeg")
@@ -242,6 +220,32 @@ module Decidim
242
220
  hero_content_block.save!
243
221
  end
244
222
  # rubocop:enable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity, Rails/Output
223
+
224
+ private
225
+
226
+ def create_scope_type!(name:, plural:)
227
+ Decidim::ScopeType.create!(
228
+ name: Decidim::Faker::Localized.literal(name),
229
+ plural: Decidim::Faker::Localized.literal(plural),
230
+ organization:
231
+ )
232
+ end
233
+
234
+ def create_scope!(scope_type:, parent:)
235
+ n = rand(99_999)
236
+ code = parent.nil? ? "#{::Faker::Address.country_code}_#{n}" : "#{parent.code}-#{::Faker::Address.postcode}_#{n}"
237
+ name = [::Faker::Address.state, ::Faker::Address.city].sample
238
+
239
+ Decidim::Scope.create!(
240
+ name: Decidim::Faker::Localized.literal(name),
241
+ code:,
242
+ scope_type:,
243
+ organization:,
244
+ parent:
245
+ )
246
+ rescue ActiveRecord::RecordInvalid
247
+ retry
248
+ end
245
249
  end
246
250
  end
247
251
  end