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,46 @@
1
+ module Kuhsaft
2
+ class TwoColumnBrick < ColumnBrick
3
+ before_create :add_columns
4
+
5
+ #
6
+ # Childs should only contain ColumnBricks, therefore we
7
+ # don't want the user to mess with it
8
+ #
9
+ def user_can_add_childs?
10
+ false
11
+ end
12
+
13
+ def user_can_delete?
14
+ true
15
+ end
16
+
17
+ def user_can_save?
18
+ true
19
+ end
20
+
21
+ #
22
+ # Use own rendering implementation to show columns side by side
23
+ #
24
+ def renders_own_childs?
25
+ true
26
+ end
27
+
28
+ def partitioning
29
+ super || 0
30
+ end
31
+
32
+ def self.partitionings
33
+ [Partition.new('70/30', 0), Partition.new('50/50', 1), Partition.new('30/70', 2)]
34
+ end
35
+
36
+ def to_style_class
37
+ [super, 'row-fluid'].join(' ')
38
+ end
39
+
40
+ private
41
+
42
+ def add_columns
43
+ bricks << 2.times.map { |p| Kuhsaft::ColumnBrick.new(position: p + 1) }
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,22 @@
1
+ module Kuhsaft
2
+ class VideoBrick < Brick
3
+ YOUTUBE = 'youtube'
4
+ VIMEO = 'vimeo'
5
+ EXTERNAL = 'external'
6
+
7
+ validates :any_source, presence: true
8
+
9
+ # a video id, an embed code or a link to a video is required
10
+ def any_source
11
+ embed_src.presence || href.presence
12
+ end
13
+
14
+ def self.source_types
15
+ [YOUTUBE, VIMEO, EXTERNAL]
16
+ end
17
+
18
+ def user_can_add_childs?
19
+ false
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,43 @@
1
+ # encoding: utf-8
2
+
3
+ module Kuhsaft
4
+ class AssetBrickAssetUploader < CarrierWave::Uploader::Base
5
+ # Include RMagick or ImageScience support:
6
+ # include CarrierWave::MiniMagick
7
+ # include CarrierWave::ImageScience
8
+
9
+ # Choose what kind of storage to use for this uploader:
10
+ storage :file
11
+ # storage :s3
12
+
13
+ # Override the directory where uploaded files will be stored.
14
+ # This is a sensible default for uploaders that are meant to be mounted:
15
+ def store_dir
16
+ model_identifier = model.class.name.underscore.gsub(/^kuhsaft/, 'cms')
17
+ "uploads/#{model_identifier}/#{mounted_as}/#{model.id}"
18
+ end
19
+
20
+ # Provide a default URL as a default if there hasn't been a file uploaded:
21
+ # def default_url
22
+ # "/images/fallback/" + [version_name, "default.png"].compact.join('_')
23
+ # end
24
+
25
+ # Process files as they are uploaded:
26
+ # process :scale => [200, 300]
27
+ #
28
+ # def scale(width, height)
29
+ # # do something
30
+ # end
31
+
32
+ # Add a white list of extensions which are allowed to be uploaded.
33
+ # For images you might use something like this:
34
+ def extension_white_list
35
+ %w(pdf doc docx xls xlsx ppt pptx)
36
+ end
37
+
38
+ # Override the filename of the uploaded files:
39
+ # def filename
40
+ # "something.jpg" if original_filename
41
+ # end
42
+ end
43
+ end
@@ -0,0 +1,50 @@
1
+ # encoding: utf-8
2
+ module Kuhsaft
3
+ class AssetUploader < CarrierWave::Uploader::Base
4
+ # Include RMagick or ImageScience support:
5
+ include CarrierWave::MiniMagick
6
+ # include CarrierWave::ImageScience
7
+
8
+ # Choose what kind of storage to use for this uploader:
9
+ storage :file
10
+ # storage :s3
11
+
12
+ # Override the directory where uploaded files will be stored.
13
+ # This is a sensible default for uploaders that are meant to be mounted:
14
+ def store_dir
15
+ "uploads/#{mounted_as}/#{model.id}"
16
+ end
17
+
18
+ # Provide a default URL as a default if there hasn't been a file uploaded:
19
+ # def default_url
20
+ # "/images/fallback/" + [version_name, "default.png"].compact.join('_')
21
+ # end
22
+
23
+ # Process files as they are uploaded:
24
+ # process :scale => [200, 300]
25
+ #
26
+ # def scale(width, height)
27
+ # # do something
28
+ # end
29
+
30
+ # Create different versions of your uploaded files:
31
+ version :thumb do
32
+ process :resize_images
33
+ def resize_images
34
+ resize_to_fill(100, 100) if @file.present? && @file.content_type.present? &&
35
+ @file.content_type.include?('image')
36
+ end
37
+ end
38
+
39
+ # Add a white list of extensions which are allowed to be uploaded.
40
+ # For images you might use something like this:
41
+ def extension_white_list
42
+ %w(jpg jpeg png pdf)
43
+ end
44
+
45
+ # Override the filename of the uploaded files:
46
+ # def filename
47
+ # "something.jpg" if original_filename
48
+ # end
49
+ end
50
+ end
@@ -0,0 +1,16 @@
1
+ # encoding: utf-8
2
+
3
+ module Kuhsaft
4
+ class CkimageUploader < CarrierWave::Uploader::Base
5
+ include CarrierWave::MiniMagick
6
+ storage :file
7
+
8
+ def store_dir
9
+ "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
10
+ end
11
+
12
+ version :thumb do
13
+ process resize_to_fit: [150, 150]
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,35 @@
1
+ # encoding: utf-8
2
+ module Kuhsaft
3
+ class ImageBrickImageUploader < CarrierWave::Uploader::Base
4
+ include CarrierWave::MiniMagick
5
+
6
+ storage :file
7
+
8
+ def store_dir
9
+ model_identifier = model.class.name.underscore.gsub(/^kuhsaft/, 'cms')
10
+ "uploads/#{model_identifier}/#{mounted_as}/#{model.id}/#{version_name}"
11
+ end
12
+
13
+ def full_filename(for_file)
14
+ File.basename for_file
15
+ end
16
+
17
+ version :converted do
18
+ process :process_brick_image_size
19
+ end
20
+
21
+ version :thumb, from_version: :converted do
22
+ process resize_to_fill: [160, 90]
23
+ end
24
+
25
+ def extension_white_list
26
+ %w(jpg jpeg gif png)
27
+ end
28
+
29
+ def process_brick_image_size
30
+ image_size = Kuhsaft::ImageSize.find_by_name(model.image_size)
31
+ return unless image_size.present?
32
+ resize_to_fill(image_size.width, image_size.height)
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,3 @@
1
+ %div{ :class => accordion_brick.to_style_class, :id => accordion_brick.to_style_id }
2
+ - accordion_brick.bricks.each do |brick|
3
+ = render brick
@@ -0,0 +1,8 @@
1
+ %div{ :class => accordion_item_brick.to_style_class }
2
+ .accordion-heading
3
+ %a.accordion-toggle{ 'data-toggle' => 'collapse', 'data-parent' => "##{accordion_item_brick.brick_list.to_style_id}", :href => "##{accordion_item_brick.to_style_id}" }
4
+ = accordion_item_brick.caption
5
+ .accordion-body.collapse{ :id => accordion_item_brick.to_style_id, :class => (accordion_item_brick.brick_list.bricks.first == accordion_item_brick ? 'in' : '') }
6
+ .accordion-inner
7
+ - accordion_item_brick.bricks.each do |brick|
8
+ = render brick
@@ -0,0 +1 @@
1
+ = form.input :caption, :as => :string, :input_html => { :class => 'span6' }
@@ -0,0 +1 @@
1
+ %div{ :class => anchor_brick.to_style_class, :id => anchor_brick.to_id }
@@ -0,0 +1 @@
1
+ = form.input :caption, :as => :string, :input_html => { :class => 'span6' }
@@ -0,0 +1,2 @@
1
+ %div{ :class => asset_brick.to_style_class }
2
+ = link_to asset_brick.caption, asset_brick.asset.url, :target => '_blank' if asset_brick.asset_present?
@@ -0,0 +1,8 @@
1
+ = form.input :caption, as: :string, input_html: { :class => 'span6' }
2
+ = form.input :asset
3
+ = form.input :asset_cache, as: :hidden
4
+ - if brick.asset.present?
5
+ .countrol-group
6
+ %label
7
+ = link_to File.basename(brick.asset.url), brick.asset.url
8
+ = form.input :link_style, collection: Kuhsaft::AssetBrick.styles
@@ -0,0 +1,14 @@
1
+ - unless brick_list.brick_types.empty?
2
+ - if brick_list.brick_types.allowed.count > 1
3
+ %a.btn.btn-small.btn-primary.dropdown-toggle{ 'data-toggle' => 'dropdown', 'href' => '#' }
4
+ = t('.add_element')
5
+ %span.caret
6
+ %ul.dropdown-menu.pull-right
7
+ - brick_list.brick_types.allowed.group_by(&:group).each do |group, types|
8
+ - types.map { |type| cms_brick_item brick_list, type }.compact.each do |brick_type_item|
9
+ %li
10
+ = brick_type_item
11
+ .divider
12
+ - else
13
+ - brick_list.brick_types.allowed.each do |type|
14
+ = link_to t('.add_specific_element', :name => type.class_name.constantize.model_name.human), kuhsaft.new_cms_brick_path(:brick => { :type => type.class_name, :brick_list_id => brick_list.id, :brick_list_type => brick_list.brick_list_type }), :remote => true, :class => 'btn btn-small btn-primary'
@@ -0,0 +1,7 @@
1
+ - if render_language_switch?
2
+ .pull-right
3
+ %ul.nav.nav-pills
4
+ - I18n.available_locales.each do |locale|
5
+ %li{ :class => (:active if I18n.locale.to_s == locale.to_s) }
6
+ = link_to_content_locale(locale)
7
+ .clear
@@ -0,0 +1,5 @@
1
+ - if brick.bricks.empty?
2
+ .centered.empty-state
3
+ .muted= t('.empty')
4
+ .btn-group
5
+ = render 'brick_type_dropdown', :brick_list => brick
@@ -0,0 +1,7 @@
1
+ #flash
2
+ - flash.each do |key, value|
3
+ .alert{ :class => "#{key} alert-#{key}" }
4
+ %button.close{ :type => :button, 'data-dismiss' => :alert }
5
+ ×
6
+ = value
7
+
@@ -0,0 +1,6 @@
1
+ = link_to 'Kuhsaft CMS', cms_root_path, :class => 'brand'
2
+ %p.navbar-text.pull-right
3
+ = link_to t('.logout'), '', :method => :delete
4
+ %ul.nav
5
+ %li
6
+ = link_to Kuhsaft::Page.model_name.human(:count => 2), kuhsaft.cms_pages_path
@@ -0,0 +1,15 @@
1
+ = simple_form_for @asset, :url => url, :html => { :multipart => true }, :wrapper => :bootstrap do |f|
2
+ .lightened-box
3
+ %h1= page_title
4
+ = f.input :file, :as => :file
5
+ = f.input :path, :as => :string, :input_html => { :readonly => true }
6
+ .clear
7
+ - if @asset.file.url.present?
8
+ .darkened-box
9
+ - if [:jpg, :jpeg, :png].include?(@asset.file_type)
10
+ .fixed-width-image
11
+ = link_to image_tag(@asset.file.url), @asset.file.url
12
+ - else
13
+ = link_to @asset.name, @asset.file.url
14
+ .lightened-box
15
+ = f.button :submit
@@ -0,0 +1,11 @@
1
+ - @assets.each do |asset|
2
+ .asset-pic
3
+ .thumb
4
+ - if [:png, :jpg, :jpeg].include? asset.file_type
5
+ = link_to image_tag(asset.file.thumb.url), edit_cms_asset_path(asset)
6
+ - else
7
+ = link_to asset.name, edit_cms_asset_path(asset)
8
+ .copy
9
+ %input.string{ :type => :text, :value => asset.file.url }
10
+ = link_to t('.delete'), cms_asset_path(asset), :confirm => t('.confirm', :filename => asset.filename), :method => :delete
11
+ .clear
@@ -0,0 +1,2 @@
1
+ .box-container
2
+ = render :partial => 'form', :locals => { :url => cms_asset_path(@asset), :page_title => t('.edit') }
@@ -0,0 +1,3 @@
1
+ - content_for :admin_toolbar do
2
+ = link_to t('.create'), kuhsaft.new_asset_path, :class => 'button'
3
+ = render 'list'
@@ -0,0 +1,2 @@
1
+ .box-container
2
+ = render :partial => 'form', :locals => { :url => cms_assets_path, :page_title => t('.new') }
@@ -0,0 +1,43 @@
1
+ .pull-left
2
+ - if brick_content.present?
3
+ .resize-toggler.btn.btn-small{ 'data-toggle' => 'collapse', 'data-target' => "#brick-content-#{brick.id}" }
4
+ %i.icon-resize-full
5
+ %i.icon-resize-small
6
+ - if brick.caption.present?
7
+ = brick.caption
8
+ %span.muted
9
+ = brick.backend_label(parenthesis: true)
10
+ .pull-right
11
+ .btn-toolbar
12
+ - if brick.persisted?
13
+
14
+ - # addable child dropdown menu
15
+ - if brick.respond_to?(:brick_list)
16
+ .btn-group
17
+ = render('brick_type_dropdown', brick_list: brick)
18
+
19
+ - # grid selection
20
+ - if brick.class.include? Kuhsaft::Gridded
21
+ .btn-group
22
+ %a.btn.btn-small.dropdown-toggle{ 'data-toggle' => 'dropdown', 'href' => '#' }
23
+ %i.icon-th
24
+ %span.caret
25
+ %ul.dropdown-menu.pull-right
26
+ %li
27
+ = form.input :col_count, collection: brick.class.available_grid_sizes, as: :radio_buttons, label_method: lambda { |col_count| t("kuhsaft.cms.bricks.columns", count: col_count) }
28
+
29
+ - # possible styles
30
+ - unless brick.available_display_styles.empty?
31
+ #display-styles.btn-group
32
+ %a.btn.btn-small.dropdown-toggle{ 'data-toggle' => 'dropdown', 'href' => '#' }
33
+ %i.icon-tint
34
+ %span.caret
35
+ %ul.dropdown-menu.pull-right
36
+ %li
37
+ = form.input :display_styles, collection: brick.translated_available_display_styles, as: :check_boxes
38
+
39
+ -# delete button
40
+ - if brick.user_can_delete?
41
+ .btn-group
42
+ = link_to kuhsaft.cms_brick_path(brick), class: 'btn btn-small btn-danger', data: { confirm: t('kuhsaft.cms.bricks.brick_item.confirm') }, method: :delete, remote: true do
43
+ %i.icon-trash.icon-white
@@ -0,0 +1,25 @@
1
+ .brick-item{ id: brick.to_brick_item_id, class: brick.to_style_class, 'data-id' => brick.id }
2
+ = simple_form_for brick, as: :brick, url: kuhsaft.cms_brick_path(brick), remote: !brick.uploader?, html: { id: nil }, wrapper: :bootstrap do |form|
3
+ = form.hidden_field :position, class: 'position-field'
4
+ - brick_content = render(brick.to_edit_partial_path, brick: brick, form: form)
5
+
6
+ .brick-item-header.clearfix
7
+ = render('kuhsaft/cms/bricks/brick_header', brick: brick, brick_content: brick_content, form: form)
8
+
9
+ - if brick_content.present?
10
+ .brick-item-content.collapse.in{ id: "brick-content-#{brick.id}", 'data-toggle' => true }
11
+ = brick_content
12
+ - if brick.user_can_save?
13
+ - # save button
14
+ .clearfix
15
+ .pull-right
16
+ %a.submit{ href: '#', class: 'btn btn-success btn-small ', 'data-title' => '', 'data-content' => t('.saved') }
17
+ = t('.save')
18
+
19
+ - if brick.renders_own_childs?
20
+ .brick-item-childs
21
+ = render(brick.to_edit_childs_partial_path, brick: brick)
22
+ - else
23
+ - if brick.respond_to?(:bricks)
24
+ .brick-item-childs
25
+ = render('kuhsaft/cms/bricks/brick_list', brick_list: brick)
@@ -0,0 +1,4 @@
1
+ .brick-list{ :id => brick_list.to_brick_list_id }
2
+ = render 'empty_state', :brick => brick_list
3
+ - brick_list.bricks.each do |brick|
4
+ = render 'kuhsaft/cms/bricks/brick_item', :brick => brick
@@ -0,0 +1,41 @@
1
+ .modal-header
2
+ %button.close{ 'data-dismiss' => 'modal' }
3
+ ×
4
+ %h3= t('.create_new', :brick => @brick.backend_label)
5
+
6
+ = simple_form_for @brick, :as => :brick, :url => kuhsaft.cms_bricks_path, :method => :post, :remote => true, :html => { :id => nil }, :wrapper => :bootstrap do |form|
7
+ .modal-body
8
+ = form.hidden_field :position, :class => 'position-field'
9
+ = form.hidden_field :type
10
+ = form.hidden_field :brick_list_id
11
+ = form.hidden_field :brick_list_type
12
+
13
+ - brick_content = render(@brick.to_edit_partial_path, :brick => @brick, :form => form)
14
+
15
+ - unless @brick.available_display_styles.empty?
16
+ #display-styles.btn-group.pull-right
17
+ %a.btn.btn-small.dropdown-toggle{ 'data-toggle' => 'dropdown', 'href' => '#' }
18
+ %i.icon-tint
19
+ %span.caret
20
+ %ul.dropdown-menu.pull-right
21
+ %li
22
+ = form.input :display_styles, :collection => @brick.translated_available_display_styles, :as => :check_boxes
23
+
24
+ - if brick.class.include? Kuhsaft::Gridded
25
+ .btn-group.pull-right
26
+ %a.btn.btn-small.dropdown-toggle{ 'data-toggle' => 'dropdown', 'href' => '#' }
27
+ %i.icon-th
28
+ %span.caret
29
+ %ul.dropdown-menu.pull-right
30
+ %li
31
+ = form.input :col_count, collection: brick.class.available_grid_sizes, as: :radio_buttons, label_method: lambda { |col_count| t("kuhsaft.cms.bricks.columns", count: col_count) }
32
+
33
+ - if brick_content.present?
34
+ = brick_content
35
+ - else
36
+ = t('.no_content')
37
+
38
+ .modal-footer
39
+ .clearfix
40
+ .pull-right
41
+ = form.button :submit, t('.save'), :class => 'btn-success'