Class: DcPageRenderer
- Inherits:
-
Object
- Object
- DcPageRenderer
- Includes:
- DcApplicationHelper
- Defined in:
- app/renderers/dc_page_renderer.rb
Overview
Page renderer renders data from dc_page collection documents. This renderer will almost certainly be replaced by your own renderer so example here shows just basic code which just checks if user is allowed to view data and if so returns document body content otherwise returns error message defined in site policy.
Example:
<div id="page">
<%= dc_render(:dc_page) %>
</div>
Instance Attribute Summary
Attributes included from DcApplicationHelper
#design, #form, #ids, #json_ld, #menu, #menu_item, #options, #page, #page_title, #part, #parts, #record, #record_footer, #site, #tables
Instance Method Summary collapse
-
#default ⇒ Object
Default DcPage render method.
-
#iframe ⇒ Object
Render IFrame part if defined on page.
-
#initialize(parent, opts = {}) ⇒ DcPageRenderer
constructor
Object initialization.
-
#render_css ⇒ Object
Return CSS part of code.
-
#render_html ⇒ Object
Renderer dispatcher.
Methods included from DcApplicationHelper
#_origin, #dc_add2_record_cookie, #dc_add_json_ld, #dc_add_meta_tag, #dc_big_table, #dc_choices4, #dc_choices4_all_collections, #dc_choices4_cmsmenu, #dc_choices4_field, #dc_choices4_folders_list, #dc_choices4_menu, #dc_choices4_site_policies, #dc_date_time, #dc_deprecate, #dc_document_path, #dc_dont?, #dc_edit_mode?, #dc_edit_title, #dc_error_messages_for, #dc_flash_messages, #dc_format_date_time, #dc_format_number, #dc_get_json_ld, #dc_get_seo_meta_tags, #dc_get_site, #dc_icon4_boolean, #dc_icon_for_link, #dc_iframe_edit, #dc_img_alt, #dc_img_alt_tag, #dc_internal_var, #dc_label_for, #dc_limit_string, #dc_link_for_create, #dc_link_for_edit, #dc_link_for_edit1, #dc_link_menu_tag, #dc_link_to, #dc_menu_class, #dc_name4_id, #dc_name4_value, #dc_new_title, #dc_page_bottom, #dc_page_class, #dc_page_edit_menu, #dc_page_top, #dc_render, #dc_render_design, #dc_render_design_part, #dc_render_from_site, #dc_render_partial, #dc_replace_in_design, #dc_submit_tag, #dc_table_title, #dc_user_can_view, #dc_user_has_role, #decamelize_type, #forms_merge, #t, #t_name, #t_tablename
Constructor Details
#initialize(parent, opts = {}) ⇒ DcPageRenderer
Object initialization.
43 44 45 46 47 48 |
# File 'app/renderers/dc_page_renderer.rb', line 43 def initialize( parent, opts={} ) #:nodoc: @parent = parent @opts = opts @page = @parent.page @css = '' end |
Instance Method Details
#default ⇒ Object
Default DcPage render method
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
# File 'app/renderers/dc_page_renderer.rb', line 97 def default can_view, msg = dc_user_can_view(@parent, @page) return msg unless can_view # html = '' html << () if @opts[:edit_mode] > 1 @parent.page_title = @page.title.blank? ? @page.subject : @page.title html << @page.body # render poll if defined if @page.dc_poll_id @opts.merge!(:poll_id => @page.dc_poll_id, :return_to => @parent.request.url, method: nil) comment = DcPollRenderer.new(@parent, @opts) html << "<div class='wrap row'>#{comment.render_html}</div>" @css << "\n#{comment.render_css}" end # also add iframe html << iframe() end |
#iframe ⇒ Object
Render IFrame part if defined on page
Parameters forwarded to iframe are defined in if_params field as yaml as:
param_name:
object: internal object name (params, session, site, page)
method: method name (variable) holding the value of parameter
example: Forward id parameter to iframe
id:
object: params
method: id
example: Forward user id and edit_mode to iframe
user_id:
object: session
method: user_id
edit:
object: session
method: edit_mode
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'app/renderers/dc_page_renderer.rb', line 72 def iframe return '' if @page.if_url.blank? html = "\n<iframe" html << " id=\"#{@page.if_id}\"" unless @page.if_id.blank? html << " class=\"#{@page.if_class}\"" unless @page.if_class.blank? html << " border=\"#{@page.if_border}\"" html << " height=\"#{@page.if_height}\"" unless @page.if_height.blank? html << " width=\"#{@page.if_width}\"" unless @page.if_width.blank? html << " scrolling=\"#{@page.if_scroll}\"" # Parameters parameters = @page.if_url.match(/\?/) ? '' : '?' params = YAML.load(@page.if_params) rescue {} params = {} unless params.class == Hash params.each do |key, value| val = @parent.dc_internal_var(value['object'], value['method']) parameters << "&#{key}=#{val}" if val # only when not nil end url = @page.if_url + (parameters.size > 1 ? parameters : '') html << "src=\"#{url}\" ></iframe>\n" html end |
#render_css ⇒ Object
Return CSS part of code.
127 128 129 |
# File 'app/renderers/dc_page_renderer.rb', line 127 def render_css @css end |
#render_html ⇒ Object
Renderer dispatcher. Method returns HTML part of code.
119 120 121 122 |
# File 'app/renderers/dc_page_renderer.rb', line 119 def render_html method = @opts[:method] || 'default' respond_to?(method) ? send(method) : "Error DcPage: Method #{method} doesn't exist!" end |