pageflow 17.1.0 → 17.2.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.
Files changed (302) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +319 -345
  3. data/README.md +3 -4
  4. data/admins/pageflow/accounts.rb +6 -6
  5. data/admins/pageflow/entry.rb +10 -8
  6. data/admins/pageflow/membership.rb +11 -11
  7. data/admins/pageflow/translations.rb +5 -5
  8. data/app/assets/images/pageflow/admin/icons/comment.svg +1 -0
  9. data/app/assets/javascripts/pageflow/dist/ui.js +1350 -630
  10. data/app/assets/javascripts/pageflow/editor/vendor.js +0 -1
  11. data/app/assets/javascripts/pageflow/ui.js +0 -1
  12. data/app/assets/stylesheets/pageflow/admin/entry_comments_indicator.scss +45 -0
  13. data/app/assets/stylesheets/pageflow/admin/permalink_input.scss +8 -1
  14. data/app/assets/stylesheets/pageflow/admin.scss +1 -0
  15. data/app/assets/stylesheets/pageflow/animations/spin.scss +9 -0
  16. data/app/assets/stylesheets/pageflow/animations.scss +1 -0
  17. data/app/assets/stylesheets/pageflow/editor/background_positioning.scss +21 -5
  18. data/app/assets/stylesheets/pageflow/editor/base.scss +9 -1
  19. data/app/assets/stylesheets/pageflow/editor/drop_down_button.scss +13 -1
  20. data/app/assets/stylesheets/pageflow/editor/edit_configuration_view.scss +5 -0
  21. data/app/assets/stylesheets/pageflow/editor/file_folders.scss +127 -0
  22. data/app/assets/stylesheets/pageflow/editor/file_meta_data.scss +0 -1
  23. data/app/assets/stylesheets/pageflow/editor/file_meta_data_overlay.scss +45 -0
  24. data/app/assets/stylesheets/pageflow/editor/file_preview.scss +138 -0
  25. data/app/assets/stylesheets/pageflow/editor/file_references.scss +68 -0
  26. data/app/assets/stylesheets/pageflow/editor/file_settings_dialog.scss +1 -1
  27. data/app/assets/stylesheets/pageflow/editor/file_stage_icons.scss +17 -0
  28. data/app/assets/stylesheets/pageflow/editor/file_stages.scss +25 -32
  29. data/app/assets/stylesheets/pageflow/editor/file_thumbnails.scss +31 -48
  30. data/app/assets/stylesheets/pageflow/editor/file_type_pills.scss +73 -0
  31. data/app/assets/stylesheets/pageflow/editor/files.scss +230 -50
  32. data/app/assets/stylesheets/pageflow/editor/filtered_files.scss +142 -14
  33. data/app/assets/stylesheets/pageflow/editor/folder_breadcrumb.scss +40 -0
  34. data/app/assets/stylesheets/pageflow/editor/info_box.scss +12 -0
  35. data/app/assets/stylesheets/pageflow/editor/inputs/edit_defaults_button.scss +15 -0
  36. data/app/assets/stylesheets/pageflow/editor/inputs.scss +1 -0
  37. data/app/assets/stylesheets/pageflow/editor/list.scss +88 -38
  38. data/app/assets/stylesheets/pageflow/editor/manage_files.scss +9 -0
  39. data/app/assets/stylesheets/pageflow/editor/menu.scss +14 -0
  40. data/app/assets/stylesheets/pageflow/editor/move_to_folder_dialog.scss +83 -0
  41. data/app/assets/stylesheets/pageflow/mixins/pageflow.scss +9 -5
  42. data/app/assets/stylesheets/pageflow/ui/color_picker.scss +230 -0
  43. data/app/assets/stylesheets/pageflow/ui/forms.scss +34 -4
  44. data/app/assets/stylesheets/pageflow/ui/functions.scss +12 -2
  45. data/app/assets/stylesheets/pageflow/ui/input/color_input.scss +9 -16
  46. data/app/assets/stylesheets/pageflow/ui/input/text_area_input.scss +15 -0
  47. data/app/assets/stylesheets/pageflow/ui/overrides.scss +8 -0
  48. data/app/assets/stylesheets/pageflow/ui/properties.scss +29 -0
  49. data/app/assets/stylesheets/pageflow/ui/tabs_view.scss +8 -3
  50. data/app/assets/stylesheets/pageflow/ui.scss +4 -2
  51. data/app/controllers/pageflow/editor/entries_controller.rb +1 -0
  52. data/app/controllers/pageflow/editor/file_folders_controller.rb +80 -0
  53. data/app/controllers/pageflow/editor/file_import_controller.rb +1 -0
  54. data/app/controllers/pageflow/editor/files_controller.rb +15 -6
  55. data/app/controllers/pageflow/editor/oembeds_controller.rb +21 -0
  56. data/app/controllers/pageflow/entries_controller.rb +17 -13
  57. data/app/controllers/pageflow/review/comment_thread_reads_controller.rb +30 -0
  58. data/app/controllers/pageflow/review/comment_threads_controller.rb +60 -0
  59. data/app/controllers/pageflow/review/comments_controller.rb +53 -0
  60. data/app/controllers/pageflow/revisions_controller.rb +4 -1
  61. data/app/helpers/pageflow/admin/entries_helper.rb +40 -0
  62. data/app/helpers/pageflow/admin/widgets_helper.rb +2 -2
  63. data/app/helpers/pageflow/common_entry_seed_helper.rb +5 -3
  64. data/app/helpers/pageflow/editor/config_helper.rb +3 -1
  65. data/app/helpers/pageflow/entries_helper.rb +24 -42
  66. data/app/helpers/pageflow/entry_json_seed_helper.rb +4 -4
  67. data/app/helpers/pageflow/public_i18n_helper.rb +9 -8
  68. data/app/helpers/pageflow/structured_data_helper.rb +4 -1
  69. data/app/helpers/pageflow/themes_helper.rb +1 -3
  70. data/app/helpers/pageflow/widgets_helper.rb +2 -1
  71. data/app/inputs/pageflow_permalink_input.rb +6 -2
  72. data/app/models/concerns/pageflow/auto_generated_perma_id.rb +11 -4
  73. data/app/models/concerns/pageflow/reusable_file.rb +1 -1
  74. data/app/models/concerns/pageflow/serialization_blacklist.rb +2 -4
  75. data/app/models/concerns/pageflow/translated_attributes.rb +101 -0
  76. data/app/models/concerns/pageflow/uploadable_file.rb +1 -1
  77. data/app/models/pageflow/comment.rb +30 -0
  78. data/app/models/pageflow/comment_thread.rb +65 -0
  79. data/app/models/pageflow/comment_thread_read.rb +22 -0
  80. data/app/models/pageflow/customized_theme.rb +3 -2
  81. data/app/models/pageflow/draft_entry.rb +20 -8
  82. data/app/models/pageflow/entry.rb +2 -0
  83. data/app/models/pageflow/entry_at_revision.rb +9 -1
  84. data/app/models/pageflow/entry_comment_summary.rb +114 -0
  85. data/app/models/pageflow/file_folder.rb +74 -0
  86. data/app/models/pageflow/file_reuse.rb +3 -2
  87. data/app/models/pageflow/file_usage.rb +8 -0
  88. data/app/models/pageflow/image_file.rb +24 -20
  89. data/app/models/pageflow/image_file_url_templates.rb +3 -3
  90. data/app/models/pageflow/legal_info.rb +38 -0
  91. data/app/models/pageflow/nested_revision_component_copy.rb +1 -1
  92. data/app/models/pageflow/permalink.rb +1 -0
  93. data/app/models/pageflow/revision.rb +6 -2
  94. data/app/models/pageflow/site.rb +10 -0
  95. data/app/models/pageflow/used_file.rb +8 -2
  96. data/app/models/pageflow/widget.rb +2 -2
  97. data/app/views/pageflow/audio_files/_audio_file.json.jbuilder +0 -1
  98. data/app/views/pageflow/editor/config/_seeds.json.jbuilder +4 -2
  99. data/app/views/pageflow/editor/entries/_entry.json.jbuilder +2 -1
  100. data/app/views/pageflow/editor/entries/seed.json.erb +1 -0
  101. data/app/views/pageflow/editor/file_folders/_file_folder.json.jbuilder +5 -0
  102. data/app/views/pageflow/editor/file_folders/create.json.jbuilder +1 -0
  103. data/app/views/pageflow/editor/file_folders/index.json.jbuilder +3 -0
  104. data/app/views/pageflow/editor/files/_file.json.jbuilder +2 -1
  105. data/app/views/pageflow/editor/image_files/_image_file.json.jbuilder +3 -0
  106. data/app/views/pageflow/editor/video_files/_video_file.json.jbuilder +3 -0
  107. data/app/views/pageflow/files/_file.json.jbuilder +2 -0
  108. data/app/views/pageflow/image_files/_image_file.json.jbuilder +0 -1
  109. data/app/views/pageflow/review/comment_threads/_comment_thread.json.jbuilder +20 -0
  110. data/app/views/pageflow/review/comment_threads/create.json.jbuilder +2 -0
  111. data/app/views/pageflow/review/comment_threads/index.json.jbuilder +13 -0
  112. data/app/views/pageflow/review/comments/_comment.json.jbuilder +13 -0
  113. data/app/views/pageflow/review/comments/create.json.jbuilder +1 -0
  114. data/app/views/pageflow/structured_data/_entry.json.jbuilder +2 -3
  115. data/app/views/pageflow/video_files/_video_file.json.jbuilder +0 -1
  116. data/config/locales/de.yml +152 -14
  117. data/config/locales/en.yml +150 -14
  118. data/config/routes.rb +14 -0
  119. data/db/migrate/20140418225525_setup_schema.rb +2 -2
  120. data/db/migrate/20251015000000_add_structured_data_type_name_to_revisions.rb +5 -0
  121. data/db/migrate/20251029142849_convert_legacy_social_embeds_to_unified_social_embed.rb +38 -0
  122. data/db/migrate/20251119083347_fix_main_storyline_positions.rb +16 -0
  123. data/db/migrate/20251119083348_ensure_scrolled_entries_have_excursion_storyline.rb +15 -0
  124. data/db/migrate/20260303000000_add_layout_version_to_revisions.rb +6 -0
  125. data/db/migrate/20260323000000_create_comment_threads_and_comments.rb +30 -0
  126. data/db/migrate/20260414000000_add_subject_range_to_comment_threads.rb +5 -0
  127. data/db/migrate/20260415000000_add_section_perma_id_to_comment_threads.rb +5 -0
  128. data/db/migrate/20260727000000_add_quote_to_comments.rb +5 -0
  129. data/db/migrate/20260728000000_create_file_folders.rb +17 -0
  130. data/db/migrate/20260805000000_add_attribute_translations_to_sites.rb +5 -0
  131. data/db/migrate/20260806000000_add_edited_at_to_comments.rb +5 -0
  132. data/db/migrate/20260810000000_create_pageflow_scrolled_lottie_files.rb +24 -0
  133. data/db/migrate/20260817000000_create_comment_thread_reads.rb +16 -0
  134. data/db/migrate/20260819000000_add_unread_comments_since_at_to_users.rb +18 -0
  135. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/editor.js +8665 -3890
  136. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/frontend.js +979 -3571
  137. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/react-client.js +20199 -28120
  138. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/react-server.js +18652 -26584
  139. data/entry_types/scrolled/app/assets/stylesheets/pageflow_scrolled/ui.scss +2 -0
  140. data/entry_types/scrolled/app/controllers/pageflow_scrolled/editor/content_elements_controller.rb +33 -3
  141. data/entry_types/scrolled/app/controllers/pageflow_scrolled/editor/sections_controller.rb +2 -3
  142. data/entry_types/scrolled/app/controllers/pageflow_scrolled/entries_controller.rb +21 -1
  143. data/entry_types/scrolled/app/helpers/pageflow_scrolled/cache_helper.rb +3 -3
  144. data/entry_types/scrolled/app/helpers/pageflow_scrolled/editor/entry_json_seed_helper.rb +7 -5
  145. data/entry_types/scrolled/app/helpers/pageflow_scrolled/editor/seed_html_helper.rb +5 -2
  146. data/entry_types/scrolled/app/helpers/pageflow_scrolled/entry_json_seed_helper.rb +13 -5
  147. data/entry_types/scrolled/app/helpers/pageflow_scrolled/i18n_helper.rb +28 -13
  148. data/entry_types/scrolled/app/helpers/pageflow_scrolled/packs_helper.rb +26 -11
  149. data/entry_types/scrolled/app/helpers/pageflow_scrolled/react_server_side_rendering_helper.rb +2 -2
  150. data/entry_types/scrolled/app/helpers/pageflow_scrolled/sprockets_helper.rb +16 -0
  151. data/entry_types/scrolled/app/helpers/pageflow_scrolled/themes_helper.rb +174 -3
  152. data/entry_types/scrolled/app/models/pageflow_scrolled/content_element.rb +49 -7
  153. data/entry_types/scrolled/app/models/pageflow_scrolled/lottie_file.rb +6 -0
  154. data/entry_types/scrolled/app/models/pageflow_scrolled/lottie_file_url_templates.rb +16 -0
  155. data/entry_types/scrolled/app/models/pageflow_scrolled/storyline.rb +1 -0
  156. data/entry_types/scrolled/app/views/pageflow_scrolled/entries/show.html.erb +13 -12
  157. data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_entry.json.jbuilder +30 -10
  158. data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_theme.json.jbuilder +9 -0
  159. data/entry_types/scrolled/app/views/pageflow_scrolled/favicons/_entry.html.erb +1 -1
  160. data/entry_types/scrolled/config/configuration_schemas/pageflow-scrolled.json +414 -0
  161. data/entry_types/scrolled/config/locales/de.yml +512 -65
  162. data/entry_types/scrolled/config/locales/en.yml +518 -52
  163. data/entry_types/scrolled/lib/pageflow_scrolled/additional_seed_data.rb +2 -2
  164. data/entry_types/scrolled/lib/pageflow_scrolled/configuration.rb +51 -6
  165. data/entry_types/scrolled/lib/pageflow_scrolled/configuration_schemas.rb +91 -0
  166. data/entry_types/scrolled/lib/pageflow_scrolled/engine.rb +2 -1
  167. data/entry_types/scrolled/lib/pageflow_scrolled/entry_file_reference_locations.rb +71 -0
  168. data/entry_types/scrolled/lib/pageflow_scrolled/entry_structured_data_types/faq_page.rb +58 -0
  169. data/entry_types/scrolled/lib/pageflow_scrolled/file_reference_locations.rb +69 -0
  170. data/entry_types/scrolled/lib/pageflow_scrolled/plugin.rb +205 -22
  171. data/entry_types/scrolled/lib/pageflow_scrolled/react_widget_type.rb +2 -4
  172. data/entry_types/scrolled/lib/pageflow_scrolled/seeds.rb +56 -36
  173. data/entry_types/scrolled/lib/pageflow_scrolled/theme_options_default_scale.rb +35 -0
  174. data/entry_types/scrolled/lib/pageflow_scrolled.rb +13 -0
  175. data/entry_types/scrolled/lib/tasks/pageflow_scrolled/storybook.rake +19 -1
  176. data/entry_types/scrolled/package/config/configurationSchemas.js +70 -0
  177. data/entry_types/scrolled/package/config/rollup/configurationSchemas.js +19 -0
  178. data/entry_types/scrolled/package/config/webpack.js +72 -0
  179. data/entry_types/scrolled/package/contentElements/hotspots-frontend.css +1 -1
  180. data/entry_types/scrolled/package/contentElements/hotspots-frontend.js +1181 -915
  181. data/entry_types/scrolled/package/contentElements/inlineBeforeAfter-frontend.css +1 -0
  182. data/entry_types/scrolled/package/contentElements/inlineBeforeAfter-frontend.js +219 -0
  183. data/entry_types/scrolled/package/contentElements/lottieAnimation-frontend.css +1 -0
  184. data/entry_types/scrolled/package/contentElements/lottieAnimation-frontend.js +244 -0
  185. data/entry_types/scrolled/package/contentElements/socialEmbed-frontend.css +1 -0
  186. data/entry_types/scrolled/package/contentElements/socialEmbed-frontend.js +823 -0
  187. data/entry_types/scrolled/package/contentElements/tikTokEmbed-frontend.js +71 -21
  188. data/entry_types/scrolled/package/contentElements/twitterEmbed-frontend.css +1 -0
  189. data/entry_types/scrolled/package/contentElements/twitterEmbed-frontend.js +277 -0
  190. data/entry_types/scrolled/package/contentElements/videoEmbed-frontend.css +1 -0
  191. data/entry_types/scrolled/package/contentElements/videoEmbed-frontend.js +244 -0
  192. data/entry_types/scrolled/package/contentElements-editor.js +1915 -1097
  193. data/entry_types/scrolled/package/contentElements-frontend.css +1 -1
  194. data/entry_types/scrolled/package/contentElements-frontend.js +3093 -1679
  195. data/entry_types/scrolled/package/editor.css +1 -0
  196. data/entry_types/scrolled/package/editor.js +8667 -4077
  197. data/entry_types/scrolled/package/entryState.js +1600 -0
  198. data/entry_types/scrolled/package/frontend/FloatingPortalRootProvider-20c600de.js +1979 -0
  199. data/entry_types/scrolled/package/frontend/FloatingPortalRootProvider-58189220.js +2538 -0
  200. data/entry_types/scrolled/package/frontend/{PhonePlatformContext-9f76033e.js → PhonePlatformContext-035a99fa.js} +7 -12
  201. data/entry_types/scrolled/package/frontend/PhonePlatformContext-9da43797.js +33 -0
  202. data/entry_types/scrolled/package/frontend/Placeholder.module-bf0966b4.js +5267 -0
  203. data/entry_types/scrolled/package/frontend/Placeholder.module-d22a9335.js +4180 -0
  204. data/entry_types/scrolled/package/frontend/ThemeIcon-ab834849.js +754 -0
  205. data/entry_types/scrolled/package/frontend/ThemeIcon-f6cb3a8f.js +773 -0
  206. data/entry_types/scrolled/package/frontend/{ToggleFullscreenCornerButton-788e9cdb.js → ToggleFullscreenCornerButton-30fd1124.js} +6 -6
  207. data/entry_types/scrolled/package/frontend/ToggleFullscreenCornerButton-61c25224.js +72 -0
  208. data/entry_types/scrolled/package/frontend/Viewer-1074fd59.js +147 -0
  209. data/entry_types/scrolled/package/frontend/Viewer-1482ca34.js +480 -0
  210. data/entry_types/scrolled/package/frontend/Viewer-70504231.js +210 -0
  211. data/entry_types/scrolled/package/frontend/{Viewer-0345ce57.js → Viewer-cc8d4072.js} +84 -92
  212. data/entry_types/scrolled/package/frontend/Wavesurfer-656e3c36.js +302 -0
  213. data/entry_types/scrolled/package/frontend/Wavesurfer-b753b838.js +385 -0
  214. data/entry_types/scrolled/package/frontend/commenting.css +1 -0
  215. data/entry_types/scrolled/package/frontend/extensions-167ae143.js +1455 -0
  216. data/entry_types/scrolled/package/frontend/extensions-2318f92b.js +5918 -0
  217. data/entry_types/scrolled/package/frontend/extensions-a461fd13.js +4890 -0
  218. data/entry_types/scrolled/package/frontend/extensions-c98269fd.js +1982 -0
  219. data/entry_types/scrolled/package/frontend/i18n-493cd2a6.js +93 -0
  220. data/entry_types/scrolled/package/frontend/i18n-e06cac14.js +100 -0
  221. data/entry_types/scrolled/package/frontend/{index-eb670c2f.js → index-2e5546f7.js} +36 -44
  222. data/entry_types/scrolled/package/frontend/index-de2b418d.js +130 -0
  223. data/entry_types/scrolled/package/frontend/index.css +1 -1
  224. data/entry_types/scrolled/package/frontend/index.js +1870 -875
  225. data/entry_types/scrolled/package/frontend/inlineEditing.css +1 -0
  226. data/entry_types/scrolled/package/frontend/useContentElementEditorState-a084912e.js +25 -0
  227. data/entry_types/scrolled/package/frontend/useDelayedBoolean-a387d85b.js +24 -0
  228. data/entry_types/scrolled/package/frontend/{usePhonePlatform-c2ba875d.js → usePhonePlatform-4ecb96d4.js} +1 -1
  229. data/entry_types/scrolled/package/frontend/usePhonePlatform-ce9ff08d.js +8 -0
  230. data/entry_types/scrolled/package/frontend-server.js +20 -209
  231. data/entry_types/scrolled/package/package.json +5 -3
  232. data/entry_types/scrolled/package/review.css +1 -0
  233. data/entry_types/scrolled/package/review.js +3306 -0
  234. data/entry_types/scrolled/package/testHelpers.js +836 -359
  235. data/entry_types/scrolled/package/widgets/consentBar.css +1 -1
  236. data/entry_types/scrolled/package/widgets/consentBar.js +269 -290
  237. data/entry_types/scrolled/package/widgets/defaultNavigation.css +2 -2
  238. data/entry_types/scrolled/package/widgets/defaultNavigation.js +911 -352
  239. data/entry_types/scrolled/package/widgets/excursionSheet.css +1 -1
  240. data/entry_types/scrolled/package/widgets/excursionSheet.js +87 -124
  241. data/entry_types/scrolled/package/widgets/iconInlineFileRights.css +1 -1
  242. data/entry_types/scrolled/package/widgets/iconInlineFileRights.js +62 -29
  243. data/entry_types/scrolled/package/widgets/iconScrollIndicator.js +32 -13
  244. data/entry_types/scrolled/package/widgets/mainStorylineSheet.css +1 -1
  245. data/entry_types/scrolled/package/widgets/mainStorylineSheet.js +56 -100
  246. data/entry_types/scrolled/package/widgets/textInlineFileRights.css +1 -1
  247. data/entry_types/scrolled/package/widgets/textInlineFileRights.js +33 -28
  248. data/entry_types/scrolled/package/widgets-server.js +1 -0
  249. data/entry_types/scrolled/spec/factories/lottie_files.rb +29 -0
  250. data/entry_types/scrolled/spec/fixtures/animation.lottie +0 -0
  251. data/entry_types/scrolled/spec/fixtures/font.woff +0 -0
  252. data/entry_types/scrolled/spec/fixtures/font.woff2 +0 -0
  253. data/lib/generators/pageflow/resque/resque_generator.rb +0 -2
  254. data/lib/pageflow/configuration.rb +49 -7
  255. data/lib/pageflow/deprecation.rb +19 -0
  256. data/lib/pageflow/engine.rb +1 -1
  257. data/lib/pageflow/entries_controller_env_helper.rb +32 -2
  258. data/lib/pageflow/entry_export_import/entry_serialization.rb +4 -4
  259. data/lib/pageflow/entry_export_import/page_type_versions.rb +2 -2
  260. data/lib/pageflow/entry_export_import/revision_serialization/import.rb +10 -0
  261. data/lib/pageflow/entry_export_import/revision_serialization.rb +3 -0
  262. data/lib/pageflow/entry_structured_data_types.rb +43 -0
  263. data/lib/pageflow/entry_type_configuration.rb +1 -0
  264. data/lib/pageflow/file_type.rb +2 -2
  265. data/lib/pageflow/file_types.rb +1 -1
  266. data/lib/pageflow/oembed_providers.rb +42 -0
  267. data/lib/pageflow/primary_domain_entry_redirect.rb +6 -0
  268. data/lib/pageflow/rails_version.rb +13 -2
  269. data/lib/pageflow/themes.rb +41 -0
  270. data/lib/pageflow/user_mixin.rb +12 -0
  271. data/lib/pageflow/version.rb +1 -1
  272. data/lib/pageflow.rb +1 -0
  273. data/package/config/eslint-rules/documented-in-toc.js +125 -0
  274. data/package/config/jest/index.js +0 -1
  275. data/package/config/webpack.js +0 -1
  276. data/package/config/webpack5.js +0 -1
  277. data/package/editor.js +4378 -1897
  278. data/package/frontend.js +647 -886
  279. data/package/package.json +2 -1
  280. data/package/review.js +384 -0
  281. data/package/testHelpers.js +248 -188
  282. data/package/ui.js +1346 -630
  283. data/package/vendor/stubs/wysihtml5.js +2 -0
  284. data/spec/factories/comment_thread_reads.rb +10 -0
  285. data/spec/factories/comment_threads.rb +10 -0
  286. data/spec/factories/comments.rb +9 -0
  287. data/spec/factories/file_folders.rb +8 -0
  288. data/spec/factories/published_entries.rb +2 -0
  289. metadata +188 -67
  290. data/app/assets/stylesheets/pageflow/editor/select_button.scss +0 -51
  291. data/entry_types/scrolled/app/helpers/pageflow_scrolled/generated_media_queries_helper.rb +0 -55
  292. data/entry_types/scrolled/package/frontend/FloatingPortalRootProvider-51914be7.js +0 -5439
  293. data/entry_types/scrolled/package/frontend/ThemeIcon-81f2f066.js +0 -1932
  294. data/entry_types/scrolled/package/frontend/Viewer-cdc549cc.js +0 -147
  295. data/entry_types/scrolled/package/frontend/Wavesurfer-1cdc3925.js +0 -313
  296. data/entry_types/scrolled/package/frontend/components-96660ffd.js +0 -3803
  297. data/entry_types/scrolled/package/frontend/inherits-539844a6.js +0 -99
  298. data/entry_types/scrolled/package/frontend/useContentElementEditorState-77fe6c79.js +0 -51
  299. data/entry_types/scrolled/package/widgets/excursionDialog.css +0 -1
  300. data/entry_types/scrolled/package/widgets/excursionDialog.js +0 -109
  301. data/lib/generators/pageflow/resque/templates/resque_enqueue_after_commit_patch.rb +0 -25
  302. data/package/vendor/jquery.minicolors.js +0 -1108
