From 2092d5c0ad099e8f60eb001ee0cd647fc759aefc Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 1 Jul 2018 04:12:34 +0200 Subject: [PATCH] Improve embeds (#7919) * Make embeds cacheable by reverse proxy * Make follow button on embeds open remote follow modal Instead of web+mastodon://, also, turn the button blue, and add a sign up prompt to the remote follow modal --- app/controllers/remote_follow_controller.rb | 1 + app/controllers/statuses_controller.rb | 5 +++++ app/javascript/packs/public.js | 2 +- app/javascript/styles/mastodon/accounts.scss | 1 + app/javascript/styles/mastodon/stream_entries.scss | 13 +++++++++---- app/views/remote_follow/new.html.haml | 2 ++ app/views/stream_entries/_detailed_status.html.haml | 2 +- config/locales/en.yml | 1 + 8 files changed, 21 insertions(+), 6 deletions(-) diff --git a/app/controllers/remote_follow_controller.rb b/app/controllers/remote_follow_controller.rb index 3b988e08d8..cd61fd7639 100644 --- a/app/controllers/remote_follow_controller.rb +++ b/app/controllers/remote_follow_controller.rb @@ -5,6 +5,7 @@ class RemoteFollowController < ApplicationController before_action :set_account before_action :gone, if: :suspended_account? + before_action :set_body_classes def new @remote_follow = RemoteFollow.new(session_params) diff --git a/app/controllers/statuses_controller.rb b/app/controllers/statuses_controller.rb index 645995c2a0..b853418229 100644 --- a/app/controllers/statuses_controller.rb +++ b/app/controllers/statuses_controller.rb @@ -46,7 +46,12 @@ class StatusesController < ApplicationController end def embed + raise ActiveRecord::RecordNotFound if @status.hidden? + + skip_session! + expires_in 180, public: true response.headers['X-Frame-Options'] = 'ALLOWALL' + render 'stream_entries/embed', layout: 'embedded' end diff --git a/app/javascript/packs/public.js b/app/javascript/packs/public.js index d5e5b7fe00..cc2fed3f13 100644 --- a/app/javascript/packs/public.js +++ b/app/javascript/packs/public.js @@ -64,7 +64,7 @@ function main() { [].forEach.call(document.querySelectorAll('.logo-button'), (content) => { content.addEventListener('click', (e) => { e.preventDefault(); - window.open(e.target.href, 'mastodon-intent', 'width=400,height=400,resizable=no,menubar=no,status=no,scrollbars=yes'); + window.open(e.target.href, 'mastodon-intent', 'width=445,height=600,resizable=no,menubar=no,status=no,scrollbars=yes'); }); }); diff --git a/app/javascript/styles/mastodon/accounts.scss b/app/javascript/styles/mastodon/accounts.scss index 14dc5dd621..8033e64187 100644 --- a/app/javascript/styles/mastodon/accounts.scss +++ b/app/javascript/styles/mastodon/accounts.scss @@ -464,6 +464,7 @@ background: $simple-background-color; &__header { + background: $base-shadow-color; background-size: cover; background-position: center center; height: 90px; diff --git a/app/javascript/styles/mastodon/stream_entries.scss b/app/javascript/styles/mastodon/stream_entries.scss index 281cbaf83a..369bb4479c 100644 --- a/app/javascript/styles/mastodon/stream_entries.scss +++ b/app/javascript/styles/mastodon/stream_entries.scss @@ -324,6 +324,9 @@ .button.button-secondary.logo-button { flex: 0 auto; font-size: 14px; + background: $ui-highlight-color; + color: $primary-text-color; + border: 0; svg { width: 20px; @@ -332,19 +335,21 @@ margin-right: 5px; path:first-child { - fill: $ui-primary-color; + fill: $primary-text-color; } path:last-child { - fill: $simple-background-color; + fill: $ui-highlight-color; } } &:active, &:focus, &:hover { - svg path:first-child { - fill: lighten($ui-primary-color, 4%); + background: lighten($ui-highlight-color, 10%); + + svg path:last-child { + fill: lighten($ui-highlight-color, 10%); } } } diff --git a/app/views/remote_follow/new.html.haml b/app/views/remote_follow/new.html.haml index fc5c4da20b..3273c318c0 100644 --- a/app/views/remote_follow/new.html.haml +++ b/app/views/remote_follow/new.html.haml @@ -11,3 +11,5 @@ .actions = f.button :button, t('remote_follow.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') diff --git a/app/views/stream_entries/_detailed_status.html.haml b/app/views/stream_entries/_detailed_status.html.haml index c0f1e4f0f5..de844818fc 100644 --- a/app/views/stream_entries/_detailed_status.html.haml +++ b/app/views/stream_entries/_detailed_status.html.haml @@ -8,7 +8,7 @@ %span= acct(status.account) - if embedded_view? - = link_to "web+mastodon://follow?uri=#{status.account.local_username_and_domain}", class: 'button button-secondary logo-button', target: '_new' do + = link_to account_remote_follow_path(status.account), class: 'button button-secondary logo-button', target: '_new' do = render file: Rails.root.join('app', 'javascript', 'images', 'logo.svg') = t('accounts.follow') diff --git a/config/locales/en.yml b/config/locales/en.yml index 5cb81ebe9e..8ab652045e 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -615,6 +615,7 @@ en: remote_follow: acct: Enter your username@domain you want to follow from missing_resource: Could not find the required redirect URL for your account + no_account_html: Don't have an account? You can sign up here proceed: Proceed to follow prompt: 'You are going to follow:' remote_unfollow: