decidim-initiatives 0.29.1 → 0.30.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (120) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/initiatives/content_blocks/highlighted_initiatives_settings_form/show.erb +1 -1
  3. data/app/commands/decidim/initiatives/create_initiative.rb +17 -5
  4. data/app/commands/decidim/initiatives/update_initiative.rb +23 -9
  5. data/app/controllers/concerns/decidim/initiatives/needs_initiative.rb +1 -1
  6. data/app/controllers/decidim/initiatives/admin/application_controller.rb +2 -0
  7. data/app/controllers/decidim/initiatives/admin/component_share_tokens_controller.rb +18 -0
  8. data/app/controllers/decidim/initiatives/admin/initiative_share_tokens_controller.rb +18 -0
  9. data/app/controllers/decidim/initiatives/admin/initiatives_controller.rb +8 -8
  10. data/app/controllers/decidim/initiatives/create_initiative_controller.rb +3 -2
  11. data/app/controllers/decidim/initiatives/initiative_types_controller.rb +1 -1
  12. data/app/controllers/decidim/initiatives/initiatives_controller.rb +4 -1
  13. data/app/forms/decidim/initiatives/admin/initiative_answer_form.rb +2 -2
  14. data/app/forms/decidim/initiatives/admin/initiative_form.rb +1 -1
  15. data/app/forms/decidim/initiatives/admin/initiative_type_form.rb +2 -2
  16. data/app/forms/decidim/initiatives/vote_form.rb +1 -1
  17. data/app/helpers/decidim/initiatives/initiative_helper.rb +1 -39
  18. data/app/helpers/decidim/initiatives/initiatives_helper.rb +8 -5
  19. data/app/helpers/decidim/initiatives/scopes_helper.rb +43 -0
  20. data/app/jobs/decidim/initiatives/export_initiatives_job.rb +5 -1
  21. data/app/models/decidim/initiative.rb +40 -27
  22. data/app/models/decidim/initiatives_type_scope.rb +9 -0
  23. data/app/packs/entrypoints/decidim_initiatives_admin.js +2 -0
  24. data/app/packs/entrypoints/decidim_initiatives_admin.scss +1 -0
  25. data/app/packs/stylesheets/decidim/initiatives/admin/initiatives.scss +13 -0
  26. data/app/permissions/decidim/initiatives/admin/permissions.rb +9 -2
  27. data/app/permissions/decidim/initiatives/permissions.rb +24 -3
  28. data/app/queries/decidim/initiatives/outdated_validating_initiatives.rb +1 -1
  29. data/app/queries/decidim/initiatives/support_period_finished_initiatives.rb +2 -2
  30. data/app/serializers/decidim/initiatives/download_your_data_initiative_serializer.rb +15 -0
  31. data/app/serializers/decidim/initiatives/initiative_serializer.rb +5 -24
  32. data/app/serializers/decidim/initiatives/open_data_initiative_serializer.rb +54 -0
  33. data/app/services/decidim/initiatives/data_encryptor.rb +1 -1
  34. data/app/services/decidim/initiatives/pdf_signature_example.rb +0 -2
  35. data/app/views/decidim/initiatives/admin/committee_requests/index.html.erb +1 -0
  36. data/app/views/decidim/initiatives/admin/initiatives/edit.html.erb +1 -2
  37. data/app/views/decidim/initiatives/admin/initiatives/index.html.erb +8 -1
  38. data/app/views/decidim/initiatives/committee_requests/new.html.erb +1 -2
  39. data/app/views/decidim/initiatives/create_initiative/fill_data.html.erb +3 -3
  40. data/app/views/decidim/initiatives/create_initiative/select_initiative_type.html.erb +10 -2
  41. data/app/views/decidim/initiatives/initiatives/_form.html.erb +3 -3
  42. data/app/views/decidim/initiatives/initiatives/_new_initiative_button.html.erb +16 -13
  43. data/app/views/decidim/initiatives/initiatives/_vote_button.html.erb +9 -3
  44. data/app/views/decidim/initiatives/initiatives/_vote_cabin.html.erb +0 -1
  45. data/app/views/decidim/initiatives/initiatives/show.html.erb +7 -8
  46. data/app/views/layouts/decidim/admin/_manage_initiatives.html.erb +11 -0
  47. data/app/views/layouts/decidim/admin/initiatives.html.erb +1 -9
  48. data/config/assets.rb +1 -3
  49. data/config/locales/ar.yml +10 -5
  50. data/config/locales/bg.yml +2 -22
  51. data/config/locales/bn-BD.yml +1 -0
  52. data/config/locales/bs-BA.yml +1 -0
  53. data/config/locales/ca.yml +56 -22
  54. data/config/locales/cs.yml +55 -21
  55. data/config/locales/de.yml +56 -22
  56. data/config/locales/el.yml +2 -6
  57. data/config/locales/en.yml +53 -19
  58. data/config/locales/es-MX.yml +55 -21
  59. data/config/locales/es-PY.yml +55 -21
  60. data/config/locales/es.yml +56 -22
  61. data/config/locales/eu.yml +97 -63
  62. data/config/locales/fi-plain.yml +57 -23
  63. data/config/locales/fi.yml +66 -32
  64. data/config/locales/fr-CA.yml +9 -22
  65. data/config/locales/fr.yml +9 -22
  66. data/config/locales/ga-IE.yml +0 -2
  67. data/config/locales/gl.yml +2 -7
  68. data/config/locales/hu.yml +2 -20
  69. data/config/locales/id-ID.yml +2 -5
  70. data/config/locales/is-IS.yml +0 -1
  71. data/config/locales/it.yml +2 -10
  72. data/config/locales/ja.yml +55 -21
  73. data/config/locales/lb.yml +2 -7
  74. data/config/locales/lt.yml +2 -22
  75. data/config/locales/lv.yml +2 -6
  76. data/config/locales/nl.yml +2 -8
  77. data/config/locales/no.yml +2 -12
  78. data/config/locales/pl.yml +2 -21
  79. data/config/locales/pt-BR.yml +2 -26
  80. data/config/locales/pt.yml +2 -10
  81. data/config/locales/ro-RO.yml +2 -18
  82. data/config/locales/ru.yml +0 -1
  83. data/config/locales/sk.yml +2 -5
  84. data/config/locales/sl.yml +0 -1
  85. data/config/locales/sv.yml +13 -22
  86. data/config/locales/tr-TR.yml +2 -10
  87. data/config/locales/uk.yml +0 -1
  88. data/config/locales/zh-CN.yml +2 -8
  89. data/config/locales/zh-TW.yml +2 -21
  90. data/db/migrate/20241127104718_add_taxonomy_to_initiatives_type_scope.rb +7 -0
  91. data/decidim-initiatives.gemspec +2 -8
  92. data/lib/decidim/api/initiative_api_type.rb +9 -10
  93. data/lib/decidim/api/initiative_committee_member_type.rb +3 -4
  94. data/lib/decidim/api/initiative_type.rb +15 -21
  95. data/lib/decidim/api/initiative_type_interface.rb +1 -5
  96. data/lib/decidim/exporters/initiative_votes_pdf.rb +163 -0
  97. data/lib/decidim/initiatives/admin_engine.rb +68 -49
  98. data/lib/decidim/initiatives/application_form_pdf.rb +181 -0
  99. data/lib/decidim/initiatives/engine.rb +6 -0
  100. data/lib/decidim/initiatives/menu.rb +8 -0
  101. data/lib/decidim/initiatives/participatory_space.rb +8 -1
  102. data/lib/decidim/initiatives/test/factories.rb +5 -8
  103. data/lib/decidim/initiatives/version.rb +1 -1
  104. data/lib/decidim/initiatives.rb +7 -1
  105. metadata +30 -74
  106. data/app/cells/decidim/initiatives_votes/vote/show.erb +0 -39
  107. data/app/cells/decidim/initiatives_votes/vote_cell.rb +0 -58
  108. data/app/packs/entrypoints/decidim_initiatives_initiatives_votes.js +0 -1
  109. data/app/packs/entrypoints/decidim_initiatives_initiatives_votes.scss +0 -1
  110. data/app/packs/entrypoints/decidim_initiatives_print.js +0 -1
  111. data/app/packs/entrypoints/decidim_initiatives_print.scss +0 -1
  112. data/app/packs/stylesheets/decidim/initiatives/initiatives-votes.scss +0 -96
  113. data/app/packs/stylesheets/decidim/initiatives/print-initiative.scss +0 -172
  114. data/app/views/decidim/initiatives/admin/initiatives/_signatures.html.erb +0 -87
  115. data/app/views/decidim/initiatives/admin/initiatives/export_pdf_signatures.html.erb +0 -8
  116. data/app/views/decidim/initiatives/admin/initiatives/export_pdf_signatures.pdf.erb +0 -5
  117. data/app/views/decidim/initiatives/initiatives/_linked_initiatives.html.erb +0 -0
  118. data/app/views/decidim/initiatives/initiatives/print.html.erb +0 -161
  119. data/app/views/layouts/decidim/admin/initiatives_votes.pdf.erb +0 -11
  120. data/config/initializers/wicked_pdf.rb +0 -23