@@ -1,7 +1,11 @@
1
1
  en:
2
2
  pageflow:
3
+ commenting:
4
+ feature_name: Comments
3
5
  datawrapper_chart_embed_opt_in:
4
6
  feature_name: Opt-in for Datawrapper embeds
7
+ image_srcset:
8
+ feature_name: Responsive image srcset
5
9
  defaultNavigation:
6
10
  widget_type_name: Default navigation
7
11
  editor:
@@ -14,6 +18,10 @@ en:
14
18
  name:
15
19
  one: Image
16
20
  other: Images
21
+ lottie_files:
22
+ name:
23
+ one: Lottie animation
24
+ other: Lottie animations
17
25
  other_files:
18
26
  name:
19
27
  one: Other
@@ -22,6 +30,9 @@ en:
22
30
  name:
23
31
  one: Video
24
32
  other: Videos
33
+ files:
34
+ tabs:
35
+ lottie_files: Lottie
25
36
  widgets:
26
37
  attributes:
27
38
  defaultNavigation:
@@ -33,6 +44,15 @@ en:
33
44
  navigation is still always hidden when the page is
34
45
  scrolled in phone layout.
35
46
  label: Keep expanded in desktop layout
47
+ firstBackdropBelowNavigation:
48
+ inline_help: |
49
+ Position the first section's backdrop image below the
50
+ navigation bar instead of behind it.
51
+ inline_help_disabled: |
52
+ Position the first section's backdrop image below the
53
+ navigation bar instead of behind it. Only available
54
+ when navigation is set to stay expanded.
55
+ label: Start backdrop below
36
56
  hideSharingButton:
37
57
  label: Hide share button
38
58
  hideToggleMuteButton:
@@ -56,16 +76,20 @@ en:
56
76
  values:
57
77
  large: Large
58
78
  small: Small
59
- frontend_v2:
60
- feature_name: Frontend v2
61
79
  hls_instead_of_dash:
62
80
  feature_name: Use HLS instead of DASH for videos
63
81
  iconInlineFileRights:
64
82
  widget_type_name: Copyright icons
65
83
  iframe_embed_content_element:
66
84
  feature_name: iframe embed content element
85
+ legacy_social_embed_content_elements:
86
+ feature_name: Legacy Twitter and TikTok content elements
87
+ lottie_animation_content_element:
88
+ feature_name: Lottie animation content element
67
89
  scrolled_entry_fragment_caching:
68
90
  feature_name: Pageflow Next Fragment Caching
91
+ social_embed_content_element:
92
+ feature_name: Social embed content element
69
93
  textInlineFileRights:
70
94
  widget_type_name: Text at element
71
95
  ui:
@@ -108,14 +132,14 @@ en:
108
132
  with_projection:
109
133
  blank_slate: Choose a projection in the file settings, to mark it as a 360° image.
110
134
  name: 360° images
111
- decoration_effects:
112
- feature_name: Decoration Effects
113
- content_element_margins:
114
- feature_name: "Element Margins"
115
135
  icon_scroll_indicator:
116
136
  feature_name: Icon Scroll Indicator
117
137
  iconScrollIndicator:
118
138
  widget_type_name: Icon at bottom of viewport
139
+ excursion_sheets:
140
+ feature_name: "Excursion sheet widgets"
141
+ file_rights_from_references:
142
+ feature_name: "Credits only for referenced files"
119
143
  pageflow_scrolled:
120
144
  editor:
121
145
  backdrop_effects:
@@ -156,6 +180,7 @@ en:
156
180
  drag_hint: Drag to move chapter
157
181
  save_error: There was an error while saving this chapter.
158
182
  chapter: Chapter
183
+ excursion: Excursion
159
184
  unnamed: Untitled
160
185
  hidden_in_navigation: Hidden in navigation bar
161
186
  common_content_element_attributes:
@@ -226,12 +251,8 @@ en:
226
251
  inline_help: Switch between different looks of the caption below the element.
227
252
  inline_help_disabled: Add a caption below the element to switch between different looks.
228
253
  blank: "(Default)"
229
- marginTop:
230
- label: "Margin top"
231
- blank: "(Auto)"
232
- marginBottom:
233
- label: "Margin bottom"
234
- blank: "(Auto)"
254
+ styles:
255
+ label: "Styles"
235
256
  fullWidthInPhoneLayout:
236
257
  label: "Full width in phone layout"
237
258
  inline_help: |-
@@ -255,12 +276,17 @@ en:
255
276
  attributes:
256
277
  countingSpeed:
257
278
  inline_help: Determine the speed of the counting animation.
258
- label: Counting animation
279
+ label: Counting speed
259
280
  values:
260
281
  fast: Fast
261
282
  medium: Medium
262
- none: "(None)"
263
283
  slow: Slow
284
+ countingAnimation:
285
+ label: Counting animation
286
+ values:
287
+ none: "(None)"
288
+ plain: Simple
289
+ wheel: Rolling digits
264
290
  decimalPlaces:
265
291
  inline_help: Determine how many decimal places shall be visible.
266
292
  label: Decimal places
@@ -275,21 +301,32 @@ en:
275
301
  fadeInScaleUp: Fade in and scale up
276
302
  none: "(None)"
277
303
  numberColor:
278
- label: Color
304
+ label: Number color
305
+ unitColor:
306
+ label: Unit color
307
+ descriptionColor:
308
+ label: Description color
279
309
  startValue:
280
310
  inline_help: The counting animation starts with this value
281
311
  label: Start value
312
+ startAnimationTrigger:
313
+ inline_help: Determine when the animation should start.
314
+ label: Start animation
315
+ values:
316
+ onActivate: When scrolled to center of viewport
317
+ onVisible: When first scrolled into view
282
318
  targetValue:
283
319
  inline_help: Value to display. Final value for counting animation.
284
320
  label: Target value
285
- textSize:
321
+ numberSize:
286
322
  inline_help: Determine the font size of the number.
287
- label: Text size
288
- values:
289
- large: Large
290
- medium: Medium
291
- small: Small
292
- verySmall: Very small
323
+ label: Number size
324
+ unitSize:
325
+ inline_help: Relative size of the unit based on the number size.
326
+ label: Unit size
327
+ descriptionSize:
328
+ inline_help: Determine the font size of the description.
329
+ label: Description size
293
330
  unit:
294
331
  inline_help: Display a text before or after the number.
295
332
  label: Unit
@@ -299,6 +336,14 @@ en:
299
336
  values:
300
337
  leading: Leading ($100)
301
338
  trailing: Trailing (100%)
339
+ textAlign:
340
+ label: Text alignment
341
+ blank: "(Auto)"
342
+ values:
343
+ left: Left
344
+ center: Center
345
+ centerRagged: Center (ragged)
346
+ right: Right
302
347
  thousandsSeparators:
303
348
  label: "Display thousands separators"
304
349
  inline_help: "For example, 1,000 in stories with English language setting."
@@ -409,16 +454,24 @@ en:
409
454
  label: "Display buttons"
