Add remote interaction dialog for toots (#8202)
* Add remote interaction dialog for toots * Change AuthorizeFollow into AuthorizeInteraction, support statuses * Update brakeman.ignore * Adjust how interaction buttons are display on public pages * Fix tests
This commit is contained in:
parent
bf1bde5d6a
commit
78fa926ed5
27 changed files with 347 additions and 195 deletions
|
@ -1,17 +0,0 @@
|
|||
- content_for :page_title do
|
||||
= t('authorize_follow.title', acct: @account.acct)
|
||||
|
||||
.form-container
|
||||
.follow-prompt
|
||||
= render 'application/card', account: @account
|
||||
|
||||
- if current_account.following?(@account)
|
||||
.flash-message
|
||||
%strong
|
||||
= t('authorize_follow.already_following')
|
||||
= render 'post_follow_actions'
|
||||
|
||||
- else
|
||||
= form_tag authorize_follow_path, method: :post, class: 'simple_form' do
|
||||
= hidden_field_tag :acct, @account.acct
|
||||
= button_tag t('authorize_follow.follow'), type: :submit
|
|
@ -1,4 +1,4 @@
|
|||
.post-follow-actions
|
||||
%div= link_to t('authorize_follow.post_follow.web'), web_url("accounts/#{@account.id}"), class: 'button button--block'
|
||||
%div= link_to t('authorize_follow.post_follow.return'), TagManager.instance.url_for(@account), class: 'button button--block'
|
||||
%div= link_to t('authorize_follow.post_follow.web'), web_url("accounts/#{@resource.id}"), class: 'button button--block'
|
||||
%div= link_to t('authorize_follow.post_follow.return'), TagManager.instance.url_for(@resource), class: 'button button--block'
|
||||
%div= t('authorize_follow.post_follow.close')
|
18
app/views/authorize_interactions/show.html.haml
Normal file
18
app/views/authorize_interactions/show.html.haml
Normal file
|
@ -0,0 +1,18 @@
|
|||
- content_for :page_title do
|
||||
= t('authorize_follow.title', acct: @resource.acct)
|
||||
|
||||
.form-container
|
||||
.follow-prompt
|
||||
= render 'application/card', account: @resource
|
||||
|
||||
- if current_account.following?(@resource)
|
||||
.flash-message
|
||||
%strong
|
||||
= t('authorize_follow.already_following')
|
||||
|
||||
= render 'post_follow_actions'
|
||||
- else
|
||||
= form_tag authorize_interaction_path, method: :post, class: 'simple_form' do
|
||||
= hidden_field_tag :action, :follow
|
||||
= hidden_field_tag :acct, @resource.acct
|
||||
= button_tag t('authorize_follow.follow'), type: :submit
|
|
@ -1,13 +1,13 @@
|
|||
- content_for :page_title do
|
||||
= t('authorize_follow.title', acct: @account.acct)
|
||||
= t('authorize_follow.title', acct: @resource.acct)
|
||||
|
||||
.form-container
|
||||
.follow-prompt
|
||||
- if @account.locked?
|
||||
- if @resource.locked?
|
||||
%h2= t('authorize_follow.follow_request')
|
||||
- else
|
||||
%h2= t('authorize_follow.following')
|
||||
|
||||
= render 'application/card', account: @account
|
||||
= render 'application/card', account: @resource
|
||||
|
||||
= render 'post_follow_actions'
|
|
@ -2,7 +2,7 @@
|
|||
= javascript_pack_tag 'public', integrity: true, crossorigin: 'anonymous'
|
||||
|
||||
- content_for :content do
|
||||
- if user_signed_in?
|
||||
- if user_signed_in? && !@hide_header
|
||||
.account-header
|
||||
.avatar= image_tag current_account.avatar.url(:original)
|
||||
.name
|
||||
|
|
17
app/views/remote_interaction/new.html.haml
Normal file
17
app/views/remote_interaction/new.html.haml
Normal file
|
@ -0,0 +1,17 @@
|
|||
.form-container
|
||||
.follow-prompt
|
||||
%h2= t('remote_interaction.prompt')
|
||||
|
||||
.public-layout
|
||||
.activity-stream.activity-stream--highlighted
|
||||
= render 'stream_entries/status', status: @status
|
||||
|
||||
= simple_form_for @remote_follow, as: :remote_follow, url: remote_interaction_path(@status) do |f|
|
||||
= render 'shared/error_messages', object: @remote_follow
|
||||
|
||||
= f.input :acct, placeholder: t('remote_follow.acct'), input_html: { autocapitalize: 'none', autocorrect: 'off' }
|
||||
|
||||
.actions
|
||||
= f.button :button, t('remote_interaction.proceed'), type: :submit
|
||||
|
||||
%p.hint.subtle-hint= t('remote_follow.no_account_html', sign_up_path: open_registrations? ? new_user_registration_path : 'https://joinmastodon.org/#getting-started')
|
|
@ -39,6 +39,11 @@
|
|||
- else
|
||||
= link_to status.application.name, status.application.website, class: 'detailed-status__application', target: '_blank', rel: 'noopener'
|
||||
·
|
||||
= link_to remote_interaction_path(status), class: 'modal-button detailed-status__link' do
|
||||
= fa_icon('reply')
|
||||
%span.detailed-status__reblogs>= number_to_human status.replies_count, strip_insignificant_zeros: true
|
||||
= " "
|
||||
·
|
||||
- if status.direct_visibility?
|
||||
%span.detailed-status__link<
|
||||
= fa_icon('envelope')
|
||||
|
@ -46,13 +51,15 @@
|
|||
%span.detailed-status__link<
|
||||
= fa_icon('lock')
|
||||
- else
|
||||
%span.detailed-status__link<
|
||||
= link_to remote_interaction_path(status), class: 'modal-button detailed-status__link' do
|
||||
= fa_icon('retweet')
|
||||
%span.detailed-status__reblogs= number_to_human status.reblogs_count, strip_insignificant_zeros: true
|
||||
%span.detailed-status__reblogs>= number_to_human status.reblogs_count, strip_insignificant_zeros: true
|
||||
= " "
|
||||
·
|
||||
%span.detailed-status__link<
|
||||
= link_to remote_interaction_path(status), class: 'modal-button detailed-status__link' do
|
||||
= fa_icon('star')
|
||||
%span.detailed-status__favorites= number_to_human status.favourites_count, strip_insignificant_zeros: true
|
||||
%span.detailed-status__favorites>= number_to_human status.favourites_count, strip_insignificant_zeros: true
|
||||
= " "
|
||||
|
||||
- if user_signed_in?
|
||||
·
|
||||
|
|
|
@ -29,14 +29,16 @@
|
|||
= react_component :media_gallery, height: 343, sensitive: status.sensitive? && !current_account&.user&.setting_display_sensitive_media, 'autoPlayGif': current_account&.user&.setting_auto_play_gif, media: status.media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json }
|
||||
|
||||
.status__action-bar
|
||||
.status__action-bar-button.static-icon-button<
|
||||
.status__action-bar__counter
|
||||
= link_to remote_interaction_path(status), class: 'status__action-bar-button icon-button modal-button', style: 'font-size: 18px; width: 23.1429px; height: 23.1429px; line-height: 23.15px;' do
|
||||
= fa_icon 'reply fw'
|
||||
.status__action-bar__counter__label= obscured_counter status.replies_count
|
||||
= link_to remote_interaction_path(status), class: 'status__action-bar-button icon-button modal-button', style: 'font-size: 18px; width: 23.1429px; height: 23.1429px; line-height: 23.15px;' do
|
||||
- if status.public_visibility? || status.unlisted_visibility?
|
||||
= fa_icon 'retweet fw'
|
||||
%span.detailed-status__reblogs= number_to_human status.reblogs_count, strip_insignificant_zeros: true
|
||||
- elsif status.private_visibility?
|
||||
= fa_icon 'lock fw'
|
||||
- else
|
||||
= fa_icon 'envelope fw'
|
||||
.status__action-bar-button.static-icon-button<
|
||||
= link_to remote_interaction_path(status), class: 'status__action-bar-button icon-button modal-button', style: 'font-size: 18px; width: 23.1429px; height: 23.1429px; line-height: 23.15px;' do
|
||||
= fa_icon 'star fw'
|
||||
%span.detailed-status__favorites= number_to_human status.favourites_count, strip_insignificant_zeros: true
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
.grid
|
||||
.column-0
|
||||
.activity-stream.activity-stream-headless.h-entry
|
||||
.activity-stream.h-entry
|
||||
= render partial: "stream_entries/#{@type}", locals: { @type.to_sym => @stream_entry.activity, include_threads: true }
|
||||
.column-1
|
||||
= render 'application/sidebar'
|
||||
|
|
|
@ -37,7 +37,7 @@ doc << Ox::Element.new('XRD').tap do |xrd|
|
|||
|
||||
xrd << Ox::Element.new('Link').tap do |link|
|
||||
link['rel'] = 'http://ostatus.org/schema/1.0/subscribe'
|
||||
link['template'] = "#{authorize_follow_url}?acct={uri}"
|
||||
link['template'] = "#{authorize_interaction_url}?acct={uri}"
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue