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.
- data/.gitignore +2 -1
- data/.rspec +2 -2
- data/.travis.yml +2 -1
- data/Gemfile +8 -9
- data/README.md +10 -10
- data/Rakefile +0 -1
- data/alchemy_cms.gemspec +7 -9
- data/app/assets/images/alchemy/icons.png +0 -0
- data/app/assets/javascripts/alchemy/alchemy.base.js +8 -2
- data/app/assets/javascripts/alchemy/{alchemy.dragndrop.js → alchemy.dragndrop.js.erb} +3 -3
- data/app/assets/javascripts/alchemy/alchemy.element_editor_selector.js +1 -1
- data/app/assets/javascripts/alchemy/alchemy.growler.js +3 -3
- data/app/assets/javascripts/alchemy/alchemy.js +10 -15
- data/app/assets/javascripts/alchemy/alchemy.link_overlay.js +6 -2
- data/app/assets/javascripts/alchemy/alchemy.page_sorter.js +1 -1
- data/app/assets/javascripts/alchemy/alchemy.preview.js +1 -1
- data/app/assets/javascripts/alchemy/alchemy.routes.js.erb +38 -0
- data/app/assets/javascripts/alchemy/alchemy.swf_upload.js +360 -0
- data/app/assets/javascripts/alchemy/alchemy.windows.js +32 -17
- data/app/assets/javascripts/alchemy/preview.js +1 -0
- data/{vendor → app}/assets/javascripts/tiny_mce/plugins/alchemy_link/editor_plugin.js +0 -0
- data/{vendor → app}/assets/javascripts/tiny_mce/plugins/alchemy_link/langs/de.js +0 -0
- data/{vendor → app}/assets/javascripts/tiny_mce/plugins/alchemy_link/langs/en.js +0 -0
- 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
- data/app/assets/stylesheets/alchemy/_defaults.scss +4 -16
- data/app/assets/stylesheets/alchemy/alchemy.css +2 -2
- data/app/assets/stylesheets/alchemy/base.css.scss +161 -205
- data/app/assets/stylesheets/alchemy/elements.css.scss +15 -8
- data/app/assets/stylesheets/alchemy/{jquery-ui.alchemy.css → jquery-ui.alchemy.css.scss} +41 -45
- data/app/assets/stylesheets/alchemy/jquery.sb.css.scss +14 -10
- data/app/assets/stylesheets/alchemy/{tinymce_content.css → tinymce_content.css.scss} +7 -6
- data/app/assets/stylesheets/alchemy/{tinymce_dialog.css → tinymce_dialog.css.scss} +7 -7
- data/app/controllers/alchemy/admin/attachments_controller.rb +131 -0
- data/app/controllers/alchemy/admin/base_controller.rb +118 -0
- data/app/controllers/alchemy/admin/clipboard_controller.rb +46 -0
- data/app/controllers/alchemy/admin/contents_controller.rb +55 -0
- data/app/controllers/alchemy/admin/dashboard_controller.rb +15 -0
- data/app/controllers/alchemy/admin/elements_controller.rb +123 -0
- data/app/controllers/alchemy/admin/essence_audios_controller.rb +12 -0
- data/app/controllers/alchemy/admin/essence_files_controller.rb +27 -0
- data/app/controllers/alchemy/admin/essence_flashes_controller.rb +12 -0
- data/app/controllers/alchemy/admin/essence_pictures_controller.rb +91 -0
- data/app/controllers/alchemy/admin/essence_videos_controller.rb +12 -0
- data/app/controllers/alchemy/admin/languages_controller.rb +7 -0
- data/app/controllers/alchemy/admin/layoutpages_controller.rb +13 -0
- data/app/controllers/alchemy/admin/pages_controller.rb +253 -0
- data/app/controllers/alchemy/admin/pictures_controller.rb +139 -0
- data/app/controllers/alchemy/admin/resources_controller.rb +132 -0
- data/app/controllers/alchemy/admin/trash_controller.rb +24 -0
- data/app/controllers/alchemy/admin/users_controller.rb +81 -0
- data/app/controllers/alchemy/attachments_controller.rb +30 -0
- data/app/controllers/alchemy/base_controller.rb +137 -0
- data/app/controllers/alchemy/elements_controller.rb +18 -0
- data/app/controllers/alchemy/messages_controller.rb +115 -0
- data/app/controllers/alchemy/pages_controller.rb +169 -0
- data/app/controllers/alchemy/pictures_controller.rb +62 -0
- data/app/controllers/alchemy/user_sessions_controller.rb +80 -0
- data/app/helpers/alchemy/admin/attachments_helper.rb +11 -0
- data/app/helpers/alchemy/admin/base_helper.rb +423 -0
- data/app/helpers/alchemy/admin/contents_helper.rb +75 -0
- data/app/helpers/alchemy/admin/elements_helper.rb +118 -0
- data/app/helpers/alchemy/admin/essences_helper.rb +78 -0
- data/app/helpers/alchemy/admin/pages_helper.rb +46 -0
- data/app/helpers/alchemy/admin/pictures_helper.rb +30 -0
- data/app/helpers/alchemy/base_helper.rb +65 -0
- data/app/helpers/alchemy/elements_helper.rb +173 -0
- data/app/helpers/alchemy/essences_helper.rb +101 -0
- data/app/helpers/alchemy/pages_helper.rb +550 -0
- data/app/mailers/alchemy/messages.rb +17 -0
- data/app/mailers/alchemy/notifications.rb +25 -0
- data/app/models/alchemy.rb +7 -0
- data/app/models/alchemy/attachment.rb +82 -0
- data/app/models/alchemy/cell.rb +61 -0
- data/app/models/alchemy/content.rb +163 -0
- data/app/models/alchemy/element.rb +479 -0
- data/app/models/alchemy/essence_audio.rb +19 -0
- data/app/models/alchemy/essence_date.rb +22 -0
- data/app/models/alchemy/essence_file.rb +19 -0
- data/app/models/alchemy/essence_flash.rb +17 -0
- data/app/models/alchemy/essence_html.rb +21 -0
- data/app/models/alchemy/essence_picture.rb +29 -0
- data/app/models/alchemy/essence_richtext.rb +63 -0
- data/app/models/alchemy/essence_text.rb +40 -0
- data/app/models/alchemy/essence_video.rb +19 -0
- data/app/models/alchemy/folded_page.rb +5 -0
- data/app/models/alchemy/language.rb +90 -0
- data/app/models/alchemy/message.rb +71 -0
- data/app/models/alchemy/page.rb +548 -0
- data/app/models/alchemy/picture.rb +100 -0
- data/app/models/alchemy/user.rb +72 -0
- data/app/models/alchemy/user_session.rb +12 -0
- data/app/sweepers/alchemy/content_sweeper.rb +22 -0
- data/app/sweepers/alchemy/pages_sweeper.rb +49 -0
- data/app/sweepers/alchemy/pictures_sweeper.rb +23 -0
- data/app/views/{admin → alchemy/admin}/attachments/_archive_overlay.html.erb +6 -6
- data/app/views/{admin → alchemy/admin}/attachments/_attachment.html.erb +14 -14
- data/app/views/{admin → alchemy/admin}/attachments/_file_to_assign.html.erb +0 -0
- data/app/views/alchemy/admin/attachments/_files_list.html.erb +25 -0
- data/app/views/{admin → alchemy/admin}/attachments/create.js.erb +0 -0
- data/app/views/{admin → alchemy/admin}/attachments/destroy.js.erb +0 -0
- data/app/views/{admin → alchemy/admin}/attachments/edit.html.erb +2 -2
- data/app/views/alchemy/admin/attachments/index.html.erb +18 -0
- data/app/views/{admin → alchemy/admin}/attachments/new.html.erb +3 -3
- data/app/views/{admin → alchemy/admin}/clipboard/clear.js.erb +1 -1
- data/app/views/alchemy/admin/clipboard/index.html.erb +19 -0
- data/app/views/alchemy/admin/clipboard/insert.js.erb +14 -0
- data/app/views/alchemy/admin/clipboard/remove.js.erb +10 -0
- data/app/views/{admin → alchemy/admin}/contents/_missing.html.erb +4 -4
- data/app/views/{admin → alchemy/admin}/contents/create.js.erb +10 -10
- data/app/views/{admin → alchemy/admin}/contents/destroy.js.erb +0 -0
- data/app/views/{admin → alchemy/admin}/contents/new.html.erb +1 -1
- data/app/views/{admin → alchemy/admin}/contents/order.js.erb +0 -0
- data/app/views/alchemy/admin/dashboard/index.html.erb +96 -0
- data/app/views/{admin → alchemy/admin}/elements/_add_content.html.erb +2 -2
- data/app/views/{admin → alchemy/admin}/elements/_element.html.erb +3 -3
- data/app/views/{admin → alchemy/admin}/elements/_element_foot.html.erb +8 -8
- data/app/views/{admin → alchemy/admin}/elements/_element_head.html.erb +4 -4
- data/app/views/{admin → alchemy/admin}/elements/_elements_select.html.erb +2 -2
- data/app/views/alchemy/admin/elements/_new_element_form.html.erb +30 -0
- data/app/views/{admin → alchemy/admin}/elements/_picture_editor.html.erb +3 -3
- data/app/views/{admin → alchemy/admin}/elements/create.js.erb +2 -2
- data/app/views/{admin → alchemy/admin}/elements/destroy.js.erb +1 -1
- data/app/views/{admin → alchemy/admin}/elements/fold.js.erb +2 -2
- data/app/views/{admin → alchemy/admin}/elements/index.html.erb +1 -10
- data/app/views/{admin → alchemy/admin}/elements/list.js.erb +2 -2
- data/app/views/alchemy/admin/elements/new.html.erb +41 -0
- data/app/views/{admin → alchemy/admin}/elements/order.js.erb +1 -1
- data/app/views/{admin → alchemy/admin}/elements/trash.js.erb +1 -1
- data/app/views/{admin → alchemy/admin}/elements/update.js.erb +1 -1
- data/app/views/{admin → alchemy/admin}/essence_files/assign.js.erb +1 -1
- data/app/views/{admin → alchemy/admin}/essence_files/edit.html.erb +23 -23
- data/app/views/{admin → alchemy/admin}/essence_pictures/assign.js.erb +2 -2
- data/app/views/{admin → alchemy/admin}/essence_pictures/crop.html.erb +15 -6
- data/app/views/{admin → alchemy/admin}/essence_pictures/destroy.js.erb +1 -1
- data/app/views/{admin → alchemy/admin}/essence_pictures/edit.html.erb +11 -11
- data/app/views/{admin → alchemy/admin}/essence_pictures/save_link.js.erb +0 -0
- data/app/views/{admin → alchemy/admin}/essence_pictures/update.js.erb +2 -2
- data/app/views/alchemy/admin/languages/_language.html.erb +36 -0
- data/app/views/{admin → alchemy/admin}/layoutpages/_layoutpage.html.erb +18 -18
- data/app/views/alchemy/admin/layoutpages/index.html.erb +65 -0
- data/app/views/{admin → alchemy/admin}/pages/_contactform_links.html.erb +6 -6
- data/app/views/alchemy/admin/pages/_create_language_form.html.erb +38 -0
- data/app/views/{admin → alchemy/admin}/pages/_external_link.html.erb +9 -9
- data/app/views/{admin → alchemy/admin}/pages/_file_link.html.erb +13 -13
- data/app/views/{admin → alchemy/admin}/pages/_internal_link.html.erb +8 -8
- data/app/views/{admin → alchemy/admin}/pages/_new_page_form.html.erb +6 -6
- data/app/views/{admin → alchemy/admin}/pages/_page.html.erb +25 -25
- data/app/views/{admin → alchemy/admin}/pages/_page_for_links.html.erb +6 -6
- data/app/views/{admin → alchemy/admin}/pages/_page_infos.html.erb +3 -3
- data/app/views/{admin → alchemy/admin}/pages/_page_status.html.erb +4 -4
- data/app/views/{admin → alchemy/admin}/pages/_sitemap.html.erb +21 -21
- data/app/views/alchemy/admin/pages/configure.html.erb +71 -0
- data/app/views/{admin → alchemy/admin}/pages/configure_external.html.erb +9 -9
- data/app/views/{admin → alchemy/admin}/pages/destroy.js.erb +2 -2
- data/app/views/alchemy/admin/pages/edit.html.erb +181 -0
- data/app/views/alchemy/admin/pages/flush.js.erb +2 -0
- data/app/views/{admin → alchemy/admin}/pages/fold.js.erb +0 -0
- data/app/views/alchemy/admin/pages/index.html.erb +104 -0
- data/app/views/{admin → alchemy/admin}/pages/link.html.erb +4 -4
- data/app/views/alchemy/admin/pages/locked.html.erb +3 -0
- data/app/views/{admin → alchemy/admin}/pages/new.html.erb +8 -8
- data/app/views/{admin → alchemy/admin}/pages/show.html.erb +0 -0
- data/app/views/{admin → alchemy/admin}/pages/sort.js.erb +0 -0
- data/app/views/{admin → alchemy/admin}/pages/unlock.js.erb +1 -1
- data/app/views/{admin → alchemy/admin}/pages/update.js.erb +5 -5
- data/app/views/{admin → alchemy/admin}/partials/_flash.html.erb +0 -0
- data/app/views/{admin → alchemy/admin}/partials/_flash_notices.html.erb +1 -1
- data/app/views/alchemy/admin/partials/_main_navigation_entry.html.erb +14 -0
- data/app/views/alchemy/admin/partials/_pagination_links.html.erb +5 -0
- data/app/views/{admin → alchemy/admin}/partials/_remote_pagination_links.html.erb +2 -2
- data/app/views/{admin → alchemy/admin}/partials/_remote_search_form.html.erb +2 -2
- data/app/views/{admin → alchemy/admin}/partials/_search_form.html.erb +6 -7
- data/app/views/alchemy/admin/partials/_sub_navigation_tab.html.erb +8 -0
- data/app/views/alchemy/admin/partials/_upload_form.html.erb +129 -0
- data/app/views/{admin → alchemy/admin}/pictures/_archive_overlay.html.erb +3 -3
- data/app/views/{admin → alchemy/admin}/pictures/_filter_and_size_bar.html.erb +15 -15
- data/app/views/{admin → alchemy/admin}/pictures/_picture.html.erb +7 -7
- data/app/views/{admin → alchemy/admin}/pictures/_picture_to_assign.html.erb +2 -2
- data/app/views/alchemy/admin/pictures/_pictures_list.html.erb +14 -0
- data/app/views/{admin → alchemy/admin}/pictures/archive_overlay.js.erb +0 -0
- data/app/views/{admin → alchemy/admin}/pictures/create.js.erb +3 -3
- data/app/views/{admin → alchemy/admin}/pictures/flush.js.erb +0 -0
- data/app/views/alchemy/admin/pictures/index.html.erb +83 -0
- data/app/views/{admin → alchemy/admin}/pictures/new.html.erb +3 -3
- data/app/views/alchemy/admin/pictures/show_in_window.html.erb +1 -0
- data/app/views/{admin → alchemy/admin}/pictures/update.js.erb +0 -0
- data/app/views/alchemy/admin/resources/_form.html.erb +20 -0
- data/app/views/alchemy/admin/resources/_resource.html.erb +35 -0
- data/app/views/alchemy/admin/resources/_table.html.erb +23 -0
- data/app/views/alchemy/admin/resources/destroy.js.erb +1 -0
- data/app/views/{admin/languages → alchemy/admin/resources}/edit.html.erb +0 -0
- data/app/views/alchemy/admin/resources/index.html.erb +19 -0
- data/app/views/{admin/languages → alchemy/admin/resources}/new.html.erb +0 -0
- data/app/views/{admin → alchemy/admin}/trash/clear.js.erb +1 -1
- data/app/views/{admin → alchemy/admin}/trash/index.html.erb +4 -4
- data/app/views/alchemy/admin/users/_table.html.erb +54 -0
- data/app/views/{admin → alchemy/admin}/users/_user.html.erb +14 -12
- data/app/views/{admin → alchemy/admin}/users/edit.html.erb +0 -0
- data/app/views/alchemy/admin/users/index.html.erb +41 -0
- data/app/views/{admin → alchemy/admin}/users/new.html.erb +1 -1
- data/app/views/{attachments → alchemy/attachments}/show.html.erb +0 -0
- data/app/views/alchemy/base/500.html.erb +5 -0
- data/app/views/alchemy/base/error_notice.js.erb +2 -0
- data/app/views/alchemy/base/permission_denied.js.erb +2 -0
- data/app/views/alchemy/{redirect.js.erb → base/redirect.js.erb} +0 -0
- data/app/views/alchemy/{remote_errors.js.erb → base/remote_errors.js.erb} +0 -0
- data/app/views/alchemy/{update.js.erb → base/update.js.erb} +0 -0
- data/app/views/{elements → alchemy/elements}/_article_editor.html.erb +0 -0
- data/app/views/{elements → alchemy/elements}/_article_view.html.erb +1 -1
- data/app/views/{elements → alchemy/elements}/_bild_editor.html.erb +0 -0
- data/app/views/{elements → alchemy/elements}/_bild_text_editor.html.erb +0 -0
- data/app/views/{elements → alchemy/elements}/_bild_text_view.html.erb +1 -1
- data/app/views/{elements → alchemy/elements}/_bild_view.html.erb +1 -1
- data/app/views/{elements → alchemy/elements}/_claim_editor.html.erb +0 -0
- data/app/views/{elements → alchemy/elements}/_claim_view.html.erb +0 -0
- data/app/views/{elements → alchemy/elements}/_contactform_editor.html.erb +0 -0
- data/app/views/{elements → alchemy/elements}/_contactform_view.html.erb +0 -0
- data/app/views/{elements → alchemy/elements}/_editor_not_found.html.erb +1 -1
- data/app/views/{elements → alchemy/elements}/_footnote_editor.html.erb +0 -0
- data/app/views/{elements → alchemy/elements}/_footnote_view.html.erb +0 -0
- data/app/views/{elements → alchemy/elements}/_header_editor.html.erb +0 -0
- data/app/views/{elements → alchemy/elements}/_header_view.html.erb +1 -1
- data/app/views/{elements → alchemy/elements}/_headline_editor.html.erb +0 -0
- data/app/views/{elements → alchemy/elements}/_headline_view.html.erb +0 -0
- data/app/views/{elements → alchemy/elements}/_image_mosaic_editor.html.erb +0 -0
- data/app/views/{elements → alchemy/elements}/_image_mosaic_view.html.erb +1 -1
- data/app/views/{elements → alchemy/elements}/_intro_editor.html.erb +0 -0
- data/app/views/{elements → alchemy/elements}/_intro_image_text_editor.html.erb +0 -0
- data/app/views/{elements → alchemy/elements}/_intro_image_text_view.html.erb +1 -1
- data/app/views/{elements → alchemy/elements}/_intro_view.html.erb +0 -0
- data/app/views/{elements → alchemy/elements}/_news_editor.html.erb +0 -0
- data/app/views/{elements → alchemy/elements}/_news_view.html.erb +0 -0
- data/app/views/alchemy/elements/_searchresult_editor.html.erb +1 -0
- data/app/views/alchemy/elements/_searchresult_view.html.erb +4 -0
- data/app/views/alchemy/elements/_sitemap_editor.html.erb +3 -0
- data/app/views/{elements → alchemy/elements}/_sitemap_view.html.erb +2 -2
- data/app/views/{elements → alchemy/elements}/_sitename_editor.html.erb +0 -0
- data/app/views/{elements → alchemy/elements}/_sitename_view.html.erb +0 -0
- data/app/views/{elements → alchemy/elements}/_subheadline_editor.html.erb +0 -0
- data/app/views/{elements → alchemy/elements}/_subheadline_view.html.erb +0 -0
- data/app/views/{elements → alchemy/elements}/_text_editor.html.erb +0 -0
- data/app/views/{elements → alchemy/elements}/_text_view.html.erb +0 -0
- data/app/views/{elements → alchemy/elements}/_view_not_found.html.erb +0 -0
- data/app/views/alchemy/elements/show.html.erb +6 -0
- data/app/views/{elements → alchemy/elements}/show.js.erb +1 -1
- data/app/views/alchemy/essences/_essence_audio_editor.html.erb +1 -0
- data/app/views/{essences → alchemy/essences}/_essence_audio_view.html.erb +0 -0
- data/app/views/{essences → alchemy/essences}/_essence_date_editor.html.erb +0 -0
- data/app/views/{essences → alchemy/essences}/_essence_date_view.html.erb +0 -0
- data/app/views/{essences → alchemy/essences}/_essence_file_editor.html.erb +9 -9
- data/app/views/{essences → alchemy/essences}/_essence_file_view.html.erb +1 -1
- data/app/views/alchemy/essences/_essence_flash_editor.html.erb +1 -0
- data/app/views/{essences → alchemy/essences}/_essence_flash_view.html.erb +0 -0
- data/app/views/{essences → alchemy/essences}/_essence_html_editor.html.erb +0 -0
- data/app/views/{essences → alchemy/essences}/_essence_html_view.html.erb +0 -0
- data/app/views/{essences → alchemy/essences}/_essence_picture_editor.html.erb +8 -8
- data/app/views/{essences → alchemy/essences}/_essence_picture_tools.html.erb +11 -11
- data/app/views/{essences → alchemy/essences}/_essence_picture_view.html.erb +2 -4
- data/app/views/alchemy/essences/_essence_richtext_editor.html.erb +11 -0
- data/app/views/{essences → alchemy/essences}/_essence_richtext_view.html.erb +0 -0
- data/app/views/{essences → alchemy/essences}/_essence_text_editor.html.erb +6 -6
- data/app/views/{essences → alchemy/essences}/_essence_text_view.html.erb +0 -0
- data/app/views/alchemy/essences/_essence_video_editor.html.erb +1 -0
- data/app/views/{essences → alchemy/essences}/_essence_video_view.html.erb +1 -1
- data/app/views/{messages → alchemy/messages}/contact_form_mail.html.erb +0 -0
- data/app/views/{messages → alchemy/messages}/contact_form_mail.text.erb +0 -0
- data/app/views/{messages → alchemy/messages}/new.html.erb +0 -0
- data/app/views/{navigation → alchemy/navigation}/_image_link.html.erb +0 -0
- data/app/views/{navigation → alchemy/navigation}/_link.html.erb +1 -1
- data/app/views/{navigation → alchemy/navigation}/_renderer.html.erb +0 -0
- data/app/views/alchemy/notifications/admin_user_created.text.erb +13 -0
- data/app/views/alchemy/notifications/registered_user_created.text.erb +10 -0
- data/app/views/{page_layouts → alchemy/page_layouts}/_contact.html.erb +0 -0
- data/app/views/{page_layouts → alchemy/page_layouts}/_external.html.erb +0 -0
- data/app/views/{page_layouts → alchemy/page_layouts}/_intro.html.erb +0 -0
- data/app/views/{page_layouts → alchemy/page_layouts}/_layout_footer.html.erb +0 -0
- data/app/views/{page_layouts → alchemy/page_layouts}/_layout_header.html.erb +0 -0
- data/app/views/{page_layouts → alchemy/page_layouts}/_news.html.erb +0 -0
- data/app/views/{_newsletter_layout.html.erb → alchemy/page_layouts/_newsletter_layout.html.erb} +0 -0
- data/app/views/{page_layouts → alchemy/page_layouts}/_search.html.erb +0 -0
- data/app/views/{page_layouts → alchemy/page_layouts}/_standard.html.erb +0 -0
- data/app/views/{pages → alchemy/pages}/show.html.erb +0 -0
- data/app/views/{pages → alchemy/pages}/show.rss.builder +0 -0
- data/app/views/{pages → alchemy/pages}/sitemap.xml.erb +0 -0
- data/app/views/{pictures → alchemy/pictures}/show.gif.flexi +0 -0
- data/app/views/{pictures → alchemy/pictures}/show.jpg.flexi +0 -0
- data/app/views/{pictures → alchemy/pictures}/show.png.flexi +0 -0
- data/app/views/{pictures → alchemy/pictures}/thumbnail.png.flexi +0 -0
- data/app/views/{pictures → alchemy/pictures}/zoom.png.flexi +0 -0
- data/app/views/alchemy/search/_result.html.erb +9 -0
- data/app/views/alchemy/user_sessions/leave.html.erb +11 -0
- data/app/views/alchemy/user_sessions/login.html.erb +47 -0
- data/app/views/alchemy/user_sessions/logout.html.erb +3 -0
- data/app/views/alchemy/user_sessions/signup.html.erb +14 -0
- data/app/views/layouts/{alchemy.html.erb → alchemy/admin.html.erb} +23 -17
- data/app/views/layouts/alchemy/login.html.erb +37 -0
- data/app/views/layouts/alchemy/pages.html.erb +29 -0
- data/app/views/layouts/{sitemap.xml.erb → alchemy/sitemap.xml.erb} +0 -0
- data/config/alchemy/config.yml +2 -80
- data/config/alchemy/modules.yml +70 -0
- data/config/alchemy/page_layouts.yml +2 -0
- data/config/authorization_rules.rb +32 -39
- data/config/locales/alchemy.de.yml +789 -0
- data/config/locales/alchemy.en.yml +587 -0
- data/config/routes.rb +144 -142
- data/db/migrate/20111116125112_namespace_models.rb +23 -0
- data/lib/alchemy/auth_engine.rb +7 -0
- data/lib/alchemy/capistrano.rb +4 -1
- data/lib/alchemy/engine.rb +39 -25
- data/lib/alchemy/essence.rb +5 -1
- data/lib/alchemy/i18n.rb +47 -0
- data/lib/alchemy/modules.rb +38 -0
- data/lib/alchemy/page_layout.rb +98 -56
- data/lib/alchemy/seeder.rb +60 -110
- data/lib/alchemy/tinymce.rb +2 -2
- data/lib/alchemy/version.rb +3 -3
- data/lib/alchemy_cms.rb +23 -23
- data/lib/rails/generators/alchemy/elements/elements_generator.rb +1 -1
- data/lib/rails/generators/alchemy/elements/templates/editor.html.erb +1 -1
- data/lib/rails/generators/alchemy/elements/templates/view.html.erb +2 -2
- data/lib/rails/generators/alchemy/page_layouts/page_layouts_generator.rb +1 -1
- data/lib/rails/generators/alchemy/plugin/plugin_generator.rb +0 -1
- data/lib/rails/generators/alchemy/scaffold/files/pages.html.erb +1 -1
- data/lib/rails/generators/alchemy/scaffold/scaffold_generator.rb +34 -34
- data/lib/tasks/install.rake +2 -9
- data/lib/tasks/upgrade.rake +69 -208
- data/spec/controllers/admin/clipboard_controller_spec.rb +33 -35
- data/spec/controllers/admin/contents_controller_spec.rb +5 -5
- data/spec/controllers/admin/elements_controller_spec.rb +22 -0
- data/spec/controllers/admin/trash_controller_spec.rb +5 -5
- data/spec/controllers/base_controller_spec.rb +67 -0
- data/spec/controllers/pages_controller_spec.rb +6 -6
- data/spec/dummy/config/application.rb +1 -8
- data/spec/dummy/config/routes.rb +2 -57
- data/spec/dummy/db/schema.rb +27 -27
- data/spec/factories.rb +8 -8
- data/spec/helpers/{alchemy_helper_spec.rb → admin/base_helper_spec.rb} +8 -1
- data/spec/helpers/admin/contents_helper_spec.rb +25 -0
- data/spec/helpers/admin/elements_helper_spec.rb +31 -3
- data/spec/helpers/admin/essences_helper_spec.rb +27 -0
- data/spec/helpers/elements_helper_spec.rb +99 -21
- data/spec/helpers/essences_helper_spec.rb +1 -18
- data/spec/helpers/pages_helper_spec.rb +212 -26
- data/spec/integration/admin/pages_controller_spec.rb +56 -0
- data/spec/integration/navigation_spec.rb +1 -1
- data/spec/integration/pages_controller_spec.rb +85 -68
- data/spec/integration/security_spec.rb +49 -22
- data/spec/models/content_spec.rb +3 -3
- data/spec/models/element_spec.rb +19 -11
- data/spec/models/essence_richtext_spec.rb +2 -2
- data/spec/models/language_spec.rb +36 -7
- data/spec/models/page_spec.rb +57 -13
- data/spec/models/user_spec.rb +1 -1
- data/spec/page_layout_spec.rb +13 -3
- data/spec/routing_spec.rb +12 -8
- data/spec/spec_helper.rb +8 -9
- data/spec/support/controller_hacks.rb +37 -0
- data/vendor/assets/javascripts/swfupload/SWFObject License.txt +4 -0
- data/vendor/assets/javascripts/swfupload/swfupload.cookies.js +53 -0
- data/vendor/assets/javascripts/swfupload/swfupload.js +1 -1
- data/vendor/assets/javascripts/swfupload/{queue.js → swfupload.queue.js} +97 -97
- data/vendor/assets/javascripts/swfupload/swfupload.speed.js +342 -0
- data/vendor/assets/javascripts/swfupload/swfupload.swfobject.js +111 -0
- data/vendor/assets/javascripts/tiny_mce/license.txt +504 -504
- data/vendor/assets/javascripts/tiny_mce/plugins/autoresize/editor_plugin.js +1 -1
- data/vendor/assets/javascripts/tiny_mce/plugins/fullscreen/fullscreen.htm +110 -110
- data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css +90 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/template.htm +387 -387
- data/vendor/assets/javascripts/tiny_mce/plugins/paste/js/pastetext.js +36 -36
- data/vendor/assets/javascripts/tiny_mce/plugins/paste/js/pasteword.js +51 -51
- data/vendor/assets/javascripts/tiny_mce/plugins/paste/pastetext.htm +26 -26
- data/vendor/assets/javascripts/tiny_mce/plugins/paste/pasteword.htm +21 -21
- data/vendor/assets/javascripts/tiny_mce/plugins/table/cell.htm +180 -180
- data/vendor/assets/javascripts/tiny_mce/plugins/table/css/cell.css +16 -16
- data/vendor/assets/javascripts/tiny_mce/plugins/table/css/row.css +25 -25
- data/vendor/assets/javascripts/tiny_mce/plugins/table/css/table.css +13 -13
- data/vendor/assets/javascripts/tiny_mce/plugins/table/editor_plugin.js +1 -1
- data/vendor/assets/javascripts/tiny_mce/plugins/table/js/cell.js +319 -319
- data/vendor/assets/javascripts/tiny_mce/plugins/table/js/merge_cells.js +27 -27
- data/vendor/assets/javascripts/tiny_mce/plugins/table/js/row.js +237 -237
- data/vendor/assets/javascripts/tiny_mce/plugins/table/js/table.js +484 -450
- data/vendor/assets/javascripts/tiny_mce/plugins/table/merge_cells.htm +32 -32
- data/vendor/assets/javascripts/tiny_mce/plugins/table/row.htm +158 -158
- data/vendor/assets/javascripts/tiny_mce/plugins/table/table.htm +188 -188
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/about.htm +52 -52
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/anchor.htm +26 -26
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/charmap.htm +55 -51
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/color_picker.htm +74 -74
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/editor_template.js +1 -1
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/image.htm +80 -80
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/about.js +73 -73
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/anchor.js +43 -43
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/charmap.js +363 -355
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/color_picker.js +329 -329
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/image.js +251 -251
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/link.js +153 -153
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/source_editor.js +56 -56
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/langs/en_dlg.js +1 -1
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/link.htm +57 -57
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/shortcuts.htm +47 -47
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/content.css +50 -50
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/dialog.css +117 -117
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/ui.css +214 -214
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/highcontrast/content.css +24 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/highcontrast/dialog.css +105 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/highcontrast/ui.css +102 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/content.css +48 -48
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css +117 -117
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui.css +217 -217
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css +7 -7
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css +5 -5
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/source_editor.htm +25 -25
- data/vendor/assets/javascripts/tiny_mce/tiny_mce.js +1 -1
- data/vendor/assets/javascripts/tiny_mce/utils/editable_selects.js +70 -70
- data/vendor/assets/javascripts/tiny_mce/utils/form_utils.js +210 -210
- data/vendor/assets/javascripts/tiny_mce/utils/mctabs.js +161 -161
- data/vendor/assets/javascripts/tiny_mce/utils/validate.js +252 -252
- metadata +432 -465
- data/app/controllers/admin/attachments_controller.rb +0 -136
- data/app/controllers/admin/clipboard_controller.rb +0 -43
- data/app/controllers/admin/contents_controller.rb +0 -60
- data/app/controllers/admin/elements_controller.rb +0 -134
- data/app/controllers/admin/essence_audios_controller.rb +0 -10
- data/app/controllers/admin/essence_files_controller.rb +0 -25
- data/app/controllers/admin/essence_flashes_controller.rb +0 -10
- data/app/controllers/admin/essence_pictures_controller.rb +0 -84
- data/app/controllers/admin/essence_videos_controller.rb +0 -10
- data/app/controllers/admin/languages_controller.rb +0 -64
- data/app/controllers/admin/layoutpages_controller.rb +0 -12
- data/app/controllers/admin/pages_controller.rb +0 -251
- data/app/controllers/admin/pictures_controller.rb +0 -143
- data/app/controllers/admin/trash_controller.rb +0 -28
- data/app/controllers/admin/users_controller.rb +0 -73
- data/app/controllers/admin_controller.rb +0 -76
- data/app/controllers/alchemy_controller.rb +0 -245
- data/app/controllers/attachments_controller.rb +0 -28
- data/app/controllers/elements_controller.rb +0 -16
- data/app/controllers/messages_controller.rb +0 -113
- data/app/controllers/pages_controller.rb +0 -150
- data/app/controllers/pictures_controller.rb +0 -63
- data/app/helpers/admin/attachments_helper.rb +0 -7
- data/app/helpers/admin/elements_helper.rb +0 -112
- data/app/helpers/admin/pages_helper.rb +0 -38
- data/app/helpers/admin/pictures_helper.rb +0 -26
- data/app/helpers/alchemy_helper.rb +0 -379
- data/app/helpers/contents_helper.rb +0 -69
- data/app/helpers/elements_helper.rb +0 -170
- data/app/helpers/essences_helper.rb +0 -167
- data/app/helpers/layout_helper.rb +0 -37
- data/app/helpers/pages_helper.rb +0 -503
- data/app/mailers/messages.rb +0 -15
- data/app/mailers/notifications.rb +0 -23
- data/app/models/attachment.rb +0 -80
- data/app/models/cell.rb +0 -59
- data/app/models/content.rb +0 -145
- data/app/models/element.rb +0 -476
- data/app/models/essence_audio.rb +0 -17
- data/app/models/essence_date.rb +0 -20
- data/app/models/essence_file.rb +0 -17
- data/app/models/essence_flash.rb +0 -15
- data/app/models/essence_html.rb +0 -19
- data/app/models/essence_picture.rb +0 -27
- data/app/models/essence_richtext.rb +0 -61
- data/app/models/essence_text.rb +0 -38
- data/app/models/essence_video.rb +0 -17
- data/app/models/folded_page.rb +0 -3
- data/app/models/language.rb +0 -83
- data/app/models/message.rb +0 -69
- data/app/models/page.rb +0 -545
- data/app/models/picture.rb +0 -98
- data/app/models/user.rb +0 -70
- data/app/models/user_session.rb +0 -10
- data/app/sweepers/content_sweeper.rb +0 -20
- data/app/sweepers/pages_sweeper.rb +0 -47
- data/app/sweepers/pictures_sweeper.rb +0 -21
- data/app/views/_contact.html.erb +0 -3
- data/app/views/_intro.html.erb +0 -3
- data/app/views/_news.html.erb +0 -3
- data/app/views/_search.html.erb +0 -3
- data/app/views/_standard.html.erb +0 -1
- data/app/views/admin/attachments/_files_list.html.erb +0 -24
- data/app/views/admin/attachments/index.html.erb +0 -30
- data/app/views/admin/clipboard/index.html.erb +0 -19
- data/app/views/admin/clipboard/insert.js.erb +0 -14
- data/app/views/admin/clipboard/remove.js.erb +0 -10
- data/app/views/admin/elements/_new_element_form.html.erb +0 -25
- data/app/views/admin/elements/new.html.erb +0 -33
- data/app/views/admin/index.html.erb +0 -102
- data/app/views/admin/infos.html.erb +0 -5
- data/app/views/admin/languages/_form.html.erb +0 -34
- data/app/views/admin/languages/_language.html.erb +0 -35
- data/app/views/admin/languages/destroy.js.erb +0 -1
- data/app/views/admin/languages/index.html.erb +0 -41
- data/app/views/admin/layoutpages/index.html.erb +0 -75
- data/app/views/admin/leave.html.erb +0 -11
- data/app/views/admin/login.html.erb +0 -46
- data/app/views/admin/logout.html.erb +0 -5
- data/app/views/admin/pages/_create_language_form.html.erb +0 -43
- data/app/views/admin/pages/configure.html.erb +0 -71
- data/app/views/admin/pages/edit.html.erb +0 -185
- data/app/views/admin/pages/flush.js.erb +0 -2
- data/app/views/admin/pages/index.html.erb +0 -108
- data/app/views/admin/pages/locked.html.erb +0 -3
- data/app/views/admin/partials/_mainnavigation_entry.html.erb +0 -27
- data/app/views/admin/partials/_pagination_links.html.erb +0 -5
- data/app/views/admin/partials/_per_page_links.html.erb +0 -17
- data/app/views/admin/partials/_sub_navigation.html.erb +0 -14
- data/app/views/admin/partials/_upload_form.html.erb +0 -119
- data/app/views/admin/pictures/_pictures_list.html.erb +0 -12
- data/app/views/admin/pictures/index.html.erb +0 -89
- data/app/views/admin/pictures/show_in_window.html.erb +0 -1
- data/app/views/admin/signup.html.erb +0 -16
- data/app/views/admin/users/_table.html.erb +0 -54
- data/app/views/admin/users/index.html.erb +0 -41
- data/app/views/alchemy/error_notice.js.erb +0 -1
- data/app/views/alchemy/permission_denied.js.erb +0 -2
- data/app/views/elements/_searchresult_editor.html.erb +0 -1
- data/app/views/elements/_searchresult_view.html.erb +0 -49
- data/app/views/elements/_sitemap_editor.html.erb +0 -3
- data/app/views/elements/show.html.erb +0 -6
- data/app/views/essences/_essence_audio_editor.html.erb +0 -1
- data/app/views/essences/_essence_flash_editor.html.erb +0 -1
- data/app/views/essences/_essence_richtext_editor.html.erb +0 -9
- data/app/views/essences/_essence_video_editor.html.erb +0 -1
- data/app/views/layouts/login.html.erb +0 -59
- data/app/views/layouts/pages.html.erb +0 -29
- data/app/views/notifications/admin_user_created.text.erb +0 -13
- data/app/views/notifications/registered_user_created.text.erb +0 -10
- data/app/views/page_layouts/_newsletter_layout.html.erb +0 -1
- data/config/initializers/authorization.rb +0 -4
- data/config/initializers/fast_gettext.rb +0 -3
- data/config/locales/de.yml +0 -377
- data/config/locales/en.yml +0 -371
- data/lib/alchemy/controller.rb +0 -79
- data/lib/rails/generators/alchemy/plugin/templates/gettext.rb +0 -2
- data/lib/tasks/gettext.rake +0 -120
- data/lib/translation_extras/alchemy_core_modules.rb +0 -11
- data/locale/alchemy.pot +0 -1749
- data/locale/de/alchemy.po +0 -1795
- data/locale/en/alchemy.po +0 -1745
- data/locale/missing_translations.rb +0 -4
- data/locale/model_attributes.rb +0 -56
- data/spec/helpers/contents_helper_spec.rb +0 -27
- data/vendor/assets/javascripts/jquery-1.6.2.min.js +0 -18
- data/vendor/assets/javascripts/jquery-ui-custom-1.8.16.min.js +0 -550
- data/vendor/assets/javascripts/swfupload/fileprogress.js +0 -203
- data/vendor/assets/javascripts/swfupload/handlers.js +0 -171
- 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
|
|
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
|
|
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="
|
|
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
|
|
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
|
-
|
|
9
|
+
@element = Factory(:element, :page => @page)
|
|
10
|
+
session[:language_id] = @page.language_id
|
|
10
11
|
end
|
|
11
12
|
|
|
12
|
-
|
|
13
|
-
helper.render_element(@element).should match(/
|
|
14
|
-
|
|
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
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
describe "#render_elements" do
|
|
22
|
+
|
|
23
|
+
before(:each) do
|
|
24
|
+
helper.stub!(:configuration).and_return(true)
|
|
25
|
+
end
|
|
21
26
|
|
|
22
|
-
|
|
23
|
-
|
|
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
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
|
|
113
|
+
it "should return the data-alchemy-element HTML attribute for element" do
|
|
36
114
|
@preview_mode = true
|
|
37
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
10
|
+
render_page_layout.should have_selector('div#content')
|
|
9
11
|
end
|
|
10
12
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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
|
-
|
|
21
|
-
|
|
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
|
|
25
|
-
helper.render_breadcrumb.should have_selector('a.active.
|
|
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
|
|
29
|
-
|
|
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
|
|
33
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
317
|
+
helper.language_switcher.should == nil
|
|
132
318
|
end
|
|
133
319
|
|
|
134
320
|
end
|