about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2018-07-01 04:12:34 +0200
committerGitHub <noreply@github.com>2018-07-01 04:12:34 +0200
commit2092d5c0ad099e8f60eb001ee0cd647fc759aefc (patch)
treef5e6dfdd44ebf18bd648fdfbe5bd9b446ee1d5b3
parent8fea9cc3112968d90ba4df02a90aa3a031a5f3a9 (diff)
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
-rw-r--r--app/controllers/remote_follow_controller.rb1
-rw-r--r--app/controllers/statuses_controller.rb5
-rw-r--r--app/javascript/packs/public.js2
-rw-r--r--app/javascript/styles/mastodon/accounts.scss1
-rw-r--r--app/javascript/styles/mastodon/stream_entries.scss13
-rw-r--r--app/views/remote_follow/new.html.haml2
-rw-r--r--app/views/stream_entries/_detailed_status.html.haml2
-rw-r--r--config/locales/en.yml1
8 files changed, 21 insertions, 6 deletions
diff --git a/app/controllers/remote_follow_controller.rb b/app/controllers/remote_follow_controller.rb
index 3b988e08d..cd61fd763 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 645995c2a..b85341822 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 d5e5b7fe0..cc2fed3f1 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 14dc5dd62..8033e6418 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 281cbaf83..369bb4479 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 fc5c4da20..3273c318c 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 c0f1e4f0f..de844818f 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 5cb81ebe9..8ab652045 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 <a href='%{sign_up_path}' target='_blank'>sign up here</a>
     proceed: Proceed to follow
     prompt: 'You are going to follow:'
   remote_unfollow: