alchemy_cms 2.1.12 → 2.2.rc1

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 (405) hide show
  1. data/.travis.yml +1 -1
  2. data/Gemfile +20 -16
  3. data/README.md +11 -7
  4. data/alchemy_cms.gemspec +31 -29
  5. data/app/assets/javascripts/alchemy/alchemy.base.js +234 -233
  6. data/app/assets/javascripts/alchemy/alchemy.buttons.js +26 -26
  7. data/app/assets/javascripts/alchemy/alchemy.datepicker.js +32 -32
  8. data/app/assets/javascripts/alchemy/alchemy.dirty.js +78 -78
  9. data/app/assets/javascripts/alchemy/alchemy.dragndrop.js +103 -103
  10. data/app/assets/javascripts/alchemy/alchemy.element_editor_selector.js +84 -84
  11. data/app/assets/javascripts/alchemy/alchemy.elements_window.js +88 -88
  12. data/app/assets/javascripts/alchemy/alchemy.file_progress.js +92 -0
  13. data/app/assets/javascripts/alchemy/alchemy.growler.js +23 -23
  14. data/app/assets/javascripts/alchemy/alchemy.html5.js +23 -0
  15. data/app/assets/javascripts/alchemy/alchemy.image_cropper.js +53 -52
  16. data/app/assets/javascripts/alchemy/alchemy.jquery_loader.js +33 -30
  17. data/app/assets/javascripts/alchemy/alchemy.js +2 -0
  18. data/app/assets/javascripts/alchemy/alchemy.js_extensions.js +14 -14
  19. data/app/assets/javascripts/alchemy/alchemy.link_overlay.js.coffee +181 -0
  20. data/app/assets/javascripts/alchemy/alchemy.menubar.js +48 -48
  21. data/app/assets/javascripts/alchemy/alchemy.page_sorter.js +39 -39
  22. data/app/assets/javascripts/alchemy/alchemy.preview.js +81 -83
  23. data/app/assets/javascripts/alchemy/alchemy.preview_window.js +86 -86
  24. data/app/assets/javascripts/alchemy/alchemy.routes.js.erb +23 -23
  25. data/app/assets/javascripts/alchemy/alchemy.swf_upload.js +208 -353
  26. data/app/assets/javascripts/alchemy/alchemy.uploader.js +279 -0
  27. data/app/assets/javascripts/alchemy/alchemy.windows.js +268 -268
  28. data/app/assets/javascripts/tiny_mce/plugins/alchemy_link/editor_plugin.js +42 -42
  29. data/app/assets/stylesheets/alchemy/_defaults.scss +89 -89
  30. data/app/assets/stylesheets/alchemy/base.css.scss +790 -804
  31. data/app/assets/stylesheets/alchemy/buttons.css.scss +263 -264
  32. data/app/assets/stylesheets/alchemy/dashboard.css.scss +66 -66
  33. data/app/assets/stylesheets/alchemy/elements.css.scss +575 -564
  34. data/app/assets/stylesheets/alchemy/flash.css.scss +45 -45
  35. data/app/assets/stylesheets/alchemy/frame.css.scss +262 -262
  36. data/app/assets/stylesheets/alchemy/icons.css.scss +86 -86
  37. data/app/assets/stylesheets/alchemy/jquery-ui.alchemy.css.scss +706 -707
  38. data/app/assets/stylesheets/alchemy/jquery.Jcrop.css.scss +46 -27
  39. data/app/assets/stylesheets/alchemy/jquery.sb.css.scss +107 -107
  40. data/app/assets/stylesheets/alchemy/login.css.scss +40 -38
  41. data/app/assets/stylesheets/alchemy/menubar.css.scss +84 -82
  42. data/app/assets/stylesheets/alchemy/modules.css.scss +9 -9
  43. data/app/assets/stylesheets/alchemy/pagination.css.scss +49 -49
  44. data/app/assets/stylesheets/alchemy/print.css +7 -7
  45. data/app/assets/stylesheets/alchemy/sitemap.css.scss +185 -154
  46. data/app/assets/stylesheets/alchemy/standard_set.css +205 -206
  47. data/app/assets/stylesheets/alchemy/tables.css.scss +94 -60
  48. data/app/assets/stylesheets/alchemy/tinymce_content.css.scss +34 -34
  49. data/app/assets/stylesheets/alchemy/tinymce_dialog.css.scss +177 -177
  50. data/app/assets/stylesheets/alchemy/upload.css.scss +68 -45
  51. data/app/assets/stylesheets/tiny_mce/plugins/inlinepopups/skins/alchemy/window.css.scss +222 -221
  52. data/app/controllers/alchemy/admin/attachments_controller.rb +100 -100
  53. data/app/controllers/alchemy/admin/base_controller.rb +116 -116
  54. data/app/controllers/alchemy/admin/clipboard_controller.rb +44 -44
  55. data/app/controllers/alchemy/admin/contents_controller.rb +55 -55
  56. data/app/controllers/alchemy/admin/dashboard_controller.rb +12 -11
  57. data/app/controllers/alchemy/admin/elements_controller.rb +109 -109
  58. data/app/controllers/alchemy/admin/essence_audios_controller.rb +8 -8
  59. data/app/controllers/alchemy/admin/essence_files_controller.rb +20 -20
  60. data/app/controllers/alchemy/admin/essence_flashes_controller.rb +8 -8
  61. data/app/controllers/alchemy/admin/essence_pictures_controller.rb +81 -81
  62. data/app/controllers/alchemy/admin/essence_videos_controller.rb +8 -8
  63. data/app/controllers/alchemy/admin/languages_controller.rb +16 -4
  64. data/app/controllers/alchemy/admin/layoutpages_controller.rb +9 -9
  65. data/app/controllers/alchemy/admin/pages_controller.rb +249 -248
  66. data/app/controllers/alchemy/admin/pictures_controller.rb +105 -105
  67. data/app/controllers/alchemy/admin/resources_controller.rb +111 -166
  68. data/app/controllers/alchemy/admin/trash_controller.rb +18 -18
  69. data/app/controllers/alchemy/admin/users_controller.rb +69 -69
  70. data/app/controllers/alchemy/attachments_controller.rb +27 -27
  71. data/app/controllers/alchemy/base_controller.rb +159 -155
  72. data/app/controllers/alchemy/elements_controller.rb +16 -16
  73. data/app/controllers/alchemy/messages_controller.rb +59 -59
  74. data/app/controllers/alchemy/pages_controller.rb +194 -198
  75. data/app/controllers/alchemy/pictures_controller.rb +57 -57
  76. data/app/controllers/alchemy/user_sessions_controller.rb +70 -70
  77. data/app/helpers/alchemy/admin/attachments_helper.rb +7 -7
  78. data/app/helpers/alchemy/admin/base_helper.rb +425 -425
  79. data/app/helpers/alchemy/admin/contents_helper.rb +72 -72
  80. data/app/helpers/alchemy/admin/elements_helper.rb +108 -107
  81. data/app/helpers/alchemy/admin/essences_helper.rb +108 -108
  82. data/app/helpers/alchemy/admin/pages_helper.rb +42 -42
  83. data/app/helpers/alchemy/admin/pictures_helper.rb +26 -26
  84. data/app/helpers/alchemy/base_helper.rb +90 -90
  85. data/app/helpers/alchemy/elements_helper.rb +167 -168
  86. data/app/helpers/alchemy/essences_helper.rb +133 -133
  87. data/app/helpers/alchemy/pages_helper.rb +515 -526
  88. data/app/helpers/alchemy/pictures_helper.rb +19 -0
  89. data/app/mailers/alchemy/messages.rb +13 -13
  90. data/app/mailers/alchemy/notifications.rb +19 -19
  91. data/app/models/alchemy.rb +3 -3
  92. data/app/models/alchemy/attachment.rb +52 -78
  93. data/app/models/alchemy/cell.rb +48 -48
  94. data/app/models/alchemy/content.rb +196 -196
  95. data/app/models/alchemy/element.rb +500 -490
  96. data/app/models/alchemy/essence_audio.rb +7 -7
  97. data/app/models/alchemy/essence_date.rb +10 -10
  98. data/app/models/alchemy/essence_file.rb +7 -7
  99. data/app/models/alchemy/essence_flash.rb +6 -6
  100. data/app/models/alchemy/essence_html.rb +9 -9
  101. data/app/models/alchemy/essence_picture.rb +17 -17
  102. data/app/models/alchemy/essence_richtext.rb +53 -53
  103. data/app/models/alchemy/essence_text.rb +21 -21
  104. data/app/models/alchemy/essence_video.rb +7 -7
  105. data/app/models/alchemy/folded_page.rb +3 -3
  106. data/app/models/alchemy/language.rb +91 -91
  107. data/app/models/alchemy/language/code.rb +14 -14
  108. data/app/models/alchemy/message.rb +48 -45
  109. data/app/models/alchemy/page.rb +555 -558
  110. data/app/models/alchemy/picture.rb +100 -99
  111. data/app/models/alchemy/user.rb +76 -74
  112. data/app/models/alchemy/user_session.rb +8 -8
  113. data/app/sweepers/alchemy/content_sweeper.rb +15 -15
  114. data/app/sweepers/alchemy/pages_sweeper.rb +50 -50
  115. data/app/sweepers/alchemy/pictures_sweeper.rb +14 -14
  116. data/app/views/alchemy/admin/attachments/_archive_overlay.html.erb +23 -23
  117. data/app/views/alchemy/admin/attachments/_attachment.html.erb +56 -56
  118. data/app/views/alchemy/admin/attachments/_file_to_assign.html.erb +15 -15
  119. data/app/views/alchemy/admin/attachments/_files_list.html.erb +16 -16
  120. data/app/views/alchemy/admin/attachments/create.js.erb +2 -2
  121. data/app/views/alchemy/admin/attachments/destroy.js.erb +3 -3
  122. data/app/views/alchemy/admin/attachments/edit.html.erb +10 -10
  123. data/app/views/alchemy/admin/attachments/index.html.erb +14 -14
  124. data/app/views/alchemy/admin/attachments/new.html.erb +9 -9
  125. data/app/views/alchemy/admin/clipboard/index.html.erb +21 -21
  126. data/app/views/alchemy/admin/clipboard/insert.js.erb +5 -5
  127. data/app/views/alchemy/admin/contents/_missing.html.erb +1 -1
  128. data/app/views/alchemy/admin/contents/create.js.erb +33 -33
  129. data/app/views/alchemy/admin/contents/destroy.js.erb +5 -5
  130. data/app/views/alchemy/admin/contents/new.html.erb +13 -13
  131. data/app/views/alchemy/admin/contents/order.js.erb +2 -2
  132. data/app/views/alchemy/admin/dashboard/index.html.erb +96 -92
  133. data/app/views/alchemy/admin/elements/_add_content.html.erb +12 -12
  134. data/app/views/alchemy/admin/elements/_element.html.erb +3 -3
  135. data/app/views/alchemy/admin/elements/_new_element_form.html.erb +28 -28
  136. data/app/views/alchemy/admin/elements/_picture_editor.html.erb +21 -21
  137. data/app/views/alchemy/admin/elements/create.js.erb +32 -32
  138. data/app/views/alchemy/admin/elements/index.html.erb +2 -2
  139. data/app/views/alchemy/admin/elements/new.html.erb +31 -31
  140. data/app/views/alchemy/admin/elements/order.js.erb +3 -3
  141. data/app/views/alchemy/admin/elements/trash.js.erb +13 -13
  142. data/app/views/alchemy/admin/elements/update.js.erb +6 -6
  143. data/app/views/alchemy/admin/essence_files/assign.js.erb +6 -6
  144. data/app/views/alchemy/admin/essence_pictures/crop.html.erb +32 -32
  145. data/app/views/alchemy/admin/essence_pictures/destroy.js.erb +1 -1
  146. data/app/views/alchemy/admin/essence_pictures/edit.html.erb +1 -1
  147. data/app/views/alchemy/admin/essence_pictures/update.js.erb +11 -11
  148. data/app/views/alchemy/admin/languages/_form.html.erb +51 -45
  149. data/app/views/alchemy/admin/languages/_language.html.erb +45 -45
  150. data/app/views/alchemy/admin/languages/_table.html.erb +25 -25
  151. data/app/views/alchemy/admin/layoutpages/index.html.erb +35 -35
  152. data/app/views/alchemy/admin/pages/_create_language_form.html.erb +42 -42
  153. data/app/views/alchemy/admin/pages/_external_link.html.erb +1 -1
  154. data/app/views/alchemy/admin/pages/_new_page_form.html.erb +27 -27
  155. data/app/views/alchemy/admin/pages/_page.html.erb +112 -112
  156. data/app/views/alchemy/admin/pages/_sitemap.html.erb +1 -1
  157. data/app/views/alchemy/admin/pages/configure.html.erb +71 -69
  158. data/app/views/alchemy/admin/pages/configure_external.html.erb +38 -38
  159. data/app/views/alchemy/admin/pages/destroy.js.erb +10 -10
  160. data/app/views/alchemy/admin/pages/edit.html.erb +165 -165
  161. data/app/views/alchemy/admin/pages/fold.js.erb +2 -2
  162. data/app/views/alchemy/admin/pages/index.html.erb +66 -66
  163. data/app/views/alchemy/admin/pages/locked.html.erb +1 -1
  164. data/app/views/alchemy/admin/pages/new.html.erb +40 -40
  165. data/app/views/alchemy/admin/pages/sort.js.erb +4 -4
  166. data/app/views/alchemy/admin/pages/unlock.js.erb +6 -6
  167. data/app/views/alchemy/admin/pages/update.js.erb +19 -19
  168. data/app/views/alchemy/admin/partials/_flash.html.erb +2 -2
  169. data/app/views/alchemy/admin/partials/_flash_notices.html.erb +1 -1
  170. data/app/views/alchemy/admin/partials/_flash_upload.html.erb +38 -0
  171. data/app/views/alchemy/admin/partials/_language_tree_select.html.erb +15 -15
  172. data/app/views/alchemy/admin/partials/_main_navigation_entry.html.erb +8 -8
  173. data/app/views/alchemy/admin/partials/_remote_search_form.html.erb +35 -35
  174. data/app/views/alchemy/admin/partials/_search_form.html.erb +14 -14
  175. data/app/views/alchemy/admin/partials/_sub_navigation_tab.html.erb +6 -6
  176. data/app/views/alchemy/admin/partials/_upload_form.html.erb +56 -118
  177. data/app/views/alchemy/admin/pictures/_archive_overlay.html.erb +11 -11
  178. data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +71 -71
  179. data/app/views/alchemy/admin/pictures/_picture.html.erb +32 -32
  180. data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +26 -26
  181. data/app/views/alchemy/admin/pictures/_pictures_list.html.erb +6 -6
  182. data/app/views/alchemy/admin/pictures/create.js.erb +7 -7
  183. data/app/views/alchemy/admin/pictures/index.html.erb +67 -67
  184. data/app/views/alchemy/admin/pictures/show_in_window.html.erb +5 -4
  185. data/app/views/alchemy/admin/resources/_form.html.erb +25 -19
  186. data/app/views/alchemy/admin/resources/_resource.html.erb +37 -36
  187. data/app/views/alchemy/admin/resources/_table.html.erb +17 -17
  188. data/app/views/alchemy/admin/resources/destroy.js.erb +1 -1
  189. data/app/views/alchemy/admin/resources/index.html.erb +14 -14
  190. data/app/views/alchemy/admin/trash/index.html.erb +20 -20
  191. data/app/views/alchemy/admin/users/_table.html.erb +52 -52
  192. data/app/views/alchemy/admin/users/_user.html.erb +35 -36
  193. data/app/views/alchemy/admin/users/index.html.erb +26 -27
  194. data/app/views/alchemy/base/error_notice.html.erb +2 -2
  195. data/app/views/alchemy/base/update.js.erb +1 -1
  196. data/app/views/alchemy/elements/_contactform_view.html.erb +76 -76
  197. data/app/views/alchemy/elements/_download_view.html.erb +1 -1
  198. data/app/views/alchemy/elements/_editor_not_found.html.erb +3 -3
  199. data/app/views/alchemy/elements/_searchresult_view.html.erb +2 -2
  200. data/app/views/alchemy/elements/_sitemap_editor.html.erb +1 -1
  201. data/app/views/alchemy/essences/_essence_audio_view.html.erb +13 -13
  202. data/app/views/alchemy/essences/_essence_date_editor.html.erb +10 -10
  203. data/app/views/alchemy/essences/_essence_file_editor.html.erb +62 -62
  204. data/app/views/alchemy/essences/_essence_file_view.html.erb +8 -8
  205. data/app/views/alchemy/essences/_essence_flash_view.html.erb +19 -19
  206. data/app/views/alchemy/essences/_essence_html_editor.html.erb +6 -6
  207. data/app/views/alchemy/essences/_essence_picture_editor.html.erb +73 -73
  208. data/app/views/alchemy/essences/_essence_picture_view.html.erb +34 -34
  209. data/app/views/alchemy/essences/_essence_richtext_editor.html.erb +7 -7
  210. data/app/views/alchemy/essences/_essence_text_editor.html.erb +8 -8
  211. data/app/views/alchemy/navigation/_image_link.html.erb +12 -12
  212. data/app/views/alchemy/navigation/_link.html.erb +13 -13
  213. data/app/views/alchemy/navigation/_renderer.html.erb +17 -17
  214. data/app/views/alchemy/page_layouts/_layout_footer.html.erb +1 -1
  215. data/app/views/alchemy/page_layouts/_layout_header.html.erb +1 -1
  216. data/app/views/alchemy/pages/show.rss.builder +14 -14
  217. data/app/views/alchemy/search/_result.html.erb +7 -7
  218. data/app/views/alchemy/user_sessions/leave.html.erb +9 -9
  219. data/app/views/alchemy/user_sessions/login.html.erb +39 -39
  220. data/app/views/alchemy/user_sessions/logout.html.erb +1 -1
  221. data/app/views/layouts/alchemy/admin.html.erb +81 -81
  222. data/app/views/layouts/alchemy/login.html.erb +36 -36
  223. data/app/views/layouts/alchemy/pages.html.erb +48 -27
  224. data/bin/alchemy +136 -134
  225. data/config/alchemy/config.yml +13 -9
  226. data/config/locales/alchemy.de.yml +24 -30
  227. data/config/locales/alchemy.en.yml +11 -28
  228. data/config/routes.rb +146 -146
  229. data/db/migrate/20100607193638_create_essence_pictures.rb +3 -3
  230. data/db/migrate/20101109150312_alter_pages_visible_column_default.rb +1 -1
  231. data/db/migrate/20101109151812_create_languages.rb +3 -3
  232. data/db/migrate/20110115123343_remove_css_class_default_from_essence_pictures.rb +3 -3
  233. data/db/migrate/20110224105120_change_pages_visible_default.rb +3 -3
  234. data/db/migrate/20110228182659_remove_default_page_layout_from_pages.rb +2 -2
  235. data/db/migrate/20110414163140_remove_display_name_from_elements.rb +3 -3
  236. data/db/migrate/20110511100516_rename_essence_texts_title_to_link_title.rb +2 -2
  237. data/db/migrate/20110529130500_add_cell_id_to_elements.rb +3 -3
  238. data/db/migrate/20110530102804_change_pages_page_layout_column.rb +3 -3
  239. data/db/migrate/20110711142057_change_open_link_in_new_window_to_link_target.rb +1 -1
  240. data/db/migrate/20111116125112_namespace_alchemy_models.rb +21 -21
  241. data/lib/alchemy/auth_engine.rb +5 -5
  242. data/lib/alchemy/capistrano.rb +64 -64
  243. data/lib/alchemy/config.rb +47 -44
  244. data/lib/alchemy/engine.rb +41 -41
  245. data/lib/alchemy/essence.rb +50 -51
  246. data/lib/alchemy/i18n.rb +48 -48
  247. data/lib/alchemy/modules.rb +30 -30
  248. data/lib/alchemy/mount_point.rb +6 -6
  249. data/lib/alchemy/page_layout.rb +94 -93
  250. data/lib/alchemy/resource.rb +82 -0
  251. data/lib/alchemy/resources_helper.rb +56 -0
  252. data/lib/alchemy/scoped_pagination_url_helper.rb +8 -8
  253. data/lib/alchemy/seeder.rb +88 -88
  254. data/lib/alchemy/tinymce.rb +49 -49
  255. data/lib/alchemy/upgrader.rb +103 -103
  256. data/lib/alchemy/version.rb +1 -1
  257. data/lib/alchemy_cms.rb +26 -27
  258. data/lib/extensions/action_view.rb +1 -1
  259. data/lib/extensions/array.rb +3 -3
  260. data/lib/extensions/hash.rb +3 -3
  261. data/lib/middleware/flash_session_cookie.rb +1 -1
  262. data/lib/rails/generators/alchemy/deploy_script/deploy_script_generator.rb +24 -24
  263. data/lib/rails/generators/alchemy/elements/elements_generator.rb +7 -7
  264. data/lib/rails/generators/alchemy/elements/templates/view.html.erb +17 -17
  265. data/lib/rails/generators/alchemy/page_layouts/page_layouts_generator.rb +6 -6
  266. data/lib/rails/generators/alchemy/plugin/templates/authorization_rules.rb +8 -8
  267. data/lib/rails/generators/alchemy/scaffold/files/pages.html.erb +7 -7
  268. data/lib/rails/generators/alchemy/scaffold/scaffold_generator.rb +36 -36
  269. data/lib/rails/templates/alchemy.rb +1 -1
  270. data/lib/tasks/ferret.rake +2 -2
  271. data/lib/tasks/fleximage.rake +32 -32
  272. data/lib/tasks/install.rake +12 -12
  273. data/lib/tasks/upgrade.rake +4 -4
  274. data/spec/controllers/admin/clipboard_controller_spec.rb +43 -43
  275. data/spec/controllers/admin/contents_controller_spec.rb +22 -22
  276. data/spec/controllers/admin/elements_controller_spec.rb +13 -13
  277. data/spec/controllers/admin/languages_controller_spec.rb +31 -0
  278. data/spec/controllers/admin/pages_controller_spec.rb +10 -41
  279. data/spec/controllers/admin/resources_controller_spec.rb +19 -0
  280. data/spec/controllers/admin/trash_controller_spec.rb +11 -11
  281. data/spec/controllers/base_controller_spec.rb +46 -46
  282. data/spec/controllers/pages_controller_spec.rb +102 -92
  283. data/spec/dummy/app/controllers/admin/events_controller.rb +3 -0
  284. data/spec/dummy/app/controllers/errors_controller.rb +5 -0
  285. data/spec/dummy/app/models/event.rb +3 -0
  286. data/spec/dummy/config.ru +1 -1
  287. data/spec/dummy/config/application.rb +3 -0
  288. data/spec/dummy/config/authorization_rules.rb +7 -0
  289. data/spec/dummy/config/environments/development.rb +8 -1
  290. data/spec/dummy/config/environments/production.rb +1 -1
  291. data/spec/dummy/config/environments/test.rb +5 -2
  292. data/spec/dummy/config/routes.rb +9 -1
  293. data/spec/dummy/db/schema.rb +47 -35
  294. data/spec/dummy/public/404.html +19 -7
  295. data/spec/dummy/public/404.html.bak +26 -0
  296. data/spec/dummy/public/422.html +19 -7
  297. data/spec/dummy/public/500.html +19 -7
  298. data/spec/dummy/script/rails +2 -2
  299. data/spec/factories.rb +76 -76
  300. data/spec/helpers/admin/base_helper_spec.rb +21 -21
  301. data/spec/helpers/admin/contents_helper_spec.rb +14 -14
  302. data/spec/helpers/admin/elements_helper_spec.rb +40 -40
  303. data/spec/helpers/admin/essences_helper_spec.rb +7 -7
  304. data/spec/helpers/elements_helper_spec.rb +154 -154
  305. data/spec/helpers/essences_helper_spec.rb +10 -10
  306. data/spec/helpers/pages_helper_spec.rb +369 -372
  307. data/spec/helpers/pictures_helper_spec.rb +14 -0
  308. data/spec/helpers/url_helpers_spec.rb +29 -34
  309. data/spec/integration/admin/pages_controller_spec.rb +50 -50
  310. data/spec/integration/admin/resources_integration_spec.rb +100 -0
  311. data/spec/integration/navigation_spec.rb +1 -1
  312. data/spec/integration/pages_controller_spec.rb +205 -207
  313. data/spec/integration/security_spec.rb +47 -47
  314. data/spec/javascripts/alchemy/link_overlay_spec.js.coffee +42 -0
  315. data/spec/javascripts/alchemy_integration_spec.coffee +12 -0
  316. data/spec/javascripts/fixtures/select.html +3 -0
  317. data/spec/javascripts/helpers/.gitkeep +0 -0
  318. data/spec/javascripts/helpers/jasmine-jquery-1.3.1.js +289 -0
  319. data/spec/javascripts/helpers/mock-ajax.js +207 -0
  320. data/spec/javascripts/helpers/test_responses/test_responses.js +1 -0
  321. data/spec/javascripts/spec.css +3 -0
  322. data/spec/javascripts/spec.js +2 -0
  323. data/spec/libraries/resource_spec.rb +122 -0
  324. data/spec/libraries/resources_helper_spec.rb +105 -0
  325. data/spec/models/content_spec.rb +67 -67
  326. data/spec/models/element_spec.rb +133 -133
  327. data/spec/models/essence_picture_spec.rb +5 -5
  328. data/spec/models/essence_richtext_spec.rb +4 -4
  329. data/spec/models/language_spec.rb +89 -89
  330. data/spec/models/page_spec.rb +436 -506
  331. data/spec/models/picture_spec.rb +34 -34
  332. data/spec/models/user_spec.rb +2 -2
  333. data/spec/page_layout_spec.rb +24 -20
  334. data/spec/routing_spec.rb +253 -253
  335. data/spec/spec_helper.rb +51 -50
  336. data/spec/support/alchemy/controller_hacks.rb +25 -25
  337. data/spec/support/alchemy/specs_helpers.rb +25 -25
  338. data/spec/support/integration_spec_helper.rb +24 -0
  339. data/vendor/assets/javascripts/jquery_plugins/jquery.html5uploader.js +271 -0
  340. data/vendor/assets/javascripts/jquery_plugins/jquery.in-place-edit.js +86 -85
  341. data/vendor/assets/javascripts/jquery_plugins/jquery.ui.nestedSortable.js +380 -377
  342. data/vendor/assets/javascripts/jquery_plugins/jquery.ui.tabspaging.js +285 -279
  343. data/vendor/assets/javascripts/swfupload/SWFObject License.txt +3 -3
  344. data/vendor/assets/javascripts/swfupload/swfupload.cookies.js +47 -47
  345. data/vendor/assets/javascripts/swfupload/swfupload.js +612 -612
  346. data/vendor/assets/javascripts/swfupload/swfupload.queue.js +93 -93
  347. data/vendor/assets/javascripts/swfupload/swfupload.speed.js +337 -337
  348. data/vendor/assets/javascripts/swfupload/swfupload.swfobject.js +706 -102
  349. data/vendor/assets/javascripts/tiny_mce/license.txt +6 -6
  350. data/vendor/assets/javascripts/tiny_mce/plugins/fullscreen/fullscreen.htm +97 -97
  351. data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/template.htm +386 -376
  352. data/vendor/assets/javascripts/tiny_mce/plugins/paste/js/pastetext.js +30 -30
  353. data/vendor/assets/javascripts/tiny_mce/plugins/paste/js/pasteword.js +45 -45
  354. data/vendor/assets/javascripts/tiny_mce/plugins/paste/pastetext.htm +20 -17
  355. data/vendor/assets/javascripts/tiny_mce/plugins/paste/pasteword.htm +12 -12
  356. data/vendor/assets/javascripts/tiny_mce/plugins/table/cell.htm +183 -173
  357. data/vendor/assets/javascripts/tiny_mce/plugins/table/css/cell.css +4 -4
  358. data/vendor/assets/javascripts/tiny_mce/plugins/table/css/row.css +7 -7
  359. data/vendor/assets/javascripts/tiny_mce/plugins/table/css/table.css +3 -3
  360. data/vendor/assets/javascripts/tiny_mce/plugins/table/js/cell.js +282 -280
  361. data/vendor/assets/javascripts/tiny_mce/plugins/table/js/merge_cells.js +15 -15
  362. data/vendor/assets/javascripts/tiny_mce/plugins/table/js/row.js +204 -204
  363. data/vendor/assets/javascripts/tiny_mce/plugins/table/js/table.js +435 -435
  364. data/vendor/assets/javascripts/tiny_mce/plugins/table/merge_cells.htm +24 -22
  365. data/vendor/assets/javascripts/tiny_mce/plugins/table/row.htm +144 -136
  366. data/vendor/assets/javascripts/tiny_mce/plugins/table/table.htm +184 -168
  367. data/vendor/assets/javascripts/tiny_mce/themes/advanced/about.htm +62 -46
  368. data/vendor/assets/javascripts/tiny_mce/themes/advanced/anchor.htm +17 -16
  369. data/vendor/assets/javascripts/tiny_mce/themes/advanced/charmap.htm +56 -47
  370. data/vendor/assets/javascripts/tiny_mce/themes/advanced/color_picker.htm +67 -54
  371. data/vendor/assets/javascripts/tiny_mce/themes/advanced/editor_template.js +852 -1
  372. data/vendor/assets/javascripts/tiny_mce/themes/advanced/image.htm +79 -69
  373. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/about.js +48 -48
  374. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/anchor.js +28 -28
  375. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/charmap.js +317 -317
  376. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/color_picker.js +248 -246
  377. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/image.js +246 -246
  378. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/link.js +146 -146
  379. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/source_editor.js +31 -31
  380. data/vendor/assets/javascripts/tiny_mce/themes/advanced/langs/de.js +1 -1
  381. data/vendor/assets/javascripts/tiny_mce/themes/advanced/langs/de_dlg.js +1 -1
  382. data/vendor/assets/javascripts/tiny_mce/themes/advanced/langs/en.js +1 -1
  383. data/vendor/assets/javascripts/tiny_mce/themes/advanced/langs/en_dlg.js +1 -1
  384. data/vendor/assets/javascripts/tiny_mce/themes/advanced/link.htm +53 -46
  385. data/vendor/assets/javascripts/tiny_mce/themes/advanced/shortcuts.htm +57 -45
  386. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/content.css +182 -47
  387. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/dialog.css +399 -92
  388. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/ui.css +891 -187
  389. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/highcontrast/content.css +102 -24
  390. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/highcontrast/dialog.css +377 -78
  391. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/highcontrast/ui.css +452 -77
  392. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/content.css +167 -45
  393. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css +399 -92
  394. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui.css +890 -190
  395. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css +33 -7
  396. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css +15 -4
  397. data/vendor/assets/javascripts/tiny_mce/themes/advanced/source_editor.htm +18 -15
  398. data/vendor/assets/javascripts/tiny_mce/utils/editable_selects.js +46 -46
  399. data/vendor/assets/javascripts/tiny_mce/utils/form_utils.js +124 -124
  400. data/vendor/assets/javascripts/tiny_mce/utils/mctabs.js +112 -112
  401. data/vendor/assets/javascripts/tiny_mce/utils/validate.js +213 -213
  402. metadata +102 -115
  403. data/app/assets/javascripts/alchemy/alchemy.link_overlay.js +0 -216
  404. data/lib/tasks/routes.rake +0 -29
  405. data/spec/integration/admin/resources_spec.rb +0 -19
