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
@@ -1,172 +0,0 @@
1
- if (typeof(Alchemy) === 'undefined') {
2
- var Alchemy = {};
3
- }
4
-
5
- (function($) {
6
-
7
- // Setting jQueryUIs global animation duration
8
- $.fx.speeds._default = 400;
9
-
10
- // The Alchemy JavaScript Object contains all Functions
11
- $.extend(Alchemy, {
12
-
13
- pictureSelector: function() {
14
- var
15
- $selected_item_tools = $('.selected_item_tools'),
16
- $picture_selects = $('.picture_tool.select input');
17
- $picture_selects.on('change', function() {
18
- if ($picture_selects.filter(':checked').size() > 0) {
19
- $selected_item_tools.show();
20
- } else {
21
- $selected_item_tools.hide();
22
- }
23
- if (this.checked) {
24
- $(this).parent().addClass('visible').removeClass('hidden');
25
- } else {
26
- $(this).parent().removeClass('visible').addClass('hidden');
27
- }
28
- });
29
- $('a#edit_multiple_pictures').on('click', function(e) {
30
- var
31
- $this = $(this),
32
- picture_ids = $("input:checkbox", '#picture_archive').serialize();
33
- e.preventDefault();
34
- Alchemy.openWindow(
35
- $this.attr('href') + '?' + picture_ids,
36
- $this.attr('title'),
37
- 400,
38
- 230,
39
- false,
40
- true,
41
- false
42
- );
43
- return false;
44
- });
45
- },
46
-
47
- pleaseWaitOverlay: function(show) {
48
- if (typeof(show) == 'undefined') {
49
- show = true;
50
- }
51
- var $overlay = $('#overlay');
52
- $overlay.css("visibility", show ? 'visible' : 'hidden');
53
- },
54
-
55
- toggleElement: function(id, url, token, text) {
56
- var toggle = function() {
57
- $('#element_' + id + '_folder').hide();
58
- $('#element_' + id + '_folder_spinner').show();
59
- $.post(url, {
60
- authenticity_token: encodeURIComponent(token)
61
- }, function(request) {
62
- $('#element_' + id + '_folder').show();
63
- $('#element_' + id + '_folder_spinner').hide();
64
- });
65
- }
66
- if (Alchemy.isPageDirty()) {
67
- Alchemy.openConfirmWindow({
68
- title: text.title,
69
- message: text.message,
70
- okLabel: text.okLabel,
71
- cancelLabel: text.cancelLabel,
72
- okCallback: toggle
73
- });
74
- return false;
75
- } else {
76
- toggle();
77
- }
78
- },
79
-
80
- ListFilter: function(selector) {
81
- var text = $('#search_field').val().toLowerCase();
82
- var $boxes = $(selector);
83
- $boxes.map(function() {
84
- $this = $(this);
85
- $this.css({
86
- display: $this.attr('name').toLowerCase().indexOf(text) != -1 ? '' : 'none'
87
- });
88
- });
89
- },
90
-
91
- fadeImage: function(image, spinner_selector) {
92
- try {
93
- $(spinner_selector).hide();
94
- $(image).fadeIn(600);
95
- } catch (e) {
96
- Alchemy.debug(e);
97
- };
98
- },
99
-
100
- removePicture: function(selector) {
101
- var $form_field = $(selector);
102
- var $element = $form_field.parents('.element_editor');
103
- if ($form_field) {
104
- $form_field.val('');
105
- $form_field.prev().remove();
106
- $form_field.parent().addClass('missing');
107
- Alchemy.setElementDirty($element);
108
- }
109
- },
110
-
111
- setElementSaved: function(selector) {
112
- var $element = $(selector);
113
- Alchemy.setElementClean(selector);
114
- Alchemy.Buttons.enable($element);
115
- },
116
-
117
- SelectBox: function(scope) {
118
- $('select.alchemy_selectbox', scope).selectBoxIt();
119
- },
120
-
121
- Buttons: function(options) {
122
- $("button, input:submit, a.button").button(options);
123
- },
124
-
125
- selectOrCreateCellTab: function(cell_name, label) {
126
- if ($('#cell_' + cell_name).size() === 0) {
127
- $('#cells').tabs('add', '#cell_' + cell_name, label);
128
- $('#cell_' + cell_name).addClass('sortable_cell');
129
- }
130
- $('#cells').tabs('select', 'cell_' + cell_name);
131
- },
132
-
133
- buildTabbedCells: function(label) {
134
- var $cells = $('<div id="cells"/>');
135
- $('#cell_for_other_elements').wrap($cells);
136
- $('#cells').prepend('<ul><li><a href="#cell_for_other_elements">'+label+'</a></li></ul>');
137
- $('#cells').tabs().tabs('paging', { follow: true, followOnSelect: true } );
138
- },
139
-
140
- debug: function(e) {
141
- if (window['console']) {
142
- console.debug(e);
143
- console.trace();
144
- }
145
- },
146
-
147
- getUrlParam: function(name) {
148
- var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href);
149
- if (results) return results[1] || 0;
150
- },
151
-
152
- isiPhone: navigator.userAgent.match(/iPhone/i) !== null,
153
- isiPad: navigator.userAgent.match(/iPad/i) !== null,
154
- isiPod: navigator.userAgent.match(/iPod/i) !== null,
155
- isiOS: navigator.userAgent.match(/iPad|iPhone|iPod/i) !== null,
156
- isFirefox: navigator.userAgent.match(/Firefox/i) !== null,
157
- isChrome: navigator.userAgent.match(/Chrome/i) !== null,
158
- isSafari: navigator.userAgent.match(/Safari/i) !== null,
159
- isIE: navigator.userAgent.match(/MSIE/i) !== null
160
-
161
- });
162
-
163
- Alchemy.getBrowserVersion = function(browser) {
164
- return Alchemy['is' + browser] ? parseInt(navigator.userAgent.match(new RegExp(browser + ".[0-9]+", 'i'))[0].replace(new RegExp(browser + '.'), ''), 10) : null;
165
- }
166
-
167
- Alchemy.ChromeVersion = Alchemy.getBrowserVersion('Chrome');
168
- Alchemy.FirefoxVersion = Alchemy.getBrowserVersion('Firefox');
169
- Alchemy.SafariVersion = Alchemy.getBrowserVersion('Safari');
170
- Alchemy.IEVersion = Alchemy.getBrowserVersion('MSIE');
171
-
172
- })(jQuery);
@@ -1,47 +0,0 @@
1
- if (typeof(Alchemy) === 'undefined') {
2
- var Alchemy = {};
3
- }
4
-
5
- (function($) {
6
-
7
- $.extend(Alchemy, {
8
-
9
- Datepicker: function(selector) {
10
- var browserHasDatepicker = Alchemy.isiOS;
11
- var datepicker_options = {
12
- dateFormat: 'yy-mm-dd',
13
- changeMonth: true,
14
- changeYear: true,
15
- showWeek: true,
16
- showButtonPanel: true,
17
- showOtherMonths: true,
18
- onSelect: function() {
19
- Alchemy.setElementDirty($(this).parents('div.element_editor'));
20
- }
21
- };
22
- if (typeof(selector) === 'undefined') {
23
- var selector = 'input[type="date"], input.date'
24
- }
25
- if (Alchemy.locale === 'de') {
26
- $.extend(datepicker_options, {
27
- dateFormat: 'dd.mm.yy',
28
- dayNames: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'],
29
- dayNamesMin: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
30
- monthNames: ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'],
31
- monthNamesShort: ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],
32
- closeText: 'Ok',
33
- currentText: 'Heute',
34
- weekHeader: 'KW',
35
- nextText: 'nächster',
36
- prevText: 'vorheriger'
37
- });
38
- }
39
- if (!browserHasDatepicker) {
40
- // Disables the browsers default Datepicker.
41
- $(selector).datepicker(datepicker_options).prop('type','text');
42
- }
43
- }
44
-
45
- });
46
-
47
- })(jQuery);
@@ -1,91 +0,0 @@
1
- if (typeof(Alchemy) === 'undefined') {
2
- var Alchemy = {};
3
- }
4
-
5
- (function($) {
6
-
7
- var ElementEditorSelector = {};
8
- $.extend(Alchemy, ElementEditorSelector);
9
-
10
- Alchemy.ElementEditorSelector = {
11
-
12
- init: function() {
13
- var $elements = $('#element_area .element_editor');
14
- var self = Alchemy.ElementEditorSelector;
15
- self.reinit($elements);
16
- },
17
-
18
- reinit: function(elements) {
19
- var self = Alchemy.ElementEditorSelector;
20
- var $elements = $(elements);
21
- $elements.each(function() {
22
- self.bindEvent(this);
23
- });
24
- $elements.find('.element_head').click(self.onClickElement);
25
- $elements.find('.element_head').dblclick(function() {
26
- var id = $(this).parent().attr('id').replace(/\D/g, '');
27
- self.foldElement(id);
28
- });
29
- },
30
-
31
- onClickElement: function(e) {
32
- var self = Alchemy.ElementEditorSelector;
33
- var $element = $(this).parent('.element_editor');
34
- var id = $element.attr('id').replace(/\D/g, '');
35
- var $frame_elements, $selected_element;
36
- e.preventDefault();
37
- $('#element_area .element_editor').removeClass('selected');
38
- $element.addClass('selected');
39
- self.scrollToElement(this);
40
- $frame_elements = document.getElementById('alchemyPreviewWindow').contentWindow.jQuery('[data-alchemy-element]');
41
- $selected_element = $frame_elements.closest('[data-alchemy-element="' + id + '"]');
42
- $selected_element.trigger('Alchemy.SelectElement');
43
- },
44
-
45
- bindEvent: function(element) {
46
- var self = Alchemy.ElementEditorSelector;
47
- $(element).bind('Alchemy.SelectElementEditor', self.selectElement);
48
- },
49
-
50
- selectElement: function(e) {
51
- var self = Alchemy.ElementEditorSelector;
52
- var id = this.id.replace(/\D/g, '');
53
- var $element = $(this);
54
- var $elements = $('#element_area .element_editor');
55
- var $cells = $('#cells .sortable_cell');
56
- var $cell;
57
- e.preventDefault();
58
- $elements.removeClass('selected');
59
- $element.addClass('selected');
60
- if ($cells.size() > 0) {
61
- $cell = $element.parent('.sortable_cell');
62
- $('#cells').tabs('select', $cell.attr('id'));
63
- }
64
- if ($element.hasClass('folded')) {
65
- self.foldElement(id);
66
- } else {
67
- self.scrollToElement(this);
68
- }
69
- },
70
-
71
- scrollToElement: function(el) {
72
- $('#alchemyElementWindow').scrollTo(el, {
73
- duration: 400,
74
- offset: -10
75
- });
76
- },
77
-
78
- foldElement: function(id) {
79
- var self = Alchemy.ElementEditorSelector;
80
- $('#element_' + id + '_folder').hide();
81
- $('#element_' + id + '_folder_spinner').show();
82
- $.post(Alchemy.routes.fold_admin_element_path(id), function() {
83
- $('#element_' + id + '_folder').show();
84
- $('#element_' + id + '_folder_spinner').hide();
85
- self.scrollToElement('#element_' + id);
86
- });
87
- }
88
-
89
- }
90
-
91
- })(jQuery);
@@ -1,46 +0,0 @@
1
- if (typeof(Alchemy) === 'undefined') {
2
- var Alchemy = {};
3
- }
4
-
5
- (function($) {
6
-
7
- var Growler = {};
8
- $.extend(Alchemy, Growler);
9
-
10
- Alchemy.Growler = {
11
-
12
- build: function(message, flash_type) {
13
- var $flash_container = $('<div class="flash ' + flash_type + '" />');
14
- var icon_class = flash_type === 'notice' ? 'tick' : flash_type;
15
- $flash_container.append('<span class="icon ' + icon_class + '" />');
16
- $flash_container.append(message);
17
- $('#flash_notices').append($flash_container);
18
- $('#flash_notices').show();
19
- Alchemy.Growler.fade();
20
- },
21
-
22
- fade: function() {
23
- $('.flash.notice, .flash.warn, .flash.alert', '#flash_notices').delay(5000).hide('drop', {
24
- direction: "up"
25
- }, 400, function() {
26
- $(this).remove();
27
- });
28
- $('.flash.error', '#flash_notices').click(function() {
29
- $(this).hide('drop', {
30
- direction: "up"
31
- }, 400, function() {
32
- $(this).remove();
33
- });
34
- });
35
- }
36
-
37
- },
38
-
39
- Alchemy.growl = function(message, style) {
40
- if (typeof(style) === 'undefined') {
41
- style = 'notice';
42
- }
43
- Alchemy.Growler.build(message, style);
44
- }
45
-
46
- })(jQuery);
@@ -1,60 +0,0 @@
1
- if (typeof(Alchemy) === 'undefined') {
2
- var Alchemy = {};
3
- }
4
-
5
- (function($) {
6
-
7
- var ImageCropper = {};
8
- ImageCropper.initialized = false;
9
- $.extend(Alchemy, ImageCropper);
10
-
11
- Alchemy.ImageCropper = {
12
-
13
- init: function(box, size_x, size_y, default_box, ratio, true_size) {
14
- var crop_from_field = $('#essence_picture_crop_from');
15
- var crop_size_field = $('#essence_picture_crop_size');
16
- var options = {
17
- onSelect: function(coords) {
18
- crop_from_field.val(coords.x + "x" + coords.y);
19
- crop_size_field.val(coords.w + "x" + coords.h);
20
- },
21
- setSelect: box,
22
- aspectRatio: ratio ? ratio : undefined,
23
- minSize: [size_x, size_y],
24
- boxWidth: 800,
25
- boxHeight: 600,
26
- trueSize: true_size
27
- };
28
- Alchemy.ImageCropper.box = box;
29
- Alchemy.ImageCropper.default_box = default_box;
30
- Alchemy.ImageCropper.crop_from_field = crop_from_field;
31
- Alchemy.ImageCropper.crop_size_field = crop_size_field;
32
-
33
- if (!Alchemy.ImageCropper.initialized) {
34
- Alchemy.ImageCropper.api = $.Jcrop('#imageToCrop', options);
35
- Alchemy.ImageCropper.initialized = true;
36
- }
37
- $('.ui-dialog-titlebar-close').click(Alchemy.ImageCropper.destroy);
38
- },
39
-
40
- undo: function() {
41
- Alchemy.ImageCropper.api.setSelect(Alchemy.ImageCropper.box);
42
- },
43
-
44
- reset: function() {
45
- Alchemy.ImageCropper.api.setSelect(Alchemy.ImageCropper.default_box);
46
- Alchemy.ImageCropper.crop_from_field.val('');
47
- Alchemy.ImageCropper.crop_size_field.val('');
48
- },
49
-
50
- destroy: function() {
51
- try {
52
- Alchemy.ImageCropper.api.destroy();
53
- } catch (e) {} finally {
54
- Alchemy.ImageCropper.initialized = false;
55
- }
56
- }
57
-
58
- }
59
-
60
- })(jQuery);
@@ -1,15 +0,0 @@
1
- String.prototype.beginsWith = function(t, i) {
2
- if (i == false) {
3
- return (t == this.substring(0, t.length));
4
- } else {
5
- return (t.toLowerCase() == this.substring(0, t.length).toLowerCase());
6
- }
7
- };
8
-
9
- String.prototype.endsWith = function(t, i) {
10
- if (i == false) {
11
- return (t == this.substring(this.length - t.length));
12
- } else {
13
- return (t.toLowerCase() == this.substring(this.length - t.length).toLowerCase());
14
- }
15
- };
@@ -1,97 +0,0 @@
1
- if (typeof(Alchemy) === 'undefined') {
2
- var Alchemy = {};
3
- }
4
-
5
- (function($) {
6
-
7
- var PreviewWindow = {};
8
- $.extend(Alchemy, PreviewWindow);
9
-
10
- Alchemy.PreviewWindow = {
11
-
12
- init: function(url, title) {
13
- var $iframe = $('#alchemyPreviewWindow');
14
- if ($iframe.length === 0) {
15
- $iframe = $('<iframe src="' + url + '" id="alchemyPreviewWindow" frameborder="0"></iframe>');
16
- $iframe.load(function() {
17
- $('#preview_load_info').hide();
18
- });
19
- $iframe.css({
20
- 'background-color': '#ffffff'
21
- });
22
- Alchemy.PreviewWindow.currentWindow = $iframe.dialog({
23
- modal: false,
24
- title: title,
25
- width: $(window).width() - 502,
26
- height: $(window).height() - 76,
27
- minWidth: 600,
28
- minHeight: 300,
29
- show: "fade",
30
- hide: "fade",
31
- position: [70, 84],
32
- autoResize: true,
33
- closeOnEscape: false,
34
- create: function() {
35
- var $spinner = $('<img src="/assets/alchemy/ajax_loader.gif" alt="" id="preview_load_info" />');
36
- var $reload = $('<a href="#" class="ui-dialog-titlebar-refresh ui-corner-all" role="button"></a>');
37
- var titlebar = $('#alchemyPreviewWindow').prev();
38
- $reload.append('<span class="ui-icon ui-icon-refresh">reload</span>');
39
- titlebar.append($reload);
40
- titlebar.append($spinner);
41
- $reload.click(Alchemy.reloadPreview);
42
- },
43
- close: function(event, ui) {
44
- Alchemy.PreviewWindow.button.enable();
45
- },
46
- open: function(event, ui) {
47
- $(this).css({
48
- width: '100%'
49
- });
50
- Alchemy.PreviewWindow.button.disable();
51
- }
52
- }).dialogExtend({
53
- "maximize": true,
54
- "dblclick": "maximize"
55
- });
56
- } else {
57
- $('#alchemyPreviewWindow').dialog('open');
58
- }
59
- },
60
-
61
- refresh: function() {
62
- var $iframe = $('#alchemyPreviewWindow');
63
- $('#preview_load_info').show();
64
- $iframe.load(function() {
65
- $('#preview_load_info').hide();
66
- });
67
- $iframe.attr('src', $iframe.attr('src'));
68
- return true;
69
- },
70
-
71
- button: {
72
- enable: function() {
73
- $('div#show_preview_window').
74
- removeClass('disabled').
75
- find('a').removeAttr('tabindex');
76
- },
77
- disable: function() {
78
- $('div#show_preview_window').
79
- addClass('disabled').
80
- find('a').attr('tabindex', '-1');
81
- },
82
- toggle: function() {
83
- if ($('div#show_preview_window').hasClass('disabled')) {
84
- Alchemy.PreviewWindow.button.enable();
85
- } else {
86
- Alchemy.PreviewWindow.button.disable();
87
- }
88
- }
89
- },
90
-
91
- };
92
-
93
- Alchemy.reloadPreview = function() {
94
- Alchemy.PreviewWindow.refresh();
95
- };
96
-
97
- })(jQuery);