qbrick 2.6.10 → 2.7

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.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/qbrick/cms/admins_controller.rb +1 -1
  3. data/app/controllers/qbrick/cms/settings_controller.rb +20 -0
  4. data/app/helpers/qbrick/cms/admin_helper.rb +1 -2
  5. data/{lib/qbrick → app/models/concerns}/brick_list.rb +0 -0
  6. data/app/models/qbrick/admin.rb +2 -0
  7. data/app/models/qbrick/brick.rb +3 -2
  8. data/app/models/qbrick/page.rb +8 -11
  9. data/app/models/qbrick/settings.rb +28 -0
  10. data/app/views/devise/sessions/new.html.haml +2 -2
  11. data/app/views/qbrick/cms/backend/_main_navigation.html.haml +1 -1
  12. data/app/views/qbrick/cms/bricks/new.js.erb +1 -1
  13. data/app/views/qbrick/cms/settings/index.html.haml +24 -0
  14. data/config/initializers/rails_settings_ui.rb +10 -0
  15. data/config/locales/views/qbrick/cms/{settings_collection → settings}/de.yml +3 -2
  16. data/config/locales/views/qbrick/cms/{settings_collection → settings}/en.yml +2 -1
  17. data/config/routes.rb +5 -7
  18. data/db/migrate/26_change_settings.rb +18 -0
  19. data/db/seeds.rb +0 -20
  20. data/lib/qbrick.rb +2 -1
  21. data/lib/qbrick/version.rb +1 -1
  22. data/spec/controllers/qbrick/cms/settings_controller_spec.rb +39 -0
  23. data/spec/factories.rb +0 -5
  24. data/spec/models/settings_spec.rb +53 -0
  25. metadata +42 -12
  26. data/app/controllers/qbrick/cms/settings_collections_controller.rb +0 -26
  27. data/app/models/qbrick/setting.rb +0 -13
  28. data/app/models/qbrick/settings_collection.rb +0 -10
  29. data/app/views/qbrick/cms/settings_collections/_form.html.haml +0 -8
  30. data/app/views/qbrick/cms/settings_collections/index.html.haml +0 -6
  31. data/spec/models/setting_spec.rb +0 -28
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 77ffccf0af58c0baf0f3396848f8ee28716f57ae
4
- data.tar.gz: 5c79d9219c79af8f7f9b93a4182b03954b23e53b
3
+ metadata.gz: a4a7a8140be43d0e7d62d35acc326f6e21c8908b
4
+ data.tar.gz: 4e6a28e356fe3faaca9df4c83004dabe902d0a61
5
5
  SHA512:
6
- metadata.gz: f8a27fe09939893f8021db54f7087c9137475286afb9051eec17701e2457bf4cb7acf1c5144157ca054a7ba95b13ebd75d331c2f7e93898a0ff6d36c3f57de46
7
- data.tar.gz: 14146aefb0457b86cfa09d357a85a068bda0f527f5a0b52897f0dca7e99913d9a872fa16783eba917685592ba39aa6918be5aecdea4294928ee17bc5e25cc293
6
+ metadata.gz: a4c3805524f4bc8d16a131ebbc283da844f54a79555651be867be95ab3defade6e4d46cae21ab4f773799d7c2c90f83efdf95812fe98e7186ca943e797e1569a
7
+ data.tar.gz: 7dfffed96761598156d00d841105eba80682be2d7586c2f716a883210ae9a142e7ef810a66b5c9fca86b31ac21e0c61e4b414f9defe4b512dcf55b1da3c5c285
@@ -1,7 +1,7 @@
1
1
  module Qbrick
2
2
  module Cms
3
3
  class AdminsController < BackendController
4
- before_action :set_admin, only: [:show, :edit, :update, :destroy]
4
+ before_action :set_admin, only: %i(show edit update destroy)
5
5
 
6
6
  # GET /admins
7
7
  # GET /admins.json
@@ -0,0 +1,20 @@
1
+ module Qbrick
2
+ module Cms
3
+ class SettingsController < RailsSettingsUi::SettingsController
4
+ def update_all
5
+ if @casted_settings[:errors].any?
6
+ render :index
7
+ else
8
+ @casted_settings.map { |setting| RailsSettingsUi.settings_klass[setting[0]] = setting[1] if setting[0] != 'errors' }
9
+ redirect_to qbrick.url_for(action: :index)
10
+ end
11
+ end
12
+
13
+ private
14
+
15
+ def cast_settings_params
16
+ @casted_settings = RailsSettingsUi::TypeConverter.cast params[:settings]
17
+ end
18
+ end
19
+ end
20
+ end
@@ -14,8 +14,7 @@ module Qbrick
14
14
  action = 'edit'
15
15
  end
16
16
 
17
- link_to locale.to_s.upcase, url_for(
18
- action: action, content_locale: locale)
17
+ link_to locale.to_s.upcase, qbrick.url_for(action: action, content_locale: locale)
19
18
  end
20
19
 
21
20
  def model_attribute_field(resource, column_name, f)
@@ -1,5 +1,7 @@
1
1
  module Qbrick
2
2
  class Admin < ActiveRecord::Base
3
+ include ::RailsSettings::Extend
4
+
3
5
  # Include default devise modules. Others available are:
4
6
  # :confirmable, :lockable, :timeoutable and :omniauthable
5
7
  devise :database_authenticatable,
@@ -1,7 +1,8 @@
1
- require_relative '../../../lib/qbrick/brick_list'
1
+ require_relative '../concerns/brick_list'
2
2
 
3
3
  module Qbrick
4
4
  class Brick < ActiveRecord::Base
5
+ include ::RailsSettings::Extend
5
6
  include Qbrick::BrickList
6
7
 
7
8
  belongs_to :brick_list, polymorphic: true, touch: true
@@ -32,7 +33,7 @@ module Qbrick
32
33
 
33
34
  after_initialize do
34
35
  self.position ||= has_siblings? ? brick_list.bricks.maximum(:position).to_i + 1 : 1
35
- self.image_size ||= ImageSize.all.first.name.to_s
36
+ self.image_size ||= Qbrick::ImageSize.all.first.name.to_s if Qbrick::ImageSize.all.first.present?
36
37
  end
37
38
 
38
39
  after_save do
@@ -1,5 +1,6 @@
1
1
  module Qbrick
2
2
  class Page < ActiveRecord::Base
3
+ include ::RailsSettings::Extend
3
4
  include Qbrick::Engine.routes.url_helpers
4
5
  include Qbrick::Orderable
5
6
  include Qbrick::Translatable
@@ -144,21 +145,17 @@ module Qbrick
144
145
  end
145
146
 
146
147
  def translated_link_for(locale)
147
- if translated_to? locale
148
- I18n.with_locale locale do
149
- path_with_prefixed_locale
150
- end
151
- else
152
- Qbrick::Page.roots.first.link
148
+ return Qbrick::Page.roots.first.link unless translated_to? locale
149
+
150
+ I18n.with_locale locale do
151
+ path_with_prefixed_locale
153
152
  end
154
153
  end
155
154
 
156
155
  def link
157
- if bricks.count == 0 && children.count > 0
158
- children.published.first.link
159
- else
160
- path_with_prefixed_locale
161
- end
156
+ return children.published.first.link if bricks.empty? && children.any?
157
+
158
+ path_with_prefixed_locale
162
159
  end
163
160
 
164
161
  def path_segments
@@ -0,0 +1,28 @@
1
+ RailsSettings::Settings.table_name = 'qbrick_settings'
2
+
3
+ module Qbrick
4
+ class Settings < ::RailsSettings::CachedSettings
5
+ scope :ordered, -> { order :var }
6
+ alias_attribute :key, :var
7
+
8
+ class << self
9
+ def vars
10
+ pluck :var
11
+ end
12
+ alias keys vars
13
+
14
+ def all_object_hash(starting_with = nil)
15
+ vars = thing_scoped.ordered
16
+ vars = vars.where "var LIKE '#{starting_with}%'" if starting_with
17
+
18
+ Hash[vars.map { |record| [record.var, record] }].with_indifferent_access.tap do |result|
19
+ @@defaults.slice(*(@@defaults.keys - result.keys)).each do |key, value|
20
+ next if starting_with.present? && !key.start_with?(starting_with)
21
+
22
+ result[key] = Qbrick::Settings.new var: key, value: value
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -2,8 +2,8 @@
2
2
  %h1 Sign in
