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
@@ -1,13 +1,13 @@
1
1
  require 'rails/generators'
2
2
 
3
- module Kuhsaft
3
+ module Qbrick
4
4
  module Assets
5
5
  class Install < Rails::Generators::Base
6
- source_root(File.join(Kuhsaft::Engine.root, '/lib/templates/kuhsaft/assets'))
6
+ source_root(File.join(Qbrick::Engine.root, '/lib/templates/qbrick/assets'))
7
7
 
8
8
  def copy_customizations
9
- custom_css_folder = 'app/assets/stylesheets/kuhsaft/cms/'
10
- custom_js_folder = 'app/assets/javascripts/kuhsaft/cms/'
9
+ custom_css_folder = 'app/assets/stylesheets/qbrick/cms/'
10
+ custom_js_folder = 'app/assets/javascripts/qbrick/cms/'
11
11
 
12
12
  empty_directory custom_css_folder
13
13
  empty_directory custom_js_folder
@@ -17,7 +17,7 @@ module Kuhsaft
17
17
  copy_file 'ck-config.js.coffee', "#{custom_js_folder}/ck-config.js.coffee"
18
18
 
19
19
  inject_into_file 'config/environments/production.rb', after: /config\.assets\.precompile.*$/ do
20
- "\n config.assets.precompile += %w( kuhsaft/cms/customizations.css kuhsaft/cms/customizations.js )"
20
+ "\n config.assets.precompile += %w( qbrick/cms/customizations.css qbrick/cms/customizations.js )"
21
21
  end
22
22
  end
23
23
  end
@@ -0,0 +1,117 @@
1
+ require 'rails/generators'
2
+
3
+ module Qbrick
4
+ class CustomModelGenerator < Rails::Generators::NamedBase
5
+ def source_paths
6
+ [
7
+ File.join(File.dirname(__FILE__), '../../../app/views/qbrick/cms/backend/'),
8
+ File.join(File.dirname(__FILE__), '../../templates/qbrick/', self.class.name.demodulize.underscore)
9
+ ]
10
+ end
11
+
12
+ def set_up_custom_models_base
13
+ return if custom_models_base_already_installed?
14
+
15
+ setup_base_controller
16
+ setup_base_views
17
+ setup_navigation
18
+ setup_translation_file
19
+ end
20
+
21
+ def add_route
22
+ generate 'resource_route', resource_route_name
23
+ end
24
+
25
+ def add_navigation_link
26
+ nav_file = 'app/views/qbrick/cms/backend/_main_navigation.html.haml'
27
+
28
+ inject_into_file nav_file, after: '%li= link_to Qbrick::Page.model_name.human(:count => 2), qbrick.cms_pages_path' do
29
+ "\n %li= link_to t('cms.navigation_title.#{model_name}'), #{route_name}_path"
30
+ end
31
+ end
32
+
33
+ def add_model_and_migration
34
+ generate 'model', model_name, ARGV[1..-1].join(' '), '--no-test-framework'
35
+ inject_into_file "app/models/#{model_name}.rb", before: 'class' do
36
+ "require 'qbrick/cms_model'\n\n"
37
+ end
38
+
39
+ inject_into_file "app/models/#{model_name}.rb", before: 'end' do
40
+ <<-eos.gsub(/^ {8}/, '').chomp
41
+ include Qbrick::CMSModel
42
+
43
+ # TODO: Define what attributes are shown in the form and permitted by strong parameters
44
+ editable_attributes #{attribute_keys_as_string}
45
+
46
+ # TODO: Define what attributes are shown in the index view
47
+ index_attributes #{attribute_keys_as_string}
48
+
49
+ eos
50
+ end
51
+ end
52
+
53
+ def add_resource_translations
54
+ I18n.available_locales.each do |locale|
55
+ I18n.with_locale(locale) do
56
+ template 'translations/resource.yml.erb', "config/locales/#{locale}/#{model_name}.yml"
57
+ end
58
+ end
59
+ end
60
+
61
+ def add_controller
62
+ generate 'controller', controller_name, '--no-helper --no-assets --no-test-framework'
63
+ gsub_file "app/controllers/#{controller_name}_controller.rb", 'ApplicationController', 'Qbrick::BaseController'
64
+ end
65
+
66
+ private
67
+
68
+ def custom_models_base_already_installed?
69
+ File.exist?('app/controllers/qbrick/base_controller.rb') && File.exist?('app/views/qbrick/cms/backend/_main_navigation.html.haml')
70
+ end
71
+
72
+ def setup_base_controller
73
+ empty_directory 'app/controllers/qbrick'
74
+ template 'base_controller.rb', 'app/controllers/qbrick/base_controller.rb'
75
+ end
76
+
77
+ def setup_base_views
78
+ directory 'inherited_views', 'app/views/qbrick'
79
+ end
80
+
81
+ def setup_navigation
82
+ nav_dir = 'app/views/qbrick/cms/backend'
83
+ empty_directory nav_dir
84
+
85
+ copy_file '_main_navigation.html.haml', "#{nav_dir}/_main_navigation.html.haml"
86
+ end
87
+
88
+ def setup_translation_file
89
+ empty_directory 'config/locales/de'
90
+ copy_file 'translations/qbrick_base.yml', 'config/locales/de/qbrick_base.yml'
91
+ end
92
+
93
+ def resource_route_name
94
+ "cms/#{model_name}"
95
+ end
96
+
97
+ def model_name
98
+ ARGV.first.downcase
99
+ end
100
+
101
+ def controller_name
102
+ "cms/#{model_name.pluralize}"
103
+ end
104
+
105
+ def route_name
106
+ controller_name.gsub('/', '_')
107
+ end
108
+
109
+ def attributes
110
+ ARGV[1..-1].map { |x| x.split(':').first }
111
+ end
112
+
113
+ def attribute_keys_as_string
114
+ ARGV[1..-1].map { |a| ":#{a.split(':').first}" }.join(', ')
115
+ end
116
+ end
117
+ end
@@ -2,12 +2,12 @@ require 'rails/generators'
2
2
  require 'rails/generators/migration'