@@ -39,6 +39,7 @@ module Decidim
39
39
  initiative_export_action?
40
40
  initiatives_settings_action?
41
41
  moderator_action?
42
+ share_tokens_action?
42
43
  allow! if permission_action.subject == :attachment
43
44
 
44
45
  permission_action
@@ -134,8 +135,8 @@ module Decidim
134
135
  return unless permission_action.subject == :initiative
135
136
 
136
137
  case permission_action.action
137
- when :read
138
- toggle_allow(Decidim::Initiatives.print_enabled)
138
+ when :print
139
+ toggle_allow(Decidim::Initiatives.print_enabled && user.admin?)
139
140
  when :publish, :discard
140
141
  toggle_allow(initiative.validating?)
141
142
  when :unpublish
@@ -179,6 +180,12 @@ module Decidim
179
180
  allow!
180
181
  end
181
182
 
183
+ def share_tokens_action?
184
+ return unless permission_action.subject == :share_tokens
185
+
186
+ allow!
187
+ end
188
+
182
189
  def read_initiative_list_action?
183
190
  return unless permission_action.subject == :initiative &&
184
191
  permission_action.action == :list
@@ -4,6 +4,8 @@ module Decidim
4
4
  module Initiatives
5
5
  class Permissions < Decidim::DefaultPermissions
