alchemy_cms 2.5.3.1 → 2.6.0.rc5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (331) hide show
  1. data/.gitignore +1 -1
  2. data/.travis.yml +5 -13
  3. data/Gemfile +6 -3
  4. data/README.md +3 -2
  5. data/alchemy_cms.gemspec +22 -22
  6. data/app/assets/fonts/alchemy-icons.eot +0 -0
  7. data/app/assets/fonts/alchemy-icons.svg +54 -0
  8. data/app/assets/fonts/alchemy-icons.ttf +0 -0
  9. data/app/assets/fonts/alchemy-icons.woff +0 -0
  10. data/app/assets/images/alchemy/icons.png +0 -0
  11. data/app/assets/javascripts/alchemy/alchemy.base.js.coffee +151 -0
  12. data/app/assets/javascripts/alchemy/alchemy.buttons.js.coffee +3 -2
  13. data/app/assets/javascripts/alchemy/alchemy.datepicker.js.coffee +31 -0
  14. data/app/assets/javascripts/alchemy/alchemy.dragndrop.js +1 -1
  15. data/app/assets/javascripts/alchemy/alchemy.element_editors.js.coffee +98 -0
  16. data/app/assets/javascripts/alchemy/alchemy.elements_window.js.coffee +23 -24
  17. data/app/assets/javascripts/alchemy/alchemy.growler.js.coffee +27 -0
  18. data/app/assets/javascripts/alchemy/alchemy.gui.js.coffee +11 -8
  19. data/app/assets/javascripts/alchemy/alchemy.hotkeys.js.coffee +32 -0
  20. data/app/assets/javascripts/alchemy/alchemy.image_cropper.js.coffee +46 -0
  21. data/app/assets/javascripts/alchemy/alchemy.js +8 -2
  22. data/app/assets/javascripts/alchemy/alchemy.link_overlay.js.coffee +5 -4
  23. data/app/assets/javascripts/alchemy/alchemy.list_filter.js.coffee +49 -0
  24. data/app/assets/javascripts/alchemy/alchemy.onload.js.coffee +3 -0
  25. data/app/assets/javascripts/alchemy/alchemy.preview_window.js.coffee +71 -0
  26. data/app/assets/javascripts/alchemy/alchemy.sitemap.js.coffee +61 -0
  27. data/app/assets/javascripts/alchemy/alchemy.spinner.js.coffee +35 -0
  28. data/app/assets/javascripts/alchemy/alchemy.string_extension.js.coffee +11 -0
  29. data/app/assets/javascripts/alchemy/alchemy.windows.js.coffee +278 -0
  30. data/app/assets/stylesheets/alchemy/admin.css.scss +2 -0
  31. data/app/assets/stylesheets/alchemy/archive.scss +109 -65
  32. data/app/assets/stylesheets/alchemy/base.scss +16 -188
  33. data/app/assets/stylesheets/alchemy/dashboard.scss +2 -2
  34. data/app/assets/stylesheets/alchemy/defaults.scss +2 -1
  35. data/app/assets/stylesheets/alchemy/elements.scss +58 -94
  36. data/app/assets/stylesheets/alchemy/errors.scss +2 -2
  37. data/app/assets/stylesheets/alchemy/{mixins.scss → extends.scss} +104 -80
  38. data/app/assets/stylesheets/alchemy/flash.scss +4 -6
  39. data/app/assets/stylesheets/alchemy/fonts.scss +46 -0
  40. data/app/assets/stylesheets/alchemy/form_elements.scss +46 -45
  41. data/app/assets/stylesheets/alchemy/frame.scss +20 -15
  42. data/app/assets/stylesheets/alchemy/icons.scss +22 -9
  43. data/app/assets/stylesheets/alchemy/jquery-ui.scss +476 -399
  44. data/app/assets/stylesheets/alchemy/login.scss +1 -1
  45. data/app/assets/stylesheets/alchemy/menubar.css.scss +1 -1
  46. data/app/assets/stylesheets/alchemy/notices.scss +5 -5
  47. data/app/assets/stylesheets/alchemy/pagination.scss +25 -13
  48. data/app/assets/stylesheets/alchemy/search.scss +29 -17
  49. data/app/assets/stylesheets/alchemy/sitemap.scss +41 -36
  50. data/app/assets/stylesheets/alchemy/tables.scss +102 -50
  51. data/app/assets/stylesheets/alchemy/tinymce_dialog.css.scss +18 -16
  52. data/app/assets/stylesheets/alchemy/toolbar.scss +84 -24
  53. data/app/assets/stylesheets/alchemy/upload.scss +14 -9
  54. data/app/assets/stylesheets/alchemy/variables.scss +1 -0
  55. data/app/assets/stylesheets/tiny_mce/plugins/inlinepopups/skins/alchemy/window.css.scss +18 -21
  56. data/app/controllers/alchemy/admin/attachments_controller.rb +29 -39
  57. data/app/controllers/alchemy/admin/base_controller.rb +3 -9
  58. data/app/controllers/alchemy/admin/clipboard_controller.rb +1 -1
  59. data/app/controllers/alchemy/admin/contents_controller.rb +1 -1
  60. data/app/controllers/alchemy/admin/dashboard_controller.rb +1 -1
  61. data/app/controllers/alchemy/admin/elements_controller.rb +3 -3
  62. data/app/controllers/alchemy/admin/essence_files_controller.rb +1 -1
  63. data/app/controllers/alchemy/admin/essence_pictures_controller.rb +5 -5
  64. data/app/controllers/alchemy/admin/languages_controller.rb +1 -1
  65. data/app/controllers/alchemy/admin/pages_controller.rb +18 -16
  66. data/app/controllers/alchemy/admin/pictures_controller.rb +11 -10
  67. data/app/controllers/alchemy/admin/resources_controller.rb +87 -14
  68. data/app/controllers/alchemy/admin/tags_controller.rb +3 -3
  69. data/app/controllers/alchemy/admin/trash_controller.rb +3 -3
  70. data/app/controllers/alchemy/admin/users_controller.rb +6 -11
  71. data/app/controllers/alchemy/attachments_controller.rb +8 -9
  72. data/app/controllers/alchemy/base_controller.rb +17 -10
  73. data/app/controllers/alchemy/pages_controller.rb +7 -19
  74. data/app/controllers/alchemy/passwords_controller.rb +15 -3
  75. data/app/controllers/alchemy/user_sessions_controller.rb +5 -4
  76. data/app/controllers/alchemy/users_controller.rb +1 -1
  77. data/app/helpers/alchemy/admin/attachments_helper.rb +2 -2
  78. data/app/helpers/alchemy/admin/base_helper.rb +62 -90
  79. data/app/helpers/alchemy/admin/elements_helper.rb +13 -5
  80. data/app/helpers/alchemy/admin/essences_helper.rb +3 -5
  81. data/app/helpers/alchemy/admin/pages_helper.rb +6 -3
  82. data/app/helpers/alchemy/admin/tags_helper.rb +60 -0
  83. data/app/helpers/alchemy/base_helper.rb +16 -20
  84. data/app/helpers/alchemy/elements_helper.rb +7 -11
  85. data/app/helpers/alchemy/essences_helper.rb +2 -2
  86. data/app/helpers/alchemy/pages_helper.rb +31 -69
  87. data/app/helpers/alchemy/url_helper.rb +11 -3
  88. data/app/models/alchemy/attachment.rb +73 -45
  89. data/app/models/alchemy/cell.rb +1 -1
  90. data/app/models/alchemy/content.rb +20 -9
  91. data/app/models/alchemy/element.rb +9 -7
  92. data/app/models/alchemy/page.rb +15 -248
  93. data/app/models/alchemy/page/cells.rb +71 -0
  94. data/app/models/alchemy/page/elements.rb +147 -0
  95. data/app/models/alchemy/page/naming.rb +90 -0
  96. data/app/models/alchemy/picture.rb +18 -13
  97. data/app/models/alchemy/tag.rb +1 -1
  98. data/app/models/alchemy/user.rb +38 -6
  99. data/app/views/alchemy/admin/attachments/_archive_overlay.html.erb +14 -7
  100. data/app/views/alchemy/admin/attachments/_attachment.html.erb +17 -12
  101. data/app/views/alchemy/admin/attachments/_file_to_assign.html.erb +3 -8
  102. data/app/views/alchemy/admin/attachments/_files_list.html.erb +20 -12
  103. data/app/views/alchemy/admin/attachments/_overlay_file_list.html.erb +11 -0
  104. data/app/views/alchemy/admin/attachments/_tag_list.html.erb +31 -0
  105. data/app/views/alchemy/admin/attachments/archive_overlay.js.erb +4 -0
  106. data/app/views/alchemy/admin/attachments/edit.html.erb +8 -7
  107. data/app/views/alchemy/admin/attachments/index.html.erb +19 -12
  108. data/app/views/alchemy/admin/attachments/new.html.erb +2 -2
  109. data/app/views/alchemy/admin/attachments/show.html.erb +3 -0
  110. data/app/views/alchemy/admin/contents/_missing.html.erb +4 -4
  111. data/app/views/alchemy/admin/contents/create.js.erb +1 -1
  112. data/app/views/alchemy/admin/contents/new.html.erb +6 -3
  113. data/app/views/alchemy/admin/dashboard/_locked_pages.html.erb +1 -1
  114. data/app/views/alchemy/admin/dashboard/_users.html.erb +1 -1
  115. data/app/views/alchemy/admin/dashboard/index.html.erb +3 -3
  116. data/app/views/alchemy/admin/dashboard/info.html.erb +16 -13
  117. data/app/views/alchemy/admin/elements/_add_picture.html.erb +1 -1
  118. data/app/views/alchemy/admin/elements/_element_foot.html.erb +4 -4
  119. data/app/views/alchemy/admin/elements/_element_head.html.erb +1 -7
  120. data/app/views/alchemy/admin/elements/_elements_select.html.erb +2 -2
  121. data/app/views/alchemy/admin/elements/_new_element_form.html.erb +4 -4
  122. data/app/views/alchemy/admin/elements/_picture_gallery_editor.html.erb +1 -1
  123. data/app/views/alchemy/admin/elements/create.js.erb +2 -2
  124. data/app/views/alchemy/admin/elements/fold.js.erb +3 -6
  125. data/app/views/alchemy/admin/elements/new.html.erb +1 -1
  126. data/app/views/alchemy/admin/elements/order.js.erb +1 -1
  127. data/app/views/alchemy/admin/elements/trash.js.erb +1 -1
  128. data/app/views/alchemy/admin/elements/update.js.erb +2 -2
  129. data/app/views/alchemy/admin/essence_files/edit.html.erb +4 -4
  130. data/app/views/alchemy/admin/essence_pictures/crop.html.erb +17 -18
  131. data/app/views/alchemy/admin/essence_pictures/edit.html.erb +2 -2
  132. data/app/views/alchemy/admin/essence_pictures/update.js.erb +1 -0
  133. data/app/views/alchemy/admin/languages/_form.html.erb +12 -10
  134. data/app/views/alchemy/admin/languages/_language.html.erb +2 -1
  135. data/app/views/alchemy/admin/languages/_table.html.erb +3 -3
  136. data/app/views/alchemy/admin/languages/index.html.erb +15 -15
  137. data/app/views/alchemy/admin/layoutpages/_layoutpage.html.erb +6 -6
  138. data/app/views/alchemy/admin/layoutpages/index.html.erb +41 -40
  139. data/app/views/alchemy/admin/pages/_contactform_links.html.erb +4 -4
  140. data/app/views/alchemy/admin/pages/_create_language_form.html.erb +6 -6
  141. data/app/views/alchemy/admin/pages/_external_link.html.erb +2 -2
  142. data/app/views/alchemy/admin/pages/_file_link.html.erb +3 -3
  143. data/app/views/alchemy/admin/pages/_internal_link.html.erb +1 -1
  144. data/app/views/alchemy/admin/pages/_new_page_form.html.erb +1 -1
  145. data/app/views/alchemy/admin/pages/_page.html.erb +13 -13
  146. data/app/views/alchemy/admin/pages/_page_for_links.html.erb +2 -4
  147. data/app/views/alchemy/admin/pages/_sitemap.html.erb +5 -0
  148. data/app/views/alchemy/admin/pages/configure.html.erb +7 -7
  149. data/app/views/alchemy/admin/pages/configure_external.html.erb +4 -4
  150. data/app/views/alchemy/admin/pages/edit.html.erb +23 -30
  151. data/app/views/alchemy/admin/pages/index.html.erb +34 -23
  152. data/app/views/alchemy/admin/pages/new.html.erb +1 -1
  153. data/app/views/alchemy/admin/pages/sort.js.erb +1 -1
  154. data/app/views/alchemy/admin/partials/_flash_upload.html.erb +2 -3
  155. data/app/views/alchemy/admin/partials/_remote_search_form.html.erb +2 -2
  156. data/app/views/alchemy/admin/partials/_search_form.html.erb +3 -3
  157. data/app/views/alchemy/admin/partials/_upload_form.html.erb +2 -2
  158. data/app/views/alchemy/admin/pictures/_archive.html.erb +7 -7
  159. data/app/views/alchemy/admin/pictures/_archive_overlay.html.erb +1 -1
  160. data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +6 -6
  161. data/app/views/alchemy/admin/pictures/_filter_bar.html.erb +4 -4
  162. data/app/views/alchemy/admin/pictures/_overlay_picture_list.html.erb +1 -1
  163. data/app/views/alchemy/admin/pictures/_picture.html.erb +3 -8
  164. data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +9 -14
  165. data/app/views/alchemy/admin/pictures/_tag_list.html.erb +27 -25
  166. data/app/views/alchemy/admin/pictures/archive_overlay.js.erb +3 -1
  167. data/app/views/alchemy/admin/pictures/index.html.erb +49 -42
  168. data/app/views/alchemy/admin/pictures/new.html.erb +2 -2
  169. data/app/views/alchemy/admin/pictures/show.html.erb +11 -0
  170. data/app/views/alchemy/admin/resources/_boolean.html.erb +2 -2
  171. data/app/views/alchemy/admin/resources/_datetime.html.erb +2 -2
  172. data/app/views/alchemy/admin/resources/_form.html.erb +9 -8
  173. data/app/views/alchemy/admin/resources/_resource.html.erb +15 -21
  174. data/app/views/alchemy/admin/resources/_string.html.erb +2 -2
  175. data/app/views/alchemy/admin/resources/_table.html.erb +11 -13
  176. data/app/views/alchemy/admin/resources/_text.html.erb +2 -2
  177. data/app/views/alchemy/admin/resources/index.csv.erb +13 -0
  178. data/app/views/alchemy/admin/resources/index.html.erb +24 -15
  179. data/app/views/alchemy/admin/sites/index.html.erb +23 -0
  180. data/app/views/alchemy/admin/tags/_radio_tag.html.erb +1 -1
  181. data/app/views/alchemy/admin/tags/_tag.html.erb +2 -1
  182. data/app/views/alchemy/admin/tags/edit.html.erb +1 -1
  183. data/app/views/alchemy/admin/tags/index.html.erb +16 -11
  184. data/app/views/alchemy/admin/tags/new.html.erb +3 -3
  185. data/app/views/alchemy/admin/trash/clear.js.coffee +1 -1
  186. data/app/views/alchemy/admin/users/_table.html.erb +12 -5
  187. data/app/views/alchemy/admin/users/_user.html.erb +16 -16
  188. data/app/views/alchemy/admin/users/index.html.erb +28 -16
  189. data/app/views/alchemy/breadcrumb/_page.html.erb +15 -0
  190. data/app/views/alchemy/breadcrumb/_spacer.html.erb +1 -0
  191. data/app/views/alchemy/elements/_editor_not_found.html.erb +1 -1
  192. data/app/views/alchemy/essences/_essence_file_editor.html.erb +16 -16
  193. data/app/views/alchemy/essences/_essence_file_view.html.erb +8 -9
  194. data/app/views/alchemy/essences/_essence_picture_editor.html.erb +3 -6
  195. data/app/views/alchemy/essences/_essence_picture_tools.html.erb +9 -8
  196. data/app/views/alchemy/essences/_essence_richtext_editor.html.erb +0 -5
  197. data/app/views/alchemy/essences/_linkable_essence_tools.html.erb +2 -2
  198. data/app/views/alchemy/navigation/_link.html.erb +7 -7
  199. data/app/views/alchemy/navigation/_renderer.html.erb +29 -36
  200. data/app/views/alchemy/notifications/admin_user_created.de.text.erb +5 -1
  201. data/app/views/alchemy/notifications/admin_user_created.en.text.erb +5 -1
  202. data/app/views/alchemy/notifications/registered_user_created.de.text.erb +13 -0
  203. data/app/views/alchemy/notifications/registered_user_created.en.text.erb +13 -0
  204. data/app/views/alchemy/search/_result.html.erb +4 -6
  205. data/app/views/alchemy/search/_results.html.erb +4 -5
  206. data/app/views/alchemy/user_sessions/leave.html.erb +1 -1
  207. data/app/views/alchemy/user_sessions/new.html.erb +2 -2
  208. data/app/views/kaminari/_first_page.html.erb +11 -0
  209. data/app/views/kaminari/_gap.html.erb +1 -1
  210. data/app/views/kaminari/_last_page.html.erb +11 -0
  211. data/app/views/kaminari/_next_page.html.erb +2 -2
  212. data/app/views/kaminari/_page.html.erb +1 -1
  213. data/app/views/kaminari/_paginator.html.erb +2 -0
  214. data/app/views/kaminari/_prev_page.html.erb +2 -2
  215. data/app/views/layouts/alchemy/admin.html.erb +4 -5
  216. data/config/alchemy/config.yml +8 -12
  217. data/config/authorization_rules.rb +4 -3
  218. data/config/initializers/dragonfly.rb +20 -12
  219. data/config/locales/alchemy.de.yml +20 -15
  220. data/config/locales/alchemy.en.yml +15 -10
  221. data/config/locales/devise.de.yml +1 -0
  222. data/config/routes.rb +3 -3
  223. data/{spec/dummy/db/migrate/20121118000000_alchemy_two_point_four.rb → db/migrate/20130214233001_alchemy_two_point_five.rb} +50 -36
  224. data/db/migrate/20130221200514_migrate_attachments_to_dragonfly.rb +21 -0
  225. data/db/migrate/20130312205327_change_alchemy_users_role_to_roles.rb +11 -0
  226. data/lib/alchemy/capistrano.rb +10 -8
  227. data/lib/alchemy/errors.rb +7 -0
  228. data/lib/alchemy/filetypes.rb +33 -0
  229. data/lib/alchemy/i18n.rb +9 -1
  230. data/lib/alchemy/name_conversions.rb +28 -0
  231. data/lib/alchemy/page_layout.rb +5 -3
  232. data/lib/alchemy/resource.rb +132 -29
  233. data/lib/alchemy/resources_helper.rb +81 -12
  234. data/lib/alchemy/upgrader.rb +14 -276
  235. data/lib/alchemy/version.rb +1 -1
  236. data/lib/alchemy_cms.rb +17 -2
  237. data/lib/rails/generators/alchemy/deploy_script/templates/deploy.rb.tt +1 -1
  238. data/lib/rails/generators/alchemy/scaffold/scaffold_generator.rb +1 -1
  239. data/lib/tasks/alchemy/convert.rake +39 -0
  240. data/lib/tasks/alchemy/install.rake +4 -6
  241. data/lib/tasks/alchemy/upgrade.rake +18 -1
  242. data/spec/controllers/admin/clipboard_controller_spec.rb +4 -4
  243. data/spec/controllers/admin/elements_controller_spec.rb +23 -23
  244. data/spec/controllers/admin/pages_controller_spec.rb +15 -0
  245. data/spec/controllers/admin/resources_controller_spec.rb +1 -11
  246. data/spec/controllers/admin/trash_controller_spec.rb +9 -9
  247. data/spec/controllers/attachments_controller_spec.rb +3 -3
  248. data/spec/controllers/elements_controller_spec.rb +2 -2
  249. data/spec/controllers/pages_controller_spec.rb +160 -129
  250. data/spec/controllers/pictures_controller_spec.rb +2 -2
  251. data/spec/controllers/user_sessions_controller_spec.rb +3 -3
  252. data/spec/controllers/users_controller_spec.rb +2 -2
  253. data/spec/dummy/app/models/event.rb +2 -2
  254. data/spec/dummy/app/models/location.rb +4 -0
  255. data/spec/dummy/app/views/layouts/application.html.erb +6 -42
  256. data/spec/dummy/config/routes.rb +1 -1
  257. data/spec/dummy/db/migrate/20121026104128_create_events.rb +0 -1
  258. data/{db/migrate/20121118000000_alchemy_two_point_four.rb → spec/dummy/db/migrate/20130214233001_alchemy_two_point_five.rb} +50 -36
  259. data/spec/dummy/db/migrate/20130221200514_migrate_attachments_to_dragonfly.rb +21 -0
  260. data/spec/dummy/db/migrate/20130312205327_change_alchemy_users_role_to_roles.rb +11 -0
  261. data/spec/dummy/db/migrate/20130328101418_create_locations.rb +9 -0
  262. data/spec/dummy/db/schema.rb +15 -6
  263. data/spec/factories.rb +4 -4
  264. data/spec/{integration → features}/admin/link_overlay_spec.rb +0 -0
  265. data/spec/{integration → features}/admin/modules_integration_spec.rb +1 -1
  266. data/spec/{integration → features}/admin/pages_controller_spec.rb +9 -4
  267. data/spec/{integration → features}/admin/picture_library_integration_spec.rb +5 -5
  268. data/spec/{integration → features}/admin/resources_integration_spec.rb +1 -1
  269. data/spec/{integration → features}/navigation_spec.rb +0 -0
  270. data/spec/{integration → features}/pages_controller_spec.rb +42 -112
  271. data/spec/{integration → features}/picture_security_spec.rb +2 -2
  272. data/spec/{integration → features}/security_spec.rb +7 -7
  273. data/spec/{integration → features}/translation_integration_spec.rb +0 -0
  274. data/spec/helpers/admin/base_helper_spec.rb +0 -50
  275. data/spec/helpers/admin/tags_helper_spec.rb +53 -0
  276. data/spec/helpers/base_helper_spec.rb +19 -3
  277. data/spec/helpers/pages_helper_spec.rb +92 -44
  278. data/spec/{url_helpers_spec.rb → helpers/picture_url_helpers_spec.rb} +7 -7
  279. data/spec/helpers/url_helper_spec.rb +92 -72
  280. data/spec/{config_spec.rb → libraries/config_spec.rb} +0 -0
  281. data/spec/libraries/resource_spec.rb +215 -76
  282. data/spec/libraries/resources_helper_spec.rb +70 -28
  283. data/spec/models/attachment_spec.rb +75 -9
  284. data/spec/models/clipboard_spec.rb +1 -1
  285. data/spec/models/element_spec.rb +7 -0
  286. data/spec/models/page_spec.rb +144 -25
  287. data/spec/models/picture_spec.rb +5 -5
  288. data/spec/models/resource_spec.rb +47 -10
  289. data/spec/models/user_spec.rb +115 -3
  290. data/spec/{routing_spec.rb → routing/routing_spec.rb} +8 -20
  291. data/spec/spec_helper.rb +5 -6
  292. data/spec/support/alchemy/specs_helpers.rb +1 -1
  293. data/spec/support/ci/install_phantomjs +1 -1
  294. data/spec/support/image with spaces.png +0 -0
  295. data/vendor/assets/javascripts/jquery_plugins/jquery.Jcrop.min.js +18 -18
  296. data/vendor/assets/javascripts/jquery_plugins/{jquery.dialogextend.1_0_1.js → jquery.dialogextend.js} +25 -17
  297. data/vendor/assets/javascripts/jquery_plugins/jquery.scrollTo.min.js +7 -0
  298. data/vendor/assets/javascripts/jquery_plugins/jquery.ui.tabspaging.js +7 -7
  299. data/vendor/assets/javascripts/keymage.min.js +6 -0
  300. data/vendor/assets/javascripts/spin.min.js +1 -0
  301. metadata +122 -124
  302. data/app/assets/images/alchemy/ajax_loader.gif +0 -0
  303. data/app/assets/images/alchemy/gui/toggle.png +0 -0
  304. data/app/assets/images/alchemy/image_loader.gif +0 -0
  305. data/app/assets/images/alchemy/shading.png +0 -0
  306. data/app/assets/images/alchemy/tabs.gif +0 -0
  307. data/app/assets/javascripts/alchemy/alchemy.base.js +0 -172
  308. data/app/assets/javascripts/alchemy/alchemy.datepicker.js +0 -47
  309. data/app/assets/javascripts/alchemy/alchemy.element_editor_selector.js +0 -91
  310. data/app/assets/javascripts/alchemy/alchemy.growler.js +0 -46
  311. data/app/assets/javascripts/alchemy/alchemy.image_cropper.js +0 -60
  312. data/app/assets/javascripts/alchemy/alchemy.js_extensions.js +0 -15
  313. data/app/assets/javascripts/alchemy/alchemy.preview_window.js +0 -97
  314. data/app/assets/javascripts/alchemy/alchemy.windows.js +0 -321
  315. data/app/models/alchemy/clipboard_spec.rb +0 -0
  316. data/app/views/alchemy/admin/pictures/show_in_window.html.erb +0 -8
  317. data/app/views/alchemy/notifications/registered_user_created.text.erb +0 -11
  318. data/db/migrate/20121121162313_switch_from_fleximage_to_dragonfly.rb +0 -21
  319. data/db/migrate/20121205155004_create_alchemy_sites.rb +0 -14
  320. data/db/migrate/20121211163003_add_public_to_alchemy_sites.rb +0 -6
  321. data/db/migrate/20121220102223_add_aliases_to_site.rb +0 -6
  322. data/db/migrate/20130110212411_create_alchemy_legacy_page_urls.rb +0 -11
  323. data/db/migrate/20130121092645_migrate_to_devise.rb +0 -24
  324. data/spec/alchemy_spec.rb +0 -7
  325. data/spec/dummy/db/migrate/20121121162313_switch_from_fleximage_to_dragonfly.rb +0 -21
  326. data/spec/dummy/db/migrate/20121205155004_create_alchemy_sites.rb +0 -14
  327. data/spec/dummy/db/migrate/20121211163003_add_public_to_alchemy_sites.rb +0 -6
  328. data/spec/dummy/db/migrate/20121220102223_add_aliases_to_site.rb +0 -6
  329. data/spec/dummy/db/migrate/20130110212411_create_alchemy_legacy_page_urls.rb +0 -11
  330. data/spec/dummy/db/migrate/20130121092645_migrate_to_devise.rb +0 -24
  331. data/vendor/assets/javascripts/jquery_plugins/jquery.scrollTo-1.4.2-min.js +0 -11
