alchemy_cms 2.0.7 → 2.1.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (256) hide show
  1. data/.gitignore +1 -4
  2. data/.travis.yml +1 -1
  3. data/Gemfile +7 -2
  4. data/README.md +6 -6
  5. data/Rakefile +26 -18
  6. data/alchemy_cms.gemspec +14 -14
  7. data/{assets/stylesheets → app/assets/images/alchemy}/Jcrop.gif +0 -0
  8. data/{assets/images → app/assets/images/alchemy}/ajax_loader.gif +0 -0
  9. data/{assets/images → app/assets/images/alchemy}/alchemy-logo.png +0 -0
  10. data/{assets/images → app/assets/images/alchemy}/flags.png +0 -0
  11. data/{assets/images → app/assets/images/alchemy}/gui/navi-tab.png +0 -0
  12. data/{assets/images → app/assets/images/alchemy}/gui/shading_90.png +0 -0
  13. data/{assets/images → app/assets/images/alchemy}/gui/toggle.png +0 -0
  14. data/{assets/images → app/assets/images/alchemy}/icons.png +0 -0
  15. data/{assets/images → app/assets/images/alchemy}/image_loader.gif +0 -0
  16. data/{assets/images → app/assets/images/alchemy}/jquery-sb/select_arrow.gif +0 -0
  17. data/{assets/images → app/assets/images/alchemy}/jquery-sb/select_arrow_bg.gif +0 -0
  18. data/{assets/images → app/assets/images/alchemy}/jquery-sb/select_arrow_bg_hover.gif +0 -0
  19. data/{assets/images → app/assets/images/alchemy}/placeholder.png +0 -0
  20. data/{assets/images/gui → app/assets/images/alchemy}/shading.png +0 -0
  21. data/{assets/images → app/assets/images/alchemy}/swfupload/browse_button.png +0 -0
  22. data/{assets/stylesheets/default/img → app/assets/images/alchemy}/tabs.gif +0 -0
  23. data/{assets/images/jquery-ui → app/assets/images/alchemy}/ui-icons_666666_256x240.png +0 -0
  24. data/app/assets/javascripts/alchemy/alchemy.base.js +212 -0
  25. data/app/assets/javascripts/alchemy/alchemy.buttons.js +36 -0
  26. data/app/assets/javascripts/alchemy/alchemy.dirty.js +91 -0
  27. data/app/assets/javascripts/alchemy/alchemy.dragndrop.js +114 -0
  28. data/{assets/javascripts → app/assets/javascripts/alchemy}/alchemy.element_editor_selector.js +0 -0
  29. data/{assets/javascripts → app/assets/javascripts/alchemy}/alchemy.growler.js +0 -0
  30. data/{assets/javascripts → app/assets/javascripts/alchemy}/alchemy.image_cropper.js +0 -0
  31. data/app/assets/javascripts/alchemy/alchemy.js +26 -0
  32. data/app/assets/javascripts/alchemy/alchemy.js_extensions.js +17 -0
  33. data/{assets/javascripts → app/assets/javascripts/alchemy}/alchemy.link_overlay.js +1 -1
  34. data/{assets/javascripts → app/assets/javascripts/alchemy}/alchemy.page_sorter.js +0 -0
  35. data/{assets/javascripts → app/assets/javascripts/alchemy}/alchemy.preview.js +0 -0
  36. data/app/assets/javascripts/alchemy/alchemy.windows.js +438 -0
  37. data/app/assets/stylesheets/alchemy/_defaults.scss +160 -0
  38. data/app/assets/stylesheets/alchemy/alchemy.css +9 -0
  39. data/{assets/stylesheets/alchemy.css → app/assets/stylesheets/alchemy/base.css.scss} +216 -353
  40. data/{assets/stylesheets/elements.css → app/assets/stylesheets/alchemy/elements.css.scss} +41 -70
  41. data/{assets/stylesheets/flags.css → app/assets/stylesheets/alchemy/flags.css.scss} +1 -1
  42. data/{assets/stylesheets/jquery-ui-1.8.7.alchemy.css → app/assets/stylesheets/alchemy/jquery-ui.alchemy.css} +15 -15
  43. data/{assets/stylesheets/jquery.Jcrop.css → app/assets/stylesheets/alchemy/jquery.Jcrop.css.scss} +3 -3
  44. data/{assets/stylesheets/jquery.sb.css → app/assets/stylesheets/alchemy/jquery.sb.css.scss} +19 -29
  45. data/{assets/stylesheets → app/assets/stylesheets/alchemy}/print.css +6 -1
  46. data/{assets/stylesheets → app/assets/stylesheets/alchemy}/standard_set.css +0 -0
  47. data/{assets/stylesheets/alchemy_tinymce_content.css → app/assets/stylesheets/alchemy/tinymce_content.css} +0 -0
  48. data/{assets/stylesheets/alchemy_tinymce_dialog.css → app/assets/stylesheets/alchemy/tinymce_dialog.css} +2 -2
  49. data/app/controllers/admin/attachments_controller.rb +2 -8
  50. data/app/controllers/admin/clipboard_controller.rb +2 -2
  51. data/app/controllers/admin/contents_controller.rb +4 -16
  52. data/app/controllers/admin/elements_controller.rb +2 -2
  53. data/app/controllers/admin/essence_audios_controller.rb +0 -3
  54. data/app/controllers/admin/essence_files_controller.rb +0 -11
  55. data/app/controllers/admin/essence_flashes_controller.rb +0 -3
  56. data/app/controllers/admin/essence_pictures_controller.rb +2 -7
  57. data/app/controllers/admin/essence_videos_controller.rb +0 -3
  58. data/app/controllers/admin/languages_controller.rb +4 -10
  59. data/app/controllers/admin/pages_controller.rb +6 -4
  60. data/app/controllers/admin/pictures_controller.rb +13 -18
  61. data/app/controllers/admin/trash_controller.rb +0 -5
  62. data/app/controllers/admin/users_controller.rb +2 -3
  63. data/app/controllers/alchemy_controller.rb +18 -30
  64. data/app/controllers/pages_controller.rb +21 -24
  65. data/app/helpers/admin/elements_helper.rb +5 -0
  66. data/app/helpers/admin/pages_helper.rb +36 -1
  67. data/app/helpers/alchemy_helper.rb +39 -17
  68. data/app/models/attachment.rb +2 -2
  69. data/app/models/essence_file.rb +1 -1
  70. data/app/models/page.rb +1 -1
  71. data/app/sweepers/pages_sweeper.rb +10 -0
  72. data/app/views/admin/attachments/destroy.js.erb +4 -0
  73. data/app/views/admin/clipboard/insert.js.erb +12 -19
  74. data/app/views/admin/contents/create.js.erb +1 -1
  75. data/app/views/admin/contents/destroy.js.erb +7 -0
  76. data/app/views/admin/contents/order.js.erb +6 -0
  77. data/app/views/admin/elements/_element.html.erb +4 -2
  78. data/app/views/admin/elements/create.js.erb +19 -26
  79. data/app/views/admin/elements/fold.js.erb +1 -1
  80. data/app/views/admin/elements/index.html.erb +1 -1
  81. data/app/views/admin/essence_files/assign.js.erb +8 -0
  82. data/app/views/admin/essence_pictures/save_link.js.erb +3 -0
  83. data/app/views/admin/index.html.erb +37 -27
  84. data/app/views/admin/languages/destroy.js.erb +1 -0
  85. data/app/views/admin/pages/_page.html.erb +1 -1
  86. data/app/views/admin/pages/_sitemap.html.erb +1 -1
  87. data/app/views/admin/pages/edit.html.erb +2 -2
  88. data/app/views/admin/pages/update.js.erb +1 -1
  89. data/app/views/admin/partials/_upload_form.html.erb +11 -11
  90. data/app/views/admin/pictures/archive_overlay.js.erb +1 -0
  91. data/app/views/admin/pictures/flush.js.erb +2 -0
  92. data/app/views/admin/pictures/update.js.erb +1 -0
  93. data/app/views/admin/trash/clear.js.erb +3 -0
  94. data/app/views/alchemy/error_notice.js.erb +1 -0
  95. data/app/views/alchemy/permission_denied.js.erb +2 -0
  96. data/app/views/alchemy/redirect.js.erb +1 -0
  97. data/app/views/alchemy/remote_errors.js.erb +3 -0
  98. data/app/views/alchemy/update.js.erb +5 -0
  99. data/app/views/essences/_essence_file_editor.html.erb +0 -1
  100. data/app/views/essences/_essence_file_view.html.erb +1 -5
  101. data/app/views/essences/_essence_picture_tools.html.erb +1 -1
  102. data/app/views/layouts/alchemy.html.erb +22 -9
  103. data/app/views/pages/show.rss.builder +1 -1
  104. data/config/alchemy/elements.yml +0 -5
  105. data/config/alchemy/page_layouts.yml +1 -1
  106. data/config/asset_packages.yml +17 -19
  107. data/config/authorization_rules.rb +1 -0
  108. data/config/locales/de.yml +0 -1
  109. data/config/routes.rb +1 -1
  110. data/lib/alchemy/tinymce.rb +51 -0
  111. data/lib/alchemy/version.rb +3 -3
  112. data/lib/alchemy_cms.rb +4 -2
  113. data/script/rails +6 -0
  114. data/spec/controllers/admin/clipboard_controller_spec.rb +15 -13
  115. data/spec/controllers/admin/contents_controller_spec.rb +4 -4
  116. data/spec/controllers/admin/trash_controller_spec.rb +6 -9
  117. data/spec/controllers/pages_controller_spec.rb +9 -8
  118. data/spec/dummy/Rakefile +1 -1
  119. data/spec/dummy/app/assets/javascripts/application.js +9 -0
  120. data/spec/dummy/app/assets/stylesheets/application.css +7 -0
  121. data/spec/dummy/app/mailers/.gitkeep +0 -0
  122. data/spec/dummy/app/models/.gitkeep +0 -0
  123. data/spec/dummy/app/views/layouts/application.html.erb +3 -3
  124. data/spec/dummy/config/application.rb +12 -6
  125. data/spec/dummy/config/database.yml +3 -0
  126. data/spec/dummy/config/environments/development.rb +7 -3
  127. data/spec/dummy/config/environments/production.rb +23 -12
  128. data/spec/dummy/config/environments/test.rb +5 -1
  129. data/spec/dummy/config/initializers/secret_token.rb +1 -1
  130. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  131. data/spec/dummy/config/locales/en.yml +1 -1
  132. data/spec/dummy/config/routes.rb +1 -1
  133. data/spec/dummy/lib/assets/.gitkeep +0 -0
  134. data/spec/factories.rb +8 -8
  135. data/spec/helpers/admin/elements_helper_spec.rb +2 -2
  136. data/spec/helpers/contents_helper_spec.rb +1 -1
  137. data/spec/helpers/elements_helper_spec.rb +6 -6
  138. data/spec/helpers/essences_helper_spec.rb +1 -1
  139. data/spec/helpers/pages_helper_spec.rb +37 -37
  140. data/spec/integration/pages_controller_spec.rb +29 -26
  141. data/spec/integration/security_spec.rb +2 -1
  142. data/spec/models/content_spec.rb +1 -1
  143. data/spec/models/element_spec.rb +11 -11
  144. data/spec/models/language_spec.rb +5 -5
  145. data/spec/models/page_spec.rb +54 -54
  146. data/spec/models/user_spec.rb +2 -1
  147. data/spec/routing_spec.rb +1 -1
  148. data/{assets/javascripts/jquery.js → vendor/assets/javascripts/jquery-1.6.2.min.js} +0 -0
  149. data/{assets/javascripts/jquery-ui.js → vendor/assets/javascripts/jquery-ui-custom-1.8.16.min.js} +0 -0
  150. data/{assets/javascripts → vendor/assets/javascripts/jquery_plugins}/jquery.Jcrop.min.js +0 -0
  151. data/{assets/javascripts → vendor/assets/javascripts/jquery_plugins}/jquery.dialogextend.min.js +7 -7
  152. data/{assets/javascripts → vendor/assets/javascripts/jquery_plugins}/jquery.in-place-edit.js +0 -0
  153. data/{assets/javascripts → vendor/assets/javascripts/jquery_plugins}/jquery.sb.min.js +0 -0
  154. data/{assets/javascripts → vendor/assets/javascripts/jquery_plugins}/jquery.scrollTo-1.4.2-min.js +10 -10
  155. data/{assets/javascripts → vendor/assets/javascripts/jquery_plugins}/jquery.ui.nestedSortable.js +0 -0
  156. data/{assets/javascripts → vendor/assets/javascripts/jquery_plugins}/jquery.ui.tabspaging.js +0 -0
  157. data/{assets → vendor/assets}/javascripts/swfupload/fileprogress.js +202 -202
  158. data/{assets → vendor/assets}/javascripts/swfupload/handlers.js +171 -171
  159. data/{assets → vendor/assets}/javascripts/swfupload/queue.js +97 -97
  160. data/{assets → vendor/assets}/javascripts/swfupload/swfupload.js +980 -980
  161. data/{assets → vendor/assets}/javascripts/swfupload/swfupload.swf +0 -0
  162. data/{assets → vendor/assets}/javascripts/tiny_mce/jquery.tinymce.js +0 -0
  163. data/{assets → vendor/assets}/javascripts/tiny_mce/langs/de.js +0 -0
  164. data/{assets → vendor/assets}/javascripts/tiny_mce/langs/en.js +0 -0
  165. data/{assets → vendor/assets}/javascripts/tiny_mce/license.txt +504 -504
  166. data/{assets → vendor/assets}/javascripts/tiny_mce/plugins/alchemy_link/editor_plugin.js +0 -0
  167. data/{assets → vendor/assets}/javascripts/tiny_mce/plugins/alchemy_link/langs/de.js +0 -0
  168. data/{assets → vendor/assets}/javascripts/tiny_mce/plugins/alchemy_link/langs/en.js +0 -0
  169. data/{assets → vendor/assets}/javascripts/tiny_mce/plugins/autoresize/editor_plugin.js +0 -0
  170. data/{assets → vendor/assets}/javascripts/tiny_mce/plugins/fullscreen/editor_plugin.js +0 -0
  171. data/{assets → vendor/assets}/javascripts/tiny_mce/plugins/fullscreen/fullscreen.htm +110 -110
  172. data/{assets → vendor/assets}/javascripts/tiny_mce/plugins/inlinepopups/editor_plugin.js +0 -0
  173. data/{assets/javascripts/tiny_mce/plugins/inlinepopups/skins/alchemy/window.css → vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/alchemy/window.css.erb} +8 -8
  174. data/{assets → vendor/assets}/javascripts/tiny_mce/plugins/inlinepopups/template.htm +387 -387
  175. data/{assets → vendor/assets}/javascripts/tiny_mce/plugins/paste/editor_plugin.js +0 -0
  176. data/{assets → vendor/assets}/javascripts/tiny_mce/plugins/paste/js/pastetext.js +36 -36
  177. data/{assets → vendor/assets}/javascripts/tiny_mce/plugins/paste/js/pasteword.js +51 -51
  178. data/{assets → vendor/assets}/javascripts/tiny_mce/plugins/paste/langs/de_dlg.js +0 -0
  179. data/{assets → vendor/assets}/javascripts/tiny_mce/plugins/paste/langs/en_dlg.js +0 -0
  180. data/{assets → vendor/assets}/javascripts/tiny_mce/plugins/paste/pastetext.htm +26 -26
  181. data/{assets → vendor/assets}/javascripts/tiny_mce/plugins/paste/pasteword.htm +21 -21
  182. data/{assets → vendor/assets}/javascripts/tiny_mce/plugins/table/cell.htm +180 -180
  183. data/{assets → vendor/assets}/javascripts/tiny_mce/plugins/table/css/cell.css +16 -16
  184. data/{assets → vendor/assets}/javascripts/tiny_mce/plugins/table/css/row.css +25 -25
  185. data/{assets → vendor/assets}/javascripts/tiny_mce/plugins/table/css/table.css +13 -13
  186. data/{assets → vendor/assets}/javascripts/tiny_mce/plugins/table/editor_plugin.js +0 -0
  187. data/{assets → vendor/assets}/javascripts/tiny_mce/plugins/table/js/cell.js +319 -319
  188. data/{assets → vendor/assets}/javascripts/tiny_mce/plugins/table/js/merge_cells.js +27 -27
  189. data/{assets → vendor/assets}/javascripts/tiny_mce/plugins/table/js/row.js +237 -237
  190. data/{assets → vendor/assets}/javascripts/tiny_mce/plugins/table/js/table.js +450 -450
  191. data/{assets → vendor/assets}/javascripts/tiny_mce/plugins/table/langs/de_dlg.js +0 -0
  192. data/{assets → vendor/assets}/javascripts/tiny_mce/plugins/table/langs/en_dlg.js +0 -0
  193. data/{assets → vendor/assets}/javascripts/tiny_mce/plugins/table/merge_cells.htm +32 -32
  194. data/{assets → vendor/assets}/javascripts/tiny_mce/plugins/table/row.htm +158 -158
  195. data/{assets → vendor/assets}/javascripts/tiny_mce/plugins/table/table.htm +188 -188
  196. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/about.htm +52 -52
  197. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/anchor.htm +26 -26
  198. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/charmap.htm +51 -51
  199. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/color_picker.htm +74 -74
  200. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/editor_template.js +0 -0
  201. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/image.htm +80 -80
  202. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/img/colorpicker.jpg +0 -0
  203. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/img/flash.gif +0 -0
  204. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/img/icons.gif +0 -0
  205. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/img/iframe.gif +0 -0
  206. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/img/pagebreak.gif +0 -0
  207. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/img/quicktime.gif +0 -0
  208. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/img/realmedia.gif +0 -0
  209. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/img/shockwave.gif +0 -0
  210. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/img/trans.gif +0 -0
  211. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/img/video.gif +0 -0
  212. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/img/windowsmedia.gif +0 -0
  213. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/js/about.js +73 -73
  214. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/js/anchor.js +43 -43
  215. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/js/charmap.js +355 -355
  216. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/js/color_picker.js +329 -329
  217. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/js/image.js +251 -251
  218. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/js/link.js +153 -153
  219. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/js/source_editor.js +56 -56
  220. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/langs/de.js +0 -0
  221. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/langs/de_dlg.js +0 -0
  222. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/langs/en.js +0 -0
  223. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/langs/en_dlg.js +0 -0
  224. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/link.htm +57 -57
  225. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/shortcuts.htm +47 -47
  226. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/skins/default/content.css +50 -50
  227. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/skins/default/dialog.css +117 -117
  228. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/skins/default/img/buttons.png +0 -0
  229. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/skins/default/img/items.gif +0 -0
  230. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif +0 -0
  231. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif +0 -0
  232. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/skins/default/img/progress.gif +0 -0
  233. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif +0 -0
  234. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/skins/default/ui.css +214 -214
  235. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/skins/o2k7/content.css +48 -48
  236. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css +117 -117
  237. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png +0 -0
  238. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png +0 -0
  239. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png +0 -0
  240. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui.css +217 -217
  241. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css +7 -7
  242. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css +5 -5
  243. data/{assets → vendor/assets}/javascripts/tiny_mce/themes/advanced/source_editor.htm +25 -25
  244. data/{assets → vendor/assets}/javascripts/tiny_mce/tiny_mce.js +0 -0
  245. data/{assets → vendor/assets}/javascripts/tiny_mce/tiny_mce_popup.js +0 -0
  246. data/{assets → vendor/assets}/javascripts/tiny_mce/utils/editable_selects.js +70 -70
  247. data/{assets → vendor/assets}/javascripts/tiny_mce/utils/form_utils.js +210 -210
  248. data/{assets → vendor/assets}/javascripts/tiny_mce/utils/mctabs.js +161 -161
  249. data/{assets → vendor/assets}/javascripts/tiny_mce/utils/validate.js +252 -252
  250. metadata +338 -369
  251. data/app/views/elements/_download_editor.html.erb +0 -1
  252. data/app/views/elements/_download_view.html.erb +0 -3
  253. data/assets/javascripts/alchemy.js +0 -903
  254. data/assets/javascripts/jquery.rails.js +0 -315
  255. data/assets/stylesheets/ie6.css +0 -18
  256. data/config/initializers/tinymce_hammer.rb +0 -31
