class SBSM::LOOKANDFEEL

Constants

DICTIONARIES
DISABLED
ENABLED
HTML_ATTRIBUTES
RESOURCES
RESOURCE_BASE
TXT_RESOURCES

Attributes

flavor[R]
language[R]
session[R]

Public Class Methods

new(session) click to toggle source
# File lib/sbsm/lookandfeel.rb, line 47
          def initialize(session)
@session = session
@flavor = @session.flavor
@language = @session.language
set_dictionary(@language)
          end
txt_file(filename) click to toggle source
# File lib/sbsm/lookandfeel.rb, line 40
def txt_file(filename)
        Proc.new {
                path = File.expand_path(filename, self::TXT_RESOURCES)
                File.read(path).strip.gsub(/(\r\n)|(\n)|(\r)/, '<br>')
        }
end

Public Instance Methods

_event_url(event=direct_event, args={}, anchor=nil) { |args| ... } click to toggle source
# File lib/sbsm/lookandfeel.rb, line 76
def _event_url(event=direct_event, args={}, anchor=nil, &block)
        args = args.collect { |*pair| pair }.flatten
        args = args.collect { |value| CGI.escape(value.to_s) }
        if(block_given?)
                yield(args)
        end
        url = [base_url(), event, args].compact.join('/')
        if(anchor)
                url << "#" << anchor.to_s
        end
        url
end
_lookup(key, *args) click to toggle source
# File lib/sbsm/lookandfeel.rb, line 97
def _lookup(key, *args)
        key = key.intern if key.is_a? String
        if(args.size > 0)
                result = ""
                args.each_with_index { |text, index|
                        result << (lookup(key.to_s + index.to_s) || ' ')
                        result << text.to_s
                }
                tail = lookup(key.to_s + args.size.to_s)
                result << tail if(tail)
        else
                result = @dictionary[key] if @dictionary
                if(result.is_a? Proc)
                        result.call
                elsif(result.nil?)
                        def_lan = @session.default_language
                        if(dict = self::class::DICTIONARIES[def_lan])
                                dict[key]
                        end
                else
                        result
                end
        end
end
attributes(key) click to toggle source
# File lib/sbsm/lookandfeel.rb, line 53
          def attributes(key)
self::class::HTML_ATTRIBUTES.fetch(key.to_sym, {}).dup rescue {}
          end
base_url() click to toggle source
# File lib/sbsm/lookandfeel.rb, line 56
          def base_url
maybe_port = @session.server_port ? (":" + @session.server_port ) : ''
                  [@session.http_protocol + ':/', @session.server_name + maybe_port, @language, @flavor].compact.join("/")
          end
direct_event() click to toggle source
# File lib/sbsm/lookandfeel.rb, line 60
def direct_event
        @session.direct_event
end
disabled?(event) click to toggle source
# File lib/sbsm/lookandfeel.rb, line 63
def disabled?(event)
        self::class::DISABLED.include?(event)
end
enabled?(event, default=true) click to toggle source
# File lib/sbsm/lookandfeel.rb, line 66
def enabled?(event, default=true)
        default || self::class::ENABLED.include?(event)
end
event_url(event=direct_event, args={}, anchor=nil) click to toggle source
# File lib/sbsm/lookandfeel.rb, line 69
def event_url(event=direct_event, args={}, anchor=nil)
        _event_url(event, args, anchor=nil) { |args|
                unless(@session.is_crawler? || args.include?('state_id'))
                        args.unshift(:state_id, @session.state.object_id)
                end
        }
end
format_date(date) click to toggle source
# File lib/sbsm/lookandfeel.rb, line 121
def format_date(date)
        date.strftime(lookup(:date_format))
end
format_price(price, currency=nil) click to toggle source
# File lib/sbsm/lookandfeel.rb, line 124
def format_price(price, currency=nil)
        if(price.to_i > 0)
                [currency, sprintf('%.2f', price.to_f/100.0)].compact.join(' ')
        end
end
format_time(time) click to toggle source
# File lib/sbsm/lookandfeel.rb, line 129
def format_time(time)
        time.strftime(lookup(:time_format))
end
language_url(language) click to toggle source
# File lib/sbsm/lookandfeel.rb, line 91
def language_url(language)
        base_url
end
languages() click to toggle source
# File lib/sbsm/lookandfeel.rb, line 88
def languages
        @languages ||= self::class::DICTIONARIES.keys.sort
end
lookup(key, *args, &block) click to toggle source
# File lib/sbsm/lookandfeel.rb, line 94
def lookup(key, *args, &block)
  _lookup(key, *args) || (block.call if block)
end
navigation(filter=false) click to toggle source
resource(rname, rstr=nil) click to toggle source
# File lib/sbsm/lookandfeel.rb, line 135
def resource(rname, rstr=nil)
        collect_resource([ self::class::RESOURCE_BASE, @session.flavor ], 
         rname, rstr)
end
resource_external(rname) click to toggle source
# File lib/sbsm/lookandfeel.rb, line 139
def resource_external(rname)
        self::class::RESOURCES[rname]
end
resource_global(rname, rstr=nil) click to toggle source
# File lib/sbsm/lookandfeel.rb, line 142
def resource_global(rname, rstr=nil)
        collect_resource(self::class::RESOURCE_BASE, rname, rstr)
end
resource_localized(rname, rstr=nil, lang=@language) click to toggle source
# File lib/sbsm/lookandfeel.rb, line 145
def resource_localized(rname, rstr=nil, lang=@language)
        result = resource([rname, lang].join('_').intern, rstr)
        if(result.nil? && (lang != @session.default_language))
                result = resource_localized(rname, rstr, @session.default_language)
        end
        result
end
zone_navigation(filter=false) click to toggle source
# File lib/sbsm/lookandfeel.rb, line 152
def zone_navigation(filter=false)
        @session.zone_navigation
end
zones(filter=false) click to toggle source
# File lib/sbsm/lookandfeel.rb, line 155
def zones(filter=false)
        @session.zones
end

Private Instance Methods

_collect_resource(base, part, rstr) click to toggle source
# File lib/sbsm/lookandfeel.rb, line 169
def _collect_resource(base, part, rstr)
  maybe_port = @session.server_port ? (":" + @session.server_port ) : ''
  [ @session.http_protocol + ':/', @session.server_name + maybe_port, base, part, rstr].flatten.compact.join('/')
end
collect_resource(base, rname, rstr=nil) click to toggle source
# File lib/sbsm/lookandfeel.rb, line 159
          def collect_resource(base, rname, rstr=nil)
                  varpart = self::class::RESOURCES[rname]
if(varpart.is_a?(Array))
  varpart.collect { |part|
    _collect_resource(base, part, rstr)
  }
elsif(!varpart.nil?)
  _collect_resource(base, varpart, rstr)
end
          end
set_dictionary(language) click to toggle source
# File lib/sbsm/lookandfeel.rb, line 173
def set_dictionary(language)
  @dictionary = self::class::DICTIONARIES[language] || {}
end