locomotivecms 3.0.0.pre.alpha.3 → 3.0.0.pre.beta.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +15 -8
- data/app/api/locomotive/api.rb +1 -0
- data/app/api/locomotive/api/entities/content_entry_entity.rb +1 -0
- data/app/api/locomotive/api/entities/content_type_entity.rb +2 -1
- data/app/api/locomotive/api/entities/site_entity.rb +4 -0
- data/app/api/locomotive/api/entities/theme_asset_entity.rb +3 -3
- data/app/api/locomotive/api/forms/base_form.rb +0 -6
- data/app/api/locomotive/api/forms/content_type_field_form.rb +6 -10
- data/app/api/locomotive/api/forms/content_type_form.rb +26 -4
- data/app/api/locomotive/api/middlewares/params_decoder_middleware.rb +91 -0
- data/app/api/locomotive/api/resources/content_type_resource.rb +7 -2
- data/app/api/locomotive/api/resources/current_site_resource.rb +10 -2
- data/app/assets/images/locomotive/favicon.png +0 -0
- data/app/assets/javascripts/locomotive/not_logged_in.js.coffee +11 -1
- data/app/assets/javascripts/locomotive/views/application_view.js.coffee +0 -76
- data/app/assets/javascripts/locomotive/views/content_assets/edit_image_view.js.coffee +3 -1
- data/app/assets/javascripts/locomotive/views/dashboard/show_view.js.coffee +33 -1
- data/app/assets/javascripts/locomotive/views/developers_documentation/show_view.js.coffee +9 -0
- data/app/assets/javascripts/locomotive/views/editable_elements/edit_view.js.coffee +3 -1
- data/app/assets/javascripts/locomotive/views/editable_elements/index_view.js.coffee +11 -11
- data/app/assets/javascripts/locomotive/views/inputs/text_view.js.coffee +16 -0
- data/app/assets/javascripts/locomotive/views/pages/_form_view.js.coffee +0 -158
- data/app/assets/javascripts/locomotive/views/pages/edit_view.js.coffee +0 -41
- data/app/assets/javascripts/locomotive/views/public_submission_accounts/edit_view.js.coffee +7 -0
- data/app/assets/javascripts/locomotive/views/shared/form_view.js.coffee +11 -3
- data/app/assets/javascripts/locomotive/views/shared/list_view.js.coffee +4 -2
- data/app/assets/javascripts/locomotive/views/translations/index_view.js.coffee +5 -0
- data/app/assets/stylesheets/locomotive/application.scss +4 -0
- data/app/assets/stylesheets/locomotive/base/_fonts.scss +5 -5
- data/app/assets/stylesheets/locomotive/base/form/_base.scss +9 -1
- data/app/assets/stylesheets/locomotive/components/_activity_feed.scss +66 -0
- data/app/assets/stylesheets/locomotive/components/_content_assets.scss +27 -8
- data/app/assets/stylesheets/locomotive/components/_developers.scss +34 -0
- data/app/assets/stylesheets/locomotive/components/_error.scss +37 -0
- data/app/assets/stylesheets/locomotive/components/_list.scss +6 -0
- data/app/assets/stylesheets/locomotive/components/_main.scss +4 -0
- data/app/assets/stylesheets/locomotive/components/_misc.scss +1 -0
- data/app/assets/stylesheets/locomotive/components/_translations.scss +13 -0
- data/app/assets/stylesheets/locomotive/components/header/_base.scss +7 -2
- data/app/assets/stylesheets/locomotive/components/misc/_modal.scss +13 -0
- data/app/assets/stylesheets/locomotive/components/misc/_notify.scss +2 -2
- data/app/assets/stylesheets/locomotive/components/not_logged_in/_sign_in_and_up.scss +11 -1
- data/app/assets/stylesheets/locomotive/components/sidebar/_pages_tree.scss +2 -2
- data/app/assets/stylesheets/locomotive/error.scss +12 -0
- data/app/assets/stylesheets/locomotive/globals/_bootstrap.scss +1 -1
- data/app/assets/stylesheets/locomotive/globals/_mixins.scss +8 -4
- data/app/assets/stylesheets/locomotive/globals/_variables.scss +2 -0
- data/app/assets/stylesheets/locomotive/not_logged_in.scss +4 -0
- data/app/controllers/locomotive/accounts_controller.rb +6 -1
- data/app/controllers/locomotive/base_controller.rb +1 -1
- data/app/controllers/locomotive/concerns/exception_controller.rb +2 -1
- data/app/controllers/locomotive/concerns/site_dispatcher_controller.rb +2 -1
- data/app/controllers/locomotive/content_assets_controller.rb +2 -2
- data/app/controllers/locomotive/content_entries_controller.rb +2 -2
- data/app/controllers/locomotive/current_site_controller.rb +5 -1
- data/app/controllers/locomotive/custom_fields/select_options_controller.rb +1 -1
- data/app/controllers/locomotive/dashboard_controller.rb +2 -0
- data/app/controllers/locomotive/developers_documentation_controller.rb +11 -0
- data/app/controllers/locomotive/editable_elements_controller.rb +11 -10
- data/app/controllers/locomotive/errors_controller.rb +15 -0
- data/app/controllers/locomotive/pages_controller.rb +3 -3
- data/app/controllers/locomotive/public_submission_accounts_controller.rb +42 -0
- data/app/controllers/locomotive/translations_controller.rb +9 -23
- data/app/helpers/locomotive/base_helper.rb +25 -23
- data/app/helpers/locomotive/content_assets_helper.rb +8 -0
- data/app/helpers/locomotive/content_entries_helper.rb +13 -19
- data/app/helpers/locomotive/content_types_helper.rb +9 -12
- data/app/helpers/locomotive/custom_fields_helper.rb +1 -0
- data/app/helpers/locomotive/dashboard_helper.rb +91 -0
- data/app/helpers/locomotive/developers_documentation_helper.rb +32 -0
- data/app/helpers/locomotive/editable_elements_helper.rb +25 -14
- data/app/helpers/locomotive/errors_helper.rb +21 -0
- data/app/helpers/locomotive/my_account_helper.rb +10 -8
- data/app/helpers/locomotive/pages_helper.rb +1 -1
- data/app/helpers/locomotive/public_submission_accounts_helper.rb +11 -0
- data/app/helpers/locomotive/shared/accounts_helper.rb +2 -2
- data/app/helpers/locomotive/sites_helper.rb +15 -11
- data/app/helpers/locomotive/translations_helper.rb +21 -13
- data/app/inputs/locomotive/api_key_input.rb +2 -0
- data/app/inputs/locomotive/array_input.rb +8 -3
- data/app/inputs/locomotive/code_input.rb +1 -47
- data/app/inputs/locomotive/document_picker_input.rb +1 -0
- data/app/inputs/locomotive/rte_input.rb +2 -0
- data/app/inputs/locomotive/toggle_input.rb +2 -0
- data/app/models/locomotive/activity.rb +32 -0
- data/app/models/locomotive/concerns/content_entry/localized.rb +12 -1
- data/app/models/locomotive/concerns/content_type/entry_template.rb +52 -0
- data/app/models/locomotive/concerns/page/editable_elements.rb +0 -111
- data/app/models/locomotive/concerns/page/layout.rb +21 -6
- data/app/models/locomotive/concerns/site/access_points.rb +24 -3
- data/app/models/locomotive/concerns/site/locales.rb +7 -27
- data/app/models/locomotive/content_asset.rb +0 -4
- data/app/models/locomotive/content_entry.rb +10 -8
- data/app/models/locomotive/content_type.rb +12 -1
- data/app/models/locomotive/editable_element.rb +11 -106
- data/app/models/locomotive/editable_file.rb +6 -53
- data/app/models/locomotive/editable_model.rb +13 -0
- data/app/models/locomotive/editable_text.rb +0 -51
- data/app/models/locomotive/page.rb +31 -17
- data/app/models/locomotive/site.rb +12 -13
- data/app/models/locomotive/theme_asset.rb +0 -4
- data/app/models/locomotive/translation.rb +50 -35
- data/app/policies/locomotive/content_type_policy.rb +4 -0
- data/app/policies/locomotive/site_policy.rb +4 -0
- data/app/services/locomotive/concerns/activity_service.rb +27 -0
- data/app/services/locomotive/content_asset_service.rb +16 -2
- data/app/services/locomotive/content_entry_service.rb +77 -8
- data/app/services/locomotive/content_type_service.rb +6 -2
- data/app/services/locomotive/editable_element_service.rb +11 -4
- data/app/services/locomotive/membership_service.rb +20 -4
- data/app/services/locomotive/page_parsing_service.rb +94 -23
- data/app/services/locomotive/page_service.rb +61 -3
- data/app/services/locomotive/site_service.rb +43 -1
- data/app/services/locomotive/translation_service.rb +51 -0
- data/app/uploaders/locomotive/picture_uploader.rb +5 -1
- data/app/views/locomotive/accounts/{new.html.haml → new.html.slim} +0 -0
- data/app/views/locomotive/content_assets/{_dropzone.html.haml → _dropzone.html.slim} +4 -3
- data/app/views/locomotive/content_assets/{_list.html.haml → _list.html.slim} +11 -9
- data/app/views/locomotive/content_assets/{_nav.html.haml → _nav.html.slim} +5 -5
- data/app/views/locomotive/content_assets/{_search_form.html.haml → _search_form.html.slim} +1 -1
- data/app/views/locomotive/content_assets/edit_in_drawer.html.slim +27 -0
- data/app/views/locomotive/content_assets/{index.html.haml → index.html.slim} +4 -4
- data/app/views/locomotive/content_assets/{index_in_drawer.html.haml → index_in_drawer.html.slim} +1 -1
- data/app/views/locomotive/content_entries/{_entry.html.haml → _entry.html.slim} +3 -3
- data/app/views/locomotive/content_entries/{_list.html.haml → _list.html.slim} +9 -8
- data/app/views/locomotive/content_entries/{edit.html.haml → edit.html.slim} +5 -0
- data/app/views/locomotive/content_entries/form/{_actions.html.haml → _actions.html.slim} +0 -0
- data/app/views/locomotive/content_entries/form/{_advanced.html.haml → _advanced.html.slim} +0 -0
- data/app/views/locomotive/content_entries/form/{_main.html.haml → _main.html.slim} +0 -0
- data/app/views/locomotive/content_entries/form/{_panes.html.haml → _panes.html.slim} +0 -0
- data/app/views/locomotive/content_entries/form/{_seo.html.haml → _seo.html.slim} +0 -0
- data/app/views/locomotive/content_entries/form/_tabs.html.slim +13 -0
- data/app/views/locomotive/content_entries/{index.html.haml → index.html.slim} +22 -9
- data/app/views/locomotive/content_entries/{new.html.haml → new.html.slim} +0 -0
- data/app/views/locomotive/current_site/{_domain.html.haml → _domain.html.slim} +3 -3
- data/app/views/locomotive/current_site/{_locale.html.haml → _locale.html.slim} +4 -4
- data/app/views/locomotive/current_site/{_membership.html.haml → _membership.html.slim} +7 -6
- data/app/views/locomotive/current_site/{edit.html.haml → edit.html.slim} +1 -1
- data/app/views/locomotive/current_site/form/{_access_points.html.haml → _access_points.html.slim} +1 -0
- data/app/views/locomotive/current_site/form/{_advanced.html.haml → _advanced.html.slim} +0 -0
- data/app/views/locomotive/current_site/form/{_main.html.haml → _main.html.slim} +0 -0
- data/app/views/locomotive/current_site/form/{_panes.html.haml → _panes.html.slim} +0 -0
- data/app/views/locomotive/current_site/form/{_seo.html.haml → _seo.html.slim} +0 -0
- data/app/views/locomotive/current_site/form/_tabs.html.slim +14 -0
- data/app/views/locomotive/custom_fields/select_options/{_option.html.haml → _option.html.slim} +7 -7
- data/app/views/locomotive/custom_fields/select_options/{edit.html.haml → edit.html.slim} +0 -0
- data/app/views/locomotive/dashboard/show.html.slim +28 -0
- data/app/views/locomotive/developers_documentation/_api.html.slim +44 -0
- data/app/views/locomotive/developers_documentation/_wagon.html.slim +42 -0
- data/app/views/locomotive/developers_documentation/show.html.slim +11 -0
- data/app/views/locomotive/devise_mailer/reset_password_instructions.html.slim +12 -0
- data/app/views/locomotive/editable_elements/_edit.html.slim +52 -0
- data/app/views/locomotive/editable_elements/{_form.html.haml → _form.html.slim} +12 -3
- data/app/views/locomotive/editable_elements/index.html.slim +8 -0
- data/app/views/locomotive/editable_elements/{index_without_preview.html.haml → index_without_preview.html.slim} +5 -4
- data/app/views/locomotive/errors/404.html.slim +2 -0
- data/app/views/locomotive/errors/500.html.slim +2 -0
- data/app/views/locomotive/errors/no_site.html.slim +7 -0
- data/app/views/locomotive/layouts/application.html.slim +42 -0
- data/app/views/locomotive/layouts/error.html.slim +24 -0
- data/app/views/locomotive/layouts/{live_editing.html.haml → live_editing.html.slim} +10 -10
- data/app/views/locomotive/layouts/not_logged_in.html.slim +26 -0
- data/app/views/locomotive/layouts/{without_site.html.haml → without_site.html.slim} +9 -6
- data/app/views/locomotive/memberships/{edit.html.haml → edit.html.slim} +0 -0
- data/app/views/locomotive/memberships/{new.html.haml → new.html.slim} +0 -0
- data/app/views/locomotive/my_account/{edit.html.haml → edit.html.slim} +1 -1
- data/app/views/locomotive/my_account/form/{_actions.html.haml → _actions.html.slim} +0 -0
- data/app/views/locomotive/my_account/form/{_api.html.haml → _api.html.slim} +0 -1
- data/app/views/locomotive/my_account/form/{_credentials.html.haml → _credentials.html.slim} +0 -0
- data/app/views/locomotive/my_account/form/{_main.html.haml → _main.html.slim} +0 -0
- data/app/views/locomotive/my_account/form/{_panes.html.haml → _panes.html.slim} +1 -1
- data/app/views/locomotive/my_account/form/_tabs.html.slim +7 -0
- data/app/views/locomotive/notifications/{new_content_entry.html.haml → new_content_entry.html.slim} +11 -11
- data/app/views/locomotive/pages/{edit.html.haml → edit.html.slim} +0 -0
- data/app/views/locomotive/pages/form/{_actions.html.haml → _actions.html.slim} +0 -0
- data/app/views/locomotive/pages/form/{_main.html.haml → _main.html.slim} +0 -0
- data/app/views/locomotive/pages/form/{_panes.html.haml → _panes.html.slim} +0 -0
- data/app/views/locomotive/pages/form/{_seo.html.haml → _seo.html.slim} +0 -0
- data/app/views/locomotive/pages/form/{_tabs.html.haml → _tabs.html.slim} +1 -1
- data/app/views/locomotive/pages/{new.html.haml → new.html.slim} +0 -0
- data/app/views/locomotive/pages/show.html.slim +2 -0
- data/app/views/locomotive/passwords/{edit.html.haml → edit.html.slim} +6 -6
- data/app/views/locomotive/passwords/{new.html.haml → new.html.slim} +6 -6
- data/app/views/locomotive/public_submission_accounts/_account.html.slim +19 -0
- data/app/views/locomotive/public_submission_accounts/edit.html.slim +16 -0
- data/app/views/locomotive/registrations/{new.html.haml → new.html.slim} +2 -4
- data/app/views/locomotive/sessions/{new.html.haml → new.html.slim} +2 -4
- data/app/views/locomotive/shared/_footer.html.slim +2 -0
- data/app/views/locomotive/shared/{_form_actions.html.haml → _form_actions.html.slim} +4 -4
- data/app/views/locomotive/shared/_head.html.slim +39 -0
- data/app/views/locomotive/shared/{_header.html.haml → _header.html.slim} +10 -10
- data/app/views/locomotive/shared/_locale_picker_link.html.slim +11 -0
- data/app/views/locomotive/shared/{_main_app_head.html.haml → _main_app_head.html.slim} +0 -0
- data/app/views/locomotive/shared/{_main_app_head_before_backbone.html.haml → _main_app_head_before_backbone.html.slim} +0 -0
- data/app/views/locomotive/shared/{_main_app_header.html.haml → _main_app_header.html.slim} +0 -0
- data/app/views/locomotive/shared/{_sidebar.html.haml → _sidebar.html.slim} +6 -0
- data/app/views/locomotive/shared/{_sidebar_without_site.html.haml → _sidebar_without_site.html.slim} +0 -0
- data/app/views/locomotive/shared/actions/{_contents.html.haml → _contents.html.slim} +1 -1
- data/app/views/locomotive/shared/header/{_account.html.haml → _account.html.slim} +1 -1
- data/app/views/locomotive/shared/header/_account_menu.html.slim +5 -0
- data/app/views/locomotive/shared/header/_brand.html.slim +5 -0
- data/app/views/locomotive/shared/header/{_site.html.haml → _site.html.slim} +2 -2
- data/app/views/locomotive/shared/rte/{_image_popover.html.haml → _image_popover.html.slim} +5 -5
- data/app/views/locomotive/shared/rte/{_link_popover.html.haml → _link_popover.html.slim} +5 -5
- data/app/views/locomotive/shared/rte/_toolbar.html.slim +62 -0
- data/app/views/locomotive/shared/sidebar/_content_types.html.slim +16 -0
- data/app/views/locomotive/shared/sidebar/_link.html.slim +10 -0
- data/app/views/locomotive/shared/sidebar/{_my_account.html.haml → _my_account.html.slim} +2 -2
- data/app/views/locomotive/shared/sidebar/_page.html.slim +33 -0
- data/app/views/locomotive/shared/sidebar/_pages.html.slim +11 -0
- data/app/views/locomotive/sites/{_site.html.haml → _site.html.slim} +3 -3
- data/app/views/locomotive/sites/{index.html.haml → index.html.slim} +3 -3
- data/app/views/locomotive/sites/{new.html.haml → new.html.slim} +0 -0
- data/app/views/locomotive/translations/_form.html.slim +9 -0
- data/app/views/locomotive/translations/edit.html.slim +7 -0
- data/app/views/locomotive/translations/index.html.slim +41 -0
- data/config/initializers/slim.rb +1 -0
- data/config/initializers/time_format.rb +15 -0
- data/config/locales/admin_ui.en.yml +65 -49
- data/config/locales/default.en.yml +3 -0
- data/config/locales/default.fr.yml +4 -1
- data/config/locales/simple_form.en.yml +14 -8
- data/config/routes.rb +6 -0
- data/features/support/env.rb +1 -1
- data/lib/generators/locomotive/install/install_generator.rb +48 -0
- data/lib/generators/locomotive/install/templates/heroku.rb +29 -0
- data/lib/generators/locomotive/install/templates/locomotive.rb +5 -2
- data/lib/generators/locomotive/install/templates/mongoid.yml +1 -1
- data/lib/generators/locomotive/install/templates/mongoid_heroku.yml +78 -0
- data/lib/locomotive.rb +0 -1
- data/lib/locomotive/configuration.rb +2 -6
- data/lib/locomotive/dependencies.rb +1 -2
- data/lib/locomotive/dragonfly.rb +4 -5
- data/lib/locomotive/engine.rb +10 -13
- data/lib/locomotive/middlewares.rb +0 -1
- data/lib/locomotive/middlewares/custom_public_exceptions.rb +19 -0
- data/lib/locomotive/middlewares/site.rb +49 -16
- data/lib/locomotive/simple_form.rb +67 -26
- data/lib/locomotive/steam/middlewares/missing_translations.rb +48 -0
- data/lib/locomotive/steam/middlewares/page_editing.rb +48 -0
- data/lib/locomotive/steam/services/api_entry_submission_service.rb +38 -0
- data/lib/locomotive/steam_adaptor.rb +25 -6
- data/lib/locomotive/version.rb +1 -1
- data/lib/tasks/locomotive.rake +27 -47
- data/spec/dummy/app/views/foo/index.html.slim +1 -0
- data/spec/dummy/app/views/locomotive/shared/{_main_app_head.html.haml → _main_app_head.html.slim} +0 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +4 -0
- data/spec/dummy/config/environments/profile.rb +48 -0
- data/spec/dummy/config/mongoid.yml +6 -6
- data/spec/lib/locomotive/steam/services/api_entry_submission_service_spec.rb +39 -0
- data/spec/models/locomotive/concerns/content_type/entry_template_spec.rb +55 -0
- data/spec/models/locomotive/concerns/page/layout_spec.rb +2 -2
- data/spec/models/locomotive/concerns/site/access_points_spec.rb +87 -2
- data/spec/models/locomotive/concerns/site/locales_spec.rb +2 -3
- data/spec/models/locomotive/content_entry_spec.rb +22 -37
- data/spec/models/locomotive/page_spec.rb +11 -0
- data/spec/models/locomotive/site_spec.rb +0 -36
- data/spec/requests/site_spec.rb +28 -0
- data/spec/support/capybara.rb +27 -0
- data/spec/support/factories.rb +9 -0
- data/spec/support/features/session_helpers.rb +21 -0
- data/spec/support/locomotive.rb +0 -4
- data/spec/support/matchers.rb +0 -25
- data/vendor/assets/javascripts/locomotive/highlight.pack.js +1 -0
- data/vendor/assets/stylesheets/locomotive/highlightjs/default.css +155 -0
- data/vendor/assets/stylesheets/locomotive/highlightjs/github.css +123 -0
- metadata +179 -195
- data/app/assets/images/locomotive/background/body.png +0 -0
- data/app/assets/images/locomotive/form/error-arrow.png +0 -0
- data/app/assets/images/locomotive/form/input-sep.png +0 -0
- data/app/assets/images/locomotive/icons/start.png +0 -0
- data/app/assets/images/locomotive/list/empty.png +0 -0
- data/app/assets/images/locomotive/list/item-left.png +0 -0
- data/app/assets/images/locomotive/nocoffee.png +0 -0
- data/app/assets/images/locomotive/plugins/sites_picker_top_arrow.png +0 -0
- data/app/assets/images/locomotive/rails.png +0 -0
- data/app/assets/javascripts/locomotive/views/pages/index_view.js.coffee +0 -11
- data/app/cells/locomotive/content_locale_picker/show.html.haml +0 -7
- data/app/cells/locomotive/content_locale_picker_cell.rb +0 -21
- data/app/helpers/locomotive/installation_helper.rb +0 -9
- data/app/inputs/locomotive/locale_input.rb +0 -41
- data/app/inputs/locomotive/small_code_input.rb +0 -23
- data/app/models/locomotive/concerns/content_entry/notifications.rb +0 -33
- data/app/models/locomotive/concerns/content_type/item_template.rb +0 -49
- data/app/models/locomotive/concerns/page/parse.rb +0 -133
- data/app/presenters/locomotive/account_presenter.rb +0 -20
- data/app/presenters/locomotive/base_presenter.rb +0 -144
- data/app/presenters/locomotive/content_asset_presenter.rb +0 -51
- data/app/presenters/locomotive/content_entry_presenter.rb +0 -177
- data/app/presenters/locomotive/content_field_presenter.rb +0 -76
- data/app/presenters/locomotive/content_type_presenter.rb +0 -82
- data/app/presenters/locomotive/editable_control_presenter.rb +0 -19
- data/app/presenters/locomotive/editable_element_presenter.rb +0 -46
- data/app/presenters/locomotive/editable_file_presenter.rb +0 -36
- data/app/presenters/locomotive/editable_text_presenter.rb +0 -40
- data/app/presenters/locomotive/membership_presenter.rb +0 -35
- data/app/presenters/locomotive/page_presenter.rb +0 -81
- data/app/presenters/locomotive/site_presenter.rb +0 -40
- data/app/presenters/locomotive/snippet_presenter.rb +0 -22
- data/app/presenters/locomotive/theme_asset_presenter.rb +0 -61
- data/app/presenters/locomotive/translation_presenter.rb +0 -9
- data/app/views/locomotive/content_assets/edit_in_drawer.html.haml +0 -26
- data/app/views/locomotive/content_entries/form/_tabs.html.haml +0 -9
- data/app/views/locomotive/current_site/form/_tabs.html.haml +0 -14
- data/app/views/locomotive/dashboard/show.html.haml +0 -0
- data/app/views/locomotive/devise_mailer/reset_password_instructions.html.haml +0 -12
- data/app/views/locomotive/editable_elements/_edit.html.haml +0 -49
- data/app/views/locomotive/editable_elements/_edit_with_content_entry.html.haml +0 -21
- data/app/views/locomotive/editable_elements/index.html.haml +0 -8
- data/app/views/locomotive/errors/404.html.haml +0 -7
- data/app/views/locomotive/errors/500.html.haml +0 -7
- data/app/views/locomotive/errors/no_page.html.haml +0 -1
- data/app/views/locomotive/errors/no_site.html.haml +0 -1
- data/app/views/locomotive/layouts/application.html.haml +0 -42
- data/app/views/locomotive/layouts/error.html.haml +0 -1
- data/app/views/locomotive/layouts/not_logged_in.html.haml +0 -18
- data/app/views/locomotive/my_account/form/_tabs.html.haml +0 -7
- data/app/views/locomotive/pages/_editable_elements.html.haml +0 -64
- data/app/views/locomotive/pages/index.html.haml +0 -22
- data/app/views/locomotive/pages/show.html.haml +0 -2
- data/app/views/locomotive/shared/_footer.html.haml +0 -2
- data/app/views/locomotive/shared/_head.html.haml +0 -40
- data/app/views/locomotive/shared/_locale_picker_link.html.haml +0 -6
- data/app/views/locomotive/shared/header/_account_menu.html.haml +0 -5
- data/app/views/locomotive/shared/header/_brand.html.haml +0 -4
- data/app/views/locomotive/shared/rte/_toolbar.html.haml +0 -62
- data/app/views/locomotive/shared/sidebar/_content_types.html.haml +0 -15
- data/app/views/locomotive/shared/sidebar/_link.html.haml +0 -10
- data/app/views/locomotive/shared/sidebar/_page.html.haml +0 -33
- data/app/views/locomotive/shared/sidebar/_pages.html.haml +0 -11
- data/app/views/locomotive/translations/_form.html.haml +0 -12
- data/app/views/locomotive/translations/edit.html.haml +0 -15
- data/app/views/locomotive/translations/index.html.haml +0 -30
- data/app/views/locomotive/translations/new.html.haml +0 -12
- data/config/initializers/haml.rb +0 -2
- data/config/initializers/locomotive_loaded_first.rb +0 -19
- data/config/locales/formtastic.bg.yml +0 -113
- data/config/locales/formtastic.cs.yml +0 -125
- data/config/locales/formtastic.de.yml +0 -106
- data/config/locales/formtastic.es.yml +0 -84
- data/config/locales/formtastic.et.yml +0 -103
- data/config/locales/formtastic.fr.yml +0 -109
- data/config/locales/formtastic.it.yml +0 -99
- data/config/locales/formtastic.ja.yml +0 -103
- data/config/locales/formtastic.nb.yml +0 -103
- data/config/locales/formtastic.nl.yml +0 -85
- data/config/locales/formtastic.pl.yml +0 -105
- data/config/locales/formtastic.pt-BR.yml +0 -70
- data/config/locales/formtastic.pt.yml +0 -70
- data/config/locales/formtastic.ru.yml +0 -106
- data/config/locales/formtastic.sk.yml +0 -125
- data/config/locales/formtastic.sr.yml +0 -112
- data/config/locales/formtastic.zh-CN.yml +0 -112
- data/lib/locomotive/haml.rb +0 -1
- data/lib/locomotive/middlewares/page_editing.rb +0 -41
- data/spec/dummy/app/views/foo/index.html.haml +0 -1
- data/spec/dummy/config/initializers/haml.rb +0 -2
- data/spec/support/asset_host_stubs.rb +0 -17
- data/spec/support/controller.rb +0 -32
@@ -12,7 +12,6 @@ module Locomotive
|
|
12
12
|
include Concerns::ContentEntry::Localized
|
13
13
|
include Concerns::ContentEntry::Counter
|
14
14
|
include Concerns::ContentEntry::NextPrevious
|
15
|
-
include Concerns::ContentEntry::Notifications
|
16
15
|
|
17
16
|
## fields ##
|
18
17
|
field :_slug, localize: true
|
@@ -53,6 +52,9 @@ module Locomotive
|
|
53
52
|
index _type: 1, _position: 1
|
54
53
|
index content_type_id: 1, _position: 1
|
55
54
|
|
55
|
+
index site_id: 1, content_type_id: 1, _visible: 1
|
56
|
+
index site_id: 1, content_type_id: 1, _visible: 1, _position: 1
|
57
|
+
|
56
58
|
## methods ##
|
57
59
|
|
58
60
|
alias :visible? :_visible?
|
@@ -113,13 +115,13 @@ module Locomotive
|
|
113
115
|
end
|
114
116
|
end
|
115
117
|
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
118
|
+
def to_liquid(type = nil)
|
119
|
+
(type || self.content_type).to_steam_entry(self).to_liquid
|
120
|
+
|
121
|
+
# repositories = Locomotive::Steam::Services.build_instance.repositories
|
122
|
+
# _content_type = repositories.content_type.build(content_type.attributes.symbolize_keys)
|
123
|
+
|
124
|
+
# repositories.content_entry.with(_content_type).build(self.attributes.symbolize_keys).to_liquid
|
123
125
|
end
|
124
126
|
|
125
127
|
protected
|
@@ -7,7 +7,7 @@ module Locomotive
|
|
7
7
|
include ::CustomFields::Source
|
8
8
|
include Concerns::ContentType::Label
|
9
9
|
include Concerns::ContentType::DefaultValues
|
10
|
-
include Concerns::ContentType::
|
10
|
+
include Concerns::ContentType::EntryTemplate
|
11
11
|
include Concerns::ContentType::Sync
|
12
12
|
include Concerns::ContentType::GroupBy
|
13
13
|
include Concerns::ContentType::OrderBy
|
@@ -26,6 +26,7 @@ module Locomotive
|
|
26
26
|
field :public_submission_accounts, type: Array
|
27
27
|
field :filter_fields, type: Array
|
28
28
|
field :number_of_entries
|
29
|
+
field :display_settings, type: Hash
|
29
30
|
|
30
31
|
## associations ##
|
31
32
|
belongs_to :site, class_name: 'Locomotive::Site', validate: false
|
@@ -36,6 +37,7 @@ module Locomotive
|
|
36
37
|
scope :by_id_or_slug, ->(id_or_slug) {
|
37
38
|
any_of({ _id: id_or_slug }, { slug: id_or_slug })
|
38
39
|
}
|
40
|
+
scope :localized, -> { elem_match(entries_custom_fields: { localized: true }) }
|
39
41
|
|
40
42
|
## indexes ##
|
41
43
|
index site_id: 1, slug: 1
|
@@ -93,6 +95,15 @@ module Locomotive
|
|
93
95
|
_field || self.entries_custom_fields.where(name: id_or_name).first
|
94
96
|
end
|
95
97
|
|
98
|
+
# A localized content type owns at least one localized field.
|
99
|
+
def localized?
|
100
|
+
self.entries_custom_fields.where(localized: true).count > 0
|
101
|
+
end
|
102
|
+
|
103
|
+
def hidden?
|
104
|
+
(self.display_settings || {})['hidden']
|
105
|
+
end
|
106
|
+
|
96
107
|
protected
|
97
108
|
|
98
109
|
def normalize_slug
|
@@ -21,14 +21,24 @@ module Locomotive
|
|
21
21
|
validates_presence_of :slug
|
22
22
|
|
23
23
|
## callbacks ##
|
24
|
-
# after_save :propagate_content, if: :fixed?
|
25
24
|
|
26
25
|
## scopes ##
|
27
26
|
scope :by_priority, -> { order_by(priority: :desc) }
|
28
27
|
scope :by_block_and_slug, ->(block, slug) { where(block: block, slug: slug) }
|
29
28
|
|
29
|
+
## non-persisted attributes ##
|
30
|
+
attr_accessor :block_name, :block_priority
|
31
|
+
|
30
32
|
## methods ##
|
31
33
|
|
34
|
+
def label
|
35
|
+
self.slug
|
36
|
+
end
|
37
|
+
|
38
|
+
def block_label
|
39
|
+
(@block_name || self.block).humanize
|
40
|
+
end
|
41
|
+
|
32
42
|
def disabled?
|
33
43
|
!!self.disabled # the original method does not work quite well with the localization
|
34
44
|
end
|
@@ -41,80 +51,6 @@ module Locomotive
|
|
41
51
|
self._parent.try(:_id)
|
42
52
|
end
|
43
53
|
|
44
|
-
def humanized_id
|
45
|
-
[self.block, self.slug].compact.join('_').gsub('/', '_')
|
46
|
-
end
|
47
|
-
|
48
|
-
# def disabled_in_all_translations?
|
49
|
-
# return self.disabled_translations if self.disabled_translations.is_a?(Boolean)
|
50
|
-
# return false if disabled_translations.blank?
|
51
|
-
# self.disabled_translations.all? { |_, v| v == true }
|
52
|
-
# end
|
53
|
-
|
54
|
-
# # Determines if the current element can be edited in the back-office
|
55
|
-
# #
|
56
|
-
# def editable?
|
57
|
-
# !self.disabled? &&
|
58
|
-
# self.locales.include?(::Mongoid::Fields::I18n.locale.to_s) &&
|
59
|
-
# (!self.fixed? || !self.from_parent?) &&
|
60
|
-
# !self.destroyed?
|
61
|
-
# end
|
62
|
-
|
63
|
-
# def _run_rearrange_callbacks
|
64
|
-
# # callback from page/tree. not needed in the editable elements
|
65
|
-
# end
|
66
|
-
|
67
|
-
# def default_content?
|
68
|
-
# # needs to be overridden for each kind of elements
|
69
|
-
# true
|
70
|
-
# end
|
71
|
-
|
72
|
-
# # Copy attributes extracted from the corresponding Liquid tag
|
73
|
-
# # Each editable element overrides this method.
|
74
|
-
# #
|
75
|
-
# # @param [ Hash ] attributes The up-to-date attributes
|
76
|
-
# #
|
77
|
-
# def copy_attributes(attributes)
|
78
|
-
# # _type is among the mass-assign protected attributes.
|
79
|
-
# if type = attributes.delete(:_type)
|
80
|
-
# self._type = type
|
81
|
-
# end
|
82
|
-
|
83
|
-
# self.attributes = attributes
|
84
|
-
# end
|
85
|
-
|
86
|
-
# # Copy attributes from an existing editable element coming
|
87
|
-
# # from the parent page. Each type of an editable element may or not
|
88
|
-
# # override this method. The source element is a new record.
|
89
|
-
# #
|
90
|
-
# # @param [ EditableElement] el The source element
|
91
|
-
# #
|
92
|
-
# def copy_attributes_from(el)
|
93
|
-
# self.attributes = el.attributes.reject { |attr| !%w(slug block hint priority fixed disabled locales from_parent).include?(attr) }
|
94
|
-
# self.from_parent = true
|
95
|
-
# end
|
96
|
-
|
97
|
-
# # Copy the default attributes: _type, hint, fixed, priority and locales
|
98
|
-
# # from an existing editable element coming from the parent page.
|
99
|
-
# # Each type of an editable element may or not override this method for
|
100
|
-
# # options for instance.
|
101
|
-
# #
|
102
|
-
# # @param [ EditableElement] el The source element
|
103
|
-
# #
|
104
|
-
# def copy_default_attributes_from(el)
|
105
|
-
# # only the type, hint and fixed properties can be modified from the element
|
106
|
-
# %w(_type hint fixed priority locales).each do |attr|
|
107
|
-
# self.send(:"#{attr}=", el.send(attr.to_sym))
|
108
|
-
# end
|
109
|
-
# end
|
110
|
-
|
111
|
-
# # Set the default content from an existing editable element coming
|
112
|
-
# # from the parent page. Each editable element may or not
|
113
|
-
# # override this method. The source element is an existing record.
|
114
|
-
# def set_default_content_from(el)
|
115
|
-
# self.add_current_locale
|
116
|
-
# end
|
117
|
-
|
118
54
|
# Make sure the current locale is added to the list
|
119
55
|
# of locales for the current element so that we know
|
120
56
|
# in which languages the element was translated.
|
@@ -124,36 +60,5 @@ module Locomotive
|
|
124
60
|
self.locales << locale unless self.locales.include?(locale)
|
125
61
|
end
|
126
62
|
|
127
|
-
# # Set the content of the editable element with a default value
|
128
|
-
# # only if the content has not already been modified by the user.
|
129
|
-
# #
|
130
|
-
# # @param [ String ] content The default content.
|
131
|
-
# #
|
132
|
-
# def content_from_default=(content)
|
133
|
-
# # needs to be overridden for each kind of elements
|
134
|
-
# end
|
135
|
-
|
136
|
-
# protected
|
137
|
-
|
138
|
-
# def _selector
|
139
|
-
# locale = ::Mongoid::Fields::I18n.locale
|
140
|
-
# {
|
141
|
-
# 'site_id' => self.page.site_id,
|
142
|
-
# "template_dependencies.#{locale}" => { '$in' => [self.page._id] },
|
143
|
-
# 'editable_elements.fixed' => true,
|
144
|
-
# 'editable_elements.block' => self.block,
|
145
|
-
# 'editable_elements.slug' => self.slug,
|
146
|
-
# }
|
147
|
-
# end
|
148
|
-
|
149
|
-
# # Update the value (or content) of the elements matching the same block/slug
|
150
|
-
# # as the current element in all the pages inheriting from the current page.
|
151
|
-
# # This method is called only if the element has the "fixed" property set to true.
|
152
|
-
# # It also needs to be overridden for each kind of elements (file, short text, ...etc)
|
153
|
-
# #
|
154
|
-
# def propagate_content
|
155
|
-
# true
|
156
|
-
# end
|
157
|
-
|
158
63
|
end
|
159
64
|
end
|
@@ -10,7 +10,7 @@ module Locomotive
|
|
10
10
|
field :default_source_url, localize: true
|
11
11
|
|
12
12
|
## callbacks ##
|
13
|
-
|
13
|
+
after_initialize :init_localized_source
|
14
14
|
|
15
15
|
## methods ##
|
16
16
|
|
@@ -27,64 +27,17 @@ module Locomotive
|
|
27
27
|
|
28
28
|
alias :content= :source=
|
29
29
|
|
30
|
-
# def default_content?
|
31
|
-
# !self.source? && self.default_source_url.present?
|
32
|
-
# end
|
33
|
-
|
34
|
-
# def copy_attributes(attributes)
|
35
|
-
# unless self.default_content?
|
36
|
-
# attributes.delete(:default_source_url)
|
37
|
-
# end
|
38
|
-
|
39
|
-
# super(attributes)
|
40
|
-
# end
|
41
|
-
|
42
|
-
# def copy_attributes_from(el)
|
43
|
-
# super(el)
|
44
|
-
|
45
|
-
# if el.source_translations.blank?
|
46
|
-
# self.attributes['default_source_url'] = el.attributes['default_source_url'] || {}
|
47
|
-
# else
|
48
|
-
# el.source_translations.keys.each do |locale|
|
49
|
-
# ::Mongoid::Fields::I18n.with_locale(locale) do
|
50
|
-
# self.default_source_url = el.source? ? el.source.url : el.default_source_url
|
51
|
-
# end
|
52
|
-
# end
|
53
|
-
# end
|
54
|
-
# end
|
55
|
-
|
56
|
-
# def set_default_content_from(el)
|
57
|
-
# super(el)
|
58
|
-
|
59
|
-
# locale = ::Mongoid::Fields::I18n.locale.to_s
|
60
|
-
|
61
|
-
# # make sure the default_source_url is safely defined
|
62
|
-
# self.attributes['default_source_url'] ||= { locale => nil }
|
63
|
-
|
64
|
-
# if self.attributes['default_source_url'][locale].nil?
|
65
|
-
# self.default_source_url = el.default_source_url
|
66
|
-
# end
|
67
|
-
# end
|
68
|
-
|
69
30
|
def remove_source=(value)
|
70
31
|
self.source_will_change! # notify the page to run the callbacks for that element
|
71
32
|
super
|
72
33
|
end
|
73
34
|
|
74
|
-
|
35
|
+
private
|
75
36
|
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
# "editable_elements.$.default_source_url.#{::Mongoid::Fields::I18n.locale}" => self.source.url
|
81
|
-
# }
|
82
|
-
# }
|
83
|
-
|
84
|
-
# self.page.collection.find(self._selector).update(operations, multi: true)
|
85
|
-
# end
|
86
|
-
# true
|
87
|
-
# end
|
37
|
+
def init_localized_source
|
38
|
+
# FIXME: the source of the element is not correctly set for the first time (certainly because the source is localized)
|
39
|
+
attributes[:source] = {} unless self.persisted?
|
40
|
+
end
|
88
41
|
|
89
42
|
end
|
90
43
|
end
|
@@ -32,59 +32,8 @@ module Locomotive
|
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
-
# def copy_attributes_from(el)
|
36
|
-
# super(el)
|
37
|
-
|
38
|
-
# self.copy_formatting_attributes_from(el)
|
39
|
-
|
40
|
-
# self.attributes['content'] = el.content_translations || {}
|
41
|
-
# self.attributes['default_content'] = el.default_content_translations
|
42
|
-
# end
|
43
|
-
|
44
|
-
# def copy_default_attributes_from(el)
|
45
|
-
# super(el)
|
46
|
-
|
47
|
-
# self.copy_formatting_attributes_from(el)
|
48
|
-
# end
|
49
|
-
|
50
|
-
# def copy_formatting_attributes_from(el)
|
51
|
-
# %w(format rows line_break).each do |attr|
|
52
|
-
# self.attributes[attr] = el.attributes[attr]
|
53
|
-
# end
|
54
|
-
# end
|
55
|
-
|
56
|
-
# def set_default_content_from(el)
|
57
|
-
# super(el)
|
58
|
-
|
59
|
-
# locale = ::Mongoid::Fields::I18n.locale.to_s
|
60
|
-
|
61
|
-
# if self.default_content? || self.attributes['default_content'][locale].nil?
|
62
|
-
# self.default_content = true
|
63
|
-
|
64
|
-
# self.content_will_change!
|
65
|
-
|
66
|
-
# if self.attributes['content']
|
67
|
-
# self.attributes['content'][locale] = el.content
|
68
|
-
# end
|
69
|
-
# end
|
70
|
-
# end
|
71
|
-
|
72
35
|
protected
|
73
36
|
|
74
|
-
# def propagate_content
|
75
|
-
# if self.content_changed?
|
76
|
-
# operations = {
|
77
|
-
# '$set' => {
|
78
|
-
# "editable_elements.$.content.#{::Mongoid::Fields::I18n.locale}" => self.content,
|
79
|
-
# "editable_elements.$.default_content.#{::Mongoid::Fields::I18n.locale}" => false,
|
80
|
-
# }
|
81
|
-
# }
|
82
|
-
|
83
|
-
# self.page.collection.find(self._selector).update(operations, multi: true)
|
84
|
-
# end
|
85
|
-
# true
|
86
|
-
# end
|
87
|
-
|
88
37
|
def strip_content
|
89
38
|
self.content.strip! unless self.content.blank?
|
90
39
|
end
|
@@ -31,19 +31,21 @@ module Locomotive
|
|
31
31
|
belongs_to :site, class_name: 'Locomotive::Site', validate: false, autosave: false
|
32
32
|
|
33
33
|
## indexes ##
|
34
|
-
index site_id:
|
35
|
-
index
|
36
|
-
index
|
34
|
+
index site_id: 1
|
35
|
+
index site_id: 1, handle: 1
|
36
|
+
index parent_id: 1
|
37
|
+
index site_id: 1, fullpath: 1
|
37
38
|
|
38
39
|
## behaviours ##
|
39
40
|
slugify_from :title
|
40
41
|
|
41
42
|
## callbacks ##
|
42
|
-
|
43
|
-
|
44
|
-
|
43
|
+
before_create :localize_slug
|
44
|
+
before_create :build_fullpath
|
45
|
+
before_update :build_fullpath, unless: :skip_callbacks_on_update
|
46
|
+
before_save :record_current_locale, unless: :skip_callbacks_on_update
|
45
47
|
before_destroy :do_not_remove_index_and_404_pages
|
46
|
-
after_save :update_children
|
48
|
+
after_save :update_children, unless: :skip_callbacks_on_update
|
47
49
|
|
48
50
|
## validations ##
|
49
51
|
validates_presence_of :site, :title, :slug
|
@@ -64,6 +66,8 @@ module Locomotive
|
|
64
66
|
|
65
67
|
delegate :fullpath, to: :parent, prefix: true
|
66
68
|
|
69
|
+
attr_accessor :skip_callbacks_on_update
|
70
|
+
|
67
71
|
## methods ##
|
68
72
|
|
69
73
|
def index?
|
@@ -109,28 +113,38 @@ module Locomotive
|
|
109
113
|
def do_not_remove_index_and_404_pages
|
110
114
|
return if self.site.nil? || self.site.destroyed?
|
111
115
|
|
112
|
-
if self.
|
116
|
+
if self.index_or_not_found?
|
113
117
|
self.errors[:base] << ::I18n.t('errors.messages.protected_page')
|
114
118
|
end
|
115
119
|
|
116
120
|
self.errors.empty?
|
117
121
|
end
|
118
122
|
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
123
|
+
# The slug of a new page should be the same in all
|
124
|
+
# the locales of a site.
|
125
|
+
def localize_slug
|
126
|
+
_slug = self.slug
|
127
|
+
|
128
|
+
self.site.each_locale(false) do |locale, _|
|
129
|
+
self.slug = _slug
|
124
130
|
end
|
125
131
|
end
|
126
132
|
|
127
133
|
def build_fullpath
|
128
|
-
if self.
|
134
|
+
if self.index_or_not_found?
|
129
135
|
self.fullpath = self.slug
|
130
136
|
else
|
131
|
-
|
132
|
-
|
133
|
-
self.
|
137
|
+
_parent = self.parent # do not hit the database more than once
|
138
|
+
|
139
|
+
self.site.each_locale do |locale, current|
|
140
|
+
# if the page has been already persisted, we don't need to update the fullpath
|
141
|
+
# in the locales other than in the current one.
|
142
|
+
next if self.persisted? && !current
|
143
|
+
|
144
|
+
parent_fullpath = self.depth == 1 ? nil : _parent.try(:fullpath)
|
145
|
+
|
146
|
+
self.fullpath = [parent_fullpath, self.slug].compact.join('/')
|
147
|
+
end
|
134
148
|
end
|
135
149
|
end
|
136
150
|
|