decidim-core 0.26.0 → 0.26.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of decidim-core might be problematic. Click here for more details.

Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/card_m_cell.rb +1 -1
  3. data/app/cells/decidim/diff/diff_mode_dropdown.erb +13 -8
  4. data/app/cells/decidim/diff/diff_mode_html.erb +13 -8
  5. data/app/cells/decidim/diff/show.erb +5 -3
  6. data/app/cells/decidim/endorsement_buttons_cell.rb.2 +211 -0
  7. data/app/cells/decidim/endorsers_list/show.erb +1 -1
  8. data/app/cells/decidim/fingerprint/show.erb +1 -1
  9. data/app/cells/decidim/followers/show.erb +1 -1
  10. data/app/cells/decidim/following/show.erb +2 -2
  11. data/app/cells/decidim/groups/show.erb +1 -1
  12. data/app/cells/decidim/members/show.erb +1 -1
  13. data/app/cells/decidim/profile_sidebar/show.erb +1 -1
  14. data/app/cells/decidim/user_conversation/messages.erb +1 -1
  15. data/app/cells/decidim/user_conversation_cell.rb +4 -0
  16. data/app/cells/decidim/user_conversations/add_conversation_users.erb +1 -1
  17. data/app/cells/decidim/version_cell.rb +1 -1
  18. data/app/cells/decidim/versions_list_cell.rb +1 -1
  19. data/app/cells/decidim/versions_list_item/show.erb +2 -2
  20. data/app/commands/decidim/messaging/reply_to_conversation.rb +4 -1
  21. data/app/commands/decidim/unendorse_resource.rb +5 -4
  22. data/app/controllers/decidim/application_controller.rb +1 -0
  23. data/app/controllers/decidim/components/base_controller.rb +0 -1
  24. data/app/events/decidim/amendable/amendment_base_event.rb +1 -1
  25. data/app/forms/decidim/messaging/message_form.rb +1 -1
  26. data/app/helpers/decidim/endorsable_helper.rb +7 -6
  27. data/app/helpers/decidim/social_share_button_helper.rb +26 -0
  28. data/app/helpers/decidim/twitter_search_helper.rb +14 -0
  29. data/app/packs/entrypoints/decidim_core.js +3 -0
  30. data/app/packs/src/decidim/back_to_list.js +26 -0
  31. data/app/packs/src/decidim/dialog_mode.js +11 -99
  32. data/app/packs/src/decidim/dialog_mode.test.js +17 -4
  33. data/app/packs/src/decidim/diff_mode_dropdown.js +3 -3
  34. data/app/packs/src/decidim/dropdowns_menus.js +1 -0
  35. data/app/packs/src/decidim/focus_guard.js +142 -0
  36. data/app/packs/src/decidim/form_filter.js +17 -1
  37. data/app/packs/src/decidim/form_remote.js +38 -0
  38. data/app/packs/src/decidim/index.js +15 -0
  39. data/app/packs/src/decidim/input_character_counter.js +4 -1
  40. data/app/packs/src/decidim/input_emoji.js +28 -5
  41. data/app/packs/src/decidim/input_multiple_mentions.js +19 -0
  42. data/app/packs/src/decidim/vendor/social-share-button.js +174 -0
  43. data/app/packs/stylesheets/decidim/modules/_buttons.scss +2 -1
  44. data/app/packs/stylesheets/decidim/modules/_forms.scss +6 -1
  45. data/app/packs/stylesheets/decidim/modules/_typography.scss +2 -0
  46. data/app/packs/stylesheets/decidim/utils/_settings.scss +1 -0
  47. data/app/packs/stylesheets/decidim/vendor/_social_share_button.scss +7 -1
  48. data/app/presenters/decidim/menu_item_presenter.rb +9 -1
  49. data/app/views/decidim/account/show.html.erb +1 -1
  50. data/app/views/decidim/application/_collection.html.erb +2 -2
  51. data/app/views/decidim/endorsements/identities.html.erb +1 -1
  52. data/app/views/decidim/groups/new.html.erb +2 -0
  53. data/app/views/decidim/messaging/conversations/_add_conversation_users.html.erb +1 -1
  54. data/app/views/decidim/messaging/conversations/_reply.html.erb +1 -1
  55. data/app/views/decidim/messaging/conversations/_start.html.erb +1 -1
  56. data/app/views/decidim/messaging/conversations/create.js.erb +1 -0
  57. data/app/views/layouts/decidim/_language_chooser.html.erb +9 -2
  58. data/app/views/layouts/decidim/_logo.html.erb +1 -1
  59. data/config/initializers/devise.rb +7 -19
  60. data/config/locales/ar.yml +55 -0
  61. data/config/locales/cs.yml +8 -0
  62. data/config/locales/de.yml +12 -1
  63. data/config/locales/en.yml +8 -0
  64. data/config/locales/fi-plain.yml +7 -0
  65. data/config/locales/fi.yml +8 -0
  66. data/config/locales/fr-CA.yml +8 -0
  67. data/config/locales/fr.yml +8 -0
  68. data/config/locales/gl.yml +10 -0
  69. data/config/locales/hu.yml +10 -0
  70. data/config/locales/it.yml +1 -0
  71. data/config/locales/ja.yml +13 -5
  72. data/db/seeds.rb +2 -2
  73. data/lib/decidim/content_renderers/link_renderer.rb +1 -1
  74. data/lib/decidim/core/engine.rb +43 -0
  75. data/lib/decidim/core/test/shared_examples/amendable/amendment_accepted_event_examples.rb +0 -1
  76. data/lib/decidim/core/test/shared_examples/amendable/amendment_created_event_examples.rb +0 -1
  77. data/lib/decidim/core/test/shared_examples/amendable/amendment_promoted_event_examples.rb +0 -1
  78. data/lib/decidim/core/test/shared_examples/amendable/amendment_rejected_event_examples.rb +0 -1
  79. data/lib/decidim/core/test/shared_examples/comments_examples.rb +27 -0
  80. data/lib/decidim/core/test/shared_examples/conversations_examples.rb +19 -0
  81. data/lib/decidim/core/test/shared_examples/endorsable.rb +69 -0
  82. data/lib/decidim/core/test.rb +2 -0
  83. data/lib/decidim/core/version.rb +1 -1
  84. data/lib/decidim/endorsable.rb +5 -1
  85. data/lib/decidim/middleware/rails_cookies.rb +23 -0
  86. data/lib/decidim/social_share/service.rb +33 -0
  87. data/lib/decidim/social_share/service_registry.rb +63 -0
  88. data/lib/decidim/social_share.rb +45 -0
  89. data/lib/decidim/view_model.rb +0 -1
  90. metadata +19 -8
  91. data/app/helpers/decidim/filter_params_helper.rb +0 -30
  92. data/config/initializers/mail_previews.rb +0 -5
