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.
Files changed (341) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +69 -379
  3. data/Rakefile +4 -4
  4. data/app/assets/images/logo.png +0 -0
  5. data/app/assets/javascripts/{kuhsaft → qbrick}/application.js.coffee +1 -1
  6. data/app/assets/javascripts/{kuhsaft → qbrick}/cms/application.js.coffee.erb +40 -17
  7. data/app/assets/javascripts/{kuhsaft → qbrick}/views/read_more_view.js.coffee +0 -0
  8. data/app/assets/stylesheets/{kuhsaft → qbrick}/application.css.sass +0 -0
  9. data/app/assets/stylesheets/{kuhsaft → qbrick}/cms/application.css.sass +38 -1
  10. data/app/assets/stylesheets/{kuhsaft → qbrick}/modules/_text_brick.css.sass +1 -1
  11. data/app/controllers/{kuhsaft → qbrick}/api/pages_controller.rb +2 -2
  12. data/app/controllers/qbrick/cms/accounts_controller.rb +28 -0
  13. data/app/controllers/qbrick/cms/admins_controller.rb +79 -0
  14. data/app/controllers/{kuhsaft → qbrick}/cms/assets_controller.rb +9 -9
  15. data/app/controllers/qbrick/cms/backend_controller.rb +25 -0
  16. data/app/controllers/{kuhsaft → qbrick}/cms/bricks_controller.rb +16 -13
  17. data/app/controllers/{kuhsaft → qbrick}/cms/ckimages_controller.rb +6 -6
  18. data/app/controllers/qbrick/cms/pages_controller.rb +87 -0
  19. data/app/controllers/qbrick/cms/settings_collections_controller.rb +26 -0
  20. data/app/controllers/{kuhsaft → qbrick}/pages_controller.rb +10 -5
  21. data/app/controllers/{kuhsaft → qbrick}/sitemaps_controller.rb +3 -3
  22. data/app/helpers/cms_helper.rb +4 -4
  23. data/app/helpers/pages_helper.rb +18 -10
  24. data/app/helpers/{kuhsaft → qbrick}/admin_helper.rb +2 -2
  25. data/app/helpers/qbrick/cms/admin_helper.rb +73 -0
  26. data/app/helpers/{kuhsaft → qbrick}/cms/pages_helper.rb +2 -2
  27. data/app/models/{kuhsaft → qbrick}/accordion_brick.rb +2 -2
  28. data/app/models/{kuhsaft → qbrick}/accordion_item_brick.rb +1 -1
  29. data/app/models/qbrick/admin.rb +8 -0
  30. data/app/models/{kuhsaft → qbrick}/anchor_brick.rb +1 -1
  31. data/app/models/{kuhsaft → qbrick}/asset.rb +2 -2
  32. data/app/models/{kuhsaft → qbrick}/asset_brick.rb +2 -2
  33. data/app/models/{kuhsaft → qbrick}/brick.rb +11 -8
  34. data/app/models/{kuhsaft → qbrick}/brick_type.rb +1 -1
  35. data/app/models/{kuhsaft → qbrick}/brick_type_filter.rb +4 -4
  36. data/app/models/{kuhsaft → qbrick}/ckimage.rb +1 -1
  37. data/app/models/{kuhsaft → qbrick}/cms.rb +2 -2
  38. data/app/models/qbrick/cms_model.rb +25 -0
  39. data/app/models/{kuhsaft → qbrick}/column_brick.rb +2 -2
  40. data/app/models/{kuhsaft → qbrick}/image_brick.rb +2 -2
  41. data/app/models/{kuhsaft → qbrick}/image_size.rb +3 -3
  42. data/app/models/{kuhsaft → qbrick}/link_brick.rb +1 -1
  43. data/app/models/{kuhsaft → qbrick}/page.rb +78 -17
  44. data/app/models/{kuhsaft → qbrick}/page_type.rb +3 -2
  45. data/app/models/{kuhsaft → qbrick}/partition.rb +1 -1
  46. data/app/models/{kuhsaft → qbrick}/placeholder_brick.rb +4 -4
  47. data/app/models/{kuhsaft → qbrick}/publish_state.rb +1 -1
  48. data/app/models/qbrick/setting.rb +13 -0
  49. data/app/models/qbrick/settings_collection.rb +10 -0
  50. data/app/models/{kuhsaft → qbrick}/slider_brick.rb +3 -3
  51. data/app/models/{kuhsaft → qbrick}/text_brick.rb +1 -1
  52. data/app/models/{kuhsaft → qbrick}/two_column_brick.rb +2 -2
  53. data/app/models/{kuhsaft → qbrick}/video_brick.rb +1 -1
  54. data/app/uploaders/qbrick/asset_brick_asset_uploader.rb +26 -0
  55. data/app/uploaders/{kuhsaft → qbrick}/asset_uploader.rb +3 -2
  56. data/app/uploaders/{kuhsaft → qbrick}/ckimage_uploader.rb +1 -1
  57. data/app/uploaders/{kuhsaft → qbrick}/image_brick_image_uploader.rb +4 -4
  58. data/app/views/devise/confirmations/new.html.haml +10 -0
  59. data/app/views/devise/mailer/confirmation_instructions.html.haml +4 -0
  60. data/app/views/devise/mailer/reset_password_instructions.html.haml +6 -0
  61. data/app/views/devise/mailer/unlock_instructions.html.haml +5 -0
  62. data/app/views/devise/passwords/edit.html.haml +10 -0
  63. data/app/views/devise/passwords/new.html.haml +8 -0
  64. data/app/views/devise/registrations/edit.html.haml +9 -0
  65. data/app/views/devise/registrations/new.html.haml +21 -0
  66. data/app/views/devise/sessions/new.html.haml +12 -0
  67. data/app/views/devise/shared/_links.html.haml +19 -0
  68. data/app/views/devise/unlocks/new.html.haml +10 -0
  69. data/app/views/layouts/devise.html.haml +16 -0
  70. data/app/views/layouts/{kuhsaft → qbrick}/cms/application.html.haml +4 -5
  71. data/app/views/layouts/qbrick/cms/ckimages.html.haml +18 -0
  72. data/app/views/{kuhsaft → qbrick}/accordion_bricks/_accordion_brick.html.haml +0 -0
  73. data/app/views/{kuhsaft → qbrick}/accordion_bricks/accordion_brick/_edit.html.haml +0 -0
  74. data/app/views/{kuhsaft → qbrick}/accordion_item_bricks/_accordion_item_brick.html.haml +0 -0
  75. data/app/views/{kuhsaft → qbrick}/accordion_item_bricks/accordion_item_brick/_edit.html.haml +0 -0
  76. data/app/views/{kuhsaft → qbrick}/anchor_bricks/_anchor_brick.html.haml +0 -0
  77. data/app/views/{kuhsaft → qbrick}/anchor_bricks/anchor_brick/_edit.html.haml +0 -0
  78. data/app/views/{kuhsaft → qbrick}/asset_bricks/_asset_brick.html.haml +0 -0
  79. data/app/views/{kuhsaft → qbrick}/asset_bricks/asset_brick/_edit.html.haml +1 -1
  80. data/app/views/qbrick/cms/accounts/edit.html.haml +12 -0
  81. data/app/views/qbrick/cms/admins/_form.html.haml +10 -0
  82. data/app/views/qbrick/cms/admins/edit.html.haml +5 -0
  83. data/app/views/qbrick/cms/admins/index.html.haml +26 -0
  84. data/app/views/qbrick/cms/admins/new.html.haml +5 -0
  85. data/app/views/{kuhsaft → qbrick}/cms/assets/_form.html.haml +0 -0
  86. data/app/views/{kuhsaft → qbrick}/cms/assets/_list.html.haml +0 -0
  87. data/app/views/{kuhsaft → qbrick}/cms/assets/edit.html.haml +0 -0
  88. data/app/views/qbrick/cms/assets/index.html.haml +3 -0
  89. data/app/views/{kuhsaft → qbrick}/cms/assets/new.html.haml +0 -0
  90. data/app/views/qbrick/cms/backend/_brick_clone_menu.html.haml +16 -0
  91. data/app/views/qbrick/cms/backend/_brick_type_dropdown.html.haml +15 -0
  92. data/app/views/{kuhsaft/cms/admin → qbrick/cms/backend}/_empty_state.html.haml +0 -0
  93. data/app/views/{kuhsaft/cms/admin → qbrick/cms/backend}/_flash.html.haml +0 -0
  94. data/app/views/qbrick/cms/backend/_main_navigation.html.haml +20 -0
  95. data/app/views/{kuhsaft → qbrick}/cms/bricks/_brick_header.html.haml +4 -4
  96. data/app/views/{kuhsaft → qbrick}/cms/bricks/_brick_item.html.haml +6 -5
  97. data/app/views/{kuhsaft → qbrick}/cms/bricks/_brick_list.html.haml +1 -1
  98. data/app/views/{kuhsaft → qbrick}/cms/bricks/_new.html.haml +3 -3
  99. data/app/views/{kuhsaft → qbrick}/cms/bricks/_sort_form.html.haml +0 -0
  100. data/app/views/{kuhsaft → qbrick}/cms/bricks/create.js.erb +1 -1
  101. data/app/views/{kuhsaft → qbrick}/cms/bricks/destroy.js.erb +0 -0
  102. data/app/views/{kuhsaft → qbrick}/cms/bricks/new.js.erb +1 -1
  103. data/app/views/{kuhsaft → qbrick}/cms/bricks/update.js.erb +1 -1
  104. data/app/views/{kuhsaft → qbrick}/cms/ckimages/create.html.haml +0 -0
  105. data/app/views/{kuhsaft → qbrick}/cms/ckimages/destroy.js.erb +0 -0
  106. data/app/views/{kuhsaft → qbrick}/cms/ckimages/index.html.haml +1 -1
  107. data/app/views/{kuhsaft → qbrick}/cms/pages/_branch.html.haml +4 -4
  108. data/app/views/{kuhsaft → qbrick}/cms/pages/_form.html.haml +15 -6
  109. data/app/views/qbrick/cms/pages/_mirror_modal.html.haml +52 -0
  110. data/app/views/qbrick/cms/pages/edit.html.haml +16 -0
  111. data/app/views/{kuhsaft → qbrick}/cms/pages/index.html.haml +1 -1
  112. data/app/views/qbrick/cms/pages/mirror.js.haml +5 -0
  113. data/app/views/qbrick/cms/pages/new.html.haml +1 -0
  114. data/app/views/{kuhsaft → qbrick}/cms/pages/show.html.haml +0 -0
  115. data/app/views/{kuhsaft → qbrick}/cms/pages/sort.js.erb +0 -0
  116. data/app/views/qbrick/cms/settings_collections/_form.html.haml +8 -0
  117. data/app/views/qbrick/cms/settings_collections/index.html.haml +6 -0
  118. data/app/views/{kuhsaft → qbrick}/column_bricks/_column_brick.html.haml +0 -0
  119. data/app/views/{kuhsaft → qbrick}/column_bricks/column_brick/_edit.html.haml +0 -0
  120. data/app/views/{kuhsaft → qbrick}/image_bricks/_image_brick.html.haml +0 -0
  121. data/app/views/{kuhsaft → qbrick}/image_bricks/image_brick/_edit.html.haml +1 -1
  122. data/app/views/{kuhsaft → qbrick}/link_bricks/_link_brick.html.haml +0 -0
  123. data/app/views/{kuhsaft → qbrick}/link_bricks/link_brick/_edit.html.haml +1 -1
  124. data/app/views/{kuhsaft → qbrick}/pages/index.html.haml +2 -2
  125. data/app/views/{kuhsaft → qbrick}/pages/show.html.haml +2 -0
  126. data/app/views/{kuhsaft → qbrick}/placeholder_bricks/_placeholder_brick.html.haml +0 -0
  127. data/app/views/qbrick/placeholder_bricks/placeholder_brick/_edit.html.haml +1 -0
  128. data/app/views/{kuhsaft → qbrick}/search/_form.html.haml +0 -0
  129. data/app/views/{kuhsaft → qbrick}/search/_results.html.haml +2 -2
  130. data/app/views/{kuhsaft → qbrick}/search/_results_entry.html.haml +1 -1
  131. data/app/views/{kuhsaft → qbrick}/sitemaps/index.xml.haml +0 -0
  132. data/app/views/{kuhsaft → qbrick}/slider_bricks/_slider_brick.html.haml +0 -0
  133. data/app/views/{kuhsaft → qbrick}/slider_bricks/slider_brick/_edit.html.haml +0 -0
  134. data/app/views/{kuhsaft → qbrick}/text_bricks/_text_brick.html.haml +0 -0
  135. data/app/views/{kuhsaft → qbrick}/text_bricks/text_brick/_edit.html.haml +0 -0
  136. data/app/views/{kuhsaft → qbrick}/two_column_bricks/_two_column_brick.html.haml +1 -1
  137. data/app/views/qbrick/two_column_bricks/two_column_brick/_childs.html.haml +5 -0
  138. data/app/views/qbrick/two_column_bricks/two_column_brick/_edit.html.haml +1 -0
  139. data/app/views/{kuhsaft → qbrick}/video_bricks/_video_brick.html.haml +2 -2
  140. data/app/views/{kuhsaft → qbrick}/video_bricks/video_brick/_edit.html.haml +1 -1
  141. data/config/initializers/devise.rb +259 -0
  142. data/config/locales/cms.de.yml +11 -0
  143. data/config/locales/cms.en.yml +11 -0
  144. data/config/locales/devise.en.yml +60 -0
  145. data/config/locales/models/qbrick/accordion_brick/de.yml +4 -0
  146. data/config/locales/models/qbrick/accordion_brick/en.yml +4 -0
  147. data/config/locales/models/qbrick/accordion_item_brick/de.yml +7 -0
  148. data/config/locales/models/qbrick/accordion_item_brick/en.yml +7 -0
  149. data/config/locales/models/qbrick/admin/de.yml +13 -0
  150. data/config/locales/models/qbrick/admin/en.yml +13 -0
  151. data/config/locales/models/{kuhsaft → qbrick}/anchor_brick/de.yml +2 -2
  152. data/config/locales/models/{kuhsaft → qbrick}/anchor_brick/en.yml +2 -2
  153. data/config/locales/models/{kuhsaft → qbrick}/asset_brick/de.yml +2 -2
  154. data/config/locales/models/{kuhsaft → qbrick}/asset_brick/en.yml +2 -2
  155. data/config/locales/models/{kuhsaft → qbrick}/brick/de.yml +1 -1
  156. data/config/locales/models/{kuhsaft → qbrick}/brick/en.yml +1 -1
  157. data/config/locales/models/qbrick/column_brick/de.yml +4 -0
  158. data/config/locales/models/qbrick/column_brick/en.yml +4 -0
  159. data/config/locales/models/{kuhsaft → qbrick}/image_brick/de.yml +2 -2
  160. data/config/locales/models/{kuhsaft → qbrick}/image_brick/en.yml +2 -2
  161. data/config/locales/models/{kuhsaft → qbrick}/image_size/de.yml +2 -2
  162. data/config/locales/models/{kuhsaft → qbrick}/image_size/en.yml +2 -2
  163. data/config/locales/models/{kuhsaft → qbrick}/link_brick/de.yml +2 -2
  164. data/config/locales/models/{kuhsaft → qbrick}/link_brick/en.yml +2 -2
  165. data/config/locales/models/{kuhsaft → qbrick}/page/de.yml +2 -2
  166. data/config/locales/models/{kuhsaft → qbrick}/page/en.yml +3 -2
  167. data/config/locales/models/{kuhsaft → qbrick}/placeholder_brick/de.yml +2 -2
  168. data/config/locales/models/{kuhsaft → qbrick}/placeholder_brick/en.yml +2 -2
  169. data/config/locales/models/qbrick/slider_brick/de.yml +4 -0
  170. data/config/locales/models/qbrick/slider_brick/en.yml +4 -0
  171. data/config/locales/models/{kuhsaft → qbrick}/text_brick/de.yml +2 -2
  172. data/config/locales/models/{kuhsaft → qbrick}/text_brick/en.yml +2 -2
  173. data/config/locales/models/qbrick/two_column_brick/de.yml +7 -0
  174. data/config/locales/models/qbrick/two_column_brick/en.yml +7 -0
  175. data/config/locales/models/{kuhsaft → qbrick}/video_brick/de.yml +2 -2
  176. data/config/locales/models/{kuhsaft → qbrick}/video_brick/en.yml +2 -2
  177. data/config/locales/views/qbrick/cms/admin/de.yml +36 -0
  178. data/config/locales/views/{kuhsaft → qbrick}/cms/admin/en.yml +1 -1
  179. data/config/locales/views/{kuhsaft → qbrick}/cms/bricks/de.yml +1 -1
  180. data/config/locales/views/{kuhsaft → qbrick}/cms/bricks/en.yml +1 -1
  181. data/config/locales/views/qbrick/cms/navigation.yml +8 -0
  182. data/config/locales/views/{kuhsaft → qbrick}/cms/pages/de.yml +14 -1
  183. data/config/locales/views/{kuhsaft → qbrick}/cms/pages/en.yml +1 -1
  184. data/config/locales/views/qbrick/cms/settings_collection/de.yml +14 -0
  185. data/config/locales/views/qbrick/cms/settings_collection/en.yml +14 -0
  186. data/config/locales/views/{kuhsaft → qbrick}/image_brick/de.yml +1 -1
  187. data/config/locales/views/{kuhsaft → qbrick}/image_brick/en.yml +1 -1
  188. data/config/locales/views/{kuhsaft → qbrick}/search/de.yml +1 -1
  189. data/config/locales/views/{kuhsaft → qbrick}/search/en.yml +1 -1
  190. data/config/locales/views/{kuhsaft → qbrick}/text_brick/de.yml +1 -1
  191. data/config/locales/views/{kuhsaft → qbrick}/text_brick/en.yml +1 -1
  192. data/config/locales/views/{kuhsaft → qbrick}/video_brick/de.yml +1 -1
  193. data/config/locales/views/{kuhsaft → qbrick}/video_brick/en.yml +1 -1
  194. data/config/routes.rb +14 -2
  195. data/db/migrate/{01_create_kuhsaft_pages.rb → 01_create_qbrick_pages.rb} +5 -5
  196. data/db/migrate/{02_create_kuhsaft_bricks.rb → 02_create_qbrick_bricks.rb} +3 -3
  197. data/db/migrate/03_create_qbrick_brick_types.rb +12 -0
  198. data/db/migrate/04_create_qbrick_assets.rb +10 -0
  199. data/db/migrate/05_remove_cms_admin.rb +3 -3
  200. data/db/migrate/06_add_template_name_to_qbrick_bricks.rb +7 -0
  201. data/db/migrate/07_add_default_value_to_brick_type_enabled.rb +2 -2
  202. data/db/migrate/08_add_display_styles_to_bricks.rb +1 -1
  203. data/db/migrate/09_add_additional_fields_to_qbrick_bricks.rb +6 -0
  204. data/db/migrate/10_add_redirect_url_to_qbrick_pages.rb +7 -0
  205. data/db/migrate/11_update_url_and_redirect_url_value.rb +2 -2
  206. data/db/migrate/12_regenerate_fulltext.rb +1 -1
  207. data/db/migrate/13_add_page_title_to_pages.rb +1 -1
  208. data/db/migrate/14_move_qbrick_assets.rb +22 -0
  209. data/db/migrate/15_add_alt_text_to_bricks.rb +1 -1
  210. data/db/migrate/16_update_default_value_for_page_type.rb +2 -2
  211. data/db/migrate/17_set_page_type_to_content_for_empty_fields.rb +2 -2
  212. data/db/migrate/18_add_identifier_to_qbrick_pages.rb +6 -0
  213. data/db/migrate/19_add_col_count_to_bricks.rb +1 -1
  214. data/db/migrate/20_create_qbrick_ckimages.rb +9 -0
  215. data/db/migrate/21_add_google_verification_key_to_qbrick_pages.rb +5 -0
  216. data/db/migrate/22_create_settings.rb +15 -0
  217. data/db/migrate/22_create_settings_collections.rb +11 -0
  218. data/db/migrate/23_add_metadata_to_asset.rb +6 -0
  219. data/db/migrate/23_devise_create_qbrick_admins.rb +42 -0
  220. data/db/seeds.rb +36 -13
  221. data/lib/generators/{kuhsaft → qbrick}/assets/install_generator.rb +5 -5
  222. data/lib/generators/qbrick/custom_model_generator.rb +117 -0
  223. data/lib/generators/{kuhsaft → qbrick}/translations/add_generator.rb +4 -4
  224. data/lib/qbrick.rb +24 -0
  225. data/lib/{kuhsaft → qbrick}/brick_list.rb +3 -3
  226. data/lib/{kuhsaft → qbrick}/engine.rb +5 -5
  227. data/lib/{kuhsaft → qbrick}/gridded.rb +1 -1
  228. data/lib/{kuhsaft → qbrick}/image_uploader_mounting.rb +2 -2
  229. data/lib/{kuhsaft → qbrick}/orderable.rb +1 -1
  230. data/lib/{kuhsaft → qbrick}/page_tree.rb +1 -1
  231. data/lib/{kuhsaft → qbrick}/partial_extractor.rb +1 -1
  232. data/lib/{kuhsaft → qbrick}/searchable.rb +5 -3
  233. data/lib/{kuhsaft → qbrick}/touch_placeholders.rb +4 -4
  234. data/lib/{kuhsaft → qbrick}/translatable.rb +1 -1
  235. data/lib/qbrick/version.rb +3 -0
  236. data/lib/tasks/{kuhsaft_tasks.rake → qbrick_tasks.rake} +5 -5
  237. data/lib/templates/{kuhsaft → qbrick}/assets/ck-config.js.coffee +0 -0
  238. data/lib/templates/{kuhsaft → qbrick}/assets/customizations.css.sass +0 -0
  239. data/lib/templates/{kuhsaft → qbrick}/assets/customizations.js.coffee +0 -0
  240. data/lib/templates/qbrick/custom_model_generator/base_controller.rb +17 -0
  241. data/lib/templates/qbrick/custom_model_generator/inherited_views/base/_form.html.haml +12 -0
  242. data/lib/templates/qbrick/custom_model_generator/inherited_views/base/edit.html.haml +5 -0
  243. data/lib/templates/qbrick/custom_model_generator/inherited_views/base/index.html.haml +28 -0
  244. data/lib/templates/qbrick/custom_model_generator/inherited_views/base/new.html.haml +5 -0
  245. data/lib/templates/qbrick/custom_model_generator/translations/qbrick_base.yml +11 -0
  246. data/lib/templates/qbrick/custom_model_generator/translations/resource.yml.erb +14 -0
  247. data/lib/templates/qbrick/translations/add_translation.erb +8 -0
  248. data/spec/command_wrapper_helper.rb +21 -0
  249. data/spec/controllers/{kuhsaft → qbrick}/api/pages_controller_spec.rb +5 -5
  250. data/spec/controllers/qbrick/cms/pages_controller_spec.rb +61 -0
  251. data/spec/controllers/{kuhsaft → qbrick}/pages_controller_spec.rb +11 -13
  252. data/spec/controllers/{kuhsaft → qbrick}/sitemaps_controller_spec.rb +2 -2
  253. data/spec/dummy/app/assets/javascripts/{kuhsaft → qbrick}/cms/ck-config.js.coffee +0 -0
  254. data/spec/dummy/app/assets/javascripts/{kuhsaft → qbrick}/cms/customizations.js.coffee +0 -0
  255. data/spec/dummy/app/assets/stylesheets/{kuhsaft → qbrick}/cms/customizations.css.sass +0 -0
  256. data/spec/dummy/app/controllers/application_controller.rb +1 -1
  257. data/spec/dummy/config/application.rb +3 -2
  258. data/spec/dummy/config/database.yml +2 -2
  259. data/spec/dummy/config/environments/production.rb +2 -2
  260. data/spec/dummy/config/environments/test.rb +1 -1
  261. data/spec/dummy/config/initializers/{kuhsaft.rb → qbrick.rb} +1 -1
  262. data/spec/dummy/config/routes.rb +4 -1
  263. data/spec/factories.rb +24 -9
  264. data/spec/features/administrator_management_spec.rb +70 -0
  265. data/spec/features/cms_pages_spec.rb +15 -11
  266. data/spec/features/search_spec.rb +15 -15
  267. data/spec/features_helper.rb +36 -0
  268. data/spec/generators/custom_model_generator_spec.rb +83 -0
  269. data/spec/helpers/{kuhsaft → qbrick}/cms/admin_helper_spec.rb +5 -5
  270. data/spec/helpers/{kuhsaft → qbrick}/cms/pages_helper_spec.rb +6 -6
  271. data/spec/helpers/{kuhsaft → qbrick}/pages_helper_spec.rb +4 -5
  272. data/spec/lib/brick_list_spec.rb +12 -11
  273. data/spec/lib/engine_spec.rb +5 -9
  274. data/spec/lib/gridded_spec.rb +4 -5
  275. data/spec/lib/image_uploader_mounting_spec.rb +3 -4
  276. data/spec/lib/page_tree_spec.rb +5 -5
  277. data/spec/lib/searchable_spec.rb +7 -8
  278. data/spec/lib/touch_placeholders_spec.rb +4 -5
  279. data/spec/lib/translatable_spec.rb +20 -20
  280. data/spec/models/accordion_brick_spec.rb +7 -8
  281. data/spec/models/accordion_item_brick_spec.rb +8 -9
  282. data/spec/models/anchor_brick_spec.rb +5 -6
  283. data/spec/models/asset_brick_spec.rb +8 -9
  284. data/spec/models/asset_spec.rb +9 -11
  285. data/spec/models/brick_spec.rb +34 -34
  286. data/spec/models/brick_type_filter_spec.rb +14 -14
  287. data/spec/models/column_brick_spec.rb +6 -7
  288. data/spec/models/image_brick_spec.rb +9 -10
  289. data/spec/models/image_size_spec.rb +8 -8
  290. data/spec/models/link_brick_spec.rb +9 -10
  291. data/spec/models/page_spec.rb +113 -73
  292. data/spec/models/placeholder_brick_spec.rb +12 -13
  293. data/spec/models/publish_state_spec.rb +7 -7
  294. data/spec/models/setting_spec.rb +28 -0
  295. data/spec/models/slider_brick_spec.rb +5 -6
  296. data/spec/models/text_brick_spec.rb +5 -5
  297. data/spec/models/two_column_brick_spec.rb +14 -15
  298. data/spec/models/video_brick_spec.rb +5 -6
  299. data/spec/postgres_helper.rb +66 -0
  300. data/spec/{kuhsaft_spec.rb → qbrick_spec.rb} +2 -2
  301. data/spec/spec_helper.rb +23 -10
  302. data/spec/support/{kuhsaft_spec_helper.rb → qbrick_spec_helper.rb} +1 -1
  303. data/spec/support/write_expectation.rb +2 -2
  304. data/spec/views/{kuhsaft → qbrick}/sitemaps/index.xml.haml_spec.rb +3 -3
  305. metadata +451 -330
  306. data/app/controllers/kuhsaft/cms/admin_controller.rb +0 -18
  307. data/app/controllers/kuhsaft/cms/pages_controller.rb +0 -71
  308. data/app/helpers/kuhsaft/cms/admin_helper.rb +0 -21
  309. data/app/uploaders/kuhsaft/asset_brick_asset_uploader.rb +0 -43
  310. data/app/views/kuhsaft/cms/admin/_brick_type_dropdown.html.haml +0 -14
  311. data/app/views/kuhsaft/cms/admin/_content_language_switch.html.haml +0 -7
  312. data/app/views/kuhsaft/cms/admin/_main_navigation.html.haml +0 -6
  313. data/app/views/kuhsaft/cms/assets/index.html.haml +0 -3
  314. data/app/views/kuhsaft/cms/pages/edit.html.haml +0 -16
  315. data/app/views/kuhsaft/cms/pages/new.html.haml +0 -1
  316. data/app/views/kuhsaft/placeholder_bricks/placeholder_brick/_edit.html.haml +0 -1
  317. data/app/views/kuhsaft/two_column_bricks/two_column_brick/_childs.html.haml +0 -5
  318. data/app/views/kuhsaft/two_column_bricks/two_column_brick/_edit.html.haml +0 -1
  319. data/app/views/layouts/kuhsaft/cms/ckimages.html.haml +0 -18
  320. data/config/locales/models/kuhsaft/accordion_brick/de.yml +0 -4
  321. data/config/locales/models/kuhsaft/accordion_brick/en.yml +0 -4
  322. data/config/locales/models/kuhsaft/accordion_item_brick/de.yml +0 -7
  323. data/config/locales/models/kuhsaft/accordion_item_brick/en.yml +0 -7
  324. data/config/locales/models/kuhsaft/column_brick/de.yml +0 -4
  325. data/config/locales/models/kuhsaft/column_brick/en.yml +0 -4
  326. data/config/locales/models/kuhsaft/slider_brick/de.yml +0 -4
  327. data/config/locales/models/kuhsaft/slider_brick/en.yml +0 -4
  328. data/config/locales/models/kuhsaft/two_column_brick/de.yml +0 -7
  329. data/config/locales/models/kuhsaft/two_column_brick/en.yml +0 -7
  330. data/config/locales/views/kuhsaft/cms/admin/de.yml +0 -13
  331. data/db/migrate/03_create_kuhsaft_brick_types.rb +0 -12
  332. data/db/migrate/04_create_kuhsaft_assets.rb +0 -10
  333. data/db/migrate/06_add_template_name_to_kuhsaft_bricks.rb +0 -7
  334. data/db/migrate/09_add_additional_fields_to_kuhsaft_bricks.rb +0 -6
  335. data/db/migrate/10_add_redirect_url_to_kuhsaft_pages.rb +0 -7
  336. data/db/migrate/14_move_kuhsaft_assets.rb +0 -22
  337. data/db/migrate/18_add_identifier_to_kuhsaft_pages.rb +0 -6
  338. data/db/migrate/20_create_kuhsaft_ckimages.rb +0 -9
  339. data/lib/kuhsaft.rb +0 -22
  340. data/lib/kuhsaft/version.rb +0 -3
  341. data/lib/templates/kuhsaft/translations/add_translation.erb +0 -8
