bootstrap-sass-extras 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -1
  3. data/Gemfile +4 -1
  4. data/Gemfile.lock +18 -4
  5. data/README.md +91 -37
  6. data/app/helpers/badge_helper.rb +13 -0
  7. data/app/helpers/bootstrap_flash_helper.rb +17 -15
  8. data/app/helpers/glyph_helper.rb +10 -7
  9. data/app/helpers/modal_helper.rb +19 -15
  10. data/app/helpers/twitter_breadcrumbs_helper.rb +3 -2
  11. data/app/views/bootstrap_sass_extras/_breadcrumbs.html.erb +6 -0
  12. data/bootstrap-sass-extras.gemspec +1 -0
  13. data/lib/bootstrap-sass-extras/breadcrumbs.rb +26 -9
  14. data/lib/bootstrap-sass-extras/engine.rb +1 -0
  15. data/lib/bootstrap-sass-extras/version.rb +1 -1
  16. data/lib/generators/bootstrap/install/templates/en.bootstrap.yml +1 -0
  17. data/lib/generators/bootstrap/layout/layout_generator.rb +1 -4
  18. data/lib/generators/bootstrap/layout/templates/layout.html.erb +32 -50
  19. data/lib/generators/bootstrap/layout/templates/layout.html.haml +20 -38
  20. data/lib/generators/bootstrap/layout/templates/layout.html.slim +20 -39
  21. data/lib/generators/bootstrap/themed/templates/_form.html.erb +10 -8
  22. data/lib/generators/bootstrap/themed/templates/_form.html.haml +8 -7
  23. data/lib/generators/bootstrap/themed/templates/_form.html.slim +8 -8
  24. data/lib/generators/bootstrap/themed/templates/index.html.erb +12 -10
  25. data/lib/generators/bootstrap/themed/templates/index.html.haml +8 -4
  26. data/lib/generators/bootstrap/themed/templates/index.html.slim +11 -9
  27. data/lib/generators/bootstrap/themed/templates/new.html.slim +1 -1
  28. data/lib/generators/bootstrap/themed/templates/show.html.erb +12 -10
  29. data/lib/generators/bootstrap/themed/templates/show.html.haml +13 -12
  30. data/lib/generators/bootstrap/themed/templates/show.html.slim +11 -10
  31. data/lib/generators/bootstrap/themed/templates/simple_form/_form.html.erb +9 -7
  32. data/lib/generators/bootstrap/themed/templates/simple_form/_form.html.haml +5 -4
  33. data/lib/generators/bootstrap/themed/templates/simple_form/_form.html.slim +5 -5
  34. data/spec/dummy/db/schema.rb +16 -0
  35. data/spec/helpers/badge_helper_spec.rb +16 -0
  36. data/spec/helpers/bootstrap_flash_helper_spec.rb +54 -39
  37. data/spec/helpers/glyph_helper_spec.rb +15 -0
  38. data/spec/helpers/twitter_breadcrumbs_helper_spec.rb +153 -0
  39. metadata +13 -5
  40. data/app/views/twitter-bootstrap/_breadcrumbs.html.erb +0 -14
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d165bd438c4c33acac0cad0864b928f42d436733
4
- data.tar.gz: 4ab9887d47bd243c30ad59a41cc9a9f3c712de2e
3
+ metadata.gz: f2fd823951114762be02d3bb4b0402cf542e6124
4
+ data.tar.gz: 6e25e239409425d864a4eb541f793ba0c2889080
5
5
  SHA512:
6
- metadata.gz: 07750ab08f326dcc9d9518471a7fa22d1ae6d0d554aae885827bb4292614b0ced802005d2dd1a37c314e7a3643992235713efcad39a3276b7357854ddea1d90e
7
- data.tar.gz: 66bf8e69ac9d677bf774850c2e1d08e6623138f3f1787581937ed203fbe0b6cb7009b81e48130a46242c001f20e3eee0dbceae69cccbcacdc31a8d096ee50f4c
6
+ metadata.gz: 9cf7c080d826188a1efaa4126a6d9b1552acc418336d8400da337b45738075973db00470a43fb68797be2148cecb18eb607992bed4ff35ea0c8e4727f45f7501
7
+ data.tar.gz: be5b543f525861c238c60285dc6322764c1f052917894e78eef8d64edd324013fd2004c5db61da9e985d993bcc051a029164dbdd2fa98cee1725beecd48f2aaa
@@ -1,6 +1,10 @@
1
1
  # Changelog
2
2
 
3
- ## Master (unreleased)
3
+ ## Release 0.0.6
4
+
5
+ * Update to bootstrap 3.0
6
+ * Add a `badge(badge_count)` helper by [@pdobb][]
7
+ * Clean up codes by [@pdobb][]
4
8
 
5
9
  ## Release 0.0.5
6
10
 
@@ -26,4 +30,5 @@
26
30
 
27
31
 
28
32
  [@jonwaghorn]: https://github.com/jonwaghorn
33
+ [@pdobb]: https://github.com/pdobb
29
34
  [@dabit]: https://github.com/dabit
data/Gemfile CHANGED
@@ -3,4 +3,7 @@ source "http://rubygems.org"
3
3
  # Declare your gem's dependencies in bootstrap-sass-extras.gemspec.
4
4
  # Bundler will treat runtime dependencies like base dependencies, and
5
5
  # development dependencies will be added by default to the :development group.
6
- gemspec
6
+ gemspec
7
+
8
+ gem 'byebug'
9
+ gem 'pry'
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bootstrap-sass-extras (0.0.4)
4
+ bootstrap-sass-extras (0.0.6)
5
5
  rails (>= 3.1.0)
6
6
 
7
7
  GEM
@@ -34,8 +34,14 @@ GEM
34
34
  activesupport (3.2.13)
35
35
  i18n (= 0.6.1)
36
36
  multi_json (~> 1.0)
37
- arel (3.0.2)
37
+ arel (3.0.3)
38
38
  builder (3.0.4)
39
+ byebug (2.5.0)
40
+ columnize (~> 0.3.6)
41
+ debugger-linecache (~> 1.2.0)
42
+ coderay (1.1.0)
43
+ columnize (0.3.6)
44
+ debugger-linecache (1.2.0)
39
45
  diff-lcs (1.1.3)
40
46
  erubis (2.7.0)
41
47
  hike (1.2.1)
@@ -45,9 +51,14 @@ GEM
45
51
  mail (2.5.4)
46
52
  mime-types (~> 1.16)
47
53
  treetop (~> 1.4.8)
48
- mime-types (1.25)
54
+ method_source (0.8.2)
55
+ mime-types (1.25.1)
49
56
  multi_json (1.7.2)
50
57
  polyglot (0.3.3)
58
+ pry (0.9.12.4)
59
+ coderay (~> 1.0)
60
+ method_source (~> 0.8)
61
+ slop (~> 3.4)
51
62
  rack (1.4.5)
52
63
  rack-cache (1.2)
53
64
  rack (>= 0.4)
@@ -84,6 +95,7 @@ GEM
84
95
  rspec-core (~> 2.12.0)
85
96
  rspec-expectations (~> 2.12.0)
86
97
  rspec-mocks (~> 2.12.0)
98
+ slop (3.4.7)
87
99
  sprockets (2.2.2)
88
100
  hike (~> 1.2)
89
101
  multi_json (~> 1.0)
@@ -95,12 +107,14 @@ GEM
95
107
  treetop (1.4.15)
96
108
  polyglot
97
109
  polyglot (>= 0.3.1)
98
- tzinfo (0.3.37)
110
+ tzinfo (0.3.38)
99
111
 
100
112
  PLATFORMS
101
113
  ruby
102
114
 
103
115
  DEPENDENCIES
104
116
  bootstrap-sass-extras!
117
+ byebug
118
+ pry
105
119
  rspec-rails
106
120
  sqlite3
data/README.md CHANGED
@@ -5,6 +5,10 @@
5
5
  [1]: https://github.com/thomas-mcdonald/bootstrap-sass
6
6
  [2]: https://github.com/seyhunak/twitter-bootstrap-rails
7
7
 
8
+ ## Note
9
+
10
+ From version 0.0.6, only support bootstrap 3. If you want to use bootstrap 2, please use version 0.0.5.
11
+
8
12
  ## Installation
9
13
 
10
14
  Add this line to your application's Gemfile:
@@ -28,46 +32,47 @@ Generate locale
28
32
 
29
33
  Usage:
30
34
 
31
-
32
- rails g bootstrap:install
33
-
35
+ ```ruby
36
+ rails g bootstrap:install
37
+ ```
34
38
 
35
39
  Layout (generates Twitter Bootstrap compatible layout) - (Haml and Slim supported)
36
40
 
37
41
 
38
42
  Usage:
39
43
 
40
-
41
- rails g bootstrap:layout [LAYOUT_NAME] [*fixed or fluid]
42
-
44
+ ```ruby
45
+ rails g bootstrap:layout [LAYOUT_NAME] [*fixed or fluid]
46
+ ```
43
47
 
44
48
  Example of a fixed layout:
45
49
 
46
-
47
- rails g bootstrap:layout application fixed
48
-
50
+ ```ruby
51
+ rails g bootstrap:layout application fixed
52
+ ```
49
53
 
50
54
  Example of a responsive layout:
51
55
 
52
-
53
- rails g bootstrap:layout application fluid
54
-
56
+ ```ruby
57
+ rails g bootstrap:layout application fluid
58
+ ```
55
59
 
56
60
  Themed (generates Twitter Bootstrap compatible scaffold views.) - (Haml and Slim supported)
57
61
 
58
62
 
59
63
  Usage:
60
64
 
61
-
62
- rails g bootstrap:themed [RESOURCE_NAME]
63
-
65
+ ```ruby
66
+ rails g bootstrap:themed [RESOURCE_NAME]
67
+ ```
64
68
 
65
69
  Example:
66
70
 
67
-
68
- rails g scaffold Post title:string description:text
69
- rake db:migrate
70
- rails g bootstrap:themed Posts
71
+ ```ruby
72
+ rails g scaffold Post title:string description:text
73
+ rake db:migrate
74
+ rails g bootstrap:themed Posts
75
+ ```
71
76
 
72
77
  Notice the plural usage of the resource to generate bootstrap:themed.
73
78
 
@@ -77,30 +82,36 @@ Notice the plural usage of the resource to generate bootstrap:themed.
77
82
  Add the viewport meta helper `<%= viewport_meta_tag %>` to your layout
78
83
  (built-in with layout generator) to render the required meta tag for Bootstrap:
79
84
 
80
- <meta content="width=device-width,initial-scale=1.0" name="viewport" />
85
+ ```html
86
+ <meta content="width=device-width,initial-scale=1.0" name="viewport" />
87
+ ```
81
88
 
82
89
  You can change the content value by passing a hash as an argument:
83
90
 
84
- <%= viewport_meta_tag(:maximum_scale => "1.0") %>
91
+ ```erb
92
+ <%= viewport_meta_tag(:maximum_scale => "1.0") %>
93
+ ```
85
94
 
86
95
  Renders:
87
96
 
88
- <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0" name="viewport" />
97
+ ```html
98
+ <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0" name="viewport" />
99
+ ```
89
100
 
90
101
  ### Flash helper
91
102
  Add flash helper `<%= bootstrap_flash %>` to your layout (built-in with layout generator)
92
103
 
93
104
  ### Modal Helper
94
105
  You can create modals easily using the following example. The header, body, and footer all accept content_tag or plain html.
95
- The href of the button to launch the modal must matche the id of the modal dialog.
96
-
97
- ```ruby
98
- <%= content_tag :a, "Modal", :href => "#modal", :class => 'btn', :data => {:toggle => modal'} %>
106
+ The href of the button to launch the modal must match the id of the modal dialog.
99
107
 
108
+ ```erb
109
+ <%= modal_toggle 'Modal', dialog: '#modal'%>
100
110
  <%= modal_dialog :id => "modal",
101
- :header => { :show_close => true, :dismiss => 'modal', :title => 'Modal header' },
102
- :body => 'This is the body',
103
- :footer => content_tag(:button, 'Save', :class => 'btn') %>
111
+ :header => { :show_close => true, :title => 'Modal header' },
112
+ :body => 'This is the body',
113
+ :footer => content_tag(:button, 'Save', :class => 'btn btn-primary')
114
+ %>
104
115
  ```
105
116
 
106
117
  ### Breadcrumbs Helpers
@@ -108,8 +119,6 @@ The href of the button to launch the modal must matche the id of the modal dialo
108
119
  *Notice* If your application is using [breadcrumbs-on-rails](https://github.com/weppos/breadcrumbs_on_rails) you will have a namespace collision with the add_breadcrumb method.
109
120
  You do not need to use these breadcrumb gems since this gem provides the same functionality out of the box without the additional dependency.
110
121
 
111
- Add breadcrumbs helper `<%= render_breadcrumbs %>` to your layout.
112
-
113
122
  ```ruby
114
123
  class ApplicationController
115
124
  add_breadcrumb :index, :root_path
@@ -126,18 +135,63 @@ class ExamplesController < ApplicationController
126
135
  def show
127
136
  @example = Example.find params[:id]
128
137
  add_breadcrumb @example.name, example_path(@example)
129
- # add_breadcrumb :show, example_path(@example)
138
+ add_breadcrumb :show, example_path(@example)
130
139
  end
131
140
  end
132
141
  ```
133
142
 
134
- ### Glyp Helper
143
+ Finally, add the `<%= render_breadcrumbs %>` helper to your layout.
144
+
145
+ You can wrap the breadcrumbs in an HTML element by using the block form like this:
146
+
147
+ ```erb
148
+ <%= render_breadcrumbs do |breadcrumbs| %>
149
+ <%= content_tag(:div, breadcrumbs, class: "container") %>
150
+ <% end %>
151
+
152
+ # =>
153
+ # <div class="container">
154
+ # <ol class="breadcrumb">
155
+ # <li> ... </li>
156
+ # <li class="active"> ... </li>
157
+ # </ol>
158
+ # </div>
159
+ ```
160
+
161
+ There are also a few interface methods available for working with the internal breadcrumbs hashes. The following methods are available in controllers and views.
162
+
163
+ ```ruby
164
+ # Given previously added breadcrumbs:
165
+
166
+ breadcrumbs?
167
+ # => true
168
+
169
+ breadcrumb_names
170
+ # => ["example", "show"]
171
+ ```
172
+
173
+ The following method is available to controllers only.
135
174
 
136
175
  ```ruby
137
- glyph(:share_alt)
138
- # => <i class="icon-share-alt"></i>
139
- glyph(:lock, :white)
140
- # => <i class="icon-lock icon-white"></i>
176
+ clear_breadcrumbs
177
+ # => nil
178
+ ```
179
+
180
+ ### Glyph Helper
181
+
182
+ ```erb
183
+ <%= glyph(:star) %>
184
+ # => <span class="glyphicon glyphicon-star"></span>
185
+
186
+ <%= glyph(:star, :paperclip) %>
187
+ # => <span class="glyphicon glyphicon-star"></span><span class="glyphicon glyphicon-paperclip"></span>
188
+ ```
189
+
190
+ ### Badge Helper
191
+
192
+ ```erb
193
+ <%= badge(2) %>
194
+ # => <span class="badge">2</span>
141
195
  ```
142
196
 
143
197
  ## Contributing
@@ -0,0 +1,13 @@
1
+ module BadgeHelper
2
+ # ==== Examples
3
+ #
4
+ # badge(2)
5
+ # => <span class="badge">2</span>
6
+ # badge(nil)
7
+ # => nil
8
+
9
+ def badge(count)
10
+ return unless count
11
+ content_tag(:span, count, class: "badge")
12
+ end
13
+ end
@@ -1,23 +1,25 @@
1
1
  module BootstrapFlashHelper
2
- ALERT_TYPES = [:error, :info, :success, :warning]
2
+ ALERT_TYPES_MAP = {
3
+ notice: :success,
4
+ alert: :danger,
5
+ error: :danger,
6
+ info: :info,
7
+ warning: :warning
8
+ }
3
9
 
4
10
  def bootstrap_flash
5
- output = ''
6
- flash.each do |type, message|
7
- next if message.blank?
8
- type = :success if type == :notice
9
- type = :error if type == :alert
10
- next unless ALERT_TYPES.include?(type)
11
- output += flash_container(type, message)
12
- end
13
-
14
- raw(output)
11
+ safe_join(flash.each_with_object([]) do |(type, message), messages|
12
+ next if message.blank? || !message.respond_to?(:to_str)
13
+ type = ALERT_TYPES_MAP.fetch(type.to_sym, type)
14
+ messages << flash_container(type, message)
15
+ end, "\n").presence
15
16
  end
16
17
 
17
18
  def flash_container(type, message)
18
- raw(content_tag(:div, :class => "alert alert-#{type}") do
19
- content_tag(:a, raw("&times;"),:class => 'close', :data => {:dismiss => 'alert'}) +
20
- message
21
- end)
19
+ content_tag :div, class: "alert alert-#{type} alert-dismissable" do
20
+ button_tag type: "button", class: "close", data: { dismiss: "alert" } do
21
+ "&times;".html_safe
22
+ end.safe_concat(message)
23
+ end
22
24
  end
23
25
  end
@@ -1,11 +1,14 @@
1
1
  module GlyphHelper
2
2
  # ==== Examples
3
- # glyph(:share_alt)
4
- # # => <i class="icon-share-alt"></i>
5
- # glyph(:lock, :white)
6
- # # => <i class="icon-lock icon-white"></i>
3
+ #
4
+ # glyph(:search)
5
+ # => <span class="glyphicon glyphicon-search"></span>
6
+ # glyph(:search, :paperclip)
7
+ # => <span class="glyphicon glyphicon-search"></span><span class="glyphicon glyphicon-paperclip"></span>
7
8
 
8
- def glyph(*names)
9
- content_tag :i, nil, :class => names.map{|name| "icon-#{name.to_s.gsub('_','-')}" }
9
+ def glyph(*glyphicon_names)
10
+ safe_join(glyphicon_names.map do |name|
11
+ content_tag :span, nil, class: "glyphicon glyphicon-#{name.to_s.parameterize}"
12
+ end, "")
10
13
  end
11
- end
14
+ end
@@ -2,21 +2,26 @@ module ModalHelper
2
2
 
3
3
  #modals have a header, a body, a footer for options.
4
4
  def modal_dialog(options = {}, &block)
5
- content_tag :div, :id => options[:id], :class => "bootstrap-modal modal hide fade" do
6
- modal_header(options[:header]) +
7
- modal_body(options[:body]) +
8
- modal_footer(options[:footer])
5
+ content_tag :div, :id => options[:id], :class => "modal fade", :role => "dialog" do
6
+ content_tag :div, class: 'modal-dialog' do
7
+ content_tag :div, class: 'modal-content' do
8
+ modal_header(options[:header]) +
9
+ modal_body(options[:body]) +
10
+ modal_footer(options[:footer])
11
+ end
12
+ end
9
13
  end
10
14
  end
11
15
 
12
16
  def modal_header(options = {}, &block)
17
+ dismiss = options.delete(:dismiss) || 'modal'
13
18
  content_tag :div, :class => 'modal-header' do
14
- if options[:show_close]
15
- close_button(options[:dismiss]) +
16
- content_tag(:h3, options[:title], &block)
19
+ if options[:show_close]
20
+ close_button(dismiss) +
21
+ content_tag(:h4, options[:title], :class => 'modal-title', &block)
17
22
  else
18
- content_tag(:h3, options[:title], &block)
19
- end
23
+ content_tag(:h4, options[:title], :class => 'modal-title', &block)
24
+ end
20
25
  end
21
26
  end
22
27
 
@@ -29,26 +34,25 @@ module ModalHelper
29
34
  end
30
35
 
31
36
  def close_button(dismiss)
32
- #It doesn't seem to like content_tag, so we do this instead.
33
- raw("<button class=\"close\" data-dismiss=\"#{dismiss}\">&times;</button>")
37
+ content_tag :button, "&times;".html_safe, :class => "close", "data-dismiss" => "#{dismiss}", "aria-hidden" => "true"
34
38
  end
35
39
 
36
40
  def modal_toggle(content_or_options = nil, options = {}, &block)
37
41
  if block_given?
38
42
  options = content_or_options if content_or_options.is_a?(Hash)
39
- default_options = { :class => 'btn', "data-toggle" => "modal", "href" => options[:dialog] }.merge(options)
43
+ default_options = { :class => 'btn', "data-toggle" => "modal", "data-target" => options.delete[:dialog] }.merge(options)
40
44
 
41
45
  content_tag :a, nil, default_options, true, &block
42
46
  else
43
- default_options = { :class => 'btn', "data-toggle" => "modal", "href" => options[:dialog] }.merge(options)
47
+ default_options = { :class => 'btn', "data-toggle" => "modal", "data-target" => options.delete(:dialog) }.merge(options)
44
48
  content_tag :a, content_or_options, default_options, true
45
49
  end
46
50
  end
47
51
 
48
52
  def modal_cancel_button content, options = {}
49
- default_options = { :class => "btn bootstrap-modal-cancel-button" }
53
+ default_options = { :class => "btn btn-default", :data => { dismiss: "modal" } }
50
54
 
51
- content_tag_string "a", content, default_options.merge(options)
55
+ content_tag_string :button, content, default_options.merge(options)
52
56
  end
53
57
 
54
58
  end