twitter-bootstrap-for-rails 1.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +694 -0
  6. data/Rakefile +1 -0
  7. data/app/helpers/bootstrap_panel_helper.rb +62 -0
  8. data/app/helpers/breadcrumbs_helper.rb +10 -0
  9. data/app/helpers/dropdown_helper.rb +144 -0
  10. data/app/helpers/flash_block_helper.rb +48 -0
  11. data/app/helpers/form_group_helper.rb +21 -0
  12. data/app/helpers/glyphicon_helper.rb +38 -0
  13. data/app/helpers/modal_dialog_helper.rb +81 -0
  14. data/app/helpers/navbar_helper.rb +234 -0
  15. data/app/helpers/paginator_helper.rb +63 -0
  16. data/app/helpers/resource_table_helper.rb +165 -0
  17. data/app/helpers/title_helper.rb +24 -0
  18. data/app/views/twitter-bootstrap/_breadcrumbs.erb +13 -0
  19. data/lib/bs_form_builder.rb +95 -0
  20. data/lib/form_builder.rb +125 -0
  21. data/lib/helpers.rb +14 -0
  22. data/lib/twitter/bootstrap/for/rails.rb +50 -0
  23. data/lib/twitter/bootstrap/for/rails/breadcrumbs.rb +65 -0
  24. data/lib/twitter/bootstrap/for/rails/version.rb +10 -0
  25. data/twitter-bootstrap-for-rails.gemspec +23 -0
  26. data/vendor/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  27. data/vendor/assets/fonts/glyphicons-halflings-regular.svg +229 -0
  28. data/vendor/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  29. data/vendor/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  30. data/vendor/assets/javascripts/bootstrap.js +2002 -0
  31. data/vendor/assets/javascripts/bootstrap.min.js +9 -0
  32. data/vendor/assets/javascripts/bs-confirmation-dialog.js.erb +24 -0
  33. data/vendor/assets/stylesheets/bootstrap.css.erb +7098 -0
  34. data/vendor/assets/stylesheets/bootstrap.min.css.erb +9 -0
  35. metadata +105 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 62db7fe57ee026bf081a2544227be6cfe4c80a2a
