Class: KirguduBase::DynamicPages::PageElementsBlockBuilder

Inherits:
Builder
  • Object
show all
Defined in:
app/models/kirgudu_base/dynamic_pages/page_elements_block_builder.rb

Instance Method Summary collapse

Constructor Details

#initialize(&block) ⇒ PageElementsBlockBuilder

Returns a new instance of PageElementsBlockBuilder.



4
5
6
7
8
9
10
11
12
# File 'app/models/kirgudu_base/dynamic_pages/page_elements_block_builder.rb', line 4

def initialize(&block)
  self.builder_options[:forms] = {}
  self.builder_options[:lists] = {}
  self.builder_options[:entries] = {}
  self.builder_options[:tabs] = {}
  self.builder_options[:elements] = []

  super(&block)
end

Instance Method Details

#entry(name, &block) ⇒ Object



52
53
54
55
56
57
58
59
# File 'app/models/kirgudu_base/dynamic_pages/page_elements_block_builder.rb', line 52

def entry(name, &block)
  #raise "Error from List. List Name: #{name}"
  raise "Cannot create empty Entry" unless block_given?
  element = ::KirguduBase::DynamicPages::EntryBuilder.new(name, &block).to_element
  raise "Duplicate Entry with name: #{element.name}" if self.builder_options[:entries][element.name]
  self.builder_options[:entries][element.name] = element
  self.builder_options[:elements] << element
end

#form(name, &block) ⇒ Object



14
15
16
17
18
19
20
# File 'app/models/kirgudu_base/dynamic_pages/page_elements_block_builder.rb', line 14

def form(name, &block)
  raise "Cannot create empty Form" unless block_given?
  element = ::KirguduBase::DynamicPages::FormBuilder.new(name, &block).to_element
  raise "Duplicate Form with name: #{element.name}" if self.builder_options[:forms][element.name]
  self.builder_options[:forms][element.name] = element
  self.builder_options[:elements] << element
end

#group(name, &block) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
# File 'app/models/kirgudu_base/dynamic_pages/page_elements_block_builder.rb', line 39

def group(name, &block)
  raise "Cannot create empty Group" unless block_given?
  element = ::KirguduBase::DynamicPages::GroupBuilder.new(name, ::KirguduBase::DynamicPages::Enums::ELEMENTS_FOR_PAGE, &block).to_element
  self.builder_options[:elements].each do |elm|
    if elm.is_a?(::KirguduBase::DynamicPages::Group)
      if elm.name == name
        raise "Duplicate Group with name: #{element.name}" if self.builder_options[:groups][element.name]
      end
    end
  end
  self.builder_options[:elements] << element
end

#list(name, &block) ⇒ Object



22
23
24
25
26
27
28
29
# File 'app/models/kirgudu_base/dynamic_pages/page_elements_block_builder.rb', line 22

def list(name, &block)
  #raise "Error from List. List Name: #{name}"
  raise "Cannot create empty List" unless block_given?
  element = ::KirguduBase::DynamicPages::ListBuilder.new(name, &block).to_element
  raise "Duplicate List with name: #{element.name}" if self.builder_options[:lists][element.name]
  self.builder_options[:lists][element.name] = element
  self.builder_options[:elements] << element
end

#tab(name, &block) ⇒ Object



31
32
33
34
35
36
37
# File 'app/models/kirgudu_base/dynamic_pages/page_elements_block_builder.rb', line 31

def tab(name, &block)
  #raise "Error from List. List Name: #{name}"
  element = ::KirguduBase::DynamicPages::PageTabBuilder.new(name, &block).to_element
  raise "Duplicate Tab with name: #{element.name}" if self.builder_options[:tabs][element.name]
  self.builder_options[:tabs][element.name] = element
  self.builder_options[:elements] << element
end

#to_elementsObject



62
63
64
# File 'app/models/kirgudu_base/dynamic_pages/page_elements_block_builder.rb', line 62

def to_elements
  @elements
end