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



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

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

.on_pageObject



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

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

.on_templateObject



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

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

.reusableObject



18
19
20
# File 'app/models/refinery/widgets/widget.rb', line 18

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

Instance Method Details

#deep_dupObject



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

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



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

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)


61
62
63
# File 'app/models/refinery/widgets/widget.rb', line 61

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

#on_template?Boolean

Returns:

  • (Boolean)


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

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

#pagesObject



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

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



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

def sub_type_instance
  self.send(widget_type.association_name)
end

#templatesObject



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

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



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

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



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

def ultimate_widget_type
  widget ? widget.ultimate_widget_type : widget_type
end

#widget_typeObject



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

def widget_type
  WidgetType.find(sub_type)
end