@@ -5,29 +5,26 @@ class PagesController < AlchemyController
5
5
 
6
6
  filter_access_to :show, :attribute_check => true
7
7
 
8
- caches_action(
9
- :show,
10
- :cache_path => proc { url_for(:action => :show, :urlname => params[:urlname], :lang => multi_language? ? params[:lang] : nil) },
11
- :if => proc {
12
- if Alchemy::Config.get(:cache_pages)
13
- page = Page.find_by_urlname_and_language_id_and_public(
14
- params[:urlname],
15
- session[:language_id],
16
- true,
17
- :select => 'page_layout, language_id, urlname'
18
- )
19
- if page
20
- pagelayout = PageLayout.get(page.page_layout)
21
- pagelayout['cache'].nil? || pagelayout['cache']
22
- end
23
- else
24
- false
25
- end
26
- },
27
- :layout => false
28
- )
29
-
30
- layout :layout_for_page
8
+ caches_action(
9
+ :show,
10
+ :cache_path => proc { url_for(:action => :show, :urlname => params[:urlname], :lang => multi_language? ? params[:lang] : nil) },
11
+ :if => proc do
12
+ if Alchemy::Config.get(:cache_pages)
13
+ page = Page.find_by_urlname_and_language_id_and_public(
14
+ params[:urlname],
15
+ session[:language_id],
16
+ true,
17
+ :select => 'page_layout, language_id, urlname'
18
+ )
19
+ if page
20
+ pagelayout = Alchemy::PageLayout.get(page.page_layout)
21
+ pagelayout['cache'].nil? || pagelayout['cache']
22
+ end
23
+ else
24
+ false
25
+ end
26
+ end
27
+ )
31
28
 