3
3
  require 'rails/generators/active_record'
4
4
 
5
- module Kuhsaft
5
+ module Qbrick
6
6
  module Translations
7
7
  class Add < Rails::Generators::Base
8
8
  include Rails::Generators::Migration
9
9
 
10
- source_root(File.join(Kuhsaft::Engine.root, '/lib/templates/kuhsaft/translations'))
10
+ source_root(File.join(Qbrick::Engine.root, '/lib/templates/qbrick/translations'))
11
11
  argument :locale, type: :string
12
12
 
13
13
  def self.next_migration_number(dirname)
@@ -15,7 +15,7 @@ module Kuhsaft
15
15
  end
16
16
 
17
17
  def translated_columns
18
- Kuhsaft::Page.column_names.select { |attr| attr.end_with? "_#{I18n.default_locale}" }
18
+ Qbrick::Page.column_names.select { |attr| attr.end_with? "_#{I18n.default_locale}" }
19
19
  end
20
20
 
21
21
  def formatted_locale
@@ -34,7 +34,7 @@ module Kuhsaft
34
34
  end
35
35
 
36
36
  def get_type(key = '')
37
- Kuhsaft::Page.columns_hash[key].type
37
+ Qbrick::Page.columns_hash[key].type
38
38
  end
39
39
  end
40
40
  end
data/lib/qbrick.rb ADDED
@@ -0,0 +1,24 @@
1
+ module Qbrick
2
+ require 'devise'
3
+ require 'qbrick/engine'
4
+ require 'qbrick/orderable'
5
+ require 'qbrick/image_uploader_mounting'
6
+ require 'qbrick/translatable'
7
+ require 'qbrick/searchable'
8
+ require 'qbrick/gridded'
9
+ require 'qbrick/brick_list'
10
+ require 'qbrick/partial_extractor'
11
+ require 'qbrick/touch_placeholders'
12
+ require 'simple_form'
13
+ require 'carrierwave'
14
+ require 'rdiscount'
15
+ require 'bourbon'
16
+ require 'jquery-rails'
17
+ require 'jquery-ui-rails'
18
+ require 'remotipart'
19
+ require 'ancestry'
20
+ require 'bootstrap-sass'
21
+ require 'haml'
22
+ require 'ckeditor_rails'
23
+ require 'inherited_resources'
24
+ end
@@ -1,9 +1,9 @@
1
- module Kuhsaft
1
+ module Qbrick
2
2
  module BrickList
3
3
  def self.included(base)
4
4
  def base.acts_as_brick_list
5
5
  has_many :bricks,
6
- class_name: 'Kuhsaft::Brick',
6
+ class_name: 'Qbrick::Brick',
7
7
  dependent: :destroy,
8
8
  as: :brick_list
9
9
  end
@@ -77,7 +77,7 @@ module Kuhsaft
77
77
  # Returns all possible brick types which can be added as child to this brick list instance
78
78
  #
79
79
  def brick_types
