kuhsaft 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,45 @@
1
+ module PagesHelper
2
+ def current_page
3
+ lang = Kuhsaft::Page.current_translation_locale
4
+ page = Kuhsaft::Page.find(@page.id).localized_pages.where('locale = ?', lang).first.page
5
+ page.translation
6
+ return page
7
+ rescue
8
+ end
9
+
10
+ def current_page_path(lang=nil)
11
+ if @page.present?
12
+ '/' + Kuhsaft::Page.find(@page.id).localized_pages.where('locale = ?', lang).first.url
13
+ else
14
+ root_path
15
+ end
16
+ rescue
17
+ root_path
18
+ end
19
+
20
+ def asset_for id
21
+ Kuhsaft::Asset.find(id)
22
+ end
23
+
24
+ def navigation_for id
25
+ if id.blank?
26
+ Kuhsaft::Page.root_pages
27
+ else
28
+ Kuhsaft::Page.where('parent_id = ?', id)
29
+ end
30
+ end
31
+
32
+ def page_for_level num
33
+ url = params[:url].split('/').take(num + 1).join('/') unless params[:url].blank?
34
+ Kuhsaft::Page.find_by_url(url)
35
+ end
36
+
37
+ def active_page_class page
38
+ url = params[:url].presence || ''
39
+ url.include?(page.url.to_s) ? 'active' : nil
40
+ end
41
+
42
+ def current_page_class page
43
+ 'current' if active_page_class(page) == 'active'
44
+ end
45
+ end
@@ -29,11 +29,11 @@ Gem::Specification.new do |s|
29
29
  s.add_development_dependency 'guard-rspec'
30
30
  s.add_development_dependency 'growl'
31
31
 
32
- s.add_dependency 'rails', '3.0.4'
32
+ s.add_dependency 'rails', '~>3.0'
33
33
  s.add_dependency 'haml', '3.0.25'
34
34
  s.add_dependency 'compass'
35
35
  s.add_dependency 'simple_form'
36
36
  s.add_dependency 'carrierwave'
37
37
  s.add_dependency 'rmagick'
38
38
  s.add_dependency 'rdiscount'
39
- end
39
+ end
@@ -11,7 +11,7 @@ module Kuhsaft
11
11
 
12
12
  initializer 'kuhsaft.helpers' do |app|
13
13
  # Include your helpers here or they won't be loaded
14
- # ActionView::Base.send :include, Kuhsaft::PagesHelper
14
+ ActionView::Base.send :include, Kuhsaft::PagesHelper
15
15
  end
16
16
  end
17
17
  end
@@ -1,3 +1,3 @@
1
1
  module Kuhsaft
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -2,14 +2,19 @@ require 'spec_helper'
2
2
 
3
3
  describe Kuhsaft::PagesController do
4
4
  render_views
5
-
5
+
6
+ before do
7
+ set_lang :en
8
+ # create page with slug=english-title
9
+ @page = Factory.create :page
10
+ end
11
+
12
+ after do
13
+ Kuhsaft::Page.all.each { |p| p.destroy }
14
+ reset_lang
15
+ end
16
+
6
17
  describe 'should render successfully' do
7
-
8
- before :all do
9
- # create page with slug=english-title
10
- Factory.create :page
11
- end
12
-
13
18
  it '#show' do
14
19
  get :show, :url => '/en/english-title'
15
20
  response.should be_success
