alchemy_cms 2.0.pre2

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 (489) hide show
  1. data/.gitignore +7 -0
  2. data/.yardopts +6 -0
  3. data/Gemfile +8 -0
  4. data/LICENSE +619 -0
  5. data/README.md +113 -0
  6. data/Rakefile +30 -0
  7. data/TODO.txt +1 -0
  8. data/alchemy.gemspec +36 -0
  9. data/app/controllers/admin/attachments_controller.rb +119 -0
  10. data/app/controllers/admin/clipboard_controller.rb +43 -0
  11. data/app/controllers/admin/contents_controller.rb +69 -0
  12. data/app/controllers/admin/elements_controller.rb +137 -0
  13. data/app/controllers/admin/essence_audios_controller.rb +14 -0
  14. data/app/controllers/admin/essence_files_controller.rb +35 -0
  15. data/app/controllers/admin/essence_flashes_controller.rb +14 -0
  16. data/app/controllers/admin/essence_pictures_controller.rb +89 -0
  17. data/app/controllers/admin/essence_videos_controller.rb +14 -0
  18. data/app/controllers/admin/languages_controller.rb +70 -0
  19. data/app/controllers/admin/layoutpages_controller.rb +11 -0
  20. data/app/controllers/admin/pages_controller.rb +244 -0
  21. data/app/controllers/admin/pictures_controller.rb +132 -0
  22. data/app/controllers/admin/trash_controller.rb +25 -0
  23. data/app/controllers/admin/users_controller.rb +75 -0
  24. data/app/controllers/admin_controller.rb +78 -0
  25. data/app/controllers/alchemy_controller.rb +239 -0
  26. data/app/controllers/attachments_controller.rb +30 -0
  27. data/app/controllers/elements_controller.rb +18 -0
  28. data/app/controllers/messages_controller.rb +98 -0
  29. data/app/controllers/pages_controller.rb +137 -0
  30. data/app/controllers/pictures_controller.rb +68 -0
  31. data/app/helpers/admin/attachments_helper.rb +7 -0
  32. data/app/helpers/admin/elements_helper.rb +28 -0
  33. data/app/helpers/admin/pages_helper.rb +3 -0
  34. data/app/helpers/admin/pictures_helper.rb +26 -0
  35. data/app/helpers/alchemy_helper.rb +1168 -0
  36. data/app/helpers/elements_helper.rb +2 -0
  37. data/app/helpers/errors_helper.rb +37 -0
  38. data/app/helpers/layout_helper.rb +37 -0
  39. data/app/helpers/pages_helper.rb +141 -0
  40. data/app/mailers/messages.rb +15 -0
  41. data/app/mailers/notifications.rb +23 -0
  42. data/app/models/attachment.rb +73 -0
  43. data/app/models/cell.rb +63 -0
  44. data/app/models/content.rb +145 -0
  45. data/app/models/element.rb +423 -0
  46. data/app/models/essence_audio.rb +17 -0
  47. data/app/models/essence_date.rb +20 -0
  48. data/app/models/essence_file.rb +17 -0
  49. data/app/models/essence_flash.rb +15 -0
  50. data/app/models/essence_html.rb +19 -0
  51. data/app/models/essence_picture.rb +27 -0
  52. data/app/models/essence_richtext.rb +50 -0
  53. data/app/models/essence_text.rb +28 -0
  54. data/app/models/essence_video.rb +17 -0
  55. data/app/models/folded_page.rb +3 -0
  56. data/app/models/language.rb +75 -0
  57. data/app/models/message.rb +57 -0
  58. data/app/models/page.rb +501 -0
  59. data/app/models/picture.rb +100 -0
  60. data/app/models/user.rb +72 -0
  61. data/app/models/user_session.rb +10 -0
  62. data/app/sweepers/content_sweeper.rb +20 -0
  63. data/app/sweepers/pages_sweeper.rb +46 -0
  64. data/app/sweepers/pictures_sweeper.rb +20 -0
  65. data/app/views/_contact.html.erb +3 -0
  66. data/app/views/_intro.html.erb +3 -0
  67. data/app/views/_news.html.erb +3 -0
  68. data/app/views/_newsletter_layout.html.erb +1 -0
  69. data/app/views/_search.html.erb +3 -0
  70. data/app/views/_standard.html.erb +1 -0
  71. data/app/views/admin/attachments/_attachment.html.erb +58 -0
  72. data/app/views/admin/attachments/_file_to_assign.html.erb +20 -0
  73. data/app/views/admin/attachments/_files_list.html.erb +24 -0
  74. data/app/views/admin/attachments/archive_overlay.html.erb +8 -0
  75. data/app/views/admin/attachments/create.js.erb +6 -0
  76. data/app/views/admin/attachments/edit.html.erb +12 -0
  77. data/app/views/admin/attachments/index.html.erb +30 -0
  78. data/app/views/admin/attachments/new.html.erb +11 -0
  79. data/app/views/admin/clipboard/clear.js.erb +6 -0
  80. data/app/views/admin/clipboard/index.html.erb +19 -0
  81. data/app/views/admin/clipboard/insert.js.erb +14 -0
  82. data/app/views/admin/clipboard/remove.js.erb +10 -0
  83. data/app/views/admin/contents/_missing.html.erb +20 -0
  84. data/app/views/admin/contents/create.js.erb +93 -0
  85. data/app/views/admin/contents/new.html.erb +15 -0
  86. data/app/views/admin/elements/_add_content.html.erb +16 -0
  87. data/app/views/admin/elements/_element.html.erb +22 -0
  88. data/app/views/admin/elements/_element_foot.html.erb +35 -0
  89. data/app/views/admin/elements/_element_head.html.erb +29 -0
  90. data/app/views/admin/elements/_elements_select.html.erb +8 -0
  91. data/app/views/admin/elements/_new_element_form.html.erb +25 -0
  92. data/app/views/admin/elements/_picture_editor.html.erb +25 -0
  93. data/app/views/admin/elements/create.js.erb +20 -0
  94. data/app/views/admin/elements/destroy.js.erb +6 -0
  95. data/app/views/admin/elements/fold.js.erb +37 -0
  96. data/app/views/admin/elements/index.html.erb +33 -0
  97. data/app/views/admin/elements/list.js.erb +20 -0
  98. data/app/views/admin/elements/new.html.erb +33 -0
  99. data/app/views/admin/elements/order.js.erb +7 -0
  100. data/app/views/admin/elements/trash.js.erb +13 -0
  101. data/app/views/admin/elements/update.js.erb +10 -0
  102. data/app/views/admin/essence_files/edit.html.erb +91 -0
  103. data/app/views/admin/essence_pictures/assign.js.erb +15 -0
  104. data/app/views/admin/essence_pictures/crop.html.erb +36 -0
  105. data/app/views/admin/essence_pictures/destroy.js.erb +17 -0
  106. data/app/views/admin/essence_pictures/edit.html.erb +75 -0
  107. data/app/views/admin/essence_pictures/update.js.erb +16 -0
  108. data/app/views/admin/index.html.erb +92 -0
  109. data/app/views/admin/infos.html.erb +5 -0
  110. data/app/views/admin/languages/_form.html.erb +34 -0
  111. data/app/views/admin/languages/_language.html.erb +35 -0
  112. data/app/views/admin/languages/edit.html.erb +1 -0
  113. data/app/views/admin/languages/index.html.erb +41 -0
  114. data/app/views/admin/languages/new.html.erb +1 -0
  115. data/app/views/admin/layoutpages/_layoutpage.html.erb +80 -0
  116. data/app/views/admin/layoutpages/index.html.erb +75 -0
  117. data/app/views/admin/leave.html.erb +11 -0
  118. data/app/views/admin/login.html.erb +46 -0
  119. data/app/views/admin/logout.html.erb +5 -0
  120. data/app/views/admin/pages/_contactform_links.html.erb +66 -0
  121. data/app/views/admin/pages/_create_language_form.html.erb +42 -0
  122. data/app/views/admin/pages/_external_link.html.erb +54 -0
  123. data/app/views/admin/pages/_file_link.html.erb +52 -0
  124. data/app/views/admin/pages/_internal_link.html.erb +47 -0
  125. data/app/views/admin/pages/_new_page_form.html.erb +29 -0
  126. data/app/views/admin/pages/_page.html.erb +114 -0
  127. data/app/views/admin/pages/_page_for_links.html.erb +43 -0
  128. data/app/views/admin/pages/_page_infos.html.erb +3 -0
  129. data/app/views/admin/pages/_page_status.html.erb +9 -0
  130. data/app/views/admin/pages/_sitemap.html.erb +99 -0
  131. data/app/views/admin/pages/configure.html.erb +71 -0
  132. data/app/views/admin/pages/configure_external.html.erb +40 -0
  133. data/app/views/admin/pages/destroy.js.erb +12 -0
  134. data/app/views/admin/pages/edit.html.erb +185 -0
  135. data/app/views/admin/pages/flush.js.erb +2 -0
  136. data/app/views/admin/pages/fold.js.erb +4 -0
  137. data/app/views/admin/pages/index.html.erb +108 -0
  138. data/app/views/admin/pages/link.html.erb +30 -0
  139. data/app/views/admin/pages/locked.html.erb +3 -0
  140. data/app/views/admin/pages/new.html.erb +50 -0
  141. data/app/views/admin/pages/show.html.erb +1 -0
  142. data/app/views/admin/pages/sort.js.erb +6 -0
  143. data/app/views/admin/pages/unlock.js.erb +8 -0
  144. data/app/views/admin/pages/update.js.erb +19 -0
  145. data/app/views/admin/partials/_flash.html.erb +4 -0
  146. data/app/views/admin/partials/_flash_notices.html.erb +5 -0
  147. data/app/views/admin/partials/_mainnavigation_entry.html.erb +27 -0
  148. data/app/views/admin/partials/_pagination_links.html.erb +7 -0
  149. data/app/views/admin/partials/_per_page_links.html.erb +17 -0
  150. data/app/views/admin/partials/_remote_pagination_links.html.erb +11 -0
  151. data/app/views/admin/partials/_remote_search_form.html.erb +36 -0
  152. data/app/views/admin/partials/_search_form.html.erb +17 -0
  153. data/app/views/admin/partials/_sub_navigation.html.erb +14 -0
  154. data/app/views/admin/partials/_upload_form.html.erb +116 -0
  155. data/app/views/admin/pictures/_archive_overlay_images.html.erb +17 -0
  156. data/app/views/admin/pictures/_filter_and_size_bar.html.erb +88 -0
  157. data/app/views/admin/pictures/_picture.html.erb +36 -0
  158. data/app/views/admin/pictures/_picture_to_assign.html.erb +32 -0
  159. data/app/views/admin/pictures/_pictures_list.html.erb +12 -0
  160. data/app/views/admin/pictures/archive_overlay.html.erb +3 -0
  161. data/app/views/admin/pictures/create.js.erb +12 -0
  162. data/app/views/admin/pictures/index.html.erb +56 -0
  163. data/app/views/admin/pictures/new.html.erb +11 -0
  164. data/app/views/admin/pictures/show_in_window.html.erb +1 -0
  165. data/app/views/admin/pictures/update.js.erb +11 -0
  166. data/app/views/admin/signup.html.erb +16 -0
  167. data/app/views/admin/trash/index.html.erb +25 -0
  168. data/app/views/admin/users/_table.html.erb +54 -0
  169. data/app/views/admin/users/_user.html.erb +36 -0
  170. data/app/views/admin/users/edit.html.erb +6 -0
  171. data/app/views/admin/users/index.html.erb +41 -0
  172. data/app/views/admin/users/new.html.erb +6 -0
  173. data/app/views/attachments/show.html.erb +1 -0
  174. data/app/views/elements/_article_editor.html.erb +4 -0
  175. data/app/views/elements/_article_view.html.erb +25 -0
  176. data/app/views/elements/_bild_editor.html.erb +1 -0
  177. data/app/views/elements/_bild_text_editor.html.erb +2 -0
  178. data/app/views/elements/_bild_text_view.html.erb +9 -0
  179. data/app/views/elements/_bild_view.html.erb +9 -0
  180. data/app/views/elements/_claim_editor.html.erb +1 -0
  181. data/app/views/elements/_claim_view.html.erb +1 -0
  182. data/app/views/elements/_contactform_editor.html.erb +7 -0
  183. data/app/views/elements/_contactform_view.html.erb +92 -0
  184. data/app/views/elements/_editor_not_found.html.erb +5 -0
  185. data/app/views/elements/_footnote_editor.html.erb +1 -0
  186. data/app/views/elements/_footnote_view.html.erb +5 -0
  187. data/app/views/elements/_header_editor.html.erb +1 -0
  188. data/app/views/elements/_header_view.html.erb +1 -0
  189. data/app/views/elements/_headline_editor.html.erb +1 -0
  190. data/app/views/elements/_headline_view.html.erb +1 -0
  191. data/app/views/elements/_image_mosaic_editor.html.erb +2 -0
  192. data/app/views/elements/_image_mosaic_view.html.erb +12 -0
  193. data/app/views/elements/_intro_editor.html.erb +1 -0
  194. data/app/views/elements/_intro_image_text_editor.html.erb +3 -0
  195. data/app/views/elements/_intro_image_text_view.html.erb +16 -0
  196. data/app/views/elements/_intro_view.html.erb +3 -0
  197. data/app/views/elements/_news_editor.html.erb +3 -0
  198. data/app/views/elements/_news_view.html.erb +11 -0
  199. data/app/views/elements/_searchresult_editor.html.erb +1 -0
  200. data/app/views/elements/_searchresult_view.html.erb +42 -0
  201. data/app/views/elements/_sitemap_editor.html.erb +3 -0
  202. data/app/views/elements/_sitemap_view.html.erb +38 -0
  203. data/app/views/elements/_sitename_editor.html.erb +1 -0
  204. data/app/views/elements/_sitename_view.html.erb +1 -0
  205. data/app/views/elements/_subheadline_editor.html.erb +1 -0
  206. data/app/views/elements/_subheadline_view.html.erb +5 -0
  207. data/app/views/elements/_text_editor.html.erb +1 -0
  208. data/app/views/elements/_text_view.html.erb +3 -0
  209. data/app/views/elements/_view_not_found.html.erb +1 -0
  210. data/app/views/elements/show.html.erb +6 -0
  211. data/app/views/elements/show.js.erb +11 -0
  212. data/app/views/essences/_essence_audio_editor.html.erb +1 -0
  213. data/app/views/essences/_essence_audio_view.html.erb +33 -0
  214. data/app/views/essences/_essence_date_editor.html.erb +12 -0
  215. data/app/views/essences/_essence_date_view.html.erb +7 -0
  216. data/app/views/essences/_essence_file_editor.html.erb +63 -0
  217. data/app/views/essences/_essence_file_view.html.erb +6 -0
  218. data/app/views/essences/_essence_flash_editor.html.erb +1 -0
  219. data/app/views/essences/_essence_flash_view.html.erb +26 -0
  220. data/app/views/essences/_essence_html_editor.html.erb +8 -0
  221. data/app/views/essences/_essence_html_view.html.erb +1 -0
  222. data/app/views/essences/_essence_picture_editor.html.erb +70 -0
  223. data/app/views/essences/_essence_picture_tools.html.erb +60 -0
  224. data/app/views/essences/_essence_picture_view.html.erb +42 -0
  225. data/app/views/essences/_essence_richtext_editor.html.erb +9 -0
  226. data/app/views/essences/_essence_richtext_view.html.erb +5 -0
  227. data/app/views/essences/_essence_text_editor.html.erb +82 -0
  228. data/app/views/essences/_essence_text_view.html.erb +11 -0
  229. data/app/views/essences/_essence_video_editor.html.erb +1 -0
  230. data/app/views/essences/_essence_video_view.html.erb +35 -0
  231. data/app/views/layouts/alchemy.html.erb +60 -0
  232. data/app/views/layouts/login.html.erb +60 -0
  233. data/app/views/layouts/pages.html.erb +31 -0
  234. data/app/views/layouts/sitemap.xml.erb +4 -0
  235. data/app/views/messages/mail.text.erb +10 -0
  236. data/app/views/messages/new.html.erb +1 -0
  237. data/app/views/notifications/admin_user_created.text.erb +13 -0
  238. data/app/views/notifications/registered_user_created.text.erb +10 -0
  239. data/app/views/page_layouts/_contact.html.erb +14 -0
  240. data/app/views/page_layouts/_external.html.erb +1 -0
  241. data/app/views/page_layouts/_intro.html.erb +14 -0
  242. data/app/views/page_layouts/_layout_footer.html.erb +14 -0
  243. data/app/views/page_layouts/_layout_header.html.erb +14 -0
  244. data/app/views/page_layouts/_news.html.erb +14 -0
  245. data/app/views/page_layouts/_newsletter_layout.html.erb +1 -0
  246. data/app/views/page_layouts/_search.html.erb +14 -0
  247. data/app/views/page_layouts/_standard.html.erb +14 -0
  248. data/app/views/pages/show.html.erb +1 -0
  249. data/app/views/pages/show.rss.builder +27 -0
  250. data/app/views/pages/sitemap.xml.erb +8 -0
  251. data/app/views/partials/_navigation_image_link.html.erb +14 -0
  252. data/app/views/partials/_navigation_link.html.erb +20 -0
  253. data/app/views/partials/_navigation_renderer.html.erb +23 -0
  254. data/app/views/pictures/show.gif.flexi +19 -0
  255. data/app/views/pictures/show.jpg.flexi +19 -0
  256. data/app/views/pictures/show.png.flexi +19 -0
  257. data/app/views/pictures/thumbnail.png.flexi +13 -0
  258. data/app/views/pictures/zoom.png.flexi +3 -0
  259. data/assets/images/ajax_loader.gif +0 -0
  260. data/assets/images/alchemy-logo.png +0 -0
  261. data/assets/images/flags.png +0 -0
  262. data/assets/images/gui/navi-tab.png +0 -0
  263. data/assets/images/gui/shading.png +0 -0
  264. data/assets/images/gui/shading_90.png +0 -0
  265. data/assets/images/gui/toggle.png +0 -0
  266. data/assets/images/icons.png +0 -0
  267. data/assets/images/jquery-sb/select_arrow.gif +0 -0
  268. data/assets/images/jquery-sb/select_arrow_bg.gif +0 -0
  269. data/assets/images/jquery-sb/select_arrow_bg_hover.gif +0 -0
  270. data/assets/images/jquery-ui/ui-icons_666666_256x240.png +0 -0
  271. data/assets/images/placeholder.png +0 -0
  272. data/assets/images/swfupload/browse_button.png +0 -0
  273. data/assets/javascripts/alchemy.element_editor_selector.js +88 -0
  274. data/assets/javascripts/alchemy.growler.js +44 -0
  275. data/assets/javascripts/alchemy.image_cropper.js +56 -0
  276. data/assets/javascripts/alchemy.js +892 -0
  277. data/assets/javascripts/alchemy.link_overlay.js +221 -0
  278. data/assets/javascripts/alchemy.page_sorter.js +42 -0
  279. data/assets/javascripts/alchemy.preview.js +145 -0
  280. data/assets/javascripts/jquery-ui.js +428 -0
  281. data/assets/javascripts/jquery.Jcrop.min.js +246 -0
  282. data/assets/javascripts/jquery.dialogextend.min.js +8 -0
  283. data/assets/javascripts/jquery.in-place-edit.js +171 -0
  284. data/assets/javascripts/jquery.js +18 -0
  285. data/assets/javascripts/jquery.rails.js +315 -0
  286. data/assets/javascripts/jquery.sb.min.js +14 -0
  287. data/assets/javascripts/jquery.scrollTo-1.4.2-min.js +11 -0
  288. data/assets/javascripts/jquery.ui.nestedSortable.js +291 -0
  289. data/assets/javascripts/jquery.ui.tabspaging.js +281 -0
  290. data/assets/javascripts/swfupload/fileprogress.js +203 -0
  291. data/assets/javascripts/swfupload/handlers.js +171 -0
  292. data/assets/javascripts/swfupload/queue.js +98 -0
  293. data/assets/javascripts/swfupload/swfupload.js +980 -0
  294. data/assets/javascripts/swfupload/swfupload.swf +0 -0
  295. data/assets/javascripts/tiny_mce/jquery.tinymce.js +1 -0
  296. data/assets/javascripts/tiny_mce/langs/de.js +1 -0
  297. data/assets/javascripts/tiny_mce/langs/en.js +223 -0
  298. data/assets/javascripts/tiny_mce/license.txt +504 -0
  299. data/assets/javascripts/tiny_mce/plugins/alchemy_link/editor_plugin.js +43 -0
  300. data/assets/javascripts/tiny_mce/plugins/alchemy_link/langs/de.js +4 -0
  301. data/assets/javascripts/tiny_mce/plugins/alchemy_link/langs/en.js +4 -0
  302. data/assets/javascripts/tiny_mce/plugins/fullscreen/editor_plugin.js +1 -0
  303. data/assets/javascripts/tiny_mce/plugins/fullscreen/fullscreen.htm +109 -0
  304. data/assets/javascripts/tiny_mce/plugins/inlinepopups/editor_plugin.js +1 -0
  305. data/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/alchemy/window.css +402 -0
  306. data/assets/javascripts/tiny_mce/plugins/inlinepopups/template.htm +387 -0
  307. data/assets/javascripts/tiny_mce/plugins/lists/editor_plugin.js +1 -0
  308. data/assets/javascripts/tiny_mce/plugins/paste/editor_plugin.js +1 -0
  309. data/assets/javascripts/tiny_mce/plugins/paste/js/pastetext.js +36 -0
  310. data/assets/javascripts/tiny_mce/plugins/paste/js/pasteword.js +51 -0
  311. data/assets/javascripts/tiny_mce/plugins/paste/langs/de_dlg.js +1 -0
  312. data/assets/javascripts/tiny_mce/plugins/paste/langs/en_dlg.js +5 -0
  313. data/assets/javascripts/tiny_mce/plugins/paste/pastetext.htm +27 -0
  314. data/assets/javascripts/tiny_mce/plugins/paste/pasteword.htm +21 -0
  315. data/assets/javascripts/tiny_mce/plugins/table/cell.htm +180 -0
  316. data/assets/javascripts/tiny_mce/plugins/table/css/cell.css +17 -0
  317. data/assets/javascripts/tiny_mce/plugins/table/css/row.css +25 -0
  318. data/assets/javascripts/tiny_mce/plugins/table/css/table.css +13 -0
  319. data/assets/javascripts/tiny_mce/plugins/table/editor_plugin.js +1 -0
  320. data/assets/javascripts/tiny_mce/plugins/table/js/cell.js +319 -0
  321. data/assets/javascripts/tiny_mce/plugins/table/js/merge_cells.js +27 -0
  322. data/assets/javascripts/tiny_mce/plugins/table/js/row.js +237 -0
  323. data/assets/javascripts/tiny_mce/plugins/table/js/table.js +450 -0
  324. data/assets/javascripts/tiny_mce/plugins/table/langs/de_dlg.js +1 -0
  325. data/assets/javascripts/tiny_mce/plugins/table/langs/en_dlg.js +75 -0
  326. data/assets/javascripts/tiny_mce/plugins/table/merge_cells.htm +32 -0
  327. data/assets/javascripts/tiny_mce/plugins/table/row.htm +158 -0
  328. data/assets/javascripts/tiny_mce/plugins/table/table.htm +188 -0
  329. data/assets/javascripts/tiny_mce/themes/advanced/about.htm +52 -0
  330. data/assets/javascripts/tiny_mce/themes/advanced/anchor.htm +26 -0
  331. data/assets/javascripts/tiny_mce/themes/advanced/charmap.htm +51 -0
  332. data/assets/javascripts/tiny_mce/themes/advanced/color_picker.htm +74 -0
  333. data/assets/javascripts/tiny_mce/themes/advanced/editor_template.js +1 -0
  334. data/assets/javascripts/tiny_mce/themes/advanced/image.htm +80 -0
  335. data/assets/javascripts/tiny_mce/themes/advanced/img/colorpicker.jpg +0 -0
  336. data/assets/javascripts/tiny_mce/themes/advanced/img/flash.gif +0 -0
  337. data/assets/javascripts/tiny_mce/themes/advanced/img/icons.gif +0 -0
  338. data/assets/javascripts/tiny_mce/themes/advanced/img/iframe.gif +0 -0
  339. data/assets/javascripts/tiny_mce/themes/advanced/img/pagebreak.gif +0 -0
  340. data/assets/javascripts/tiny_mce/themes/advanced/img/quicktime.gif +0 -0
  341. data/assets/javascripts/tiny_mce/themes/advanced/img/realmedia.gif +0 -0
  342. data/assets/javascripts/tiny_mce/themes/advanced/img/shockwave.gif +0 -0
  343. data/assets/javascripts/tiny_mce/themes/advanced/img/trans.gif +0 -0
  344. data/assets/javascripts/tiny_mce/themes/advanced/img/video.gif +0 -0
  345. data/assets/javascripts/tiny_mce/themes/advanced/img/windowsmedia.gif +0 -0
  346. data/assets/javascripts/tiny_mce/themes/advanced/js/about.js +73 -0
  347. data/assets/javascripts/tiny_mce/themes/advanced/js/anchor.js +42 -0
  348. data/assets/javascripts/tiny_mce/themes/advanced/js/charmap.js +355 -0
  349. data/assets/javascripts/tiny_mce/themes/advanced/js/color_picker.js +329 -0
  350. data/assets/javascripts/tiny_mce/themes/advanced/js/image.js +247 -0
  351. data/assets/javascripts/tiny_mce/themes/advanced/js/link.js +153 -0
  352. data/assets/javascripts/tiny_mce/themes/advanced/js/source_editor.js +56 -0
  353. data/assets/javascripts/tiny_mce/themes/advanced/langs/de.js +1 -0
  354. data/assets/javascripts/tiny_mce/themes/advanced/langs/de_dlg.js +1 -0
  355. data/assets/javascripts/tiny_mce/themes/advanced/langs/en.js +68 -0
  356. data/assets/javascripts/tiny_mce/themes/advanced/langs/en_dlg.js +54 -0
  357. data/assets/javascripts/tiny_mce/themes/advanced/link.htm +57 -0
  358. data/assets/javascripts/tiny_mce/themes/advanced/shortcuts.htm +47 -0
  359. data/assets/javascripts/tiny_mce/themes/advanced/skins/default/content.css +47 -0
  360. data/assets/javascripts/tiny_mce/themes/advanced/skins/default/dialog.css +117 -0
  361. data/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/buttons.png +0 -0
  362. data/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/items.gif +0 -0
  363. data/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif +0 -0
  364. data/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif +0 -0
  365. data/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/progress.gif +0 -0
  366. data/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif +0 -0
  367. data/assets/javascripts/tiny_mce/themes/advanced/skins/default/ui.css +214 -0
  368. data/assets/javascripts/tiny_mce/themes/advanced/skins/highcontrast/content.css +23 -0
  369. data/assets/javascripts/tiny_mce/themes/advanced/skins/highcontrast/dialog.css +105 -0
  370. data/assets/javascripts/tiny_mce/themes/advanced/skins/highcontrast/ui.css +102 -0
  371. data/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/content.css +46 -0
  372. data/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css +117 -0
  373. data/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png +0 -0
  374. data/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png +0 -0
  375. data/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png +0 -0
  376. data/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui.css +217 -0
  377. data/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css +8 -0
  378. data/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css +5 -0
  379. data/assets/javascripts/tiny_mce/themes/advanced/source_editor.htm +25 -0
  380. data/assets/javascripts/tiny_mce/themes/simple/langs/de.js +1 -0
  381. data/assets/javascripts/tiny_mce/tiny_mce.js +1 -0
  382. data/assets/javascripts/tiny_mce/tiny_mce_popup.js +5 -0
  383. data/assets/javascripts/tiny_mce/utils/editable_selects.js +70 -0
  384. data/assets/javascripts/tiny_mce/utils/form_utils.js +210 -0
  385. data/assets/javascripts/tiny_mce/utils/mctabs.js +162 -0
  386. data/assets/javascripts/tiny_mce/utils/validate.js +252 -0
  387. data/assets/stylesheets/Jcrop.gif +0 -0
  388. data/assets/stylesheets/alchemy.css +3629 -0
  389. data/assets/stylesheets/alchemy_tinymce_content.css +94 -0
  390. data/assets/stylesheets/alchemy_tinymce_dialog.css +415 -0
  391. data/assets/stylesheets/default/img/tabs.gif +0 -0
  392. data/assets/stylesheets/elements.css +900 -0
  393. data/assets/stylesheets/flags.css +1 -0
  394. data/assets/stylesheets/ie6.css +18 -0
  395. data/assets/stylesheets/jquery-ui-1.8.7.alchemy.css +2023 -0
  396. data/assets/stylesheets/jquery.Jcrop.css +35 -0
  397. data/assets/stylesheets/jquery.sb.css +244 -0
  398. data/assets/stylesheets/standard_set.css +374 -0
  399. data/bin/alchemy +347 -0
  400. data/config/alchemy/config.yml +199 -0
  401. data/config/alchemy/elements.yml +219 -0
  402. data/config/alchemy/page_layouts.yml +65 -0
  403. data/config/asset_packages.yml +32 -0
  404. data/config/authorization_rules.rb +96 -0
  405. data/config/initializers/authorization.rb +4 -0
  406. data/config/initializers/cache_storage.rb +1 -0
  407. data/config/initializers/fast_gettext.rb +2 -0
  408. data/config/initializers/tiny_mce_hammer.rb +32 -0
  409. data/config/locales/de.yml +370 -0
  410. data/config/locales/en.yml +364 -0
  411. data/config/routes.rb +141 -0
  412. data/db/migrate/20100607143125_create_pages.rb +34 -0
  413. data/db/migrate/20100607144254_create_elements.rb +20 -0
  414. data/db/migrate/20100607145256_create_contents.rb +18 -0
  415. data/db/migrate/20100607145719_create_users.rb +32 -0
  416. data/db/migrate/20100607150611_create_pictures.rb +16 -0
  417. data/db/migrate/20100607150812_create_attachments.rb +16 -0
  418. data/db/migrate/20100607153647_create_folded_pages.rb +13 -0
  419. data/db/migrate/20100607161345_create_essence_texts.rb +19 -0
  420. data/db/migrate/20100607162339_create_elements_pages.rb +12 -0
  421. data/db/migrate/20100607193638_create_essence_pictures.rb +23 -0
  422. data/db/migrate/20100607193646_create_essence_richtexts.rb +16 -0
  423. data/db/migrate/20100607193653_create_essence_htmls.rb +13 -0
  424. data/db/migrate/20100609111653_create_essence_dates.rb +13 -0
  425. data/db/migrate/20100609111809_create_essence_files.rb +15 -0
  426. data/db/migrate/20100609111821_create_essence_flashes.rb +16 -0
  427. data/db/migrate/20100609111837_create_essence_videos.rb +18 -0
  428. data/db/migrate/20100616150753_create_essence_audios.rb +17 -0
  429. data/db/migrate/20100812085225_add_crop_from_and_crop_size_to_essence_pictures.rb +11 -0
  430. data/db/migrate/20100909140701_change_essence_htmls_source_column_type.rb +9 -0
  431. data/db/migrate/20101109150312_alter_pages_visible_column_default.rb +9 -0
  432. data/db/migrate/20101109151812_create_languages.rb +19 -0
  433. data/db/migrate/20101216151419_add_language_id_to_pages.rb +19 -0
  434. data/db/migrate/20101216155216_add_index_to_languages.rb +9 -0
  435. data/db/migrate/20101216173323_add_default_to_languages.rb +9 -0
  436. data/db/migrate/20101218130049_add_urlname_index_to_pages.rb +9 -0
  437. data/db/migrate/20110115123343_remove_css_class_default_from_essence_pictures.rb +11 -0
  438. data/db/migrate/20110224105120_change_pages_visible_default.rb +11 -0
  439. data/db/migrate/20110228182659_remove_default_page_layout_from_pages.rb +11 -0
  440. data/db/migrate/20110414163140_remove_display_name_from_elements.rb +11 -0
  441. data/db/migrate/20110511100516_rename_essence_texts_title_to_link_title.rb +9 -0
  442. data/db/migrate/20110529130429_create_cells.rb +14 -0
  443. data/db/migrate/20110529130500_add_cell_id_to_elements.rb +11 -0
  444. data/db/migrate/20110530102804_change_pages_page_layout_column.rb +11 -0
  445. data/db/migrate/20110707190728_add_render_size_to_essence_pictures.rb +9 -0
  446. data/db/migrate/20110711142057_change_open_link_in_new_window_to_link_target.rb +19 -0
  447. data/lib/alchemy.rb +24 -0
  448. data/lib/alchemy/config.rb +51 -0
  449. data/lib/alchemy/controller.rb +79 -0
  450. data/lib/alchemy/engine.rb +29 -0
  451. data/lib/alchemy/essence.rb +178 -0
  452. data/lib/alchemy/file_utilz.rb +73 -0
  453. data/lib/alchemy/page_layout.rb +66 -0
  454. data/lib/alchemy/remote_pagination_link_renderer.rb +17 -0
  455. data/lib/alchemy/seeder.rb +112 -0
  456. data/lib/alchemy/version.rb +5 -0
  457. data/lib/extensions/action_view.rb +17 -0
  458. data/lib/extensions/array.rb +25 -0
  459. data/lib/extensions/hash.rb +34 -0
  460. data/lib/middleware/flash_session_cookie.rb +22 -0
  461. data/lib/rails/generators/alchemy/elements/elements_generator.rb +35 -0
  462. data/lib/rails/generators/alchemy/elements/templates/editor.html.erb +9 -0
  463. data/lib/rails/generators/alchemy/elements/templates/view.html.erb +21 -0
  464. data/lib/rails/generators/alchemy/page_layouts/page_layouts_generator.rb +32 -0
  465. data/lib/rails/generators/alchemy/page_layouts/templates/layout.html.erb +1 -0
  466. data/lib/rails/generators/alchemy/plugin/plugin_generator.rb +29 -0
  467. data/lib/rails/generators/alchemy/plugin/templates/authorization_rules.rb +5 -0
  468. data/lib/rails/generators/alchemy/plugin/templates/config.yml +30 -0
  469. data/lib/rails/generators/alchemy/plugin/templates/init.rb +4 -0
  470. data/lib/rails/generators/alchemy/plugin/templates/routes.rb +4 -0
  471. data/lib/rails/generators/alchemy/scaffold/scaffold_generator.rb +35 -0
  472. data/lib/rails/generators/alchemy/scaffold/templates/elements.yml +91 -0
  473. data/lib/rails/generators/alchemy/scaffold/templates/page_layouts.yml +29 -0
  474. data/lib/rails/templates/alchemy.rb +14 -0
  475. data/lib/tasks/fleximage.rake +154 -0
  476. data/lib/tasks/gettext.rake +75 -0
  477. data/lib/tasks/install.rake +123 -0
  478. data/lib/tasks/upgrade.rake +211 -0
  479. data/lib/translation_extras/alchemy_core_modules.rb +11 -0
  480. data/lib/vendor/i18n_label.rb +23 -0
  481. data/locale/alchemy.pot +1728 -0
  482. data/locale/de/LC_MESSAGES/alchemy.mo +0 -0
  483. data/locale/de/alchemy.po +1774 -0
  484. data/locale/en/LC_MESSAGES/alchemy.mo +0 -0
  485. data/locale/en/alchemy.po +1742 -0
  486. data/locale/missing_translations.rb +4 -0
  487. data/locale/model_attributes.rb +56 -0
  488. data/recipes/alchemy_capistrano_tasks.rb +83 -0
  489. metadata +769 -0
