pageflow 17.0.5 → 17.1.0
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/CHANGELOG.md +362 -35
- data/README.md +0 -1
- data/admins/pageflow/accounts.rb +16 -14
- data/admins/pageflow/entry.rb +68 -20
- data/admins/pageflow/entry_templates.rb +10 -9
- data/admins/pageflow/folder.rb +1 -1
- data/admins/pageflow/membership.rb +4 -4
- data/admins/pageflow/revisions.rb +5 -5
- data/admins/pageflow/site_root_entry.rb +64 -0
- data/admins/pageflow/sites.rb +12 -3
- data/admins/pageflow/translations.rb +75 -0
- data/admins/pageflow/user.rb +21 -35
- data/app/assets/javascripts/pageflow/admin/entries.js +30 -5
- data/app/assets/javascripts/pageflow/dist/ui.js +2865 -257
- data/app/assets/stylesheets/pageflow/admin/entries/index_table.scss +2 -1
- data/app/assets/stylesheets/pageflow/admin/permalink_input.scss +2 -1
- data/app/assets/stylesheets/pageflow/editor/background_positioning.scss +6 -0
- data/app/assets/stylesheets/pageflow/editor/base.scss +2 -0
- data/app/assets/stylesheets/pageflow/editor/drop_down_button.scss +7 -1
- data/app/assets/stylesheets/pageflow/editor/file_meta_data.scss +5 -1
- data/app/assets/stylesheets/pageflow/editor/files.scss +28 -16
- data/app/assets/stylesheets/pageflow/editor/filtered_files.scss +24 -0
- data/app/assets/stylesheets/pageflow/editor/info_box.scss +11 -3
- data/app/assets/stylesheets/pageflow/editor/list.scss +6 -4
- data/app/assets/stylesheets/pageflow/editor/list_search_field.scss +52 -0
- data/app/assets/stylesheets/pageflow/editor/outline.scss +0 -13
- data/app/assets/stylesheets/pageflow/editor/select_button.scss +1 -1
- data/app/assets/stylesheets/pageflow/editor/sortable.scss +12 -0
- data/app/assets/stylesheets/pageflow/mixins/buttons.scss +4 -4
- data/app/assets/stylesheets/pageflow/ui/forms.scss +4 -0
- data/app/assets/stylesheets/pageflow/ui/input/color_input.scss +8 -0
- data/app/assets/stylesheets/pageflow/ui/input/file_name_input.scss +37 -0
- data/app/assets/stylesheets/pageflow/ui/properties.scss +5 -0
- data/app/assets/stylesheets/pageflow/ui.scss +1 -0
- data/app/controllers/concerns/pageflow/controller_delegation.rb +1 -1
- data/app/controllers/concerns/pageflow/edit_locking.rb +17 -10
- data/app/controllers/concerns/pageflow/entry_password_protection.rb +1 -0
- data/app/controllers/concerns/pageflow/public_https_mode.rb +2 -1
- data/app/controllers/concerns/pageflow/quota_verification.rb +5 -4
- data/app/controllers/pageflow/admin/initial_passwords_controller.rb +1 -0
- data/app/controllers/pageflow/application_controller.rb +19 -19
- data/app/controllers/pageflow/chapters_controller.rb +3 -2
- data/app/controllers/pageflow/edit_locks_controller.rb +3 -2
- data/app/controllers/pageflow/editor/encoding_confirmations_controller.rb +1 -0
- data/app/controllers/pageflow/editor/entries_controller.rb +2 -1
- data/app/controllers/pageflow/editor/entry_publications_controller.rb +1 -0
- data/app/controllers/pageflow/editor/file_import_controller.rb +3 -3
- data/app/controllers/pageflow/editor/files_controller.rb +7 -6
- data/app/controllers/pageflow/editor/widgets_controller.rb +1 -0
- data/app/controllers/pageflow/entries_controller.rb +77 -17
- data/app/controllers/pageflow/feeds_controller.rb +1 -1
- data/app/controllers/pageflow/files_controller.rb +1 -0
- data/app/controllers/pageflow/pages_controller.rb +4 -2
- data/app/controllers/pageflow/revisions_controller.rb +2 -1
- data/app/controllers/pageflow/sitemaps_controller.rb +1 -1
- data/app/controllers/pageflow/storylines_controller.rb +1 -0
- data/app/helpers/pageflow/admin/cutoff_modes_helper.rb +12 -0
- data/app/helpers/pageflow/admin/entries_helper.rb +1 -1
- data/app/helpers/pageflow/admin/entry_translations_helper.rb +18 -0
- data/app/helpers/pageflow/admin/features_helper.rb +1 -1
- data/app/helpers/pageflow/admin/form_helper.rb +3 -3
- data/app/helpers/pageflow/admin/locales_helper.rb +10 -2
- data/app/helpers/pageflow/admin/memberships_helper.rb +32 -32
- data/app/helpers/pageflow/admin/revisions_helper.rb +1 -1
- data/app/helpers/pageflow/admin/sites_helper.rb +22 -0
- data/app/helpers/pageflow/admin/users_helper.rb +7 -5
- data/app/helpers/pageflow/admin/widgets_helper.rb +3 -3
- data/app/helpers/pageflow/asset_urls_helper.rb +1 -1
- data/app/helpers/pageflow/audio_files_helper.rb +5 -2
- data/app/helpers/pageflow/background_image_helper.rb +7 -6
- data/app/helpers/pageflow/common_entry_seed_helper.rb +2 -4
- data/app/helpers/pageflow/editor/config_helper.rb +1 -1
- data/app/helpers/pageflow/editor/files_helper.rb +1 -1
- data/app/helpers/pageflow/embed_code_helper.rb +3 -3
- data/app/helpers/pageflow/entries_helper.rb +58 -34
- data/app/helpers/pageflow/entry_json_seed_helper.rb +3 -2
- data/app/helpers/pageflow/feeds_helper.rb +2 -2
- data/app/helpers/pageflow/file_background_images_helper.rb +2 -2
- data/app/helpers/pageflow/file_thumbnails_helper.rb +4 -3
- data/app/helpers/pageflow/files_helper.rb +5 -4
- data/app/helpers/pageflow/folders_helper.rb +8 -5
- data/app/helpers/pageflow/help_entries_helper.rb +2 -2
- data/app/helpers/pageflow/hreflang_links_helper.rb +37 -0
- data/app/helpers/pageflow/info_box_helper.rb +7 -11
- data/app/helpers/pageflow/media_query_helper.rb +3 -3
- data/app/helpers/pageflow/navigation_bar_helper.rb +1 -1
- data/app/helpers/pageflow/overview_helper.rb +1 -1
- data/app/helpers/pageflow/page_types_helper.rb +5 -5
- data/app/helpers/pageflow/pages_helper.rb +29 -15
- data/app/helpers/pageflow/public_i18n_helper.rb +1 -1
- data/app/helpers/pageflow/quota_helper.rb +4 -4
- data/app/helpers/pageflow/render_json_helper.rb +6 -3
- data/app/helpers/pageflow/revision_file_helper.rb +2 -1
- data/app/helpers/pageflow/sites_helper.rb +3 -3
- data/app/helpers/pageflow/social_share_helper.rb +24 -10
- data/app/helpers/pageflow/social_share_links_helper.rb +12 -9
- data/app/helpers/pageflow/structured_data_helper.rb +1 -1
- data/app/helpers/pageflow/stub_page_configuration.rb +7 -3
- data/app/helpers/pageflow/text_direction_helper.rb +1 -1
- data/app/helpers/pageflow/themes_helper.rb +1 -1
- data/app/helpers/pageflow/video_files_helper.rb +29 -13
- data/app/helpers/pageflow/widgets_helper.rb +7 -6
- data/app/inputs/pageflow_permalink_input.rb +3 -2
- data/app/jobs/pageflow/application_job.rb +1 -0
- data/app/jobs/pageflow/entry_export_import/upload_and_publish_file_job.rb +1 -1
- data/app/jobs/pageflow/poll_meta_data_from_zencoder_job.rb +1 -0
- data/app/jobs/pageflow/poll_zencoder_job.rb +3 -2
- data/app/jobs/pageflow/process_image_or_text_track_job.rb +1 -0
- data/app/jobs/pageflow/prune_auto_snapshots_job.rb +1 -0
- data/app/jobs/pageflow/request_meta_data_from_zencoder_job.rb +1 -0
- data/app/jobs/pageflow/submit_file_to_zencoder_job.rb +1 -0
- data/app/mailers/pageflow/user_mailer.rb +1 -0
- data/app/models/concerns/pageflow/auto_generated_perma_id.rb +13 -1
- data/app/models/concerns/pageflow/entry_publication_states.rb +7 -3
- data/app/models/concerns/pageflow/feature_target.rb +8 -4
- data/app/models/concerns/pageflow/output_source.rb +3 -3
- data/app/models/concerns/pageflow/permalinkable.rb +2 -1
- data/app/models/concerns/pageflow/reusable_file.rb +23 -23
- data/app/models/concerns/pageflow/serialization_blacklist.rb +1 -1
- data/app/models/concerns/pageflow/suspendable.rb +5 -3
- data/app/models/concerns/pageflow/theme_referencer.rb +1 -1
- data/app/models/concerns/pageflow/translatable.rb +62 -0
- data/app/models/concerns/pageflow/uploadable_file.rb +6 -6
- data/app/models/pageflow/account.rb +6 -5
- data/app/models/pageflow/account_member_query.rb +1 -1
- data/app/models/pageflow/account_role_query.rb +1 -1
- data/app/models/pageflow/application_query.rb +1 -1
- data/app/models/pageflow/application_record.rb +1 -1
- data/app/models/pageflow/audio_file.rb +4 -4
- data/app/models/pageflow/audio_file_url_templates.rb +1 -1
- data/app/models/pageflow/authentication_token.rb +2 -2
- data/app/models/pageflow/chapter.rb +6 -1
- data/app/models/pageflow/chapter_scaffold.rb +2 -4
- data/app/models/pageflow/cname_site_request_scope.rb +1 -1
- data/app/models/pageflow/customized_theme.rb +6 -6
- data/app/models/pageflow/draft_entry.rb +37 -9
- data/app/models/pageflow/edit_lock.rb +19 -21
- data/app/models/pageflow/encoding_confirmation.rb +2 -2
- data/app/models/pageflow/entries_feed.rb +2 -2
- data/app/models/pageflow/entry.rb +44 -30
- data/app/models/pageflow/entry_at_revision.rb +5 -1
- data/app/models/pageflow/entry_duplicate.rb +8 -5
- data/app/models/pageflow/entry_publication.rb +2 -2
- data/app/models/pageflow/entry_role_query.rb +4 -4
- data/app/models/pageflow/entry_template.rb +4 -4
- data/app/models/pageflow/entry_title_or_account_name_query.rb +2 -2
- data/app/models/pageflow/entry_translation_group.rb +42 -0
- data/app/models/pageflow/file_reuse.rb +2 -2
- data/app/models/pageflow/file_usage.rb +10 -3
- data/app/models/pageflow/folder.rb +2 -2
- data/app/models/pageflow/home_button.rb +7 -7
- data/app/models/pageflow/image_file.rb +20 -5
- data/app/models/pageflow/image_file_url_templates.rb +1 -1
- data/app/models/pageflow/invitation_form.rb +2 -1
- data/app/models/pageflow/managed_user_query.rb +1 -1
- data/app/models/pageflow/membership.rb +5 -5
- data/app/models/pageflow/nested_revision_component_copy.rb +263 -0
- data/app/models/pageflow/null_user.rb +1 -1
- data/app/models/pageflow/overview_button.rb +1 -1
- data/app/models/pageflow/page.rb +7 -3
- data/app/models/pageflow/permalink.rb +23 -2
- data/app/models/pageflow/permalink_directory.rb +7 -0
- data/app/models/pageflow/permalink_redirect.rb +7 -0
- data/app/models/pageflow/positioned_file.rb +5 -5
- data/app/models/pageflow/potential_entry_translations.rb +55 -0
- data/app/models/pageflow/potential_memberships.rb +5 -4
- data/app/models/pageflow/published_entry.rb +62 -11
- data/app/models/pageflow/revision.rb +24 -15
- data/app/models/pageflow/roles.rb +14 -18
- data/app/models/pageflow/site.rb +36 -3
- data/app/models/pageflow/site_root_entry_form.rb +27 -0
- data/app/models/pageflow/sitemaps.rb +10 -1
- data/app/models/pageflow/storyline.rb +5 -2
- data/app/models/pageflow/storyline_scaffold.rb +1 -1
- data/app/models/pageflow/text_track_file.rb +1 -1
- data/app/models/pageflow/text_track_file_url_templates.rb +1 -1
- data/app/models/pageflow/theme_customization_file.rb +3 -2
- data/app/models/pageflow/thumbnail_file_resolver.rb +1 -1
- data/app/models/pageflow/url_template.rb +1 -1
- data/app/models/pageflow/used_file.rb +7 -3
- data/app/models/pageflow/user_name_query.rb +2 -2
- data/app/models/pageflow/video_file.rb +22 -15
- data/app/models/pageflow/video_file_url_templates.rb +6 -4
- data/app/models/pageflow/widget.rb +4 -3
- data/app/models/pageflow/with_file_usage_extension.rb +1 -1
- data/app/models/pageflow/zencoder_attachment.rb +8 -8
- data/app/policies/pageflow/account_policy.rb +3 -1
- data/app/policies/pageflow/admin/admin_only_tab_policy.rb +1 -0
- data/app/policies/pageflow/admin/entry_tab_policy.rb +1 -0
- data/app/policies/pageflow/application_policy.rb +2 -0
- data/app/policies/pageflow/entry_policy.rb +7 -1
- data/app/policies/pageflow/entry_template_policy.rb +2 -1
- data/app/policies/pageflow/file_policy.rb +4 -7
- data/app/policies/pageflow/folder_policy.rb +18 -8
- data/app/policies/pageflow/membership_policy.rb +6 -4
- data/app/policies/pageflow/site_policy.rb +10 -3
- data/app/policies/pageflow/user_policy.rb +6 -4
- data/app/state_machines/pageflow/image_and_text_track_processing_state_machine.rb +3 -2
- data/app/state_machines/pageflow/media_encoding_state_machine.rb +5 -4
- data/app/views/admin/accounts/_entry_template_details.html.arb +2 -2
- data/app/views/admin/entries/_attributes_table.html.arb +6 -5
- data/app/views/admin/entries/_form.html.erb +2 -1
- data/app/views/admin/entries/_permalink_inputs.html.erb +9 -2
- data/app/views/admin/entry_templates/_form.html.erb +1 -3
- data/app/views/admin/site_root_entry/choose.html.erb +19 -0
- data/app/views/admin/sites/_fields.html.erb +14 -1
- data/app/views/admin/translations/_form.html.erb +31 -0
- data/app/views/admin/users/_attributes_table.html.arb +13 -0
- data/app/views/components/pageflow/admin/add_membership_button.rb +13 -12
- data/app/views/components/pageflow/admin/custom_scopes_renderer.rb +1 -0
- data/app/views/components/pageflow/admin/embed_code_field.rb +1 -0
- data/app/views/components/pageflow/admin/embedded_index_table.rb +9 -10
- data/app/views/components/pageflow/admin/entries_tab.rb +1 -0
- data/app/views/components/pageflow/admin/entry_publication_state_indicator.rb +6 -5
- data/app/views/components/pageflow/admin/entry_templates_tab.rb +2 -1
- data/app/views/components/pageflow/admin/entry_translations_tab.rb +102 -0
- data/app/views/components/pageflow/admin/entry_user_badge_list.rb +1 -0
- data/app/views/components/pageflow/admin/extensible_attributes_table.rb +9 -8
- data/app/views/components/pageflow/admin/features_tab.rb +1 -0
- data/app/views/components/pageflow/admin/grouped_folder_list.rb +1 -0
- data/app/views/components/pageflow/admin/icon_link_to.rb +1 -0
- data/app/views/components/pageflow/admin/members_tab.rb +4 -3
- data/app/views/components/pageflow/admin/membership_role_with_tooltip.rb +3 -2
- data/app/views/components/pageflow/admin/revisions_tab.rb +14 -10
- data/app/views/components/pageflow/admin/sites_tab.rb +1 -0
- data/app/views/components/pageflow/admin/tabs_view.rb +1 -0
- data/app/views/components/pageflow/admin/timestamp.rb +6 -5
- data/app/views/components/pageflow/admin/user_account_badge_list.rb +2 -3
- data/app/views/components/pageflow/admin/user_accounts_tab.rb +1 -0
- data/app/views/components/pageflow/admin/user_entries_tab.rb +1 -0
- data/app/views/components/pageflow/admin/users_tab.rb +1 -0
- data/app/views/pageflow/editor/config/_seeds.json.jbuilder +1 -1
- data/app/views/pageflow/editor/entries/index.json.jbuilder +1 -1
- data/app/views/pageflow/editor/entries/show.json.jbuilder +1 -1
- data/app/views/pageflow/editor/entry_publications/check.json.jbuilder +2 -2
- data/app/views/pageflow/editor/files/_file.json.jbuilder +5 -13
- data/app/views/pageflow/editor/files/create.json.jbuilder +1 -1
- data/app/views/pageflow/editor/files/index.json.jbuilder +1 -1
- data/app/views/pageflow/editor/sites/_site.json.jbuilder +1 -0
- data/app/views/pageflow/editor/video_files/_video_file.json.jbuilder +1 -3
- data/app/views/pageflow/entries/share_menu/_bluesky_link.html.erb +8 -0
- data/app/views/pageflow/entries/share_menu/_threads_link.html.erb +8 -0
- data/app/views/pageflow/files/_file.json.jbuilder +3 -3
- data/app/views/pageflow/sitemaps/index.xml.builder +9 -1
- data/app/views/pageflow/social_share/_entry_meta_tags.html.erb +1 -1
- data/app/views/pageflow/social_share/_page_meta_tags.html.erb +1 -1
- data/config/initializers/active_admin_patches.rb +3 -6
- data/config/initializers/admin_resource_tabs.rb +3 -0
- data/config/initializers/paperclip.rb +1 -0
- data/config/initializers/symmetric_encryption.rb +1 -1
- data/config/initializers/zencoder.rb +24 -13
- data/config/locales/de.yml +110 -4
- data/config/locales/en.yml +109 -7
- data/config/routes.rb +15 -13
- data/config/spring.rb +2 -1
- data/db/migrate/20140418225525_setup_schema.rb +2 -2
- data/db/migrate/20190306161431_copy_file_attributes_of_failed_uploads.rb +2 -2
- data/db/migrate/20190820152900_drop_accounts_themes.rb +2 -1
- data/db/migrate/20191202145757_create_pageflow_scrolled_sections.rb +11 -11
- data/db/migrate/20191202150657_create_pageflow_scrolled_chapters.rb +1 -1
- data/db/migrate/20191202154723_create_pageflow_scrolled_content_elements.rb +9 -9
- data/db/migrate/20191219143450_add_position_to_content_elements.rb +2 -1
- data/db/migrate/20200117133200_change_revision_appearance_option_default_and_null.rb +2 -1
- data/db/migrate/20200122115400_create_pageflow_entry_templates.rb +25 -25
- data/db/migrate/20200206134400_convert_legacy_scrolled_content_element_types.rb +3 -3
- data/db/migrate/20221215120856_associate_entry_templates_with_sites.rb +2 -2
- data/db/migrate/20230120092923_create_other_files.rb +2 -1
- data/db/migrate/20230419083307_create_pageflow_entry_translation_group.rb +9 -0
- data/db/migrate/20240612110434_add_cutoff_mode_name_to_sites.rb +5 -0
- data/db/migrate/20240918084059_create_pageflow_permalink_redirects.rb +14 -0
- data/db/migrate/20250508172234_ensure_scrolled_entries_have_main_storyline.rb +14 -0
- data/db/migrate/20250617090048_add_custom404_entry_to_sites.rb +5 -0
- data/db/migrate/20250617100000_add_perma_id_counter_to_entries.rb +28 -0
- data/db/migrate/20250722174123_add_perma_id_to_chapters.rb +10 -0
- data/db/migrate/20250725080603_add_perma_id_indexes_to_revision_components.rb +13 -0
- data/db/migrate/20250726000000_add_display_name_to_file_usages.rb +5 -0
- data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/editor.js +3912 -1486
- data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/frontend.js +468 -1161
- data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/react-client.js +28125 -22
- data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/react-server.js +26589 -19
- data/entry_types/paged/app/controllers/pageflow_paged/entries_controller.rb +1 -0
- data/entry_types/paged/app/helpers/pageflow_paged/page_background_asset_helper.rb +1 -1
- data/entry_types/paged/app/helpers/pageflow_paged/third_party_embed_consent_helper.rb +7 -7
- data/entry_types/paged/app/views/pageflow_paged/editor/entries/_seed.json.jbuilder +1 -0
- data/entry_types/paged/app/views/pageflow_paged/entries/show.html.erb +1 -0
- data/entry_types/paged/lib/pageflow_paged/plugin.rb +4 -0
- data/entry_types/paged/lib/pageflow_paged/react/page_type.rb +1 -1
- data/entry_types/paged/lib/pageflow_paged/react/widget_type.rb +3 -3
- data/entry_types/paged/lib/pageflow_paged.rb +1 -1
- data/entry_types/scrolled/app/controllers/pageflow_scrolled/editor/chapters_controller.rb +5 -3
- data/entry_types/scrolled/app/controllers/pageflow_scrolled/editor/content_elements_controller.rb +2 -2
- data/entry_types/scrolled/app/controllers/pageflow_scrolled/editor/sections_controller.rb +2 -2
- data/entry_types/scrolled/app/controllers/pageflow_scrolled/entries_controller.rb +2 -1
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/cache_helper.rb +2 -2
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/editor/entry_json_seed_helper.rb +1 -0
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/editor/seed_html_helper.rb +2 -1
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/entry_json_seed_helper.rb +60 -6
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/packs_helper.rb +16 -2
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/react_server_side_rendering_helper.rb +21 -23
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/themes_helper.rb +16 -1
- data/entry_types/scrolled/app/models/pageflow_scrolled/chapter.rb +15 -14
- data/entry_types/scrolled/app/models/pageflow_scrolled/content_element.rb +12 -0
- data/entry_types/scrolled/app/models/pageflow_scrolled/section.rb +12 -1
- data/entry_types/scrolled/app/models/pageflow_scrolled/storyline.rb +19 -1
- data/entry_types/scrolled/app/views/pageflow_scrolled/editor/entries/_head.html.erb +1 -0
- data/entry_types/scrolled/app/views/pageflow_scrolled/editor/sections/_section_with_content_elements.json.jbuilder +2 -2
- data/entry_types/scrolled/app/views/pageflow_scrolled/entries/show.html.erb +2 -0
- data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_entry.json.jbuilder +17 -9
- data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_entry_translations.json.jbuilder +14 -0
- data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_theme.json.jbuilder +25 -5
- data/entry_types/scrolled/app/views/pageflow_scrolled/storylines/_storyline.json.jbuilder +7 -0
- data/entry_types/scrolled/config/locales/de.yml +614 -45
- data/entry_types/scrolled/config/locales/en.yml +586 -47
- data/entry_types/scrolled/config/routes.rb +18 -8
- data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/install_generator.rb +11 -11
- data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/logoDarkVariantDesktop.svg +56 -0
- data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/logoDarkVariantMobile.svg +22 -0
- data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/themes_plugin.rb.tt +26 -11
- data/entry_types/scrolled/lib/pageflow_scrolled/additional_packs.rb +27 -8
- data/entry_types/scrolled/lib/pageflow_scrolled/additional_seed_data.rb +1 -1
- data/entry_types/scrolled/lib/pageflow_scrolled/additional_theme_assets.rb +27 -0
- data/entry_types/scrolled/lib/pageflow_scrolled/configuration.rb +16 -4
- data/entry_types/scrolled/lib/pageflow_scrolled/content_element_consent_vendors.rb +1 -1
- data/entry_types/scrolled/lib/pageflow_scrolled/plugin.rb +24 -4
- data/entry_types/scrolled/lib/pageflow_scrolled/seeds.rb +24 -22
- data/entry_types/scrolled/lib/pageflow_scrolled.rb +1 -1
- data/entry_types/scrolled/lib/tasks/pageflow_scrolled/storybook.rake +6 -5
- data/entry_types/scrolled/package/config/webpack.js +22 -0
- data/entry_types/scrolled/package/contentElements/hotspots-frontend.css +1 -0
- data/entry_types/scrolled/package/contentElements/hotspots-frontend.js +1529 -0
- data/entry_types/scrolled/package/contentElements/tikTokEmbed-frontend.css +1 -0
- data/entry_types/scrolled/package/contentElements/tikTokEmbed-frontend.js +59 -0
- data/entry_types/scrolled/package/contentElements-editor.js +2075 -321
- data/entry_types/scrolled/package/contentElements-frontend.css +1 -1
- data/entry_types/scrolled/package/contentElements-frontend.js +1019 -643
- data/entry_types/scrolled/package/editor.js +2086 -1091
- data/entry_types/scrolled/package/frontend/{EditableInlineText.module-ebd22921.js → FloatingPortalRootProvider-51914be7.js} +1200 -1258
- data/entry_types/scrolled/package/frontend/{PhonePlatformContext-4ec6b2de.js → PhonePlatformContext-9f76033e.js} +7 -8
- data/entry_types/scrolled/package/frontend/ThemeIcon-81f2f066.js +1932 -0
- data/entry_types/scrolled/package/frontend/ToggleFullscreenCornerButton-788e9cdb.js +39 -0
- data/entry_types/scrolled/package/frontend/{Viewer-1bb5597c.js → Viewer-0345ce57.js} +36 -63
- data/entry_types/scrolled/package/frontend/{Viewer-1ecf3375.js → Viewer-cdc549cc.js} +15 -22
- data/entry_types/scrolled/package/frontend/{Wavesurfer-7d9cf1b7.js → Wavesurfer-1cdc3925.js} +54 -74
- data/entry_types/scrolled/package/frontend/{components-024a9893.js → components-96660ffd.js} +1791 -841
- data/entry_types/scrolled/package/frontend/{index-11f32f10.js → index-eb670c2f.js} +11 -18
- data/entry_types/scrolled/package/frontend/index.css +1 -1
- data/entry_types/scrolled/package/frontend/index.js +517 -903
- data/entry_types/scrolled/package/frontend/{createSuper-d0f30da3.js → inherits-539844a6.js} +40 -56
- data/entry_types/scrolled/package/frontend/{useContentElementEditorState-4f4c3cf6.js → useContentElementEditorState-77fe6c79.js} +7 -8
- data/entry_types/scrolled/package/frontend/usePhonePlatform-c2ba875d.js +8 -0
- data/entry_types/scrolled/package/frontend-server.js +0 -1
- data/entry_types/scrolled/package/package.json +18 -10
- data/entry_types/scrolled/package/testHelpers.js +306 -70
- data/entry_types/scrolled/package/values/widgets.module.css +18 -0
- data/entry_types/scrolled/package/widgets/consentBar.css +1 -1
- data/entry_types/scrolled/package/widgets/consentBar.js +47 -66
- data/entry_types/scrolled/package/widgets/defaultNavigation.css +2 -2
- data/entry_types/scrolled/package/widgets/defaultNavigation.js +177 -207
- data/entry_types/scrolled/package/widgets/excursionDialog.css +1 -0
- data/entry_types/scrolled/package/widgets/excursionDialog.js +109 -0
- data/entry_types/scrolled/package/widgets/excursionSheet.css +1 -0
- data/entry_types/scrolled/package/widgets/excursionSheet.js +262 -0
- data/entry_types/scrolled/package/widgets/iconInlineFileRights.css +1 -1
- data/entry_types/scrolled/package/widgets/iconInlineFileRights.js +6 -9
- data/entry_types/scrolled/package/widgets/iconScrollIndicator.css +1 -0
- data/entry_types/scrolled/package/widgets/iconScrollIndicator.js +48 -0
- data/entry_types/scrolled/package/widgets/mainStorylineSheet.css +1 -0
- data/entry_types/scrolled/package/widgets/mainStorylineSheet.js +144 -0
- data/entry_types/scrolled/package/widgets/textInlineFileRights.css +1 -1
- data/entry_types/scrolled/package/widgets/textInlineFileRights.js +26 -9
- data/entry_types/scrolled/package/widgets-server.js +1 -0
- data/entry_types/scrolled/spec/factories/chapters.rb +14 -1
- data/entry_types/scrolled/spec/factories/content_elements.rb +1 -1
- data/lib/generators/pageflow/active_admin_initializer/active_admin_initializer_generator.rb +5 -3
- data/lib/generators/pageflow/assets/assets_generator.rb +7 -5
- data/lib/generators/pageflow/cancan/cancan_generator.rb +2 -1
- data/lib/generators/pageflow/cancan/templates/ability.rb +1 -1
- data/lib/generators/pageflow/error_pages/error_pages_generator.rb +2 -1
- data/lib/generators/pageflow/initializer/initializer_generator.rb +3 -2
- data/lib/generators/pageflow/install/install_generator.rb +2 -2
- data/lib/generators/pageflow/procfile/procfile_generator.rb +2 -1
- data/lib/generators/pageflow/resque/resque_generator.rb +6 -4
- data/lib/generators/pageflow/resque/templates/resque.rake +1 -1
- data/lib/generators/pageflow/routes/routes_generator.rb +4 -2
- data/lib/generators/pageflow/seeds/seeds_generator.rb +3 -2
- data/lib/generators/pageflow/seeds/templates/seeds.rb +6 -6
- data/lib/generators/pageflow/theme/theme_generator.rb +2 -1
- data/lib/generators/pageflow/user/user_generator.rb +2 -1
- data/lib/pageflow/ability_mixin.rb +25 -15
- data/lib/pageflow/active_admin_patches/views/attributes_table.rb +1 -0
- data/lib/pageflow/active_admin_patches/views/pages/base.rb +3 -2
- data/lib/pageflow/active_admin_patches/views/table_for.rb +1 -0
- data/lib/pageflow/additional_headers.rb +27 -0
- data/lib/pageflow/admin/attributes_table_rows.rb +3 -3
- data/lib/pageflow/admin/tabs.rb +1 -1
- data/lib/pageflow/built_in_file_type.rb +1 -1
- data/lib/pageflow/built_in_page_types_plugin.rb +1 -1
- data/lib/pageflow/built_in_widget_type.rb +2 -2
- data/lib/pageflow/built_in_widget_types_plugin.rb +2 -1
- data/lib/pageflow/configuration.rb +141 -18
- data/lib/pageflow/cutoff_modes.rb +39 -0
- data/lib/pageflow/editor_controller.rb +6 -10
- data/lib/pageflow/engine.rb +4 -5
- data/lib/pageflow/entry_export_import/attachment_files.rb +1 -1
- data/lib/pageflow/entry_export_import/entry_serialization.rb +5 -4
- data/lib/pageflow/entry_export_import/file_mappings.rb +1 -0
- data/lib/pageflow/entry_export_import/revision_serialization/import.rb +1 -1
- data/lib/pageflow/entry_export_import.rb +3 -3
- data/lib/pageflow/entry_types.rb +2 -2
- data/lib/pageflow/feature.rb +1 -1
- data/lib/pageflow/features.rb +4 -6
- data/lib/pageflow/file_importers.rb +4 -4
- data/lib/pageflow/file_type.rb +3 -3
- data/lib/pageflow/file_types.rb +3 -3
- data/lib/pageflow/global_config_api.rb +5 -6
- data/lib/pageflow/help_entries.rb +7 -7
- data/lib/pageflow/help_entry.rb +1 -1
- data/lib/pageflow/hooks.rb +1 -1
- data/lib/pageflow/nested_revision_component.rb +9 -27
- data/lib/pageflow/news_item_api.rb +1 -1
- data/lib/pageflow/page_type.rb +2 -3
- data/lib/pageflow/page_types.rb +3 -3
- data/lib/pageflow/paperclip_interpolations/support.rb +1 -1
- data/lib/pageflow/paperclip_processors/vtt.rb +1 -0
- data/lib/pageflow/paperclip_processors/webp.rb +2 -2
- data/lib/pageflow/partial_editor_fragment_renderer.rb +2 -2
- data/lib/pageflow/plugin.rb +1 -2
- data/lib/pageflow/quota.rb +9 -5
- data/lib/pageflow/quotas.rb +1 -1
- data/lib/pageflow/rails_version.rb +1 -0
- data/lib/pageflow/react.rb +1 -1
- data/lib/pageflow/revision_component.rb +8 -40
- data/lib/pageflow/revision_components.rb +16 -6
- data/lib/pageflow/seeds.rb +12 -16
- data/lib/pageflow/theme.rb +1 -1
- data/lib/pageflow/theme_customizations.rb +10 -10
- data/lib/pageflow/themes.rb +3 -3
- data/lib/pageflow/user_mixin.rb +6 -6
- data/lib/pageflow/version.rb +1 -1
- data/lib/pageflow/widget_type.rb +4 -4
- data/lib/pageflow/widget_types.rb +9 -9
- data/lib/pageflow/zencoder_api.rb +32 -42
- data/lib/pageflow/zencoder_audio_output_definition.rb +14 -13
- data/lib/pageflow/zencoder_meta_data_output_definition.rb +3 -2
- data/lib/pageflow/zencoder_output_definition.rb +16 -14
- data/lib/pageflow/zencoder_video_output_definition.rb +140 -88
- data/lib/pageflow.rb +7 -2
- data/lib/tasks/pageflow_tasks.rake +1 -1
- data/package/editor.js +954 -868
- data/package/frontend.js +113 -387
- data/package/package.json +2 -1
- data/package/testHelpers.js +10 -56
- data/package/ui.js +209 -251
- data/spec/factories/accounts.rb +37 -22
- data/spec/factories/audio_files.rb +2 -2
- data/spec/factories/authentication_tokens.rb +4 -4
- data/spec/factories/chapters.rb +4 -4
- data/spec/factories/draft_entries.rb +14 -6
- data/spec/factories/edit_locks.rb +1 -1
- data/spec/factories/entries.rb +28 -19
- data/spec/factories/entry_translation_groups.rb +6 -0
- data/spec/factories/file_usages.rb +2 -1
- data/spec/factories/folders.rb +1 -1
- data/spec/factories/image_files.rb +2 -2
- data/spec/factories/pages.rb +3 -3
- data/spec/factories/published_entries.rb +26 -8
- data/spec/factories/revisions.rb +1 -1
- data/spec/factories/sites.rb +6 -0
- data/spec/factories/test_multi_attachment_files.rb +1 -1
- data/spec/factories/text_track_files.rb +1 -1
- data/spec/factories/uploadable_files.rb +1 -1
- data/spec/factories/users.rb +6 -6
- data/spec/factories/video_files.rb +2 -2
- data/spec/factories/widgets.rb +1 -1
- data/spec/fixtures/7x15_rotated.jpg +0 -0
- data/vendor/assets/javascripts/wysihtml-toolbar.js +19288 -0
- metadata +98 -45
- data/config/initializers/revision_components.rb +0 -5
- data/config/locales/twitter_to_x.de.yml +0 -6
- data/config/locales/twitter_to_x.en.yml +0 -6
- data/entry_types/scrolled/config/locales/twitter_to_x.de.yml +0 -12
- data/entry_types/scrolled/config/locales/twitter_to_x.en.yml +0 -12
- data/entry_types/scrolled/config/locales/vr_image_projection.de.yml +0 -24
- data/entry_types/scrolled/config/locales/vr_image_projection.en.yml +0 -24
- data/entry_types/scrolled/package/frontend/ToggleFullscreenCornerButton-b79159cc.js +0 -107
- data/entry_types/scrolled/package/frontend/arrowRight-62998af9.js +0 -77
- data/entry_types/scrolled/package/frontend/i18n-ce13a8bf.js +0 -1129
@@ -187,8 +187,8 @@ module Pageflow
|
|
187
187
|
attr_accessor :public_entry_request_scope
|
188
188
|
|
189
189
|
# Either a lambda or an object with a `call` method taking an
|
190
|
-
# {
|
191
|
-
# returning `nil` or a path to redirect to. Can be used in
|
190
|
+
# {PublishedEntry} record and an {ActionDispatch::Request} object
|
191
|
+
# and returning `nil` or a path to redirect to. Can be used in
|
192
192
|
# conjuction with {PrimaryDomainEntryRedirect} to make sure
|
193
193
|
# entries are accessed via their account's configured cname.
|
194
194
|
#
|
@@ -208,18 +208,76 @@ module Pageflow
|
|
208
208
|
# @return [String]
|
209
209
|
attr_accessor :public_entry_cache_control_header
|
210
210
|
|
211
|
+
# Provide additional response headers for published entries.
|
212
|
+
#
|
213
|
+
# @example
|
214
|
+
#
|
215
|
+
# config.additional_public_entry_headers.register(
|
216
|
+
# {'Some' => 'value'}
|
217
|
+
# )
|
218
|
+
#
|
219
|
+
# config.additional_public_entry_headers.register(
|
220
|
+
# lambda do |_entry, request|
|
221
|
+
# {'Some' => request.headers['Other']}
|
222
|
+
# end
|
223
|
+
# )
|
224
|
+
#
|
225
|
+
# @return [AdditionalHeaders]
|
226
|
+
# @since 17.1
|
227
|
+
attr_reader :additional_public_entry_headers
|
228
|
+
|
211
229
|
# Either a lambda or an object with a `call` method taking a
|
212
230
|
# {Site} as paramater and returing a hash of options used to
|
213
|
-
# construct the url of a
|
231
|
+
# construct the url of a site.
|
232
|
+
#
|
233
|
+
# Can be used to change the host of the url under which entries
|
234
|
+
# and feeds are available.
|
235
|
+
#
|
236
|
+
# If the option is not set, public_entry_url_options is used as a
|
237
|
+
# fallback.
|
238
|
+
#
|
239
|
+
# Example:
|
240
|
+
#
|
241
|
+
# config.site_url_options = lambda do |site|
|
242
|
+
# {host: "#{site.account.name}.example.com"}
|
243
|
+
# end
|
244
|
+
attr_accessor :site_url_options
|
245
|
+
|
246
|
+
# Either a hash, a lambda or an object with a `call` method
|
247
|
+
# returing a hash of options used to construct the url of a
|
248
|
+
# published entry.
|
214
249
|
#
|
215
250
|
# Can be used to change the host of the url under which entries
|
216
251
|
# are available.
|
217
252
|
#
|
253
|
+
# If site_url_options is blank, the lambda receives a {Site} as
|
254
|
+
# parameter. This case is only supported for legacy reasons.
|
255
|
+
# Prefer setting site_url_options instead.
|
256
|
+
#
|
218
257
|
# Example:
|
219
258
|
#
|
220
259
|
# config.public_entry_url_options = lambda do |site|
|
221
260
|
# {host: "#{site.account.name}.example.com"}
|
222
261
|
# end
|
262
|
+
#
|
263
|
+
# If both site_url_options and public_entry_url_options are
|
264
|
+
# present, public_entry_url_options is called exclusively to
|
265
|
+
# construct url options for public entries. The lambda then
|
266
|
+
# receives a {PublishedEntry} to allow for entry specific url
|
267
|
+
# options.
|
268
|
+
#
|
269
|
+
# Example:
|
270
|
+
#
|
271
|
+
# config.site_url_options = lambda do |site|
|
272
|
+
# {host: "#{site.account.name}.example.com"}
|
273
|
+
# end
|
274
|
+
#
|
275
|
+
# config.public_entry_url_options = lambda do |entry|
|
276
|
+
# {
|
277
|
+
# host: "#{entry.site.account.name}.example.com",
|
278
|
+
# some_entry_specific_param: entry.id
|
279
|
+
# }
|
280
|
+
# end
|
223
281
|
attr_accessor :public_entry_url_options
|
224
282
|
|
225
283
|
# Either a lambda or an object with a `call` method taking a
|
@@ -227,6 +285,23 @@ module Pageflow
|
|
227
285
|
# construct the embed url of a published entry.
|
228
286
|
attr_accessor :entry_embed_url_options
|
229
287
|
|
288
|
+
# Define strategies to determine whether entries should be cut off
|
289
|
+
# (e.g., to preview paywalled premium content).
|
290
|
+
#
|
291
|
+
# @example
|
292
|
+
#
|
293
|
+
# config.cutoff_modes.register(
|
294
|
+
# 'subscription_header',
|
295
|
+
# lambda do |_entry, request|
|
296
|
+
# # Set by some proxy handling user authentication
|
297
|
+
# request.headers['X-Subscription'] != 'Premium'
|
298
|
+
# end
|
299
|
+
# )
|
300
|
+
#
|
301
|
+
# @return [CutoffModes]
|
302
|
+
# @since 17.1
|
303
|
+
attr_reader :cutoff_modes
|
304
|
+
|
230
305
|
# Either a lambda or an object with a `call` method taking a hash
|
231
306
|
# of theme option overrides and an {EntryAtRevision} and returning
|
232
307
|
# a transformed hash of overrides. Can be used to filter overrides
|
@@ -239,6 +314,14 @@ module Pageflow
|
|
239
314
|
# files based on feature flags and other entry or account traits.
|
240
315
|
attr_accessor :transform_theme_customization_files
|
241
316
|
|
317
|
+
# Where to redirect after creating an entry.
|
318
|
+
#
|
319
|
+
# Possible values:
|
320
|
+
#
|
321
|
+
# `:admin`: Go to entry admin page (default)
|
322
|
+
# `:editor`: Open created entry in editor
|
323
|
+
attr_accessor :after_entry_create_redirect_to
|
324
|
+
|
242
325
|
# Submit video/audio encoding jobs only after the user has
|
243
326
|
# explicitly confirmed in the editor. Can either be set to a
|
244
327
|
# boolean or a lambda that is passed the file and returns a
|
@@ -324,8 +407,7 @@ module Pageflow
|
|
324
407
|
# If you set these to <tt>nil</tt> or <tt>""</tt> the meta tag won't be included.
|
325
408
|
# @since 0.10
|
326
409
|
attr_accessor :default_keywords_meta_tag
|
327
|
-
attr_accessor :default_author_meta_tag
|
328
|
-
attr_accessor :default_publisher_meta_tag
|
410
|
+
attr_accessor :default_author_meta_tag, :default_publisher_meta_tag
|
329
411
|
|
330
412
|
# Share provider defaults.
|
331
413
|
#
|
@@ -381,6 +463,16 @@ module Pageflow
|
|
381
463
|
# @since 12.2
|
382
464
|
attr_accessor :news
|
383
465
|
|
466
|
+
# URL to a form that is used to translate an entry via an external service.
|
467
|
+
#
|
468
|
+
# @example
|
469
|
+
#
|
470
|
+
# config.entry_translator_url = lambda do |entry|
|
471
|
+
# Rails.application.routes.url_helpers.some_custom_route(entry)
|
472
|
+
# end
|
473
|
+
# @since 17.1
|
474
|
+
attr_accessor :entry_translator_url
|
475
|
+
|
384
476
|
def initialize(target_type_name = nil)
|
385
477
|
@target_type_name = target_type_name
|
386
478
|
|
@@ -425,14 +517,16 @@ module Pageflow
|
|
425
517
|
@css_rendered_thumbnail_styles = Defaults::CSS_RENDERED_THUMBNAIL_STYLES.dup
|
426
518
|
|
427
519
|
@site_request_scope = CnameSiteRequestScope.new
|
428
|
-
@public_entry_request_scope =
|
429
|
-
@public_entry_redirect = ->(_entry, _request) {
|
430
|
-
@
|
520
|
+
@public_entry_request_scope = ->(entries, _request) { entries }
|
521
|
+
@public_entry_redirect = ->(_entry, _request) {}
|
522
|
+
@additional_public_entry_headers = AdditionalHeaders.new
|
431
523
|
@entry_embed_url_options = {protocol: 'https'}
|
524
|
+
@cutoff_modes = CutoffModes.new
|
432
525
|
|
433
526
|
@transform_theme_customization_overrides = ->(overrides, _entry) { overrides }
|
434
527
|
@transform_theme_customization_files = ->(files, _entry) { files }
|
435
528
|
|
529
|
+
@after_entry_create_redirect_to = :admin
|
436
530
|
@confirm_encoding_jobs = false
|
437
531
|
@default_published_until_duration_in_months = 12
|
438
532
|
|
@@ -442,7 +536,8 @@ module Pageflow
|
|
442
536
|
|
443
537
|
@available_locales = [:en, :de]
|
444
538
|
@available_public_locales = PublicI18n.available_locales
|
445
|
-
@available_share_providers = [:email, :facebook, :linked_in, :
|
539
|
+
@available_share_providers = [:email, :facebook, :linked_in, :bluesky, :threads, :twitter,
|
540
|
+
:telegram, :whats_app]
|
446
541
|
|
447
542
|
@public_https_mode = :prevent
|
448
543
|
|
@@ -452,7 +547,7 @@ module Pageflow
|
|
452
547
|
|
453
548
|
@default_share_providers = @available_share_providers
|
454
549
|
|
455
|
-
@authorize_user_deletion =
|
550
|
+
@authorize_user_deletion = ->(_user) { true }
|
456
551
|
|
457
552
|
@available_file_licenses = [
|
458
553
|
:cc_by_4, :cc_by_sa_4, :cc_by_nc_4, :cc_by_nc_sa_4, :cc_by_nd_4, :cc_by_nc_nd_4
|
@@ -489,18 +584,26 @@ module Pageflow
|
|
489
584
|
|
490
585
|
# @deprecated Use `config.page_types.register` instead.
|
491
586
|
def register_page_type(page_type)
|
492
|
-
ActiveSupport::Deprecation.warn(
|
587
|
+
ActiveSupport::Deprecation.warn(
|
588
|
+
'Pageflow::Configuration#register_page_type is deprecated. ' \
|
589
|
+
'Use config.page_types.register instead.',
|
590
|
+
caller
|
591
|
+
)
|
493
592
|
page_types.register(page_type)
|
494
593
|
end
|
495
594
|
|
496
595
|
# @deprecated Pageflow now supports direct uploads to S3 via signed post requests.
|
497
596
|
# Please change your forms accordingly.
|
498
597
|
def paperclip_filesystem_root
|
499
|
-
ActiveSupport::Deprecation.warn(
|
598
|
+
ActiveSupport::Deprecation.warn(
|
599
|
+
'Pageflow::Configuration#paperclip_filesystem_root is deprecated.', caller
|
600
|
+
)
|
500
601
|
end
|
501
602
|
|
502
603
|
def paperclip_filesystem_root=(_val)
|
503
|
-
ActiveSupport::Deprecation.warn(
|
604
|
+
ActiveSupport::Deprecation.warn(
|
605
|
+
'Pageflow::Configuration#paperclip_filesystem_root is deprecated.', caller
|
606
|
+
)
|
504
607
|
end
|
505
608
|
|
506
609
|
# Scope configuration to entries of a certain entry type or access
|
@@ -542,11 +645,27 @@ module Pageflow
|
|
542
645
|
end
|
543
646
|
|
544
647
|
# @api private
|
545
|
-
def
|
546
|
-
options =
|
648
|
+
def site_url_options_for(site)
|
649
|
+
options = site_url_options ||
|
650
|
+
public_entry_url_options ||
|
651
|
+
Pageflow::SitesHelper::DEFAULT_SITE_URL_OPTIONS
|
652
|
+
|
547
653
|
options.respond_to?(:call) ? options.call(site) : options
|
548
654
|
end
|
549
655
|
|
656
|
+
# @api private
|
657
|
+
def public_entry_url_options_for(entry)
|
658
|
+
return site_url_options_for(entry.site) unless public_entry_url_options
|
659
|
+
|
660
|
+
options = public_entry_url_options
|
661
|
+
|
662
|
+
if options.respond_to?(:call)
|
663
|
+
options.call(site_url_options ? entry : entry.site)
|
664
|
+
else
|
665
|
+
options
|
666
|
+
end
|
667
|
+
end
|
668
|
+
|
550
669
|
# @api private
|
551
670
|
def enable_features(names)
|
552
671
|
features.enable(names, FeatureLevelConfiguration.new(self))
|
@@ -569,6 +688,10 @@ module Pageflow
|
|
569
688
|
delegate :themes, to: :config
|
570
689
|
delegate :widget_types, to: :config
|
571
690
|
delegate :public_entry_cache_control_header=, to: :config
|
691
|
+
delegate :additional_public_entry_headers, to: :config
|
692
|
+
delegate :cutoff_modes, to: :config
|
693
|
+
delegate :entry_translator_url=, to: :config
|
694
|
+
delegate :public_entry_url_options=, to: :config
|
572
695
|
|
573
696
|
delegate :for_entry_type, to: :config
|
574
697
|
end
|
@@ -580,11 +703,11 @@ module Pageflow
|
|
580
703
|
@entry_type_config = config.get_entry_type_config(entry_type)
|
581
704
|
end
|
582
705
|
|
583
|
-
def method_missing(method, *
|
706
|
+
def method_missing(method, *)
|
584
707
|
if @config.respond_to?(method)
|
585
|
-
@config.send(method, *
|
708
|
+
@config.send(method, *)
|
586
709
|
elsif @entry_type_config.respond_to?(method)
|
587
|
-
@entry_type_config.send(method, *
|
710
|
+
@entry_type_config.send(method, *)
|
588
711
|
else
|
589
712
|
super
|
590
713
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Pageflow
|
2
|
+
# Register strategies to determine whether only the part of an entry
|
3
|
+
# before some cutoff point should be rendered (e.g., to preview
|
4
|
+
# paywalled premium content).
|
5
|
+
# @since 17.1
|
6
|
+
class CutoffModes
|
7
|
+
# @api private
|
8
|
+
def initialize
|
9
|
+
@modes = {}
|
10
|
+
end
|
11
|
+
|
12
|
+
# Register callable to determine whether only the part of an entry
|
13
|
+
# before some cutoff point should be rendered (e.g., to preview
|
14
|
+
# paywalled premium content). Cutoff modes can then be enabled per
|
15
|
+
# site.
|
16
|
+
#
|
17
|
+
# @param name [String]
|
18
|
+
# Referenced in sites.
|
19
|
+
# @param enabled [#call]
|
20
|
+
# Take {EntryAtRevision} and {ActionDispatch::Request} and
|
21
|
+
# return true if the entry shall be cut off.
|
22
|
+
def register(name, enabled)
|
23
|
+
@modes[name.to_s] = Mode.new(name, enabled)
|
24
|
+
end
|
25
|
+
|
26
|
+
# @api private
|
27
|
+
def enabled_for?(entry, request)
|
28
|
+
!!@modes[entry.site.cutoff_mode_name]&.enabled&.call(entry, request)
|
29
|
+
end
|
30
|
+
|
31
|
+
# @api private
|
32
|
+
def names
|
33
|
+
@modes.keys
|
34
|
+
end
|
35
|
+
|
36
|
+
# @api private
|
37
|
+
Mode = Struct.new(:name, :enabled)
|
38
|
+
end
|
39
|
+
end
|
@@ -13,19 +13,15 @@ module Pageflow
|
|
13
13
|
before_action :authenticate_user!
|
14
14
|
|
15
15
|
before_action do
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
head :not_found
|
20
|
-
end
|
16
|
+
@entry = DraftEntry.find(params[:entry_id])
|
17
|
+
rescue ActiveRecord::RecordNotFound
|
18
|
+
head :not_found
|
21
19
|
end
|
22
20
|
|
23
21
|
before_action do
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
head :forbidden
|
28
|
-
end
|
22
|
+
Ability.new(current_user).authorize!(:update, @entry.to_model)
|
23
|
+
rescue CanCan::AccessDenied
|
24
|
+
head :forbidden
|
29
25
|
end
|
30
26
|
|
31
27
|
before_action :verify_edit_lock
|
data/lib/pageflow/engine.rb
CHANGED
@@ -23,7 +23,6 @@ require 'backbone-rails'
|
|
23
23
|
require 'marionette-rails'
|
24
24
|
require 'jquery-fileupload-rails'
|
25
25
|
require 'jquery-minicolors-rails'
|
26
|
-
require 'wysihtml/rails'
|
27
26
|
require 'i18n-js'
|
28
27
|
require 'http_accept_language'
|
29
28
|
require 'pageflow-public-i18n'
|
@@ -35,8 +34,8 @@ require 'symmetric-encryption'
|
|
35
34
|
require 'pageflow/rails_version'
|
36
35
|
|
37
36
|
if Gem::Specification.find_all_by_name('pageflow-react', '>= 0.0').any?
|
38
|
-
|
39
|
-
|
37
|
+
raise('The pageflow-react gem has been merged into the pageflow gem. ' \
|
38
|
+
'See the pageflow changelog for update instructions.')
|
40
39
|
end
|
41
40
|
|
42
41
|
module Pageflow
|
@@ -92,14 +91,14 @@ module Pageflow
|
|
92
91
|
|
93
92
|
# Precompile additional assets.
|
94
93
|
initializer 'pageflow.assets.precompile' do |app|
|
95
|
-
app.config.assets.precompile += %w
|
94
|
+
app.config.assets.precompile += %w[
|
96
95
|
pageflow/application_with_simulated_media_queries.css
|
97
96
|
pageflow/print_view.css
|
98
97
|
pageflow/lt_ie9.js pageflow/lt_ie9.css pageflow/ie9.js pageflow/ie9.css
|
99
98
|
pageflow/vendor.js
|
100
99
|
pageflow/editor/vendor.js
|
101
100
|
video-js.swf vjs.eot vjs.svg vjs.ttf vjs.woff
|
102
|
-
|
101
|
+
]
|
103
102
|
|
104
103
|
app.config.assets.precompile << lambda do |path, _filename|
|
105
104
|
Pageflow.config.themes.any? do |theme|
|
@@ -1,5 +1,6 @@
|
|
1
1
|
module Pageflow
|
2
2
|
module EntryExportImport
|
3
|
+
# @api private
|
3
4
|
module EntrySerialization
|
4
5
|
extend self
|
5
6
|
|
@@ -50,18 +51,18 @@ module Pageflow
|
|
50
51
|
|
51
52
|
def import_draft(entry_data, options, entry, file_mappings)
|
52
53
|
RevisionSerialization.import(entry_data['draft'],
|
53
|
-
entry
|
54
|
+
entry:,
|
54
55
|
creator: options[:creator],
|
55
|
-
file_mappings:
|
56
|
+
file_mappings:)
|
56
57
|
end
|
57
58
|
|
58
59
|
def import_last_publication(entry_data, options, entry, file_mappings)
|
59
60
|
return unless entry_data['last_publication']
|
60
61
|
|
61
62
|
RevisionSerialization.import(entry_data['last_publication'],
|
62
|
-
entry
|
63
|
+
entry:,
|
63
64
|
creator: options[:creator],
|
64
|
-
file_mappings:
|
65
|
+
file_mappings:)
|
65
66
|
end
|
66
67
|
end
|
67
68
|
end
|
@@ -40,7 +40,7 @@ module Pageflow
|
|
40
40
|
revision_attributes['theme_name'] = 'default'
|
41
41
|
end
|
42
42
|
|
43
|
-
entry.revisions.create!(revision_attributes.merge(creator:
|
43
|
+
entry.revisions.create!(revision_attributes.merge(creator:)) do |revision|
|
44
44
|
revision.published_until = Time.now if revision.published?
|
45
45
|
end
|
46
46
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Pageflow
|
2
|
-
module EntryExportImport
|
2
|
+
module EntryExportImport # rubocop:todo Style/Documentation
|
3
3
|
extend self
|
4
4
|
|
5
5
|
def export(entry, archive_file_path)
|
@@ -30,9 +30,9 @@ module Pageflow
|
|
30
30
|
def extract_entry(archive, creator, file_mappings)
|
31
31
|
archive.extract_to_tempfile('entry.json') do |tempfile|
|
32
32
|
EntrySerialization.import(JSON.parse(tempfile.read),
|
33
|
-
creator
|
33
|
+
creator:,
|
34
34
|
account: creator.accounts.first,
|
35
|
-
file_mappings:
|
35
|
+
file_mappings:)
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
data/lib/pageflow/entry_types.rb
CHANGED
data/lib/pageflow/feature.rb
CHANGED
data/lib/pageflow/features.rb
CHANGED
@@ -27,10 +27,8 @@ module Pageflow
|
|
27
27
|
#
|
28
28
|
# @overload register(feature)
|
29
29
|
# @param feature [String]
|
30
|
-
def register(feature, &
|
31
|
-
if feature.is_a?(String)
|
32
|
-
return register(Feature.new(feature, &block))
|
33
|
-
end
|
30
|
+
def register(feature, &)
|
31
|
+
return register(Feature.new(feature, &)) if feature.is_a?(String)
|
34
32
|
|
35
33
|
if @features.key?(feature.name)
|
36
34
|
raise(ArgumentError, "Feature #{feature.name} is already registered.")
|
@@ -85,8 +83,8 @@ module Pageflow
|
|
85
83
|
end
|
86
84
|
end
|
87
85
|
|
88
|
-
def each(&
|
89
|
-
@features.values.each(&
|
86
|
+
def each(&)
|
87
|
+
@features.values.each(&)
|
90
88
|
end
|
91
89
|
end
|
92
90
|
end
|
@@ -16,8 +16,8 @@ module Pageflow
|
|
16
16
|
@file_importers = {}
|
17
17
|
end
|
18
18
|
|
19
|
-
def each(&
|
20
|
-
@file_importers.values.each(&
|
19
|
+
def each(&)
|
20
|
+
@file_importers.values.each(&)
|
21
21
|
end
|
22
22
|
|
23
23
|
def find_by_name!(name)
|
@@ -26,8 +26,8 @@ module Pageflow
|
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
|
-
def fetch_by_name(name, &
|
30
|
-
@file_importers.fetch(name, &
|
29
|
+
def fetch_by_name(name, &)
|
30
|
+
@file_importers.fetch(name, &)
|
31
31
|
end
|
32
32
|
end
|
33
33
|
end
|
data/lib/pageflow/file_type.rb
CHANGED
@@ -123,11 +123,11 @@ module Pageflow
|
|
123
123
|
@css_background_image_class_prefix || model.model_name.singular
|
124
124
|
end
|
125
125
|
|
126
|
-
def css_background_image_urls_for(file, **
|
126
|
+
def css_background_image_urls_for(file, **)
|
127
127
|
if call_arity(css_background_image_urls) == 1
|
128
128
|
css_background_image_urls.call(file)
|
129
129
|
else
|
130
|
-
css_background_image_urls.call(file, **
|
130
|
+
css_background_image_urls.call(file, **)
|
131
131
|
end
|
132
132
|
end
|
133
133
|
|
@@ -137,7 +137,7 @@ module Pageflow
|
|
137
137
|
end
|
138
138
|
|
139
139
|
# @api private
|
140
|
-
|
140
|
+
alias short_name param_key
|
141
141
|
|
142
142
|
# @api private
|
143
143
|
def type_name
|
data/lib/pageflow/file_types.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
module Pageflow
|
2
|
-
class FileTypes
|
2
|
+
class FileTypes # rubocop:todo Style/Documentation
|
3
3
|
include Enumerable
|
4
4
|
|
5
5
|
def initialize
|
@@ -14,10 +14,10 @@ module Pageflow
|
|
14
14
|
@file_types = []
|
15
15
|
end
|
16
16
|
|
17
|
-
def each(&
|
17
|
+
def each(&)
|
18
18
|
first_level_file_types = trigger_lazy_loading_of_file_types
|
19
19
|
lower_level_file_types = search_for_nested_file_types(first_level_file_types)
|
20
|
-
(first_level_file_types + lower_level_file_types).uniq(&:model).each(&
|
20
|
+
(first_level_file_types + lower_level_file_types).uniq(&:model).each(&)
|
21
21
|
end
|
22
22
|
|
23
23
|
def find_by_collection_name!(collection_name)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Pageflow
|
2
|
-
module GlobalConfigApi
|
2
|
+
module GlobalConfigApi # rubocop:todo Style/Documentation
|
3
3
|
# The global configuration.
|
4
4
|
#
|
5
5
|
# Note that all features have been activated for this
|
@@ -11,11 +11,10 @@ module Pageflow
|
|
11
11
|
# @return [Configuration]
|
12
12
|
def config(options = {})
|
13
13
|
unless @config
|
14
|
-
if options[:ignore_not_configured]
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
end
|
14
|
+
return Configuration.new if options[:ignore_not_configured]
|
15
|
+
|
16
|
+
raise('Pageflow has not been configured yet')
|
17
|
+
|
19
18
|
end
|
20
19
|
@config
|
21
20
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Pageflow
|
2
|
-
class HelpEntries
|
2
|
+
class HelpEntries # rubocop:todo Style/Documentation
|
3
3
|
include Enumerable
|
4
4
|
|
5
5
|
def initialize
|
@@ -24,18 +24,18 @@ module Pageflow
|
|
24
24
|
collection = find_collection(options[:parent])
|
25
25
|
|
26
26
|
collection << help_entry
|
27
|
-
collection.sort_by! { |
|
27
|
+
collection.sort_by! { |entry| -entry.priority }
|
28
28
|
end
|
29
29
|
|
30
30
|
# @api private
|
31
31
|
def flat
|
32
|
-
map
|
33
|
-
[
|
34
|
-
|
32
|
+
map { |entry|
|
33
|
+
[entry, entry.children]
|
34
|
+
}.flatten
|
35
35
|
end
|
36
36
|
|
37
|
-
def each(&
|
38
|
-
@help_entries.each(&
|
37
|
+
def each(&)
|
38
|
+
@help_entries.each(&)
|
39
39
|
end
|
40
40
|
|
41
41
|
private
|
data/lib/pageflow/help_entry.rb
CHANGED
data/lib/pageflow/hooks.rb
CHANGED