@@ -14,14 +14,14 @@ describe "Picture Library", :js => true do
14
14
  end
15
15
 
16
16
  it "it should be possible to filter tags by clicking on its name in the tag list" do
17
- visit '/alchemy/admin/pictures'
17
+ visit '/admin/pictures'
18
18
  click_on 'tag1 (1)'
19
19
  page.should have_content 'TaggedWith1'
20
20
  page.should_not have_content 'TaggedWith2'
21
21
  end
22
22
 
23
23
  it "it should be possible to undo tag filtering by clicking on an active tag name" do
24
- visit '/alchemy/admin/pictures'
24
+ visit '/admin/pictures'
25
25
  click_on 'tag1 (1)'
26
26
  page.should_not have_content 'TaggedWith2'
27
27
  click_on 'tag1 (1)'
@@ -29,7 +29,7 @@ describe "Picture Library", :js => true do
29
29
  end
30
30
 
31
31
  it "it should be possible to tighten the tag scope by clicking on another tag name" do
32
- visit '/alchemy/admin/pictures'
32
+ visit '/admin/pictures'
33
33
  click_on 'tag1 (1)'
34
34
  click_on 'tag2 (1)'
35
35
  page.should have_content "You don't have any images in your archive"
@@ -44,12 +44,12 @@ describe "Picture Library", :js => true do
44
44
  end
