Class: Refinery::Widgets::Widget

Inherits:
Core::BaseModel
  • Object
show all
Defined in:
app/models/refinery/widgets/widget.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#widget_attributesObject

Returns the value of attribute widget_attributes.



10
11
12
# File 'app/models/refinery/widgets/widget.rb', line 10

def widget_attributes
  @widget_attributes
end

Class Method Details

.has_nameObject



24
25
26
# File 'app/models/refinery/widgets/widget.rb', line 24

def self.has_name
  where(["name != ? AND name IS NOT NULL", ''])
end

.on_pageObject



28
29
30
# File 'app/models/refinery/widgets/widget.rb', line 28

def self.on_page
  where(container_type: 'Refinery::PagePart')
end

.on_templateObject



32
33
34
# File 'app/models/refinery/widgets/widget.rb', line 32

def self.on_template
  where(container_type: 'Refinery::Widgets::TemplatePart')
end

.reusableObject



20
21
22
# File 'app/models/refinery/widgets/widget.rb', line 20

def self.reusable
  where(widget_id: nil)
end

Instance Method Details

#deep_dupObject



48
49
50
51
52
53
# File 'app/models/refinery/widgets/widget.rb', line 48

def deep_dup
  ret = self.dup
  sub_type_copy = self.sub_type_instance.dup
  ret.send("#{self.widget_type.association_name}=", sub_type_copy)
  ret
end

#dup_by_refObject



55
56
57
58
59
60
61
# File 'app/models/refinery/widgets/widget.rb', line 55

def dup_by_ref
  ret = Widget.new
  ret.widget = self
  ret.sub_type = self.class.to_s
  ret.name = self.name
  ret
end

#on_page?Boolean

Returns:

  • (Boolean)


63
64
65
# File 'app/models/refinery/widgets/widget.rb', line 63

def on_page?
  container_type == 'Refinery::PagePart'
end

#on_template?Boolean

Returns:

  • (Boolean)


67
68
69
# File 'app/models/refinery/widgets/widget.rb', line 67

def on_template?
  container_type == 'Refinery::Widgets::TemplatePart'
end

#pagesObject



80
81
82
83
84
85
86
87
# File 'app/models/refinery/widgets/widget.rb', line 80

def pages
  ret = []
  ret << self.container.page if self.on_page? && self.container
  Widget.where(widget_id: self.id).each do |w|
    ret << w.container.page if w.on_page? && w.container
  end
  ret
end

#sub_type_instanceObject



44
45
46
# File 'app/models/refinery/widgets/widget.rb', line 44

def sub_type_instance
  self.send(widget_type.association_name)
end

#templatesObject



71
72
73
74
75
76
77
78
# File 'app/models/refinery/widgets/widget.rb', line 71

def templates
  ret = []
  ret << self.container.template if self.on_template? && self.container
  Widget.where(widget_id: self.id).each do |w|
    ret << w.container.template if w.on_template? && w.container
  end
  ret
end

#times_usedObject



89
90
91
92
93
94
95
96
97
# File 'app/models/refinery/widgets/widget.rb', line 89

def times_used
  if widget
    widget.times_used
  elsif new_record?
    0
  else
    Widget.where(widget_id: id).count + 1
  end
end

#ultimate_widget_typeObject



40
41
42
# File 'app/models/refinery/widgets/widget.rb', line 40

def ultimate_widget_type
  widget ? widget.ultimate_widget_type : widget_type
end

#widget_typeObject



36
37
38
# File 'app/models/refinery/widgets/widget.rb', line 36

def widget_type
  WidgetType.find(sub_type)
end