6
6
  def permissions
7
+ return permission_action if initiative && !initiative.is_a?(Decidim::Initiative)
8
+
7
9
  # Delegate the admin permission checks to the admin permissions class
8
10
  return Decidim::Initiatives::Admin::Permissions.new(user, permission_action, context).permissions if permission_action.scope == :admin
9
11
  return permission_action if permission_action.scope != :public
@@ -19,6 +21,7 @@ module Decidim
19
21
  create_initiative?
20
22
  edit_public_initiative?
21
23
  update_public_initiative?
24
+ print_initiative?
22
25
 
23
26
  vote_initiative?
24
27
  sign_initiative?
@@ -51,7 +54,8 @@ module Decidim
51
54
  return unless [:initiative, :participatory_space].include?(permission_action.subject) &&
52
55
  permission_action.action == :read
53
56
 
54
- return allow! if initiative.published? || initiative.rejected? || initiative.accepted?
57
+ return allow! if initiative.open? || initiative.rejected? || initiative.accepted?
58
+ return allow! if user_can_preview_space?
55
59
  return allow! if user && authorship_or_admin?
56
60
 
57
61
  disallow!
@@ -107,11 +111,11 @@ module Decidim
107
111
  end
108
112
 
109
113
  def access_request_without_user?
110
- (!initiative.published? && initiative.promoting_committee_enabled?) || Decidim::Initiatives.do_not_require_authorization
114
+ (!initiative.open? && initiative.promoting_committee_enabled?) || Decidim::Initiatives.do_not_require_authorization
111
115
  end
112
116
 
113
117
  def access_request_membership?
114
- !initiative.published? &&
118
+ !initiative.open? &&
115
119
  initiative.promoting_committee_enabled? &&
116
120
  !initiative.has_authorship?(user) &&
117
121
  (
@@ -121,6 +125,17 @@ module Decidim
121
125
  )
122
126
  end
123
127
 
128
+ def print_initiative?
129
+ return unless permission_action.action == :print &&
130
+ permission_action.subject == :initiative
131
+
132
+ toggle_allow(Decidim::Initiatives.print_enabled && (authorship_or_admin? || committee_member?))
133
+ end
134
+
135
+ def committee_member?
136
+ InitiativesPromoted.by(user).exists?(id: initiative.id)
137
+ end
138
+
124
139
  def vote_initiative?
125
140
  return unless permission_action.action == :vote &&
126
141
  permission_action.subject == :initiative
@@ -181,6 +196,12 @@ module Decidim
181
196
  )
182
197
  end
183
198
 
199
+ def user_can_preview_space?
200
+ context[:share_token].present? && Decidim::ShareToken.use!(token_for: initiative, token: context[:share_token], user:)
201
+ rescue ActiveRecord::RecordNotFound, StandardError
202
+ nil
203
+ end
204
+
184
205
  def initiative_committee_action?
