decidim-consultations 0.11.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +51 -0
- data/Rakefile +3 -0
- data/app/assets/config/decidim_consultations_manifest.js +5 -0
- data/app/assets/config/decidim_consultations_manifest.scss +3 -0
- data/app/assets/images/decidim/consultations/icon.svg +70 -0
- data/app/assets/images/decidim/consultations/icon2.svg +88 -0
- data/app/assets/javascripts/decidim/consultations/show_more.js.es6 +12 -0
- data/app/assets/javascripts/decidim/consultations/social_share.js +2 -0
- data/app/assets/javascripts/decidim/consultations/utils.js.es6 +19 -0
- data/app/assets/javascripts/decidim/consultations/vote_dialog.js +36 -0
- data/app/assets/stylesheets/decidim/consultations/_question.scss +46 -0
- data/app/assets/stylesheets/decidim/consultations/_stats.scss +22 -0
- data/app/assets/stylesheets/decidim/consultations/_video_wrapper.scss +14 -0
- data/app/assets/stylesheets/decidim/consultations/banners/_block-banner.scss +39 -0
- data/app/assets/stylesheets/decidim/consultations/consultations.scss +6 -0
- data/app/assets/stylesheets/decidim/consultations/consultations/_consultations-banner.scss +13 -0
- data/app/assets/stylesheets/decidim/consultations/consultations/_consultations-card.scss +17 -0
- data/app/assets/stylesheets/decidim/consultations/consultations/_consultations-header.scss +115 -0
- data/app/assets/stylesheets/decidim/consultations/consultations/_consultations-home-banner.scss +15 -0
- data/app/assets/stylesheets/decidim/consultations/consultations/_consultations-home-intro.scss +30 -0
- data/app/assets/stylesheets/decidim/consultations/consultations/_consultations-intro.scss +11 -0
- data/app/assets/stylesheets/decidim/consultations/consultations/_consultations-title.scss +26 -0
- data/app/assets/stylesheets/decidim/consultations/consultations/_consultations_nav.scss +7 -0
- data/app/assets/stylesheets/decidim/consultations/consultations/introductory_image.scss +3 -0
- data/app/assets/stylesheets/decidim/consultations/highlighted-content-banner.css.scss +42 -0
- data/app/assets/stylesheets/decidim/consultations/social_share.css.scss +18 -0
- data/app/commands/decidim/consultations/admin/create_consultation.rb +61 -0
- data/app/commands/decidim/consultations/admin/create_question.rb +68 -0
- data/app/commands/decidim/consultations/admin/create_response.rb +39 -0
- data/app/commands/decidim/consultations/admin/publish_consultation.rb +34 -0
- data/app/commands/decidim/consultations/admin/publish_consultation_results.rb +34 -0
- data/app/commands/decidim/consultations/admin/publish_question.rb +34 -0
- data/app/commands/decidim/consultations/admin/unpublish_consultation.rb +34 -0
- data/app/commands/decidim/consultations/admin/unpublish_consultation_results.rb +34 -0
- data/app/commands/decidim/consultations/admin/unpublish_question.rb +34 -0
- data/app/commands/decidim/consultations/admin/update_consultation.rb +64 -0
- data/app/commands/decidim/consultations/admin/update_question.rb +72 -0
- data/app/commands/decidim/consultations/admin/update_response.rb +46 -0
- data/app/commands/decidim/consultations/unvote_question.rb +37 -0
- data/app/commands/decidim/consultations/vote_question.rb +42 -0
- data/app/constraints/decidim/consultations/current_component.rb +28 -0
- data/app/constraints/decidim/consultations/current_question.rb +36 -0
- data/app/controllers/concerns/decidim/consultations/action_authorization.rb +38 -0
- data/app/controllers/concerns/decidim/consultations/admin/consultation_admin.rb +24 -0
- data/app/controllers/concerns/decidim/consultations/admin/question_admin.rb +28 -0
- data/app/controllers/concerns/decidim/consultations/needs_consultation.rb +54 -0
- data/app/controllers/concerns/decidim/consultations/needs_question.rb +79 -0
- data/app/controllers/concerns/decidim/consultations/orderable.rb +52 -0
- data/app/controllers/decidim/consultations/admin/application_controller.rb +14 -0
- data/app/controllers/decidim/consultations/admin/categories_controller.rb +13 -0
- data/app/controllers/decidim/consultations/admin/component_permissions_controller.rb +13 -0
- data/app/controllers/decidim/consultations/admin/components_controller.rb +13 -0
- data/app/controllers/decidim/consultations/admin/consultation_publications_controller.rb +44 -0
- data/app/controllers/decidim/consultations/admin/consultation_results_publications_controller.rb +44 -0
- data/app/controllers/decidim/consultations/admin/consultations_controller.rb +100 -0
- data/app/controllers/decidim/consultations/admin/question_attachments_controller.rb +25 -0
- data/app/controllers/decidim/consultations/admin/question_publications_controller.rb +44 -0
- data/app/controllers/decidim/consultations/admin/questions_controller.rb +88 -0
- data/app/controllers/decidim/consultations/admin/responses_controller.rb +85 -0
- data/app/controllers/decidim/consultations/consultation_widgets_controller.rb +25 -0
- data/app/controllers/decidim/consultations/consultations_controller.rb +75 -0
- data/app/controllers/decidim/consultations/question_votes_controller.rb +40 -0
- data/app/controllers/decidim/consultations/question_widgets_controller.rb +26 -0
- data/app/controllers/decidim/consultations/questions_controller.rb +23 -0
- data/app/forms/decidim/consultations/admin/consultation_form.rb +56 -0
- data/app/forms/decidim/consultations/admin/question_form.rb +74 -0
- data/app/forms/decidim/consultations/admin/response_form.rb +18 -0
- data/app/forms/decidim/consultations/vote_form.rb +28 -0
- data/app/helpers/decidim/consultations/admin/consultations_helper.rb +14 -0
- data/app/helpers/decidim/consultations/admin/questions_helper.rb +14 -0
- data/app/helpers/decidim/consultations/consultations_helper.rb +17 -0
- data/app/models/concerns/decidim/consultations/override_categorization.rb +21 -0
- data/app/models/concerns/decidim/consultations/publicable_results.rb +51 -0
- data/app/models/decidim/consultation.rb +79 -0
- data/app/models/decidim/consultations/abilities/admin/consultation_admin_ability.rb +34 -0
- data/app/models/decidim/consultations/abilities/admin/question_admin_ability.rb +30 -0
- data/app/models/decidim/consultations/abilities/admin/response_admin_ability.rb +26 -0
- data/app/models/decidim/consultations/abilities/current_user_ability.rb +45 -0
- data/app/models/decidim/consultations/abilities/everyone_ability.rb +23 -0
- data/app/models/decidim/consultations/application_record.rb +9 -0
- data/app/models/decidim/consultations/question.rb +127 -0
- data/app/models/decidim/consultations/response.rb +19 -0
- data/app/models/decidim/consultations/vote.rb +26 -0
- data/app/presenters/decidim/consultations/question_stats_presenter.rb +52 -0
- data/app/queries/decidim/consultations/admin/admin_users.rb +40 -0
- data/app/queries/decidim/consultations/organization_active_consultations.rb +20 -0
- data/app/queries/decidim/consultations/organization_consultations.rb +20 -0
- data/app/queries/decidim/consultations/organization_questions.rb +20 -0
- data/app/services/decidim/consultations/consultation_search.rb +51 -0
- data/app/views/decidim/consultations/_consultation.html.erb +32 -0
- data/app/views/decidim/consultations/admin/consultations/_form.html.erb +58 -0
- data/app/views/decidim/consultations/admin/consultations/edit.html.erb +42 -0
- data/app/views/decidim/consultations/admin/consultations/index.html.erb +74 -0
- data/app/views/decidim/consultations/admin/consultations/new.html.erb +11 -0
- data/app/views/decidim/consultations/admin/questions/_form.html.erb +84 -0
- data/app/views/decidim/consultations/admin/questions/edit.html.erb +32 -0
- data/app/views/decidim/consultations/admin/questions/index.html.erb +74 -0
- data/app/views/decidim/consultations/admin/questions/new.html.erb +13 -0
- data/app/views/decidim/consultations/admin/responses/_form.html.erb +11 -0
- data/app/views/decidim/consultations/admin/responses/edit.html.erb +18 -0
- data/app/views/decidim/consultations/admin/responses/index.html.erb +48 -0
- data/app/views/decidim/consultations/admin/responses/new.html.erb +13 -0
- data/app/views/decidim/consultations/consultation_widgets/show.html.erb +5 -0
- data/app/views/decidim/consultations/consultations/_consultation_card.html.erb +24 -0
- data/app/views/decidim/consultations/consultations/_consultation_details.html.erb +17 -0
- data/app/views/decidim/consultations/consultations/_consultations.html.erb +16 -0
- data/app/views/decidim/consultations/consultations/_count.html.erb +1 -0
- data/app/views/decidim/consultations/consultations/_filters.html.erb +25 -0
- data/app/views/decidim/consultations/consultations/_filters_small_view.html.erb +23 -0
- data/app/views/decidim/consultations/consultations/_highlighted_questions.html.erb +13 -0
- data/app/views/decidim/consultations/consultations/_question.html.erb +40 -0
- data/app/views/decidim/consultations/consultations/_regular_questions.html.erb +14 -0
- data/app/views/decidim/consultations/consultations/finished.html.erb +15 -0
- data/app/views/decidim/consultations/consultations/index.html.erb +27 -0
- data/app/views/decidim/consultations/consultations/index.js.erb +10 -0
- data/app/views/decidim/consultations/consultations/show.html.erb +11 -0
- data/app/views/decidim/consultations/question_votes/update_vote_button.js.erb +9 -0
- data/app/views/decidim/consultations/question_widgets/show.html.erb +2 -0
- data/app/views/decidim/consultations/questions/_results.html.erb +15 -0
- data/app/views/decidim/consultations/questions/_right_column.html.erb +20 -0
- data/app/views/decidim/consultations/questions/_statistics.html.erb +31 -0
- data/app/views/decidim/consultations/questions/_technical_data.html.erb +38 -0
- data/app/views/decidim/consultations/questions/_vote_button.html.erb +76 -0
- data/app/views/decidim/consultations/questions/_vote_modal.html.erb +27 -0
- data/app/views/decidim/consultations/questions/_vote_modal_confirm.html.erb +33 -0
- data/app/views/decidim/consultations/questions/show.html.erb +58 -0
- data/app/views/layouts/decidim/_consultation_header.html.erb +16 -0
- data/app/views/layouts/decidim/_consultation_voting_data.html.erb +10 -0
- data/app/views/layouts/decidim/_question_components.html.erb +38 -0
- data/app/views/layouts/decidim/_question_header.html.erb +46 -0
- data/app/views/layouts/decidim/admin/consultation.html.erb +28 -0
- data/app/views/layouts/decidim/admin/consultations.html.erb +16 -0
- data/app/views/layouts/decidim/admin/question.html.erb +72 -0
- data/app/views/layouts/decidim/consultation.html.erb +17 -0
- data/app/views/layouts/decidim/consultation_choose.html.erb +7 -0
- data/app/views/layouts/decidim/question.html.erb +19 -0
- data/config/locales/ca.yml +248 -0
- data/config/locales/en.yml +249 -0
- data/config/locales/es.yml +248 -0
- data/config/locales/eu.yml +248 -0
- data/config/locales/fi.yml +248 -0
- data/config/locales/fr.yml +248 -0
- data/config/locales/gl.yml +248 -0
- data/config/locales/it.yml +248 -0
- data/config/locales/nl.yml +248 -0
- data/config/locales/pl.yml +258 -0
- data/config/locales/pt-BR.yml +248 -0
- data/config/locales/pt.yml +248 -0
- data/config/locales/ru.yml +6 -0
- data/config/locales/sv.yml +248 -0
- data/config/locales/uk.yml +6 -0
- data/db/migrate/20180109092205_create_decidim_consultations.rb +37 -0
- data/db/migrate/20180112053247_create_decidim_consultations_questions.rb +35 -0
- data/db/migrate/20180115132000_add_end_voting_date_to_decidim_consultations.rb +18 -0
- data/db/migrate/20180115170933_add_slug_to_decidim_consultations_questions.rb +32 -0
- data/db/migrate/20180119084217_create_decidim_consultations_votes.rb +17 -0
- data/db/migrate/20180119084331_add_votes_count_to_decidim_consultations_question.rb +7 -0
- data/db/migrate/20180122113155_add_origin_scope_to_decidim_consultations_questions.rb +8 -0
- data/db/migrate/20180122113400_add_origin_title_to_decidim_consultations_questions.rb +8 -0
- data/db/migrate/20180122113447_add_origin_string_to_decidim_consultations_questions.rb +7 -0
- data/db/migrate/20180126142459_add_enable_highlighted_banner_to_decidim_consultations.rb +7 -0
- data/db/migrate/20180129063438_add_i_frame_url_to_decidim_consultations_questions.rb +8 -0
- data/db/migrate/20180129063700_create_decidim_consultations_responses.rb +14 -0
- data/db/migrate/20180129122226_rename_decidim_consultations_vote_to_decidim_consultations_endorsement.rb +7 -0
- data/db/migrate/20180129122504_rename_decidim_consultations_questions_votes_count_to_endorsements_count.rb +7 -0
- data/db/migrate/20180130060754_add_responses_count_to_decidim_consultations_questions.rb +22 -0
- data/db/migrate/20180130110449_rename_vote_related_attributes.rb +9 -0
- data/db/migrate/20180130142018_add_decidim_user_group_id_to_decidim_consultations_endorsements.rb +7 -0
- data/db/migrate/20180130142411_rename_vote_indexes_to_endorsement_indexes.rb +36 -0
- data/db/migrate/20180131083844_add_response_to_decidim_consultations_endorsements.rb +10 -0
- data/db/migrate/20180201135823_rename_endorsement_to_vote.rb +23 -0
- data/db/migrate/20180202050920_add_hero_image_to_decidim_consultations_question.rb +8 -0
- data/db/migrate/20180202085309_add_results_published_at_to_decidim_consultations.rb +7 -0
- data/db/migrate/20180202133655_add_votes_count_to_decidim_consultations_response.rb +7 -0
- data/db/migrate/20180212100503_remove_enable_highlighted_banner_flag.rb +7 -0
- data/db/migrate/20180219092120_add_order_to_decidim_consultations_questions.rb +7 -0
- data/db/migrate/20180320100658_add_introductory_image_to_decidim_consultations.rb +7 -0
- data/db/seeds/Exampledocument.pdf +0 -0
- data/db/seeds/city.jpeg +0 -0
- data/db/seeds/city2.jpeg +0 -0
- data/db/seeds/homepage_image.jpg +0 -0
- data/lib/decidim/consultations.rb +18 -0
- data/lib/decidim/consultations/admin.rb +10 -0
- data/lib/decidim/consultations/admin_engine.rb +72 -0
- data/lib/decidim/consultations/engine.rb +83 -0
- data/lib/decidim/consultations/participatory_space.rb +171 -0
- data/lib/decidim/consultations/test/factories.rb +104 -0
- data/lib/decidim/consultations/version.rb +9 -0
- metadata +288 -0
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Consultations
|
5
|
+
# This query class filters all consultations given an organization.
|
6
|
+
class OrganizationConsultations < Rectify::Query
|
7
|
+
def self.for(organization)
|
8
|
+
new(organization).query
|
9
|
+
end
|
10
|
+
|
11
|
+
def initialize(organization)
|
12
|
+
@organization = organization
|
13
|
+
end
|
14
|
+
|
15
|
+
def query
|
16
|
+
Decidim::Consultation.where(organization: @organization)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Consultations
|
5
|
+
# This query class filters all questions given an organization.
|
6
|
+
class OrganizationQuestions < Rectify::Query
|
7
|
+
def self.for(organization)
|
8
|
+
new(organization).query
|
9
|
+
end
|
10
|
+
|
11
|
+
def initialize(organization)
|
12
|
+
@organization = organization
|
13
|
+
end
|
14
|
+
|
15
|
+
def query
|
16
|
+
Decidim::Consultations::Question.where(organization: @organization)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Consultations
|
5
|
+
# Service that encapsulates all logic related to filtering consultations.
|
6
|
+
class ConsultationSearch < Searchlight::Search
|
7
|
+
# Public: Initializes the service.
|
8
|
+
# page - The page number to paginate the results.
|
9
|
+
# per_page - The number of proposals to return per page.
|
10
|
+
def initialize(options = {})
|
11
|
+
super(options)
|
12
|
+
end
|
13
|
+
|
14
|
+
def base_query
|
15
|
+
Decidim::Consultation.where(organization: options[:organization]).published
|
16
|
+
end
|
17
|
+
|
18
|
+
# Handle the search_text filter
|
19
|
+
def search_search_text
|
20
|
+
query
|
21
|
+
.where("title->>'#{current_locale}' ILIKE ?", "%#{search_text}%")
|
22
|
+
.or(
|
23
|
+
query.where("description->>'#{current_locale}' ILIKE ?", "%#{search_text}%")
|
24
|
+
)
|
25
|
+
.or(
|
26
|
+
query.where("subtitle->>'#{current_locale}' ILIKE ?", "%#{search_text}%")
|
27
|
+
)
|
28
|
+
end
|
29
|
+
|
30
|
+
# Handle the state filter
|
31
|
+
def search_state
|
32
|
+
case state
|
33
|
+
when "active"
|
34
|
+
query.active
|
35
|
+
when "upcoming"
|
36
|
+
query.upcoming
|
37
|
+
when "finished"
|
38
|
+
query.finished
|
39
|
+
else # Assume all
|
40
|
+
query
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
def current_locale
|
47
|
+
I18n.locale.to_s
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
<%= link_to consultation_path(consultation), class: "consultations-banner" do %>
|
2
|
+
<div class="consultations-header consultations-home-banner row column">
|
3
|
+
<div class="row column consultations-header__main"
|
4
|
+
style="background-image:url(<%= consultation.banner_image.url %>);">
|
5
|
+
<div class="consultations-header__container row">
|
6
|
+
<div class="columns mediumlarge-9 consultations-header__info">
|
7
|
+
<div>
|
8
|
+
<h1 class="heading2 text-highlight"><%= translated_attribute consultation.title %></h1>
|
9
|
+
<p class="text-highlight"><%= translated_attribute consultation.subtitle %></p>
|
10
|
+
</div>
|
11
|
+
</div>
|
12
|
+
|
13
|
+
<div class="columns mediumlarge-3">
|
14
|
+
<div class="consultations-header__extra">
|
15
|
+
<div>
|
16
|
+
<% if consultation.active? %>
|
17
|
+
<span class="consultations-header__extra-title"><%= t ".start_voting_date" %></span>
|
18
|
+
<span class="consultations-header__extra-date">
|
19
|
+
<%= l consultation.start_voting_date %>
|
20
|
+
</span>
|
21
|
+
<% end %>
|
22
|
+
|
23
|
+
<% if consultation.finished? %>
|
24
|
+
<span class="button consultations-banner__action"><%= t ".view_results" %></span>
|
25
|
+
<% end %>
|
26
|
+
</div>
|
27
|
+
</div>
|
28
|
+
</div>
|
29
|
+
</div>
|
30
|
+
</div>
|
31
|
+
</div>
|
32
|
+
<% end %>
|
@@ -0,0 +1,58 @@
|
|
1
|
+
<%= javascript_include_tag "decidim/slug_form" %>
|
2
|
+
|
3
|
+
<div class="card">
|
4
|
+
<div class="card-divider">
|
5
|
+
<h2 class="card-title"><%= t "consultations.form.title", scope: "decidim.admin" %></h2>
|
6
|
+
</div>
|
7
|
+
|
8
|
+
<div class="card-section">
|
9
|
+
<div class="row column">
|
10
|
+
<%= form.translated :text_field, :title, autofocus: true %>
|
11
|
+
</div>
|
12
|
+
|
13
|
+
<div class="row column">
|
14
|
+
<%= form.translated :text_field, :subtitle %>
|
15
|
+
</div>
|
16
|
+
|
17
|
+
<div class="row column">
|
18
|
+
<%= form.translated :editor, :description, toolbar: :full, lines: 25 %>
|
19
|
+
</div>
|
20
|
+
|
21
|
+
<div class="row">
|
22
|
+
<div class="columns xlarge-6">
|
23
|
+
<%= form.date_field :start_voting_date %>
|
24
|
+
</div>
|
25
|
+
|
26
|
+
<div class="columns xlarge-6">
|
27
|
+
<%= form.date_field :end_voting_date %>
|
28
|
+
</div>
|
29
|
+
</div>
|
30
|
+
|
31
|
+
<div class="row column">
|
32
|
+
<%= scopes_picker_field form, :decidim_highlighted_scope_id, root: nil %>
|
33
|
+
</div>
|
34
|
+
|
35
|
+
<div class="fow column">
|
36
|
+
<%= form.text_field :slug %>
|
37
|
+
<p class="help-text">
|
38
|
+
<%== t "consultations.form.slug_help",
|
39
|
+
scope: "decidim.admin",
|
40
|
+
url: decidim_form_slug_url(:consultations, form.object.slug || consultation_example_slug) %>
|
41
|
+
</p>
|
42
|
+
</div>
|
43
|
+
|
44
|
+
<div class="row">
|
45
|
+
<div class="columns xlarge-4">
|
46
|
+
<%= form.upload :banner_image %>
|
47
|
+
</div>
|
48
|
+
|
49
|
+
<div class="columns xlarge-4">
|
50
|
+
<%= form.url_field :introductory_video_url %>
|
51
|
+
</div>
|
52
|
+
|
53
|
+
<div class="columns xlarge-4">
|
54
|
+
<%= form.upload :introductory_image %>
|
55
|
+
</div>
|
56
|
+
</div>
|
57
|
+
</div>
|
58
|
+
</div>
|
@@ -0,0 +1,42 @@
|
|
1
|
+
<%= decidim_form_for(@form, html: { class: "form edit_consultation" }) do |f| %>
|
2
|
+
<%= render partial: "form", object: f %>
|
3
|
+
<div class="button--double form-general-submit">
|
4
|
+
<%= f.submit t("consultations.edit.update", scope: "decidim.admin"), class: "button" %>
|
5
|
+
|
6
|
+
<% if can? :publish, current_consultation %>
|
7
|
+
<% if current_consultation.published? %>
|
8
|
+
<%= link_to t("actions.unpublish", scope: "decidim.admin"),
|
9
|
+
consultation_publish_path(current_consultation),
|
10
|
+
method: :delete,
|
11
|
+
class: "button muted" %>
|
12
|
+
<% else %>
|
13
|
+
<%= link_to t("actions.publish", scope: "decidim.admin"),
|
14
|
+
consultation_publish_path(current_consultation),
|
15
|
+
method: :post,
|
16
|
+
class: "button hollow" %>
|
17
|
+
<% end %>
|
18
|
+
<% end %>
|
19
|
+
|
20
|
+
<% if can? :publish_results, current_consultation %>
|
21
|
+
<%= link_to t("actions.publish_results", scope: "decidim.admin"),
|
22
|
+
consultation_publish_results_path(current_consultation),
|
23
|
+
method: :post,
|
24
|
+
class: "button hollow" %>
|
25
|
+
<% end %>
|
26
|
+
|
27
|
+
<% if can? :unpublish_results, current_consultation %>
|
28
|
+
<%= link_to t("actions.unpublish_results", scope: "decidim.admin"),
|
29
|
+
consultation_publish_results_path(current_consultation),
|
30
|
+
method: :delete,
|
31
|
+
class: "button muted" %>
|
32
|
+
<% end %>
|
33
|
+
|
34
|
+
<% if can? :destroy, current_consultation %>
|
35
|
+
<%= link_to t("decidim.admin.actions.destroy"),
|
36
|
+
current_consultation,
|
37
|
+
method: :delete,
|
38
|
+
class: "alert button",
|
39
|
+
data: { confirm: t("decidim.admin.actions.confirm_destroy") } %>
|
40
|
+
<% end %>
|
41
|
+
</div>
|
42
|
+
<% end %>
|
@@ -0,0 +1,74 @@
|
|
1
|
+
<div class="card" id="consultations">
|
2
|
+
<div class="card-divider">
|
3
|
+
<h2 class="card-title">
|
4
|
+
<%= t "decidim.admin.titles.consultations" %>
|
5
|
+
<%= link_to t("actions.new", scope: "decidim.admin", name: t("models.consultation.name", scope: "decidim.admin")),
|
6
|
+
["new", "consultation"], class: "button tiny button--title" if can? :create, Decidim::Consultation %>
|
7
|
+
</h2>
|
8
|
+
</div>
|
9
|
+
<div class="card-section">
|
10
|
+
<div class="table-scroll">
|
11
|
+
<table class="table-list">
|
12
|
+
<thead>
|
13
|
+
<tr>
|
14
|
+
<th><%= t("models.consultation.fields.title", scope: "decidim.admin") %></th>
|
15
|
+
<th><%= t("models.consultation.fields.created_at", scope: "decidim.admin") %></th>
|
16
|
+
<th class="table-list__actions">
|
17
|
+
<%= t("models.consultation.fields.published", scope: "decidim.admin") %>
|
18
|
+
</th>
|
19
|
+
<th></th>
|
20
|
+
</tr>
|
21
|
+
</thead>
|
22
|
+
<tbody>
|
23
|
+
<% @consultations.each do |consultation| %>
|
24
|
+
<tr>
|
25
|
+
<td>
|
26
|
+
<% if can? :update, consultation %>
|
27
|
+
<%= link_to translated_attribute(consultation.title), edit_consultation_path(consultation) %>
|
28
|
+
<br />
|
29
|
+
<% elsif can? :preview, consultation %>
|
30
|
+
<%= link_to translated_attribute(consultation.title),
|
31
|
+
decidim_consultations.consultation_path(consultation),
|
32
|
+
target: "_blank" %>
|
33
|
+
<br />
|
34
|
+
<% else %>
|
35
|
+
<%= translated_attribute(consultation.title) %>
|
36
|
+
<% end %>
|
37
|
+
</td>
|
38
|
+
<td>
|
39
|
+
<%= l consultation.created_at, format: :short %>
|
40
|
+
</td>
|
41
|
+
<td class="table-list__state">
|
42
|
+
<% if consultation.published? %>
|
43
|
+
<strong class="text-success">
|
44
|
+
<%= t("consultations.index.published", scope: "decidim.admin") %>
|
45
|
+
</strong>
|
46
|
+
<% else %>
|
47
|
+
<strong class="text-alert">
|
48
|
+
<%= t("consultations.index.not_published", scope: "decidim.admin") %>
|
49
|
+
</strong>
|
50
|
+
<% end %>
|
51
|
+
</td>
|
52
|
+
<td class="table-list__actions">
|
53
|
+
<% if can? :update, consultation %>
|
54
|
+
<%= icon_link_to "pencil",
|
55
|
+
edit_consultation_path(consultation),
|
56
|
+
t("actions.configure", scope: "decidim.admin"),
|
57
|
+
class: "action-icon--edit" %>
|
58
|
+
<% end %>
|
59
|
+
|
60
|
+
<% if can? :preview, consultation %>
|
61
|
+
<%= icon_link_to "eye",
|
62
|
+
decidim_consultations.consultation_path(consultation),
|
63
|
+
t("actions.preview", scope: "decidim.admin"),
|
64
|
+
class: "action-icon--preview",
|
65
|
+
target: "_blank" %>
|
66
|
+
<% end %>
|
67
|
+
</td>
|
68
|
+
</tr>
|
69
|
+
<% end %>
|
70
|
+
</tbody>
|
71
|
+
</table>
|
72
|
+
</div>
|
73
|
+
</div>
|
74
|
+
</div>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<h2 class="consultation-title-summary">
|
2
|
+
<%= t "consultations.new.title", scope: "decidim.admin" %>
|
3
|
+
</h2>
|
4
|
+
|
5
|
+
<%= decidim_form_for(@form, html: { class: "form new_consultation" }) do |f| %>
|
6
|
+
<%= render partial: "form", object: f %>
|
7
|
+
|
8
|
+
<div class="button--double form-general-submit">
|
9
|
+
<%= f.submit t("consultations.new.create", scope: "decidim.admin") %>
|
10
|
+
</div>
|
11
|
+
<% end %>
|
@@ -0,0 +1,84 @@
|
|
1
|
+
<%= javascript_include_tag "decidim/slug_form" %>
|
2
|
+
|
3
|
+
<div class="card">
|
4
|
+
<div class="card-divider">
|
5
|
+
<h2 class="card-title"><%= t "questions.form.title", scope: "decidim.admin" %></h2>
|
6
|
+
</div>
|
7
|
+
|
8
|
+
<div class="card-section">
|
9
|
+
<div class="row column">
|
10
|
+
<%= form.translated :editor, :title, toolbar: :full, lines: 5, autofocus: true %>
|
11
|
+
</div>
|
12
|
+
|
13
|
+
<div class="row column">
|
14
|
+
<%= form.translated :text_field, :subtitle %>
|
15
|
+
</div>
|
16
|
+
|
17
|
+
<div class="row column">
|
18
|
+
<%= form.translated :text_field, :promoter_group %>
|
19
|
+
</div>
|
20
|
+
|
21
|
+
<div class="row column">
|
22
|
+
<%= form.translated :text_field, :participatory_scope %>
|
23
|
+
</div>
|
24
|
+
|
25
|
+
<div class="row column">
|
26
|
+
<%= form.translated :editor, :question_context, toolbar: :full, lines: 25 %>
|
27
|
+
</div>
|
28
|
+
|
29
|
+
<div class="row column">
|
30
|
+
<%= form.translated :editor, :what_is_decided, toolbar: :full, lines: 25 %>
|
31
|
+
</div>
|
32
|
+
|
33
|
+
<div class="row column">
|
34
|
+
<%= scopes_picker_field form, :decidim_scope_id, root: nil %>
|
35
|
+
</div>
|
36
|
+
|
37
|
+
<div class="row column">
|
38
|
+
<%= form.translated :text_field, :origin_scope %>
|
39
|
+
</div>
|
40
|
+
|
41
|
+
<div class="row column">
|
42
|
+
<%= form.translated :text_field, :origin_title %>
|
43
|
+
</div>
|
44
|
+
|
45
|
+
<div class="row column">
|
46
|
+
<%= form.url_field :origin_url %>
|
47
|
+
</div>
|
48
|
+
|
49
|
+
<div class="row column">
|
50
|
+
<%= form.number_field :order, step: 1, min: 0 %>
|
51
|
+
</div>
|
52
|
+
|
53
|
+
<div class="row column">
|
54
|
+
<%= form.text_field :slug %>
|
55
|
+
<p class="help-text">
|
56
|
+
<%== t "consultations.form.slug_help",
|
57
|
+
scope: "decidim.admin",
|
58
|
+
url: decidim_form_slug_url(:questions, form.object.slug || question_example_slug) %>
|
59
|
+
</p>
|
60
|
+
</div>
|
61
|
+
|
62
|
+
<div class="row column">
|
63
|
+
<%= form.check_box :external_voting %>
|
64
|
+
</div>
|
65
|
+
|
66
|
+
<div class="row column">
|
67
|
+
<%= form.url_field :i_frame_url %>
|
68
|
+
</div>
|
69
|
+
|
70
|
+
<div class="row">
|
71
|
+
<div class="columns xlarge-4">
|
72
|
+
<%= form.text_field :hashtag %>
|
73
|
+
</div>
|
74
|
+
|
75
|
+
<div class="columns xlarge-4">
|
76
|
+
<%= form.upload :hero_image %>
|
77
|
+
</div>
|
78
|
+
|
79
|
+
<div class="columns xlarge-4">
|
80
|
+
<%= form.upload :banner_image %>
|
81
|
+
</div>
|
82
|
+
</div>
|
83
|
+
</div>
|
84
|
+
</div>
|
@@ -0,0 +1,32 @@
|
|
1
|
+
<%= decidim_form_for @form,
|
2
|
+
url: question_path(current_question),
|
3
|
+
html: { class: "form edit_question" } do |f| %>
|
4
|
+
<%= render partial: "form", object: f %>
|
5
|
+
<div class="button--double form-general-submit">
|
6
|
+
<%= f.submit t("questions.edit.update", scope: "decidim.admin"),
|
7
|
+
class: "button",
|
8
|
+
data: { disable_with: true } %>
|
9
|
+
|
10
|
+
<% if can? :publish, current_question %>
|
11
|
+
<% if current_question.published? %>
|
12
|
+
<%= link_to t("actions.unpublish", scope: "decidim.admin"),
|
13
|
+
question_publish_path(current_question),
|
14
|
+
method: :delete,
|
15
|
+
class: "button muted" %>
|
16
|
+
<% else %>
|
17
|
+
<%= link_to t("actions.publish", scope: "decidim.admin"),
|
18
|
+
question_publish_path(current_question),
|
19
|
+
method: :post,
|
20
|
+
class: "button hollow" %>
|
21
|
+
<% end %>
|
22
|
+
<% end %>
|
23
|
+
|
24
|
+
<% if can? :destroy, current_question %>
|
25
|
+
<%= link_to t("decidim.admin.actions.destroy"),
|
26
|
+
question_path(current_question),
|
27
|
+
method: :delete,
|
28
|
+
class: "alert button",
|
29
|
+
data: { confirm: t("decidim.admin.actions.confirm_destroy") } %>
|
30
|
+
<% end %>
|
31
|
+
</div>
|
32
|
+
<% end %>
|
@@ -0,0 +1,74 @@
|
|
1
|
+
<div class="card" id="questions">
|
2
|
+
<div class="card-divider">
|
3
|
+
<h2 class="card-title">
|
4
|
+
<%= t "decidim.admin.titles.questions" %>
|
5
|
+
<%= link_to t("actions.new", scope: "decidim.admin", name: t("models.question.name", scope: "decidim.admin")),
|
6
|
+
new_consultation_question_path(current_consultation),
|
7
|
+
class: "button tiny button--title" if can? :create, Decidim::Consultations::Question %>
|
8
|
+
</h2>
|
9
|
+
</div>
|
10
|
+
<div class="card-section">
|
11
|
+
<div class="table-scroll">
|
12
|
+
<table class="table-list">
|
13
|
+
<thead>
|
14
|
+
<tr>
|
15
|
+
<th><%= t("models.question.fields.title", scope: "decidim.admin") %></th>
|
16
|
+
<th><%= t("models.question.fields.created_at", scope: "decidim.admin") %></th>
|
17
|
+
<th><%= t("models.question.fields.published", scope: "decidim.admin") %></th>
|
18
|
+
<th class="table-list__actions"></th>
|
19
|
+
</tr>
|
20
|
+
</thead>
|
21
|
+
<tbody>
|
22
|
+
<% @questions.each do |question| %>
|
23
|
+
<tr>
|
24
|
+
<td>
|
25
|
+
<% if can? :update, question %>
|
26
|
+
<%= link_to decidim_sanitize(translated_attribute(question.title)),
|
27
|
+
edit_question_path(question) %>
|
28
|
+
<br />
|
29
|
+
<% elsif can? :preview, question %>
|
30
|
+
<%= link_to translated_attribute(question.title),
|
31
|
+
decidim_consultations.question_path(question),
|
32
|
+
target: "_blank" %>
|
33
|
+
<br />
|
34
|
+
<% else %>
|
35
|
+
<%= translated_attribute(question.title) %>
|
36
|
+
<% end %>
|
37
|
+
</td>
|
38
|
+
<td>
|
39
|
+
<%= l question.created_at, format: :short %>
|
40
|
+
</td>
|
41
|
+
<td class="table-list__state">
|
42
|
+
<% if question.published? %>
|
43
|
+
<strong class="text-success">
|
44
|
+
<%= t("questions.index.published", scope: "decidim.admin") %>
|
45
|
+
</strong>
|
46
|
+
<% else %>
|
47
|
+
<strong class="text-alert">
|
48
|
+
<%= t("questions.index.not_published", scope: "decidim.admin") %>
|
49
|
+
</strong>
|
50
|
+
<% end %>
|
51
|
+
</td>
|
52
|
+
<td class="table-list__actions">
|
53
|
+
<% if can? :update, question %>
|
54
|
+
<%= icon_link_to "pencil",
|
55
|
+
edit_question_path(question),
|
56
|
+
t("actions.configure", scope: "decidim.admin"),
|
57
|
+
class: "action-icon--edit" %>
|
58
|
+
<% end %>
|
59
|
+
|
60
|
+
<% if can? :preview, question %>
|
61
|
+
<%= icon_link_to "eye",
|
62
|
+
decidim_consultations.question_path(question),
|
63
|
+
t("actions.preview", scope: "decidim.admin"),
|
64
|
+
class: "action-icon--preview",
|
65
|
+
target: "_blank" %>
|
66
|
+
<% end %>
|
67
|
+
</td>
|
68
|
+
</tr>
|
69
|
+
<% end %>
|
70
|
+
</tbody>
|
71
|
+
</table>
|
72
|
+
</div>
|
73
|
+
</div>
|
74
|
+
</div>
|