@@ -2,11 +2,15 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- describe 'Cms/Pages' do
5
+ describe 'Cms/Pages', type: :feature do
6
+ before do
7
+ admin = FactoryGirl.create(:admin)
8
+ login_as(admin, scope: :admin)
9
+ end
6
10
 
7
11
  context '#new' do
8
12
  before do
9
- visit kuhsaft.new_cms_page_path
13
+ visit qbrick.new_cms_page_path
10
14
  fill_in 'Title', with: 'The Title of the page'
11
15
  fill_in 'Keywords', with: 'My keywords'
12
16
  fill_in 'Description', with: 'My Description'
@@ -15,24 +19,24 @@ describe 'Cms/Pages' do
15
19
  describe '#create' do
16
20
  context 'when page is valid' do
17
21
  it 'creates a new page' do
18
- expect { click_on 'Create Page' }.to change(Kuhsaft::Page, :count).by(1)
22
+ expect { click_on 'Create Page' }.to change(Qbrick::Page, :count).by(1)
19
23
  end
20
24
 
21
25
  it 'is not possible to change the value in url' do
22
- page.find('#page_url')['disabled'].should be_true
26
+ expect(page.find('#page_url')['disabled']).to be_truthy
23
27
  end
24
28
  end
25
29
 
26
30
  context 'when page is invalid' do