410
455
  inline_help: |-
411
456
  Display buttons to open the links.
457
+ inline_help_disabled: |-
458
+ Since clicking a teaser triggers the flip animation,
459
+ links can only be offered as buttons.
412
460
  thumbnailBackgroundColor:
413
461
  label: Thumbnail background color
414
462
  inline_help: |-
415
463
  Visible when thumbnail fit mode has been set to
416
464
  "contain" or when the thumbnail image contains
417
465
  transparent areas.
466
+ backfaces:
467
+ label: Card backfaces
468
+ inline_help: |-
469
+ Turn cards with a flip animation and offer
470
+ additional content on the backside of the card.
418
471
  back: Back
419
- destroy: Delete
472
+ confirm_destroy: Are you sure you want to delete this teaser?
473
+ destroy: Delete teaser
420
474
  description: A list of tiles with thumbnail and caption
421
- confirm_delete_item: Are you sure you want to delete this teaser?
422
475
  items: Items
423
476
  name: Teasers
424
477
  tabs:
@@ -557,8 +610,8 @@ en:
557
610
  general: Image Gallery
558
611
  edit_item:
559
612
  back: Back
560
- destroy: Delete
561
- confirm_delete_link: Are you sure you want to delete this image gallery item?
613
+ confirm_destroy: Are you sure you want to delete this image gallery item?
614
+ destroy: Delete item
562
615
  attributes:
563
616
  image:
564
617
  label: Image
@@ -581,21 +634,35 @@ en:
581
634
  mute: Mute
582
635
  play: Keep playing
583
636
  turnDown: Keep playing at lower volume
637
+ autoplay:
638
+ inline_help: Start playing automatically when the element is scrolled into view.
639
+ label: Autoplay
584
640
  id:
585
641
  label: Audio
642
+ invertPlayButton:
643
+ inline_help: Use a dark play button instead of the default white one.
644
+ label: Invert Play Button
586
645
  playerControlVariant:
587
646
  inline_help: Choose the style of player controls.
588
- label: Waveform Style
647
+ label: Player Controls
589
648
  values:
590
649
  classic: Classic
591
- waveform: Waveform (Fein)
650
+ waveform: Waveform (Fine)
592
651
  waveformBars: Waveform (Bars)
593
652
  waveformLines: Waveform (Lines)
594
653
  posterId:
595
654
  label: Poster
655
+ remainingWaveformColor:
656
+ auto: (Auto)
657
+ inline_help: Color of the remaining waveform that has not been played yet.
658
+ label: Remaining Waveform
596
659
  waveformColor:
597
- inline_help: Color of the waveform's parts that represents the already played part of the audio.
598
- label: Waveform Color
660
+ inline_help: Color of the waveform that represents the already played part of the audio.
661
+ label: Played Waveform
662
+ waveformCursorColor:
663
+ auto: (Auto)
664
+ inline_help: Color of the cursor marking the current playback position.
665
+ label: Waveform Cursor
599
666
  description: Player or waveform with controls
600
667
  name: Audio
601
668
  tabs:
@@ -648,17 +715,22 @@ en:
648
715
  mute: Mute
649
716
  play: Keep playing
650
717
  turnDown: Keep playing at lower volume
718
+ enableFullscreen:
719
+ inline_help: Display a button to open the video in fullscreen mode.
720
+ inline_help_disabled: Not available for backdrop position or loop playback.
721
+ label: Enable Fullscreen
651
722
  hideControlBar:
652
723
  inline_help: For short videos where there is no need to seek.
653
- inline_help_disabled: Controls are always hidden for videos with playback mode "Loop".
724
+ inline_help_disabled: Controls are always hidden for videos with playback mode "Loop" or circle crop.
654
725
  label: Hide controls
655
726
  id:
656
727
  label: Video
657
728
  playbackMode:
658
- inline_help_html: Determines how the video starts:<ul><li><strong>Manual:</strong> When the user clicks the video.</li><li><strong>Autoplay:</strong> When the video is scrolled to the center of the browser viewport.</li><li><strong>Loop:</strong> In an endless loop soon as it becomes visible.</li></ul>
729
+ inline_help_html: Determines how the video starts:<ul><li><strong>Manual:</strong> When the user clicks the video.</li><li><strong>Autoplay:</strong> When the video is scrolled to the center of the browser viewport.</li><li><strong>Autoplay if entry unmuted:</strong> When scrolled to center, but only if sound for the entry has been unmuted, for example via the unmute button in the navigation bar.</li><li><strong>Loop:</strong> In an endless loop soon as it becomes visible.</li></ul>
659
730
  label: Playback Mode
660
731
  values:
661
732
  autoplay: Autoplay
733
+ autoplayIfUnmuted: Autoplay if entry unmuted
662
734
  loop: Loop
663
735
  manual: Manual
664
736
  portraitId:
@@ -687,6 +759,36 @@ en:
687
759
  name: Video
688
760
  tabs:
689
761
  general: Video
762
+ lottieAnimation:
763
+ attributes:
764
+ id:
765
+ label: Animation
766
+ playbackMode:
767
+ inline_help_html: Determines how the animation is played:<ul><li><strong>Loop:</strong> Again and again as long as it is visible.</li><li><strong>Play once:</strong> Once from start to end. Use the start animation setting to choose when playback begins.</li><li><strong>Scroll position:</strong> Frame by frame while scrolling. Use the scroll range setting to choose when scrolling the page drives the animation.</li></ul>
768
+ label: Playback Mode
769
+ values:
770
+ loop: Loop
771
+ playOnce: Play once
772
+ scroll: Scroll position
773
+ scrollRange:
774
+ inline_help_html: Determines when scrolling the page drives the animation:<ul><li><strong>While visible:</strong> From the moment the element starts entering the viewport until it has completely left it.</li><li><strong>While completely visible:</strong> While the element is completely inside the viewport.</li><li><strong>While crossing the viewport center:</strong> Scrolling the page drives the animation while the element crosses the vertical center of the viewport. Available for all elements except those with position "Alongside (sticky)" or "Stand alone".</li><li><strong>While locked in place:</strong> Scrolling the page drives the animation while the element stays in place. If the element does not stay in place - in mobile view, where such elements are anchored in the text, or if there is not enough text next to it - scrolling drives the animation while crossing the viewport center instead. Available for elements with position "Alongside (sticky)" or "Stand alone".</li><li><strong>While entering:</strong> While the element is entering the viewport.</li></ul>
775
+ label: Scroll Range
776
+ values:
777
+ contain: While completely visible
778
+ cover: While visible
779
+ entry: While entering
780
+ inFocus: While crossing the viewport center
781
+ inFocusWhenPinned: While locked in place
782
+ startAnimationTrigger:
783
+ inline_help_html: Determines when the animation starts playing:<ul><li><strong>When scrolled to center of viewport:</strong> Once the element reaches the vertical center of the viewport.</li><li><strong>When first scrolled into view:</strong> As soon as the element starts entering the viewport.</li></ul>The animation then plays to its end. It only pauses while the element is outside the viewport.
784
+ label: Start animation
785
+ values:
786
+ onActivate: When scrolled to center of viewport
787
+ onVisible: When first scrolled into view
788
+ description: Embed an animation exported as dotLottie file
789
+ name: Lottie animation
790
+ tabs:
791
+ general: Lottie animation
690
792
  question:
691
793
  attributes:
692
794
  expandByDefault:
@@ -765,6 +867,25 @@ en:
765
867
  name: Text Block
766
868
  tabs:
767
869
  general: Text Block
870
+ socialEmbed:
871
+ attributes:
872
+ provider:
873
+ label: Provider
874
+ values:
875
+ x: X
876
+ instagram: Instagram
877
+ bluesky: Bluesky
878
+ tiktok: TikTok
879
+ url:
880
+ label: Post URL
881
+ hideConversation:
882
+ label: Hide Conversation
883
+ hideMedia:
884
+ label: Hide Media
885
+ description: Embed posts from X, Instagram, Bluesky, or TikTok
886
+ name: Social Media Post
887
+ tabs:
888
+ general: Social Embed
768
889
  twitterEmbed:
769
890
  attributes:
770
891
  hideConversation:
@@ -838,8 +959,8 @@ en:
838
959
  hotspots:
839
960
  edit_area:
840
961
  back: Back
