qbrick 2.5.0.pre → 2.5.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.
- checksums.yaml +4 -4
- data/README.md +69 -379
- data/Rakefile +4 -4
- data/app/assets/images/logo.png +0 -0
- data/app/assets/javascripts/{kuhsaft → qbrick}/application.js.coffee +1 -1
- data/app/assets/javascripts/{kuhsaft → qbrick}/cms/application.js.coffee.erb +40 -17
- data/app/assets/javascripts/{kuhsaft → qbrick}/views/read_more_view.js.coffee +0 -0
- data/app/assets/stylesheets/{kuhsaft → qbrick}/application.css.sass +0 -0
- data/app/assets/stylesheets/{kuhsaft → qbrick}/cms/application.css.sass +38 -1
- data/app/assets/stylesheets/{kuhsaft → qbrick}/modules/_text_brick.css.sass +1 -1
- data/app/controllers/{kuhsaft → qbrick}/api/pages_controller.rb +2 -2
- data/app/controllers/qbrick/cms/accounts_controller.rb +28 -0
- data/app/controllers/qbrick/cms/admins_controller.rb +79 -0
- data/app/controllers/{kuhsaft → qbrick}/cms/assets_controller.rb +9 -9
- data/app/controllers/qbrick/cms/backend_controller.rb +25 -0
- data/app/controllers/{kuhsaft → qbrick}/cms/bricks_controller.rb +16 -13
- data/app/controllers/{kuhsaft → qbrick}/cms/ckimages_controller.rb +6 -6
- data/app/controllers/qbrick/cms/pages_controller.rb +87 -0
- data/app/controllers/qbrick/cms/settings_collections_controller.rb +26 -0
- data/app/controllers/{kuhsaft → qbrick}/pages_controller.rb +10 -5
- data/app/controllers/{kuhsaft → qbrick}/sitemaps_controller.rb +3 -3
- data/app/helpers/cms_helper.rb +4 -4
- data/app/helpers/pages_helper.rb +18 -10
- data/app/helpers/{kuhsaft → qbrick}/admin_helper.rb +2 -2
- data/app/helpers/qbrick/cms/admin_helper.rb +73 -0
- data/app/helpers/{kuhsaft → qbrick}/cms/pages_helper.rb +2 -2
- data/app/models/{kuhsaft → qbrick}/accordion_brick.rb +2 -2
- data/app/models/{kuhsaft → qbrick}/accordion_item_brick.rb +1 -1
- data/app/models/qbrick/admin.rb +8 -0
- data/app/models/{kuhsaft → qbrick}/anchor_brick.rb +1 -1
- data/app/models/{kuhsaft → qbrick}/asset.rb +2 -2
- data/app/models/{kuhsaft → qbrick}/asset_brick.rb +2 -2
- data/app/models/{kuhsaft → qbrick}/brick.rb +11 -8
- data/app/models/{kuhsaft → qbrick}/brick_type.rb +1 -1
- data/app/models/{kuhsaft → qbrick}/brick_type_filter.rb +4 -4
- data/app/models/{kuhsaft → qbrick}/ckimage.rb +1 -1
- data/app/models/{kuhsaft → qbrick}/cms.rb +2 -2
- data/app/models/qbrick/cms_model.rb +25 -0
- data/app/models/{kuhsaft → qbrick}/column_brick.rb +2 -2
- data/app/models/{kuhsaft → qbrick}/image_brick.rb +2 -2
- data/app/models/{kuhsaft → qbrick}/image_size.rb +3 -3
- data/app/models/{kuhsaft → qbrick}/link_brick.rb +1 -1
- data/app/models/{kuhsaft → qbrick}/page.rb +78 -17
- data/app/models/{kuhsaft → qbrick}/page_type.rb +3 -2
- data/app/models/{kuhsaft → qbrick}/partition.rb +1 -1
- data/app/models/{kuhsaft → qbrick}/placeholder_brick.rb +4 -4
- data/app/models/{kuhsaft → qbrick}/publish_state.rb +1 -1
- data/app/models/qbrick/setting.rb +13 -0
- data/app/models/qbrick/settings_collection.rb +10 -0
- data/app/models/{kuhsaft → qbrick}/slider_brick.rb +3 -3
- data/app/models/{kuhsaft → qbrick}/text_brick.rb +1 -1
- data/app/models/{kuhsaft → qbrick}/two_column_brick.rb +2 -2
- data/app/models/{kuhsaft → qbrick}/video_brick.rb +1 -1
- data/app/uploaders/qbrick/asset_brick_asset_uploader.rb +26 -0
- data/app/uploaders/{kuhsaft → qbrick}/asset_uploader.rb +3 -2
- data/app/uploaders/{kuhsaft → qbrick}/ckimage_uploader.rb +1 -1
- data/app/uploaders/{kuhsaft → qbrick}/image_brick_image_uploader.rb +4 -4
- data/app/views/devise/confirmations/new.html.haml +10 -0
- data/app/views/devise/mailer/confirmation_instructions.html.haml +4 -0
- data/app/views/devise/mailer/reset_password_instructions.html.haml +6 -0
- data/app/views/devise/mailer/unlock_instructions.html.haml +5 -0
- data/app/views/devise/passwords/edit.html.haml +10 -0
- data/app/views/devise/passwords/new.html.haml +8 -0
- data/app/views/devise/registrations/edit.html.haml +9 -0
- data/app/views/devise/registrations/new.html.haml +21 -0
- data/app/views/devise/sessions/new.html.haml +12 -0
- data/app/views/devise/shared/_links.html.haml +19 -0
- data/app/views/devise/unlocks/new.html.haml +10 -0
- data/app/views/layouts/devise.html.haml +16 -0
- data/app/views/layouts/{kuhsaft → qbrick}/cms/application.html.haml +4 -5
- data/app/views/layouts/qbrick/cms/ckimages.html.haml +18 -0
- data/app/views/{kuhsaft → qbrick}/accordion_bricks/_accordion_brick.html.haml +0 -0
- data/app/views/{kuhsaft → qbrick}/accordion_bricks/accordion_brick/_edit.html.haml +0 -0
- data/app/views/{kuhsaft → qbrick}/accordion_item_bricks/_accordion_item_brick.html.haml +0 -0
- data/app/views/{kuhsaft → qbrick}/accordion_item_bricks/accordion_item_brick/_edit.html.haml +0 -0
- data/app/views/{kuhsaft → qbrick}/anchor_bricks/_anchor_brick.html.haml +0 -0
- data/app/views/{kuhsaft → qbrick}/anchor_bricks/anchor_brick/_edit.html.haml +0 -0
- data/app/views/{kuhsaft → qbrick}/asset_bricks/_asset_brick.html.haml +0 -0
- data/app/views/{kuhsaft → qbrick}/asset_bricks/asset_brick/_edit.html.haml +1 -1
- data/app/views/qbrick/cms/accounts/edit.html.haml +12 -0
- data/app/views/qbrick/cms/admins/_form.html.haml +10 -0
- data/app/views/qbrick/cms/admins/edit.html.haml +5 -0
- data/app/views/qbrick/cms/admins/index.html.haml +26 -0
- data/app/views/qbrick/cms/admins/new.html.haml +5 -0
- data/app/views/{kuhsaft → qbrick}/cms/assets/_form.html.haml +0 -0
- data/app/views/{kuhsaft → qbrick}/cms/assets/_list.html.haml +0 -0
- data/app/views/{kuhsaft → qbrick}/cms/assets/edit.html.haml +0 -0
- data/app/views/qbrick/cms/assets/index.html.haml +3 -0
- data/app/views/{kuhsaft → qbrick}/cms/assets/new.html.haml +0 -0
- data/app/views/qbrick/cms/backend/_brick_clone_menu.html.haml +16 -0
- data/app/views/qbrick/cms/backend/_brick_type_dropdown.html.haml +15 -0
- data/app/views/{kuhsaft/cms/admin → qbrick/cms/backend}/_empty_state.html.haml +0 -0
- data/app/views/{kuhsaft/cms/admin → qbrick/cms/backend}/_flash.html.haml +0 -0
- data/app/views/qbrick/cms/backend/_main_navigation.html.haml +20 -0
- data/app/views/{kuhsaft → qbrick}/cms/bricks/_brick_header.html.haml +4 -4
- data/app/views/{kuhsaft → qbrick}/cms/bricks/_brick_item.html.haml +6 -5
- data/app/views/{kuhsaft → qbrick}/cms/bricks/_brick_list.html.haml +1 -1
- data/app/views/{kuhsaft → qbrick}/cms/bricks/_new.html.haml +3 -3
- data/app/views/{kuhsaft → qbrick}/cms/bricks/_sort_form.html.haml +0 -0
- data/app/views/{kuhsaft → qbrick}/cms/bricks/create.js.erb +1 -1
- data/app/views/{kuhsaft → qbrick}/cms/bricks/destroy.js.erb +0 -0
- data/app/views/{kuhsaft → qbrick}/cms/bricks/new.js.erb +1 -1
- data/app/views/{kuhsaft → qbrick}/cms/bricks/update.js.erb +1 -1
- data/app/views/{kuhsaft → qbrick}/cms/ckimages/create.html.haml +0 -0
- data/app/views/{kuhsaft → qbrick}/cms/ckimages/destroy.js.erb +0 -0
- data/app/views/{kuhsaft → qbrick}/cms/ckimages/index.html.haml +1 -1
- data/app/views/{kuhsaft → qbrick}/cms/pages/_branch.html.haml +4 -4
- data/app/views/{kuhsaft → qbrick}/cms/pages/_form.html.haml +15 -6
- data/app/views/qbrick/cms/pages/_mirror_modal.html.haml +52 -0
- data/app/views/qbrick/cms/pages/edit.html.haml +16 -0
- data/app/views/{kuhsaft → qbrick}/cms/pages/index.html.haml +1 -1
- data/app/views/qbrick/cms/pages/mirror.js.haml +5 -0
- data/app/views/qbrick/cms/pages/new.html.haml +1 -0
- data/app/views/{kuhsaft → qbrick}/cms/pages/show.html.haml +0 -0
- data/app/views/{kuhsaft → qbrick}/cms/pages/sort.js.erb +0 -0
- data/app/views/qbrick/cms/settings_collections/_form.html.haml +8 -0
- data/app/views/qbrick/cms/settings_collections/index.html.haml +6 -0
- data/app/views/{kuhsaft → qbrick}/column_bricks/_column_brick.html.haml +0 -0
- data/app/views/{kuhsaft → qbrick}/column_bricks/column_brick/_edit.html.haml +0 -0
- data/app/views/{kuhsaft → qbrick}/image_bricks/_image_brick.html.haml +0 -0
- data/app/views/{kuhsaft → qbrick}/image_bricks/image_brick/_edit.html.haml +1 -1
- data/app/views/{kuhsaft → qbrick}/link_bricks/_link_brick.html.haml +0 -0
- data/app/views/{kuhsaft → qbrick}/link_bricks/link_brick/_edit.html.haml +1 -1
- data/app/views/{kuhsaft → qbrick}/pages/index.html.haml +2 -2
- data/app/views/{kuhsaft → qbrick}/pages/show.html.haml +2 -0
- data/app/views/{kuhsaft → qbrick}/placeholder_bricks/_placeholder_brick.html.haml +0 -0
- data/app/views/qbrick/placeholder_bricks/placeholder_brick/_edit.html.haml +1 -0
- data/app/views/{kuhsaft → qbrick}/search/_form.html.haml +0 -0
- data/app/views/{kuhsaft → qbrick}/search/_results.html.haml +2 -2
- data/app/views/{kuhsaft → qbrick}/search/_results_entry.html.haml +1 -1
- data/app/views/{kuhsaft → qbrick}/sitemaps/index.xml.haml +0 -0
- data/app/views/{kuhsaft → qbrick}/slider_bricks/_slider_brick.html.haml +0 -0
- data/app/views/{kuhsaft → qbrick}/slider_bricks/slider_brick/_edit.html.haml +0 -0
- data/app/views/{kuhsaft → qbrick}/text_bricks/_text_brick.html.haml +0 -0
- data/app/views/{kuhsaft → qbrick}/text_bricks/text_brick/_edit.html.haml +0 -0
- data/app/views/{kuhsaft → qbrick}/two_column_bricks/_two_column_brick.html.haml +1 -1
- data/app/views/qbrick/two_column_bricks/two_column_brick/_childs.html.haml +5 -0
- data/app/views/qbrick/two_column_bricks/two_column_brick/_edit.html.haml +1 -0
- data/app/views/{kuhsaft → qbrick}/video_bricks/_video_brick.html.haml +2 -2
- data/app/views/{kuhsaft → qbrick}/video_bricks/video_brick/_edit.html.haml +1 -1
- data/config/initializers/devise.rb +259 -0
- data/config/locales/cms.de.yml +11 -0
- data/config/locales/cms.en.yml +11 -0
- data/config/locales/devise.en.yml +60 -0
- data/config/locales/models/qbrick/accordion_brick/de.yml +4 -0
- data/config/locales/models/qbrick/accordion_brick/en.yml +4 -0
- data/config/locales/models/qbrick/accordion_item_brick/de.yml +7 -0
- data/config/locales/models/qbrick/accordion_item_brick/en.yml +7 -0
- data/config/locales/models/qbrick/admin/de.yml +13 -0
- data/config/locales/models/qbrick/admin/en.yml +13 -0
- data/config/locales/models/{kuhsaft → qbrick}/anchor_brick/de.yml +2 -2
- data/config/locales/models/{kuhsaft → qbrick}/anchor_brick/en.yml +2 -2
- data/config/locales/models/{kuhsaft → qbrick}/asset_brick/de.yml +2 -2
- data/config/locales/models/{kuhsaft → qbrick}/asset_brick/en.yml +2 -2
- data/config/locales/models/{kuhsaft → qbrick}/brick/de.yml +1 -1
- data/config/locales/models/{kuhsaft → qbrick}/brick/en.yml +1 -1
- data/config/locales/models/qbrick/column_brick/de.yml +4 -0
- data/config/locales/models/qbrick/column_brick/en.yml +4 -0
- data/config/locales/models/{kuhsaft → qbrick}/image_brick/de.yml +2 -2
- data/config/locales/models/{kuhsaft → qbrick}/image_brick/en.yml +2 -2
- data/config/locales/models/{kuhsaft → qbrick}/image_size/de.yml +2 -2
- data/config/locales/models/{kuhsaft → qbrick}/image_size/en.yml +2 -2
- data/config/locales/models/{kuhsaft → qbrick}/link_brick/de.yml +2 -2
- data/config/locales/models/{kuhsaft → qbrick}/link_brick/en.yml +2 -2
- data/config/locales/models/{kuhsaft → qbrick}/page/de.yml +2 -2
- data/config/locales/models/{kuhsaft → qbrick}/page/en.yml +3 -2
- data/config/locales/models/{kuhsaft → qbrick}/placeholder_brick/de.yml +2 -2
- data/config/locales/models/{kuhsaft → qbrick}/placeholder_brick/en.yml +2 -2
- data/config/locales/models/qbrick/slider_brick/de.yml +4 -0
- data/config/locales/models/qbrick/slider_brick/en.yml +4 -0
- data/config/locales/models/{kuhsaft → qbrick}/text_brick/de.yml +2 -2
- data/config/locales/models/{kuhsaft → qbrick}/text_brick/en.yml +2 -2
- data/config/locales/models/qbrick/two_column_brick/de.yml +7 -0
- data/config/locales/models/qbrick/two_column_brick/en.yml +7 -0
- data/config/locales/models/{kuhsaft → qbrick}/video_brick/de.yml +2 -2
- data/config/locales/models/{kuhsaft → qbrick}/video_brick/en.yml +2 -2
- data/config/locales/views/qbrick/cms/admin/de.yml +36 -0
- data/config/locales/views/{kuhsaft → qbrick}/cms/admin/en.yml +1 -1
- data/config/locales/views/{kuhsaft → qbrick}/cms/bricks/de.yml +1 -1
- data/config/locales/views/{kuhsaft → qbrick}/cms/bricks/en.yml +1 -1
- data/config/locales/views/qbrick/cms/navigation.yml +8 -0
- data/config/locales/views/{kuhsaft → qbrick}/cms/pages/de.yml +14 -1
- data/config/locales/views/{kuhsaft → qbrick}/cms/pages/en.yml +1 -1
- data/config/locales/views/qbrick/cms/settings_collection/de.yml +14 -0
- data/config/locales/views/qbrick/cms/settings_collection/en.yml +14 -0
- data/config/locales/views/{kuhsaft → qbrick}/image_brick/de.yml +1 -1
- data/config/locales/views/{kuhsaft → qbrick}/image_brick/en.yml +1 -1
- data/config/locales/views/{kuhsaft → qbrick}/search/de.yml +1 -1
- data/config/locales/views/{kuhsaft → qbrick}/search/en.yml +1 -1
- data/config/locales/views/{kuhsaft → qbrick}/text_brick/de.yml +1 -1
- data/config/locales/views/{kuhsaft → qbrick}/text_brick/en.yml +1 -1
- data/config/locales/views/{kuhsaft → qbrick}/video_brick/de.yml +1 -1
- data/config/locales/views/{kuhsaft → qbrick}/video_brick/en.yml +1 -1
- data/config/routes.rb +14 -2
- data/db/migrate/{01_create_kuhsaft_pages.rb → 01_create_qbrick_pages.rb} +5 -5
- data/db/migrate/{02_create_kuhsaft_bricks.rb → 02_create_qbrick_bricks.rb} +3 -3
- data/db/migrate/03_create_qbrick_brick_types.rb +12 -0
- data/db/migrate/04_create_qbrick_assets.rb +10 -0
- data/db/migrate/05_remove_cms_admin.rb +3 -3
- data/db/migrate/06_add_template_name_to_qbrick_bricks.rb +7 -0
- data/db/migrate/07_add_default_value_to_brick_type_enabled.rb +2 -2
- data/db/migrate/08_add_display_styles_to_bricks.rb +1 -1
- data/db/migrate/09_add_additional_fields_to_qbrick_bricks.rb +6 -0
- data/db/migrate/10_add_redirect_url_to_qbrick_pages.rb +7 -0
- data/db/migrate/11_update_url_and_redirect_url_value.rb +2 -2
- data/db/migrate/12_regenerate_fulltext.rb +1 -1
- data/db/migrate/13_add_page_title_to_pages.rb +1 -1
- data/db/migrate/14_move_qbrick_assets.rb +22 -0
- data/db/migrate/15_add_alt_text_to_bricks.rb +1 -1
- data/db/migrate/16_update_default_value_for_page_type.rb +2 -2
- data/db/migrate/17_set_page_type_to_content_for_empty_fields.rb +2 -2
- data/db/migrate/18_add_identifier_to_qbrick_pages.rb +6 -0
- data/db/migrate/19_add_col_count_to_bricks.rb +1 -1
- data/db/migrate/20_create_qbrick_ckimages.rb +9 -0
- data/db/migrate/21_add_google_verification_key_to_qbrick_pages.rb +5 -0
- data/db/migrate/22_create_settings.rb +15 -0
- data/db/migrate/22_create_settings_collections.rb +11 -0
- data/db/migrate/23_add_metadata_to_asset.rb +6 -0
- data/db/migrate/23_devise_create_qbrick_admins.rb +42 -0
- data/db/seeds.rb +36 -13
- data/lib/generators/{kuhsaft → qbrick}/assets/install_generator.rb +5 -5
- data/lib/generators/qbrick/custom_model_generator.rb +117 -0
- data/lib/generators/{kuhsaft → qbrick}/translations/add_generator.rb +4 -4
- data/lib/qbrick.rb +24 -0
- data/lib/{kuhsaft → qbrick}/brick_list.rb +3 -3
- data/lib/{kuhsaft → qbrick}/engine.rb +5 -5
- data/lib/{kuhsaft → qbrick}/gridded.rb +1 -1
- data/lib/{kuhsaft → qbrick}/image_uploader_mounting.rb +2 -2
- data/lib/{kuhsaft → qbrick}/orderable.rb +1 -1
- data/lib/{kuhsaft → qbrick}/page_tree.rb +1 -1
- data/lib/{kuhsaft → qbrick}/partial_extractor.rb +1 -1
- data/lib/{kuhsaft → qbrick}/searchable.rb +5 -3
- data/lib/{kuhsaft → qbrick}/touch_placeholders.rb +4 -4
- data/lib/{kuhsaft → qbrick}/translatable.rb +1 -1
- data/lib/qbrick/version.rb +3 -0
- data/lib/tasks/{kuhsaft_tasks.rake → qbrick_tasks.rake} +5 -5
- data/lib/templates/{kuhsaft → qbrick}/assets/ck-config.js.coffee +0 -0
- data/lib/templates/{kuhsaft → qbrick}/assets/customizations.css.sass +0 -0
- data/lib/templates/{kuhsaft → qbrick}/assets/customizations.js.coffee +0 -0
- data/lib/templates/qbrick/custom_model_generator/base_controller.rb +17 -0
- data/lib/templates/qbrick/custom_model_generator/inherited_views/base/_form.html.haml +12 -0
- data/lib/templates/qbrick/custom_model_generator/inherited_views/base/edit.html.haml +5 -0
- data/lib/templates/qbrick/custom_model_generator/inherited_views/base/index.html.haml +28 -0
- data/lib/templates/qbrick/custom_model_generator/inherited_views/base/new.html.haml +5 -0
- data/lib/templates/qbrick/custom_model_generator/translations/qbrick_base.yml +11 -0
- data/lib/templates/qbrick/custom_model_generator/translations/resource.yml.erb +14 -0
- data/lib/templates/qbrick/translations/add_translation.erb +8 -0
- data/spec/command_wrapper_helper.rb +21 -0
- data/spec/controllers/{kuhsaft → qbrick}/api/pages_controller_spec.rb +5 -5
- data/spec/controllers/qbrick/cms/pages_controller_spec.rb +61 -0
- data/spec/controllers/{kuhsaft → qbrick}/pages_controller_spec.rb +11 -13
- data/spec/controllers/{kuhsaft → qbrick}/sitemaps_controller_spec.rb +2 -2
- data/spec/dummy/app/assets/javascripts/{kuhsaft → qbrick}/cms/ck-config.js.coffee +0 -0
- data/spec/dummy/app/assets/javascripts/{kuhsaft → qbrick}/cms/customizations.js.coffee +0 -0
- data/spec/dummy/app/assets/stylesheets/{kuhsaft → qbrick}/cms/customizations.css.sass +0 -0
- data/spec/dummy/app/controllers/application_controller.rb +1 -1
- data/spec/dummy/config/application.rb +3 -2
- data/spec/dummy/config/database.yml +2 -2
- data/spec/dummy/config/environments/production.rb +2 -2
- data/spec/dummy/config/environments/test.rb +1 -1
- data/spec/dummy/config/initializers/{kuhsaft.rb → qbrick.rb} +1 -1
- data/spec/dummy/config/routes.rb +4 -1
- data/spec/factories.rb +24 -9
- data/spec/features/administrator_management_spec.rb +70 -0
- data/spec/features/cms_pages_spec.rb +15 -11
- data/spec/features/search_spec.rb +15 -15
- data/spec/features_helper.rb +36 -0
- data/spec/generators/custom_model_generator_spec.rb +83 -0
- data/spec/helpers/{kuhsaft → qbrick}/cms/admin_helper_spec.rb +5 -5
- data/spec/helpers/{kuhsaft → qbrick}/cms/pages_helper_spec.rb +6 -6
- data/spec/helpers/{kuhsaft → qbrick}/pages_helper_spec.rb +4 -5
- data/spec/lib/brick_list_spec.rb +12 -11
- data/spec/lib/engine_spec.rb +5 -9
- data/spec/lib/gridded_spec.rb +4 -5
- data/spec/lib/image_uploader_mounting_spec.rb +3 -4
- data/spec/lib/page_tree_spec.rb +5 -5
- data/spec/lib/searchable_spec.rb +7 -8
- data/spec/lib/touch_placeholders_spec.rb +4 -5
- data/spec/lib/translatable_spec.rb +20 -20
- data/spec/models/accordion_brick_spec.rb +7 -8
- data/spec/models/accordion_item_brick_spec.rb +8 -9
- data/spec/models/anchor_brick_spec.rb +5 -6
- data/spec/models/asset_brick_spec.rb +8 -9
- data/spec/models/asset_spec.rb +9 -11
- data/spec/models/brick_spec.rb +34 -34
- data/spec/models/brick_type_filter_spec.rb +14 -14
- data/spec/models/column_brick_spec.rb +6 -7
- data/spec/models/image_brick_spec.rb +9 -10
- data/spec/models/image_size_spec.rb +8 -8
- data/spec/models/link_brick_spec.rb +9 -10
- data/spec/models/page_spec.rb +113 -73
- data/spec/models/placeholder_brick_spec.rb +12 -13
- data/spec/models/publish_state_spec.rb +7 -7
- data/spec/models/setting_spec.rb +28 -0
- data/spec/models/slider_brick_spec.rb +5 -6
- data/spec/models/text_brick_spec.rb +5 -5
- data/spec/models/two_column_brick_spec.rb +14 -15
- data/spec/models/video_brick_spec.rb +5 -6
- data/spec/postgres_helper.rb +66 -0
- data/spec/{kuhsaft_spec.rb → qbrick_spec.rb} +2 -2
- data/spec/spec_helper.rb +23 -10
- data/spec/support/{kuhsaft_spec_helper.rb → qbrick_spec_helper.rb} +1 -1
- data/spec/support/write_expectation.rb +2 -2
- data/spec/views/{kuhsaft → qbrick}/sitemaps/index.xml.haml_spec.rb +3 -3
- metadata +451 -330
- data/app/controllers/kuhsaft/cms/admin_controller.rb +0 -18
- data/app/controllers/kuhsaft/cms/pages_controller.rb +0 -71
- data/app/helpers/kuhsaft/cms/admin_helper.rb +0 -21
- data/app/uploaders/kuhsaft/asset_brick_asset_uploader.rb +0 -43
- data/app/views/kuhsaft/cms/admin/_brick_type_dropdown.html.haml +0 -14
- data/app/views/kuhsaft/cms/admin/_content_language_switch.html.haml +0 -7
- data/app/views/kuhsaft/cms/admin/_main_navigation.html.haml +0 -6
- data/app/views/kuhsaft/cms/assets/index.html.haml +0 -3
- data/app/views/kuhsaft/cms/pages/edit.html.haml +0 -16
- data/app/views/kuhsaft/cms/pages/new.html.haml +0 -1
- data/app/views/kuhsaft/placeholder_bricks/placeholder_brick/_edit.html.haml +0 -1
- data/app/views/kuhsaft/two_column_bricks/two_column_brick/_childs.html.haml +0 -5
- data/app/views/kuhsaft/two_column_bricks/two_column_brick/_edit.html.haml +0 -1
- data/app/views/layouts/kuhsaft/cms/ckimages.html.haml +0 -18
- data/config/locales/models/kuhsaft/accordion_brick/de.yml +0 -4
- data/config/locales/models/kuhsaft/accordion_brick/en.yml +0 -4
- data/config/locales/models/kuhsaft/accordion_item_brick/de.yml +0 -7
- data/config/locales/models/kuhsaft/accordion_item_brick/en.yml +0 -7
- data/config/locales/models/kuhsaft/column_brick/de.yml +0 -4
- data/config/locales/models/kuhsaft/column_brick/en.yml +0 -4
- data/config/locales/models/kuhsaft/slider_brick/de.yml +0 -4
- data/config/locales/models/kuhsaft/slider_brick/en.yml +0 -4
- data/config/locales/models/kuhsaft/two_column_brick/de.yml +0 -7
- data/config/locales/models/kuhsaft/two_column_brick/en.yml +0 -7
- data/config/locales/views/kuhsaft/cms/admin/de.yml +0 -13
- data/db/migrate/03_create_kuhsaft_brick_types.rb +0 -12
- data/db/migrate/04_create_kuhsaft_assets.rb +0 -10
- data/db/migrate/06_add_template_name_to_kuhsaft_bricks.rb +0 -7
- data/db/migrate/09_add_additional_fields_to_kuhsaft_bricks.rb +0 -6
- data/db/migrate/10_add_redirect_url_to_kuhsaft_pages.rb +0 -7
- data/db/migrate/14_move_kuhsaft_assets.rb +0 -22
- data/db/migrate/18_add_identifier_to_kuhsaft_pages.rb +0 -6
- data/db/migrate/20_create_kuhsaft_ckimages.rb +0 -9
- data/lib/kuhsaft.rb +0 -22
- data/lib/kuhsaft/version.rb +0 -3
- data/lib/templates/kuhsaft/translations/add_translation.erb +0 -8
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: cbc6383e5dcb546e55e7bb7ee0031c30fe1444a1
|
|
4
|
+
data.tar.gz: df58035ffe10022dd61d3b3125428cb2d7d9e37e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f5b3d0e6dc9aecc3ab98fca0292822f41e26cdde76f34a28f16522164bc7fb850f66f2c9c027ca915223aadeb2f763808316b0901a4b794b07234690c499f2c9
|
|
7
|
+
data.tar.gz: aac7dffced31342c8a6fd4afded9f15eeb5dfb874138840ec0fa4197734b796c887c4d41700e70e0dd720d0031eb34bf64cedd1642e6a507c79b5cac87337d77
|
data/README.md
CHANGED
|
@@ -1,423 +1,113 @@
|
|
|
1
|
-
[](https://travis-ci.org/screenconcept/qbrick)
|
|
2
|
+
[](https://codeclimate.com/github/screenconcept/qbrick)
|
|
3
|
+
[](http://badge.fury.io/rb/qbrick)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+

|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
# qBrick - The Ruby on Rails CMS you want
|
|
8
9
|
|
|
9
|
-
|
|
10
|
-
fiddling with unusable content management sytems. We are trying hard to make a
|
|
11
|
-
minimalistic and developer friendly CMS. Our goal is to provide a system for
|
|
12
|
-
ourselves and our customers that makes the of-the-shelf website project a
|
|
13
|
-
hasslefree thing. On one side easy to set up, integrate and customize (good for
|
|
14
|
-
devs) on the other hand it should be easily usable by anyone.
|
|
10
|
+
*Formerly known as: Kuhsaft*
|
|
15
11
|
|
|
16
|
-
|
|
12
|
+
**qBrick is currently undergoing rapid changes as we are ramping up for
|
|
13
|
+
our first official release under the new name. Until 2.5 is out, expect
|
|
14
|
+
things to break.**
|
|
17
15
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
qBrick started as a side project of the Screen Concept team as we got
|
|
17
|
+
tired of fiddling with unusable content management systems. By following
|
|
18
|
+
common rails practices and not being to opinionated, qBirck aims to be a
|
|
19
|
+
plug and play CMS Engine that does not stand in your way or dictates how you
|
|
20
|
+
have to build your Rails application, while still providing some
|
|
21
|
+
sensible defaults and the basic functionality you would expect form a
|
|
22
|
+
CMS system.
|
|
21
23
|
|
|
22
|
-
#
|
|
24
|
+
# Dependencies
|
|
23
25
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
* A Rails 4 app to be integrated into
|
|
26
|
+
* A Rails 4 application
|
|
27
27
|
* ImageMagick
|
|
28
28
|
* An ActiveRecord compatible DB
|
|
29
29
|
|
|
30
30
|
# Installation
|
|
31
31
|
|
|
32
|
-
Add
|
|
33
|
-
|
|
34
|
-
gem 'kuhsaft'
|
|
32
|
+
Add it to your Gemfile:
|
|
35
33
|
|
|
36
|
-
|
|
34
|
+
```ruby
|
|
35
|
+
gem 'qbrick', '2.5.0.pre'
|
|
36
|
+
```
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
Run the following command to install it:
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
```console
|
|
41
|
+
bundle install
|
|
42
|
+
```
|
|
41
43
|
|
|
42
44
|
Then install the assets and the migrations and run them:
|
|
43
45
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
Mount the kuhsaft engine in your routing file:
|
|
52
|
-
|
|
53
|
-
MyApp::Application.routes.draw do
|
|
54
|
-
# add your app routes here
|
|
55
|
-
mount Kuhsaft::Engine => "/"
|
|
56
|
-
end
|
|
46
|
+
```console
|
|
47
|
+
rake qbrick:install:migrations
|
|
48
|
+
rake db:migrate
|
|
49
|
+
rake db:seed
|
|
50
|
+
rails generate qbrick:assets:install
|
|
51
|
+
```
|
|
57
52
|
|
|
58
|
-
Load the
|
|
53
|
+
Load the Qbrick assets into your app, so you have working grids, widgets etc:
|
|
59
54
|
|
|
60
|
-
|
|
61
|
-
|
|
55
|
+
```sass
|
|
56
|
+
# application.css.sass
|
|
57
|
+
@import 'qbrick/application'
|
|
58
|
+
```
|
|
62
59
|
|
|
63
|
-
|
|
64
|
-
|
|
60
|
+
```coffee
|
|
61
|
+
# application.js.coffee
|
|
62
|
+
//= require 'qbrick/application'
|
|
63
|
+
```
|
|
65
64
|
|
|
66
|
-
|
|
65
|
+
Also, you need to define the image sizes for the image brick or use
|
|
67
66
|
the defaults:
|
|
68
67
|
|
|
69
|
-
# your_app/config/initializers/kuhsaft.rb
|
|
70
|
-
Rails.application.config.to_prepare do
|
|
71
|
-
Kuhsaft::Engine.configure do
|
|
72
|
-
config.image_sizes.build_defaults! # creates 960x540 and 320x180 sizes
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
See "Configuring the image brick" for more details.
|
|
77
|
-
|
|
78
|
-
## Authentication
|
|
79
|
-
|
|
80
|
-
Kuhsaft itself does not ship with any form of authentication. However, it is fairly easy to add by plugging into the Kuhsaft::Cms::AdminController. An example with devise:
|
|
81
|
-
|
|
82
68
|
```ruby
|
|
83
|
-
# config/initializers/
|
|
69
|
+
# your_app/config/initializers/qbrick.rb
|
|
84
70
|
Rails.application.config.to_prepare do
|
|
85
|
-
|
|
86
|
-
|
|
71
|
+
Qbrick::Engine.configure do
|
|
72
|
+
config.image_sizes.build_defaults! # creates 960x540 and 320x180 sizes
|
|
87
73
|
end
|
|
88
74
|
end
|
|
89
75
|
```
|
|
90
76
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
## Extending the backend CSS/javascript
|
|
94
|
-
Kuhsaft installs a sass file in `assets/stylesheets/kuhsaft/cms/customizations.css.sass` and a coffeescript file in `assets/javascripts/kuhsaft/cms/customizations.js.coffee` which are loaded by the backend layout. Those files can be installed by running `rails generate kuhsaft:assets:install`.
|
|
95
|
-
|
|
96
|
-
Make sure they are in the `config.assets.precompile` array in environments like production where you usually precompile the assets. The generator will only add the necessary configs for the production env!
|
|
97
|
-
|
|
98
|
-
## Testing
|
|
99
|
-
|
|
100
|
-
There's a dummy app inside spec/dummy. Get it running by executing the following steps:
|
|
101
|
-
|
|
102
|
-
```
|
|
103
|
-
rake setup
|
|
104
|
-
rake start_dummy
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
# Usage
|
|
108
|
-
|
|
109
|
-
## Making Kuhsaft helpers available to your app
|
|
110
|
-
|
|
111
|
-
As defined in the rails docs, load the helpers from our isolated Kuhsaft engine inside your application controller:
|
|
112
|
-
|
|
113
|
-
class ApplicationController < ActionController::Base
|
|
114
|
-
helper Kuhsaft::Engine.helpers
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
## Adding sublime video
|
|
118
|
-
|
|
119
|
-
Create an initializer file in your app inside `config/initializers` and set the `sublime_video_token`:
|
|
120
|
-
|
|
121
|
-
Rails.application.config.to_prepare do
|
|
122
|
-
Kuhsaft::Engine.configure do
|
|
123
|
-
# Get the token from the MySites section on the sublime video site
|
|
124
|
-
config.sublime_video_token = '123abcd'
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
Require the sublime javascript with the following helper:
|
|
129
|
-
|
|
130
|
-
# in your application layout in the head section
|
|
131
|
-
sublime_video_include_tag
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
## Configuring the image brick
|
|
135
|
-
|
|
136
|
-
The image brick can process uploaded images into specific sizes. These sizes can be configured inside the engine configuration. You can also use the built-in default sizes:
|
|
137
|
-
|
|
138
|
-
# your_app/config/initializers/kuhsaft.rb
|
|
139
|
-
Rails.application.config.to_prepare do
|
|
140
|
-
Kuhsaft::Engine.configure do
|
|
141
|
-
config.image_sizes.build_defaults! # creates 960x540 and 320x180 sizes
|
|
142
|
-
end
|
|
143
|
-
end
|
|
144
|
-
|
|
145
|
-
You can also remove the default sizes:
|
|
146
|
-
|
|
147
|
-
# your_app/config/initializers/kuhsaft.rb
|
|
148
|
-
Rails.application.config.to_prepare do
|
|
149
|
-
Kuhsaft::Engine.configure do
|
|
150
|
-
config.image_sizes.clear! # .all is now empty
|
|
151
|
-
end
|
|
152
|
-
end
|
|
153
|
-
|
|
154
|
-
And most importantly, you can add custom sizes:
|
|
155
|
-
|
|
156
|
-
# your_app/config/initializers/kuhsaft.rb
|
|
157
|
-
Rails.application.config.to_prepare do
|
|
158
|
-
Kuhsaft::Engine.configure do
|
|
159
|
-
config.image_sizes.add(:side_box_vertical, 180, 460)
|
|
160
|
-
config.image_sizes.add(:footer_teaser, 320, 220)
|
|
161
|
-
end
|
|
162
|
-
end
|
|
163
|
-
|
|
164
|
-
The `name` option is a unique identifier, which is also used for translating the dropdown in the brick. You can add your translation by using the translation path:
|
|
165
|
-
|
|
166
|
-
activerecord.attributes.kuhsaft/image_size.sizes.#{name}
|
|
167
|
-
|
|
168
|
-
## Configuring custom styles for bricks
|
|
169
|
-
|
|
170
|
-
Implement the `available_display_styles` on a brick model and return an array of css classnames: `['module-big', 'module-small']`. These styles can be applied to a brick instance through the UI. In the frontend, use `to_style_class` to get the configured styles:
|
|
171
|
-
|
|
172
|
-
%my-brick{ :class => brick.to_style_class}
|
|
173
|
-
= brick.text # ... etc
|
|
174
|
-
|
|
175
|
-
After setting up display styles in specific model add your translations
|
|
176
|
-
for the UI dropdown. E.g. you've added display styles to the TextBrick model:
|
|
177
|
-
|
|
178
|
-
```
|
|
179
|
-
de:
|
|
180
|
-
text_brick:
|
|
181
|
-
display_styles:
|
|
182
|
-
style1: 'My Style 1'
|
|
183
|
-
style2: 'My Style 2'
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
## Configuring Grid settings for Bricks
|
|
187
|
-
|
|
188
|
-
Include the Kuhsaft::Gridded Module on every Brick you want to display in a grid. Default grid options are 1 to 12 (representing columns) wich can be configured via the class method `available_grid_sizes` (should return an array of integers).
|
|
189
|
-
Each instance of a gridded class will have a method `gridded?` wich returns true if a column size is set.
|
|
190
|
-
|
|
191
|
-
If the Gridded Module is added to a Custom Brick, it should provide a col_count integer field with default value 0.
|
|
192
|
-
|
|
193
|
-
```
|
|
194
|
-
add_column :your_awesome_brick, :col_count, :integer, default: 0
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
## Adding custom templates with placeholder bricks
|
|
198
|
-
|
|
199
|
-
* Save your partial in `views/kuhsaft/placeholder_bricks/partials/_your_partial.html.haml`
|
|
200
|
-
* Add translations for your partial in `config/locales/models/kuhsaft/placeholder_brick/locale.yml`
|
|
201
|
-
|
|
202
|
-
```
|
|
203
|
-
de:
|
|
204
|
-
your_partial: Your Partial
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
## Invalidating placeholder bricks containing other models on model changes
|
|
208
|
-
|
|
209
|
-
Include the TouchPlaceholders module if your model is used within a
|
|
210
|
-
placeholder brick and define which templates it appears in:
|
|
77
|
+
If you would like to use the qBrick helpers in your app, include them in
|
|
78
|
+
your application controller:
|
|
211
79
|
|
|
212
80
|
```ruby
|
|
213
|
-
class
|
|
214
|
-
|
|
215
|
-
placeholder_templates 'some_template', 'some_other_template'
|
|
81
|
+
class ApplicationController < ActionController::Base
|
|
82
|
+
helper Qbrick::Engine.helpers
|
|
216
83
|
end
|
|
217
84
|
```
|
|
218
85
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
If you want to translate your pages into another language, generate a new translation migration:
|
|
222
|
-
|
|
223
|
-
# translate your pages into french
|
|
224
|
-
rails g kuhsaft:translations:add fr
|
|
225
|
-
Or
|
|
226
|
-
|
|
227
|
-
# translate your pages into swiss german
|
|
228
|
-
rails g kuhsaft:translations:add de-CH
|
|
229
|
-
|
|
230
|
-
This creates a new migration file inside `db/migrate` of your app. Run the migration as you normally do:
|
|
231
|
-
|
|
232
|
-
rake db:migrate
|
|
233
|
-
|
|
234
|
-
Finally, add the new translation locale to your `available_locales` inside your apps `application.rb`:
|
|
235
|
-
|
|
236
|
-
config.available_locales = [:en, :fr]
|
|
237
|
-
Or
|
|
238
|
-
|
|
239
|
-
config.available_locales = [:en, 'de-CH']
|
|
240
|
-
|
|
241
|
-
## Adding a language switch
|
|
242
|
-
|
|
243
|
-
Add scope around routes:
|
|
244
|
-
|
|
245
|
-
scope "(:locale)", locale: /de|en|fr/ do
|
|
246
|
-
root 'kuhsaft/pages#show'
|
|
247
|
-
end
|
|
248
|
-
|
|
249
|
-
Set the locale in the ApplicationController in a before_action and set default url options:
|
|
250
|
-
|
|
251
|
-
before_action :set_locale
|
|
252
|
-
|
|
253
|
-
def set_locale
|
|
254
|
-
if I18n.available_locales.map{|sym| sym.to_s }.include?(params[:locale])
|
|
255
|
-
I18n.locale = params[:locale]
|
|
256
|
-
else
|
|
257
|
-
I18n.locale = I18n.default_locale
|
|
258
|
-
end
|
|
259
|
-
end
|
|
260
|
-
|
|
261
|
-
def default_url_options(options={})
|
|
262
|
-
{ locale: I18n.locale }
|
|
263
|
-
end
|
|
264
|
-
|
|
265
|
-
Add method to ApplicationHelper which redirects to homepage when current page is not translated.
|
|
266
|
-
Make sure to have the homepage translated in every available language.
|
|
267
|
-
|
|
268
|
-
def localized_url(url, target_locale)
|
|
269
|
-
page = Kuhsaft::Page.find_by_url("#{I18n.locale}/#{url}")
|
|
270
|
-
I18n.with_locale target_locale do
|
|
271
|
-
translated_url = page.presence && page.url
|
|
272
|
-
if translated_url.present?
|
|
273
|
-
"/#{translated_url}"
|
|
274
|
-
else
|
|
275
|
-
root_path(locale: target_locale)
|
|
276
|
-
end
|
|
277
|
-
end
|
|
278
|
-
end
|
|
279
|
-
|
|
280
|
-
def language_link(url, locale)
|
|
281
|
-
localized_url(params[:url], locale)
|
|
282
|
-
end
|
|
283
|
-
|
|
284
|
-
Add language switch to navigation:
|
|
285
|
-
|
|
286
|
-
SimpleNavigation::Configuration.run do |navigation|
|
|
287
|
-
I18n.available_locales.each do |locale|
|
|
288
|
-
primary.item locale, locale.to_s.upcase, language_link(params[:url], locale), highlights_on: Proc.new { I18n.locale == locale }
|
|
289
|
-
end
|
|
290
|
-
end
|
|
291
|
-
|
|
292
|
-
Make sure to render only pages which are translated and published by using `published` and `translated` scope, so pages
|
|
293
|
-
without translation and which are not published will not be displayed in the navigation.
|
|
294
|
-
Here is an example of a possible navigation:
|
|
295
|
-
|
|
296
|
-
SimpleNavigation::Configuration.run do |navigation|
|
|
297
|
-
navigation.items do |primary|
|
|
298
|
-
primary.dom_class = 'right'
|
|
299
|
-
primary.selected_class = 'active'
|
|
300
|
-
Kuhsaft::Page.find_by(slug_de: 'meta-navigation').children.published.translated.each do |page|
|
|
301
|
-
primary.item page.id, page.title, page.link, class: 'contact icon'
|
|
302
|
-
end
|
|
303
|
-
|
|
304
|
-
primary.item '', 'Sprache', '#', class: 'language icon has-dropdown'do |language|
|
|
305
|
-
I18n.available_locales.each do |locale|
|
|
306
|
-
language.dom_class = 'dropdown'
|
|
307
|
-
language.item locale, language_text(locale), language_link(params[:url], locale), highlights_on: Proc.new { I18n.locale == locale }, class: "icon lang-#{locale}"
|
|
308
|
-
end
|
|
309
|
-
end
|
|
310
|
-
end
|
|
311
|
-
end
|
|
86
|
+
Finally, mount the qBrick engine in your routes file:
|
|
312
87
|
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
p, h1, h2, h3, h4, table, a, strong, em
|
|
318
|
-
|
|
319
|
-
## Building a navigation
|
|
320
|
-
|
|
321
|
-
Building a navigation is simple, access to the page tree is available through the common methods built into the ancestry gem.
|
|
322
|
-
Just make sure you are only accessing published pages for your production site, using the `published` scope.
|
|
323
|
-
Or if your page is translated, using the `translated` scope and the `published` scope.
|
|
324
|
-
|
|
325
|
-
### 2 level navigation example using simple-navigation
|
|
326
|
-
|
|
327
|
-
SimpleNavigation::Configuration.run do |navigation|
|
|
328
|
-
navigation.items do |primary|
|
|
329
|
-
# build first level
|
|
330
|
-
Kuhsaft::Page.roots.published.translated.each do |page|
|
|
331
|
-
primary.item page.id, page.title, page.link do |sub_item|
|
|
332
|
-
# build second level
|
|
333
|
-
page.children.published.translated.each do |subpage|
|
|
334
|
-
sub_item.item subpage.id, subpage.title, subpage.link
|
|
335
|
-
end
|
|
336
|
-
end
|
|
337
|
-
end
|
|
338
|
-
end
|
|
339
|
-
end
|
|
340
|
-
|
|
341
|
-
## Use the `page_title` attribute in your app
|
|
342
|
-
|
|
343
|
-
Kuhsaft::Pages will provide a `%title` tag containing its `page_title`
|
|
344
|
-
(or the required `title`if no title is present). Simply yield for
|
|
345
|
-
`:head` in your `application.html` to use it.
|
|
346
|
-
|
|
347
|
-
%head
|
|
348
|
-
= yield(:head)
|
|
349
|
-
|
|
350
|
-
## Modifying the backend navigation
|
|
351
|
-
|
|
352
|
-
Simply override the default partial for the main navigation in your app with your own file at `kuhsaft/cms/admin/_main_navigation.html.haml`
|
|
353
|
-
|
|
354
|
-
## Adding your own Bricks
|
|
355
|
-
|
|
356
|
-
* Create your Brick model in `app/models`, for example `CaptionBrick`, which inherits from `Kuhsaft::Brick`.
|
|
357
|
-
* If u use a string field add a max-length validation of 255 characters.
|
|
358
|
-
To prevent a `ActiveRecord::StatementInvalid` Error.
|
|
359
|
-
* Create a migration which adds the necessary fields to the `kuhsaft_bricks` table.
|
|
360
|
-
* If your brick should be accessible via UI, add a BrickType into the seeds or add a migration:
|
|
361
|
-
`Kuhsaft::BrickType.create(:class_name => 'CaptionBrick', :group => 'elements')`
|
|
362
|
-
* Add the `edit` and `show` partials to your views, e.g: `app/views/caption_bricks/caption_brick/_edit.html.haml`
|
|
363
|
-
* Add the `childs` partial to your views, if you want to render your bricks childs with your own html: `app/views/caption_bricks/caption_brick/_childs.html.haml`
|
|
364
|
-
* Implement the `fulltext` method on your brick, return anything you want to be searchable.
|
|
365
|
-
* Customize the edit form behaviour of your brick by overriding methods like `to_style_class?`. See the `Brick` and `BrickList` files for more methods.
|
|
366
|
-
|
|
367
|
-
### Use the Kuhsaft ImageBrickImageUploader for your own Brick
|
|
368
|
-
|
|
369
|
-
Kuhsaft has a module called `ImageUploaderMounting`. This module mounts the ImageBrickImageUploader
|
|
370
|
-
and includes a callback method which handles that the image sizes will be updated after save.
|
|
371
|
-
|
|
372
|
-
class CustomBrick < Brick
|
|
373
|
-
include Kuhsaft::ImageUploaderMounting
|
|
374
|
-
...
|
|
375
|
-
end
|
|
376
|
-
|
|
377
|
-
If you do not include this module, then the images will not be changed when selecting one of your own image
|
|
378
|
-
sizes. See "Configuring the image brick" for more details on creating your own image sizes.
|
|
379
|
-
|
|
380
|
-
## Integrating search
|
|
381
|
-
|
|
382
|
-
Kuhsaft supports fulltext search when using PostgreSQL with a simple
|
|
383
|
-
LIKE fallback for any other ActiveRecord DB.
|
|
384
|
-
|
|
385
|
-
Add a call to the `search_page_form` helper in your views. This renders
|
|
386
|
-
the default search form. The query will be executed by kuhsaft.
|
|
387
|
-
|
|
388
|
-
# e.g. _footer.html.haml
|
|
389
|
-
= search_page_form
|
|
390
|
-
|
|
391
|
-
To customize the search and result views you can add your own partials
|
|
392
|
-
to your rails app. The following partials are overridable.
|
|
393
|
-
|
|
394
|
-
app/views/kuhsaft/search
|
|
395
|
-
├── _form.html.haml # Search form
|
|
396
|
-
├── _results.html.haml # Results list (@pages)
|
|
397
|
-
└── _results_entry.html.haml # Single result entry (@page)
|
|
88
|
+
```ruby
|
|
89
|
+
mount Qbrick::Engine => '/'
|
|
90
|
+
```
|
|
398
91
|
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
92
|
+
You can now access the qBrick interface by visiting `/cms` in your
|
|
93
|
+
browser. By default, qBrick creates the first admin user with the
|
|
94
|
+
email `admin@admin.com` and password: `change-me-soon!`. Which you can
|
|
95
|
+
use to log in the first time.
|
|
402
96
|
|
|
403
|
-
|
|
97
|
+
# Using and Customizing qBrick
|
|
98
|
+
See our [wiki](https://github.com/screenconcept/qbrick/wiki)
|
|
404
99
|
|
|
405
|
-
|
|
406
|
-
title and url attribute is rendered in the json.
|
|
100
|
+
# Issues
|
|
407
101
|
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
disables the standard link plugin. The second line enables the adv_link
|
|
411
|
-
plugin, which we need for the CMS Page link dialogue in CKEditor.
|
|
102
|
+
Before reporiting a problem, please read how to [File an
|
|
103
|
+
issue](CONTRIBUTING.md#file-an-issue).
|
|
412
104
|
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
config.extraPlugins = 'adv_link'
|
|
416
|
-
```
|
|
105
|
+
# Roadmap
|
|
106
|
+
See our [roadmap](doc/ROADMAP.md)
|
|
417
107
|
|
|
418
|
-
|
|
419
|
-
|
|
108
|
+
# Contributing
|
|
109
|
+
See the [Contributing Guidelines](CONTRIBUTING.md)
|
|
420
110
|
|
|
421
|
-
#
|
|
111
|
+
# License
|
|
422
112
|
|
|
423
|
-
See the file
|
|
113
|
+
See the [LICENSE file](LICENSE)
|