32
29
  # Showing page from params[:urlname]
33
30
  # @page is fetched via before filter
@@ -40,7 +37,7 @@ class PagesController < AlchemyController
40
37
  end
41
38
  respond_to do |format|
42
39
  format.html {
43
- render
40
+ render :layout => params[:layout].blank? ? 'pages' : params[:layout] == 'none' ? false : params[:layout]
44
41
  }
45
42
  format.rss {
46
43
  if @page.contains_feed?
@@ -104,4 +104,9 @@ module Admin::ElementsHelper
104
104
  end
105
105
  end
106
106
 
107
+ def tinymce_tag(name, content = '', options = {})
108
+ append_class_name(options, 'tinymce')
109
+ text_area_tag(name, content, options)
110
+ end
111
+
107
112
  end
@@ -1,3 +1,38 @@
1
1
  module Admin::PagesHelper
2
2
 
3
- end
3
+ def tinymce_javascript_tags
4
+ init = Alchemy::Tinymce.init
5
+ if init.is_a?(Hash)
6
+ init = HashWithIndifferentAccess.new(init)
7
+ init = init.keys.sort.collect(&:to_s).sort.collect do |key|
8
+ [key, init[key]]
9
+ end
10
+ end
11
+ init = init.collect { |key, value| "#{key} : #{value.to_json}" }.join(', ')
12
+
13
+ setup = "init.setup = #{Alchemy::Tinymce.setup};" if Alchemy::Tinymce.setup
14
+ return "
15
+ <script src='/assets/tiny_mce/jquery.tinymce.js' type='text/javascript'></script>
16
+ <script type='text/javascript'>
17
+ jQuery(function($){
18
+ if (typeof(Alchemy) !== 'object') { Alchemy = {}; };
19
+ Alchemy.Tinymce = {
20
+ init : function() {
21
+ var init = { #{init} };
22
+ init.script_url = '/assets/tiny_mce/tiny_mce.js';
23
+ init.plugins = '#{Alchemy::Tinymce.plugins.join(',')}';
24
+ init.language = '#{I18n.locale}';
25
+ #{setup}
26
+ $('textarea.tinymce').tinymce(init);
27
+ },
28
+ addEditor : function(dom_id) {
29
+ tinyMCE.execCommand('mceAddControl', true, dom_id);
30
+ }
31
+ };
32
+ console.log('hello', Alchemy.Tinymce);
33
+ Alchemy.Tinymce.init();
34
+ });
35
+ </script>".html_safe
36
+ end
37
+
38
+ end
@@ -258,23 +258,36 @@ module AlchemyHelper
258
258
  end
259
259
  end
260
260
 
261
- # Helper for including the nescessary javascripts and stylesheets for the different views.
262
- # Together with the rails caching we achieve a good load time.
263
- def alchemy_assets_set(setname = 'combined')
264
- asset_sets = YAML.load_file(File.join(File.dirname(__FILE__), '..', '..', 'config/asset_packages.yml'))
265
- content_for(:javascript_includes) do
266
- js_set = asset_sets['javascripts'].detect { |js| js[setname.to_s] }[setname.to_s]
267
- javascript_include_tag(js_set, :cache => 'alchemy/' + setname.to_s)
268
- end
269
- css_set = asset_sets['stylesheets'].detect { |css| css[setname.to_s] }[setname.to_s]
270
- content_for(:stylesheets) do
271
- stylesheet_link_tag(css_set, :cache => 'alchemy/' + setname.to_s, :media => 'screen')
272
- end
273
- content_for(:stylesheets) do
274
- print_set = css_set.clone << 'alchemy/print'
275
- stylesheet_link_tag(print_set, :cache => 'alchemy/' + setname.to_s + '-print', :media => 'print')
276
- end
277
- end
261
+ # Helper for including all nescessary javascripts and stylesheets.
262
+ # Under Rails 3.1 it uses the asset pipeline.
263
+ # Under Rails 3.0.x we use caching to combine the files into one big asset file.
264
+ def alchemy_assets_set
265
+ asset_sets = YAML.load_file(File.join(File.dirname(__FILE__), '..', '..', 'config/asset_packages.yml'))
266
+ if Rails.version >= '3.1'
267
+ content_for(:javascript_includes) do
268
+ javascript_include_tag('alchemy/alchemy')
269
+ end
270
+ content_for(:stylesheets) do
271
+ stylesheet_link_tag('alchemy/alchemy', :media => 'screen')
272
+ end
273
+ content_for(:stylesheets) do
274
+ stylesheet_link_tag('alchemy/print', :media => 'print')
275
+ end
276
+ else
277
+ content_for(:javascript_includes) do
278
+ js_set = asset_sets['javascripts'].detect { |js| js[setname.to_s] }[setname.to_s]
279
+ javascript_include_tag(js_set, :cache => 'alchemy/' + setname.to_s)
280
+ end
281
+ css_set = asset_sets['stylesheets'].detect { |css| css[setname.to_s] }[setname.to_s]
282
+ content_for(:stylesheets) do
283
+ stylesheet_link_tag(css_set, :cache => 'alchemy/' + setname.to_s, :media => 'screen')
284
+ end
285
+ content_for(:stylesheets) do
286
+ print_set = css_set.clone << 'alchemy/print'
287
+ stylesheet_link_tag(print_set, :cache => 'alchemy/' + setname.to_s + '-print', :media => 'print')
288
+ end
289
+ end
290
+ end
278
291
 
279
292
  def parse_sitemap_name(page)
280
293
  if multi_language?
@@ -354,4 +367,13 @@ module AlchemyHelper
354
367
  )
355
368
  end
356
369
 
370
+ # Taken from tinymce_hammer plugin
371
+ def append_class_name options, class_name #:nodoc:
372
+ key = options.has_key?('class') ? 'class' : :class
373
+ unless options[key].to_s =~ /(^|\s+)#{class_name}(\s+|$)/
374
+ options[key] = "#{options[key]} #{class_name}".strip
375
+ end
376
+ options
377
+ end
378
+
357
379
  end
@@ -9,8 +9,8 @@ class Attachment < ActiveRecord::Base
9
9
  )