185
206
  return unless permission_action.subject == :initiative_committee_member
186
207
 
@@ -23,7 +23,7 @@ module Decidim
23
23
  def query
24
24
  Decidim::Initiative
25
25
  .where(state: "validating")
26
- .where("updated_at < ?", @period_length)
26
+ .where(updated_at: ...@period_length)
27
27
  end
28
28
  end
29
29
  end
@@ -10,9 +10,9 @@ module Decidim
10
10
  def query
11
11
  Decidim::Initiative
12
12
  .includes(:scoped_type)
13
- .where(state: "published")
13
+ .where(state: "open")
14
14
  .where(signature_type: "online")
15
- .where("signature_end_date < ?", Date.current)
15
+ .where(signature_end_date: ...Date.current)
16
16
  end
17
17
  end
18
18
  end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Initiatives
5
+ class DownloadYourDataInitiativeSerializer < OpenDataInitiativeSerializer
6
+ # Serializes a Debate for download your data feature
7
+ #
8
+ # Remove the author information as it is the same of the user that
9
+ # requested the data
10
+ def serialize
11
+ super.except!(:authors)
12
+ end
13
+ end
14
+ end
15
+ end
@@ -2,33 +2,14 @@
2
2
 
3
3
  module Decidim
4
4
  module Initiatives
5
- class InitiativeSerializer < Decidim::Exporters::Serializer
5
+ class InitiativeSerializer < Decidim::Initiatives::OpenDataInitiativeSerializer
6
6
  # Serializes an initiative
7
7
  def serialize