@@ -0,0 +1,59 @@
1
+ require 'spec_helper'
2
+
3
+ describe PagesHelper do
4
+ before do
5
+ @page = Factory.create :page
6
+ end
7
+
8
+ after do
9
+ destroy_all_pages
10
+ end
11
+
12
+ it '#asset_for should return the asset with the given id' do
13
+ asset = Factory.create :asset
14
+ asset_for(asset.id).should eq(asset)
15
+ end
16
+
17
+ it '#navigation_for should return a list of pages' do
18
+ @page.childs << Factory.create(:page)
19
+ @page.childs << Factory.create(:page)
20
+ @page.save
21
+ navigation_for(@page.id).should have_at_least(2).pages
22
+ end
23
+
24
+ it '#current_page_path should return the german path for the current page' do
25
+ @page.localized_pages.create :locale => :de, :title => 'seite1'
26
+ helper.current_page_path(:de).should eq('/de/seite1')
27
+ end
28
+
29
+ it '#active_page_class should return "active"' do
30
+ helper.stub!(:params).and_return :url => 'en/english-title'
31
+ helper.active_page_class(@page).should eq('active')
32
+ end
33
+
34
+ it '#current_page should return the current page' do
35
+ helper.stub!(:params).and_return :url => '/de/seite1'
36
+ helper.current_page.should eq(@page)
37
+ end
38
+
39
+ describe '#page_for_level' do
40
+ it 'should return the page for the 1. level of en/english-title/english-title/english-title' do
41
+ destroy_all_pages
42
+ page1, page2, page3 = create_page_tree
43
+ helper.stub!(:params).and_return :url => 'en/english-title/english-title/english-title'
44
+ helper.page_for_level(1).should eq(page1)
45
+ end
46
+
47
+ it 'should return the page for the 2. level of en/english-title/english-title/english-title' do
48
+ page1, page2, page3 = create_page_tree
49
+ helper.stub!(:params).and_return :url => 'en/english-title/english-title/english-title'
50
+ helper.page_for_level(2).should eq(page2)
51
+ end
52
+
53
+ it 'should return the page for the 3. level of en/english-title/english-title/english-title' do
54
+ page1, page2, page3 = create_page_tree
55
+ helper.stub!(:params).and_return :url => 'en/english-title/english-title/english-title'
56
+ helper.page_for_level(3).should eq(page3)
57
+ end
58
+ end
59
+ end
@@ -53,6 +53,8 @@ describe Kuhsaft::LocalizedPage do
53
53
 
54
54
  before :each do
55
55
  @page = Factory.create :page
56
+ @page.title = nil
57
+ @page.slug = nil
56
58
  end
57
59
 
58
60
  it 'should have a title' do
@@ -2,24 +2,19 @@ require 'spec_helper'
2
2
 
3
3
  describe Kuhsaft::Page do
4
4
 
5
- before do
6
- Kuhsaft::Page.translation_locales = ['en', 'de']
7
- Kuhsaft::Page.current_translation_locale = :en
8
- end
9
-
10
5
  before :each do
11
- Kuhsaft::Page.all.each { |p| p.destroy }
6
+ destroy_all_pages
12
7
  @page = Factory.create :page
13
8
  end
14
9
 
15
10
  it 'should have many localized_pages' do
16
- @page.localized_pages.count.should >= 1
11
+ @page.localized_pages.should have_at_least(1).page
17
12
  end
18
13
 
19
14
  it 'should have child pages' do
20
15
  p = Factory.create(:page)
21
16
  @page.childs << p
22
- @page.childs.count.should >= 1
17
+ @page.childs.should have_at_least(1).page
23
18
  end
24
19
 
25
20
  it 'should be the root page' do
@@ -29,14 +24,14 @@ describe Kuhsaft::Page do
29
24
  it 'should have a parent page' do
30
25
  child = Factory.create(:page)
31
26
  @page.childs << child
32
- child.parent.id.should be(@page.id)
27
+ child.parent.should eq(@page)
33
28
  end
34
29
 
35
30
  it 'should have a list of root pages' do
36
31
  root_page = Factory.create :page
37
32
  root_page.childs << Factory.create(:page)
38
33
  root_page.childs << Factory.create(:page)
39
- Kuhsaft::Page.root_pages.count.should >= 1
34
+ Kuhsaft::Page.root_pages.should have_at_least(2).pages
40
35
  end
41
36
 
42
37
  it 'should increment it\'s position by 1' do
@@ -122,10 +117,9 @@ describe Kuhsaft::Page do
122
117
  end
123
118
 
124
119
  it 'should find its translated content by url' do
125
- Kuhsaft::Page.all.each { |p| p.destroy }
126
- Kuhsaft::LocalizedPage.all.each{ |p| p.destroy }
120
+ destroy_all_pages
127
121
  page = Factory.create(:page)
