Uploads for admin site settings (#4913)
* Improve OpenGraph tags for about pages * Add thumbnail admin setting * Fix error * Fix upmaster
parent
06f26e09b4
commit
9239e4ce4d
Before Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 285 KiB |
@ -0,0 +1,44 @@ |
|||||||
|
# frozen_string_literal: true |
||||||
|
# == Schema Information |
||||||
|
# |
||||||
|
# Table name: site_uploads |
||||||
|
# |
||||||
|
# id :integer not null, primary key |
||||||
|
# var :string default(""), not null |
||||||
|
# file_file_name :string |
||||||
|
# file_content_type :string |
||||||
|
# file_file_size :integer |
||||||
|
# file_updated_at :datetime |
||||||
|
# meta :json |
||||||
|
# created_at :datetime not null |
||||||
|
# updated_at :datetime not null |
||||||
|
# |
||||||
|
|
||||||
|
class SiteUpload < ApplicationRecord |
||||||
|
has_attached_file :file |
||||||
|
|
||||||
|
validates_attachment_content_type :file, content_type: /\Aimage\/.*\z/ |
||||||
|
validates :var, presence: true, uniqueness: true |
||||||
|
|
||||||
|
before_save :set_meta |
||||||
|
after_commit :clear_cache |
||||||
|
|
||||||
|
def cache_key |
||||||
|
"site_uploads/#{var}" |
||||||
|
end |
||||||
|
|
||||||
|
private |
||||||
|
|
||||||
|
def set_meta |
||||||
|
tempfile = file.queued_for_write[:original] |
||||||
|
|
||||||
|
return if tempfile.nil? |
||||||
|
|
||||||
|
geometry = Paperclip::Geometry.from_file(tempfile) |
||||||
|
self.meta = { width: geometry.width.to_i, height: geometry.height.to_i } |
||||||
|
end |
||||||
|
|
||||||
|
def clear_cache |
||||||
|
Rails.cache.delete(cache_key) |
||||||
|
end |
||||||
|
end |
@ -0,0 +1,10 @@ |
|||||||
|
- thumbnail = @instance_presenter.thumbnail |
||||||
|
= opengraph 'og:site_name', t('about.hosted_on', domain: site_hostname) |
||||||
|
= opengraph 'og:url', about_url |
||||||
|
= opengraph 'og:type', 'website' |
||||||
|
= opengraph 'og:title', @instance_presenter.site_title |
||||||
|
= opengraph 'og:description', strip_tags(@instance_presenter.site_description.presence || t('about.about_mastodon_html')) |
||||||
|
= opengraph 'og:image', full_asset_url(thumbnail&.file&.url || asset_pack_path('preview.jpg', protocol: :request)) |
||||||
|
= opengraph 'og:image:width', thumbnail ? thumbnail.meta['width'] : '1200' |
||||||
|
= opengraph 'og:image:height', thumbnail ? thumbnail.meta['height'] : '630' |
||||||
|
= opengraph 'twitter:card', 'summary_large_image' |
@ -0,0 +1,10 @@ |
|||||||
|
class CreateSiteUploads < ActiveRecord::Migration[5.1] |
||||||
|
def change |
||||||
|
create_table :site_uploads do |t| |
||||||
|
t.string :var, default: '', null: false, index: { unique: true } |
||||||
|
t.attachment :file |
||||||
|
t.json :meta |
||||||
|
t.timestamps |
||||||
|
end |
||||||
|
end |
||||||
|
end |
@ -0,0 +1,3 @@ |
|||||||
|
Fabricator(:site_upload) do |
||||||
|
|
||||||
|
end |
@ -0,0 +1,5 @@ |
|||||||
|
require 'rails_helper' |
||||||
|
|
||||||
|
RSpec.describe SiteUpload, type: :model do |
||||||
|
|
||||||
|
end |
Loading…
Reference in new issue