diff --git a/decidim-budgets/spec/system/orders_spec.rb b/decidim-budgets/spec/system/orders_spec.rb index b39a890afa513..be2575f3710f6 100644 --- a/decidim-budgets/spec/system/orders_spec.rb +++ b/decidim-budgets/spec/system/orders_spec.rb @@ -671,14 +671,14 @@ end end - context "with supports enabled" do + context "with votes enabled" do let(:proposal_component) do create(:proposal_component, :with_votes_enabled, participatory_space: project.component.participatory_space) end let(:proposals) { create_list(:proposal, 1, :with_votes, component: proposal_component) } - it "does not show the amount of supports" do + it "does not show the amount of votes" do visit_budget click_on translated(project.title) diff --git a/decidim-core/README.md b/decidim-core/README.md index 0d754711bfd57..0595238f1c445 100644 --- a/decidim-core/README.md +++ b/decidim-core/README.md @@ -28,7 +28,7 @@ User authentication is set up with [`Devise`](https://github.com/plataformatec/d Core implements an Amendment feature that can be activated in the components. As of now, it is only implemented in the proposal component. -This feature makes it possible for anyone to edit the text of an amendable resource and create a child resource as an amendment. This child resource may receive support and the author of the amendable resource may accept or reject the amendment (or child proposal). In case of rejection, the author of the rejected emendation may raise the child resource to an independent resource. +This feature makes it possible for anyone to edit the text of an amendable resource and create a child resource as an amendment. This child resource may receive votes and the author of the amendable resource may accept or reject the amendment (or child proposal). In case of rejection, the author of the rejected emendation may raise the child resource to an independent resource. ### Key artifacts for Amendments diff --git a/decidim-core/app/commands/decidim/amendable/withdraw.rb b/decidim-core/app/commands/decidim/amendable/withdraw.rb index 7a9d5c3d5f63b..837d40d3c18d6 100644 --- a/decidim-core/app/commands/decidim/amendable/withdraw.rb +++ b/decidim-core/app/commands/decidim/amendable/withdraw.rb @@ -18,7 +18,7 @@ def initialize(amendment, current_user) # Executes the command. Broadcasts these events: # # - :ok when everything is valid, together with the resource. - # - :invalid if the resource already has supports or does not belong to current user. + # - :invalid if the resource already has votes or does not belong to current user. # # Returns nothing. def call diff --git a/decidim-core/app/presenters/decidim/home_stats_presenter.rb b/decidim-core/app/presenters/decidim/home_stats_presenter.rb index aedab9312323a..3fcfb0e07fabb 100644 --- a/decidim-core/app/presenters/decidim/home_stats_presenter.rb +++ b/decidim-core/app/presenters/decidim/home_stats_presenter.rb @@ -45,7 +45,7 @@ def component_stats(conditions) stats = {} Decidim.component_manifests.flat_map do |component| component - .stats.except([:supports_count]) + .stats.except([:votes_count]) .filter(conditions) .with_context(published_components) .each do |name, data| diff --git a/decidim-core/lib/decidim/core/test/shared_examples/amendable/withdraw_amendment_examples.rb b/decidim-core/lib/decidim/core/test/shared_examples/amendable/withdraw_amendment_examples.rb index f4d186cdd1d16..1a7b9ff80e9be 100644 --- a/decidim-core/lib/decidim/core/test/shared_examples/amendable/withdraw_amendment_examples.rb +++ b/decidim-core/lib/decidim/core/test/shared_examples/amendable/withdraw_amendment_examples.rb @@ -4,7 +4,7 @@ context "when current user is the author of the amendment" do let(:current_user) { amendment.amender } - context "and the amendment has no supports" do + context "and the amendment has no votes" do it "withdraws the amendment" do expect { command.call }.to broadcast(:ok) expect(amendment.state).to eq("withdrawn") @@ -12,7 +12,7 @@ end end - context "and the amendment has some supports" do + context "and the amendment has some votes" do before do emendation.votes.create!(author: other_user) end diff --git a/decidim-dev/lib/decidim/dev/assets/assemblies.json b/decidim-dev/lib/decidim/dev/assets/assemblies.json index d444526bc9b6a..207523c4be67b 100644 --- a/decidim-dev/lib/decidim/dev/assets/assemblies.json +++ b/decidim-dev/lib/decidim/dev/assets/assemblies.json @@ -509,7 +509,7 @@ "proposal_length": 500, "proposal_edit_before_minutes": 5, "threshold_per_proposal": 0, - "can_accumulate_supports_beyond_threshold": false, + "can_accumulate_votes_beyond_threshold": false, "proposal_answering_enabled": true, "official_proposals_enabled": true, "comments_enabled": true, diff --git a/decidim-participatory_processes/app/queries/decidim/participatory_processes/stats_participants_count.rb b/decidim-participatory_processes/app/queries/decidim/participatory_processes/stats_participants_count.rb index b19749e13dd7e..ab97796bf3e54 100644 --- a/decidim-participatory_processes/app/queries/decidim/participatory_processes/stats_participants_count.rb +++ b/decidim-participatory_processes/app/queries/decidim/participatory_processes/stats_participants_count.rb @@ -22,9 +22,9 @@ def query debates_query, meetings_query, endorsements_query, - project_supports_query, + project_votes_query, proposals_query, - proposal_supports_query, + proposal_votes_query, survey_answer_query ].flatten.uniq.count end @@ -93,7 +93,7 @@ def proposals_query .uniq end - def proposal_supports_query + def proposal_votes_query return [] unless Decidim.module_installed?(:proposals) Decidim::Proposals::ProposalVote @@ -105,7 +105,7 @@ def proposal_supports_query .uniq end - def project_supports_query + def project_votes_query return [] unless Decidim.module_installed?(:budgets) Decidim::Budgets::Order.joins(budget: [:component]) diff --git a/decidim-proposals/app/commands/decidim/proposals/vote_proposal.rb b/decidim-proposals/app/commands/decidim/proposals/vote_proposal.rb index 4f9d2ee0a1957..673707ae11be5 100644 --- a/decidim-proposals/app/commands/decidim/proposals/vote_proposal.rb +++ b/decidim-proposals/app/commands/decidim/proposals/vote_proposal.rb @@ -20,7 +20,7 @@ def initialize(proposal, current_user) # # Returns nothing. def call - return broadcast(:invalid) if @proposal.maximum_votes_reached? && !@proposal.can_accumulate_supports_beyond_threshold + return broadcast(:invalid) if @proposal.maximum_votes_reached? && !@proposal.can_accumulate_votes_beyond_threshold build_proposal_vote return broadcast(:invalid) unless vote.valid? diff --git a/decidim-proposals/app/commands/decidim/proposals/withdraw_proposal.rb b/decidim-proposals/app/commands/decidim/proposals/withdraw_proposal.rb index 2ccf9d2a69cb5..479a976919c61 100644 --- a/decidim-proposals/app/commands/decidim/proposals/withdraw_proposal.rb +++ b/decidim-proposals/app/commands/decidim/proposals/withdraw_proposal.rb @@ -16,11 +16,11 @@ def initialize(proposal, current_user) # Executes the command. Broadcasts these events: # # - :ok when everything is valid, together with the proposal. - # - :has_supports if the proposal already has supports or does not belong to current user. + # - :has_votes if the proposal already has votes or does not belong to current user. # # Returns nothing. def call - return broadcast(:has_supports) if @proposal.votes.any? + return broadcast(:has_votes) if @proposal.votes.any? transaction do @proposal.withdraw! diff --git a/decidim-proposals/app/controllers/decidim/proposals/proposals_controller.rb b/decidim-proposals/app/controllers/decidim/proposals/proposals_controller.rb index 7518efa8aa3ba..fd50675d8d021 100644 --- a/decidim-proposals/app/controllers/decidim/proposals/proposals_controller.rb +++ b/decidim-proposals/app/controllers/decidim/proposals/proposals_controller.rb @@ -188,8 +188,8 @@ def withdraw flash[:notice] = I18n.t("proposals.update.success", scope: "decidim") redirect_to Decidim::ResourceLocatorPresenter.new(@proposal).path end - on(:has_supports) do - flash[:alert] = I18n.t("proposals.withdraw.errors.has_supports", scope: "decidim") + on(:has_votes) do + flash[:alert] = I18n.t("proposals.withdraw.errors.has_votes", scope: "decidim") redirect_to Decidim::ResourceLocatorPresenter.new(@proposal).path end end diff --git a/decidim-proposals/app/forms/decidim/proposals/admin/proposals_fork_form.rb b/decidim-proposals/app/forms/decidim/proposals/admin/proposals_fork_form.rb index 5c7c04962fee9..d17479ef10924 100644 --- a/decidim-proposals/app/forms/decidim/proposals/admin/proposals_fork_form.rb +++ b/decidim-proposals/app/forms/decidim/proposals/admin/proposals_fork_form.rb @@ -39,7 +39,7 @@ def mergeable_to_same_component proposals.each do |proposal| errors_set << :not_official unless proposal.official? - errors_set << :supported if proposal.votes.any? || proposal.endorsements.any? + errors_set << :voted if proposal.votes.any? || proposal.endorsements.any? end errors_set.each { |error| errors.add(:base, error) } if errors_set.any? diff --git a/decidim-proposals/app/helpers/decidim/proposals/application_helper.rb b/decidim-proposals/app/helpers/decidim/proposals/application_helper.rb index 9ab1b045c328a..c9cfacf252e8e 100644 --- a/decidim-proposals/app/helpers/decidim/proposals/application_helper.rb +++ b/decidim-proposals/app/helpers/decidim/proposals/application_helper.rb @@ -150,7 +150,7 @@ def show_voting_rules? return true if vote_limit_enabled? return true if threshold_per_proposal_enabled? return true if proposal_limit_enabled? - return true if can_accumulate_supports_beyond_threshold? + return true if can_accumulate_votes_beyond_threshold? return true if minimum_votes_per_user_enabled? end diff --git a/decidim-proposals/app/helpers/decidim/proposals/proposal_votes_helper.rb b/decidim-proposals/app/helpers/decidim/proposals/proposal_votes_helper.rb index 73ad73f405963..ba76bd972d455 100644 --- a/decidim-proposals/app/helpers/decidim/proposals/proposal_votes_helper.rb +++ b/decidim-proposals/app/helpers/decidim/proposals/proposal_votes_helper.rb @@ -39,8 +39,8 @@ def threshold_per_proposal # Public: Checks if can accumulate more than maximum is enabled # # Returns true if enabled, false otherwise. - def can_accumulate_supports_beyond_threshold? - component_settings.can_accumulate_supports_beyond_threshold + def can_accumulate_votes_beyond_threshold? + component_settings.can_accumulate_votes_beyond_threshold end # Public: Checks if voting is enabled in this step. diff --git a/decidim-proposals/app/models/decidim/proposals/proposal.rb b/decidim-proposals/app/models/decidim/proposals/proposal.rb index a2cb7e9c7218d..df5d12f7453f2 100644 --- a/decidim-proposals/app/models/decidim/proposals/proposal.rb +++ b/decidim-proposals/app/models/decidim/proposals/proposal.rb @@ -355,8 +355,8 @@ def maximum_votes_reached? # Public: Can accumulate more votes than maximum for this proposal. # # Returns true if can accumulate, false otherwise - def can_accumulate_supports_beyond_threshold - component.settings.can_accumulate_supports_beyond_threshold + def can_accumulate_votes_beyond_threshold + component.settings.can_accumulate_votes_beyond_threshold end # Checks whether the user can edit the given proposal. diff --git a/decidim-proposals/app/queries/decidim/proposals/metrics/proposal_participants_metric_measure.rb b/decidim-proposals/app/queries/decidim/proposals/metrics/proposal_participants_metric_measure.rb index 49df64cef4b48..83d0e26a5407c 100644 --- a/decidim-proposals/app/queries/decidim/proposals/metrics/proposal_participants_metric_measure.rb +++ b/decidim-proposals/app/queries/decidim/proposals/metrics/proposal_participants_metric_measure.rb @@ -5,7 +5,7 @@ module Proposals module Metrics # Searches for Participants in the following actions # - Create a proposal (Proposals) - # - Give support to a proposal (Proposals) + # - Vote to a proposal (Proposals) # - Endorse (Proposals) class ProposalParticipantsMetricMeasure < Decidim::MetricMeasure def valid? diff --git a/decidim-proposals/app/views/decidim/proposals/admin/proposals/show.html.erb b/decidim-proposals/app/views/decidim/proposals/admin/proposals/show.html.erb index 2ae1c8c6d1e50..66c3e64c18b41 100644 --- a/decidim-proposals/app/views/decidim/proposals/admin/proposals/show.html.erb +++ b/decidim-proposals/app/views/decidim/proposals/admin/proposals/show.html.erb @@ -111,7 +111,7 @@ <% end %>
-
+
<%= t ".votes_count" %>
<%= icon "service-line", class: "fill-gray" %> diff --git a/decidim-proposals/app/views/decidim/proposals/proposals/_vote_button.html.erb b/decidim-proposals/app/views/decidim/proposals/proposals/_vote_button.html.erb index 0b7eb379aa7c8..48c09783b82be 100644 --- a/decidim-proposals/app/views/decidim/proposals/proposals/_vote_button.html.erb +++ b/decidim-proposals/app/views/decidim/proposals/proposals/_vote_button.html.erb @@ -35,7 +35,7 @@ <%= decidim_html_escape(present(proposal).title) %> <% end %> <% else %> - <% if proposal.maximum_votes_reached? && !proposal.can_accumulate_supports_beyond_threshold && current_component.participatory_space.can_participate?(current_user) %> + <% if proposal.maximum_votes_reached? && !proposal.can_accumulate_votes_beyond_threshold && current_component.participatory_space.can_participate?(current_user) %> <%= content_tag :button, t("decidim.proposals.proposals.vote_button.maximum_votes_reached"), class: button_classes, disabled: true %> <% else %> <% if vote_limit_enabled? && remaining_votes_count_for(current_user) == 0 %> diff --git a/decidim-proposals/app/views/decidim/proposals/proposals/_voting_rules.html.erb b/decidim-proposals/app/views/decidim/proposals/proposals/_voting_rules.html.erb index ff4f97935e7cc..456ebd407a2aa 100644 --- a/decidim-proposals/app/views/decidim/proposals/proposals/_voting_rules.html.erb +++ b/decidim-proposals/app/views/decidim/proposals/proposals/_voting_rules.html.erb @@ -14,8 +14,8 @@
  • <%= t(".threshold_per_proposal.description", limit: threshold_per_proposal) %>
  • <% end %> - <% if can_accumulate_supports_beyond_threshold? %> -
  • <%= t(".can_accumulate_supports_beyond_threshold.description", limit: threshold_per_proposal) %>
  • + <% if can_accumulate_votes_beyond_threshold? %> +
  • <%= t(".can_accumulate_votes_beyond_threshold.description", limit: threshold_per_proposal) %>
  • <% end %> <% if minimum_votes_per_user_enabled? %> @@ -24,7 +24,7 @@ <% if votes_given >= minimum_votes_per_user %> <%= t(".minimum_votes_per_user.given_enough_votes") %> <% else %> - <%= t(".minimum_votes_per_user.supports_remaining", remaining_votes: minimum_votes_per_user - votes_given) %> + <%= t(".minimum_votes_per_user.votes_remaining", remaining_votes: minimum_votes_per_user - votes_given) %> <% end %> <% end %> diff --git a/decidim-proposals/app/views/decidim/proposals/proposals/participatory_texts/_proposal_vote_button.html.erb b/decidim-proposals/app/views/decidim/proposals/proposals/participatory_texts/_proposal_vote_button.html.erb index f39e59de6fe64..e9527ab93316a 100644 --- a/decidim-proposals/app/views/decidim/proposals/proposals/participatory_texts/_proposal_vote_button.html.erb +++ b/decidim-proposals/app/views/decidim/proposals/proposals/participatory_texts/_proposal_vote_button.html.erb @@ -33,7 +33,7 @@ <%= decidim_html_escape(present(proposal).title) %> <% end %> <% else %> - <% if proposal.maximum_votes_reached? && !proposal.can_accumulate_supports_beyond_threshold && current_component.participatory_space.can_participate?(current_user) %> + <% if proposal.maximum_votes_reached? && !proposal.can_accumulate_votes_beyond_threshold && current_component.participatory_space.can_participate?(current_user) %> <%= content_tag :span, t("decidim.proposals.proposals.vote_button.maximum_votes_reached"), class: "column button light button--sc disabled", disabled: true %> <% else %> <% if vote_limit_enabled? && remaining_votes_count_for(current_user) == 0 %> diff --git a/decidim-proposals/app/views/decidim/proposals/proposals/participatory_texts/_proposal_votes_count.html.erb b/decidim-proposals/app/views/decidim/proposals/proposals/participatory_texts/_proposal_votes_count.html.erb index 13cf233a69682..6641749bfca69 100644 --- a/decidim-proposals/app/views/decidim/proposals/proposals/participatory_texts/_proposal_votes_count.html.erb +++ b/decidim-proposals/app/views/decidim/proposals/proposals/participatory_texts/_proposal_votes_count.html.erb @@ -17,7 +17,7 @@ <%= proposal.proposal_votes_count || 0 %> <% else %> - <% if proposal.maximum_votes_reached? && !proposal.can_accumulate_supports_beyond_threshold && current_component.participatory_space.can_participate?(current_user) %> + <% if proposal.maximum_votes_reached? && !proposal.can_accumulate_votes_beyond_threshold && current_component.participatory_space.can_participate?(current_user) %> diff --git a/decidim-proposals/config/locales/en.yml b/decidim-proposals/config/locales/en.yml index abc8f3ef09ed1..4c3d32cac16e5 100644 --- a/decidim-proposals/config/locales/en.yml +++ b/decidim-proposals/config/locales/en.yml @@ -75,12 +75,12 @@ en: attributes: base: not_official: Are not official - supported: Have received support or endorsements + voted: Have received votes or endorsements proposals_split: attributes: base: not_official: Are not official - supported: Have received support or endorsements + voted: Have received votes or endorsements models: decidim/proposals/admin/update_proposal_category_event: Proposal category changed decidim/proposals/admin/update_proposal_scope_event: Proposal scope changed @@ -101,8 +101,8 @@ en: one: Note other: Notes decidim/proposals/proposal_vote: - one: Support - other: Supports + one: Vote + other: Votes decidim: admin: filters: @@ -144,7 +144,7 @@ en: comment: Comment create: Create endorse: Endorse - vote: Support + vote: Vote vote_comment: Vote comment withdraw: Withdraw name: Proposals @@ -156,23 +156,23 @@ en: announcement: Announcement attachments_allowed: Allow attachments attachments_allowed_help: By enabling this option, proposals will default to grid mode, and the first image will appear on the card. - can_accumulate_supports_beyond_threshold: Can accumulate supports beyond threshold + can_accumulate_votes_beyond_threshold: Can accumulate votes beyond threshold collaborative_drafts_enabled: Collaborative drafts enabled comments_enabled: Comments enabled comments_max_length: Comments max length (Leave 0 for default value) default_sort_order: Default proposal sorting - default_sort_order_help: Default means that if the supports are enabled, the proposals will be shown sorted by random, and if the supports are blocked, then they will be sorted by the most supported. + default_sort_order_help: Default means that if the votes are enabled, the proposals will be shown sorted by random, and if the votes are blocked, then they will be sorted by the most voted. default_sort_order_options: default: Default most_commented: Most commented most_endorsed: Most endorsed most_followed: Most followed - most_voted: Most supported + most_voted: Most voted random: Random recent: Recent with_more_authors: With more authors geocoding_enabled: Geocoding enabled - minimum_votes_per_user: Minimum supports per user + minimum_votes_per_user: Minimum votes per user new_proposal_body_template: New proposal body template new_proposal_body_template_help: You can define prefilled text that the new Proposals will have new_proposal_help_text: New proposal help text @@ -193,7 +193,7 @@ en: scope_id: Scope scopes_enabled: Scopes enabled threshold_per_proposal: Threshold per proposal - vote_limit: Support limit per participant + vote_limit: Vote limit per participant step: amendment_creation_enabled: Amendment creation enabled amendment_creation_enabled_help: Participant can amend proposals. @@ -213,13 +213,13 @@ en: creation_enabled: Participants can create proposals creation_enabled_readonly: This setting is disabled when you activate the Participatory Texts functionality. To upload proposals as participatory text click on the Participatory Texts button and follow the instructions. default_sort_order: Default proposal sorting - default_sort_order_help: Default it means that if the supports are enabled, the proposals will be shown sorted by random, and if the supports are blocked, then they will be sorted by the most supported. + default_sort_order_help: Default it means that if the votes are enabled, the proposals will be shown sorted by random, and if the votes are blocked, then they will be sorted by the most voted. default_sort_order_options: default: Default most_commented: Most commented most_endorsed: Most endorsed most_followed: Most followed - most_voted: Most supported + most_voted: Most voted random: Random recent: Recent with_more_authors: With more authors @@ -229,9 +229,9 @@ en: publish_answers_immediately: Publish proposal answers immediately publish_answers_immediately_help_html: Mind that if you answer any proposal without this enabled, you will need to publish them manually by selecting them and using the action for publication. For more info on how this works, see proposals' answers documentation page. suggested_hashtags: Hashtags suggested to participants for new proposals - votes_blocked: Supports blocked - votes_enabled: Supports enabled - votes_hidden: Supports hidden (if supports are enabled, checking this will hide the number of supports) + votes_blocked: Votes blocked + votes_enabled: Votes enabled + votes_hidden: Votes hidden (if votes are enabled, checking this will hide the number of votes) events: proposals: admin: @@ -318,10 +318,10 @@ en: email_subject: The %{resource_title} proposal scope has been updated notification_title: The %{resource_title} proposal scope has been updated by an admin. voting_enabled: - email_intro: 'You can support proposals in %{participatory_space_title}! Start participating in this page:' + email_intro: 'You can vote proposals in %{participatory_space_title}! Start participating in this page:' email_outro: You have received this notification because you are following %{participatory_space_title}. You can stop receiving notifications following the previous link. - email_subject: Proposal support has started for %{participatory_space_title} - notification_title: You can now start supporting proposals in %{participatory_space_title} + email_subject: Proposal voting has started for %{participatory_space_title} + notification_title: You can now start voting proposals in %{participatory_space_title} gamification: badges: accepted_proposals: @@ -338,14 +338,14 @@ en: proposal_votes: conditions: - Browse and spend some time reading other people's proposals - - Give support to the proposals you like or find interesting - description: This badge is granted when you support other people's proposals. - description_another: This participant has given support to %{score} proposals. - description_own: You have given support to %{score} proposals. - name: Proposal supports - next_level_in: Give support to %{score} more proposals to reach the next level! - unearned_another: This participant has not given support to any proposals yet. - unearned_own: You have given support to no proposals yet. + - Vote to the proposals you like or find interesting + description: This badge is granted when you vote other people's proposals. + description_another: This participant has voted to %{score} proposals. + description_own: You have voted to %{score} proposals. + name: Proposal votes + next_level_in: Vote to %{score} more proposals to reach the next level! + unearned_another: This participant has not voted to any proposals yet. + unearned_own: You have voted to no proposals yet. proposals: conditions: - Choose the participation space of your interest with submission for proposals enabled @@ -371,9 +371,9 @@ en: object: proposals title: Proposals votes: - description: Number of supports to proposals - object: supports - title: Supports + description: Number of votes to proposals + object: votes + title: Votes participatory_spaces: highlighted_proposals: last: Last proposals @@ -556,7 +556,7 @@ en: remove_assignment: Remove assignment remove_assignment_confirmation: Are you sure you want to remove the valuator from this proposal? valuators: Valuators - votes_count: Supports count + votes_count: Votes count update_category: invalid: 'These proposals already had the %{subject_name} category: %{proposals}.' select_a_category: Please select a category. @@ -763,7 +763,7 @@ en: comment: Comment proposal_votes: create: - error: There was a problem supporting the proposal. + error: There was a problem voting the proposal. proposals: dynamic_map_instructions: description: The coordinates will be updated when clicking on 'preview' button. However, the address does not change. @@ -795,7 +795,7 @@ en: search: Search state: Status type: Type - voted: Supported + voted: Voted index: click_here: See all proposals collaborative_drafts_list: Access collaborative drafts @@ -816,7 +816,7 @@ en: most_commented: Most commented most_endorsed: Most endorsed most_followed: Most followed - most_voted: Most supported + most_voted: Most voted random: Random recent: Recent with_more_authors: With more authors @@ -854,37 +854,37 @@ en: proposal_accepted_reason: 'This proposal has been accepted because:' proposal_in_evaluation_reason: This proposal is being evaluated proposal_rejected_reason: 'This proposal has been rejected because:' - withdraw_btn_hint: You can withdraw your proposal if you change your mind, as long as you have not received any support. The proposal is not deleted, it will appear in the list of withdrawn proposals. + withdraw_btn_hint: You can withdraw your proposal if you change your mind, as long as you have not received any vote. The proposal is not deleted, it will appear in the list of withdrawn proposals. withdraw_confirmation_html: Are you sure you want to withdraw this proposal?

    This action cannot be cancelled! withdraw_proposal: Withdraw proposal update: title: Update proposal vote_button: - already_voted: Already supported - already_voted_hover: Withdraw support - maximum_votes_reached: Support limit reached - no_votes_remaining: No supports remaining - vote: Support - votes_blocked: Supports disabled + already_voted: Already voted + already_voted_hover: Withdraw vote + maximum_votes_reached: Vote limit reached + no_votes_remaining: No votes remaining + vote: Vote + votes_blocked: Voting disabled votes_count: count: - one: Support - other: Supports + one: Vote + other: Votes voting_rules: - can_accumulate_supports_beyond_threshold: - description: Each proposal can accumulate more than %{limit} supports + can_accumulate_votes_beyond_threshold: + description: Each proposal can accumulate more than %{limit} votes minimum_votes_per_user: - description: You must distribute a minimum of %{votes} supports among different proposals. - given_enough_votes: You have given enough supports. - supports_remaining: You have to support %{remaining_votes} more proposals for your supports to be taken into account. + description: You must distribute a minimum of %{votes} votes among different proposals. + given_enough_votes: You have given enough votes. + votes_remaining: You have to vote %{remaining_votes} more proposals for your votes to be taken into account. proposal_limit: description: You can create up to %{limit} proposals. threshold_per_proposal: - description: In order to be validated proposals need to reach %{limit} supports. - title: 'Supports are subject to the following rules:' + description: In order to be validated proposals need to reach %{limit} votes. + title: 'Votes are subject to the following rules:' vote_limit: - description: You can support up to %{limit} proposals. - votes: Remaining %{number} supports + description: You can vote up to %{limit} proposals. + votes: Remaining %{number} votes wizard_aside: back: Back back_from_step_1: Back to proposals @@ -913,7 +913,7 @@ en: title: Versions withdraw: errors: - has_supports: This proposal cannot be withdrawn because it already has supports. + has_votes: This proposal cannot be withdrawn because it already has votes. resource_links: copied_from_component: proposal_proposal: Related proposals @@ -925,4 +925,4 @@ en: statistics: proposals_accepted: Accepted Proposals proposals_count: Proposals - supports_count: Supports + votes_count: Votes diff --git a/decidim-proposals/lib/decidim/proposals/component.rb b/decidim-proposals/lib/decidim/proposals/component.rb index 5c749b01da72c..05eb845f567ae 100644 --- a/decidim-proposals/lib/decidim/proposals/component.rb +++ b/decidim-proposals/lib/decidim/proposals/component.rb @@ -40,7 +40,7 @@ settings.attribute :proposal_edit_time, type: :enum, default: "limited", choices: -> { %w(limited infinite) } settings.attribute :proposal_edit_before_minutes, type: :integer, default: 5, required: true settings.attribute :threshold_per_proposal, type: :integer, default: 0, required: true - settings.attribute :can_accumulate_supports_beyond_threshold, type: :boolean, default: false + settings.attribute :can_accumulate_votes_beyond_threshold, type: :boolean, default: false settings.attribute :proposal_answering_enabled, type: :boolean, default: true settings.attribute :default_sort_order, type: :select, default: "default", choices: -> { POSSIBLE_SORT_ORDERS } settings.attribute :official_proposals_enabled, type: :boolean, default: true @@ -111,7 +111,7 @@ Decidim::Proposals::FilteredProposals.for(components, start_at, end_at).accepted.not_hidden.count end - component.register_stat :supports_count, priority: Decidim::StatsRegistry::HIGH_PRIORITY do |components, start_at, end_at| + component.register_stat :votes_count, priority: Decidim::StatsRegistry::HIGH_PRIORITY do |components, start_at, end_at| proposals = Decidim::Proposals::FilteredProposals.for(components, start_at, end_at).published.not_hidden Decidim::Proposals::ProposalVote.where(proposal: proposals).count end diff --git a/decidim-proposals/lib/decidim/proposals/proposal_serializer.rb b/decidim-proposals/lib/decidim/proposals/proposal_serializer.rb index fa7f40fb0c8a3..66da841ee2dfb 100644 --- a/decidim-proposals/lib/decidim/proposals/proposal_serializer.rb +++ b/decidim-proposals/lib/decidim/proposals/proposal_serializer.rb @@ -44,7 +44,7 @@ def serialize reference: proposal.reference, answer: ensure_translatable(proposal.answer), answered_at: proposal.answered_at, - supports: proposal.proposal_votes_count, + votes: proposal.proposal_votes_count, endorsements: { total_count: proposal.endorsements.size, user_endorsements: diff --git a/decidim-proposals/lib/decidim/proposals/test/factories.rb b/decidim-proposals/lib/decidim/proposals/test/factories.rb index 3c8a84bd2b97b..d50b4b27acbb3 100644 --- a/decidim-proposals/lib/decidim/proposals/test/factories.rb +++ b/decidim-proposals/lib/decidim/proposals/test/factories.rb @@ -163,10 +163,10 @@ def generate_state_title(token, skip_injection: false) end end - trait :with_can_accumulate_supports_beyond_threshold do + trait :with_can_accumulate_votes_beyond_threshold do settings do { - can_accumulate_supports_beyond_threshold: true + can_accumulate_votes_beyond_threshold: true } end end diff --git a/decidim-proposals/spec/commands/decidim/proposals/vote_proposal_spec.rb b/decidim-proposals/spec/commands/decidim/proposals/vote_proposal_spec.rb index 7756b153c7275..6a25b8a70b7b9 100644 --- a/decidim-proposals/spec/commands/decidim/proposals/vote_proposal_spec.rb +++ b/decidim-proposals/spec/commands/decidim/proposals/vote_proposal_spec.rb @@ -53,7 +53,7 @@ module Proposals context "when the threshold have been reached but proposal can accumulate more votes" do before do allow(proposal).to receive(:maximum_votes_reached?).and_return(true) - allow(proposal).to receive(:can_accumulate_supports_beyond_threshold).and_return(true) + allow(proposal).to receive(:can_accumulate_votes_beyond_threshold).and_return(true) end it "creates a new vote for the proposal" do diff --git a/decidim-proposals/spec/commands/decidim/proposals/withdraw_proposal_spec.rb b/decidim-proposals/spec/commands/decidim/proposals/withdraw_proposal_spec.rb index b75b9ba64ec03..fbdddd3a1a5b9 100644 --- a/decidim-proposals/spec/commands/decidim/proposals/withdraw_proposal_spec.rb +++ b/decidim-proposals/spec/commands/decidim/proposals/withdraw_proposal_spec.rb @@ -15,7 +15,7 @@ module Proposals let(:current_user) { proposal.creator_author } let(:command) { described_class.new(proposal, current_user) } - context "and the proposal has no supports" do + context "and the proposal has no votes" do it "withdraws the proposal" do expect do expect { command.call }.to broadcast(:ok) @@ -25,14 +25,14 @@ module Proposals end end - context "and the proposal HAS some supports" do + context "and the proposal HAS some votes" do before do proposal.votes.create!(author: current_user) end it "is not able to withdraw the proposal" do expect do - expect { command.call }.to broadcast(:has_supports) + expect { command.call }.to broadcast(:has_votes) end.not_to change(Decidim::Proposals::Proposal, :count) expect(proposal).not_to be_withdrawn expect(proposal.withdrawn_at).not_to be_present diff --git a/decidim-proposals/spec/controllers/decidim/proposals/proposals_controller_spec.rb b/decidim-proposals/spec/controllers/decidim/proposals/proposals_controller_spec.rb index b6d1f49dc7387..2d04045a4401e 100644 --- a/decidim-proposals/spec/controllers/decidim/proposals/proposals_controller_spec.rb +++ b/decidim-proposals/spec/controllers/decidim/proposals/proposals_controller_spec.rb @@ -242,13 +242,13 @@ module Proposals expect(proposal).to be_withdrawn end - context "and the proposal already has supports" do + context "and the proposal already has votes" do let(:proposal) { create(:proposal, :with_votes, component:, users: [user]) } it "is not able to withdraw the proposal" do put :withdraw, params: params.merge(id: proposal.id) - expect(flash[:alert]).to eq("This proposal cannot be withdrawn because it already has supports.") + expect(flash[:alert]).to eq("This proposal cannot be withdrawn because it already has votes.") expect(response).to have_http_status(:found) proposal.reload expect(proposal).not_to be_withdrawn @@ -260,7 +260,7 @@ module Proposals let(:current_user) { create(:user, :confirmed, organization: component.organization) } let(:proposal) { create(:proposal, component:, users: [current_user]) } - context "and the proposal has no supports" do + context "and the proposal has no votes" do it "is not able to withdraw the proposal" do expect(WithdrawProposal).not_to receive(:call) diff --git a/decidim-proposals/spec/events/decidim/proposals/voting_enabled_event_spec.rb b/decidim-proposals/spec/events/decidim/proposals/voting_enabled_event_spec.rb index 8684308b6ee80..fc6bb2f08ebd6 100644 --- a/decidim-proposals/spec/events/decidim/proposals/voting_enabled_event_spec.rb +++ b/decidim-proposals/spec/events/decidim/proposals/voting_enabled_event_spec.rb @@ -10,10 +10,10 @@ module Proposals include_context "when a simple event" let(:event_name) { "decidim.events.proposals.voting_enabled" } - let(:email_subject) { "Proposal support has started for #{participatory_space_title}" } - let(:email_intro) { "You can support proposals in #{participatory_space_title}! Start participating in this page:" } + let(:email_subject) { "Proposal voting has started for #{participatory_space_title}" } + let(:email_intro) { "You can vote proposals in #{participatory_space_title}! Start participating in this page:" } let(:email_outro) { "You have received this notification because you are following #{participatory_space_title}. You can stop receiving notifications following the previous link." } - let(:notification_title) { "You can now start supporting proposals in #{participatory_space_title}" } + let(:notification_title) { "You can now start voting proposals in #{participatory_space_title}" } let(:resource) { create(:proposal_component) } let(:participatory_space) { resource.participatory_space } let(:resource_path) { main_component_path(resource) } diff --git a/decidim-proposals/spec/lib/decidim/proposals/component_spec.rb b/decidim-proposals/spec/lib/decidim/proposals/component_spec.rb index 3660e457e1b93..937d99f74db49 100644 --- a/decidim-proposals/spec/lib/decidim/proposals/component_spec.rb +++ b/decidim-proposals/spec/lib/decidim/proposals/component_spec.rb @@ -76,8 +76,8 @@ end end - describe "supports_count" do - let(:stats_name) { :supports_count } + describe "votes_count" do + let(:stats_name) { :votes_count } before do create_list(:proposal_vote, 2, proposal:) @@ -137,11 +137,11 @@ it_behaves_like "has mandatory config setting", :proposal_limit end - context "when support limit per participant is empty" do + context "when vote limit per participant is empty" do it_behaves_like "has mandatory config setting", :vote_limit end - context "when minimum supports per user is empty" do + context "when minimum votes per user is empty" do it_behaves_like "has mandatory config setting", :minimum_votes_per_user end diff --git a/decidim-proposals/spec/services/decidim/proposals/proposal_serializer_spec.rb b/decidim-proposals/spec/services/decidim/proposals/proposal_serializer_spec.rb index 82d05868b5a24..2fcd2954efc67 100644 --- a/decidim-proposals/spec/services/decidim/proposals/proposal_serializer_spec.rb +++ b/decidim-proposals/spec/services/decidim/proposals/proposal_serializer_spec.rb @@ -157,8 +157,8 @@ module Proposals expect(serialized).to include(longitude: proposal.longitude) end - it "serializes the amount of supports" do - expect(serialized).to include(supports: proposal.proposal_votes_count) + it "serializes the amount of votes" do + expect(serialized).to include(votes: proposal.proposal_votes_count) end it "serializes the amount of comments" do diff --git a/decidim-proposals/spec/shared/merge_proposals_examples.rb b/decidim-proposals/spec/shared/merge_proposals_examples.rb index e3969101b150d..d8885733a1c1e 100644 --- a/decidim-proposals/spec/shared/merge_proposals_examples.rb +++ b/decidim-proposals/spec/shared/merge_proposals_examples.rb @@ -75,7 +75,7 @@ expect(page).to have_css(".table-list tbody tr", count: 3) expect(page).to have_content("There has been a problem merging the selected proposals") expect(page).to have_content("Are not official") - expect(page).to have_content("Have received support or endorsements") + expect(page).to have_content("Have received votes or endorsements") end end diff --git a/decidim-proposals/spec/shared/split_proposals_examples.rb b/decidim-proposals/spec/shared/split_proposals_examples.rb index 0ef043a751bbb..9591d65cc3046 100644 --- a/decidim-proposals/spec/shared/split_proposals_examples.rb +++ b/decidim-proposals/spec/shared/split_proposals_examples.rb @@ -60,7 +60,7 @@ it "does not create a new proposal and displays a validation fail message" do expect(page).to have_content("There has been a problem splitting the selected proposals") expect(page).to have_content("Are not official") - expect(page).to have_content("Have received support or endorsements") + expect(page).to have_content("Have received votes or endorsements") end end end diff --git a/decidim-proposals/spec/system/admin/view_proposal_details_from_admin_spec.rb b/decidim-proposals/spec/system/admin/view_proposal_details_from_admin_spec.rb index 2b9177f0cfab9..ee86dd2098019 100644 --- a/decidim-proposals/spec/system/admin/view_proposal_details_from_admin_spec.rb +++ b/decidim-proposals/spec/system/admin/view_proposal_details_from_admin_spec.rb @@ -92,23 +92,23 @@ end end - describe "with supports" do + describe "with votes" do before do create_list(:proposal_vote, 2, proposal:) end - it "shows the number of supports" do + it "shows the number of votes" do go_to_admin_proposal_page(proposal) - expect(page).to have_css("[data-supports] [data-count]", text: "2") + expect(page).to have_css("[data-votes] [data-count]", text: "2") end - it "shows the ranking by supports" do + it "shows the ranking by votes" do another_proposal = create(:proposal, component:) create(:proposal_vote, proposal: another_proposal) go_to_admin_proposal_page(proposal) - expect(page).to have_css("[data-supports] [data-ranking]", text: "1 of ") + expect(page).to have_css("[data-votes] [data-ranking]", text: "1 of ") end end diff --git a/decidim-proposals/spec/system/filter_proposals_spec.rb b/decidim-proposals/spec/system/filter_proposals_spec.rb index bcc1daf8bcd86..24e8a2cd8b7e9 100644 --- a/decidim-proposals/spec/system/filter_proposals_spec.rb +++ b/decidim-proposals/spec/system/filter_proposals_spec.rb @@ -463,9 +463,9 @@ visit_component end - it "can be filtered by supported" do + it "can be filtered by voted" do within "form.new_filter" do - expect(page).to have_content(/Supported/i) + expect(page).to have_content(/Voted/i) end end @@ -484,9 +484,9 @@ visit_component end - it "cannot be filtered by supported" do + it "cannot be filtered by voted" do within "form.new_filter" do - expect(page).to have_no_content(/Supported/i) + expect(page).to have_no_content(/Voted/i) end end end diff --git a/decidim-proposals/spec/system/proposals_spec.rb b/decidim-proposals/spec/system/proposals_spec.rb index bed24c1413ab0..bdc13915dbc5d 100644 --- a/decidim-proposals/spec/system/proposals_spec.rb +++ b/decidim-proposals/spec/system/proposals_spec.rb @@ -469,7 +469,7 @@ before { visit_component } it "lists the proposals ordered by votes by default" do - expect(page).to have_css("a", text: "Most supported") + expect(page).to have_css("a", text: "Most voted") expect(page).to have_css("[id^='proposals__proposal']:first-child", text: most_voted_proposal_title) expect(page).to have_css("[id^='proposals__proposal']:last-child", text: less_voted_proposal_title) end @@ -544,7 +544,7 @@ let!(:votes) { create_list(:proposal_vote, 3, proposal: most_voted_proposal) } let!(:less_voted_proposal) { create(:proposal, component:) } - it_behaves_like "ordering proposals by selected option", "Most supported" do + it_behaves_like "ordering proposals by selected option", "Most voted" do let(:first_proposal) { most_voted_proposal } let(:last_proposal) { less_voted_proposal } end diff --git a/decidim-proposals/spec/system/vote_proposal_spec.rb b/decidim-proposals/spec/system/vote_proposal_spec.rb index f513b1c25a673..79d32805b3ca9 100644 --- a/decidim-proposals/spec/system/vote_proposal_spec.rb +++ b/decidim-proposals/spec/system/vote_proposal_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe "Support Proposal", slow: true do +describe "Vote Proposal", slow: true do include_context "with a component" let(:manifest_name) { "proposals" } @@ -13,8 +13,8 @@ let!(:user) { create(:user, :confirmed, organization:) } def expect_page_not_to_include_votes - expect(page).to have_no_button("Support") - expect(page).to have_no_css(".progress-bar__container .progress-bar__number span", text: "0\nSupports") + expect(page).to have_no_button("Vote") + expect(page).to have_no_css(".progress-bar__container .progress-bar__number span", text: "0\nVotes") end context "when votes are not enabled" do @@ -71,7 +71,7 @@ def expect_page_not_to_include_votes click_on proposal_title within ".proposal__aside-vote" do - click_on "Support" + click_on "Vote" end expect(page).to have_css("#loginModal", visible: :visible) @@ -91,12 +91,12 @@ def expect_page_not_to_include_votes it "is able to vote the proposal" do within "#proposal-#{proposal.id}-vote-button" do - click_on "Support" - expect(page).to have_button("Already supported") + click_on "Vote" + expect(page).to have_button("Already voted") end within "#proposal-#{proposal.id}-votes-count" do - expect(page).to have_content("1\nSupport") + expect(page).to have_content("1\nVote") end end end @@ -110,23 +110,23 @@ def expect_page_not_to_include_votes it "is not able to vote it again" do within "#proposal-#{proposal.id}-vote-button" do - expect(page).to have_button("Already supported") - expect(page).to have_no_button("Support") + expect(page).to have_button("Already voted") + expect(page).to have_no_button("Vote") end within "#proposal-#{proposal.id}-votes-count" do - expect(page).to have_content("1\nSupport") + expect(page).to have_content("1\nVote") end end it "is able to undo the vote" do within "#proposal-#{proposal.id}-vote-button" do - click_on "Already supported" - expect(page).to have_button("Support") + click_on "Already voted" + expect(page).to have_button("Vote") end within "#proposal-#{proposal.id}-votes-count" do - expect(page).to have_content("0\nSupports") + expect(page).to have_content("0\nVotes") end end end @@ -225,11 +225,11 @@ def expect_page_not_to_include_votes it "updates the remaining votes counter" do within ".proposal__aside-vote" do - click_on "Support" - expect(page).to have_button("Already supported") + click_on "Vote" + expect(page).to have_button("Already voted") end - expect(page).to have_content("Remaining 9 supports") + expect(page).to have_content("Remaining 9 votes") end end @@ -250,7 +250,7 @@ def expect_page_not_to_include_votes it "shows a modal dialog" do within "#proposal-#{proposal.id}-vote-button" do - click_on "Support" + click_on "Vote" end expect(page).to have_content("Authorization required") @@ -266,22 +266,22 @@ def expect_page_not_to_include_votes it "is not able to vote it again" do within "#proposal-#{proposal.id}-vote-button" do - expect(page).to have_button("Already supported") - expect(page).to have_no_button("Support") + expect(page).to have_button("Already voted") + expect(page).to have_no_button("Vote") end end it "is able to undo the vote" do within ".proposal__aside-vote" do - click_on "Already supported" - expect(page).to have_button("Support") + click_on "Already voted" + expect(page).to have_button("Vote") end within "#proposal-#{proposal.id}-votes-count" do - expect(page).to have_content("0\nSupports") + expect(page).to have_content("0\nVotes") end - expect(page).to have_content("Remaining 10 supports") + expect(page).to have_content("Remaining 10 votes") end end @@ -296,14 +296,14 @@ def expect_page_not_to_include_votes it "is not able to vote other proposals" do click_on proposal_title within ".proposal__aside-vote" do - expect(page).to have_content("1\nSupport") + expect(page).to have_content("1\nVote") end other_proposals_titles.each do |title| visit_component click_on title within ".proposal__aside-vote" do - expect(page).to have_content("No supports remaining") + expect(page).to have_content("No votes remaining") expect(page).to have_css(".button[disabled]") end end @@ -320,14 +320,14 @@ def expect_page_not_to_include_votes it "shows the vote count but not the vote button" do click_on proposal_title within ".proposal__aside-vote" do - expect(page).to have_content("1\nSupport") + expect(page).to have_content("1\nVote") end other_proposals_titles.each do |title| visit_component click_on title within ".proposal__aside-vote" do - expect(page).to have_content("Supports disabled") + expect(page).to have_content("Voting disabled") expect(page).to have_css(".button[disabled]") end end @@ -380,7 +380,7 @@ def expect_page_not_to_include_votes click_on proposal_title within "#proposal-#{proposal.id}-vote-button" do - expect(page).to have_content("Support limit reached") + expect(page).to have_content("Vote limit reached") end end @@ -389,8 +389,8 @@ def expect_page_not_to_include_votes click_on proposal_title within ".proposal__aside-vote" do - click_on "Support" - expect(page).to have_content("Already supported") + click_on "Vote" + expect(page).to have_content("Already voted") end end end @@ -400,7 +400,7 @@ def expect_page_not_to_include_votes create(:proposal_component, :with_votes_enabled, :with_threshold_per_proposal, - :with_can_accumulate_supports_beyond_threshold, + :with_can_accumulate_votes_beyond_threshold, manifest:, participatory_space: participatory_process) end @@ -415,7 +415,7 @@ def expect_page_not_to_include_votes click_on proposal_title within ".proposal__aside-vote" do - expect(page).to have_content("1\nSupport") + expect(page).to have_content("1\nVote") end end end @@ -444,37 +444,37 @@ def expect_page_not_to_include_votes click_on proposal_titles[0] within ".proposal__aside-vote" do - click_on "Support" - expect(page).to have_content("Already supported") - expect(page).to have_content("0\nSupports") + click_on "Vote" + expect(page).to have_content("Already voted") + expect(page).to have_content("0\nVotes") end visit_component click_on proposal_titles[1] within ".proposal__aside-vote" do - click_on "Support" - expect(page).to have_content("Already supported") - expect(page).to have_content("0\nSupports") + click_on "Vote" + expect(page).to have_content("Already voted") + expect(page).to have_content("0\nVotes") end visit_component click_on proposal_titles[2] within ".proposal__aside-vote" do - click_on "Support" - expect(page).to have_content("Already supported") - expect(page).to have_content("1\nSupport") + click_on "Vote" + expect(page).to have_content("Already voted") + expect(page).to have_content("1\nVote") end visit_component click_on proposal_titles[0] within ".proposal__aside-vote" do - expect(page).to have_content("1\nSupport") + expect(page).to have_content("1\nVote") end visit_component click_on proposal_titles[1] within ".proposal__aside-vote" do - expect(page).to have_content("1\nSupport") + expect(page).to have_content("1\nVote") end end end @@ -490,8 +490,8 @@ def expect_page_not_to_include_votes expect do within ".proposal__aside-vote" do - click_on "Support" - expect(page).to have_content("1\nSupport") + click_on "Vote" + expect(page).to have_content("1\nVote") end end.to change { Decidim::Gamification.status_for(user, :proposal_votes).score }.by(1) end diff --git a/decidim-verifications/README.md b/decidim-verifications/README.md index 0bffc455f4637..92b1d782f9944 100644 --- a/decidim-verifications/README.md +++ b/decidim-verifications/README.md @@ -186,7 +186,7 @@ set in the admin zone related to a component action. As a result, a verification method will be allowed to change the authorization logic and the appearance based on the context where the authorization is being performed. -For example, you can require authorization for supporting proposals in a participatory +For example, you can require authorization for voting proposals in a participatory process, and also restrict it to users with postal codes 12345 and 12346. The [example authorization handler](https://github.com/decidim/decidim/blob/develop/decidim-generators/lib/decidim/generators/app_templates/dummy_authorization_handler.rb) included in this module allows to do that. As an admin user, you should visit