Module: OMF::Web::Theme

Extended by:
Common::Loggable
Defined in:
lib/omf-web/theme.rb,
lib/omf-web/theme/bright/page.rb,
lib/omf-web/theme/abstract_page.rb,
lib/omf-web/theme/bright/widget_page.rb,
lib/omf-web/theme/bright/code_renderer.rb,
lib/omf-web/theme/bright/data_renderer.rb,
lib/omf-web/theme/bright/flow_renderer.rb,
lib/omf-web/theme/bright/text_renderer.rb,
lib/omf-web/theme/bright/widget_chrome.rb,
lib/omf-web/theme/bright/tabbed_renderer.rb,
lib/omf-web/theme/bright/stacked_renderer.rb,
lib/omf-web/theme/bright/UNUSED/widget_page.rb,
lib/omf-web/theme/bright/one_column_renderer.rb,
lib/omf-web/theme/bright/two_columns_renderer.rb

Defined Under Namespace

Classes: AbstractPage, CodeRenderer, DataRenderer, FlowRenderer, OneColumnRenderer, Page, StackedRenderer, StackedRendererHelper, TabbedRenderer, TextRenderer, TwoColumnsRenderer, WidgetChrome, WidgetPage

Constant Summary collapse

DEFAULT_THEME =
'omf-web/theme/bright'
@@search_order =

default theme

[DEFAULT_THEME]
@@loaded =
{}
@@additional_renderers =
{}

Class Method Summary collapse

Methods included from Common::Loggable

_logger, debug, error, fatal, info, init_log, logger, set_environment, warn

Class Method Details

.register_renderer(name, klass, theme = DEFAULT_THEME) ⇒ Object



22
23
24
25
# File 'lib/omf-web/theme.rb', line 22

def self.register_renderer(name, klass, theme = DEFAULT_THEME)
  tr = @@additional_renderers[theme.to_s] ||= {}
  tr[name] = klass
end

.require(name) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/omf-web/theme.rb', line 37

def self.require(name)
  name = name.to_sym
  return if @@loaded[name]
  @@search_order.each do |theme|
    begin
      # check if there is a registered renderer. Assumes to be already loaded
      unless (@@additional_renderers[theme.to_s] || {})[name]
        #puts "Checking for '#{theme}/#{name}.rb'"
        Kernel::require "#{theme}/#{name}"
      end
      @@loaded[name] = true
      debug "Using renderer '#{theme}/#{name}'"        
      return
    rescue LoadError => le
      # Move on to the next one
      #puts ">>>> #{le}"
    end
  end
  raise "Can't find theme component '#{name}' in '#{@@search_order.join(', ')}"
end

.search_order=(search_order) ⇒ Object

Set additional themes to search in the given order for implementations of renderes. Allows for partial override in new themes.



31
32
33
34
# File 'lib/omf-web/theme.rb', line 31

def self.search_order=(search_order)
  @@loaded = {}
  @@search_order = search_order if search_order
end

.theme=(theme) ⇒ Object



11
12
13
14
15
16
17
18
19
20
# File 'lib/omf-web/theme.rb', line 11

def self.theme=(theme)
  if theme
    unless theme.match '.*/'
      theme = "omf-web/theme/#{theme}" # add default name space
    end
    @@loaded = {}
    @@search_order = [theme] 
    Kernel::require "#{theme}/init"
  end
end