alchemy_cms 2.9.1 → 3.0.0.rc5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +3 -1
- data/.travis.yml +14 -3
- data/CONTRIBUTING.md +73 -0
- data/Gemfile +25 -24
- data/LICENSE +19 -16
- data/README.md +16 -33
- data/alchemy_cms.gemspec +62 -59
- data/app/assets/images/alchemy/alchemy-logo.svg +70 -0
- data/app/assets/images/alchemy/favicon.ico +0 -0
- data/app/assets/images/alchemy/icon.svg +14 -0
- data/app/assets/javascripts/alchemy/alchemy.autocomplete.js.coffee +30 -0
- data/app/assets/javascripts/alchemy/alchemy.base.js.coffee +28 -30
- data/app/assets/javascripts/alchemy/alchemy.browser.js.coffee +20 -26
- data/app/assets/javascripts/alchemy/alchemy.confirm_dialog.js.coffee +80 -0
- data/app/assets/javascripts/alchemy/alchemy.dialog.js.coffee +261 -0
- data/app/assets/javascripts/alchemy/alchemy.dirty.js.coffee +15 -15
- data/app/assets/javascripts/alchemy/alchemy.dragndrop.js.coffee +4 -1
- data/app/assets/javascripts/alchemy/alchemy.element_editors.js.coffee +20 -9
- data/app/assets/javascripts/alchemy/alchemy.elements_window.js.coffee +67 -68
- data/app/assets/javascripts/alchemy/alchemy.file_progress.js.coffee +63 -0
- data/app/assets/javascripts/alchemy/alchemy.growler.js.coffee +1 -1
- data/app/assets/javascripts/alchemy/alchemy.gui.js.coffee +2 -1
- data/app/assets/javascripts/alchemy/alchemy.hotkeys.js.coffee +32 -14
- data/app/assets/javascripts/alchemy/alchemy.i18n.js.coffee +21 -0
- data/app/assets/javascripts/alchemy/alchemy.image_cropper.js.coffee +4 -1
- data/app/assets/javascripts/alchemy/{alchemy.onload.js.coffee → alchemy.initializer.js.coffee} +22 -5
- data/app/assets/javascripts/alchemy/alchemy.js +13 -11
- data/app/assets/javascripts/alchemy/alchemy.link_dialog.js.coffee +221 -0
- data/app/assets/javascripts/alchemy/alchemy.list_filter.js.coffee +2 -2
- data/app/assets/javascripts/alchemy/alchemy.page_sorter.js +0 -2
- data/app/assets/javascripts/alchemy/alchemy.preview.js.coffee +37 -35
- data/app/assets/javascripts/alchemy/alchemy.preview_window.js.coffee +42 -69
- data/app/assets/javascripts/alchemy/alchemy.sitemap.js.coffee +1 -1
- data/app/assets/javascripts/alchemy/alchemy.spinner.js.coffee +4 -4
- data/app/assets/javascripts/alchemy/alchemy.tinymce.js.coffee.erb +3 -7
- data/app/assets/javascripts/alchemy/alchemy.translations.js.coffee +107 -19
- data/app/assets/javascripts/alchemy/alchemy.uploader.js.coffee +97 -0
- data/app/assets/javascripts/alchemy/alchemy.windows.js.coffee +14 -273
- data/app/assets/javascripts/alchemy/menubar.js.coffee +8 -0
- data/app/assets/javascripts/alchemy/preview.js +0 -2
- data/app/assets/javascripts/tinymce/plugins/alchemy_link/plugin.min.js +19 -0
- data/app/assets/stylesheets/alchemy/{defaults.scss → _defaults.scss} +2 -0
- data/app/assets/stylesheets/alchemy/{extends.scss → _extends.scss} +7 -61
- data/app/assets/stylesheets/alchemy/_mixins.scss +112 -0
- data/app/assets/stylesheets/alchemy/{variables.scss → _variables.scss} +31 -11
- data/app/assets/stylesheets/alchemy/admin.css.scss +6 -3
- data/app/assets/stylesheets/alchemy/archive.scss +27 -32
- data/app/assets/stylesheets/alchemy/base.scss +93 -127
- data/app/assets/stylesheets/alchemy/buttons.scss +227 -0
- data/app/assets/stylesheets/alchemy/dashboard.scss +14 -1
- data/app/assets/stylesheets/alchemy/dialogs.scss +209 -0
- data/app/assets/stylesheets/alchemy/elements.scss +173 -210
- data/app/assets/stylesheets/alchemy/errors.scss +5 -15
- data/app/assets/stylesheets/alchemy/flash.scss +12 -11
- data/app/assets/stylesheets/alchemy/form_fields.scss +56 -0
- data/app/assets/stylesheets/alchemy/forms.scss +161 -0
- data/app/assets/stylesheets/alchemy/frame.scss +8 -6
- data/app/assets/stylesheets/alchemy/icon-font.css.scss +40 -40
- data/app/assets/stylesheets/alchemy/icons.scss +14 -6
- data/app/assets/stylesheets/alchemy/jquery-ui.scss +11 -629
- data/app/assets/stylesheets/alchemy/menubar.css.scss +27 -72
- data/app/assets/stylesheets/alchemy/notices.scss +6 -5
- data/app/assets/stylesheets/alchemy/pagination.scss +1 -1
- data/app/assets/stylesheets/alchemy/search.scss +4 -3
- data/app/assets/stylesheets/alchemy/selects.scss +199 -0
- data/app/assets/stylesheets/alchemy/sitemap.scss +31 -60
- data/app/assets/stylesheets/alchemy/tables.scss +0 -77
- data/app/assets/stylesheets/alchemy/toolbar.scss +0 -2
- data/app/assets/stylesheets/alchemy/upload.scss +60 -57
- data/app/assets/stylesheets/tinymce/skins/alchemy/content.min.css.scss +81 -0
- data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/readme.md +1 -0
- data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce-small.eot +0 -0
- data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce-small.svg +175 -0
- data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce-small.ttf +0 -0
- data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce-small.woff +0 -0
- data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce.eot +0 -0
- data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce.svg +153 -0
- data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce.ttf +0 -0
- data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce.woff +0 -0
- data/app/assets/stylesheets/tinymce/skins/alchemy/img/anchor.gif +0 -0
- data/app/assets/stylesheets/tinymce/skins/alchemy/img/loader.gif +0 -0
- data/app/assets/stylesheets/tinymce/skins/alchemy/img/object.gif +0 -0
- data/{vendor/assets/javascripts/tiny_mce/themes/advanced → app/assets/stylesheets/tinymce/skins/alchemy}/img/trans.gif +0 -0
- data/app/assets/stylesheets/tinymce/skins/alchemy/img/wline.gif +0 -0
- data/app/assets/stylesheets/tinymce/skins/alchemy/skin.ie7.min.css +1 -0
- data/app/assets/stylesheets/tinymce/skins/alchemy/skin.min.css.scss +1813 -0
- data/app/controllers/alchemy/admin/attachments_controller.rb +39 -50
- data/app/controllers/alchemy/admin/base_controller.rb +32 -32
- data/app/controllers/alchemy/admin/clipboard_controller.rb +2 -2
- data/app/controllers/alchemy/admin/contents_controller.rb +12 -7
- data/app/controllers/alchemy/admin/dashboard_controller.rb +1 -1
- data/app/controllers/alchemy/admin/elements_controller.rb +41 -32
- data/app/controllers/alchemy/admin/essence_files_controller.rb +4 -3
- data/app/controllers/alchemy/admin/essence_pictures_controller.rb +13 -16
- data/app/controllers/alchemy/admin/languages_controller.rb +0 -1
- data/app/controllers/alchemy/admin/layoutpages_controller.rb +2 -1
- data/app/controllers/alchemy/admin/pages_controller.rb +106 -166
- data/app/controllers/alchemy/admin/pictures_controller.rb +54 -80
- data/app/controllers/alchemy/admin/resources_controller.rb +25 -9
- data/app/controllers/alchemy/admin/tags_controller.rb +26 -14
- data/app/controllers/alchemy/admin/trash_controller.rb +5 -2
- data/app/controllers/alchemy/attachments_controller.rb +8 -8
- data/app/controllers/alchemy/base_controller.rb +23 -89
- data/app/controllers/alchemy/contents_controller.rb +17 -0
- data/app/controllers/alchemy/elements_controller.rb +7 -30
- data/app/controllers/alchemy/messages_controller.rb +18 -18
- data/app/controllers/alchemy/pages_controller.rb +73 -48
- data/app/controllers/alchemy/pictures_controller.rb +45 -46
- data/app/helpers/alchemy/admin/attachments_helper.rb +1 -0
- data/app/helpers/alchemy/admin/base_helper.rb +95 -90
- data/app/helpers/alchemy/admin/contents_helper.rb +34 -37
- data/app/helpers/alchemy/admin/elements_helper.rb +4 -5
- data/app/helpers/alchemy/admin/essences_helper.rb +13 -90
- data/app/helpers/alchemy/admin/form_helper.rb +30 -0
- data/app/helpers/alchemy/admin/navigation_helper.rb +34 -2
- data/app/helpers/alchemy/base_helper.rb +3 -3
- data/app/helpers/alchemy/elements_helper.rb +105 -142
- data/app/helpers/alchemy/essences_helper.rb +17 -53
- data/app/helpers/alchemy/pages_helper.rb +148 -177
- data/app/helpers/alchemy/url_helper.rb +5 -25
- data/app/models/alchemy/attachment.rb +39 -14
- data/app/models/alchemy/cell.rb +18 -4
- data/app/models/alchemy/content.rb +69 -79
- data/app/models/alchemy/content/factory.rb +2 -6
- data/app/models/alchemy/element.rb +94 -89
- data/app/models/alchemy/essence_boolean.rb +13 -2
- data/app/models/alchemy/essence_date.rb +15 -8
- data/app/models/alchemy/essence_file.rb +25 -1
- data/app/models/alchemy/essence_html.rb +13 -6
- data/app/models/alchemy/essence_link.rb +16 -7
- data/app/models/alchemy/essence_picture.rb +102 -21
- data/app/models/alchemy/essence_richtext.rb +15 -37
- data/app/models/alchemy/essence_select.rb +13 -2
- data/app/models/alchemy/essence_text.rb +17 -42
- data/app/models/alchemy/folded_page.rb +10 -0
- data/app/models/alchemy/language.rb +62 -48
- data/app/models/alchemy/legacy_page_url.rb +12 -2
- data/app/models/alchemy/message.rb +11 -43
- data/app/models/alchemy/page.rb +107 -88
- data/app/models/alchemy/page/{page_cells.rb → cells.rb} +2 -2
- data/app/models/alchemy/page/{page_elements.rb → elements.rb} +5 -6
- data/app/models/alchemy/page/{page_naming.rb → naming.rb} +6 -11
- data/app/models/alchemy/page/{page_natures.rb → natures.rb} +29 -5
- data/app/models/alchemy/page/{page_scopes.rb → scopes.rb} +14 -14
- data/app/models/alchemy/page/{page_users.rb → users.rb} +4 -4
- data/app/models/alchemy/picture.rb +113 -41
- data/app/models/alchemy/picture/sweeping.rb +17 -0
- data/app/models/alchemy/site.rb +14 -2
- data/app/models/alchemy/tag.rb +8 -0
- data/app/serializers/alchemy/attachment_serializer.rb +15 -0
- data/app/serializers/alchemy/cell_serializer.rb +18 -0
- data/app/serializers/alchemy/content_serializer.rb +27 -0
- data/app/serializers/alchemy/element_serializer.rb +17 -0
- data/app/serializers/alchemy/essence_boolean_serializer.rb +11 -0
- data/app/serializers/alchemy/essence_date_serializer.rb +11 -0
- data/app/serializers/alchemy/essence_file_serializer.rb +12 -0
- data/app/serializers/alchemy/essence_html_serializer.rb +11 -0
- data/app/serializers/alchemy/essence_link_serializer.rb +14 -0
- data/app/serializers/alchemy/essence_picture_serializer.rb +28 -0
- data/app/serializers/alchemy/essence_richtext_serializer.rb +12 -0
- data/app/serializers/alchemy/essence_select_serializer.rb +11 -0
- data/app/serializers/alchemy/essence_text_serializer.rb +22 -0
- data/app/serializers/alchemy/page_serializer.rb +29 -0
- data/app/serializers/alchemy/picture_serializer.rb +16 -0
- data/app/views/alchemy/_menubar.html.erb +16 -0
- data/app/views/alchemy/admin/attachments/_archive_overlay.html.erb +27 -29
- data/app/views/alchemy/admin/attachments/_attachment.html.erb +24 -24
- data/app/views/alchemy/admin/attachments/_file_to_assign.html.erb +1 -1
- data/app/views/alchemy/admin/attachments/_files_list.html.erb +1 -1
- data/app/views/alchemy/admin/attachments/_overlay_file_list.html.erb +2 -2
- data/app/views/alchemy/admin/attachments/archive_overlay.js.erb +7 -4
- data/app/views/alchemy/admin/attachments/create.js.erb +11 -9
- data/app/views/alchemy/admin/attachments/edit.html.erb +9 -26
- data/app/views/alchemy/admin/attachments/index.html.erb +4 -4
- data/app/views/alchemy/admin/attachments/new.html.erb +13 -10
- data/app/views/alchemy/admin/attachments/show.html.erb +1 -1
- data/app/views/alchemy/admin/clipboard/clear.js.erb +3 -7
- data/app/views/alchemy/admin/clipboard/index.html.erb +21 -22
- data/app/views/alchemy/admin/clipboard/insert.js.erb +19 -14
- data/app/views/alchemy/admin/contents/_missing.html.erb +10 -12
- data/app/views/alchemy/admin/contents/create.js.erb +32 -36
- data/app/views/alchemy/admin/contents/destroy.js.coffee +3 -3
- data/app/views/alchemy/admin/contents/new.html.erb +9 -21
- data/app/views/alchemy/admin/contents/order.js.erb +2 -5
- data/app/views/alchemy/admin/dashboard/help.html.erb +21 -0
- data/app/views/alchemy/admin/dashboard/index.html.erb +5 -7
- data/app/views/alchemy/admin/dashboard/info.html.erb +13 -9
- data/app/views/alchemy/admin/elements/_add_picture.html.erb +6 -6
- data/app/views/alchemy/admin/elements/_element.html.erb +4 -1
- data/app/views/alchemy/admin/elements/_element_head.html.erb +2 -2
- data/app/views/alchemy/admin/elements/_new_element_form.html.erb +20 -27
- data/app/views/alchemy/admin/elements/_picture_gallery_editor.html.erb +7 -7
- data/app/views/alchemy/admin/elements/_refresh_editor.js.erb +1 -1
- data/app/views/alchemy/admin/elements/create.js.erb +6 -6
- data/app/views/alchemy/admin/elements/fold.js.erb +10 -10
- data/app/views/alchemy/admin/elements/index.html.erb +24 -26
- data/app/views/alchemy/admin/elements/list.html.erb +16 -0
- data/app/views/alchemy/admin/elements/new.html.erb +12 -28
- data/app/views/alchemy/admin/elements/trash.js.erb +3 -3
- data/app/views/alchemy/admin/elements/update.js.erb +12 -8
- data/app/views/alchemy/admin/essence_files/assign.js.erb +9 -14
- data/app/views/alchemy/admin/essence_files/edit.html.erb +17 -27
- data/app/views/alchemy/admin/essence_pictures/assign.js.erb +18 -0
- data/app/views/alchemy/admin/essence_pictures/crop.html.erb +1 -1
- data/app/views/alchemy/admin/essence_pictures/destroy.js.erb +9 -13
- data/app/views/alchemy/admin/essence_pictures/edit.html.erb +27 -67
- data/app/views/alchemy/admin/essence_pictures/save_link.js.erb +1 -1
- data/app/views/alchemy/admin/essence_pictures/update.js.erb +3 -3
- data/app/views/alchemy/admin/languages/_form.html.erb +13 -55
- data/app/views/alchemy/admin/languages/_language.html.erb +10 -16
- data/app/views/alchemy/admin/languages/_table.html.erb +1 -1
- data/app/views/alchemy/admin/languages/index.html.erb +4 -4
- data/app/views/alchemy/admin/layoutpages/_layoutpage.html.erb +25 -27
- data/app/views/alchemy/admin/layoutpages/index.html.erb +5 -5
- data/app/views/alchemy/admin/pages/_create_language_form.html.erb +25 -31
- data/app/views/alchemy/admin/pages/_external_link.html.erb +24 -35
- data/app/views/alchemy/admin/pages/_file_link.html.erb +31 -45
- data/app/views/alchemy/admin/pages/_internal_link.html.erb +36 -42
- data/app/views/alchemy/admin/pages/_new_page_form.html.erb +8 -26
- data/app/views/alchemy/admin/pages/_page.html.erb +76 -75
- data/app/views/alchemy/admin/pages/_page_for_links.html.erb +15 -16
- data/app/views/alchemy/admin/pages/configure.html.erb +56 -86
- data/app/views/alchemy/admin/pages/configure_external.html.erb +32 -39
- data/app/views/alchemy/admin/pages/destroy.js.erb +10 -10
- data/app/views/alchemy/admin/pages/edit.html.erb +57 -63
- data/app/views/alchemy/admin/pages/fold.js.erb +3 -5
- data/app/views/alchemy/admin/pages/index.html.erb +11 -13
- data/app/views/alchemy/admin/pages/info.html.erb +28 -31
- data/app/views/alchemy/admin/pages/link.html.erb +8 -19
- data/app/views/alchemy/admin/pages/new.html.erb +11 -35
- data/app/views/alchemy/admin/pages/show.html.erb +1 -1
- data/app/views/alchemy/admin/pages/sort.js.erb +5 -7
- data/app/views/alchemy/admin/pages/update.js.erb +19 -20
- data/app/views/alchemy/admin/partials/_autocomplete_tag_list.html.erb +1 -9
- data/app/views/alchemy/admin/partials/_language_tree_select.html.erb +8 -19
- data/app/views/alchemy/admin/partials/_main_navigation_entry.html.erb +1 -1
- data/app/views/alchemy/admin/partials/_sub_navigation.html.erb +1 -1
- data/app/views/alchemy/admin/partials/_toolbar_button.html.erb +3 -3
- data/app/views/alchemy/admin/partials/_upload_form.html.erb +37 -55
- data/app/views/alchemy/admin/pictures/_archive.html.erb +3 -3
- data/app/views/alchemy/admin/pictures/_archive_overlay.html.erb +11 -13
- data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +1 -1
- data/app/views/alchemy/admin/pictures/_overlay_picture_list.html.erb +4 -2
- data/app/views/alchemy/admin/pictures/_picture.html.erb +37 -37
- data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +1 -1
- data/app/views/alchemy/admin/pictures/archive_overlay.js.erb +8 -5
- data/app/views/alchemy/admin/pictures/edit.html.erb +8 -21
- data/app/views/alchemy/admin/pictures/edit_multiple.html.erb +15 -33
- data/app/views/alchemy/admin/pictures/index.html.erb +9 -7
- data/app/views/alchemy/admin/pictures/index.js.erb +2 -2
- data/app/views/alchemy/admin/pictures/info.html.erb +35 -40
- data/app/views/alchemy/admin/pictures/new.html.erb +15 -11
- data/app/views/alchemy/admin/pictures/show.html.erb +5 -5
- data/app/views/alchemy/admin/resources/_form.html.erb +7 -31
- data/app/views/alchemy/admin/resources/_resource.html.erb +9 -16
- data/app/views/alchemy/admin/resources/_table.html.erb +1 -1
- data/app/views/alchemy/admin/resources/index.html.erb +5 -5
- data/app/views/alchemy/admin/sites/index.html.erb +3 -3
- data/app/views/alchemy/admin/tags/_tag.html.erb +15 -15
- data/app/views/alchemy/admin/tags/edit.html.erb +20 -37
- data/app/views/alchemy/admin/tags/index.html.erb +16 -19
- data/app/views/alchemy/admin/tags/new.html.erb +6 -15
- data/app/views/alchemy/admin/trash/clear.js.coffee +2 -2
- data/app/views/alchemy/admin/trash/index.html.erb +24 -20
- data/app/views/alchemy/base/500.html.erb +2 -2
- data/app/views/alchemy/base/error_notice.js.erb +1 -1
- data/app/views/alchemy/base/leave.html.erb +11 -11
- data/app/views/alchemy/base/permission_denied.js.erb +1 -1
- data/app/views/alchemy/base/redirect.js.erb +12 -1
- data/app/views/alchemy/base/update.js.erb +4 -4
- data/app/views/alchemy/breadcrumb/_spacer.html.erb +1 -1
- data/app/views/alchemy/elements/show.js.erb +1 -5
- data/app/views/alchemy/essences/_essence_boolean_editor.html.erb +1 -1
- data/app/views/alchemy/essences/_essence_boolean_view.html.erb +3 -1
- data/app/views/alchemy/essences/_essence_date_editor.html.erb +4 -3
- data/app/views/alchemy/essences/_essence_date_view.html.erb +9 -5
- data/app/views/alchemy/essences/_essence_file_editor.html.erb +33 -32
- data/app/views/alchemy/essences/_essence_file_view.html.erb +9 -7
- data/app/views/alchemy/essences/_essence_html_view.html.erb +3 -1
- data/app/views/alchemy/essences/_essence_link_editor.html.erb +2 -2
- data/app/views/alchemy/essences/_essence_link_view.html.erb +5 -1
- data/app/views/alchemy/essences/_essence_picture_editor.html.erb +11 -11
- data/app/views/alchemy/essences/_essence_picture_view.html.erb +3 -1
- data/app/views/alchemy/essences/_essence_richtext_editor.html.erb +1 -1
- data/app/views/alchemy/essences/_essence_richtext_view.html.erb +3 -4
- data/app/views/alchemy/essences/_essence_select_editor.html.erb +1 -1
- data/app/views/alchemy/essences/_essence_select_view.html.erb +3 -1
- data/app/views/alchemy/essences/_essence_text_editor.html.erb +14 -28
- data/app/views/alchemy/essences/_essence_text_view.html.erb +4 -0
- data/app/views/alchemy/essences/shared/_essence_picture_tools.html.erb +29 -29
- data/app/views/alchemy/essences/shared/_linkable_essence_tools.html.erb +9 -9
- data/app/views/alchemy/language_links/_language.html.erb +1 -1
- data/app/views/kaminari/{_first_page.html.erb → alchemy/_first_page.html.erb} +1 -1
- data/app/views/kaminari/{_gap.html.erb → alchemy/_gap.html.erb} +0 -0
- data/app/views/kaminari/{_last_page.html.erb → alchemy/_last_page.html.erb} +1 -1
- data/app/views/kaminari/{_next_page.html.erb → alchemy/_next_page.html.erb} +2 -2
- data/app/views/kaminari/{_page.html.erb → alchemy/_page.html.erb} +2 -2
- data/app/views/kaminari/{_paginator.html.erb → alchemy/_paginator.html.erb} +0 -0
- data/app/views/kaminari/{_prev_page.html.erb → alchemy/_prev_page.html.erb} +2 -2
- data/app/views/layouts/alchemy/admin.html.erb +17 -17
- data/bin/alchemy +179 -44
- data/bin/rails +8 -0
- data/config/alchemy/config.yml +24 -22
- data/config/alchemy/modules.yml +7 -1
- data/config/initializers/dragonfly.rb +20 -23
- data/config/initializers/simple_form.rb +144 -0
- data/config/locales/alchemy.de.yml +42 -33
- data/config/locales/alchemy.en.yml +32 -19
- data/config/locales/alchemy.nl.yml +937 -0
- data/config/locales/simple_form.de.yml +26 -0
- data/config/locales/simple_form.en.yml +25 -0
- data/config/locales/simple_form.nl.yml +25 -0
- data/config/routes.rb +9 -10
- data/db/migrate/20130827094554_alchemy_two_point_six.rb +261 -251
- data/db/migrate/20130828121054_remove_do_not_index_from_alchemy_essence_texts.rb +5 -0
- data/db/migrate/20130828121120_remove_do_not_index_from_alchemy_essence_richtexts.rb +5 -0
- data/db/migrate/20130918201742_add_published_at_to_alchemy_pages.rb +5 -0
- data/db/migrate/20140107192720_add_missing_unique_indices_to_tags_and_taggings.rb +21 -0
- data/lib/alchemy/auth_accessors.rb +23 -2
- data/lib/alchemy/cache_digests/template_tracker.rb +65 -0
- data/lib/alchemy/capistrano.rb +28 -38
- data/lib/alchemy/controller_actions.rb +130 -0
- data/lib/alchemy/engine.rb +54 -47
- data/lib/alchemy/essence.rb +83 -63
- data/lib/alchemy/forms/builder.rb +23 -0
- data/lib/alchemy/hints.rb +57 -0
- data/lib/alchemy/locale.rb +63 -0
- data/lib/alchemy/modules.rb +17 -17
- data/lib/alchemy/mount_point.rb +1 -1
- data/lib/alchemy/permissions.rb +199 -0
- data/lib/alchemy/picture_attributes.rb +1 -1
- data/lib/alchemy/resource.rb +13 -17
- data/lib/alchemy/resources_helper.rb +16 -18
- data/lib/alchemy/seeder.rb +8 -10
- data/lib/alchemy/shell.rb +8 -6
- data/lib/alchemy/tasks/helpers.rb +6 -4
- data/lib/alchemy/test_support/auth_helpers.rb +3 -3
- data/lib/alchemy/test_support/controller_requests.rb +1 -1
- data/lib/alchemy/test_support/essence_shared_examples.rb +141 -0
- data/lib/alchemy/test_support/factories.rb +27 -9
- data/lib/alchemy/test_support/integration_helpers.rb +1 -27
- data/lib/alchemy/tinymce.rb +12 -32
- data/lib/alchemy/touching.rb +41 -0
- data/lib/alchemy/upgrader.rb +17 -12
- data/lib/alchemy/upgrader/three_point_zero.rb +62 -0
- data/lib/alchemy/version.rb +2 -1
- data/lib/alchemy_cms.rb +1 -7
- data/lib/rails/generators/alchemy/elements/elements_generator.rb +3 -2
- data/lib/rails/generators/alchemy/elements/templates/editor.html.erb +0 -2
- data/lib/rails/generators/alchemy/elements/templates/editor.html.haml +2 -3
- data/lib/rails/generators/alchemy/elements/templates/editor.html.slim +0 -2
- data/lib/rails/generators/alchemy/elements/templates/view.html.erb +23 -23
- data/lib/rails/generators/alchemy/elements/templates/view.html.haml +16 -17
- data/lib/rails/generators/alchemy/elements/templates/view.html.slim +16 -17
- data/lib/rails/generators/alchemy/essence/templates/editor.html.erb +1 -1
- data/lib/rails/generators/alchemy/scaffold/files/_article_editor.html.erb +5 -0
- data/lib/rails/generators/alchemy/scaffold/files/_article_view.html.erb +7 -0
- data/lib/rails/generators/alchemy/scaffold/files/alchemy.de.yml +31 -0
- data/lib/rails/generators/alchemy/scaffold/files/alchemy.elements.css.scss +30 -0
- data/lib/rails/generators/alchemy/scaffold/files/alchemy.en.yml +31 -0
- data/lib/rails/generators/alchemy/scaffold/files/application.html.erb +4 -2
- data/lib/rails/generators/alchemy/scaffold/files/elements.yml +16 -0
- data/lib/rails/generators/alchemy/scaffold/scaffold_generator.rb +16 -7
- data/lib/rails/generators/alchemy/scaffold/templates/page_layouts.yml.tt +3 -2
- data/lib/rails/templates/alchemy.rb +3 -6
- data/lib/tasks/alchemy/install.rake +29 -38
- data/lib/tasks/alchemy/tidy.rake +1 -1
- data/spec/controllers/admin/attachments_controller_spec.rb +101 -35
- data/spec/controllers/admin/clipboard_controller_spec.rb +16 -18
- data/spec/controllers/admin/contents_controller_spec.rb +34 -27
- data/spec/controllers/admin/dashboard_controller_spec.rb +2 -4
- data/spec/controllers/admin/elements_controller_spec.rb +288 -160
- data/spec/controllers/admin/essence_files_controller_spec.rb +11 -18
- data/spec/controllers/admin/essence_pictures_controller_spec.rb +15 -24
- data/spec/controllers/admin/languages_controller_spec.rb +11 -4
- data/spec/controllers/admin/layoutpages_controller_spec.rb +1 -2
- data/spec/controllers/admin/pages_controller_spec.rb +137 -167
- data/spec/controllers/admin/pictures_controller_spec.rb +286 -14
- data/spec/controllers/admin/resources_controller_spec.rb +4 -1
- data/spec/controllers/alchemy/admin/tags_controller_spec.rb +63 -0
- data/spec/controllers/attachments_controller_spec.rb +3 -3
- data/spec/controllers/base_controller_spec.rb +12 -104
- data/spec/controllers/elements_controller_spec.rb +2 -5
- data/spec/controllers/messages_controller_spec.rb +49 -51
- data/spec/controllers/pages_controller_spec.rb +91 -111
- data/spec/controllers/pictures_controller_spec.rb +126 -72
- data/spec/dummy/Rakefile +0 -1
- data/spec/dummy/app/assets/javascripts/application.js +11 -7
- data/spec/dummy/app/assets/stylesheets/application.css +11 -5
- data/spec/dummy/app/models/ability.rb +9 -0
- data/spec/dummy/app/models/dummy_user.rb +7 -0
- data/spec/dummy/app/models/event.rb +7 -2
- data/spec/dummy/app/models/location.rb +0 -1
- data/spec/dummy/app/views/alchemy/elements/_article_editor.html.erb +0 -1
- data/spec/dummy/app/views/alchemy/elements/_headline_editor.html.erb +1 -0
- data/spec/dummy/app/views/layouts/application.html.erb +3 -1
- data/spec/dummy/bin/bundle +3 -0
- data/spec/dummy/bin/rails +4 -0
- data/spec/dummy/bin/rake +4 -0
- data/spec/dummy/config.ru +2 -2
- data/spec/dummy/config/alchemy/elements.yml +0 -3
- data/spec/dummy/config/alchemy/page_layouts.yml +0 -6
- data/spec/dummy/config/application.rb +5 -57
- data/spec/dummy/config/boot.rb +4 -9
- data/spec/dummy/config/environment.rb +2 -2
- data/spec/dummy/config/environments/development.rb +11 -19
- data/spec/dummy/config/environments/production.rb +40 -27
- data/spec/dummy/config/environments/test.rb +15 -14
- data/spec/dummy/config/initializers/alchemy.rb +2 -0
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy/config/initializers/inflections.rb +9 -3
- data/spec/dummy/config/initializers/secret_token.rb +7 -2
- data/spec/dummy/config/initializers/session_store.rb +1 -6
- data/spec/dummy/config/initializers/wrap_parameters.rb +6 -6
- data/spec/dummy/config/routes.rb +3 -1
- data/spec/dummy/db/migrate/20130827094554_alchemy_two_point_six.rb +261 -251
- data/spec/dummy/db/migrate/20130828121054_remove_do_not_index_from_alchemy_essence_texts.rb +5 -0
- data/spec/dummy/db/migrate/20130828121120_remove_do_not_index_from_alchemy_essence_richtexts.rb +5 -0
- data/spec/dummy/db/migrate/20130918201742_add_published_at_to_alchemy_pages.rb +5 -0
- data/spec/dummy/db/migrate/20131209225243_create_dummy_users.rb +9 -0
- data/spec/dummy/db/migrate/20140107192720_add_missing_unique_indices_to_tags_and_taggings.rb +21 -0
- data/spec/dummy/db/schema.rb +112 -105
- data/spec/dummy/public/404.html +46 -26
- data/spec/dummy/public/422.html +46 -26
- data/spec/dummy/public/500.html +45 -26
- data/spec/features/admin/language_tree_feature_spec.rb +2 -2
- data/spec/features/admin/modules_integration_spec.rb +7 -13
- data/spec/features/admin/page_creation_feature_spec.rb +50 -0
- data/spec/features/admin/page_editing_feature_spec.rb +16 -0
- data/spec/features/admin/picture_library_integration_spec.rb +4 -4
- data/spec/features/admin/resources_integration_spec.rb +11 -11
- data/spec/features/page_feature_spec.rb +225 -0
- data/spec/features/translation_integration_spec.rb +7 -7
- data/spec/fixtures/500x500.png +0 -0
- data/spec/helpers/admin/attachments_helper_spec.rb +15 -0
- data/spec/helpers/admin/base_helper_spec.rb +88 -13
- data/spec/helpers/admin/contents_helper_spec.rb +53 -12
- data/spec/helpers/admin/elements_helper_spec.rb +24 -36
- data/spec/helpers/admin/essences_helper_spec.rb +48 -10
- data/spec/helpers/admin/navigation_helper_spec.rb +64 -29
- data/spec/helpers/admin/pages_helper_spec.rb +22 -1
- data/spec/helpers/admin/pictures_helper_spec.rb +29 -0
- data/spec/helpers/admin/tags_helper_spec.rb +1 -1
- data/spec/helpers/base_helper_spec.rb +6 -13
- data/spec/helpers/elements_block_helper_spec.rb +3 -3
- data/spec/helpers/elements_helper_spec.rb +203 -167
- data/spec/helpers/essences_helper_spec.rb +69 -15
- data/spec/helpers/pages_helper_spec.rb +28 -66
- data/spec/helpers/url_helper_spec.rb +41 -73
- data/spec/javascripts/alchemy/dialog_spec.coffee +82 -0
- data/spec/javascripts/alchemy/link_overlay_spec.coffee +25 -0
- data/spec/javascripts/alchemy_integration_spec.coffee +3 -12
- data/spec/javascripts/helpers/mock-ajax.js +52 -60
- data/spec/javascripts/support/jasmine.yml +29 -0
- data/spec/libraries/auth_accessors_spec.rb +24 -0
- data/spec/libraries/config_spec.rb +3 -3
- data/spec/libraries/controller_actions_spec.rb +133 -0
- data/spec/libraries/kaminari/scoped_pagination_url_helper_spec.rb +30 -0
- data/spec/libraries/modules_spec.rb +17 -0
- data/spec/libraries/mount_point_spec.rb +7 -7
- data/spec/libraries/page_layout_spec.rb +1 -1
- data/spec/libraries/permissions_spec.rb +219 -0
- data/spec/libraries/resource_spec.rb +61 -68
- data/spec/libraries/resources_helper_spec.rb +51 -51
- data/spec/libraries/shell_spec.rb +7 -8
- data/spec/libraries/template_tracker_spec.rb +94 -0
- data/spec/libraries/tinymce_spec.rb +0 -12
- data/spec/libraries/userstamp_spec.rb +10 -0
- data/spec/models/attachment_spec.rb +51 -18
- data/spec/models/cell_spec.rb +5 -5
- data/spec/models/content_spec.rb +103 -15
- data/spec/models/element_spec.rb +82 -18
- data/spec/models/essence_boolean_spec.rb +3 -8
- data/spec/models/essence_date_spec.rb +11 -7
- data/spec/models/essence_file_spec.rb +24 -4
- data/spec/models/essence_html_spec.rb +8 -3
- data/spec/models/essence_link_spec.rb +10 -0
- data/spec/models/essence_picture_spec.rb +109 -0
- data/spec/models/essence_richtext_spec.rb +6 -35
- data/spec/models/essence_select_spec.rb +3 -8
- data/spec/models/essence_text_spec.rb +83 -39
- data/spec/models/language_spec.rb +20 -54
- data/spec/models/message_spec.rb +12 -7
- data/spec/models/page_spec.rb +192 -185
- data/spec/models/picture_spec.rb +200 -45
- data/spec/models/resource_spec.rb +4 -24
- data/spec/models/site_spec.rb +69 -3
- data/spec/models/tag_spec.rb +6 -6
- data/spec/routing/routing_spec.rb +0 -32
- data/spec/spec_helper.rb +29 -38
- data/spec/support/hint_examples.rb +30 -0
- data/spec/support/phantomjs_mavericks_fix.rb +32 -0
- data/spec/support/test_tweaks.rb +31 -0
- data/spec/views/essences/essence_boolean_view_spec.rb +25 -0
- data/spec/views/essences/essence_date_view_spec.rb +39 -0
- data/spec/views/essences/essence_file_view_spec.rb +24 -0
- data/spec/views/essences/essence_html_view_spec.rb +22 -0
- data/spec/views/essences/essence_link_view_spec.rb +30 -0
- data/spec/views/essences/essence_picture_view_spec.rb +1 -1
- data/spec/views/essences/essence_richtext_view_spec.rb +20 -0
- data/spec/views/essences/essence_select_view_spec.rb +12 -0
- data/spec/views/essences/essence_text_view_spec.rb +40 -0
- data/vendor/assets/javascripts/fileupload/jquery.fileupload-process.js +172 -0
- data/vendor/assets/javascripts/fileupload/jquery.fileupload-validate.js +120 -0
- data/vendor/assets/javascripts/fileupload/jquery.fileupload.js +1416 -0
- data/vendor/assets/javascripts/fileupload/jquery.iframe-transport.js +210 -0
- data/vendor/assets/javascripts/jquery_plugins/jquery.ui.nestedSortable.js +381 -352
- data/vendor/assets/javascripts/jquery_plugins/jquery.ui.tabspaging.js +1 -52
- data/vendor/assets/javascripts/keymaster.js +296 -0
- data/vendor/assets/javascripts/requestAnimationFrame.js +31 -0
- data/vendor/assets/javascripts/tinymce/langs/de.js +179 -0
- data/vendor/assets/javascripts/tinymce/langs/nl.js +179 -0
- data/vendor/assets/javascripts/{tiny_mce → tinymce}/license.txt +504 -504
- data/vendor/assets/javascripts/tinymce/plugins/autoresize/plugin.min.js +1 -0
- data/vendor/assets/javascripts/tinymce/plugins/charmap/plugin.min.js +1 -0
- data/vendor/assets/javascripts/tinymce/plugins/code/plugin.min.js +1 -0
- data/vendor/assets/javascripts/tinymce/plugins/directionality/plugin.min.js +1 -0
- data/vendor/assets/javascripts/tinymce/plugins/fullscreen/plugin.min.js +1 -0
- data/vendor/assets/javascripts/tinymce/plugins/link/plugin.min.js +1 -0
- data/vendor/assets/javascripts/tinymce/plugins/paste/plugin.min.js +1 -0
- data/vendor/assets/javascripts/tinymce/plugins/tabfocus/plugin.min.js +1 -0
- data/vendor/assets/javascripts/tinymce/plugins/table/plugin.min.js +1 -0
- data/vendor/assets/javascripts/tinymce/themes/modern/theme.min.js +1 -0
- data/vendor/assets/javascripts/tinymce/tinymce.min.js +10 -0
- metadata +351 -332
- data/.simplecov +0 -14
- data/app/assets/images/alchemy/alchemy-logo.png +0 -0
- data/app/assets/images/alchemy/swfupload/browse_button.png +0 -0
- data/app/assets/javascripts/alchemy/alchemy.file_progress.js +0 -102
- data/app/assets/javascripts/alchemy/alchemy.link_overlay.js.coffee +0 -227
- data/app/assets/javascripts/alchemy/alchemy.menubar.js +0 -62
- data/app/assets/javascripts/alchemy/alchemy.swf_upload.js +0 -212
- data/app/assets/javascripts/alchemy/alchemy.uploader.js +0 -274
- data/app/assets/javascripts/alchemy/menubar.js +0 -2
- data/app/assets/javascripts/tiny_mce/plugins/alchemy_link/editor_plugin.js +0 -42
- data/app/assets/javascripts/tiny_mce/plugins/alchemy_link/langs/de.js +0 -4
- data/app/assets/javascripts/tiny_mce/plugins/alchemy_link/langs/en.js +0 -4
- data/app/assets/stylesheets/alchemy/form_elements.scss +0 -538
- data/app/assets/stylesheets/alchemy/login.scss +0 -55
- data/app/assets/stylesheets/alchemy/tinymce_content.css.scss +0 -98
- data/app/assets/stylesheets/alchemy/tinymce_dialog.css.scss +0 -420
- data/app/assets/stylesheets/tiny_mce/plugins/inlinepopups/skins/alchemy-tinymce-dialog/window.css.scss +0 -434
- data/app/controllers/alchemy/admin/users_controller.rb +0 -76
- data/app/models/alchemy/tree_node.rb +0 -4
- data/app/sweepers/alchemy/content_sweeper.rb +0 -41
- data/app/sweepers/alchemy/pages_sweeper.rb +0 -44
- data/app/sweepers/alchemy/pictures_sweeper.rb +0 -21
- data/app/views/alchemy/admin/elements/_elements_select.html.erb +0 -9
- data/app/views/alchemy/admin/elements/list.js.erb +0 -22
- data/app/views/alchemy/admin/essence_pictures/assign.js.coffee +0 -15
- data/app/views/alchemy/admin/pages/_contactform_links.html.erb +0 -62
- data/app/views/alchemy/admin/partials/_flash_upload.html.erb +0 -37
- data/app/views/alchemy/admin/partials/_pagination_links.html.erb +0 -1
- data/app/views/alchemy/admin/pictures/create.js.erb +0 -3
- data/app/views/alchemy/admin/resources/_boolean.html.erb +0 -5
- data/app/views/alchemy/admin/resources/_date.html.erb +0 -8
- data/app/views/alchemy/admin/resources/_datetime.html.erb +0 -1
- data/app/views/alchemy/admin/resources/_string.html.erb +0 -5
- data/app/views/alchemy/admin/resources/_text.html.erb +0 -5
- data/app/views/alchemy/admin/resources/destroy.js.erb +0 -1
- data/app/views/alchemy/base/remote_errors.js.erb +0 -6
- data/app/views/alchemy/search/_form.html.erb +0 -11
- data/app/views/alchemy/search/_result.html.erb +0 -7
- data/app/views/alchemy/search/_results.html.erb +0 -27
- data/config/authorization_rules.rb +0 -110
- data/config/initializers/cache_storage.rb +0 -1
- data/lib/alchemy/auth/engine.rb +0 -9
- data/lib/alchemy/ferret/search.rb +0 -86
- data/lib/alchemy/language_helpers.rb +0 -55
- data/lib/alchemy/upgrader/two_point_five.rb +0 -86
- data/lib/alchemy/upgrader/two_point_four.rb +0 -25
- data/lib/alchemy/upgrader/two_point_nine.rb +0 -33
- data/lib/alchemy/upgrader/two_point_one.rb +0 -95
- data/lib/alchemy/upgrader/two_point_six.rb +0 -32
- data/lib/alchemy/upgrader/two_point_three.rb +0 -25
- data/lib/alchemy/upgrader/two_point_two.rb +0 -114
- data/lib/alchemy/upgrader/two_point_zero.rb +0 -13
- data/lib/middleware/flash_session_cookie.rb +0 -22
- data/lib/rails/generators/alchemy/gallery_pictures_migration/gallery_pictures_migration_generator.rb +0 -40
- data/lib/tasks/ferret.rake +0 -10
- data/script/rails +0 -6
- data/spec/dummy/app/models/user.rb +0 -14
- data/spec/dummy/app/views/alchemy/elements/_searchresult_view.html.erb +0 -4
- data/spec/dummy/config/authorization_rules.rb +0 -7
- data/spec/dummy/public/stylesheets/.gitkeep +0 -0
- data/spec/dummy/script/rails +0 -6
- data/spec/fast_specs.rb +0 -15
- data/spec/features/admin/element_create_feature_spec.rb +0 -18
- data/spec/features/admin/element_trash_feature_spec.rb +0 -21
- data/spec/features/admin/pages_controller_spec.rb +0 -59
- data/spec/features/pages_controller_spec.rb +0 -262
- data/spec/javascripts/alchemy/link_overlay_spec.js.coffee +0 -42
- data/spec/javascripts/helpers/.gitkeep +0 -0
- data/spec/javascripts/helpers/jasmine-jquery-1.3.1.js +0 -289
- data/spec/javascripts/spec.css +0 -3
- data/spec/javascripts/spec.js +0 -2
- data/spec/libraries/essence_spec.rb +0 -76
- data/spec/support/alchemy/controller_hacks.rb +0 -41
- data/vendor/assets/javascripts/jquery_plugins/jquery.dialogextend.js +0 -684
- data/vendor/assets/javascripts/jquery_plugins/jquery.html5uploader.js +0 -271
- data/vendor/assets/javascripts/jquery_plugins/jquery.selectboxit.min.js +0 -11
- data/vendor/assets/javascripts/jquery_plugins/preloadCssImages.jQuery_v5.js +0 -152
- data/vendor/assets/javascripts/keymage.min.js +0 -6
- data/vendor/assets/javascripts/swfupload/SWFObject License.txt +0 -4
- data/vendor/assets/javascripts/swfupload/swfupload.cookies.js +0 -53
- data/vendor/assets/javascripts/swfupload/swfupload.js +0 -980
- data/vendor/assets/javascripts/swfupload/swfupload.queue.js +0 -98
- data/vendor/assets/javascripts/swfupload/swfupload.speed.js +0 -342
- data/vendor/assets/javascripts/swfupload/swfupload.swf +0 -0
- data/vendor/assets/javascripts/swfupload/swfupload.swfobject.js +0 -715
- data/vendor/assets/javascripts/tiny_mce/langs/de.js +0 -1
- data/vendor/assets/javascripts/tiny_mce/langs/en.js +0 -1
- data/vendor/assets/javascripts/tiny_mce/plugins/autoresize/editor_plugin.js +0 -1
- data/vendor/assets/javascripts/tiny_mce/plugins/fullscreen/editor_plugin.js +0 -1
- data/vendor/assets/javascripts/tiny_mce/plugins/fullscreen/fullscreen.htm +0 -110
- data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/editor_plugin.js +0 -1
- data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/template.htm +0 -387
- data/vendor/assets/javascripts/tiny_mce/plugins/paste/editor_plugin.js +0 -1
- data/vendor/assets/javascripts/tiny_mce/plugins/paste/js/pastetext.js +0 -36
- data/vendor/assets/javascripts/tiny_mce/plugins/paste/js/pasteword.js +0 -51
- data/vendor/assets/javascripts/tiny_mce/plugins/paste/langs/de_dlg.js +0 -1
- data/vendor/assets/javascripts/tiny_mce/plugins/paste/langs/en_dlg.js +0 -1
- data/vendor/assets/javascripts/tiny_mce/plugins/paste/pastetext.htm +0 -27
- data/vendor/assets/javascripts/tiny_mce/plugins/paste/pasteword.htm +0 -21
- data/vendor/assets/javascripts/tiny_mce/plugins/table/cell.htm +0 -180
- data/vendor/assets/javascripts/tiny_mce/plugins/table/css/cell.css +0 -17
- data/vendor/assets/javascripts/tiny_mce/plugins/table/css/row.css +0 -25
- data/vendor/assets/javascripts/tiny_mce/plugins/table/css/table.css +0 -13
- data/vendor/assets/javascripts/tiny_mce/plugins/table/editor_plugin.js +0 -1
- data/vendor/assets/javascripts/tiny_mce/plugins/table/js/cell.js +0 -319
- data/vendor/assets/javascripts/tiny_mce/plugins/table/js/merge_cells.js +0 -27
- data/vendor/assets/javascripts/tiny_mce/plugins/table/js/row.js +0 -254
- data/vendor/assets/javascripts/tiny_mce/plugins/table/js/table.js +0 -501
- data/vendor/assets/javascripts/tiny_mce/plugins/table/langs/de_dlg.js +0 -1
- data/vendor/assets/javascripts/tiny_mce/plugins/table/langs/en_dlg.js +0 -1
- data/vendor/assets/javascripts/tiny_mce/plugins/table/merge_cells.htm +0 -32
- data/vendor/assets/javascripts/tiny_mce/plugins/table/row.htm +0 -158
- data/vendor/assets/javascripts/tiny_mce/plugins/table/table.htm +0 -188
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/about.htm +0 -52
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/anchor.htm +0 -26
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/charmap.htm +0 -55
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/color_picker.htm +0 -70
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/editor_template.js +0 -1
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/image.htm +0 -80
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/colorpicker.jpg +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/flash.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/icons.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/iframe.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/pagebreak.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/quicktime.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/realmedia.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/shockwave.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/video.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/windowsmedia.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/about.js +0 -73
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/anchor.js +0 -56
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/charmap.js +0 -363
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/color_picker.js +0 -345
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/image.js +0 -253
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/link.js +0 -159
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/source_editor.js +0 -78
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/langs/de.js +0 -1
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/langs/de_dlg.js +0 -1
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/langs/en.js +0 -1
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/langs/en_dlg.js +0 -1
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/link.htm +0 -57
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/shortcuts.htm +0 -47
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/content.css +0 -50
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/dialog.css +0 -118
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/buttons.png +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/items.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/progress.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/ui.css +0 -219
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/highcontrast/content.css +0 -24
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/highcontrast/dialog.css +0 -106
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/highcontrast/ui.css +0 -106
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/content.css +0 -48
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css +0 -118
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui.css +0 -222
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css +0 -8
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css +0 -5
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/source_editor.htm +0 -25
- data/vendor/assets/javascripts/tiny_mce/tiny_mce.js +0 -1
- data/vendor/assets/javascripts/tiny_mce/tiny_mce_popup.js +0 -5
- data/vendor/assets/javascripts/tiny_mce/utils/editable_selects.js +0 -70
- data/vendor/assets/javascripts/tiny_mce/utils/form_utils.js +0 -210
- data/vendor/assets/javascripts/tiny_mce/utils/mctabs.js +0 -162
- data/vendor/assets/javascripts/tiny_mce/utils/validate.js +0 -252
@@ -47,32 +47,6 @@ module Alchemy
|
|
47
47
|
render_essence_view(content, options, html_options)
|
48
48
|
end
|
49
49
|
|
50
|
-
# Renders the +Essence+ view partial from given +Element+ and +Essence+ type.
|
51
|
-
#
|
52
|
-
# Pass the type of +Essence+ you want to render from +element+ as second argument.
|
53
|
-
#
|
54
|
-
# By default the first essence gets rendered. You may pass a different position value as third argument.
|
55
|
-
#
|
56
|
-
# == Example:
|
57
|
-
#
|
58
|
-
# This renders the first +Content+ with type of +EssencePicture+ from element.
|
59
|
-
#
|
60
|
-
# <%= render_essence_view_by_type(element, "EssencePicture", 1, {:image_size => "120x80", :crop => true}) %>
|
61
|
-
#
|
62
|
-
def render_essence_view_by_type(element, type, position = 1, options = {}, html_options = {})
|
63
|
-
ActiveSupport::Deprecation.warn("Used deprecated render_essence_view_by_type helper. It will be removed in Alchemy v3.0. You can use render_essence_view_by_name instead.")
|
64
|
-
if element.blank?
|
65
|
-
warning('Element is nil')
|
66
|
-
return ""
|
67
|
-
end
|
68
|
-
if position == 1
|
69
|
-
content = element.content_by_type(type)
|
70
|
-
else
|
71
|
-
content = element.contents.find_by_essence_type_and_position(Alchemy::Content.normalize_essence_type(type), position)
|
72
|
-
end
|
73
|
-
render_essence_view(content, options, html_options)
|
74
|
-
end
|
75
|
-
|
76
50
|
# Renders the +Esssence+ partial for given +Content+.
|
77
51
|
#
|
78
52
|
# The helper renders the view partial as default.
|
@@ -85,24 +59,21 @@ module Alchemy
|
|
85
59
|
#
|
86
60
|
# This Hash is available as +options+ local variable.
|
87
61
|
#
|
88
|
-
# :
|
89
|
-
# :
|
62
|
+
# for_view: {}
|
63
|
+
# for_editor: {}
|
90
64
|
#
|
91
65
|
def render_essence(content, part = :view, options = {}, html_options = {})
|
92
|
-
options = {:
|
66
|
+
options = {for_view: {}, for_editor: {}}.update(options)
|
93
67
|
if content.nil?
|
94
68
|
return part == :view ? "" : warning('Content is nil', _t(:content_not_found))
|
95
69
|
elsif content.essence.nil?
|
96
70
|
return part == :view ? "" : warning('Essence is nil', _t(:content_essence_not_found))
|
97
71
|
end
|
98
|
-
render
|
99
|
-
:
|
100
|
-
:
|
101
|
-
|
102
|
-
|
103
|
-
:html_options => html_options
|
104
|
-
}
|
105
|
-
)
|
72
|
+
render partial: "alchemy/essences/#{content.essence_partial_name}_#{part}", locals: {
|
73
|
+
content: content,
|
74
|
+
options: options["for_#{part}".to_sym],
|
75
|
+
html_options: html_options
|
76
|
+
}
|
106
77
|
end
|
107
78
|
|
108
79
|
# Renders the +Esssence+ view partial for given +Content+.
|
@@ -121,30 +92,23 @@ module Alchemy
|
|
121
92
|
# Renders a essence picture
|
122
93
|
#
|
123
94
|
def render_essence_picture_view(content, options, html_options)
|
124
|
-
options = {:
|
125
|
-
return if content.
|
95
|
+
options = {show_caption: true, disable_link: false}.update(options)
|
96
|
+
return if content.ingredient.blank?
|
126
97
|
if content.essence.caption.present? && options[:show_caption]
|
127
|
-
caption = content_tag(:figcaption, content.essence.caption, :
|
98
|
+
caption = content_tag(:figcaption, content.essence.caption, id: "#{dom_id(content.ingredient)}_caption", class: "image_caption")
|
128
99
|
end
|
129
100
|
img_tag = image_tag(
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
:crop_size => options[:crop] && !content.essence.crop_size.blank? ? content.essence.crop_size : nil
|
135
|
-
).delete_if { |k, v| v.blank? || k.to_sym == :show_caption || k.to_sym == :disable_link }
|
136
|
-
),
|
137
|
-
{
|
138
|
-
:alt => (content.essence.alt_tag.blank? ? nil : content.essence.alt_tag),
|
139
|
-
:title => (content.essence.title.blank? ? nil : content.essence.title),
|
140
|
-
:class => (caption || content.essence.css_class.blank? ? nil : content.essence.css_class)
|
101
|
+
content.essence.picture_url(options), {
|
102
|
+
alt: (content.essence.alt_tag.blank? ? nil : content.essence.alt_tag),
|
103
|
+
title: (content.essence.title.blank? ? nil : content.essence.title),
|
104
|
+
class: (caption || content.essence.css_class.blank? ? nil : content.essence.css_class)
|
141
105
|
}.merge(caption ? {} : html_options)
|
142
106
|
)
|
143
107
|
output = caption ? img_tag + caption : img_tag
|
144
108
|
if content.essence.link.present? && !options[:disable_link]
|
145
109
|
output = link_to(url_for(content.essence.link), {
|
146
|
-
:
|
147
|
-
:
|
110
|
+
title: content.essence.link_title.blank? ? nil : content.essence.link_title,
|
111
|
+
target: (content.essence.link_target == "blank" ? "_blank" : nil),
|
148
112
|
'data-link-target' => content.essence.link_target.blank? ? nil : content.essence.link_target
|
149
113
|
}) do
|
150
114
|
output
|
@@ -1,6 +1,5 @@
|
|
1
1
|
module Alchemy
|
2
2
|
module PagesHelper
|
3
|
-
|
4
3
|
include Alchemy::BaseHelper
|
5
4
|
include Alchemy::ElementsHelper
|
6
5
|
|
@@ -10,10 +9,17 @@ module Alchemy
|
|
10
9
|
|
11
10
|
# Renders links to language root pages of all published languages.
|
12
11
|
#
|
13
|
-
# @option options linkname [String] ('name')
|
14
|
-
#
|
15
|
-
#
|
16
|
-
# @option options
|
12
|
+
# @option options linkname [String] ('name')
|
13
|
+
# Renders name/code of language, or I18n translation for code.
|
14
|
+
#
|
15
|
+
# @option options show_title [Boolean] (true)
|
16
|
+
# Renders title attributes for the links.
|
17
|
+
#
|
18
|
+
# @option options spacer [String] ('')
|
19
|
+
# Renders the passed spacer string. You can also overwrite the spacer partial: "alchemy/language_links/_spacer".
|
20
|
+
#
|
21
|
+
# @option options reverse [Boolean] (false)
|
22
|
+
# Reverses the ordering of the links.
|
17
23
|
#
|
18
24
|
def language_links(options={})
|
19
25
|
options = {
|
@@ -22,7 +28,7 @@ module Alchemy
|
|
22
28
|
spacer: '',
|
23
29
|
reverse: false
|
24
30
|
}.merge(options)
|
25
|
-
languages = Language.published.
|
31
|
+
languages = Language.published.with_root_page.order("name #{options[:reverse] ? 'DESC' : 'ASC'}")
|
26
32
|
return nil if languages.count < 2
|
27
33
|
render(
|
28
34
|
partial: "alchemy/language_links/language",
|
@@ -32,22 +38,17 @@ module Alchemy
|
|
32
38
|
)
|
33
39
|
end
|
34
40
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
end
|
44
|
-
|
45
|
-
# Renders the layout from @page.page_layout. File resists in /app/views/page_layouts/_LAYOUT-NAME.html.erb
|
46
|
-
def render_page_layout(options={})
|
47
|
-
render :partial => "alchemy/page_layouts/#{@page.page_layout.downcase}"
|
41
|
+
# Renders the layout for current page.
|
42
|
+
#
|
43
|
+
# Page layout files belongs in +/app/views/alchemy/page_layouts/+
|
44
|
+
#
|
45
|
+
# Falls back to +/app/views/alchemy/page_layouts/standard+ if the page_layout partial is not found.
|
46
|
+
#
|
47
|
+
def render_page_layout
|
48
|
+
render @page, page: @page
|
48
49
|
rescue ActionView::MissingTemplate
|
49
50
|
warning("PageLayout: '#{@page.page_layout}' not found. Rendering standard page_layout.")
|
50
|
-
render
|
51
|
+
render 'alchemy/page_layouts/standard', page: @page
|
51
52
|
end
|
52
53
|
|
53
54
|
# Renders a partial for current site
|
@@ -63,9 +64,9 @@ module Alchemy
|
|
63
64
|
# renders +app/views/alchemy/site_layouts/_default_site.html.erb+ for the site named "Default Site".
|
64
65
|
#
|
65
66
|
def render_site_layout
|
66
|
-
render
|
67
|
+
render current_alchemy_site
|
67
68
|
rescue ActionView::MissingTemplate
|
68
|
-
warning("Site layout for #{
|
69
|
+
warning("Site layout for #{current_alchemy_site.try(:name)} not found. Please run `rails g alchemy:site_layouts`")
|
69
70
|
return ""
|
70
71
|
end
|
71
72
|
|
@@ -74,7 +75,7 @@ module Alchemy
|
|
74
75
|
# It produces a html <ul><li></li></ul> structure with all necessary classes so you can produce every navigation the web uses today.
|
75
76
|
# I.E. dropdown-navigations, simple mainnavigations or even complex nested ones.
|
76
77
|
#
|
77
|
-
# ===
|
78
|
+
# === HTML output:
|
78
79
|
#
|
79
80
|
# <ul class="navigation level_1">
|
80
81
|
# <li class="first home"><a href="/home" class="active" title="Homepage" lang="en" data-page-id="1">Homepage</a></li>
|
@@ -85,23 +86,8 @@ module Alchemy
|
|
85
86
|
# As you can see: Everything you need.
|
86
87
|
#
|
87
88
|
# Not pleased with the way Alchemy produces the navigation structure?
|
88
|
-
# Then feel free to overwrite the partials (_renderer.html.erb and _link.html.erb) found in +views/navigation/+ or pass different partials via the options +:navigation_partial+ and +:navigation_link_partial+.
|
89
89
|
#
|
90
|
-
#
|
91
|
-
#
|
92
|
-
# :submenu => false # Do you want a nested <ul> <li> structure for the deeper levels of your navigation, or not? Used to display the subnavigation within the mainnaviagtion. E.g. for dropdown menues.
|
93
|
-
# :all_sub_menues => false # Renders the whole page tree.
|
94
|
-
# :from_page => @root_page # Do you want to render a navigation from a different page then the current page? Then pass an Page instance or a Alchemy::PageLayout name as string.
|
95
|
-
# :spacer => nil # A spacer for the entries can be passed. Simple string, or even a complex html structure. E.g: "<span class='spacer'>|</spacer>".
|
96
|
-
# :navigation_partial => "navigation/renderer" # Pass a different partial to be taken for the navigation rendering.
|
97
|
-
# :navigation_link_partial => "navigation/link" # Alchemy places an <a> html link in <li> tags. The tag automatically has an active css class if necessary. So styling is everything. But maybe you don't want this. So feel free to make you own partial and pass the filename here.
|
98
|
-
# :show_nonactive => false # Commonly Alchemy only displays the submenu of the active page (if :submenu => true). If you want to display all child pages then pass true (together with :submenu => true of course). E.g. for the popular css-driven dropdownmenues these days.
|
99
|
-
# :show_title => true # For our beloved SEOs :). Appends a title attribute to all links and places the page.title content into it.
|
100
|
-
# :restricted_only => false # Render only restricted pages. I.E for members only navigations.
|
101
|
-
# :show_title => true # Show a title on navigation links. Title attribute from page.
|
102
|
-
# :reverse => false # Reverse the navigation
|
103
|
-
# :reverse_children => false # Reverse the nested children
|
104
|
-
# :deepness => nil # Show only pages up to this depth.
|
90
|
+
# Then feel free to overwrite the partials (_renderer.html.erb and _link.html.erb) found in +views/navigation/+ or pass different partials via the options +:navigation_partial+ and +:navigation_link_partial+.
|
105
91
|
#
|
106
92
|
# === Passing HTML classes and ids to the renderer
|
107
93
|
#
|
@@ -109,25 +95,74 @@ module Alchemy
|
|
109
95
|
#
|
110
96
|
# ==== Example:
|
111
97
|
#
|
112
|
-
# <%= render_navigation({from_page
|
98
|
+
# <%= render_navigation({from_page: 'subnavi'}, {class: 'navigation', id: 'subnavigation'}) %>
|
99
|
+
#
|
100
|
+
#
|
101
|
+
# @option options submenu [Boolean] (false)
|
102
|
+
# Do you want a nested <ul> <li> structure for the deeper levels of your navigation, or not?
|
103
|
+
# Used to display the subnavigation within the mainnaviagtion. I.e. for dropdown menues.
|
104
|
+
#
|
105
|
+
# @option options all_sub_menues [Boolean] (false)
|
106
|
+
# Renders the whole page tree.
|
107
|
+
#
|
108
|
+
# @option options from_page [Alchemy::Page] (@root_page)
|
109
|
+
# Do you want to render a navigation from a different page then the current page?
|
110
|
+
# Then pass an Page instance or a Alchemy::PageLayout name as string.
|
111
|
+
#
|
112
|
+
# @option options spacer [String] (nil)
|
113
|
+
# A spacer for the entries can be passed.
|
114
|
+
# Simple string, or even a complex html structure.
|
115
|
+
# I.e: "<span class='spacer'>|</spacer>".
|
116
|
+
#
|
117
|
+
# @option options navigation_partial [String] ("navigation/renderer")
|
118
|
+
# Pass a different partial to be taken for the navigation rendering.
|
119
|
+
# Alternatively you could override the +app/views/alchemy/navigation/renderer+ partial in your app.
|
120
|
+
#
|
121
|
+
# @option options navigation_link_partial [String] ("navigation/link")
|
122
|
+
# Alchemy places an <a> html link in <li> tags.
|
123
|
+
# The tag automatically has an active css class if necessary.
|
124
|
+
# So styling is everything. But maybe you don't want this.
|
125
|
+
# So feel free to make you own partial and pass the filename here.
|
126
|
+
# Alternatively you could override the +app/views/alchemy/navigation/link+ partial in your app.
|
127
|
+
#
|
128
|
+
# @option options show_nonactive [Boolean] (false)
|
129
|
+
# Commonly Alchemy only displays the submenu of the active page (if submenu: true).
|
130
|
+
# If you want to display all child pages then pass true (together with submenu: true of course).
|
131
|
+
# I.e. for css-driven drop down menues.
|
132
|
+
#
|
133
|
+
# @option options show_title [Boolean] (true)
|
134
|
+
# For our beloved SEOs :)
|
135
|
+
# Appends a title attribute to all links and places the +page.title+ content into it.
|
136
|
+
#
|
137
|
+
# @option options restricted_only [Boolean] (false)
|
138
|
+
# Render only restricted pages. I.E for members only navigations.
|
139
|
+
#
|
140
|
+
# @option options reverse [Boolean] (false)
|
141
|
+
# Reverse the output of the pages
|
142
|
+
#
|
143
|
+
# @option options reverse_children [Boolean] (false)
|
144
|
+
# Like reverse option, but only reverse the children of the first level
|
145
|
+
#
|
146
|
+
# @option options deepness [Fixnum] (nil)
|
147
|
+
# Show only pages up to this depth.
|
113
148
|
#
|
114
149
|
def render_navigation(options = {}, html_options = {})
|
115
150
|
options = {
|
116
|
-
:
|
117
|
-
:
|
118
|
-
:
|
119
|
-
:
|
120
|
-
:
|
121
|
-
:
|
122
|
-
:
|
123
|
-
:
|
124
|
-
:
|
125
|
-
:
|
126
|
-
:
|
151
|
+
submenu: false,
|
152
|
+
all_sub_menues: false,
|
153
|
+
from_page: @root_page || Language.current_root_page,
|
154
|
+
spacer: nil,
|
155
|
+
navigation_partial: 'alchemy/navigation/renderer',
|
156
|
+
navigation_link_partial: 'alchemy/navigation/link',
|
157
|
+
show_nonactive: false,
|
158
|
+
restricted_only: false,
|
159
|
+
show_title: true,
|
160
|
+
reverse: false,
|
161
|
+
reverse_children: false
|
127
162
|
}.merge(options)
|
128
163
|
page = page_or_find(options[:from_page])
|
129
164
|
return nil if page.blank?
|
130
|
-
pages = page.children.
|
165
|
+
pages = page.children.accessible_by(current_ability, :see)
|
131
166
|
pages = pages.restricted if options.delete(:restricted_only)
|
132
167
|
if depth = options[:deepness]
|
133
168
|
pages = pages.where("#{Page.table_name}.depth <= #{depth}")
|
@@ -135,12 +170,10 @@ module Alchemy
|
|
135
170
|
if options[:reverse]
|
136
171
|
pages.reverse!
|
137
172
|
end
|
138
|
-
render
|
139
|
-
options
|
140
|
-
:
|
141
|
-
:
|
142
|
-
:html_options => html_options
|
143
|
-
)
|
173
|
+
render options[:navigation_partial],
|
174
|
+
options: options,
|
175
|
+
pages: pages,
|
176
|
+
html_options: html_options
|
144
177
|
end
|
145
178
|
|
146
179
|
# Renders navigation the children and all siblings of the given page (standard is the current page).
|
@@ -151,15 +184,15 @@ module Alchemy
|
|
151
184
|
#
|
152
185
|
# === Options:
|
153
186
|
#
|
154
|
-
# :
|
155
|
-
# :
|
156
|
-
# :
|
187
|
+
# from_page: @page # The page to render the navigation from
|
188
|
+
# submenu: true # Shows the nested children
|
189
|
+
# level: 2 # Normally there is no need to change the level parameter, just in a few special cases
|
157
190
|
#
|
158
191
|
def render_subnavigation(options = {}, html_options = {})
|
159
192
|
default_options = {
|
160
|
-
:
|
161
|
-
:
|
162
|
-
:
|
193
|
+
from_page: @page,
|
194
|
+
submenu: true,
|
195
|
+
level: 2
|
163
196
|
}
|
164
197
|
options = default_options.merge(options)
|
165
198
|
if !options[:from_page].nil?
|
@@ -188,21 +221,21 @@ module Alchemy
|
|
188
221
|
#
|
189
222
|
# === Options:
|
190
223
|
#
|
191
|
-
# :
|
192
|
-
# :
|
193
|
-
# :
|
194
|
-
# :
|
195
|
-
# :
|
224
|
+
# separator: %(<span class="separator">></span>) # Maybe you don't want this separator. Pass another one.
|
225
|
+
# page: @page # Pass a different Page instead of the default (@page).
|
226
|
+
# without: nil # Pass Page object or array of Pages that must not be displayed.
|
227
|
+
# restricted_only: false # Pass boolean for displaying restricted pages only.
|
228
|
+
# reverse: false # Pass boolean for displaying breadcrumb in reversed reversed.
|
196
229
|
#
|
197
230
|
def render_breadcrumb(options={})
|
198
231
|
options = {
|
199
|
-
:
|
200
|
-
:
|
201
|
-
:
|
202
|
-
:
|
203
|
-
:
|
232
|
+
separator: %(<span class="separator">></span>),
|
233
|
+
page: @page,
|
234
|
+
restricted_only: false,
|
235
|
+
reverse: false,
|
236
|
+
link_active_page: false
|
204
237
|
}.merge(options)
|
205
|
-
pages = breadcrumb(options[:page]).
|
238
|
+
pages = breadcrumb(options[:page]).accessible_by(current_ability, :see)
|
206
239
|
pages = pages.restricted if options.delete(:restricted_only)
|
207
240
|
pages.to_a.reverse! if options[:reverse]
|
208
241
|
if options[:without].present?
|
@@ -224,22 +257,27 @@ module Alchemy
|
|
224
257
|
#
|
225
258
|
# === Options:
|
226
259
|
#
|
227
|
-
# :
|
228
|
-
# :
|
260
|
+
# prefix: "" # Prefix
|
261
|
+
# separator: "" # Separating prefix and title
|
229
262
|
#
|
230
263
|
# === Webdevelopers
|
231
264
|
#
|
232
265
|
# Please use the render_meta_data() helper instead. There all important meta information gets rendered in one helper.
|
233
266
|
# So you dont have to worry about anything.
|
234
267
|
#
|
235
|
-
def render_page_title(options={})
|
268
|
+
def render_page_title(options = {})
|
236
269
|
return "" if @page.title.blank?
|
237
|
-
|
238
|
-
:
|
239
|
-
:
|
240
|
-
}
|
241
|
-
|
242
|
-
|
270
|
+
options = {
|
271
|
+
prefix: "",
|
272
|
+
separator: ""
|
273
|
+
}.update(options)
|
274
|
+
title_parts = [options[:prefix]]
|
275
|
+
if response.status == 200
|
276
|
+
title_parts << @page.title
|
277
|
+
else
|
278
|
+
title_parts << response.status
|
279
|
+
end
|
280
|
+
title_parts.join(options[:separator])
|
243
281
|
end
|
244
282
|
|
245
283
|
# Returns a complete html <title> tag for the <head> part of the html document.
|
@@ -251,14 +289,14 @@ module Alchemy
|
|
251
289
|
#
|
252
290
|
def render_title_tag(options={})
|
253
291
|
default_options = {
|
254
|
-
:
|
255
|
-
:
|
292
|
+
prefix: "",
|
293
|
+
separator: ""
|
256
294
|
}
|
257
295
|
options = default_options.merge(options)
|
258
296
|
%(<title>#{render_page_title(options)}</title>).html_safe
|
259
297
|
end
|
260
298
|
|
261
|
-
# Renders a html <meta> tag for :
|
299
|
+
# Renders a html <meta> tag for name: "" and content: ""
|
262
300
|
#
|
263
301
|
# === Webdevelopers:
|
264
302
|
#
|
@@ -267,9 +305,9 @@ module Alchemy
|
|
267
305
|
#
|
268
306
|
def render_meta_tag(options={})
|
269
307
|
default_options = {
|
270
|
-
:
|
271
|
-
:
|
272
|
-
:
|
308
|
+
name: "",
|
309
|
+
default_language: "de",
|
310
|
+
content: ""
|
273
311
|
}
|
274
312
|
options = default_options.merge(options)
|
275
313
|
lang = (@page.language.blank? ? options[:default_language] : @page.language.code)
|
@@ -286,7 +324,7 @@ module Alchemy
|
|
286
324
|
# Description = Your page description
|
287
325
|
# Keywords: cms, ruby, rubyonrails, rails, software, development, html, javascript, ajax
|
288
326
|
#
|
289
|
-
# Then placing +render_meta_data(:
|
327
|
+
# Then placing +render_meta_data(title_prefix: "Company", title_separator: "-")+ into the <head> part of the +pages.html.erb+ layout produces:
|
290
328
|
#
|
291
329
|
# <meta charset="UTF-8">
|
292
330
|
# <title>Company - #{@page.title}</title>
|
@@ -301,35 +339,35 @@ module Alchemy
|
|
301
339
|
return nil
|
302
340
|
end
|
303
341
|
default_options = {
|
304
|
-
:
|
305
|
-
:
|
306
|
-
:
|
342
|
+
title_prefix: "",
|
343
|
+
title_separator: "",
|
344
|
+
default_lang: "de"
|
307
345
|
}
|
308
346
|
options = default_options.merge(options)
|
309
|
-
#render meta description of the root page from language if the current meta description is empty
|
347
|
+
# render meta description of the root page from language if the current meta description is empty
|
310
348
|
if @page.meta_description.blank?
|
311
|
-
description =
|
349
|
+
description = Language.current.pages.published.language_roots.try(:meta_description)
|
312
350
|
else
|
313
351
|
description = @page.meta_description
|
314
352
|
end
|
315
|
-
#render meta keywords of the root page from language if the current meta keywords is empty
|
353
|
+
# render meta keywords of the root page from language if the current meta keywords is empty
|
316
354
|
if @page.meta_keywords.blank?
|
317
|
-
keywords =
|
355
|
+
keywords = Language.current.pages.published.language_roots.try(:meta_keywords)
|
318
356
|
else
|
319
357
|
keywords = @page.meta_keywords
|
320
358
|
end
|
321
359
|
robot = "#{@page.robot_index? ? "" : "no"}index, #{@page.robot_follow? ? "" : "no"}follow"
|
322
360
|
meta_string = %(
|
323
361
|
<meta charset="UTF-8">
|
324
|
-
#{render_title_tag(:
|
325
|
-
#{render_meta_tag(:
|
326
|
-
#{render_meta_tag(:
|
362
|
+
#{render_title_tag(prefix: options[:title_prefix], separator: options[:title_separator])}
|
363
|
+
#{render_meta_tag(name: "description", content: description)}
|
364
|
+
#{render_meta_tag(name: "keywords", content: keywords)}
|
327
365
|
<meta name="created" content="#{@page.updated_at}">
|
328
366
|
<meta name="robots" content="#{robot}">
|
329
367
|
)
|
330
368
|
if @page.contains_feed?
|
331
369
|
meta_string += %(
|
332
|
-
<link rel="alternate" type="application/rss+xml" title="RSS" href="#{show_alchemy_page_url(@page, :
|
370
|
+
<link rel="alternate" type="application/rss+xml" title="RSS" href="#{show_alchemy_page_url(@page, protocol: 'feed', format: :rss)}">
|
333
371
|
)
|
334
372
|
end
|
335
373
|
return meta_string.html_safe
|
@@ -340,18 +378,18 @@ module Alchemy
|
|
340
378
|
#
|
341
379
|
# === Options are:
|
342
380
|
#
|
343
|
-
# :
|
344
|
-
# :
|
381
|
+
# from_page: Alchemy::Page # Alchemy::Page object from which the elements are rendered from.
|
382
|
+
# locals: Hash # Hash of variables that will be available in the partial. Example: {user: var1, product: var2}
|
345
383
|
#
|
346
384
|
def render_cell(name, options={})
|
347
385
|
default_options = {
|
348
|
-
:
|
349
|
-
:
|
386
|
+
from_page: @page,
|
387
|
+
locals: {}
|
350
388
|
}
|
351
389
|
options = default_options.merge(options)
|
352
390
|
cell = options[:from_page].cells.find_by_name(name)
|
353
391
|
return "" if cell.blank?
|
354
|
-
render :
|
392
|
+
render partial: "alchemy/cells/#{name}", locals: {cell: cell}.merge(options[:locals])
|
355
393
|
end
|
356
394
|
|
357
395
|
# Returns true or false if no elements are in the cell found by name.
|
@@ -363,76 +401,9 @@ module Alchemy
|
|
363
401
|
|
364
402
|
# Include this in your layout file to have element selection magic in the page edit preview window.
|
365
403
|
def alchemy_preview_mode_code
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
# Renders a search form
|
370
|
-
#
|
371
|
-
# It queries the controller and then redirects to the search result page.
|
372
|
-
#
|
373
|
-
# === Example search results page layout
|
374
|
-
#
|
375
|
-
# Only performs the search if ferret is enabled in your +config/alchemy/config.yml+ and
|
376
|
-
# a page is present that is flagged with +searchresults+ true.
|
377
|
-
#
|
378
|
-
# # config/alchemy/page_layouts.yml
|
379
|
-
# - name: search
|
380
|
-
# searchresults: true # Flag as search result page
|
381
|
-
#
|
382
|
-
# === Note
|
383
|
-
#
|
384
|
-
# The search result page will not be cached.
|
385
|
-
#
|
386
|
-
# @option options html5 [Boolean] (true) Should the search form be of type search or not?
|
387
|
-
# @option options class [String] (fulltext_search) The default css class of the form
|
388
|
-
# @option options id [String] (search) The default css id of the form
|
389
|
-
#
|
390
|
-
def render_search_form(options={})
|
391
|
-
default_options = {
|
392
|
-
:html5 => false,
|
393
|
-
:class => 'fulltext_search',
|
394
|
-
:id => 'search'
|
395
|
-
}
|
396
|
-
render :partial => 'alchemy/search/form', :locals => {:options => default_options.merge(options), :search_result_page => find_search_result_page}
|
397
|
-
end
|
398
|
-
|
399
|
-
# Renders the search results partial within +app/views/alchemy/search/_results.html+
|
400
|
-
#
|
401
|
-
# @option options show_result_count [Boolean] (true) Should the count of results be displayed or not?
|
402
|
-
# @option options show_heading [Boolean] (true) Should the heading be displayed or not?
|
403
|
-
#
|
404
|
-
def render_search_results(options={})
|
405
|
-
default_options = {
|
406
|
-
:show_result_count => true,
|
407
|
-
:show_heading => true
|
408
|
-
}
|
409
|
-
render 'alchemy/search/results', :options => default_options.merge(options)
|
410
|
-
end
|
411
|
-
|
412
|
-
# Renders a menubar for logged in users that are visiting a page.
|
413
|
-
def alchemy_menu_bar
|
414
|
-
ActiveSupport::Deprecation.warn('Used deprecated alchemy_menu_bar helper. It will be removed in Alchemy v3.0. You can use `render "/alchemy/menubar"` instead.')
|
415
|
-
return if @preview_mode
|
416
|
-
if permitted_to?(:edit, :alchemy_admin_pages)
|
417
|
-
menu_bar_string = ""
|
418
|
-
menu_bar_string += stylesheet_link_tag("alchemy/menubar")
|
419
|
-
menu_bar_string += javascript_include_tag('alchemy/menubar')
|
420
|
-
menu_bar_string += <<-STR
|
421
|
-
<script type="text/javascript">
|
422
|
-
try {
|
423
|
-
Alchemy.loadAlchemyMenuBar({
|
424
|
-
page_id: #{@page.id},
|
425
|
-
route: '#{Alchemy::MountPoint.get}',
|
426
|
-
locale: '#{current_alchemy_user.language || ::I18n.default_locale}'
|
427
|
-
});
|
428
|
-
} catch(e) {
|
429
|
-
if(console){console.log(e)}
|
430
|
-
}
|
431
|
-
</script>
|
432
|
-
STR
|
433
|
-
menu_bar_string.html_safe
|
434
|
-
else
|
435
|
-
nil
|
404
|
+
if @preview_mode
|
405
|
+
output = javascript_tag("Alchemy = { locale: '#{session[:alchemy_locale]}' };")
|
406
|
+
output += javascript_include_tag("alchemy/preview")
|
436
407
|
end
|
437
408
|
end
|
438
409
|
|