@@ -1,115 +1,115 @@
1
1
  module Alchemy
2
- class Upgrader < Alchemy::Seeder
2
+ class Upgrader < Alchemy::Seeder
3
3
 
4
- class << self
4
+ class << self
5
5
 
6
- # Runs all ugrades
7
- def run!
8
- Rake::Task['alchemy:install:migrations'].invoke
9
- strip_alchemy_from_schema_version_table
10
- Rake::Task['db:migrate'].invoke
11
- upgrade_to_language
12
- upgrade_layoutpages
13
- upgrade_essence_link_target_default
14
- upgrade_to_namespaced_essence_type
15
- end
6
+ # Runs all ugrades
7
+ def run!
8
+ Rake::Task['alchemy:install:migrations'].invoke
9
+ strip_alchemy_from_schema_version_table
10
+ Rake::Task['db:migrate'].invoke
11
+ upgrade_to_language
12
+ upgrade_layoutpages
13
+ upgrade_essence_link_target_default
14
+ upgrade_to_namespaced_essence_type
15
+ end
16
16
 
17
- private
17
+ private
18
18
 
19
- # Creates Language model if it does not exist (Alchemy CMS prior v1.5)
20
- # Also creates missing associations between pages and languages
21
- def upgrade_to_language
22
- desc "Creating languages for pages"
23
- Alchemy::Page.all.each do |page|
24
- if !page.language_code.blank? && page.language.nil?
25
- root = page.get_language_root
26
- lang = Alchemy::Language.find_or_create_by_code(
27
- :name => page.language_code.capitalize,
28
- :code => page.language_code,
29
- :frontpage_name => root.name,
30
- :page_layout => root.page_layout,
31
- :public => true
32
- )
33
- page.language = lang
34
- if page.save(:validate => false)
35
- log "Set language for page #{page.name} to #{lang.name}."
36
- end
37
- else
38
- log("Language for page #{page.name} already set.", :skip)
39
- end
40
- end
41
- end
19
+ # Creates Language model if it does not exist (Alchemy CMS prior v1.5)
20
+ # Also creates missing associations between pages and languages
21
+ def upgrade_to_language
22
+ desc "Creating languages for pages"
23
+ Alchemy::Page.all.each do |page|
24
+ if !page.language_code.blank? && page.language.nil?
25
+ root = page.get_language_root
26
+ lang = Alchemy::Language.find_or_create_by_code(
27
+ :name => page.language_code.capitalize,
28
+ :code => page.language_code,
29
+ :frontpage_name => root.name,
30
+ :page_layout => root.page_layout,
31
+ :public => true
32
+ )
33
+ page.language = lang
34
+ if page.save(:validate => false)
35
+ log "Set language for page #{page.name} to #{lang.name}."
36
+ end
37
+ else
38
+ log("Language for page #{page.name} already set.", :skip)
39
+ end
40
+ end
41
+ end
42
42
 
