Class: ArPieceRenderer
- Inherits:
-
Object
- Object
- ArPieceRenderer
- Includes:
- AgileApplicationHelper, AgileCommonHelper
- Defined in:
- app/renderers/ar_piece_renderer.rb
Overview
Piece renderer renders data from ar_piece table.
Example:
<div id="page">
<%= agile_render(:ar_piece, :name => 'some_piece') %>
</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 ArPiece render method.
-
#initialize(env, opts = {}) ⇒ ArPieceRenderer
constructor
Object initialization.
-
#link_4edit ⇒ Object
Return link code for editing this piece.
-
#render_css ⇒ Object
Return CSS part of code.
-
#render_html ⇒ Object
Renderer dispatcher.
-
#script ⇒ Object
Script renderer method expects rails erb code (view) in the script field.
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 = {}) ⇒ ArPieceRenderer
Object initialization. It also loads requested ar_piece document.
40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'app/renderers/ar_piece_renderer.rb', line 40 def initialize( env, opts = {} ) #:nodoc: @env = env @opts = opts @piece = ArPiece.find(opts[:id]) if opts[:id] if @piece.nil? # alternatively find by name name = opts[:name] || opts[:id] @piece = if @opts[:site] ArPiece.find_by(name: name, site_id: agile_get_site.id) else ArPiece.find_by(name: name) end end end |
Instance Method Details
#default ⇒ Object
Default ArPiece render method.
98 99 100 101 |
# File 'app/renderers/ar_piece_renderer.rb', line 98 def default html = link_4edit() html += @piece.body end |
#link_4edit ⇒ Object
Return link code for editing this piece.
57 58 59 60 61 62 63 64 65 66 67 |
# File 'app/renderers/ar_piece_renderer.rb', line 57 def link_4edit() html = '' return html if @opts[:edit_mode] < 2 @opts[:edit_params].merge!( { table: 'ar_piece', form_name: 'ar_piece', controller: :agile, action: 'edit', id: @piece.id, title: "#{t('agile.edit')}: #{@piece.name}" } ) html += agile_link_for_edit( @opts[:edit_params] ) end |
#render_css ⇒ Object
Return CSS part of code.
115 116 117 |
# File 'app/renderers/ar_piece_renderer.rb', line 115 def render_css @piece ? "#{@piece.css}" : '' end |
#render_html ⇒ Object
Renderer dispatcher. Method returns HTML part of code.
106 107 108 109 110 |
# File 'app/renderers/ar_piece_renderer.rb', line 106 def render_html return " ArPiece #{@opts[:id]} #{@opts[:name]} not found!" unless @piece method = @opts[:method] || 'default' respond_to?(method) ? send(method) : "Error ArPiece: Method #{method} doesn't exist!" end |
#script ⇒ Object
Script renderer method expects rails erb code (view) in the script field. Used for designs with common code which can be shared and one part which is different. It’s functionality can be replaced with ar_replace_in_design method with ‘piece’ option specified.
Example: As used in design. Backslashing < and % is important <% <% part = “<div class=‘some-class’><%= agile_render(:my_renderer, method: ‘render_method’) %></div>” %> <%= agile_render(:ar_piece, id: ‘common’, method: ‘script’, replace: ‘[main]’, with: part) %>
Want to replace more than one part. Use array. <%= agile_render(:ar_piece, id: ‘common’, method: ‘script’, replace: [‘[part1]’,‘’], with: [part1, part2]) %>
82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'app/renderers/ar_piece_renderer.rb', line 82 def script s = @piece.script if @opts[:replace] # replace more than one part of code if @opts[:replace].class == Array 0.upto(@opts[:replace].size - 1) {|i| s.sub!(@opts[:replace][i], @opts[:with][i])} else s.sub!(@opts[:replace], @opts[:with]) end end @env.render(inline: s, layout: @opts[:layout]) end |