alchemy_cms 2.1.beta1 → 2.1.beta5

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 (555) hide show
  1. data/.gitignore +2 -1
  2. data/.rspec +2 -2
  3. data/.travis.yml +2 -1
  4. data/Gemfile +8 -9
  5. data/README.md +10 -10
  6. data/Rakefile +0 -1
  7. data/alchemy_cms.gemspec +7 -9
  8. data/app/assets/images/alchemy/icons.png +0 -0
  9. data/app/assets/javascripts/alchemy/alchemy.base.js +8 -2
  10. data/app/assets/javascripts/alchemy/{alchemy.dragndrop.js → alchemy.dragndrop.js.erb} +3 -3
  11. data/app/assets/javascripts/alchemy/alchemy.element_editor_selector.js +1 -1
  12. data/app/assets/javascripts/alchemy/alchemy.growler.js +3 -3
  13. data/app/assets/javascripts/alchemy/alchemy.js +10 -15
  14. data/app/assets/javascripts/alchemy/alchemy.link_overlay.js +6 -2
  15. data/app/assets/javascripts/alchemy/alchemy.page_sorter.js +1 -1
  16. data/app/assets/javascripts/alchemy/alchemy.preview.js +1 -1
  17. data/app/assets/javascripts/alchemy/alchemy.routes.js.erb +38 -0
  18. data/app/assets/javascripts/alchemy/alchemy.swf_upload.js +360 -0
  19. data/app/assets/javascripts/alchemy/alchemy.windows.js +32 -17
  20. data/app/assets/javascripts/alchemy/preview.js +1 -0
  21. data/{vendor → app}/assets/javascripts/tiny_mce/plugins/alchemy_link/editor_plugin.js +0 -0
  22. data/{vendor → app}/assets/javascripts/tiny_mce/plugins/alchemy_link/langs/de.js +0 -0
  23. data/{vendor → app}/assets/javascripts/tiny_mce/plugins/alchemy_link/langs/en.js +0 -0
  24. data/{vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/alchemy/window.css.erb → app/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/alchemy/window.css.scss} +15 -33
  25. data/app/assets/stylesheets/alchemy/_defaults.scss +4 -16
  26. data/app/assets/stylesheets/alchemy/alchemy.css +2 -2
  27. data/app/assets/stylesheets/alchemy/base.css.scss +161 -205
  28. data/app/assets/stylesheets/alchemy/elements.css.scss +15 -8
  29. data/app/assets/stylesheets/alchemy/{jquery-ui.alchemy.css → jquery-ui.alchemy.css.scss} +41 -45
  30. data/app/assets/stylesheets/alchemy/jquery.sb.css.scss +14 -10
  31. data/app/assets/stylesheets/alchemy/{tinymce_content.css → tinymce_content.css.scss} +7 -6
  32. data/app/assets/stylesheets/alchemy/{tinymce_dialog.css → tinymce_dialog.css.scss} +7 -7
  33. data/app/controllers/alchemy/admin/attachments_controller.rb +131 -0
  34. data/app/controllers/alchemy/admin/base_controller.rb +118 -0
  35. data/app/controllers/alchemy/admin/clipboard_controller.rb +46 -0
  36. data/app/controllers/alchemy/admin/contents_controller.rb +55 -0
  37. data/app/controllers/alchemy/admin/dashboard_controller.rb +15 -0
  38. data/app/controllers/alchemy/admin/elements_controller.rb +123 -0
  39. data/app/controllers/alchemy/admin/essence_audios_controller.rb +12 -0
  40. data/app/controllers/alchemy/admin/essence_files_controller.rb +27 -0
  41. data/app/controllers/alchemy/admin/essence_flashes_controller.rb +12 -0
  42. data/app/controllers/alchemy/admin/essence_pictures_controller.rb +91 -0
  43. data/app/controllers/alchemy/admin/essence_videos_controller.rb +12 -0
  44. data/app/controllers/alchemy/admin/languages_controller.rb +7 -0
  45. data/app/controllers/alchemy/admin/layoutpages_controller.rb +13 -0
  46. data/app/controllers/alchemy/admin/pages_controller.rb +253 -0
  47. data/app/controllers/alchemy/admin/pictures_controller.rb +139 -0
  48. data/app/controllers/alchemy/admin/resources_controller.rb +132 -0
  49. data/app/controllers/alchemy/admin/trash_controller.rb +24 -0
  50. data/app/controllers/alchemy/admin/users_controller.rb +81 -0
  51. data/app/controllers/alchemy/attachments_controller.rb +30 -0
  52. data/app/controllers/alchemy/base_controller.rb +137 -0
  53. data/app/controllers/alchemy/elements_controller.rb +18 -0
  54. data/app/controllers/alchemy/messages_controller.rb +115 -0
  55. data/app/controllers/alchemy/pages_controller.rb +169 -0
  56. data/app/controllers/alchemy/pictures_controller.rb +62 -0
  57. data/app/controllers/alchemy/user_sessions_controller.rb +80 -0
  58. data/app/helpers/alchemy/admin/attachments_helper.rb +11 -0
  59. data/app/helpers/alchemy/admin/base_helper.rb +423 -0
  60. data/app/helpers/alchemy/admin/contents_helper.rb +75 -0
  61. data/app/helpers/alchemy/admin/elements_helper.rb +118 -0
  62. data/app/helpers/alchemy/admin/essences_helper.rb +78 -0
  63. data/app/helpers/alchemy/admin/pages_helper.rb +46 -0
  64. data/app/helpers/alchemy/admin/pictures_helper.rb +30 -0
  65. data/app/helpers/alchemy/base_helper.rb +65 -0
  66. data/app/helpers/alchemy/elements_helper.rb +173 -0
  67. data/app/helpers/alchemy/essences_helper.rb +101 -0
  68. data/app/helpers/alchemy/pages_helper.rb +550 -0
  69. data/app/mailers/alchemy/messages.rb +17 -0
  70. data/app/mailers/alchemy/notifications.rb +25 -0
  71. data/app/models/alchemy.rb +7 -0
  72. data/app/models/alchemy/attachment.rb +82 -0
  73. data/app/models/alchemy/cell.rb +61 -0
  74. data/app/models/alchemy/content.rb +163 -0
  75. data/app/models/alchemy/element.rb +479 -0
  76. data/app/models/alchemy/essence_audio.rb +19 -0
  77. data/app/models/alchemy/essence_date.rb +22 -0
  78. data/app/models/alchemy/essence_file.rb +19 -0
  79. data/app/models/alchemy/essence_flash.rb +17 -0
  80. data/app/models/alchemy/essence_html.rb +21 -0
  81. data/app/models/alchemy/essence_picture.rb +29 -0
  82. data/app/models/alchemy/essence_richtext.rb +63 -0
  83. data/app/models/alchemy/essence_text.rb +40 -0
  84. data/app/models/alchemy/essence_video.rb +19 -0
  85. data/app/models/alchemy/folded_page.rb +5 -0
  86. data/app/models/alchemy/language.rb +90 -0
  87. data/app/models/alchemy/message.rb +71 -0
  88. data/app/models/alchemy/page.rb +548 -0
  89. data/app/models/alchemy/picture.rb +100 -0
  90. data/app/models/alchemy/user.rb +72 -0
  91. data/app/models/alchemy/user_session.rb +12 -0
  92. data/app/sweepers/alchemy/content_sweeper.rb +22 -0
  93. data/app/sweepers/alchemy/pages_sweeper.rb +49 -0
  94. data/app/sweepers/alchemy/pictures_sweeper.rb +23 -0
  95. data/app/views/{admin → alchemy/admin}/attachments/_archive_overlay.html.erb +6 -6
  96. data/app/views/{admin → alchemy/admin}/attachments/_attachment.html.erb +14 -14
  97. data/app/views/{admin → alchemy/admin}/attachments/_file_to_assign.html.erb +0 -0
  98. data/app/views/alchemy/admin/attachments/_files_list.html.erb +25 -0
  99. data/app/views/{admin → alchemy/admin}/attachments/create.js.erb +0 -0
  100. data/app/views/{admin → alchemy/admin}/attachments/destroy.js.erb +0 -0
  101. data/app/views/{admin → alchemy/admin}/attachments/edit.html.erb +2 -2
  102. data/app/views/alchemy/admin/attachments/index.html.erb +18 -0
  103. data/app/views/{admin → alchemy/admin}/attachments/new.html.erb +3 -3
  104. data/app/views/{admin → alchemy/admin}/clipboard/clear.js.erb +1 -1
  105. data/app/views/alchemy/admin/clipboard/index.html.erb +19 -0
  106. data/app/views/alchemy/admin/clipboard/insert.js.erb +14 -0
  107. data/app/views/alchemy/admin/clipboard/remove.js.erb +10 -0
  108. data/app/views/{admin → alchemy/admin}/contents/_missing.html.erb +4 -4
  109. data/app/views/{admin → alchemy/admin}/contents/create.js.erb +10 -10
  110. data/app/views/{admin → alchemy/admin}/contents/destroy.js.erb +0 -0
  111. data/app/views/{admin → alchemy/admin}/contents/new.html.erb +1 -1
  112. data/app/views/{admin → alchemy/admin}/contents/order.js.erb +0 -0
  113. data/app/views/alchemy/admin/dashboard/index.html.erb +96 -0
  114. data/app/views/{admin → alchemy/admin}/elements/_add_content.html.erb +2 -2
  115. data/app/views/{admin → alchemy/admin}/elements/_element.html.erb +3 -3
  116. data/app/views/{admin → alchemy/admin}/elements/_element_foot.html.erb +8 -8
  117. data/app/views/{admin → alchemy/admin}/elements/_element_head.html.erb +4 -4
  118. data/app/views/{admin → alchemy/admin}/elements/_elements_select.html.erb +2 -2
  119. data/app/views/alchemy/admin/elements/_new_element_form.html.erb +30 -0
  120. data/app/views/{admin → alchemy/admin}/elements/_picture_editor.html.erb +3 -3
  121. data/app/views/{admin → alchemy/admin}/elements/create.js.erb +2 -2
  122. data/app/views/{admin → alchemy/admin}/elements/destroy.js.erb +1 -1
  123. data/app/views/{admin → alchemy/admin}/elements/fold.js.erb +2 -2
  124. data/app/views/{admin → alchemy/admin}/elements/index.html.erb +1 -10
  125. data/app/views/{admin → alchemy/admin}/elements/list.js.erb +2 -2
  126. data/app/views/alchemy/admin/elements/new.html.erb +41 -0
  127. data/app/views/{admin → alchemy/admin}/elements/order.js.erb +1 -1
  128. data/app/views/{admin → alchemy/admin}/elements/trash.js.erb +1 -1
  129. data/app/views/{admin → alchemy/admin}/elements/update.js.erb +1 -1
  130. data/app/views/{admin → alchemy/admin}/essence_files/assign.js.erb +1 -1
  131. data/app/views/{admin → alchemy/admin}/essence_files/edit.html.erb +23 -23
  132. data/app/views/{admin → alchemy/admin}/essence_pictures/assign.js.erb +2 -2
  133. data/app/views/{admin → alchemy/admin}/essence_pictures/crop.html.erb +15 -6
  134. data/app/views/{admin → alchemy/admin}/essence_pictures/destroy.js.erb +1 -1
  135. data/app/views/{admin → alchemy/admin}/essence_pictures/edit.html.erb +11 -11
  136. data/app/views/{admin → alchemy/admin}/essence_pictures/save_link.js.erb +0 -0
  137. data/app/views/{admin → alchemy/admin}/essence_pictures/update.js.erb +2 -2
  138. data/app/views/alchemy/admin/languages/_language.html.erb +36 -0
  139. data/app/views/{admin → alchemy/admin}/layoutpages/_layoutpage.html.erb +18 -18
  140. data/app/views/alchemy/admin/layoutpages/index.html.erb +65 -0
  141. data/app/views/{admin → alchemy/admin}/pages/_contactform_links.html.erb +6 -6
  142. data/app/views/alchemy/admin/pages/_create_language_form.html.erb +38 -0
  143. data/app/views/{admin → alchemy/admin}/pages/_external_link.html.erb +9 -9
  144. data/app/views/{admin → alchemy/admin}/pages/_file_link.html.erb +13 -13
  145. data/app/views/{admin → alchemy/admin}/pages/_internal_link.html.erb +8 -8
  146. data/app/views/{admin → alchemy/admin}/pages/_new_page_form.html.erb +6 -6
  147. data/app/views/{admin → alchemy/admin}/pages/_page.html.erb +25 -25
  148. data/app/views/{admin → alchemy/admin}/pages/_page_for_links.html.erb +6 -6
  149. data/app/views/{admin → alchemy/admin}/pages/_page_infos.html.erb +3 -3
  150. data/app/views/{admin → alchemy/admin}/pages/_page_status.html.erb +4 -4
  151. data/app/views/{admin → alchemy/admin}/pages/_sitemap.html.erb +21 -21
  152. data/app/views/alchemy/admin/pages/configure.html.erb +71 -0
  153. data/app/views/{admin → alchemy/admin}/pages/configure_external.html.erb +9 -9
  154. data/app/views/{admin → alchemy/admin}/pages/destroy.js.erb +2 -2
  155. data/app/views/alchemy/admin/pages/edit.html.erb +181 -0
  156. data/app/views/alchemy/admin/pages/flush.js.erb +2 -0
  157. data/app/views/{admin → alchemy/admin}/pages/fold.js.erb +0 -0
  158. data/app/views/alchemy/admin/pages/index.html.erb +104 -0
  159. data/app/views/{admin → alchemy/admin}/pages/link.html.erb +4 -4
  160. data/app/views/alchemy/admin/pages/locked.html.erb +3 -0
  161. data/app/views/{admin → alchemy/admin}/pages/new.html.erb +8 -8
  162. data/app/views/{admin → alchemy/admin}/pages/show.html.erb +0 -0
  163. data/app/views/{admin → alchemy/admin}/pages/sort.js.erb +0 -0
  164. data/app/views/{admin → alchemy/admin}/pages/unlock.js.erb +1 -1
  165. data/app/views/{admin → alchemy/admin}/pages/update.js.erb +5 -5
  166. data/app/views/{admin → alchemy/admin}/partials/_flash.html.erb +0 -0
  167. data/app/views/{admin → alchemy/admin}/partials/_flash_notices.html.erb +1 -1
  168. data/app/views/alchemy/admin/partials/_main_navigation_entry.html.erb +14 -0
  169. data/app/views/alchemy/admin/partials/_pagination_links.html.erb +5 -0
  170. data/app/views/{admin → alchemy/admin}/partials/_remote_pagination_links.html.erb +2 -2
  171. data/app/views/{admin → alchemy/admin}/partials/_remote_search_form.html.erb +2 -2
  172. data/app/views/{admin → alchemy/admin}/partials/_search_form.html.erb +6 -7
  173. data/app/views/alchemy/admin/partials/_sub_navigation_tab.html.erb +8 -0
  174. data/app/views/alchemy/admin/partials/_upload_form.html.erb +129 -0
  175. data/app/views/{admin → alchemy/admin}/pictures/_archive_overlay.html.erb +3 -3
  176. data/app/views/{admin → alchemy/admin}/pictures/_filter_and_size_bar.html.erb +15 -15
  177. data/app/views/{admin → alchemy/admin}/pictures/_picture.html.erb +7 -7
  178. data/app/views/{admin → alchemy/admin}/pictures/_picture_to_assign.html.erb +2 -2
  179. data/app/views/alchemy/admin/pictures/_pictures_list.html.erb +14 -0
  180. data/app/views/{admin → alchemy/admin}/pictures/archive_overlay.js.erb +0 -0
  181. data/app/views/{admin → alchemy/admin}/pictures/create.js.erb +3 -3
  182. data/app/views/{admin → alchemy/admin}/pictures/flush.js.erb +0 -0
  183. data/app/views/alchemy/admin/pictures/index.html.erb +83 -0
  184. data/app/views/{admin → alchemy/admin}/pictures/new.html.erb +3 -3
  185. data/app/views/alchemy/admin/pictures/show_in_window.html.erb +1 -0
  186. data/app/views/{admin → alchemy/admin}/pictures/update.js.erb +0 -0
  187. data/app/views/alchemy/admin/resources/_form.html.erb +20 -0
  188. data/app/views/alchemy/admin/resources/_resource.html.erb +35 -0
  189. data/app/views/alchemy/admin/resources/_table.html.erb +23 -0
  190. data/app/views/alchemy/admin/resources/destroy.js.erb +1 -0
  191. data/app/views/{admin/languages → alchemy/admin/resources}/edit.html.erb +0 -0
  192. data/app/views/alchemy/admin/resources/index.html.erb +19 -0
  193. data/app/views/{admin/languages → alchemy/admin/resources}/new.html.erb +0 -0
  194. data/app/views/{admin → alchemy/admin}/trash/clear.js.erb +1 -1
  195. data/app/views/{admin → alchemy/admin}/trash/index.html.erb +4 -4
  196. data/app/views/alchemy/admin/users/_table.html.erb +54 -0
  197. data/app/views/{admin → alchemy/admin}/users/_user.html.erb +14 -12
  198. data/app/views/{admin → alchemy/admin}/users/edit.html.erb +0 -0
  199. data/app/views/alchemy/admin/users/index.html.erb +41 -0
  200. data/app/views/{admin → alchemy/admin}/users/new.html.erb +1 -1
  201. data/app/views/{attachments → alchemy/attachments}/show.html.erb +0 -0
  202. data/app/views/alchemy/base/500.html.erb +5 -0
  203. data/app/views/alchemy/base/error_notice.js.erb +2 -0
  204. data/app/views/alchemy/base/permission_denied.js.erb +2 -0
  205. data/app/views/alchemy/{redirect.js.erb → base/redirect.js.erb} +0 -0
  206. data/app/views/alchemy/{remote_errors.js.erb → base/remote_errors.js.erb} +0 -0
  207. data/app/views/alchemy/{update.js.erb → base/update.js.erb} +0 -0
  208. data/app/views/{elements → alchemy/elements}/_article_editor.html.erb +0 -0
  209. data/app/views/{elements → alchemy/elements}/_article_view.html.erb +1 -1
  210. data/app/views/{elements → alchemy/elements}/_bild_editor.html.erb +0 -0
  211. data/app/views/{elements → alchemy/elements}/_bild_text_editor.html.erb +0 -0
  212. data/app/views/{elements → alchemy/elements}/_bild_text_view.html.erb +1 -1
  213. data/app/views/{elements → alchemy/elements}/_bild_view.html.erb +1 -1
  214. data/app/views/{elements → alchemy/elements}/_claim_editor.html.erb +0 -0
  215. data/app/views/{elements → alchemy/elements}/_claim_view.html.erb +0 -0
  216. data/app/views/{elements → alchemy/elements}/_contactform_editor.html.erb +0 -0
  217. data/app/views/{elements → alchemy/elements}/_contactform_view.html.erb +0 -0
  218. data/app/views/{elements → alchemy/elements}/_editor_not_found.html.erb +1 -1
  219. data/app/views/{elements → alchemy/elements}/_footnote_editor.html.erb +0 -0
  220. data/app/views/{elements → alchemy/elements}/_footnote_view.html.erb +0 -0
  221. data/app/views/{elements → alchemy/elements}/_header_editor.html.erb +0 -0
  222. data/app/views/{elements → alchemy/elements}/_header_view.html.erb +1 -1
  223. data/app/views/{elements → alchemy/elements}/_headline_editor.html.erb +0 -0
  224. data/app/views/{elements → alchemy/elements}/_headline_view.html.erb +0 -0
  225. data/app/views/{elements → alchemy/elements}/_image_mosaic_editor.html.erb +0 -0
  226. data/app/views/{elements → alchemy/elements}/_image_mosaic_view.html.erb +1 -1
  227. data/app/views/{elements → alchemy/elements}/_intro_editor.html.erb +0 -0
  228. data/app/views/{elements → alchemy/elements}/_intro_image_text_editor.html.erb +0 -0
  229. data/app/views/{elements → alchemy/elements}/_intro_image_text_view.html.erb +1 -1
  230. data/app/views/{elements → alchemy/elements}/_intro_view.html.erb +0 -0
  231. data/app/views/{elements → alchemy/elements}/_news_editor.html.erb +0 -0
  232. data/app/views/{elements → alchemy/elements}/_news_view.html.erb +0 -0
  233. data/app/views/alchemy/elements/_searchresult_editor.html.erb +1 -0
  234. data/app/views/alchemy/elements/_searchresult_view.html.erb +4 -0
  235. data/app/views/alchemy/elements/_sitemap_editor.html.erb +3 -0
  236. data/app/views/{elements → alchemy/elements}/_sitemap_view.html.erb +2 -2
  237. data/app/views/{elements → alchemy/elements}/_sitename_editor.html.erb +0 -0
  238. data/app/views/{elements → alchemy/elements}/_sitename_view.html.erb +0 -0
  239. data/app/views/{elements → alchemy/elements}/_subheadline_editor.html.erb +0 -0
  240. data/app/views/{elements → alchemy/elements}/_subheadline_view.html.erb +0 -0
  241. data/app/views/{elements → alchemy/elements}/_text_editor.html.erb +0 -0
  242. data/app/views/{elements → alchemy/elements}/_text_view.html.erb +0 -0
  243. data/app/views/{elements → alchemy/elements}/_view_not_found.html.erb +0 -0
  244. data/app/views/alchemy/elements/show.html.erb +6 -0
  245. data/app/views/{elements → alchemy/elements}/show.js.erb +1 -1
  246. data/app/views/alchemy/essences/_essence_audio_editor.html.erb +1 -0
  247. data/app/views/{essences → alchemy/essences}/_essence_audio_view.html.erb +0 -0
  248. data/app/views/{essences → alchemy/essences}/_essence_date_editor.html.erb +0 -0
  249. data/app/views/{essences → alchemy/essences}/_essence_date_view.html.erb +0 -0
  250. data/app/views/{essences → alchemy/essences}/_essence_file_editor.html.erb +9 -9
  251. data/app/views/{essences → alchemy/essences}/_essence_file_view.html.erb +1 -1
  252. data/app/views/alchemy/essences/_essence_flash_editor.html.erb +1 -0
  253. data/app/views/{essences → alchemy/essences}/_essence_flash_view.html.erb +0 -0
  254. data/app/views/{essences → alchemy/essences}/_essence_html_editor.html.erb +0 -0
  255. data/app/views/{essences → alchemy/essences}/_essence_html_view.html.erb +0 -0
  256. data/app/views/{essences → alchemy/essences}/_essence_picture_editor.html.erb +8 -8
  257. data/app/views/{essences → alchemy/essences}/_essence_picture_tools.html.erb +11 -11
  258. data/app/views/{essences → alchemy/essences}/_essence_picture_view.html.erb +2 -4
  259. data/app/views/alchemy/essences/_essence_richtext_editor.html.erb +11 -0
  260. data/app/views/{essences → alchemy/essences}/_essence_richtext_view.html.erb +0 -0
  261. data/app/views/{essences → alchemy/essences}/_essence_text_editor.html.erb +6 -6
  262. data/app/views/{essences → alchemy/essences}/_essence_text_view.html.erb +0 -0
  263. data/app/views/alchemy/essences/_essence_video_editor.html.erb +1 -0
  264. data/app/views/{essences → alchemy/essences}/_essence_video_view.html.erb +1 -1
  265. data/app/views/{messages → alchemy/messages}/contact_form_mail.html.erb +0 -0
  266. data/app/views/{messages → alchemy/messages}/contact_form_mail.text.erb +0 -0
  267. data/app/views/{messages → alchemy/messages}/new.html.erb +0 -0
  268. data/app/views/{navigation → alchemy/navigation}/_image_link.html.erb +0 -0
  269. data/app/views/{navigation → alchemy/navigation}/_link.html.erb +1 -1
  270. data/app/views/{navigation → alchemy/navigation}/_renderer.html.erb +0 -0
  271. data/app/views/alchemy/notifications/admin_user_created.text.erb +13 -0
  272. data/app/views/alchemy/notifications/registered_user_created.text.erb +10 -0
  273. data/app/views/{page_layouts → alchemy/page_layouts}/_contact.html.erb +0 -0
  274. data/app/views/{page_layouts → alchemy/page_layouts}/_external.html.erb +0 -0
  275. data/app/views/{page_layouts → alchemy/page_layouts}/_intro.html.erb +0 -0
  276. data/app/views/{page_layouts → alchemy/page_layouts}/_layout_footer.html.erb +0 -0
  277. data/app/views/{page_layouts → alchemy/page_layouts}/_layout_header.html.erb +0 -0
  278. data/app/views/{page_layouts → alchemy/page_layouts}/_news.html.erb +0 -0
  279. data/app/views/{_newsletter_layout.html.erb → alchemy/page_layouts/_newsletter_layout.html.erb} +0 -0
  280. data/app/views/{page_layouts → alchemy/page_layouts}/_search.html.erb +0 -0
  281. data/app/views/{page_layouts → alchemy/page_layouts}/_standard.html.erb +0 -0
  282. data/app/views/{pages → alchemy/pages}/show.html.erb +0 -0
  283. data/app/views/{pages → alchemy/pages}/show.rss.builder +0 -0
  284. data/app/views/{pages → alchemy/pages}/sitemap.xml.erb +0 -0
  285. data/app/views/{pictures → alchemy/pictures}/show.gif.flexi +0 -0
  286. data/app/views/{pictures → alchemy/pictures}/show.jpg.flexi +0 -0
  287. data/app/views/{pictures → alchemy/pictures}/show.png.flexi +0 -0
  288. data/app/views/{pictures → alchemy/pictures}/thumbnail.png.flexi +0 -0
  289. data/app/views/{pictures → alchemy/pictures}/zoom.png.flexi +0 -0
  290. data/app/views/alchemy/search/_result.html.erb +9 -0
  291. data/app/views/alchemy/user_sessions/leave.html.erb +11 -0
  292. data/app/views/alchemy/user_sessions/login.html.erb +47 -0
  293. data/app/views/alchemy/user_sessions/logout.html.erb +3 -0
  294. data/app/views/alchemy/user_sessions/signup.html.erb +14 -0
  295. data/app/views/layouts/{alchemy.html.erb → alchemy/admin.html.erb} +23 -17
  296. data/app/views/layouts/alchemy/login.html.erb +37 -0
  297. data/app/views/layouts/alchemy/pages.html.erb +29 -0
  298. data/app/views/layouts/{sitemap.xml.erb → alchemy/sitemap.xml.erb} +0 -0
  299. data/config/alchemy/config.yml +2 -80
  300. data/config/alchemy/modules.yml +70 -0
  301. data/config/alchemy/page_layouts.yml +2 -0
  302. data/config/authorization_rules.rb +32 -39
  303. data/config/locales/alchemy.de.yml +789 -0
  304. data/config/locales/alchemy.en.yml +587 -0
  305. data/config/routes.rb +144 -142
  306. data/db/migrate/20111116125112_namespace_models.rb +23 -0
  307. data/lib/alchemy/auth_engine.rb +7 -0
  308. data/lib/alchemy/capistrano.rb +4 -1
  309. data/lib/alchemy/engine.rb +39 -25
  310. data/lib/alchemy/essence.rb +5 -1
  311. data/lib/alchemy/i18n.rb +47 -0
  312. data/lib/alchemy/modules.rb +38 -0
  313. data/lib/alchemy/page_layout.rb +98 -56
  314. data/lib/alchemy/seeder.rb +60 -110
  315. data/lib/alchemy/tinymce.rb +2 -2
  316. data/lib/alchemy/version.rb +3 -3
  317. data/lib/alchemy_cms.rb +23 -23
  318. data/lib/rails/generators/alchemy/elements/elements_generator.rb +1 -1
  319. data/lib/rails/generators/alchemy/elements/templates/editor.html.erb +1 -1
  320. data/lib/rails/generators/alchemy/elements/templates/view.html.erb +2 -2
  321. data/lib/rails/generators/alchemy/page_layouts/page_layouts_generator.rb +1 -1
  322. data/lib/rails/generators/alchemy/plugin/plugin_generator.rb +0 -1
  323. data/lib/rails/generators/alchemy/scaffold/files/pages.html.erb +1 -1
  324. data/lib/rails/generators/alchemy/scaffold/scaffold_generator.rb +34 -34
  325. data/lib/tasks/install.rake +2 -9
  326. data/lib/tasks/upgrade.rake +69 -208
  327. data/spec/controllers/admin/clipboard_controller_spec.rb +33 -35
  328. data/spec/controllers/admin/contents_controller_spec.rb +5 -5
  329. data/spec/controllers/admin/elements_controller_spec.rb +22 -0
  330. data/spec/controllers/admin/trash_controller_spec.rb +5 -5
  331. data/spec/controllers/base_controller_spec.rb +67 -0
  332. data/spec/controllers/pages_controller_spec.rb +6 -6
  333. data/spec/dummy/config/application.rb +1 -8
  334. data/spec/dummy/config/routes.rb +2 -57
  335. data/spec/dummy/db/schema.rb +27 -27
  336. data/spec/factories.rb +8 -8
  337. data/spec/helpers/{alchemy_helper_spec.rb → admin/base_helper_spec.rb} +8 -1
  338. data/spec/helpers/admin/contents_helper_spec.rb +25 -0
  339. data/spec/helpers/admin/elements_helper_spec.rb +31 -3
  340. data/spec/helpers/admin/essences_helper_spec.rb +27 -0
  341. data/spec/helpers/elements_helper_spec.rb +99 -21
  342. data/spec/helpers/essences_helper_spec.rb +1 -18
  343. data/spec/helpers/pages_helper_spec.rb +212 -26
  344. data/spec/integration/admin/pages_controller_spec.rb +56 -0
  345. data/spec/integration/navigation_spec.rb +1 -1
  346. data/spec/integration/pages_controller_spec.rb +85 -68
  347. data/spec/integration/security_spec.rb +49 -22
  348. data/spec/models/content_spec.rb +3 -3
  349. data/spec/models/element_spec.rb +19 -11
  350. data/spec/models/essence_richtext_spec.rb +2 -2
  351. data/spec/models/language_spec.rb +36 -7
  352. data/spec/models/page_spec.rb +57 -13
  353. data/spec/models/user_spec.rb +1 -1
  354. data/spec/page_layout_spec.rb +13 -3
  355. data/spec/routing_spec.rb +12 -8
  356. data/spec/spec_helper.rb +8 -9
  357. data/spec/support/controller_hacks.rb +37 -0
  358. data/vendor/assets/javascripts/swfupload/SWFObject License.txt +4 -0
  359. data/vendor/assets/javascripts/swfupload/swfupload.cookies.js +53 -0
  360. data/vendor/assets/javascripts/swfupload/swfupload.js +1 -1
  361. data/vendor/assets/javascripts/swfupload/{queue.js → swfupload.queue.js} +97 -97
  362. data/vendor/assets/javascripts/swfupload/swfupload.speed.js +342 -0
  363. data/vendor/assets/javascripts/swfupload/swfupload.swfobject.js +111 -0
  364. data/vendor/assets/javascripts/tiny_mce/license.txt +504 -504
  365. data/vendor/assets/javascripts/tiny_mce/plugins/autoresize/editor_plugin.js +1 -1
  366. data/vendor/assets/javascripts/tiny_mce/plugins/fullscreen/fullscreen.htm +110 -110
  367. data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif +0 -0
  368. data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif +0 -0
  369. data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif +0 -0
  370. data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif +0 -0
  371. data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif +0 -0
  372. data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif +0 -0
  373. data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif +0 -0
  374. data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css +90 -0
  375. data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/template.htm +387 -387
  376. data/vendor/assets/javascripts/tiny_mce/plugins/paste/js/pastetext.js +36 -36
  377. data/vendor/assets/javascripts/tiny_mce/plugins/paste/js/pasteword.js +51 -51
  378. data/vendor/assets/javascripts/tiny_mce/plugins/paste/pastetext.htm +26 -26
  379. data/vendor/assets/javascripts/tiny_mce/plugins/paste/pasteword.htm +21 -21
  380. data/vendor/assets/javascripts/tiny_mce/plugins/table/cell.htm +180 -180
  381. data/vendor/assets/javascripts/tiny_mce/plugins/table/css/cell.css +16 -16
  382. data/vendor/assets/javascripts/tiny_mce/plugins/table/css/row.css +25 -25
  383. data/vendor/assets/javascripts/tiny_mce/plugins/table/css/table.css +13 -13
  384. data/vendor/assets/javascripts/tiny_mce/plugins/table/editor_plugin.js +1 -1
  385. data/vendor/assets/javascripts/tiny_mce/plugins/table/js/cell.js +319 -319
  386. data/vendor/assets/javascripts/tiny_mce/plugins/table/js/merge_cells.js +27 -27
  387. data/vendor/assets/javascripts/tiny_mce/plugins/table/js/row.js +237 -237
  388. data/vendor/assets/javascripts/tiny_mce/plugins/table/js/table.js +484 -450
  389. data/vendor/assets/javascripts/tiny_mce/plugins/table/merge_cells.htm +32 -32
  390. data/vendor/assets/javascripts/tiny_mce/plugins/table/row.htm +158 -158
  391. data/vendor/assets/javascripts/tiny_mce/plugins/table/table.htm +188 -188
  392. data/vendor/assets/javascripts/tiny_mce/themes/advanced/about.htm +52 -52
  393. data/vendor/assets/javascripts/tiny_mce/themes/advanced/anchor.htm +26 -26
  394. data/vendor/assets/javascripts/tiny_mce/themes/advanced/charmap.htm +55 -51
  395. data/vendor/assets/javascripts/tiny_mce/themes/advanced/color_picker.htm +74 -74
  396. data/vendor/assets/javascripts/tiny_mce/themes/advanced/editor_template.js +1 -1
  397. data/vendor/assets/javascripts/tiny_mce/themes/advanced/image.htm +80 -80
  398. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/about.js +73 -73
  399. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/anchor.js +43 -43
  400. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/charmap.js +363 -355
  401. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/color_picker.js +329 -329
  402. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/image.js +251 -251
  403. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/link.js +153 -153
  404. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/source_editor.js +56 -56
  405. data/vendor/assets/javascripts/tiny_mce/themes/advanced/langs/en_dlg.js +1 -1
  406. data/vendor/assets/javascripts/tiny_mce/themes/advanced/link.htm +57 -57
  407. data/vendor/assets/javascripts/tiny_mce/themes/advanced/shortcuts.htm +47 -47
  408. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/content.css +50 -50
  409. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/dialog.css +117 -117
  410. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/ui.css +214 -214
  411. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/highcontrast/content.css +24 -0
  412. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/highcontrast/dialog.css +105 -0
  413. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/highcontrast/ui.css +102 -0
  414. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/content.css +48 -48
  415. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css +117 -117
  416. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui.css +217 -217
  417. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css +7 -7
  418. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css +5 -5
  419. data/vendor/assets/javascripts/tiny_mce/themes/advanced/source_editor.htm +25 -25
  420. data/vendor/assets/javascripts/tiny_mce/tiny_mce.js +1 -1
  421. data/vendor/assets/javascripts/tiny_mce/utils/editable_selects.js +70 -70
  422. data/vendor/assets/javascripts/tiny_mce/utils/form_utils.js +210 -210
  423. data/vendor/assets/javascripts/tiny_mce/utils/mctabs.js +161 -161
  424. data/vendor/assets/javascripts/tiny_mce/utils/validate.js +252 -252
  425. metadata +432 -465
  426. data/app/controllers/admin/attachments_controller.rb +0 -136
  427. data/app/controllers/admin/clipboard_controller.rb +0 -43
  428. data/app/controllers/admin/contents_controller.rb +0 -60
  429. data/app/controllers/admin/elements_controller.rb +0 -134
  430. data/app/controllers/admin/essence_audios_controller.rb +0 -10
  431. data/app/controllers/admin/essence_files_controller.rb +0 -25
  432. data/app/controllers/admin/essence_flashes_controller.rb +0 -10
  433. data/app/controllers/admin/essence_pictures_controller.rb +0 -84
  434. data/app/controllers/admin/essence_videos_controller.rb +0 -10
  435. data/app/controllers/admin/languages_controller.rb +0 -64
  436. data/app/controllers/admin/layoutpages_controller.rb +0 -12
  437. data/app/controllers/admin/pages_controller.rb +0 -251
  438. data/app/controllers/admin/pictures_controller.rb +0 -143
  439. data/app/controllers/admin/trash_controller.rb +0 -28
  440. data/app/controllers/admin/users_controller.rb +0 -73
  441. data/app/controllers/admin_controller.rb +0 -76
  442. data/app/controllers/alchemy_controller.rb +0 -245
  443. data/app/controllers/attachments_controller.rb +0 -28
  444. data/app/controllers/elements_controller.rb +0 -16
  445. data/app/controllers/messages_controller.rb +0 -113
  446. data/app/controllers/pages_controller.rb +0 -150
  447. data/app/controllers/pictures_controller.rb +0 -63
  448. data/app/helpers/admin/attachments_helper.rb +0 -7
  449. data/app/helpers/admin/elements_helper.rb +0 -112
  450. data/app/helpers/admin/pages_helper.rb +0 -38
  451. data/app/helpers/admin/pictures_helper.rb +0 -26
  452. data/app/helpers/alchemy_helper.rb +0 -379
  453. data/app/helpers/contents_helper.rb +0 -69
  454. data/app/helpers/elements_helper.rb +0 -170
  455. data/app/helpers/essences_helper.rb +0 -167
  456. data/app/helpers/layout_helper.rb +0 -37
  457. data/app/helpers/pages_helper.rb +0 -503
  458. data/app/mailers/messages.rb +0 -15
  459. data/app/mailers/notifications.rb +0 -23
  460. data/app/models/attachment.rb +0 -80
  461. data/app/models/cell.rb +0 -59
  462. data/app/models/content.rb +0 -145
  463. data/app/models/element.rb +0 -476
  464. data/app/models/essence_audio.rb +0 -17
  465. data/app/models/essence_date.rb +0 -20
  466. data/app/models/essence_file.rb +0 -17
  467. data/app/models/essence_flash.rb +0 -15
  468. data/app/models/essence_html.rb +0 -19
  469. data/app/models/essence_picture.rb +0 -27
  470. data/app/models/essence_richtext.rb +0 -61
  471. data/app/models/essence_text.rb +0 -38
  472. data/app/models/essence_video.rb +0 -17
  473. data/app/models/folded_page.rb +0 -3
  474. data/app/models/language.rb +0 -83
  475. data/app/models/message.rb +0 -69
  476. data/app/models/page.rb +0 -545
  477. data/app/models/picture.rb +0 -98
  478. data/app/models/user.rb +0 -70
  479. data/app/models/user_session.rb +0 -10
  480. data/app/sweepers/content_sweeper.rb +0 -20
  481. data/app/sweepers/pages_sweeper.rb +0 -47
  482. data/app/sweepers/pictures_sweeper.rb +0 -21
  483. data/app/views/_contact.html.erb +0 -3
  484. data/app/views/_intro.html.erb +0 -3
  485. data/app/views/_news.html.erb +0 -3
  486. data/app/views/_search.html.erb +0 -3
  487. data/app/views/_standard.html.erb +0 -1
  488. data/app/views/admin/attachments/_files_list.html.erb +0 -24
  489. data/app/views/admin/attachments/index.html.erb +0 -30
  490. data/app/views/admin/clipboard/index.html.erb +0 -19
  491. data/app/views/admin/clipboard/insert.js.erb +0 -14
  492. data/app/views/admin/clipboard/remove.js.erb +0 -10
  493. data/app/views/admin/elements/_new_element_form.html.erb +0 -25
  494. data/app/views/admin/elements/new.html.erb +0 -33
  495. data/app/views/admin/index.html.erb +0 -102
  496. data/app/views/admin/infos.html.erb +0 -5
  497. data/app/views/admin/languages/_form.html.erb +0 -34
  498. data/app/views/admin/languages/_language.html.erb +0 -35
  499. data/app/views/admin/languages/destroy.js.erb +0 -1
  500. data/app/views/admin/languages/index.html.erb +0 -41
  501. data/app/views/admin/layoutpages/index.html.erb +0 -75
  502. data/app/views/admin/leave.html.erb +0 -11
  503. data/app/views/admin/login.html.erb +0 -46
  504. data/app/views/admin/logout.html.erb +0 -5
  505. data/app/views/admin/pages/_create_language_form.html.erb +0 -43
  506. data/app/views/admin/pages/configure.html.erb +0 -71
  507. data/app/views/admin/pages/edit.html.erb +0 -185
  508. data/app/views/admin/pages/flush.js.erb +0 -2
  509. data/app/views/admin/pages/index.html.erb +0 -108
  510. data/app/views/admin/pages/locked.html.erb +0 -3
  511. data/app/views/admin/partials/_mainnavigation_entry.html.erb +0 -27
  512. data/app/views/admin/partials/_pagination_links.html.erb +0 -5
  513. data/app/views/admin/partials/_per_page_links.html.erb +0 -17
  514. data/app/views/admin/partials/_sub_navigation.html.erb +0 -14
  515. data/app/views/admin/partials/_upload_form.html.erb +0 -119
  516. data/app/views/admin/pictures/_pictures_list.html.erb +0 -12
  517. data/app/views/admin/pictures/index.html.erb +0 -89
  518. data/app/views/admin/pictures/show_in_window.html.erb +0 -1
  519. data/app/views/admin/signup.html.erb +0 -16
  520. data/app/views/admin/users/_table.html.erb +0 -54
  521. data/app/views/admin/users/index.html.erb +0 -41
  522. data/app/views/alchemy/error_notice.js.erb +0 -1
  523. data/app/views/alchemy/permission_denied.js.erb +0 -2
  524. data/app/views/elements/_searchresult_editor.html.erb +0 -1
  525. data/app/views/elements/_searchresult_view.html.erb +0 -49
  526. data/app/views/elements/_sitemap_editor.html.erb +0 -3
  527. data/app/views/elements/show.html.erb +0 -6
  528. data/app/views/essences/_essence_audio_editor.html.erb +0 -1
  529. data/app/views/essences/_essence_flash_editor.html.erb +0 -1
  530. data/app/views/essences/_essence_richtext_editor.html.erb +0 -9
  531. data/app/views/essences/_essence_video_editor.html.erb +0 -1
  532. data/app/views/layouts/login.html.erb +0 -59
  533. data/app/views/layouts/pages.html.erb +0 -29
  534. data/app/views/notifications/admin_user_created.text.erb +0 -13
  535. data/app/views/notifications/registered_user_created.text.erb +0 -10
  536. data/app/views/page_layouts/_newsletter_layout.html.erb +0 -1
  537. data/config/initializers/authorization.rb +0 -4
  538. data/config/initializers/fast_gettext.rb +0 -3
  539. data/config/locales/de.yml +0 -377
  540. data/config/locales/en.yml +0 -371
  541. data/lib/alchemy/controller.rb +0 -79
  542. data/lib/rails/generators/alchemy/plugin/templates/gettext.rb +0 -2
  543. data/lib/tasks/gettext.rake +0 -120
  544. data/lib/translation_extras/alchemy_core_modules.rb +0 -11
  545. data/locale/alchemy.pot +0 -1749
  546. data/locale/de/alchemy.po +0 -1795
  547. data/locale/en/alchemy.po +0 -1745
  548. data/locale/missing_translations.rb +0 -4
  549. data/locale/model_attributes.rb +0 -56
  550. data/spec/helpers/contents_helper_spec.rb +0 -27
  551. data/vendor/assets/javascripts/jquery-1.6.2.min.js +0 -18
  552. data/vendor/assets/javascripts/jquery-ui-custom-1.8.16.min.js +0 -550
  553. data/vendor/assets/javascripts/swfupload/fileprogress.js +0 -203
  554. data/vendor/assets/javascripts/swfupload/handlers.js +0 -171
  555. data/vendor/assets/javascripts/tiny_mce/jquery.tinymce.js +0 -1