27
31
  it 'does not create a routing error by switching the locale' do
28
32
  @page = FactoryGirl.create(:page, title: 'DummyPage', title_en: 'DummyEN', slug: 'dummy_page')
29
- visit kuhsaft.edit_cms_page_path(@page)
33
+ visit qbrick.edit_cms_page_path(@page)
30
34
  fill_in 'page_title', with: ''
31
35
  click_on 'Update Page'
32
- within '.nav-pills' do
36
+ within '.language-navigation' do
33
37
  click_on 'EN'
34
38
  end
35
- page.should have_content(@page.title_en)
39
+ expect(page).to have_content(@page.title_en)
36
40
  end
37
41
  end
38
42
  end
@@ -41,7 +45,7 @@ describe 'Cms/Pages' do
41
45
  context 'when creating a redirect page' do
42
46
  before do
43
47
  @page = FactoryGirl.create(:page, url: 'de/dumdidum')
44
- visit kuhsaft.edit_cms_page_path(@page)
48
+ visit qbrick.edit_cms_page_path(@page)
45
49
  select 'redirect', from: 'Pagetyp'
46
50
  end
47
51
 
@@ -52,7 +56,7 @@ describe 'Cms/Pages' do
52
56
 
53
57
  it 'is invalid when no value is in redirect_page' do