45
45
 
46
46
  it "should list all applied tags" do
47
- visit '/alchemy/admin/pictures'
47
+ visit '/admin/pictures'
48
48
  page.should have_content 'bla'
49
49
  end
50
50
 
51
51
  it "should be possible to filter pictures by tag" do
52
- visit '/alchemy/admin/pictures'
52
+ visit '/admin/pictures'
53
53
  click_on 'bla (1)'
54
54
  page.should have_content 'bla'
55
55
  end
@@ -56,7 +56,7 @@ describe "Resources" do
56
56
 
57
57
  it "lists the new item" do
58
58
  page.should have_content "My second event"
59
- page.should have_content "2012-03-03"
59
+ page.should have_content "03 Mar 2012"
60
60
  end
61
61
 
62
62
  it "shows a success message" do
@@ -19,7 +19,7 @@ module Alchemy
19
19
  p = FactoryGirl.create(:public_page, :do_not_autogenerate => false)
20
20
  article = p.elements.find_by_name('article')
21
21
  article.content_by_name('intro').essence.update_attributes(:body => 'Welcome to Peters Petshop', :public => true)
22
- visit "/alchemy/#{p.urlname}"
22
+ visit "/#{p.urlname}"
23
23
  within('div#content div.article div.intro') { page.should have_content('Welcome to Peters Petshop') }