10
10
  validates_as_attachment
11
11
 
12
- def urlname
13
- CGI.escape(read_attribute(:filename).split('.').first)
12
+ def name
13
+ read_attribute(:name).split('.').first
14
14
  end
15
15
 
16
16
  def extension
@@ -10,7 +10,7 @@ class EssenceFile < ActiveRecord::Base
10
10
  # Saves the ingredient
11
11
  def save_ingredient(params, options = {})
12
12
  return true if params.blank?
13
- self.attachment_id = params["attachment"].to_s
13
+ self.attachment_id = params["attachment_id"].to_s
14
14
  self.save
15
15
  end
16
16
 
data/app/models/page.rb CHANGED
@@ -181,7 +181,7 @@ class Page < ActiveRecord::Base
181
181
  def lock(user)
182
182
  self.locked = true
183
183
  self.locked_by = user.id
184
- self.save(false)
184
+ self.save(:validate => false)
185
185
  end
186
186
 
187
187
  def unlock
@@ -34,4 +34,14 @@ private
34
34
  end
35
35
  end
36
36
 
37
+ def expire_page(page)
38
+ return if page.do_not_sweep
39
+ expire_action(
40
+ :controller => '/pages',
41
+ :action => :show,
42
+ :urlname => page.urlname_was,
43
+ :lang => multi_language? ? page.language_code : nil
44
+ )
45
+ end
46
+
37
47
  end