43
- def upgrade_layoutpages
44
- desc "Setting language of layoutpages"
45
- default_language = Alchemy::Language.get_default
46
- layoutpages = Alchemy::Page.layoutpages
47
- if layoutpages.any?
48
- layoutpages.each do |page|
49
- if page.language.class == String || page.language.nil?
50
- page.language = default_language
51
- if page.save(:validate => false)
52
- log "Set language for page #{page.name} to #{default_language.name}."
53
- end
54
- else
55
- log "Language for page #{page.name} already set.", :skip
56
- end
57
- end
58
- else
59
- log "No layoutpages found.", :skip
60
- end
61
- end
43
+ def upgrade_layoutpages
44
+ desc "Setting language of layoutpages"
45
+ default_language = Alchemy::Language.get_default
46
+ layoutpages = Alchemy::Page.layoutpages
47
+ if layoutpages.any?
48
+ layoutpages.each do |page|
49
+ if page.language.class == String || page.language.nil?
50
+ page.language = default_language
51
+ if page.save(:validate => false)
52
+ log "Set language for page #{page.name} to #{default_language.name}."
53
+ end
54
+ else
55
+ log "Language for page #{page.name} already set.", :skip
56
+ end
57
+ end
58
+ else
59
+ log "No layoutpages found.", :skip
60
+ end
61
+ end
62
62
 
