From 36426ed4ad450320f4a4e598c41355a6d8faad66 Mon Sep 17 00:00:00 2001 From: Sasha Sorokin Date: Sat, 11 Jan 2020 08:14:45 +0700 Subject: Use heading actions and placeholders in settings (#12801) This commit: - Refactors centered text blocks currently used for placeholders for empty tables and puts styles for it in separate class - .centered-text, simply aliasing text-align: center. Which is furtherly used in this commit. - Improves applications settings page to use heading actions, moving "New application" button there, and displaying placeholder "You have no applications" in place of empty table. - Improves custom emoji settings page to use heading action for "Upload" button, making it more easily accessible without need to scroll through all of the emojis. - Improves email domain blocks settings page, moving "Add new" to the heading actions and using placeholder "No e-mail domains currently blacklisted" instead of showing empty table. --- config/locales/en.yml | 1 + 1 file changed, 1 insertion(+) (limited to 'config/locales/en.yml') diff --git a/config/locales/en.yml b/config/locales/en.yml index 6b52f4cad..660d0a4e1 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -339,6 +339,7 @@ en: delete: Delete destroyed_msg: Successfully deleted e-mail domain from blacklist domain: Domain + empty: No e-mail domains currenly blacklisted. new: create: Add domain title: New e-mail blacklist entry -- cgit From 5b9f01aec088ede54d82d8997be69af394c4eda3 Mon Sep 17 00:00:00 2001 From: koyu Date: Sat, 11 Jan 2020 03:32:25 +0100 Subject: Fix spelling mistake (#12817) --- config/locales/en.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'config/locales/en.yml') diff --git a/config/locales/en.yml b/config/locales/en.yml index 660d0a4e1..62f2226e3 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -339,7 +339,7 @@ en: delete: Delete destroyed_msg: Successfully deleted e-mail domain from blacklist domain: Domain - empty: No e-mail domains currenly blacklisted. + empty: No e-mail domains currently blacklisted. new: create: Add domain title: New e-mail blacklist entry -- cgit From d386d89179ccc2b86894a8639b658f4ede24c5f6 Mon Sep 17 00:00:00 2001 From: ThibG Date: Sun, 12 Jan 2020 14:17:03 +0100 Subject: Fix invalid votes from the API being accepted (#12601) * Fix invalid votes from the API being accepted Fixes #12556 - Ensure `choice` is an integer instead of silently converting to 0 - Ensure `choice` corresponds to an actual choice of the poll * Please CodeClimate --- app/services/vote_service.rb | 2 +- app/validators/vote_validator.rb | 8 ++++++++ config/locales/en.yml | 1 + 3 files changed, 10 insertions(+), 1 deletion(-) (limited to 'config/locales/en.yml') diff --git a/app/services/vote_service.rb b/app/services/vote_service.rb index cb7dce6e8..19e453332 100644 --- a/app/services/vote_service.rb +++ b/app/services/vote_service.rb @@ -20,7 +20,7 @@ class VoteService < BaseService ApplicationRecord.transaction do @choices.each do |choice| - @votes << @poll.votes.create!(account: @account, choice: choice) + @votes << @poll.votes.create!(account: @account, choice: Integer(choice)) end end else diff --git a/app/validators/vote_validator.rb b/app/validators/vote_validator.rb index 2e1818bdb..b1692562d 100644 --- a/app/validators/vote_validator.rb +++ b/app/validators/vote_validator.rb @@ -4,10 +4,18 @@ class VoteValidator < ActiveModel::Validator def validate(vote) vote.errors.add(:base, I18n.t('polls.errors.expired')) if vote.poll.expired? + vote.errors.add(:base, I18n.t('polls.errors.invalid_choice')) if invalid_choice?(vote) + if vote.poll.multiple? && vote.poll.votes.where(account: vote.account, choice: vote.choice).exists? vote.errors.add(:base, I18n.t('polls.errors.already_voted')) elsif !vote.poll.multiple? && vote.poll.votes.where(account: vote.account).exists? vote.errors.add(:base, I18n.t('polls.errors.already_voted')) end end + + private + + def invalid_choice?(vote) + vote.choice.negative? || vote.choice >= vote.poll.options.size + end end diff --git a/config/locales/en.yml b/config/locales/en.yml index 62f2226e3..d768cef33 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -922,6 +922,7 @@ en: duration_too_long: is too far into the future duration_too_short: is too soon expired: The poll has already ended + invalid_choice: The chosen vote option does not exist over_character_limit: cannot be longer than %{max} characters each too_few_options: must have more than one item too_many_options: can't contain more than %{max} items -- cgit