gretel 1.1.1 → 1.1.2
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.
- data/lib/gretel/crumb.rb +3 -3
- data/lib/gretel/crumbs.rb +5 -5
- data/lib/gretel/helper_methods.rb +37 -21
- data/lib/gretel/helper_methods_old.rb +90 -0
- metadata +5 -4
data/lib/gretel/crumb.rb
CHANGED
data/lib/gretel/crumbs.rb
CHANGED
@@ -21,21 +21,21 @@ module Gretel
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def get_crumb(name, object = nil)
|
24
|
-
raise "Crumb '#{name}' not found." unless all[name]
|
25
|
-
|
26
24
|
@object = object # share the object so we can call it from link() and parent()
|
27
|
-
@link = nil
|
28
25
|
@parent = nil
|
29
26
|
|
30
27
|
all[name].call(object)
|
31
|
-
Gretel::Crumb.new(@
|
28
|
+
Gretel::Crumb.new(@links, @parent)
|
32
29
|
end
|
33
30
|
|
34
31
|
def link(text, url, options = {})
|
35
32
|
text = text.call(@object) if text.is_a?(Proc)
|
36
33
|
url = url.call(@object) if url.is_a?(Proc)
|
37
34
|
|
38
|
-
@
|
35
|
+
@links ||= []
|
36
|
+
@links << Gretel::Link.new(text, url, options)
|
37
|
+
|
38
|
+
@links
|
39
39
|
end
|
40
40
|
|
41
41
|
def parent(name, object = nil)
|
@@ -33,43 +33,59 @@ module Gretel
|
|
33
33
|
def breadcrumb_for(*args)
|
34
34
|
options = args.extract_options!
|
35
35
|
link_last = options[:link_last]
|
36
|
-
options[:link_last] = true
|
37
|
-
separator = (options[:separator] || ">").html_safe
|
38
36
|
|
39
37
|
name, object = args[0], args[1]
|
40
38
|
|
39
|
+
links = []
|
40
|
+
|
41
41
|
crumb = Crumbs.get_crumb(name, object)
|
42
|
-
|
43
|
-
|
44
|
-
else
|
45
|
-
if options[:use_microformats]
|
46
|
-
out = content_tag(:span, crumb.link.text, :class => "current", :itemprop => "title")
|
47
|
-
else
|
48
|
-
out = content_tag(:span, crumb.link.text, :class => "current")
|
49
|
-
end
|
42
|
+
while link = crumb.links.shift
|
43
|
+
links.unshift link
|
50
44
|
end
|
51
45
|
|
52
|
-
while
|
53
|
-
last_parent =
|
54
|
-
crumb = Crumbs.get_crumb(
|
55
|
-
|
56
|
-
|
57
|
-
else
|
58
|
-
out = link_to(crumb.link.text, crumb.link.url, crumb.link.options) + " " + separator + " " + out
|
46
|
+
while crumb = crumb.parent
|
47
|
+
last_parent = crumb.name
|
48
|
+
crumb = Crumbs.get_crumb(crumb.name, crumb.object)
|
49
|
+
while link = crumb.links.shift
|
50
|
+
links.unshift link
|
59
51
|
end
|
60
52
|
end
|
61
53
|
|
62
|
-
# TODO: Refactor this
|
63
54
|
if options[:autoroot] && name != :root && last_parent != :root
|
64
55
|
crumb = Crumbs.get_crumb(:root)
|
56
|
+
while link = crumb.links.shift
|
57
|
+
links.unshift link
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
last_link = links.pop
|
62
|
+
|
63
|
+
out = []
|
64
|
+
while link = links.shift
|
65
65
|
if options[:use_microformats]
|
66
|
-
out
|
66
|
+
out << content_tag(:div, link_to(content_tag(:span, link.text, :itemprop => "title"), link.url, link.options.merge(:itemprop => "url")), :itemscope => "", :itemtype => "http://data-vocabulary.org/Breadcrumb")
|
67
|
+
else
|
68
|
+
out << link_to(link.text, link.url)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
if last_link
|
73
|
+
if options[:link_last]
|
74
|
+
if options[:use_microformats]
|
75
|
+
out << content_tag(:div, link_to(content_tag(:span, last_link.text, :class => "current", :itemprop => "title"), last_link.url, last_link.options.merge(:itemprop => "url")), :itemscope => "", :itemtype => "http://data-vocabulary.org/Breadcrumb")
|
76
|
+
else
|
77
|
+
out << link_to(last_link.text, last_link.url, :class => "current")
|
78
|
+
end
|
67
79
|
else
|
68
|
-
|
80
|
+
if options[:use_microformats]
|
81
|
+
out << content_tag(:div, content_tag(:span, last_link.text, :class => "current", :itemprop => "title"), :itemscope => "", :itemtype => "http://data-vocabulary.org/Breadcrumb")
|
82
|
+
else
|
83
|
+
out << content_tag(:span, last_link.text, :class => "current", :itemprop => "title")
|
84
|
+
end
|
69
85
|
end
|
70
86
|
end
|
71
87
|
|
72
|
-
out
|
88
|
+
out.join(" " + (options[:separator] || ">") + " ").html_safe
|
73
89
|
end
|
74
90
|
end
|
75
91
|
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
module Gretel
|
2
|
+
module HelperMethods
|
3
|
+
include ActionView::Helpers::UrlHelper
|
4
|
+
def controller # hack because ActionView::Helpers::UrlHelper needs a controller method
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.included(base)
|
8
|
+
base.send :helper_method, :breadcrumb_for, :breadcrumb
|
9
|
+
end
|
10
|
+
|
11
|
+
def breadcrumb(*args)
|
12
|
+
options = args.extract_options!
|
13
|
+
name, object = args[0], args[1]
|
14
|
+
|
15
|
+
if name
|
16
|
+
@_breadcrumb_name = name
|
17
|
+
@_breadcrumb_object = object
|
18
|
+
else
|
19
|
+
if @_breadcrumb_name
|
20
|
+
crumb = breadcrumb_for(@_breadcrumb_name, @_breadcrumb_object, options)
|
21
|
+
elsif options[:show_root_alone]
|
22
|
+
crumb = breadcrumb_for(:root, options)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
if crumb && options[:pretext]
|
27
|
+
crumb = options[:pretext].html_safe + " " + crumb
|
28
|
+
end
|
29
|
+
|
30
|
+
crumb
|
31
|
+
end
|
32
|
+
|
33
|
+
def breadcrumb_for(*args)
|
34
|
+
options = args.extract_options!
|
35
|
+
link_last = options[:link_last]
|
36
|
+
|
37
|
+
name, object = args[0], args[1]
|
38
|
+
|
39
|
+
crumbs = []
|
40
|
+
|
41
|
+
crumb = Crumbs.get_crumb(name, object)
|
42
|
+
if crumb.links
|
43
|
+
last_link = crumb.links.pop
|
44
|
+
#if link_last
|
45
|
+
# out = out + " " + separator + " " + link_to_if(link_last, last_link.text, last_crumb.link.url, last_crumb.options.merge(:class => "current"))
|
46
|
+
#else
|
47
|
+
# if options[:use_microformats]
|
48
|
+
# out = out + " " + separator + " " + content_tag(:span, last_link.text, :class => "current", :itemprop => "title")
|
49
|
+
# else
|
50
|
+
crumbs << content_tag(:span, last_link.text, :class => "current")
|
51
|
+
# end
|
52
|
+
#end
|
53
|
+
end
|
54
|
+
|
55
|
+
last_parent = nil
|
56
|
+
while parent = crumb.parent
|
57
|
+
last_parent = parent.name
|
58
|
+
crumb = Crumbs.get_crumb(parent.name, parent.object)
|
59
|
+
|
60
|
+
if crumb.links
|
61
|
+
while link = crumb.links.shift
|
62
|
+
if link
|
63
|
+
#if options[:use_microformats]
|
64
|
+
# parents = out + " " + separator + " " + content_tag(:div, link_to(content_tag(:span, link.text, :itemprop => "title"), link.url, link.options.merge(:itemprop => "url")) + " ", :itemscope => "", :itemtype => "http://data-vocabulary.org/Breadcrumb")
|
65
|
+
#else
|
66
|
+
crumbs.shift link_to(link.text, link.url, link.options)
|
67
|
+
#end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
# TODO: Refactor this
|
74
|
+
if options[:autoroot] && name != :root && last_parent != :root
|
75
|
+
crumb = Crumbs.get_crumb(:root)
|
76
|
+
if crumb.links
|
77
|
+
while link = crumb.links.shift
|
78
|
+
#if options[:use_microformats]
|
79
|
+
# out = content_tag(:div, link_to(content_tag(:span, link.text, :itemprop => "title"), link.url, link.options.merge(:itemprop => "url")) + " ", :itemscope => "", :itemtype => "http://data-vocabulary.org/Breadcrumb") + " " + separator + " " + out
|
80
|
+
#else
|
81
|
+
crumbs.unshift link_to(link.text, link.url, link.options)
|
82
|
+
#end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
crumbs.join(" " + (options[:separator] || ">") + " ").html_safe
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gretel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 1.1.
|
9
|
+
- 2
|
10
|
+
version: 1.1.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Lasse Bunk
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-05-
|
18
|
+
date: 2012-05-26 00:00:00 Z
|
19
19
|
dependencies: []
|
20
20
|
|
21
21
|
description: Gretel is a Ruby on Rails plugin that makes it easy yet flexible to create breadcrumbs.
|
@@ -32,6 +32,7 @@ files:
|
|
32
32
|
- lib/gretel/crumb.rb
|
33
33
|
- lib/gretel/crumbs.rb
|
34
34
|
- lib/gretel/helper_methods.rb
|
35
|
+
- lib/gretel/helper_methods_old.rb
|
35
36
|
- lib/gretel/link.rb
|
36
37
|
- lib/gretel/parent.rb
|
37
38
|
- lib/gretel.rb
|