decidim-proposals 0.4.4 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/images/decidim/proposals/icon.svg +1 -1
- data/app/assets/javascripts/decidim/proposals/add_proposal.js.es6 +2 -0
- data/app/commands/decidim/proposals/admin/create_proposal.rb +44 -3
- data/app/commands/decidim/proposals/create_proposal.rb +43 -2
- data/app/controllers/decidim/proposals/admin/proposals_controller.rb +3 -1
- data/app/controllers/decidim/proposals/proposals_controller.rb +3 -1
- data/app/forms/decidim/proposals/admin/proposal_form.rb +2 -1
- data/app/forms/decidim/proposals/proposal_form.rb +2 -1
- data/app/models/decidim/proposals/proposal.rb +1 -0
- data/app/views/decidim/proposals/admin/proposals/_form.html.erb +19 -2
- data/app/views/decidim/proposals/admin/proposals/index.html.erb +12 -8
- data/app/views/decidim/proposals/proposals/_filters.html.erb +2 -2
- data/app/views/decidim/proposals/proposals/_filters_small_view.html.erb +1 -1
- data/app/views/decidim/proposals/proposals/_proposal.html.erb +1 -1
- data/app/views/decidim/proposals/proposals/index.html.erb +2 -0
- data/app/views/decidim/proposals/proposals/index.js.erb +1 -1
- data/app/views/decidim/proposals/proposals/new.html.erb +22 -2
- data/app/views/decidim/proposals/proposals/show.html.erb +2 -1
- data/config/i18n-tasks.yml +1 -1
- data/config/locales/ca.yml +2 -1
- data/config/locales/en.yml +7 -0
- data/config/locales/es.yml +2 -1
- data/config/locales/eu.yml +1 -1
- data/config/locales/fi.yml +1 -1
- data/config/locales/fr.yml +1 -1
- data/config/locales/it.yml +1 -1
- data/config/locales/nl.yml +1 -1
- data/config/locales/pl.yml +5 -0
- data/lib/decidim/proposals/feature.rb +13 -3
- data/lib/decidim/proposals/test/factories.rb +8 -0
- metadata +17 -17
- data/app/views/decidim/proposals/proposals/_tags.html.erb +0 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5e46ca0aaa9b501474fe72bbbfefa15288155832
|
4
|
+
data.tar.gz: 076163c0d2fe44654b06cb85309627af691ab243
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 62ace44ca224fcaff3920ff0e68945d3998fb453b989a4158ed7f1a29a85b9953d7b4f6f13be0b3345c7a26cddef1db49929dda0c004d642400bf101f65cad27
|
7
|
+
data.tar.gz: 5e2ba3f6ff312ad90c236867e258db1463c7806ea155b9444171851f1979861650de2d2b773d8f45e5468c925c9dcc39f6873d5e1152cd9d11f2539f9ce6adc7
|
@@ -1 +1 @@
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 35 35"><path d="M17.5 35A17.5 17.5 0 1 1 35 17.5 17.52 17.52 0 0 1 17.5 35zm0-33.06A15.56 15.56 0 1 0 33.06 17.5 15.57 15.57 0 0 0 17.5 1.94zm9.5 13.7H8a1 1 0 0 1 0-1.94h19a1 1 0 0 1 0 1.94zm0 3.68H8a1 1 0 0 1 0-1.94h19a1 1 0 0 1 0 1.94zM22.26 23H8a1 1 0 0 1 0-1.94h14.26a1 1 0 0 1 0 1.94z"/></svg>
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 35 35"><path d="M17.5 35A17.5 17.5 0 1 1 35 17.5 17.52 17.52 0 0 1 17.5 35zm0-33.06A15.56 15.56 0 1 0 33.06 17.5 15.57 15.57 0 0 0 17.5 1.94zm9.5 13.7H8a1 1 0 0 1 0-1.94h19a1 1 0 0 1 0 1.94zm0 3.68H8a1 1 0 0 1 0-1.94h19a1 1 0 0 1 0 1.94zM22.26 23H8a1 1 0 0 1 0-1.94h14.26a1 1 0 0 1 0 1.94z"/></svg>
|
@@ -21,13 +21,22 @@ module Decidim
|
|
21
21
|
def call
|
22
22
|
return broadcast(:invalid) if form.invalid?
|
23
23
|
|
24
|
-
|
25
|
-
|
24
|
+
if process_attachments?
|
25
|
+
build_attachment
|
26
|
+
return broadcast(:invalid) if attachment_invalid?
|
27
|
+
end
|
28
|
+
|
29
|
+
transaction do
|
30
|
+
create_proposal
|
31
|
+
create_attachment if process_attachments?
|
32
|
+
end
|
33
|
+
|
34
|
+
broadcast(:ok, proposal)
|
26
35
|
end
|
27
36
|
|
28
37
|
private
|
29
38
|
|
30
|
-
attr_reader :form, :proposal
|
39
|
+
attr_reader :form, :proposal, :attachment
|
31
40
|
|
32
41
|
def create_proposal
|
33
42
|
@proposal = Proposal.create!(
|
@@ -41,6 +50,38 @@ module Decidim
|
|
41
50
|
longitude: form.longitude
|
42
51
|
)
|
43
52
|
end
|
53
|
+
|
54
|
+
def build_attachment
|
55
|
+
@attachment = Attachment.new(
|
56
|
+
title: form.attachment.title,
|
57
|
+
file: form.attachment.file,
|
58
|
+
attached_to: @proposal
|
59
|
+
)
|
60
|
+
end
|
61
|
+
|
62
|
+
def attachment_invalid?
|
63
|
+
if attachment.invalid? && attachment.errors.has_key?(:file)
|
64
|
+
form.attachment.errors.add :file, attachment.errors[:file]
|
65
|
+
true
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def attachment_present?
|
70
|
+
form.attachment.file.present?
|
71
|
+
end
|
72
|
+
|
73
|
+
def create_attachment
|
74
|
+
attachment.attached_to = proposal
|
75
|
+
attachment.save!
|
76
|
+
end
|
77
|
+
|
78
|
+
def attachments_allowed?
|
79
|
+
form.current_feature.settings.attachments_allowed?
|
80
|
+
end
|
81
|
+
|
82
|
+
def process_attachments?
|
83
|
+
attachments_allowed? && attachment_present?
|
84
|
+
end
|
44
85
|
end
|
45
86
|
end
|
46
87
|
end
|
@@ -22,13 +22,22 @@ module Decidim
|
|
22
22
|
def call
|
23
23
|
return broadcast(:invalid) if form.invalid?
|
24
24
|
|
25
|
-
|
25
|
+
if process_attachments?
|
26
|
+
build_attachment
|
27
|
+
return broadcast(:invalid) if attachment_invalid?
|
28
|
+
end
|
29
|
+
|
30
|
+
transaction do
|
31
|
+
create_proposal
|
32
|
+
create_attachment if process_attachments?
|
33
|
+
end
|
34
|
+
|
26
35
|
broadcast(:ok, proposal)
|
27
36
|
end
|
28
37
|
|
29
38
|
private
|
30
39
|
|
31
|
-
attr_reader :form, :proposal
|
40
|
+
attr_reader :form, :proposal, :attachment
|
32
41
|
|
33
42
|
def create_proposal
|
34
43
|
@proposal = Proposal.create!(
|
@@ -44,6 +53,38 @@ module Decidim
|
|
44
53
|
longitude: form.longitude
|
45
54
|
)
|
46
55
|
end
|
56
|
+
|
57
|
+
def build_attachment
|
58
|
+
@attachment = Attachment.new(
|
59
|
+
title: form.attachment.title,
|
60
|
+
file: form.attachment.file,
|
61
|
+
attached_to: @proposal
|
62
|
+
)
|
63
|
+
end
|
64
|
+
|
65
|
+
def attachment_invalid?
|
66
|
+
if attachment.invalid? && attachment.errors.has_key?(:file)
|
67
|
+
form.attachment.errors.add :file, attachment.errors[:file]
|
68
|
+
true
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def attachment_present?
|
73
|
+
form.attachment.file.present?
|
74
|
+
end
|
75
|
+
|
76
|
+
def create_attachment
|
77
|
+
attachment.attached_to = proposal
|
78
|
+
attachment.save!
|
79
|
+
end
|
80
|
+
|
81
|
+
def attachments_allowed?
|
82
|
+
form.current_feature.settings.attachments_allowed?
|
83
|
+
end
|
84
|
+
|
85
|
+
def process_attachments?
|
86
|
+
attachments_allowed? && attachment_present?
|
87
|
+
end
|
47
88
|
end
|
48
89
|
end
|
49
90
|
end
|
@@ -14,6 +14,7 @@ module Decidim
|
|
14
14
|
attribute :longitude, Float
|
15
15
|
attribute :category_id, Integer
|
16
16
|
attribute :scope_id, Integer
|
17
|
+
attribute :attachment, AttachmentForm
|
17
18
|
|
18
19
|
validates :title, :body, presence: true
|
19
20
|
validates :address, geocoding: true, if: -> { current_feature.settings.geocoding_enabled? }
|
@@ -49,7 +50,7 @@ module Decidim
|
|
49
50
|
#
|
50
51
|
# Returns a Decidim::Scope
|
51
52
|
def scope
|
52
|
-
@scope ||=
|
53
|
+
@scope ||= organization_scopes.where(id: scope_id).first || process_scope
|
53
54
|
end
|
54
55
|
end
|
55
56
|
end
|
@@ -15,6 +15,7 @@ module Decidim
|
|
15
15
|
attribute :scope_id, Integer
|
16
16
|
attribute :user_group_id, Integer
|
17
17
|
attribute :has_address, Boolean
|
18
|
+
attribute :attachment, AttachmentForm
|
18
19
|
|
19
20
|
validates :title, :body, presence: true, etiquette: true
|
20
21
|
validates :title, length: { maximum: 150 }
|
@@ -53,7 +54,7 @@ module Decidim
|
|
53
54
|
#
|
54
55
|
# Returns a Decidim::Scope
|
55
56
|
def scope
|
56
|
-
@scope ||=
|
57
|
+
@scope ||= organization_scopes.where(id: scope_id).first || process_scope
|
57
58
|
end
|
58
59
|
|
59
60
|
def has_address?
|
@@ -24,9 +24,26 @@
|
|
24
24
|
</div>
|
25
25
|
<% end %>
|
26
26
|
|
27
|
-
<% if
|
27
|
+
<% if current_participatory_process.has_subscopes? %>
|
28
28
|
<div class="row column">
|
29
|
-
<%= form.
|
29
|
+
<%= form.scopes_select :scope_id, prompt: I18n.t("decidim.scopes.global"), remote_path: decidim.scopes_search_path(root: current_participatory_process.scope) %>
|
30
|
+
</div>
|
31
|
+
<% end %>
|
32
|
+
|
33
|
+
<% if feature_settings.attachments_allowed? %>
|
34
|
+
<div class="row column">
|
35
|
+
<fieldset>
|
36
|
+
<legend><%= t('.attachment_legend') %></legend>
|
37
|
+
<%= form.fields_for :attachment, @form.attachment do |form| %>
|
38
|
+
<div class="row column">
|
39
|
+
<%= form.text_field :title %>
|
40
|
+
</div>
|
41
|
+
|
42
|
+
<div class="row column">
|
43
|
+
<%= form.upload :file, optional: false %>
|
44
|
+
</div>
|
45
|
+
<% end %>
|
46
|
+
</fieldset>
|
30
47
|
</div>
|
31
48
|
<% end %>
|
32
49
|
</div>
|
@@ -21,7 +21,9 @@
|
|
21
21
|
<tr>
|
22
22
|
<th><%= t("models.proposal.fields.title", scope: "decidim.proposals") %></th>
|
23
23
|
<th><%= t("models.proposal.fields.category", scope: "decidim.proposals") %></th>
|
24
|
-
|
24
|
+
<% if scopes_enabled?(current_participatory_process) %>
|
25
|
+
<th><%= t("models.proposal.fields.scope", scope: "decidim.proposals") %></th>
|
26
|
+
<% end %>
|
25
27
|
<th><%= t("models.proposal.fields.state", scope: "decidim.proposals") %></th>
|
26
28
|
<th class="actions"><%= t("actions.title", scope: "decidim.proposals") %></th>
|
27
29
|
</tr>
|
@@ -37,13 +39,15 @@
|
|
37
39
|
<%= translated_attribute proposal.category.name %>
|
38
40
|
<% end %>
|
39
41
|
</td>
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
42
|
+
<% if scopes_enabled?(current_participatory_process) %>
|
43
|
+
<td>
|
44
|
+
<% if proposal.scope %>
|
45
|
+
<%= translated_attribute proposal.scope.name %>
|
46
|
+
<% else %>
|
47
|
+
<%= t("decidim.scopes.global") %>
|
48
|
+
<% end %>
|
49
|
+
</td>
|
50
|
+
<% end %>
|
47
51
|
<td>
|
48
52
|
<strong class="<%= proposal_state_css_class proposal.state %>">
|
49
53
|
<%= humanize_proposal_state proposal.state %>
|
@@ -28,8 +28,8 @@
|
|
28
28
|
<%= form.collection_check_boxes :activity, [["voted", t('.voted')]], :first, :last, legend_title: t('.activity') %>
|
29
29
|
<% end %>
|
30
30
|
|
31
|
-
<% if
|
32
|
-
<%= form.
|
31
|
+
<% if current_participatory_process.has_subscopes? %>
|
32
|
+
<%= form.scopes_select :scope_id, legend_title: t(".scopes"), label: false, prompt: t('.scope_prompt'), remote_path: decidim.scopes_search_path(root: current_participatory_process.scope, include_root: true), multiple: true %>
|
33
33
|
<% end %>
|
34
34
|
|
35
35
|
<% if current_feature.categories.any? %>
|
@@ -12,7 +12,7 @@
|
|
12
12
|
</div>
|
13
13
|
<%= render partial: "proposal_badge", locals: { proposal: proposal } %>
|
14
14
|
<p><%= truncate(proposal.body, length: 100) %></p>
|
15
|
-
<%= render partial: "tags", locals: { proposal: proposal } %>
|
15
|
+
<%= render partial: "decidim/shared/tags", locals: { resource: proposal, tags_class_extra: "tags--proposal" } %>
|
16
16
|
</div>
|
17
17
|
<div class="card__footer">
|
18
18
|
<div class="card__support">
|
@@ -6,5 +6,5 @@ $proposals.html('<%= j(render partial: "proposals") %>');
|
|
6
6
|
$proposalsCount.html('<%= j(render partial: "count") %>');
|
7
7
|
$orderFilterInput.val('<%= order %>');
|
8
8
|
|
9
|
-
var $dropdownMenu = $('.dropdown.menu
|
9
|
+
var $dropdownMenu = $('.dropdown.menu', $proposals);
|
10
10
|
$dropdownMenu.foundation();
|
@@ -5,9 +5,14 @@
|
|
5
5
|
<% end %>
|
6
6
|
<h2 class="section-heading"><%= t(".title") %></h2>
|
7
7
|
</div>
|
8
|
+
|
8
9
|
<div class="row">
|
9
10
|
<div class="columns large-6 medium-centered">
|
10
11
|
<div class="card">
|
12
|
+
<% if translated_attribute(feature_settings.new_proposal_help_text).present? %>
|
13
|
+
<%= render partial: "decidim/shared/announcement", locals: { announcement: feature_settings.new_proposal_help_text } %>
|
14
|
+
<% end %>
|
15
|
+
|
11
16
|
<div class="card__content">
|
12
17
|
<%= decidim_form_for(@form) do |form| %>
|
13
18
|
<div class="field">
|
@@ -33,9 +38,9 @@
|
|
33
38
|
</div>
|
34
39
|
<% end %>
|
35
40
|
|
36
|
-
<% if
|
41
|
+
<% if current_participatory_process.has_subscopes? %>
|
37
42
|
<div class="field">
|
38
|
-
<%= form.
|
43
|
+
<%= form.scopes_select :scope_id, prompt: I18n.t("decidim.scopes.global"), remote_path: decidim.scopes_search_path(root: current_participatory_process.scope) %>
|
39
44
|
</div>
|
40
45
|
<% end %>
|
41
46
|
|
@@ -45,6 +50,21 @@
|
|
45
50
|
</div>
|
46
51
|
<% end %>
|
47
52
|
|
53
|
+
<% if feature_settings.attachments_allowed? %>
|
54
|
+
<fieldset>
|
55
|
+
<legend><%= t('.attachment_legend') %></legend>
|
56
|
+
<%= form.fields_for :attachment, @form.attachment do |form| %>
|
57
|
+
<div class="field">
|
58
|
+
<%= form.text_field :title %>
|
59
|
+
</div>
|
60
|
+
|
61
|
+
<div class="field">
|
62
|
+
<%= form.upload :file, optional: false %>
|
63
|
+
</div>
|
64
|
+
<% end %>
|
65
|
+
</fieldset>
|
66
|
+
<% end %>
|
67
|
+
|
48
68
|
<div class="actions">
|
49
69
|
<%= form.submit t(".send"), class: "button expanded", "data-disable-with" => "#{t('.send')}..." %>
|
50
70
|
</div>
|
@@ -37,7 +37,7 @@
|
|
37
37
|
<% if feature_settings.geocoding_enabled? %>
|
38
38
|
<%= render partial: "decidim/shared/static_map", locals: { icon_name: "proposals", geolocalizable: @proposal } %>
|
39
39
|
<% end %>
|
40
|
-
<%= render partial: "tags", locals: {
|
40
|
+
<%= render partial: "decidim/shared/tags", locals: { resource: @proposal, tags_class_extra: "tags--proposal" } %>
|
41
41
|
</div>
|
42
42
|
<% if @proposal.answered? && translated_attribute(@proposal.answer).present? %>
|
43
43
|
<% if @proposal.accepted? %>
|
@@ -61,6 +61,7 @@
|
|
61
61
|
<%= linked_resources_for @proposal, :meetings, "proposals_from_meeting" %>
|
62
62
|
</div>
|
63
63
|
</div>
|
64
|
+
<%= attachments_for @proposal %>
|
64
65
|
|
65
66
|
<%= comments_for @proposal %>
|
66
67
|
|
data/config/i18n-tasks.yml
CHANGED
data/config/locales/ca.yml
CHANGED
@@ -104,6 +104,7 @@ ca:
|
|
104
104
|
origin: Origen
|
105
105
|
rejected: Rebutjades
|
106
106
|
related_to: Relacionat amb
|
107
|
+
scope_prompt: Seleccioneu un àmbit
|
107
108
|
scopes: Àmbits
|
108
109
|
search: Cerca
|
109
110
|
state: Estat
|
@@ -156,4 +157,4 @@ ca:
|
|
156
157
|
proposal_projects: 'Proposta formulada en aquests projectes:'
|
157
158
|
proposal_results: 'La proposta apareix en aquests resultats:'
|
158
159
|
proposals_from_meeting:
|
159
|
-
proposal_meetings: Trobades relacionades
|
160
|
+
proposal_meetings: Trobades relacionades
|
data/config/locales/en.yml
CHANGED
@@ -19,12 +19,16 @@ en:
|
|
19
19
|
name: Proposals
|
20
20
|
settings:
|
21
21
|
global:
|
22
|
+
announcement: Announcement
|
23
|
+
attachments_allowed: Allow attachments
|
22
24
|
comments_enabled: Comments enabled
|
23
25
|
geocoding_enabled: Geocoding enabled
|
26
|
+
new_proposal_help_text: New proposal help text
|
24
27
|
official_proposals_enabled: Official proposals enabled
|
25
28
|
proposal_answering_enabled: Proposal answering enabled
|
26
29
|
vote_limit: Vote limit
|
27
30
|
step:
|
31
|
+
announcement: Announcement
|
28
32
|
comments_blocked: Comments blocked
|
29
33
|
creation_enabled: Proposal creation enabled
|
30
34
|
proposal_answering_enabled: Proposal answering enabled
|
@@ -61,6 +65,7 @@ en:
|
|
61
65
|
invalid: There's been a problem creating this proposal
|
62
66
|
success: Proposal successfully created
|
63
67
|
form:
|
68
|
+
attachment_legend: "(Optional) Add an attachment"
|
64
69
|
select_a_category: Select a category
|
65
70
|
index:
|
66
71
|
title: Proposals
|
@@ -106,6 +111,7 @@ en:
|
|
106
111
|
origin: Origin
|
107
112
|
rejected: Rejected
|
108
113
|
related_to: Related to
|
114
|
+
scope_prompt: Select a scope
|
109
115
|
scopes: Scopes
|
110
116
|
search: Search
|
111
117
|
state: State
|
@@ -123,6 +129,7 @@ en:
|
|
123
129
|
one: <span class="card--list__data__number">1</span>vote
|
124
130
|
other: <span class="card--list__data__number">%{count}</span>votes
|
125
131
|
new:
|
132
|
+
attachment_legend: "(Optional) Add an attachment"
|
126
133
|
back: Back
|
127
134
|
select_a_category: Please select a category
|
128
135
|
send: Send
|
data/config/locales/es.yml
CHANGED
@@ -104,6 +104,7 @@ es:
|
|
104
104
|
origin: Origen
|
105
105
|
rejected: Rechazadas
|
106
106
|
related_to: Relacionado con
|
107
|
+
scope_prompt: Seleccione un ámbito
|
107
108
|
scopes: Ámbitos
|
108
109
|
search: Buscar
|
109
110
|
state: Estado
|
@@ -156,4 +157,4 @@ es:
|
|
156
157
|
proposal_projects: 'Propuesta formulada en estos proyectos:'
|
157
158
|
proposal_results: 'Propuesta formulada en estos resultados:'
|
158
159
|
proposals_from_meeting:
|
159
|
-
proposal_meetings: Encuentros relacionados
|
160
|
+
proposal_meetings: Encuentros relacionados
|
data/config/locales/eu.yml
CHANGED
@@ -145,4 +145,4 @@ eu:
|
|
145
145
|
proposal_projects: 'Proiektu hauetatik sortutako proposamena:'
|
146
146
|
proposal_results: 'Emaitza hauetatik sortutako proposamena:'
|
147
147
|
proposals_from_meeting:
|
148
|
-
proposal_meetings: Proposamenarekin lotutako topaketak
|
148
|
+
proposal_meetings: Proposamenarekin lotutako topaketak
|
data/config/locales/fi.yml
CHANGED
data/config/locales/fr.yml
CHANGED
data/config/locales/it.yml
CHANGED
@@ -144,4 +144,4 @@ it:
|
|
144
144
|
proposal_projects: 'Le proposte compaiono nei seguenti progetti:'
|
145
145
|
proposal_results: 'Le proposte compaiono nei seguenti risultati:'
|
146
146
|
proposals_from_meeting:
|
147
|
-
proposal_meetings: Meeting associati alla proposta
|
147
|
+
proposal_meetings: Meeting associati alla proposta
|
data/config/locales/nl.yml
CHANGED
@@ -21,6 +21,9 @@ Decidim.register_feature(:proposals) do |feature|
|
|
21
21
|
settings.attribute :official_proposals_enabled, type: :boolean, default: true
|
22
22
|
settings.attribute :comments_enabled, type: :boolean, default: true
|
23
23
|
settings.attribute :geocoding_enabled, type: :boolean, default: false
|
24
|
+
settings.attribute :attachments_allowed, type: :boolean, default: false
|
25
|
+
settings.attribute :announcement, type: :text, translated: true, editor: true
|
26
|
+
settings.attribute :new_proposal_help_text, type: :text, translated: true, editor: true
|
24
27
|
end
|
25
28
|
|
26
29
|
feature.settings(:step) do |settings|
|
@@ -30,6 +33,7 @@ Decidim.register_feature(:proposals) do |feature|
|
|
30
33
|
settings.attribute :comments_blocked, type: :boolean, default: false
|
31
34
|
settings.attribute :creation_enabled, type: :boolean
|
32
35
|
settings.attribute :proposal_answering_enabled, type: :boolean, default: true
|
36
|
+
settings.attribute :announcement, type: :text, translated: true, editor: true
|
33
37
|
end
|
34
38
|
|
35
39
|
feature.register_resource do |resource|
|
@@ -84,8 +88,14 @@ Decidim.register_feature(:proposals) do |feature|
|
|
84
88
|
process.active_step.id => { votes_enabled: true, votes_blocked: false, creation_enabled: true }
|
85
89
|
}
|
86
90
|
)
|
87
|
-
|
88
|
-
|
91
|
+
|
92
|
+
if process.scope
|
93
|
+
scopes = process.scope.descendants
|
94
|
+
global = process.scope
|
95
|
+
else
|
96
|
+
scopes = process.organization.scopes
|
97
|
+
global = nil
|
98
|
+
end
|
89
99
|
|
90
100
|
20.times do |n|
|
91
101
|
author = Decidim::User.where(organization: feature.organization).all.sample
|
@@ -103,7 +113,7 @@ Decidim.register_feature(:proposals) do |feature|
|
|
103
113
|
proposal = Decidim::Proposals::Proposal.create!(
|
104
114
|
feature: feature,
|
105
115
|
category: process.categories.sample,
|
106
|
-
scope: scopes.sample,
|
116
|
+
scope: Faker::Boolean.boolean(0.5) ? global : scopes.sample,
|
107
117
|
title: Faker::Lorem.sentence(2),
|
108
118
|
body: Faker::Lorem.paragraphs(2).join("\n"),
|
109
119
|
author: author,
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: decidim-proposals
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
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: 2017-08-
|
13
|
+
date: 2017-08-17 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: decidim-core
|
@@ -18,28 +18,28 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - '='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.
|
21
|
+
version: 0.5.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
26
|
- - '='
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version: 0.
|
28
|
+
version: 0.5.0
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: decidim-comments
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
32
32
|
requirements:
|
33
33
|
- - '='
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version: 0.
|
35
|
+
version: 0.5.0
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
40
|
- - '='
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: 0.
|
42
|
+
version: 0.5.0
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: rectify
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
@@ -88,70 +88,70 @@ dependencies:
|
|
88
88
|
requirements:
|
89
89
|
- - '='
|
90
90
|
- !ruby/object:Gem::Version
|
91
|
-
version: 0.
|
91
|
+
version: 0.5.0
|
92
92
|
type: :development
|
93
93
|
prerelease: false
|
94
94
|
version_requirements: !ruby/object:Gem::Requirement
|
95
95
|
requirements:
|
96
96
|
- - '='
|
97
97
|
- !ruby/object:Gem::Version
|
98
|
-
version: 0.
|
98
|
+
version: 0.5.0
|
99
99
|
- !ruby/object:Gem::Dependency
|
100
100
|
name: decidim-admin
|
101
101
|
requirement: !ruby/object:Gem::Requirement
|
102
102
|
requirements:
|
103
103
|
- - '='
|
104
104
|
- !ruby/object:Gem::Version
|
105
|
-
version: 0.
|
105
|
+
version: 0.5.0
|
106
106
|
type: :development
|
107
107
|
prerelease: false
|
108
108
|
version_requirements: !ruby/object:Gem::Requirement
|
109
109
|
requirements:
|
110
110
|
- - '='
|
111
111
|
- !ruby/object:Gem::Version
|
112
|
-
version: 0.
|
112
|
+
version: 0.5.0
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: decidim-meetings
|
115
115
|
requirement: !ruby/object:Gem::Requirement
|
116
116
|
requirements:
|
117
117
|
- - '='
|
118
118
|
- !ruby/object:Gem::Version
|
119
|
-
version: 0.
|
119
|
+
version: 0.5.0
|
120
120
|
type: :development
|
121
121
|
prerelease: false
|
122
122
|
version_requirements: !ruby/object:Gem::Requirement
|
123
123
|
requirements:
|
124
124
|
- - '='
|
125
125
|
- !ruby/object:Gem::Version
|
126
|
-
version: 0.
|
126
|
+
version: 0.5.0
|
127
127
|
- !ruby/object:Gem::Dependency
|
128
128
|
name: decidim-results
|
129
129
|
requirement: !ruby/object:Gem::Requirement
|
130
130
|
requirements:
|
131
131
|
- - '='
|
132
132
|
- !ruby/object:Gem::Version
|
133
|
-
version: 0.
|
133
|
+
version: 0.5.0
|
134
134
|
type: :development
|
135
135
|
prerelease: false
|
136
136
|
version_requirements: !ruby/object:Gem::Requirement
|
137
137
|
requirements:
|
138
138
|
- - '='
|
139
139
|
- !ruby/object:Gem::Version
|
140
|
-
version: 0.
|
140
|
+
version: 0.5.0
|
141
141
|
- !ruby/object:Gem::Dependency
|
142
142
|
name: decidim-budgets
|
143
143
|
requirement: !ruby/object:Gem::Requirement
|
144
144
|
requirements:
|
145
145
|
- - '='
|
146
146
|
- !ruby/object:Gem::Version
|
147
|
-
version: 0.
|
147
|
+
version: 0.5.0
|
148
148
|
type: :development
|
149
149
|
prerelease: false
|
150
150
|
version_requirements: !ruby/object:Gem::Requirement
|
151
151
|
requirements:
|
152
152
|
- - '='
|
153
153
|
- !ruby/object:Gem::Version
|
154
|
-
version: 0.
|
154
|
+
version: 0.5.0
|
155
155
|
description: A proposals component for decidim's participatory processes.
|
156
156
|
email:
|
157
157
|
- josepjaume@gmail.com
|
@@ -213,7 +213,6 @@ files:
|
|
213
213
|
- app/views/decidim/proposals/proposals/_proposal_badge.html.erb
|
214
214
|
- app/views/decidim/proposals/proposals/_proposals.html.erb
|
215
215
|
- app/views/decidim/proposals/proposals/_remaining_votes_count.html.erb
|
216
|
-
- app/views/decidim/proposals/proposals/_tags.html.erb
|
217
216
|
- app/views/decidim/proposals/proposals/_vote_button.html.erb
|
218
217
|
- app/views/decidim/proposals/proposals/_votes_count.html.erb
|
219
218
|
- app/views/decidim/proposals/proposals/_votes_limit.html.erb
|
@@ -231,6 +230,7 @@ files:
|
|
231
230
|
- config/locales/fr.yml
|
232
231
|
- config/locales/it.yml
|
233
232
|
- config/locales/nl.yml
|
233
|
+
- config/locales/pl.yml
|
234
234
|
- db/migrate/20161212110850_create_decidim_proposals.rb
|
235
235
|
- db/migrate/20170112115253_create_proposal_votes.rb
|
236
236
|
- db/migrate/20170113114245_add_text_search_indexes.rb
|
@@ -1,10 +0,0 @@
|
|
1
|
-
<% if proposal.category.present? || proposal.scope.present? %>
|
2
|
-
<ul class="tags tags--proposal" >
|
3
|
-
<% if proposal.category.present? %>
|
4
|
-
<li><%= link_to translated_attribute(proposal.category.name), resource_locator(proposal).index(filter: { category_id: proposal.category.id }) %></li>
|
5
|
-
<% end %>
|
6
|
-
<% if proposal.scope.present? && !current_participatory_process.scope %>
|
7
|
-
<li><%= link_to proposal.scope.name, resource_locator(proposal).index(filter: { scope_id: [proposal.scope.id] }) %></li>
|
8
|
-
<% end %>
|
9
|
-
</ul>
|
10
|
-
<% end %>
|