@@ -0,0 +1,4 @@
1
+ window.location.replace('<%= admin_attachments_url(
2
+ :per_page => params[:per_page],
3
+ :page => params[:page],
4
+ :query => params[:query]) %>');
@@ -1,21 +1,14 @@
1
1
  (function($) {
2
-
3
- <% if params[:remove] %>
4
-
5
- $(".element_editor[data-element-id='<%= @item.id -%>']").remove();
6
-
7
- <% if @item.class.to_s == 'Element' %>
8
- $('#element_area').sortable('refresh');
9
- <% end %>
10
-
11
- Alchemy.growl('<%= escape_javascript(_("item %{name} moved to clipboard") % {:name => @item.class.to_s == "Element" ? @item.display_name_with_preview_text : @item.name}) -%>');
12
-
13
- <% else %>
14
-
15
- Alchemy.growl('<%= escape_javascript(_("item %{name} copied to clipboard") % {:name => @item.class.to_s == "Element" ? @item.display_name_with_preview_text : @item.name}) -%>')
16
-
17
- <% end %>
18
-
19
- $('#clipboard_button .icon.clipboard').addClass('full');
20
-
2
+
3
+ <%- if params[:remove] -%>
4
+ $("#<%= @item.class.to_s.downcase -%>_<%= @item.id -%>").remove();
5
+ <%- if @item.class.to_s == 'Element' -%>
6
+ $('#element_area').sortable('refresh');
7
+ <%- end -%>
8
+ Alchemy.growl('<%= _("item %{name} moved to clipboard") % {:name => @item.class.to_s == "Element" ? @item.display_name_with_preview_text : @item.name} -%>');
9
+ <%- else -%>
10
+ Alchemy.growl('<%= _("item %{name} copied to clipboard") % {:name => @item.class.to_s == "Element" ? @item.display_name_with_preview_text : @item.name} -%>')
11
+ <%- end -%>
12
+ $('#clipboard_button .icon.clipboard').addClass('full');
13
+
21
14
  })(jQuery);