841
- destroy: Delete
842
- confirm_delete_link: Are you sure you want to delete this area?
962
+ confirm_destroy: Are you sure you want to delete this area?
963
+ destroy: Delete area
843
964
  tabs:
844
965
  area: Hotspot Area
845
966
  portrait: Portrait
@@ -963,9 +1084,6 @@ en:
963
1084
  phonePlatform: In phone layout
964
1085
  always: Always
965
1086
  never: Never
966
- panZoomInitially:
967
- label: Pan to first area initially
968
- inline_help: Starts the Pan & Zoom effect on the first hotspot area when it becomes active.
969
1087
  enableFullscreen:
970
1088
  label: Enable fullscreen
971
1089
  inline_help: Display a button to open the element in fullscreen mode.
@@ -1077,13 +1195,17 @@ en:
1077
1195
  inline_help: |-
1078
1196
  Chapter can be used as link destination but does not
1079
1197
  appear in the navigation bar.
1080
- confirm_destroy: |-
1081
- Really delete this chapter including ALL its sections?
1082
-
1083
- This operation cannot be undone.
1198
+ returnButtonLabel:
1199
+ label: Return button label
1200
+ sheetWidth:
1201
+ label: Overlay width
1202
+ values:
1203
+ full: Full width
1204
+ inset: With side margins
1084
1205
  save_error: There was an error while saving this chapter.
1085
1206
  tabs:
1086
1207
  chapter: Chapter
1208
+ excursion: Excursion
1087
1209
  edit_motif_area:
1088
1210
  blank_slate: No area selected.
1089
1211
  cancel: Cancel
@@ -1092,15 +1214,41 @@ en:
1092
1214
  hint: Drag to select the most important part of the image.
1093
1215
  reset: Reset
1094
1216
  save: Save
1217
+ chapter_menu_items:
1218
+ copy_permalink: Copy permalink
1219
+ move_to_main: Turn into chapter
1220
+ move_to_excursions: Turn into excursion
1221
+ destroy_chapter_menu_item:
1222
+ confirm_destroy: |-
1223
+ Really delete this chapter including ALL its sections?
1224
+
1225
+ This operation cannot be undone.
1226
+ destroy: Delete chapter
1227
+ destroy_content_element_menu_item:
1228
+ confirm_destroy: Really delete this element?
1229
+ destroy: Delete element
1230
+ selection_label: Delete selection
1231
+ duplicate_content_element_menu_item:
1232
+ label: Duplicate element
1233
+ selection_label: Duplicate selection
1234
+ content_element_menu_items:
1235
+ move: Move element...
1236
+ move_selection: Move selection...
1237
+ destroy_section_menu_item:
1238
+ confirm_destroy: Really delete this section including all its elements?
1239
+ destroy: Delete section
1095
1240
  edit_section:
1241
+ hidden_info: This section is hidden outside of the editor.
1242
+ motif_area_info_text: Mark the most important part of the backdrop that should be visible and unobstructed when reaching the section.
1096
1243
  attributes:
1097
1244
  appearance:
1098
- inline_help: This setting controls how the scrolling foreground should get dimmed to increase contrast from the background. The option "Cards" adds a box with rounded corners to the foreground, with "Shadow" you can add a light or dark shadow to increase readability.
1245
+ inline_help: Controls how the foreground is visually separated from the background. "Shadow" adds a gradient behind text. "Cards" places content on a rounded box. "Split" covers half the viewport width with an overlay for the content.
1099
1246
  label: Text-Background
1100
1247
  values:
1101
1248
  cards: Card
1102
1249
  shadow: Shadow
1103
1250
  transparent: Transparent
1251
+ split: Split
1104
1252
  atmoAudioFileId:
1105
1253
  inline_help: Choose an audio file, that shall be played in the background. If you want this audio to continue playing on following sections, just choose the same file again there.
1106
1254
  label: Atmo Audio
@@ -1126,12 +1274,8 @@ en:
1126
1274
  label: Background-Video (Portrait)
1127
1275
  dynamicShadowOpacity:
1128
1276
  inline_help: Intensity of the shadow which is faded in behind the text to ensure contrast when content is scrolled to intersect with the motif area. Note that this shadow is only visible if motif area and section content do not fit side by side. It's best to switch to phone preview when adjusting this value.
1129
- inline_help_disabled: Activate "Expose motif area" above to use this setting.
1277
+ inline_help_disabled: Set top padding to "Adjust automatically" in the section's padding settings to use this option.
1130
1278
  label: Dynamic shadow
1131
- exposeMotifArea:
1132
- inline_help: Ensure the selected motif area of the background asset is visible and not covered by other elements when first reaching the section. If motif area and section content do not fit side by side, extra space will be inserted at the top of the section to move content down.
1133
- inline_help_disabled: Click "Select motif area" in the "three dots" menu of the background image/video field above to use this feature. It let's you make sure important parts of the backdrop asset won't be hidden by other elements.
1134
- label: Expose motif area
1135
1279
  fullHeight:
1136
1280
  inline_help: Activate this option if the background of this section (e.g. image, color or video) is supposed to be enlarged such that the whole browser window (the so called viewport) is covered. Deactivate this option to create a short section. The height of the section and its background is then determined only by the content of the section. Multiple sections with different backgrounds can then be visible at once on the user's screen. This option needs to be activated for two adjacent sections to be able to use a fade transition between them.
1137
1281
  label: Use Full Viewport-Height
@@ -1163,8 +1307,26 @@ en:
1163
1307
  coverViewport: Cover viewport
1164
1308
  coverSection: Cover section
1165
1309
  cardSurfaceColor:
1310
+ inline_help: Background color of the card. Use a translucent color to let the backdrop shine through and enable background blur.
1166
1311
  label: Cards background color
1167
1312
  auto: "(Auto)"
1313
+ auto_color: "Auto color"
1314
+ shadowColor:
1315
+ inline_help: Color of the gradients that improve legibility of the content in front of the backdrop.
1316
+ label: Shadow color
1317
+ auto: "(Auto)"
1318
+ auto_color: "Auto color"
1319
+ splitOverlayColor:
1320
+ inline_help: Color of the overlay behind the content.
1321
+ label: Overlay color
1322
+ auto: "(Auto)"
1323
+ auto_color: "Auto color"
1324
+ overlayBackdropBlur:
1325
+ inline_help: Amount of blur applied to the backdrop behind the overlay.
1326
+ label: Background blur
1327
+ inline_help_disabled: Only available when overlay color has transparency.
1328
+ sectionPaddings:
1329
+ label: "Top/bottom padding"
1168
1330
  tabs:
1169
1331
  section: Section
1170
1332
  edit_section_transition:
@@ -1205,11 +1367,9 @@ en:
1205
1367
  header: Insert element
1206
1368
  no_options: No options available
1207
1369
  section_item:
1370
+ cutoff: Paywall cutoff
1208
1371
  drag_hint: Drag to move section
1209
- duplicate: Duplicate
1210
- insert_section_above: Insert section above
1211
- insert_section_below: Insert section below
1212
- copy_permalink: Copy permalink
1372
+ hidden: Only visible in editor
1213
1373
  save_error: There was an error while saving this section.
1214
1374
  transitions:
1215
1375
  beforeAfter: Static Backgrounds
@@ -1218,9 +1378,24 @@ en:
1218
1378
  reveal: Reveal
1219
1379
  scroll: Scroll
1220
1380
  scrollOver: Scroll over
1381
+ section_menu_items:
1382
+ copy_permalink: Copy permalink
1383
+ duplicate: Duplicate section
1221
1384
  hide: Hide outside of the editor
1385
+ insert_section_above: Insert section above
1386
+ insert_section_below: Insert section below
1387
+ move: Move section...
1388
+ reset_cutoff: Remove paywall cutoff
1389
+ set_cutoff: Set paywall cutoff above
1222
1390
  show: Show outside of the editor
1223
- hidden: Only visible in editor
1391
+ section_padding_visualization:
1392
+ intersecting_auto: "Visualization of dynamic padding that adjusts to the motif area size to prevent text from overlapping the motif"
1393
+ intersecting_manual: "Visualization of manually defined padding that stays constant as viewport size changes"
1394
+ side_by_side: "Visualization of top padding when content fits next to the motif area"
1395
+ top_padding: "Visualization of top padding"
1396
+ bottom_padding: "Visualization of bottom padding"
1397
+ section_paddings_input:
1398
+ motif: Motif
1224
1399
  select_link_destination:
