decidim-consultations 0.11.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (190) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +51 -0
  3. data/Rakefile +3 -0
  4. data/app/assets/config/decidim_consultations_manifest.js +5 -0
  5. data/app/assets/config/decidim_consultations_manifest.scss +3 -0
  6. data/app/assets/images/decidim/consultations/icon.svg +70 -0
  7. data/app/assets/images/decidim/consultations/icon2.svg +88 -0
  8. data/app/assets/javascripts/decidim/consultations/show_more.js.es6 +12 -0
  9. data/app/assets/javascripts/decidim/consultations/social_share.js +2 -0
  10. data/app/assets/javascripts/decidim/consultations/utils.js.es6 +19 -0
  11. data/app/assets/javascripts/decidim/consultations/vote_dialog.js +36 -0
  12. data/app/assets/stylesheets/decidim/consultations/_question.scss +46 -0
  13. data/app/assets/stylesheets/decidim/consultations/_stats.scss +22 -0
  14. data/app/assets/stylesheets/decidim/consultations/_video_wrapper.scss +14 -0
  15. data/app/assets/stylesheets/decidim/consultations/banners/_block-banner.scss +39 -0
  16. data/app/assets/stylesheets/decidim/consultations/consultations.scss +6 -0
  17. data/app/assets/stylesheets/decidim/consultations/consultations/_consultations-banner.scss +13 -0
  18. data/app/assets/stylesheets/decidim/consultations/consultations/_consultations-card.scss +17 -0
  19. data/app/assets/stylesheets/decidim/consultations/consultations/_consultations-header.scss +115 -0
  20. data/app/assets/stylesheets/decidim/consultations/consultations/_consultations-home-banner.scss +15 -0
  21. data/app/assets/stylesheets/decidim/consultations/consultations/_consultations-home-intro.scss +30 -0
  22. data/app/assets/stylesheets/decidim/consultations/consultations/_consultations-intro.scss +11 -0
  23. data/app/assets/stylesheets/decidim/consultations/consultations/_consultations-title.scss +26 -0
  24. data/app/assets/stylesheets/decidim/consultations/consultations/_consultations_nav.scss +7 -0
  25. data/app/assets/stylesheets/decidim/consultations/consultations/introductory_image.scss +3 -0
  26. data/app/assets/stylesheets/decidim/consultations/highlighted-content-banner.css.scss +42 -0
  27. data/app/assets/stylesheets/decidim/consultations/social_share.css.scss +18 -0
  28. data/app/commands/decidim/consultations/admin/create_consultation.rb +61 -0
  29. data/app/commands/decidim/consultations/admin/create_question.rb +68 -0
  30. data/app/commands/decidim/consultations/admin/create_response.rb +39 -0
  31. data/app/commands/decidim/consultations/admin/publish_consultation.rb +34 -0
  32. data/app/commands/decidim/consultations/admin/publish_consultation_results.rb +34 -0
  33. data/app/commands/decidim/consultations/admin/publish_question.rb +34 -0
  34. data/app/commands/decidim/consultations/admin/unpublish_consultation.rb +34 -0
  35. data/app/commands/decidim/consultations/admin/unpublish_consultation_results.rb +34 -0
  36. data/app/commands/decidim/consultations/admin/unpublish_question.rb +34 -0
  37. data/app/commands/decidim/consultations/admin/update_consultation.rb +64 -0
  38. data/app/commands/decidim/consultations/admin/update_question.rb +72 -0
  39. data/app/commands/decidim/consultations/admin/update_response.rb +46 -0
  40. data/app/commands/decidim/consultations/unvote_question.rb +37 -0
  41. data/app/commands/decidim/consultations/vote_question.rb +42 -0
  42. data/app/constraints/decidim/consultations/current_component.rb +28 -0
  43. data/app/constraints/decidim/consultations/current_question.rb +36 -0
  44. data/app/controllers/concerns/decidim/consultations/action_authorization.rb +38 -0
  45. data/app/controllers/concerns/decidim/consultations/admin/consultation_admin.rb +24 -0
  46. data/app/controllers/concerns/decidim/consultations/admin/question_admin.rb +28 -0
  47. data/app/controllers/concerns/decidim/consultations/needs_consultation.rb +54 -0
  48. data/app/controllers/concerns/decidim/consultations/needs_question.rb +79 -0
  49. data/app/controllers/concerns/decidim/consultations/orderable.rb +52 -0
  50. data/app/controllers/decidim/consultations/admin/application_controller.rb +14 -0
  51. data/app/controllers/decidim/consultations/admin/categories_controller.rb +13 -0
  52. data/app/controllers/decidim/consultations/admin/component_permissions_controller.rb +13 -0
  53. data/app/controllers/decidim/consultations/admin/components_controller.rb +13 -0
  54. data/app/controllers/decidim/consultations/admin/consultation_publications_controller.rb +44 -0
  55. data/app/controllers/decidim/consultations/admin/consultation_results_publications_controller.rb +44 -0
  56. data/app/controllers/decidim/consultations/admin/consultations_controller.rb +100 -0
  57. data/app/controllers/decidim/consultations/admin/question_attachments_controller.rb +25 -0
  58. data/app/controllers/decidim/consultations/admin/question_publications_controller.rb +44 -0
  59. data/app/controllers/decidim/consultations/admin/questions_controller.rb +88 -0
  60. data/app/controllers/decidim/consultations/admin/responses_controller.rb +85 -0
  61. data/app/controllers/decidim/consultations/consultation_widgets_controller.rb +25 -0
  62. data/app/controllers/decidim/consultations/consultations_controller.rb +75 -0
  63. data/app/controllers/decidim/consultations/question_votes_controller.rb +40 -0
  64. data/app/controllers/decidim/consultations/question_widgets_controller.rb +26 -0
  65. data/app/controllers/decidim/consultations/questions_controller.rb +23 -0
  66. data/app/forms/decidim/consultations/admin/consultation_form.rb +56 -0
  67. data/app/forms/decidim/consultations/admin/question_form.rb +74 -0
  68. data/app/forms/decidim/consultations/admin/response_form.rb +18 -0
  69. data/app/forms/decidim/consultations/vote_form.rb +28 -0
  70. data/app/helpers/decidim/consultations/admin/consultations_helper.rb +14 -0
  71. data/app/helpers/decidim/consultations/admin/questions_helper.rb +14 -0
  72. data/app/helpers/decidim/consultations/consultations_helper.rb +17 -0
  73. data/app/models/concerns/decidim/consultations/override_categorization.rb +21 -0
  74. data/app/models/concerns/decidim/consultations/publicable_results.rb +51 -0
  75. data/app/models/decidim/consultation.rb +79 -0
  76. data/app/models/decidim/consultations/abilities/admin/consultation_admin_ability.rb +34 -0
  77. data/app/models/decidim/consultations/abilities/admin/question_admin_ability.rb +30 -0
  78. data/app/models/decidim/consultations/abilities/admin/response_admin_ability.rb +26 -0
  79. data/app/models/decidim/consultations/abilities/current_user_ability.rb +45 -0
  80. data/app/models/decidim/consultations/abilities/everyone_ability.rb +23 -0
  81. data/app/models/decidim/consultations/application_record.rb +9 -0
  82. data/app/models/decidim/consultations/question.rb +127 -0
  83. data/app/models/decidim/consultations/response.rb +19 -0
  84. data/app/models/decidim/consultations/vote.rb +26 -0
  85. data/app/presenters/decidim/consultations/question_stats_presenter.rb +52 -0
  86. data/app/queries/decidim/consultations/admin/admin_users.rb +40 -0
  87. data/app/queries/decidim/consultations/organization_active_consultations.rb +20 -0
  88. data/app/queries/decidim/consultations/organization_consultations.rb +20 -0
  89. data/app/queries/decidim/consultations/organization_questions.rb +20 -0
  90. data/app/services/decidim/consultations/consultation_search.rb +51 -0
  91. data/app/views/decidim/consultations/_consultation.html.erb +32 -0
  92. data/app/views/decidim/consultations/admin/consultations/_form.html.erb +58 -0
  93. data/app/views/decidim/consultations/admin/consultations/edit.html.erb +42 -0
  94. data/app/views/decidim/consultations/admin/consultations/index.html.erb +74 -0
  95. data/app/views/decidim/consultations/admin/consultations/new.html.erb +11 -0
  96. data/app/views/decidim/consultations/admin/questions/_form.html.erb +84 -0
  97. data/app/views/decidim/consultations/admin/questions/edit.html.erb +32 -0
  98. data/app/views/decidim/consultations/admin/questions/index.html.erb +74 -0
  99. data/app/views/decidim/consultations/admin/questions/new.html.erb +13 -0
  100. data/app/views/decidim/consultations/admin/responses/_form.html.erb +11 -0
  101. data/app/views/decidim/consultations/admin/responses/edit.html.erb +18 -0
  102. data/app/views/decidim/consultations/admin/responses/index.html.erb +48 -0
  103. data/app/views/decidim/consultations/admin/responses/new.html.erb +13 -0
  104. data/app/views/decidim/consultations/consultation_widgets/show.html.erb +5 -0
  105. data/app/views/decidim/consultations/consultations/_consultation_card.html.erb +24 -0
  106. data/app/views/decidim/consultations/consultations/_consultation_details.html.erb +17 -0
  107. data/app/views/decidim/consultations/consultations/_consultations.html.erb +16 -0
  108. data/app/views/decidim/consultations/consultations/_count.html.erb +1 -0
  109. data/app/views/decidim/consultations/consultations/_filters.html.erb +25 -0
  110. data/app/views/decidim/consultations/consultations/_filters_small_view.html.erb +23 -0
  111. data/app/views/decidim/consultations/consultations/_highlighted_questions.html.erb +13 -0
  112. data/app/views/decidim/consultations/consultations/_question.html.erb +40 -0
  113. data/app/views/decidim/consultations/consultations/_regular_questions.html.erb +14 -0
  114. data/app/views/decidim/consultations/consultations/finished.html.erb +15 -0
  115. data/app/views/decidim/consultations/consultations/index.html.erb +27 -0
  116. data/app/views/decidim/consultations/consultations/index.js.erb +10 -0
  117. data/app/views/decidim/consultations/consultations/show.html.erb +11 -0
  118. data/app/views/decidim/consultations/question_votes/update_vote_button.js.erb +9 -0
  119. data/app/views/decidim/consultations/question_widgets/show.html.erb +2 -0
  120. data/app/views/decidim/consultations/questions/_results.html.erb +15 -0
  121. data/app/views/decidim/consultations/questions/_right_column.html.erb +20 -0
  122. data/app/views/decidim/consultations/questions/_statistics.html.erb +31 -0
  123. data/app/views/decidim/consultations/questions/_technical_data.html.erb +38 -0
  124. data/app/views/decidim/consultations/questions/_vote_button.html.erb +76 -0
  125. data/app/views/decidim/consultations/questions/_vote_modal.html.erb +27 -0
  126. data/app/views/decidim/consultations/questions/_vote_modal_confirm.html.erb +33 -0
  127. data/app/views/decidim/consultations/questions/show.html.erb +58 -0
  128. data/app/views/layouts/decidim/_consultation_header.html.erb +16 -0
  129. data/app/views/layouts/decidim/_consultation_voting_data.html.erb +10 -0
  130. data/app/views/layouts/decidim/_question_components.html.erb +38 -0
  131. data/app/views/layouts/decidim/_question_header.html.erb +46 -0
  132. data/app/views/layouts/decidim/admin/consultation.html.erb +28 -0
  133. data/app/views/layouts/decidim/admin/consultations.html.erb +16 -0
  134. data/app/views/layouts/decidim/admin/question.html.erb +72 -0
  135. data/app/views/layouts/decidim/consultation.html.erb +17 -0
  136. data/app/views/layouts/decidim/consultation_choose.html.erb +7 -0
  137. data/app/views/layouts/decidim/question.html.erb +19 -0
  138. data/config/locales/ca.yml +248 -0
  139. data/config/locales/en.yml +249 -0
  140. data/config/locales/es.yml +248 -0
  141. data/config/locales/eu.yml +248 -0
  142. data/config/locales/fi.yml +248 -0
  143. data/config/locales/fr.yml +248 -0
  144. data/config/locales/gl.yml +248 -0
  145. data/config/locales/it.yml +248 -0
  146. data/config/locales/nl.yml +248 -0
  147. data/config/locales/pl.yml +258 -0
  148. data/config/locales/pt-BR.yml +248 -0
  149. data/config/locales/pt.yml +248 -0
  150. data/config/locales/ru.yml +6 -0
  151. data/config/locales/sv.yml +248 -0
  152. data/config/locales/uk.yml +6 -0
  153. data/db/migrate/20180109092205_create_decidim_consultations.rb +37 -0
  154. data/db/migrate/20180112053247_create_decidim_consultations_questions.rb +35 -0
  155. data/db/migrate/20180115132000_add_end_voting_date_to_decidim_consultations.rb +18 -0
  156. data/db/migrate/20180115170933_add_slug_to_decidim_consultations_questions.rb +32 -0
  157. data/db/migrate/20180119084217_create_decidim_consultations_votes.rb +17 -0
  158. data/db/migrate/20180119084331_add_votes_count_to_decidim_consultations_question.rb +7 -0
  159. data/db/migrate/20180122113155_add_origin_scope_to_decidim_consultations_questions.rb +8 -0
  160. data/db/migrate/20180122113400_add_origin_title_to_decidim_consultations_questions.rb +8 -0
  161. data/db/migrate/20180122113447_add_origin_string_to_decidim_consultations_questions.rb +7 -0
  162. data/db/migrate/20180126142459_add_enable_highlighted_banner_to_decidim_consultations.rb +7 -0
  163. data/db/migrate/20180129063438_add_i_frame_url_to_decidim_consultations_questions.rb +8 -0
  164. data/db/migrate/20180129063700_create_decidim_consultations_responses.rb +14 -0
  165. data/db/migrate/20180129122226_rename_decidim_consultations_vote_to_decidim_consultations_endorsement.rb +7 -0
  166. data/db/migrate/20180129122504_rename_decidim_consultations_questions_votes_count_to_endorsements_count.rb +7 -0
  167. data/db/migrate/20180130060754_add_responses_count_to_decidim_consultations_questions.rb +22 -0
  168. data/db/migrate/20180130110449_rename_vote_related_attributes.rb +9 -0
  169. data/db/migrate/20180130142018_add_decidim_user_group_id_to_decidim_consultations_endorsements.rb +7 -0
  170. data/db/migrate/20180130142411_rename_vote_indexes_to_endorsement_indexes.rb +36 -0
  171. data/db/migrate/20180131083844_add_response_to_decidim_consultations_endorsements.rb +10 -0
  172. data/db/migrate/20180201135823_rename_endorsement_to_vote.rb +23 -0
  173. data/db/migrate/20180202050920_add_hero_image_to_decidim_consultations_question.rb +8 -0
  174. data/db/migrate/20180202085309_add_results_published_at_to_decidim_consultations.rb +7 -0
  175. data/db/migrate/20180202133655_add_votes_count_to_decidim_consultations_response.rb +7 -0
  176. data/db/migrate/20180212100503_remove_enable_highlighted_banner_flag.rb +7 -0
  177. data/db/migrate/20180219092120_add_order_to_decidim_consultations_questions.rb +7 -0
  178. data/db/migrate/20180320100658_add_introductory_image_to_decidim_consultations.rb +7 -0
  179. data/db/seeds/Exampledocument.pdf +0 -0
  180. data/db/seeds/city.jpeg +0 -0
  181. data/db/seeds/city2.jpeg +0 -0
  182. data/db/seeds/homepage_image.jpg +0 -0
  183. data/lib/decidim/consultations.rb +18 -0
  184. data/lib/decidim/consultations/admin.rb +10 -0
  185. data/lib/decidim/consultations/admin_engine.rb +72 -0
  186. data/lib/decidim/consultations/engine.rb +83 -0
  187. data/lib/decidim/consultations/participatory_space.rb +171 -0
  188. data/lib/decidim/consultations/test/factories.rb +104 -0
  189. data/lib/decidim/consultations/version.rb +9 -0
  190. 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>