Add OEmbed iframe HTML, convert emojis on public pages, increase size of attachment thumbnails

This commit is contained in:
Eugen Rochko 2016-12-18 15:20:39 +01:00
parent 6de079a5af
commit aed25932b5
11 changed files with 72 additions and 7 deletions

View file

@ -1,2 +1,3 @@
//= require jquery //= require jquery
//= require jquery_ujs //= require jquery_ujs
//= require extras

View file

@ -0,0 +1,8 @@
import emojify from './components/emoji'
$(() => {
$.each($('.entry .content, .name, .account__header__content'), (_, content) => {
const $content = $(content);
$content.html(emojify($content.html()));
});
});

View file

@ -114,6 +114,18 @@ body {
padding: 0; padding: 0;
} }
&.embed {
background: transparent;
margin: 0;
.container {
position: absolute;
width: 100%;
height: 100%;
overflow: hidden;
}
}
@media screen and (max-width: 360px) { @media screen and (max-width: 360px) {
padding-bottom: 0; padding-bottom: 0;
} }

View file

@ -232,3 +232,24 @@
} }
} }
} }
.embed {
.activity-stream {
border-radius: 4px;
box-shadow: none;
.entry {
&:last-child {
border-radius: 0 0 4px 4px;
}
&:first-child {
border-radius: 4px 4px 0 0;
&:last-child {
border-radius: 4px;
}
}
}
}
}

View file

@ -5,8 +5,8 @@ class Api::OembedController < ApiController
def show def show
@stream_entry = stream_entry_from_url(params[:url]) @stream_entry = stream_entry_from_url(params[:url])
@width = [300, params[:maxwidth].to_i].min @width = [300, params[:maxwidth].to_i].max
@height = [200, params[:maxheight].to_i].min @height = [200, params[:maxheight].to_i].max
end end
private private

View file

@ -25,6 +25,15 @@ class StreamEntriesController < ApplicationController
end end
end end
def embed
response.headers['X-Frame-Options'] = 'ALLOWALL'
@type = @stream_entry.activity_type.downcase
return gone if @stream_entry.activity.nil?
render layout: 'embedded'
end
private private
def set_account def set_account

View file

@ -45,14 +45,14 @@ class MediaAttachment < ApplicationRecord
if f.instance.image? if f.instance.image?
{ {
original: '1280x1280>', original: '1280x1280>',
small: '250x250>', small: '400x400>',
} }
else else
{ {
small: { small: {
convert_options: { convert_options: {
output: { output: {
vf: 'scale=\'min(250\, iw):min(250\, ih)\':force_original_aspect_ratio=decrease', vf: 'scale=\'min(400\, iw):min(400\, ih)\':force_original_aspect_ratio=decrease',
}, },
}, },
format: 'png', format: 'png',

View file

@ -9,6 +9,6 @@ node(:author_url) { |entry| account_url(entry.account) }
node(:provider_name) { Rails.configuration.x.local_domain } node(:provider_name) { Rails.configuration.x.local_domain }
node(:provider_url) { root_url } node(:provider_url) { root_url }
node(:cache_age) { 86_400 } node(:cache_age) { 86_400 }
node(:html, &:content) node(:html) { |entry| "<div style=\"position: relative; height: 0; overflow: hidden; padding-top: 30px; padding-bottom: 56.25%\"><iframe src=\"#{embed_account_stream_entry_url(entry.account, entry)}\" style=\"position: absolute; top: 0; left: 0; width: 100%; height: 100%; overflow: hidden\" frameborder=\"0\" width=\"#{@width}\" scrolling=\"no\"></iframe></div>" }
node(:width) { @width } node(:width) { @width }
node(:height) { @height } node(:height) { nil }

View file

@ -0,0 +1,8 @@
!!! 5
%html{:lang => 'en'}
%head
%meta{:charset => 'utf-8'}/
= stylesheet_link_tag 'application', media: 'all'
= javascript_include_tag 'application_public'
%body.embed
= yield

View file

@ -0,0 +1,2 @@
.activity-stream.activity-stream-headless
= render partial: @type, locals: { @type.to_sym => @stream_entry.activity }

View file

@ -25,7 +25,11 @@ Rails.application.routes.draw do
} }
resources :accounts, path: 'users', only: [:show], param: :username do resources :accounts, path: 'users', only: [:show], param: :username do
resources :stream_entries, path: 'updates', only: [:show] resources :stream_entries, path: 'updates', only: [:show] do
member do
get :embed
end
end
member do member do
get :followers get :followers