54
58
  click_on 'Update Page'
55
- page.should have_css('.error', count: 1)
59
+ expect(page).to have_css('.error', count: 1)
56
60
  end
57
61
 
58
62
  it 'does not change the value in url' do
@@ -69,8 +73,8 @@ describe 'Cms/Pages' do
69
73
  invalid_brick = FactoryGirl.build(:text_brick, text: nil, brick_list: @page)
70
74
  invalid_brick.save(validate: false)
71
75
 
72
- visit kuhsaft.edit_cms_page_path(@page)
73
- page.should have_css('.error', count: 1)
76
+ visit qbrick.edit_cms_page_path(@page)
77
+ expect(page).to have_css('.error', count: 1)
74
78
  end
75
79
  end
76
80
  end
@@ -1,13 +1,13 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe 'pages#index' do
3
+ describe 'pages#index', type: :feature do
4
4
  context 'with search parameter' do
5
5
  let! :page1 do
6
6
  p = create :page,
7
7
  published: true,
8
8
  title: 'Chromodorididae Ardeadoris'
9
- p.bricks << Kuhsaft::TextBrick.new(locale: I18n.locale,
10
- text: "#{'foo bar' * 300} Chromodorididae #{'foo bar' * 300}")
9
+ p.bricks << Qbrick::TextBrick.new(locale: I18n.locale,
10
+ text: "#{'foo bar' * 300} Chromodorididae #{'foo bar' * 300}")
11
11
  p.save!
