decidim-sortitions 0.9.0 → 0.11.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|