decidim-core 0.8.3 → 0.8.4
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.
- checksums.yaml +4 -4
- data/app/controllers/concerns/decidim/participatory_space_context.rb +60 -0
- data/app/controllers/decidim/features/base_controller.rb +7 -6
- data/app/helpers/decidim/participatory_space_helpers.rb +30 -0
- data/config/routes.rb +1 -1
- data/lib/decidim/abilities/participatory_process_role_ability.rb +1 -1
- data/lib/decidim/core/version.rb +1 -1
- data/lib/decidim/participable.rb +0 -4
- data/lib/decidim/participatory_space_context_manifest.rb +14 -0
- data/lib/decidim/participatory_space_manifest.rb +27 -3
- metadata +9 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0ad061f43f8c514c854f0ea29035179e9f9010aa
|
4
|
+
data.tar.gz: 880adff366f398867619dd379122a0bb2704d153
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 80b4ae4bfee8d712fcbc8ec4aacbc630e3e294b887cebd70fe716b435cf51904f47c1179a56e4f1a92d50f1944f8bf6947259bb78a416e7651853e637f032a11
|
7
|
+
data.tar.gz: 607fdd0f547ee9b38348fc2d0a752fcb1be3fbd431931f4e04b22b3447ac07dd03825482d9bf1689a470c3fb51153d069ce6f795b61e833ef95d74006636cc76
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
# This module contains all the logic needed for a controller to render a participatory space
|
5
|
+
# public layout.
|
6
|
+
#
|
7
|
+
module ParticipatorySpaceContext
|
8
|
+
extend ActiveSupport::Concern
|
9
|
+
|
10
|
+
class_methods do
|
11
|
+
# Public: Called on a controller, it sets up all the surrounding methods to render a
|
12
|
+
# participatory space's template. It expects the method `current_participatory_space` to be
|
13
|
+
# defined, from which it will extract the participatory manifest.
|
14
|
+
#
|
15
|
+
# options - A hash used to modify the behavior of the layout. :only: - An array of actions on
|
16
|
+
# which the layout will be applied.
|
17
|
+
#
|
18
|
+
# Returns nothing.
|
19
|
+
def participatory_space_layout(options = {})
|
20
|
+
layout :layout, options
|
21
|
+
before_action :authorize_participatory_space, options
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
included do
|
26
|
+
include Decidim::NeedsOrganization
|
27
|
+
|
28
|
+
helper ParticipatorySpaceHelpers, IconHelper
|
29
|
+
helper_method :current_participatory_space
|
30
|
+
helper_method :current_participatory_space_manifest
|
31
|
+
helper_method :current_participatory_space_context
|
32
|
+
|
33
|
+
delegate :manifest, to: :current_participatory_space, prefix: true
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def current_participatory_space_context
|
39
|
+
:public
|
40
|
+
end
|
41
|
+
|
42
|
+
def current_participatory_space
|
43
|
+
raise NotImplementedError
|
44
|
+
end
|
45
|
+
|
46
|
+
def authorize_participatory_space
|
47
|
+
authorize! :read, current_participatory_space
|
48
|
+
end
|
49
|
+
|
50
|
+
def ability_context
|
51
|
+
super.merge(
|
52
|
+
current_participatory_space: current_participatory_space,
|
53
|
+
)
|
54
|
+
end
|
55
|
+
|
56
|
+
def layout
|
57
|
+
current_participatory_space_manifest.context(current_participatory_space_context).layout
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -9,6 +9,9 @@ module Decidim
|
|
9
9
|
include Settings
|
10
10
|
include ActionAuthorization
|
11
11
|
|
12
|
+
include ParticipatorySpaceContext
|
13
|
+
participatory_space_layout
|
14
|
+
|
12
15
|
helper Decidim::FiltersHelper
|
13
16
|
helper Decidim::OrdersHelper
|
14
17
|
helper Decidim::FeatureReferenceHelper
|
@@ -27,11 +30,13 @@ module Decidim
|
|
27
30
|
skip_authorize_resource
|
28
31
|
|
29
32
|
before_action do
|
30
|
-
extend current_participatory_space.extension_module
|
31
|
-
|
32
33
|
authorize! :read, current_feature
|
33
34
|
end
|
34
35
|
|
36
|
+
def current_participatory_space
|
37
|
+
request.env["decidim.current_participatory_space"]
|
38
|
+
end
|
39
|
+
|
35
40
|
def current_feature
|
36
41
|
request.env["decidim.current_feature"]
|
37
42
|
end
|
@@ -40,10 +45,6 @@ module Decidim
|
|
40
45
|
@current_manifest ||= current_feature.manifest
|
41
46
|
end
|
42
47
|
|
43
|
-
def current_participatory_space
|
44
|
-
current_feature.participatory_space
|
45
|
-
end
|
46
|
-
|
47
48
|
def ability_context
|
48
49
|
super.merge(
|
49
50
|
current_manifest: current_manifest,
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module ParticipatorySpaceHelpers
|
5
|
+
# Public: This method gets exposed on all controllers that have `ParticipatorySpaceContext`
|
6
|
+
# included as a module.
|
7
|
+
#
|
8
|
+
# Through this method, you can access helpers that are unique to a particular participatory
|
9
|
+
# space. These helpers are defined in the participatory space manifest, via the `context`
|
10
|
+
# helper.
|
11
|
+
#
|
12
|
+
# Example:
|
13
|
+
#
|
14
|
+
# # If you had a `ParticipatoryProcessHelper` with a `participatory_process_header` method
|
15
|
+
# participatory_process_helpers.participatory_process_header(current_participatory_space)
|
16
|
+
#
|
17
|
+
# Returns an Object that includes the Helpers as public methods.
|
18
|
+
def participatory_space_helpers
|
19
|
+
return @participatory_space_helpers if defined?(@participatory_space_helpers)
|
20
|
+
|
21
|
+
helper = current_participatory_space_manifest.context(current_participatory_space_context).helper
|
22
|
+
|
23
|
+
klass = Class.new(SimpleDelegator) do
|
24
|
+
include helper.constantize if helper
|
25
|
+
end
|
26
|
+
|
27
|
+
@participatory_space_helpers = klass.new(self)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/config/routes.rb
CHANGED
@@ -23,7 +23,7 @@ Decidim::Core::Engine.routes.draw do
|
|
23
23
|
resource :locale, only: [:create]
|
24
24
|
|
25
25
|
Decidim.participatory_space_manifests.each do |manifest|
|
26
|
-
mount manifest.engine, at: "/", as: "decidim_#{manifest.name}"
|
26
|
+
mount manifest.context(:public).engine, at: "/", as: "decidim_#{manifest.name}"
|
27
27
|
end
|
28
28
|
|
29
29
|
mount Decidim::Verifications::Engine, at: "/", as: "decidim_verifications"
|
data/lib/decidim/core/version.rb
CHANGED
data/lib/decidim/participable.rb
CHANGED
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
# This class holds the configuration for a participatory space's context. A context consists of an
|
5
|
+
# engine, a layout and a set of helpers (usually used by the layout itself).
|
6
|
+
class ParticipatorySpaceContextManifest
|
7
|
+
include ActiveModel::Model
|
8
|
+
include Virtus.model
|
9
|
+
|
10
|
+
attribute :engine, Rails::Engine
|
11
|
+
attribute :helper
|
12
|
+
attribute :layout
|
13
|
+
end
|
14
|
+
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "decidim/settings_manifest"
|
4
|
+
require "decidim/participatory_space_context_manifest"
|
4
5
|
|
5
6
|
module Decidim
|
6
7
|
# This class handles all the logic associated to configuring a participatory
|
@@ -12,9 +13,6 @@ module Decidim
|
|
12
13
|
include ActiveModel::Model
|
13
14
|
include Virtus.model
|
14
15
|
|
15
|
-
attribute :admin_engine, Rails::Engine
|
16
|
-
attribute :engine, Rails::Engine
|
17
|
-
|
18
16
|
attribute :name, Symbol
|
19
17
|
|
20
18
|
# The ActiveRecord class name of the model we're exposing
|
@@ -30,6 +28,32 @@ module Decidim
|
|
30
28
|
|
31
29
|
validates :name, presence: true
|
32
30
|
|
31
|
+
# A context used to set the layout and behavior of a participatory space. Full documentation can
|
32
|
+
# be found looking at the `ParticipatorySpaceContextManifest` class.
|
33
|
+
#
|
34
|
+
# Example:
|
35
|
+
#
|
36
|
+
# context(:public) do |context|
|
37
|
+
# context.layout "layouts/decidim/some_layout"
|
38
|
+
# end
|
39
|
+
#
|
40
|
+
# context(:public).layout
|
41
|
+
# # => "layouts/decidim/some_layout"
|
42
|
+
#
|
43
|
+
# Returns Nothing.
|
44
|
+
def context(name = :public, &block)
|
45
|
+
name = name.to_sym
|
46
|
+
@contexts ||= {}
|
47
|
+
|
48
|
+
if block
|
49
|
+
context = ParticipatorySpaceContextManifest.new
|
50
|
+
context.instance_eval(&block)
|
51
|
+
@contexts[name] = context
|
52
|
+
end
|
53
|
+
|
54
|
+
@contexts.fetch(name)
|
55
|
+
end
|
56
|
+
|
33
57
|
# Public: A block that gets called when seeding for this feature takes place.
|
34
58
|
#
|
35
59
|
# Returns nothing.
|
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.8.
|
4
|
+
version: 0.8.4
|
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: 2018-01-16 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: active_link_to
|
@@ -508,28 +508,28 @@ dependencies:
|
|
508
508
|
requirements:
|
509
509
|
- - '='
|
510
510
|
- !ruby/object:Gem::Version
|
511
|
-
version: 0.8.
|
511
|
+
version: 0.8.4
|
512
512
|
type: :runtime
|
513
513
|
prerelease: false
|
514
514
|
version_requirements: !ruby/object:Gem::Requirement
|
515
515
|
requirements:
|
516
516
|
- - '='
|
517
517
|
- !ruby/object:Gem::Version
|
518
|
-
version: 0.8.
|
518
|
+
version: 0.8.4
|
519
519
|
- !ruby/object:Gem::Dependency
|
520
520
|
name: decidim-dev
|
521
521
|
requirement: !ruby/object:Gem::Requirement
|
522
522
|
requirements:
|
523
523
|
- - '='
|
524
524
|
- !ruby/object:Gem::Version
|
525
|
-
version: 0.8.
|
525
|
+
version: 0.8.4
|
526
526
|
type: :development
|
527
527
|
prerelease: false
|
528
528
|
version_requirements: !ruby/object:Gem::Requirement
|
529
529
|
requirements:
|
530
530
|
- - '='
|
531
531
|
- !ruby/object:Gem::Version
|
532
|
-
version: 0.8.
|
532
|
+
version: 0.8.4
|
533
533
|
description: Adds core features so other engines can hook into the framework.
|
534
534
|
email:
|
535
535
|
- josepjaume@gmail.com
|
@@ -679,6 +679,7 @@ files:
|
|
679
679
|
- app/controllers/concerns/decidim/needs_authorization.rb
|
680
680
|
- app/controllers/concerns/decidim/needs_organization.rb
|
681
681
|
- app/controllers/concerns/decidim/paginable.rb
|
682
|
+
- app/controllers/concerns/decidim/participatory_space_context.rb
|
682
683
|
- app/controllers/concerns/decidim/payload_info.rb
|
683
684
|
- app/controllers/concerns/decidim/settings.rb
|
684
685
|
- app/controllers/concerns/decidim/user_profile.rb
|
@@ -741,6 +742,7 @@ files:
|
|
741
742
|
- app/helpers/decidim/omniauth_helper.rb
|
742
743
|
- app/helpers/decidim/orders_helper.rb
|
743
744
|
- app/helpers/decidim/paginate_helper.rb
|
745
|
+
- app/helpers/decidim/participatory_space_helpers.rb
|
744
746
|
- app/helpers/decidim/replace_buttons_helper.rb
|
745
747
|
- app/helpers/decidim/resource_helper.rb
|
746
748
|
- app/helpers/decidim/sanitize_helper.rb
|
@@ -1100,6 +1102,7 @@ files:
|
|
1100
1102
|
- lib/decidim/messaging.rb
|
1101
1103
|
- lib/decidim/page_finder.rb
|
1102
1104
|
- lib/decidim/participable.rb
|
1105
|
+
- lib/decidim/participatory_space_context_manifest.rb
|
1103
1106
|
- lib/decidim/participatory_space_manifest.rb
|
1104
1107
|
- lib/decidim/publicable.rb
|
1105
1108
|
- lib/decidim/query_extensions.rb
|