data/spec/factories.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  FactoryGirl.define do
2
2
 
3
- factory :user do
3
+ factory :user, :class => 'Alchemy::User' do
4
4
  email 'john@doe.com'
5
5
  login "jdoe"
6
6
  password 's3cr3t'
@@ -24,7 +24,7 @@ FactoryGirl.define do
24
24
 
25
25
  end
26
26
 
27
- factory :language do
27
+ factory :language, :class => 'Alchemy::Language' do
28
28
  code "kl"
29
29
  name 'Klingonian'
30
30
  default false
@@ -33,8 +33,8 @@ FactoryGirl.define do
33
33
  public true
34
34
  end
35
35
 
36
- factory :page do
37
- language { Language.find_by_code('kl') || Factory(:language) }
36
+ factory :page, :class => 'Alchemy::Page' do
37
+ language { Alchemy::Language.find_by_code('kl') || Factory(:language) }
38
38
  name "A Page"
39
39
  parent_id { Factory(:language_root_page).id }
40
40
  page_layout "standard"
@@ -44,7 +44,7 @@ FactoryGirl.define do
44
44
  page_layout 'intro'
45
45
  language_root true
46
46
  public true
47
- parent_id { Page.root.id }
47
+ parent_id { Alchemy::Page.root.id }
48
48
  end
