easycrumbs 1.0.0 → 1.1.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.
data/README.rdoc CHANGED
@@ -187,5 +187,41 @@ By default last element will always be render as hyperlink. If you would like to
187
187
  breadcrumbs :last_link => true
188
188
  <a href="/actors"/>Actors</a> > <a href="/actors/1/edit">Edit Leonardo Di Caprio</a>
189
189
 
190
+ == Custom collection
191
+ If you do not like idea that breadcrumbs are recognized using routes.rb file then you can write your own breadcrumbs generator.
192
+ Create new class inherited from EasyCrumbs::Collection or just monkey patch initialize method from EasyCrumbs::Collection
193
+
194
+ Look at example for acts_as_tree gem
195
+
196
+ class EasyCrumbs::Collection
197
+ def initialize(request, options = {})
198
+ object = options[:object]
199
+ collection = []
200
+ path = {:action => 'show', :controller => 'people'}
201
+
202
+ while(!object.nil?)
203
+ collection << Breadcrumb.new(object, options.merge(:path => path.merge(:id => object.id)))
204
+ object = object.parent
205
+ end
206
+ @breadcrumbs = collection.reverse
207
+ end
208
+ end
209
+
210
+ * you will get request object and options hash from view helper(look at lib/easycrumbs/view_helpers.rb for more details)
211
+ * you have to set @breadcrumbs as collection of EasyCrumbs::Breadcrumb objects
212
+ * remember to pass options hash to every EasyCrumbs::Breadcrumb object
213
+ * path have to be a hash and has to be recognized by rails routing system
214
+
215
+ For objects:
216
+ grandfather = Person.create, :breadcrumb => "Grandfather"
217
+ father = Person.create :parent => grandfather, :breadcrumb => "Father"
218
+ son = Person.create :parent => father, :breadcrumb => "Son"
219
+ The code:
220
+ breadcrumbs, :last_link => false
221
+ will generate this:
222
+ <a href="/people/1">Grandfather</a> > <a href="/people/2">Father</a> > Son
223
+
224
+ Look at code at tests for more details
225
+
190
226
  == Copyright
191
227
  Copyright (c) 2010 Stanisław Kolarzowski. See LICENSE for details.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.0
1
+ 1.1.0
data/easycrumbs.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{easycrumbs}
8
- s.version = "1.0.0"
8
+ s.version = "1.1.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Stanis\305\202aw Kolarzowski"]
12
- s.date = %q{2010-10-30}
12
+ s.date = %q{2010-10-31}
13
13
  s.description = %q{Easy breadcrumbs for your website}
14
14
  s.email = %q{stanislaw.kolarzowski@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -31,6 +31,7 @@ Gem::Specification.new do |s|
31
31
  "lib/easycrumbs/view_helpers.rb",
32
32
  "test/helper.rb",
33
33
  "test/routes.rb",
34
+ "test/test_custom_collection.rb",
34
35
  "test/test_easycrumbs.rb"
35
36
  ]
36
37
  s.homepage = %q{http://github.com/staszek/easycrumbs}
@@ -41,6 +42,7 @@ Gem::Specification.new do |s|
41
42
  s.test_files = [
42
43
  "test/helper.rb",
43
44
  "test/routes.rb",
45
+ "test/test_custom_collection.rb",
44
46
  "test/test_easycrumbs.rb"
45
47
  ]
46
48
 
@@ -0,0 +1,41 @@
1
+ require 'helper'
2
+
3
+ class CustomCollection < EasyCrumbs::Collection
4
+ def initialize(request, options = {})
5
+ object = options[:object]
6
+ collection = []
7
+ path = {:action => 'show', :controller => 'countries'}
8
+
9
+ while(!object.nil?)
10
+ collection << Breadcrumb.new(object, options.merge(:path => path.merge(:id => object.id)))
11
+ object = object.parent
12
+ end
13
+ @breadcrumbs = collection.reverse
14
+ end
15
+ end
16
+
17
+ class TestCustomCollection < Test::Unit::TestCase
18
+ context "Custom collection tests" do
19
+ setup do
20
+ @usa = Country.create(:breadcrumb => "USA")
21
+ @usa_son = Country.create(:breadcrumb => "USA son")
22
+ @usa_grandson = Country.create(:breadcrumb => "USA grandson")
23
+
24
+ @usa_grandson.stubs(:parent => @usa_son, :id => 3)
25
+ @usa_son.stubs(:parent => @usa, :id => 2)
26
+ @usa.stubs(:parent => nil, :id => 1)
27
+ end
28
+
29
+ context "Collection of breadcrumbs" do
30
+ should "reurned names be proper" do
31
+ result = ['USA', "USA son", "USA grandson"]
32
+ assert_equal(result, CustomCollection.new('request object', {:object => @usa_grandson}).breadcrumbs.map(&:name))
33
+ end
34
+
35
+ should "reurned paths be proper" do
36
+ result = ['/countries/1', "/countries/2", "/countries/3"]
37
+ assert_equal(result, CustomCollection.new('request object', {:object => @usa_grandson}).breadcrumbs.map(&:path))
38
+ end
39
+ end
40
+ end
41
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easycrumbs
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 19
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
+ - 1
8
9
  - 0
9
- - 0
10
- version: 1.0.0
10
+ version: 1.1.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - "Stanis\xC5\x82aw Kolarzowski"
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-10-30 00:00:00 +02:00
18
+ date: 2010-10-31 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -56,6 +56,7 @@ files:
56
56
  - lib/easycrumbs/view_helpers.rb
57
57
  - test/helper.rb
58
58
  - test/routes.rb
59
+ - test/test_custom_collection.rb
59
60
  - test/test_easycrumbs.rb
60
61
  has_rdoc: true
61
62
  homepage: http://github.com/staszek/easycrumbs
@@ -94,4 +95,5 @@ summary: Easy breadcrumbs
94
95
  test_files:
95
96
  - test/helper.rb
96
97
  - test/routes.rb
98
+ - test/test_custom_collection.rb
97
99
  - test/test_easycrumbs.rb