12
12
  p
13
13
  end
@@ -26,52 +26,52 @@ describe 'pages#index' do
26
26
 
27
27
  context 'with fulltext' do
28
28
  before do
29
- visit kuhsaft.pages_path(locale: :en, search: 'Chromodorididae')
29
+ visit qbrick.pages_path(locale: :en, search: 'Chromodorididae')
30
30
  end
31
31
 
32
32
  it 'highlights search term in preview' do
33
33
  within('ul.search-results.success') do
34
- page.should have_content('Chromodorididae')
34
+ expect(page).to have_content('Chromodorididae')
35
35
  end
36
36
  end
37
37
 
38
38
  it 'truncates the text' do
39
- find('.summary .excerpt').text.length.should == 110
39
+ expect(find('.summary .excerpt').text.length).to eq(110)
40
40
  end
41
41
  end
42
42
 
43
43
  context 'with multiple matches' do
44
44
  before do
45
- visit kuhsaft.pages_path(locale: :en, search: 'Chromodorididae')
45
+ visit qbrick.pages_path(locale: :en, search: 'Chromodorididae')
46
46
  end
47
47
 
48
48
  it 'renders match count' do
49
- page.should have_content('2 results')
49
+ expect(page).to have_content('2 results')
50
50
  end
51
51
 