@@ -81,7 +81,7 @@
81
81
 
82
82
  <%- end -%>
83
83
 
84
- TinymceHammer.addEditor('contents_content_<%= @content.id -%>_body');
84
+ Alchemy.Tinymce.addEditor('contents_content_<%= @content.id -%>_body');
85
85
 
86
86
  <%- else -%>
87
87
 
@@ -0,0 +1,7 @@
1
+ (function($) {
2
+
3
+ $('<%= @content_dom_id %>').remove();
4
+ Alchemy.growl('<%= escape_javascript(@notice) %>');
5
+ Alchemy.reloadPreview();
6
+
7
+ })(jQuery);
@@ -0,0 +1,6 @@
1
+ Alchemy.growl('<%= escape_javascript(@notice) %>');
2
+ Alchemy.SortableContents(
3
+ '#element_area .picture_gallery_images',
4
+ '<%= form_authenticity_token %>'
5
+ );
6
+ Alchemy.reloadPreview();
@@ -4,8 +4,10 @@
4
4
  <%= form_for(
5
5
  [:admin, element],
6
6
  :remote => true,
7
- :onsubmit => "Alchemy.saveElement(this)",
8
- :id => "element_#{element.id}_form"
7
+ :html => {
8
+ :onsubmit => "Alchemy.saveElement(this)",
9
+ :id => "element_#{element.id}_form"
10
+ }
9
11
  ) do %>