3
3
  .form
4
4
  = simple_form_for(resource, as: resource_name, url: session_path(resource_name), wrapper: :bootstrap) do |f|
5
- = f.input :email, :required => false, :autofocus => true
6
- = f.input :password, :required => false
5
+ = f.input :email, required: false, autofocus: true
6
+ = f.input :password, required: false
7
7
 
8
8
  - if devise_mapping.rememberable?
9
9
  = f.input :remember_me, as: :boolean, wrapper_html: { class: 'checkbox-wrapper' }
@@ -15,6 +15,6 @@
15
15
  %li= link_to t('.logout'), qbrick.destroy_admin_session_path, method: :delete
16
16
 
17
17
  %ul.nav
18
- %li= link_to t('.settings'), qbrick.cms_settings_collections_path
18
+ %li= link_to t('.settings'), qbrick.cms_settings_path
19
19
  %li= link_to Qbrick::Page.model_name.human(count: 2), qbrick.cms_pages_path
20
20
  %li= link_to Qbrick::Admin.model_name.human(count: 2), qbrick.cms_admins_path
@@ -4,7 +4,7 @@
4
4
 
5
5
  $("#brick-form").empty();
6
6
 
7
- $("#brick-form").append(<%= render('qbrick/cms/bricks/new', :brick => @brick, :format => :html).to_json.html_safe %>);
7
+ $("#brick-form").append(<%= render('qbrick/cms/bricks/new', brick: @brick, format: :html).to_json.html_safe %>);
8
8
 
9
9
  $("#brick-form").find('textarea.ckeditor').each(function (index, elem) { initCKEditor(elem.id) });
10
10
 
@@ -0,0 +1,24 @@
1
+ %h1= t 'qbrick.cms.settings.index.title'
2
+
3
+ - if @casted_settings && @casted_settings[:errors].any?
4
+ .alert.alert-danger= t('settings.index.settings_include_errors')
5
+
6
+ = form_tag qbrick.update_all_cms_settings_path, method: :put, class: 'form' do
7
+ %table.table.table-striped
8
+ %thead
9
+ %tr
10
+ %th= t('settings.index.description')
11
+ %th= t('settings.index.value')
12
+ %tbody
13
+ - @settings.each do |name, value|
14
+ - next if name == :errors
15
+ %tr{ data: { name: name } }
16
+ %td= I18n.t("settings.attributes.#{name}.name")
17
+ %td.setting-value
18
+ - setting_with_error = @casted_settings && @casted_settings[:errors].include?(name)
19
+ %div{ class: "form-group #{ setting_with_error ? 'has-error' : ''}" }
20
+ = setting_field(name, value, @settings)
21
+ - if setting_with_error
22
+ %span.help-block= @casted_settings[:errors][name]
23
+
24
+ = submit_tag t('settings.index.save_all'), class: 'btn btn-primary btn-lg'
@@ -0,0 +1,10 @@
1
+ RailsSettingsUi.parent_controller = 'Qbrick::Cms::BackendController'
2
+ RailsSettingsUi::ApplicationController.layout 'qbrick/cms/application'
3
+
4
+ RailsSettingsUi.setup do |config|
5
+ config.settings_class = 'Qbrick::Settings'
6
+ end
7
+
8
+ Rails.application.config.to_prepare do
9
+ RailsSettingsUi.inline_main_app_routes!
10
+ end
@@ -1,9 +1,10 @@
1
1
  de:
2
2
  qbrick:
3
3
  cms:
4
- settings_collections:
4
+ settings:
5
+ none_available: Derzeit sind leider keine Einstellungen verfügbar
5
6
  index:
6
- title: Settings
7
+ title: Einstellungen
7
8
  form:
8
9
  save: Speichern
9
10
  site_title: Seitentitel
@@ -1,7 +1,8 @@
1
1
  en:
2
2
  qbrick:
3
3
  cms:
4
- settings_collections:
4
+ settings:
5
+ none_available: Currently are no settings defined
5
6
  index:
6
7
  title: Settings
7
8
  form:
@@ -2,7 +2,9 @@ Qbrick::Engine.routes.draw do
2
2
  devise_for :admins, class_name: 'Qbrick::Admin', module: :devise
3
3
 
4
4
  namespace :cms do
5
- resources :settings_collections, only: %i(update index)
5
+ resources :settings, only: %i(update_all index) do
6
+ put :update_all, on: :collection
7
+ end
6
8
  resources :pages, except: :show do
7
9
  post :sort, on: :collection
8
10
  get :mirror
@@ -16,9 +18,7 @@ Qbrick::Engine.routes.draw do
16
18
  resources :ckimages, only: %i(create index destroy)
17
19
 
18
20
  resource :account, only: :edit do
19
- collection do
20
- patch 'update_password'
21
- end
21
+ patch :update_password, on: :collection
22
22
  end
23
23
 
24
24
  resources :admins
@@ -31,9 +31,7 @@ Qbrick::Engine.routes.draw do
31
31
  resources :pages, only: :index
32
32
  end
33
33
 
34
- resources :pages,
35
- only: %i(index),
36
- defaults: { locale: I18n.locale }
34
+ resources :pages, only: %i(index), defaults: { locale: I18n.locale }
37
35
  get '(*url)' => 'pages#show', as: :page
38
36
  end
39
37
 
@@ -0,0 +1,18 @@
1
+ class ChangeSettings < ActiveRecord::Migration
2
+ def change
3
+ remove_index :qbrick_settings, :key
4
+ rename_column :qbrick_settings, :key, :var
5
+ remove_column :qbrick_settings, :settings_collection_id
6
+
7
+ change_table :qbrick_settings do |t|
8
+ t.change :var, :string, null: false
9
+ t.change :value, :text, null: false
10
+
11
+ t.integer :thing_id, null: true
12
+ t.string :thing_type, limit: 30, null: true
13
+ t.timestamps
14
+ end
15
+
16
+ add_index :qbrick_settings, %i(thing_type thing_id var), unique: true
17
+ end
18
+ end
@@ -18,26 +18,6 @@ brick_types.each do |bt|
18
18
  brick_type.update! bt
19
19
  end
20
20
 
21
- # Add default settings
22
-
23
- site_collection = Qbrick::SettingsCollection.find_or_create_by(collection_type: 'site')
24
- page_collection = Qbrick::SettingsCollection.find_or_create_by(collection_type: 'page')
25
- global_collection = Qbrick::SettingsCollection.find_or_create_by(collection_type: 'global')
26
-
27
- settings = [
28
- { key: 'site_title', value: 'Default Site Title', settings_collection_id: site_collection.id },
29
- { key: 'site_description', value: 'Default Site Description', settings_collection_id: site_collection.id },
30
- { key: 'default_page_title', value: 'Default Page Title', settings_collection_id: page_collection.id },
31
- { key: 'default_page_description', value: 'Default Page Description', settings_collection_id: page_collection.id },
32
- { key: 'google_analytics_key', value: 'UA-xxxx-x', settings_collection_id: global_collection.id },
33
- { key: 'typekit_id', value: 'xxxxxxx', settings_collection_id: global_collection.id }
34
- ]
35
-
36
- settings.each do |s|
37
- setting = Qbrick::Setting.find_or_create_by(key: s[:key])
38
- setting.update! s
39
- end
40
-
41
21
  unless Qbrick::Admin.any?
42
22
  Qbrick::Admin.create(email: 'admin@admin.com', password: 'change-me-soon!')
43
23
  end