52
52
  it 'renders the search results list' do
53
53
  within('ul.search-results.success') do
54
- page.should have_content('Chromodorididae Ardeadoris')
55
- page.should have_content('Chromodorididae Berlanguella')
56
- page.should_not have_content('Gastropoda')
54
+ expect(page).to have_content('Chromodorididae Ardeadoris')
55
+ expect(page).to have_content('Chromodorididae Berlanguella')
56
+ expect(page).not_to have_content('Gastropoda')
57
57
  end
58
58
  end
59
59
 
60
60
  it 'renders links to the pages' do
61
61
  within('ul.search-results.success') do
62
- page.should have_link('Chromodorididae Ardeadoris', href: page1.link)
63
- page.should have_link('Chromodorididae Berlanguella', href: page2.link)
62
+ expect(page).to have_link('Chromodorididae Ardeadoris', href: page1.link)
63
+ expect(page).to have_link('Chromodorididae Berlanguella', href: page2.link)
64
64
  end
65
65
  end
66
66
  end
67
67
 
68
68
  context 'without matches' do
69
69
  before do
70
- visit kuhsaft.pages_path(locale: :en, search: 'foobar')
70
+ visit qbrick.pages_path(locale: :en, search: 'foobar')
71
71
  end
72
72
 
73
73
  it 'renders match count' do