@@ -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.26.0"
7
+ "0.26.1"
8
8
  end
9
9
  end
10
10
  end
@@ -18,7 +18,11 @@ module Decidim
18
18
  #
19
19
  # Returns Boolean.
20
20
  def endorsed_by?(user, user_group = nil)
21
- endorsements.where(author: user, user_group: user_group).any?
21
+ if user_group
22
+ endorsements.where(user_group: user_group).any?
23
+ else
24
+ endorsements.where(author: user, user_group: nil).any?
25
+ end
22
26
  end
23
27
  end
24
28
  end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This is a backport for Rails 6.0 for the Same-Site option for the cookies
4
+ # because this option was added in Rails 6.1.
5
+ #
6
+ # See:
7
+ # https://github.com/decidim/decidim/pull/9051
8
+ # https://github.com/rails/rails/issues/35822
9
+ # https://github.com/rails/rails/commit/7ccaa125ba396d418aad1b217b63653d06044680
10
+ module ActionDispatch
11
+ class Cookies
12
+ class CookieJar #:nodoc:
13
+ alias handle_options_original handle_options
14
+
15
+ def handle_options(options)
16
+ handle_options_original(options)
17
+
18
+ options[:same_site] ||= Rails.application.config.action_dispatch.cookies_same_site_protection || :lax
19
+ options[:same_site] = false if options[:same_site] == :none
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module SocialShare
5
+ # This class represents an abstract social network.
6
+ class Service
7
+ include Decidim::AttributeObject::Model
8
+ include ActiveModel::Validations
9
+
10
+ # The name of the social networking service.
11
+ attribute :name, String
12
+
13
+ # The icon of the social networking service.
14
+ attribute :icon, String
15
+
16
+ # The share_url of the social networking service.
17
+ attribute :share_uri, String
18
+
19
+ # TODO validate #{url} in share_url
20
+
21
+ def formatted_share_uri(title, **args)
22
+ format(share_uri, title: title, **args)
23
+ end
24
+
25
+ # Public: Returns an image of the icon for this social network.
26
+ #
27
+ # Returns a String with the icon.
28
+ def icon_path
29
+ ActionController::Base.helpers.asset_pack_path("media/images/#{icon}")
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module SocialShare
5
+ # This class represents a repository of social networking services. New services can be
6
+ # registered thanks to its DSL and will be validated prior to being
7
+ # inserted.
8
+ #
9
+ class ServiceRegistry
10
+ # Public: Initializes the social networking service.
11
+ def initialize
12
+ @services = {}
13
+ end
14
+
15
+ # Public: Returns all the registered social networking services.
16
+ #
17
+ # Returns Array<Service>.
18
+ def all
19
+ @services.values
20
+ end
21
+
22
+ # Public: Finds a social networking services given its name.
23
+ #
24
+ # name - The name of the service to find.
25
+ #
26
+ # Returns a Service if found or nil otherwise.
27
+ def find(name)
28
+ @services[name.to_s]
29
+ end
30
+
31
+ # Public: Registers a new social networking service.
32
+ #
33
+ # name - The name of the social network to register.
34
+ # &block - A block that gets the new social network as argument.
35
+ #
36
+ # Example:
37
+ # register(:fake){ |service| service.image = "twitter.svg" }
38
+ #
39
+ # Returns a Service when registered successfully, raises an exception
40
+ # otherwise.
41
+ def register(name, &block)
42
+ name = name.to_s
43
+
44
+ service = Service.new(name: name).tap do |object|
45
+ object.instance_eval(&block)
46
+ end
47
+
48
+ service.validate!
49
+
50
+ @services[name] = service
51
+ end
52
+
53
+ # Public: Unregisters a previously registered social network.
54
+ #
55
+ # name - The name of the social network to unregister.
56
+ #
57
+ # Returns the deleted Service if found, nil otherwise.
58
+ def unregister(name)
59
+ @services.delete(name.to_s)
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module SocialShare
5
+ autoload :Service, "decidim/social_share/service"
6
+ autoload :ServiceRegistry, "decidim/social_share/service_registry"
7
+
8
+ # Semi-private: The ServiceRegistry to register global services to.
9
+ def self.service_registry
10
+ @service_registry ||= Decidim::SocialShare::ServiceRegistry.new
11
+ end
12
+
13
+ # Public: Returns all available services.
14
+ #
15
+ # Returns an Array<Service>
16
+ def self.services
17
+ service_registry.all
18
+ end
19
+
20
+ # Public: Finds a Service given a name.
21
+ #
22
+ # Returns a Service if found, nil otherwise.
23
+ def self.find_service(name)
24
+ service_registry.find(name)
25
+ end
26
+
27
+ # Public: Registers a new Service.
28
+ #
29
+ # Example:
30
+ #
31
+ # Decidim.register_service(:foo) do |service|
32
+ # service.levels = [1, 10, 50]
33
+ # end
34
+ #
35
+ # Returns nothing if registered successfully, raises an exception
36
+ # otherwise.
37
+ def self.register_service(name, &block)
38
+ service_registry.register(name, &block)
39
+ end
40
+
41
+ def self.enabled_services
42
+ services.select { |s| Decidim.config.social_share_services.include?(s.name) }
43
+ end
44
+ end
45
+ end
@@ -15,7 +15,6 @@ module Decidim
15
15
  include Decidim::ReplaceButtonsHelper
