65 lines
1.9 KiB
Ruby
65 lines
1.9 KiB
Ruby
class SocialPreviewsController < ApplicationController
|
|
# No authorization required for entirely public controller
|
|
|
|
PNG_CSS = "body { transform: scale(0.3); } .preview-div-wrapper { overflow: unset; margin: 5vw; }".freeze
|
|
SHE_CODED_TAGS = %w[shecoded theycoded shecodedally].freeze
|
|
|
|
def article
|
|
@article = Article.find(params[:id])
|
|
not_found unless @article.published
|
|
|
|
template = (@article.decorate.cached_tag_list_array & SHE_CODED_TAGS).any? ? "shecoded" : "article"
|
|
|
|
respond_to do |format|
|
|
format.html do
|
|
render template, layout: false
|
|
end
|
|
format.png do
|
|
html = render_to_string(template, formats: :html, layout: false)
|
|
redirect_to HtmlCssToImage.fetch_url(html: html, css: PNG_CSS, google_fonts: "Roboto|Roboto+Condensed"), status: :found
|
|
end
|
|
end
|
|
end
|
|
|
|
def user
|
|
@user = User.find(params[:id]) || not_found
|
|
|
|
respond_to do |format|
|
|
format.html do
|
|
render layout: false
|
|
end
|
|
format.png do
|
|
html = render_to_string(formats: :html, layout: false)
|
|
redirect_to HtmlCssToImage.fetch_url(html: html, css: PNG_CSS, google_fonts: "Roboto"), status: :found
|
|
end
|
|
end
|
|
end
|
|
|
|
def organization
|
|
@user = Organization.find(params[:id]) || not_found
|
|
|
|
respond_to do |format|
|
|
format.html do
|
|
render "user", layout: false
|
|
end
|
|
format.png do
|
|
html = render_to_string("user", formats: :html, layout: false)
|
|
redirect_to HtmlCssToImage.fetch_url(html: html, css: PNG_CSS, google_fonts: "Roboto"), status: :found
|
|
end
|
|
end
|
|
end
|
|
|
|
def tag
|
|
@tag = Tag.find(params[:id]) || not_found
|
|
|
|
respond_to do |format|
|
|
format.html do
|
|
render layout: false
|
|
end
|
|
format.png do
|
|
html = render_to_string(formats: :html, layout: false)
|
|
redirect_to HtmlCssToImage.fetch_url(html: html, css: PNG_CSS, google_fonts: "Roboto"), status: :found
|
|
end
|
|
end
|
|
end
|
|
end
|