10
12
  <div id="element_<%= element.id %>_errors" class="element_errors" style="display: none"></div>
11
13
  <div id="element_<%= element.id %>_content" class="element_content">
@@ -1,31 +1,24 @@
1
1
  (function($) {
2
+
3
+ <%- if @page.can_have_cells? -%>
4
+ Alchemy.selectOrCreateCellTab('<%= @cell.nil? ? "for_other_elements" : @cell.name -%>', '<%= @cell.nil? ? _("other Elements") : @cell.name_for_label -%>');
5
+ <%- end -%>
6
+ $('#cell_<%= @cell.nil? ? "for_other_elements" : @cell.name -%>').append('<%= escape_javascript render(:partial => "element", :object => @element, :locals => {:draggable => true}) -%>');
7
+ $('#cell_<%= @cell.nil? ? "for_other_elements" : @cell.name -%>').sortable('refresh');
8
+ Alchemy.growl('<%= _("successfully_added_element") -%>');
9
+ Alchemy.closeCurrentWindow();
10
+ <%- @element.rtf_contents.each do |content| -%>
11
+ Alchemy.Tinymce.addEditor('<%= content.form_field_id -%>');
12
+ <%- end -%>
13
+ Alchemy.PreviewWindow.refresh();
14
+ Alchemy.ElementEditorSelector.init();
15
+ $('.element_editor[data-element-id="<%= @element.id -%>"]').trigger('Alchemy.SelectElementEditor');
16
+ Alchemy.ElementDirtyObserver('#element_<%= @element.id -%>');
17
+ Alchemy.SelectBox('#element_<%= @element.id -%> select');
18
+ Alchemy.ButtonObserver('#element_<%= @element.id -%> button.button');
2
19
 
3
- <% if @cutted_element_id %>
4
- $('.element_editor[data-element-id="<%= @cutted_element_id %>"]').remove();
5
- <% end %>
6
-
7
- <%- if @page.can_have_cells? -%>
8
- Alchemy.selectOrCreateCellTab('<%= @cell.nil? ? "for_other_elements" : @cell.name -%>', '<%= @cell.nil? ? _("other Elements") : @cell.name_for_label -%>');
9
- <%- end -%>
10
-
11
- $('#cell_<%= @cell.nil? ? "for_other_elements" : @cell.name -%>').append('<%= escape_javascript render(:partial => "element", :object => @element, :locals => {:draggable => true}) -%>');
12
- $('#cell_<%= @cell.nil? ? "for_other_elements" : @cell.name -%>').sortable('refresh');
13
- Alchemy.growl('<%= _("successfully_added_element") -%>');
14
- Alchemy.closeCurrentWindow();
15
-
16
- <%- @element.rtf_contents.each do |content| -%>
17
- TinymceHammer.addEditor('<%= content.form_field_id -%>');
18
- <%- end -%>
19
-
20
- Alchemy.PreviewWindow.refresh();
21
- Alchemy.ElementEditorSelector.init();
22
- $('.element_editor[data-element-id="<%= @element.id -%>"]').trigger('Alchemy.SelectElementEditor');
23
- Alchemy.ElementDirtyObserver('#element_<%= @element.id -%>');
24
- Alchemy.SelectBox('#element_<%= @element.id -%> select');
25
- Alchemy.ButtonObserver('#element_<%= @element.id -%> button.button');
26
-
27
- <%- if @clipboard.blank? -%>
28
- $('#clipboard_button .icon.clipboard').removeClass('full');
20
+ <%- if @clipboard.blank? -%>
21
+ $('#clipboard_button .icon.clipboard').removeClass('full');
29
22
  <%- end -%>
30
23
 
31
24
  })(jQuery);