4
+ data.tar.gz: 1f00188dabe3b5285eaec9e204d5c30405d8f7a5
5
+ SHA512:
6
+ metadata.gz: 85eb725cc2f34b3b06ec7922a00b09d53674e0f5c4bed8904dee6ea0dda625a22c353d8003975855fe0ec96400e68b4b66c1bae3b62c73ace8aad69afde2e1ff
7
+ data.tar.gz: 1bfc4f7fe8c913eba7af979c50e9307ae7dcabf8ee12b93b8eb13edc4d50128e7befb0e4868e3b4e80d3fb8963986afad1a60b822b7e7e5e7d5f41b0750753ae
data/.gitignore ADDED
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ .idea/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in twitter-bootstrap-for-rails.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Ivan
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,694 @@
1
+ # Twitter Bootstrap For Rails
2
+
3
+ This gem allow you to use <a href="http://getbootstrap.com/">Twitter Bootstrap 3</a> in ruby on rails application.
4
+
5
+ Current using version of Twitter Bootstrap is 3.0.2
6
+
7
+ Feedback: khrapach_ivan@mail.ru
8
+
9
+ ## Installing the gem
10
+
11
+ Inset to the `gemfile` of your RoR application:
12
+
13
+ ```ruby
14
+ gem 'twitter-bootstrap-for-rails', git: 'https://github.com/Xp-Apache/twitter-bootstrap-for-rails'
15
+ ```
16
+
17
+ Run `bundle install`:
18
+
19
+ Include stylesheets and javascript of Twitter Bootstrap in you `application.css` and `application.js`.
20
+
21
+ `assets/stylesheets/application.css`:
22
+
23
+ ```css
24
+ /*
25
+ *= require bootstrap
26
+ */
27
+ ```
28
+
29
+ `assets/javascripts/application.js`:
30
+
31
+ ```js
32
+ //
33
+ //= require bootstrap
34
+ //
35
+ ```
36
+
37
+ If you want use minified script and stylesheets, replase `require bootstrap` on `require bootstrap.min`
38
+ in `application.css` and `application.js` files.
39
+
40
+ ## Glyphicons
41
+
42
+ <a href="http://glyphicons.com/">Glyphicons</a> Halflings are normally not available for free, but their creator has made them available
43
+ for Bootstrap free of cost. As a thank you, we only ask that you to include a link back to
44
+ <a href="http://glyphicons.com/">Glyphicons</a>
45
+ whenever possible.
46
+
47
+ ### Using
48
+ ```erb
49
+ <%= glyph :search %>
50
+ ```
51
+
52
+ ## Form group
53
+
54
+ ### Basic usage
55
+
56
+ ```erb
57
+ <%= form_for @o do |f| %>
58
+ <%= form_group class: 'has-error' do %>
59
+ <%= f.label :some_field %>
60
+ <%= f.text_field :some_field %>
61
+ <% end %>
62
+ <% end %>
63
+ ```
64
+
65
+ ### Usage as form builder helper
66
+
67
+ ```erb
68
+ <%= form_for @o do |f| %>
69
+ <%= f.form_group class: :some_field do |fg| %>
70
+ <%= fg.label %>
71
+ <%= fg.text_field %>
72
+ <% end %>
73
+ <% end %>
74
+ ```
75
+
76
+ ### Submit button
77
+ ```erb
78
+ <%= form_for @o do |f| %>
79
+ <%= f.form_group do |fg| %>
80
+ <%= fg.submit %>
81
+ <% end %>
82
+ <% end %>
83
+ ```
84
+
85
+ ### Check boxes
86
+
87
+ ```erb
88
+ <%= form_for @o do |f| %>
89
+ <%= f.form_group :boolean_field do |fg| %>
90
+ <%= fg.check_box %>
91
+ <% end %>
92
+ <% end %>
93
+ ```
94
+
95
+ ```erb
96
+ <%= form_for @o do |f| %>
97
+ <%= f.form_group :boolean_field do |fg| %>
98
+ <%= fg.check_box 'Custom text for label' %>
99
+ <% end %>
100
+ <% end %>
101
+ ```
102
+
103
+ ### Disable render validation error
104
+
105
+ Rendering of validation error for field disabled for `.form-inline` and `.form-horizontal`.
106
+
107
+ Use `validation_error` method of `form_group` for rendering validation error in needed place.
108
+
109
+ ```erb
110
+ <%= form_for @o, html: { class: 'form-horizontal' } do |f| %>
111
+ <%= form_group :field do |fg| %>
112
+ <%= fg.label class: 'col-md-2' %>
113
+ <div class="col-md-10">
114
+ <%= fg.text_field %>
115
+ <%= fg.validation_error %>
116
+ </div>
117
+ <% end %>
118
+ <% end %>
119
+ ```
120
+
121
+ If you want disable rendering validation error for vertical form, use `render_validation_error`
122
+ option with value `false` in `form_for` method:
123
+
124
+ ```erb
125
+ <%= form_form @o, render_validation_error: false do |f| %>
126
+ ...
127
+ <% end %>
128
+ ```
129
+
130
+ If you want disable rendering validation error for specific form group, use `render_validation_error`
131
+ option with value `false` in `form_group` method:
132
+
133
+ ```erb
134
+ <%= form_for @o do |f| %>
135
+ <%= form_group :field, render_validation_error: false %>
136
+ ...
137
+ <% end %>
138
+ <% end %>
139
+ ```
140
+
141
+ ### Static control
142
+
143
+ ```erb
144
+ <%= form_for @o, html: { class: 'form-horizontal' } do |f| %>
145
+ <%= form_group :field do |fg| %>
146
+ <%= fg.label class="col-md-2" %>
147
+
148
+ <div class="col-md-10">
149
+ <%= fg.static %>
150
+ <%= fg.validation_error %>
151
+ </div>
152
+ <% end %>
153
+ <% end %>
154
+ ```
155
+
156
+ ## Placeholders and Titles for form controllers
157
+
158
+ Gem using I18n API for set placeholders and titles in form controls.
159
+
160
+ ```yml
161
+ en:
162
+ activerecord:
163
+ placeholders:
164
+ model_name:
165
+ field_name: 'Placeholder text'
166
+ ```
167
+
168
+ You make use globall placeholder keys. Just use option `placeholder` with specific key:
169
+ `f.text_field :x, placeholder: :some_symbol` and add in you l10n file:
170
+
171
+ ```yml
172
+ en:
173
+ activerecord:
174
+ placeholders:
175
+ some_symbol: 'Some text'
176
+ ```
177
+
178
+ You may use the `placeholder` option with string. Use empty string for disabling placeholder.
179
+
180
+ ```erb
181
+ <%= f.text_field :x, placeholder: '' %>
182
+ ```
183
+
184
+ ## Required fields (and labels for him)
185
+
186
+ `app/models/example_model.rb`:
187
+
188
+ ```ruby
189
+ class ExampleModel < ActiveRecord::Base
190
+ validates example_field, presence: true
191
+ end
192
+ ```
193
+
194
+ `app/controllers/example_controller.rb`:
195
+
196
+ ```ruby
197
+ class ExampleController < ApplicationController
198
+ def new
199
+ @o = ExampleModel.new
200
+ end
201
+ end
202
+ ```
203
+
204
+ `app/views/example/new.html.erb`:
205
+
206
+ ```erb
207
+ <%= form_for @o do |f| %>
208
+ <%= f.label :example_field %>
209
+ <%= f.text_field :example_field %>
210
+ <%= f.text_field :example_field required = false %>
211
+ <% end %>
212
+ ```
213
+
214
+ `http://localhost:3000/examples/new`:
215
+
216
+ ```html
217
+ <form accept-charset="UTF-8" action="/example" id="new_example_model" method="post" role="form">
218
+ <label class="required-label" for="example_model_example_field">Example field</label>
219
+ <input id="example_model_example_field" name="example_model[example_field]" required="required" type="text" />
220
+ <input id="example_model_example_field" name="example_model[example_field]" type="text" />
221
+ </form>
222
+ ```
223
+
224
+ ## Quick creating tables for collection of models
225
+
226
+ ```erb
227
+ <%= resource_table Model, @collection, [field1, field2, [field3, field_for_field3]] %>
228
+ ```
229
+
230
+ Helper `resource_table` creating table for collection of models.
231
+
232
+ The first parameter is the model class
233
+
234
+ The second parameter is the collection of models.
235
+
236
+ The third parameter is the collection of model fields or methods.
237
+ Nesting arrays using for sequience invoking of methods. For example, `[[:field, :subdield, :method]]`
238
+ invoke `item.field.subfield.method`.
239
+
240
+ Table including buttons for actions with model. For control of rendering this buttons, use boolean options:
241
+ * `can_remove`;
242
+ * `can_show`;
243
+ * `can_create`;
244
+ * `can_edit`.
245
+
246
+ <%= resource_table Model, @collection, [field1, field2, [field3, field_for_field3]], can_remove: false %>
247
+
248
+ ### Remove confirmation
249
+
250
+ User I18n API for set default confirmation text:
251
+
252
+ ```yml
253
+ en:
254
+ bootstrap:
255
+ resource_table:
256
+ remove_confirmation: 'Your remove confirmation text`
257
+ ```
258
+
259
+ Use custom string with option `remove_confirmation`:
260
+
261
+ ```erb
262
+ <%= resource_table Model, @collection, [fields], remove_confirmation: 'Your remove confrimation' %>
263
+ ```
264
+
265
+ Use string for eval:
266
+
267
+ ```erb
268
+ <%= resource_table Model, @collection, [fields], remove_confirmation: '"Remove #{item.name}?"' %>
269
+ ```
270
+
271
+ User Proc:
272
+
273
+ ```erb
274
+ <%= resource_table Model, @collection, [fields], remove_confirmation: Proc.new {|item| "Remove #{item.name}?"} %>
275
+ ```
276
+
277
+ ## Button dropdowns
278
+
279
+ ```erb
280
+ <%= dropdown 'Actions' do |dd| %>
281
+ <%= dd.item 'Home', root_path # Menu item with link %>
282
+ <%= dd.item 'Disabled', class: 'disabled' # disabled menu item, without link %>
283
+ <%= dd.divider # Menu divider %>
284
+ <%= dd.header 'Text' # Menu header %>
285
+ <% end %>
286
+ ```
287
+
288
+ ### Customizing
289
+ #### Dropup
290
+
291
+ ```erb
292
+ <%= dropdown 'Actions', drop_direction: :up do |dd| %>
293
+ ...
294
+ <% end %>
295
+ ```
296
+
297
+ #### Split button dropdown
298
+
299
+ ```erb
300
+ <%= dropdown 'Actions', button: {split: true} do |dd| %>
301
+ ...
302
+ <% end %>
303
+ ```
304
+
305
+ #### Customize buttons
306
+
307
+ ```erb
308
+ <%= dropdown 'Actions', button: {class: 'btn-primary', split: {class: 'btn-default'}} do |dd| %>
309
+ ...
310
+ <% end %>
311
+ ```
312
+
313
+ ## Bootstrap confirmation dialog
314
+ `app/assets/javascripts/application.js`:
315
+
316
+ ```js
317
+ //
318
+ //= require bootstrap.min
319
+ //= require bs-confirmation-dialog
320
+ //
321
+ ```
322
+
323
+ ### I18n
324
+
325
+ ```yml
326
+ en:
327
+ bootstrap:
328
+ confirm_dialog_title: 'Confirm action'
329
+ confirm_button: 'Yes'
330
+ dismiss_button: 'No'
331
+ ```
332
+
333
+ ## Navbar
334
+ ### Default navbar
335
+
336
+ ```erb
337
+ <%= navbar brand: 'Brand' do |nav| %>
338
+ <%= nav.group do |ng| %>
339
+ <%= ng.item 'Link', root_path %>
340
+ <%= ng.item 'Link', '#' %>
341
+
342
+ <%= ng.dropdown 'Dropdown' do |dd| %>
343
+ <%= dd.item 'Action', '#' %>
344
+ <%= dd.item 'Another action', '#' %>
345
+ <%= dd.item 'Something else here', '#' %>
346
+ <%= dd.divider %>
347
+ <%= dd.item 'Separated link', '#' %>
348
+ <%= dd.divider %>
349
+ <%= dd.item 'One more separated link', '#' %>
350
+ <% end %>
351
+ <% end %>
352
+
353
+ <form class="navbar-form navbar-left" role="search">
354
+ <div class="form-group">
355
+ <input type="text" class="form-control" placeholder="Search">
356
+ </div>
357
+ <button type="submit" class="btn btn-default">Submit</button>
358
+ </form>
359
+
360
+ <%= nav.group pull: :right do |ng| %>
361
+ <%= ng.item 'Link', '#' %>
362
+
363
+ <%= ng.dropdown 'Dropdown' do |dd| %>
364
+ <%= dd.item 'Action', '#' %>
365
+ <%= dd.item 'Another action', '#' %>
366
+ <%= dd.item 'Something else here', '#' %>
367
+ <%= dd.divider %>
368
+ <%= dd.item 'Separated link', '#' %>
369
+ <% end %>
370
+ <% end %>
371
+ <% end %>
372
+ ```
373
+
374
+ ### Buttons
375
+
376
+ ```erb
377
+ <%= navbar do |nav| %>
378
+ <%= nav.button 'Sign in' %>
379
+ <% end %>
380
+ ```
381
+
382
+ ### Text
383
+
384
+ ```erb
385
+ <%= navbar do |nav| %>
386
+ <%= nav.text 'Signed in as Mark Otto' %>
387
+ <% end %>
388
+ ```
389
+
390
+ ### Non-nav links
391
+
392
+ ```erb
393
+ <%= navbar do |nav| %>
394
+ <%= nav.text "Signed in as #{nav.link 'Mark Otto', '#'}".html_safe, pull: :right %>
395
+ <% end %>
396
+ ```
397
+
398
+ ### Fixed to top
399
+
400
+ ```erb
401
+ <%= navbar fixed: :top do |nav| %>
402
+ ...
403
+ <% end %>
404
+ ```
405
+
406
+ ### Fixed to bottom
407
+
408
+ ```erb
409
+ <%= navbar fixed: :bottom do |nav| %>
410
+ ...
411
+ <% end %>
412
+ ```
413
+
414
+ ### Static top
415
+
416
+ ```erb
417
+ <%= navbar static: :top do |nav| %>
418
+ ...
419
+ <% end %>
420
+ ```
421
+
422
+ ### Inverted navbar
423
+
424
+ ```erb
425
+ <%= navbar inverse: true do |nav| %>
426
+ ...
427
+ <% end %>
428
+ ```
429
+
430
+ ## Breadcrumbs
431
+
432
+ `/app/controllers/application_controller.rb`:
433
+
434
+ ```ruby
435
+ class ApplicationController < ActionController::Base
436
+ add_breadcrumb :root # root_path will be used as url
437
+ end
438
+ ```
439
+
440
+ `/app/controllers/examples_controller.rb`:
441
+
442
+ ```ruby
443
+ class ExamplesController < ApplicationController
444
+ add_breadcrumb :index, :examples_path
445
+
446
+ def edit
447
+ @example = Example.find params[:id]
448
+ add_breadcrumb @example # @example.to_s as name, example_path(@example) as url
449
+ add_breadcrumb :edit, edit_example_path(@example)
450
+ end
451
+ end
452
+ ```
453
+
454
+ `/app/views/layouts/application.html.erb`:
455
+
456
+ ```erb
457
+ <!DOCTYPE html>
458
+ <html>
459
+ <head>
460
+ ...
461
+ </head>
462
+ <body>
463
+ ...
464
+
465
+ <%= render_breadcrumbs %>
466
+
467
+ <%= yield %>
468
+ </body>
469
+ </html>
470
+ ```
471
+
472
+ `/config/locales/en.yml`:
473
+
474
+ ```yml
475
+ en:
476
+ breadcrumbs:
477
+ root: 'Home'
478
+ edit: `Edit`
479
+
480
+ examples:
481
+ index: 'Examples'
482
+ edit: 'Edit example'
483
+ ```
484
+
485
+ ## Pagination
486
+
487
+ ### Default pagination
488
+
489
+ ```erb
490
+ <%= paginator @current_page, @total_pages %>
491
+ ```
492
+
493
+ ### Disabled and active states
494
+
495
+ Disabled and active states set automatically
496
+
497
+ ### Sizing
498
+
499
+ ```erb
500
+ <%= paginator @current_page, @total_pages, size: :large
501
+ ```
502
+
503
+ ```erb
504
+ <%= paginator @current_page, @total_pages, size: :small
505
+ ```
506
+
507
+ ### Page param name
508
+
509
+ ```erb
510
+ <%= paginator @current_page, @total_pages, param: :p
511
+ ```
512
+
513
+ ## Alerts
514
+
515
+ ```erb
516
+ <%= bs_alert :success, 'Message' %>
517
+ ```
518
+
519
+ Render rules:
520
+
521
+ - `:success` render as `.alert-success`;
522
+ - `:info` render as `.alert-info`;
523
+ - `:warning` render as `.alert-warning`;
524
+ - `:danger` render as `.alert-danger`;
525
+ - `:notice` render as `.alert-success`;
526
+ - `:alert` render as `.alert-danger`;
527
+ - another keys render as `alert-info`.
528
+
529
+ ### Flash block
530
+
531
+ ```erb
532
+ <%= flash_block %>
533
+ ```
534
+
535
+ Each flash message render as `bs_alert(flash_message_key, flash_message)`.
536
+
537
+ ## Modal dialog
538
+
539
+ ```erb
540
+ <%= modal_dialog id: 'myModal',
541
+ header: content_tag(:h4, 'Modal dialog header'),
542
+ body: 'Modal body',
543
+ footer: 'Dialog footer' %>
544
+ ```
545
+
546
+ ### Complex content
547
+
548
+ ```erb
549
+ <% dialog_footer = capture do %>
550
+ <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
551
+ <button type="button" class="btn btn-primary">Save changes</button>
552
+ <% end %>
553
+
554
+ <%= modal_dialog id: 'myModal',
555
+ header: content_tag(:h4, 'Modal dialog header'),
556
+ body: 'Modal body',
557
+ footer: dialog_footer %>
558
+ ```
559
+
560
+ ### Dismiss button
561
+
562
+ ```erb
563
+ <%= modal_dialog id: 'myModal',
564
+ header: content_tag(:h4, 'Modal dialog header'),
565
+ body: 'Modal body',
566
+ footer: dismiss_button('Ok') %>
567
+ ```
568
+
569
+ ## Panels
570
+
571
+ ### Basic example
572
+
573
+ ```erb
574
+ <%= panel do %>
575
+ Basic panel example
576
+ <% end %>
577
+ ```
578
+
579
+ ### Panel with heading
580
+
581
+ ```erb
582
+ <%= panel header: 'Panel heading without title' do %>
583
+ Panel content
584
+ <% end %>
585
+ ```
586
+
587
+ ```erb
588
+ <%= panel title: {level: 3, content: 'Panel title'} do %>
589
+ Panel content
590
+ <% end %>
591
+ ```
592
+
593
+ ### Panel with footer
594
+
595
+ ```erb
596
+ <%= panel footer: 'Panel footer' do %>
597
+ Panel content
598
+ <% end %>
599
+ ```
600
+
601
+ ### Contextual alternatives
602
+
603
+ ```erb
604
+ <%= panel header: 'Panel header', context: :primary do %>
605
+ Panel content
606
+ <% end %>
607
+ ```
608
+
609
+ ```erb
610
+ <%= panel header: 'Panel header', context: :info do %>
611
+ Panel content
612
+ <% end %>
613
+ ```
614
+
615
+ ```erb
616
+ <%= panel header: 'Panel header', context: :success do %>
617
+ Panel content
618
+ <% end %>
619
+ ```
620
+
621
+ ```erb
622
+ <%= panel header: 'Panel header', context: :warning do %>
623
+ Panel content
624
+ <% end %>
625
+ ```
626
+
627
+ ```erb
628
+ <%= panel header: 'Panel header', context: :danger do %>
629
+ Panel content
630
+ <% end %>
631
+ ```
632
+
633
+ ## Global settings
634
+
635
+ `config/initializers/bootstrap.rb`:
636
+
637
+ ```ruby
638
+ Twitter::Bootstrap::For::Rails.setup do |config|
639
+ # Globally disable or enable rendering validation errors inside form groups
640
+ config.render_validation_error = true
641
+ end
642
+ ```
643
+
644
+ ## Page header helper
645
+
646
+ `app/views/layouts/application.html.erb`:
647
+
648
+ ```erb
649
+ <!DOCTYPE html>
650
+ <html>
651
+ <head>
652
+ <%= page_title @title %>
653
+ <!-- Another content for head section -->
654
+ </head>
655
+
656
+ <body>
657
+ <%= yield :title %>
658
+ <!-- Another content for body section -->
659
+ </body>
660
+ </html>
661
+ ```
662
+
663
+ Text fo title get from `page_titles.controller_name.action_name` of you i18n hash.
664
+
665
+ ### User another key for page title
666
+
667
+ In action of some controller, for example:
668
+
669
+ ```ruby
670
+ ...
671
+ @title = :i_found_it
672
+ ...
673
+ ```
674
+
675
+ Text tot title get from `page_titles.controller_name.i_found_it` in this case.
676
+
677
+ ### Custom title text
678
+
679
+ In action of some controller, for example:
680
+
681
+ ```ruby
682
+ ...
683
+ @title = 'Some custom text'
684
+ ...
685
+ ```
686
+
687
+ ## Change log
688
+
689
+ v1.3.3 - Available manually set required option for form controls
690
+ v1.3.2 - Added required labels
691
+ v1.3.1 - Added page_title helper
692
+ v1.2.1 - Fix trouble with disabling create button in resource table
693
+ v1.2.0 - Added check_box for form_group
694
+ v1.1.0 - Added bootstrap panel helper