128
- Kuhsaft::Page.find_by_url(page.url).id.should == page.id
122
+ Kuhsaft::Page.find_by_url(page.url).should eq(page)
129
123
  end
130
124
 
131
125
  it 'should provide an array of translation locales' do
@@ -30,6 +30,9 @@ Spork.prefork do
30
30
 
31
31
  # Load support files
32
32
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
33
+
34
+ Kuhsaft::Page.translation_locales = [:en, :de]
35
+ Kuhsaft::Page.current_translation_locale = :en
33
36
 
34
37
  RSpec.configure do |config|
35
38
  # Remove this line if you don't want RSpec's should and should_not
@@ -39,6 +42,7 @@ Spork.prefork do
39
42
 
40
43
  config.include RSpec::Matchers
41
44
  config.include CarrierWave::Test::Matchers
45
+ config.include KuhsaftSpecHelper
42
46
 
43
47
  # == Mock Framework
44
48
  config.mock_with :rspec
@@ -0,0 +1,29 @@
1
+ module KuhsaftSpecHelper
2
+ def set_lang lang
3
+ @remember_translation_locale = Kuhsaft::Page.current_translation_locale
4
+ Kuhsaft::Page.current_translation_locale = lang
5
+ end
6
+
7
+ def reset_lang
8
+ Kuhsaft::Page.current_translation_locale = @remember_translation_locale if @remember_translation_locale.present?
9
+ end
10
+
11
+ def destroy_all_pages
12
+ Kuhsaft::Page.all.each { |p| p.destroy }
13
+ Kuhsaft::LocalizedPage.all.each { |p| p.destroy }
14
+ end
15
+
16
+ def create_page_tree
17
+ page1 = Factory.create :page
18
+ page2 = Factory.create :page
19
+ page3 = Factory.create :page
20
+
21
+ page1.childs << page2
22
+ page1.save
23
+
24
+ page2.childs << page3
25
+ page2.save
26
+
27
+ [page1, page2, page3]
28
+ end
29
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kuhsaft
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 21
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 4
10
- version: 0.0.4
9
+ - 5
10
+ version: 0.0.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - "Immanuel H\xC3\xA4ussermann"
@@ -17,12 +17,10 @@ autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
19
 
20
- date: 2011-03-28 00:00:00 +02:00
20
+ date: 2011-04-05 00:00:00 +02:00
21
21
  default_executable:
22
22
  dependencies:
23
23
  - !ruby/object:Gem::Dependency
24
- name: rspec-rails
25
- prerelease: false
26
24
  requirement: &id001 !ruby/object:Gem::Requirement
27
25
  none: false
28
26
  requirements:
@@ -33,10 +31,10 @@ dependencies:
33
31
  - 0
34
32
  version: "0"
35
33
  type: :development
34
+ name: rspec-rails
35
+ prerelease: false
36
36
  version_requirements: *id001
37
37
  - !ruby/object:Gem::Dependency
38
- name: factory_girl_rails
39
- prerelease: false
40
38
  requirement: &id002 !ruby/object:Gem::Requirement
41
39
  none: false
42
40
  requirements:
@@ -47,10 +45,10 @@ dependencies:
47
45
  - 0
48
46
  version: "0"
49
47
  type: :development
48
+ name: factory_girl_rails
49
+ prerelease: false
50
50
  version_requirements: *id002
51
51
  - !ruby/object:Gem::Dependency
52
- name: capybara
53
- prerelease: false
54
52
  requirement: &id003 !ruby/object:Gem::Requirement
55
53
  none: false
56
54
  requirements:
@@ -63,10 +61,10 @@ dependencies:
63
61
  - 0
64
62
  version: 0.4.0
65
63
  type: :development
64
+ name: capybara
65
+ prerelease: false
66
66
  version_requirements: *id003
67
67
  - !ruby/object:Gem::Dependency
68
- name: ruby-debug
69
- prerelease: false
70
68
  requirement: &id004 !ruby/object:Gem::Requirement