24
24
  end
25
25
 
@@ -28,8 +28,8 @@ module Alchemy
28
28
  FactoryGirl.create(:public_page, :visible => true, :name => 'Page 1'),
29
29
  FactoryGirl.create(:public_page, :visible => true, :name => 'Page 2')
30
30
  ]
31
- visit '/alchemy/'
32
- within('div#navigation ul') { page.should have_selector('li a[href="/alchemy/page-1"], li a[href="/alchemy/page-2"]') }
31
+ visit '/'
32
+ within('div#navigation ul') { page.should have_selector('li a[href="/page-1"], li a[href="/page-2"]') }
33
33
  end
34
34
 
35
35
  end
@@ -39,42 +39,42 @@ module Alchemy
39
39
  before { search_page }
40
40
 
41
41
  it "should have a correct path in the form tag" do
42
- visit('/alchemy/suche')
43
- page.should have_selector('div#content form[action="/alchemy/suche"]')
42
+ visit('/suche')
43
+ page.should have_selector('div#content form[action="/suche"]')
44
44
  end
45
45
 
46
46
  context "performing the search" do
47
47
 
48
48
  it "should display search results for richtext essences" do
49
49
  element.content_by_name('text').essence.update_attributes(:body => '<p>Welcome to Peters Petshop</p>')
