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,68 @@
1
+ /*
2
+ Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
3
+ For licensing, see LICENSE.md or http://ckeditor.com/license
4
+ */
5
+ CKEDITOR.plugins.setLang( 'adv_link', 'de', {
6
+ localPages:'CMS Seite',
7
+ selectPageLabel:'Wählen Sie eine Seite aus',
8
+ selectPageTitle:'Wählen Sie eine Seite aus, auf die Sie verlinken möchten',
9
+ acccessKey: 'Zugriffstaste',
10
+ advanced: 'Erweitert',
11
+ advisoryContentType: 'Inhaltstyp',
12
+ advisoryTitle: 'Titel Beschreibung',
13
+ anchor: {
14
+ toolbar: 'Anker einfügen/editieren',
15
+ menu: 'Anker-Eigenschaften',
16
+ title: 'Anker-Eigenschaften',
17
+ name: 'Anker Name',
18
+ errorName: 'Bitte geben Sie den Namen des Ankers ein',
19
+ remove: 'Anker entfernen'
20
+ },
21
+ anchorId: 'nach Element Id',
22
+ anchorName: 'nach Anker Name',
23
+ charset: 'Ziel-Zeichensatz',
24
+ cssClasses: 'Stylesheet Klasse',
25
+ emailAddress: 'E-Mail Adresse',
26
+ emailBody: 'Nachrichtentext',
27
+ emailSubject: 'Betreffzeile',
28
+ id: 'Id',
29
+ info: 'Link-Info',
30
+ langCode: 'Sprachenkürzel',
31
+ langDir: 'Schreibrichtung',
32
+ langDirLTR: 'Links nach Rechts (LTR)',
33
+ langDirRTL: 'Rechts nach Links (RTL)',
34
+ menu: 'Link editieren',
35
+ name: 'Name',
36
+ noAnchors: '(keine Anker im Dokument vorhanden)',
37
+ noEmail: 'Bitte geben Sie e-Mail Adresse an',
38
+ noUrl: 'Bitte geben Sie die Link-URL an',
39
+ other: '<andere>',
40
+ popupDependent: 'Abhängig (Netscape)',
41
+ popupFeatures: 'Pop-up Fenster-Eigenschaften',
42
+ popupFullScreen: 'Vollbild (IE)',
43
+ popupLeft: 'Linke Position',
44
+ popupLocationBar: 'Adress-Leiste',
45
+ popupMenuBar: 'Menü-Leiste',
46
+ popupResizable: 'Größe änderbar',
47
+ popupScrollBars: 'Rollbalken',
48
+ popupStatusBar: 'Statusleiste',
49
+ popupToolbar: 'Symbolleiste',
50
+ popupTop: 'Obere Position',
51
+ rel: 'Beziehung',
52
+ selectAnchor: 'Anker auswählen',
53
+ styles: 'Style',
54
+ tabIndex: 'Tab-Index',
55
+ target: 'Zielseite',
56
+ targetFrame: '<Frame>',
57
+ targetFrameName: 'Ziel-Fenster-Name',
58
+ targetPopup: '<Pop-up Fenster>',
59
+ targetPopupName: 'Pop-up Fenster-Name',
60
+ title: 'Link',
61
+ toAnchor: 'Anker in dieser Seite',
62
+ toEmail: 'E-Mail',
63
+ toUrl: 'URL',
64
+ toolbar: 'Link einfügen/editieren',
65
+ type: 'Link-Typ',
66
+ unlink: 'Link entfernen',
67
+ upload: 'Hochladen'
68
+ });
@@ -0,0 +1,68 @@
1
+ /*
2
+ Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
3
+ For licensing, see LICENSE.md or http://ckeditor.com/license
4
+ */
5
+ CKEDITOR.plugins.setLang( 'adv_link', 'en', {
6
+ localPages:'CMS Pages',
7
+ selectPageLabel:'Select a page',
8
+ selectPageTitle:'Select the page you want to link to',
9
+ acccessKey: 'Access Key',
10
+ advanced: 'Advanced',
11
+ advisoryContentType: 'Advisory Content Type',
12
+ advisoryTitle: 'Advisory Title',
13
+ anchor: {
14
+ toolbar: 'Anchor',
15
+ menu: 'Edit Anchor',
16
+ title: 'Anchor Properties',
17
+ name: 'Anchor Name',
18
+ errorName: 'Please type the anchor name',
19
+ remove: 'Remove Anchor'
20
+ },
21
+ anchorId: 'By Element Id',
22
+ anchorName: 'By Anchor Name',
23
+ charset: 'Linked Resource Charset',
24
+ cssClasses: 'Stylesheet Classes',
25
+ emailAddress: 'E-Mail Address',
26
+ emailBody: 'Message Body',
27
+ emailSubject: 'Message Subject',
28
+ id: 'Id',
29
+ info: 'Link Info',
30
+ langCode: 'Language Code',
31
+ langDir: 'Language Direction',
32
+ langDirLTR: 'Left to Right (LTR)',
33
+ langDirRTL: 'Right to Left (RTL)',
34
+ menu: 'Edit Link',
35
+ name: 'Name',
36
+ noAnchors: '(No anchors available in the document)',
37
+ noEmail: 'Please type the e-mail address',
38
+ noUrl: 'Please type the link URL',
39
+ other: '<other>',
40
+ popupDependent: 'Dependent (Netscape)',
41
+ popupFeatures: 'Popup Window Features',
42
+ popupFullScreen: 'Full Screen (IE)',
43
+ popupLeft: 'Left Position',
44
+ popupLocationBar: 'Location Bar',
45
+ popupMenuBar: 'Menu Bar',
46
+ popupResizable: 'Resizable',
47
+ popupScrollBars: 'Scroll Bars',
48
+ popupStatusBar: 'Status Bar',
49
+ popupToolbar: 'Toolbar',
50
+ popupTop: 'Top Position',
51
+ rel: 'Relationship',
52
+ selectAnchor: 'Select an Anchor',
53
+ styles: 'Style',
54
+ tabIndex: 'Tab Index',
55
+ target: 'Target',
56
+ targetFrame: '<frame>',
57
+ targetFrameName: 'Target Frame Name',
58
+ targetPopup: '<popup window>',
59
+ targetPopupName: 'Popup Window Name',
60
+ title: 'Link',
61
+ toAnchor: 'Link to anchor in the text',
62
+ toEmail: 'E-mail',
63
+ toUrl: 'URL',
64
+ toolbar: 'Link',
65
+ type: 'Link Type',
66
+ unlink: 'Unlink',
67
+ upload: 'Upload'
68
+ });
@@ -0,0 +1,282 @@
1
+ ###
2
+ @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
3
+ For licensing, see LICENSE.md or http://ckeditor.com/license
4
+ ###
5
+ CKEDITOR.plugins.add "adv_link",
6
+ requires: "dialog,fakeobjects"
7
+ lang: "en,es,fr,it" # %REMOVE_LINE_CORE%
8
+ icons: "anchor,anchor-rtl,link,unlink" # %REMOVE_LINE_CORE%
9
+ hidpi: true # %REMOVE_LINE_CORE%
10
+ onLoad: ->
11
+ cssWithDir = (dir) ->
12
+ template.replace(/%1/g, (if dir is "rtl" then "right" else "left")).replace /%2/g, "cke_contents_" + dir
13
+ iconPath = CKEDITOR.getUrl(@path + "images" + ((if CKEDITOR.env.hidpi then "/hidpi" else "")) + "/anchor.png")
14
+ baseStyle = "background:url(" + iconPath + ") no-repeat %1 center;border:1px dotted #00f;background-size:16px;"
15
+ template = ".%2 a.cke_anchor," + ".%2 a.cke_anchor_empty" + ",.cke_editable.%2 a[name]" + ",.cke_editable.%2 a[data-cke-saved-name]" + "{" + baseStyle + "padding-%1:18px;" + "cursor:auto;" + "}" + ((if CKEDITOR.env.ie then ("a.cke_anchor_empty" + "{" + "display:inline-block;" + "}") else "")) + ".%2 img.cke_anchor" + "{" + baseStyle + "width:16px;" + "min-height:15px;" + "height:1.15em;" + "vertical-align:" + ((if CKEDITOR.env.opera then "middle" else "text-bottom")) + ";" + "}"
16
+ CKEDITOR.addCss cssWithDir("ltr") + cssWithDir("rtl")
17
+ return
18
+
19
+ init: (editor) ->
20
+ allowed = "a[!href]"
21
+ required = "a[href]"
22
+ allowed = allowed.replace("]", ",accesskey,charset,dir,id,lang,name,rel,tabindex,title,type]{*}(*)") if CKEDITOR.dialog.isTabEnabled(editor, "link", "advanced")
23
+ allowed = allowed.replace("]", ",target,onclick]") if CKEDITOR.dialog.isTabEnabled(editor, "link", "target")
24
+
25
+ # Add the link and unlink buttons.
26
+ editor.addCommand "link", new CKEDITOR.dialogCommand("link",
27
+ allowedContent: allowed
28
+ requiredContent: required
29
+ )
30
+ editor.addCommand "anchor", new CKEDITOR.dialogCommand("anchor",
31
+ allowedContent: "a[!name,id]"
32
+ requiredContent: "a[name]"
33
+ )
34
+ editor.addCommand "unlink", new CKEDITOR.unlinkCommand()
35
+ editor.addCommand "removeAnchor", new CKEDITOR.removeAnchorCommand()
36
+ editor.setKeystroke CKEDITOR.CTRL + 76, "link" #L
37
+ if editor.ui.addButton
38
+ editor.ui.addButton "Link",
39
+ label: editor.lang.link.toolbar
40
+ command: "link"
41
+ toolbar: "links,10"
42
+
43
+ editor.ui.addButton "Unlink",
44
+ label: editor.lang.link.unlink
45
+ command: "unlink"
46
+ toolbar: "links,20"
47
+
48
+ editor.ui.addButton "Anchor",
49
+ label: editor.lang.link.anchor.toolbar
50
+ command: "anchor"
51
+ toolbar: "links,30"
52
+
53
+ CKEDITOR.dialog.add "link", @path + "dialogs/link.js"
54
+ CKEDITOR.dialog.add "anchor", @path + "dialogs/anchor.js"
55
+ editor.on "doubleclick", (evt) ->
56
+ element = CKEDITOR.plugins.link.getSelectedLink(editor) or evt.data.element
57
+ unless element.isReadOnly()
58
+ if element.is("a")
59
+ evt.data.dialog = (if (element.getAttribute("name") and (not element.getAttribute("href") or not element.getChildCount())) then "anchor" else "link")
60
+ editor.getSelection().selectElement element
61
+ else evt.data.dialog = "anchor" if CKEDITOR.plugins.link.tryRestoreFakeAnchor(editor, element)
62
+ return
63
+
64
+ # If the "menu" plugin is loaded, register the menu items.
65
+ if editor.addMenuItems
66
+ editor.addMenuItems
67
+ anchor:
68
+ label: editor.lang.link.anchor.menu
69
+ command: "anchor"
70
+ group: "anchor"
71
+ order: 1
72
+
73
+ removeAnchor:
74
+ label: editor.lang.link.anchor.remove
75
+ command: "removeAnchor"
76
+ group: "anchor"
77
+ order: 5
78
+
79
+ link:
80
+ label: editor.lang.link.menu
81
+ command: "link"
82
+ group: "link"
83
+ order: 1
84
+
85
+ unlink:
86
+ label: editor.lang.link.unlink
87
+ command: "unlink"
88
+ group: "link"
89
+ order: 5
90
+
91
+ # If the "contextmenu" plugin is loaded, register the listeners.
92
+ if editor.contextMenu
93
+ editor.contextMenu.addListener (element, selection) ->
94
+ return null if not element or element.isReadOnly()
95
+ anchor = CKEDITOR.plugins.link.tryRestoreFakeAnchor(editor, element)
96
+ return null if not anchor and not (anchor = CKEDITOR.plugins.link.getSelectedLink(editor))
97
+ menu = {}
98
+ if anchor.getAttribute("href") and anchor.getChildCount()
99
+ menu =
100
+ link: CKEDITOR.TRISTATE_OFF
101
+ unlink: CKEDITOR.TRISTATE_OFF
102
+ menu.anchor = menu.removeAnchor = CKEDITOR.TRISTATE_OFF if anchor and anchor.hasAttribute("name")
103
+ menu
104
+
105
+ return
106
+
107
+ afterInit: (editor) ->
108
+ # Register a filter to displaying placeholders after mode change.
109
+ dataProcessor = editor.dataProcessor
110
+ dataFilter = dataProcessor and dataProcessor.dataFilter
111
+ htmlFilter = dataProcessor and dataProcessor.htmlFilter
112
+ pathFilters = editor._.elementsPath and editor._.elementsPath.filters
113
+ if dataFilter
114
+ dataFilter.addRules elements:
115
+ a: (element) ->
116
+ attributes = element.attributes
117
+ return null unless attributes.name
118
+ isEmpty = not element.children.length
119
+ if CKEDITOR.plugins.link.synAnchorSelector
120
+
121
+ # IE needs a specific class name to be applied
122
+ # to the anchors, for appropriate styling.
123
+ ieClass = (if isEmpty then "cke_anchor_empty" else "cke_anchor")
124
+ cls = attributes["class"]
125
+ attributes["class"] = (cls or "") + " " + ieClass if attributes.name and (not cls or cls.indexOf(ieClass) < 0)
126
+ if isEmpty and CKEDITOR.plugins.link.emptyAnchorFix
127
+ attributes.contenteditable = "false"
128
+ attributes["data-cke-editable"] = 1
129
+ else return editor.createFakeParserElement(element, "cke_anchor", "anchor") if CKEDITOR.plugins.link.fakeAnchor and isEmpty
130
+ null
131
+
132
+ if CKEDITOR.plugins.link.emptyAnchorFix and htmlFilter
133
+ htmlFilter.addRules elements:
134
+ a: (element) ->
135
+ delete element.attributes.contenteditable
136
+
137
+ return
138
+
139
+ if pathFilters
140
+ pathFilters.push (element, name) ->
141
+ "anchor" if CKEDITOR.plugins.link.tryRestoreFakeAnchor(editor, element) or (element.getAttribute("name") and (not element.getAttribute("href") or not element.getChildCount())) if name is "a"
142
+
143
+ return
144
+
145
+ ###
146
+ Set of link plugin's helpers.
147
+
148
+ @class
149
+ @singleton
150
+ ###
151
+ CKEDITOR.plugins.link =
152
+
153
+ ###
154
+ Get the surrounding link element of current selection.
155
+
156
+ CKEDITOR.plugins.link.getSelectedLink( editor );
157
+
158
+ // The following selection will all return the link element.
159
+
160
+ <a href="#">li^nk</a>
161
+ <a href="#">[link]</a>
162
+ text[<a href="#">link]</a>
163
+ <a href="#">li[nk</a>]
164
+ [<b><a href="#">li]nk</a></b>]
165
+ [<a href="#"><b>li]nk</b></a>
166
+
167
+ @since 3.2.1
168
+ @param {CKEDITOR.editor} editor
169
+ ###
170
+ getSelectedLink: (editor) ->
171
+ selection = editor.getSelection()
172
+ selectedElement = selection.getSelectedElement()
173
+ return selectedElement if selectedElement and selectedElement.is("a")
174
+ range = selection.getRanges(true)[0]
175
+ if range
176
+ range.shrink CKEDITOR.SHRINK_TEXT
177
+ return editor.elementPath(range.getCommonAncestor()).contains("a", 1)
178
+ null
179
+
180
+ ###
181
+ Opera and WebKit don't make it possible to select empty anchors. Fake
182
+ elements must be used for them.
183
+
184
+ @readonly
185
+ @property {Boolean}
186
+ ###
187
+ fakeAnchor: CKEDITOR.env.opera or CKEDITOR.env.webkit
188
+
189
+ ###
190
+ For browsers that don't support CSS3 `a[name]:empty()`, note IE9 is included because of #7783.
191
+
192
+ @readonly
193
+ @property {Boolean}
194
+ ###
195
+ synAnchorSelector: CKEDITOR.env.ie
196
+
197
+ ###
198
+ For browsers that have editing issue with empty anchor.
199
+
200
+ @readonly
201
+ @property {Boolean}
202
+ ###
203
+ emptyAnchorFix: CKEDITOR.env.ie and CKEDITOR.env.version < 8
204
+
205
+ ###
206
+ @param {CKEDITOR.editor} editor
207
+ @param {CKEDITOR.dom.element} element
208
+ @todo
209
+ ###
210
+ tryRestoreFakeAnchor: (editor, element) ->
211
+ if element and element.data("cke-real-element-type") and element.data("cke-real-element-type") is "anchor"
212
+ link = editor.restoreRealElement(element)
213
+ link if link.data("cke-saved-name")
214
+
215
+
216
+ # TODO Much probably there's no need to expose these as public objects.
217
+ CKEDITOR.unlinkCommand = ->
218
+
219
+ CKEDITOR.unlinkCommand:: =
220
+ exec: (editor) ->
221
+ style = new CKEDITOR.style(
222
+ element: "a"
223
+ type: CKEDITOR.STYLE_INLINE
224
+ alwaysRemoveElement: 1
225
+ )
226
+ editor.removeStyle style
227
+ return
228
+
229
+ refresh: (editor, path) ->
230
+
231
+ # Despite our initial hope, document.queryCommandEnabled() does not work
232
+ # for this in Firefox. So we must detect the state by element paths.
233
+ element = path.lastElement and path.lastElement.getAscendant("a", true)
234
+ if element and element.getName() is "a" and element.getAttribute("href") and element.getChildCount()
235
+ @setState CKEDITOR.TRISTATE_OFF
236
+ else
237
+ @setState CKEDITOR.TRISTATE_DISABLED
238
+ return
239
+
240
+ contextSensitive: 1
241
+ startDisabled: 1
242
+ requiredContent: "a[href]"
243
+
244
+ CKEDITOR.removeAnchorCommand = ->
245
+
246
+ CKEDITOR.removeAnchorCommand:: =
247
+ exec: (editor) ->
248
+ sel = editor.getSelection()
249
+ bms = sel.createBookmarks()
250
+ anchor = undefined
251
+ if sel and (anchor = sel.getSelectedElement()) and ((if CKEDITOR.plugins.link.fakeAnchor and not anchor.getChildCount() then CKEDITOR.plugins.link.tryRestoreFakeAnchor(editor, anchor) else anchor.is("a")))
252
+ anchor.remove 1
253
+ else
254
+ if anchor = CKEDITOR.plugins.link.getSelectedLink(editor)
255
+ if anchor.hasAttribute("href")
256
+ anchor.removeAttributes
257
+ name: 1
258
+ "data-cke-saved-name": 1
259
+
260
+ anchor.removeClass "cke_anchor"
261
+ else
262
+ anchor.remove 1
263
+ sel.selectBookmarks bms
264
+ return
265
+
266
+ requiredContent: "a[name]"
267
+
268
+ CKEDITOR.tools.extend CKEDITOR.config,
269
+
270
+ ###
271
+ @cfg {Boolean} [linkShowAdvancedTab=true]
272
+ @member CKEDITOR.config
273
+ @todo
274
+ ###
275
+ linkShowAdvancedTab: true
276
+
277
+ ###
278
+ @cfg {Boolean} [linkShowTargetTab=true]
279
+ @member CKEDITOR.config
280
+ @todo
281
+ ###
282
+ linkShowTargetTab: true
@@ -0,0 +1,7 @@
1
+ #= require bootstrap
2
+ #= require_self
3
+ #= require_tree ./views
4
+
5
+ $ ->
6
+ $('.kuhsaft-text-brick').each ->
7
+ new ReadMoreView($(this))
@@ -0,0 +1,136 @@
1
+ #= depend_on_asset kuhsaft/cms/ck-config
2
+ #
3
+ #= require jquery
4
+ #= require jquery_ujs
5
+ #= require jquery.remotipart
6
+ #= require jquery-ui
7
+ #= require bootstrap
8
+ #= require bootstrap-modal-v2
9
+ #= require bootstrap-modalmanager
10
+ #= require ckeditor-jquery
11
+ #= require jquery.nestable
12
+ #= require_tree .
13
+ #
14
+ # Disable timestamp for ckeditor internal asset loading. This prevents issues with Asset Pipeline on production.
15
+ root = exports ? this
16
+ root.CKEDITOR.timestamp = null
17
+
18
+ # As @ryabrody & @k-graefenhain found out there is obviously a bug which causes the asset_path_helper to return paths always without digest:
19
+ # https://github.com/rails/sprockets-rails/issues/66
20
+ # That's why we need the environment switch here:
21
+ CKEDITOR.config.customConfig = "<%= asset_path('kuhsaft/cms/ck-config.js') %>"
22
+
23
+ loadTextEditor = ->
24
+ CKEDITOR.replaceAll('ckeditor')
25
+
26
+ updateInputsForRedirectPage = (redirect_url, keywords, description) ->
27
+ redirect_url.removeAttr('disabled')
28
+ keywords.attr('disabled', 'disabled')
29
+ description.attr('disabled', 'disabled')
30
+
31
+ clearInputsFromRedirectPage = (redirect_url, keywords, description) ->
32
+ redirect_url.attr('disabled', 'disabled')
33
+ keywords.removeAttr('disabled')
34
+ description.removeAttr('disabled')
35
+
36
+ checkPageType = ->
37
+ redirect_url = $('#page_redirect_url')
38
+ keywords = $('#page_keywords')
39
+ description = $('#page_description')
40
+ if ($('#page_page_type option:selected').val() == 'redirect')
41
+ updateInputsForRedirectPage(redirect_url, keywords, description)
42
+ else
43
+ clearInputsFromRedirectPage(redirect_url, keywords, description)
44
+
45
+ sortableBrick = ->
46
+ $(".brick-list").each (idx, elem) ->
47
+ $(elem).sortable(
48
+ handle: '.brick-item-header',
49
+ axis: "y",
50
+ update: (event, ui) ->
51
+ idList = $(this).find("> .brick-item")
52
+ .each (idx, elem) ->
53
+ $(this).find("input.position-field").val(idx+1)
54
+ .map ->
55
+ $(this).data('id')
56
+
57
+ sortForm = $('#bricks-sort-form form')
58
+ sortForm.find('input[name="bricks[ids]"]').val(idList.toArray().join(','))
59
+ sortForm.trigger('submit')
60
+ )
61
+
62
+ window.initSubmitLinks = (selector = null)->
63
+ selector ||= $('body')
64
+
65
+ selector.find('a.submit')
66
+ .click (e)->
67
+ $('textarea.ckeditor').each (index, elem) ->
68
+ CKEDITOR.instances[elem.id].updateElement()
69
+
70
+ form = $(this).closest('form')
71
+ form.submit()
72
+ e.preventDefault()
73
+
74
+ window.initSavePopover = (selector) ->
75
+ link = selector.find('a.submit')
76
+ link.popover(placement: 'top', trigger: 'manual')
77
+
78
+ # initial delay
79
+ setTimeout ->
80
+ link.popover('show')
81
+ # fade out delay
82
+ setTimeout ->
83
+ link.popover('hide')
84
+ , 1500
85
+ , 50
86
+
87
+ window.initCKEditor = (selector) ->
88
+ CKEDITOR.replace(selector)
89
+
90
+ window.toggleCollapseBricksNav = (bool = false) ->
91
+ if bool
92
+ $('#collapse-bricks-nav').removeClass('hidden')
93
+ else
94
+ $('#collapse-bricks-nav').addClass('hidden')
95
+
96
+ # Stop propagation for display styles dropdown
97
+ window.stopPropagationOfDisplayStyles = (selector) ->
98
+ selector.click (e) ->
99
+ e.stopPropagation()
100
+
101
+ $(document).ajaxSuccess ->
102
+ sortableBrick()
103
+
104
+ $(document).ready ->
105
+ loadTextEditor()
106
+ checkPageType()
107
+ sortableBrick()
108
+ initSubmitLinks()
109
+ stopPropagationOfDisplayStyles($('#display-styles ul'))
110
+
111
+ $('#page_page_type').change ->
112
+ checkPageType()
113
+
114
+ $('.dd').nestable(
115
+ collapseBtnHTML: '<button data-action="collapse"><i class="icon-minus-sign"></i></button>'
116
+ expandBtnHTML: '<button data-action="expand"><i class="icon-plus-sign"></i></button>'
117
+ )
118
+
119
+ $('.dd').on('change', ->
120
+ pageTree = $('.dd').nestable('serialize')
121
+ url = '/cms/pages/sort'
122
+ $.post(url, { page_tree: pageTree }, "json")
123
+ )
124
+
125
+ # collapse / expand all
126
+ $('#expand-all').click ->
127
+ $('.brick-item-content').each (index, elem) ->
128
+ $(elem).collapse('show')
129
+ $('.resize-toggler').each (index, elem) ->
130
+ $(elem).removeClass('collapsed')
131
+
132
+ $('#collapse-all').click ->
133
+ $('.brick-item-content').each (index, elem) ->
134
+ $(elem).collapse('hide')
135
+ $('.resize-toggler').each (index, elem) ->
136
+ $(elem).addClass('collapsed')