@@ -28,7 +28,7 @@
28
28
  Alchemy.SelectBox('#element_<%= @element.id -%> select');
29
29
 
30
30
  <%- @element.rtf_contents.each do |content| -%>
31
- TinymceHammer.addEditor('<%= content.form_field_id -%>');
31
+ Alchemy.Tinymce.addEditor('<%= content.form_field_id -%>');
32
32
  <%- end -%>
33
33
 
34
34
  Alchemy.ElementDirtyObserver('#element_<%= @element.id -%>');
@@ -26,7 +26,7 @@
26
26
  Alchemy.SortableElements(<%= @page.id %>, '<%= form_authenticity_token %>');
27
27
  Alchemy.ElementEditorSelector.init();
28
28
  Alchemy.SelectBox('.element_editor select');
29
- TinymceHammer.init();
29
+ Alchemy.Tinymce.init();
30
30
  Alchemy.ElementDirtyObserver('#element_area');
31
31
  jQuery('#cells').tabs();
32
32
  jQuery('#cells').tabs('paging', { follow: true, followOnSelect: true } );
@@ -0,0 +1,8 @@
1
+ (function($) {
2
+
3
+ $('#<%= content_dom_id(@content) %>').replaceWith('<%= escape_javascript(render(:partial => "essences/essence_file_editor.html.erb", :locals => {:content => @content, :options => @options})) %>');
4
+ Alchemy.closeCurrentWindow();
5
+ Alchemy.reloadPreview();
6
+ Alchemy.setElementDirty('#element_<%= @content.element.id %>');
7
+
8
+ })(jQuery);
@@ -0,0 +1,3 @@
1
+ Alchemy.closeCurrentWindow();
2
+ Alchemy.reloadPreview();
3
+ Alchemy.growl('<%= @notice %>');
@@ -61,32 +61,42 @@
61
61
  <div id="sideboard">
62
62
  <%= image_tag("alchemy/alchemy-logo.png") %>
63
63
  <p><%= _("Version") %>: <%= @alchemy_version %></p>
64
- <p><%= _('Alchemy is open software and itself uses open software and free resources:') %></p>
65
- <ul>
66
- <li>
67
- <a href="http://rubyonrails.org" target="_blank">RubyOnRails</a>
68
- </li>
69
- <li>
70
- <a href="http://jquery.com" target="_blank">jQuery Javascript Library</a>
71
- </li>
72
- <li>
73
- <a href="http://jqueryui.com" target="_blank">jQuery UI Javascript GUI Library</a>
74
- </li>
75
- <li>
76
- <a href="http://tinymce.moxiecode.com" target="_blank">TinyMCE - Javascript WYSIWYG Editor</a>
77
- </li>
78
- <li>
79
- <a href="http://swfupload.org" target="_blank">SWFUpload</a>
80
- </li>
81
- <li>
82
- <a href="http://p.yusukekamiyamane.com" target="_blank">Fugue Icons by Yusuke Kamiyamane</a>
83
- </li>
84
- </ul>
85
- <h2>
86
- <%= link_to_function(
87
- _('Read the License'),
88
- "Alchemy.openLicencseWindow()"
89
- ) %>
90
- </h2>
64
+ <div class="sideboard_body" style="display: none">
65
+ <p><%= _('Alchemy is open software and itself uses open software and free resources:') %></p>
66
+ <ul>
67
+ <li>
68
+ <a href="http://rubyonrails.org" target="_blank">RubyOnRails</a>
69
+ </li>
70
+ <li>
71
+ <a href="http://jquery.com" target="_blank">jQuery Javascript Library</a>
72
+ </li>
73
+ <li>
74
+ <a href="http://jqueryui.com" target="_blank">jQuery UI Javascript GUI Library</a>
75
+ </li>
76
+ <li>
77
+ <a href="http://tinymce.moxiecode.com" target="_blank">TinyMCE - Javascript WYSIWYG Editor</a>
78
+ </li>
79
+ <li>
80
+ <a href="http://swfupload.org" target="_blank">SWFUpload</a>
81
+ </li>
82
+ <li>
83
+ <a href="http://p.yusukekamiyamane.com" target="_blank">Fugue Icons by Yusuke Kamiyamane</a>
84
+ </li>
85
+ </ul>
86
+ </div>
91
87
  </div>
92
88
  </div>
89
+ <%= content_for :javascripts do %>
90
+ <script type="text/javascript" charset="utf-8">
91
+ (function($) {
92
+
93
+ $('#sideboard img:first-child').click(function(e) {
94
+ e.preventDefault();
95
+ $('#sideboard .sideboard_body').toggle();
96
+ }).bind('mouseover', function() {
97
+ $(this).css({cursor: 'pointer'});
98
+ });
99
+
100
+ })(jQuery);
101
+ </script>
102
+ <% end %>