Class: Exo::Resource::Item

Inherits:
Object
  • Object
show all
Includes:
Document
Defined in:
app/models/exo/resource/item.rb,
app/models/exo/resource/item/list_value.rb,
app/models/exo/resource/item/asset_value.rb,
app/models/exo/resource/item/simple_value.rb,
app/models/exo/resource/item/has_many_value.rb,
app/models/exo/resource/item/markdown_value.rb,
app/models/exo/resource/item/belongs_to_value.rb,
app/models/exo/resource/item/abstract_relation.rb

Defined Under Namespace

Classes: AbstractRelation, AbstractValue, AssetValue, BelongsToValue, HasManyValue, ListValue, MarkdownValue, SimpleValue

Instance Method Summary collapse

Instance Method Details

#meta_errorsObject



121
122
123
# File 'app/models/exo/resource/item.rb', line 121

def meta_errors
  @meta_errors ||= Exo::Resource::MetaErrors.new
end

#migrate_values!Object



27
28
29
30
31
32
# File 'app/models/exo/resource/item.rb', line 27

def migrate_values!
  self._values = values
  self.save!
  self[:values] = nil
  self.save!
end

#publishedObject Also known as: published?



73
74
75
# File 'app/models/exo/resource/item.rb', line 73

def published
  published_at && published_at <= DateTime.now
end

#published=(boolean) ⇒ Object



63
64
65
66
67
68
69
70
71
# File 'app/models/exo/resource/item.rb', line 63

def published= boolean
  boolean = boolean == 1 if boolean.kind_of?(Fixnum)
  boolean = boolean == "1" if boolean.kind_of?(String)
  if boolean
    self.published_at = DateTime.now unless published_at
  else
    self.published_at = nil
  end
end

#resourceObject



116
117
118
119
# File 'app/models/exo/resource/item.rb', line 116

def resource
  #NOT TESTED
  site.resources.where(slug_id: self.resource_slug_id).first
end

#resource!Object



107
108
109
110
# File 'app/models/exo/resource/item.rb', line 107

def resource!
  #NOT TESTED
  site.resources.find_by slug_id: self.resource_slug_id
end

#resource=(r) ⇒ Object



112
113
114
# File 'app/models/exo/resource/item.rb', line 112

def resource= r
  self.resource_slug_id = r.slug_id
end

#scheduledObject



77
78
79
# File 'app/models/exo/resource/item.rb', line 77

def scheduled
  published_at && published_at > DateTime.now
end

#set_asset(field_slug, value) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'app/models/exo/resource/item.rb', line 41

def set_asset field_slug, value
  puts "set asset #{field_slug} #{value}"
  if value == nil
    puts "empty"
    nil
  elsif !value
    puts "remove"
    assets.where(slug_id: field_slug).destroy_all
    nil
  else
    puts "push !"
    asset = assets.where(field_slug_id: field_slug).first || Exo::Resource::ItemAsset.new
    asset.field_slug_id = field_slug unless asset.field_slug_id
    asset.item = self unless asset.item
    asset.content = value
    asset.save
    puts "asset #{asset.inspect}"
    temp_asset[field_slug] = asset
    asset
  end
end

#siteObject



99
100
101
# File 'app/models/exo/resource/item.rb', line 99

def site
  Exo::Site.find_by slug_id: site_slug_id
end

#site=(site) ⇒ Object



95
96
97
# File 'app/models/exo/resource/item.rb', line 95

def site= site
  self.site_slug_id = site.slug_id
end

#slugify(value) ⇒ Object



34
35
36
37
38
39
# File 'app/models/exo/resource/item.rb', line 34

def slugify value
  _slug = value.downcase.gsub /([^a-z0-9])+/i, '-'
  _slug = _slug[1..-1] if _slug[0] == '-'
  _slug = _slug[0..-2] if _slug[-1] == '-'
  _slug
end

#temp_asset_for(meta_field) ⇒ Object



103
104
105
# File 'app/models/exo/resource/item.rb', line 103

def temp_asset_for meta_field
  temp_asset[meta_field.slug_id]
end

#value_for(meta_field) ⇒ Object



83
84
85
86
87
88
89
90
91
92
93
# File 'app/models/exo/resource/item.rb', line 83

def value_for meta_field
  meta_field = meta_field.slug_id if meta_field.kind_of?(Exo::Resource::MetaField)
  self.values.where(field_slug_id: meta_field.to_s).first
  # if meta_field.kind_of?(Exo::Resource::MetaValue) && meta_field.asset?
  #   v = self.assets.where(field_slug_id: meta_field.slug_id.to_sym).first
  #   v = temp_asset[meta_field.slug_id] unless v
  #   v
  # else
  #   self._values[meta_field.slug_id]
  # end
end