63
- def upgrade_essence_link_target_default
64
- desc "Setting new link_target default"
65
- essences = (Alchemy::EssencePicture.all + Alchemy::EssenceText.all)
66
- if essences.any?
67
- essences.each do |essence|
68
- case essence.link_target
69
- when '1'
70
- if essence.update_attribute(:link_target, 'blank')
71
- log("Updated #{essence.preview_text} link target to #{essence.link_target}.")
72
- end
73
- when '0'
74
- essence.update_attribute(:link_target, nil)
75
- log("Updated #{essence.preview_text} link target to #{essence.link_target.inspect}.")
76
- else
77
- log("#{essence.preview_text} already upgraded.", :skip)
78
- end
79
- end
80
- else
81
- log("No essences to upgrade found.", :skip)
82
- end
83
- end
63
+ def upgrade_essence_link_target_default
64
+ desc "Setting new link_target default"
65
+ essences = (Alchemy::EssencePicture.all + Alchemy::EssenceText.all)
66
+ if essences.any?
67
+ essences.each do |essence|
68
+ case essence.link_target
69
+ when '1'
70
+ if essence.update_attribute(:link_target, 'blank')
71
+ log("Updated #{essence.preview_text} link target to #{essence.link_target}.")
72
+ end
73
+ when '0'
74
+ essence.update_attribute(:link_target, nil)
75
+ log("Updated #{essence.preview_text} link target to #{essence.link_target.inspect}.")
76
+ else
77
+ log("#{essence.preview_text} already upgraded.", :skip)
78
+ end
79
+ end
80
+ else
81
+ log("No essences to upgrade found.", :skip)
82
+ end
83
+ end
84
84
 