50
- visit('/alchemy/suche?query=Petshop')
50
+ visit('/suche?query=Petshop')
51
51
  within('div#content .search_result') { page.should have_content('Petshop') }
52
52
  end
53
53
 
54
54
  it "should display search results for text essences" do
55
55
  element.content_by_name('intro').essence.update_attributes(:body => 'Welcome to Peters Petshop')
56
- visit('/alchemy/suche?query=Petshop')
56
+ visit('/suche?query=Petshop')
57
57
  within('div#content .search_result') { page.should have_content('Petshop') }
58
58
  end
59
59
 
60
60
  it "should not find contents placed on global-pages (layoutpage => true)" do
61
61
  public_page_1.update_attributes(:layoutpage => true)
62
62
  element.content_by_name('intro').essence.update_attributes(:body => 'Welcome to Peters Petshop')
63
- visit('/alchemy/suche?query=Petshop')
63
+ visit('/suche?query=Petshop')
64
64
  within('div#content') { page.should have_css('h2.no_search_results') }
65
65
  end
66
66
 
67
67
  it "should not find contents placed on unpublished pages (public => false)" do
68
68
  public_page_1.update_attributes(:public => false)
69
69
  element.content_by_name('intro').essence.update_attributes(:body => 'Welcome to Peters Petshop')