49
49
 
50
50
  factory :public_page do
@@ -54,12 +54,12 @@ FactoryGirl.define do
54
54
 
55
55
  end
56
56
 
57
- factory :cell do
58
- page { Page.find_by_language_root(true) || Factory(:language_root_page) }
57
+ factory :cell, :class => 'Alchemy::Cell' do
58
+ page { Alchemy::Page.find_by_language_root(true) || Factory(:language_root_page) }
59
59
  name "A Cell"
60
60
  end
61
61
 
62
- factory :element do
62
+ factory :element, :class => 'Alchemy::Element' do
63
63
  name 'article'
64
64
  end
65
65
 
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe AlchemyHelper do
3
+ describe Alchemy::Admin::BaseHelper do
4
4
 
5
5
  context "maximum amount of images option" do
6
6
 
@@ -38,4 +38,11 @@ describe AlchemyHelper do
38
38
 
39
39
  end
40
40
 
41
+ context "modules" do
42
+ it "should render main navi entries for all core modules" do
43
+ pending 'Do not know how to test helpers defined as helper_method in controller'
44
+ helper.admin_main_navigation.should have_selector('a.main_navi_entry')
45
+ end
46
+ end
47
+
41
48
  end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ describe Alchemy::Admin::ContentsHelper do
4
+
5
+ before(:each) do
6
+ @element = Factory(:element)
7
+ end
8
+
9
+ it "should render a dom id" do
10
+ helper.content_dom_id(@element.contents.first).should match(/essence_text_\d{1,}/)
11
+ end
12
+
13
+ it "should render the content name" do
14
+ helper.render_content_name(@element.contents.first).should == "Intro"
15
+ end
16
+
17
+ it "should render a link to add new content to element" do
18
+ helper.render_new_content_link(@element).should match(/Alchemy.openWindow.+\/admin\/elements\/#{@element.id}\/contents\/new/m)
19
+ end
20
+
21
+ it "should render a link to create a content in element" do
22
+ helper.render_create_content_link(@element).should match(/a.+href.*admin\/contents.+class.+button new_content_link.*data-method.+post/)
23
+ end
24
+
25
+ end
@@ -1,8 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
- include AlchemyHelper
3
+ include Alchemy::BaseHelper
4
4
 
5
- describe Admin::ElementsHelper do
5
+ describe Alchemy::Admin::ElementsHelper do
6
6
 
7
7
  before(:each) do
8
8
  @page = Factory(:public_page)
@@ -10,11 +10,39 @@ describe Admin::ElementsHelper do
10
10
  end
11
11
 
12
12
  it "should render an element editor partial" do
13
- helper.render_editor(@element).should match(/class="content_editor".+id="essence_text_11"/)
13
+ helper.render_editor(@element).should match(/class="content_editor".+id="essence_text_\d{1,}"/)
14
14
  end
15
15
 
16
16
  it "should render a picture editor partial" do
17
17
  helper.render_picture_editor(@element).should match(/class="essence_picture_editor"/)
18
18
  end
19
19
 
20
+ describe "#grouped_elements_for_select" do
21
+
22
+ before(:each) do
23
+ @page.stub!(:layout_description).and_return({'name' => "foo", 'cells' => ["foo_cell"]})
24
+ cell_descriptions = [{'name' => "foo_cell", 'elements' => ["1", "2"]}]
25
+ @elements = [{'name' => '1'}, {'name' => '2'}]
26
+ Alchemy::Cell.stub!(:definitions).and_return(cell_descriptions)
27
+ end
28
+
29
+ it "should return string of elements grouped by cell for select_tag helper" do
30
+ helper.grouped_elements_for_select(@elements).should == helper.grouped_options_for_select({"FooCell"=>[["1", "1#foo_cell"], ["2", "2#foo_cell"]]})
31
+ end
32
+
33
+ context "with empty elements array" do
34
+ it "should return an empty string" do
35
+ helper.grouped_elements_for_select([]).should == ""
36
+ end
37
+ end
38
+
39
+ context "with empty cell definitions" do
40
+ it "should return an empty string" do
41
+ @page.stub!(:layout_description).and_return({'name' => "foo"})
42
+ helper.grouped_elements_for_select(@elements).should == ""
43
+ end
44
+ end
45
+
46
+ end
47
+
20
48
  end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe Alchemy::Admin::EssencesHelper do
4
+
5
+ before(:each) do
6
+ @element = Factory(:element)
7
+ @element.content_by_name('intro').essence.update_attributes(:body => 'hello!')
8
+ end
9
+
10
+ it "should render an essence editor" do
11
+ content = @element.content_by_name('intro')
12
+ render_essence_editor(content).should match(/input.+type="text".+value="hello!/)
13
+ end
14
+
15
+ it "should render an essence editor by name" do
16
+ render_essence_editor_by_name(@element, 'intro').should match(/input.+type="text".+value="hello!/)
17
+ end
18
+
19
+ it "should render an essence editor by type" do
20
+ render_essence_editor_by_type(@element, 'EssenceText').should match(/input.+type="text".+value="hello!/)
21
+ end
22
+
23
+ it "should render an essence editor by position" do
24
+ render_essence_editor_by_position(@element, 1).should match(/input.+type="text".+value="hello!/)
25
+ end
26
+
27
+ end
@@ -1,44 +1,122 @@
1
1
  require 'spec_helper'
2
2
 
3
- include AlchemyHelper
3
+ include Alchemy::BaseHelper
4
4
 
5
- describe ElementsHelper do
5
+ describe Alchemy::ElementsHelper do
6
6
 
7
7
  before(:each) do
8
8
  @page = Factory(:public_page)
9
- @element = Factory(:element, :page => @page)
9
+ @element = Factory(:element, :page => @page)
10
+ session[:language_id] = @page.language_id
10
11
  end
11
12
 
12
- it "should render an element view partial" do
13
- helper.render_element(@element).should match(/class="article".+id="article_6"/)
14
- end
13
+ it "should render an element view partial" do
14
+ helper.render_element(@element).should match(/id="#{@element.name}_#{@element.id}"/)
15
+ end
16
+
17
+ it "should render a unique dom id for element" do
18
+ helper.element_dom_id(@element).should == "#{@element.name}_#{@element.id}"
19
+ end
15
20
 
16
- it "should render all elements" do
17
- @another_element = Factory(:element)
18
- helper.stub!(:configuration).and_return(true)
19
- helper.render_elements.should match(/id="header_3.+id="article_5"/)
20
- end
21
+ describe "#render_elements" do
22
+
23
+ before(:each) do
24
+ helper.stub!(:configuration).and_return(true)
25
+ end
21
26
 
22
- it "should render a unique dom id for element" do
23
- helper.element_dom_id(@element).should == "#{@element.name}_#{@element.id}"
27
+ context "with no certain option given" do
28
+ it "should render all elements from @page" do
29
+ @another_element = Factory(:element, :page => @page)
30
+ # m for regex means line breaks are like every character
31
+ helper.render_elements.should match(/id="#{@element.name}_#{@element.id.to_s}.*id="#{@another_element.name}_#{@another_element.id.to_s}"/m)
32
+ end
33
+
34
+ it "should not render elements that are in a cell" do
35
+ cell = Factory(:cell)
36
+ @another_element = Factory(:element, :page => @page, :cell_id => cell.id)
37
+ helper.render_elements.should_not match(/id="#{@another_element.name}_#{@another_element.id}"/)
38
+ end
39
+ end
40
+
41
+ context "with except option" do
42
+ it "should render all elements except a certain one" do
43
+ @another_element = Factory(:element, :page => @page)
44
+ helper.render_elements(:except => @another_element.name).should_not match(/id="#{@another_element.name}_\d*"/)
45
+ end
46
+ end
47
+
48
+ context "with only option" do
49
+ it "should render one certain element" do
50
+ @another_element = Factory(:element, :name => 'headline', :page => @page)
51
+ helper.render_elements(:only => @element.name).should_not match(/id="#{@another_element.name}_\d*"/)
52
+ end
53
+ end
54
+
55
+ context "with from_page option" do
56
+ it "should render all elements from a certain page" do
57
+ @another_page = Factory(:public_page)
58
+ @element_on_other_page = Factory(:element, :name => 'headline', :page => @another_page)
59
+ helper.render_elements(:from_page => @another_page).should match(/id="#{@element_on_other_page.name}_\d*"/)
60
+ end
61
+ end
62
+
63
+ context "with from_cell option" do
64
+ it "should render all elements from a certain cell" do
65
+ cell = Factory(:cell)
66
+ @another_element = Factory(:element, :page => @page, :cell_id => cell.id)
67
+ helper.render_elements(:from_cell => cell).should match(/id="#{@another_element.name}_#{@another_element.id}"/)
68
+ end
69
+ end
70
+
71
+ context "with count option" do
72
+ it "should render just one element because of the count option" do
73
+ @page.elements.delete_all
74
+ @another_element_1 = Factory(:element, :page => @page)
75
+ @another_element_2 = Factory(:element, :page => @page)
76
+ @another_element_3 = Factory(:element, :page => @page)
77
+ helper.render_elements(:count => 1).should match(/id="#{@another_element_1.name}_#{@another_element_1.id}"/)
78
+ end
79
+ end
80
+
81
+ context "with offset option" do
82
+ it "should render all elements beginning with the second." do
83
+ @page.elements.delete_all
84
+ @another_page = Factory(:public_page)
85
+ @another_element_1 = Factory(:element, :page => @page)
86
+ @another_element_2 = Factory(:element, :page => @page)
87
+ @another_element_3 = Factory(:element, :page => @page)
88
+ helper.render_elements(:offset => 1).should_not match(/id="#{@another_element_1.name}_#{@another_element_1.id}"/)
89
+ end
90
+ end
91
+
92
+ context "with option fallback" do
93
+ it "should render the fallback element, when no element with the given name is found" do
94
+ @page.elements.delete_all
95
+ @another_element_1 = Factory(:element, :page => @page)
96
+ helper.render_elements(:fallback => {:for => 'foo', :with => @another_element_1.name, :from => @page.page_layout}).should match(/id="#{@another_element_1.name}_#{@another_element_1.id}"/)
97
+ end
98
+ end
99
+
24
100
  end
25
101
 
26
- it "should render elements for a cell" do
27
- cell = Factory(:cell)
28
- Factory(:element, :cell_id => cell.id)
29
- helper.stub(:configuration).and_return(true)
30
- helper.render_cell_elements(cell).should match(/id="article_7"/)
102
+ describe "#render_cell_elements" do
103
+ it "should render elements for a cell" do
104
+ cell = Factory(:cell)
105
+ @element_in_cell = Factory(:element, :cell_id => cell.id)
106
+ helper.stub(:configuration).and_return(true)
107
+ helper.render_cell_elements(cell).should match(/id="#{@element_in_cell.name}_#{@element_in_cell.id}"/)
108
+ end
31
109
  end
32
110
 
33
111
  context "in preview mode" do
34
112
 
35
- it "should return the data-alchemy-element HTML attribute for element" do
113
+ it "should return the data-alchemy-element HTML attribute for element" do
36
114
  @preview_mode = true
37
- helper.element_preview_code(@element).should == " data-alchemy-element='#{@element.id}'"
115
+ helper.element_preview_code(@element).should == " data-alchemy-element='#{@element.id}'"
38
116
  end
39
117
 
40
118
  it "should not return the data-alchemy-element HTML attribute if not in preview_mode" do
41
- helper.element_preview_code(@element).should_not == " data-alchemy-element='#{@element.id}'"
119
+ helper.element_preview_code(@element).should_not == " data-alchemy-element='#{@element.id}'"
42
120
  end
43
121
 
44
122
  end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe EssencesHelper do
3
+ describe Alchemy::EssencesHelper do
4
4
 
5
5
  before(:each) do
6
6
  @element = Factory(:element)
@@ -29,21 +29,4 @@ describe EssencesHelper do
29
29
  render_essence_view_by_position(@element, 1).should match(/hello!/)
30
30
  end
31
31
 
32
- it "should render an essence editor" do
33
- content = @element.content_by_name('intro')
34
- render_essence_editor(content).should match(/input.+type="text".+value="hello!/)
35
- end
36
-
37
- it "should render an essence editor by name" do
38
- render_essence_editor_by_name(@element, 'intro').should match(/input.+type="text".+value="hello!/)
39
- end
40
-
41
- it "should render an essence editor by type" do
42
- render_essence_editor_by_type(@element, 'EssenceText').should match(/input.+type="text".+value="hello!/)
43
- end
44
-
45
- it "should render an essence editor by position" do
46
- render_essence_editor_by_position(@element, 1).should match(/input.+type="text".+value="hello!/)
47
- end
48
-
49
32
  end
@@ -1,44 +1,230 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe PagesHelper do
3
+ include Alchemy::BaseHelper
4
4
 
5
+ describe Alchemy::PagesHelper do
6
+
5
7
  it "should render the current page layout" do
6
8
  @page = Factory(:public_page)
7
9
  helper.stub(:configuration).and_return(true)
8
- render_page_layout.should have_selector('div#content')
10
+ render_page_layout.should have_selector('div#content')
9
11
  end
10
12
 
11
- context "navigation and meta data" do
12
-
13
- before(:each) do
14
- @language = Language.get_default
13
+ describe "#render_navigation" do
14
+ it "should render the page navigation" do
15
+ @language = Alchemy::Language.get_default
15
16
  @root_page = Factory(:language_root_page, :language => @language, :name => 'Home')
16
17
  @page = Factory(:public_page, :language => @language, :parent_id => @root_page.id, :visible => true)
17
18
  helper.stub(:multi_language?).and_return(false)
19
+ helper.render_navigation.should have_selector('ul.navigation_level_1 li.a-public-page.active.last a.active[href="/alchemy/a-public-page"]')
20
+ end
21
+ end
22
+
23
+ describe "#render_breadcrumb" do
24
+
25
+ before(:each) do
26
+ helper.stub(:multi_language?).and_return(false)
27
+ @language_root = mock_model('Page', :urlname => 'language_root', :name => 'Language Root', :title => 'Language Root', :visible? => true, :public? => true, :restricted? => false)
28
+ @page = mock_model('Page', :urlname => 'a-public-page', :name => 'A Public Page', :title => 'A Public Page', :visible? => true, :public? => true, :restricted? => false)
29
+ @language_root.should_receive(:parent).and_return(nil)
30
+ @page.should_receive(:parent).and_return(@language_root)
31
+ end
32
+
33
+ it "should render a breadcrumb to current page" do
34
+ helper.render_breadcrumb.should have_selector('a.active.last[href="/alchemy/a-public-page"]')
18
35
  end
19
36
 
20
- it "should render the page navigation" do
21
- helper.render_navigation.should have_selector('ul.navigation_level_1 li.a-public-page.active.last a.active[href="/a-public-page"]')
37
+ it "should render a breadcrumb with a alternative seperator" do
38
+ helper.render_breadcrumb(:seperator => '<span>###</span>').should have_selector('span[contains("###")]')
22
39
  end
23
40
 
24
- it "should render a breadcrumb to current page" do
25
- helper.render_breadcrumb.should have_selector('a.active.last[href="/a-public-page"]')
41
+ it "should render a breadcrumb in reversed order" do
42
+ helper.render_breadcrumb(:reverse => true).should have_selector('a.active.first[href="/alchemy/a-public-page"]')
43
+ end
44
+
45
+ it "should render a breadcrumb of restricted pages only" do
46
+ @page.stub!(:restricted? => true, :urlname => 'a-restricted-public-page', :name => 'A restricted Public Page', :title => 'A restricted Public Page')
47
+ helper.render_breadcrumb(:restricted_only => true).should match(/^(<a(.[^>]+)>)A restricted Public Page/)
48
+ end
49
+
50
+ it "should render a breadcrumb of visible pages only" do
51
+ @page.stub!(:visible? => false, :urlname => 'a-invisible-public-page', :name => 'A invisible Public Page', :title => 'A invisible Public Page')
52
+ helper.render_breadcrumb(:visible_only => true).should_not match(/A invisible Public Page/)
53
+ end
54
+
55
+ it "should render a breadcrumb of visible and invisible pages" do
56
+ @page.stub!(:visible? => false, :urlname => 'a-invisible-public-page', :name => 'A invisible Public Page', :title => 'A invisible Public Page')
57
+ helper.render_breadcrumb(:visible_only => false).should match(/A invisible Public Page/)
58
+ end
59
+
60
+ it "should render a breadcrumb of published pages only" do
61
+ @page.stub!(:public => false, :public? => false, :urlname => 'a-unpublic-page', :name => 'A Unpublic Page', :title => 'A Unpublic Page')
62
+ helper.render_breadcrumb(:public_only => true).should_not match(/A Unpublic Page/)
26
63
  end
27
64
 
28
- it "should render meta tags for current page" do
29
- helper.render_meta_data(:title_prefix => 'Peters Petshop').should have_selector('title[contains("Peters Petshop | A Public Page")]')
65
+ it "should render a breadcrumb of published and unpublished pages" do
66
+ @page.stub!(:public => false, :public? => false, :urlname => 'a-unpublic-page', :name => 'A Unpublic Page', :title => 'A Unpublic Page')
67
+ helper.render_breadcrumb(:public_only => false).should match(/A Unpublic Page/)
30
68
  end
31
69
 
32
- it "should render a title tag for current page" do
33
- helper.render_title_tag(:prefix => 'Peters Petshop').should have_selector('title[contains("Peters Petshop | A Public Page")]')
70
+ it "should render a breadcrumb without the page named 'Not Me'" do
71
+ @page.stub!(:urlname => 'not-me', :name => 'Not Me', :title => 'Not Me')
72
+ helper.render_breadcrumb(:without => @page).should_not match(/Not Me/)
73
+ end
74
+
75
+ end
76
+
77
+ describe "using own url helpers" do
78
+
79
+ before(:each) do
80
+ @page = mock_model(Alchemy::Page, :urlname => 'testpage', :language_code => 'en')
81
+ end
82
+
83
+ describe "#show_page_path_params" do
84
+
85
+ context "when multi_language" do
86
+
87
+ before(:each) do
88
+ helper.stub!(:multi_language?).and_return(true)
89
+ end
90
+
91
+ it "should return a Hash with urlname and language_id parameter" do
92
+ helper.stub!(:multi_language?).and_return(true)
93
+ helper.show_page_path_params(@page).should include(:urlname => 'testpage', :lang => 'en')
94
+ end
95
+
96
+ it "should return a Hash with urlname, language_id and query parameter" do
97
+ helper.stub!(:multi_language?).and_return(true)
98
+ helper.show_page_path_params(@page, {:query => 'test'}).should include(:urlname => 'testpage', :lang => 'en', :query => 'test')
99
+ end
100
+
101
+ end
102
+
103
+ context "not multi_language" do
104
+
105
+ before(:each) do
106
+ helper.stub!(:multi_language?).and_return(false)
107
+ end
108
+
109
+ it "should return a Hash with the urlname but without language_id parameter" do
110
+ helper.show_page_path_params(@page).should include(:urlname => 'testpage')
111
+ helper.show_page_path_params(@page).should_not include(:lang => 'en')
112
+ end
113
+
114
+ it "should return a Hash with urlname and query parameter" do
115
+ helper.show_page_path_params(@page, {:query => 'test'}).should include(:urlname => 'testpage', :query => 'test')
116
+ helper.show_page_path_params(@page).should_not include(:lang => 'en')
117
+ end
118
+
119
+ end
120
+
121
+ end
122
+
123
+ describe "#show_alchemy_page_path" do
124
+
125
+ context "when multi_language" do
126
+
127
+ before(:each) do
128
+ helper.stub!(:multi_language?).and_return(true)
129
+ end
130
+
131
+ it "should return the correct relative path string" do
132
+ helper.show_alchemy_page_path(@page).should == "/alchemy/#{@page.language_code}/testpage"
133
+ end
134
+
135
+ it "should return the correct relative path string with additional parameters" do
136
+ helper.show_alchemy_page_path(@page, {:query => 'test'}).should == "/alchemy/#{@page.language_code}/testpage?query=test"
137
+ end
138
+
139
+ end
140
+
141
+ context "not multi_language" do
142
+
143
+ before(:each) do
144
+ helper.stub!(:multi_language?).and_return(false)
145
+ end
146
+
147
+ it "should return the correct relative path string" do
148
+ helper.show_alchemy_page_path(@page).should == "/alchemy/testpage"
149
+ end
150
+
151
+ it "should return the correct relative path string with additional parameter" do
152
+ helper.show_alchemy_page_path(@page, {:query => 'test'}).should == "/alchemy/testpage?query=test"
153
+ end
154
+
155
+ end
156
+
157
+ end
158
+
159
+ describe "#show_alchemy_page_url" do
160
+
161
+ context "when multi_language" do
162
+
163
+ before(:each) do
164
+ helper.stub!(:multi_language?).and_return(true)
165
+ end
166
+
167
+ it "should return the correct url string" do
168
+ helper.show_alchemy_page_url(@page).should == "http://#{helper.request.host}/alchemy/#{@page.language_code}/testpage"
169
+ end
170
+
171
+ it "should return the correct url string with additional parameters" do
172
+ helper.show_alchemy_page_url(@page, {:query => 'test'}).should == "http://#{helper.request.host}/alchemy/#{@page.language_code}/testpage?query=test"
173
+ end
174
+
175
+ end
176
+
177
+ context "not multi_language" do
178
+
179
+ before(:each) do
180
+ helper.stub!(:multi_language?).and_return(false)
181
+ end
182
+
183
+ it "should return the correct url string" do
184
+ helper.show_alchemy_page_url(@page).should == "http://#{helper.request.host}/alchemy/testpage"
185
+ end
186
+
187
+ it "should return the correct url string with additional parameter" do
188
+ helper.show_alchemy_page_url(@page, {:query => 'test'}).should == "http://#{helper.request.host}/alchemy/testpage?query=test"
189
+ end
190
+
191
+ end
34
192
  end
193
+ end
194
+
195
+ describe "#render_meta_data" do
196
+
197
+ let(:language) do
198
+ mock_model('Language', :code => 'en')
199
+ end
200
+
201
+ it "should render meta keywords of current page" do
202
+ @page = mock_model('Page', :language => language, :title => 'A Public Page', :meta_description => '', :meta_keywords => 'keyword1, keyword2', :robot_index? => false, :robot_follow? => false, :contains_feed? => false, :updated_at => '2011-11-29-23:00:00')
203
+ helper.render_meta_data.should have_selector('meta[name="keywords"][content="keyword1, keyword2"]')
204
+ end
205
+
206
+ it "should render meta description 'blah blah' of current page" do
207
+ @page = mock_model('Page', :language => language, :title => 'A Public Page', :meta_description => 'blah blah', :meta_keywords => '', :robot_index? => false, :robot_follow? => false, :contains_feed? => false, :updated_at => '2011-11-29-23:00:00')
208
+ helper.render_meta_data.should have_selector('meta[name="description"][content="blah blah"]')
209
+ end
210
+ end
35
211
 
212
+ describe "#render_title_tag" do
213
+ it "should render a title tag for current page" do
214
+ @page = mock_model('Page', :title => 'A Public Page')
215
+ helper.render_title_tag.should have_selector('title[contains("A Public Page")]')
216
+ end
217
+
218
+ it "should render a title tag for current page with a prefix and a seperator" do
219
+ @page = mock_model('Page', :title => 'A Public Page')
220
+ helper.render_title_tag(:prefix => 'Peters Petshop', :seperator => '###').should have_selector('title[contains("Peters Petshop ### A Public Page")]')
221
+ end
36
222
  end
37
223
 
38
- context "method language_switches" do
224
+ describe "#language_switcher" do
39
225
 
40
226
  before :each do
41
- @default_language = Language.get_default
227
+ @default_language = Alchemy::Language.get_default
42
228
  @klingonian = Factory(:language)
43
229
  # simulates link_to_public_child = true
44
230
  helper.stub(:configuration).and_return(true)
@@ -47,7 +233,7 @@ describe PagesHelper do
47
233
 
48
234
  it "should return nil when having only one public language" do
49
235
  helper.stub(:configuration).and_return(true)
50
- helper.language_switches.should be nil
236
+ helper.language_switcher.should be nil
51
237
  end
52
238
 
53
239
  context "with two public languages and two language_roots" do
@@ -66,25 +252,25 @@ describe PagesHelper do
66
252
 
67
253
  it "should return nil if only one language_root is public and both do not have children" do
68
254
  @klingonian_language_root.update_attributes(:public => false)
69
- helper.language_switches.should == nil
255
+ helper.language_switcher.should == nil
70
256
  end
71
257
 
72
258
  it "should return nil if only one language_root is public and both have none public children" do
73
259
  @klingonian_language_root.update_attributes(:public => false)
74
260
  @default_first_public_child = Factory(:page, :language => @default_language, :parent_id => @default_language_root.id, :public => false, :name => "child1")
75
261
  @klingonian_first_public_child = Factory(:page, :language => @klingonian, :parent_id => @klingonian_language_root.id, :public => false, :name => "child1")
76
- helper.language_switches.should == nil
262
+ helper.language_switcher.should == nil
77
263
  end
78
264
 
79
265
  it "should render two links when having two public language_root pages" do
80
- helper.language_switches.should have_selector('a', :count => 2)
266
+ helper.language_switcher.should have_selector('a', :count => 2)
81
267
  end
82
268
 
83
269
  it "should render two links when having just one public language_root but a public children in both language_roots" do
84
270
  @klingonian_language_root.update_attributes(:public => false)
85
271
  @default_first_public_child = Factory(:page, :language => @default_language, :parent_id => @default_language_root.id, :public => true, :name => "child1")
86
272
  @klingonian_first_public_child = Factory(:page, :language => @klingonian, :parent_id => @klingonian_language_root.id, :public => true, :name => "child1")
87
- helper.language_switches.should have_selector('a', :count => 2)
273
+ helper.language_switcher.should have_selector('a', :count => 2)
88
274
  end
89
275
 
90
276
  it "should render two links when having two not public language_roots but a public children in both" do
@@ -92,7 +278,7 @@ describe PagesHelper do
92
278
  @klingonian_language_root.update_attributes(:public => false)
93
279
  @default_first_public_child = Factory(:page, :language => @default_language, :parent_id => @default_language_root.id, :public => true, :name => "child1")
94
280
  @klingonian_first_public_child = Factory(:page, :language => @klingonian, :parent_id => @klingonian_language_root.id, :public => true, :name => "child1")
95
- helper.language_switches.should have_selector('a', :count => 2)
281
+ helper.language_switcher.should have_selector('a', :count => 2)
96
282
  end
97
283
 
98
284
  it "should return nil when having two not public language_roots and a public children in only one of them" do
@@ -100,7 +286,7 @@ describe PagesHelper do
100
286
  @klingonian_language_root.update_attributes(:public => false)
101
287
  @default_first_public_child = Factory(:page, :language => @default_language, :parent_id => @default_language_root.id, :public => false, :name => "child1")
102
288
  @klingonian_first_public_child = Factory(:page, :language => @klingonian, :parent_id => @klingonian_language_root.id, :public => true, :name => "child1")
103
- helper.language_switches.should == nil
289
+ helper.language_switcher.should == nil
104
290
  end
105
291
 
106
292
  end
@@ -113,14 +299,14 @@ describe PagesHelper do
113
299
  end
114
300
 
115
301
  it "should render two links when having two public language_root pages" do
116
- helper.language_switches.should have_selector('a', :count => 2)
302
+ helper.language_switcher.should have_selector('a', :count => 2)
117
303
  end
118
304
 
119
305
  it "should render nil when having just one public language_root but a public children in both language_roots" do
120
306
  @klingonian_language_root.update_attributes(:public => false)
121
307
  @default_first_public_child = Factory(:page, :language => @default_language, :parent_id => @default_language_root.id, :public => true, :name => "child1")
122
308
  @klingonian_first_public_child = Factory(:page, :language => @klingonian, :parent_id => @klingonian_language_root.id, :public => true, :name => "child1")
123
- helper.language_switches.should == nil
309
+ helper.language_switcher.should == nil
124
310
  end
125
311
 
126
312
  it "should render nil when having two not public language_roots but a public children in both" do
@@ -128,7 +314,7 @@ describe PagesHelper do
128
314
  @klingonian_language_root.update_attributes(:public => false)
129
315
  @default_first_public_child = Factory(:page, :language => @default_language, :parent_id => @default_language_root.id, :public => true, :name => "child1")
130
316
  @klingonian_first_public_child = Factory(:page, :language => @klingonian, :parent_id => @klingonian_language_root.id, :public => true, :name => "child1")
131
- helper.language_switches.should == nil
317
+ helper.language_switcher.should == nil
132
318
  end
133
319
 
134
320
  end