alchemy_cms 2.1.12 → 2.2.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.travis.yml +1 -1
- data/Gemfile +20 -16
- data/README.md +11 -7
- data/alchemy_cms.gemspec +31 -29
- data/app/assets/javascripts/alchemy/alchemy.base.js +234 -233
- data/app/assets/javascripts/alchemy/alchemy.buttons.js +26 -26
- data/app/assets/javascripts/alchemy/alchemy.datepicker.js +32 -32
- data/app/assets/javascripts/alchemy/alchemy.dirty.js +78 -78
- data/app/assets/javascripts/alchemy/alchemy.dragndrop.js +103 -103
- data/app/assets/javascripts/alchemy/alchemy.element_editor_selector.js +84 -84
- data/app/assets/javascripts/alchemy/alchemy.elements_window.js +88 -88
- data/app/assets/javascripts/alchemy/alchemy.file_progress.js +92 -0
- data/app/assets/javascripts/alchemy/alchemy.growler.js +23 -23
- data/app/assets/javascripts/alchemy/alchemy.html5.js +23 -0
- data/app/assets/javascripts/alchemy/alchemy.image_cropper.js +53 -52
- data/app/assets/javascripts/alchemy/alchemy.jquery_loader.js +33 -30
- data/app/assets/javascripts/alchemy/alchemy.js +2 -0
- data/app/assets/javascripts/alchemy/alchemy.js_extensions.js +14 -14
- data/app/assets/javascripts/alchemy/alchemy.link_overlay.js.coffee +181 -0
- data/app/assets/javascripts/alchemy/alchemy.menubar.js +48 -48
- data/app/assets/javascripts/alchemy/alchemy.page_sorter.js +39 -39
- data/app/assets/javascripts/alchemy/alchemy.preview.js +81 -83
- data/app/assets/javascripts/alchemy/alchemy.preview_window.js +86 -86
- data/app/assets/javascripts/alchemy/alchemy.routes.js.erb +23 -23
- data/app/assets/javascripts/alchemy/alchemy.swf_upload.js +208 -353
- data/app/assets/javascripts/alchemy/alchemy.uploader.js +279 -0
- data/app/assets/javascripts/alchemy/alchemy.windows.js +268 -268
- data/app/assets/javascripts/tiny_mce/plugins/alchemy_link/editor_plugin.js +42 -42
- data/app/assets/stylesheets/alchemy/_defaults.scss +89 -89
- data/app/assets/stylesheets/alchemy/base.css.scss +790 -804
- data/app/assets/stylesheets/alchemy/buttons.css.scss +263 -264
- data/app/assets/stylesheets/alchemy/dashboard.css.scss +66 -66
- data/app/assets/stylesheets/alchemy/elements.css.scss +575 -564
- data/app/assets/stylesheets/alchemy/flash.css.scss +45 -45
- data/app/assets/stylesheets/alchemy/frame.css.scss +262 -262
- data/app/assets/stylesheets/alchemy/icons.css.scss +86 -86
- data/app/assets/stylesheets/alchemy/jquery-ui.alchemy.css.scss +706 -707
- data/app/assets/stylesheets/alchemy/jquery.Jcrop.css.scss +46 -27
- data/app/assets/stylesheets/alchemy/jquery.sb.css.scss +107 -107
- data/app/assets/stylesheets/alchemy/login.css.scss +40 -38
- data/app/assets/stylesheets/alchemy/menubar.css.scss +84 -82
- data/app/assets/stylesheets/alchemy/modules.css.scss +9 -9
- data/app/assets/stylesheets/alchemy/pagination.css.scss +49 -49
- data/app/assets/stylesheets/alchemy/print.css +7 -7
- data/app/assets/stylesheets/alchemy/sitemap.css.scss +185 -154
- data/app/assets/stylesheets/alchemy/standard_set.css +205 -206
- data/app/assets/stylesheets/alchemy/tables.css.scss +94 -60
- data/app/assets/stylesheets/alchemy/tinymce_content.css.scss +34 -34
- data/app/assets/stylesheets/alchemy/tinymce_dialog.css.scss +177 -177
- data/app/assets/stylesheets/alchemy/upload.css.scss +68 -45
- data/app/assets/stylesheets/tiny_mce/plugins/inlinepopups/skins/alchemy/window.css.scss +222 -221
- data/app/controllers/alchemy/admin/attachments_controller.rb +100 -100
- data/app/controllers/alchemy/admin/base_controller.rb +116 -116
- data/app/controllers/alchemy/admin/clipboard_controller.rb +44 -44
- data/app/controllers/alchemy/admin/contents_controller.rb +55 -55
- data/app/controllers/alchemy/admin/dashboard_controller.rb +12 -11
- data/app/controllers/alchemy/admin/elements_controller.rb +109 -109
- data/app/controllers/alchemy/admin/essence_audios_controller.rb +8 -8
- data/app/controllers/alchemy/admin/essence_files_controller.rb +20 -20
- data/app/controllers/alchemy/admin/essence_flashes_controller.rb +8 -8
- data/app/controllers/alchemy/admin/essence_pictures_controller.rb +81 -81
- data/app/controllers/alchemy/admin/essence_videos_controller.rb +8 -8
- data/app/controllers/alchemy/admin/languages_controller.rb +16 -4
- data/app/controllers/alchemy/admin/layoutpages_controller.rb +9 -9
- data/app/controllers/alchemy/admin/pages_controller.rb +249 -248
- data/app/controllers/alchemy/admin/pictures_controller.rb +105 -105
- data/app/controllers/alchemy/admin/resources_controller.rb +111 -166
- data/app/controllers/alchemy/admin/trash_controller.rb +18 -18
- data/app/controllers/alchemy/admin/users_controller.rb +69 -69
- data/app/controllers/alchemy/attachments_controller.rb +27 -27
- data/app/controllers/alchemy/base_controller.rb +159 -155
- data/app/controllers/alchemy/elements_controller.rb +16 -16
- data/app/controllers/alchemy/messages_controller.rb +59 -59
- data/app/controllers/alchemy/pages_controller.rb +194 -198
- data/app/controllers/alchemy/pictures_controller.rb +57 -57
- data/app/controllers/alchemy/user_sessions_controller.rb +70 -70
- data/app/helpers/alchemy/admin/attachments_helper.rb +7 -7
- data/app/helpers/alchemy/admin/base_helper.rb +425 -425
- data/app/helpers/alchemy/admin/contents_helper.rb +72 -72
- data/app/helpers/alchemy/admin/elements_helper.rb +108 -107
- data/app/helpers/alchemy/admin/essences_helper.rb +108 -108
- data/app/helpers/alchemy/admin/pages_helper.rb +42 -42
- data/app/helpers/alchemy/admin/pictures_helper.rb +26 -26
- data/app/helpers/alchemy/base_helper.rb +90 -90
- data/app/helpers/alchemy/elements_helper.rb +167 -168
- data/app/helpers/alchemy/essences_helper.rb +133 -133
- data/app/helpers/alchemy/pages_helper.rb +515 -526
- data/app/helpers/alchemy/pictures_helper.rb +19 -0
- data/app/mailers/alchemy/messages.rb +13 -13
- data/app/mailers/alchemy/notifications.rb +19 -19
- data/app/models/alchemy.rb +3 -3
- data/app/models/alchemy/attachment.rb +52 -78
- data/app/models/alchemy/cell.rb +48 -48
- data/app/models/alchemy/content.rb +196 -196
- data/app/models/alchemy/element.rb +500 -490
- data/app/models/alchemy/essence_audio.rb +7 -7
- data/app/models/alchemy/essence_date.rb +10 -10
- data/app/models/alchemy/essence_file.rb +7 -7
- data/app/models/alchemy/essence_flash.rb +6 -6
- data/app/models/alchemy/essence_html.rb +9 -9
- data/app/models/alchemy/essence_picture.rb +17 -17
- data/app/models/alchemy/essence_richtext.rb +53 -53
- data/app/models/alchemy/essence_text.rb +21 -21
- data/app/models/alchemy/essence_video.rb +7 -7
- data/app/models/alchemy/folded_page.rb +3 -3
- data/app/models/alchemy/language.rb +91 -91
- data/app/models/alchemy/language/code.rb +14 -14
- data/app/models/alchemy/message.rb +48 -45
- data/app/models/alchemy/page.rb +555 -558
- data/app/models/alchemy/picture.rb +100 -99
- data/app/models/alchemy/user.rb +76 -74
- data/app/models/alchemy/user_session.rb +8 -8
- data/app/sweepers/alchemy/content_sweeper.rb +15 -15
- data/app/sweepers/alchemy/pages_sweeper.rb +50 -50
- data/app/sweepers/alchemy/pictures_sweeper.rb +14 -14
- data/app/views/alchemy/admin/attachments/_archive_overlay.html.erb +23 -23
- data/app/views/alchemy/admin/attachments/_attachment.html.erb +56 -56
- data/app/views/alchemy/admin/attachments/_file_to_assign.html.erb +15 -15
- data/app/views/alchemy/admin/attachments/_files_list.html.erb +16 -16
- data/app/views/alchemy/admin/attachments/create.js.erb +2 -2
- data/app/views/alchemy/admin/attachments/destroy.js.erb +3 -3
- data/app/views/alchemy/admin/attachments/edit.html.erb +10 -10
- data/app/views/alchemy/admin/attachments/index.html.erb +14 -14
- data/app/views/alchemy/admin/attachments/new.html.erb +9 -9
- data/app/views/alchemy/admin/clipboard/index.html.erb +21 -21
- data/app/views/alchemy/admin/clipboard/insert.js.erb +5 -5
- data/app/views/alchemy/admin/contents/_missing.html.erb +1 -1
- data/app/views/alchemy/admin/contents/create.js.erb +33 -33
- data/app/views/alchemy/admin/contents/destroy.js.erb +5 -5
- data/app/views/alchemy/admin/contents/new.html.erb +13 -13
- data/app/views/alchemy/admin/contents/order.js.erb +2 -2
- data/app/views/alchemy/admin/dashboard/index.html.erb +96 -92
- data/app/views/alchemy/admin/elements/_add_content.html.erb +12 -12
- data/app/views/alchemy/admin/elements/_element.html.erb +3 -3
- data/app/views/alchemy/admin/elements/_new_element_form.html.erb +28 -28
- data/app/views/alchemy/admin/elements/_picture_editor.html.erb +21 -21
- data/app/views/alchemy/admin/elements/create.js.erb +32 -32
- data/app/views/alchemy/admin/elements/index.html.erb +2 -2
- data/app/views/alchemy/admin/elements/new.html.erb +31 -31
- data/app/views/alchemy/admin/elements/order.js.erb +3 -3
- data/app/views/alchemy/admin/elements/trash.js.erb +13 -13
- data/app/views/alchemy/admin/elements/update.js.erb +6 -6
- data/app/views/alchemy/admin/essence_files/assign.js.erb +6 -6
- data/app/views/alchemy/admin/essence_pictures/crop.html.erb +32 -32
- data/app/views/alchemy/admin/essence_pictures/destroy.js.erb +1 -1
- data/app/views/alchemy/admin/essence_pictures/edit.html.erb +1 -1
- data/app/views/alchemy/admin/essence_pictures/update.js.erb +11 -11
- data/app/views/alchemy/admin/languages/_form.html.erb +51 -45
- data/app/views/alchemy/admin/languages/_language.html.erb +45 -45
- data/app/views/alchemy/admin/languages/_table.html.erb +25 -25
- data/app/views/alchemy/admin/layoutpages/index.html.erb +35 -35
- data/app/views/alchemy/admin/pages/_create_language_form.html.erb +42 -42
- data/app/views/alchemy/admin/pages/_external_link.html.erb +1 -1
- data/app/views/alchemy/admin/pages/_new_page_form.html.erb +27 -27
- data/app/views/alchemy/admin/pages/_page.html.erb +112 -112
- data/app/views/alchemy/admin/pages/_sitemap.html.erb +1 -1
- data/app/views/alchemy/admin/pages/configure.html.erb +71 -69
- data/app/views/alchemy/admin/pages/configure_external.html.erb +38 -38
- data/app/views/alchemy/admin/pages/destroy.js.erb +10 -10
- data/app/views/alchemy/admin/pages/edit.html.erb +165 -165
- data/app/views/alchemy/admin/pages/fold.js.erb +2 -2
- data/app/views/alchemy/admin/pages/index.html.erb +66 -66
- data/app/views/alchemy/admin/pages/locked.html.erb +1 -1
- data/app/views/alchemy/admin/pages/new.html.erb +40 -40
- data/app/views/alchemy/admin/pages/sort.js.erb +4 -4
- data/app/views/alchemy/admin/pages/unlock.js.erb +6 -6
- data/app/views/alchemy/admin/pages/update.js.erb +19 -19
- data/app/views/alchemy/admin/partials/_flash.html.erb +2 -2
- data/app/views/alchemy/admin/partials/_flash_notices.html.erb +1 -1
- data/app/views/alchemy/admin/partials/_flash_upload.html.erb +38 -0
- data/app/views/alchemy/admin/partials/_language_tree_select.html.erb +15 -15
- data/app/views/alchemy/admin/partials/_main_navigation_entry.html.erb +8 -8
- data/app/views/alchemy/admin/partials/_remote_search_form.html.erb +35 -35
- data/app/views/alchemy/admin/partials/_search_form.html.erb +14 -14
- data/app/views/alchemy/admin/partials/_sub_navigation_tab.html.erb +6 -6
- data/app/views/alchemy/admin/partials/_upload_form.html.erb +56 -118
- data/app/views/alchemy/admin/pictures/_archive_overlay.html.erb +11 -11
- data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +71 -71
- data/app/views/alchemy/admin/pictures/_picture.html.erb +32 -32
- data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +26 -26
- data/app/views/alchemy/admin/pictures/_pictures_list.html.erb +6 -6
- data/app/views/alchemy/admin/pictures/create.js.erb +7 -7
- data/app/views/alchemy/admin/pictures/index.html.erb +67 -67
- data/app/views/alchemy/admin/pictures/show_in_window.html.erb +5 -4
- data/app/views/alchemy/admin/resources/_form.html.erb +25 -19
- data/app/views/alchemy/admin/resources/_resource.html.erb +37 -36
- data/app/views/alchemy/admin/resources/_table.html.erb +17 -17
- data/app/views/alchemy/admin/resources/destroy.js.erb +1 -1
- data/app/views/alchemy/admin/resources/index.html.erb +14 -14
- data/app/views/alchemy/admin/trash/index.html.erb +20 -20
- data/app/views/alchemy/admin/users/_table.html.erb +52 -52
- data/app/views/alchemy/admin/users/_user.html.erb +35 -36
- data/app/views/alchemy/admin/users/index.html.erb +26 -27
- data/app/views/alchemy/base/error_notice.html.erb +2 -2
- data/app/views/alchemy/base/update.js.erb +1 -1
- data/app/views/alchemy/elements/_contactform_view.html.erb +76 -76
- data/app/views/alchemy/elements/_download_view.html.erb +1 -1
- data/app/views/alchemy/elements/_editor_not_found.html.erb +3 -3
- data/app/views/alchemy/elements/_searchresult_view.html.erb +2 -2
- data/app/views/alchemy/elements/_sitemap_editor.html.erb +1 -1
- data/app/views/alchemy/essences/_essence_audio_view.html.erb +13 -13
- data/app/views/alchemy/essences/_essence_date_editor.html.erb +10 -10
- data/app/views/alchemy/essences/_essence_file_editor.html.erb +62 -62
- data/app/views/alchemy/essences/_essence_file_view.html.erb +8 -8
- data/app/views/alchemy/essences/_essence_flash_view.html.erb +19 -19
- data/app/views/alchemy/essences/_essence_html_editor.html.erb +6 -6
- data/app/views/alchemy/essences/_essence_picture_editor.html.erb +73 -73
- data/app/views/alchemy/essences/_essence_picture_view.html.erb +34 -34
- data/app/views/alchemy/essences/_essence_richtext_editor.html.erb +7 -7
- data/app/views/alchemy/essences/_essence_text_editor.html.erb +8 -8
- data/app/views/alchemy/navigation/_image_link.html.erb +12 -12
- data/app/views/alchemy/navigation/_link.html.erb +13 -13
- data/app/views/alchemy/navigation/_renderer.html.erb +17 -17
- data/app/views/alchemy/page_layouts/_layout_footer.html.erb +1 -1
- data/app/views/alchemy/page_layouts/_layout_header.html.erb +1 -1
- data/app/views/alchemy/pages/show.rss.builder +14 -14
- data/app/views/alchemy/search/_result.html.erb +7 -7
- data/app/views/alchemy/user_sessions/leave.html.erb +9 -9
- data/app/views/alchemy/user_sessions/login.html.erb +39 -39
- data/app/views/alchemy/user_sessions/logout.html.erb +1 -1
- data/app/views/layouts/alchemy/admin.html.erb +81 -81
- data/app/views/layouts/alchemy/login.html.erb +36 -36
- data/app/views/layouts/alchemy/pages.html.erb +48 -27
- data/bin/alchemy +136 -134
- data/config/alchemy/config.yml +13 -9
- data/config/locales/alchemy.de.yml +24 -30
- data/config/locales/alchemy.en.yml +11 -28
- data/config/routes.rb +146 -146
- data/db/migrate/20100607193638_create_essence_pictures.rb +3 -3
- data/db/migrate/20101109150312_alter_pages_visible_column_default.rb +1 -1
- data/db/migrate/20101109151812_create_languages.rb +3 -3
- data/db/migrate/20110115123343_remove_css_class_default_from_essence_pictures.rb +3 -3
- data/db/migrate/20110224105120_change_pages_visible_default.rb +3 -3
- data/db/migrate/20110228182659_remove_default_page_layout_from_pages.rb +2 -2
- data/db/migrate/20110414163140_remove_display_name_from_elements.rb +3 -3
- data/db/migrate/20110511100516_rename_essence_texts_title_to_link_title.rb +2 -2
- data/db/migrate/20110529130500_add_cell_id_to_elements.rb +3 -3
- data/db/migrate/20110530102804_change_pages_page_layout_column.rb +3 -3
- data/db/migrate/20110711142057_change_open_link_in_new_window_to_link_target.rb +1 -1
- data/db/migrate/20111116125112_namespace_alchemy_models.rb +21 -21
- data/lib/alchemy/auth_engine.rb +5 -5
- data/lib/alchemy/capistrano.rb +64 -64
- data/lib/alchemy/config.rb +47 -44
- data/lib/alchemy/engine.rb +41 -41
- data/lib/alchemy/essence.rb +50 -51
- data/lib/alchemy/i18n.rb +48 -48
- data/lib/alchemy/modules.rb +30 -30
- data/lib/alchemy/mount_point.rb +6 -6
- data/lib/alchemy/page_layout.rb +94 -93
- data/lib/alchemy/resource.rb +82 -0
- data/lib/alchemy/resources_helper.rb +56 -0
- data/lib/alchemy/scoped_pagination_url_helper.rb +8 -8
- data/lib/alchemy/seeder.rb +88 -88
- data/lib/alchemy/tinymce.rb +49 -49
- data/lib/alchemy/upgrader.rb +103 -103
- data/lib/alchemy/version.rb +1 -1
- data/lib/alchemy_cms.rb +26 -27
- data/lib/extensions/action_view.rb +1 -1
- data/lib/extensions/array.rb +3 -3
- data/lib/extensions/hash.rb +3 -3
- data/lib/middleware/flash_session_cookie.rb +1 -1
- data/lib/rails/generators/alchemy/deploy_script/deploy_script_generator.rb +24 -24
- data/lib/rails/generators/alchemy/elements/elements_generator.rb +7 -7
- data/lib/rails/generators/alchemy/elements/templates/view.html.erb +17 -17
- data/lib/rails/generators/alchemy/page_layouts/page_layouts_generator.rb +6 -6
- data/lib/rails/generators/alchemy/plugin/templates/authorization_rules.rb +8 -8
- data/lib/rails/generators/alchemy/scaffold/files/pages.html.erb +7 -7
- data/lib/rails/generators/alchemy/scaffold/scaffold_generator.rb +36 -36
- data/lib/rails/templates/alchemy.rb +1 -1
- data/lib/tasks/ferret.rake +2 -2
- data/lib/tasks/fleximage.rake +32 -32
- data/lib/tasks/install.rake +12 -12
- data/lib/tasks/upgrade.rake +4 -4
- data/spec/controllers/admin/clipboard_controller_spec.rb +43 -43
- data/spec/controllers/admin/contents_controller_spec.rb +22 -22
- data/spec/controllers/admin/elements_controller_spec.rb +13 -13
- data/spec/controllers/admin/languages_controller_spec.rb +31 -0
- data/spec/controllers/admin/pages_controller_spec.rb +10 -41
- data/spec/controllers/admin/resources_controller_spec.rb +19 -0
- data/spec/controllers/admin/trash_controller_spec.rb +11 -11
- data/spec/controllers/base_controller_spec.rb +46 -46
- data/spec/controllers/pages_controller_spec.rb +102 -92
- data/spec/dummy/app/controllers/admin/events_controller.rb +3 -0
- data/spec/dummy/app/controllers/errors_controller.rb +5 -0
- data/spec/dummy/app/models/event.rb +3 -0
- data/spec/dummy/config.ru +1 -1
- data/spec/dummy/config/application.rb +3 -0
- data/spec/dummy/config/authorization_rules.rb +7 -0
- data/spec/dummy/config/environments/development.rb +8 -1
- data/spec/dummy/config/environments/production.rb +1 -1
- data/spec/dummy/config/environments/test.rb +5 -2
- data/spec/dummy/config/routes.rb +9 -1
- data/spec/dummy/db/schema.rb +47 -35
- data/spec/dummy/public/404.html +19 -7
- data/spec/dummy/public/404.html.bak +26 -0
- data/spec/dummy/public/422.html +19 -7
- data/spec/dummy/public/500.html +19 -7
- data/spec/dummy/script/rails +2 -2
- data/spec/factories.rb +76 -76
- data/spec/helpers/admin/base_helper_spec.rb +21 -21
- data/spec/helpers/admin/contents_helper_spec.rb +14 -14
- data/spec/helpers/admin/elements_helper_spec.rb +40 -40
- data/spec/helpers/admin/essences_helper_spec.rb +7 -7
- data/spec/helpers/elements_helper_spec.rb +154 -154
- data/spec/helpers/essences_helper_spec.rb +10 -10
- data/spec/helpers/pages_helper_spec.rb +369 -372
- data/spec/helpers/pictures_helper_spec.rb +14 -0
- data/spec/helpers/url_helpers_spec.rb +29 -34
- data/spec/integration/admin/pages_controller_spec.rb +50 -50
- data/spec/integration/admin/resources_integration_spec.rb +100 -0
- data/spec/integration/navigation_spec.rb +1 -1
- data/spec/integration/pages_controller_spec.rb +205 -207
- data/spec/integration/security_spec.rb +47 -47
- data/spec/javascripts/alchemy/link_overlay_spec.js.coffee +42 -0
- data/spec/javascripts/alchemy_integration_spec.coffee +12 -0
- data/spec/javascripts/fixtures/select.html +3 -0
- data/spec/javascripts/helpers/.gitkeep +0 -0
- data/spec/javascripts/helpers/jasmine-jquery-1.3.1.js +289 -0
- data/spec/javascripts/helpers/mock-ajax.js +207 -0
- data/spec/javascripts/helpers/test_responses/test_responses.js +1 -0
- data/spec/javascripts/spec.css +3 -0
- data/spec/javascripts/spec.js +2 -0
- data/spec/libraries/resource_spec.rb +122 -0
- data/spec/libraries/resources_helper_spec.rb +105 -0
- data/spec/models/content_spec.rb +67 -67
- data/spec/models/element_spec.rb +133 -133
- data/spec/models/essence_picture_spec.rb +5 -5
- data/spec/models/essence_richtext_spec.rb +4 -4
- data/spec/models/language_spec.rb +89 -89
- data/spec/models/page_spec.rb +436 -506
- data/spec/models/picture_spec.rb +34 -34
- data/spec/models/user_spec.rb +2 -2
- data/spec/page_layout_spec.rb +24 -20
- data/spec/routing_spec.rb +253 -253
- data/spec/spec_helper.rb +51 -50
- data/spec/support/alchemy/controller_hacks.rb +25 -25
- data/spec/support/alchemy/specs_helpers.rb +25 -25
- data/spec/support/integration_spec_helper.rb +24 -0
- data/vendor/assets/javascripts/jquery_plugins/jquery.html5uploader.js +271 -0
- data/vendor/assets/javascripts/jquery_plugins/jquery.in-place-edit.js +86 -85
- data/vendor/assets/javascripts/jquery_plugins/jquery.ui.nestedSortable.js +380 -377
- data/vendor/assets/javascripts/jquery_plugins/jquery.ui.tabspaging.js +285 -279
- data/vendor/assets/javascripts/swfupload/SWFObject License.txt +3 -3
- data/vendor/assets/javascripts/swfupload/swfupload.cookies.js +47 -47
- data/vendor/assets/javascripts/swfupload/swfupload.js +612 -612
- data/vendor/assets/javascripts/swfupload/swfupload.queue.js +93 -93
- data/vendor/assets/javascripts/swfupload/swfupload.speed.js +337 -337
- data/vendor/assets/javascripts/swfupload/swfupload.swfobject.js +706 -102
- data/vendor/assets/javascripts/tiny_mce/license.txt +6 -6
- data/vendor/assets/javascripts/tiny_mce/plugins/fullscreen/fullscreen.htm +97 -97
- data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/template.htm +386 -376
- data/vendor/assets/javascripts/tiny_mce/plugins/paste/js/pastetext.js +30 -30
- data/vendor/assets/javascripts/tiny_mce/plugins/paste/js/pasteword.js +45 -45
- data/vendor/assets/javascripts/tiny_mce/plugins/paste/pastetext.htm +20 -17
- data/vendor/assets/javascripts/tiny_mce/plugins/paste/pasteword.htm +12 -12
- data/vendor/assets/javascripts/tiny_mce/plugins/table/cell.htm +183 -173
- data/vendor/assets/javascripts/tiny_mce/plugins/table/css/cell.css +4 -4
- data/vendor/assets/javascripts/tiny_mce/plugins/table/css/row.css +7 -7
- data/vendor/assets/javascripts/tiny_mce/plugins/table/css/table.css +3 -3
- data/vendor/assets/javascripts/tiny_mce/plugins/table/js/cell.js +282 -280
- data/vendor/assets/javascripts/tiny_mce/plugins/table/js/merge_cells.js +15 -15
- data/vendor/assets/javascripts/tiny_mce/plugins/table/js/row.js +204 -204
- data/vendor/assets/javascripts/tiny_mce/plugins/table/js/table.js +435 -435
- data/vendor/assets/javascripts/tiny_mce/plugins/table/merge_cells.htm +24 -22
- data/vendor/assets/javascripts/tiny_mce/plugins/table/row.htm +144 -136
- data/vendor/assets/javascripts/tiny_mce/plugins/table/table.htm +184 -168
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/about.htm +62 -46
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/anchor.htm +17 -16
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/charmap.htm +56 -47
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/color_picker.htm +67 -54
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/editor_template.js +852 -1
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/image.htm +79 -69
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/about.js +48 -48
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/anchor.js +28 -28
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/charmap.js +317 -317
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/color_picker.js +248 -246
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/image.js +246 -246
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/link.js +146 -146
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/source_editor.js +31 -31
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/langs/de.js +1 -1
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/langs/de_dlg.js +1 -1
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/langs/en.js +1 -1
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/langs/en_dlg.js +1 -1
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/link.htm +53 -46
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/shortcuts.htm +57 -45
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/content.css +182 -47
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/dialog.css +399 -92
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/ui.css +891 -187
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/highcontrast/content.css +102 -24
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/highcontrast/dialog.css +377 -78
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/highcontrast/ui.css +452 -77
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/content.css +167 -45
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css +399 -92
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui.css +890 -190
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css +33 -7
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css +15 -4
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/source_editor.htm +18 -15
- data/vendor/assets/javascripts/tiny_mce/utils/editable_selects.js +46 -46
- data/vendor/assets/javascripts/tiny_mce/utils/form_utils.js +124 -124
- data/vendor/assets/javascripts/tiny_mce/utils/mctabs.js +112 -112
- data/vendor/assets/javascripts/tiny_mce/utils/validate.js +213 -213
- metadata +102 -115
- data/app/assets/javascripts/alchemy/alchemy.link_overlay.js +0 -216
- data/lib/tasks/routes.rake +0 -29
- data/spec/integration/admin/resources_spec.rb +0 -19
|
@@ -2,20 +2,20 @@ require 'spec_helper'
|
|
|
2
2
|
|
|
3
3
|
describe Alchemy::EssencesHelper do
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
before(:each) do
|
|
6
|
+
@element = Factory(:element)
|
|
7
|
+
@element.content_by_name('intro').essence.update_attributes(:body => 'hello!')
|
|
8
|
+
end
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
it "should render an essence" do
|
|
11
|
+
content = @element.content_by_name('intro')
|
|
12
12
|
render_essence(content).should match(/hello!/)
|
|
13
|
-
|
|
13
|
+
end
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
it "should render an essence view" do
|
|
16
|
+
content = @element.content_by_name('intro')
|
|
17
17
|
render_essence_view(content).should match(/hello!/)
|
|
18
|
-
|
|
18
|
+
end
|
|
19
19
|
|
|
20
20
|
it "should render an essence view by name" do
|
|
21
21
|
render_essence_view_by_name(@element, 'intro').should match(/hello!/)
|
|
@@ -4,422 +4,419 @@ include Alchemy::BaseHelper
|
|
|
4
4
|
|
|
5
5
|
describe Alchemy::PagesHelper do
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
before(:each) do
|
|
8
|
+
helper.stub(:configuration).and_return(false)
|
|
9
|
+
end
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
it "should render the current page layout" do
|
|
12
|
+
@page = Factory(:public_page)
|
|
13
|
+
render_page_layout.should have_selector('div#content')
|
|
14
|
+
end
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
describe "#render_navigation" do
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
before(:each) do
|
|
19
|
+
@language = Alchemy::Language.get_default
|
|
20
|
+
@root_page = Factory(:language_root_page, :language => @language, :name => 'Home')
|
|
21
|
+
@page = Factory(:public_page, :language => @language, :parent_id => @root_page.id, :visible => true)
|
|
22
|
+
end
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
context "not in multi_language mode" do
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
before(:each) do
|
|
27
|
+
helper.stub(:multi_language?).and_return(false)
|
|
28
|
+
end
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
it "should render the page navigation" do
|
|
31
|
+
helper.render_navigation.should have_selector('ul.navigation_level_1 li.a-public-page.active.last a.active[href="/alchemy/a-public-page"]')
|
|
32
|
+
end
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
context "with enabled url nesting" do
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
36
|
+
before(:each) do
|
|
37
|
+
helper.stub!(:configuration).and_return(true)
|
|
38
|
+
@level2 = Factory(:public_page, :parent_id => @page.id, :language => @language, :name => 'Level 2', :visible => true)
|
|
39
|
+
@page = Factory(:public_page, :parent_id => @level2.id, :language => @language, :name => 'Nested Page', :visible => true)
|
|
40
|
+
end
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
it "should render nested page links" do
|
|
43
|
+
helper.render_navigation(:all_sub_menues => true).should have_selector('ul li a[href="/alchemy/a-public-page/level-2/nested-page"]')
|
|
44
|
+
end
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
end
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
end
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
end
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
describe '#render_subnavigation' do
|
|
53
53
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
54
|
+
before(:each) do
|
|
55
|
+
@language = Alchemy::Language.get_default
|
|
56
|
+
@language_root = Factory(:language_root_page, :language => @language, :name => 'Intro')
|
|
57
|
+
@level_1 = Factory(:public_page, :language => @language, :parent_id => @language_root.id, :visible => true, :name => 'Level 1')
|
|
58
|
+
@level_2 = Factory(:public_page, :language => @language, :parent_id => @level_1.id, :visible => true, :name => 'Level 2')
|
|
59
|
+
@level_3 = Factory(:public_page, :language => @language, :parent_id => @level_2.id, :visible => true, :name => 'Level 3')
|
|
60
|
+
@level_4 = Factory(:public_page, :language => @language, :parent_id => @level_3.id, :visible => true, :name => 'Level 4')
|
|
61
|
+
helper.stub(:multi_language?).and_return(false)
|
|
62
|
+
end
|
|
63
63
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
context "showing a page with level 2" do
|
|
69
|
-
|
|
70
|
-
before(:each) do
|
|
71
|
-
@page = @level_2
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
it "should render the navigation from current page" do
|
|
75
|
-
helper.render_subnavigation.should have_selector('ul > li > a[href="/alchemy/level-2"]')
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
it "should set current page active" do
|
|
79
|
-
helper.render_subnavigation.should have_selector('a[href="/alchemy/level-2"].active')
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
context "showing a page with level 3" do
|
|
85
|
-
|
|
86
|
-
before(:each) do
|
|
87
|
-
@page = @level_3
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
it "should render the navigation from current pages parent" do
|
|
91
|
-
helper.render_subnavigation.should have_selector('ul > li > ul > li > a[href="/alchemy/level-3"]')
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
it "should set current page active" do
|
|
95
|
-
helper.render_subnavigation.should have_selector('a[href="/alchemy/level-3"].active')
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
context "showing a page with level 4" do
|
|
101
|
-
|
|
102
|
-
before(:each) do
|
|
103
|
-
@page = @level_4
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
it "should render the navigation from current pages parents parent" do
|
|
107
|
-
helper.render_subnavigation.should have_selector('ul > li > ul > li > ul > li > a[href="/alchemy/level-4"]')
|
|
108
|
-
end
|
|
64
|
+
it "should return nil if no @page is set" do
|
|
65
|
+
helper.render_subnavigation.should be(nil)
|
|
66
|
+
end
|
|
109
67
|
|
|
110
|
-
|
|
111
|
-
helper.render_subnavigation.should have_selector('a[href="/alchemy/level-4"].active')
|
|
112
|
-
end
|
|
113
|
-
|
|
114
|
-
context "beginning with level 3" do
|
|
68
|
+
context "showing a page with level 2" do
|
|
115
69
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
end
|
|
121
|
-
|
|
122
|
-
end
|
|
70
|
+
before(:each) do
|
|
71
|
+
@page = @level_2
|
|
72
|
+
end
|
|
123
73
|
|
|
124
|
-
|
|
74
|
+
it "should render the navigation from current page" do
|
|
75
|
+
helper.render_subnavigation.should have_selector('ul > li > a[href="/alchemy/level-2"]')
|
|
76
|
+
end
|
|
125
77
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
helper.stub(:multi_language?).and_return(false)
|
|
130
|
-
@root = mock_model('Page', :urlname => 'root', :name => 'Root', :title => 'Root', :visible? => false, :public? => false, :restricted? => false)
|
|
131
|
-
@language_root = mock_model('Page', :urlname => 'language_root', :name => 'Language Root', :title => 'Language Root', :visible? => true, :public? => true, :restricted? => false)
|
|
132
|
-
@page = mock_model('Page', :urlname => 'a-public-page', :name => 'A Public Page', :title => 'A Public Page', :visible? => true, :public? => true, :restricted? => false)
|
|
133
|
-
@root.should_receive(:parent).and_return(nil)
|
|
134
|
-
@language_root.should_receive(:parent).and_return(@root)
|
|
135
|
-
@page.should_receive(:parent).and_return(@language_root)
|
|
136
|
-
end
|
|
137
|
-
|
|
138
|
-
it "should render a breadcrumb to current page" do
|
|
139
|
-
helper.render_breadcrumb.should have_selector('a.active.last[href="/alchemy/a-public-page"]')
|
|
140
|
-
end
|
|
78
|
+
it "should set current page active" do
|
|
79
|
+
helper.render_subnavigation.should have_selector('a[href="/alchemy/level-2"].active')
|
|
80
|
+
end
|
|
141
81
|
|
|
142
|
-
|
|
143
|
-
helper.render_breadcrumb(:seperator => '<span>###</span>').should have_selector('span[contains("###")]')
|
|
144
|
-
end
|
|
82
|
+
end
|
|
145
83
|
|
|
146
|
-
|
|
147
|
-
helper.render_breadcrumb(:reverse => true).should have_selector('a.active.first[href="/alchemy/a-public-page"]')
|
|
148
|
-
end
|
|
84
|
+
context "showing a page with level 3" do
|
|
149
85
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
end
|
|
154
|
-
|
|
155
|
-
it "should render a breadcrumb of visible pages only" do
|
|
156
|
-
@page.stub!(:visible? => false, :urlname => 'a-invisible-public-page', :name => 'A invisible Public Page', :title => 'A invisible Public Page')
|
|
157
|
-
helper.render_breadcrumb(:visible_only => true).should_not match(/A invisible Public Page/)
|
|
158
|
-
end
|
|
86
|
+
before(:each) do
|
|
87
|
+
@page = @level_3
|
|
88
|
+
end
|
|
159
89
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
end
|
|
164
|
-
|
|
165
|
-
it "should render a breadcrumb of published pages only" do
|
|
166
|
-
@page.stub!(:public => false, :public? => false, :urlname => 'a-unpublic-page', :name => 'A Unpublic Page', :title => 'A Unpublic Page')
|
|
167
|
-
helper.render_breadcrumb(:public_only => true).should_not match(/A Unpublic Page/)
|
|
168
|
-
end
|
|
169
|
-
|
|
170
|
-
it "should render a breadcrumb of published and unpublished pages" do
|
|
171
|
-
@page.stub!(:public => false, :public? => false, :urlname => 'a-unpublic-page', :name => 'A Unpublic Page', :title => 'A Unpublic Page')
|
|
172
|
-
helper.render_breadcrumb(:public_only => false).should match(/A Unpublic Page/)
|
|
173
|
-
end
|
|
90
|
+
it "should render the navigation from current pages parent" do
|
|
91
|
+
helper.render_subnavigation.should have_selector('ul > li > ul > li > a[href="/alchemy/level-3"]')
|
|
92
|
+
end
|
|
174
93
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
end
|
|
179
|
-
|
|
180
|
-
end
|
|
94
|
+
it "should set current page active" do
|
|
95
|
+
helper.render_subnavigation.should have_selector('a[href="/alchemy/level-3"].active')
|
|
96
|
+
end
|
|
181
97
|
|
|
182
|
-
|
|
98
|
+
end
|
|
183
99
|
|
|
184
|
-
|
|
185
|
-
@page = mock_model(Alchemy::Page, :urlname => 'testpage', :language_code => 'en')
|
|
186
|
-
end
|
|
100
|
+
context "showing a page with level 4" do
|
|
187
101
|
|
|
188
|
-
|
|
102
|
+
before(:each) do
|
|
103
|
+
@page = @level_4
|
|
104
|
+
end
|
|
189
105
|
|
|
190
|
-
|
|
106
|
+
it "should render the navigation from current pages parents parent" do
|
|
107
|
+
helper.render_subnavigation.should have_selector('ul > li > ul > li > ul > li > a[href="/alchemy/level-4"]')
|
|
108
|
+
end
|
|
191
109
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
110
|
+
it "should set current page active" do
|
|
111
|
+
helper.render_subnavigation.should have_selector('a[href="/alchemy/level-4"].active')
|
|
112
|
+
end
|
|
195
113
|
|
|
196
|
-
|
|
197
|
-
helper.stub!(:multi_language?).and_return(true)
|
|
198
|
-
helper.show_page_path_params(@page).should include(:urlname => 'testpage', :lang => 'en')
|
|
199
|
-
end
|
|
114
|
+
context "beginning with level 3" do
|
|
200
115
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
end
|
|
116
|
+
it "should render the navigation beginning from its parent" do
|
|
117
|
+
helper.render_subnavigation(:level => 3).should have_selector('ul > li > ul > li > a[href="/alchemy/level-4"]')
|
|
118
|
+
end
|
|
205
119
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
context "not multi_language" do
|
|
209
|
-
|
|
210
|
-
before(:each) do
|
|
211
|
-
helper.stub!(:multi_language?).and_return(false)
|
|
212
|
-
end
|
|
213
|
-
|
|
214
|
-
it "should return a Hash with the urlname but without language_id parameter" do
|
|
215
|
-
helper.show_page_path_params(@page).should include(:urlname => 'testpage')
|
|
216
|
-
helper.show_page_path_params(@page).should_not include(:lang => 'en')
|
|
217
|
-
end
|
|
218
|
-
|
|
219
|
-
it "should return a Hash with urlname and query parameter" do
|
|
220
|
-
helper.show_page_path_params(@page, {:query => 'test'}).should include(:urlname => 'testpage', :query => 'test')
|
|
221
|
-
helper.show_page_path_params(@page).should_not include(:lang => 'en')
|
|
222
|
-
end
|
|
223
|
-
|
|
224
|
-
end
|
|
225
|
-
|
|
226
|
-
end
|
|
227
|
-
|
|
228
|
-
describe "#show_alchemy_page_path" do
|
|
229
|
-
|
|
230
|
-
context "when multi_language" do
|
|
231
|
-
|
|
232
|
-
before(:each) do
|
|
233
|
-
helper.stub!(:multi_language?).and_return(true)
|
|
234
|
-
end
|
|
235
|
-
|
|
236
|
-
it "should return the correct relative path string" do
|
|
237
|
-
helper.show_alchemy_page_path(@page).should == "/alchemy/#{@page.language_code}/testpage"
|
|
238
|
-
end
|
|
239
|
-
|
|
240
|
-
it "should return the correct relative path string with additional parameters" do
|
|
241
|
-
helper.show_alchemy_page_path(@page, {:query => 'test'}).should == "/alchemy/#{@page.language_code}/testpage?query=test"
|
|
242
|
-
end
|
|
243
|
-
|
|
244
|
-
end
|
|
245
|
-
|
|
246
|
-
context "not multi_language" do
|
|
247
|
-
|
|
248
|
-
before(:each) do
|
|
249
|
-
helper.stub!(:multi_language?).and_return(false)
|
|
250
|
-
end
|
|
251
|
-
|
|
252
|
-
it "should return the correct relative path string" do
|
|
253
|
-
helper.show_alchemy_page_path(@page).should == "/alchemy/testpage"
|
|
254
|
-
end
|
|
255
|
-
|
|
256
|
-
it "should return the correct relative path string with additional parameter" do
|
|
257
|
-
helper.show_alchemy_page_path(@page, {:query => 'test'}).should == "/alchemy/testpage?query=test"
|
|
258
|
-
end
|
|
259
|
-
|
|
260
|
-
end
|
|
261
|
-
|
|
262
|
-
end
|
|
263
|
-
|
|
264
|
-
describe "#show_alchemy_page_url" do
|
|
265
|
-
|
|
266
|
-
context "when multi_language" do
|
|
120
|
+
end
|
|
267
121
|
|
|
268
|
-
|
|
269
|
-
helper.stub!(:multi_language?).and_return(true)
|
|
270
|
-
end
|
|
122
|
+
end
|
|
271
123
|
|
|
272
|
-
|
|
273
|
-
helper.show_alchemy_page_url(@page).should == "http://#{helper.request.host}/alchemy/#{@page.language_code}/testpage"
|
|
274
|
-
end
|
|
124
|
+
end
|
|
275
125
|
|
|
276
|
-
|
|
277
|
-
helper.show_alchemy_page_url(@page, {:query => 'test'}).should == "http://#{helper.request.host}/alchemy/#{@page.language_code}/testpage?query=test"
|
|
278
|
-
end
|
|
126
|
+
describe "#render_breadcrumb" do
|
|
279
127
|
|
|
280
|
-
|
|
128
|
+
before(:each) do
|
|
129
|
+
helper.stub(:multi_language?).and_return(false)
|
|
130
|
+
@root = mock_model('Page', :urlname => 'root', :name => 'Root', :title => 'Root', :visible? => false, :public? => false, :restricted? => false, :parent => nil)
|
|
131
|
+
@language_root = mock_model('Page', :urlname => 'language_root', :name => 'Language Root', :title => 'Language Root', :visible? => true, :public? => true, :restricted? => false, :parent => @root)
|
|
132
|
+
@page = mock_model('Page', :urlname => 'a-public-page', :name => 'A Public Page', :title => 'A Public Page', :visible? => true, :public? => true, :restricted? => false, :parent => @language_root)
|
|
133
|
+
end
|
|
281
134
|
|
|
282
|
-
|
|
135
|
+
it "should render a breadcrumb to current page" do
|
|
136
|
+
helper.render_breadcrumb.should have_selector('a.active.last[href="/alchemy/a-public-page"]')
|
|
137
|
+
end
|
|
283
138
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
139
|
+
it "should render a breadcrumb with a alternative seperator" do
|
|
140
|
+
helper.render_breadcrumb(:seperator => '<span>###</span>').should have_selector('span[contains("###")]')
|
|
141
|
+
end
|
|
287
142
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
143
|
+
it "should render a breadcrumb in reversed order" do
|
|
144
|
+
helper.render_breadcrumb(:reverse => true).should have_selector('a.active.first[href="/alchemy/a-public-page"]')
|
|
145
|
+
end
|
|
291
146
|
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
147
|
+
it "should render a breadcrumb of restricted pages only" do
|
|
148
|
+
@page.stub!(:restricted? => true, :urlname => 'a-restricted-public-page', :name => 'A restricted Public Page', :title => 'A restricted Public Page')
|
|
149
|
+
helper.render_breadcrumb(:restricted_only => true).should match(/^(<a(.[^>]+)>)A restricted Public Page/)
|
|
150
|
+
end
|
|
295
151
|
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
describe "#render_meta_data" do
|
|
301
|
-
|
|
302
|
-
let(:language) do
|
|
303
|
-
mock_model('Language', :code => 'en')
|
|
304
|
-
end
|
|
305
|
-
|
|
306
|
-
it "should render meta keywords of current page" do
|
|
307
|
-
@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')
|
|
308
|
-
helper.render_meta_data.should have_selector('meta[name="keywords"][content="keyword1, keyword2"]')
|
|
309
|
-
end
|
|
310
|
-
|
|
311
|
-
it "should render meta description 'blah blah' of current page" do
|
|
312
|
-
@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')
|
|
313
|
-
helper.render_meta_data.should have_selector('meta[name="description"][content="blah blah"]')
|
|
314
|
-
end
|
|
315
|
-
end
|
|
152
|
+
it "should render a breadcrumb of visible pages only" do
|
|
153
|
+
@page.stub!(:visible? => false, :urlname => 'a-invisible-public-page', :name => 'A invisible Public Page', :title => 'A invisible Public Page')
|
|
154
|
+
helper.render_breadcrumb(:visible_only => true).should_not match(/A invisible Public Page/)
|
|
155
|
+
end
|
|
316
156
|
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
157
|
+
it "should render a breadcrumb of visible and invisible pages" do
|
|
158
|
+
@page.stub!(:visible? => false, :urlname => 'a-invisible-public-page', :name => 'A invisible Public Page', :title => 'A invisible Public Page')
|
|
159
|
+
helper.render_breadcrumb(:visible_only => false).should match(/A invisible Public Page/)
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
it "should render a breadcrumb of published pages only" do
|
|
163
|
+
@page.stub!(:public => false, :public? => false, :urlname => 'a-unpublic-page', :name => 'A Unpublic Page', :title => 'A Unpublic Page')
|
|
164
|
+
helper.render_breadcrumb(:public_only => true).should_not match(/A Unpublic Page/)
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
it "should render a breadcrumb of published and unpublished pages" do
|
|
168
|
+
@page.stub!(:public => false, :public? => false, :urlname => 'a-unpublic-page', :name => 'A Unpublic Page', :title => 'A Unpublic Page')
|
|
169
|
+
helper.render_breadcrumb(:public_only => false).should match(/A Unpublic Page/)
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
it "should render a breadcrumb without the page named 'Not Me'" do
|
|
173
|
+
@page.stub!(:urlname => 'not-me', :name => 'Not Me', :title => 'Not Me')
|
|
174
|
+
helper.render_breadcrumb(:without => @page).should_not match(/Not Me/)
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
describe "using own url helpers" do
|
|
180
|
+
|
|
181
|
+
before(:each) do
|
|
182
|
+
@page = mock_model(Alchemy::Page, :urlname => 'testpage', :language_code => 'en')
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
describe "#show_page_path_params" do
|
|
186
|
+
|
|
187
|
+
context "when multi_language" do
|
|
188
|
+
|
|
189
|
+
before(:each) do
|
|
190
|
+
helper.stub!(:multi_language?).and_return(true)
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
it "should return a Hash with urlname and language_id parameter" do
|
|
194
|
+
helper.stub!(:multi_language?).and_return(true)
|
|
195
|
+
helper.show_page_path_params(@page).should include(:urlname => 'testpage', :lang => 'en')
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
it "should return a Hash with urlname, language_id and query parameter" do
|
|
199
|
+
helper.stub!(:multi_language?).and_return(true)
|
|
200
|
+
helper.show_page_path_params(@page, {:query => 'test'}).should include(:urlname => 'testpage', :lang => 'en', :query => 'test')
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
context "not multi_language" do
|
|
206
|
+
|
|
207
|
+
before(:each) do
|
|
208
|
+
helper.stub!(:multi_language?).and_return(false)
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
it "should return a Hash with the urlname but without language_id parameter" do
|
|
212
|
+
helper.show_page_path_params(@page).should include(:urlname => 'testpage')
|
|
213
|
+
helper.show_page_path_params(@page).should_not include(:lang => 'en')
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
it "should return a Hash with urlname and query parameter" do
|
|
217
|
+
helper.show_page_path_params(@page, {:query => 'test'}).should include(:urlname => 'testpage', :query => 'test')
|
|
218
|
+
helper.show_page_path_params(@page).should_not include(:lang => 'en')
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
describe "#show_alchemy_page_path" do
|
|
226
|
+
|
|
227
|
+
context "when multi_language" do
|
|
228
|
+
|
|
229
|
+
before(:each) do
|
|
230
|
+
helper.stub!(:multi_language?).and_return(true)
|
|
231
|
+
end
|
|
232
|
+
|
|
233
|
+
it "should return the correct relative path string" do
|
|
234
|
+
helper.show_alchemy_page_path(@page).should == "/alchemy/#{@page.language_code}/testpage"
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
it "should return the correct relative path string with additional parameters" do
|
|
238
|
+
helper.show_alchemy_page_path(@page, {:query => 'test'}).should == "/alchemy/#{@page.language_code}/testpage?query=test"
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
context "not multi_language" do
|
|
244
|
+
|
|
245
|
+
before(:each) do
|
|
246
|
+
helper.stub!(:multi_language?).and_return(false)
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
it "should return the correct relative path string" do
|
|
250
|
+
helper.show_alchemy_page_path(@page).should == "/alchemy/testpage"
|
|
251
|
+
end
|
|
252
|
+
|
|
253
|
+
it "should return the correct relative path string with additional parameter" do
|
|
254
|
+
helper.show_alchemy_page_path(@page, {:query => 'test'}).should == "/alchemy/testpage?query=test"
|
|
255
|
+
end
|
|
256
|
+
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
end
|
|
260
|
+
|
|
261
|
+
describe "#show_alchemy_page_url" do
|
|
262
|
+
|
|
263
|
+
context "when multi_language" do
|
|
264
|
+
|
|
265
|
+
before(:each) do
|
|
266
|
+
helper.stub!(:multi_language?).and_return(true)
|
|
267
|
+
end
|
|
268
|
+
|
|
269
|
+
it "should return the correct url string" do
|
|
270
|
+
helper.show_alchemy_page_url(@page).should == "http://#{helper.request.host}/alchemy/#{@page.language_code}/testpage"
|
|
271
|
+
end
|
|
272
|
+
|
|
273
|
+
it "should return the correct url string with additional parameters" do
|
|
274
|
+
helper.show_alchemy_page_url(@page, {:query => 'test'}).should == "http://#{helper.request.host}/alchemy/#{@page.language_code}/testpage?query=test"
|
|
275
|
+
end
|
|
276
|
+
|
|
277
|
+
end
|
|
278
|
+
|
|
279
|
+
context "not multi_language" do
|
|
280
|
+
|
|
281
|
+
before(:each) do
|
|
282
|
+
helper.stub!(:multi_language?).and_return(false)
|
|
283
|
+
end
|
|
284
|
+
|
|
285
|
+
it "should return the correct url string" do
|
|
286
|
+
helper.show_alchemy_page_url(@page).should == "http://#{helper.request.host}/alchemy/testpage"
|
|
287
|
+
end
|
|
288
|
+
|
|
289
|
+
it "should return the correct url string with additional parameter" do
|
|
290
|
+
helper.show_alchemy_page_url(@page, {:query => 'test'}).should == "http://#{helper.request.host}/alchemy/testpage?query=test"
|
|
291
|
+
end
|
|
292
|
+
|
|
293
|
+
end
|
|
294
|
+
end
|
|
295
|
+
end
|
|
296
|
+
|
|
297
|
+
describe "#render_meta_data" do
|
|
298
|
+
|
|
299
|
+
let(:language) do
|
|
300
|
+
mock_model('Language', :code => 'en')
|
|
301
|
+
end
|
|
302
|
+
|
|
303
|
+
it "should render meta keywords of current page" do
|
|
304
|
+
@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')
|
|
305
|
+
helper.render_meta_data.should have_selector('meta[name="keywords"][content="keyword1, keyword2"]')
|
|
306
|
+
end
|
|
307
|
+
|
|
308
|
+
it "should render meta description 'blah blah' of current page" do
|
|
309
|
+
@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')
|
|
310
|
+
helper.render_meta_data.should have_selector('meta[name="description"][content="blah blah"]')
|
|
311
|
+
end
|
|
312
|
+
end
|
|
313
|
+
|
|
314
|
+
describe "#render_title_tag" do
|
|
315
|
+
it "should render a title tag for current page" do
|
|
316
|
+
@page = mock_model('Page', :title => 'A Public Page')
|
|
317
|
+
helper.render_title_tag.should have_selector('title[contains("A Public Page")]')
|
|
318
|
+
end
|
|
319
|
+
|
|
320
|
+
it "should render a title tag for current page with a prefix and a seperator" do
|
|
321
|
+
@page = mock_model('Page', :title => 'A Public Page')
|
|
322
|
+
helper.render_title_tag(:prefix => 'Peters Petshop', :seperator => ' ### ').should have_selector('title[contains("Peters Petshop ### A Public Page")]')
|
|
323
|
+
end
|
|
324
|
+
end
|
|
328
325
|
|
|
329
326
|
describe "#language_switcher" do
|
|
330
327
|
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
328
|
+
before :each do
|
|
329
|
+
@default_language = Alchemy::Language.get_default
|
|
330
|
+
@klingonian = Factory(:language)
|
|
331
|
+
# simulates link_to_public_child = true
|
|
332
|
+
helper.stub(:multi_language?).and_return(true)
|
|
333
|
+
helper.stub(:configuration) { |arg| arg == :redirect_to_public_child ? true : false }
|
|
334
|
+
end
|
|
335
|
+
|
|
336
|
+
it "should return nil when having only one public language" do
|
|
337
|
+
helper.language_switcher.should be nil
|
|
338
|
+
end
|
|
339
|
+
|
|
340
|
+
context "with two public languages and two language_roots" do
|
|
341
|
+
|
|
342
|
+
before :each do
|
|
343
|
+
@default_language_root = Factory(:language_root_page, :language => @default_language, :name => 'Default Language Root')
|
|
344
|
+
@klingonian_language_root = Factory(:language_root_page)
|
|
345
|
+
end
|
|
346
|
+
|
|
347
|
+
context "and config redirect_to_public_child is set to TRUE" do
|
|
348
|
+
|
|
349
|
+
it "should return nil if only one language_root is public and both do not have children" do
|
|
350
|
+
@klingonian_language_root.update_attributes(:public => false)
|
|
351
|
+
helper.language_switcher.should == nil
|
|
352
|
+
end
|
|
353
|
+
|
|
354
|
+
it "should return nil if only one language_root is public and both have none public children" do
|
|
355
|
+
@klingonian_language_root.update_attributes(:public => false)
|
|
356
|
+
@default_first_public_child = Factory(:page, :language => @default_language, :parent_id => @default_language_root.id, :public => false, :name => "child1")
|
|
357
|
+
@klingonian_first_public_child = Factory(:page, :language => @klingonian, :parent_id => @klingonian_language_root.id, :public => false, :name => "child1")
|
|
358
|
+
helper.language_switcher.should == nil
|
|
359
|
+
end
|
|
360
|
+
|
|
361
|
+
it "should render two links when having two public language_root pages" do
|
|
362
|
+
helper.language_switcher.should have_selector('a', :count => 2)
|
|
363
|
+
end
|
|
364
|
+
|
|
365
|
+
it "should render two links when having just one public language_root but a public children in both language_roots" do
|
|
366
|
+
@klingonian_language_root.update_attributes(:public => false)
|
|
367
|
+
@default_first_public_child = Factory(:page, :language => @default_language, :parent_id => @default_language_root.id, :public => true, :name => "child1")
|
|
368
|
+
@klingonian_first_public_child = Factory(:page, :language => @klingonian, :parent_id => @klingonian_language_root.id, :public => true, :name => "child1")
|
|
369
|
+
helper.language_switcher.should have_selector('a', :count => 2)
|
|
370
|
+
end
|
|
371
|
+
|
|
372
|
+
it "should render two links when having two not public language_roots but a public children in both" do
|
|
373
|
+
@default_language_root.update_attributes(:public => false)
|
|
374
|
+
@klingonian_language_root.update_attributes(:public => false)
|
|
375
|
+
@default_first_public_child = Factory(:page, :language => @default_language, :parent_id => @default_language_root.id, :public => true, :name => "child1")
|
|
376
|
+
@klingonian_first_public_child = Factory(:page, :language => @klingonian, :parent_id => @klingonian_language_root.id, :public => true, :name => "child1")
|
|
377
|
+
helper.language_switcher.should have_selector('a', :count => 2)
|
|
378
|
+
end
|
|
379
|
+
|
|
380
|
+
it "should return nil when having two not public language_roots and a public children in only one of them" do
|
|
381
|
+
@default_language_root.update_attributes(:public => false)
|
|
382
|
+
@klingonian_language_root.update_attributes(:public => false)
|
|
383
|
+
@default_first_public_child = Factory(:page, :language => @default_language, :parent_id => @default_language_root.id, :public => false, :name => "child1")
|
|
384
|
+
@klingonian_first_public_child = Factory(:page, :language => @klingonian, :parent_id => @klingonian_language_root.id, :public => true, :name => "child1")
|
|
385
|
+
helper.language_switcher.should == nil
|
|
386
|
+
end
|
|
387
|
+
|
|
388
|
+
end
|
|
389
|
+
|
|
390
|
+
context "and config redirect_to_public_child is set to FALSE" do
|
|
391
|
+
|
|
392
|
+
before :each do
|
|
393
|
+
# simulates link_to_public_child = false
|
|
394
|
+
helper.stub(:configuration).and_return(false)
|
|
395
|
+
end
|
|
396
|
+
|
|
397
|
+
it "should render two links when having two public language_root pages" do
|
|
398
|
+
helper.language_switcher.should have_selector('a', :count => 2)
|
|
399
|
+
end
|
|
400
|
+
|
|
401
|
+
it "should render nil when having just one public language_root but a public children in both language_roots" do
|
|
402
|
+
@klingonian_language_root.update_attributes(:public => false)
|
|
403
|
+
@default_first_public_child = Factory(:page, :language => @default_language, :parent_id => @default_language_root.id, :public => true, :name => "child1")
|
|
404
|
+
@klingonian_first_public_child = Factory(:page, :language => @klingonian, :parent_id => @klingonian_language_root.id, :public => true, :name => "child1")
|
|
405
|
+
helper.language_switcher.should == nil
|
|
406
|
+
end
|
|
407
|
+
|
|
408
|
+
it "should render nil when having two not public language_roots but a public children in both" do
|
|
409
|
+
@default_language_root.update_attributes(:public => false)
|
|
410
|
+
@klingonian_language_root.update_attributes(:public => false)
|
|
411
|
+
@default_first_public_child = Factory(:page, :language => @default_language, :parent_id => @default_language_root.id, :public => true, :name => "child1")
|
|
412
|
+
@klingonian_first_public_child = Factory(:page, :language => @klingonian, :parent_id => @klingonian_language_root.id, :public => true, :name => "child1")
|
|
413
|
+
helper.language_switcher.should == nil
|
|
414
|
+
end
|
|
415
|
+
|
|
416
|
+
end
|
|
417
|
+
|
|
418
|
+
end
|
|
419
|
+
|
|
420
|
+
end
|
|
424
421
|
|
|
425
422
|
end
|