70
- visit('/alchemy/suche?query=Petshop')
70
+ visit('/suche?query=Petshop')
71
71
  within('div#content') { page.should have_css('h2.no_search_results') }
72
72
  end
73
73
 
74
74
  it "should not find contents placed on restricted pages (restricted => true)" do
75
75
  public_page_1.update_attributes(:restricted => true)
76
76
  element.content_by_name('intro').essence.update_attributes(:body => 'Welcome to Peters Petshop')
77
- visit('/alchemy/suche?query=Petshop')
77
+ visit('/suche?query=Petshop')
78
78
  within('div#content') { page.should have_css('h2.no_search_results') }
79
79
  end
80
80
 
@@ -93,7 +93,7 @@ module Alchemy
93
93
 
94
94
  it "should not display search results from other languages then current" do
95
95
  english_element.content_by_name('headline').essence.update_attributes(:body => 'Joes Hardware')
96
- visit('/alchemy/de/suche?query=Hardware')
96
+ visit('/de/suche?query=Hardware')
97
97
  within('div#content') { page.should have_css('h2.no_search_results') }
98
98
  page.should_not have_css('div#content .search_result')
99
99
  end
@@ -115,28 +115,28 @@ module Alchemy
115
115
 
116
116
  context "if no language params are given" do
117
117
  it "should redirect to url with nested language code" do
118
- visit "/alchemy/#{public_page_1.urlname}"
119
- page.current_path.should == "/alchemy/#{public_page_1.language_code}/#{public_page_1.urlname}"
118
+ visit "/#{public_page_1.urlname}"
119
+ page.current_path.should == "/#{public_page_1.language_code}/#{public_page_1.urlname}"
120
120
  end
121
121
  end
122
122
 
123
123
  context "if requested page is unpublished" do
124
124
 
125
125
  before do
126
+ Config.stub!(:get) { |arg| arg == :url_nesting ? false : Config.parameter(arg) }
126
127
  public_page_1.update_attributes(:public => false, :name => 'Not Public', :urlname => '')
127
128
  public_child
128
- Config.stub!(:get) { |arg| arg == :url_nesting ? false : Config.parameter(arg) }
129
129
  end
130
130
 
131
131
  it "should redirect to public child" do
132
- visit "/alchemy/#{default_language.code}/not-public"
133
- page.current_path.should == "/alchemy/#{default_language.code}/public-child"
132
+ visit "/#{default_language.code}/not-public"
133
+ page.current_path.should == "/#{default_language.code}/public-child"
134
134
  end
135
135
 
136
136
  context "and url has no language code" do