85
- # Updates all essence_type of Content if not already namespaced.
86
- def upgrade_to_namespaced_essence_type
87
- desc "Namespacing essence_type columns"
88
- depricated_contents = Alchemy::Content.where("essence_type LIKE ?", "Essence%")
89
- if depricated_contents.any?
90
- success = 0
91
- errors = []
92
- depricated_contents.each do |c|
93
- if c.update_attribute(:essence_type, c.essence_type.gsub(/^Essence/, 'Alchemy::Essence'))
94
- success += 1
95
- else
96
- errors << c.errors.full_messages
97
- end
98
- end
99
- log("Namespaced #{success} essence_type columns.") if success > 0
100
- log("#{errors.count} errors while namespacing essence_type columns.\n#{errors.join('\n')}", :error) if errors.count > 0
101
- else
102
- log "No essence_type columns to be namespaced found.", :skip
103
- end
104
- end
85
+ # Updates all essence_type of Content if not already namespaced.
86
+ def upgrade_to_namespaced_essence_type
87
+ desc "Namespacing essence_type columns"
88
+ depricated_contents = Alchemy::Content.where("essence_type LIKE ?", "Essence%")
89
+ if depricated_contents.any?
90
+ success = 0
91
+ errors = []
92
+ depricated_contents.each do |c|
93
+ if c.update_attribute(:essence_type, c.essence_type.gsub(/^Essence/, 'Alchemy::Essence'))
94
+ success += 1
95
+ else
96
+ errors << c.errors.full_messages
97
+ end
98
+ end
99
+ log("Namespaced #{success} essence_type columns.") if success > 0
100
+ log("#{errors.count} errors while namespacing essence_type columns.\n#{errors.join('\n')}", :error) if errors.count > 0
101
+ else
102
+ log "No essence_type columns to be namespaced found.", :skip
103
+ end
104
+ end
105
105
 