80
- @brick_types ||= Kuhsaft::BrickTypeFilter.new(self)
80
+ @brick_types ||= Qbrick::BrickTypeFilter.new(self)
81
81
  end
82
82
 
83
83
  def uploader?
@@ -1,17 +1,17 @@
1
- module Kuhsaft
1
+ module Qbrick
2
2
  class ImageSizeDelegator
3
3
  def method_missing(method, *args, &block)
4
- Kuhsaft::ImageSize.send(method, *args, &block)
4
+ Qbrick::ImageSize.send(method, *args, &block)
5
5
  rescue NoMethodError
6
6
  super
7
7
  end
8
8
  end
9
9
 
10
10
  class Engine < ::Rails::Engine
11
- isolate_namespace Kuhsaft
11
+ isolate_namespace Qbrick
12
12
 
13
13
  config.i18n.fallbacks = [:de]
14
- config.i18n.load_path += Dir[Kuhsaft::Engine.root.join('config', 'locales', '**', '*.{yml}').to_s]
14
+ config.i18n.load_path += Dir[Qbrick::Engine.root.join('config', 'locales', '**', '*.{yml}').to_s]
15
15
 
16
16
  # defaults to nil
17
17
  config.sublime_video_token = nil
@@ -19,7 +19,7 @@ module Kuhsaft
19
19
  # delegate image size config to ImageSize class
20
20
  config.image_sizes = ImageSizeDelegator.new
21
21
 
22
- initializer 'kuhsaft.initialize_haml_dependency_tracker' do
22
+ initializer 'qbrick.initialize_haml_dependency_tracker' do
23
23
  require 'action_view/dependency_tracker'
24
24
  ActionView::DependencyTracker.register_tracker :haml, ActionView::DependencyTracker::ERBTracker
25
25
  end
@@ -1,4 +1,4 @@
1
- module Kuhsaft
1
+ module Qbrick
2
2
  module Gridded
3
3
  def self.included(base)
4
4
  base.extend(ClassMethods)
@@ -1,14 +1,14 @@
1
1
  require 'carrierwave'
2
2
  require 'active_support/concern'
3
3
 
4
- module Kuhsaft
4
+ module Qbrick
5
5
  module ImageUploaderMounting
6
6
  extend ActiveSupport::Concern
7
7
 
8
8
  included do
9
9
  extend CarrierWave::Mount
10
10
 
11
- mount_uploader :image, Kuhsaft::ImageBrickImageUploader
11
+ mount_uploader :image, Qbrick::ImageBrickImageUploader
12
12
 
13
13
  after_save :resize_image_if_size_changed
14
14
 
@@ -1,4 +1,4 @@
1
- module Kuhsaft
1
+ module Qbrick
2
2
  # If you use this mixin, your class must implement the following methods
3
3
  # siblings(), returns the siblings of the same type of object
4
4
 
@@ -1,4 +1,4 @@
1
- module Kuhsaft
1
+ module Qbrick
2
2
  module PageTree
3
3
  extend self
4
4
 
@@ -1,4 +1,4 @@
1
- module Kuhsaft
1
+ module Qbrick
2
2
  class PartialExtractor
3
3
  def extract_filenames(partial_paths)
4
4
  partials = []
@@ -1,13 +1,15 @@
1
1
  require 'active_support/concern'
2
2
  require 'pg_search'
3
3
 
4
- module Kuhsaft
4
+ module Qbrick
5
5
  module Searchable
6
6
  extend ActiveSupport::Concern
7
7
 
8
8
  DICTIONARIES = {
9
9
  en: 'english',
10
- de: 'german'
10
+ de: 'german',
11
+ :'de-AT' => 'german',
12
+ :'de-CH' => 'german'
11
13
  }
12
14
 
13
15
  def update_fulltext
@@ -16,7 +18,7 @@ module Kuhsaft
16
18
 
17
19
  included do
18
20
  unless included_modules.include?(BrickList)
19
- raise 'Kuhsaft::Searchable needs Kuhsaft::BrickList to be included'
21
+ raise 'Qbrick::Searchable needs Qbrick::BrickList to be included'
20
22
  end
21
23
 
22
24
  translate :fulltext if included_modules.include?(Translatable)
@@ -1,6 +1,6 @@
1
- require_relative '../../app/models/kuhsaft/placeholder_brick'
1
+ require_relative '../../app/models/qbrick/placeholder_brick'
2
2
 
3
- module Kuhsaft
3
+ module Qbrick
4
4
  module TouchPlaceholders
5
5
  def self.included(base)