8
- {
9
- id: resource.id,
10
- title: resource.title,
11
- description: resource.description,
12
- state: resource.state,
13
- created_at: resource.created_at,
14
- published_at: resource.published_at,
15
- signature_end_date: resource.signature_end_date,
16
- signature_type: resource.signature_type,
17
- signatures: resource.supports_count,
18
- scope: {
19
- name: resource.scope&.name
20
- },
21
- type: {
22
- title: resource.type&.title
23
- },
24
- authors: {
25
- id: resource.author_users.map(&:id),
26
- name: resource.author_users.map(&:name)
27
- },
28
- area: {
29
- name: resource.area&.name
8
+ super.merge(
9
+ {
10
+ components: serialize_components
30
11
  }
31
- }
12
+ )
32
13
  end
33
14
  end
34
15
  end
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Initiatives
5
+ class OpenDataInitiativeSerializer < Decidim::Exporters::ParticipatorySpaceSerializer
6
+ # Public: Exports a hash with the serialized data for this initiative.
7
+ #
8
+ # Note that we do not merge the original serialize method here, as the Initiative
9
+ # model does not have the same attributes as the other Spaces models.
10
+ def serialize
11
+ {
12
+ reference: resource.reference,
13
+ title: resource.title,
14
+ url: EngineRouter.main_proxy(resource).initiative_url(resource),
15
+ description: resource.description,
16
+ state: resource.state,
17
+ created_at: resource.created_at,
18
+ updated_at: resource.updated_at,
19
+ published_at: resource.published_at,
20
+ signature_start_date: resource.signature_start_date,
21
+ signature_end_date: resource.signature_end_date,
22
+ signature_type: resource.signature_type,
23
+ signatures: resource.supports_count,
24
+ answer: resource.answer,
25
+ answered_at: resource.answered_at,
26
+ answer_url: resource.answer_url,
27
+ hashtag: resource.hashtag,
28
+ first_progress_notification_at: resource.first_progress_notification_at,
29
+ second_progress_notification_at: resource.second_progress_notification_at,
30
+ online_votes: resource.online_votes,
31
+ offline_votes: resource.offline_votes,
32
+ comments_count: resource.comments_count,
33
+ follows_count: resource.follows_count,
34
+ scope: {
35
+ id: resource.scope.try(:id),
36
+ name: resource.scope.try(:name) || empty_translatable
37
+ },
38
+ type: {
39
+ id: resource.type&.id,
40
+ title: resource.type&.title
41
+ },
42
+ authors: {
43
+ id: resource.author_users.map(&:id),
44
+ name: resource.author_users.map(&:name)
45
+ },
46
+ area: {
47
+ id: resource.area.try(:id),
48
+ name: resource.area.try(:name) || empty_translatable
49
+ }
50
+ }
51
+ end
52
+ end
53
+ end
54
+ end
@@ -9,7 +9,7 @@ module Decidim
9
9
  def initialize(args = {})
10
10
  @secret = args.fetch(:secret) || "default"
11
11
  @key = ActiveSupport::KeyGenerator.new(secret).generate_key(
12
- Rails.application.secrets.secret_key_base, ActiveSupport::MessageEncryptor.key_len
12
+ Rails.application.secret_key_base, ActiveSupport::MessageEncryptor.key_len
13
13
  )
14
14
  @encryptor = ActiveSupport::MessageEncryptor.new(@key)
15
15
  end
@@ -50,8 +50,6 @@ module Decidim
50
50
  private
51
51
 
52
52
  def signature_widget(doc)
53
- doc.pages.add.document
54
-
55
53
  form = doc.acro_form(create: true)
56
54
  form.signature_flag(:append_only)
57
55
 
@@ -56,4 +56,5 @@
56
56
  </table>
57
57
  </div>
58
58
 
59
+ <%= append_stylesheet_pack_tag "decidim_initiatives_admin" %>
59
60
  <%= append_javascript_pack_tag "decidim_initiatives_admin" %>
@@ -73,8 +73,7 @@
73
73
  <% if allowed_to? :export_pdf_signatures, :initiative, initiative: current_initiative %>
74
74
  <%= link_to t(".export_pdf_signatures"),
75
75
  export_pdf_signatures_initiative_path(current_initiative, format: :pdf),
76
- class: "button button__sm button__secondary",
77
- data: { confirm: t(".confirm") } %>
76
+ class: "button button__sm button__secondary" %>
78
77
  <% end %>
79
78
  </div>
80
79
  </div>
@@ -45,6 +45,13 @@
45
45
  <td class="table-list__date"><%= l initiative.created_at, format: :short %></td>
46
46
  <td class="table-list__date"><%= initiative.published_at? ? l(initiative.published_at, format: :short) : "" %></td>
47
47
  <td class="table-list__actions">
48
+
49
+ <% if allowed_to? :read, :share_tokens, current_participatory_space: initiative %>
50
+ <%= icon_link_to "share-line", decidim_admin_initiatives.initiative_share_tokens_path(initiative), t("actions.share_tokens", scope: "decidim.admin"), class: "action-icon--new" %>
51
+ <% else %>
52
+ <span class="action-space icon"></span>
53
+ <% end %>
54
+
48
55
  <% if allowed_to? :edit, :initiative, initiative: initiative %>
49
56
  <%= icon_link_to "pencil-line",
50
57
  decidim_admin_initiatives.edit_initiative_path(initiative.to_param),
@@ -60,7 +67,7 @@
60
67
  <%= icon "chat-1-line", scope: "decidim.admin", class: "action-icon action-icon--disabled", role: "img", "aria-hidden": true %>
61
68
  <% end %>
62
69
 
63
- <% if allowed_to? :read, :initiative, initiative: initiative %>
70
+ <% if allowed_to? :print, :initiative, initiative: initiative %>
64
71
  <%= icon_link_to "printer-line",
65
72
  decidim_initiatives.print_initiative_path(initiative),
66
73
  t(".print"),
@@ -1,11 +1,10 @@
1
1
  <% add_decidim_meta_tags({
2
- image_url: current_initiative.type.attached_uploader(:banner_image).url,
2
+ image_url: resolve_meta_image_url(current_initiative),
3
3
  description: translated_attribute(current_initiative.description),
4
4
  title: translated_attribute(current_initiative.title),
5
5
  url: initiative_url(current_initiative.id)
6
6
  }) %>
7
7
 
8
- <% add_decidim_page_title(translated_attribute(current_initiative.title)) %>
9
8
  <% provide :meta_image_url, current_initiative.type.attached_uploader(:banner_image).url %>
10
9
 
11
10
  <%= render layout: "layouts/decidim/shared/layout_center" do %>
@@ -47,10 +47,10 @@
47
47
  <% if initiative_type.attachments_enabled? %>
48
48
  <%= f.attachment :documents,
49
49
  multiple: true,
50
- label: t("decidim.initiatives.form.add_documents"),
51
- button_label: t("decidim.initiatives.form.add_documents"),
50
+ label: t("decidim.initiatives.form.add_attachments"),
51
+ button_label: t("decidim.initiatives.form.add_attachments"),
52
52
  button_class: "button button__lg button__transparent-secondary w-full",
53
- button_edit_label: t("decidim.initiatives.form.edit_documents"),
53
+ button_edit_label: t("decidim.initiatives.form.edit_attachments"),
54
54
  help_text: t("attachment_legend", scope: "decidim.initiatives.form") %>
55
55
  <%= f.attachment :photos,
56
56
  multiple: true,
@@ -27,8 +27,16 @@
27
27
  <div class="initiatives__selection__text">
28
28
  <h2 class="h5 text-secondary"><%= translated_attribute(type.title) %></h2>
29
29
  <span><%= decidim_sanitize_admin(translated_attribute(type.description)) %></span>
30
- <%= authorized_create_modal_button(type, remote: true, class: "button button__sm button__secondary") do %>
31
- <%= t("verification_required", scope: "decidim.initiatives.create_initiative.select_initiative_type") %>
30
+ <%= action_authorized_link_to(
31
+ :create,
32
+ fill_data_create_initiative_index_path(initiative: { type_id: type.id }),
33
+ authorizations_modal_path: authorization_create_modal_initiative_path(type),
34
+ permissions_holder: type,
35
+ class: "button button__sm button__secondary",
36
+ "data-dialog-open": "not-authorized-modal",
37
+ onclick: "event.preventDefault();"
38
+ ) do %>
39
+ <%= t("verification_required", scope: "decidim.initiatives.create_initiative.select_initiative_type") %>
32
40
  <% end %>
33
41
  </div>
34
42
  </div>
@@ -51,10 +51,10 @@
51
51
  <% if current_initiative.type.attachments_enabled? %>
52
52
  <%= form.attachment :documents,
53
53
  multiple: true,
54
- label: t("decidim.initiatives.form.add_documents"),
55
- button_label: t("decidim.initiatives.form.add_documents"),
54
+ label: t("decidim.initiatives.form.add_attachments"),
55
+ button_label: t("decidim.initiatives.form.add_attachments"),
56
56
  button_class: "button button__lg button__transparent-secondary w-full",
57
- button_edit_label: t("decidim.initiatives.form.edit_documents"),
57
+ button_edit_label: t("decidim.initiatives.form.edit_attachments"),
58
58
  help_text: t("decidim.initiatives.form.attachment_legend") %>
59
59
 
60
60
  <%= form.attachment :photos,
@@ -1,27 +1,30 @@
1
1
  <% if Decidim::Initiatives.creation_enabled %>
2
- <% if current_user && available_initiative_types.size > 1 %>
3
- <%= link_to create_initiative_path(:select_initiative_type), class: "!px-4 title-action__action button button__xl button__secondary w-full" do %>
4
- <%= t("new_initiative", scope: "decidim.initiatives.initiatives.index_header") %>
5
- <%= icon "add-fill" %>
6
- <% end %>
7
- <% elsif current_user %>
8
- <% if allowed_to?(:create, :initiative, { initiative_type: available_initiative_types.first }) %>
2
+ <% if available_initiative_types.size > 1 %>
3
+ <% if current_user %>
9
4
  <%= link_to create_initiative_path(:select_initiative_type), class: "!px-4 title-action__action button button__xl button__secondary w-full" do %>
10
5
  <%= t("new_initiative", scope: "decidim.initiatives.initiatives.index_header") %>
11
6
  <%= icon "add-fill" %>
12
7
  <% end %>
13
8
  <% else %>
14
- <%= authorized_create_modal_button(available_initiative_types.first, remote: true, class: "!px-4 title-action__action button button__xl button__secondary w-full") do %>
9
+ <% content_for(:redirect_after_login) { create_initiative_url(:select_initiative_type) } %>
10
+ <button type="button" class="button button__xl button__secondary w-full" data-dialog-open="loginModal" aria-controls="loginModal" aria-haspopup="dialog" tabindex="0">
15
11
  <%= t("new_initiative", scope: "decidim.initiatives.initiatives.index_header") %>
16
12
  <%= icon "add-fill" %>
17
- <% end %>
13
+ </button>
18
14
  <% end %>
19
- <% else %>
20
- <% content_for(:redirect_after_login) { create_initiative_url(:select_initiative_type) } %>
21
- <button type="button" class="button button__xl button__secondary w-full" data-dialog-open="loginModal" aria-controls="loginModal" aria-haspopup="dialog" tabindex="0">
15
+ <% elsif (initiative_type = available_initiative_types.first).present? %>
16
+ <% content_for(:redirect_after_login) { fill_data_create_initiative_index_path(initiative: { type_id: initiative_type.id }) } unless current_user %>
17
+ <%= action_authorized_link_to(
18
+ :create,
19
+ fill_data_create_initiative_index_path(initiative: { type_id: initiative_type.id }),
20
+ authorizations_modal_path: authorization_create_modal_initiative_path(initiative_type),
21
+ permissions_holder: initiative_type,
22
+ "data-dialog-open": allowed_to?(:create, :initiative, { initiative_type: }) ? "" : "not-authorized-modal",
23
+ class: "!px-4 title-action__action button button__xl button__secondary w-full"
24
+ ) do %>
22
25
  <%= t("new_initiative", scope: "decidim.initiatives.initiatives.index_header") %>
23
26
  <%= icon "add-fill" %>
24
- </button>
27
+ <% end %>
25
28
  <% end %>
26
29
  <% end %>
27
30
 
@@ -34,8 +34,14 @@
34
34
  </button>
35
35
  <% end %>
36
36
  <% else %>
37
- <%= authorized_vote_modal_button(initiative, remote: true, class: "button button__xl w-full button__secondary") do %>
38
- <%= verification_label %>
39
- <% end %>
37
+ <%= action_authorized_link_to(
38
+ :vote,
39
+ t("vote", scope: "decidim.initiatives.initiatives.vote_cabin"),
40
+ steps ? initiative_signatures_path(initiative_slug: current_initiative.slug) : initiative_path(current_initiative),
41
+ resource: current_initiative,
42
+ permissions_holder: current_initiative.type,
43
+ authorizations_modal_path: authorization_sign_modal_initiative_path(current_initiative),
44
+ class: "button button__xl w-full button__secondary"
45
+ ) %>
40
46
  <% end %>
41
47
  <% end %>
@@ -4,7 +4,6 @@
4
4
  initiative:,
5
5
  vote_label: t("vote", scope: "decidim.initiatives.initiatives.vote_cabin"),
6
6
  unvote_label: t("already_voted", scope: "decidim.initiatives.initiatives.vote_cabin"),
7
- verification_label: t("verification_required", scope: "decidim.initiatives.initiatives.vote_cabin"),
8
7
  steps: signature_has_steps?
9
8
  } %>