71
69
  none: false
72
70
  requirements:
@@ -77,10 +75,10 @@ dependencies:
77
75
  - 0
78
76
  version: "0"
79
77
  type: :development
78
+ name: ruby-debug
79
+ prerelease: false
80
80
  version_requirements: *id004
81
81
  - !ruby/object:Gem::Dependency
82
- name: sqlite3-ruby
83
- prerelease: false
84
82
  requirement: &id005 !ruby/object:Gem::Requirement
85
83
  none: false
86
84
  requirements:
@@ -93,10 +91,10 @@ dependencies:
93
91
  - 5
94
92
  version: 1.2.5
95
93
  type: :development
94
+ name: sqlite3-ruby
95
+ prerelease: false
96
96
  version_requirements: *id005
97
97
  - !ruby/object:Gem::Dependency
98
- name: guard
99
- prerelease: false
100
98
  requirement: &id006 !ruby/object:Gem::Requirement
101
99
  none: false
102
100
  requirements:
@@ -107,10 +105,10 @@ dependencies:
107
105
  - 0
108
106
  version: "0"
109
107
  type: :development
108
+ name: guard
109
+ prerelease: false
110
110
  version_requirements: *id006
111
111
  - !ruby/object:Gem::Dependency
112
- name: guard-spork
113
- prerelease: false
114
112
  requirement: &id007 !ruby/object:Gem::Requirement
115
113
  none: false
116
114
  requirements:
@@ -121,10 +119,10 @@ dependencies:
121
119
  - 0
122
120
  version: "0"
123
121
  type: :development
122
+ name: guard-spork
123
+ prerelease: false
124
124
  version_requirements: *id007
125
125
  - !ruby/object:Gem::Dependency
126
- name: guard-rspec
127
- prerelease: false
128
126
  requirement: &id008 !ruby/object:Gem::Requirement
129
127
  none: false
130
128
  requirements:
@@ -135,10 +133,10 @@ dependencies:
135
133
  - 0
136
134
  version: "0"
137
135
  type: :development
136
+ name: guard-rspec
137
+ prerelease: false
138
138
  version_requirements: *id008
139
139
  - !ruby/object:Gem::Dependency
140
- name: growl
141
- prerelease: false
142
140
  requirement: &id009 !ruby/object:Gem::Requirement
143
141
  none: false
144
142
  requirements:
@@ -149,26 +147,25 @@ dependencies:
149
147
  - 0
150
148
  version: "0"
151
149
  type: :development
150
+ name: growl
151
+ prerelease: false
152
152
  version_requirements: *id009
153
153
  - !ruby/object:Gem::Dependency
154
- name: rails
155
- prerelease: false
156
154
  requirement: &id010 !ruby/object:Gem::Requirement
157
155
  none: false
158
156
  requirements:
159
- - - "="
157
+ - - ~>
160
158
  - !ruby/object:Gem::Version
161
- hash: 15
159
+ hash: 7
162
160
  segments:
163
161
  - 3
164
162
  - 0
165
- - 4
166
- version: 3.0.4
163
+ version: "3.0"
167
164
  type: :runtime
165
+ name: rails
166
+ prerelease: false
168
167
  version_requirements: *id010
169
168
  - !ruby/object:Gem::Dependency
170
- name: haml
171
- prerelease: false
172
169
  requirement: &id011 !ruby/object:Gem::Requirement
173
170
  none: false
174
171
  requirements:
@@ -181,10 +178,10 @@ dependencies:
181
178
  - 25
182
179
  version: 3.0.25
183
180
  type: :runtime
181
+ name: haml
182
+ prerelease: false
184
183
  version_requirements: *id011
185
184
  - !ruby/object:Gem::Dependency
186
- name: compass
187
- prerelease: false
188
185
  requirement: &id012 !ruby/object:Gem::Requirement
189
186
  none: false
190
187
  requirements:
@@ -195,10 +192,10 @@ dependencies:
195
192
  - 0
196
193
  version: "0"
197
194
  type: :runtime