@@ -1,4 +1,5 @@
1
1
  module Qbrick
2
+ require 'rails-settings-cached'
2
3
  require 'devise'
3
4
  require 'qbrick/engine'
4
5
  require 'qbrick/orderable'
@@ -6,7 +7,6 @@ module Qbrick
6
7
  require 'qbrick/translatable'
7
8
  require 'qbrick/searchable'
8
9
  require 'qbrick/gridded'
9
- require 'qbrick/brick_list'
10
10
  require 'qbrick/partial_extractor'
11
11
  require 'qbrick/touch_placeholders'
12
12
  require 'simple_form'
@@ -21,4 +21,5 @@ module Qbrick
21
21
  require 'haml'
22
22
  require 'ckeditor'
23
23
  require 'inherited_resources'
24
+ require 'rails-settings-ui'
24
25
  end
@@ -1,3 +1,3 @@
1
1
  module Qbrick
2
- VERSION = '2.6.10'
2
+ VERSION = '2.7'
3
3
  end
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ describe Qbrick::Cms::SettingsController, type: :controller do
4
+ render_views
5
+ routes { Qbrick::Engine.routes }
6
+
7
+ before do
8
+ admin = double 'admin'
9
+ allow_message_expectations_on_nil
10
+ allow(request.env['warden']).to receive(:authenticate!) { admin }
11
+ allow(controller).to receive(:current_admin) { admin }
12
+ end
13
+
14
+ describe 'GET index' do
15
+ it 'renders saved settings' do
16
+ Qbrick::Settings.highlighting_font = 'Comic Sans'
17
+ get :index
18
+ expect(response).to be_success
19
+ expect(response.body).to include(I18n.t 'settings.attributes.highlighting_font.name')
20
+ end
21
+
22
+ it 'renders default settings' do
23
+ Qbrick::Settings.defaults[:highlighting_font] = 'Comic Sans'
24
+ get :index
25
+ expect(response).to be_success
26
+ expect(response.body).to include(I18n.t 'settings.attributes.highlighting_font.name')
27
+ end
28
+ end
29
+
30
+ describe 'POST update_all' do
31
+ it 'updates settings' do
32
+ Qbrick::Settings.defaults[:highlighting_font] = 'Comic Sans'
33
+ post :update_all, settings: { 'highlighting_font' => 'Comic Sans Neue' }
34
+ expect(response).to redirect_to("#{Qbrick::Engine.routes.url_helpers.cms_settings_path}?content_locale=#{I18n.locale}")
35
+ setting = Qbrick::Settings.find_by var: 'highlighting_font'
36
+ expect(setting.value).to eq 'Comic Sans Neue'
37
+ end
38
+ end
39
+ end
@@ -35,11 +35,6 @@ FactoryGirl.define do
35
35
  a.file File.open("#{Qbrick::Engine.root}/spec/dummy/app/assets/images/spec-image.png")
36
36
  end
37
37
 
38
- factory :setting, class: Qbrick::Setting do |s|
39
- s.key 'code'
40
- s.value 'SomeValue'
41
- end
42
-
43
38
  factory :admin, class: Qbrick::Admin do
44
39
  email 'test@test.com'
45
40
  password 'somel33tPW'
