qbrick 2.5.0.pre

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 (297) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +423 -0
  3. data/Rakefile +82 -0
  4. data/app/assets/javascripts/ckeditor/plugins/adv_link/LICENSE.txt +674 -0
  5. data/app/assets/javascripts/ckeditor/plugins/adv_link/README.md +62 -0
  6. data/app/assets/javascripts/ckeditor/plugins/adv_link/dialogs/anchor.js.coffee +81 -0
  7. data/app/assets/javascripts/ckeditor/plugins/adv_link/dialogs/link.js.coffee +1353 -0
  8. data/app/assets/javascripts/ckeditor/plugins/adv_link/images/anchor.png +0 -0
  9. data/app/assets/javascripts/ckeditor/plugins/adv_link/images/hidpi/anchor.png +0 -0
  10. data/app/assets/javascripts/ckeditor/plugins/adv_link/lang/de.js +68 -0
  11. data/app/assets/javascripts/ckeditor/plugins/adv_link/lang/en.js +68 -0
  12. data/app/assets/javascripts/ckeditor/plugins/adv_link/plugin.js.coffee +282 -0
  13. data/app/assets/javascripts/kuhsaft/application.js.coffee +7 -0
  14. data/app/assets/javascripts/kuhsaft/cms/application.js.coffee.erb +136 -0
  15. data/app/assets/javascripts/kuhsaft/views/read_more_view.js.coffee +17 -0
  16. data/app/assets/stylesheets/kuhsaft/application.css.sass +1 -0
  17. data/app/assets/stylesheets/kuhsaft/cms/application.css.sass +204 -0
  18. data/app/assets/stylesheets/kuhsaft/modules/_text_brick.css.sass +16 -0
  19. data/app/controllers/kuhsaft/api/pages_controller.rb +14 -0
  20. data/app/controllers/kuhsaft/cms/admin_controller.rb +18 -0
  21. data/app/controllers/kuhsaft/cms/assets_controller.rb +38 -0
  22. data/app/controllers/kuhsaft/cms/bricks_controller.rb +61 -0
  23. data/app/controllers/kuhsaft/cms/ckimages_controller.rb +26 -0
  24. data/app/controllers/kuhsaft/cms/pages_controller.rb +71 -0
  25. data/app/controllers/kuhsaft/pages_controller.rb +38 -0
  26. data/app/controllers/kuhsaft/sitemaps_controller.rb +12 -0
  27. data/app/helpers/cms_helper.rb +27 -0
  28. data/app/helpers/kuhsaft/admin_helper.rb +20 -0
  29. data/app/helpers/kuhsaft/cms/admin_helper.rb +21 -0
  30. data/app/helpers/kuhsaft/cms/pages_helper.rb +17 -0
  31. data/app/helpers/pages_helper.rb +49 -0
  32. data/app/helpers/sitemaps_helper.rb +12 -0
  33. data/app/models/kuhsaft/accordion_brick.rb +15 -0
  34. data/app/models/kuhsaft/accordion_item_brick.rb +21 -0
  35. data/app/models/kuhsaft/anchor_brick.rb +17 -0
  36. data/app/models/kuhsaft/asset.rb +29 -0
  37. data/app/models/kuhsaft/asset_brick.rb +26 -0
  38. data/app/models/kuhsaft/brick.rb +137 -0
  39. data/app/models/kuhsaft/brick_type.rb +7 -0
  40. data/app/models/kuhsaft/brick_type_filter.rb +18 -0
  41. data/app/models/kuhsaft/ckimage.rb +5 -0
  42. data/app/models/kuhsaft/cms.rb +7 -0
  43. data/app/models/kuhsaft/column_brick.rb +22 -0
  44. data/app/models/kuhsaft/image_brick.rb +16 -0
  45. data/app/models/kuhsaft/image_size.rb +51 -0
  46. data/app/models/kuhsaft/link_brick.rb +21 -0
  47. data/app/models/kuhsaft/page.rb +160 -0
  48. data/app/models/kuhsaft/page_type.rb +11 -0
  49. data/app/models/kuhsaft/partition.rb +18 -0
  50. data/app/models/kuhsaft/placeholder_brick.rb +23 -0
  51. data/app/models/kuhsaft/publish_state.rb +24 -0
  52. data/app/models/kuhsaft/slider_brick.rb +18 -0
  53. data/app/models/kuhsaft/text_brick.rb +23 -0
  54. data/app/models/kuhsaft/two_column_brick.rb +46 -0
  55. data/app/models/kuhsaft/video_brick.rb +22 -0
  56. data/app/uploaders/kuhsaft/asset_brick_asset_uploader.rb +43 -0
  57. data/app/uploaders/kuhsaft/asset_uploader.rb +50 -0
  58. data/app/uploaders/kuhsaft/ckimage_uploader.rb +16 -0
  59. data/app/uploaders/kuhsaft/image_brick_image_uploader.rb +35 -0
  60. data/app/views/kuhsaft/accordion_bricks/_accordion_brick.html.haml +3 -0
  61. data/app/views/kuhsaft/accordion_bricks/accordion_brick/_edit.html.haml +0 -0
  62. data/app/views/kuhsaft/accordion_item_bricks/_accordion_item_brick.html.haml +8 -0
  63. data/app/views/kuhsaft/accordion_item_bricks/accordion_item_brick/_edit.html.haml +1 -0
  64. data/app/views/kuhsaft/anchor_bricks/_anchor_brick.html.haml +1 -0
  65. data/app/views/kuhsaft/anchor_bricks/anchor_brick/_edit.html.haml +1 -0
  66. data/app/views/kuhsaft/asset_bricks/_asset_brick.html.haml +2 -0
  67. data/app/views/kuhsaft/asset_bricks/asset_brick/_edit.html.haml +8 -0
  68. data/app/views/kuhsaft/cms/admin/_brick_type_dropdown.html.haml +14 -0
  69. data/app/views/kuhsaft/cms/admin/_content_language_switch.html.haml +7 -0
  70. data/app/views/kuhsaft/cms/admin/_empty_state.html.haml +5 -0
  71. data/app/views/kuhsaft/cms/admin/_flash.html.haml +7 -0
  72. data/app/views/kuhsaft/cms/admin/_main_navigation.html.haml +6 -0
  73. data/app/views/kuhsaft/cms/assets/_form.html.haml +15 -0
  74. data/app/views/kuhsaft/cms/assets/_list.html.haml +11 -0
  75. data/app/views/kuhsaft/cms/assets/edit.html.haml +2 -0
  76. data/app/views/kuhsaft/cms/assets/index.html.haml +3 -0
  77. data/app/views/kuhsaft/cms/assets/new.html.haml +2 -0
  78. data/app/views/kuhsaft/cms/bricks/_brick_header.html.haml +43 -0
  79. data/app/views/kuhsaft/cms/bricks/_brick_item.html.haml +25 -0
  80. data/app/views/kuhsaft/cms/bricks/_brick_list.html.haml +4 -0
  81. data/app/views/kuhsaft/cms/bricks/_new.html.haml +41 -0
  82. data/app/views/kuhsaft/cms/bricks/_sort_form.html.haml +3 -0
  83. data/app/views/kuhsaft/cms/bricks/create.js.erb +11 -0
  84. data/app/views/kuhsaft/cms/bricks/destroy.js.erb +10 -0
  85. data/app/views/kuhsaft/cms/bricks/new.js.erb +14 -0
  86. data/app/views/kuhsaft/cms/bricks/update.js.erb +8 -0
  87. data/app/views/kuhsaft/cms/ckimages/create.html.haml +11 -0
  88. data/app/views/kuhsaft/cms/ckimages/destroy.js.erb +2 -0
  89. data/app/views/kuhsaft/cms/ckimages/index.html.haml +13 -0
  90. data/app/views/kuhsaft/cms/pages/_branch.html.haml +19 -0
  91. data/app/views/kuhsaft/cms/pages/_form.html.haml +45 -0
  92. data/app/views/kuhsaft/cms/pages/edit.html.haml +16 -0
  93. data/app/views/kuhsaft/cms/pages/index.html.haml +14 -0
  94. data/app/views/kuhsaft/cms/pages/new.html.haml +1 -0
  95. data/app/views/kuhsaft/cms/pages/show.html.haml +0 -0
  96. data/app/views/kuhsaft/cms/pages/sort.js.erb +0 -0
  97. data/app/views/kuhsaft/column_bricks/_column_brick.html.haml +3 -0
  98. data/app/views/kuhsaft/column_bricks/column_brick/_edit.html.haml +0 -0
  99. data/app/views/kuhsaft/image_bricks/_image_brick.html.haml +11 -0
  100. data/app/views/kuhsaft/image_bricks/image_brick/_edit.html.haml +13 -0
  101. data/app/views/kuhsaft/link_bricks/_link_brick.html.haml +2 -0
  102. data/app/views/kuhsaft/link_bricks/link_brick/_edit.html.haml +4 -0
  103. data/app/views/kuhsaft/pages/index.html.haml +7 -0
  104. data/app/views/kuhsaft/pages/show.html.haml +11 -0
  105. data/app/views/kuhsaft/placeholder_bricks/_placeholder_brick.html.haml +2 -0
  106. data/app/views/kuhsaft/placeholder_bricks/placeholder_brick/_edit.html.haml +1 -0
  107. data/app/views/kuhsaft/search/_form.html.haml +2 -0
  108. data/app/views/kuhsaft/search/_results.html.haml +8 -0
  109. data/app/views/kuhsaft/search/_results_entry.html.haml +13 -0
  110. data/app/views/kuhsaft/sitemaps/index.xml.haml +9 -0
  111. data/app/views/kuhsaft/slider_bricks/_slider_brick.html.haml +10 -0
  112. data/app/views/kuhsaft/slider_bricks/slider_brick/_edit.html.haml +0 -0
  113. data/app/views/kuhsaft/text_bricks/_text_brick.html.haml +11 -0
  114. data/app/views/kuhsaft/text_bricks/text_brick/_edit.html.haml +2 -0
  115. data/app/views/kuhsaft/two_column_bricks/_two_column_brick.html.haml +3 -0
  116. data/app/views/kuhsaft/two_column_bricks/two_column_brick/_childs.html.haml +5 -0
  117. data/app/views/kuhsaft/two_column_bricks/two_column_brick/_edit.html.haml +1 -0
  118. data/app/views/kuhsaft/video_bricks/_video_brick.html.haml +9 -0
  119. data/app/views/kuhsaft/video_bricks/video_brick/_edit.html.haml +8 -0
  120. data/app/views/layouts/kuhsaft/cms/application.html.haml +25 -0
  121. data/app/views/layouts/kuhsaft/cms/ckimages.html.haml +18 -0
  122. data/config/initializers/simple_form.rb +142 -0
  123. data/config/initializers/simple_form_bootstrap.rb +45 -0
  124. data/config/locales/de.yml +207 -0
  125. data/config/locales/en.yml +211 -0
  126. data/config/locales/models/kuhsaft/accordion_brick/de.yml +4 -0
  127. data/config/locales/models/kuhsaft/accordion_brick/en.yml +4 -0
  128. data/config/locales/models/kuhsaft/accordion_item_brick/de.yml +7 -0
  129. data/config/locales/models/kuhsaft/accordion_item_brick/en.yml +7 -0
  130. data/config/locales/models/kuhsaft/anchor_brick/de.yml +7 -0
  131. data/config/locales/models/kuhsaft/anchor_brick/en.yml +7 -0
  132. data/config/locales/models/kuhsaft/asset_brick/de.yml +9 -0
  133. data/config/locales/models/kuhsaft/asset_brick/en.yml +9 -0
  134. data/config/locales/models/kuhsaft/brick/de.yml +5 -0
  135. data/config/locales/models/kuhsaft/brick/en.yml +5 -0
  136. data/config/locales/models/kuhsaft/column_brick/de.yml +4 -0
  137. data/config/locales/models/kuhsaft/column_brick/en.yml +4 -0
  138. data/config/locales/models/kuhsaft/image_brick/de.yml +11 -0
  139. data/config/locales/models/kuhsaft/image_brick/en.yml +11 -0
  140. data/config/locales/models/kuhsaft/image_size/de.yml +13 -0
  141. data/config/locales/models/kuhsaft/image_size/en.yml +13 -0
  142. data/config/locales/models/kuhsaft/link_brick/de.yml +10 -0
  143. data/config/locales/models/kuhsaft/link_brick/en.yml +10 -0
  144. data/config/locales/models/kuhsaft/page/de.yml +19 -0
  145. data/config/locales/models/kuhsaft/page/en.yml +19 -0
  146. data/config/locales/models/kuhsaft/placeholder_brick/de.yml +8 -0
  147. data/config/locales/models/kuhsaft/placeholder_brick/en.yml +8 -0
  148. data/config/locales/models/kuhsaft/slider_brick/de.yml +4 -0
  149. data/config/locales/models/kuhsaft/slider_brick/en.yml +4 -0
  150. data/config/locales/models/kuhsaft/text_brick/de.yml +11 -0
  151. data/config/locales/models/kuhsaft/text_brick/en.yml +11 -0
  152. data/config/locales/models/kuhsaft/two_column_brick/de.yml +7 -0
  153. data/config/locales/models/kuhsaft/two_column_brick/en.yml +7 -0
  154. data/config/locales/models/kuhsaft/video_brick/de.yml +9 -0
  155. data/config/locales/models/kuhsaft/video_brick/en.yml +9 -0
  156. data/config/locales/simple_form.en.yml +26 -0
  157. data/config/locales/views/kuhsaft/cms/admin/de.yml +13 -0
  158. data/config/locales/views/kuhsaft/cms/admin/en.yml +12 -0
  159. data/config/locales/views/kuhsaft/cms/bricks/de.yml +18 -0
  160. data/config/locales/views/kuhsaft/cms/bricks/en.yml +18 -0
  161. data/config/locales/views/kuhsaft/cms/pages/de.yml +31 -0
  162. data/config/locales/views/kuhsaft/cms/pages/en.yml +31 -0
  163. data/config/locales/views/kuhsaft/image_brick/de.yml +6 -0
  164. data/config/locales/views/kuhsaft/image_brick/en.yml +6 -0
  165. data/config/locales/views/kuhsaft/search/de.yml +12 -0
  166. data/config/locales/views/kuhsaft/search/en.yml +12 -0
  167. data/config/locales/views/kuhsaft/text_brick/de.yml +6 -0
  168. data/config/locales/views/kuhsaft/text_brick/en.yml +6 -0
  169. data/config/locales/views/kuhsaft/video_brick/de.yml +7 -0
  170. data/config/locales/views/kuhsaft/video_brick/en.yml +7 -0
  171. data/config/routes.rb +30 -0
  172. data/db/migrate/01_create_kuhsaft_pages.rb +31 -0
  173. data/db/migrate/02_create_kuhsaft_bricks.rb +23 -0
  174. data/db/migrate/03_create_kuhsaft_brick_types.rb +12 -0
  175. data/db/migrate/04_create_kuhsaft_assets.rb +10 -0
  176. data/db/migrate/05_remove_cms_admin.rb +9 -0
  177. data/db/migrate/06_add_template_name_to_kuhsaft_bricks.rb +7 -0
  178. data/db/migrate/07_add_default_value_to_brick_type_enabled.rb +6 -0
  179. data/db/migrate/08_add_display_styles_to_bricks.rb +5 -0
  180. data/db/migrate/09_add_additional_fields_to_kuhsaft_bricks.rb +6 -0
  181. data/db/migrate/10_add_redirect_url_to_kuhsaft_pages.rb +7 -0
  182. data/db/migrate/11_update_url_and_redirect_url_value.rb +45 -0
  183. data/db/migrate/12_regenerate_fulltext.rb +12 -0
  184. data/db/migrate/13_add_page_title_to_pages.rb +7 -0
  185. data/db/migrate/14_move_kuhsaft_assets.rb +22 -0
  186. data/db/migrate/15_add_alt_text_to_bricks.rb +5 -0
  187. data/db/migrate/16_update_default_value_for_page_type.rb +9 -0
  188. data/db/migrate/17_set_page_type_to_content_for_empty_fields.rb +7 -0
  189. data/db/migrate/18_add_identifier_to_kuhsaft_pages.rb +6 -0
  190. data/db/migrate/19_add_col_count_to_bricks.rb +5 -0
  191. data/db/migrate/20_create_kuhsaft_ckimages.rb +9 -0
  192. data/db/seeds.rb +20 -0
  193. data/lib/generators/kuhsaft/assets/install_generator.rb +25 -0
  194. data/lib/generators/kuhsaft/translations/add_generator.rb +41 -0
  195. data/lib/kuhsaft.rb +22 -0
  196. data/lib/kuhsaft/brick_list.rb +87 -0
  197. data/lib/kuhsaft/engine.rb +27 -0
  198. data/lib/kuhsaft/gridded.rb +20 -0
  199. data/lib/kuhsaft/image_uploader_mounting.rb +22 -0
  200. data/lib/kuhsaft/orderable.rb +71 -0
  201. data/lib/kuhsaft/page_tree.rb +14 -0
  202. data/lib/kuhsaft/partial_extractor.rb +21 -0
  203. data/lib/kuhsaft/searchable.rb +69 -0
  204. data/lib/kuhsaft/touch_placeholders.rb +31 -0
  205. data/lib/kuhsaft/translatable.rb +54 -0
  206. data/lib/kuhsaft/version.rb +3 -0
  207. data/lib/tasks/kuhsaft_tasks.rake +22 -0
  208. data/lib/templates/kuhsaft/assets/ck-config.js.coffee +48 -0
  209. data/lib/templates/kuhsaft/assets/customizations.css.sass +0 -0
  210. data/lib/templates/kuhsaft/assets/customizations.js.coffee +0 -0
  211. data/lib/templates/kuhsaft/translations/add_translation.erb +8 -0
  212. data/spec/controllers/kuhsaft/api/pages_controller_spec.rb +70 -0
  213. data/spec/controllers/kuhsaft/pages_controller_spec.rb +90 -0
  214. data/spec/controllers/kuhsaft/sitemaps_controller_spec.rb +13 -0
  215. data/spec/dummy/Rakefile +7 -0
  216. data/spec/dummy/app/assets/images/spec-image.png +0 -0
  217. data/spec/dummy/app/assets/javascripts/application.js +15 -0
  218. data/spec/dummy/app/assets/javascripts/kuhsaft/cms/ck-config.js.coffee +48 -0
  219. data/spec/dummy/app/assets/javascripts/kuhsaft/cms/customizations.js.coffee +0 -0
  220. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  221. data/spec/dummy/app/assets/stylesheets/kuhsaft/cms/customizations.css.sass +0 -0
  222. data/spec/dummy/app/controllers/application_controller.rb +4 -0
  223. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  224. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  225. data/spec/dummy/bin/bundle +3 -0
  226. data/spec/dummy/bin/rails +4 -0
  227. data/spec/dummy/bin/rake +4 -0
  228. data/spec/dummy/config.ru +4 -0
  229. data/spec/dummy/config/application.rb +26 -0
  230. data/spec/dummy/config/boot.rb +3 -0
  231. data/spec/dummy/config/database.yml +19 -0
  232. data/spec/dummy/config/environment.rb +5 -0
  233. data/spec/dummy/config/environments/development.rb +29 -0
  234. data/spec/dummy/config/environments/production.rb +81 -0
  235. data/spec/dummy/config/environments/test.rb +36 -0
  236. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  237. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  238. data/spec/dummy/config/initializers/inflections.rb +16 -0
  239. data/spec/dummy/config/initializers/kuhsaft.rb +5 -0
  240. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  241. data/spec/dummy/config/initializers/secret_token.rb +12 -0
  242. data/spec/dummy/config/initializers/session_store.rb +3 -0
  243. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  244. data/spec/dummy/config/locales/en.yml +23 -0
  245. data/spec/dummy/config/routes.rb +3 -0
  246. data/spec/dummy/db/.gitkeep +0 -0
  247. data/spec/dummy/lib/assets/.gitkeep +0 -0
  248. data/spec/dummy/log/.gitkeep +0 -0
  249. data/spec/dummy/public/404.html +26 -0
  250. data/spec/dummy/public/422.html +26 -0
  251. data/spec/dummy/public/500.html +25 -0
  252. data/spec/dummy/public/favicon.ico +0 -0
  253. data/spec/dummy/public/stylesheets/.gitkeep +0 -0
  254. data/spec/dummy/script/rails +6 -0
  255. data/spec/factories.rb +26 -0
  256. data/spec/features/cms_pages_spec.rb +76 -0
  257. data/spec/features/search_spec.rb +78 -0
  258. data/spec/helpers/kuhsaft/cms/admin_helper_spec.rb +25 -0
  259. data/spec/helpers/kuhsaft/cms/pages_helper_spec.rb +46 -0
  260. data/spec/helpers/kuhsaft/pages_helper_spec.rb +21 -0
  261. data/spec/kuhsaft_spec.rb +7 -0
  262. data/spec/lib/brick_list_spec.rb +50 -0
  263. data/spec/lib/engine_spec.rb +25 -0
  264. data/spec/lib/gridded_spec.rb +24 -0
  265. data/spec/lib/image_uploader_mounting_spec.rb +14 -0
  266. data/spec/lib/page_tree_spec.rb +38 -0
  267. data/spec/lib/searchable_spec.rb +30 -0
  268. data/spec/lib/touch_placeholders_spec.rb +44 -0
  269. data/spec/lib/translatable_spec.rb +155 -0
  270. data/spec/models/accordion_brick_spec.rb +38 -0
  271. data/spec/models/accordion_item_brick_spec.rb +50 -0
  272. data/spec/models/anchor_brick_spec.rb +26 -0
  273. data/spec/models/asset_brick_spec.rb +45 -0
  274. data/spec/models/asset_spec.rb +41 -0
  275. data/spec/models/brick_spec.rb +134 -0
  276. data/spec/models/brick_type_filter_spec.rb +64 -0
  277. data/spec/models/column_brick_spec.rb +32 -0
  278. data/spec/models/image_brick_spec.rb +49 -0
  279. data/spec/models/image_size_spec.rb +36 -0
  280. data/spec/models/link_brick_spec.rb +51 -0
  281. data/spec/models/page_spec.rb +472 -0
  282. data/spec/models/placeholder_brick_spec.rb +46 -0
  283. data/spec/models/publish_state_spec.rb +33 -0
  284. data/spec/models/slider_brick_spec.rb +26 -0
  285. data/spec/models/text_brick_spec.rb +30 -0
  286. data/spec/models/two_column_brick_spec.rb +82 -0
  287. data/spec/models/video_brick_spec.rb +32 -0
  288. data/spec/spec_helper.rb +81 -0
  289. data/spec/support/kuhsaft_spec_helper.rb +8 -0
  290. data/spec/support/write_expectation.rb +57 -0
  291. data/spec/views/kuhsaft/sitemaps/index.xml.haml_spec.rb +67 -0
  292. data/vendor/assets/javascripts/bootstrap-modal-v2.js +376 -0
  293. data/vendor/assets/javascripts/bootstrap-modalmanager.js +423 -0
  294. data/vendor/assets/javascripts/jquery.nestable.js +485 -0
  295. data/vendor/assets/stylesheets/bootstrap_modal.css +214 -0
  296. data/vendor/assets/stylesheets/nestable.css +84 -0
  297. metadata +870 -0
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
5
+ require File.expand_path('../../config/boot', __FILE__)
6
+ require 'rails/commands'
data/spec/factories.rb ADDED
@@ -0,0 +1,26 @@
1
+ FactoryGirl.define do
2
+ sequence(:title) { |n| n }
3
+
4
+ factory :page, class: 'Kuhsaft::Page' do |p|
5
+ p.parent nil
6
+ p.position 1
7
+ p.title { "English Title #{FactoryGirl.generate(:title)}" }
8
+ p.published 1
9
+ p.body 'lorem ipsum'
10
+ p.url ''
11
+ end
12
+
13
+ factory :text_brick, class: 'Kuhsaft::TextBrick' do |tb|
14
+ tb.type 'Kuhsaft::TextBrick'
15
+ tb.text 'DummyText'
16
+ end
17
+
18
+ factory :placeholder_brick, class: 'Kuhsaft::PlaceholderBrick' do |tb|
19
+ tb.type 'Kuhsaft::PlaceholderBrick'
20
+ tb.template_name 'foo'
21
+ end
22
+
23
+ factory :asset, class: Kuhsaft::Asset do |a|
24
+ a.file File.open("#{Kuhsaft::Engine.root}/spec/dummy/app/assets/images/spec-image.png")
25
+ end
26
+ end
@@ -0,0 +1,76 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe 'Cms/Pages' do
6
+
7
+ context '#new' do
8
+ before do
9
+ visit kuhsaft.new_cms_page_path
10
+ fill_in 'Title', with: 'The Title of the page'
11
+ fill_in 'Keywords', with: 'My keywords'
12
+ fill_in 'Description', with: 'My Description'
13
+ end
14
+
15
+ describe '#create' do
16
+ context 'when page is valid' do
17
+ it 'creates a new page' do
18
+ expect { click_on 'Create Page' }.to change(Kuhsaft::Page, :count).by(1)
19
+ end
20
+
21
+ it 'is not possible to change the value in url' do
22
+ page.find('#page_url')['disabled'].should be_true
23
+ end
24
+ end
25
+
26
+ context 'when page is invalid' do
27
+ it 'does not create a routing error by switching the locale' do
28
+ @page = FactoryGirl.create(:page, title: 'DummyPage', title_en: 'DummyEN', slug: 'dummy_page')
29
+ visit kuhsaft.edit_cms_page_path(@page)
30
+ fill_in 'page_title', with: ''
31
+ click_on 'Update Page'
32
+ within '.nav-pills' do
33
+ click_on 'EN'
34
+ end
35
+ page.should have_content(@page.title_en)
36
+ end
37
+ end
38
+ end
39
+
40
+ describe '#update' do
41
+ context 'when creating a redirect page' do
42
+ before do
43
+ @page = FactoryGirl.create(:page, url: 'de/dumdidum')
44
+ visit kuhsaft.edit_cms_page_path(@page)
45
+ select 'redirect', from: 'Pagetyp'
46
+ end
47
+
48
+ it 'has a value in redirect_page' do
49
+ fill_in 'Redirect URL', with: 'target_page'
50
+ expect { click_on 'Update Page' }.to change { @page.reload.redirect_url }.to('target_page')
51
+ end
52
+
53
+ it 'is invalid when no value is in redirect_page' do
54
+ click_on 'Update Page'
55
+ page.should have_css('.error', count: 1)
56
+ end
57
+
58
+ it 'does not change the value in url' do
59
+ fill_in 'Redirect URL', with: 'target_page'
60
+ expect { click_on 'Update Page' }.to_not change { @page.reload.url }
61
+ end
62
+ end
63
+ end
64
+ end
65
+
66
+ describe '#edit' do
67
+ it 'shows error messages on invalid bricks' do
68
+ @page = FactoryGirl.create(:page)
69
+ invalid_brick = FactoryGirl.build(:text_brick, text: nil, brick_list: @page)
70
+ invalid_brick.save(validate: false)
71
+
72
+ visit kuhsaft.edit_cms_page_path(@page)
73
+ page.should have_css('.error', count: 1)
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,78 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'pages#index' do
4
+ context 'with search parameter' do
5
+ let! :page1 do
6
+ p = create :page,
7
+ published: true,
8
+ title: 'Chromodorididae Ardeadoris'
9
+ p.bricks << Kuhsaft::TextBrick.new(locale: I18n.locale,
10
+ text: "#{'foo bar' * 300} Chromodorididae #{'foo bar' * 300}")
11
+ p.save!
12
+ p
13
+ end
14
+
15
+ let! :page2 do
16
+ create :page,
17
+ published: true,
18
+ title: 'Chromodorididae Berlanguella'
19
+ end
20
+
21
+ let! :page3 do
22
+ create :page,
23
+ published: true,
24
+ title: 'Gastropoda'
25
+ end
26
+
27
+ context 'with fulltext' do
28
+ before do
29
+ visit kuhsaft.pages_path(locale: :en, search: 'Chromodorididae')
30
+ end
31
+
32
+ it 'highlights search term in preview' do
33
+ within('ul.search-results.success') do
34
+ page.should have_content('Chromodorididae')
35
+ end
36
+ end
37
+
38
+ it 'truncates the text' do
39
+ find('.summary .excerpt').text.length.should == 110
40
+ end
41
+ end
42
+
43
+ context 'with multiple matches' do
44
+ before do
45
+ visit kuhsaft.pages_path(locale: :en, search: 'Chromodorididae')
46
+ end
47
+
48
+ it 'renders match count' do
49
+ page.should have_content('2 results')
50
+ end
51
+
52
+ it 'renders the search results list' do
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')
57
+ end
58
+ end
59
+
60
+ it 'renders links to the pages' do
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)
64
+ end
65
+ end
66
+ end
67
+
68
+ context 'without matches' do
69
+ before do
70
+ visit kuhsaft.pages_path(locale: :en, search: 'foobar')
71
+ end
72
+
73
+ it 'renders match count' do
74
+ page.should have_content('No results')
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ describe Kuhsaft::Cms::AdminHelper do
4
+ describe '#render_language_switch?' do
5
+ context 'when there is one language' do
6
+ before do
7
+ I18n.stub(:available_locales).and_return([:de])
8
+ end
9
+
10
+ it 'returns false' do
11
+ helper.render_language_switch?.should be_false
12
+ end
13
+ end
14
+
15
+ context 'when there are multiple languages' do
16
+ before do
17
+ I18n.stub(:available_locales).and_return([:de, :en])
18
+ end
19
+
20
+ it 'returns true' do
21
+ helper.render_language_switch?.should be_true
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,46 @@
1
+ require 'spec_helper'
2
+
3
+ describe Kuhsaft::Cms::PagesHelper do
4
+ describe '#content_tab_active' do
5
+ it 'returns active when page has a title and no errors' do
6
+ @page = create(:page, title: 'Page 1', slug: 'page1')
7
+ expect(helper.content_tab_active(@page)).to be(:active)
8
+ end
9
+
10
+ it 'returns nil when page has no translation' do
11
+ @page = create(:page, title: 'Page 1', slug: 'page1')
12
+ I18n.with_locale :de do
13
+ expect(helper.content_tab_active(@page)).to be_nil
14
+ end
15
+ end
16
+ end
17
+
18
+ describe '#metadata_tab_active' do
19
+ it 'returns active when page is not translated' do
20
+ @page = create(:page, title: 'Page 1', slug: 'page1')
21
+ I18n.with_locale :de do
22
+ expect(helper.metadata_tab_active(@page)).to be(:active)
23
+ end
24
+ end
25
+ end
26
+
27
+ describe '#hide_content_tab?' do
28
+ it 'has a page without translations' do
29
+ @page = create(:page, title: 'Page 1', slug: 'page1')
30
+ I18n.with_locale :de do
31
+ expect(helper.hide_content_tab?(@page)).to be_true
32
+ end
33
+ end
34
+
35
+ it 'has a redirect page' do
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
39
+ end
40
+
41
+ it 'has a not saved page' do
42
+ @page = Kuhsaft::Page.new
43
+ expect(helper.hide_content_tab?(@page)).to be_true
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ describe PagesHelper do
4
+ describe '#search_page_form' do
5
+
6
+ context 'without block' do
7
+ it 'renders the default search form' do
8
+ 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]')
12
+ end
13
+ end
14
+
15
+ context 'with block' do
16
+ it 'calls the given block' do
17
+ expect { |b| search_page_form(&b) }.to yield_with_no_args
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe Kuhsaft do
4
+ it 'should be valid' do
5
+ Kuhsaft.should be_a(Module)
6
+ end
7
+ end
@@ -0,0 +1,50 @@
1
+ require 'spec_helper'
2
+
3
+ describe Kuhsaft::BrickList do
4
+
5
+ class TestBrick
6
+ include Kuhsaft::BrickList
7
+ end
8
+
9
+ let :brick do
10
+ TestBrick.new
11
+ end
12
+
13
+ describe '#collect_fulltext' do
14
+ context 'with bricks' do
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'
18
+ end
19
+ end
20
+
21
+ context 'with bricks without content' do
22
+ it 'returns a string' do
23
+ brick.stub_chain(:bricks, :localized).and_return([])
24
+ brick.collect_fulltext.should == ''
25
+ end
26
+ end
27
+
28
+ context 'without bricks' do
29
+ it 'returns a string' do
30
+ brick.collect_fulltext.should == ''
31
+ end
32
+
33
+ it 'does not fail' do
34
+ expect { brick.collect_fulltext }.to_not raise_error
35
+ end
36
+ end
37
+ end
38
+
39
+ describe '#allowed_brick_types' do
40
+ it 'returns an array of possible classes as strings' do
41
+ brick.allowed_brick_types.should be_a(Array)
42
+ end
43
+ end
44
+
45
+ describe '#brick_types' do
46
+ it 'returns a Kuhsaft::BrickTypeFilter' do
47
+ brick.brick_types.should be_a(Kuhsaft::BrickTypeFilter)
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ describe Kuhsaft::Engine do
4
+
5
+ describe '.configure' do
6
+
7
+ describe '.image_sizes' do
8
+ it 'delegates .clear to ImageSize' do
9
+ Kuhsaft::ImageSize.should_receive(:clear!)
10
+ Kuhsaft::Engine.configure do
11
+ config.image_sizes.clear!
12
+ end
13
+ end
14
+
15
+ it 'delegates .add to ImageSize' do
16
+ Kuhsaft::ImageSize.should_receive(:add).with(:something, 100, 200)
17
+ Kuhsaft::Engine.configure do
18
+ config.image_sizes.add(:something, 100, 200)
19
+ end
20
+ end
21
+ end
22
+
23
+ end
24
+
25
+ end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe Kuhsaft::Gridded do
4
+
5
+ context 'included gridded module' do
6
+ class GridClass
7
+ include Kuhsaft::Gridded
8
+ end
9
+
10
+ it 'returns an array for the gridded class' do
11
+ expect(GridClass.available_grid_sizes).to be_kind_of(Array)
12
+ end
13
+
14
+ it 'returns false on gridded? if no col count is set' do
15
+ expect_any_instance_of(GridClass).to receive(:col_count).at_least(:once).and_return(0)
16
+ expect(GridClass.new.gridded?).to be_false
17
+ end
18
+
19
+ it 'returns true on gridded? if a col count is set' do
20
+ expect_any_instance_of(GridClass).to receive(:col_count).at_least(:once).and_return(10)
21
+ expect(GridClass.new.gridded?).to be_true
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,14 @@
1
+ require 'spec_helper'
2
+
3
+ describe Kuhsaft::ImageUploaderMounting do
4
+
5
+ let :brick do
6
+ Kuhsaft::ImageBrick.new
7
+ end
8
+
9
+ describe '#uploader_mounting' do
10
+ it 'has a uploader mounted' do
11
+ brick.class.ancestors.include?(CarrierWave::Mount::Extension).should be_true
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,38 @@
1
+ require 'spec_helper'
2
+ require_relative '../../lib/kuhsaft/page_tree'
3
+ require_relative '../../app/models/kuhsaft/page'
4
+
5
+ # TODO: THESE SPECS ONLY WORK WHEN THE FULL SUITE IS RUN. FIX THAT!
6
+
7
+ module Kuhsaft
8
+ describe PageTree do
9
+ let(:page_tree) do
10
+ {
11
+ '0' => { 'id' => '1', 'children' => { '0' => { 'id' => '2' } } },
12
+ '1' => { 'id' => '3' }
13
+ }
14
+ end
15
+
16
+ before :each do
17
+ @page1 = FactoryGirl.create(:page, id: 1, position: 10)
18
+ @page2 = FactoryGirl.create(:page, id: 2, position: 10)
19
+ @page3 = FactoryGirl.create(:page, id: 3, position: 10)
20
+ end
21
+
22
+ describe 'update' do
23
+ it 'sets the correct position of the root nodes' do
24
+ PageTree.update(page_tree)
25
+ expect(@page1.reload.position).to eq(0)
26
+ expect(@page2.reload.position).to eq(0)
27
+ expect(@page3.reload.position).to eq(1)
28
+ end
29
+
30
+ it 'sets the correct parent attribute for the nodes' do
31
+ PageTree.update(page_tree)
32
+ @page1.reload.parent_id.should be_nil
33
+ expect(@page2.reload.parent_id).to eq(1)
34
+ @page3.reload.parent_id.should be nil
35
+ end
36
+ end
37
+ end
38
+ end