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



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

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

.on_pageObject



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

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

.on_templateObject



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

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

.reusableObject



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

def self.reusable
  where(widget_id: nil, reuse: true)
end

Instance Method Details

#deep_dupObject



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

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



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

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)


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

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

#on_template?Boolean

Returns:

  • (Boolean)


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

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

#pagesObject



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

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



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

def sub_type_instance
  self.send(widget_type.association_name)
end

#templatesObject



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

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



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

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



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

def ultimate_widget_type
  widget ? widget.ultimate_widget_type : widget_type
end

#widget_typeObject



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

def widget_type
  WidgetType.find(sub_type)
end