6
6
  base.extend(ClassMethods)
@@ -13,8 +13,8 @@ module Kuhsaft
13
13
  def touch_placeholders
14
14
  return unless self.class.placeholder_templates.present?
15
15
  self.class.placeholder_templates.each do |template_name|
16
- related_templates = Kuhsaft::PlaceholderBrick.where(template_name: template_name)
17
- related_templates.each { |p| p.touch } if related_templates
16
+ related_templates = Qbrick::PlaceholderBrick.where(template_name: template_name)
17
+ related_templates.each(&:touch) if related_templates
18
18
  end
19
19
  end
20
20
 
@@ -1,4 +1,4 @@
1
- module Kuhsaft
1
+ module Qbrick
2
2
  module Translatable
3
3
  def self.included(base)
4
4
  base.extend ClassMethods
@@ -0,0 +1,3 @@
1
+ module Qbrick
2
+ VERSION = '2.5.0'
3
+ end
@@ -1,18 +1,18 @@
1
- namespace :kuhsaft do
1
+ namespace :qbrick do
2
2
  namespace :db do
3
- desc "Load kuhsaft seeds"
3
+ desc "Load qbrick seeds"
4
4
  task :seed => :environment do
5
- Kuhsaft::Engine.load_seed
5
+ Qbrick::Engine.load_seed
6
6
  end
7
7
  end
8
8
  end
9
9
 
10
- Rake::Task['db:seed'].enhance ['kuhsaft:db:seed']
10
+ Rake::Task['db:seed'].enhance ['qbrick:db:seed']
11
11
 
12
12
  desc "Create nondigest versions of all ckeditor digest assets"
13
13
  task "assets:precompile" do
14
14
  fingerprint = /\-[0-9a-f]{32}\./
15
- for file in Dir["public/assets/kuhsaft/cms/ck-config*"]
15
+ for file in Dir["public/assets/qbrick/cms/ck-config*"]
16
16
  next unless file =~ fingerprint
17
17
  nondigest = file.sub fingerprint, '.'
18
18
  if !File.exist?(nondigest) or File.mtime(file) > File.mtime(nondigest)
@@ -0,0 +1,17 @@
1
+ module Qbrick
2
+ class BaseController < Qbrick::Cms::BackendController
3
+ inherit_resources
4
+
5
+ def show
6
+ super do |format|
7
+ format.html { redirect_to collection_path }
8
+ end
9
+ end
10
+
11
+ private
12
+
13
+ def permitted_params
14
+ params.permit(resource_instance_name => collection.editable_attributes)
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,12 @@
1
+ = simple_form_for([:cms, resource], wrapper: :bootstrap) do |f|
2
+ = f.error_notification
3
+
4
+ .form-inputs
5
+ - resource.class.editable_attributes.each do |column_name|
6
+ - if column_name.to_s.end_with? '_id'
7
+ = f.association column_name.to_s.gsub(/_id$/, '').to_sym
8
+ - else
9
+ = f.input column_name
10
+
11
+ .form-actions
12
+ = f.button :submit
@@ -0,0 +1,5 @@
1
+ %h1= t("cms.edit_title", singular_name: resource_class.model_name.human)
2
+
3
+ = render 'form'
4
+
5
+ = link_to t('cms.back'), collection_path
@@ -0,0 +1,28 @@
1
+ %h1= t("cms.index_title", plural_name: resource_class.model_name.human(count: 2))
2
+
3
+ .row-fluid.actions
4
+ .pull-right.padded
5
+ = link_to new_resource_path, :class => 'btn btn-primary' do
6
+ %i.icon-plus-sign.icon-white
7
+ = t("cms.#{resource_collection_name}.new", plural_name: resource_class.model_name.human, default: t('cms.default.new'))
8
+
9
+ %table.table.table-bordered.table-striped
10
+ %thead
11
+ %tr
12
+ - collection.index_attributes.each do |column_name|
13
+ %th= collection.human_attribute_name column_name
14
+ %th
15
+ %th
16
+
17
+ %tbody
18
+ - collection.each do |item|
19
+ %tr
20
+ - collection.index_attributes.each do |column_name|
21
+ %td= item.send(column_name)
22
+ %td= link_to t("cms.edit"), edit_resource_path(item)
23
+ %td
24
+ =link_to resource_path(item), method: :delete, data: { confirm: t('cms.are_you_sure') }, class: 'btn btn-small btn-danger' do
25
+ %i.icon-trash.icon-white
26
+ =t('cms.destroy')
27
+
28
+ %br