Class: DcPageRenderer
- Inherits:
-
Object
- Object
- DcPageRenderer
- Includes:
- CmsCommonHelper, 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 CmsCommonHelper
#dc_choices4_field, #dc_choices_for_field, dc_choices_for_field, #dc_date_time, #dc_format_date_time, dc_format_date_time, #dc_format_number, dc_format_number, #dc_help_body, #dc_help_button, #dc_help_fields, #dc_help_for_tab, #dc_icon4_boolean, #dc_icon_for_boolean, #dc_name4_id, #dc_name4_value, #dc_name_for_id, #dc_name_for_value, dc_name_for_value, #dc_steps_menu_get, #t, t, #t_label_for_column, #t_label_for_field, #t_tablename
Methods included from DcApplicationHelper
#_origin, #dc_add2_record_cookie, #dc_add_json_ld, #dc_add_meta_tag, #dc_big_table, #dc_big_table_name_for_value, #dc_choices4, #dc_choices4_all_collections, #dc_choices4_folders_list, #dc_choices4_menu, #dc_choices4_site_policies, #dc_cms_menu, #dc_deprecate, #dc_document_path, #dc_dont?, #dc_edit_mode?, #dc_edit_title, #dc_error_messages_for, #dc_flash_messages, #dc_get_json_ld, #dc_get_link_canonical_tag, #dc_get_seo_meta_tags, #dc_get_site, #dc_icon_for_link, #dc_iframe_edit, #dc_img_alt, #dc_img_alt_tag, #dc_internal_var, #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_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, #dc_warning_messages_for, #decamelize_type
Constructor Details
#initialize(parent, opts = {}) ⇒ DcPageRenderer
Object initialization.
44 45 46 47 48 49 |
# File 'app/renderers/dc_page_renderer.rb', line 44 def initialize( parent, opts = {} ) #:nodoc: @parent = parent @opts = opts @page = @parent.page @css = '' end |
Instance Method Details
#default ⇒ Object
Default DcPage render method
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'app/renderers/dc_page_renderer.rb', line 99 def default can_view, msg = dc_user_can_view(@parent, @page) return msg unless can_view html = "<div class=\"#{@page.div_class} #{@opts[:div_class]}\">" 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() << '</div>' 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
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'app/renderers/dc_page_renderer.rb', line 73 def iframe return '' if @page.if_url.blank? html = "\n<iframe" html << " id=\"#{@page.if_id}\"" if @page.if_id.present? html << " class=\"#{@page.if_class}\"" if @page.if_class.present? html << " border=\"#{@page.if_border}\"" html << " height=\"#{@page.if_height}\"" if @page.if_height.present? html << " width=\"#{@page.if_width}\"" if @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.blank? ? '' : parameters) html << "src=\"#{url}\" ></iframe>\n" html end |
#render_css ⇒ Object
Return CSS part of code.
129 130 131 |
# File 'app/renderers/dc_page_renderer.rb', line 129 def render_css @css end |
#render_html ⇒ Object
Renderer dispatcher. Method returns HTML part of code.
121 122 123 124 |
# File 'app/renderers/dc_page_renderer.rb', line 121 def render_html method = @opts[:method] || 'default' respond_to?(method) ? send(method) : "Error DcPage: Method #{method} doesn't exist!" end |