Module: BootstrapHelper

Defined in:
app/helpers/bootstrap_helper.rb

Instance Method Summary collapse

Instance Method Details



94
95
96
97
98
99
100
101
# File 'app/helpers/bootstrap_helper.rb', line 94

def breadcrumbs items
  divider = ''
   :ul, :class=>'breadcrumb' do
    items.map do |i|
       :li, i[:url] ? link_to( i[:title], i[:url] ) : i[:title], :class=>(:active if i[:active])
    end.join("<li class='divider'>#{divider}</li>").html_safe
  end.html_safe
end

#button(text, url = nil, options = {}) ⇒ Object

Вывод кнопки с иконкой, можно и без иконки



140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
# File 'app/helpers/bootstrap_helper.rb', line 140

def button(text, url = nil, options = {})
  # ОПЦИИ
  # :color        цвет кнопки, может быть пустым, 
  #               :red, :blue, :green, :yellow, :black, либо согласно bootstrap (напр. :primary)
  #
  # :icon         имя иконки, символ или строка. если nil - иконки нет.
  #               список здесь: http://twitter.github.com/bootstrap/base-css.html#icons
  #
  # :icon_color   в идеале - не используется, цвет иконки выбирается автоматически, если :color задан корректно. 
  #               если нет, заменяет цвет иконки. может быть :white.
  #
  # другие параметры передаются напрямую хелперу link_to, можно использовать их        
  # 
  # ПРИМЕР
  # button 'Обновить', items_path, color: :blue, icon: :refresh, remote: true
  #
  # !!!ВАЖНО!!!
  # не вставлять в text пользовательский текст, он может содержать вредоносный код, вызывается html_safe
  button_class = case options[:color]
    when nil     then 'btn'
    when :red    then 'btn btn-danger'
    when :blue   then 'btn btn-primary'
    when :green  then 'btn btn-success'
    when :yellow then 'btn btn-warning'
    when :black  then 'btn btn-inverse'
    else              'btn btn-'+options[:color].to_s
  end
  if options[:icon]
    icon = '<i class="icon'+('-white' if options[:icon_color].to_s == "white" || [:red, :blue, :green, :black].include?(options[:color])).to_s+' icon-'+options[:icon].to_s+'"> </i> '
    text = icon+text
  end
  options.delete_if{|k,v|[:color, :icon, :icon_color].include?(k)}
  options[:class] = button_class
  # если кто-то сильно против тега A и хочет BUTTON - можно сделать, но будет адский костыль.
  link_to text.html_safe, url, options 
end

#button_group(id, &block) ⇒ Object

Public: Создает группу объединенных кнопок.

type - тип кпопок (:radio, :checkbox)

Examples:

= button_group(:radio) do |g|
  = g.button('Home')
  = g.button('Posts')


117
118
119
120
# File 'app/helpers/bootstrap_helper.rb', line 117

def button_group(id,&block)
  builder = TwitterBootstrap::ButtonGroupBuilder.new(id,self)
  builder.build(block)
end

#button_group_with_tabs(&block) ⇒ Object

Public: Создает группу кнопок и связанные с ними вкладки.

Examples

= button_group_with_tabs do |g|
  = g.button('Home','home', active: true) do
    %h3 Home
    ...
  = g.button('Posts', 'posts') do
    %h3 Posts
    ....


134
135
136
137
# File 'app/helpers/bootstrap_helper.rb', line 134

def button_group_with_tabs(&block)
  builder = TwitterBootstrap::ButtonGroupWithTabsBuilder.new(self)
  builder.build(block)
end

#error_notification(form) ⇒ Object

Call it for form object



37
38
39
40
41
42
43
# File 'app/helpers/bootstrap_helper.rb', line 37

def error_notification(form)
  if form.error_notification
    show_alert :error, :close=>true do
      form.error_notification
    end
  end
end

#gray_icon(name, opts = {}, &block) ⇒ Object



30
31
32
33
# File 'app/helpers/bootstrap_helper.rb', line 30

def gray_icon name, opts={}, &block
  opts[:class] = [opts[:class], 'icon-gray'].compact * ' '
  icon name, opts, &block
end

#icon(name, opts = {}, &block) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'app/helpers/bootstrap_helper.rb', line 5

def icon name, opts={}, &block
  icon_args = {}
  span_args = {}

  icon_args[:class] = ["icon-#{name}", opts[:class]].compact * ' '

  if opts[:tooltip]
    span_args[:rel] = :tooltip
    span_args[:title] = opts[:tooltip]
  end

  if block_given?
     :span, span_args do
      ( :i, '', icon_args ) << ( :span, block.call, :class=>'icon-text' )
    end
  else
     :i, '', icon_args.merge(span_args)
  end
end


103
104
105
106
# File 'app/helpers/bootstrap_helper.rb', line 103

def nav_tabs opts={}, &block
  @tabs = TwitterBootstrap::TabsGenerator.new self, opts
  @tabs.generate block
end

#show_alert(type_or_options = nil, options = {}, &block) ⇒ Object

alert :close=>true, :block=>true do

Можно и так, без типа



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'app/helpers/bootstrap_helper.rb', line 65

def show_alert type_or_options=nil, options={}, &block
  alert_classes = ['alert']

  if type_or_options.is_a?(Hash)
    options = type_or_options
  elsif type_or_options.present?
    alert_classes << "alert-#{type_or_options}"
  end

  alert_classes << "alert-block" if options[:block]
  alert_classes << options[:class] if options[:class]

  content = ''
  content << link_to('×', '#', :class=>:close, :'data-dismiss'=>'alert').html_safe if options[:close]
  content << capture(&block).html_safe

   :div, content.html_safe, :class => alert_classes.join(' ')
end

#show_flashesObject



84
85
86
87
88
89
90
91
92
# File 'app/helpers/bootstrap_helper.rb', line 84

def show_flashes
  flashes=''
  flash.each do |type,content|
    flashes << show_alert(type, :close=>true) do
      content
    end
  end
  flashes.html_safe
end

#white_icon(name, opts = {}, &block) ⇒ Object



25
26
27
28
# File 'app/helpers/bootstrap_helper.rb', line 25

def white_icon name, opts={}, &block
  opts[:class] = [opts[:class], 'icon-white'].compact * ' '
  icon name, opts, &block
end