1225
1400
  cancel: Cancel
1226
1401
  create: Create
@@ -1232,17 +1407,71 @@ en:
1232
1407
  select_file: Provide file download
1233
1408
  select_file_description: Let readers download a file when they click the link.
1234
1409
  select_in_sidebar: Select file
1410
+ selection_label: a file to download
1411
+ select_move_destination:
1412
+ cancel: Cancel
1413
+ header_insertPosition: Move section
1414
+ header_sectionPart: Move element
1415
+ hint: Select the position to move to.
1416
+ selectable_storyline_item:
1417
+ blank_slate: No chapters
1418
+ blank_slate_excursions: No excursions
1235
1419
  selectable_chapter_item:
1236
1420
  title: Select chapter
1421
+ insert_here: Move here
1237
1422
  selectable_section_item:
1238
1423
  title: Select section
1424
+ insert_here: Move here
1425
+ insert_at_beginning: Move to beginning
1426
+ insert_at_end: Move to end
1239
1427
  edit_motif_area_menu_item: Select motif area...
1428
+ edit_motif_area_input:
1429
+ select: Select motif area
1430
+ edit: Edit motif area
1431
+ warn: No motif area selected
1432
+ ignore_image: Ignore for this image
1433
+ ignore_video: Ignore for this video
1240
1434
  backdrop_content_element_input:
1241
1435
  add: New element
1242
1436
  unset: No longer use as backdrop
1243
1437
  scales:
1438
+ sectionPaddingTop:
1439
+ none: "-"
1440
+ xxxs: XXXS
1441
+ xxs: XXS
1442
+ xs: XS
1443
+ sm: S
1444
+ md: M
1445
+ lg: L
1446
+ xl: XL
1447
+ xxl: XXL
1448
+ xxxl: XXXL
1449
+ sectionPaddingBottom:
1450
+ none: "-"
1451
+ xxxs: XXXS
1452
+ xxs: XXS
1453
+ xs: XS
1454
+ sm: S
1455
+ md: M
1456
+ lg: L
1457
+ xl: XL
1458
+ xxl: XXL
1459
+ xxxl: XXXL
1244
1460
  contentElementBoxBorderRadius:
1245
1461
  none: None
1462
+ contentElementMargin:
1463
+ xxs: XXS
1464
+ xs: XS
1465
+ sm: S
1466
+ md: M
1467
+ lg: L
1468
+ xl: XL
1469
+ xxl: XXL
1470
+ contentElementBoxShadow:
1471
+ sm: S
1472
+ md: M
1473
+ lg: L
1474
+ xl: XL
1246
1475
  content_element_text_inline_file_rights_attributes:
1247
1476
  showTextInlineFileRightsBackdrop:
1248
1477
  label: "Backdrop behind inline file rights"
@@ -1258,23 +1487,180 @@ en:
1258
1487
  done: Done
1259
1488
  add_chapter: New chapter
1260
1489
  add_excursion: New excursion
1490
+ excursion_blank_slate: |-
1491
+ <p>
1492
+ <strong>Excursions</strong> provide additional content
1493
+ outside the main path. They open in a <strong>separate
1494
+ layer</strong> and readers automatically return to their
1495
+ original position.
1496
+ </p>
1497
+ <p>
1498
+ Create your first excursion and <strong>link to
1499
+ it</strong> from your story to make it accessible to
1500
+ readers.
1501
+ </p>
1502
+ <a target="_blank" rel="noopener noreferrer"
1503
+ href="https://pageflow.freshdesk.com/en/support/solutions/articles/11000134532-what-are-excursions-and-how-can-i-use-them-for-in-depth-content">Learn more about excursions</a>
1261
1504
  aspect_ratios:
1262
1505
  narrow: Landscape (4:3)
1263
1506
  portrait: Portrait (3:4)
1264
1507
  square: Square (1:1)
1265
1508
  wide: Landscape (16:9)
1266
1509
  original: Original
1510
+ content_element_style_list_input:
1511
+ add: "Add style..."
1512
+ remove: "Remove style"
1513
+ marginTop: "Margin top"
1514
+ marginBottom: "Margin bottom"
1515
+ boxShadow: "Box shadow"
1516
+ outlineColor: "Outline"
1267
1517
  image_modifier_list_input:
1268
1518
  add: "Add style..."
1269
1519
  remove: "Remove style"
1270
1520
  crop_types:
1271
1521
  circle: Circle
1522
+ edit_section_paddings:
1523
+ tabs:
1524
+ sectionPaddings: Paddings
1525
+ portrait: Portrait
1526
+ side_by_side_info: 'When motif and content fit side by side:'
1527
+ attributes:
1528
+ topPaddingVisualization:
1529
+ label: Top padding
1530
+ exposeMotifArea:
1531
+ label: Top Padding
1532
+ values:
1533
+ 'true': Adjust automatically to expose a motif in the background
1534
+ 'false': Set manually
1535
+ sideBySideVisualization:
1536
+ label: Side by side
1537
+ paddingTop:
1538
+ label: Top padding
1539
+ bottomPaddingVisualization:
1540
+ label: Bottom padding
1541
+ paddingBottom:
1542
+ label: Bottom padding
1543
+ samePortraitPaddings:
1544
+ label: Use same paddings as in landscape orientation
1545
+ portraitExposeMotifArea:
1546
+ label: Top Padding
1547
+ portraitPaddingTop:
1548
+ label: Top padding (Portrait)
1549
+ portraitPaddingBottom:
1550
+ label: Bottom padding (Portrait)
1551
+ remainingVerticalSpace:
1552
+ label: Remaining vertical space
1553
+ inline_help: Controls where content is positioned when it does not fill the full height of the section.
1554
+ inline_help_disabled: Only available when "Use Full Viewport-Height" is enabled in section settings.
1555
+ values:
1556
+ around: Around content
1557
+ above: Above content
1558
+ below: Below content
1559
+ edit_defaults:
1560
+ back: Appearance
1561
+ sections_info: Changes to these settings have no effect on existing sections.
1562
+ content_elements_info: |-
1563
+ Changes to these settings have no effect on existing elements.
1564
+ Settings can later be changed for individual elements.
1565
+ all_elements: All elements
1566
+ tabs:
1567
+ sections: New sections
1568
+ content_elements: New elements
1569
+ attributes:
1570
+ defaultSectionLayout:
1571
+ label: Content alignment
1572
+ inline_help: |-
1573
+ Default position of the scrolling foreground layer of
1574
+ new sections on desktop devices.
1575
+ values:
1576
+ center: Centered
1577
+ centerRagged: Centered (Ragged)
1578
+ left: Left
1579
+ right: Right
1580
+ defaultSectionAppearance:
1581
+ label: Text background
1582
+ inline_help: Default appearance of new sections.
1583
+ values:
1584
+ cards: Card
1585
+ shadow: Shadow
1586
+ transparent: Transparent
1587
+ topPaddingVisualization:
1588
+ label: Top padding
1589
+ defaultSectionPaddingTop:
1590
+ label: Top padding
1591
+ inline_help: Default vertical spacing above the content of new sections.
1592
+ bottomPaddingVisualization:
1593
+ label: Bottom padding
1594
+ defaultSectionPaddingBottom:
1595
+ label: Bottom padding
1596
+ inline_help: Default vertical spacing below the content of new sections.
1597
+ defaultContentElementFullWidthInPhoneLayout:
1598
+ label: Full width in phone layout
1599
+ inline_help: |-
1600
+ By default, make elements span the full width of the
1601
+ viewport on smaller screens.
1602
+ defaultCaptionVariant:
1603
+ label: Caption variant
1604
+ inline_help: Default look of captions of newly added elements.
1605
+ defaultFileRightsDisplay:
1606
+ label: Display rights of uploaded files
1607
+ inline_help: |-
1608
+ Decide if the credit note of newly uploaded files should be
1609
+ displayed in the summary list in the info box, or right at
1610
+ the place in the entry where the file is used.
1611
+ values:
1612
+ credits: In the info box
1613
+ inline: At the element where it is used
1272
1614
  typography_sizes:
1615
+ xxxl: Huge
1616
+ xxl: Extra large
1273
1617
  xl: Very large
1274
1618
  lg: Large
1275
1619
  md: Medium
1276
1620
  sm: Small