16
16
  include Cell::Caching::Notifications
17
17
  include Decidim::MarkupHelper
18
- include Decidim::FilterParamsHelper
19
18
  include ::Webpacker::Helper
20
19
 
21
20
  delegate :current_organization, to: :controller
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.0
4
+ version: 0.26.1
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: 2022-02-22 00:00:00.000000000 Z
13
+ date: 2022-03-25 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.0
757
+ version: 0.26.1
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.0
764
+ version: 0.26.1
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.0
771
+ version: 0.26.1
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.0
778
+ version: 0.26.1
779
779
  description: Adds core features so other engines can hook into the framework.
780
780
  email:
781
781
  - josepjaume@gmail.com
@@ -886,6 +886,7 @@ files:
886
886
  - app/cells/decidim/endorsement_buttons/select_identity_button.erb
887
887
  - app/cells/decidim/endorsement_buttons/show.erb
888
888
  - app/cells/decidim/endorsement_buttons_cell.rb
889
+ - app/cells/decidim/endorsement_buttons_cell.rb.2
889
890
  - app/cells/decidim/endorsers_list/show.erb
890
891
  - app/cells/decidim/endorsers_list_cell.rb
891
892
  - app/cells/decidim/fingerprint/show.erb
@@ -1188,7 +1189,6 @@ files:
1188
1189
  - app/helpers/decidim/decidim_form_helper.rb
