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
@@ -13,15 +13,6 @@ module Pageflow
|
|
13
13
|
cattr_accessor :nested_revision_component_collection_names, default: []
|
14
14
|
end
|
15
15
|
|
16
|
-
# @api private
|
17
|
-
def copy_nested_revision_component_to(record, reset_perma_ids: false)
|
18
|
-
nested_revision_component_collection_names.each do |collection_name|
|
19
|
-
send(collection_name).each do |nested|
|
20
|
-
nested.copy_to(record.send(collection_name), reset_perma_ids: reset_perma_ids)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
16
|
# Macro methods to declare nested revision components
|
26
17
|
module ClassMethods
|
27
18
|
# Call this macro in the body of a class which includes
|
@@ -39,27 +30,18 @@ module Pageflow
|
|
39
30
|
include Container
|
40
31
|
|
41
32
|
def duplicate
|
42
|
-
|
43
|
-
|
44
|
-
record.save!
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
# @api private
|
49
|
-
def copy_to(collection, reset_perma_ids: false)
|
50
|
-
copy_with(reset_perma_ids: reset_perma_ids) do |record|
|
51
|
-
collection << record
|
52
|
-
end
|
53
|
-
end
|
33
|
+
record = dup
|
34
|
+
record.perma_id = nil
|
54
35
|
|
55
|
-
|
36
|
+
yield record if block_given?
|
56
37
|
|
57
|
-
|
58
|
-
record = dup
|
59
|
-
record.perma_id = nil if reset_perma_ids && record.respond_to?(:perma_id=)
|
38
|
+
record.save!
|
60
39
|
|
61
|
-
|
62
|
-
|
40
|
+
NestedRevisionComponentCopy.new(
|
41
|
+
from: self,
|
42
|
+
to: record,
|
43
|
+
reset_perma_ids: true
|
44
|
+
).perform_for_nested_revision_components
|
63
45
|
|
64
46
|
record
|
65
47
|
end
|
data/lib/pageflow/page_type.rb
CHANGED
@@ -63,7 +63,6 @@ module Pageflow
|
|
63
63
|
[]
|
64
64
|
end
|
65
65
|
|
66
|
-
|
67
66
|
# ActiveRecord models to be copied together with a revision.
|
68
67
|
#
|
69
68
|
# This allows authors of PageTypes to attach models to the Pageflow
|
@@ -217,12 +216,12 @@ module Pageflow
|
|
217
216
|
# }
|
218
217
|
# });
|
219
218
|
#
|
220
|
-
def json_seed_template
|
221
|
-
end
|
219
|
+
def json_seed_template; end
|
222
220
|
|
223
221
|
# Helper method to define the name of a subclassed page type.
|
224
222
|
def self.name(name = nil)
|
225
223
|
return super() unless name
|
224
|
+
|
226
225
|
define_method :name do
|
227
226
|
name
|
228
227
|
end
|
data/lib/pageflow/page_types.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
module Pageflow
|
2
|
-
class PageTypes
|
2
|
+
class PageTypes # rubocop:todo Style/Documentation
|
3
3
|
include Enumerable
|
4
4
|
|
5
5
|
def initialize
|
@@ -28,8 +28,8 @@ module Pageflow
|
|
28
28
|
map(&:name)
|
29
29
|
end
|
30
30
|
|
31
|
-
def each(&
|
32
|
-
@page_types.each(&
|
31
|
+
def each(&)
|
32
|
+
@page_types.each(&)
|
33
33
|
end
|
34
34
|
|
35
35
|
def setup(config)
|
@@ -29,8 +29,8 @@ module Pageflow
|
|
29
29
|
ANIMATED_FORMATS.include?(@current_format) ? "#{source.path}[n=-1]" : source.path,
|
30
30
|
width,
|
31
31
|
size: @should_crop ? :both : :down,
|
32
|
-
height
|
33
|
-
crop:
|
32
|
+
height:,
|
33
|
+
crop:
|
34
34
|
)
|
35
35
|
thumbnail.webpsave(destination.path)
|
36
36
|
rescue Vips::Error => e
|
data/lib/pageflow/plugin.rb
CHANGED
data/lib/pageflow/quota.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module Pageflow
|
2
|
-
class Quota
|
3
|
-
class ExhaustedError < RuntimeError
|
2
|
+
class Quota # rubocop:todo Style/Documentation
|
3
|
+
class ExhaustedError < RuntimeError # rubocop:todo Style/Documentation
|
4
4
|
attr_reader :quota
|
5
5
|
|
6
6
|
def initialize(quota)
|
@@ -18,7 +18,11 @@ module Pageflow
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def state
|
21
|
-
raise(
|
21
|
+
raise(
|
22
|
+
NotImplementedError,
|
23
|
+
'Quota#state must be implemented and return either ' \
|
24
|
+
'"available", "exhausted" or "exceeded".'
|
25
|
+
)
|
22
26
|
end
|
23
27
|
|
24
28
|
def state_description
|
@@ -45,11 +49,11 @@ module Pageflow
|
|
45
49
|
raise(ExceededError.new(self), "Quota '#{name}' exceeded.") if exceeded?
|
46
50
|
end
|
47
51
|
|
48
|
-
def assume(
|
52
|
+
def assume(_assumptions)
|
49
53
|
self
|
50
54
|
end
|
51
55
|
|
52
|
-
class Unlimited < Quota
|
56
|
+
class Unlimited < Quota # rubocop:todo Style/Documentation
|
53
57
|
def state
|
54
58
|
'available'
|
55
59
|
end
|
data/lib/pageflow/quotas.rb
CHANGED
data/lib/pageflow/react.rb
CHANGED
@@ -8,35 +8,18 @@ module Pageflow
|
|
8
8
|
module RevisionComponent
|
9
9
|
extend ActiveSupport::Concern
|
10
10
|
|
11
|
-
|
11
|
+
include AutoGeneratedPermaId
|
12
|
+
include NestedRevisionComponent::Container
|
12
13
|
|
13
|
-
|
14
|
+
def entry_for_auto_generated_perma_id
|
15
|
+
revision.entry
|
16
|
+
end
|
14
17
|
|
15
18
|
included do
|
16
|
-
include AutoGeneratedPermaId
|
17
|
-
include NestedRevisionComponent::Container
|
18
|
-
|
19
19
|
belongs_to :revision, class_name: 'Pageflow::Revision', touch: true
|
20
20
|
end
|
21
21
|
|
22
|
-
|
23
|
-
record = dup
|
24
|
-
record.revision = revision
|
25
|
-
record.save!
|
26
|
-
|
27
|
-
copy_nested_revision_component_to(record)
|
28
|
-
end
|
29
|
-
|
30
|
-
module ClassMethods
|
31
|
-
# Recommended way to create revision components. Uses an
|
32
|
-
# advisory lock to ensure concurrently created records are not
|
33
|
-
# assigned the same perma id.
|
34
|
-
def create_with_lock!(attributes, &block)
|
35
|
-
with_advisory_lock_for_perma_id_generation! do
|
36
|
-
create!(attributes, &block)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
22
|
+
module ClassMethods # rubocop:todo Style/Documentation
|
40
23
|
def all_for_revision(revision)
|
41
24
|
where(revision_id: revision.id)
|
42
25
|
end
|
@@ -44,24 +27,9 @@ module Pageflow
|
|
44
27
|
def from_perma_ids(revision, perma_ids)
|
45
28
|
return [] if revision.blank? || perma_ids.blank?
|
46
29
|
|
47
|
-
perma_ids.map
|
30
|
+
perma_ids.map { |perma_id|
|
48
31
|
find_by_revision_id_and_perma_id(revision.id, perma_id)
|
49
|
-
|
50
|
-
end
|
51
|
-
|
52
|
-
private
|
53
|
-
|
54
|
-
def with_advisory_lock_for_perma_id_generation!(&block)
|
55
|
-
r = with_advisory_lock_result_for_perma_id_generation(&block)
|
56
|
-
raise(PermaIdGenerationAdvisoryLockTimeout) unless r.lock_was_acquired?
|
57
|
-
|
58
|
-
r.result
|
59
|
-
end
|
60
|
-
|
61
|
-
def with_advisory_lock_result_for_perma_id_generation(&block)
|
62
|
-
with_advisory_lock_result("#{table_name}_perma_id",
|
63
|
-
timeout_seconds: ADVISORY_LOCK_TIMEOUT_SECONDS,
|
64
|
-
&block)
|
32
|
+
}.compact
|
65
33
|
end
|
66
34
|
end
|
67
35
|
end
|
@@ -1,18 +1,28 @@
|
|
1
1
|
module Pageflow
|
2
|
-
class RevisionComponents
|
2
|
+
class RevisionComponents # rubocop:todo Style/Documentation
|
3
3
|
include Enumerable
|
4
4
|
|
5
5
|
def initialize
|
6
6
|
@revision_components = []
|
7
|
+
@create_defaults_hooks = []
|
7
8
|
end
|
8
9
|
|
9
|
-
def register(revision_component)
|
10
|
-
@revision_components
|
11
|
-
|
10
|
+
def register(revision_component, create_defaults: false)
|
11
|
+
return if @revision_components.include?(revision_component)
|
12
|
+
|
13
|
+
@revision_components << revision_component
|
14
|
+
|
15
|
+
return unless create_defaults
|
16
|
+
|
17
|
+
@create_defaults_hooks << ->(revision) { revision_component.create_defaults(revision) }
|
18
|
+
end
|
19
|
+
|
20
|
+
def each(&)
|
21
|
+
@revision_components.each(&)
|
12
22
|
end
|
13
23
|
|
14
|
-
def
|
15
|
-
@
|
24
|
+
def create_defaults(revision)
|
25
|
+
@create_defaults_hooks.each { |hook| hook.call(revision) }
|
16
26
|
end
|
17
27
|
end
|
18
28
|
end
|
data/lib/pageflow/seeds.rb
CHANGED
@@ -17,7 +17,7 @@ module Pageflow
|
|
17
17
|
# last_name: 'Doe')
|
18
18
|
# end
|
19
19
|
module Seeds
|
20
|
-
DEFAULT_USER_PASSWORD = '!Pass123'
|
20
|
+
DEFAULT_USER_PASSWORD = '!Pass123'.freeze
|
21
21
|
|
22
22
|
# Create an {Account} with a default {Site} if no account by
|
23
23
|
# that name exists.
|
@@ -26,7 +26,7 @@ module Pageflow
|
|
26
26
|
# @option attributes [String] :name required
|
27
27
|
# @yield [account] a block to be called before the account is saved
|
28
28
|
# @return [Account] newly created account
|
29
|
-
def account(attributes
|
29
|
+
def account(attributes)
|
30
30
|
Account.find_or_create_by!(attributes.slice(:name)) do |account|
|
31
31
|
account.attributes = attributes.reverse_merge(name: 'Pageflow')
|
32
32
|
|
@@ -52,7 +52,7 @@ module Pageflow
|
|
52
52
|
# @param [Hash] attributes further attributes to override defaults
|
53
53
|
# @yield [site] a block which is passed the newly built site
|
54
54
|
# @return [Site] newly built site
|
55
|
-
def build_default_site_for(account, attributes = {}, &
|
55
|
+
def build_default_site_for(account, attributes = {}, &)
|
56
56
|
default_attributes = {
|
57
57
|
imprint_link_label: 'Impressum',
|
58
58
|
imprint_link_url: 'http://example.com/impressum.html',
|
@@ -60,7 +60,7 @@ module Pageflow
|
|
60
60
|
copyright_link_url: 'http://www.example.com/copyright.html'
|
61
61
|
}
|
62
62
|
|
63
|
-
account.build_default_site(default_attributes.merge(attributes), &
|
63
|
+
account.build_default_site(default_attributes.merge(attributes), &)
|
64
64
|
end
|
65
65
|
|
66
66
|
# Create a {User} if none with the given email exists yet.
|
@@ -69,7 +69,7 @@ module Pageflow
|
|
69
69
|
# @option attributes [String] :email required
|
70
70
|
# @yield [user] a block to be called before the user is saved
|
71
71
|
# @return [User] newly created user
|
72
|
-
def user(attributes
|
72
|
+
def user(attributes)
|
73
73
|
default_attributes = {
|
74
74
|
password: default_user_password,
|
75
75
|
first_name: 'Elliot',
|
@@ -146,9 +146,7 @@ module Pageflow
|
|
146
146
|
(attributes[:account].present? && attributes[:entity].present?)
|
147
147
|
say_attribute_precedence(':entity', ':entry and :account')
|
148
148
|
end
|
149
|
-
unless attributes[:entity].present?
|
150
|
-
entry_or_account_attributes_specified attributes
|
151
|
-
end
|
149
|
+
entry_or_account_attributes_specified attributes unless attributes[:entity].present?
|
152
150
|
|
153
151
|
if attributes[:entity].is_a?(Entry) || attributes[:entry].present?
|
154
152
|
entry = attributes[:entity] || attributes[:entry]
|
@@ -173,14 +171,14 @@ module Pageflow
|
|
173
171
|
end
|
174
172
|
|
175
173
|
def say_creating_user(user)
|
176
|
-
say(<<-
|
174
|
+
say(<<-TEXT)
|
177
175
|
|
178
176
|
user with login:
|
179
177
|
|
180
178
|
email: #{user.email}
|
181
179
|
password: #{user.password}
|
182
180
|
|
183
|
-
|
181
|
+
TEXT
|
184
182
|
end
|
185
183
|
|
186
184
|
def say_creating_entry(entry)
|
@@ -188,13 +186,13 @@ END
|
|
188
186
|
end
|
189
187
|
|
190
188
|
def say_creating_membership(membership)
|
191
|
-
say(" -- '#{membership.role}' membership for user '#{membership.user.email}' on "
|
189
|
+
say(" -- '#{membership.role}' membership for user '#{membership.user.email}' on " \
|
192
190
|
"#{membership.entity_type == 'Pageflow::Entry' ? 'entry' : 'account'} " +
|
193
|
-
|
191
|
+
%('#{if membership.entity_type == 'Pageflow::Entry'
|
194
192
|
membership.entity.title
|
195
193
|
else
|
196
194
|
membership.entity.name
|
197
|
-
end}'\n
|
195
|
+
end}'\n))
|
198
196
|
end
|
199
197
|
|
200
198
|
def say_attribute_precedence(subject, object)
|
@@ -208,9 +206,7 @@ END
|
|
208
206
|
def entry_or_account_attributes_specified(attributes)
|
209
207
|
if attributes[:entry].present? || attributes[:account].present?
|
210
208
|
attributes[:entity] = attributes[:entry]
|
211
|
-
if attributes[:account].present?
|
212
|
-
say_attribute_precedence(':entry', ':account')
|
213
|
-
end
|
209
|
+
say_attribute_precedence(':entry', ':account') if attributes[:account].present?
|
214
210
|
else
|
215
211
|
attributes[:entity] = attributes[:account]
|
216
212
|
end
|
data/lib/pageflow/theme.rb
CHANGED
@@ -8,8 +8,8 @@ module Pageflow
|
|
8
8
|
# a specific site.
|
9
9
|
def update(site:, entry_type_name:, overrides: {}, file_ids: {})
|
10
10
|
ThemeCustomization
|
11
|
-
.find_or_initialize_by(site
|
12
|
-
.update!(overrides
|
11
|
+
.find_or_initialize_by(site:, entry_type_name:)
|
12
|
+
.update!(overrides:, selected_file_ids: file_ids)
|
13
13
|
end
|
14
14
|
|
15
15
|
# Construct an entry that uses the given overrides and files in
|
@@ -19,15 +19,15 @@ module Pageflow
|
|
19
19
|
def preview(site:, entry:, overrides: {}, file_ids: {})
|
20
20
|
theme_customization =
|
21
21
|
ThemeCustomization
|
22
|
-
.find_or_initialize_by(site
|
22
|
+
.find_or_initialize_by(site:, entry_type_name: entry.type_name)
|
23
23
|
|
24
|
-
theme_customization.assign_attributes(overrides
|
24
|
+
theme_customization.assign_attributes(overrides:, selected_file_ids: file_ids)
|
25
25
|
|
26
|
-
theme = CustomizedTheme.build(entry: entry,
|
26
|
+
theme = CustomizedTheme.build(entry: PublishedEntry.new(entry, entry.draft),
|
27
27
|
theme: entry.draft.theme,
|
28
|
-
theme_customization:
|
28
|
+
theme_customization:)
|
29
29
|
|
30
|
-
PublishedEntry.new(entry, entry.draft, theme:
|
30
|
+
PublishedEntry.new(entry, entry.draft, theme:)
|
31
31
|
end
|
32
32
|
|
33
33
|
# Get customization for entry type and site.
|
@@ -35,7 +35,7 @@ module Pageflow
|
|
35
35
|
# @return [ThemeCustomization]
|
36
36
|
def get(site:, entry_type_name:)
|
37
37
|
ThemeCustomization
|
38
|
-
.find_or_initialize_by(site
|
38
|
+
.find_or_initialize_by(site:, entry_type_name:)
|
39
39
|
end
|
40
40
|
|
41
41
|
# Upload a file that shall be used to customize a theme. Uploading
|
@@ -46,9 +46,9 @@ module Pageflow
|
|
46
46
|
def upload_file(site:, entry_type_name:, type_name:, attachment:)
|
47
47
|
theme_customization_file =
|
48
48
|
ThemeCustomization
|
49
|
-
.find_or_create_by(site
|
49
|
+
.find_or_create_by(site:, entry_type_name:)
|
50
50
|
.uploaded_files
|
51
|
-
.build(type_name:
|
51
|
+
.build(type_name:)
|
52
52
|
|
53
53
|
# Assign attachment in separate step to make sure theme
|
54
54
|
# customization association (which is used to look up Paperclip
|
data/lib/pageflow/themes.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
module Pageflow
|
2
|
-
class Themes
|
2
|
+
class Themes # rubocop:todo Style/Documentation
|
3
3
|
include Enumerable
|
4
4
|
|
5
5
|
def initialize
|
@@ -52,8 +52,8 @@ module Pageflow
|
|
52
52
|
map(&:name)
|
53
53
|
end
|
54
54
|
|
55
|
-
def each(&
|
56
|
-
@themes.values.each(&
|
55
|
+
def each(&)
|
56
|
+
@themes.values.each(&)
|
57
57
|
end
|
58
58
|
end
|
59
59
|
end
|
data/lib/pageflow/user_mixin.rb
CHANGED
@@ -34,11 +34,11 @@ module Pageflow
|
|
34
34
|
end
|
35
35
|
|
36
36
|
def full_name
|
37
|
-
[first_name, last_name]
|
37
|
+
[first_name, last_name].join(' ')
|
38
38
|
end
|
39
39
|
|
40
40
|
def formal_name
|
41
|
-
[last_name, first_name]
|
41
|
+
[last_name, first_name].join(', ')
|
42
42
|
end
|
43
43
|
|
44
44
|
def locale
|
@@ -47,7 +47,7 @@ module Pageflow
|
|
47
47
|
|
48
48
|
def update_with_password(attributes)
|
49
49
|
if needs_password?(attributes)
|
50
|
-
super
|
50
|
+
super
|
51
51
|
else
|
52
52
|
# remove the virtual current_password attribute update_without_password
|
53
53
|
# doesn't know how to ignore it
|
@@ -66,11 +66,11 @@ module Pageflow
|
|
66
66
|
end
|
67
67
|
|
68
68
|
# Configure devise to send emails using ActiveJob.
|
69
|
-
def send_devise_notification(notification, *
|
70
|
-
devise_mailer.send(notification, self, *
|
69
|
+
def send_devise_notification(notification, *)
|
70
|
+
devise_mailer.send(notification, self, *).deliver_later
|
71
71
|
end
|
72
72
|
|
73
|
-
module ClassMethods
|
73
|
+
module ClassMethods # rubocop:todo Style/Documentation
|
74
74
|
def ransackable_attributes(_auth_object = nil)
|
75
75
|
%w[first_name last_name email]
|
76
76
|
end
|
data/lib/pageflow/version.rb
CHANGED
data/lib/pageflow/widget_type.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
module Pageflow
|
2
|
-
class WidgetType
|
2
|
+
class WidgetType # rubocop:todo Style/Documentation
|
3
3
|
class NotFoundError < RuntimeError
|
4
4
|
end
|
5
5
|
|
@@ -44,7 +44,7 @@ module Pageflow
|
|
44
44
|
|
45
45
|
# Override to return html as string.
|
46
46
|
def render(template, entry)
|
47
|
-
template.render(File.join('pageflow', name, 'widget'), entry:
|
47
|
+
template.render(File.join('pageflow', name, 'widget'), entry:)
|
48
48
|
end
|
49
49
|
|
50
50
|
# Override instead of render_head_fragment to use the widget
|
@@ -56,11 +56,11 @@ module Pageflow
|
|
56
56
|
|
57
57
|
# Override to return html that should be placed in the head
|
58
58
|
# element of the page. Not supported inside the editor.
|
59
|
-
def render_head_fragment(
|
59
|
+
def render_head_fragment(_template, _entry)
|
60
60
|
''
|
61
61
|
end
|
62
62
|
|
63
|
-
class Null < WidgetType
|
63
|
+
class Null < WidgetType # rubocop:todo Style/Documentation
|
64
64
|
def initialize(role)
|
65
65
|
@role = role
|
66
66
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Pageflow
|
2
|
-
class WidgetTypes
|
2
|
+
class WidgetTypes # rubocop:todo Style/Documentation
|
3
3
|
include Enumerable
|
4
4
|
|
5
5
|
attr_reader :defaults_by_role
|
@@ -10,10 +10,10 @@ module Pageflow
|
|
10
10
|
|
11
11
|
def register(widget_type, options = {})
|
12
12
|
@widget_types[widget_type.name] = widget_type
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
13
|
+
return unless options[:default]
|
14
|
+
|
15
|
+
widget_type.roles.each do |role|
|
16
|
+
defaults_by_role[role] = widget_type
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
@@ -27,8 +27,8 @@ module Pageflow
|
|
27
27
|
@default_configurations = {}
|
28
28
|
end
|
29
29
|
|
30
|
-
def each(&
|
31
|
-
@widget_types.values.each(&
|
30
|
+
def each(&)
|
31
|
+
@widget_types.values.each(&)
|
32
32
|
end
|
33
33
|
|
34
34
|
def find_by_name!(name)
|
@@ -37,8 +37,8 @@ module Pageflow
|
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
|
-
def fetch_by_name(name, &
|
41
|
-
@widget_types.fetch(name, &
|
40
|
+
def fetch_by_name(name, &)
|
41
|
+
@widget_types.fetch(name, &)
|
42
42
|
end
|
43
43
|
|
44
44
|
def type_name?(name)
|