decidim-sortitions 0.9.0 → 0.11.0.pre1
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/README.md +15 -8
- data/app/assets/config/decidim_sortitions_manifest.css +1 -1
- data/app/assets/stylesheets/decidim/sortitions/_sortitions.scss +13 -9
- data/app/assets/stylesheets/decidim/sortitions/social_share.css.scss +8 -4
- data/app/commands/decidim/sortitions/admin/create_sortition.rb +5 -3
- data/app/commands/decidim/sortitions/admin/destroy_sortition.rb +11 -5
- data/app/commands/decidim/sortitions/admin/update_sortition.rb +3 -1
- data/app/controllers/decidim/sortitions/admin/application_controller.rb +3 -3
- data/app/controllers/decidim/sortitions/admin/sortitions_controller.rb +3 -3
- data/app/controllers/decidim/sortitions/application_controller.rb +2 -2
- data/app/controllers/decidim/sortitions/sortition_widgets_controller.rb +1 -1
- data/app/forms/decidim/sortitions/admin/destroy_sortition_form.rb +1 -1
- data/app/forms/decidim/sortitions/admin/edit_sortition_form.rb +1 -1
- data/app/forms/decidim/sortitions/admin/sortition_form.rb +3 -3
- data/app/helpers/decidim/sortitions/admin/sortitions_helper.rb +3 -3
- data/app/helpers/decidim/sortitions/sortitions_helper.rb +1 -1
- data/app/models/decidim/sortitions/sortition.rb +14 -8
- data/app/presenters/decidim/sortitions/admin_log/sortition_presenter.rb +50 -0
- data/app/queries/decidim/sortitions/admin/{participatory_space_proposal_features.rb → participatory_space_proposal_components.rb} +4 -4
- data/app/queries/decidim/sortitions/admin/participatory_space_proposals.rb +2 -2
- data/app/queries/decidim/sortitions/filtered_sortitions.rb +9 -9
- data/app/services/decidim/sortitions/sortition_search.rb +1 -1
- data/app/views/decidim/sortitions/admin/sortitions/_form.html.erb +3 -3
- data/app/views/decidim/sortitions/admin/sortitions/index.html.erb +2 -2
- data/app/views/decidim/sortitions/admin/sortitions/new.html.erb +1 -1
- data/app/views/decidim/sortitions/admin/sortitions/show.html.erb +4 -4
- data/app/views/decidim/sortitions/sortition_widgets/show.html.erb +1 -1
- data/app/views/decidim/sortitions/sortitions/_filters.html.erb +6 -6
- data/app/views/decidim/sortitions/sortitions/_filters_small_view.html.erb +1 -1
- data/app/views/decidim/sortitions/sortitions/_proposal.html.erb +1 -1
- data/app/views/decidim/sortitions/sortitions/_results_count.html.erb +1 -1
- data/app/views/decidim/sortitions/sortitions/_sortition.html.erb +4 -4
- data/app/views/decidim/sortitions/sortitions/_sortition_author.html.erb +1 -1
- data/app/views/decidim/sortitions/sortitions/_sortition_cancel_author.html.erb +1 -1
- data/app/views/decidim/sortitions/sortitions/_tags.html.erb +1 -1
- data/app/views/decidim/sortitions/sortitions/index.html.erb +1 -1
- data/app/views/decidim/sortitions/sortitions/show.html.erb +12 -12
- data/config/locales/ca.yml +99 -109
- data/config/locales/en.yml +90 -94
- data/config/locales/es.yml +97 -107
- data/config/locales/eu.yml +145 -0
- data/config/locales/fi.yml +145 -0
- data/config/locales/fr.yml +145 -0
- data/config/locales/gl.yml +145 -0
- data/config/locales/it.yml +145 -0
- data/config/locales/nl.yml +145 -0
- data/config/locales/pl.yml +155 -0
- data/config/locales/pt-BR.yml +145 -0
- data/config/locales/pt.yml +145 -0
- data/config/locales/ru.yml +13 -0
- data/config/locales/sv.yml +145 -0
- data/config/locales/uk.yml +13 -0
- data/db/migrate/20180322082150_fix_sortitions_feature.rb +11 -0
- data/db/migrate/20180322085145_fix_sortitions_proposal_feature.rb +11 -0
- data/lib/decidim/sortitions.rb +1 -1
- data/lib/decidim/sortitions/component.rb +38 -0
- data/lib/decidim/sortitions/test/factories.rb +7 -7
- data/lib/decidim/sortitions/version.rb +3 -1
- metadata +46 -33
- data/LICENSE-AGPLv3.txt +0 -661
- data/app/views/decidim/sortitions/sortitions/_filters_small_view0.html.erb +0 -18
- data/lib/decidim/sortitions/feature.rb +0 -43
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 24db428f20272b36ec8566a34250338db326a1031dd8e0d221a70ab549e9699a
|
4
|
+
data.tar.gz: 826a675e56d01daec292af92d75d5cc77d54f7bd84bf684aac7e489e22e5ba69
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2b5e4f34fccfe94473cf0af575d50f2e39e96ae384162af82293d95a1aed5d55754dc6c187ccc35f1bc2bd7db86a7b163cc1683457a53e9ef97110c936dd98fe
|
7
|
+
data.tar.gz: e721500c11fe706d9c755272bddfdf77602b682dfef72039fc7ee0eae1c347f1a874ff6666556757f306cafe9bc8310ddf4424ea22c5e7842f0ec7d98311525d
|
data/README.md
CHANGED
@@ -1,10 +1,13 @@
|
|
1
1
|
# Decidim::Sortitions
|
2
|
-
|
2
|
+
|
3
|
+
This module makes possible to select among a set of proposals by sortition.
|
3
4
|
|
4
5
|
## Usage
|
6
|
+
|
5
7
|
Simply include it in your Decidim instance.
|
6
8
|
|
7
9
|
## Installation
|
10
|
+
|
8
11
|
Add this line to your application's Gemfile:
|
9
12
|
|
10
13
|
```ruby
|
@@ -12,13 +15,9 @@ gem 'decidim-sortitions'
|
|
12
15
|
```
|
13
16
|
|
14
17
|
And then execute:
|
15
|
-
```bash
|
16
|
-
$ bundle
|
17
|
-
```
|
18
18
|
|
19
|
-
Or install it yourself as:
|
20
19
|
```bash
|
21
|
-
|
20
|
+
bundle
|
22
21
|
```
|
23
22
|
|
24
23
|
## Import migrations
|
@@ -26,6 +25,14 @@ $ gem install decidim-sortitions
|
|
26
25
|
After installing the gem you must import and execute the migrations bundled with the gem:
|
27
26
|
|
28
27
|
```bash
|
29
|
-
|
30
|
-
|
28
|
+
bundle exec rails decidim_sortitions:install:migrations
|
29
|
+
bundle exec rails db:migrate
|
31
30
|
```
|
31
|
+
|
32
|
+
## Contributing
|
33
|
+
|
34
|
+
See [Decidim](https://github.com/decidim/decidim).
|
35
|
+
|
36
|
+
## License
|
37
|
+
|
38
|
+
See [Decidim](https://github.com/decidim/decidim).
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
/* = link decidim/sortitions/social_share.css.scss */
|
@@ -1,41 +1,45 @@
|
|
1
|
-
#sortition-details
|
1
|
+
#sortition-details{
|
2
2
|
margin-bottom: 1.5rem;
|
3
3
|
}
|
4
4
|
|
5
|
-
.sortition-details
|
5
|
+
.sortition-details{
|
6
6
|
padding: 0;
|
7
7
|
display: flex;
|
8
|
-
flex-
|
9
|
-
flex-wrap: wrap;
|
8
|
+
flex-flow: row wrap;
|
10
9
|
justify-content: flex-start;
|
11
10
|
align-items: stretch;
|
12
11
|
align-content: stretch;
|
13
12
|
|
14
|
-
.sortition-details-item
|
13
|
+
.sortition-details-item{
|
15
14
|
width: 33.3%;
|
15
|
+
|
16
16
|
@include breakpoint(large down){
|
17
17
|
width: 33.3%;
|
18
18
|
}
|
19
|
+
|
19
20
|
@include breakpoint(medium down){
|
20
21
|
width: 49.9%;
|
21
22
|
}
|
23
|
+
|
22
24
|
@include breakpoint(smallmedium down){
|
23
25
|
width: 100%;
|
24
26
|
}
|
27
|
+
|
25
28
|
display: inline-block;
|
26
29
|
padding: 1em;
|
27
30
|
border: $border;
|
28
31
|
background: $white;
|
29
|
-
|
30
|
-
|
32
|
+
|
33
|
+
.sortition-details-title{
|
34
|
+
margin-right: .5rem;
|
31
35
|
font-weight: bolder;
|
32
36
|
}
|
33
37
|
|
34
38
|
.sortition-details-text{
|
35
39
|
text-transform: uppercase;
|
36
|
-
letter-spacing:
|
40
|
+
letter-spacing: .03em;
|
37
41
|
font-size: 90%;
|
38
|
-
color: #
|
42
|
+
color: #3d393c;
|
39
43
|
font-weight: 600;
|
40
44
|
line-height: 1;
|
41
45
|
vertical-align: middle;
|
@@ -1,15 +1,19 @@
|
|
1
|
-
|
1
|
+
/*
|
2
|
+
*= require social-share-button
|
3
|
+
*/
|
4
|
+
|
2
5
|
$size: 45px;
|
3
6
|
|
4
|
-
.share-link:hover
|
7
|
+
.share-link:hover{
|
5
8
|
text-decoration: underline;
|
6
9
|
cursor: pointer;
|
7
10
|
}
|
8
11
|
|
9
|
-
.social-share-button
|
12
|
+
.social-share-button{
|
10
13
|
display: inline-block;
|
11
14
|
vertical-align: top;
|
12
|
-
|
15
|
+
|
16
|
+
.ssb-icon{
|
13
17
|
margin-right: 5px;
|
14
18
|
background-size: $size $size;
|
15
19
|
height: $size;
|
@@ -36,10 +36,12 @@ module Decidim
|
|
36
36
|
attr_reader :form
|
37
37
|
|
38
38
|
def create_sortition
|
39
|
-
|
40
|
-
|
39
|
+
Decidim.traceability.create!(
|
40
|
+
Sortition,
|
41
|
+
form.current_user,
|
42
|
+
component: form.current_component,
|
41
43
|
title: form.title,
|
42
|
-
|
44
|
+
decidim_proposals_component_id: form.decidim_proposals_component_id,
|
43
45
|
request_timestamp: Time.now.utc,
|
44
46
|
author: form.current_user,
|
45
47
|
dice: form.dice,
|
@@ -29,11 +29,17 @@ module Decidim
|
|
29
29
|
attr_reader :form
|
30
30
|
|
31
31
|
def destroy_sortition
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
)
|
32
|
+
Decidim.traceability.perform_action!(
|
33
|
+
:delete,
|
34
|
+
sortition,
|
35
|
+
form.current_user
|
36
|
+
) do
|
37
|
+
sortition.update(
|
38
|
+
cancel_reason: form.cancel_reason,
|
39
|
+
cancelled_on: Time.now.utc,
|
40
|
+
cancelled_by_user: form.current_user
|
41
|
+
)
|
42
|
+
end
|
37
43
|
end
|
38
44
|
|
39
45
|
def sortition
|
@@ -6,14 +6,14 @@ module Decidim
|
|
6
6
|
# This controller is the abstract class from which all other controllers of
|
7
7
|
# this engine inherit.
|
8
8
|
#
|
9
|
-
# Note that it inherits from `Decidim::
|
9
|
+
# Note that it inherits from `Decidim::Components::BaseController`, which
|
10
10
|
# override its layout and provide all kinds of useful methods.
|
11
|
-
class ApplicationController < Decidim::Admin::
|
11
|
+
class ApplicationController < Decidim::Admin::Components::BaseController
|
12
12
|
helper_method :sortitions, :sortition
|
13
13
|
|
14
14
|
def sortitions
|
15
15
|
@sortitions ||= Decidim::Sortitions::FilteredSortitions
|
16
|
-
.for(
|
16
|
+
.for(current_component)
|
17
17
|
.order(created_at: :desc)
|
18
18
|
.page(params[:page])
|
19
19
|
.per(Decidim::Sortitions.items_per_page)
|
@@ -6,7 +6,7 @@ module Decidim
|
|
6
6
|
# Controller responsible of the sortition that selects proposals from
|
7
7
|
# a participatory space.
|
8
8
|
class SortitionsController < Admin::ApplicationController
|
9
|
-
helper_method :
|
9
|
+
helper_method :proposal_components
|
10
10
|
|
11
11
|
def index; end
|
12
12
|
|
@@ -91,8 +91,8 @@ module Decidim
|
|
91
91
|
form(DestroySortitionForm)
|
92
92
|
end
|
93
93
|
|
94
|
-
def
|
95
|
-
|
94
|
+
def proposal_components
|
95
|
+
ParticipatorySpaceProposalComponents.for(current_participatory_space)
|
96
96
|
end
|
97
97
|
|
98
98
|
def ability_context
|
@@ -5,9 +5,9 @@ module Decidim
|
|
5
5
|
# This controller is the abstract class from which all other controllers of
|
6
6
|
# this engine inherit.
|
7
7
|
#
|
8
|
-
# Note that it inherits from `Decidim::
|
8
|
+
# Note that it inherits from `Decidim::Components::BaseController`, which
|
9
9
|
# override its layout and provide all kinds of useful methods.
|
10
|
-
class ApplicationController < Decidim::
|
10
|
+
class ApplicationController < Decidim::Components::BaseController
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|
@@ -9,7 +9,7 @@ module Decidim
|
|
9
9
|
mimic :sortition
|
10
10
|
|
11
11
|
translatable_attribute :title, String
|
12
|
-
attribute :
|
12
|
+
attribute :decidim_proposals_component_id, Integer
|
13
13
|
attribute :decidim_category_id, Integer
|
14
14
|
attribute :dice, Integer
|
15
15
|
attribute :target_items, Integer
|
@@ -17,7 +17,7 @@ module Decidim
|
|
17
17
|
translatable_attribute :additional_info, String
|
18
18
|
|
19
19
|
validates :title, translatable_presence: true
|
20
|
-
validates :
|
20
|
+
validates :decidim_proposals_component_id, presence: true
|
21
21
|
validates :witnesses, translatable_presence: true
|
22
22
|
validates :additional_info, translatable_presence: true
|
23
23
|
validates :dice,
|
@@ -37,7 +37,7 @@ module Decidim
|
|
37
37
|
|
38
38
|
delegate :categories, to: :current_participatory_space
|
39
39
|
delegate :current_participatory_space, to: :context
|
40
|
-
delegate :
|
40
|
+
delegate :current_component, to: :context
|
41
41
|
end
|
42
42
|
end
|
43
43
|
end
|
@@ -6,9 +6,9 @@ module Decidim
|
|
6
6
|
module SortitionsHelper
|
7
7
|
include Decidim::TranslationsHelper
|
8
8
|
|
9
|
-
# Converst a list of
|
10
|
-
def
|
11
|
-
|
9
|
+
# Converst a list of components into a list of selectable options
|
10
|
+
def components_options(components)
|
11
|
+
components.map do |f|
|
12
12
|
[translated_attribute(f.name), f.id]
|
13
13
|
end
|
14
14
|
end
|
@@ -6,7 +6,7 @@ module Decidim
|
|
6
6
|
include Decidim::TranslationsHelper
|
7
7
|
|
8
8
|
def proposal_path(proposal)
|
9
|
-
EngineRouter.main_proxy(proposal.
|
9
|
+
EngineRouter.main_proxy(proposal.component).proposal_path(proposal)
|
10
10
|
end
|
11
11
|
|
12
12
|
# Generates the sortition category label
|
@@ -7,15 +7,17 @@ module Decidim
|
|
7
7
|
include Decidim::Resourceable
|
8
8
|
include Decidim::HasCategory
|
9
9
|
include Decidim::Authorable
|
10
|
-
include Decidim::
|
10
|
+
include Decidim::HasComponent
|
11
11
|
include Decidim::HasReference
|
12
|
+
include Decidim::Traceable
|
13
|
+
include Decidim::Loggable
|
12
14
|
include Decidim::Comments::Commentable
|
13
15
|
|
14
|
-
|
16
|
+
component_manifest_name "sortitions"
|
15
17
|
|
16
|
-
belongs_to :
|
17
|
-
foreign_key: "
|
18
|
-
class_name: "Decidim::
|
18
|
+
belongs_to :decidim_proposals_component,
|
19
|
+
foreign_key: "decidim_proposals_component_id",
|
20
|
+
class_name: "Decidim::Component"
|
19
21
|
|
20
22
|
belongs_to :cancelled_by_user,
|
21
23
|
foreign_key: "cancelled_by_user_id",
|
@@ -30,13 +32,17 @@ module Decidim
|
|
30
32
|
scope :active, -> { where(cancelled_on: nil) }
|
31
33
|
scope :cancelled, -> { where.not(cancelled_on: nil) }
|
32
34
|
|
35
|
+
def self.log_presenter_class_for(_log)
|
36
|
+
Decidim::Sortitions::AdminLog::SortitionPresenter
|
37
|
+
end
|
38
|
+
|
33
39
|
def proposals
|
34
40
|
Decidim::Proposals::Proposal.where(id: selected_proposals)
|
35
41
|
end
|
36
42
|
|
37
43
|
def similar_count
|
38
|
-
Sortition.where(
|
39
|
-
.where(
|
44
|
+
Sortition.where(component: component)
|
45
|
+
.where(decidim_proposals_component: decidim_proposals_component)
|
40
46
|
.categorized_as(category&.id)
|
41
47
|
.where(target_items: target_items)
|
42
48
|
.count
|
@@ -52,7 +58,7 @@ module Decidim
|
|
52
58
|
|
53
59
|
# Public: Overrides the `commentable?` Commentable concern method.
|
54
60
|
def commentable?
|
55
|
-
|
61
|
+
component.settings.comments_enabled?
|
56
62
|
end
|
57
63
|
|
58
64
|
# Public: Overrides the `accepts_new_comments?` Commentable concern method.
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Sortitions
|
5
|
+
module AdminLog
|
6
|
+
# This class holds the logic to present a `Decidim::Sortitions::Sortition`
|
7
|
+
# for the `AdminLog` log.
|
8
|
+
#
|
9
|
+
# Usage should be automatic and you shouldn't need to call this class
|
10
|
+
# directly, but here's an example:
|
11
|
+
#
|
12
|
+
# action_log = Decidim::ActionLog.last
|
13
|
+
# view_helpers # => this comes from the views
|
14
|
+
# SortitionPresenter.new(action_log, view_helpers).present
|
15
|
+
class SortitionPresenter < Decidim::Log::BasePresenter
|
16
|
+
private
|
17
|
+
|
18
|
+
def action_string
|
19
|
+
case action
|
20
|
+
when "create", "delete", "update"
|
21
|
+
"decidim.sortitions.admin_log.sortition.#{action}"
|
22
|
+
else
|
23
|
+
super
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def diff_fields_mapping
|
28
|
+
{
|
29
|
+
cancel_reason: :i18n,
|
30
|
+
dice: :integer,
|
31
|
+
request_timestamp: :date,
|
32
|
+
witnesses: :i18n,
|
33
|
+
additional_info: :i18n,
|
34
|
+
title: :i18n,
|
35
|
+
reference: :string,
|
36
|
+
decidim_proposals_component_id: :component
|
37
|
+
}
|
38
|
+
end
|
39
|
+
|
40
|
+
def i18n_labels_scope
|
41
|
+
"activemodel.attributes.sortition"
|
42
|
+
end
|
43
|
+
|
44
|
+
def has_diff?
|
45
|
+
action == "delete" || super
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -3,11 +3,11 @@
|
|
3
3
|
module Decidim
|
4
4
|
module Sortitions
|
5
5
|
module Admin
|
6
|
-
# Query that retrieves a list of proposal
|
7
|
-
class
|
6
|
+
# Query that retrieves a list of proposal components
|
7
|
+
class ParticipatorySpaceProposalComponents < Rectify::Query
|
8
8
|
attr_reader :participatory_space
|
9
9
|
|
10
|
-
# Sugar syntax. Allow retrieving all proposal
|
10
|
+
# Sugar syntax. Allow retrieving all proposal components for the
|
11
11
|
# given participatory space.
|
12
12
|
def self.for(participatory_space)
|
13
13
|
new(participatory_space).query
|
@@ -19,7 +19,7 @@ module Decidim
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def query
|
22
|
-
|
22
|
+
Component
|
23
23
|
.where(participatory_space: participatory_space, manifest_name: "proposals")
|
24
24
|
.published
|
25
25
|
end
|