breadcrumbs_on_rails 2.3.0 → 4.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.github/FUNDING.yml +12 -0
- data/.gitignore +8 -5
- data/.travis.yml +29 -10
- data/Appraisals +10 -9
- data/CHANGELOG.md +58 -20
- data/Gemfile +9 -1
- data/LICENSE.txt +1 -1
- data/README.md +242 -56
- data/Rakefile +9 -67
- data/SECURITY.md +104 -0
- data/breadcrumbs_on_rails.gemspec +17 -33
- data/gemfiles/5.0.gemfile +12 -0
- data/gemfiles/5.1.gemfile +12 -0
- data/gemfiles/5.2.gemfile +12 -0
- data/gemfiles/6.0.gemfile +12 -0
- data/lib/breadcrumbs_on_rails.rb +1 -1
- data/lib/breadcrumbs_on_rails/action_controller.rb +29 -46
- data/lib/breadcrumbs_on_rails/breadcrumbs.rb +4 -4
- data/lib/breadcrumbs_on_rails/railtie.rb +3 -5
- data/lib/breadcrumbs_on_rails/version.rb +2 -13
- data/test/dummy.rb +6 -1
- data/test/test_helper.rb +6 -3
- data/test/unit/action_controller_test.rb +44 -6
- data/test/unit/simple_builder_test.rb +23 -0
- metadata +33 -85
- data/.rvmrc +0 -1
- data/gemfiles/3.0.gemfile +0 -7
- data/gemfiles/3.0.gemfile.lock +0 -100
- data/gemfiles/3.1.gemfile +0 -7
- data/gemfiles/3.1.gemfile.lock +0 -100
- data/gemfiles/3.2.gemfile +0 -7
- data/gemfiles/3.2.gemfile.lock +0 -100
- data/init.rb +0 -1
data/Rakefile
CHANGED
@@ -1,64 +1,14 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require 'appraisal'
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
require "appraisal"
|
4
3
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
PKG_NAME = ENV['PKG_NAME'] || "breadcrumbs_on_rails"
|
10
|
-
PKG_VERSION = ENV['PKG_VERSION'] || BreadcrumbsOnRails::VERSION
|
11
|
-
|
12
|
-
|
13
|
-
# Run test by default.
|
14
|
-
task :default => :test
|
15
|
-
|
16
|
-
spec = Gem::Specification.new do |s|
|
17
|
-
s.name = PKG_NAME
|
18
|
-
s.version = PKG_VERSION
|
19
|
-
s.summary = "A simple Ruby on Rails plugin for creating and managing a breadcrumb navigation."
|
20
|
-
s.description = "BreadcrumbsOnRails is a simple Ruby on Rails plugin for creating and managing a breadcrumb navigation for a Rails project."
|
21
|
-
|
22
|
-
s.author = "Simone Carletti"
|
23
|
-
s.email = "weppos@weppos.net"
|
24
|
-
s.homepage = "http://www.simonecarletti.com/code/breadcrumbs_on_rails"
|
25
|
-
|
26
|
-
s.files = `git ls-files`.split("\n")
|
27
|
-
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
28
|
-
s.require_paths = %w( lib )
|
29
|
-
|
30
|
-
s.add_development_dependency "rails", ">= 3.0"
|
31
|
-
s.add_development_dependency "appraisal"
|
32
|
-
s.add_development_dependency "mocha", "~> 0.9.10"
|
33
|
-
s.add_development_dependency "yard"
|
34
|
-
end
|
35
|
-
|
36
|
-
|
37
|
-
require 'rubygems/package_task'
|
38
|
-
|
39
|
-
Gem::PackageTask.new(spec) do |pkg|
|
40
|
-
pkg.gem_spec = spec
|
41
|
-
end
|
42
|
-
|
43
|
-
desc "Build the gemspec file #{spec.name}.gemspec"
|
44
|
-
task :gemspec do
|
45
|
-
file = File.dirname(__FILE__) + "/#{spec.name}.gemspec"
|
46
|
-
File.open(file, "w") {|f| f << spec.to_ruby }
|
47
|
-
end
|
48
|
-
|
49
|
-
desc "Remove any temporary products, including gemspec."
|
50
|
-
task :clean => [:clobber] do
|
51
|
-
rm "#{spec.name}.gemspec"
|
4
|
+
if !ENV["APPRAISAL_INITIALIZED"] && !ENV["TRAVIS"]
|
5
|
+
task default: :appraisal
|
6
|
+
else
|
7
|
+
task default: :test
|
52
8
|
end
|
53
9
|
|
54
|
-
desc "Remove any generated file"
|
55
|
-
task :clobber => [:clobber_package]
|
56
|
-
|
57
|
-
desc "Package the library and generates the gemspec"
|
58
|
-
task :package => [:gemspec]
|
59
|
-
|
60
10
|
|
61
|
-
require
|
11
|
+
require "rake/testtask"
|
62
12
|
|
63
13
|
Rake::TestTask.new do |t|
|
64
14
|
t.libs << "test"
|
@@ -68,18 +18,10 @@ Rake::TestTask.new do |t|
|
|
68
18
|
end
|
69
19
|
|
70
20
|
|
71
|
-
require
|
72
|
-
require 'yard/rake/yardoc_task'
|
21
|
+
require "yard/rake/yardoc_task"
|
73
22
|
|
74
23
|
YARD::Rake::YardocTask.new(:yardoc) do |y|
|
75
24
|
y.options = ["--output-dir", "yardoc"]
|
76
25
|
end
|
77
26
|
|
78
|
-
|
79
|
-
desc "Remove YARD products"
|
80
|
-
task :clobber do
|
81
|
-
rm_r "yardoc" rescue nil
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
task :clobber => "yardoc:clobber"
|
27
|
+
CLOBBER.include "yardoc"
|
data/SECURITY.md
ADDED
@@ -0,0 +1,104 @@
|
|
1
|
+
# Security Policy
|
2
|
+
|
3
|
+
## Supported Versions
|
4
|
+
|
5
|
+
Security updates are provided only for the current minor version.
|
6
|
+
|
7
|
+
If you are using a previous minor version, we recommend to upgrade to the current minor version.
|
8
|
+
This project uses [semantic versioning](https://semver.org/), therefore you can upgrade to a more recent minor version without incurring into breaking changes.
|
9
|
+
|
10
|
+
Exceptionally, we may support previous minor versions upon request if there are significant reasons preventing to immediately switch the latest minor version.
|
11
|
+
|
12
|
+
Older major versions are no longer supported.
|
13
|
+
|
14
|
+
|
15
|
+
## Reporting a Vulnerability
|
16
|
+
|
17
|
+
To make a report, please email weppos@weppos.net.
|
18
|
+
|
19
|
+
Please consider encrypting your report with GPG using the key [0x420da82a989398df](https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x420da82a989398df).
|
20
|
+
|
21
|
+
```
|
22
|
+
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
23
|
+
|
24
|
+
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
|
97
|
+
=j6Xr
|
98
|
+
-----END PGP PUBLIC KEY BLOCK-----
|
99
|
+
```
|
100
|
+
|
101
|
+
|
102
|
+
## Tracking Security Updates
|
103
|
+
|
104
|
+
Information about security vulnerabilities are published in the [Security Advisories](https://github.com/weppos/breadcrumbs_on_rails/security/advisories) page.
|
@@ -1,39 +1,23 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
$LOAD_PATH.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "breadcrumbs_on_rails/version"
|
2
4
|
|
3
|
-
Gem::Specification.new do |
|
4
|
-
|
5
|
-
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "breadcrumbs_on_rails"
|
7
|
+
spec.version = BreadcrumbsOnRails::VERSION
|
8
|
+
spec.authors = ["Simone Carletti"]
|
9
|
+
spec.email = ["weppos@weppos.net"]
|
10
|
+
spec.homepage = "https://simonecarletti.com/code/breadcrumbs_on_rails"
|
11
|
+
spec.summary = "A simple Ruby on Rails plugin for creating and managing a breadcrumb navigation"
|
12
|
+
spec.description = "BreadcrumbsOnRails is a simple Ruby on Rails plugin for creating and managing a breadcrumb navigation for a Rails project."
|
13
|
+
spec.licenses = ["MIT"]
|
6
14
|
|
7
|
-
|
8
|
-
s.authors = ["Simone Carletti"]
|
9
|
-
s.date = "2012-12-25"
|
10
|
-
s.description = "BreadcrumbsOnRails is a simple Ruby on Rails plugin for creating and managing a breadcrumb navigation for a Rails project."
|
11
|
-
s.email = "weppos@weppos.net"
|
12
|
-
s.files = [".gitignore", ".rvmrc", ".travis.yml", "Appraisals", "CHANGELOG.md", "Gemfile", "LICENSE.txt", "README.md", "Rakefile", "breadcrumbs_on_rails.gemspec", "gemfiles/3.0.gemfile", "gemfiles/3.0.gemfile.lock", "gemfiles/3.1.gemfile", "gemfiles/3.1.gemfile.lock", "gemfiles/3.2.gemfile", "gemfiles/3.2.gemfile.lock", "init.rb", "lib/breadcrumbs_on_rails.rb", "lib/breadcrumbs_on_rails/action_controller.rb", "lib/breadcrumbs_on_rails/breadcrumbs.rb", "lib/breadcrumbs_on_rails/railtie.rb", "lib/breadcrumbs_on_rails/version.rb", "test/dummy.rb", "test/test_helper.rb", "test/unit/action_controller_test.rb", "test/unit/builder_test.rb", "test/unit/element_test.rb", "test/unit/simple_builder_test.rb", "test/views/example/default.html.erb"]
|
13
|
-
s.homepage = "http://www.simonecarletti.com/code/breadcrumbs_on_rails"
|
14
|
-
s.require_paths = ["lib"]
|
15
|
-
s.rubygems_version = "1.8.24"
|
16
|
-
s.summary = "A simple Ruby on Rails plugin for creating and managing a breadcrumb navigation."
|
17
|
-
s.test_files = ["test/dummy.rb", "test/test_helper.rb", "test/unit/action_controller_test.rb", "test/unit/builder_test.rb", "test/unit/element_test.rb", "test/unit/simple_builder_test.rb", "test/views/example/default.html.erb"]
|
15
|
+
spec.required_ruby_version = ">= 2.4"
|
18
16
|
|
19
|
-
|
20
|
-
|
17
|
+
spec.require_paths = ["lib"]
|
18
|
+
spec.files = `git ls-files`.split("\n")
|
19
|
+
spec.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
20
|
+
spec.extra_rdoc_files = %w( LICENSE.txt )
|
21
21
|
|
22
|
-
|
23
|
-
s.add_development_dependency(%q<rails>, [">= 3.0"])
|
24
|
-
s.add_development_dependency(%q<appraisal>, [">= 0"])
|
25
|
-
s.add_development_dependency(%q<mocha>, ["~> 0.9.10"])
|
26
|
-
s.add_development_dependency(%q<yard>, [">= 0"])
|
27
|
-
else
|
28
|
-
s.add_dependency(%q<rails>, [">= 3.0"])
|
29
|
-
s.add_dependency(%q<appraisal>, [">= 0"])
|
30
|
-
s.add_dependency(%q<mocha>, ["~> 0.9.10"])
|
31
|
-
s.add_dependency(%q<yard>, [">= 0"])
|
32
|
-
end
|
33
|
-
else
|
34
|
-
s.add_dependency(%q<rails>, [">= 3.0"])
|
35
|
-
s.add_dependency(%q<appraisal>, [">= 0"])
|
36
|
-
s.add_dependency(%q<mocha>, ["~> 0.9.10"])
|
37
|
-
s.add_dependency(%q<yard>, [">= 0"])
|
38
|
-
end
|
22
|
+
spec.add_dependency "railties", ">= 5.0"
|
39
23
|
end
|
data/lib/breadcrumbs_on_rails.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
#
|
4
4
|
# A simple Ruby on Rails plugin for creating and managing a breadcrumb navigation.
|
5
5
|
#
|
6
|
-
# Copyright (c) 2009-
|
6
|
+
# Copyright (c) 2009-2020 Simone Carletti <weppos@weppos.net>
|
7
7
|
#++
|
8
8
|
|
9
9
|
require 'breadcrumbs_on_rails/breadcrumbs'
|
@@ -3,7 +3,7 @@
|
|
3
3
|
#
|
4
4
|
# A simple Ruby on Rails plugin for creating and managing a breadcrumb navigation.
|
5
5
|
#
|
6
|
-
# Copyright (c) 2009-
|
6
|
+
# Copyright (c) 2009-2020 Simone Carletti <weppos@weppos.net>
|
7
7
|
#++
|
8
8
|
|
9
9
|
module BreadcrumbsOnRails
|
@@ -11,73 +11,56 @@ module BreadcrumbsOnRails
|
|
11
11
|
module ActionController
|
12
12
|
extend ActiveSupport::Concern
|
13
13
|
|
14
|
-
included do
|
14
|
+
included do |base|
|
15
15
|
extend ClassMethods
|
16
16
|
helper HelperMethods
|
17
|
-
helper_method :
|
17
|
+
helper_method :add_breadcrumb_on_rails, :add_breadcrumb,
|
18
|
+
:breadcrumbs_on_rails, :breadcrumbs
|
19
|
+
|
20
|
+
unless base.respond_to?(:before_action)
|
21
|
+
base.alias_method :before_action, :before_filter
|
22
|
+
end
|
18
23
|
end
|
19
24
|
|
20
25
|
protected
|
21
26
|
|
22
|
-
|
23
|
-
|
27
|
+
# Pushes a new breadcrumb element into the collection.
|
28
|
+
#
|
29
|
+
# @param name [String]
|
30
|
+
# @param path [String, nil]
|
31
|
+
# @param options [Hash]
|
32
|
+
# @return [void]
|
33
|
+
def add_breadcrumb_on_rails(name, path = nil, options = {})
|
34
|
+
breadcrumbs_on_rails << Breadcrumbs::Element.new(name, path, options)
|
24
35
|
end
|
36
|
+
alias add_breadcrumb add_breadcrumb_on_rails
|
25
37
|
|
26
|
-
|
27
|
-
|
38
|
+
# Gets the list of all breadcrumb element in the collection.
|
39
|
+
#
|
40
|
+
# @return [Array<Breadcrumbs::Element>]
|
41
|
+
def breadcrumbs_on_rails
|
42
|
+
@breadcrumbs_on_rails ||= []
|
28
43
|
end
|
44
|
+
alias breadcrumbs breadcrumbs_on_rails
|
29
45
|
|
30
|
-
module Utils
|
31
|
-
|
32
|
-
def self.instance_proc(string)
|
33
|
-
if string.kind_of?(String)
|
34
|
-
proc { |controller| controller.instance_eval(string) }
|
35
|
-
else
|
36
|
-
string
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
# This is an horrible method with an horrible name.
|
41
|
-
#
|
42
|
-
# convert_to_set_of_strings(nil, [:foo, :bar])
|
43
|
-
# # => nil
|
44
|
-
# convert_to_set_of_strings(true, [:foo, :bar])
|
45
|
-
# # => ["foo", "bar"]
|
46
|
-
# convert_to_set_of_strings(:foo, [:foo, :bar])
|
47
|
-
# # => ["foo"]
|
48
|
-
# convert_to_set_of_strings([:foo, :bar, :baz], [:foo, :bar])
|
49
|
-
# # => ["foo", "bar", "baz"]
|
50
|
-
#
|
51
|
-
def self.convert_to_set_of_strings(value, keys)
|
52
|
-
if value == true
|
53
|
-
keys.map(&:to_s).to_set
|
54
|
-
elsif value
|
55
|
-
Array(value).map(&:to_s).to_set
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
end
|
60
46
|
|
61
47
|
module ClassMethods
|
62
48
|
|
63
|
-
def
|
64
|
-
|
65
|
-
if eval = Utils.convert_to_set_of_strings(filter_options.delete(:eval), %w(name path))
|
66
|
-
name = Utils.instance_proc(name) if eval.include?("name")
|
67
|
-
path = Utils.instance_proc(path) if eval.include?("path")
|
68
|
-
end
|
49
|
+
def add_breadcrumb_on_rails(name, path = nil, filter_options = {})
|
50
|
+
element_options = filter_options.delete(:options) || {}
|
69
51
|
|
70
|
-
|
71
|
-
controller.send(:add_breadcrumb, name, path)
|
52
|
+
before_action(filter_options) do |controller|
|
53
|
+
controller.send(:add_breadcrumb, name, path, element_options)
|
72
54
|
end
|
73
55
|
end
|
56
|
+
alias add_breadcrumb add_breadcrumb_on_rails
|
74
57
|
|
75
58
|
end
|
76
59
|
|
77
60
|
module HelperMethods
|
78
61
|
|
79
62
|
def render_breadcrumbs(options = {}, &block)
|
80
|
-
builder = (options.delete(:builder) || Breadcrumbs::SimpleBuilder).new(self,
|
63
|
+
builder = (options.delete(:builder) || Breadcrumbs::SimpleBuilder).new(self, breadcrumbs_on_rails, options)
|
81
64
|
content = builder.render.html_safe
|
82
65
|
if block_given?
|
83
66
|
capture(content, &block)
|
@@ -3,7 +3,7 @@
|
|
3
3
|
#
|
4
4
|
# A simple Ruby on Rails plugin for creating and managing a breadcrumb navigation.
|
5
5
|
#
|
6
|
-
# Copyright (c) 2009-
|
6
|
+
# Copyright (c) 2009-2020 Simone Carletti <weppos@weppos.net>
|
7
7
|
#++
|
8
8
|
|
9
9
|
module BreadcrumbsOnRails
|
@@ -93,7 +93,7 @@ module BreadcrumbsOnRails
|
|
93
93
|
if @options[:tag]
|
94
94
|
@context.content_tag(@options[:tag], content)
|
95
95
|
else
|
96
|
-
content
|
96
|
+
ERB::Util.h(content)
|
97
97
|
end
|
98
98
|
end
|
99
99
|
|
@@ -108,14 +108,14 @@ module BreadcrumbsOnRails
|
|
108
108
|
attr_accessor :name
|
109
109
|
# @return [String] The element/link URL.
|
110
110
|
attr_accessor :path
|
111
|
-
# @return [Hash] The element/link
|
111
|
+
# @return [Hash] The element/link options.
|
112
112
|
attr_accessor :options
|
113
113
|
|
114
114
|
# Initializes the Element with given parameters.
|
115
115
|
#
|
116
116
|
# @param [String] name The element/link name.
|
117
117
|
# @param [String] path The element/link URL.
|
118
|
-
# @param [Hash] options The element/link
|
118
|
+
# @param [Hash] options The element/link options.
|
119
119
|
# @return [Element]
|
120
120
|
#
|
121
121
|
def initialize(name, path = nil, options = {})
|