Module: Designer::DesignerHelper
- Defined in:
- app/helpers/designer/designer_helper.rb
Instance Method Summary collapse
- #designer_attachment(image_key) ⇒ Object
-
#designer_content(text, context = {}) ⇒ Object
Render input text embeds and ERB.
- #designer_element_options(element) ⇒ Object
- #designer_embed(element_id) ⇒ Object
-
#designer_markdown(text, options = {}) ⇒ Object
Render input text as markdown.
- #designer_option(key) ⇒ Object
- #designer_preview_path ⇒ Object
- #designer_render(element) ⇒ Object
- #designer_render_resource(resource) ⇒ Object
- #designer_resource ⇒ Object
- #designer_resource_name ⇒ Object
- #designer_set_resource(resource) ⇒ Object
Instance Method Details
#designer_attachment(image_key) ⇒ Object
39 40 41 |
# File 'app/helpers/designer/designer_helper.rb', line 39 def image_key ActiveStorage::Attachment.joins(:blob).where(active_storage_blobs: {key: image_key}).first end |
#designer_content(text, context = {}) ⇒ Object
Render input text embeds and ERB
44 45 46 47 48 |
# File 'app/helpers/designer/designer_helper.rb', line 44 def designer_content text, context={} return if text.blank? ApplicationController.render inline: text, assigns: { _resource: designer_resource }.merge(context) end |
#designer_element_options(element) ⇒ Object
32 33 34 35 36 37 |
# File 'app/helpers/designer/designer_helper.rb', line 32 def element element.symbolize_keys! = {} .merge!(element[:values]) if element[:values] .symbolize_keys end |
#designer_embed(element_id) ⇒ Object
3 4 5 6 7 8 |
# File 'app/helpers/designer/designer_helper.rb', line 3 def element_id element = designer_resource.elements.find{|x| x['id'] == element_id } return "Cannot find element `#{element_id}`" unless element designer_render element end |
#designer_markdown(text, options = {}) ⇒ Object
Render input text as markdown
51 52 53 54 55 56 57 58 |
# File 'app/helpers/designer/designer_helper.rb', line 51 def designer_markdown text, = {} return if text.blank? Kramdown::Document.new(text, { syntax_highlighter_opts: { line_numbers: nil } }.merge()).to_html end |
#designer_option(key) ⇒ Object
78 79 80 81 82 |
# File 'app/helpers/designer/designer_helper.rb', line 78 def designer_option key Designer.configuration[designer_resource_name][key] rescue raise "Mismatch designer option `#{val}` for `#{designer_resource_name}`" end |
#designer_preview_path ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'app/helpers/designer/designer_helper.rb', line 60 def designer_preview_path path = designer_option(:preview_path) || ':resource_name/:id' path_parts = path.split('/') path_parts.map! do |part| if part[0] == ':' param = part[1..-1] if params[param] params[param] else designer_resource.send(param) end else part end end path_parts.join('/') end |
#designer_render(element) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 |
# File 'app/helpers/designer/designer_helper.rb', line 10 def designer_render element element = element.symbolize_keys template_path = designer_option(:elements_template_path) if lookup_context.exists?(element[:template], designer_option(:elements_template_path), true) render "#{template_path}/#{element[:template]}", (element) elsif lookup_context.exists?(element[:template], 'designer/elements', true) render "designer/elements/#{element[:template]}", (element) else raise "Missing designer template `#{element[:template]}`" end end |
#designer_render_resource(resource) ⇒ Object
22 23 24 25 26 27 28 29 30 |
# File 'app/helpers/designer/designer_helper.rb', line 22 def designer_render_resource resource return unless resource&.elements designer_set_resource resource resource.elements.each_with_object('') do |element, html| next if element['hidden'] || element[:hidden] result = designer_render element html << result if result end.html_safe end |
#designer_resource ⇒ Object
92 93 94 |
# File 'app/helpers/designer/designer_helper.rb', line 92 def designer_resource @_resource || @resource end |
#designer_resource_name ⇒ Object
84 85 86 |
# File 'app/helpers/designer/designer_helper.rb', line 84 def designer_resource_name designer_resource&.model_name&.route_key || params[:resource_name] end |
#designer_set_resource(resource) ⇒ Object
88 89 90 |
# File 'app/helpers/designer/designer_helper.rb', line 88 def designer_set_resource resource @_resource = resource end |