137
137
  it "should redirect to url of public child with language code of default language" do
138
- visit '/alchemy/not-public'
139
- page.current_path.should == "/alchemy/#{default_language.code}/public-child"
138
+ visit '/not-public'
139
+ page.current_path.should == "/#{default_language.code}/public-child"
140
140
  end
141
141
  end
142
142
 
@@ -144,27 +144,27 @@ module Alchemy
144
144
 
145
145
  context "if requested url is index url" do
146
146
  it "should redirect to pages url with default language" do
147
- visit '/alchemy/'
148
- page.current_path.should == "/alchemy/#{default_language.code}/home"
147
+ visit '/'
148
+ page.current_path.should == "/#{default_language.code}/home"
149
149
  end
150
150
  end
151
151
 
152
152
  context "if requested url is only the language code" do
153
153
  it "should redirect to pages url with default language" do
154
- visit "/alchemy/#{default_language.code}"
155
- page.current_path.should == "/alchemy/#{default_language.code}/home"
154
+ visit "/#{default_language.code}"
155
+ page.current_path.should == "/#{default_language.code}/home"
156
156
  end
157
157
  end
158
158
 
159
159
  context "requested url is only the urlname" do
160
160
  it "then it should redirect to pages url with nested language." do
161
- visit '/alchemy/home'
162
- page.current_path.should == '/alchemy/de/home'
161
+ visit '/home'
162
+ page.current_path.should == '/de/home'
163
163
  end
164
164
  end
165
165
 
166
166
  it "should keep additional params" do
167
- visit "/alchemy/#{public_page_1.urlname}?query=Peter"
167
+ visit "/#{public_page_1.urlname}?query=Peter"
168
168
  page.current_url.should match(/\?query=Peter/)
169
169
  end
170
170
 
@@ -174,67 +174,19 @@ module Alchemy
174
174
 
175
175
  it "should render 404 if urlname and lang parameter do not belong to same page" do
176
176
  FactoryGirl.create(:english)
177
- visit "/alchemy/en/#{public_page_1.urlname}"
177
+ visit "/en/#{public_page_1.urlname}"
178
178
  page.status_code.should == 404
179
179
  end
180
180
 
181
181
  it "should render 404 if requested language does not exist" do
182
- visit "/alchemy/fo/#{public_page_1.urlname}"
182
+ public_page_1
183
+ LegacyPageUrl.delete_all
184
+ visit "/fo/#{public_page_1.urlname}"
183
185
  page.status_code.should == 404
184
186
  end
185
187
 
186
188
  end
187
189
 
188
- context "with url nesting" do
189
-
190
- before do
191
- level1 = FactoryGirl.create(:public_page, :name => 'catalog')
192
- level2 = FactoryGirl.create(:public_page, :parent_id => level1.id, :name => 'products')
193
- level3 = FactoryGirl.create(:public_page, :parent_id => level2.id, :name => 'screwdriver')
194
- end
195
-
196
- context "enabled" do
197
-
198
- before(:each) do
199
- Config.stub!(:get) { |arg| arg == :url_nesting ? true : Config.parameter(arg) }
200
- end
201
-
202
- context "requesting a non nested url" do
203
-
204
- it "should redirect to nested url" do
205
- visit "/alchemy/de/screwdriver"
206
- page.current_path.should == '/alchemy/de/catalog/products/screwdriver'
207
- end
208
-
209
- it "should only redirect to nested url if page is nested" do
210
- visit "/alchemy/de/catalog"
211
- page.status_code.should == 200
212
- page.current_path.should == "/alchemy/de/catalog"
213
- end
214
-
215
- end
216
-
217
- end
218
-
219
- context "disabled" do
220
-
221
- before(:each) do
222
- Config.stub!(:get) { |arg| arg == :url_nesting ? false : Config.parameter(arg) }
223
- end
224
-
225
- context "requesting a nested url" do
226
-
227
- it "should redirect to not nested url" do
228
- visit "/alchemy/de/catalog/products/screwdriver"
229
- page.current_path.should == "/alchemy/de/screwdriver"
230
- end
231
-
232
- end
233
-
234
- end
235
-
236
- end
237
-
238
190
  end
239
191
 
240
192
  context "not in multi language mode" do
@@ -245,22 +197,8 @@ module Alchemy
245
197
  end
246
198
 
247
199
  it "should redirect from nested language code url to normal url" do
248
- visit "/alchemy/de/#{public_page_1.urlname}"
249
- page.current_path.should == "/alchemy/#{public_page_1.urlname}"
250
- end
251
-
252
- context "with no lang parameter" do
253
-
254
- it "should have defaults language language_id in the session" do
255
- get show_page_path(:urlname => 'a-public-page')
256
- controller.session[:language_id].should == Language.get_default.id
257
- end
258
-
259
- it "should have defaults language language_code in the session" do
260
- get show_page_path(:urlname => 'a-public-page')
261
- controller.session[:language_code].should == Language.get_default.code
262
- end
263
-
200
+ visit "/de/#{public_page_1.urlname}"
201
+ page.current_path.should == "/#{public_page_1.urlname}"
264
202
  end
265
203
 
266
204
  context "should redirect to public child" do
@@ -271,24 +209,24 @@ module Alchemy
271
209
  end
272
210
 
273
211
  it "if requested page is unpublished" do
274
- visit '/alchemy/not-public'
275
- page.current_path.should == '/alchemy/public-child'
212
+ visit '/not-public'
213
+ page.current_path.should == '/public-child'
276
214
  end
277
215
 
278
216
  it "with normal url, if requested url has nested language code and is not public" do
279
- visit '/alchemy/de/not-public'
280
- page.current_path.should == '/alchemy/public-child'
217
+ visit '/de/not-public'
218
+ page.current_path.should == '/public-child'
281
219
  end
282
220
 
283
221
  end
284
222
 
285
223
  it "should redirect to pages url, if requested url is index url" do
