Module: RailsConnector::CmsTagHelper
- Included in:
- DefaultCmsHelper
- Defined in:
- app/helpers/rails_connector/cms_tag_helper.rb
Instance Method Summary collapse
-
#cms_tag(tag_name, obj_or_widget, field_name, options = {}, &block) ⇒ String
Returns an HTML block tag containing content from an Obj.
Instance Method Details
#cms_tag(tag_name, obj_or_widget, field_name, options = {}, &block) ⇒ String
Returns an HTML block tag containing content from an Obj. Add HTML attributes by passing an attributes hash to options. The helper method is somewhat similar to (and internally uses) api.rubyonrails.org/classes/ActionView/Helpers/TagHelper.html#method-i-content_tag.
This helper method also renders additional data attributes, which are needed for inplace editing. These attributes are only rendered when appropriate, i.e. not for a regular visitor.
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'app/helpers/rails_connector/cms_tag_helper.rb', line 41 def cms_tag(tag_name, , field_name, = {}, &block) begin field_type = .type_of_attribute(field_name.to_s) rescue RailsConnectorError => e return content_tag(tag_name, '', ) end if inplace_editing_allowed? = .merge({ 'data-ip-field-name' => field_name, 'data-ip-field-obj-class' => .obj_class, 'data-ip-field-type' => field_type, }) if .kind_of?(BasicWidget) ['data-ip-private-field-id'] = .obj.id ['data-ip-private-field-widget-id'] = .id else ['data-ip-private-field-id'] = .id end end if field_type == 'widget' = [field_name].map do || (, , field_name, ) end inner_html = safe_join() else if inplace_editing_allowed? && FIELD_TYPES_WITH_ORIGINAL_CONTENT.include?(field_type) original_value = display_original_value([field_name]) original_content = cms_tag_original_content(field_type, original_value) ['data-ip-private-field-original-content'] = MultiJson.encode(original_content) end inner_html = block_given? ? capture { yield } : display_value([field_name]) end if VOID_TAGS.include?(tag_name.to_s) tag(tag_name, ) else content_tag(tag_name, inner_html, ) end end |