Class: Gloo::Objs::Page
- Inherits:
-
Core::Obj
- Object
- Core::Baseo
- Core::Obj
- Gloo::Objs::Page
- Defined in:
- lib/gloo/objs/web_svr/page.rb
Constant Summary collapse
- KEYWORD =
'page'.freeze
- KEYWORD_SHORT =
'page'.freeze
- ON_RENDER =
Events
'on_render'.freeze
- ON_PRERENDER =
'on_prerender'.freeze
- AFTER_RENDER =
'after_render'.freeze
- PARAMS =
Parameters used during render.
'params'.freeze
- ID =
'id'.freeze
- HEAD =
Content
'head'.freeze
- BODY =
'body'.freeze
- CONTENT =
'content'.freeze
- TITLE =
'title'.freeze
- LAYOUT =
Layout for this page. If not specified, use the layout for the app.
'layout'.freeze
- CONTENT_TYPE =
Return Content type and HTML Code
'content_type'.freeze
- HTML_CONTENT =
'html'.freeze
- TEXT_CONTENT =
'text'.freeze
- JSON_CONTENT =
'json'.freeze
- RETURN_CODE =
'return_code'.freeze
Constants inherited from Core::Baseo
Core::Baseo::NOT_IMPLEMENTED_ERR
Instance Attribute Summary
Attributes inherited from Core::Obj
Attributes inherited from Core::Baseo
Class Method Summary collapse
-
.messages ⇒ Object
Get a list of message names that this object receives.
-
.render_params(content, params) ⇒ Object
Render content with the given params.
-
.short_typename ⇒ Object
The short name of the object type.
-
.typename ⇒ Object
The name of the object type.
Instance Method Summary collapse
-
#add_children_on_create? ⇒ Boolean
Does this object have children to add when an object is created in interactive mode? This does not apply during obj load, etc.
-
#add_default_children ⇒ Object
Add children to this object.
-
#body ⇒ Object
Get the body element.
-
#body_content ⇒ Object
Get the body content.
-
#content_type ⇒ Object
Get the content type.
-
#head ⇒ Object
Get the head element.
-
#head_content ⇒ Object
Get the header content.
-
#is_html? ⇒ Boolean
Is the return type HTML?.
-
#is_json? ⇒ Boolean
Is the return type JSON?.
-
#is_text? ⇒ Boolean
Is the return type TEXT?.
-
#msg_render ⇒ Object
Get the expiration date for the certificate.
-
#multiline_value? ⇒ Boolean
Does this object support multi-line values? Initially only true for scripts.
-
#page_layout ⇒ Object
Get the layout for this page.
-
#page_layout_or_app_layout ⇒ Object
Get the layout for this page or if none for the app.
-
#params_hash ⇒ Object
Get the params hash from the child object.
-
#redirect_set? ⇒ Boolean
Is there a redirect page set in the running app?.
-
#render(request = nil) ⇒ Object
Render the page.
-
#render_html(params) ⇒ Object
Render the page as HTML.
-
#render_json ⇒ Object
Render the page as JSON.
-
#render_text(params) ⇒ Object
Render the page as TEXT.
-
#render_with_params(obj, render_ƒ, params) ⇒ Object
Given an object and a render message, render the object.
-
#return_code ⇒ Object
Get the return code.
-
#run_after_render ⇒ Object
Run the on rendered script if there is one.
-
#run_on_prerender ⇒ Object
Run the on prerender script if there is one.
-
#run_on_render ⇒ Object
Run the on render script if there is one.
-
#set_id ⇒ Object
Set the ID parameter if there is one.
-
#set_value(new_value) ⇒ Object
Set the value with any necessary type conversions.
-
#wrap(tag, content, id = nil, classes = nil) ⇒ Object
Wrap the content in the tag with id and class.
Methods inherited from Core::Obj
#add_child, can_create?, #can_receive_message?, #child_count, #child_index, #contains_child?, #delete_children, #dispatch, #display_value, #find_add_child, #find_child, help, inherited, #initialize, #is_alias?, #is_function?, #msg_reload, #msg_unload, #pn, #remove_child, #root?, #send_message, #set_parent, #type_display, #value_display, #value_is_array?, #value_is_blank?, #value_string?
Methods inherited from Core::Baseo
Constructor Details
This class inherits a constructor from Gloo::Core::Obj
Class Method Details
.messages ⇒ Object
Get a list of message names that this object receives.
283 284 285 |
# File 'lib/gloo/objs/web_svr/page.rb', line 283 def self. return super + [ 'render' ] end |
.render_params(content, params) ⇒ Object
Render content with the given params. Params might be nil, in which case the content is returned with no changes.
436 437 438 439 440 441 442 443 |
# File 'lib/gloo/objs/web_svr/page.rb', line 436 def self.render_params content, params return content unless params renderer = ERB.new( content ) content = renderer.result_with_hash( params ) return content end |
.short_typename ⇒ Object
The short name of the object type.
50 51 52 |
# File 'lib/gloo/objs/web_svr/page.rb', line 50 def self.short_typename return KEYWORD_SHORT end |
.typename ⇒ Object
The name of the object type.
43 44 45 |
# File 'lib/gloo/objs/web_svr/page.rb', line 43 def self.typename return KEYWORD end |
Instance Method Details
#add_children_on_create? ⇒ Boolean
Does this object have children to add when an object is created in interactive mode? This does not apply during obj load, etc.
239 240 241 |
# File 'lib/gloo/objs/web_svr/page.rb', line 239 def add_children_on_create? return true end |
#add_default_children ⇒ Object
Add children to this object. This is used by containers to add children needed for default configurations.
248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 |
# File 'lib/gloo/objs/web_svr/page.rb', line 248 def add_default_children fac = @engine.factory fac.create_script ON_RENDER, '', self fac.create_script AFTER_RENDER, '', self fac.create_can PARAMS, self params = { :name => HEAD, :type => Gloo::Objs::Element.typename, :value => nil, :parent => self } head = fac.create params content = fac.create_can CONTENT, head params = { :name => TITLE, :type => Gloo::Objs::Element.typename, :value => nil, :parent => content } title = fac.create params params = { :name => BODY, :type => Gloo::Objs::Element.typename, :value => nil, :parent => self } body = fac.create params content = fac.create_can CONTENT, body end |
#body ⇒ Object
Get the body element.
92 93 94 |
# File 'lib/gloo/objs/web_svr/page.rb', line 92 def body return find_child BODY end |
#body_content ⇒ Object
Get the body content. This might be in a content child, or it might be the body object itself.
101 102 103 104 105 106 107 |
# File 'lib/gloo/objs/web_svr/page.rb', line 101 def body_content body_obj = body return nil unless body_obj content_obj = body_obj.find_child CONTENT return content_obj ? content_obj : body_obj end |
#content_type ⇒ Object
Get the content type.
150 151 152 153 |
# File 'lib/gloo/objs/web_svr/page.rb', line 150 def content_type type = find_child CONTENT_TYPE return type ? type.value : nil end |
#head ⇒ Object
Get the head element.
72 73 74 |
# File 'lib/gloo/objs/web_svr/page.rb', line 72 def head return find_child HEAD end |
#head_content ⇒ Object
Get the header content. This might be in a content child, or it might be the head object itself.
81 82 83 84 85 86 87 |
# File 'lib/gloo/objs/web_svr/page.rb', line 81 def head_content head_obj = head return nil unless head_obj content_obj = head_obj.find_child CONTENT return content_obj ? content_obj : head_obj end |
#is_html? ⇒ Boolean
Is the return type HTML?
169 170 171 172 |
# File 'lib/gloo/objs/web_svr/page.rb', line 169 def is_html? return true if content_type.nil? return content_type == HTML_CONTENT end |
#is_json? ⇒ Boolean
Is the return type JSON?
184 185 186 |
# File 'lib/gloo/objs/web_svr/page.rb', line 184 def is_json? return content_type == JSON_CONTENT end |
#is_text? ⇒ Boolean
Is the return type TEXT?
177 178 179 |
# File 'lib/gloo/objs/web_svr/page.rb', line 177 def is_text? return content_type == TEXT_CONTENT end |
#msg_render ⇒ Object
Get the expiration date for the certificate.
290 291 292 293 294 |
# File 'lib/gloo/objs/web_svr/page.rb', line 290 def msg_render content = self.render @engine.heap.it.set_to content return content end |
#multiline_value? ⇒ Boolean
Does this object support multi-line values? Initially only true for scripts.
65 66 67 |
# File 'lib/gloo/objs/web_svr/page.rb', line 65 def multiline_value? return false end |
#page_layout ⇒ Object
Get the layout for this page.
158 159 160 161 162 163 164 |
# File 'lib/gloo/objs/web_svr/page.rb', line 158 def page_layout o = find_child LAYOUT return nil unless o o = Gloo::Objs::Alias.resolve_alias( @engine, o ) return o end |
#page_layout_or_app_layout ⇒ Object
Get the layout for this page or if none for the app.
391 392 393 394 395 396 397 |
# File 'lib/gloo/objs/web_svr/page.rb', line 391 def page_layout_or_app_layout layout = page_layout return layout if layout return nil unless @engine.app_running? return @engine.running_app.obj.default_page_layout end |
#params_hash ⇒ Object
Get the params hash from the child object. Returns nil if there is none.
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
# File 'lib/gloo/objs/web_svr/page.rb', line 113 def params_hash params_can = find_child PARAMS return nil unless params_can if @request url_params = @request.query_params url_params.each do |k,v| o = params_can.find_child k o.set_value( v ) if o end @request.body_params.each do |k,v| o = params_can.find_child k o.set_value( v ) if o end end h = {} params_can.children.each do |o| h[ o.name ] = o.value end return h end |
#redirect_set? ⇒ Boolean
Is there a redirect page set in the running app?
310 311 312 313 |
# File 'lib/gloo/objs/web_svr/page.rb', line 310 def redirect_set? return false unless @engine.app_running? return @engine.running_app.obj.redirect end |
#render(request = nil) ⇒ Object
Render the page. If this is being called from the web server, the request will be passed in and will include request context such as params.
337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 |
# File 'lib/gloo/objs/web_svr/page.rb', line 337 def render request=nil @request = request set_id if @request # Run the on prerender script run_on_prerender # Set Params before running on render params = params_hash run_on_render return nil if redirect_set? if is_html? contents = render_html params elsif is_json? contents = render_json elsif is_text? contents = render_text params else @engine.log.error "Unknown content type: #{content_type}" return nil end run_after_render @request = nil return nil if redirect_set? return contents end |
#render_html(params) ⇒ Object
Render the page as HTML.
371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 |
# File 'lib/gloo/objs/web_svr/page.rb', line 371 def render_html params head_obj = render_with_params head_content, :render_html, params body_obj = render_with_params body_content, :render_html, params layout = page_layout_or_app_layout if layout @engine.log.debug "Using Page Layout: #{layout.pn}" contents = layout.render_layout( head_obj, body_obj ) else @engine.log.debug "No layout for page." contents = wrap( 'html', head_obj + body_obj ) end return Gloo::WebSvr::Response.html_response( @engine, contents, return_code ) end |
#render_json ⇒ Object
Render the page as JSON.
402 403 404 405 406 |
# File 'lib/gloo/objs/web_svr/page.rb', line 402 def render_json json_content = Gloo::Objs::Json.convert_obj_to_json( body ) return Gloo::WebSvr::Response.json_response( @engine, json_content, return_code ) end |
#render_text(params) ⇒ Object
Render the page as TEXT.
411 412 413 414 |
# File 'lib/gloo/objs/web_svr/page.rb', line 411 def render_text params text_content = render_with_params body_content, :render_text, params return Gloo::WebSvr::Response.text_response( @engine, text_content, return_code ) end |
#render_with_params(obj, render_ƒ, params) ⇒ Object
Given an object and a render message, render the object. If the obj is nil, return an empty string. If the params are nil, no param rendering is done.
421 422 423 424 425 426 427 428 429 |
# File 'lib/gloo/objs/web_svr/page.rb', line 421 def render_with_params obj, render_ƒ, params return '' unless obj content = Element.render_obj( obj, render_ƒ, @engine ) # content = Page.render_params( content, params ) if params content = @engine.running_app.obj..render content, params return content end |
#return_code ⇒ Object
Get the return code. SUCCESS is the default if none is set.
142 143 144 145 |
# File 'lib/gloo/objs/web_svr/page.rb', line 142 def return_code code = find_child RETURN_CODE return code ? code.value : Gloo::WebSvr::ResponseCode::SUCCESS end |
#run_after_render ⇒ Object
Run the on rendered script if there is one.
220 221 222 223 224 225 226 227 |
# File 'lib/gloo/objs/web_svr/page.rb', line 220 def run_after_render o = find_child AFTER_RENDER return unless o @engine.log.debug "running after_render for page" Gloo::Exec::Dispatch.( @engine, 'run', o ) end |
#run_on_prerender ⇒ Object
Run the on prerender script if there is one.
196 197 198 199 200 201 202 203 |
# File 'lib/gloo/objs/web_svr/page.rb', line 196 def run_on_prerender o = find_child ON_PRERENDER return unless o @engine.log.debug "running on_prerender for page" Gloo::Exec::Dispatch.( @engine, 'run', o ) end |
#run_on_render ⇒ Object
Run the on render script if there is one.
208 209 210 211 212 213 214 215 |
# File 'lib/gloo/objs/web_svr/page.rb', line 208 def run_on_render o = find_child ON_RENDER return unless o @engine.log.debug "running on_render for page" Gloo::Exec::Dispatch.( @engine, 'run', o ) end |
#set_id ⇒ Object
Set the ID parameter if there is one.
318 319 320 321 322 323 324 325 326 327 328 329 |
# File 'lib/gloo/objs/web_svr/page.rb', line 318 def set_id return unless @request.id @engine.log.info "Setting ID: #{@request.id}" params_can = find_child PARAMS return nil unless params_can id_obj = params_can.find_child( ID ) return unless id_obj id_obj.set_value( @request.id ) end |
#set_value(new_value) ⇒ Object
Set the value with any necessary type conversions.
57 58 59 |
# File 'lib/gloo/objs/web_svr/page.rb', line 57 def set_value( new_value ) self.value = new_value.to_s end |
#wrap(tag, content, id = nil, classes = nil) ⇒ Object
Wrap the content in the tag with id and class.
303 304 305 |
# File 'lib/gloo/objs/web_svr/page.rb', line 303 def wrap( tag, content, id=nil, classes=nil ) return "<#{tag}>#{content}</#{tag}>" end |