10
9
  <% else %>
@@ -1,9 +1,8 @@
1
- <% add_decidim_meta_tags({
2
- image_url: current_initiative.type.attached_uploader(:banner_image).url,
3
- description: translated_attribute(current_initiative.description),
4
- title: translated_attribute(current_initiative.title),
5
- url: initiative_url(current_initiative.id)
6
- }) %>
1
+ <% add_decidim_meta_tags(
2
+ description: translated_attribute(current_initiative.description),
3
+ title: translated_attribute(current_initiative.title),
4
+ url: initiative_url(current_initiative.id),
5
+ resource: current_initiative) %>
7
6
 
8
7
  <%
9
8
  edit_link(
@@ -210,8 +209,8 @@ edit_link(
210
209
  <% if current_initiative.commentable? && current_initiative.published? %>
211
210
  <%= cell "decidim/comments_button", nil, display: current_initiative.commentable? && current_initiative.published? %>
212
211
  <% end %>
213
- <div class="ml-auto">
214
- <%= cell "decidim/share_button", nil %>
212
+ <div class="ml-auto lg:ml-0">
213
+ <%= cell "decidim/share_widget", current_initiative %>
215
214
  </div>
216
215
  </section>
217
216
 
@@ -0,0 +1,11 @@
1
+ <div class="inline-block relative">
2
+ <%= button_tag data: { component: "dropdown", target: "initiatives-dropdown-menu-settings" }, class: "dropdown__trigger button button__transparent" do %>
3
+ <span>
4
+ <%= t("menu.manage", scope: "decidim.admin") %>
5
+ </span>
6
+ <%= icon "arrow-down-s-line" %>
7
+ <% end %>
8
+ <div id="initiatives-dropdown-menu-settings" class="process-title-content-dropdown" aria-hidden="true">
9
+ <%= dropdown_menu(:admin_initiatives_menu).render %>
10
+ </div>
11
+ </div>
@@ -1,13 +1,5 @@
1
1
  <% content_for :breadcrumb_context_menu do %>
2
- <div class="inline-block relative">
3
- <%= button_tag data: { component: "dropdown", target: "initiatives-dropdown-menu-settings" }, class: "dropdown__trigger button button__transparent" do %>
4
- <%= t("actions.manage", scope: "decidim.admin") %>
5
- <%= icon "arrow-down-s-line" %>
6
- <% end %>
7
- <div id="initiatives-dropdown-menu-settings" class="process-title-content-dropdown" aria-hidden="true">
8
- <%= dropdown_menu(:admin_initiatives_menu).render %>
9
- </div>
10
- </div>
2
+ <%= render partial: "layouts/decidim/admin/manage_initiatives" %>
11
3
  <% end %>
12
4
 
13
5
  <%= render "layouts/decidim/admin/application" do %>
data/config/assets.rb CHANGED
@@ -5,7 +5,5 @@ base_path = File.expand_path("..", __dir__)
5
5
  Decidim::Webpacker.register_path("#{base_path}/app/packs")
6
6
  Decidim::Webpacker.register_entrypoints(
7
7
  decidim_initiatives: "#{base_path}/app/packs/entrypoints/decidim_initiatives.js",
8
- decidim_initiatives_admin: "#{base_path}/app/packs/entrypoints/decidim_initiatives_admin.js",
9
- decidim_initiatives_print: "#{base_path}/app/packs/entrypoints/decidim_initiatives_print.js",
10
- decidim_initiatives_initiatives_votes: "#{base_path}/app/packs/entrypoints/decidim_initiatives_initiatives_votes.js"
8
+ decidim_initiatives_admin: "#{base_path}/app/packs/entrypoints/decidim_initiatives_admin.js"
11
9
  )
@@ -96,8 +96,8 @@ ar:
96
96
  initiative_start_date: تاريخ البدء
97
97
  initiative_title: عنوان المبادرة
98
98
  name_and_surname: اسم ولقب
99
+ nickname: الاسم المستعار
99
100
  postal_code: الكود البريدى
100
- time_and_date: الوقت و التاريخ
101
101
  timestamp: الطابع الزمني
102
102
  titles:
103
103
  initiatives: المبادرات
@@ -124,8 +124,8 @@ ar:
124
124
  badges:
125
125
  initiatives:
126
126
  conditions:
127
- - انتقل إلى مساحة مشاركة المبادرات
128
- - اتبع الخطوات لإنشاء مبادرة جديدة
127
+ - انتقل إلى مساحة مشاركة المبادرات
128
+ - اتبع الخطوات لإنشاء مبادرة جديدة
129
129
  description: تُمنح هذه الشارة عند إطلاق مبادرات جديدة ، وإقامة شراكة مع الآخرين لتنفيذها.
130
130
  description_another: حصل هذا المشارك على %{score} مبادرة تم نشرها.
131
131
  name: المبادرات المنشورة
@@ -201,7 +201,6 @@ ar:
201
201
  admin_states:
202
202
  created: تمّ إنشاؤه
203
203
  discarded: التخلص منها
204
- published: نشرت
205
204
  validating: المصادقة الفنية
206
205
  application_helper:
207
206
  filter_state_values:
@@ -252,6 +251,10 @@ ar:
252
251
  email_outro: لقد تلقيت هذا الإشعار لأنك تتابع %{author_nickname}. يمكنك إيقاف تلقي الإخطارات باتباع الرابط السابق.
253
252
  email_subject: المبادرة التي أقرتها %{author_nickname}
254
253
  notification_title: تمت الموافقة على مبادرة <a href="%{resource_path}">%{resource_title}</a> من قبل <a href="%{author_path}">%{author_name} %{author_nickname}</a>.
254
+ form:
255
+ add_attachments: إضافة مرفقات
256
+ attachment_legend: إضافة مستند أو صورة
257
+ edit_attachments: تعديل المرفقات
255
258
  initiative_signatures:
256
259
  fill_personal_data:
257
260
  continue: استمر
@@ -325,7 +328,6 @@ ar:
325
328
  other: " التوقيعات"
326
329
  vote_cabin:
327
330
  already_voted: وقعت بالفعل
328
- verification_required: تحقق من حسابك لتوقيع المبادرة
329
331
  vote: إشارة
330
332
  votes_blocked: توقيع المعوقين
331
333
  votes_count:
@@ -358,6 +360,9 @@ ar:
358
360
  menu:
359
361
  initiatives: المبادرات
360
362
  resources:
363
+ initiative:
364
+ actions:
365
+ comment: تعليق
361
366
  initiatives_type:
362
367
  actions:
363
368
  title: أفعال