Module: Workarea::Storefront::ContentHelper

Includes:
AnalyticsHelper
Defined in:
app/helpers/workarea/storefront/content_helper.rb

Instance Method Summary collapse

Methods included from AnalyticsHelper

#add_to_cart_analytics_data, #add_to_cart_confirmation_analytics_data, #cart_view_analytics_data, #category_view_analytics_data, #checkout_addresses_view_analytics_data, #checkout_edit_analytics_data, #checkout_login_analytics_data, #checkout_order_placed_analytics_data, #checkout_payment_selected_analytics_data, #checkout_payment_view_analytics_data, #checkout_shipping_service_selected_analytics_data, #checkout_shipping_view_analytics_data, #checkout_signup_analytics_data, #content_block_analytics_data, #email_signup_analytics_data, #forgot_password_analytics_data, #login_analytics_data, #order_analytics_data, #order_item_analytics_data, #primary_navigation_analytics_data, #product_analytics_data, #product_click_analytics_data, #product_list_analytics_data, #product_view_analytics_data, #remove_from_cart_analytics_data, #search_results_view_analytics_data, #signup_analytics_data, #update_cart_item_analytics_data, #validation_error_analytics_data

Instance Method Details

#content_block_classes_for(block) ⇒ Object



37
38
39
40
41
# File 'app/helpers/workarea/storefront/content_helper.rb', line 37

def content_block_classes_for(block)
  classes = []
  classes << content_block_visibility_classes_for(block)
  classes << content_block_type_class_for(block)
end

#content_block_type_class_for(block) ⇒ Object



51
52
53
# File 'app/helpers/workarea/storefront/content_helper.rb', line 51

def content_block_type_class_for(block)
  "content-block--#{block.type_id.to_s.dasherize}"
end

#content_block_visibility_classes_for(block) ⇒ Object



43
44
45
46
47
48
49
# File 'app/helpers/workarea/storefront/content_helper.rb', line 43

def content_block_visibility_classes_for(block)
  block
    .hidden_breakpoints
    .map { |n| "content-block--hidden-for-#{n.dasherize}" }
    .push('content-block')
    .join(' ')
end

#intrinsic_ratio_frame_styles(asset) ⇒ Object



65
66
67
68
# File 'app/helpers/workarea/storefront/content_helper.rb', line 65

def intrinsic_ratio_frame_styles(asset)
  return if asset.inverse_aspect_ratio.blank?
  "padding: 0 0 #{asset.inverse_aspect_ratio * 100}%; height: 0;"
end

#render_content_block(block) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
# File 'app/helpers/workarea/storefront/content_helper.rb', line 6

def render_content_block(block)
  (
    :div,
    render(partial: block.partial, locals: block.locals),
    class: content_block_classes_for(block),
    id: dom_id(block),
    data: {
      analytics: content_block_analytics_data(block),
      hidden_block_css_content: t('workarea.storefront.content_blocks.hidden_block_css_content')
    }
  )
end

#render_content_blocks(blocks) ⇒ Object



19
20
21
22
23
24
25
26
27
28
# File 'app/helpers/workarea/storefront/content_helper.rb', line 19

def render_content_blocks(blocks)
  if current_user.try(:admin?)
    render_content_blocks_without_cache(blocks)
  else
    Rails.cache.fetch(
      blocks.map(&:cache_key).push(cache_varies).join('/'),
      expires_in: Workarea.config.cache_expirations.render_content_blocks
    ) { render_content_blocks_without_cache(blocks) }
  end
end

#render_content_blocks_without_cache(blocks) ⇒ Object



30
31
32
33
34
35
# File 'app/helpers/workarea/storefront/content_helper.rb', line 30

def render_content_blocks_without_cache(blocks)
  blocks.inject('') do |result, block|
    result << render_content_block(block)
    result
  end.html_safe
end


55
56
57
58
59
60
61
62
63
# File 'app/helpers/workarea/storefront/content_helper.rb', line 55

def render_image_with_link(src, alt, css_block, url)
  image = image_tag(src, alt: alt, class: "#{css_block}__image")

  if url.present?
    link_to(image, url, class: "#{css_block}__image-link")
  else
    image
  end
end