74
- page.should have_content('No results')
74
+ expect(page).to have_content('No results')
75
75
  end
76
76
  end
77
77
  end
@@ -0,0 +1,36 @@
1
+ require_relative './postgres_helper'
2
+
3
+ def test_app_path
4
+ File.expand_path(File.join(File.dirname(__FILE__), '../spec/dummy'))
5
+ end
6
+
7
+ def reload_application_gemfile
8
+ ENV['BUNDLE_GEMFILE'] = File.expand_path('../../Gemfile', __FILE__)
9
+ end
10
+
11
+ def application_file_path(file)
12
+ File.join test_app_path, file
13
+ end
14
+
15
+ def application_file(file)
16
+ File.read(application_file_path file)
17
+ end
18
+
19
+ def drop_qbrick_scaffold_for(name)
20
+ app_path = test_app_path
21
+ unless File.exist? app_path
22
+ puts "won't destroy scaffold for #{name.inspect} while app #{app_path} doesn't exist."
23
+ return
24
+ end
25
+
26
+ Dir.chdir(app_path) do
27
+ database_name = app_path.split('/').last
28
+ rails "destroy scaffold #{name}"
29
+ rails "destroy scaffold #{name.pluralize}"
30
+ rails "destroy scaffold cms/#{name.pluralize}"
31
+ database = "#{database_name}_test"
32
+ next unless Postgres.database_exists? database
33
+
34
+ Postgres.drop_table database_name, database, name
35
+ end
36
+ end
@@ -0,0 +1,83 @@
1
+ require 'spec_helper'
2
+ require 'features_helper'
3
+ require_relative '../command_wrapper_helper.rb'
4
+
5
+ describe 'rails generate qbrick:custom_model', generator: true do
6
+ let(:cars_controller) { application_file 'app/controllers/cms/cars_controller.rb' }
7
+
8
+ it 'is available in the generated app' do
9
+ cli_output = rails 'generate'
10
+ expect(cli_output).to match(/qbrick:custom_model/)
11
+ end
12
+
13
+ context 'generating a cms resource' do
14
+ before :all do
15
+ rails 'destroy scaffold cms/car'
16
+ rails 'destroy scaffold car'
17
+ `rm -rf #{File.join test_app_path, 'db/migrate/*_cars*'}`
18
+ rails 'generate qbrick:custom_model car tires:integer model:string'
19
+ end
20
+
21
+ after :all do
22
+ drop_qbrick_scaffold_for('car')
23
+ `rm #{File.join test_app_path, 'app/controllers/qbrick/base_controller.rb'}`
24
+ `rm -r #{File.join test_app_path, 'app/views/qbrick'}`
25
+ `rm -r #{File.join test_app_path, 'config/locales/de'}`
26
+ end
27
+
28
+ context 'for the first time' do
29
+ it 'sets up the cms routes namespace' do
30
+ expect(application_file('config/routes.rb')).to match(/namespace :cms do/)
31
+ end
32
+
33
+ it 'generates inherited resource views' do
34
+ views = Dir[File.join(test_app_path, 'app/views/qbrick/base/*.html.haml')]
35
+ views.map! { |v| v.scan(%r{^.+app/views/qbrick/base/(.*).html.haml}).flatten.first.to_sym }
36
+ expected_action_views = [:edit, :index, :new, :_form]
37
+ expect(expected_action_views - views).to be_empty
38
+ end
39
+ end
40
+
41
+ context 'generates a CRUD controller' do
42
+ it 'inherits from the qbrick base controller' do
43
+ expect(application_file('app/controllers/cms/cars_controller.rb')).to match(/Qbrick..BaseController/)
44
+ end
45
+ end
46
+
47
+ it 'generates a model' do
48
+ expect(application_file('app/models/car.rb')).not_to be_nil
49
+ end
50
+
51
+ it 'uses the fields given in the command line to pre-fill editable and index attributes' do
52
+ expect(application_file('app/models/car.rb')).to match('editable_attributes :tires, :model')
53
+ expect(application_file('app/models/car.rb')).to match('index_attributes :tires, :model')
54
+ end
55
+
56
+ it 'generates a migration' do
57
+ expect(Dir.glob("#{test_app_path}/db/migrate/*create*cars*").size).to be 1
58
+ end
59
+
60
+ it 'adds a resource route' do
61
+ expect(application_file('config/routes.rb')).to match(/resources :cars/)
62
+ end
63
+
64
+ it 'does not generate routing specs' do
65
+ routing_spec = File.join(test_app_path, 'spec/routing/cars_routing_spec.rb')
66
+ expect(File.exist? routing_spec).to be(false)
67
+ end
68
+
69
+ it 'does not generate view specs' do
70
+ view_specs = File.join(test_app_path, 'spec/views/cars')
71
+ expect(File.exist? view_specs).to be(false)
72
+ end
73
+
74
+ it 'does not generate controller specs' do
75
+ controller_specs = File.join(test_app_path, 'spec/controllers/cars_controller_spec.rb')
76
+ expect(File.exist? controller_specs).to be(false)
77
+ end
78
+
79
+ it 'does not generate json views' do
80
+ expect(Dir.glob("#{test_app_path}/app/views/cars/*.jbuilder").size).to be 0
81
+ end
82
+ end
83
+ end
@@ -1,24 +1,24 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Kuhsaft::Cms::AdminHelper do
3
+ describe Qbrick::Cms::AdminHelper, type: :helper do
4
4
  describe '#render_language_switch?' do
5
5
  context 'when there is one language' do
6
6
  before do
7
- I18n.stub(:available_locales).and_return([:de])
7
+ allow(I18n).to receive(:available_locales).and_return([:de])
8
8
  end
9
9
 
10
10
  it 'returns false' do
11
- helper.render_language_switch?.should be_false
11
+ expect(helper.render_language_switch?).to be_falsey
12
12
  end
13
13
  end
14
14
 
15
15
  context 'when there are multiple languages' do
16
16
  before do
