kuhsaft 2.0.3 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dece1070f1406b31773243d2f070e48387f15a27
4
- data.tar.gz: 22cb559490bc2b7e86eb92a475eb1ef9f7939d06
3
+ metadata.gz: a644e28bc6049a19a8878e3476d648d7257000e2
4
+ data.tar.gz: dd5345fd7f913827a6efb2056cd9f79dfb598f36
5
5
  SHA512:
6
- metadata.gz: b0ba82b69049bbaa1ca7a62fa0d2c156f86908b4114a891e35db58320c7455b774e46c706bcb5df9a8244aef26b9ab97d25a14a002948f6a97a4b5489e5c0f6a
7
- data.tar.gz: a6c5464e5cbeea1fc505bc53582fab6bfde81cba649d7bd4cfcee16f3c8c052243d56b934452eb40a9ddea2f14162fa65de87a590bef53dcaad5e91ce0d99f7e
6
+ metadata.gz: a884c25283286b6a15e7b450e6467b870d9220c0e940af760ead60e369fb1a8a6ffaf1a8119d267c0b1ee7743a4f5b216810f0522fb0fc8ab620531198218daa
7
+ data.tar.gz: 95fb7cce42f9f7919ea94a4da3e9d47096e15651f32b56ddca2d188c84db3c9f104c1078dac92ae575a078c9c144adf384c21f40f16e32d0bfd254d36a3c1364
data/README.md CHANGED
@@ -10,7 +10,7 @@ Kuhsaft is made by some Rails developers at Screen Concept that got tired of
10
10
  fiddling with unusable content management sytems. We are trying hard to make a
11
11
  minimalistic and developer friendly CMS. Our goal is to provide a system for
12
12
  ourselves and our customers that makes the of-the-shelf website project a
