breadcrumbs_rails 0.2 → 1.0.0
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/.gitignore +6 -2
- data/Gemfile +1 -0
- data/Gemfile.lock +143 -0
- data/breadcrumbs_rails.gemspec +19 -17
- data/lib/breadcrumbs_rails/action_controller.rb +158 -0
- data/lib/breadcrumbs_rails/railtie.rb +5 -4
- data/lib/breadcrumbs_rails/version.rb +1 -1
- data/lib/breadcrumbs_rails.rb +3 -80
- data/readme.md +41 -73
- metadata +5 -15
- data/badges/rails.svg +0 -1
- data/lib/breadcrumbs_rails/breadcrumb.rb +0 -46
- data/lib/breadcrumbs_rails/breadcrumbs.rb +0 -37
- data/lib/generators/breadcrumbs/config_generator.rb +0 -11
- data/lib/generators/breadcrumbs/templates/app/views/breadcrumbs/_bootstrap.html.erb +0 -13
- data/lib/generators/breadcrumbs/templates/app/views/breadcrumbs/_bootstrap.html.haml +0 -8
- data/lib/generators/breadcrumbs/templates/app/views/breadcrumbs/_html.html.erb +0 -13
- data/lib/generators/breadcrumbs/templates/app/views/breadcrumbs/_html.html.haml +0 -8
- data/lib/generators/breadcrumbs/templates/app/views/breadcrumbs/_inspinia.html.erb +0 -21
- data/lib/generators/breadcrumbs/templates/app/views/breadcrumbs/_inspinia.html.haml +0 -13
- data/lib/generators/breadcrumbs/templates/config/initializers/breadcrumbs_config.rb +0 -1
- data/lib/generators/breadcrumbs/views_generator.rb +0 -22
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 481a041e6639cb0a33b985322c02c98dcc60a496fd528f2cf647406b479057a7
|
|
4
|
+
data.tar.gz: 368657c68d3be4bfd57105a8c6764a7dbad3f13831207c6a4840d0298194663c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b7828dc371a46f67aacda7a74d93854603791f4afec2f6ce6ac1270003b9e34ddc5491439530fa7fbe899b58f3307b5bc275ce97c9fc01cea0f17835e07af20c
|
|
7
|
+
data.tar.gz: 19553a7b9208d91ee61a86a77097ede252c3e9e843c43f089e2f86ce7ba4a8a25cb0812ad397efef1279e4fa90f421d81dbe7e3b8747daaaeceec87accf07671
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
breadcrumbs_rails (0.1.0)
|
|
5
|
+
|
|
6
|
+
GEM
|
|
7
|
+
remote: https://rubygems.org/
|
|
8
|
+
specs:
|
|
9
|
+
actioncable (6.0.3.4)
|
|
10
|
+
actionpack (= 6.0.3.4)
|
|
11
|
+
nio4r (~> 2.0)
|
|
12
|
+
websocket-driver (>= 0.6.1)
|
|
13
|
+
actionmailbox (6.0.3.4)
|
|
14
|
+
actionpack (= 6.0.3.4)
|
|
15
|
+
activejob (= 6.0.3.4)
|
|
16
|
+
activerecord (= 6.0.3.4)
|
|
17
|
+
activestorage (= 6.0.3.4)
|
|
18
|
+
activesupport (= 6.0.3.4)
|
|
19
|
+
mail (>= 2.7.1)
|
|
20
|
+
actionmailer (6.0.3.4)
|
|
21
|
+
actionpack (= 6.0.3.4)
|
|
22
|
+
actionview (= 6.0.3.4)
|
|
23
|
+
activejob (= 6.0.3.4)
|
|
24
|
+
mail (~> 2.5, >= 2.5.4)
|
|
25
|
+
rails-dom-testing (~> 2.0)
|
|
26
|
+
actionpack (6.0.3.4)
|
|
27
|
+
actionview (= 6.0.3.4)
|
|
28
|
+
activesupport (= 6.0.3.4)
|
|
29
|
+
rack (~> 2.0, >= 2.0.8)
|
|
30
|
+
rack-test (>= 0.6.3)
|
|
31
|
+
rails-dom-testing (~> 2.0)
|
|
32
|
+
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
|
33
|
+
actiontext (6.0.3.4)
|
|
34
|
+
actionpack (= 6.0.3.4)
|
|
35
|
+
activerecord (= 6.0.3.4)
|
|
36
|
+
activestorage (= 6.0.3.4)
|
|
37
|
+
activesupport (= 6.0.3.4)
|
|
38
|
+
nokogiri (>= 1.8.5)
|
|
39
|
+
actionview (6.0.3.4)
|
|
40
|
+
activesupport (= 6.0.3.4)
|
|
41
|
+
builder (~> 3.1)
|
|
42
|
+
erubi (~> 1.4)
|
|
43
|
+
rails-dom-testing (~> 2.0)
|
|
44
|
+
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
|
45
|
+
activejob (6.0.3.4)
|
|
46
|
+
activesupport (= 6.0.3.4)
|
|
47
|
+
globalid (>= 0.3.6)
|
|
48
|
+
activemodel (6.0.3.4)
|
|
49
|
+
activesupport (= 6.0.3.4)
|
|
50
|
+
activerecord (6.0.3.4)
|
|
51
|
+
activemodel (= 6.0.3.4)
|
|
52
|
+
activesupport (= 6.0.3.4)
|
|
53
|
+
activestorage (6.0.3.4)
|
|
54
|
+
actionpack (= 6.0.3.4)
|
|
55
|
+
activejob (= 6.0.3.4)
|
|
56
|
+
activerecord (= 6.0.3.4)
|
|
57
|
+
marcel (~> 0.3.1)
|
|
58
|
+
activesupport (6.0.3.4)
|
|
59
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
60
|
+
i18n (>= 0.7, < 2)
|
|
61
|
+
minitest (~> 5.1)
|
|
62
|
+
tzinfo (~> 1.1)
|
|
63
|
+
zeitwerk (~> 2.2, >= 2.2.2)
|
|
64
|
+
builder (3.2.4)
|
|
65
|
+
concurrent-ruby (1.1.7)
|
|
66
|
+
crass (1.0.6)
|
|
67
|
+
erubi (1.10.0)
|
|
68
|
+
globalid (0.4.2)
|
|
69
|
+
activesupport (>= 4.2.0)
|
|
70
|
+
i18n (1.8.5)
|
|
71
|
+
concurrent-ruby (~> 1.0)
|
|
72
|
+
loofah (2.8.0)
|
|
73
|
+
crass (~> 1.0.2)
|
|
74
|
+
nokogiri (>= 1.5.9)
|
|
75
|
+
mail (2.7.1)
|
|
76
|
+
mini_mime (>= 0.1.1)
|
|
77
|
+
marcel (0.3.3)
|
|
78
|
+
mimemagic (~> 0.3.2)
|
|
79
|
+
method_source (1.0.0)
|
|
80
|
+
mimemagic (0.3.5)
|
|
81
|
+
mini_mime (1.0.2)
|
|
82
|
+
mini_portile2 (2.4.0)
|
|
83
|
+
minitest (5.14.2)
|
|
84
|
+
nio4r (2.5.4)
|
|
85
|
+
nokogiri (1.10.10)
|
|
86
|
+
mini_portile2 (~> 2.4.0)
|
|
87
|
+
rack (2.2.3)
|
|
88
|
+
rack-test (1.1.0)
|
|
89
|
+
rack (>= 1.0, < 3)
|
|
90
|
+
rails (6.0.3.4)
|
|
91
|
+
actioncable (= 6.0.3.4)
|
|
92
|
+
actionmailbox (= 6.0.3.4)
|
|
93
|
+
actionmailer (= 6.0.3.4)
|
|
94
|
+
actionpack (= 6.0.3.4)
|
|
95
|
+
actiontext (= 6.0.3.4)
|
|
96
|
+
actionview (= 6.0.3.4)
|
|
97
|
+
activejob (= 6.0.3.4)
|
|
98
|
+
activemodel (= 6.0.3.4)
|
|
99
|
+
activerecord (= 6.0.3.4)
|
|
100
|
+
activestorage (= 6.0.3.4)
|
|
101
|
+
activesupport (= 6.0.3.4)
|
|
102
|
+
bundler (>= 1.3.0)
|
|
103
|
+
railties (= 6.0.3.4)
|
|
104
|
+
sprockets-rails (>= 2.0.0)
|
|
105
|
+
rails-dom-testing (2.0.3)
|
|
106
|
+
activesupport (>= 4.2.0)
|
|
107
|
+
nokogiri (>= 1.6)
|
|
108
|
+
rails-html-sanitizer (1.3.0)
|
|
109
|
+
loofah (~> 2.3)
|
|
110
|
+
railties (6.0.3.4)
|
|
111
|
+
actionpack (= 6.0.3.4)
|
|
112
|
+
activesupport (= 6.0.3.4)
|
|
113
|
+
method_source
|
|
114
|
+
rake (>= 0.8.7)
|
|
115
|
+
thor (>= 0.20.3, < 2.0)
|
|
116
|
+
rake (13.0.1)
|
|
117
|
+
sprockets (4.0.2)
|
|
118
|
+
concurrent-ruby (~> 1.0)
|
|
119
|
+
rack (> 1, < 3)
|
|
120
|
+
sprockets-rails (3.2.2)
|
|
121
|
+
actionpack (>= 4.0)
|
|
122
|
+
activesupport (>= 4.0)
|
|
123
|
+
sprockets (>= 3.0.0)
|
|
124
|
+
thor (1.0.1)
|
|
125
|
+
thread_safe (0.3.6)
|
|
126
|
+
tzinfo (1.2.8)
|
|
127
|
+
thread_safe (~> 0.1)
|
|
128
|
+
websocket-driver (0.7.3)
|
|
129
|
+
websocket-extensions (>= 0.1.0)
|
|
130
|
+
websocket-extensions (0.1.5)
|
|
131
|
+
zeitwerk (2.4.1)
|
|
132
|
+
|
|
133
|
+
PLATFORMS
|
|
134
|
+
ruby
|
|
135
|
+
|
|
136
|
+
DEPENDENCIES
|
|
137
|
+
breadcrumbs_rails!
|
|
138
|
+
bundler
|
|
139
|
+
rails (>= 3.0)
|
|
140
|
+
rake
|
|
141
|
+
|
|
142
|
+
BUNDLED WITH
|
|
143
|
+
2.1.2
|
data/breadcrumbs_rails.gemspec
CHANGED
|
@@ -1,24 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
1
|
+
$:.push File.expand_path('../lib', __FILE__)
|
|
3
2
|
require 'breadcrumbs_rails/version'
|
|
4
3
|
|
|
5
|
-
Gem::Specification.new do |
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
4
|
+
Gem::Specification.new do |s|
|
|
5
|
+
s.name = 'breadcrumbs_rails'
|
|
6
|
+
s.version = BreadcrumbsRails::VERSION.dup
|
|
7
|
+
s.platform = Gem::Platform::RUBY
|
|
8
|
+
s.authors = 'EdCordata'
|
|
9
|
+
s.description = 'Rails breadcrumbs gem'
|
|
10
|
+
s.summary = 'Rails breadcrumbs gem'
|
|
11
|
+
s.licenses = ['CC BY 4.0']
|
|
12
|
+
s.require_paths = %w(lib)
|
|
13
|
+
s.files = `git ls-files`.split("\n")
|
|
14
|
+
s.homepage = 'https://github.com/EdCordata-Ruby-Gems/breadcrumbs_rails'
|
|
15
|
+
s.require_paths = ['lib']
|
|
16
|
+
s.required_ruby_version = '>= 1.9.3'
|
|
17
|
+
s.rubygems_version = '1.6.2'
|
|
18
|
+
s.metadata = {
|
|
13
19
|
'documentation_uri' => 'https://github.com/EdCordata-Ruby-Gems/breadcrumbs_rails/blob/master/readme.md',
|
|
14
20
|
'source_code_uri' => 'https://github.com/EdCordata-Ruby-Gems/breadcrumbs_rails',
|
|
15
21
|
'bug_tracker_uri' => 'https://github.com/EdCordata-Ruby-Gems/breadcrumbs_rails/issues'
|
|
16
22
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
spec.required_ruby_version = '>= 1.9.3'
|
|
21
|
-
spec.add_development_dependency 'rake'
|
|
22
|
-
spec.add_development_dependency 'bundler'
|
|
23
|
-
spec.add_development_dependency 'rails', '>= 3.0'
|
|
23
|
+
s.add_development_dependency 'rake'
|
|
24
|
+
s.add_development_dependency 'bundler'
|
|
25
|
+
s.add_development_dependency 'rails', '>= 3.0'
|
|
24
26
|
end
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
module BreadcrumbsRails
|
|
2
|
+
module ActionController
|
|
3
|
+
extend ActiveSupport::Concern
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
# -----------------------------------------------------------
|
|
7
|
+
included do |base|
|
|
8
|
+
extend ClassMethods
|
|
9
|
+
helper HelperMethods
|
|
10
|
+
|
|
11
|
+
helper_method :add_breadcrumb, :breadcrumbs_gem
|
|
12
|
+
|
|
13
|
+
unless base.respond_to?(:before_action)
|
|
14
|
+
base.alias_method :before_action, :before_filter
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
# -----------------------------------------------------------
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
protected
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
# -----------------------------------------------------------
|
|
24
|
+
def add_breadcrumb(name, options = {})
|
|
25
|
+
url_helpers = Rails.application.routes.url_helpers
|
|
26
|
+
|
|
27
|
+
if options[:path]
|
|
28
|
+
options[:path] = if url_helpers.methods.include?(options[:path])
|
|
29
|
+
url_helpers.send(options[:path])
|
|
30
|
+
else
|
|
31
|
+
options[:path]
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
self.breadcrumbs_gem[:breadcrumbs] << {
|
|
36
|
+
name: name,
|
|
37
|
+
path: options[:path].to_s,
|
|
38
|
+
params: options[:params] || {},
|
|
39
|
+
title: options[:title],
|
|
40
|
+
html_safe: options[:html_safe] == true
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
self.breadcrumbs_gem[:localize] = options[:localize] == true unless options[:localize].nil?
|
|
44
|
+
self.breadcrumbs_gem[:html_safe] = options[:html_safe] == true unless options[:html_safe].nil?
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def breadcrumbs_gem
|
|
48
|
+
@breadcrumbs_gem ||= { breadcrumbs: [], scope: nil, localize: false }
|
|
49
|
+
end
|
|
50
|
+
# -----------------------------------------------------------
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
# Class Methods
|
|
54
|
+
# -----------------------------------------------------------
|
|
55
|
+
module ClassMethods
|
|
56
|
+
|
|
57
|
+
def add_breadcrumb(name, options = {})
|
|
58
|
+
before_action(options) do |controller|
|
|
59
|
+
controller.send(:add_breadcrumb, name, options)
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
end
|
|
64
|
+
# -----------------------------------------------------------
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
# Helper Methods
|
|
68
|
+
# -----------------------------------------------------------
|
|
69
|
+
module HelperMethods
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def render_breadcrumbs_title(default = nil)
|
|
73
|
+
return default if breadcrumbs_gem[:breadcrumbs].last[:title].nil?
|
|
74
|
+
return '' if breadcrumbs_gem[:breadcrumbs].last[:title].to_s.blank?
|
|
75
|
+
|
|
76
|
+
if breadcrumbs_gem[:localize]
|
|
77
|
+
I18n.t(breadcrumbs_gem[:breadcrumbs].last[:title])
|
|
78
|
+
else
|
|
79
|
+
breadcrumbs_gem[:breadcrumbs].last[:title]
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
def render_breadcrumbs(options = {}, &block)
|
|
85
|
+
format = (options[:format] || :html).to_sym
|
|
86
|
+
|
|
87
|
+
if block_given?
|
|
88
|
+
yield(breadcrumbs_gem)
|
|
89
|
+
else
|
|
90
|
+
|
|
91
|
+
case format
|
|
92
|
+
|
|
93
|
+
when :html
|
|
94
|
+
content_tag(:ul) do
|
|
95
|
+
breadcrumbs_gem[:breadcrumbs].map do |breadcrumb|
|
|
96
|
+
concat content_tag(:li, breadcrumbs_name_or_link(breadcrumbs_gem, breadcrumb))
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
when :bootstrap
|
|
101
|
+
content_tag(:ul, class: 'pagination') do
|
|
102
|
+
breadcrumbs_gem[:breadcrumbs].map do |breadcrumb|
|
|
103
|
+
concat content_tag(:li, breadcrumbs_name_or_link(breadcrumbs_gem, breadcrumb))
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
when :inspinia
|
|
108
|
+
html = ''
|
|
109
|
+
html << '<div class="row wrapper border-bottom white-bg page-heading">'
|
|
110
|
+
html << ' <div class="col-lg-9">'
|
|
111
|
+
html << (render_breadcrumbs_title ? "<h2>#{render_breadcrumbs_title}</h2>" : '<br/>')
|
|
112
|
+
html << ' <ol class="breadcrumb">'
|
|
113
|
+
|
|
114
|
+
breadcrumbs_gem[:breadcrumbs].each_with_index do |breadcrumb, index|
|
|
115
|
+
if (index + 1) == breadcrumbs_gem[:breadcrumbs].length
|
|
116
|
+
html << "<li class='active'><strong>#{breadcrumbs_name_or_link(breadcrumbs_gem, breadcrumb)}</strong></li>"
|
|
117
|
+
else
|
|
118
|
+
html << "<li>#{breadcrumbs_name_or_link(breadcrumbs_gem, breadcrumb)}</li>"
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
html << ' </ol>'
|
|
123
|
+
html << ' </div>'
|
|
124
|
+
html << '</div>'
|
|
125
|
+
html.html_safe
|
|
126
|
+
|
|
127
|
+
else
|
|
128
|
+
raise "Breadcrumbs-rails: unknown format '#{format.to_s}'"
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
private
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
def breadcrumbs_name_or_link(breadcrumbs_gem, breadcrumb)
|
|
139
|
+
return '' if breadcrumb[:name].to_s.blank?
|
|
140
|
+
|
|
141
|
+
name = (breadcrumbs_gem[:localize] ? I18n.t(breadcrumb[:name]) : breadcrumb[:name])
|
|
142
|
+
name = CGI::escapeHTML(name) unless breadcrumb[:html_safe] # escape name as we call html_safe
|
|
143
|
+
|
|
144
|
+
if breadcrumb[:path].to_s.blank?
|
|
145
|
+
name.html_safe
|
|
146
|
+
else
|
|
147
|
+
url = Rails.application.routes.url_helpers.send(breadcrumb[:path].to_s, breadcrumb[:params])
|
|
148
|
+
link_to(name.html_safe, url)
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
end
|
|
154
|
+
# -----------------------------------------------------------
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
end
|
|
158
|
+
end
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
module BreadcrumbsRails
|
|
2
|
-
|
|
3
2
|
class Railtie < Rails::Railtie
|
|
3
|
+
|
|
4
4
|
ActiveSupport.on_load(:action_controller) do
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
::ActionController::Base.send(:include, BreadcrumbsRails::ActionController)
|
|
6
|
+
views_path = "#{File.dirname(__FILE__)}/../generators/breadcrumbs/templates/app/views/breadcrumbs"
|
|
7
|
+
::ActionController::Base.prepend_view_path(views_path)
|
|
7
8
|
end
|
|
8
|
-
end
|
|
9
9
|
|
|
10
|
+
end
|
|
10
11
|
end
|
data/lib/breadcrumbs_rails.rb
CHANGED
|
@@ -1,85 +1,8 @@
|
|
|
1
1
|
require 'breadcrumbs_rails/version'
|
|
2
|
+
require 'breadcrumbs_rails/action_controller'
|
|
2
3
|
require 'breadcrumbs_rails/railtie'
|
|
3
|
-
require 'breadcrumbs_rails/breadcrumb'
|
|
4
|
-
require 'breadcrumbs_rails/breadcrumbs'
|
|
5
4
|
|
|
6
5
|
module BreadcrumbsRails
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
# ----------------------------------------------------------
|
|
11
|
-
included do |base|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
unless base.respond_to?(:before_action)
|
|
15
|
-
base.alias_method :before_filter, :before_action
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
helper_method :render_breadcrumbs_title, :render_breadcrumbs
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
def add_breadcrumb(name, options = {})
|
|
23
|
-
self.breadcrumbs_gem.breadcrumbs << ::BreadcrumbsRails::Breadcrumb.new(
|
|
24
|
-
name_string: name,
|
|
25
|
-
path_string: options[:path],
|
|
26
|
-
locale: options[:locale],
|
|
27
|
-
localize: options[:localize],
|
|
28
|
-
)
|
|
29
|
-
|
|
30
|
-
self.breadcrumbs_gem.localize = options[:localize] if options.has_key?(:localize)
|
|
31
|
-
self.breadcrumbs_gem.locale = options[:locale] if options.has_key?(:locale)
|
|
32
|
-
self.breadcrumbs_gem.scope = options[:scope] if options.has_key?(:scope)
|
|
33
|
-
self.breadcrumbs_gem.title_string = options[:title] if options.has_key?(:title)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
def breadcrumbs_gem
|
|
38
|
-
@breadcrumbs_gem ||= ::BreadcrumbsRails::Breadcrumbs.new
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
def render_breadcrumbs_title(default = nil)
|
|
43
|
-
breadcrumbs_gem.title || default
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
def render_breadcrumbs(template: nil, &block)
|
|
48
|
-
if block_given?
|
|
49
|
-
yield(breadcrumbs_gem)
|
|
50
|
-
else
|
|
51
|
-
|
|
52
|
-
if template.nil?
|
|
53
|
-
partial = 'breadcrumbs/breadcrumbs'
|
|
54
|
-
partial = (breadcrumbs_gem.scope + '/' + partial) unless breadcrumbs_gem.scope.nil?
|
|
55
|
-
else
|
|
56
|
-
partial = "breadcrumbs/#{template}"
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
partial += '.html'
|
|
60
|
-
|
|
61
|
-
render(partial: partial,
|
|
62
|
-
locals: { breadcrumbs: breadcrumbs_gem },
|
|
63
|
-
handlers: [:erb, :haml])
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
end
|
|
69
|
-
# ----------------------------------------------------------
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
# ----------------------------------------------------------
|
|
73
|
-
class_methods do
|
|
74
|
-
|
|
75
|
-
def add_breadcrumb(name, options = {})
|
|
76
|
-
before_action(options) do |controller|
|
|
77
|
-
controller.send(:add_breadcrumb, name, options)
|
|
78
|
-
end
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
end
|
|
82
|
-
# ----------------------------------------------------------
|
|
83
|
-
|
|
84
|
-
|
|
6
|
+
NAME = 'Breadcrumbs Rails'
|
|
7
|
+
GEM = 'breadcrumbs_rails'
|
|
85
8
|
end
|
data/readme.md
CHANGED
|
@@ -1,47 +1,45 @@
|
|
|
1
|
-
|
|
1
|
+
# Breadcrumbs Rails
|
|
2
2
|
|
|
3
3
|

|
|
4
|
-

|
|
5
4
|
[](https://creativecommons.org/licenses/by/4.0/)
|
|
6
5
|
|
|
6
|
+
Breadcrumbs rails is easy way to create breadcrumbs from controllers and render them in view. This gem also
|
|
7
|
+
includes functionality to easily change title.
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
#### Installation
|
|
9
|
+
### Installation
|
|
12
10
|
|
|
13
11
|
As usual, add to Gemfile:
|
|
14
12
|
```ruby
|
|
15
13
|
gem 'breadcrumbs_rails'
|
|
16
14
|
```
|
|
17
15
|
|
|
18
|
-
|
|
16
|
+
and run:
|
|
19
17
|
```bash
|
|
20
|
-
|
|
18
|
+
$ bundle install
|
|
21
19
|
```
|
|
22
20
|
|
|
23
21
|
|
|
24
|
-
|
|
22
|
+
### Introduction
|
|
23
|
+
|
|
24
|
+
Syntax is `add_breadcrumb(name, options)`
|
|
25
|
+
Available options:
|
|
26
|
+
* `html_safe` - (type: boolean, default: false) - specifies if title is html safe and shouldn't be escaped
|
|
27
|
+
* `:path` - (type: string, default: nil) - link path as string. It must be a string, not symbol
|
|
28
|
+
* `:params` - (type: hash, default: {}) - params to pass to `:path`
|
|
29
|
+
* `:title` - (type: string, default: nil) - title for `:render_breadcrumbs_title` method
|
|
30
|
+
|
|
25
31
|
|
|
26
32
|
|
|
27
|
-
|
|
33
|
+
### Usage
|
|
28
34
|
|
|
29
35
|
In controllers
|
|
30
36
|
```ruby
|
|
31
37
|
class ApplicationController < ActionController::Base
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
# non-required attributes:
|
|
35
|
-
# * path - if not specified, item will be text, instead of link. Possible STRING values: '/', 'root_path'
|
|
36
|
-
# * scope - views scope, in case you want different breadcrumbs for different namespaces, like 'admin'
|
|
37
|
-
# * views_title - only for inspinia template. This is title above breadcrumbs.
|
|
38
|
-
# * template - template of views to use: 'html', 'bootstrap', 'inspinia' (only if not using custom views).
|
|
39
|
-
# Note that, if this argument is passed, gems views will be used.
|
|
40
|
-
add_breadcrumb 'views.home', path: 'root_path', title: 'Home', scope: 'views.admin', localize: true
|
|
38
|
+
add_breadcrumb 'Home', path: 'root_path', params: { locale: 'en' }
|
|
41
39
|
end
|
|
42
40
|
|
|
43
41
|
class UsersController < ApplicationController
|
|
44
|
-
add_breadcrumb 'Users', path: 'users_path', title: 'Users'
|
|
42
|
+
add_breadcrumb 'Users', path: 'users_path', params: { locale: 'en' }, title: 'Users'
|
|
45
43
|
|
|
46
44
|
def edit
|
|
47
45
|
add_breadcrumb('User')
|
|
@@ -49,66 +47,36 @@ class UsersController < ApplicationController
|
|
|
49
47
|
end
|
|
50
48
|
```
|
|
51
49
|
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
Using gem's views
|
|
58
|
-
```haml
|
|
59
|
-
= render_breadcrumbs
|
|
50
|
+
If you want to use translations, do it like so:
|
|
51
|
+
```ruby
|
|
52
|
+
class ApplicationController < ActionController::Base
|
|
53
|
+
add_breadcrumb 'links.home', path: 'root_path', params: { locale: 'en' }, title: '', localize: true # Only name is required
|
|
54
|
+
end
|
|
60
55
|
|
|
61
|
-
|
|
62
|
-
|
|
56
|
+
class UsersController < ApplicationController
|
|
57
|
+
add_breadcrumb 'links.users', path: 'users_path', params: { locale: 'en' }, title: 'Users'
|
|
58
|
+
|
|
59
|
+
def edit
|
|
60
|
+
add_breadcrumb('links.user')
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
63
|
```
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
### Rendering breadcrumbs
|
|
66
|
+
Default format is `:html`. Available: `:html`, `:bootstrap`, `:inspinia`.
|
|
66
67
|
```haml
|
|
67
|
-
|
|
68
|
-
- breadcrumbs.breadcrumbs.each do |breadcrumb|
|
|
69
|
-
%li= link_to_if breadcrumb.path, breadcrumb.name, breadcrumb.path
|
|
68
|
+
= render_breadcrumbs(format: :html)
|
|
70
69
|
```
|
|
71
70
|
|
|
72
|
-
|
|
71
|
+
Or by using block:
|
|
73
72
|
```haml
|
|
74
|
-
- render_breadcrumbs do |
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
- breadcrumbs.format # current format
|
|
78
|
-
|
|
79
|
-
breadcrumb.localize # boolean if should localize title
|
|
80
|
-
breadcrumb.locale # current locale
|
|
81
|
-
|
|
82
|
-
- breadcrumbs.title_string # string, provided in admin panel
|
|
83
|
-
- breadcrumbs.title # string or translation of title, provided in admin panel
|
|
84
|
-
|
|
85
|
-
- breadcrumbs.breadcrumbs.each do |breadcrumb|
|
|
86
|
-
|
|
87
|
-
breadcrumb.localize # boolean if should localize name
|
|
88
|
-
breadcrumb.locale # current locale
|
|
89
|
-
|
|
90
|
-
breadcrumb.name_string # string, provided in admin panel
|
|
91
|
-
breadcrumb.name # string or translation of string, provided in admin panel
|
|
92
|
-
|
|
93
|
-
breadcrumb.path_path # path string, provided in admin panel
|
|
94
|
-
breadcrumb.path # path string or url, provided in admin
|
|
73
|
+
- render_breadcrumbs do |renderer|
|
|
74
|
+
- renderer[:breadcrumbs].each do |breadcrumb|
|
|
75
|
+
%li= link_to_if breadcrumb[:path], breadcrumb[:name], breadcrumb[:path]
|
|
95
76
|
```
|
|
96
77
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
#### Generate views
|
|
103
|
-
|
|
104
|
-
You can also specify only one format (`haml`, `erb.html`), by adding `--format` parameter:
|
|
105
|
-
```bash
|
|
106
|
-
rails g breadcrumbs:views haml --format haml
|
|
107
|
-
rails g breadcrumbs:views haml --format erb
|
|
108
|
-
|
|
109
|
-
rails g breadcrumbs:views inspinia --format haml
|
|
110
|
-
rails g breadcrumbs:views inspinia --format erb
|
|
111
|
-
|
|
112
|
-
rails g breadcrumbs:views bootstrap --format haml
|
|
113
|
-
rails g breadcrumbs:views bootstrap --format erb
|
|
78
|
+
### To use `title` functionality:
|
|
79
|
+
```haml
|
|
80
|
+
%html
|
|
81
|
+
%title= render_breadcrumbs_title
|
|
114
82
|
```
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: breadcrumbs_rails
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 1.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- EdCordata
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2020-11-27 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rake
|
|
@@ -60,24 +60,14 @@ extra_rdoc_files: []
|
|
|
60
60
|
files:
|
|
61
61
|
- ".gitignore"
|
|
62
62
|
- Gemfile
|
|
63
|
+
- Gemfile.lock
|
|
63
64
|
- badges/license.svg
|
|
64
|
-
- badges/rails.svg
|
|
65
65
|
- badges/ruby.svg
|
|
66
66
|
- breadcrumbs_rails.gemspec
|
|
67
67
|
- lib/breadcrumbs_rails.rb
|
|
68
|
-
- lib/breadcrumbs_rails/
|
|
69
|
-
- lib/breadcrumbs_rails/breadcrumbs.rb
|
|
68
|
+
- lib/breadcrumbs_rails/action_controller.rb
|
|
70
69
|
- lib/breadcrumbs_rails/railtie.rb
|
|
71
70
|
- lib/breadcrumbs_rails/version.rb
|
|
72
|
-
- lib/generators/breadcrumbs/config_generator.rb
|
|
73
|
-
- lib/generators/breadcrumbs/templates/app/views/breadcrumbs/_bootstrap.html.erb
|
|
74
|
-
- lib/generators/breadcrumbs/templates/app/views/breadcrumbs/_bootstrap.html.haml
|
|
75
|
-
- lib/generators/breadcrumbs/templates/app/views/breadcrumbs/_html.html.erb
|
|
76
|
-
- lib/generators/breadcrumbs/templates/app/views/breadcrumbs/_html.html.haml
|
|
77
|
-
- lib/generators/breadcrumbs/templates/app/views/breadcrumbs/_inspinia.html.erb
|
|
78
|
-
- lib/generators/breadcrumbs/templates/app/views/breadcrumbs/_inspinia.html.haml
|
|
79
|
-
- lib/generators/breadcrumbs/templates/config/initializers/breadcrumbs_config.rb
|
|
80
|
-
- lib/generators/breadcrumbs/views_generator.rb
|
|
81
71
|
- readme.md
|
|
82
72
|
homepage: https://github.com/EdCordata-Ruby-Gems/breadcrumbs_rails
|
|
83
73
|
licenses:
|
|
@@ -101,7 +91,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
101
91
|
- !ruby/object:Gem::Version
|
|
102
92
|
version: '0'
|
|
103
93
|
requirements: []
|
|
104
|
-
rubygems_version: 3.2
|
|
94
|
+
rubygems_version: 3.1.2
|
|
105
95
|
signing_key:
|
|
106
96
|
specification_version: 4
|
|
107
97
|
summary: Rails breadcrumbs gem
|
data/badges/rails.svg
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="70" height="20" role="img" aria-label="rails: 3.0+"><title>rails: 3.0+</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="70" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="33" height="20" fill="#555"/><rect x="33" width="37" height="20" fill="#fe7d37"/><rect width="70" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="175" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="230">rails</text><text x="175" y="140" transform="scale(.1)" fill="#fff" textLength="230">rails</text><text aria-hidden="true" x="505" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="270">3.0+</text><text x="505" y="140" transform="scale(.1)" fill="#fff" textLength="270">3.0+</text></g></svg>
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
module BreadcrumbsRails
|
|
2
|
-
class Breadcrumb
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
attr_accessor :name, :name_string,
|
|
6
|
-
:path, :path_string,
|
|
7
|
-
:localize, :locale
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
def initialize(name_string: nil, path_string: nil, localize: nil, locale: nil)
|
|
11
|
-
@locale = locale || 'en'
|
|
12
|
-
@localize = localize || false
|
|
13
|
-
|
|
14
|
-
@name_string = name_string
|
|
15
|
-
@name = generate_name
|
|
16
|
-
|
|
17
|
-
@path_string = path_string
|
|
18
|
-
@path = generate_path
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
private
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
def generate_name
|
|
26
|
-
if @localize
|
|
27
|
-
::I18n.t(@name_string, locale: @locale, default: @name_string)
|
|
28
|
-
else
|
|
29
|
-
@name_string
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
def generate_path
|
|
35
|
-
url_helpers = ::Rails.application.routes.url_helpers
|
|
36
|
-
|
|
37
|
-
if url_helpers.methods.include?(@path_string.to_s.to_sym)
|
|
38
|
-
url_helpers.send(@path_string)
|
|
39
|
-
else
|
|
40
|
-
@path_string
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
end
|
|
46
|
-
end
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
module BreadcrumbsRails
|
|
2
|
-
class Breadcrumbs
|
|
3
|
-
|
|
4
|
-
attr_accessor :breadcrumbs,
|
|
5
|
-
:scope, :format,
|
|
6
|
-
:title, :title_string,
|
|
7
|
-
:localize, :locale
|
|
8
|
-
|
|
9
|
-
def initialize(breadcrumbs: [], title_string: nil, scope: nil, format: nil, localize: nil, locale: nil)
|
|
10
|
-
@breadcrumbs = breadcrumbs || []
|
|
11
|
-
@format = format || 'html'
|
|
12
|
-
@scope = scope
|
|
13
|
-
|
|
14
|
-
@title_string = title_string
|
|
15
|
-
@title = generate_title
|
|
16
|
-
|
|
17
|
-
@localize = localize || false
|
|
18
|
-
@locale = locale || 'en'
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def title_string=(title_string)
|
|
22
|
-
@title_string = title_string
|
|
23
|
-
@title = generate_title
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
private
|
|
27
|
-
|
|
28
|
-
def generate_title
|
|
29
|
-
if @localize
|
|
30
|
-
::I18n.t(@title_string, locale: @locale, default: @title_string)
|
|
31
|
-
else
|
|
32
|
-
@title_string
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
end
|
|
37
|
-
end
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
module Breadcrumbs
|
|
2
|
-
module Generators
|
|
3
|
-
class ConfigGenerator < Rails::Generators::Base
|
|
4
|
-
source_root ::File.expand_path(::File.join(::File.dirname(__FILE__), 'templates/config/initializers'))
|
|
5
|
-
|
|
6
|
-
def copy_config_file
|
|
7
|
-
template 'breadcrumbs_config.rb', 'config/initializers/breadcrumbs.rb'
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
end
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
<% render_breadcrumbs.each do |breadcrumbs| %>
|
|
2
|
-
<ul class="pagination">
|
|
3
|
-
<% breadcrumbs.breadcrumbs.each do |breadcrumb| %>
|
|
4
|
-
<li>
|
|
5
|
-
<% if breadcrumb.path %>
|
|
6
|
-
<%= link_to breadcrumb.name, breadcrumb.path %>
|
|
7
|
-
<% else %>
|
|
8
|
-
<%= breadcrumb.name %>
|
|
9
|
-
<% end %>
|
|
10
|
-
</li>
|
|
11
|
-
<% end %>
|
|
12
|
-
</ul>
|
|
13
|
-
<% end %>
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
<% render_breadcrumbs.each do |breadcrumbs| %>
|
|
2
|
-
<ul>
|
|
3
|
-
<% breadcrumbs.breadcrumbs.each do |breadcrumb| %>
|
|
4
|
-
<li>
|
|
5
|
-
<% if breadcrumb.path %>
|
|
6
|
-
<%= link_to breadcrumb.name, breadcrumb.path %>
|
|
7
|
-
<% else %>
|
|
8
|
-
<%= breadcrumb.name %>
|
|
9
|
-
<% end %>
|
|
10
|
-
</li>
|
|
11
|
-
<% end %>
|
|
12
|
-
</ul>
|
|
13
|
-
<% end %>
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
<% render_breadcrumbs do |breadcrumbs| %>
|
|
2
|
-
<div class="row wrapper border-bottom white-bg page-heading">
|
|
3
|
-
<div class="col-lg-10">
|
|
4
|
-
|
|
5
|
-
<h2><%= breadcrumbs.title %></h2>
|
|
6
|
-
|
|
7
|
-
<ol class="breadcrumb">
|
|
8
|
-
<% breadcrumbs.breadcrumbs.each do |breadcrumb| %>
|
|
9
|
-
<li>
|
|
10
|
-
<% if breadcrumb.path %>
|
|
11
|
-
<%= link_to breadcrumb.name, breadcrumb.path %>
|
|
12
|
-
<% else %>
|
|
13
|
-
<%= breadcrumb.name %>
|
|
14
|
-
<% end %>
|
|
15
|
-
</li>
|
|
16
|
-
<% end %>
|
|
17
|
-
</ol>
|
|
18
|
-
|
|
19
|
-
</div>
|
|
20
|
-
</div>
|
|
21
|
-
<% end %>
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
- render_breadcrumbs do |breadcrumbs|
|
|
2
|
-
.row.wrapper.border-bottom.white-bg.page-heading
|
|
3
|
-
.col-lg-10
|
|
4
|
-
|
|
5
|
-
%h2= breadcrumbs.title
|
|
6
|
-
|
|
7
|
-
%ol.breadcrumb
|
|
8
|
-
- breadcrumbs.breadcrumbs.each do |breadcrumb|
|
|
9
|
-
%li
|
|
10
|
-
- if breadcrumb.path
|
|
11
|
-
= link_to breadcrumb.name, breadcrumb.path
|
|
12
|
-
- else
|
|
13
|
-
= breadcrumb.name
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
# breadcrumbs config coming soon
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
module Breadcrumbs
|
|
2
|
-
module Generators
|
|
3
|
-
class ViewsGenerator < ::Rails::Generators::NamedBase
|
|
4
|
-
source_root ::File.expand_path(::File.join(::File.dirname(__FILE__), 'templates/app/views/breadcrumbs'))
|
|
5
|
-
desc 'Template engine for the views. Available options are "erb", "haml".'
|
|
6
|
-
|
|
7
|
-
class_option :format, type: :string, default: 'all'
|
|
8
|
-
|
|
9
|
-
def copy_default_views
|
|
10
|
-
case options['format'].try(:to_s).try(:downcase)
|
|
11
|
-
when 'haml'
|
|
12
|
-
copy_file("_#{@name}.html.haml", 'app/views/breadcrumbs/_breadcrumbs.html.haml')
|
|
13
|
-
when 'erb'
|
|
14
|
-
copy_file("_#{@name}.html.erb", 'app/views/breadcrumbs/_breadcrumbs.html.erb')
|
|
15
|
-
else
|
|
16
|
-
copy_file("_#{@name}.html.haml", 'app/views/breadcrumbs/_breadcrumbs.html.haml')
|
|
17
|
-
copy_file("_#{@name}.html.erb", 'app/views/breadcrumbs/_breadcrumbs.html.erb')
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|