@@ -0,0 +1,14 @@
1
+ # This rails template installs Alchemy and all depending gems.
2
+ # Run it with +rails YOUR_APP_NAME -d mysql -m alchemy+.
3
+
4
+ # Installing Alchemy Gem
5
+
6
+ gem 'alchemy_cms'
7
+ gem 'ruby-debug', :group => :development
8
+ gem 'mongrel', :group => :development
9
+
10
+ if yes?("Use Capistrano for deployment? (y/N)")
11
+ gem 'capistrano', :group => :development
12
+ end
13
+
14
+ run 'bundle install'
@@ -0,0 +1,154 @@
1
+ namespace :fleximage do
2
+
3
+ # Find the model class
4
+ def model_class
5
+ raise 'You must specify a FLEXIMAGE_CLASS=MyClass' unless ENV['FLEXIMAGE_CLASS']
6
+ @model_class ||= ENV['FLEXIMAGE_CLASS'].camelcase.constantize
7
+ end
8
+
9
+ desc "Populate width and height magic columns from the current image store. Useful when migrating from on old installation."
10
+ task :dimensions => :environment do
11
+ model_class.find(:all).each do |obj|
12
+ if obj.has_image?
13
+ img = obj.load_image
14
+ obj.update_attribute :image_width, img.columns if obj.respond_to?(:image_width=)
15
+ obj.update_attribute :image_height, img.rows if obj.respond_to?(:image_height=)
16
+ end
17
+ end
18
+ end
19
+
20
+ namespace :convert do
21
+
22
+ def convert_directory_format(to_format)
23
+ model_class.find(:all).each do |obj|
24
+
25
+ # Get the creation date
26
+ creation = obj[:created_at] || obj[:created_on] || Date.today
27
+
28
+ # Generate both types of file paths
29
+ flat_path = "#{RAILS_ROOT}/#{model_class.image_directory}/#{obj.id}.#{model_class.image_storage_format}"
30
+ nested_path = "#{RAILS_ROOT}/#{model_class.image_directory}/#{creation.year}/#{creation.month}/#{creation.day}/#{obj.id}.#{model_class.image_storage_format}"
31
+
32
+ # Assign old path and new path based on desired directory format
33
+ if to_format == :nested
34
+ old_path = flat_path
35
+ new_path = nested_path
36
+ else
37
+ old_path = nested_path
38
+ new_path = flat_path
39
+ end
40
+
41
+ # Move the files
42
+ if old_path != new_path && File.exists?(old_path)
43
+ FileUtils.mkdir_p(File.dirname(new_path))
44
+ FileUtils.move old_path, new_path
45
+ puts "#{old_path} -> #{new_path}"
46
+ end
47
+ end
48
+ end
49
+
50
+ def convert_image_format(to_format)
51
+ model_class.find(:all).each do |obj|
52
+
53
+ # convert DB stored images
54
+ if model_class.db_store?
55
+ if obj.image_file_data && obj.image_file_data.any?
56
+ begin
57
+ image = Magick::Image.from_blob(obj.image_file_data).first
58
+ image.format = to_format.to_s.upcase
59
+ obj.image_file_data = image.to_blob
60
+ obj.save
61
+ rescue Exception => e
62
+ puts "Could not convert image for #{model_class} with id #{obj.id}\n #{e.class} #{e}\n"
63
+ end
64
+ end
65
+
66
+ # Convert file system stored images
67
+ else
68
+ # Generate both types of file paths
69
+ png_path = obj.file_path.gsub(/\.jpg$/, '.png')
70
+ jpg_path = obj.file_path.gsub(/\.png$/, '.jpg')
71
+
72
+ # Output stub
73
+ output = (to_format == :jpg) ? 'PNG -> JPG' : 'JPG -> PNG'
74
+
75
+ # Assign old path and new path based on desired image format
76
+ if to_format == :jpg
77
+ old_path = png_path
78
+ new_path = jpg_path
79
+ else
80
+ old_path = jpg_path
81
+ new_path = png_path
82
+ end
83
+
84
+ # Perform conversion
85
+ if File.exists?(old_path)
86
+ image = Magick::Image.read(old_path).first
87
+ image.format = to_format.to_s.upcase
88
+ image.write(new_path)
89
+ File.delete(old_path)
90
+
91
+ puts "#{output} : Image #{obj.id}"
92
+ end
93
+ end
94
+ end
95
+ end
96
+
97
+ def ensure_db_store
98
+ col = model_class.columns.find {|c| c.name == 'image_file_data'}
99
+ unless col && col.type == :binary
100
+ raise "No image_file_data field of type :binary for this model!"
101
+ end
102
+ end
103
+
104
+ desc "Convert a flat images/123.png style image store to a images/2007/11/12/123.png style. Requires FLEXIMAGE_CLASS=ModelName"
105
+ task :to_nested => :environment do
106
+ convert_directory_format :nested
107
+ end
108
+
109
+ desc "Convert a nested images/2007/11/12/123.png style image store to a images/123.png style. Requires FLEXIMAGE_CLASS=ModelName"
110
+ task :to_flat => :environment do
111
+ convert_directory_format :flat
112
+ end
113
+
114
+ desc "Convert master images stored as JPGs to PNGs"
115
+ task :to_png => :environment do
116
+ convert_image_format :png
117
+ end
118
+
119
+ desc "Convert master images stored as PNGs to JPGs"
120
+ task :to_jpg => :environment do
121
+ convert_image_format :jpg
122
+ end
123
+
124
+ desc "Convert master image storage to use the database. Loads all file-stored images into the database."
125
+ task :to_db => :environment do
126
+ ensure_db_store
127
+ model_class.find(:all).each do |obj|
128
+ if File.exists?(obj.file_path)
129
+ File.open(obj.file_path, 'rb') do |f|
130
+ obj.image_file_data = f.read
131
+ obj.save
132
+ end
133
+ end
134
+ end
135
+
136
+ puts "--- All images successfully moved to the database. Check to make sure the transfer worked cleanly before deleting your file system image store."
137
+ end
138
+
139
+ desc "Convert master image storage to use the file system. Loads all database images into files."
140
+ task :to_filestore => :environment do
141
+ ensure_db_store
142
+ model_class.find(:all).each do |obj|
143
+ if obj.image_file_data && obj.image_file_data.any?
144
+ File.open(obj.file_path, 'wb+') do |f|
145
+ f.write obj.image_file_data
146
+ end
147
+ end
148
+ end
149
+
150
+ puts "--- All images successfully moved to the file system. Remember to remove your image_file_data field from your models database table."
151
+ end
152
+
153
+ end
154
+ end
@@ -0,0 +1,75 @@
1
+ namespace :gettext do
2
+
3
+ def load_gettext
4
+ require 'gettext'
5
+ require 'gettext/tools'
6
+ end
7
+
8
+ desc "Create mo-files for L10n"
9
+ task :pack do
10
+ load_gettext
11
+ GetText.create_mofiles(:verbose => true, :po_root => "locale", :mo_root => "locale")
12
+ end
13
+
14
+ desc "Update pot/po files."
15
+ task :find do
16
+ load_gettext
17
+ #$LOAD_PATH << File.join(File.dirname(__FILE__),'plugins','gettext_i18n_rails','lib')
18
+ require 'gettext_i18n_rails/haml_parser'
19
+
20
+ if GetText.respond_to? :update_pofiles_org
21
+ GetText.update_pofiles_org(
22
+ "alchemy",
23
+ Dir.glob("{app,lib,config,locale}/**/*.{rb,erb,haml,rjs}"),
24
+ "version 2.0",
25
+ :po_root => 'locale',
26
+ :msgmerge=>['--sort-output']
27
+ )
28
+ else #we are on a version < 2.0
29
+ puts "install new GetText with gettext:install to gain more features..."
30
+ #kill ar parser...
31
+ require 'gettext/parser/active_record'
32
+ module GetText
33
+ module ActiveRecordParser
34
+ module_function
35
+ def init(x);end
36
+ end
37
+ end
38
+
39
+ #parse files.. (models are simply parsed as ruby files)
40
+ GetText.update_pofiles(
41
+ "alchemy",
42
+ Dir.glob("{app,lib,config,locale}/**/*.{rb,erb,haml,rjs}"),
43
+ "version 2.0",
44
+ 'locale'
45
+ )
46
+ end
47
+ end
48
+
49
+ # This is more of an example, ignoring
50
+ # the columns/tables that mostly do not need translation.
51
+ # This can also be done with GetText::ActiveRecord
52
+ # but this crashed too often for me, and
53
+ # IMO which column should/should-not be translated does not
54
+ # belong into the model
55
+ #
56
+ # You can get your translations from GetText::ActiveRecord
57
+ # by adding this to you gettext:find task
58
+ #
59
+ # require 'active_record'
60
+ # gem "gettext_activerecord", '>=0.1.0' #download and install from github
61
+ # require 'gettext_activerecord/parser'
62
+ desc "write the locale/model_attributes.rb"
63
+ task :store_model_attributes => :environment do
64
+ FastGettext.silence_errors
65
+ require 'gettext_i18n_rails/model_attributes_finder'
66
+ storage_file = 'locale/model_attributes.rb'
67
+ puts "writing model translations to: #{storage_file}"
68
+ GettextI18nRails.store_model_attributes(
69
+ :to=>storage_file,
70
+ :ignore_columns=>[/_id$/,'id','type','created_at','updated_at'],
71
+ :ignore_tables=>[/^sitemap_/,/_versions$/,'schema_migrations']
72
+ )
73
+ end
74
+
75
+ end
@@ -0,0 +1,123 @@
1
+ # encoding: UTF-8
2
+ require File.join(File.dirname(__FILE__), '../alchemy/file_utilz.rb')
3
+
4
+ namespace :alchemy do
5
+
6
+ desc "Migrates the database, inserts essential data into the database and copies all assets."
7
+ task :prepare do
8
+ Rake::Task['alchemy:migrations:sync'].invoke
9
+ Rake::Task['alchemy:seeder:copy'].invoke
10
+ Rake::Task['alchemy:assets:copy:all'].invoke
11
+ end
12
+
13
+ namespace 'seeder' do
14
+ desc "Copy a line of code into the seeds.rb file"
15
+ task :copy do
16
+ File.open("./db/seeds.rb", "a") do |f|
17
+ f.puts "\n# Seeding Alchemy data"
18
+ f.puts "Alchemy::Seeder.seed!\n"
19
+ end
20
+ end
21
+ end
22
+
23
+ namespace 'migrations' do
24
+ desc "Syncs Alchemy migrations into db/migrate"
25
+ task 'sync' do
26
+ source = File.join(File.dirname(__FILE__), '..', '..', 'db', 'migrate')
27
+ destination = File.join(Rails.root, 'db', 'migrate')
28
+ FileUtils.mkdir_p destination
29
+ Alchemy::FileUtilz.mirror_files(source, destination)
30
+ end
31
+ end
32
+
33
+ namespace 'assets' do
34
+ namespace 'copy' do
35
+
36
+ desc "Copy all assets for Alchemy into apps public folder"
37
+ task :all do
38
+ Rake::Task['alchemy:assets:copy:javascripts'].invoke
39
+ Rake::Task['alchemy:assets:copy:stylesheets'].invoke
40
+ Rake::Task['alchemy:assets:copy:images'].invoke
41
+ end
42
+
43
+ desc "Copy javascripts for Alchemy into apps public folder"
44
+ task :javascripts do
45
+ source = File.join(File.dirname(__FILE__), '..', '..', 'assets', 'javascripts')
46
+ destination = File.join(Rails.root, 'public', 'javascripts', 'alchemy')
47
+ FileUtils.mkdir_p(destination)
48
+ Alchemy::FileUtilz.mirror_files(source, destination)
49
+ end
50
+
51
+ desc "Copy stylesheets for Alchemy into apps public folder"
52
+ task :stylesheets do
53
+ source = File.join(File.dirname(__FILE__), '..', '..', 'assets', 'stylesheets')
54
+ destination = File.join(Rails.root, 'public', 'stylesheets', 'alchemy')
55
+ FileUtils.mkdir_p(destination)
56
+ Alchemy::FileUtilz.mirror_files(source, destination)
57
+ end
58
+
59
+ desc "Copy images for Alchemy into apps public folder"
60
+ task :images do
61
+ source = File.join(File.dirname(__FILE__), '..', '..', 'assets', 'images')
62
+ destination = File.join(Rails.root, 'public', 'images', 'alchemy')
63
+ FileUtils.mkdir_p(destination)
64
+ Alchemy::FileUtilz.mirror_files(source, destination)
65
+ end
66
+
67
+ end
68
+ end
69
+
70
+ namespace :standard_set do
71
+
72
+ desc "Install Alchemys standard set."
73
+ task :install do
74
+ system("rails g alchemy:scaffold --with_standard_set")
75
+ Rake::Task['alchemy:assets:copy:all'].invoke
76
+ end
77
+
78
+ end
79
+
80
+ namespace :cells do
81
+
82
+ desc "Creates all cells for all pages"
83
+ task :create => :environment do
84
+ cell_yml = File.join(File.dirname(__FILE__), '..', '..', '..', '..', '..', 'config', 'alchemy', 'cells.yml')
85
+ page_layouts = Alchemy::PageLayout.get_layouts
86
+ if File.exist?(cell_yml) && page_layouts
87
+ cells = YAML.load_file(cell_yml)
88
+ page_layouts.each do |layout|
89
+ unless layout['cells'].blank?
90
+ cells_for_layout = cells.select { |cell| layout['cells'].include? cell['name'] }
91
+ Page.find_all_by_page_layout(layout['name']).each do |page|
92
+ cells_for_layout.each do |cell_for_layout|
93
+ cell = Cell.find_or_initialize_by_name_and_page_id({:name => cell_for_layout['name'], :page_id => page.id})
94
+ cell.elements << page.elements.select { |element| cell_for_layout['elements'].include?(element.name) }
95
+ if cell.new_record?
96
+ cell.save
97
+ puts "== Creating cell '#{cell.name}' for page '#{page.name}'"
98
+ else
99
+ puts "== Skipping! Cell '#{cell.name}' for page '#{page.name}' was already present"
100
+ end
101
+ end
102
+ end
103
+ end
104
+ end
105
+ end
106
+ end
107
+
108
+ end
109
+
110
+ end
111
+
112
+ namespace :ferret do
113
+
114
+ desc "Updates the ferret index for the application."
115
+ task :rebuild_index => :environment do
116
+ puts "Rebuilding Ferret Index for EssenceText"
117
+ Alchemy::EssenceText.rebuild_index
118
+ puts "Rebuilding Ferret Index for EssenceRichtext"
119
+ Alchemy::EssenceRichtext.rebuild_index
120
+ puts "Completed Ferret Index Rebuild"
121
+ end
122
+
123
+ end
@@ -0,0 +1,211 @@
1
+ # TODO: Refactor for Rails 3
2
+ namespace :alchemy do
3
+ namespace :upgrade do
4
+
5
+ desc "Removing unused files and directories"
6
+ task "cleanup" do
7
+ system('rm -rf vendor/plugins/webmate')
8
+ system('rm -rf public/plugin_assets/webmate')
9
+ system('rm config/initializers/fast_gettext.rb config/initializers/cache_storage.rb config/initializers/session_store.rb')
10
+ end
11
+
12
+ desc 'Writes a rake file into lib/tasks to make all the Alchemy plugins tasks available'
13
+ task 'write_rake_task' do
14
+ s = <<EOF
15
+ # Make all the Alchemy plugins tasks available
16
+ Dir.glob(File.dirname(__FILE__) + "/../../vendor/plugins/alchemy/plugins/**/tasks/*.rake").each do |rake_file|
17
+ import rake_file
18
+ end
19
+ EOF
20
+ File.open('lib/tasks/alchemy_plugins_tasks.rake', 'w') { |f| f.write(s)}
21
+ end
22
+
23
+ desc "Generates migration for upgrading the database."
24
+ task "generate_migration" do
25
+ system('script/generate migration upgrade_db_for_alchemy')
26
+ migration_file = Dir.glob("db/migrate/*_upgrade_db_for_alchemy.rb").first
27
+ s = <<EOF
28
+ class UpgradeDbForAlchemy < ActiveRecord::Migration
29
+ def self.up
30
+
31
+ # Removing unused tables
32
+ drop_table :wa_atom_checkboxes
33
+ drop_table :wa_atom_formtags
34
+ drop_table :wa_atom_galleries
35
+ drop_table :wa_atom_gallery_pictures
36
+ drop_table :wa_atom_molecule_selectors
37
+ drop_table :wa_atom_resetbuttons
38
+ drop_table :wa_atom_selectboxes
39
+ drop_table :wa_atom_submitbuttons
40
+ drop_table :wa_atom_text_bigs
41
+ drop_table :wa_atom_textareas
42
+ drop_table :wa_atom_textfields
43
+ drop_table :wa_gallery_images
44
+ drop_table :wa_atom_sitemaps
45
+
46
+ # renaming tables
47
+ rename_table :wa_pages, :pages
48
+ rename_table :wa_molecules, :elements
49
+ rename_table :wa_atoms, :contents
50
+ rename_table :wa_users, :users
51
+ rename_table :wa_images, :pictures
52
+ rename_table :wa_files, :attachments
53
+ rename_table :wa_foldeds, :folded_pages
54
+ rename_table :wa_molecules_wa_pages, :elements_pages
55
+ rename_table :wa_atom_texts, :essence_texts
56
+ rename_table :wa_atom_rtfs, :essence_richtexts
57
+ rename_table :wa_atom_pictures, :essence_pictures
58
+ rename_table :wa_atom_files, :essence_files
59
+ rename_table :wa_atom_htmls, :essence_htmls
60
+ rename_table :wa_atom_flashvideos, :essence_videos
61
+ rename_table :wa_atom_flashes, :essence_flashes
62
+ rename_table :wa_atom_dates, :essence_dates
63
+ rename_table :wa_atom_audios, :essence_audios
64
+
65
+ # renaming tables rows
66
+ rename_column :elements, :wa_page_id, :page_id
67
+ rename_column :elements_pages, :wa_molecule_id, :element_id
68
+ rename_column :elements_pages, :wa_page_id, :page_id
69
+ rename_column :folded_pages, :wa_user_id, :user_id
70
+ rename_column :folded_pages, :wa_page_id, :page_id
71
+ rename_column :contents, :wa_molecule_id, :element_id
72
+ rename_column :contents, :atom_id, :essence_id
73
+ rename_column :contents, :atom_type, :essence_type
74
+ rename_column :essence_pictures, :wa_image_id, :picture_id
75
+ rename_column :essence_files, :wa_file_id, :attachment_id
76
+ rename_column :essence_videos, :wa_file_id, :attachment_id
77
+ rename_column :essence_audios, :wa_file_id, :attachment_id
78
+ rename_column :essence_flashes, :wa_file_id, :attachment_id
79
+ rename_column :essence_texts, :content, :body
80
+ rename_column :essence_richtexts, :content, :body
81
+ rename_column :essence_richtexts, :stripped_content, :stripped_body
82
+ rename_column :pages, :systempage, :layoutpage
83
+
84
+ # Changing WaAtoms to Essences
85
+ execute("UPDATE contents SET essence_type = REPLACE(essence_type, 'WaAtom', 'Essence')")
86
+ execute("UPDATE contents SET essence_type = REPLACE(essence_type, 'EssenceRtf', 'EssenceRichtext')")
87
+ execute("UPDATE contents SET essence_type = REPLACE(essence_type, 'EssenceFlashvideo', 'EssenceVideo')")
88
+
89
+ # Renaming old userstamp columns to new userstamp columns
90
+ rename_column :essence_htmls, :content, :source
91
+ rename_column :pages, :created_by, :creator_id
92
+ rename_column :pages, :updated_by, :updater_id
93
+
94
+ # Adding userstamps to tables
95
+ add_column :essence_audios, :creator_id, :integer
96
+ add_column :essence_audios, :updater_id, :integer
97
+ add_column :attachments, :creator_id, :integer
98
+ add_column :attachments, :updater_id, :integer
99
+ add_column :contents, :creator_id, :integer
100
+ add_column :contents, :updater_id, :integer
101
+ add_column :essence_dates, :creator_id, :integer
102
+ add_column :essence_dates, :updater_id, :integer
103
+ add_column :essence_files, :creator_id, :integer
104
+ add_column :essence_files, :updater_id, :integer
105
+ add_column :essence_flashes, :creator_id, :integer
106
+ add_column :essence_flashes, :updater_id, :integer
107
+ add_column :essence_htmls, :creator_id, :integer
108
+ add_column :essence_htmls, :updater_id, :integer
109
+ add_column :essence_pictures, :creator_id, :integer
110
+ add_column :essence_pictures, :updater_id, :integer
111
+ add_column :essence_richtexts, :creator_id, :integer
112
+ add_column :essence_richtexts, :updater_id, :integer
113
+ add_column :essence_texts, :creator_id, :integer
114
+ add_column :essence_texts, :updater_id, :integer
115
+ add_column :essence_videos, :creator_id, :integer
116
+ add_column :essence_videos, :updater_id, :integer
117
+ add_column :pictures, :creator_id, :integer
118
+ add_column :pictures, :updater_id, :integer
119
+ add_column :elements, :creator_id, :integer
120
+ add_column :elements, :updater_id, :integer
121
+ add_column :users, :creator_id, :integer
122
+ add_column :users, :updater_id, :integer
123
+
124
+ # Adding columns
125
+ add_column :users, :gender, :string
126
+
127
+ execute("INSERT INTO schema_migrations SET version = '20100607143125-alchemy'")
128
+ execute("INSERT INTO schema_migrations SET version = '20100607144254-alchemy'")
129
+ execute("INSERT INTO schema_migrations SET version = '20100607145256-alchemy'")
130
+ execute("INSERT INTO schema_migrations SET version = '20100607145719-alchemy'")
131
+ execute("INSERT INTO schema_migrations SET version = '20100607150611-alchemy'")
132
+ execute("INSERT INTO schema_migrations SET version = '20100607150812-alchemy'")
133
+ execute("INSERT INTO schema_migrations SET version = '20100607153647-alchemy'")
134
+ execute("INSERT INTO schema_migrations SET version = '20100607161345-alchemy'")
135
+ execute("INSERT INTO schema_migrations SET version = '20100607162339-alchemy'")
136
+ execute("INSERT INTO schema_migrations SET version = '20100607193638-alchemy'")
137
+ execute("INSERT INTO schema_migrations SET version = '20100607193646-alchemy'")
138
+ execute("INSERT INTO schema_migrations SET version = '20100607193653-alchemy'")
139
+ execute("INSERT INTO schema_migrations SET version = '20100609111653-alchemy'")
140
+ execute("INSERT INTO schema_migrations SET version = '20100609111809-alchemy'")
141
+ execute("INSERT INTO schema_migrations SET version = '20100609111821-alchemy'")
142
+ execute("INSERT INTO schema_migrations SET version = '20100609111837-alchemy'")
143
+ execute("INSERT INTO schema_migrations SET version = '20100616150753-alchemy'")
144
+ execute("INSERT INTO schema_migrations SET version = '20100709163925-alchemy'")
145
+ execute("INSERT INTO schema_migrations SET version = '20100812085225-alchemy'")
146
+
147
+ end
148
+
149
+ def self.down
150
+ raise IrreversibleMigration
151
+ end
152
+ end
153
+ EOF
154
+ File.open(migration_file, 'w') { |f| f.write(s)}
155
+ end
156
+
157
+ desc "Updates the config/environment.rb file"
158
+ task "environment_file" do
159
+ s = <<EOF
160
+ RAILS_GEM_VERSION = '2.3.10' unless defined? RAILS_GEM_VERSION
161
+
162
+ require File.join(File.dirname(__FILE__), 'boot')
163
+
164
+ Rails::Initializer.run do |config|
165
+ config.gem 'acts_as_ferret', :version => '0.4.8.2'
166
+ config.gem 'authlogic', :version => '>=2.1.2'
167
+ config.gem 'awesome_nested_set', :version => '>=1.4.3'
168
+ config.gem 'declarative_authorization', :version => '>=0.4.1'
169
+ config.gem "fleximage", :version => ">=1.0.4"
170
+ config.gem 'fast_gettext', :version => '>=0.4.8'
171
+ config.gem 'gettext_i18n_rails', :version => '0.2.3'
172
+ config.gem 'gettext', :lib => false, :version => '>=1.9.3'
173
+ config.gem 'rmagick', :lib => "RMagick2", :version => '>=2.13.1'
174
+ config.gem 'jk-ferret', :version => '>=0.11.8.2', :lib => 'ferret'
175
+ config.gem 'will_paginate', :version => '2.3.15'
176
+ config.gem 'mimetype-fu', :version => '>=0.1.2', :lib => 'mimetype_fu'
177
+ config.autoload_paths += %W( vendor/plugins/alchemy/app/sweepers )
178
+ config.autoload_paths += %W( vendor/plugins/alchemy/app/middleware )
179
+ config.i18n.load_path += Dir[Rails.root.join('vendor/plugins/alchemy/config', 'locales', '*.{rb,yml}')]
180
+ config.time_zone = 'Berlin'
181
+ config.i18n.default_locale = :de
182
+ end
183
+ EOF
184
+ File.open('config/environment.rb', 'w') { |f| f.write(s)}
185
+ end
186
+
187
+ namespace :svn do
188
+
189
+ desc "Renaming files and folders for svn repository"
190
+ task "rename" do
191
+ system('svn rename config/webmate config/alchemy')
192
+ system('svn rename config/alchemy/molecules.yml config/alchemy/elements.yml')
193
+ system('svn rename app/views/wa_molecules app/views/elements')
194
+ system('svn rename app/views/layouts/wa_pages.html.erb app/views/layouts/pages.html.erb')
195
+ system('svn remove config/initializers/fast_gettext.rb config/initializers/cache_storage.rb')
196
+ end
197
+
198
+ desc "Commits everything into you svn repository"
199
+ task "commit" do
200
+ system("svn mkdir uploads")
201
+ system("svn propset svn:ignore '*' uploads/")
202
+ system("svn add lib/tasks/alchemy_plugins_tasks.rake")
203
+ system("svn add db/migrate/*")
204
+ system("svn commit -m 'upgraded to alchemy'")
205
+ end
206
+
207
+ end
208
+
209
+ end
210
+
211
+ end