1277
1621
  xs: Very small
1622
+ xxs: Extra small
1623
+ xxxs: Tiny
1624
+ short:
1625
+ xxxl: XXXL
1626
+ xxl: XXL
1627
+ xl: XL
1628
+ lg: L
1629
+ md: M
1630
+ sm: S
1631
+ xs: XS
1632
+ xxs: XXS
1633
+ xxxs: XXXS
1634
+ link_button_variant_attributes:
1635
+ linkButtonVariant:
1636
+ label: Button Variante
1637
+ blank: "(Default)"
1638
+ main_menu:
1639
+ comments: Comments
1640
+ comments_view:
1641
+ activity: Latest activity
1642
+ always_show_comments: Always show comments
1643
+ display_options: Comment display
1644
+ filter:
1645
+ all: All topics
1646
+ unresolved: Unresolved topics
1647
+ new_thread: New topic
1648
+ section: Section
1649
+ tabs:
1650
+ comments: All
1651
+ selection: For selection
1652
+ comment_activity_view:
1653
+ back: Comments
1654
+ tabs:
1655
+ activity: Latest activity
1656
+ new_thread_view:
1657
+ back: Comments
1658
+ tabs:
1659
+ newComment: New topic
1660
+ configuration_places:
1661
+ entry: "Settings"
1662
+ label: "%{chapter} - %{subject}"
1663
+ section: "Section %{number}"
1278
1664
  help_entries:
1279
1665
  content_elements:
1280
1666
  menu_item: Content Elements
@@ -1389,11 +1775,15 @@ en:
1389
1775
  text: "# Section Options\n\nA click in an empty area of a section will display a selection rectangle around the section. On the right side of the selection rectangle you will find a button with a pencil icon that allows you to edit the options of the section in the sidebar.\n\n## Layout\n\nThe **Foreground Positioning** option allows you to select how the contents of the section should be arranged horizontally. For example, if the background of the section is on the right side, text and content elements can be positioned on the left side and vice versa. For backgrounds in the total or a centred motif, the content elements can be positioned in the middle.\n\nBy selecting a **gradient function**, a sufficient contrast between text and background can be ensured. With the **shadow**, the background is darkened or lightened with a colour gradient. With the **Card** setting, the content elements are displayed on a surface with rounded corners.\n\n## Background\n\nEither an **image**, a **colour** or a **video loop** can be displayed in the background of the section. For background images and video, the important (to be emphasised, essential) part of the image can be marked. This motif area is then initially not covered by the scrolling foreground in both desktop and mobile device displays. Further information about the \"motif areas\" here.\n\nThe **Background image (portrait)** option can be used to optionally specify an alternative image to be used if the screen aspect ratio of a terminal device is higher than wide, for example on smartphones and tablets in portrait mode. The image can be configured as an alternative to the background image in landscape mode, from which otherwise important parts might be cut off.\n\n## Atmo Audio\n\nWith the **\"Atmo\"**, each section can play sound in the background, regardless of the content element. It can be determined whether a sound can only be heard in one section or continues over several sections without interruption. Simply select the same audio file for the following sections under **Options** as Atmo. In this way chapters can be acoustically separated from each other and coherent pages can be interwoven more strongly.\n\nWhen playing audio and video, you can also select whether the background sound should continue to play normally or more quietly during media playback, or whether it should fade out completely. The setting of the ambience sounds can be accessed on each page via the **Options** tab. If the atmosphere disturbs you while editing your entry in the editor, you can temporarily mute it with the key combination **Alt + a**. To reactivate the Atmo, simply press **Alt + a** again.\n\n\n## Transitions\n\nA **transition effect** can be selected between every two sections. \nClick in the background of a section to select it. On the right side \nof the selection rectangle, buttons with two interlocking arrows as \nsymbols appear at the borders of the neighbouring sections. \n\nClick on one of the buttons to select the transition effect for the section \nborder in the sidebar.\n\nThe **Fade** effect is only available between sections for which the \n**Full Viewport Height** option has been activated.\n"
1390
1776
  inline_editing:
1391
1777
  add_caption: Add caption
1778
+ add_comment: Add comment
1392
1779
  add_content_element: Add new element
1393
1780
  cancel: Cancel
1394
1781
  drag_content_element: Drag to move element
1782
+ padding_suppressed_before_full_width: Padding suppressed before full width element
1783
+ padding_suppressed_after_full_width: Padding suppressed after full width element
1395
1784
  edit_section_transition_after: Edit section transition
1396
1785
  edit_section_transition_before: Edit section transition
1786
+ flip_card: Flip card
1397
1787
  formats:
1398
1788
  block_quote: Block quote
1399
1789
  bulleted_list: Bulleted list
@@ -1414,9 +1804,12 @@ en:
1414
1804
  chapter_number: Chapter %{number}
1415
1805
  deleted_chapter: Deleted chapter
1416
1806
  deleted_file: Deleted file
1807
+ excursion_with_title: "Excursion: %{title}"
1417
1808
  opens_in_new_tab: Opens in new tab
1418
1809
  opens_in_same_tab: Outside editor, will open in same tab
1810
+ untitled_excursion: Untitled excursion
1419
1811
  visit_chapter: Go to chapter
1812
+ visit_excursion: Go to excursion
1420
1813
  visit_section: Go to section
1421
1814
  remove_link: Remove link
1422
1815
  select_content_element: Select element
@@ -1437,3 +1830,76 @@ en:
1437
1830
  select_link_destination: "Select link destination"
1438
1831
  change_link_destination: "Change link destination"
1439
1832
  remove_link: "Remove link"
1833
+ edit_section_padding_top: Edit top padding
1834
+ edit_section_padding_bottom: Edit bottom padding
1835
+ content_element_margin_top: Top margin
1836
+ content_element_margin_bottom: Bottom margin
1837
+ expose_motif_area: Expose motif
1838
+ review:
1839
+ add_comment: Add comment
1840
+ cancel_add_comment: Cancel
1841
+ hide_comments: Hide comments
1842
+ show_comments: Show comments
1843
+ show_comments_with_unread:
1844
+ one: Show comments (1 topic with new activity)
1845
+ other: Show comments (%{count} topics with new activity)
1846
+ comment_toolbar: Comments
1847
+ filter:
1848
+ label: Filter comments
1849
+ unresolved: Unresolved
1850
+ all: All
1851
+ previous_comment: Previous comment
1852
+ next_comment: Next comment
1853
+ comment_count:
1854
+ zero: No comments
1855
+ one: 1 comment
1856
+ other: '%{count} comments'
1857
+ unread_count:
1858
+ one: 1 unread
1859
+ other: '%{count} unread'
1860
+ unread_reply_count:
1861
+ one: 1 unread
1862
+ other: '%{count} unread'
1863
+ unread_replies: Unread replies
1864
+ select_content_element: Select to comment
1865
+ select_section: Select section to comment
1866
+ select_text_to_comment: Select text to comment
1867
+ new_topic: New topic
1868
+ add_comment_placeholder: Add a comment...
1869
+ reply_placeholder: Reply...
1870
+ cancel: Cancel
1871
+ save: Save
1872
+ send: Send
1873
+ enter_for_new_line: Enter for new line
1874
+ comment_actions: Comment actions
1875
+ edit_comment: Edit
1876
+ edited: Edited %{date}
1877
+ resolve: Mark as resolved
1878
+ unresolve: Mark as unresolved
1879
+ resolution: Marked as resolved
1880
+ resolution_by: Marked as resolved by
1881
+ thread_actions: Thread actions
1882
+ resolved_count:
1883
+ one: 1 resolved
1884
+ other: '%{count} resolved'
1885
+ reply_count:
1886
+ one: 1 reply
1887
+ other: '%{count} replies'
1888
+ earlier_reply_count:
1889
+ one: 1 more
1890
+ other: '%{count} more'
1891
+ no_threads_yet: No comments yet
1892
+ refers_to_deleted_element: Refers to a deleted element
1893
+ activity:
1894
+ toggle: Latest activity
1895
+ summary:
1896
+ topic: topic started
1897
+ reply_count:
1898
+ one: 1 reply
1899
+ other: '%{count} replies'
1900
+ resolution: marked as resolved
1901
+ and: ' and '
1902
+ today: Today
1903
+ yesterday: Yesterday
1904
+ no_activity_yet: No activity yet
1905
+ show_more: Show more