-
Notifications
You must be signed in to change notification settings - Fork 59
/
breadcrumb.rb
66 lines (52 loc) · 1.62 KB
/
breadcrumb.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
module BootstrapHelper
module Breadcrumb
def self.included(receiver)
receiver.extend ClassMethods
receiver.send :include, InstanceMethods
receiver.send :helper, Helpers
receiver.send :before_filter, :set_breadcrumbs
end
module ClassMethods
end
module InstanceMethods
protected
def set_breadcrumbs
@breadcrumbs = ["<a href='/'>Home</a>".html_safe]
end
def drop_breadcrumb(title=nil, url=nil)
title ||= @page_title
if title && url
@breadcrumbs.push("<a href='#{url}'>#{title}</a>".html_safe)
elsif title
@breadcrumbs.push("#{title}".html_safe)
end
end
def drop_page_title(title)
@page_title = title
return @page_title
end
def no_breadcrumbs
@breadcrumbs = []
end
end
module Helpers
def render_breadcrumb
return "" if @breadcrumbs.size <= 0
prefix = "".html_safe
crumb = "".html_safe
@breadcrumbs.each_with_index do |c, i|
breadcrumb_class = []
breadcrumb_class << "first" if i == 0
breadcrumb_class << "last active" if i == (@breadcrumbs.length - 1)
if i == (@breadcrumbs.length - 1)
breadcrumb_content = c
else
breadcrumb_content = c + " " + content_tag(:span, "/", :class => "divider")
end
crumb += content_tag(:li, breadcrumb_content ,:class => breadcrumb_class ) + "\n"
end
return prefix + content_tag(:ul, crumb, :class => "breadcrumb menu clearfix")
end
end
end
end