195
+ name: compass
196
+ prerelease: false
198
197
  version_requirements: *id012
199
198
  - !ruby/object:Gem::Dependency
200
- name: simple_form
201
- prerelease: false
202
199
  requirement: &id013 !ruby/object:Gem::Requirement
203
200
  none: false
204
201
  requirements:
@@ -209,10 +206,10 @@ dependencies:
209
206
  - 0
210
207
  version: "0"
211
208
  type: :runtime
209
+ name: simple_form
210
+ prerelease: false
212
211
  version_requirements: *id013
213
212
  - !ruby/object:Gem::Dependency
214
- name: carrierwave
215
- prerelease: false
216
213
  requirement: &id014 !ruby/object:Gem::Requirement
217
214
  none: false
218
215
  requirements:
@@ -223,10 +220,10 @@ dependencies:
223
220
  - 0
224
221
  version: "0"
225
222
  type: :runtime
223
+ name: carrierwave
224
+ prerelease: false
226
225
  version_requirements: *id014
227
226
  - !ruby/object:Gem::Dependency
228
- name: rmagick
229
- prerelease: false
230
227
  requirement: &id015 !ruby/object:Gem::Requirement
231
228
  none: false
232
229
  requirements:
@@ -237,10 +234,10 @@ dependencies:
237
234
  - 0
238
235
  version: "0"
239
236
  type: :runtime
237
+ name: rmagick
238
+ prerelease: false
240
239
  version_requirements: *id015
241
240
  - !ruby/object:Gem::Dependency
242
- name: rdiscount
243
- prerelease: false
244
241
  requirement: &id016 !ruby/object:Gem::Requirement
245
242
  none: false
246
243
  requirements:
@@ -251,6 +248,8 @@ dependencies:
251
248
  - 0
252
249
  version: "0"
253
250
  type: :runtime
251
+ name: rdiscount
252
+ prerelease: false
254
253
  version_requirements: *id016
255
254
  description: Kuhsaft is a Rails engine that offers a simple CMS.
256
255
  email: developers@screenconcept.ch
@@ -271,6 +270,7 @@ files:
271
270
  - app/controllers/kuhsaft/admin/assets_controller.rb
272
271
  - app/controllers/kuhsaft/admin/pages_controller.rb
273
272
  - app/controllers/kuhsaft/pages_controller.rb
273
+ - app/helpers/pages_helper.rb
274
274
  - app/models/kuhsaft/asset.rb
275
275
  - app/models/kuhsaft/localized_page.rb
276
276
  - app/models/kuhsaft/page.rb
@@ -358,6 +358,7 @@ files:
358
358
  - spec/dummy/public/stylesheets/.gitkeep
359
359
  - spec/dummy/script/rails
360
360
  - spec/factories.rb
361
+ - spec/helpers/pages_helper_spec.rb
361
362
  - spec/integration/navigation_spec.rb
362
363
  - spec/kuhsaft_spec.rb
363
364
  - spec/models/asset_spec.rb
@@ -368,6 +369,7 @@ files:
368
369
  - spec/routing/assets_routing_spec.rb
369
370
  - spec/routing/pages_routing_spec.rb
370
371
  - spec/spec_helper.rb
372
+ - spec/support/kuhsaft_spec_helper.rb
371
373
  has_rdoc: true
372
374
  homepage: http://github.com/screenconcept/kuhsaft
373
375
  licenses: []
@@ -440,6 +442,7 @@ test_files:
440
442
  - spec/dummy/public/stylesheets/.gitkeep
441
443
  - spec/dummy/script/rails
442
444
  - spec/factories.rb
445
+ - spec/helpers/pages_helper_spec.rb
443
446
  - spec/integration/navigation_spec.rb
444
447
  - spec/kuhsaft_spec.rb
445
448
  - spec/models/asset_spec.rb
@@ -450,3 +453,4 @@ test_files:
450
453
  - spec/routing/assets_routing_spec.rb
451
454
  - spec/routing/pages_routing_spec.rb
452
455
  - spec/spec_helper.rb
456
+ - spec/support/kuhsaft_spec_helper.rb