@@ -0,0 +1,53 @@
1
+ require 'spec_helper'
2
+
3
+ module Qbrick
4
+ describe Settings, type: :model do
5
+ context 'setting exists' do
6
+ it 'returns the set value' do
7
+ Settings.code = 'SomeValue'
8
+ expect(Settings.code).to eq('SomeValue')
9
+ end
10
+
11
+ it 'keeps the value' do
12
+ [42, '23', [3, 4], nil].each do |value|
13
+ Settings.stuff = value
14
+ expect(Settings.stuff).to eq value
15
+ end
16
+ end
17
+ end
18
+
19
+ context "setting doesn't exist" do
20
+ it 'returns nil for a call on a non-present setting' do
21
+ expect(Settings.does_not_exist).to be_nil
22
+ end
23
+ end
24
+
25
+ context 'on an admin' do
26
+ it 'can be set on an instance' do
27
+ admin = create :admin
28
+ admin.settings.locale = 'cn'
29
+ admin.reload
30
+ expect(admin.settings.locale).to eq 'cn'
31
+ end
32
+ end
33
+
34
+ context 'on a brick' do
35
+ it 'can be set on an instance' do
36
+ brick = create :text_brick, brick_list: (Qbrick::Page.first || create(:page))
37
+ brick.settings.color = 'infrared'
38
+ brick.reload
39
+ expect(brick.settings.color).to eq 'infrared'
40
+ end
41
+ end
42
+
43
+ context 'on a page' do
44
+ it 'can be set on an instance' do
45
+ page = Qbrick::Page.first || create(:page)
46
+ page.settings.heisen = 'berg'
47
+ page.reload
48
+
49
+ expect(page.settings.heisen).to eq 'berg'
50
+ end
51
+ end
52
+ end
53
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qbrick
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.10
4
+ version: '2.7'
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: 2015-08-11 00:00:00.000000000 Z
15
+ date: 2015-08-26 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: rspec-rails
@@ -504,6 +504,34 @@ dependencies:
504
504
  - - ">="
505
505
  - !ruby/object:Gem::Version
506
506
  version: '0'
507
+ - !ruby/object:Gem::Dependency
508
+ name: rails-settings-cached
509
+ requirement: !ruby/object:Gem::Requirement
510
+ requirements:
511
+ - - ">="
512
+ - !ruby/object:Gem::Version
513
+ version: '0'
514
+ type: :runtime
515
+ prerelease: false
516
+ version_requirements: !ruby/object:Gem::Requirement
517
+ requirements:
518
+ - - ">="
519
+ - !ruby/object:Gem::Version
520
+ version: '0'
521
+ - !ruby/object:Gem::Dependency
522
+ name: rails-settings-ui
523
+ requirement: !ruby/object:Gem::Requirement
524
+ requirements:
525
+ - - ">="
526
+ - !ruby/object:Gem::Version
527
+ version: 0.5.0
528
+ type: :runtime
529
+ prerelease: false
530
+ version_requirements: !ruby/object:Gem::Requirement
531
+ requirements:
532
+ - - ">="
533
+ - !ruby/object:Gem::Version
534
+ version: 0.5.0
507
535
  description: Qbrick is a Rails engine that offers a simple CMS.
508
536
  email: developers@screenconcept.ch
509
537
  executables: []
@@ -536,7 +564,7 @@ files:
536
564
  - app/controllers/qbrick/cms/bricks_controller.rb
537
565
  - app/controllers/qbrick/cms/ckimages_controller.rb
538
566
  - app/controllers/qbrick/cms/pages_controller.rb
539
- - app/controllers/qbrick/cms/settings_collections_controller.rb
567
+ - app/controllers/qbrick/cms/settings_controller.rb
540
568
  - app/controllers/qbrick/pages_controller.rb
541
569
  - app/controllers/qbrick/sitemaps_controller.rb
542
570
  - app/helpers/cms_helper.rb
@@ -545,6 +573,7 @@ files:
545
573
  - app/helpers/qbrick/cms/admin_helper.rb
546
574
  - app/helpers/qbrick/cms/pages_helper.rb
547
575
  - app/helpers/sitemaps_helper.rb
576
+ - app/models/concerns/brick_list.rb
548
577
  - app/models/qbrick/accordion_brick.rb
549
578
  - app/models/qbrick/accordion_item_brick.rb
550
579
  - app/models/qbrick/admin.rb
@@ -566,8 +595,7 @@ files:
566
595
  - app/models/qbrick/partition.rb
567
596
  - app/models/qbrick/placeholder_brick.rb
568
597
  - app/models/qbrick/publish_state.rb
569
- - app/models/qbrick/setting.rb
570
- - app/models/qbrick/settings_collection.rb
598
+ - app/models/qbrick/settings.rb
571
599
  - app/models/qbrick/slider_brick.rb
572
600
  - app/models/qbrick/text_brick.rb
