Class: Dugway::Drops::ProductDrop

Inherits:
BaseDrop
  • Object
show all
Defined in:
lib/dugway/liquid/drops/product_drop.rb

Instance Attribute Summary

Attributes inherited from BaseDrop

#params, #request, #source

Instance Method Summary collapse

Methods inherited from BaseDrop

#before_method, #cart, #context=, #error, #errors, #initialize, #method_missing, #store, #theme

Constructor Details

This class inherits a constructor from Dugway::Drops::BaseDrop

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Dugway::Drops::BaseDrop

Instance Method Details

#artistsObject



93
94
95
# File 'lib/dugway/liquid/drops/product_drop.rb', line 93

def artists
  @artists ||= source['artists'].map { |a| ArtistDrop.new(a) } rescue []
end

#categoriesObject



89
90
91
# File 'lib/dugway/liquid/drops/product_drop.rb', line 89

def categories
  @categories ||= source['categories'].map { |c| CategoryDrop.new(c) } rescue []
end

#created_atObject



4
5
6
# File 'lib/dugway/liquid/drops/product_drop.rb', line 4

def created_at
  Time.parse(source['created_at'])
end

#css_classObject



97
98
99
100
101
102
103
104
105
# File 'lib/dugway/liquid/drops/product_drop.rb', line 97

def css_class
  @css_class ||= begin
    c = 'product'
    c += ' sold' if status == 'sold-out'
    c += ' soon' if status == 'coming-soon'
    c += ' sale' if on_sale
    c
  end
end

#edit_urlObject



85
86
87
# File 'lib/dugway/liquid/drops/product_drop.rb', line 85

def edit_url
  'http://bigcartel.com'
end

#has_default_optionObject



24
25
26
# File 'lib/dugway/liquid/drops/product_drop.rb', line 24

def has_default_option
  @has_default_option ||= options.size == 1 && option.name.downcase == 'default'
end

#has_option_groupsObject



40
41
42
# File 'lib/dugway/liquid/drops/product_drop.rb', line 40

def has_option_groups
  source['has_option_groups']
end

#imageObject



53
54
55
# File 'lib/dugway/liquid/drops/product_drop.rb', line 53

def image
  @image ||= images.blank? ? nil : images.first
end

#image_countObject



61
62
63
# File 'lib/dugway/liquid/drops/product_drop.rb', line 61

def image_count
  @image_count ||= images.size
end

#imagesObject



57
58
59
# File 'lib/dugway/liquid/drops/product_drop.rb', line 57

def images
  @images ||= source['images'].present? ? source['images'].map { |image| ImageDrop.new(image) } : []
end

#max_priceObject



16
17
18
# File 'lib/dugway/liquid/drops/product_drop.rb', line 16

def max_price
  @max_price ||= price_min_max.last
end

#min_priceObject



12
13
14
# File 'lib/dugway/liquid/drops/product_drop.rb', line 12

def min_price
  @min_price ||= price_min_max.first
end

#next_productObject



75
76
77
78
79
80
81
82
83
# File 'lib/dugway/liquid/drops/product_drop.rb', line 75

def next_product
  @next_product ||= begin
    if next_product = store.next_product(permalink)
      ProductDrop.new(next_product)
    else
      nil
    end
  end
end

#optionObject



28
29
30
# File 'lib/dugway/liquid/drops/product_drop.rb', line 28

def option
  @option ||= options.blank? ? nil : options.first
end

#option_groupsObject



44
45
46
47
# File 'lib/dugway/liquid/drops/product_drop.rb', line 44

def option_groups
  @option_groups ||= source['option_groups'].present? ?
    source['option_groups'].map { |group| OptionGroupDrop.new(group) } : []
end

#optionsObject



32
33
34
# File 'lib/dugway/liquid/drops/product_drop.rb', line 32

def options
  @options ||= source['options'].each_with_index.map { |o,i| ProductOptionDrop.new(o.update('position' => i+1, 'product' => self)) }
end

#options_in_stockObject



36
37
38
# File 'lib/dugway/liquid/drops/product_drop.rb', line 36

def options_in_stock
  @options_in_stock ||= options.reject { |o| o.sold_out }
end

#previous_productObject



65
66
67
68
69
70
71
72
73
# File 'lib/dugway/liquid/drops/product_drop.rb', line 65

def previous_product
  @previous_product ||= begin
    if previous_product = store.previous_product(permalink)
      ProductDrop.new(previous_product)
    else
      nil
    end
  end
end

#priceObject



8
9
10
# File 'lib/dugway/liquid/drops/product_drop.rb', line 8

def price
  nil # price is deprecated in favor of default_price
end

#shippingObject



49
50
51
# File 'lib/dugway/liquid/drops/product_drop.rb', line 49

def shipping
  @shipping ||= source['shipping'].present? ? source['shipping'].map { |o| ShippingOptionDrop.new(o.update('product' => self)) } : []
end

#variable_pricingObject



20
21
22
# File 'lib/dugway/liquid/drops/product_drop.rb', line 20

def variable_pricing
  @variable_pricing ||= min_price != max_price
end