106
- def strip_alchemy_from_schema_version_table
107
- database_yml = YAML.load_file(Rails.root.join("config", "database.yml"))
108
- connection = Mysql2::Client.new(database_yml.fetch(Rails.env.to_s).symbolize_keys)
109
- connection.query "UPDATE schema_migrations SET `schema_migrations`.`version` = REPLACE(`schema_migrations`.`version`,'-alchemy','')"
110
- end
106
+ def strip_alchemy_from_schema_version_table
107
+ database_yml = YAML.load_file(Rails.root.join("config", "database.yml"))
108
+ connection = Mysql2::Client.new(database_yml.fetch(Rails.env.to_s).symbolize_keys)
109
+ connection.query "UPDATE schema_migrations SET `schema_migrations`.`version` = REPLACE(`schema_migrations`.`version`,'-alchemy','')"
110
+ end
111
111
 
112
- end
112
+ end
113
113
 
114
- end
114
+ end
115
115
  end
@@ -1,5 +1,5 @@
1
1
  module Alchemy
2
2
 
3
- VERSION = "2.1.12"
3
+ VERSION = "2.2.rc1"
4
4
 
5
5
  end
@@ -1,33 +1,32 @@
1
1
  if defined?(Rails) && Rails::VERSION::MAJOR == 3