286
- visit '/alchemy/'
287
- page.current_path.should == '/alchemy/home'
224
+ visit '/'
225
+ page.current_path.should == '/home'
288
226
  end
289
227
 
290
228
  it "should keep additional params" do
291
- visit "/alchemy/de/#{public_page_1.urlname}?query=Peter"
229
+ visit "/de/#{public_page_1.urlname}?query=Peter"
292
230
  page.current_url.should match(/\?query=Peter/)
293
231
  end
294
232
 
@@ -300,26 +238,18 @@ module Alchemy
300
238
 
301
239
  before do
302
240
  User.stub!(:admins).and_return([1, 2]) # We need a admin user or the signup page will show up
303
- visit "/alchemy/non-existing-page"
304
- end
305
-
306
- context "if a language root page exists" do
307
-
308
- it "should render the status code in the title tag" do
309
- within("title") { page.should have_content("404") }
310
- end
311
-
241
+ visit "/non-existing-page"
312
242
  end
313
243
 
314
- it "should render public/404.html when it exists" do
315
- within("title") { page.should have_content("404") }
244
+ it "should render public/404.html" do
245
+ page.status_code.should == 404
316
246
  end
317
247
 
318
248
  end
319
249
 
320
250
  context "with invalid byte code char in urlname parameter" do
321
251
  it "should render page not found" do
322
- visit '/alchemy/%ed'
252
+ visit '/%ed'
323
253
  page.status_code.should == 404
324
254
  end
325
255
  end
@@ -10,7 +10,7 @@ describe 'Picture renderung security', :js => true do
10
10
  context "passing no security token" do
11
11
 
12
12
  it 'should return a bad request (400)' do
13
- visit "/alchemy/pictures/#{picture.id}/show/image.png"
13
+ visit "/pictures/#{picture.id}/show/image.png"
14
14
  page.status_code.should == 400
15
15
  end
16
16
 
@@ -19,7 +19,7 @@ describe 'Picture renderung security', :js => true do
19
19
  context "passing correct security token" do
20
20
 
21
21
  before do
22
- visit "/alchemy/pictures/#{picture.id}/show/image.png?sh=#{picture.security_token}"
22
+ visit "/pictures/#{picture.id}/show/image.png?sh=#{picture.security_token}"
23
23
  end
24
24
 
25
25
  it 'should return image' do
@@ -10,8 +10,8 @@ describe "Security: " do
10
10
  context "If no user is present" do
11
11
 
12
12
  it "render the signup view" do
13
- visit '/alchemy'
14
- current_path.should == '/alchemy/admin/signup'
13
+ visit '/'
14
+ current_path.should == '/admin/signup'
15
15
  end
16
16
  end
17
17
 
@@ -22,14 +22,14 @@ describe "Security: " do
22
22
  end
23
23
 
24
24
  it "a visitor should not be able to signup" do
25
- visit '/alchemy/admin/signup'
25
+ visit '/admin/signup'
26
26
  within('#alchemy_greeting') { page.should_not have_content('have to signup') }
27
27
  end
28
28
 
29
29
  context "that is not logged in" do
30
30
  it "should see login-form" do
31
- visit '/alchemy/admin/dashboard'
32
- current_path.should == '/alchemy/admin/login'
31
+ visit '/admin/dashboard'
32
+ current_path.should == '/admin/login'
33
33
  end
34
34
  end
35
35
 
@@ -40,8 +40,8 @@ describe "Security: " do
40
40
  end
41
41
 
42
42
  it "should be redirected to dashboard" do
43
- visit '/alchemy/admin/login'
44
- current_path.should == '/alchemy/admin/dashboard'
43
+ visit '/admin/login'
44
+ current_path.should == '/admin/dashboard'
45
45
  end
46
46
 
47
47
  end
@@ -96,56 +96,6 @@ module Alchemy
96
96
 
97
97
  end
98
98
 
99
- context "Filtering pictures depending on tags from params" do
100
-
101
- let(:tag) do
102
- mock_model(ActsAsTaggableOn::Tag, :name => "foo")
103
- end
104
-
105
- describe "#pictures_filtered_by_tag?" do
106
- it "should return true if the filterlist contains the given tag" do
107
- controller.params[:tagged_with] = "foo,bar,baz"
108
- helper.pictures_filtered_by_tag?(tag).should == true
109
- end
110
-
111
- it "should return false if the filterlist does not contain the given tag" do
112
- controller.params[:tagged_with] = "bar,baz"
113
- helper.pictures_filtered_by_tag?(tag).should == false
114
- end
115
- end
116
-
117
- describe "#add_to_picture_tag_filter" do
118
- context "if params[:tagged_with] is not present" do
119
- it "should return an Array with the given tag name" do
120
- helper.add_to_picture_tag_filter(tag).should == ["foo"]
121
- end
122
- end
123
-
124
- context "if params[:tagged_with] contains some tag names" do
125
- it "should return an Array of tag names including the given one" do
126
- controller.params[:tagged_with] = "bar,baz"
127
- helper.add_to_picture_tag_filter(tag).should == ["bar", "baz", "foo"]
128
- end
129
- end
130
- end
131
-
132
- describe "#remove_from_picture_tag_filter" do
133
- context "if params[:tagged_with] is not present" do
134
- it "should return an empty Array" do
135
- helper.remove_from_picture_tag_filter(tag).should be_empty
136
- end
137
- end
138
-
139
- context "if params[:tagged_with] contains some tag names" do
140
- it "should return an Array of tag names without the given one" do
141
- controller.params[:tagged_with] = "bar,baz,foo"
142
- helper.remove_from_picture_tag_filter(tag).should == ["bar", "baz"]
143
- end
144
- end
145
- end
146
-
147
- end
148
-
149
99
  describe '#pages_for_select' do
150
100
 
151
101
  let(:contact_form) { FactoryGirl.create(:element, :name => 'contactform', :create_contents_after_create => true) }