573
601
  - app/models/qbrick/two_column_brick.rb
@@ -635,8 +663,7 @@ files:
635
663
  - app/views/qbrick/cms/pages/new.html.haml
636
664
  - app/views/qbrick/cms/pages/show.html.haml
637
665
  - app/views/qbrick/cms/pages/sort.js.erb
638
- - app/views/qbrick/cms/settings_collections/_form.html.haml
639
- - app/views/qbrick/cms/settings_collections/index.html.haml
666
+ - app/views/qbrick/cms/settings/index.html.haml
640
667
  - app/views/qbrick/column_bricks/_column_brick.html.haml
641
668
  - app/views/qbrick/column_bricks/column_brick/_edit.html.haml
642
669
  - app/views/qbrick/image_bricks/_image_brick.html.haml
@@ -661,6 +688,7 @@ files:
661
688
  - app/views/qbrick/video_bricks/_video_brick.html.haml
662
689
  - app/views/qbrick/video_bricks/video_brick/_edit.html.haml
663
690
  - config/initializers/devise.rb
691
+ - config/initializers/rails_settings_ui.rb
664
692
  - config/initializers/simple_form.rb
665
693
  - config/initializers/simple_form_bootstrap.rb
666
694
  - config/locales/cms.de.yml
@@ -708,8 +736,8 @@ files:
708
736
  - config/locales/views/qbrick/cms/navigation.yml
709
737
  - config/locales/views/qbrick/cms/pages/de.yml
710
738
  - config/locales/views/qbrick/cms/pages/en.yml
711
- - config/locales/views/qbrick/cms/settings_collection/de.yml
712
- - config/locales/views/qbrick/cms/settings_collection/en.yml
739
+ - config/locales/views/qbrick/cms/settings/de.yml
740
+ - config/locales/views/qbrick/cms/settings/en.yml
713
741
  - config/locales/views/qbrick/image_brick/de.yml
714
742
  - config/locales/views/qbrick/image_brick/en.yml
715
743
  - config/locales/views/qbrick/search/de.yml
@@ -746,12 +774,12 @@ files:
746
774
  - db/migrate/23_devise_create_qbrick_admins.rb
747
775
  - db/migrate/24_localize_publish_column.rb
748
776
  - db/migrate/25_rename_qbrick_pages_url_to_path.rb
777
+ - db/migrate/26_change_settings.rb
749
778
  - db/seeds.rb
750
779
  - lib/generators/qbrick/assets/install_generator.rb
751
780
  - lib/generators/qbrick/custom_model_generator.rb
752
781
  - lib/generators/qbrick/translations/add_generator.rb
753
782
  - lib/qbrick.rb
754
- - lib/qbrick/brick_list.rb
755
783
  - lib/qbrick/engine.rb
756
784
  - lib/qbrick/gridded.rb
757
785
  - lib/qbrick/image_uploader_mounting.rb
@@ -777,6 +805,7 @@ files:
777
805
  - spec/command_wrapper_helper.rb
778
806
  - spec/controllers/qbrick/api/pages_controller_spec.rb
779
807
  - spec/controllers/qbrick/cms/pages_controller_spec.rb
808
+ - spec/controllers/qbrick/cms/settings_controller_spec.rb
780
809
  - spec/controllers/qbrick/pages_controller_spec.rb
781
810
  - spec/controllers/qbrick/sitemaps_controller_spec.rb
782
811
  - spec/dummy/Rakefile
@@ -850,7 +879,7 @@ files:
850
879
  - spec/models/page_spec.rb
851
880
  - spec/models/placeholder_brick_spec.rb
852
881
  - spec/models/publish_state_spec.rb
853
- - spec/models/setting_spec.rb
882
+ - spec/models/settings_spec.rb
854
883
  - spec/models/slider_brick_spec.rb
855
884
  - spec/models/text_brick_spec.rb
856
885
  - spec/models/two_column_brick_spec.rb
@@ -894,6 +923,7 @@ test_files:
894
923
  - spec/command_wrapper_helper.rb
