forked from fedi/mastodon
Add non-JS fallback for polls on public pages (#10155)
This commit is contained in:
parent
4ced609497
commit
3de71887d8
|
@ -23,7 +23,8 @@
|
|||
.e-content{ lang: status.language, style: "display: #{!current_account&.user&.setting_expand_spoilers && status.spoiler_text? ? 'none' : 'block'}; direction: #{rtl_status?(status) ? 'rtl' : 'ltr'}" }= Formatter.instance.format(status, custom_emojify: true, autoplay: autoplay)
|
||||
|
||||
- if status.poll
|
||||
= react_component :poll, disabled: true, poll: ActiveModelSerializers::SerializableResource.new(status.poll, serializer: REST::PollSerializer, scope: current_user, scope_name: :current_user).as_json
|
||||
= react_component :poll, disabled: true, poll: ActiveModelSerializers::SerializableResource.new(status.poll, serializer: REST::PollSerializer, scope: current_user, scope_name: :current_user).as_json do
|
||||
= render partial: 'stream_entries/poll', locals: { poll: status.poll }
|
||||
- elsif !status.media_attachments.empty?
|
||||
- if status.media_attachments.first.video?
|
||||
- video = status.media_attachments.first
|
||||
|
|
25
app/views/stream_entries/_poll.html.haml
Normal file
25
app/views/stream_entries/_poll.html.haml
Normal file
|
@ -0,0 +1,25 @@
|
|||
- options = (!poll.expired? && poll.hide_totals?) ? poll.unloaded_options : poll.loaded_options
|
||||
- voted = poll.votes.where(account: current_user.account).exists?
|
||||
- show_results = voted || poll.expired?
|
||||
|
||||
.poll
|
||||
%ul
|
||||
- options.each do |option|
|
||||
%li
|
||||
- if show_results
|
||||
- percent = 100 * option.votes_count / poll.votes_count
|
||||
%span.poll__chart{ style: "width: #{percent}%" }
|
||||
%label.poll__text><
|
||||
%span.poll__number= percent
|
||||
= option.title
|
||||
- else
|
||||
%label.poll__text><
|
||||
%span.poll__input{ class: poll.multiple ? 'checkbox' : nil}><
|
||||
= option.title
|
||||
.poll__footer
|
||||
- unless show_results
|
||||
%button.button.button-secondary{ disabled: true }
|
||||
= t('statuses.poll.vote')
|
||||
%span= t('statuses.poll.total_votes', count: poll.votes_count)
|
||||
·
|
||||
%span= poll.expires_at
|
|
@ -27,7 +27,8 @@
|
|||
.e-content{ lang: status.language, style: "display: #{!current_account&.user&.setting_expand_spoilers && status.spoiler_text? ? 'none' : 'block'}; direction: #{rtl_status?(status) ? 'rtl' : 'ltr'}" }= Formatter.instance.format(status, custom_emojify: true, autoplay: autoplay)
|
||||
|
||||
- if status.poll
|
||||
= react_component :poll, disabled: true, poll: ActiveModelSerializers::SerializableResource.new(status.poll, serializer: REST::PollSerializer, scope: current_user, scope_name: :current_user).as_json
|
||||
= react_component :poll, disabled: true, poll: ActiveModelSerializers::SerializableResource.new(status.poll, serializer: REST::PollSerializer, scope: current_user, scope_name: :current_user).as_json do
|
||||
= render partial: 'stream_entries/poll', locals: { poll: status.poll }
|
||||
- elsif !status.media_attachments.empty?
|
||||
- if status.media_attachments.first.video?
|
||||
- video = status.media_attachments.first
|
||||
|
|
|
@ -853,6 +853,11 @@ en:
|
|||
ownership: Someone else's toot cannot be pinned
|
||||
private: Non-public toot cannot be pinned
|
||||
reblog: A boost cannot be pinned
|
||||
poll:
|
||||
total_votes:
|
||||
one: "%{count} vote"
|
||||
other: "%{count} votes"
|
||||
vote: Vote
|
||||
show_more: Show more
|
||||
sign_in_to_participate: Sign in to participate in the conversation
|
||||
title: '%{name}: "%{quote}"'
|
||||
|
|
Loading…
Reference in a new issue