Screenshot support for themes
This commit is contained in:
parent
dabf66e676
commit
bdca1614d5
7 changed files with 32 additions and 4 deletions
BIN
app/javascript/flavours/glitch/images/glitch-preview.jpg
Normal file
BIN
app/javascript/flavours/glitch/images/glitch-preview.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 193 KiB |
|
@ -1 +1,4 @@
|
||||||
import 'flavours/glitch/styles/index.scss';
|
import 'flavours/glitch/styles/index.scss';
|
||||||
|
|
||||||
|
// This ensures that webpack compiles our images.
|
||||||
|
require.context('../images', true);
|
||||||
|
|
|
@ -26,6 +26,12 @@ pack:
|
||||||
# language tags and whose default exports are a messages object.
|
# language tags and whose default exports are a messages object.
|
||||||
locales: locales
|
locales: locales
|
||||||
|
|
||||||
|
# (OPTIONAL) A file to use as the preview screenshot for the flavour,
|
||||||
|
# or an array thereof. These filenames must be unique across all
|
||||||
|
# images (regardless of path), so it's a good idea to namespace them
|
||||||
|
# to your theme. It's up to you to let webpack know to compile them.
|
||||||
|
screenshot: glitch-preview.jpg
|
||||||
|
|
||||||
# (OPTIONAL) The directory which contains the pack files.
|
# (OPTIONAL) The directory which contains the pack files.
|
||||||
# Defaults to the theme directory (`app/javascript/themes/[theme]`),
|
# Defaults to the theme directory (`app/javascript/themes/[theme]`),
|
||||||
# which should be sufficient for like 99% of use-cases lol.
|
# which should be sufficient for like 99% of use-cases lol.
|
||||||
|
|
|
@ -24,6 +24,12 @@ pack:
|
||||||
# the flavour, relative to this directory.
|
# the flavour, relative to this directory.
|
||||||
locales: ../../mastodon/locales
|
locales: ../../mastodon/locales
|
||||||
|
|
||||||
|
# (OPTIONAL) A file to use as the preview screenshot for the flavour,
|
||||||
|
# or an array thereof. These filenames must be unique across all
|
||||||
|
# images (regardless of path), so it's a good idea to namespace them
|
||||||
|
# to your theme. It's up to you to let webpack know to compile them.
|
||||||
|
screenshot: screenshot.jpg
|
||||||
|
|
||||||
# (OPTIONAL) The directory which contains the pack files.
|
# (OPTIONAL) The directory which contains the pack files.
|
||||||
# Defaults to this directory (`app/javascript/flavour/[flavour]`),
|
# Defaults to this directory (`app/javascript/flavour/[flavour]`),
|
||||||
# but in the case of the vanilla Mastodon flavour the pack files are
|
# but in the case of the vanilla Mastodon flavour the pack files are
|
||||||
|
|
BIN
app/javascript/images/screenshot.jpg
Normal file
BIN
app/javascript/images/screenshot.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 234 KiB |
|
@ -14,17 +14,27 @@ class Themes
|
||||||
result = Hash.new
|
result = Hash.new
|
||||||
Dir.glob(Rails.root.join('app', 'javascript', 'flavours', '*', 'theme.yml')) do |path|
|
Dir.glob(Rails.root.join('app', 'javascript', 'flavours', '*', 'theme.yml')) do |path|
|
||||||
data = YAML.load_file(path)
|
data = YAML.load_file(path)
|
||||||
name = File.basename(File.dirname(path))
|
dir = File.dirname(path)
|
||||||
|
name = File.basename(dir)
|
||||||
|
locales = []
|
||||||
|
screenshots = []
|
||||||
if data['locales']
|
if data['locales']
|
||||||
locales = []
|
Dir.glob(File.join(dir, data['locales'], '*.{js,json}')) do |locale|
|
||||||
Dir.glob(File.join(File.dirname(path), data['locales'], '*.{js,json}')) do |locale|
|
|
||||||
localeName = File.basename(locale, File.extname(locale))
|
localeName = File.basename(locale, File.extname(locale))
|
||||||
locales.push(localeName) unless localeName.match(/defaultMessages|whitelist|index/)
|
locales.push(localeName) unless localeName.match(/defaultMessages|whitelist|index/)
|
||||||
end
|
end
|
||||||
data['locales'] = locales
|
end
|
||||||
|
if data['screenshot']
|
||||||
|
if data['screenshot'].is_a? Array
|
||||||
|
screenshots = data['screenshot']
|
||||||
|
else
|
||||||
|
screenshots.push(data['screenshot'])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
if data['pack']
|
if data['pack']
|
||||||
data['name'] = name
|
data['name'] = name
|
||||||
|
data['locales'] = locales
|
||||||
|
data['screenshot'] = screenshots
|
||||||
data['skin'] = { 'default' => [] }
|
data['skin'] = { 'default' => [] }
|
||||||
result[name] = data
|
result[name] = data
|
||||||
end
|
end
|
||||||
|
|
|
@ -4,6 +4,9 @@
|
||||||
= simple_form_for current_user, url: settings_flavour_path(@selected), html: { method: :put } do |f|
|
= simple_form_for current_user, url: settings_flavour_path(@selected), html: { method: :put } do |f|
|
||||||
= render 'shared/error_messages', object: current_user
|
= render 'shared/error_messages', object: current_user
|
||||||
|
|
||||||
|
- Themes.instance.flavour(@selected)['screenshot'].each do |screen|
|
||||||
|
%img.flavour-screen{ width: 700, src: asset_pack_path(screen) }
|
||||||
|
|
||||||
.flavour-description
|
.flavour-description
|
||||||
= t "flavours.#{@selected}.description", default: ''
|
= t "flavours.#{@selected}.description", default: ''
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue