gretel 3.0.0.beta3 → 3.0.0.beta4
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +2 -0
- data/README.md +21 -3
- data/lib/gretel/link.rb +2 -1
- data/lib/gretel/renderer.rb +13 -14
- data/lib/gretel/version.rb +1 -1
- data/lib/gretel/view_helpers.rb +11 -1
- data/test/helper_methods_test.rb +43 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f60e571dd44601cf9e016949eaf99b93e7620c32
|
4
|
+
data.tar.gz: eb4b93afaf41a5faaccd58e7fb6996e692c87eda
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e755b624fad2a00daf9aaf8fbd2deb7f094d0b3b6a14137edc0a6111ba209067349527aa1d66ad898a2ce7a47376c776026f700ce2eb77ea0cba9768e8805bd5
|
7
|
+
data.tar.gz: cbedcf2047c946abbbd64ae8b6d2a2c8086ca6f17d7a0a77b7c3b655b73911dbec6e3da248f14b433237b18f2a2620b0ed5a9d0f67ccefa446ad01d898b150de
|
data/CHANGELOG.md
CHANGED
@@ -11,6 +11,8 @@ Version 3.0
|
|
11
11
|
* Support for rendering the breadcrumbs in different styles like ul- and ol lists, and for use with [Twitter Bootstrap](http://getbootstrap.com/). See the `:style` option in the readme for more info.
|
12
12
|
* The `:show_root_alone` option is now called `:display_single_fragment` and can be used to display the breadcrumbs only when there are more than one link, also if it is not the root breadcrumb.
|
13
13
|
* Links yielded from `<%= breadcrumbs do |links| %>` now have a `current?` helper that returns true if the link is the last in the trail.
|
14
|
+
* New view helper: `parent_breadcrumb` returns the parent breadcrumb link (with `#key`, `#text`, and `#url`). You can supply options like `:autoroot` etc.
|
15
|
+
If you supply a block, it will yield the parent breadcrumb if it is present.
|
14
16
|
|
15
17
|
Version 2.1
|
16
18
|
-----------
|
data/README.md
CHANGED
@@ -17,8 +17,11 @@ New in version 3.0 :muscle:
|
|
17
17
|
* Defining breadcrumbs using `Gretel::Crumbs.layout do ... end` in an initializer has been removed. See below for details on how to upgrade.
|
18
18
|
* The `:show_root_alone` option is now called `:display_single_fragment` and can be used to hide the breadcrumbs when there is only one link, also if it is not the root breadcrumb.
|
19
19
|
The old `:show_root_alone` option is still supported until Gretel version 4.0 and will show a deprecation warning when it's used.
|
20
|
+
* Links yielded from `<%= breadcrumbs do |links| %>` now have a `current?` helper that returns true if the link is the last in the trail.
|
21
|
+
* New view helper: `parent_breadcrumb` returns the parent breadcrumb link (with `#key`, `#text`, and `#url`). You can supply options like `:autoroot` etc.
|
22
|
+
If you supply a block, it will yield the parent breadcrumb if it is present.
|
20
23
|
|
21
|
-
I hope you find these changes as useful as I did
|
24
|
+
I hope you find these changes as useful as I did – if you have more suggestions, please create an [Issue](https://github.com/lassebunk/gretel/issues) or [Pull Request](https://github.com/lassebunk/gretel/pulls).
|
22
25
|
|
23
26
|
See below for more info or the [changelog](https://github.com/lassebunk/gretel/blob/master/CHANGELOG.md) for less significant changes.
|
24
27
|
|
@@ -28,7 +31,7 @@ Installation
|
|
28
31
|
In your *Gemfile*:
|
29
32
|
|
30
33
|
```ruby
|
31
|
-
gem "gretel", "3.0.0.
|
34
|
+
gem "gretel", "3.0.0.beta4"
|
32
35
|
```
|
33
36
|
|
34
37
|
And run:
|
@@ -230,6 +233,21 @@ If you supply a block to the `breadcrumbs` method, it will yield an array with t
|
|
230
233
|
<% end %>
|
231
234
|
```
|
232
235
|
|
236
|
+
Getting the parent breadcrumb
|
237
|
+
-----------------------------
|
238
|
+
|
239
|
+
If you want to add a link to the parent breadcrumb in the trail, you can use the `parent_breadcrumb` view helper.
|
240
|
+
By default it returns a link instance that has the properties `#key`, `#text`, and `#url`.
|
241
|
+
You can supply options like `autoroot: false` etc.
|
242
|
+
|
243
|
+
If you supply a block, it will yield the link if it is present:
|
244
|
+
|
245
|
+
```erb
|
246
|
+
<% parent_breadcrumb do |parent| %>
|
247
|
+
<%= link_to "Back to #{link.text}", link.url %>
|
248
|
+
<% end %>
|
249
|
+
```
|
250
|
+
|
233
251
|
Setting breadcrumb trails
|
234
252
|
--------------------------------
|
235
253
|
|
@@ -277,7 +295,7 @@ The product view will now have the breadcrumb trail from the first page (reviews
|
|
277
295
|
The default trail param is `params[:trail]`. You can change it in an initializer:
|
278
296
|
|
279
297
|
```ruby
|
280
|
-
Gretel
|
298
|
+
Gretel.trail_param = :other_param
|
281
299
|
```
|
282
300
|
|
283
301
|
### Note
|
data/lib/gretel/link.rb
CHANGED
data/lib/gretel/renderer.rb
CHANGED
@@ -58,10 +58,10 @@ module Gretel
|
|
58
58
|
content_tag(options[:container_tag], html, id: options[:id], class: options[:class])
|
59
59
|
end
|
60
60
|
|
61
|
-
#
|
62
|
-
def
|
61
|
+
# Array of links transformed by +options+ (like +:autoroot+ etc.) to be used in a view.
|
62
|
+
def links_with(options = {})
|
63
63
|
options = options_for_render(options)
|
64
|
-
|
64
|
+
links_for_render(options)
|
65
65
|
end
|
66
66
|
|
67
67
|
# Returns encoded trail for the breadcrumb.
|
@@ -69,6 +69,11 @@ module Gretel
|
|
69
69
|
@trail ||= Gretel::Trail.encode(links)
|
70
70
|
end
|
71
71
|
|
72
|
+
# Proxy for +context.link_to+ that can be overridden by plugins.
|
73
|
+
def link_to(*args)
|
74
|
+
context.link_to(*args)
|
75
|
+
end
|
76
|
+
|
72
77
|
private
|
73
78
|
|
74
79
|
attr_reader :context, :breadcrumb_key, :breadcrumb_args
|
@@ -148,7 +153,7 @@ module Gretel
|
|
148
153
|
|
149
154
|
# Handle autoroot
|
150
155
|
if options[:autoroot] && out.map(&:key).exclude?(:root) && Gretel::Crumbs.crumb_defined?(:root)
|
151
|
-
out.unshift *Gretel::Crumb.new(
|
156
|
+
out.unshift *Gretel::Crumb.new(context, :root).links
|
152
157
|
end
|
153
158
|
|
154
159
|
# Handle show root alone
|
@@ -172,10 +177,10 @@ module Gretel
|
|
172
177
|
def render_semantic_fragment(fragment_tag, text, url, options = {})
|
173
178
|
if fragment_tag
|
174
179
|
text = content_tag(:span, text, itemprop: "title")
|
175
|
-
text =
|
180
|
+
text = link_to(text, url, itemprop: "url") if url.present?
|
176
181
|
content_tag(fragment_tag, text, class: options[:class], itemscope: "", itemtype: "http://data-vocabulary.org/Breadcrumb")
|
177
182
|
elsif url.present?
|
178
|
-
content_tag(:div,
|
183
|
+
content_tag(:div, link_to(content_tag(:span, text, itemprop: "title"), url, class: options[:class], itemprop: "url"), itemscope: "", itemtype: "http://data-vocabulary.org/Breadcrumb")
|
179
184
|
else
|
180
185
|
content_tag(:div, content_tag(:span, text, class: options[:class], itemprop: "title"), itemscope: "", itemtype: "http://data-vocabulary.org/Breadcrumb")
|
181
186
|
end
|
@@ -184,10 +189,10 @@ module Gretel
|
|
184
189
|
# Renders regular, non-semantic fragment HTML.
|
185
190
|
def render_nonsemantic_fragment(fragment_tag, text, url, options = {})
|
186
191
|
if fragment_tag
|
187
|
-
text =
|
192
|
+
text = link_to(text, url) if url.present?
|
188
193
|
content_tag(fragment_tag, text, class: options[:class])
|
189
194
|
elsif url.present?
|
190
|
-
|
195
|
+
link_to(text, url, class: options[:class])
|
191
196
|
elsif options[:class].present?
|
192
197
|
content_tag(:span, text, class: options[:class])
|
193
198
|
else
|
@@ -195,12 +200,6 @@ module Gretel
|
|
195
200
|
end
|
196
201
|
end
|
197
202
|
|
198
|
-
# Renders a link. It is really just a proxy for +link_to+, but this can be
|
199
|
-
# used in plugins that want to change how links are rendered.
|
200
|
-
def render_link(name, url, options = {})
|
201
|
-
link_to(name, url, options)
|
202
|
-
end
|
203
|
-
|
204
203
|
# Proxy to view context
|
205
204
|
def method_missing(method, *args, &block)
|
206
205
|
context.send(method, *args, &block)
|
data/lib/gretel/version.rb
CHANGED
data/lib/gretel/view_helpers.rb
CHANGED
@@ -25,12 +25,22 @@ module Gretel
|
|
25
25
|
# <% end %>
|
26
26
|
def breadcrumbs(options = {}, &block)
|
27
27
|
if block_given?
|
28
|
-
gretel_renderer.
|
28
|
+
yield gretel_renderer.links_with(options)
|
29
29
|
else
|
30
30
|
gretel_renderer.render(options)
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
+
# Returns or yields parent breadcrumb (second-to-last in the trail) if it is present.
|
35
|
+
def parent_breadcrumb(options = {}, &block)
|
36
|
+
parent = gretel_renderer.links_with(options)[-2]
|
37
|
+
if block_given? && parent
|
38
|
+
yield parent
|
39
|
+
else
|
40
|
+
parent
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
34
44
|
# Encoded breadcrumb trail to be used in URLs.
|
35
45
|
def breadcrumb_trail
|
36
46
|
gretel_renderer.trail
|
data/test/helper_methods_test.rb
CHANGED
@@ -153,6 +153,40 @@ class HelperMethodsTest < ActionView::TestCase
|
|
153
153
|
[:multiple_links_with_parent, "Contact form", "/about/contact/form"]], out
|
154
154
|
end
|
155
155
|
|
156
|
+
test "parent breadcrumb" do
|
157
|
+
breadcrumb :multiple_links_with_parent
|
158
|
+
|
159
|
+
parent = parent_breadcrumb
|
160
|
+
assert_equal [:multiple_links_with_parent, "Contact", "/about/contact"],
|
161
|
+
[parent.key, parent.text, parent.url]
|
162
|
+
end
|
163
|
+
|
164
|
+
test "yields parent breadcrumb" do
|
165
|
+
breadcrumb :multiple_links_with_parent
|
166
|
+
|
167
|
+
out = parent_breadcrumb do |parent|
|
168
|
+
[parent.key, parent.text, parent.url]
|
169
|
+
end
|
170
|
+
assert_equal [:multiple_links_with_parent, "Contact", "/about/contact"],
|
171
|
+
out
|
172
|
+
end
|
173
|
+
|
174
|
+
test "parent breadcrumb returns nil if not present" do
|
175
|
+
breadcrumb :basic
|
176
|
+
|
177
|
+
assert_nil parent_breadcrumb(autoroot: false)
|
178
|
+
end
|
179
|
+
|
180
|
+
test "parent breadcrumb yields only if present" do
|
181
|
+
breadcrumb :basic
|
182
|
+
|
183
|
+
out = parent_breadcrumb(autoroot: false) do
|
184
|
+
"yielded"
|
185
|
+
end
|
186
|
+
|
187
|
+
assert_nil out
|
188
|
+
end
|
189
|
+
|
156
190
|
test "sets current on last link in array" do
|
157
191
|
breadcrumb :multiple_links_with_parent
|
158
192
|
|
@@ -279,7 +313,7 @@ class HelperMethodsTest < ActionView::TestCase
|
|
279
313
|
end
|
280
314
|
|
281
315
|
test "different trail param" do
|
282
|
-
Gretel
|
316
|
+
Gretel.trail_param = :mytest
|
283
317
|
params[:mytest] = "667ea523f92bdb3a086494575b18f587170e482b_W1siYmFzaWMiLCJBYm91dCIsMCwiL2Fib3V0Il1d"
|
284
318
|
breadcrumb :multiple_links
|
285
319
|
|
@@ -287,6 +321,14 @@ class HelperMethodsTest < ActionView::TestCase
|
|
287
321
|
breadcrumbs
|
288
322
|
end
|
289
323
|
|
324
|
+
test "unknown trail" do
|
325
|
+
params[:trail] = "notfound"
|
326
|
+
breadcrumb :multiple_links
|
327
|
+
|
328
|
+
assert_equal %{<div class="breadcrumbs"><a href="/">Home</a> › <a href="/about/contact">Contact</a> › <span class="current">Contact form</span></div>},
|
329
|
+
breadcrumbs
|
330
|
+
end
|
331
|
+
|
290
332
|
# Configuration reload
|
291
333
|
|
292
334
|
test "reload configuration when file is changed" do
|