FEATURE: Let plugins register themes easily

This commit is contained in:
Robin Ward
2017-01-12 15:43:09 -05:00
parent d49473757e
commit adb73180f7
7 changed files with 101 additions and 20 deletions

View File

@ -2,6 +2,7 @@ require 'digest/sha1'
require 'fileutils'
require_dependency 'plugin/metadata'
require_dependency 'plugin/auth_provider'
require_dependency 'plugin/theme'
class Plugin::CustomEmoji
def self.cache_key
@ -24,7 +25,13 @@ class Plugin::Instance
attr_reader :admin_route
# Memoized array readers
[:assets, :auth_providers, :color_schemes, :initializers, :javascripts, :styles].each do |att|
[:assets,
:auth_providers,
:color_schemes,
:initializers,
:javascripts,
:styles,
:themes].each do |att|
class_eval %Q{
def #{att}
@#{att} ||= []
@ -173,6 +180,10 @@ class Plugin::Instance
end
end
def directory
File.dirname(path)
end
def auto_generated_path
File.dirname(path) << "/auto_generated"
end
@ -244,6 +255,19 @@ class Plugin::Instance
Plugin::CustomEmoji.register(name, url)
end
def register_theme(name)
return unless enabled?
theme = Plugin::Theme.new(self, name)
yield theme
themes << theme
end
# def register_public
# return unless enabled?
#
# end
def automatic_assets
css = styles.join("\n")
js = javascripts.join("\n")