895
924
  - spec/controllers/qbrick/api/pages_controller_spec.rb
896
925
  - spec/controllers/qbrick/cms/pages_controller_spec.rb
926
+ - spec/controllers/qbrick/cms/settings_controller_spec.rb
897
927
  - spec/controllers/qbrick/pages_controller_spec.rb
898
928
  - spec/controllers/qbrick/sitemaps_controller_spec.rb
899
929
  - spec/dummy/Rakefile
@@ -967,7 +997,7 @@ test_files:
967
997
  - spec/models/page_spec.rb
968
998
  - spec/models/placeholder_brick_spec.rb
969
999
  - spec/models/publish_state_spec.rb
970
- - spec/models/setting_spec.rb
1000
+ - spec/models/settings_spec.rb
971
1001
  - spec/models/slider_brick_spec.rb
972
1002
  - spec/models/text_brick_spec.rb
973
1003
  - spec/models/two_column_brick_spec.rb
@@ -1,26 +0,0 @@
1
- module Qbrick
2
- module Cms
3
- class SettingsCollectionsController < BackendController
4
- def index
5
- @settings_collections = [
6
- Qbrick::SettingsCollection.find_by(collection_type: 'site'),
7
- Qbrick::SettingsCollection.find_by(collection_type: 'page'),
8
- Qbrick::SettingsCollection.find_by(collection_type: 'global')
9
- ]
10
- end
11
-
12
- def update
13
- @settings_collection = Qbrick::SettingsCollection.find(params[:id])
14
- @settings_collection.update_attributes(settings_collection_params)
15
-
16
- respond_with @settings_collection, location: cms_settings_collections_path
17
- end
18
-
19
- private
20
-
21
- def settings_collection_params
22
- params.require(:settings_collection).permit(settings_attributes: [:value, :id])
23
- end
24
- end
25
- end
26
- end
@@ -1,13 +0,0 @@
1
- module Qbrick
2
- class Setting < ActiveRecord::Base
3
- belongs_to :settings_collection
4
-
5
- default_scope { order('id ASC') }
6
-
7
- class << self
8
- def [](key)
9
- find_by_key(key.to_s).try(:value) || ''
10
- end
11
- end
12
- end
13
- end
@@ -1,10 +0,0 @@
1
- module Qbrick
2
- class SettingsCollection < ActiveRecord::Base
3
- has_many :settings
4
-
5
- accepts_nested_attributes_for :settings
6
-
7
- # TODO: handle localized settings
8
- # TODO: Settings attached to page/etc
9
- end
10
- end
@@ -1,8 +0,0 @@
1
- = simple_form_for settings, url: cms_settings_collection_path(settings), method: :patch, wrapper: :bootstrap, html: { class: 'form-horizontal' } do |f|
2
-
3
- .form-inputs
4
- = f.simple_fields_for :settings do |nf|
5
- = nf.input :value, label: t(".#{nf.object.key}"), as: :string
6
-
7
- .form-actions
8
- = f.button :submit, t('.save')
@@ -1,6 +0,0 @@
1
- - @settings_collections.each do |sc|
2
- - if sc.present?
3
- %h3= "#{sc.collection_type.capitalize} #{t('.title')}"
4
- %hr
5
-
6
- = render 'form', settings: sc
@@ -1,28 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Qbrick
4
- describe Setting, type: :model do
5
- before do
6
- create(:setting)
7
- create(:setting, key: 'stuff', value: nil)
8
- end
9
-
10
- describe '[](key)' do
11
- context 'setting exists' do
12
- it 'returns the set value' do
13
- expect(Setting[:code]).to eq('SomeValue')
14
- end
15
-
16
- it 'returns empty string for empty setting' do
17
- expect(Setting[:stuff]).to eq('')
18
- end
19
- end
20
-
21
- context "setting doesn't exist" do
22
- it 'returns empty string for a call on a non-present setting' do
23
- expect(Setting[:does_not_exist]).to eq('')
24
- end
25
- end
26
- end
27
- end
28
- end