13
- hasselfree thing. On one side easy to set up, integrate and customize (good for
13
+ hasslefree thing. On one side easy to set up, integrate and customize (good for
14
14
  devs) on the other hand it should be easily usable by anyone.
15
15
 
16
16
  ## What's in it
@@ -99,11 +99,10 @@ Make sure they are in the `config.assets.precompile` array in environments like
99
99
 
100
100
  There's a dummy app inside spec/dummy. Get it running by executing the following steps:
101
101
 
102
- * remove eventual migrations inside `spec/dummy/db/migrate`
103
- * run `rake kuhsaft:install:migrations` again
104
- * run `rake db:migrate` and `rake db:seed`
105
-
106
- Start up the dummy app. The first two steps also make sure you're ready to run `rspec spec` to run the test suite. (Todo: This workflow must be improved))
102
+ ```
103
+ rake setup
104
+ rake start_dummy
105
+ ```
107
106
 
108
107
  # Usage
109
108
 
@@ -199,6 +198,78 @@ Finally, add the new translation locale to your `available_locales` inside your
199
198
 
200
199
  config.available_locales = [:en, :fr]
201
200
 
201
+ ## Adding a language switch
202
+
203
+ Add scope around routes:
204
+
205
+ scope "(:locale)", locale: /de|en|fr/ do
206
+ root 'kuhsaft/pages#show'
207
+ end
208
+
209
+ Set the locale in the ApplicationController in a before_action and set default url options:
210
+
211
+ before_action :set_locale
212
+
213
+ def set_locale
214
+ if I18n.available_locales.map{|sym| sym.to_s }.include?(params[:locale])
215
+ I18n.locale = params[:locale]
216
+ else
217
+ I18n.locale = I18n.default_locale
218
+ end
219
+ end
220
+
221
+ def default_url_options(options={})
222
+ { locale: I18n.locale }
223
+ end
224
+
225
+ Add method to ApplicationHelper which redirects to homepage when current page is not translated.
226
+ Make sure to have the homepage translated in every available language.
227
+
228
+ def localized_url(url, target_locale)
229
+ page = Kuhsaft::Page.find_by_url("#{I18n.locale}/#{url}")
230
+ I18n.with_locale target_locale do
231
+ translated_url = page.presence && page.url
232
+ if translated_url.present?
233
+ "/#{translated_url}"
234
+ else
235
+ root_path(locale: target_locale)
236
+ end
237
+ end
238
+ end
239
+
240
+ def language_link(url, locale)
241
+ localized_url(params[:url], locale)
242
+ end
243
+
244
+ Add language switch to navigation:
245
+
246
+ SimpleNavigation::Configuration.run do |navigation|
247
+ I18n.available_locales.each do |locale|
248
+ primary.item locale, locale.to_s.upcase, language_link(params[:url], locale), highlights_on: Proc.new { I18n.locale == locale }
249
+ end
250
+ end
251
+
252
+ Make sure to render only pages which are translated and published by using `published` and `translated` scope, so pages
253
+ without translation and which are not published will not be displayed in the navigation.
254
+ Here is an example of a possible navigation:
255
+
256
+ SimpleNavigation::Configuration.run do |navigation|
257
+ navigation.items do |primary|
258
+ primary.dom_class = 'right'
259
+ primary.selected_class = 'active'
260
+ Kuhsaft::Page.find_by(slug_de: 'meta-navigation').children.published.translated.each do |page|
261
+ primary.item page.id, page.title, page.link, class: 'contact icon'
262
+ end
263
+
264
+ primary.item '', 'Sprache', '#', class: 'language icon has-dropdown'do |language|
265
+ I18n.available_locales.each do |locale|
266
+ language.dom_class = 'dropdown'
267
+ language.item locale, language_text(locale), language_link(params[:url], locale), highlights_on: Proc.new { I18n.locale == locale }, class: "icon lang-#{locale}"
268
+ end
269
+ end
270
+ end
271
+ end
272
+
202
273
  ## Styling the content
203
274
 
204
275
  By default, the text editor lets you add the following tags, for which you should supply some styles in your app:
@@ -207,17 +278,19 @@ By default, the text editor lets you add the following tags, for which you shoul
207
278
 
208
279
  ## Building a navigation
209
280
 
210
- Building a navigation is simple, access to the page tree is available through the common methods built into the ancestry gem. Just make sure you are only accessing published pages for your production site, using the `published` scope.
281
+ Building a navigation is simple, access to the page tree is available through the common methods built into the ancestry gem.
282
+ Just make sure you are only accessing published pages for your production site, using the `published` scope.
283
+ Or if your page is translated, using the `translated` scope and the `published` scope.
211
284
 
212
285
  ### 2 level navigation example using simple-navigation
213
286
 
214
287
  SimpleNavigation::Configuration.run do |navigation|
215
288
  navigation.items do |primary|
216
289
  # build first level
217
- Kuhsaft::Page.roots.published.each do |page|
290
+ Kuhsaft::Page.roots.published.translated.each do |page|
218
291
  primary.item page.id, page.title, page.link do |sub_item|
219
292
  # build second level
220
- page.children.published.each do |subpage|
293
+ page.children.published.translated.each do |subpage|
221
294
  sub_item.item subpage.id, subpage.title, subpage.link
222
295
  end
223
296
  end
data/Rakefile CHANGED
@@ -11,6 +11,27 @@ rescue LoadError
11
11
  RDoc::Task = Rake::RDocTask
12
12
  end
13
13
 
14
+ module Postgres
15
+ class << self
16
+ def exec(query)
17
+ `psql postgres -tAc "#{query}"`
18
+ end
19
+
20
+ def user_exists?(username)
21
+ exec("SELECT 1 FROM pg_user WHERE usename='#{username}'").strip == '1'
22
+ end
23
+
24
+ def drop_user(username)
25
+ puts "dropping user #{username}"
26
+ puts exec("DROP USER #{username}").inspect
27
+ end
28
+
29
+ def create_user(username)
30
+ user_exists?(username) ? false : `createuser -s #{username}`
31
+ end
32
+ end
33
+ end
34
+
14
35
  desc "Run specs"
15
36
  RSpec::Core::RakeTask.new(:spec => :setup)
16
37
 
@@ -22,7 +43,9 @@ RDoc::Task.new(:rdoc) do |rdoc|
22
43
  rdoc.rdoc_files.include('lib/**/*.rb')
23
44
  end
24
45
 
46
+ desc 'set up the dummy app for testing'
25
47
  task :setup do
48
+ Postgres.create_user 'screenconcept'
26
49
  Dir.chdir('spec/dummy') do
27
50
  `bundle exec rake kuhsaft:install:migrations`
28
51
  `bundle exec rails generate kuhsaft:install:assets`
@@ -33,3 +56,11 @@ task :setup do
33
56
  end
34
57
 
35
58
  task :default => [:spec]
59
+
60
+ desc 'start the dummy app'
61
+ task :start_dummy do
62
+ Dir.chdir('spec/dummy') do
63
+ ENV['BUNDLE_GEMFILE'] = '../../Gemfile'
64
+ `bundle exec rails server`
65
+ end
66
+ end
@@ -1,6 +1,6 @@
1
1
  module Kuhsaft
2
2
  module Cms
3
- class AdminController < ActionController::Base
3
+ class AdminController < InheritedResources::Base
4
4
  respond_to :html
5
5
  layout 'kuhsaft/cms/application'
6
6
  before_filter :set_content_locale
@@ -16,4 +16,4 @@ module Kuhsaft
16
16
  end
17
17
  end
18
18
  end
19
- end
19
+ end
@@ -20,6 +20,7 @@ class Kuhsaft::Page < ActiveRecord::Base
20
20
  default_scope { order('position ASC') }
21
21
 
22
22
  scope :published, -> { where(:published => Kuhsaft::PublishState::PUBLISHED) }
23
+ scope :translated, -> { where("url_#{I18n.locale} is not null") }
23
24
 
24
25
  # TODO: cleanup page_types (content pages => nil or PageType::CONTENT
25
26
  scope :content_page, -> { where(
@@ -13,7 +13,7 @@ class Kuhsaft::AssetBrickAssetUploader < CarrierWave::Uploader::Base
13
13
  # Override the directory where uploaded files will be stored.
14
14
  # This is a sensible default for uploaders that are meant to be mounted:
15
15
  def store_dir
16
- "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
16
+ "uploads/#{model.class.name.underscore.gsub(/^kuhsaft/,'cms')}/#{mounted_as}/#{model.id}"
17
17
  end
18
18
 
19
19
  # Provide a default URL as a default if there hasn't been a file uploaded:
@@ -12,7 +12,7 @@ module Kuhsaft
12
12
  # Override the directory where uploaded files will be stored.
13
13
  # This is a sensible default for uploaders that are meant to be mounted:
14
14
  def store_dir
15
- "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
15
+ "uploads/#{model.class.name.underscore.gsub(/^kuhsaft/,'cms')}/#{mounted_as}/#{model.id}"
16
16
  end
17
17
 
18
18
  # Provide a default URL as a default if there hasn't been a file uploaded:
@@ -0,0 +1,22 @@
1
+ class MoveKuhsaftAssets < ActiveRecord::Migration
2
+ def old_kuhsaft_assets_dir
3
+ File.join(Rails.root,'public/uploads/kuhsaft')
4
+ end
5
+
6
+ def new_kuhsaft_assets_dir
7
+ File.join(Rails.root,'public/uploads/cms')
8
+ end
9
+
10
+ def up
11
+ if File.exists? old_kuhsaft_assets_dir
12
+ puts "Moving Kuhsaft Assets from #{old_kuhsaft_assets_dir} to #{new_kuhsaft_assets_dir}"
13
+ File.rename old_kuhsaft_assets_dir, new_kuhsaft_assets_dir
14
+ end
15
+ end
16
+
17
+ def down
18
+ if File.exists? new_kuhsaft_assets_dir
19
+ File.rename new_kuhsaft_assets_dir, old_kuhsaft_assets_dir
20
+ end
21
+ end
22
+ end
@@ -1,13 +1,20 @@
1
1
  # Add default kuhsaft brick types
2
+ brick_types = [
3
+ { class_name: 'Kuhsaft::TextBrick', group: 'elements' },
4
+ { class_name: 'Kuhsaft::LinkBrick', group: 'elements' },
5
+ { class_name: 'Kuhsaft::VideoBrick', group: 'elements' },
6
+ { class_name: 'Kuhsaft::AccordionBrick', group: 'elements' },
7
+ { class_name: 'Kuhsaft::AccordionItemBrick', group: 'elements' },
8
+ { class_name: 'Kuhsaft::TwoColumnBrick', group: 'layout_elements' },
9
+ { class_name: 'Kuhsaft::SliderBrick', group: 'elements' },
10
+ { class_name: 'Kuhsaft::ImageBrick', group: 'elements' },
11
+ { class_name: 'Kuhsaft::PlaceholderBrick', group: 'elements' },
12
+ { class_name: 'Kuhsaft::AnchorBrick', group: 'elements' },
13
+ { class_name: 'Kuhsaft::AssetBrick', group: 'elements' }
14
+ ]
15
+
16
+ brick_types.each do |bt|
17
+ brick_type = Kuhsaft::BrickType.find_or_create_by(class_name: bt[:class_name])
18
+ brick_type.update! bt
19
+ end
2
20
 
3
- Kuhsaft::BrickType.create(:class_name => 'Kuhsaft::TextBrick', :group => 'elements')
4
- Kuhsaft::BrickType.create(:class_name => 'Kuhsaft::LinkBrick', :group => 'elements')
5
- Kuhsaft::BrickType.create(:class_name => 'Kuhsaft::VideoBrick', :group => 'elements')
6
- Kuhsaft::BrickType.create(:class_name => 'Kuhsaft::AccordionBrick', :group => 'elements')
7
- Kuhsaft::BrickType.create(:class_name => 'Kuhsaft::AccordionItemBrick', :group => 'elements')
8
- Kuhsaft::BrickType.create(:class_name => 'Kuhsaft::TwoColumnBrick', :group => 'layout_elements')
9
- Kuhsaft::BrickType.create(:class_name => 'Kuhsaft::SliderBrick', :group => 'elements')
10
- Kuhsaft::BrickType.create(:class_name => 'Kuhsaft::ImageBrick', :group => 'elements')
11
- Kuhsaft::BrickType.create(:class_name => 'Kuhsaft::PlaceholderBrick', :group => 'elements')
12
- Kuhsaft::BrickType.create(:class_name => 'Kuhsaft::AnchorBrick', :group => 'elements')
13
- Kuhsaft::BrickType.create(:class_name => 'Kuhsaft::AssetBrick', :group => 'elements')
@@ -15,4 +15,5 @@ module Kuhsaft
15
15
  require 'bootstrap-sass'
16
16
  require 'haml'
17
17
  require 'ckeditor'
18
+ require 'inherited_resources'
18
19
  end
@@ -1,3 +1,3 @@
1
1
  module Kuhsaft
2
- VERSION = "2.0.3"
2
+ VERSION = "2.1.0"
3
3
  end
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe Kuhsaft::Cms::AdminController do
4
+ subject { described_class }
5
+
6
+ it { expect(Kuhsaft::Cms::AdminController.ancestors).to include(InheritedResources::Base) }
7
+ end
@@ -1,4 +1,3 @@
1
1
  # Set up gems listed in the Gemfile.
2
- ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
3
-
2
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../../../Gemfile', __FILE__)
4
3
  require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])
@@ -1,23 +1,19 @@
1
- # SQLite version 3.x
2
- # gem install sqlite3
3
- #
4
- # Ensure the SQLite 3 gem is defined in your Gemfile
5
- # gem 'sqlite3'
6
1
  development:
7
- adapter: mysql2
2
+ adapter: postgresql
8
3
  database: kuhsaft_development
9
- user: root
4
+ username: screenconcept
10
5
  password:
6
+ host: localhost
7
+ encoding: unicode
11
8
  pool: 5
12
- timeout: 5000
9
+ port: <%= ENV["BOXEN_POSTGRESQL_PORT"] || 5432 %>
13
10
 
14
- # Warning: The database defined as "test" will be erased and
15
- # re-generated from your development database when you run "rake".
16
- # Do not set this db to the same as development or production.
17
11
  test:
18
- adapter: mysql2
19
- database: kuhsaft_test
20
- user: root
12
+ adapter: postgresql
13
+ database: kuhsaft_development
14
+ username: screenconcept
21
15
  password:
16
+ host: localhost
17
+ encoding: unicode
22
18
  pool: 5
23
- timeout: 5000
19
+ port: <%= ENV["BOXEN_POSTGRESQL_PORT"] || 5432 %>
@@ -32,13 +32,13 @@ describe 'pages#index' do
32
32
  end
33
33
 
34
34
  it 'highlights search term in preview' do
35
- within("ul.search-results mark") do
35
+ within("ul.search-results.success") do
36
36
  page.should have_content('Chromodorididae')
37
37
  end
38
38
  end
39
39
 
40
40
  it 'truncates the text' do
41
- find('.summary .fulltext').text.length.should == 208
41
+ find('.summary .excerpt').text.length.should == 110
42
42
  end
43
43
  end
44
44
 
@@ -36,7 +36,7 @@ describe Kuhsaft::Brick do
36
36
 
37
37
  describe '#parents' do
38
38
  it 'returns the chain of parents' do
39
- item1, item2, item3 = mock, mock, Kuhsaft::Brick.new
39
+ item1, item2, item3 = double, double, Kuhsaft::Brick.new
40
40
  item2.stub(:brick_list).and_return(item1)
41
41
  item3.stub(:brick_list).and_return(item2)
42
42
  item3.parents.should == [item1, item2]
@@ -56,7 +56,7 @@ describe Kuhsaft::Brick do
56
56
  end
57
57
 
58
58
  it 'returns true if the brick has siblings' do
59
- item1, item2, item3 = mock, mock, Kuhsaft::Brick.new
59
+ item1, item2, item3 = double, double, Kuhsaft::Brick.new
60
60
  item1.stub(:bricks).and_return([item2, item3])
61
61
  item2.stub(:brick_list).and_return(item1)
62
62
  item3.stub(:brick_list).and_return(item1)
@@ -393,4 +393,23 @@ describe Kuhsaft::Page do
393
393
  end
394
394
  end
395
395
  end
396
+
397
+ describe '#translated' do
398
+ before :each do
399
+ @page_1 = create(:page, title: 'Page 1', slug: 'page1')
400
+ @page_2 = create(:page, title: 'Page 2', slug: 'page1')
401
+ @page_3 = create(:page, title: 'Page 3', slug: 'page1')
402
+ end
403
+
404
+ it 'returns all pages that have a translation' do
405
+ expect(Kuhsaft::Page.translated).to eq [@page_1, @page_2, @page_3]
406
+ end
407
+
408
+ it 'does not return untranslated pages' do
409
+ I18n.with_locale :de do
410
+ @page_1.update(title: 'Page 1 fr', slug: 'page_1_fr')
411
+ expect(Kuhsaft::Page.translated).to eq [@page_1]
412
+ end
413
+ end
414
+ end
396
415
  end
@@ -1,11 +1,9 @@
1
1
  ENV["RAILS_ENV"] = "test"
2
2
 
3
3
  require File.expand_path("../dummy/config/environment.rb", __FILE__)
4
- require 'rails/test_help'
5
- require 'rspec/rails'
6
- require 'factory_girl'
7
- require 'capybara/rails'
8
- require 'rake'
4
+ [ 'rails/test_help', 'rspec/rails', 'factory_girl', 'capybara/rails',
5
+ 'rake', 'database_cleaner', 'pry-debugger'
6
+ ].each{|lib| require lib }
9
7
 
10
8
  FactoryGirl.find_definitions
11
9
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kuhsaft
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.3
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Immanuel Häussermann
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2013-07-23 00:00:00.000000000 Z
15
+ date: 2013-08-21 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: rspec
@@ -71,7 +71,7 @@ dependencies:
71
71
  - !ruby/object:Gem::Version
72
72
  version: '2.0'
73
73
  - !ruby/object:Gem::Dependency
74
- name: mysql2
74
+ name: pg
75
75
  requirement: !ruby/object:Gem::Requirement
76
76
  requirements:
77
77
  - - '>='
@@ -252,6 +252,90 @@ dependencies:
252
252
  - - '>='
253
253
  - !ruby/object:Gem::Version
254
254
  version: '0'
255
+ - !ruby/object:Gem::Dependency
256
+ name: jquery-rails
257
+ requirement: !ruby/object:Gem::Requirement
258
+ requirements:
259
+ - - '>='
260
+ - !ruby/object:Gem::Version
261
+ version: '0'
262
+ type: :runtime
263
+ prerelease: false
264
+ version_requirements: !ruby/object:Gem::Requirement
265
+ requirements:
266
+ - - '>='
267
+ - !ruby/object:Gem::Version
268
+ version: '0'
269
+ - !ruby/object:Gem::Dependency
270
+ name: database_cleaner
271
+ requirement: !ruby/object:Gem::Requirement
272
+ requirements:
273
+ - - '>='
274
+ - !ruby/object:Gem::Version
275
+ version: '0'
276
+ type: :development
277
+ prerelease: false
278
+ version_requirements: !ruby/object:Gem::Requirement
279
+ requirements:
280
+ - - '>='
281
+ - !ruby/object:Gem::Version
282
+ version: '0'
283
+ - !ruby/object:Gem::Dependency
284
+ name: pry-rails
285
+ requirement: !ruby/object:Gem::Requirement
286
+ requirements:
287
+ - - '>='
288
+ - !ruby/object:Gem::Version
289
+ version: '0'
290
+ type: :development
291
+ prerelease: false
292
+ version_requirements: !ruby/object:Gem::Requirement
293
+ requirements:
294
+ - - '>='
295
+ - !ruby/object:Gem::Version
296
+ version: '0'
297
+ - !ruby/object:Gem::Dependency
298
+ name: pry-debugger
299
+ requirement: !ruby/object:Gem::Requirement
300
+ requirements:
301
+ - - '>='
302
+ - !ruby/object:Gem::Version
303
+ version: '0'
304
+ type: :development
305
+ prerelease: false
306
+ version_requirements: !ruby/object:Gem::Requirement
307
+ requirements:
308
+ - - '>='
309
+ - !ruby/object:Gem::Version
310
+ version: '0'
311
+ - !ruby/object:Gem::Dependency
312
+ name: sass-rails
313
+ requirement: !ruby/object:Gem::Requirement
314
+ requirements:
315
+ - - '>='
316
+ - !ruby/object:Gem::Version
317
+ version: '0'
318
+ type: :runtime
319
+ prerelease: false
320
+ version_requirements: !ruby/object:Gem::Requirement
321
+ requirements:
322
+ - - '>='
323
+ - !ruby/object:Gem::Version
324
+ version: '0'
325
+ - !ruby/object:Gem::Dependency
326
+ name: inherited_resources
327
+ requirement: !ruby/object:Gem::Requirement
328
+ requirements:
329
+ - - '>='
330
+ - !ruby/object:Gem::Version
331
+ version: '0'
332
+ type: :runtime
333
+ prerelease: false
334
+ version_requirements: !ruby/object:Gem::Requirement
335
+ requirements:
336
+ - - '>='
337
+ - !ruby/object:Gem::Version
338
+ version: '0'
255
339
  - !ruby/object:Gem::Dependency
256
340
  name: rails
257
341
  requirement: !ruby/object:Gem::Requirement
@@ -450,6 +534,7 @@ files:
450
534
  - db/migrate/11_update_url_and_redirect_url_value.rb
451
535
  - db/migrate/12_regenerate_fulltext.rb
452
536
  - db/migrate/13_add_page_title_to_pages.rb
537
+ - db/migrate/14_move_kuhsaft_assets.rb
453
538
  - db/seeds.rb
454
539
  - lib/generators/kuhsaft/assets/install_generator.rb
455
540
  - lib/generators/kuhsaft/translations/add_generator.rb
@@ -471,6 +556,7 @@ files:
471
556
  - vendor/assets/stylesheets/nestable.css
472
557
  - Rakefile
473
558
  - README.md
559
+ - spec/controllers/kuhsaft/cms/admin_controller_spec.rb
474
560
  - spec/controllers/kuhsaft/pages_controller_spec.rb
475
561
  - spec/dummy/Rakefile
476
562
  - spec/dummy/app/assets/images/spec-image.png
@@ -568,6 +654,7 @@ signing_key:
568
654
  specification_version: 4
569
655
  summary: A tool that helps you to manage your content within your app.
570
656
  test_files:
657
+ - spec/controllers/kuhsaft/cms/admin_controller_spec.rb
571
658
  - spec/controllers/kuhsaft/pages_controller_spec.rb
572
659
  - spec/dummy/Rakefile
573
660
  - spec/dummy/app/assets/images/spec-image.png