Class: OMF::Web::Theme::WidgetChrome

Inherits:
Erector::Widget
  • Object
show all
Defined in:
lib/omf-web/theme/bright/widget_chrome.rb

Instance Method Summary collapse

Constructor Details

#initialize(widget, inside_component, opts) ⇒ WidgetChrome

Returns a new instance of WidgetChrome.



6
7
8
9
10
11
# File 'lib/omf-web/theme/bright/widget_chrome.rb', line 6

def initialize(widget, inside_component, opts)
  super opts
  @widget = widget
  @inside_component = inside_component
  @opts = opts
end

Instance Method Details

#contentObject



17
18
19
# File 'lib/omf-web/theme/bright/widget_chrome.rb', line 17

def content
  render_widget(@widget)
end

#render_card_bodyObject



13
14
15
# File 'lib/omf-web/theme/bright/widget_chrome.rb', line 13

def render_card_body
  rawtext @widget.content.to_html
end

#render_tools_menuObject



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/omf-web/theme/bright/widget_chrome.rb', line 42

def render_tools_menu
  menu = @opts[:menu] || {}
  span :class => 'widget_tools_menu', :style => 'float:right' do
    ol :class => :widget_tools_menu do
      menu.each do |m|
        lopts = {}
        lopts[:class] = "#{m[:class]}#{m[:is_active] ? ' current' : ''}"
        lopts[:id] = m[:id]
        li lopts do
          a :id => "#{m[:id]}_a", :href => "#"  do
            span m[:name] || '???', :class => :widget_tools_menu
          end
        end
      end
      li :class => 'info' do
        a :id => "w#{object_id}_info_a", :href => "#"  do
          span 'Info' , :class => :widget_tools_menu
        end
      end
    end
  end
  js = menu.map do |m|
    %{
      $('\##{m[:id]}_a').click(function(){
        return #{m[:js_function]}(#{m.to_json});
      });
    }
  end
  javascript %{
    #{js.join("\n")}
  }
end

#render_widget(widget) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/omf-web/theme/bright/widget_chrome.rb', line 21

def render_widget(widget)
  wid = "w#{widget.object_id}_c"
  div :class => :widget_container, :id => wid do
    if @opts[:chrome] == false
      render_widget_body(widget)
    else
      render_widget_header(widget)
      render_widget_info(widget)
      render_widget_body(widget)
      render_widget_footer(widget)
    end
  end
end

#render_widget_body(widget_inst) ⇒ Object



90
91
92
93
94
95
96
# File 'lib/omf-web/theme/bright/widget_chrome.rb', line 90

def render_widget_body(widget_inst)
  id = "b#{widget_inst.widget_id}"
  id = "w#{widget_inst.object_id}_b"
  div :class => :widget_body, :id => id do
    rawtext @inside_component.to_html
  end
end


98
99
100
# File 'lib/omf-web/theme/bright/widget_chrome.rb', line 98

def render_widget_footer(widget)
  # NOTHING
end

#render_widget_header(widget) ⇒ Object



35
36
37
38
39
40
# File 'lib/omf-web/theme/bright/widget_chrome.rb', line 35

def render_widget_header(widget)
  div :class => :widget_header do
    span widget.title || widget.name, :class => :widget_title
    render_tools_menu
  end
end

#render_widget_info(widget) ⇒ Object



75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/omf-web/theme/bright/widget_chrome.rb', line 75

def render_widget_info(widget)
  if widget_info = widget.widget_info
    wp = "w#{object_id}"
    div :id => "#{wp}_info", :class => 'widget_info', :style => 'display:none' do
      text widget_info
    end
    javascript %{
      $('\##{wp}_info_a').click(function(){
        $('\##{wp}_info').slideToggle("slow");
        return false;
      });
    }
  end
end