alchemy_cms 3.2.1 → 3.3.0.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.
- checksums.yaml +4 -4
- data/.codeclimate.yml +28 -0
- data/.gitignore +2 -2
- data/.travis.yml +11 -3
- data/CHANGELOG.md +100 -0
- data/CONTRIBUTING.md +1 -1
- data/Gemfile +12 -1
- data/README.md +25 -7
- data/Rakefile +1 -3
- data/alchemy_cms.gemspec +7 -15
- data/app/assets/fonts/alchemy/icons.eot +0 -0
- data/app/assets/fonts/alchemy/icons.svg +28 -66
- data/app/assets/fonts/alchemy/icons.ttf +0 -0
- data/app/assets/fonts/alchemy/icons.woff +0 -0
- data/app/assets/images/alchemy/icons.png +0 -0
- data/app/assets/javascripts/alchemy/alchemy.base.js.coffee +10 -3
- data/app/assets/javascripts/alchemy/alchemy.buttons.js.coffee +15 -6
- data/app/assets/javascripts/alchemy/alchemy.char_counter.js.coffee +1 -1
- data/app/assets/javascripts/alchemy/alchemy.datepicker.js.coffee +1 -1
- data/app/assets/javascripts/alchemy/alchemy.dialog.js.coffee +10 -4
- data/app/assets/javascripts/alchemy/alchemy.dirty.js.coffee +16 -22
- data/app/assets/javascripts/alchemy/alchemy.dragndrop.js.coffee +69 -32
- data/app/assets/javascripts/alchemy/alchemy.element_editors.js.coffee +147 -83
- data/app/assets/javascripts/alchemy/alchemy.file_progress.js.coffee +14 -14
- data/app/assets/javascripts/alchemy/alchemy.hotkeys.js.coffee +1 -1
- data/app/assets/javascripts/alchemy/alchemy.i18n.js.coffee +1 -1
- data/app/assets/javascripts/alchemy/alchemy.image_overlay.coffee +55 -0
- data/app/assets/javascripts/alchemy/alchemy.initializer.js.coffee +8 -1
- data/app/assets/javascripts/alchemy/alchemy.js +3 -1
- data/app/assets/javascripts/alchemy/alchemy.link_dialog.js.coffee +36 -31
- data/app/assets/javascripts/alchemy/alchemy.preview.js.coffee +35 -29
- data/app/assets/javascripts/alchemy/alchemy.sitemap.js.coffee +51 -5
- data/app/assets/javascripts/alchemy/alchemy.tinymce.js.coffee +26 -10
- data/app/assets/javascripts/alchemy/{alchemy.windows.js.coffee → alchemy.trash_window.js.coffee} +1 -13
- data/app/assets/javascripts/alchemy/alchemy.uploader.js.coffee +15 -17
- data/app/assets/javascripts/tinymce/plugins/alchemy_link/plugin.min.js +3 -3
- data/app/assets/stylesheets/alchemy/_extends.scss +1 -1
- data/app/assets/stylesheets/alchemy/_mixins.scss +27 -0
- data/app/assets/stylesheets/alchemy/_variables.scss +1 -0
- data/app/assets/stylesheets/alchemy/admin.scss +1 -0
- data/app/assets/stylesheets/alchemy/archive.scss +0 -57
- data/app/assets/stylesheets/alchemy/base.scss +1 -18
- data/app/assets/stylesheets/alchemy/buttons.scss +30 -25
- data/app/assets/stylesheets/alchemy/dialogs.scss +25 -9
- data/app/assets/stylesheets/alchemy/elements.scss +182 -126
- data/app/assets/stylesheets/alchemy/form_fields.scss +14 -8
- data/app/assets/stylesheets/alchemy/forms.scss +10 -1
- data/app/assets/stylesheets/alchemy/frame.scss +3 -10
- data/app/assets/stylesheets/alchemy/icon-font.scss +13 -6
- data/app/assets/stylesheets/alchemy/icons.scss +16 -0
- data/app/assets/stylesheets/alchemy/image_library.scss +269 -0
- data/app/assets/stylesheets/alchemy/selects.scss +1 -0
- data/app/assets/stylesheets/alchemy/sitemap.scss +12 -1
- data/app/assets/stylesheets/alchemy/toolbar.scss +2 -2
- data/app/assets/stylesheets/alchemy/upload.scss +97 -87
- data/app/assets/stylesheets/alchemy/welcome.sass +49 -0
- data/app/controllers/alchemy/admin/attachments_controller.rb +21 -29
- data/app/controllers/alchemy/admin/base_controller.rb +23 -4
- data/app/controllers/alchemy/admin/clipboard_controller.rb +0 -1
- data/app/controllers/alchemy/admin/contents_controller.rb +2 -4
- data/app/controllers/alchemy/admin/dashboard_controller.rb +4 -4
- data/app/controllers/alchemy/admin/elements_controller.rb +20 -11
- data/app/controllers/alchemy/admin/essence_files_controller.rb +2 -2
- data/app/controllers/alchemy/admin/essence_pictures_controller.rb +10 -9
- data/app/controllers/alchemy/admin/languages_controller.rb +0 -1
- data/app/controllers/alchemy/admin/layoutpages_controller.rb +0 -2
- data/app/controllers/alchemy/admin/legacy_page_urls_controller.rb +0 -1
- data/app/controllers/alchemy/admin/pages_controller.rb +46 -29
- data/app/controllers/alchemy/admin/pictures_controller.rb +44 -55
- data/app/controllers/alchemy/admin/resources_controller.rb +8 -75
- data/app/controllers/alchemy/admin/tags_controller.rb +10 -8
- data/app/controllers/alchemy/admin/trash_controller.rb +0 -6
- data/app/controllers/alchemy/api/contents_controller.rb +0 -1
- data/app/controllers/alchemy/api/elements_controller.rb +0 -1
- data/app/controllers/alchemy/api/pages_controller.rb +4 -1
- data/app/controllers/alchemy/attachments_controller.rb +4 -5
- data/app/controllers/alchemy/base_controller.rb +6 -5
- data/app/controllers/alchemy/elements_controller.rb +1 -1
- data/app/controllers/alchemy/messages_controller.rb +9 -4
- data/app/controllers/alchemy/pages_controller.rb +133 -137
- data/app/controllers/alchemy/pictures_controller.rb +12 -10
- data/app/controllers/concerns/alchemy/admin/uploader_responses.rb +41 -0
- data/app/controllers/concerns/alchemy/legacy_page_redirects.rb +56 -0
- data/app/controllers/concerns/alchemy/locale_redirects.rb +38 -0
- data/app/controllers/concerns/alchemy/page_redirects.rb +80 -0
- data/app/controllers/concerns/alchemy/site_redirects.rb +22 -0
- data/app/helpers/alchemy/admin/attachments_helper.rb +1 -2
- data/app/helpers/alchemy/admin/base_helper.rb +36 -62
- data/app/helpers/alchemy/admin/contents_helper.rb +6 -80
- data/app/helpers/alchemy/admin/elements_helper.rb +36 -15
- data/app/helpers/alchemy/admin/essences_helper.rb +15 -8
- data/app/helpers/alchemy/admin/form_helper.rb +6 -10
- data/app/helpers/alchemy/admin/navigation_helper.rb +4 -7
- data/app/helpers/alchemy/admin/pages_helper.rb +14 -35
- data/app/helpers/alchemy/admin/pictures_helper.rb +12 -14
- data/app/helpers/alchemy/admin/tags_helper.rb +5 -7
- data/app/helpers/alchemy/base_helper.rb +9 -17
- data/app/helpers/alchemy/elements_block_helper.rb +5 -13
- data/app/helpers/alchemy/elements_helper.rb +6 -6
- data/app/helpers/alchemy/essences_helper.rb +3 -16
- data/app/helpers/alchemy/pages_helper.rb +32 -25
- data/app/helpers/alchemy/url_helper.rb +14 -16
- data/app/mailers/alchemy/messages.rb +0 -2
- data/app/models/alchemy.rb +0 -2
- data/app/models/alchemy/attachment.rb +45 -56
- data/app/models/alchemy/cell.rb +7 -8
- data/app/models/alchemy/content.rb +39 -24
- data/app/models/alchemy/content/factory.rb +27 -44
- data/app/models/alchemy/element.rb +101 -267
- data/app/models/alchemy/element/definitions.rb +9 -8
- data/app/models/alchemy/element/element_contents.rb +150 -0
- data/app/models/alchemy/element/element_essences.rb +109 -0
- data/app/models/alchemy/element/presenters.rb +18 -7
- data/app/models/alchemy/essence_date.rb +1 -2
- data/app/models/alchemy/essence_file.rb +10 -6
- data/app/models/alchemy/essence_html.rb +0 -1
- data/app/models/alchemy/essence_picture.rb +12 -4
- data/app/models/alchemy/essence_richtext.rb +6 -3
- data/app/models/alchemy/language.rb +48 -21
- data/app/models/alchemy/language/code.rb +1 -4
- data/app/models/alchemy/page.rb +33 -35
- data/app/models/alchemy/page/page_cells.rb +6 -10
- data/app/models/alchemy/page/page_elements.rb +130 -100
- data/app/models/alchemy/page/page_naming.rb +2 -3
- data/app/models/alchemy/page/page_natures.rb +50 -16
- data/app/models/alchemy/page/page_scopes.rb +7 -7
- data/app/models/alchemy/page/page_users.rb +3 -3
- data/app/models/alchemy/picture.rb +48 -33
- data/app/models/alchemy/picture/transformations.rb +8 -9
- data/app/models/alchemy/site.rb +19 -17
- data/app/models/alchemy/site/layout.rb +9 -9
- data/app/models/alchemy/tag.rb +0 -2
- data/app/models/alchemy/tree_node.rb +5 -4
- data/app/serializers/alchemy/attachment_serializer.rb +0 -1
- data/app/serializers/alchemy/base_serializer.rb +30 -0
- data/app/serializers/alchemy/cell_serializer.rb +0 -1
- data/app/serializers/alchemy/essence_boolean_serializer.rb +0 -1
- data/app/serializers/alchemy/essence_date_serializer.rb +0 -1
- data/app/serializers/alchemy/essence_file_serializer.rb +0 -1
- data/app/serializers/alchemy/essence_html_serializer.rb +0 -1
- data/app/serializers/alchemy/essence_link_serializer.rb +0 -1
- data/app/serializers/alchemy/essence_picture_serializer.rb +0 -1
- data/app/serializers/alchemy/essence_richtext_serializer.rb +0 -1
- data/app/serializers/alchemy/essence_select_serializer.rb +0 -1
- data/app/serializers/alchemy/essence_text_serializer.rb +0 -1
- data/app/serializers/alchemy/legacy_element_serializer.rb +0 -1
- data/app/serializers/alchemy/page_serializer.rb +0 -1
- data/app/serializers/alchemy/page_tree_serializer.rb +90 -0
- data/app/serializers/alchemy/picture_serializer.rb +0 -1
- data/app/views/alchemy/_menubar.html.erb +3 -3
- data/app/views/alchemy/admin/attachments/_archive_overlay.html.erb +11 -16
- data/app/views/alchemy/admin/attachments/_attachment.html.erb +9 -9
- data/app/views/alchemy/admin/attachments/_files_list.html.erb +7 -15
- data/app/views/alchemy/admin/attachments/_overlay_file_list.html.erb +1 -1
- data/app/views/alchemy/admin/attachments/_tag_list.html.erb +2 -2
- data/app/views/alchemy/admin/attachments/edit.html.erb +3 -3
- data/app/views/alchemy/admin/attachments/index.html.erb +10 -17
- data/app/views/alchemy/admin/clipboard/clear.js.erb +1 -1
- data/app/views/alchemy/admin/clipboard/index.html.erb +3 -3
- data/app/views/alchemy/admin/clipboard/insert.js.erb +3 -3
- data/app/views/alchemy/admin/clipboard/remove.js.erb +2 -2
- data/app/views/alchemy/admin/contents/_missing.html.erb +5 -7
- data/app/views/alchemy/admin/contents/create.js.erb +1 -1
- data/app/views/alchemy/admin/contents/new.html.erb +2 -2
- data/app/views/alchemy/admin/dashboard/_locked_pages.html.erb +6 -6
- data/app/views/alchemy/admin/dashboard/_recent_pages.html.erb +2 -2
- data/app/views/alchemy/admin/dashboard/_users.html.erb +2 -2
- data/app/views/alchemy/admin/dashboard/help.html.erb +15 -15
- data/app/views/alchemy/admin/dashboard/index.html.erb +6 -6
- data/app/views/alchemy/admin/dashboard/info.html.erb +5 -5
- data/app/views/alchemy/admin/elements/_add_picture.html.erb +1 -1
- data/app/views/alchemy/admin/elements/_element.html.erb +52 -18
- data/app/views/alchemy/admin/elements/_element_footer.html.erb +11 -0
- data/app/views/alchemy/admin/elements/{_element_head.html.erb → _element_header.html.erb} +8 -8
- data/app/views/alchemy/admin/elements/_element_toolbar.html.erb +49 -0
- data/app/views/alchemy/admin/elements/_new_element_form.html.erb +7 -6
- data/app/views/alchemy/admin/elements/_picture_gallery_editor.html.erb +1 -1
- data/app/views/alchemy/admin/elements/_refresh_editor.js.erb +1 -1
- data/app/views/alchemy/admin/elements/create.js.erb +13 -8
- data/app/views/alchemy/admin/elements/fold.js.erb +12 -7
- data/app/views/alchemy/admin/elements/index.html.erb +12 -8
- data/app/views/alchemy/admin/elements/list.html.erb +3 -3
- data/app/views/alchemy/admin/elements/new.html.erb +4 -4
- data/app/views/alchemy/admin/elements/order.js.erb +3 -4
- data/app/views/alchemy/admin/elements/publish.js.erb +15 -0
- data/app/views/alchemy/admin/elements/trash.js.erb +3 -3
- data/app/views/alchemy/admin/elements/update.js.erb +7 -8
- data/app/views/alchemy/admin/essence_files/edit.html.erb +16 -13
- data/app/views/alchemy/admin/essence_pictures/crop.html.erb +3 -3
- data/app/views/alchemy/admin/essence_pictures/edit.html.erb +8 -8
- data/app/views/alchemy/admin/languages/_form.html.erb +12 -3
- data/app/views/alchemy/admin/languages/_language.html.erb +8 -2
- data/app/views/alchemy/admin/languages/_table.html.erb +11 -5
- data/app/views/alchemy/admin/languages/index.html.erb +1 -1
- data/app/views/alchemy/admin/layoutpages/_layoutpage.html.erb +8 -8
- data/app/views/alchemy/admin/layoutpages/edit.html.erb +2 -2
- data/app/views/alchemy/admin/layoutpages/index.html.erb +6 -13
- data/app/views/alchemy/admin/leave.html.erb +5 -5
- data/app/views/alchemy/admin/legacy_page_urls/_form.html.erb +1 -1
- data/app/views/alchemy/admin/legacy_page_urls/_legacy_page_url.html.erb +4 -4
- data/app/views/alchemy/admin/legacy_page_urls/_new.html.erb +1 -1
- data/app/views/alchemy/admin/pages/_create_language_form.html.erb +9 -9
- data/app/views/alchemy/admin/pages/_external_link.html.erb +6 -6
- data/app/views/alchemy/admin/pages/_file_link.html.erb +6 -6
- data/app/views/alchemy/admin/pages/_form.html.erb +6 -6
- data/app/views/alchemy/admin/pages/_internal_link.html.erb +9 -11
- data/app/views/alchemy/admin/pages/_legacy_urls.html.erb +3 -3
- data/app/views/alchemy/admin/pages/_locked_page.html.erb +4 -4
- data/app/views/alchemy/admin/pages/_new_page_form.html.erb +2 -2
- data/app/views/alchemy/admin/pages/_page.html.erb +95 -80
- data/app/views/alchemy/admin/pages/_page_for_links.html.erb +22 -22
- data/app/views/alchemy/admin/pages/_page_infos.html.erb +12 -0
- data/app/views/alchemy/admin/pages/_page_status.html.erb +7 -9
- data/app/views/alchemy/admin/pages/_sitemap.html.erb +35 -6
- data/app/views/alchemy/admin/pages/_tinymce_custom_config.html.erb +0 -3
- data/app/views/alchemy/admin/pages/configure.html.erb +1 -1
- data/app/views/alchemy/admin/pages/configure_external.html.erb +4 -4
- data/app/views/alchemy/admin/pages/edit.html.erb +39 -44
- data/app/views/alchemy/admin/pages/flush.js.erb +1 -1
- data/app/views/alchemy/admin/pages/fold.js.erb +2 -3
- data/app/views/alchemy/admin/pages/index.html.erb +15 -22
- data/app/views/alchemy/admin/pages/info.html.erb +8 -8
- data/app/views/alchemy/admin/pages/link.html.erb +3 -3
- data/app/views/alchemy/admin/pages/locked.html.erb +1 -1
- data/app/views/alchemy/admin/pages/new.html.erb +4 -4
- data/app/views/alchemy/admin/pages/sort.js.erb +1 -2
- data/app/views/alchemy/admin/pages/unlock.js.erb +1 -1
- data/app/views/alchemy/admin/pages/update.js.erb +3 -3
- data/app/views/alchemy/admin/partials/_autocomplete_tag_list.html.erb +1 -1
- data/app/views/alchemy/admin/partials/_language_tree_select.html.erb +1 -1
- data/app/views/alchemy/admin/partials/_main_navigation_entry.html.erb +1 -1
- data/app/views/alchemy/admin/partials/_remote_search_form.html.erb +9 -15
- data/app/views/alchemy/admin/partials/_search_form.html.erb +14 -13
- data/app/views/alchemy/admin/partials/_sub_navigation.html.erb +1 -1
- data/app/views/alchemy/admin/pictures/_archive.html.erb +14 -14
- data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +30 -36
- data/app/views/alchemy/admin/pictures/_filter_bar.html.erb +5 -5
- data/app/views/alchemy/admin/pictures/{edit.html.erb → _form.html.erb} +7 -6
- data/app/views/alchemy/admin/pictures/_infos.html.erb +50 -0
- data/app/views/alchemy/admin/pictures/_overlay_picture_list.html.erb +1 -1
- data/app/views/alchemy/admin/pictures/_picture.html.erb +17 -51
- data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +1 -1
- data/app/views/alchemy/admin/pictures/_tag_list.html.erb +2 -2
- data/app/views/alchemy/admin/pictures/edit_multiple.html.erb +6 -6
- data/app/views/alchemy/admin/pictures/index.html.erb +28 -36
- data/app/views/alchemy/admin/pictures/show.html.erb +46 -9
- data/app/views/alchemy/admin/pictures/update.js.erb +6 -0
- data/app/views/alchemy/admin/resources/_form.html.erb +3 -3
- data/app/views/alchemy/admin/resources/_resource.html.erb +4 -4
- data/app/views/alchemy/admin/resources/_table.html.erb +5 -6
- data/app/views/alchemy/admin/resources/index.csv.erb +12 -10
- data/app/views/alchemy/admin/resources/index.html.erb +4 -4
- data/app/views/alchemy/admin/sites/index.html.erb +1 -1
- data/app/views/alchemy/admin/tags/_tag.html.erb +4 -4
- data/app/views/alchemy/admin/tags/edit.html.erb +5 -5
- data/app/views/alchemy/admin/tags/index.html.erb +8 -8
- data/app/views/alchemy/admin/tags/new.html.erb +2 -2
- data/app/views/alchemy/admin/trash/clear.js.erb +1 -1
- data/app/views/alchemy/admin/trash/index.html.erb +8 -6
- data/app/views/alchemy/admin/uploader/_button.html.erb +39 -0
- data/app/views/alchemy/admin/uploader/_setup.html.erb +13 -0
- data/app/views/alchemy/base/500.html.erb +4 -4
- data/app/views/alchemy/elements/_editor_not_found.html.erb +1 -1
- data/app/views/alchemy/essences/_essence_boolean_editor.html.erb +3 -4
- data/app/views/alchemy/essences/_essence_boolean_view.html.erb +1 -1
- data/app/views/alchemy/essences/_essence_date_editor.html.erb +2 -6
- data/app/views/alchemy/essences/_essence_date_view.html.erb +1 -1
- data/app/views/alchemy/essences/_essence_file_editor.html.erb +9 -11
- data/app/views/alchemy/essences/_essence_file_view.html.erb +11 -5
- data/app/views/alchemy/essences/_essence_html_editor.html.erb +1 -1
- data/app/views/alchemy/essences/_essence_link_editor.html.erb +1 -1
- data/app/views/alchemy/essences/_essence_link_view.html.erb +1 -1
- data/app/views/alchemy/essences/_essence_picture_editor.html.erb +47 -52
- data/app/views/alchemy/essences/_essence_richtext_editor.html.erb +1 -1
- data/app/views/alchemy/essences/_essence_richtext_view.html.erb +1 -1
- data/app/views/alchemy/essences/_essence_select_editor.html.erb +23 -13
- data/app/views/alchemy/essences/_essence_text_editor.html.erb +1 -1
- data/app/views/alchemy/essences/_essence_text_view.html.erb +1 -1
- data/app/views/alchemy/essences/shared/_essence_picture_tools.html.erb +29 -36
- data/app/views/alchemy/essences/shared/_linkable_essence_tools.html.erb +5 -5
- data/app/views/alchemy/language_links/_language.html.erb +15 -9
- data/app/views/alchemy/messages/contact_form_mail.de.text.erb +1 -1
- data/app/views/alchemy/messages/contact_form_mail.en.text.erb +1 -1
- data/app/views/alchemy/messages/contact_form_mail.es.text.erb +1 -1
- data/app/views/alchemy/navigation/_link.html.erb +0 -1
- data/app/views/alchemy/pages/show.rss.builder +6 -4
- data/app/views/alchemy/welcome.html.erb +28 -0
- data/app/views/layouts/alchemy/admin.html.erb +14 -10
- data/bin/alchemy +3 -4
- data/bin/rspec +7 -0
- data/bin/spring +15 -0
- data/config/alchemy/config.yml +16 -17
- data/config/initializers/assets.rb +13 -0
- data/config/locales/alchemy.de.yml +27 -29
- data/config/locales/alchemy.en.yml +23 -29
- data/config/locales/alchemy.es.yml +23 -29
- data/config/locales/alchemy.fr.yml +19 -28
- data/config/locales/alchemy.nl.yml +19 -27
- data/config/locales/alchemy.ru.yml +19 -28
- data/config/routes.rb +53 -54
- data/config/spring.rb +2 -0
- data/db/migrate/20130827094554_alchemy_two_point_six.rb +1 -3
- data/db/migrate/20150608204610_add_parent_element_id_to_alchemy_elements.rb +6 -0
- data/db/migrate/20150729151825_add_link_text_to_alchemy_essence_files.rb +5 -0
- data/db/migrate/20150906195818_add_locale_to_alchemy_languages.rb +7 -0
- data/lib/alchemy/auth_accessors.rb +1 -1
- data/lib/alchemy/cache_digests/template_tracker.rb +7 -13
- data/lib/alchemy/config.rb +5 -7
- data/lib/alchemy/configuration_methods.rb +11 -1
- data/lib/alchemy/controller_actions.rb +9 -12
- data/lib/alchemy/engine.rb +11 -28
- data/lib/alchemy/errors.rb +0 -1
- data/lib/alchemy/essence.rb +20 -20
- data/lib/alchemy/filetypes.rb +1 -3
- data/lib/alchemy/forms/builder.rb +0 -2
- data/lib/alchemy/hints.rb +1 -3
- data/lib/alchemy/i18n.rb +81 -53
- data/lib/alchemy/kaminari/scoped_pagination_url_helper.rb +0 -2
- data/lib/alchemy/locale.rb +0 -1
- data/lib/alchemy/logger.rb +1 -3
- data/lib/alchemy/modules.rb +3 -3
- data/lib/alchemy/mount_point.rb +0 -2
- data/lib/alchemy/name_conversions.rb +1 -3
- data/lib/alchemy/on_page_layout.rb +37 -23
- data/lib/alchemy/on_page_layout/callbacks_runner.rb +34 -0
- data/lib/alchemy/page_layout.rb +23 -24
- data/lib/alchemy/paths.rb +32 -0
- data/lib/alchemy/permissions.rb +20 -20
- data/lib/alchemy/picture_attributes.rb +0 -3
- data/lib/alchemy/resource.rb +66 -22
- data/lib/alchemy/resources_helper.rb +48 -11
- data/lib/alchemy/routing_constraints.rb +4 -5
- data/lib/alchemy/seeder.rb +1 -4
- data/lib/alchemy/shell.rb +12 -14
- data/lib/alchemy/tasks/helpers.rb +5 -7
- data/lib/alchemy/test_support/essence_shared_examples.rb +24 -24
- data/lib/alchemy/test_support/factories.rb +2 -146
- data/lib/alchemy/test_support/factories/attachment_factory.rb +9 -0
- data/lib/alchemy/test_support/factories/cell_factory.rb +9 -0
- data/lib/alchemy/test_support/factories/content_factory.rb +10 -0
- data/lib/alchemy/test_support/factories/dummy_user_factory.rb +21 -0
- data/lib/alchemy/test_support/factories/element_factory.rb +21 -0
- data/lib/alchemy/test_support/factories/essence_file_factory.rb +8 -0
- data/lib/alchemy/test_support/factories/essence_picture_factory.rb +8 -0
- data/lib/alchemy/test_support/factories/essence_text_factory.rb +7 -0
- data/lib/alchemy/test_support/factories/language_factory.rb +28 -0
- data/lib/alchemy/test_support/factories/page_factory.rb +45 -0
- data/lib/alchemy/test_support/factories/picture_factory.rb +10 -0
- data/lib/alchemy/test_support/factories/site_factory.rb +12 -0
- data/lib/alchemy/test_support/integration_helpers.rb +0 -3
- data/lib/alchemy/tinymce.rb +24 -35
- data/lib/alchemy/touching.rb +5 -6
- data/lib/alchemy/upgrader.rb +3 -5
- data/lib/alchemy/upgrader/tasks/available_contents_upgrader.rb +155 -0
- data/lib/alchemy/upgrader/tasks/nestable_elements_migration.rb +71 -0
- data/lib/alchemy/upgrader/tasks/three_point_two_task.rb +31 -0
- data/lib/alchemy/upgrader/three_point_three.rb +50 -0
- data/lib/alchemy/upgrader/three_point_two.rb +3 -32
- data/lib/alchemy/upgrader/three_point_zero.rb +0 -1
- data/lib/alchemy/version.rb +1 -1
- data/lib/rails/generators/alchemy/base.rb +1 -1
- data/lib/rails/generators/alchemy/elements/elements_generator.rb +1 -7
- data/lib/rails/generators/alchemy/elements/templates/editor.html.erb +5 -7
- data/lib/rails/generators/alchemy/elements/templates/editor.html.haml +6 -8
- data/lib/rails/generators/alchemy/elements/templates/editor.html.slim +6 -7
- data/lib/rails/generators/alchemy/elements/templates/view.html.erb +4 -4
- data/lib/rails/generators/alchemy/elements/templates/view.html.haml +3 -3
- data/lib/rails/generators/alchemy/elements/templates/view.html.slim +3 -3
- data/lib/rails/generators/alchemy/essence/essence_generator.rb +2 -3
- data/lib/rails/generators/alchemy/essence/templates/editor.html.erb +1 -1
- data/lib/rails/generators/alchemy/install/files/alchemy.de.yml +2 -2
- data/lib/rails/generators/alchemy/install/files/alchemy.en.yml +2 -2
- data/lib/rails/generators/alchemy/install/files/alchemy.es.yml +3 -3
- data/lib/rails/generators/alchemy/install/install_generator.rb +0 -1
- data/lib/rails/generators/alchemy/install/templates/elements.yml.tt +2 -2
- data/lib/rails/generators/alchemy/install/templates/page_layouts.yml.tt +1 -1
- data/lib/rails/generators/alchemy/module/module_generator.rb +1 -1
- data/lib/rails/templates/alchemy.rb +2 -2
- data/lib/tasks/alchemy/convert.rake +4 -8
- data/lib/tasks/alchemy/db.rake +2 -3
- data/lib/tasks/alchemy/install.rake +3 -4
- data/lib/tasks/alchemy/tidy.rake +4 -5
- data/lib/tasks/alchemy/upgrade.rake +2 -4
- data/spec/controllers/{admin → alchemy/admin}/attachments_controller_spec.rb +26 -44
- data/spec/controllers/{admin → alchemy/admin}/base_controller_spec.rb +14 -1
- data/spec/controllers/{admin → alchemy/admin}/clipboard_controller_spec.rb +3 -3
- data/spec/controllers/{admin → alchemy/admin}/contents_controller_spec.rb +4 -4
- data/spec/controllers/{admin → alchemy/admin}/dashboard_controller_spec.rb +11 -6
- data/spec/controllers/{admin → alchemy/admin}/elements_controller_spec.rb +54 -31
- data/spec/controllers/{admin → alchemy/admin}/essence_files_controller_spec.rb +8 -3
- data/spec/controllers/{admin → alchemy/admin}/essence_pictures_controller_spec.rb +3 -3
- data/spec/controllers/{admin → alchemy/admin}/languages_controller_spec.rb +13 -1
- data/spec/controllers/{admin → alchemy/admin}/layoutpages_controller_spec.rb +0 -6
- data/spec/controllers/{admin → alchemy/admin}/pages_controller_spec.rb +103 -35
- data/spec/controllers/{admin → alchemy/admin}/pictures_controller_spec.rb +133 -108
- data/spec/controllers/alchemy/admin/resources_controller_spec.rb +81 -0
- data/spec/controllers/{admin → alchemy/admin}/trash_controller_spec.rb +12 -13
- data/spec/controllers/alchemy/api/contents_controller_spec.rb +12 -13
- data/spec/controllers/alchemy/api/elements_controller_spec.rb +8 -9
- data/spec/controllers/alchemy/api/pages_controller_spec.rb +40 -7
- data/spec/controllers/{attachments_controller_spec.rb → alchemy/attachments_controller_spec.rb} +7 -7
- data/spec/controllers/alchemy/base_controller_spec.rb +106 -0
- data/spec/controllers/{elements_controller_spec.rb → alchemy/elements_controller_spec.rb} +4 -4
- data/spec/controllers/{messages_controller_spec.rb → alchemy/messages_controller_spec.rb} +14 -9
- data/spec/controllers/alchemy/on_page_layout_mixin_spec.rb +330 -0
- data/spec/controllers/{pages_controller_spec.rb → alchemy/pages_controller_spec.rb} +167 -89
- data/spec/controllers/{pictures_controller_spec.rb → alchemy/pictures_controller_spec.rb} +42 -20
- data/spec/dummy/app/models/dummy_user.rb +4 -0
- data/spec/dummy/app/views/alchemy/elements/_all_you_can_eat_view.html.erb +31 -0
- data/spec/dummy/app/views/alchemy/elements/_article_editor.html.erb +6 -10
- data/spec/dummy/app/views/alchemy/elements/_article_view.html.erb +9 -24
- data/spec/dummy/app/views/alchemy/elements/_bild_editor.html.erb +3 -0
- data/spec/dummy/app/views/alchemy/elements/_bild_view.html.erb +5 -0
- data/spec/dummy/app/views/alchemy/elements/_contactform_editor.html.erb +6 -0
- data/spec/dummy/app/views/alchemy/elements/_contactform_view.html.erb +16 -0
- data/spec/dummy/app/views/alchemy/elements/_download_editor.html.erb +3 -0
- data/spec/dummy/app/views/alchemy/elements/_download_view.html.erb +5 -0
- data/spec/dummy/app/views/alchemy/elements/_erb_element_editor.html.erb +3 -0
- data/spec/dummy/app/views/alchemy/elements/_erb_element_view.html.erb +5 -0
- data/spec/dummy/app/views/alchemy/elements/_header_editor.html.erb +3 -0
- data/spec/dummy/app/views/alchemy/elements/_header_view.html.erb +5 -0
- data/spec/dummy/app/views/alchemy/elements/_news_editor.html.erb +5 -0
- data/spec/dummy/app/views/alchemy/elements/_search_editor.html.erb +1 -0
- data/spec/dummy/app/views/alchemy/elements/_search_view.html.erb +4 -0
- data/spec/dummy/app/views/alchemy/elements/_slide_editor.html.erb +3 -0
- data/spec/dummy/app/views/alchemy/elements/_slide_view.html.erb +5 -0
- data/spec/dummy/app/views/alchemy/elements/_slider_editor.html.erb +2 -0
- data/spec/dummy/app/views/alchemy/elements/_slider_view.html.erb +4 -0
- data/spec/dummy/app/views/alchemy/elements/_text_editor.html.erb +3 -0
- data/spec/dummy/app/views/alchemy/elements/_text_view.html.erb +5 -0
- data/spec/dummy/app/views/alchemy/page_layouts/_standard.html.erb +1 -0
- data/spec/dummy/config/alchemy/elements.yml +10 -13
- data/spec/dummy/config/alchemy/page_layouts.yml +1 -1
- data/spec/dummy/config/initializers/alchemy.rb +1 -0
- data/spec/dummy/config/locales/kl.yml +2 -0
- data/spec/dummy/db/migrate/20150608204610_add_parent_element_id_to_alchemy_elements.rb +1 -0
- data/spec/dummy/db/migrate/20150729151825_add_link_text_to_alchemy_essence_files.rb +1 -0
- data/spec/dummy/db/migrate/20150906195818_add_locale_to_alchemy_languages.rb +1 -0
- data/spec/dummy/db/schema.rb +10 -6
- data/spec/factories.rb +13 -0
- data/spec/features/admin/admin_layout_spec.rb +14 -0
- data/spec/features/admin/dashboard_spec.rb +1 -2
- data/spec/features/admin/edit_elements_feature_spec.rb +36 -0
- data/spec/features/admin/language_tree_feature_spec.rb +7 -8
- data/spec/features/admin/languages_features_spec.rb +65 -0
- data/spec/features/admin/legacy_page_url_management_spec.rb +3 -3
- data/spec/features/admin/link_overlay_spec.rb +16 -17
- data/spec/features/admin/locale_select_feature_spec.rb +1 -1
- data/spec/features/admin/modules_integration_spec.rb +0 -1
- data/spec/features/admin/navigation_feature_spec.rb +11 -2
- data/spec/features/admin/page_creation_feature_spec.rb +5 -5
- data/spec/features/admin/page_editing_feature_spec.rb +6 -6
- data/spec/features/admin/picture_library_integration_spec.rb +3 -3
- data/spec/features/admin/resources_integration_spec.rb +7 -12
- data/spec/features/admin/site_select_feature_spec.rb +1 -2
- data/spec/features/admin/tinymce_feature_spec.rb +0 -1
- data/spec/features/page_feature_spec.rb +57 -158
- data/spec/features/page_redirects_spec.rb +358 -0
- data/spec/features/picture_security_spec.rb +1 -7
- data/spec/fixtures/animated.gif +0 -0
- data/spec/helpers/{admin → alchemy/admin}/attachments_helper_spec.rb +0 -0
- data/spec/helpers/{admin → alchemy/admin}/base_helper_spec.rb +39 -29
- data/spec/helpers/{admin → alchemy/admin}/contents_helper_spec.rb +4 -23
- data/spec/helpers/{admin → alchemy/admin}/elements_helper_spec.rb +141 -5
- data/spec/helpers/{admin → alchemy/admin}/essences_helper_spec.rb +69 -8
- data/spec/helpers/{admin → alchemy/admin}/navigation_helper_spec.rb +43 -37
- data/spec/helpers/{admin → alchemy/admin}/pages_helper_spec.rb +6 -38
- data/spec/helpers/{admin → alchemy/admin}/pictures_helper_spec.rb +0 -1
- data/spec/helpers/{admin → alchemy/admin}/tags_helper_spec.rb +1 -3
- data/spec/helpers/{base_helper_spec.rb → alchemy/base_helper_spec.rb} +1 -2
- data/spec/helpers/{elements_block_helper_spec.rb → alchemy/elements_block_helper_spec.rb} +3 -3
- data/spec/helpers/{elements_helper_spec.rb → alchemy/elements_helper_spec.rb} +18 -19
- data/spec/helpers/alchemy/essences_helper_spec.rb +85 -0
- data/spec/helpers/{pages_helper_spec.rb → alchemy/pages_helper_spec.rb} +125 -39
- data/spec/helpers/alchemy/picture_url_helpers_spec.rb +78 -0
- data/spec/helpers/{url_helper_spec.rb → alchemy/url_helper_spec.rb} +66 -40
- data/spec/libraries/config_spec.rb +2 -3
- data/spec/libraries/controller_actions_spec.rb +18 -18
- data/spec/libraries/i18n_spec.rb +7 -0
- data/spec/libraries/page_layout_spec.rb +13 -7
- data/spec/libraries/paths_spec.rb +15 -0
- data/spec/libraries/permissions_spec.rb +6 -7
- data/spec/libraries/resource_spec.rb +48 -75
- data/spec/libraries/resources_helper_spec.rb +55 -6
- data/spec/libraries/shell_spec.rb +0 -4
- data/spec/libraries/template_tracker_spec.rb +4 -13
- data/spec/libraries/tinymce_spec.rb +53 -9
- data/spec/mailers/{messages_spec.rb → alchemy/messages_spec.rb} +0 -2
- data/spec/models/{attachment_spec.rb → alchemy/attachment_spec.rb} +43 -20
- data/spec/models/{cell_spec.rb → alchemy/cell_spec.rb} +2 -3
- data/spec/models/{content_spec.rb → alchemy/content_spec.rb} +179 -70
- data/spec/models/{element_spec.rb → alchemy/element_spec.rb} +315 -70
- data/spec/models/{element_to_page_spec.rb → alchemy/element_to_page_spec.rb} +0 -1
- data/spec/models/{essence_boolean_spec.rb → alchemy/essence_boolean_spec.rb} +0 -0
- data/spec/models/{essence_date_spec.rb → alchemy/essence_date_spec.rb} +2 -3
- data/spec/models/{essence_file_spec.rb → alchemy/essence_file_spec.rb} +2 -5
- data/spec/models/{essence_html_spec.rb → alchemy/essence_html_spec.rb} +1 -1
- data/spec/models/{essence_link_spec.rb → alchemy/essence_link_spec.rb} +0 -0
- data/spec/models/{essence_picture_spec.rb → alchemy/essence_picture_spec.rb} +101 -29
- data/spec/models/{essence_richtext_spec.rb → alchemy/essence_richtext_spec.rb} +7 -2
- data/spec/models/{essence_select_spec.rb → alchemy/essence_select_spec.rb} +0 -0
- data/spec/models/{essence_text_spec.rb → alchemy/essence_text_spec.rb} +4 -8
- data/spec/models/alchemy/language_spec.rb +243 -0
- data/spec/models/{legacy_page_url_spec.rb → alchemy/legacy_page_url_spec.rb} +1 -1
- data/spec/models/{message_spec.rb → alchemy/message_spec.rb} +0 -0
- data/spec/models/{page_spec.rb → alchemy/page_spec.rb} +460 -248
- data/spec/models/{picture_spec.rb → alchemy/picture_spec.rb} +118 -30
- data/spec/models/{site_spec.rb → alchemy/site_spec.rb} +19 -84
- data/spec/models/{tag_spec.rb → alchemy/tag_spec.rb} +1 -3
- data/spec/models/dummy_model_spec.rb +1 -2
- data/spec/requests/alchemy/admin/resources_requests_spec.rb +26 -0
- data/spec/requests/alchemy/admin/site_requests_spec.rb +19 -0
- data/spec/requests/alchemy/site_requests_spec.rb +18 -0
- data/spec/requests/alchemy/sitemap_spec.rb +56 -0
- data/spec/routing/api_routing_spec.rb +1 -1
- data/spec/routing/routing_spec.rb +121 -15
- data/spec/spec_helper.rb +2 -1
- data/spec/support/hint_examples.rb +1 -3
- data/spec/support/test_tweaks.rb +3 -3
- data/spec/support/transformation_examples.rb +6 -7
- data/spec/tasks/helpers_spec.rb +2 -4
- data/spec/views/admin/pictures/show_spec.rb +43 -0
- data/spec/views/essences/essence_boolean_editor_spec.rb +0 -1
- data/spec/views/essences/essence_boolean_view_spec.rb +2 -4
- data/spec/views/essences/essence_date_view_spec.rb +0 -1
- data/spec/views/essences/essence_file_editor_spec.rb +4 -6
- data/spec/views/essences/essence_file_view_spec.rb +56 -3
- data/spec/views/essences/essence_link_view_spec.rb +1 -1
- data/spec/views/essences/essence_picture_editor_spec.rb +80 -0
- data/spec/views/essences/essence_picture_view_spec.rb +0 -1
- data/spec/views/essences/essence_select_view_spec.rb +0 -1
- data/spec/views/essences/essence_text_view_spec.rb +0 -1
- data/vendor/assets/javascripts/handlebars.js +4608 -0
- data/vendor/assets/javascripts/tinymce/langs/de.js +19 -0
- data/vendor/assets/javascripts/tinymce/langs/es.js +19 -0
- data/vendor/assets/javascripts/tinymce/langs/fr.js +23 -4
- data/vendor/assets/javascripts/tinymce/langs/nl.js +22 -3
- data/vendor/assets/javascripts/tinymce/langs/ru.js +22 -3
- data/vendor/assets/javascripts/tinymce/plugins/paste/plugin.min.js +1 -1
- data/vendor/assets/javascripts/tinymce/plugins/table/plugin.min.js +1 -1
- data/vendor/assets/javascripts/tinymce/themes/modern/theme.min.js +1 -1
- data/vendor/assets/javascripts/tinymce/tinymce.min.js +12 -13
- metadata +274 -256
- data/app/views/alchemy/admin/attachments/create.js.erb +0 -11
- data/app/views/alchemy/admin/attachments/new.html.erb +0 -14
- data/app/views/alchemy/admin/elements/_element_foot.html.erb +0 -36
- data/app/views/alchemy/admin/partials/_upload_form.html.erb +0 -67
- data/app/views/alchemy/admin/pictures/info.html.erb +0 -38
- data/app/views/alchemy/admin/pictures/new.html.erb +0 -16
- data/lib/alchemy/middleware/rescue_old_cookies.rb +0 -27
- data/spec/controllers/admin/resources_controller_spec.rb +0 -53
- data/spec/controllers/base_controller_spec.rb +0 -51
- data/spec/helpers/essences_helper_spec.rb +0 -156
- data/spec/helpers/picture_url_helpers_spec.rb +0 -35
- data/spec/libraries/on_page_layout_spec.rb +0 -112
- data/spec/models/language_spec.rb +0 -123
|
@@ -3,7 +3,7 @@ require 'rails'
|
|
|
3
3
|
module Alchemy
|
|
4
4
|
module Generators
|
|
5
5
|
class Base < ::Rails::Generators::Base
|
|
6
|
-
class_option :template_engine, :
|
|
6
|
+
class_option :template_engine, type: :string, aliases: '-e', desc: 'Template engine for the views. Available options are "erb", "haml", and "slim".'
|
|
7
7
|
|
|
8
8
|
private
|
|
9
9
|
|
|
@@ -15,13 +15,7 @@ module Alchemy
|
|
|
15
15
|
@elements = load_alchemy_yaml('elements.yml')
|
|
16
16
|
@elements.each do |element|
|
|
17
17
|
@element = element
|
|
18
|
-
contents = element["contents"] || []
|
|
19
|
-
if @element['available_contents']
|
|
20
|
-
@available_contents_names = @element['available_contents'].collect { |c| c['name'] }
|
|
21
|
-
@contents = contents.delete_if { |c| @available_contents_names.include?(c['name']) } or []
|
|
22
|
-
else
|
|
23
|
-
@contents = contents
|
|
24
|
-
end
|
|
18
|
+
@contents = element["contents"] || []
|
|
25
19
|
if element["name"] =~ /\A[a-z0-9_-]+\z/
|
|
26
20
|
@element_name = element["name"].underscore
|
|
27
21
|
else
|
|
@@ -1,14 +1,12 @@
|
|
|
1
|
+
<%- if @contents.any? || @element['picture_gallery'] -%>
|
|
1
2
|
<%%= element_editor_for(element) do |el| -%>
|
|
2
3
|
<%- if @element['picture_gallery'] -%>
|
|
3
4
|
<%%= render_picture_gallery_editor(element, max_images: nil, crop: true) %>
|
|
4
5
|
<%- end -%>
|
|
5
|
-
|
|
6
|
+
<%- @contents.each do |content| -%>
|
|
6
7
|
<%%= el.edit :<%= content["name"] %> %>
|
|
7
|
-
<% end -%>
|
|
8
|
-
<%- if @element['available_contents'] -%>
|
|
9
|
-
<%% element.contents.where(name: ['<%= @available_contents_names.join("', '") %>']).each do |content| %>
|
|
10
|
-
<%%= render_essence_editor content %>
|
|
11
|
-
<%% end %>
|
|
12
|
-
<p><%%= render_new_content_link(element) %></p>
|
|
13
8
|
<%- end -%>
|
|
14
9
|
<%%- end -%>
|
|
10
|
+
<%- else -%>
|
|
11
|
+
<%%= element_editor_for(element) -%>
|
|
12
|
+
<%- end -%>
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
+
<%- if @contents.any? || @element['picture_gallery'] -%>
|
|
1
2
|
= element_editor_for(element) do |el|
|
|
2
3
|
<%- if @element['picture_gallery'] -%>
|
|
3
4
|
= render_picture_gallery_editor(element, max_images: nil, crop: true)
|
|
4
5
|
<%- end -%>
|
|
5
|
-
|
|
6
|
+
<%- @contents.each do |content| -%>
|
|
6
7
|
= el.edit :<%= content["name"] %>
|
|
7
|
-
|
|
8
|
-
<%-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
%p
|
|
12
|
-
= render_new_content_link(element)
|
|
13
|
-
<% end -%>
|
|
8
|
+
<%- end -%>
|
|
9
|
+
<%- else -%>
|
|
10
|
+
= element_editor_for(element)
|
|
11
|
+
<%- end -%>
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
+
<%- if @contents.any? || @element['picture_gallery'] -%>
|
|
1
2
|
= element_editor_for(element) do |el|
|
|
2
3
|
<%- if @element['picture_gallery'] -%>
|
|
3
4
|
= render_picture_gallery_editor(element, max_images: nil, crop: true)
|
|
4
5
|
<%- end -%>
|
|
5
|
-
|
|
6
|
+
<%- @contents.each do |content| -%>
|
|
6
7
|
= el.edit :<%= content["name"] %>
|
|
7
|
-
|
|
8
|
-
<%-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
p = render_new_content_link(element)
|
|
12
|
-
<% end -%>
|
|
8
|
+
<%- end -%>
|
|
9
|
+
<%- else -%>
|
|
10
|
+
= element_editor_for(element)
|
|
11
|
+
<%- end -%>
|
|
@@ -18,10 +18,10 @@
|
|
|
18
18
|
<%%= el.render :<%= content["name"] %> %>
|
|
19
19
|
<%- end -%>
|
|
20
20
|
<%- end -%>
|
|
21
|
-
<%- if @element['
|
|
22
|
-
|
|
23
|
-
<%%=
|
|
24
|
-
|
|
21
|
+
<%- if @element['nestable_elements'].present? -%>
|
|
22
|
+
<%% element.nested_elements.available.each do |nested_element| %>
|
|
23
|
+
<%%= render_element(nested_element) %>
|
|
24
|
+
<%% end %>
|
|
25
25
|
<%- end -%>
|
|
26
26
|
<%%- end -%>
|
|
27
27
|
<%%- end -%>
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
= el.render :<%= content["name"] %>
|
|
15
15
|
<%- end -%>
|
|
16
16
|
<%- end -%>
|
|
17
|
-
<%- if @element['
|
|
18
|
-
- element.
|
|
19
|
-
=
|
|
17
|
+
<%- if @element['nestable_elements'].present? -%>
|
|
18
|
+
- element.nested_elements.available.each do |nested_element|
|
|
19
|
+
= render_element(nested_element)
|
|
20
20
|
<%- end -%>
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
= el.render :<%= content["name"] %>
|
|
15
15
|
<%- end -%>
|
|
16
16
|
<%- end -%>
|
|
17
|
-
<%- if @element['
|
|
18
|
-
- element.
|
|
19
|
-
=
|
|
17
|
+
<%- if @element['nestable_elements'].present? -%>
|
|
18
|
+
- element.nested_elements.available.each do |nested_element|
|
|
19
|
+
= render_element(nested_element)
|
|
20
20
|
<%- end -%>
|
|
@@ -4,11 +4,11 @@ module Alchemy
|
|
|
4
4
|
module Generators
|
|
5
5
|
class EssenceGenerator < ::Rails::Generators::Base
|
|
6
6
|
desc "This generator generates an Alchemy essence for you."
|
|
7
|
-
argument :essence_name, :
|
|
7
|
+
argument :essence_name, banner: "YourEssenceName"
|
|
8
8
|
source_root File.expand_path('templates', File.dirname(__FILE__))
|
|
9
9
|
|
|
10
10
|
def init
|
|
11
|
-
@essence_name =
|
|
11
|
+
@essence_name = essence_name.underscore
|
|
12
12
|
@essence_view_path = Rails.root.join('app/views/alchemy/essences')
|
|
13
13
|
end
|
|
14
14
|
|
|
@@ -46,7 +46,6 @@ CLASSMETHOD
|
|
|
46
46
|
say "Then run 'rake db:migrate' to update your database."
|
|
47
47
|
say "Also check the generated view files and alter them to fit your needs."
|
|
48
48
|
end
|
|
49
|
-
|
|
50
49
|
end
|
|
51
50
|
end
|
|
52
51
|
end
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
%>
|
|
8
8
|
<%% cache(content) do %>
|
|
9
9
|
<div class="content_editor <%= @essence_name.classify.demodulize.underscore %>" id="<%%= content.dom_id %>" data-content-id="<%%= content.id %>">
|
|
10
|
-
<%%=
|
|
10
|
+
<%%= content_label(content) %>
|
|
11
11
|
<%%= text_field_tag(
|
|
12
12
|
content.form_field_name,
|
|
13
13
|
content.ingredient,
|
|
@@ -18,7 +18,7 @@ de:
|
|
|
18
18
|
# Default texts for new contents created
|
|
19
19
|
default_content_texts:
|
|
20
20
|
article_headline: "Willkommen auf Ihrer Alchemy Seite"
|
|
21
|
-
article_text: '<p>Als erstes sollte man sich mit der Struktur von Alchemy vertraut machen. <a class="external" href="http://guides.alchemy-cms.com/
|
|
21
|
+
article_text: '<p>Als erstes sollte man sich mit der Struktur von Alchemy vertraut machen. <a class="external" href="http://guides.alchemy-cms.com/stable/alchemy_approach.html" target="_blank" data-link-target="blank">Mehr dazu in den Guidelines</a>.</p><p>Die wichtigsten beiden Dinge die man über Alchemy wissen muss sind Elemente und Seitentypen.</p><p><span style="text-decoration: underline;"><strong>Elemente:</strong></span></p><p>Mit Alchemy kann man eine Seite in Inhaltsbereiche aufteilen, Elemente. Diese Elemente werden aus verschiedenen Grundtypen (Essenzen) zusammengesetzt. Die Essenzen sind:</p><ul><li>EssenceText - <em>Eine Zeile Text</em></li><li>EssenceRichtext - <em>Ein TinyMCE basierter formatierter Textblock</em></li><li>EssencePicture - <em>Ein Verweis auf ein Bild</em></li><li>EssenceHtml - <em>HTML Code</em></li><li>EssenceSelect - <em>Eine Auswahl an Werten</em></li><li>EssenceBoolean - <em>Eine Checkbox</em></li></ul><p>Elemente werden in einer YAML Datei definiert: <strong>config/alchemy/elements.yml</strong></p><p><a class="external" href="http://guides.alchemy-cms.com/stable/elements.html" target="_blank" data-link-target="blank">Mehr über Elemente und wie sie definiert werden, kann in den Guidelines nachgelesen werden.</a></p><p><span style="text-decoration: underline;"><strong>Seitentypen:</strong></span></p><p>Es können verschiedene Seitentypen definiert werden. Diesen können Elemente zugewiesen und ihr Verhalten definiert werden.</p><p>Seitentypen werden ein einer YAML Datei definiert: <strong>config/alchemy/page_layouts.yml</strong></p><p><a class="external" href="http://guides.alchemy-cms.com/stable/page_layouts.html" target="_blank" data-link-target="blank">Mehr über das Erstellen von Seitentypen kann in den Guidelines nachgelesen werden.</a></p>'
|
|
22
22
|
|
|
23
23
|
# Hint texts for elements
|
|
24
24
|
element_hints:
|
|
@@ -28,4 +28,4 @@ de:
|
|
|
28
28
|
content_hints:
|
|
29
29
|
headline: "Dies ist ein einzeiliger unformatierter Text"
|
|
30
30
|
picture: "Bilder werden in der Bibliothek gespeichert. Ein Bild kann mehrfach einem Element zugewiesen werden. Auch ein Bildauswahlwerkzeug ist in Alchemy integriert."
|
|
31
|
-
text: "Dies ist ein formatierbarer Textblock. Die Einstellungen des Editors können angepasst werden. Siehe http://guides.alchemy-cms.com/
|
|
31
|
+
text: "Dies ist ein formatierbarer Textblock. Die Einstellungen des Editors können angepasst werden. Siehe http://guides.alchemy-cms.com/stable/customize_tinymce.html"
|
|
@@ -18,7 +18,7 @@ en:
|
|
|
18
18
|
# Default texts for new contents created
|
|
19
19
|
default_content_texts:
|
|
20
20
|
article_headline: "Welcome to your first Alchemy CMS page"
|
|
21
|
-
article_text: '<p><strong>How to get started.</strong></p><p>First of all you should read about Alchemy and its architecture in the <a class="external" href="http://guides.alchemy-cms.com/
|
|
21
|
+
article_text: '<p><strong>How to get started.</strong></p><p>First of all you should read about Alchemy and its architecture in the <a class="external" href="http://guides.alchemy-cms.com/stable/alchemy_approach.html" target="_blank" data-link-target="blank">guidelines</a>.</p><p>The most important things to know about Alchemy are elements and page layouts.</p><p><span style="text-decoration: underline;"><strong>Elements:</strong></span></p><p>With Alchemy you can split pages into content parts, elements. These elements can be defined out of several base content types: essences. The basic essences are:</p><ul><li>EssenceText - <em>A single line of text</em></li><li>EssenceRichtext - <em>A TinyMCE powered formatted text block</em></li><li>EssencePicture - <em>A reference to an image</em></li><li>EssenceHtml - <em>HTML embed code</em></li><li>EssenceSelect - <em>A selection of values</em></li><li>EssenceBoolean - <em>A checkbox</em></li></ul><p>Elements get defined in a YAML file <strong>config/alchemy/elements.yml</strong></p><p><a class="external" href="http://guides.alchemy-cms.com/stable/elements.html" target="_blank" data-link-target="blank">Read more about elements and how to define them in the guidelines.</a></p><p><span style="text-decoration: underline;"><strong>Page types:</strong></span></p><p>You can define several types of pages, called page layouts. You can assign elements to page layouts and control how elements and the page of a certain layout behave.</p><p>Page layouts get defined in a YAML file <strong>config/alchemy/page_layouts.yml</strong></p><p><a class="external" href="http://guides.alchemy-cms.com/stable/page_layouts.html" target="_blank" data-link-target="blank">Read more about defining page layouts in the guidelines.</a></p>'
|
|
22
22
|
|
|
23
23
|
# Hint texts for elements
|
|
24
24
|
element_hints:
|
|
@@ -28,4 +28,4 @@ en:
|
|
|
28
28
|
content_hints:
|
|
29
29
|
headline: "This is a single line of unformatable Text"
|
|
30
30
|
picture: "Pictures are stored in the library. You can assign a picture multiple times throughout your site. Alchemy has an image cropper build right in."
|
|
31
|
-
text: "This is a rich text block powered by TinyMCE editor. You can change the configuration of the editor. See http://guides.alchemy-cms.com/
|
|
31
|
+
text: "This is a rich text block powered by TinyMCE editor. You can change the configuration of the editor. See http://guides.alchemy-cms.com/stable/customize_tinymce.html"
|
|
@@ -18,8 +18,8 @@ es:
|
|
|
18
18
|
# Default texts for new contents created
|
|
19
19
|
default_content_texts:
|
|
20
20
|
article_headline: "Bienvenido a tu primera página de Alchemy CMS"
|
|
21
|
-
article_text: '<p><strong>Como empezar.</strong></p><p>Lo primero de todo deberías leer sobre Alchemy y su arquitectura en las <a class="external" href="http://guides.alchemy-cms.com/
|
|
22
|
-
|
|
21
|
+
article_text: '<p><strong>Como empezar.</strong></p><p>Lo primero de todo deberías leer sobre Alchemy y su arquitectura en las <a class="external" href="http://guides.alchemy-cms.com/stable/alchemy_approach.html" target="_blank" data-link-target="blank">guías</a>.</p><p>Las cosas más importantes que debes saber sobre Alchemy son elementos (<i>elements</i>) y disposiciones de página (<i>page layouts</i>).</p><p><span style="text-decoration: underline;"><strong>Elementos:</strong></span></p><p>Con Alchemy puedes dividir las páginas en partes de contenido, elementos. Estos elementos se pueden definir mediante varios tipos de contenido básicos: esencias (<i>essences</i>). Las esencias básicas son:</p><ul><li>EssenceText - <em>Un única línea de texto</em></li><li>EssenceRichtext - <em>Un bloque de texto formateado mediante TinyMCE</em></li><li>EssencePicture - <em>Una referencia a una imagen</em></li><li>EssenceHtml - <em>Código HTML empotrado</em></li><li>EssenceSelect - <em>Una selección de valores</em></li><li>EssenceBoolean - <em>Una casilla de verificación</em></li></ul><p>Los elementos se definen en el fichero YAML <strong>config/alchemy/elements.yml</strong></p><p><a class="external" href="http://guides.alchemy-cms.com/stable/elements.html" target="_blank" data-link-target="blank">Lee más sobre elementos y cómo definirlos en las guías.</a></p><p><span style="text-decoration: underline;"><strong>Tipos de página:</strong></span></p><p>Puedes definir varios tipos de páginas, llamados disposiciones de páginas (<i>page layouts</i>). Puedes asignar elementos a las disposiciones de páginas y controlar cómo se comportan los elementos y una página con una disposición concreta.</p><p>Las disposiciones de páginas se definen en el fichero YAML <strong>config/alchemy/page_layouts.yml</strong></p><p><a class="external" href="http://guides.alchemy-cms.com/stable/page_layouts.html" target="_blank" data-link-target="blank">Lee más sobre definir disposiciones de páginas en las guías.</a></p>'
|
|
22
|
+
|
|
23
23
|
# Hint texts for elements
|
|
24
24
|
element_hints:
|
|
25
25
|
article: "Este es el texto de ayuda del elemento artículo. Puedes cambiar este texto en `config/locales/alchemy.en.yml`. Siéntete libre de cambiarlo a tu gusto, es tuyo."
|
|
@@ -28,4 +28,4 @@ es:
|
|
|
28
28
|
content_hints:
|
|
29
29
|
headline: "Esta es una sencilla linea de texto sin formato"
|
|
30
30
|
picture: "Las imágenes se almacenan en la librería. Puedes asignar una imagen varias veces en tu sitio. Alchemy tiene una herramienta de recorte de imagen integrada."
|
|
31
|
-
text: "Este es un bloque de texto enriquecido mediante el editor TinyMCE. Puedes cambiar la configuración del editor. Ver http://guides.alchemy-cms.com/
|
|
31
|
+
text: "Este es un bloque de texto enriquecido mediante el editor TinyMCE. Puedes cambiar la configuración del editor. Ver http://guides.alchemy-cms.com/stable/customize_tinymce.html"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# == In this configuration you
|
|
1
|
+
# == In this configuration, you set up Alchemy's element layouts.
|
|
2
2
|
#
|
|
3
|
-
# For further
|
|
3
|
+
# For further information please see http://guides.alchemy-cms.com/stable/elements.html
|
|
4
4
|
|
|
5
5
|
<%- unless @options[:skip_demo_files] -%>
|
|
6
6
|
- name: article
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# == This file defines the page layouts for new pages.
|
|
2
2
|
#
|
|
3
|
-
# For further
|
|
3
|
+
# For further information please see http://guides.alchemy-cms.com/stable/page_layouts.html
|
|
4
4
|
|
|
5
5
|
<%- unless @options[:skip_demo_files] -%>
|
|
6
6
|
- name: <%= Alchemy::Config.get(:default_language)['page_layout'] %>
|
|
@@ -4,7 +4,7 @@ module Alchemy
|
|
|
4
4
|
module Generators
|
|
5
5
|
class ModuleGenerator < ::Rails::Generators::Base
|
|
6
6
|
desc "This generator generates an Alchemy module for you."
|
|
7
|
-
argument :module_name, :
|
|
7
|
+
argument :module_name, banner: "your_module_name"
|
|
8
8
|
source_root File.expand_path('templates', File.dirname(__FILE__))
|
|
9
9
|
|
|
10
10
|
def init
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# This rails template installs Alchemy and all depending gems.
|
|
2
2
|
require File.expand_path("../../../alchemy/version", __FILE__)
|
|
3
3
|
|
|
4
|
-
gem "alchemy_cms", github: "AlchemyCMS/alchemy_cms", branch: "
|
|
5
|
-
gem "alchemy-devise", github: "AlchemyCMS/alchemy-devise", branch: "
|
|
4
|
+
gem "alchemy_cms", github: "AlchemyCMS/alchemy_cms", branch: "master"
|
|
5
|
+
gem "alchemy-devise", github: "AlchemyCMS/alchemy-devise", branch: "master"
|
|
6
6
|
|
|
7
7
|
gem "capistrano-alchemy", github: "AlchemyCMS/capistrano-alchemy", branch: "master", group: "development"
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
namespace :alchemy do
|
|
2
2
|
namespace :convert do
|
|
3
|
-
|
|
4
3
|
namespace :urlnames do
|
|
5
|
-
|
|
6
4
|
desc "Converts the urlname of all pages to nested url paths."
|
|
7
|
-
task :
|
|
5
|
+
task to_nested: [:environment] do
|
|
8
6
|
unless Alchemy::Config.get(:url_nesting)
|
|
9
7
|
raise "\nURL nesting is disabled! Please enable url_nesting in `config/alchemy/config.yml` first.\n\n"
|
|
10
8
|
end
|
|
@@ -12,14 +10,14 @@ namespace :alchemy do
|
|
|
12
10
|
pages = Alchemy::Page.contentpages
|
|
13
11
|
count = pages.count
|
|
14
12
|
pages.each_with_index do |page, n|
|
|
15
|
-
puts "Updating page #{n+1} of #{count}"
|
|
13
|
+
puts "Updating page #{n + 1} of #{count}"
|
|
16
14
|
page.update_urlname!
|
|
17
15
|
end
|
|
18
16
|
puts "Done."
|
|
19
17
|
end
|
|
20
18
|
|
|
21
19
|
desc "Converts the urlname of all pages to contain the slug only."
|
|
22
|
-
task :
|
|
20
|
+
task to_slug: [:environment] do
|
|
23
21
|
if Alchemy::Config.get(:url_nesting)
|
|
24
22
|
raise "\nURL nesting is enabled! Please disable url_nesting in `config/alchemy/config.yml` first.\n\n"
|
|
25
23
|
end
|
|
@@ -27,13 +25,11 @@ namespace :alchemy do
|
|
|
27
25
|
pages = Alchemy::Page.contentpages
|
|
28
26
|
count = pages.count
|
|
29
27
|
pages.each_with_index do |page, n|
|
|
30
|
-
puts "Updating page #{n+1} of #{count}"
|
|
28
|
+
puts "Updating page #{n + 1} of #{count}"
|
|
31
29
|
page.update_attribute :urlname, page.slug
|
|
32
30
|
end
|
|
33
31
|
puts "Done."
|
|
34
32
|
end
|
|
35
|
-
|
|
36
33
|
end
|
|
37
|
-
|
|
38
34
|
end
|
|
39
35
|
end
|
data/lib/tasks/alchemy/db.rake
CHANGED
|
@@ -4,16 +4,15 @@ include Alchemy::Tasks::Helpers
|
|
|
4
4
|
|
|
5
5
|
namespace :alchemy do
|
|
6
6
|
namespace :db do
|
|
7
|
-
|
|
8
7
|
desc "Dumps the database to STDOUT (Pass DUMP_FILENAME to store the dump into a file)."
|
|
9
|
-
task :
|
|
8
|
+
task dump: :environment do
|
|
10
9
|
dump_store = ENV['DUMP_FILENAME'] ? " > #{ENV['DUMP_FILENAME']}" : ""
|
|
11
10
|
dump_cmd = database_dump_command(database_config['adapter'])
|
|
12
11
|
system "#{dump_cmd}#{dump_store}"
|
|
13
12
|
end
|
|
14
13
|
|
|
15
14
|
desc "Imports the database from STDIN (Pass DUMP_FILENAME to read the dump from file)."
|
|
16
|
-
task :
|
|
15
|
+
task import: :environment do
|
|
17
16
|
dump_store = ENV['DUMP_FILENAME'] ? "cat #{ENV['DUMP_FILENAME']}" : "echo #{Shellwords.escape(STDIN.read)}"
|
|
18
17
|
import_cmd = database_import_command(database_config['adapter'])
|
|
19
18
|
system "#{dump_store} | #{import_cmd}"
|
|
@@ -16,8 +16,8 @@ class Alchemy::InstallTask < Thor
|
|
|
16
16
|
code = "en" if code.empty?
|
|
17
17
|
name = ask "What's the name of your site's primary language? (DEFAULT: English)"
|
|
18
18
|
name = "English" if name.empty?
|
|
19
|
-
gsub_file "./config/alchemy/config.yml", /default_language:\n\s\scode:\sen\n\s\sname:\sEnglish/m do
|
|
20
|
-
|
|
19
|
+
gsub_file "./config/alchemy/config.yml", /default_language:\n\s\scode:\sen\n\s\sname:\sEnglish/m do
|
|
20
|
+
"default_language:\n code: #{code}\n name: #{name}"
|
|
21
21
|
end
|
|
22
22
|
end
|
|
23
23
|
|
|
@@ -28,7 +28,6 @@ class Alchemy::InstallTask < Thor
|
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
namespace :alchemy do
|
|
31
|
-
|
|
32
31
|
desc "Installs Alchemy CMS into your app."
|
|
33
32
|
task :install do
|
|
34
33
|
install_helper = Alchemy::InstallTask.new
|
|
@@ -38,7 +37,7 @@ namespace :alchemy do
|
|
|
38
37
|
puts "-----------------"
|
|
39
38
|
end
|
|
40
39
|
Rake::Task["alchemy:mount"].invoke
|
|
41
|
-
system("rails g alchemy:install#{
|
|
40
|
+
system("rails g alchemy:install#{ENV['from_binary'] ? ' --force' : ''}") || exit!(1)
|
|
42
41
|
install_helper.set_primary_language
|
|
43
42
|
Rake::Task["db:create"].invoke
|
|
44
43
|
# We can't invoke this rake task, because Rails will use wrong engine names otherwise
|
data/lib/tasks/alchemy/tidy.rake
CHANGED
|
@@ -2,7 +2,6 @@ require 'alchemy/shell'
|
|
|
2
2
|
|
|
3
3
|
namespace :alchemy do
|
|
4
4
|
namespace :tidy do
|
|
5
|
-
|
|
6
5
|
desc "Tidy up Alchemy database."
|
|
7
6
|
task :up do
|
|
8
7
|
Rake::Task['alchemy:tidy:cells'].invoke
|
|
@@ -11,7 +10,7 @@ namespace :alchemy do
|
|
|
11
10
|
end
|
|
12
11
|
|
|
13
12
|
desc "Creates missing cells for pages."
|
|
14
|
-
task :
|
|
13
|
+
task cells: :environment do
|
|
15
14
|
if !File.exist? Rails.root.join('config/alchemy/cells.yml')
|
|
16
15
|
puts "No page cell definitions found."
|
|
17
16
|
else
|
|
@@ -26,12 +25,12 @@ namespace :alchemy do
|
|
|
26
25
|
end
|
|
27
26
|
|
|
28
27
|
desc "Fixes element positions."
|
|
29
|
-
task :
|
|
28
|
+
task element_positions: [:environment] do
|
|
30
29
|
Alchemy::Tidy.update_element_positions
|
|
31
30
|
end
|
|
32
31
|
|
|
33
32
|
desc "Fixes content positions."
|
|
34
|
-
task :
|
|
33
|
+
task content_positions: [:environment] do
|
|
35
34
|
Alchemy::Tidy.update_content_positions
|
|
36
35
|
end
|
|
37
36
|
end
|
|
@@ -65,7 +64,7 @@ module Alchemy
|
|
|
65
64
|
if page.elements.any?
|
|
66
65
|
puts "\n## Updating element positions of page `#{page.name}`"
|
|
67
66
|
end
|
|
68
|
-
page.elements.group_by(&:cell_id).each do |
|
|
67
|
+
page.elements.group_by(&:cell_id).each do |_cell_id, elements|
|
|
69
68
|
elements.each_with_index do |element, idx|
|
|
70
69
|
position = idx + 1
|
|
71
70
|
if element.position != position
|
|
@@ -2,15 +2,14 @@ require 'alchemy/upgrader'
|
|
|
2
2
|
require 'alchemy/version'
|
|
3
3
|
|
|
4
4
|
namespace :alchemy do
|
|
5
|
-
|
|
6
5
|
desc "Upgrades database content to Alchemy CMS v#{Alchemy::VERSION} (Set UPGRADE env variable to only run a specific task)."
|
|
7
|
-
task :
|
|
6
|
+
task upgrade: :environment do
|
|
8
7
|
Alchemy::Upgrader.run!
|
|
9
8
|
end
|
|
10
9
|
|
|
11
10
|
namespace :upgrade do
|
|
12
11
|
desc "List all available upgrade tasks."
|
|
13
|
-
task :
|
|
12
|
+
task list: [:environment] do
|
|
14
13
|
puts "\nAvailable upgrade tasks"
|
|
15
14
|
puts "-----------------------\n"
|
|
16
15
|
methods = Alchemy::Upgrader.all_upgrade_tasks
|
|
@@ -24,5 +23,4 @@ namespace :alchemy do
|
|
|
24
23
|
end
|
|
25
24
|
end
|
|
26
25
|
end
|
|
27
|
-
|
|
28
26
|
end
|
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
|
2
2
|
|
|
3
3
|
module Alchemy
|
|
4
4
|
describe Admin::AttachmentsController do
|
|
5
|
-
let(:attachment) { build_stubbed(:
|
|
5
|
+
let(:attachment) { build_stubbed(:alchemy_attachment) }
|
|
6
6
|
|
|
7
7
|
before do
|
|
8
8
|
authorize_user(:as_admin)
|
|
@@ -10,7 +10,7 @@ module Alchemy
|
|
|
10
10
|
|
|
11
11
|
describe "#index" do
|
|
12
12
|
it "should always paginate the records" do
|
|
13
|
-
|
|
13
|
+
expect_any_instance_of(ActiveRecord::Relation).to receive(:page).and_call_original
|
|
14
14
|
alchemy_get :index
|
|
15
15
|
end
|
|
16
16
|
|
|
@@ -42,8 +42,8 @@ module Alchemy
|
|
|
42
42
|
end
|
|
43
43
|
|
|
44
44
|
describe 'only and expect options' do
|
|
45
|
-
let!(:png) { create(:
|
|
46
|
-
let!(:jpg) { create(:
|
|
45
|
+
let!(:png) { create(:alchemy_attachment) }
|
|
46
|
+
let!(:jpg) { create(:alchemy_attachment, file: File.new(File.expand_path('../../../../fixtures/image3.jpeg', __FILE__))) }
|
|
47
47
|
|
|
48
48
|
context 'with params[:only]' do
|
|
49
49
|
it 'only loads attachments with matching content type' do
|
|
@@ -74,25 +74,6 @@ module Alchemy
|
|
|
74
74
|
end
|
|
75
75
|
end
|
|
76
76
|
|
|
77
|
-
describe "#new" do
|
|
78
|
-
context "in overlay" do
|
|
79
|
-
before do
|
|
80
|
-
expect(controller).to receive(:in_overlay?).and_return(true)
|
|
81
|
-
expect(Content).to receive(:find_by).and_return(mock_model('Content'))
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
it "should set @while_assigning to true" do
|
|
85
|
-
alchemy_get :new
|
|
86
|
-
expect(assigns(:while_assigning)).to eq(true)
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
it "should set @swap to params[:swap]" do
|
|
90
|
-
alchemy_get :new, swap: 'true'
|
|
91
|
-
expect(assigns(:swap)).to eq('true')
|
|
92
|
-
end
|
|
93
|
-
end
|
|
94
|
-
end
|
|
95
|
-
|
|
96
77
|
describe '#create' do
|
|
97
78
|
subject { alchemy_post :create, params }
|
|
98
79
|
|
|
@@ -105,23 +86,6 @@ module Alchemy
|
|
|
105
86
|
expect(attachment).to receive(:save).and_return(true)
|
|
106
87
|
end
|
|
107
88
|
|
|
108
|
-
context 'if inside of archive overlay' do
|
|
109
|
-
let(:params) { {attachment: {name: ''}, content_id: 1} }
|
|
110
|
-
let(:content) { mock_model('Content') }
|
|
111
|
-
|
|
112
|
-
before do
|
|
113
|
-
expect(Content).to receive(:find_by).and_return(content)
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
it "assigns lots of instance variables" do
|
|
117
|
-
subject
|
|
118
|
-
expect(assigns(:options)).to eq({})
|
|
119
|
-
expect(assigns(:while_assigning)).to be_truthy
|
|
120
|
-
expect(assigns(:content)).to eq(content)
|
|
121
|
-
expect(assigns(:swap)).to eq(nil)
|
|
122
|
-
end
|
|
123
|
-
end
|
|
124
|
-
|
|
125
89
|
it "renders json response with success message" do
|
|
126
90
|
subject
|
|
127
91
|
expect(response.content_type).to eq('application/json')
|
|
@@ -147,7 +111,7 @@ module Alchemy
|
|
|
147
111
|
describe '#update' do
|
|
148
112
|
subject { alchemy_put :update, {id: 1, attachment: {name: ''}} }
|
|
149
113
|
|
|
150
|
-
let(:attachment) { build_stubbed(:
|
|
114
|
+
let(:attachment) { build_stubbed(:alchemy_attachment) }
|
|
151
115
|
|
|
152
116
|
before do
|
|
153
117
|
expect(Attachment).to receive(:find).and_return(attachment)
|
|
@@ -161,6 +125,24 @@ module Alchemy
|
|
|
161
125
|
it "redirects to index path" do
|
|
162
126
|
is_expected.to redirect_to admin_attachments_path
|
|
163
127
|
end
|
|
128
|
+
|
|
129
|
+
context 'with search params' do
|
|
130
|
+
let(:search_params) do
|
|
131
|
+
{
|
|
132
|
+
q: {name_cont: 'kitten'},
|
|
133
|
+
per_page: 20,
|
|
134
|
+
page: 2
|
|
135
|
+
}
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
subject do
|
|
139
|
+
alchemy_put :update, {id: 1, attachment: {name: ''}}.merge(search_params)
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
it "passes them along" do
|
|
143
|
+
is_expected.to redirect_to admin_attachments_path(search_params)
|
|
144
|
+
end
|
|
145
|
+
end
|
|
164
146
|
end
|
|
165
147
|
|
|
166
148
|
context 'with failing validations' do
|
|
@@ -176,7 +158,7 @@ module Alchemy
|
|
|
176
158
|
end
|
|
177
159
|
|
|
178
160
|
describe '#destroy' do
|
|
179
|
-
let(:attachment) { build_stubbed(:
|
|
161
|
+
let(:attachment) { build_stubbed(:alchemy_attachment) }
|
|
180
162
|
|
|
181
163
|
before do
|
|
182
164
|
expect(Attachment).to receive(:find).and_return(attachment)
|
|
@@ -193,7 +175,7 @@ module Alchemy
|
|
|
193
175
|
|
|
194
176
|
describe "#download" do
|
|
195
177
|
before do
|
|
196
|
-
expect(Attachment).to receive(:find).with(
|
|
178
|
+
expect(Attachment).to receive(:find).with(attachment.id.to_s).and_return(attachment)
|
|
197
179
|
allow(controller).to receive(:render).and_return(nil)
|
|
198
180
|
end
|
|
199
181
|
|
|
@@ -203,7 +185,7 @@ module Alchemy
|
|
|
203
185
|
end
|
|
204
186
|
|
|
205
187
|
it "should send the data to the browser" do
|
|
206
|
-
expect(controller).to receive(:
|
|
188
|
+
expect(controller).to receive(:send_file)
|
|
207
189
|
alchemy_get :download, id: attachment.id
|
|
208
190
|
end
|
|
209
191
|
end
|