1189
1190
  - app/helpers/decidim/endorsable_helper.rb
1190
1191
  - app/helpers/decidim/external_domain_helper.rb
1191
- - app/helpers/decidim/filter_params_helper.rb
1192
1192
  - app/helpers/decidim/filters_helper.rb
1193
1193
  - app/helpers/decidim/followable_helper.rb
1194
1194
  - app/helpers/decidim/humanize_booleans_helper.rb
@@ -1215,9 +1215,11 @@ files:
1215
1215
  - app/helpers/decidim/sanitize_helper.rb
1216
1216
  - app/helpers/decidim/scopes_helper.rb
1217
1217
  - app/helpers/decidim/searches_helper.rb
1218
+ - app/helpers/decidim/social_share_button_helper.rb
1218
1219
  - app/helpers/decidim/tooltip_helper.rb
1219
1220
  - app/helpers/decidim/traceability_helper.rb
1220
1221
  - app/helpers/decidim/translations_helper.rb
1222
+ - app/helpers/decidim/twitter_search_helper.rb
1221
1223
  - app/helpers/decidim/user_group_helper.rb
1222
1224
  - app/helpers/decidim/user_profile_helper.rb
1223
1225
  - app/helpers/decidim/view_hooks_helper.rb
@@ -1382,6 +1384,7 @@ files:
1382
1384
  - app/packs/src/decidim/ajax_modals.js
1383
1385
  - app/packs/src/decidim/append_elements.js
1384
1386
  - app/packs/src/decidim/append_redirect_url_to_modals.js
1387
+ - app/packs/src/decidim/back_to_list.js
1385
1388
  - app/packs/src/decidim/callout.js
1386
1389
  - app/packs/src/decidim/check_boxes_tree.js
1387
1390
  - app/packs/src/decidim/clipboard.js
@@ -1406,11 +1409,13 @@ files:
1406
1409
  - app/packs/src/decidim/external_domain_warning.js
1407
1410
  - app/packs/src/decidim/external_link.js
1408
1411
  - app/packs/src/decidim/floating_help.js
1412
+ - app/packs/src/decidim/focus_guard.js
1409
1413
  - app/packs/src/decidim/form_attachments.js
1410
1414
  - app/packs/src/decidim/form_datepicker.js
1411
1415
  - app/packs/src/decidim/form_filter.component.test.js
1412
1416
  - app/packs/src/decidim/form_filter.component_for_testing.js
1413
1417
  - app/packs/src/decidim/form_filter.js
1418
+ - app/packs/src/decidim/form_remote.js
1414
1419
  - app/packs/src/decidim/form_validator.js
1415
1420
  - app/packs/src/decidim/foundation-datepicker/js/locales/foundation-datepicker.lb.js
1416
1421
  - app/packs/src/decidim/foundation_datepicker_locales.js
@@ -1461,6 +1466,7 @@ files:
1461
1466
  - app/packs/src/decidim/vendor/jquery-tmpl.js
