Class: ArPageRenderer
- Inherits:
-
Object
- Object
- ArPageRenderer
- Includes:
- AgileApplicationHelper, AgileCommonHelper
- Defined in:
- app/renderers/ar_page_renderer.rb
Overview
Page renderer renders data from ar_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">
<%= agile_render(:ar_page, div_class: 'my-pages') %>
</div>
Instance Attribute Summary
Attributes included from AgileApplicationHelper
#design, #footer_record, #form, #ids, #json_ld, #menu, #menu_item, #options, #page, #page_title, #part, #parts, #record, #site, #tables
Instance Method Summary collapse
-
#default ⇒ Object
Default ArPage render method.
- #gallery ⇒ Object
-
#iframe ⇒ Object
Render IFrame part if defined on page.
-
#initialize(env, opts = {}) ⇒ ArPageRenderer
constructor
Object initialization.
- #poll ⇒ Object
-
#render_css ⇒ Object
Return CSS part of code.
-
#render_html ⇒ Object
Renderer dispatcher.
Methods included from AgileCommonHelper
agile_choices_for_field, #agile_format_date_time, #agile_format_number, #agile_help_body, #agile_help_button, #agile_help_fields, #agile_help_for_tab, #agile_icon_for_boolean, #agile_name_for_id, #agile_steps_menu_get, #agile_text_for_value, #t, #t_label_for_column, #t_label_for_field, #t_table_name, #url_forward_params
Methods included from AgileApplicationHelper
#_agile_link_to, #_origin, #agile_add2_record_cookie, #agile_add_json_ld, #agile_add_meta_tag, #agile_ajax_link_to, #agile_application_menu, #agile_big_table_choices, #agile_big_table_name_for_value, #agile_choices_for, #agile_choices_for_all_tables, #agile_choices_for_folders, #agile_choices_for_menu, #agile_choices_for_site_policies, #agile_deprecate, #agile_dialog_title, #agile_dont?, #agile_edit_frame, #agile_edit_mode?, #agile_edit_title, #agile_error_messages_for, #agile_flash_messages, #agile_get_json_ld, #agile_get_seo_meta_tags, #agile_get_site, #agile_icon_for_link, #agile_img_alt, #agile_img_alt_tag, #agile_internal_var, #agile_limit_string, #agile_link_for_create, #agile_link_for_edit, #agile_link_for_edit1, #agile_link_menu_tag, #agile_link_to, #agile_menu_class, #agile_new_title, #agile_page_bottom, #agile_page_class, #agile_page_edit_menu, #agile_page_top, #agile_render, #agile_render_part, #agile_submit_tag, #agile_user_can_view, #agile_user_has_role?, #agile_warning_messages_for, #decamelize_type
Constructor Details
#initialize(env, opts = {}) ⇒ ArPageRenderer
Object initialization.
44 45 46 47 48 49 |
# File 'app/renderers/ar_page_renderer.rb', line 44 def initialize( env, opts={} ) #:nodoc: @env = env @opts = opts @page = @env.page @css = '' end |
Instance Method Details
#default ⇒ Object
Default ArPage render method
117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
# File 'app/renderers/ar_page_renderer.rb', line 117 def default can_view, msg = agile_user_can_view(@env, @page) return msg unless can_view @env.page_title = @page.title.blank? ? @page.subject : @page.title html = "<div class=\"#{@page.div_class} #{@opts[:div_class]}\">" html += () if @opts[:edit_mode] > 1 html += @page.body html += poll() if @page.ar_poll_id.to_i > 0 html += gallery() if @page.gallery html += iframe() if @page.if_url.present? html += '</div>' end |
#gallery ⇒ Object
107 108 109 110 111 112 |
# File 'app/renderers/ar_page_renderer.rb', line 107 def gallery opts = @opts.merge(doc_id: @page.id, doc_type: @page.class.to_s.underscore, method: nil) gall = ArGalleryRenderer.new(@env, opts) @css += "\n#{gall.render_css}" "<div class='wrap row'>#{gall.render_html}</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 |
# File 'app/renderers/ar_page_renderer.rb', line 73 def iframe 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.present? 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 = @env.ar_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 |
#poll ⇒ Object
97 98 99 100 101 102 |
# File 'app/renderers/ar_page_renderer.rb', line 97 def poll opts = @opts.merge(poll_id: @page.ar_poll_id, return_to: @env.request.url, method: nil) poll = ArPollRenderer.new(@env, opts) @css += "\n#{poll.render_css}" "<div class='wrap row'>#{poll.render_html}</div>" end |
#render_css ⇒ Object
Return CSS part of code.
143 144 145 |
# File 'app/renderers/ar_page_renderer.rb', line 143 def render_css @css end |
#render_html ⇒ Object
Renderer dispatcher. Method returns HTML part of code.
135 136 137 138 |
# File 'app/renderers/ar_page_renderer.rb', line 135 def render_html method = @opts[:method] || 'default' respond_to?(method) ? send(method) : "Error ArPage: Method #{method} doesn't exist!" end |