17
- I18n.stub(:available_locales).and_return([:de, :en])
17
+ allow(I18n).to receive(:available_locales).and_return([:de, :en])
18
18
  end
19
19
 
20
20
  it 'returns true' do
21
- helper.render_language_switch?.should be_true
21
+ expect(helper.render_language_switch?).to be_truthy
22
22
  end
23
23
  end
24
24
  end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Kuhsaft::Cms::PagesHelper do
3
+ describe Qbrick::Cms::PagesHelper, type: :helper do
4
4
  describe '#content_tab_active' do
5
5
  it 'returns active when page has a title and no errors' do
6
6
  @page = create(:page, title: 'Page 1', slug: 'page1')
@@ -28,19 +28,19 @@ describe Kuhsaft::Cms::PagesHelper do
28
28
  it 'has a page without translations' do
29
29
  @page = create(:page, title: 'Page 1', slug: 'page1')
30
30
  I18n.with_locale :de do
31
- expect(helper.hide_content_tab?(@page)).to be_true
31
+ expect(helper.hide_content_tab?(@page)).to be_truthy
32
32
  end
33
33
  end
34
34
 
35
35
  it 'has a redirect page' do
36
36
  @page = create(:page, title: 'Page 1', slug: 'page1',
37
- page_type: Kuhsaft::PageType::REDIRECT, redirect_url: 'en/references')
38
- expect(helper.hide_content_tab?(@page)).to be_true
37
+ page_type: Qbrick::PageType::REDIRECT, redirect_url: 'en/references')
38
+ expect(helper.hide_content_tab?(@page)).to be_truthy
39
39
  end
40
40
 
41
41
  it 'has a not saved page' do
42
- @page = Kuhsaft::Page.new
43
- expect(helper.hide_content_tab?(@page)).to be_true
42
+ @page = Qbrick::Page.new
43
+ expect(helper.hide_content_tab?(@page)).to be_truthy
44
44
  end
45
45
  end
46
46
  end
@@ -1,14 +1,13 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe PagesHelper do
3
+ describe PagesHelper, type: :helper do
4
4
  describe '#search_page_form' do
5
-
6
5
  context 'without block' do
7
6
  it 'renders the default search form' do
8
7
  form = search_page_form
9
- form.should have_css('form.form-inline')
10
- form.should have_css('input[type=text]')
11
- form.should have_css('input[type=submit]')
8
+ expect(form).to have_css('form.form-inline')
9
+ expect(form).to have_css('input[type=text]')
10
+ expect(form).to have_css('input[type=submit]')
12
11
  end
13
12
  end
14
13
 
@@ -1,9 +1,9 @@
1
1
  require 'spec_helper'
2
+ require 'rspec/active_model/mocks'
2
3
 
3
- describe Kuhsaft::BrickList do
4
-
4
+ describe Qbrick::BrickList do
5
5
  class TestBrick
6
- include Kuhsaft::BrickList
6
+ include Qbrick::BrickList
7
7
  end
8
8
 
9
9
  let :brick do
@@ -13,21 +13,22 @@ describe Kuhsaft::BrickList do
13
13
  describe '#collect_fulltext' do
14
14
  context 'with bricks' do
15
15
  it 'collects its childs fulltext' do
16
- brick.stub_chain(:bricks, :localized).and_return([mock_model(Kuhsaft::Brick, collect_fulltext: 'hallo')])
17
- brick.collect_fulltext.should == 'hallo'
16
+ result = [mock_model(Qbrick::Brick, collect_fulltext: 'hallo')]
17
+ allow(brick).to receive_message_chain(:bricks, :localized).and_return(result)
18
+ expect(brick.collect_fulltext).to eq('hallo')
18
19
  end
19
20
  end
20
21
 
21
22
  context 'with bricks without content' do
22
23
  it 'returns a string' do
23
- brick.stub_chain(:bricks, :localized).and_return([])
24
- brick.collect_fulltext.should == ''
24
+ allow(brick).to receive_message_chain(:bricks, :localized).and_return([])
25
+ expect(brick.collect_fulltext).to eq('')
25
26
  end
26
27
  end
27
28
 
28
29
  context 'without bricks' do
29
30
  it 'returns a string' do
30
- brick.collect_fulltext.should == ''
31
+ expect(brick.collect_fulltext).to eq('')
31
32
  end
32
33
 
33
34
  it 'does not fail' do
@@ -38,13 +39,13 @@ describe Kuhsaft::BrickList do
38
39
 
39
40
  describe '#allowed_brick_types' do
40
41
  it 'returns an array of possible classes as strings' do
41
- brick.allowed_brick_types.should be_a(Array)
42
+ expect(brick.allowed_brick_types).to be_a(Array)
42
43
  end
43
44
  end
44
45
 
45
46
  describe '#brick_types' do
46
- it 'returns a Kuhsaft::BrickTypeFilter' do
47
- brick.brick_types.should be_a(Kuhsaft::BrickTypeFilter)
47
+ it 'returns a Qbrick::BrickTypeFilter' do
48
+ expect(brick.brick_types).to be_a(Qbrick::BrickTypeFilter)
48
49
  end
49
50
  end
50
51
  end
@@ -1,25 +1,21 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Kuhsaft::Engine do
4
-
3
+ describe Qbrick::Engine do
5
4
  describe '.configure' do
6
-
7
5
  describe '.image_sizes' do
8
6
  it 'delegates .clear to ImageSize' do
9
- Kuhsaft::ImageSize.should_receive(:clear!)
10
- Kuhsaft::Engine.configure do
7
+ expect(Qbrick::ImageSize).to receive(:clear!)
8
+ Qbrick::Engine.configure do
11
9
  config.image_sizes.clear!
12
10
  end
13
11
  end
14
12
 
15
13
  it 'delegates .add to ImageSize' do
16
- Kuhsaft::ImageSize.should_receive(:add).with(:something, 100, 200)
17
- Kuhsaft::Engine.configure do
14
+ expect(Qbrick::ImageSize).to receive(:add).with(:something, 100, 200)
15
+ Qbrick::Engine.configure do
18
16
  config.image_sizes.add(:something, 100, 200)
19
17
  end
20
18
  end
21
19
  end
22
-
23
20
  end
24
-
25
21
  end