1462
1467
  - app/packs/src/decidim/vendor/leaflet-tilelayer-here.js
1463
1468
  - app/packs/src/decidim/vendor/modernizr.js
1469
+ - app/packs/src/decidim/vendor/social-share-button.js
1464
1470
  - app/packs/src/decidim/vendor/tribute.js
1465
1471
  - app/packs/src/decidim/vizzs.js
1466
1472
  - app/packs/src/decidim/vizzs/areachart.js
@@ -1938,7 +1944,6 @@ files:
1938
1944
  - config/initializers/devise.rb
1939
1945
  - config/initializers/foundation_rails_helper.rb
1940
1946
  - config/initializers/invisible_captcha.rb
1941
- - config/initializers/mail_previews.rb
1942
1947
  - config/initializers/omniauth.rb
1943
1948
  - config/initializers/rack_attack.rb
1944
1949
  - config/locales/am-ET.yml
@@ -2350,9 +2355,11 @@ files:
2350
2355
  - lib/decidim/core/test/shared_examples/comments_reports_examples.rb
2351
2356
  - lib/decidim/core/test/shared_examples/component_type.rb
2352
2357
  - lib/decidim/core/test/shared_examples/controller_render_views.rb
2358
+ - lib/decidim/core/test/shared_examples/conversations_examples.rb
2353
2359
  - lib/decidim/core/test/shared_examples/counts_commentators_as_newsletter_participants.rb
2354
2360
  - lib/decidim/core/test/shared_examples/edit_link_shared_examples.rb
2355
2361
  - lib/decidim/core/test/shared_examples/embed_resource_examples.rb
2362
+ - lib/decidim/core/test/shared_examples/endorsable.rb
2356
2363
  - lib/decidim/core/test/shared_examples/endorsable_interface_examples.rb
2357
2364
  - lib/decidim/core/test/shared_examples/endorsements_controller_shared_context.rb
2358
2365
  - lib/decidim/core/test/shared_examples/errors.rb
@@ -2498,6 +2505,7 @@ files:
2498
2505
  - lib/decidim/metric_operation_manifest.rb
2499
2506
  - lib/decidim/metric_registry.rb
2500
2507
  - lib/decidim/middleware/current_organization.rb
2508
+ - lib/decidim/middleware/rails_cookies.rb
2501
2509
  - lib/decidim/middleware/strip_x_forwarded_host.rb
2502
2510
  - lib/decidim/newsletter_encryptor.rb
2503
2511
  - lib/decidim/newsletter_participant.rb
@@ -2526,6 +2534,9 @@ files:
2526
2534
  - lib/decidim/settings_manifest.rb
2527
2535
  - lib/decidim/shareable_with_token.rb
2528
2536
  - lib/decidim/snippets.rb
2537
+ - lib/decidim/social_share.rb
2538
+ - lib/decidim/social_share/service.rb
2539
+ - lib/decidim/social_share/service_registry.rb
2529
2540
  - lib/decidim/stats_registry.rb
2530
2541
  - lib/decidim/traceable.rb
2531
2542
  - lib/decidim/translatable_attributes.rb
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- # A helper to allow only Decidim params to be added to a link.
5
- # This is useful when we want to preserve the params from a search, ordering
6
- # or paginating results. Using this, we can link back to where the user was
7
- # at the show page.
8
- module FilterParamsHelper
9
- # Public: Builds a hash to be added to a _path or _url method with only
10
- # allowed params.
11
- #
12
- # params - An optional Hash with the values of the params. It will try to
13
- # get them from the controller if none are present.
14
- #
15
- # Returns a Hash.
16
- def filter_link_params(params = nil)
17
- return {} if params.blank? && (!respond_to?(:controller) || !controller.respond_to?(:params))
18
-
19
- params = controller.params.to_unsafe_h if params.blank?
20
-
21
- params.stringify_keys.slice(
22
- "order",
23
- "filter",
24
- "page",
25
- "per_page",
26
- "locale"
27
- )
28
- end
29
- end
30
- end
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Rails.application.configure do
4
- config.action_mailer.preview_path = Decidim::Core::Engine.root.join("spec/mailers")
5
- end