Class: OMF::Web::Rack::WidgetMapper
- Inherits:
-
Common::LObject
- Object
- Common::LObject
- OMF::Web::Rack::WidgetMapper
- Defined in:
- lib/omf-web/rack/widget_mapper.rb
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(opts = {}) ⇒ WidgetMapper
constructor
A new instance of WidgetMapper.
- #render_page(req) ⇒ Object
- #render_widget_list(popts) ⇒ Object
Methods included from Common::Loggable
#_logger, #debug, #error, #fatal, #info, init_log, logger, set_environment, #warn
Constructor Details
#initialize(opts = {}) ⇒ WidgetMapper
Returns a new instance of WidgetMapper.
14 15 16 17 |
# File 'lib/omf-web/rack/widget_mapper.rb', line 14 def initialize(opts = {}) @opts = opts @tabs = {} end |
Instance Method Details
#call(env) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/omf-web/rack/widget_mapper.rb', line 19 def call(env) req = ::Rack::Request.new(env) sessionID = req.params['sid'] if sessionID.nil? || sessionID.empty? sessionID = "s#{(rand * 10000000).to_i}" end Thread.current["sessionID"] = sessionID body, headers = render_page(req) if headers.kind_of? String headers = {"Content-Type" => headers, "Access-Control-Allow-Origin" => "*"} end [200, headers, [body]] end |
#render_page(req) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/omf-web/rack/widget_mapper.rb', line 34 def render_page(req) opts = @opts.dup opts[:prefix] = req.script_name opts[:request] = req opts[:path] = req.path_info p = req.path_info p = '/' if p.empty? = p.split('/')[1] unless return (opts) end = opts[:widget_name] = .to_sym begin = OMF::Web::Widget.() page = OMF::Web::Theme::WidgetPage.new(, opts) return [page.to_html, 'text/html'] rescue Exception => ex warn "Request for unknown widget '#{}':(#{ex})" opts[:flash] = {:alert => %{Unknonw widget '#{}'.}} [OMF::Web::Theme::WidgetPage.new(nil, opts).to_html, 'text/html'] end end |