2
- require 'acts_as_list'
3
- require 'attachment_magic'
4
- require 'authlogic'
5
- require 'awesome_nested_set'
6
- require 'dynamic_form'
7
- require 'fleximage'
8
- require 'jquery-rails'
9
- require 'kaminari'
10
- require 'userstamp'
11
- require 'yaml'
12
- require 'sass-rails'
13
- require 'declarative_authorization'
14
- require 'extensions/hash'
15
- require 'extensions/array'
16
- require 'extensions/action_view'
17
- require 'alchemy/mount_point'
18
- require 'alchemy/version'
19
- require 'alchemy/auth_engine'
20
- require 'alchemy/engine'
21
- %w(config essence page_layout modules tinymce i18n scoped_pagination_url_helper).each do |class_name|
22
- require File.join(File.dirname(__FILE__), "alchemy", class_name)
23
- end
24
- require File.join(File.dirname(__FILE__), "alchemy", "seeder")
2
+ require 'acts_as_list'
3
+ require 'attachment_magic'
4
+ require 'authlogic'
5
+ require 'awesome_nested_set'
6
+ require 'dynamic_form'
7
+ require 'fleximage'
8
+ require 'jquery-rails'
9
+ require 'kaminari'
10
+ require 'userstamp'
11
+ require 'yaml'
12
+ require 'sass-rails'
13
+ require 'declarative_authorization'
14
+ require 'extensions/hash'
15
+ require 'extensions/array'
16
+ require 'extensions/action_view'
17
+ require 'alchemy/mount_point'
18
+ require 'alchemy/version'
19
+ require 'alchemy/auth_engine'
20
+ require 'alchemy/engine'
21
+ %w(config essence page_layout modules tinymce i18n scoped_pagination_url_helper resource resources_helper).each do |class_name|
22
+ require File.join(File.dirname(__FILE__), "alchemy", class_name)
23
+ end
24
+ require File.join(File.dirname(__FILE__), "alchemy", "seeder")
25
25
  else
26
- raise "Alchemy 2.1 needs Rails 3.1 or higher. You are currently using Rails #{Rails::VERSION::STRING}"
26
+ raise "Alchemy 2.1 needs Rails 3.1 or higher. You are currently using Rails #{Rails::VERSION::STRING}"
27
27
  end
28
28
 
29
29
  module Alchemy
30
-
31
- class EssenceError < StandardError; end
32
-
30
+ class EssenceError < StandardError;
31
+ end
33
32
  end
@@ -7,7 +7,7 @@ module ActionView
7
7
  end
8
8
  end
9
9
  end
10
-
10
+
11
11
  class FormBuilder
12
12
  def button(label, options = {})
13
13
  @template.button(label, options)
@@ -1,5 +1,5 @@
1
1
  Array.class_eval do
2
-
2
+
3
3
  def stringify
4
4
  map do |value|
5
5
  if value.is_a?(Hash) || value.is_a?(Array)
@@ -9,7 +9,7 @@ Array.class_eval do
9
9
  end
10
10
  end
11
11
  end
12
-
12
+
13
13
  def stringify!
14
14
  a = []
15
15
  each do |value|
@@ -21,5 +21,5 @@ Array.class_eval do
21
21
  end
22
22
  replace(a)
23
23
  end
24
-
24
+
25
25
  end
@@ -8,7 +8,7 @@ class Hash
8
8
  def add_key_for_checkboxes name
9
9
  self[name.to_s] = [] if self.stringify_keys[name.to_s].nil?
10
10
  end
11
-
11
+
12
12
  def stringify
13
13
  inject({}) do |options, (key, value)|
14
14
  if value.is_a?(Hash) || value.is_a?(Array)
@@ -19,7 +19,7 @@ class Hash
19
19
  options
20
20
  end
21
21
  end
22
-
22
+
23
23
  def stringify!
24
24
  each do |key, value|
25
25
  delete(key)
@@ -30,5 +30,5 @@ class Hash
30
30
  end
31
31
  end
32
32
  end
33
-
33
+
34
34
  end
@@ -12,7 +12,7 @@ module Alchemy
12
12
  def call(env)
13
13
  if env['HTTP_USER_AGENT'] =~ /^(Adobe|Shockwave) Flash/
14
14
  params = ::Rack::Utils.parse_query(env['QUERY_STRING'])
15
- env['HTTP_COOKIE'] = [ @session_key, params[@session_key] ].join('=').freeze unless params[@session_key].nil?
15
+ env['HTTP_COOKIE'] = [@session_key, params[@session_key]].join('=').freeze unless params[@session_key].nil?
16
16
  end
17
17
  @app.call(env)
18
18
  end
@@ -1,31 +1,31 @@
1
1
  require 'rails/generators'
2
2
 
3
3
  module Alchemy
4
- module Generators
5
- class DeployScriptGenerator < ::Rails::Generators::Base
4
+ module Generators
5
+ class DeployScriptGenerator < ::Rails::Generators::Base
6
6
 
7
- desc "This generator generates a Capistrano deploy script."
8
- class_option :scm, :type => :string, :desc => "Set the type of scm you use for deployment.", :default => 'svn'
9
- class_option :db, :type => :string, :desc => "Set the type of database you use on your server.", :default => 'mysql'
10
- source_root File.expand_path('templates', File.dirname(__FILE__))
7
+ desc "This generator generates a Capistrano deploy script."
8
+ class_option :scm, :type => :string, :desc => "Set the type of scm you use for deployment.", :default => 'svn'
9
+ class_option :db, :type => :string, :desc => "Set the type of database you use on your server.", :default => 'mysql'
10
+ source_root File.expand_path('templates', File.dirname(__FILE__))
11
11
 
12
- def copy_script
13
- @ssh_user = ask('Please enter SSH username:')
14
- @ssh_password = ask('Please enter SSH password:')
15
- port = ask('Please enter SSH port (22):')
16
- @ssh_port = port.blank? ? 22 : port
17
- @server = ask('Please enter server ip or domain:')
18
- @deploy_path = ask('Please enter the path to the public html folder:')
19
- @scm = options[:scm]
20
- @repository_url = ask('Please enter the URL to your projects repository:')
21
- if @scm == "svn" && yes?('Is your repository private? (y/N)')
22
- @scm_user = ask('Please enter the username for your repository:')
23
- @scm_password = ask('Please enter the password to your repository:')
24
- end
25
- @database_type = options[:db]
26
- template "deploy.rb.tt", Rails.root.join('config', 'deploy.rb')
27
- end
12
+ def copy_script
13
+ @ssh_user = ask('Please enter SSH username:')
14
+ @ssh_password = ask('Please enter SSH password:')
15
+ port = ask('Please enter SSH port (22):')
16
+ @ssh_port = port.blank? ? 22 : port
17
+ @server = ask('Please enter server ip or domain:')
18
+ @deploy_path = ask('Please enter the path to the public html folder:')
19
+ @scm = options[:scm]
20
+ @repository_url = ask('Please enter the URL to your projects repository:')
21
+ if @scm == "svn" && yes?('Is your repository private? (y/N)')
22
+ @scm_user = ask('Please enter the username for your repository:')
23
+ @scm_password = ask('Please enter the password to your repository:')
24
+ end
25
+ @database_type = options[:db]
26
+ template "deploy.rb.tt", Rails.root.join('config', 'deploy.rb')
27
+ end
28
28
 
29
- end
30
- end
29
+ end
30
+ end
31
31
  end
@@ -5,31 +5,31 @@ module Alchemy
5
5
  class ElementsGenerator < ::Rails::Generators::Base
6
6
  desc "This generator generates your elements view partials."
7
7
  source_root File.expand_path('templates', File.dirname(__FILE__))
8
-
8
+
9
9
  def create_directory
10
10
  @elements_dir = "#{Rails.root}/app/views/alchemy/elements"
11
11
  empty_directory @elements_dir
12
12
  end
13
-
13
+
14
14
  def create_partials
15
15
  @elements = get_elements_from_yaml
16
16
  @elements.each do |element|
17
17
  @element = element
18
- @contents = ( element["contents"] or [] )
18
+ @contents = (element["contents"] or [])
19
19
  @element_name = element["name"].underscore
20
20
  template "editor.html.erb", "#{@elements_dir}/_#{@element_name}_editor.html.erb"
21
21
  template "view.html.erb", "#{@elements_dir}/_#{@element_name}_view.html.erb"
22
22
  end if @elements
23
23
  end
24
-
25
- private
26
-
24
+
25
+ private
26
+
27
27
  def get_elements_from_yaml
28
28
  YAML.load_file "#{Rails.root}/config/alchemy/elements.yml"
29
29
  rescue Errno::ENOENT
30
30
  puts "\nERROR: Could not read config/alchemy/elements.yml file. Please run: rails generate alchemy:scaffold"
31
31
  end
32
-
32
+
33
33
  end
34
34
  end
35
35
  end