pageflow 17.0.5 → 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 (636) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +342 -41
  3. data/README.md +3 -5
  4. data/admins/pageflow/accounts.rb +22 -20
  5. data/admins/pageflow/entry.rb +76 -26
  6. data/admins/pageflow/entry_templates.rb +10 -9
  7. data/admins/pageflow/folder.rb +1 -1
  8. data/admins/pageflow/membership.rb +15 -15
  9. data/admins/pageflow/revisions.rb +5 -5
  10. data/admins/pageflow/site_root_entry.rb +64 -0
  11. data/admins/pageflow/sites.rb +12 -3
  12. data/admins/pageflow/translations.rb +75 -0
  13. data/admins/pageflow/user.rb +21 -35
  14. data/app/assets/images/pageflow/admin/icons/comment.svg +1 -0
  15. data/app/assets/javascripts/pageflow/admin/entries.js +30 -5
  16. data/app/assets/javascripts/pageflow/dist/ui.js +4228 -900
  17. data/app/assets/javascripts/pageflow/editor/vendor.js +0 -1
  18. data/app/assets/javascripts/pageflow/ui.js +0 -1
  19. data/app/assets/stylesheets/pageflow/admin/entries/index_table.scss +2 -1
  20. data/app/assets/stylesheets/pageflow/admin/entry_comments_indicator.scss +45 -0
  21. data/app/assets/stylesheets/pageflow/admin/permalink_input.scss +8 -0
  22. data/app/assets/stylesheets/pageflow/admin.scss +1 -0
  23. data/app/assets/stylesheets/pageflow/animations/spin.scss +9 -0
  24. data/app/assets/stylesheets/pageflow/animations.scss +1 -0
  25. data/app/assets/stylesheets/pageflow/editor/background_positioning.scss +27 -5
  26. data/app/assets/stylesheets/pageflow/editor/base.scss +11 -1
  27. data/app/assets/stylesheets/pageflow/editor/drop_down_button.scss +20 -2
  28. data/app/assets/stylesheets/pageflow/editor/edit_configuration_view.scss +5 -0
  29. data/app/assets/stylesheets/pageflow/editor/file_folders.scss +127 -0
  30. data/app/assets/stylesheets/pageflow/editor/file_meta_data.scss +5 -2
  31. data/app/assets/stylesheets/pageflow/editor/file_meta_data_overlay.scss +45 -0
  32. data/app/assets/stylesheets/pageflow/editor/file_preview.scss +138 -0
  33. data/app/assets/stylesheets/pageflow/editor/file_references.scss +68 -0
  34. data/app/assets/stylesheets/pageflow/editor/file_settings_dialog.scss +1 -1
  35. data/app/assets/stylesheets/pageflow/editor/file_stage_icons.scss +17 -0
  36. data/app/assets/stylesheets/pageflow/editor/file_stages.scss +25 -32
  37. data/app/assets/stylesheets/pageflow/editor/file_thumbnails.scss +31 -48
  38. data/app/assets/stylesheets/pageflow/editor/file_type_pills.scss +73 -0
  39. data/app/assets/stylesheets/pageflow/editor/files.scss +242 -50
  40. data/app/assets/stylesheets/pageflow/editor/filtered_files.scss +161 -9
  41. data/app/assets/stylesheets/pageflow/editor/folder_breadcrumb.scss +40 -0
  42. data/app/assets/stylesheets/pageflow/editor/info_box.scss +23 -3
  43. data/app/assets/stylesheets/pageflow/editor/inputs/edit_defaults_button.scss +15 -0
  44. data/app/assets/stylesheets/pageflow/editor/inputs.scss +1 -0
  45. data/app/assets/stylesheets/pageflow/editor/list.scss +89 -37
  46. data/app/assets/stylesheets/pageflow/editor/list_search_field.scss +52 -0
  47. data/app/assets/stylesheets/pageflow/editor/manage_files.scss +9 -0
  48. data/app/assets/stylesheets/pageflow/editor/menu.scss +14 -0
  49. data/app/assets/stylesheets/pageflow/editor/move_to_folder_dialog.scss +83 -0
  50. data/app/assets/stylesheets/pageflow/editor/outline.scss +0 -13
  51. data/app/assets/stylesheets/pageflow/editor/sortable.scss +12 -0
  52. data/app/assets/stylesheets/pageflow/mixins/buttons.scss +4 -4
  53. data/app/assets/stylesheets/pageflow/mixins/pageflow.scss +9 -5
  54. data/app/assets/stylesheets/pageflow/ui/color_picker.scss +230 -0
  55. data/app/assets/stylesheets/pageflow/ui/forms.scss +38 -4
  56. data/app/assets/stylesheets/pageflow/ui/functions.scss +12 -2
  57. data/app/assets/stylesheets/pageflow/ui/input/color_input.scss +9 -8
  58. data/app/assets/stylesheets/pageflow/ui/input/file_name_input.scss +37 -0
  59. data/app/assets/stylesheets/pageflow/ui/input/text_area_input.scss +15 -0
  60. data/app/assets/stylesheets/pageflow/ui/overrides.scss +8 -0
  61. data/app/assets/stylesheets/pageflow/ui/properties.scss +34 -0
  62. data/app/assets/stylesheets/pageflow/ui/tabs_view.scss +8 -3
  63. data/app/assets/stylesheets/pageflow/ui.scss +4 -1
  64. data/app/controllers/concerns/pageflow/controller_delegation.rb +1 -1
  65. data/app/controllers/concerns/pageflow/edit_locking.rb +17 -10
  66. data/app/controllers/concerns/pageflow/entry_password_protection.rb +1 -0
  67. data/app/controllers/concerns/pageflow/public_https_mode.rb +2 -1
  68. data/app/controllers/concerns/pageflow/quota_verification.rb +5 -4
  69. data/app/controllers/pageflow/admin/initial_passwords_controller.rb +1 -0
  70. data/app/controllers/pageflow/application_controller.rb +19 -19
  71. data/app/controllers/pageflow/chapters_controller.rb +3 -2
  72. data/app/controllers/pageflow/edit_locks_controller.rb +3 -2
  73. data/app/controllers/pageflow/editor/encoding_confirmations_controller.rb +1 -0
  74. data/app/controllers/pageflow/editor/entries_controller.rb +3 -1
  75. data/app/controllers/pageflow/editor/entry_publications_controller.rb +1 -0
  76. data/app/controllers/pageflow/editor/file_folders_controller.rb +80 -0
  77. data/app/controllers/pageflow/editor/file_import_controller.rb +4 -3
  78. data/app/controllers/pageflow/editor/files_controller.rb +20 -10
  79. data/app/controllers/pageflow/editor/oembeds_controller.rb +21 -0
  80. data/app/controllers/pageflow/editor/widgets_controller.rb +1 -0
  81. data/app/controllers/pageflow/entries_controller.rb +85 -21
  82. data/app/controllers/pageflow/feeds_controller.rb +1 -1
  83. data/app/controllers/pageflow/files_controller.rb +1 -0
  84. data/app/controllers/pageflow/pages_controller.rb +4 -2
  85. data/app/controllers/pageflow/review/comment_thread_reads_controller.rb +30 -0
  86. data/app/controllers/pageflow/review/comment_threads_controller.rb +60 -0
  87. data/app/controllers/pageflow/review/comments_controller.rb +53 -0
  88. data/app/controllers/pageflow/revisions_controller.rb +5 -1
  89. data/app/controllers/pageflow/sitemaps_controller.rb +1 -1
  90. data/app/controllers/pageflow/storylines_controller.rb +1 -0
  91. data/app/helpers/pageflow/admin/cutoff_modes_helper.rb +12 -0
  92. data/app/helpers/pageflow/admin/entries_helper.rb +41 -1
  93. data/app/helpers/pageflow/admin/entry_translations_helper.rb +18 -0
  94. data/app/helpers/pageflow/admin/features_helper.rb +1 -1
  95. data/app/helpers/pageflow/admin/form_helper.rb +3 -3
  96. data/app/helpers/pageflow/admin/locales_helper.rb +10 -2
  97. data/app/helpers/pageflow/admin/memberships_helper.rb +32 -32
  98. data/app/helpers/pageflow/admin/revisions_helper.rb +1 -1
  99. data/app/helpers/pageflow/admin/sites_helper.rb +22 -0
  100. data/app/helpers/pageflow/admin/users_helper.rb +7 -5
  101. data/app/helpers/pageflow/admin/widgets_helper.rb +5 -5
  102. data/app/helpers/pageflow/asset_urls_helper.rb +1 -1
  103. data/app/helpers/pageflow/audio_files_helper.rb +5 -2
  104. data/app/helpers/pageflow/background_image_helper.rb +7 -6
  105. data/app/helpers/pageflow/common_entry_seed_helper.rb +7 -7
  106. data/app/helpers/pageflow/editor/config_helper.rb +3 -1
  107. data/app/helpers/pageflow/editor/files_helper.rb +1 -1
  108. data/app/helpers/pageflow/embed_code_helper.rb +3 -3
  109. data/app/helpers/pageflow/entries_helper.rb +52 -46
  110. data/app/helpers/pageflow/entry_json_seed_helper.rb +7 -6
  111. data/app/helpers/pageflow/feeds_helper.rb +2 -2
  112. data/app/helpers/pageflow/file_background_images_helper.rb +2 -2
  113. data/app/helpers/pageflow/file_thumbnails_helper.rb +4 -3
  114. data/app/helpers/pageflow/files_helper.rb +5 -4
  115. data/app/helpers/pageflow/folders_helper.rb +8 -5
  116. data/app/helpers/pageflow/help_entries_helper.rb +2 -2
  117. data/app/helpers/pageflow/hreflang_links_helper.rb +37 -0
  118. data/app/helpers/pageflow/info_box_helper.rb +7 -11
  119. data/app/helpers/pageflow/media_query_helper.rb +3 -3
  120. data/app/helpers/pageflow/navigation_bar_helper.rb +1 -1
  121. data/app/helpers/pageflow/overview_helper.rb +1 -1
  122. data/app/helpers/pageflow/page_types_helper.rb +5 -5
  123. data/app/helpers/pageflow/pages_helper.rb +29 -15
  124. data/app/helpers/pageflow/public_i18n_helper.rb +10 -9
  125. data/app/helpers/pageflow/quota_helper.rb +4 -4
  126. data/app/helpers/pageflow/render_json_helper.rb +6 -3
  127. data/app/helpers/pageflow/revision_file_helper.rb +2 -1
  128. data/app/helpers/pageflow/sites_helper.rb +3 -3
  129. data/app/helpers/pageflow/social_share_helper.rb +24 -10
  130. data/app/helpers/pageflow/social_share_links_helper.rb +12 -9
  131. data/app/helpers/pageflow/structured_data_helper.rb +5 -2
  132. data/app/helpers/pageflow/stub_page_configuration.rb +7 -3
  133. data/app/helpers/pageflow/text_direction_helper.rb +1 -1
  134. data/app/helpers/pageflow/themes_helper.rb +2 -4
  135. data/app/helpers/pageflow/video_files_helper.rb +29 -13
  136. data/app/helpers/pageflow/widgets_helper.rb +8 -6
  137. data/app/inputs/pageflow_permalink_input.rb +8 -3
  138. data/app/jobs/pageflow/application_job.rb +1 -0
  139. data/app/jobs/pageflow/entry_export_import/upload_and_publish_file_job.rb +1 -1
  140. data/app/jobs/pageflow/poll_meta_data_from_zencoder_job.rb +1 -0
  141. data/app/jobs/pageflow/poll_zencoder_job.rb +3 -2
  142. data/app/jobs/pageflow/process_image_or_text_track_job.rb +1 -0
  143. data/app/jobs/pageflow/prune_auto_snapshots_job.rb +1 -0
  144. data/app/jobs/pageflow/request_meta_data_from_zencoder_job.rb +1 -0
  145. data/app/jobs/pageflow/submit_file_to_zencoder_job.rb +1 -0
  146. data/app/mailers/pageflow/user_mailer.rb +1 -0
  147. data/app/models/concerns/pageflow/auto_generated_perma_id.rb +20 -1
  148. data/app/models/concerns/pageflow/entry_publication_states.rb +7 -3
  149. data/app/models/concerns/pageflow/feature_target.rb +8 -4
  150. data/app/models/concerns/pageflow/output_source.rb +3 -3
  151. data/app/models/concerns/pageflow/permalinkable.rb +2 -1
  152. data/app/models/concerns/pageflow/reusable_file.rb +24 -24
  153. data/app/models/concerns/pageflow/serialization_blacklist.rb +3 -5
  154. data/app/models/concerns/pageflow/suspendable.rb +5 -3
  155. data/app/models/concerns/pageflow/theme_referencer.rb +1 -1
  156. data/app/models/concerns/pageflow/translatable.rb +62 -0
  157. data/app/models/concerns/pageflow/translated_attributes.rb +101 -0
  158. data/app/models/concerns/pageflow/uploadable_file.rb +6 -6
  159. data/app/models/pageflow/account.rb +6 -5
  160. data/app/models/pageflow/account_member_query.rb +1 -1
  161. data/app/models/pageflow/account_role_query.rb +1 -1
  162. data/app/models/pageflow/application_query.rb +1 -1
  163. data/app/models/pageflow/application_record.rb +1 -1
  164. data/app/models/pageflow/audio_file.rb +4 -4
  165. data/app/models/pageflow/audio_file_url_templates.rb +1 -1
  166. data/app/models/pageflow/authentication_token.rb +2 -2
  167. data/app/models/pageflow/chapter.rb +6 -1
  168. data/app/models/pageflow/chapter_scaffold.rb +2 -4
  169. data/app/models/pageflow/cname_site_request_scope.rb +1 -1
  170. data/app/models/pageflow/comment.rb +30 -0
  171. data/app/models/pageflow/comment_thread.rb +65 -0
  172. data/app/models/pageflow/comment_thread_read.rb +22 -0
  173. data/app/models/pageflow/customized_theme.rb +9 -8
  174. data/app/models/pageflow/draft_entry.rb +49 -9
  175. data/app/models/pageflow/edit_lock.rb +19 -21
  176. data/app/models/pageflow/encoding_confirmation.rb +2 -2
  177. data/app/models/pageflow/entries_feed.rb +2 -2
  178. data/app/models/pageflow/entry.rb +46 -30
  179. data/app/models/pageflow/entry_at_revision.rb +14 -2
  180. data/app/models/pageflow/entry_comment_summary.rb +114 -0
  181. data/app/models/pageflow/entry_duplicate.rb +8 -5
  182. data/app/models/pageflow/entry_publication.rb +2 -2
  183. data/app/models/pageflow/entry_role_query.rb +4 -4
  184. data/app/models/pageflow/entry_template.rb +4 -4
  185. data/app/models/pageflow/entry_title_or_account_name_query.rb +2 -2
  186. data/app/models/pageflow/entry_translation_group.rb +42 -0
  187. data/app/models/pageflow/file_folder.rb +74 -0
  188. data/app/models/pageflow/file_reuse.rb +5 -4
  189. data/app/models/pageflow/file_usage.rb +18 -3
  190. data/app/models/pageflow/folder.rb +2 -2
  191. data/app/models/pageflow/home_button.rb +7 -7
  192. data/app/models/pageflow/image_file.rb +44 -25
  193. data/app/models/pageflow/image_file_url_templates.rb +4 -4
  194. data/app/models/pageflow/invitation_form.rb +2 -1
  195. data/app/models/pageflow/legal_info.rb +38 -0
  196. data/app/models/pageflow/managed_user_query.rb +1 -1
  197. data/app/models/pageflow/membership.rb +5 -5
  198. data/app/models/pageflow/nested_revision_component_copy.rb +263 -0
  199. data/app/models/pageflow/null_user.rb +1 -1
  200. data/app/models/pageflow/overview_button.rb +1 -1
  201. data/app/models/pageflow/page.rb +7 -3
  202. data/app/models/pageflow/permalink.rb +24 -2
  203. data/app/models/pageflow/permalink_directory.rb +7 -0
  204. data/app/models/pageflow/permalink_redirect.rb +7 -0
  205. data/app/models/pageflow/positioned_file.rb +5 -5
  206. data/app/models/pageflow/potential_entry_translations.rb +55 -0
  207. data/app/models/pageflow/potential_memberships.rb +5 -4
  208. data/app/models/pageflow/published_entry.rb +62 -11
  209. data/app/models/pageflow/revision.rb +29 -16
  210. data/app/models/pageflow/roles.rb +14 -18
  211. data/app/models/pageflow/site.rb +46 -3
  212. data/app/models/pageflow/site_root_entry_form.rb +27 -0
  213. data/app/models/pageflow/sitemaps.rb +10 -1
  214. data/app/models/pageflow/storyline.rb +5 -2
  215. data/app/models/pageflow/storyline_scaffold.rb +1 -1
  216. data/app/models/pageflow/text_track_file.rb +1 -1
  217. data/app/models/pageflow/text_track_file_url_templates.rb +1 -1
  218. data/app/models/pageflow/theme_customization_file.rb +3 -2
  219. data/app/models/pageflow/thumbnail_file_resolver.rb +1 -1
  220. data/app/models/pageflow/url_template.rb +1 -1
  221. data/app/models/pageflow/used_file.rb +13 -3
  222. data/app/models/pageflow/user_name_query.rb +2 -2
  223. data/app/models/pageflow/video_file.rb +22 -15
  224. data/app/models/pageflow/video_file_url_templates.rb +6 -4
  225. data/app/models/pageflow/widget.rb +5 -4
  226. data/app/models/pageflow/with_file_usage_extension.rb +1 -1
  227. data/app/models/pageflow/zencoder_attachment.rb +8 -8
  228. data/app/policies/pageflow/account_policy.rb +3 -1
  229. data/app/policies/pageflow/admin/admin_only_tab_policy.rb +1 -0
  230. data/app/policies/pageflow/admin/entry_tab_policy.rb +1 -0
  231. data/app/policies/pageflow/application_policy.rb +2 -0
  232. data/app/policies/pageflow/entry_policy.rb +7 -1
  233. data/app/policies/pageflow/entry_template_policy.rb +2 -1
  234. data/app/policies/pageflow/file_policy.rb +4 -7
  235. data/app/policies/pageflow/folder_policy.rb +18 -8
  236. data/app/policies/pageflow/membership_policy.rb +6 -4
  237. data/app/policies/pageflow/site_policy.rb +10 -3
  238. data/app/policies/pageflow/user_policy.rb +6 -4
  239. data/app/state_machines/pageflow/image_and_text_track_processing_state_machine.rb +3 -2
  240. data/app/state_machines/pageflow/media_encoding_state_machine.rb +5 -4
  241. data/app/views/admin/accounts/_entry_template_details.html.arb +2 -2
  242. data/app/views/admin/entries/_attributes_table.html.arb +6 -5
  243. data/app/views/admin/entries/_form.html.erb +2 -1
  244. data/app/views/admin/entries/_permalink_inputs.html.erb +9 -2
  245. data/app/views/admin/entry_templates/_form.html.erb +1 -3
  246. data/app/views/admin/site_root_entry/choose.html.erb +19 -0
  247. data/app/views/admin/sites/_fields.html.erb +14 -1
  248. data/app/views/admin/translations/_form.html.erb +31 -0
  249. data/app/views/admin/users/_attributes_table.html.arb +13 -0
  250. data/app/views/components/pageflow/admin/add_membership_button.rb +13 -12
  251. data/app/views/components/pageflow/admin/custom_scopes_renderer.rb +1 -0
  252. data/app/views/components/pageflow/admin/embed_code_field.rb +1 -0
  253. data/app/views/components/pageflow/admin/embedded_index_table.rb +9 -10
  254. data/app/views/components/pageflow/admin/entries_tab.rb +1 -0
  255. data/app/views/components/pageflow/admin/entry_publication_state_indicator.rb +6 -5
  256. data/app/views/components/pageflow/admin/entry_templates_tab.rb +2 -1
  257. data/app/views/components/pageflow/admin/entry_translations_tab.rb +102 -0
  258. data/app/views/components/pageflow/admin/entry_user_badge_list.rb +1 -0
  259. data/app/views/components/pageflow/admin/extensible_attributes_table.rb +9 -8
  260. data/app/views/components/pageflow/admin/features_tab.rb +1 -0
  261. data/app/views/components/pageflow/admin/grouped_folder_list.rb +1 -0
  262. data/app/views/components/pageflow/admin/icon_link_to.rb +1 -0
  263. data/app/views/components/pageflow/admin/members_tab.rb +4 -3
  264. data/app/views/components/pageflow/admin/membership_role_with_tooltip.rb +3 -2
  265. data/app/views/components/pageflow/admin/revisions_tab.rb +14 -10
  266. data/app/views/components/pageflow/admin/sites_tab.rb +1 -0
  267. data/app/views/components/pageflow/admin/tabs_view.rb +1 -0
  268. data/app/views/components/pageflow/admin/timestamp.rb +6 -5
  269. data/app/views/components/pageflow/admin/user_account_badge_list.rb +2 -3
  270. data/app/views/components/pageflow/admin/user_accounts_tab.rb +1 -0
  271. data/app/views/components/pageflow/admin/user_entries_tab.rb +1 -0
  272. data/app/views/components/pageflow/admin/users_tab.rb +1 -0
  273. data/app/views/pageflow/audio_files/_audio_file.json.jbuilder +0 -1
  274. data/app/views/pageflow/editor/config/_seeds.json.jbuilder +5 -3
  275. data/app/views/pageflow/editor/entries/_entry.json.jbuilder +2 -1
  276. data/app/views/pageflow/editor/entries/index.json.jbuilder +1 -1
  277. data/app/views/pageflow/editor/entries/seed.json.erb +1 -0
  278. data/app/views/pageflow/editor/entries/show.json.jbuilder +1 -1
  279. data/app/views/pageflow/editor/entry_publications/check.json.jbuilder +2 -2
  280. data/app/views/pageflow/editor/file_folders/_file_folder.json.jbuilder +5 -0
  281. data/app/views/pageflow/editor/file_folders/create.json.jbuilder +1 -0
  282. data/app/views/pageflow/editor/file_folders/index.json.jbuilder +3 -0
  283. data/app/views/pageflow/editor/files/_file.json.jbuilder +7 -14
  284. data/app/views/pageflow/editor/files/create.json.jbuilder +1 -1
  285. data/app/views/pageflow/editor/files/index.json.jbuilder +1 -1
  286. data/app/views/pageflow/editor/image_files/_image_file.json.jbuilder +3 -0
  287. data/app/views/pageflow/editor/sites/_site.json.jbuilder +1 -0
  288. data/app/views/pageflow/editor/video_files/_video_file.json.jbuilder +4 -3
  289. data/app/views/pageflow/entries/share_menu/_bluesky_link.html.erb +8 -0
  290. data/app/views/pageflow/entries/share_menu/_threads_link.html.erb +8 -0
  291. data/app/views/pageflow/files/_file.json.jbuilder +5 -3
  292. data/app/views/pageflow/image_files/_image_file.json.jbuilder +0 -1
  293. data/app/views/pageflow/review/comment_threads/_comment_thread.json.jbuilder +20 -0
  294. data/app/views/pageflow/review/comment_threads/create.json.jbuilder +2 -0
  295. data/app/views/pageflow/review/comment_threads/index.json.jbuilder +13 -0
  296. data/app/views/pageflow/review/comments/_comment.json.jbuilder +13 -0
  297. data/app/views/pageflow/review/comments/create.json.jbuilder +1 -0
  298. data/app/views/pageflow/sitemaps/index.xml.builder +9 -1
  299. data/app/views/pageflow/social_share/_entry_meta_tags.html.erb +1 -1
  300. data/app/views/pageflow/social_share/_page_meta_tags.html.erb +1 -1
  301. data/app/views/pageflow/structured_data/_entry.json.jbuilder +2 -3
  302. data/app/views/pageflow/video_files/_video_file.json.jbuilder +0 -1
  303. data/config/initializers/active_admin_patches.rb +3 -6
  304. data/config/initializers/admin_resource_tabs.rb +3 -0
  305. data/config/initializers/paperclip.rb +1 -0
  306. data/config/initializers/symmetric_encryption.rb +1 -1
  307. data/config/initializers/zencoder.rb +24 -13
  308. data/config/locales/de.yml +256 -12
  309. data/config/locales/en.yml +253 -15
  310. data/config/routes.rb +29 -13
  311. data/config/spring.rb +2 -1
  312. data/db/migrate/20140418225525_setup_schema.rb +2 -2
  313. data/db/migrate/20190306161431_copy_file_attributes_of_failed_uploads.rb +2 -2
  314. data/db/migrate/20190820152900_drop_accounts_themes.rb +2 -1
  315. data/db/migrate/20191202145757_create_pageflow_scrolled_sections.rb +11 -11
  316. data/db/migrate/20191202150657_create_pageflow_scrolled_chapters.rb +1 -1
  317. data/db/migrate/20191202154723_create_pageflow_scrolled_content_elements.rb +9 -9
  318. data/db/migrate/20191219143450_add_position_to_content_elements.rb +2 -1
  319. data/db/migrate/20200117133200_change_revision_appearance_option_default_and_null.rb +2 -1
  320. data/db/migrate/20200122115400_create_pageflow_entry_templates.rb +25 -25
  321. data/db/migrate/20200206134400_convert_legacy_scrolled_content_element_types.rb +3 -3
  322. data/db/migrate/20221215120856_associate_entry_templates_with_sites.rb +2 -2
  323. data/db/migrate/20230120092923_create_other_files.rb +2 -1
  324. data/db/migrate/20230419083307_create_pageflow_entry_translation_group.rb +9 -0
  325. data/db/migrate/20240612110434_add_cutoff_mode_name_to_sites.rb +5 -0
  326. data/db/migrate/20240918084059_create_pageflow_permalink_redirects.rb +14 -0
  327. data/db/migrate/20250508172234_ensure_scrolled_entries_have_main_storyline.rb +14 -0
  328. data/db/migrate/20250617090048_add_custom404_entry_to_sites.rb +5 -0
  329. data/db/migrate/20250617100000_add_perma_id_counter_to_entries.rb +28 -0
  330. data/db/migrate/20250722174123_add_perma_id_to_chapters.rb +10 -0
  331. data/db/migrate/20250725080603_add_perma_id_indexes_to_revision_components.rb +13 -0
  332. data/db/migrate/20250726000000_add_display_name_to_file_usages.rb +5 -0
  333. data/db/migrate/20251015000000_add_structured_data_type_name_to_revisions.rb +5 -0
  334. data/db/migrate/20251029142849_convert_legacy_social_embeds_to_unified_social_embed.rb +38 -0
  335. data/db/migrate/20251119083347_fix_main_storyline_positions.rb +16 -0
  336. data/db/migrate/20251119083348_ensure_scrolled_entries_have_excursion_storyline.rb +15 -0
  337. data/db/migrate/20260303000000_add_layout_version_to_revisions.rb +6 -0
  338. data/db/migrate/20260323000000_create_comment_threads_and_comments.rb +30 -0
  339. data/db/migrate/20260414000000_add_subject_range_to_comment_threads.rb +5 -0
  340. data/db/migrate/20260415000000_add_section_perma_id_to_comment_threads.rb +5 -0
  341. data/db/migrate/20260727000000_add_quote_to_comments.rb +5 -0
  342. data/db/migrate/20260728000000_create_file_folders.rb +17 -0
  343. data/db/migrate/20260805000000_add_attribute_translations_to_sites.rb +5 -0
  344. data/db/migrate/20260806000000_add_edited_at_to_comments.rb +5 -0
  345. data/db/migrate/20260810000000_create_pageflow_scrolled_lottie_files.rb +24 -0
  346. data/db/migrate/20260817000000_create_comment_thread_reads.rb +16 -0
  347. data/db/migrate/20260819000000_add_unread_comments_since_at_to_users.rb +18 -0
  348. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/editor.js +12599 -5398
  349. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/frontend.js +1275 -4560
  350. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/react-client.js +20204 -22
  351. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/react-server.js +18657 -19
  352. data/entry_types/paged/app/controllers/pageflow_paged/entries_controller.rb +1 -0
  353. data/entry_types/paged/app/helpers/pageflow_paged/page_background_asset_helper.rb +1 -1
  354. data/entry_types/paged/app/helpers/pageflow_paged/third_party_embed_consent_helper.rb +7 -7
  355. data/entry_types/paged/app/views/pageflow_paged/editor/entries/_seed.json.jbuilder +1 -0
  356. data/entry_types/paged/app/views/pageflow_paged/entries/show.html.erb +1 -0
  357. data/entry_types/paged/lib/pageflow_paged/plugin.rb +4 -0
  358. data/entry_types/paged/lib/pageflow_paged/react/page_type.rb +1 -1
  359. data/entry_types/paged/lib/pageflow_paged/react/widget_type.rb +3 -3
  360. data/entry_types/paged/lib/pageflow_paged.rb +1 -1
  361. data/entry_types/scrolled/app/assets/stylesheets/pageflow_scrolled/ui.scss +2 -0
  362. data/entry_types/scrolled/app/controllers/pageflow_scrolled/editor/chapters_controller.rb +5 -3
  363. data/entry_types/scrolled/app/controllers/pageflow_scrolled/editor/content_elements_controller.rb +35 -5
  364. data/entry_types/scrolled/app/controllers/pageflow_scrolled/editor/sections_controller.rb +4 -5
  365. data/entry_types/scrolled/app/controllers/pageflow_scrolled/entries_controller.rb +23 -2
  366. data/entry_types/scrolled/app/helpers/pageflow_scrolled/cache_helper.rb +3 -3
  367. data/entry_types/scrolled/app/helpers/pageflow_scrolled/editor/entry_json_seed_helper.rb +8 -5
  368. data/entry_types/scrolled/app/helpers/pageflow_scrolled/editor/seed_html_helper.rb +7 -3
  369. data/entry_types/scrolled/app/helpers/pageflow_scrolled/entry_json_seed_helper.rb +72 -10
  370. data/entry_types/scrolled/app/helpers/pageflow_scrolled/i18n_helper.rb +28 -13
  371. data/entry_types/scrolled/app/helpers/pageflow_scrolled/packs_helper.rb +41 -12
  372. data/entry_types/scrolled/app/helpers/pageflow_scrolled/react_server_side_rendering_helper.rb +23 -25
  373. data/entry_types/scrolled/app/helpers/pageflow_scrolled/sprockets_helper.rb +16 -0
  374. data/entry_types/scrolled/app/helpers/pageflow_scrolled/themes_helper.rb +189 -3
  375. data/entry_types/scrolled/app/models/pageflow_scrolled/chapter.rb +15 -14
  376. data/entry_types/scrolled/app/models/pageflow_scrolled/content_element.rb +61 -7
  377. data/entry_types/scrolled/app/models/pageflow_scrolled/lottie_file.rb +6 -0
  378. data/entry_types/scrolled/app/models/pageflow_scrolled/lottie_file_url_templates.rb +16 -0
  379. data/entry_types/scrolled/app/models/pageflow_scrolled/section.rb +12 -1
  380. data/entry_types/scrolled/app/models/pageflow_scrolled/storyline.rb +20 -1
  381. data/entry_types/scrolled/app/views/pageflow_scrolled/editor/entries/_head.html.erb +1 -0
  382. data/entry_types/scrolled/app/views/pageflow_scrolled/editor/sections/_section_with_content_elements.json.jbuilder +2 -2
  383. data/entry_types/scrolled/app/views/pageflow_scrolled/entries/show.html.erb +15 -12
  384. data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_entry.json.jbuilder +45 -17
  385. data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_entry_translations.json.jbuilder +14 -0
  386. data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_theme.json.jbuilder +34 -5
  387. data/entry_types/scrolled/app/views/pageflow_scrolled/favicons/_entry.html.erb +1 -1
  388. data/entry_types/scrolled/app/views/pageflow_scrolled/storylines/_storyline.json.jbuilder +7 -0
  389. data/entry_types/scrolled/config/configuration_schemas/pageflow-scrolled.json +414 -0
  390. data/entry_types/scrolled/config/locales/de.yml +1094 -78
  391. data/entry_types/scrolled/config/locales/en.yml +1083 -78
  392. data/entry_types/scrolled/config/routes.rb +18 -8
  393. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/install_generator.rb +11 -11
  394. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/logoDarkVariantDesktop.svg +56 -0
  395. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/logoDarkVariantMobile.svg +22 -0
  396. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/themes_plugin.rb.tt +26 -11
  397. data/entry_types/scrolled/lib/pageflow_scrolled/additional_packs.rb +27 -8
  398. data/entry_types/scrolled/lib/pageflow_scrolled/additional_seed_data.rb +2 -2
  399. data/entry_types/scrolled/lib/pageflow_scrolled/additional_theme_assets.rb +27 -0
  400. data/entry_types/scrolled/lib/pageflow_scrolled/configuration.rb +67 -10
  401. data/entry_types/scrolled/lib/pageflow_scrolled/configuration_schemas.rb +91 -0
  402. data/entry_types/scrolled/lib/pageflow_scrolled/content_element_consent_vendors.rb +1 -1
  403. data/entry_types/scrolled/lib/pageflow_scrolled/engine.rb +2 -1
  404. data/entry_types/scrolled/lib/pageflow_scrolled/entry_file_reference_locations.rb +71 -0
  405. data/entry_types/scrolled/lib/pageflow_scrolled/entry_structured_data_types/faq_page.rb +58 -0
  406. data/entry_types/scrolled/lib/pageflow_scrolled/file_reference_locations.rb +69 -0
  407. data/entry_types/scrolled/lib/pageflow_scrolled/plugin.rb +222 -19
  408. data/entry_types/scrolled/lib/pageflow_scrolled/react_widget_type.rb +2 -4
  409. data/entry_types/scrolled/lib/pageflow_scrolled/seeds.rb +76 -54
  410. data/entry_types/scrolled/lib/pageflow_scrolled/theme_options_default_scale.rb +35 -0
  411. data/entry_types/scrolled/lib/pageflow_scrolled.rb +14 -1
  412. data/entry_types/scrolled/lib/tasks/pageflow_scrolled/storybook.rake +24 -5
  413. data/entry_types/scrolled/package/config/configurationSchemas.js +70 -0
  414. data/entry_types/scrolled/package/config/rollup/configurationSchemas.js +19 -0
  415. data/entry_types/scrolled/package/config/webpack.js +94 -0
  416. data/entry_types/scrolled/package/contentElements/hotspots-frontend.css +1 -0
  417. data/entry_types/scrolled/package/contentElements/hotspots-frontend.js +1795 -0
  418. data/entry_types/scrolled/package/contentElements/inlineBeforeAfter-frontend.css +1 -0
  419. data/entry_types/scrolled/package/contentElements/inlineBeforeAfter-frontend.js +219 -0
  420. data/entry_types/scrolled/package/contentElements/lottieAnimation-frontend.css +1 -0
  421. data/entry_types/scrolled/package/contentElements/lottieAnimation-frontend.js +244 -0
  422. data/entry_types/scrolled/package/contentElements/socialEmbed-frontend.css +1 -0
  423. data/entry_types/scrolled/package/contentElements/socialEmbed-frontend.js +823 -0
  424. data/entry_types/scrolled/package/contentElements/tikTokEmbed-frontend.css +1 -0
  425. data/entry_types/scrolled/package/contentElements/tikTokEmbed-frontend.js +109 -0
  426. data/entry_types/scrolled/package/contentElements/twitterEmbed-frontend.css +1 -0
  427. data/entry_types/scrolled/package/contentElements/twitterEmbed-frontend.js +277 -0
  428. data/entry_types/scrolled/package/contentElements/videoEmbed-frontend.css +1 -0
  429. data/entry_types/scrolled/package/contentElements/videoEmbed-frontend.js +244 -0
  430. data/entry_types/scrolled/package/contentElements-editor.js +3155 -583
  431. data/entry_types/scrolled/package/contentElements-frontend.css +1 -1
  432. data/entry_types/scrolled/package/contentElements-frontend.js +3375 -1585
  433. data/entry_types/scrolled/package/editor.css +1 -0
  434. data/entry_types/scrolled/package/editor.js +8452 -2867
  435. data/entry_types/scrolled/package/entryState.js +1600 -0
  436. data/entry_types/scrolled/package/frontend/FloatingPortalRootProvider-20c600de.js +1979 -0
  437. data/entry_types/scrolled/package/frontend/FloatingPortalRootProvider-58189220.js +2538 -0
  438. data/entry_types/scrolled/package/frontend/{PhonePlatformContext-4ec6b2de.js → PhonePlatformContext-035a99fa.js} +9 -15
  439. data/entry_types/scrolled/package/frontend/PhonePlatformContext-9da43797.js +33 -0
  440. data/entry_types/scrolled/package/frontend/Placeholder.module-bf0966b4.js +5267 -0
  441. data/entry_types/scrolled/package/frontend/Placeholder.module-d22a9335.js +4180 -0
  442. data/entry_types/scrolled/package/frontend/ThemeIcon-ab834849.js +754 -0
  443. data/entry_types/scrolled/package/frontend/ThemeIcon-f6cb3a8f.js +773 -0
  444. data/entry_types/scrolled/package/frontend/ToggleFullscreenCornerButton-30fd1124.js +39 -0
  445. data/entry_types/scrolled/package/frontend/ToggleFullscreenCornerButton-61c25224.js +72 -0
  446. data/entry_types/scrolled/package/frontend/Viewer-1074fd59.js +147 -0
  447. data/entry_types/scrolled/package/frontend/Viewer-1482ca34.js +480 -0
  448. data/entry_types/scrolled/package/frontend/Viewer-70504231.js +210 -0
  449. data/entry_types/scrolled/package/frontend/{Viewer-1bb5597c.js → Viewer-cc8d4072.js} +100 -135
  450. data/entry_types/scrolled/package/frontend/Wavesurfer-656e3c36.js +302 -0
  451. data/entry_types/scrolled/package/frontend/Wavesurfer-b753b838.js +385 -0
  452. data/entry_types/scrolled/package/frontend/commenting.css +1 -0
  453. data/entry_types/scrolled/package/frontend/extensions-167ae143.js +1455 -0
  454. data/entry_types/scrolled/package/frontend/extensions-2318f92b.js +5918 -0
  455. data/entry_types/scrolled/package/frontend/extensions-a461fd13.js +4890 -0
  456. data/entry_types/scrolled/package/frontend/extensions-c98269fd.js +1982 -0
  457. data/entry_types/scrolled/package/frontend/i18n-493cd2a6.js +93 -0
  458. data/entry_types/scrolled/package/frontend/i18n-e06cac14.js +100 -0
  459. data/entry_types/scrolled/package/frontend/{index-11f32f10.js → index-2e5546f7.js} +39 -54
  460. data/entry_types/scrolled/package/frontend/index-de2b418d.js +130 -0
  461. data/entry_types/scrolled/package/frontend/index.css +1 -1
  462. data/entry_types/scrolled/package/frontend/index.js +1976 -1367
  463. data/entry_types/scrolled/package/frontend/inlineEditing.css +1 -0
  464. data/entry_types/scrolled/package/frontend/useContentElementEditorState-a084912e.js +25 -0
  465. data/entry_types/scrolled/package/frontend/useDelayedBoolean-a387d85b.js +24 -0
  466. data/entry_types/scrolled/package/frontend/usePhonePlatform-4ecb96d4.js +8 -0
  467. data/entry_types/scrolled/package/frontend/usePhonePlatform-ce9ff08d.js +8 -0
  468. data/entry_types/scrolled/package/frontend-server.js +20 -210
  469. data/entry_types/scrolled/package/package.json +22 -12
  470. data/entry_types/scrolled/package/review.css +1 -0
  471. data/entry_types/scrolled/package/review.js +3306 -0
  472. data/entry_types/scrolled/package/testHelpers.js +952 -239
  473. data/entry_types/scrolled/package/values/widgets.module.css +18 -0
  474. data/entry_types/scrolled/package/widgets/consentBar.css +1 -1
  475. data/entry_types/scrolled/package/widgets/consentBar.js +275 -315
  476. data/entry_types/scrolled/package/widgets/defaultNavigation.css +2 -2
  477. data/entry_types/scrolled/package/widgets/defaultNavigation.js +961 -432
  478. data/entry_types/scrolled/package/widgets/excursionSheet.css +1 -0
  479. data/entry_types/scrolled/package/widgets/excursionSheet.js +225 -0
  480. data/entry_types/scrolled/package/widgets/iconInlineFileRights.css +1 -1
  481. data/entry_types/scrolled/package/widgets/iconInlineFileRights.js +62 -32
  482. data/entry_types/scrolled/package/widgets/iconScrollIndicator.css +1 -0
  483. data/entry_types/scrolled/package/widgets/iconScrollIndicator.js +67 -0
  484. data/entry_types/scrolled/package/widgets/mainStorylineSheet.css +1 -0
  485. data/entry_types/scrolled/package/widgets/mainStorylineSheet.js +100 -0
  486. data/entry_types/scrolled/package/widgets/textInlineFileRights.css +1 -1
  487. data/entry_types/scrolled/package/widgets/textInlineFileRights.js +48 -26
  488. data/entry_types/scrolled/package/widgets-server.js +2 -0
  489. data/entry_types/scrolled/spec/factories/chapters.rb +14 -1
  490. data/entry_types/scrolled/spec/factories/content_elements.rb +1 -1
  491. data/entry_types/scrolled/spec/factories/lottie_files.rb +29 -0
  492. data/entry_types/scrolled/spec/fixtures/animation.lottie +0 -0
  493. data/entry_types/scrolled/spec/fixtures/font.woff +0 -0
  494. data/entry_types/scrolled/spec/fixtures/font.woff2 +0 -0
  495. data/lib/generators/pageflow/active_admin_initializer/active_admin_initializer_generator.rb +5 -3
  496. data/lib/generators/pageflow/assets/assets_generator.rb +7 -5
  497. data/lib/generators/pageflow/cancan/cancan_generator.rb +2 -1
  498. data/lib/generators/pageflow/cancan/templates/ability.rb +1 -1
  499. data/lib/generators/pageflow/error_pages/error_pages_generator.rb +2 -1
  500. data/lib/generators/pageflow/initializer/initializer_generator.rb +3 -2
  501. data/lib/generators/pageflow/install/install_generator.rb +2 -2
  502. data/lib/generators/pageflow/procfile/procfile_generator.rb +2 -1
  503. data/lib/generators/pageflow/resque/resque_generator.rb +4 -4
  504. data/lib/generators/pageflow/resque/templates/resque.rake +1 -1
  505. data/lib/generators/pageflow/routes/routes_generator.rb +4 -2
  506. data/lib/generators/pageflow/seeds/seeds_generator.rb +3 -2
  507. data/lib/generators/pageflow/seeds/templates/seeds.rb +6 -6
  508. data/lib/generators/pageflow/theme/theme_generator.rb +2 -1
  509. data/lib/generators/pageflow/user/user_generator.rb +2 -1
  510. data/lib/pageflow/ability_mixin.rb +25 -15
  511. data/lib/pageflow/active_admin_patches/views/attributes_table.rb +1 -0
  512. data/lib/pageflow/active_admin_patches/views/pages/base.rb +3 -2
  513. data/lib/pageflow/active_admin_patches/views/table_for.rb +1 -0
  514. data/lib/pageflow/additional_headers.rb +27 -0
  515. data/lib/pageflow/admin/attributes_table_rows.rb +3 -3
  516. data/lib/pageflow/admin/tabs.rb +1 -1
  517. data/lib/pageflow/built_in_file_type.rb +1 -1
  518. data/lib/pageflow/built_in_page_types_plugin.rb +1 -1
  519. data/lib/pageflow/built_in_widget_type.rb +2 -2
  520. data/lib/pageflow/built_in_widget_types_plugin.rb +2 -1
  521. data/lib/pageflow/configuration.rb +183 -18
  522. data/lib/pageflow/cutoff_modes.rb +39 -0
  523. data/lib/pageflow/deprecation.rb +19 -0
  524. data/lib/pageflow/editor_controller.rb +6 -10
  525. data/lib/pageflow/engine.rb +5 -6
  526. data/lib/pageflow/entries_controller_env_helper.rb +32 -2
  527. data/lib/pageflow/entry_export_import/attachment_files.rb +1 -1
  528. data/lib/pageflow/entry_export_import/entry_serialization.rb +9 -8
  529. data/lib/pageflow/entry_export_import/file_mappings.rb +1 -0
  530. data/lib/pageflow/entry_export_import/page_type_versions.rb +2 -2
  531. data/lib/pageflow/entry_export_import/revision_serialization/import.rb +11 -1
  532. data/lib/pageflow/entry_export_import/revision_serialization.rb +3 -0
  533. data/lib/pageflow/entry_export_import.rb +3 -3
  534. data/lib/pageflow/entry_structured_data_types.rb +43 -0
  535. data/lib/pageflow/entry_type_configuration.rb +1 -0
  536. data/lib/pageflow/entry_types.rb +2 -2
  537. data/lib/pageflow/feature.rb +1 -1
  538. data/lib/pageflow/features.rb +4 -6
  539. data/lib/pageflow/file_importers.rb +4 -4
  540. data/lib/pageflow/file_type.rb +5 -5
  541. data/lib/pageflow/file_types.rb +4 -4
  542. data/lib/pageflow/global_config_api.rb +5 -6
  543. data/lib/pageflow/help_entries.rb +7 -7
  544. data/lib/pageflow/help_entry.rb +1 -1
  545. data/lib/pageflow/hooks.rb +1 -1
  546. data/lib/pageflow/nested_revision_component.rb +9 -27
  547. data/lib/pageflow/news_item_api.rb +1 -1
  548. data/lib/pageflow/oembed_providers.rb +42 -0
  549. data/lib/pageflow/page_type.rb +2 -3
  550. data/lib/pageflow/page_types.rb +3 -3
  551. data/lib/pageflow/paperclip_interpolations/support.rb +1 -1
  552. data/lib/pageflow/paperclip_processors/vtt.rb +1 -0
  553. data/lib/pageflow/paperclip_processors/webp.rb +2 -2
  554. data/lib/pageflow/partial_editor_fragment_renderer.rb +2 -2
  555. data/lib/pageflow/plugin.rb +1 -2
  556. data/lib/pageflow/primary_domain_entry_redirect.rb +6 -0
  557. data/lib/pageflow/quota.rb +9 -5
  558. data/lib/pageflow/quotas.rb +1 -1
  559. data/lib/pageflow/rails_version.rb +14 -2
  560. data/lib/pageflow/react.rb +1 -1
  561. data/lib/pageflow/revision_component.rb +8 -40
  562. data/lib/pageflow/revision_components.rb +16 -6
  563. data/lib/pageflow/seeds.rb +12 -16
  564. data/lib/pageflow/theme.rb +1 -1
  565. data/lib/pageflow/theme_customizations.rb +10 -10
  566. data/lib/pageflow/themes.rb +44 -3
  567. data/lib/pageflow/user_mixin.rb +18 -6
  568. data/lib/pageflow/version.rb +1 -1
  569. data/lib/pageflow/widget_type.rb +4 -4
  570. data/lib/pageflow/widget_types.rb +9 -9
  571. data/lib/pageflow/zencoder_api.rb +32 -42
  572. data/lib/pageflow/zencoder_audio_output_definition.rb +14 -13
  573. data/lib/pageflow/zencoder_meta_data_output_definition.rb +3 -2
  574. data/lib/pageflow/zencoder_output_definition.rb +16 -14
  575. data/lib/pageflow/zencoder_video_output_definition.rb +140 -88
  576. data/lib/pageflow.rb +8 -2
  577. data/lib/tasks/pageflow_tasks.rake +1 -1
  578. data/package/config/eslint-rules/documented-in-toc.js +125 -0
  579. data/package/config/jest/index.js +0 -1
  580. data/package/config/webpack.js +0 -1
  581. data/package/config/webpack5.js +0 -1
  582. data/package/editor.js +4880 -2313
  583. data/package/frontend.js +710 -1223
  584. data/package/package.json +3 -1
  585. data/package/review.js +384 -0
  586. data/package/testHelpers.js +257 -243
  587. data/package/ui.js +1487 -813
  588. data/package/vendor/stubs/wysihtml5.js +2 -0
  589. data/spec/factories/accounts.rb +37 -22
  590. data/spec/factories/audio_files.rb +2 -2
  591. data/spec/factories/authentication_tokens.rb +4 -4
  592. data/spec/factories/chapters.rb +4 -4
  593. data/spec/factories/comment_thread_reads.rb +10 -0
  594. data/spec/factories/comment_threads.rb +10 -0
  595. data/spec/factories/comments.rb +9 -0
  596. data/spec/factories/draft_entries.rb +14 -6
  597. data/spec/factories/edit_locks.rb +1 -1
  598. data/spec/factories/entries.rb +28 -19
  599. data/spec/factories/entry_translation_groups.rb +6 -0
  600. data/spec/factories/file_folders.rb +8 -0
  601. data/spec/factories/file_usages.rb +2 -1
  602. data/spec/factories/folders.rb +1 -1
  603. data/spec/factories/image_files.rb +2 -2
  604. data/spec/factories/pages.rb +3 -3
  605. data/spec/factories/published_entries.rb +28 -8
  606. data/spec/factories/revisions.rb +1 -1
  607. data/spec/factories/sites.rb +6 -0
  608. data/spec/factories/test_multi_attachment_files.rb +1 -1
  609. data/spec/factories/text_track_files.rb +1 -1
  610. data/spec/factories/uploadable_files.rb +1 -1
  611. data/spec/factories/users.rb +6 -6
  612. data/spec/factories/video_files.rb +2 -2
  613. data/spec/factories/widgets.rb +1 -1
  614. data/spec/fixtures/7x15_rotated.jpg +0 -0
  615. data/vendor/assets/javascripts/wysihtml-toolbar.js +19288 -0
  616. metadata +266 -92
  617. data/app/assets/stylesheets/pageflow/editor/select_button.scss +0 -51
  618. data/config/initializers/revision_components.rb +0 -5
  619. data/config/locales/twitter_to_x.de.yml +0 -6
  620. data/config/locales/twitter_to_x.en.yml +0 -6
  621. data/entry_types/scrolled/app/helpers/pageflow_scrolled/generated_media_queries_helper.rb +0 -55
  622. data/entry_types/scrolled/config/locales/twitter_to_x.de.yml +0 -12
  623. data/entry_types/scrolled/config/locales/twitter_to_x.en.yml +0 -12
  624. data/entry_types/scrolled/config/locales/vr_image_projection.de.yml +0 -24
  625. data/entry_types/scrolled/config/locales/vr_image_projection.en.yml +0 -24
  626. data/entry_types/scrolled/package/frontend/EditableInlineText.module-ebd22921.js +0 -5497
  627. data/entry_types/scrolled/package/frontend/ToggleFullscreenCornerButton-b79159cc.js +0 -107
  628. data/entry_types/scrolled/package/frontend/Viewer-1ecf3375.js +0 -154
  629. data/entry_types/scrolled/package/frontend/Wavesurfer-7d9cf1b7.js +0 -333
  630. data/entry_types/scrolled/package/frontend/arrowRight-62998af9.js +0 -77
  631. data/entry_types/scrolled/package/frontend/components-024a9893.js +0 -2853
  632. data/entry_types/scrolled/package/frontend/createSuper-d0f30da3.js +0 -115
  633. data/entry_types/scrolled/package/frontend/i18n-ce13a8bf.js +0 -1129
  634. data/entry_types/scrolled/package/frontend/useContentElementEditorState-4f4c3cf6.js +0 -52
  635. data/lib/generators/pageflow/resque/templates/resque_enqueue_after_commit_patch.rb +0 -25
  636. data/package/vendor/jquery.minicolors.js +0 -1108
@@ -1,9 +1,17 @@
1
1
  xml.instruct!
2
- xml.urlset xmlns: 'http://www.sitemaps.org/schemas/sitemap/0.9' do
2
+ xml.urlset xmlns: 'http://www.sitemaps.org/schemas/sitemap/0.9',
3
+ 'xmlns:xhtml': 'http://www.w3.org/1999/xhtml' do
3
4
  @entries.each do |entry|
4
5
  xml.url do
5
6
  xml.loc(social_share_entry_url(entry))
6
7
  xml.lastmod(entry.published_at.utc.xmlschema)
8
+
9
+ entry.translations.each do |translation|
10
+ xml.tag!('xhtml:link',
11
+ rel: 'alternate',
12
+ hreflang: translation.locale,
13
+ href: social_share_entry_url(translation))
14
+ end
7
15
  end
8
16
  end
9
17
  end
@@ -5,7 +5,7 @@
5
5
  <%= tag :meta, property: "og:title", content: pretty_entry_title(entry) %>
6
6
  <%= tag :meta, property: "og:description", name: "description", content: social_share_entry_description(entry) %>
7
7
  <%= tag :meta, property: "og:url", content: social_share_entry_url(entry) %>
8
- <%= tag :meta, property: "og:site_name", content: entry.site.cname_domain %>
8
+ <%= tag :meta, property: "og:site_name", content: entry.site.display_title %>
9
9
  <%= tag :meta, property: "og:type", content: "website" %>
10
10
 
11
11
  <%= tag :meta, name: "twitter:card", content: "summary_large_image" %>
@@ -5,7 +5,7 @@
5
5
  <%= tag :meta, property: "og:title", content: social_share_page_title(page) %>
6
6
  <%= tag :meta, property: "og:description", name: "description", content: social_share_page_description(entry, page) %>
7
7
  <%= tag :meta, property: "og:url", content: social_share_page_url(entry, page) %>
8
- <%= tag :meta, property: "og:site_name", content: entry.site.cname_domain %>
8
+ <%= tag :meta, property: "og:site_name", content: entry.site.display_title %>
9
9
  <%= tag :meta, property: "og:type", content: "website" %>
10
10
 
11
11
  <%= tag :meta, name: "twitter:card", content: "summary_large_image" %>
@@ -1,7 +1,8 @@
1
1
  json.key_format!(camelize: :lower)
2
2
 
3
3
  json.set! '@context', 'http://schema.org'
4
- json.set! '@type', 'Article'
4
+
5
+ json.merge! custom_properties
5
6
 
6
7
  json.headline pretty_entry_title(entry)
7
8
  json.url structured_data_normalize_protocol(social_share_entry_url(entry))
@@ -30,8 +31,6 @@ end
30
31
  json.date_published entry.first_published_at.try(:utc).try(:iso8601, 0)
31
32
  json.date_modified entry.published_at.try(:utc).try(:iso8601, 0)
32
33
 
33
- json.article_section 'longform'
34
-
35
34
  json.main_entity_of_page do
36
35
  json.set! '@type', 'WebPage'
37
36
  json.set! '@id', structured_data_normalize_protocol(social_share_entry_url(entry))
@@ -1,5 +1,4 @@
1
1
  json.call(video_file, :width, :height, :duration_in_ms)
2
- json.created_at video_file.created_at.try(:utc).try(:iso8601, 0)
3
2
 
4
3
  variants = (video_file.present_outputs + [:poster_medium, :poster_large, :poster_ultra, :print])
5
4
 
@@ -1,10 +1,7 @@
1
1
  Rails.application.config.to_prepare do
2
- ActiveAdmin::Views::AttributesTable.send(:include,
3
- Pageflow::ActiveAdminPatches::Views::AttributesTable)
2
+ ActiveAdmin::Views::AttributesTable.include Pageflow::ActiveAdminPatches::Views::AttributesTable
4
3
 
5
- ActiveAdmin::Views::TableFor.send(:include,
6
- Pageflow::ActiveAdminPatches::Views::TableFor)
4
+ ActiveAdmin::Views::TableFor.include Pageflow::ActiveAdminPatches::Views::TableFor
7
5
 
8
- ActiveAdmin::Views::Pages::Base.send(:include,
9
- Pageflow::ActiveAdminPatches::Views::Pages::Base)
6
+ ActiveAdmin::Views::Pages::Base.include Pageflow::ActiveAdminPatches::Views::Pages::Base
10
7
  end
@@ -5,6 +5,9 @@ Pageflow.configure do |config|
5
5
  config.admin_resource_tabs.register(:entry,
6
6
  name: :revisions,
7
7
  component: Pageflow::Admin::RevisionsTab)
8
+ config.admin_resource_tabs.register(:entry,
9
+ name: :translations,
10
+ component: Pageflow::Admin::EntryTranslationsTab)
8
11
 
9
12
  config.admin_resource_tabs.register(:user,
10
13
  name: :accounts,
@@ -14,6 +14,7 @@ end
14
14
  Paperclip.interpolates(:attachments_path_name) do |attachment, style|
15
15
  record = attachment.instance
16
16
  return record.attachments_path_name if record.respond_to?(:attachments_path_name)
17
+
17
18
  self.attachment(attachment, style)
18
19
  end
19
20
 
@@ -3,7 +3,7 @@ require 'symmetric_encryption/core'
3
3
  Pageflow.after_global_configure do |config|
4
4
  SymmetricEncryption.cipher = SymmetricEncryption::Cipher.new(
5
5
  key: config.encryption_options[:key],
6
- iv: config.encryption_options[:iv],
6
+ iv: config.encryption_options[:iv],
7
7
  cipher_name: 'aes-128-cbc'
8
8
  )
9
9
  end
@@ -2,47 +2,58 @@ require 'zencoder'
2
2
 
3
3
  Pageflow.after_global_configure do |config|
4
4
  zencoder_options = config.zencoder_options
5
- zencoder_options.reverse_merge!(:attachments_version => 'v1')
5
+ zencoder_options.reverse_merge!(attachments_version: 'v1')
6
6
 
7
- Zencoder.api_key = zencoder_options.fetch(:api_key) { raise "Missing api_key option in Pageflow.config.zencoder_options." }
7
+ Zencoder.api_key = zencoder_options.fetch(:api_key) do
8
+ raise 'Missing api_key option in Pageflow.config.zencoder_options.'
9
+ end
8
10
 
9
- Pageflow::ZencoderOutputDefinition.default_output_bucket_name = zencoder_options.fetch(:output_bucket) { raise "Missing output_bucket option in Pageflow.config.zencoder_options." }
11
+ Pageflow::ZencoderOutputDefinition.default_output_bucket_name =
12
+ zencoder_options.fetch(:output_bucket) do
13
+ raise 'Missing output_bucket option in Pageflow.config.zencoder_options.'
14
+ end
10
15
  Pageflow::ZencoderOutputDefinition.default_sftp_host = zencoder_options[:sftp_host]
11
16
  Pageflow::ZencoderOutputDefinition.default_akamai_host = zencoder_options[:akamai_host]
12
- Pageflow::ZencoderOutputDefinition.default_akamai_credentials = zencoder_options[:akamai_credentials]
17
+ Pageflow::ZencoderOutputDefinition.default_akamai_credentials =
18
+ zencoder_options[:akamai_credentials]
13
19
  Pageflow::ZencoderVideoOutputDefinition.skip_hls = zencoder_options.fetch(:skip_hls, false)
14
20
  Pageflow::ZencoderVideoOutputDefinition.skip_smil = zencoder_options.fetch(:skip_smil, false)
15
21
 
16
- raise "Missing s3_host_alias option in Pageflow.config.zencoder_options." unless zencoder_options.has_key?(:s3_host_alias)
17
- raise "Missing s3_protocol option in Pageflow.config.zencoder_options." unless zencoder_options.has_key?(:s3_protocol)
22
+ unless zencoder_options.key?(:s3_host_alias)
23
+ raise 'Missing s3_host_alias option in Pageflow.config.zencoder_options.'
24
+ end
25
+ unless zencoder_options.key?(:s3_protocol)
26
+ raise 'Missing s3_protocol option in Pageflow.config.zencoder_options.'
27
+ end
18
28
 
19
- Pageflow::ZencoderAttachment.default_options.merge!(zencoder_options.slice(:path, :url, :hls_url, :hls_origin_url))
29
+ Pageflow::ZencoderAttachment.default_options.merge!(zencoder_options.slice(:path, :url, :hls_url,
30
+ :hls_origin_url))
20
31
  end
21
32
 
22
- Paperclip.interpolates(:zencoder_host_alias) do |attachment, style|
33
+ Paperclip.interpolates(:zencoder_host_alias) do |_attachment, _style|
23
34
  Pageflow.config.zencoder_options.fetch(:s3_host_alias)
24
35
  end
25
36
 
26
- Paperclip.interpolates(:zencoder_hls_host_alias) do |attachment, style|
37
+ Paperclip.interpolates(:zencoder_hls_host_alias) do |_attachment, _style|
27
38
  Pageflow.config.zencoder_options[:hls_host_alias] ||
28
39
  Pageflow.config.zencoder_options.fetch(:s3_host_alias)
29
40
  end
30
41
 
31
- Paperclip.interpolates(:zencoder_hls_origin_host_alias) do |attachment, style|
42
+ Paperclip.interpolates(:zencoder_hls_origin_host_alias) do |_attachment, _style|
32
43
  Pageflow.config.zencoder_options[:hls_origin_host_alias] ||
33
44
  Pageflow.config.zencoder_options.fetch(:s3_host_alias)
34
45
  end
35
46
 
36
- Paperclip.interpolates(:zencoder_protocol) do |attachment, style|
47
+ Paperclip.interpolates(:zencoder_protocol) do |_attachment, _style|
37
48
  protocol = Pageflow.config.zencoder_options.fetch(:s3_protocol)
38
49
  protocol.empty? ? protocol : "#{protocol}:"
39
50
  end
40
51
 
41
- Paperclip.interpolates(:zencoder_asset_version) do |attachment, style|
52
+ Paperclip.interpolates(:zencoder_asset_version) do |_attachment, _style|
42
53
  Pageflow.config.zencoder_options.fetch(:attachments_version)
43
54
  end
44
55
 
45
- Paperclip.interpolates(:zencoder_path) do |attachment, style|
56
+ Paperclip.interpolates(:zencoder_path) do |attachment, _style|
46
57
  attachment.path
47
58
  end
48
59
 
@@ -142,6 +142,9 @@ de:
142
142
  recommendation: Wir empfehlen ein Update des Browsers auf eine aktuelle Version von <a href="http://windows.microsoft.com/ie">Internet Explorer</a>, <a href="https://chrome.google.com/">Google Chrome</a>, oder <a href="https://mozilla.org/firefox/">Firefox</a>.
143
143
  turn_off_compatibility_view: Internet Explorer Version 9 und niedriger sind nicht unterstützt.
144
144
  view: Anzeigen
145
+ resources:
146
+ translations:
147
+ new_model: Übersetzung zuordnen
145
148
  activerecord:
146
149
  attributes:
147
150
  admin_user:
@@ -179,7 +182,9 @@ de:
179
182
  account: Konto
180
183
  author: Autor
181
184
  created_at: Erstellt
185
+ folder: Ordner
182
186
  credits: Credits
187
+ structured_data_type_name: Strukturierter Datentyp
183
188
  edited_at: Geändert
184
189
  embed_code: Einbetten
185
190
  first_published_at: Erstmals veröffentlicht am
@@ -279,6 +284,8 @@ de:
279
284
  share_providers: Standard Share Links
280
285
  sitemap_enabled: XML-Sitemap
281
286
  title: Titel
287
+ custom_404_entry_id: "Benutzerdefinierte 404-Seite"
288
+ cutoff_mode_name: "Cutoff-Modus"
282
289
  pageflow/text_track_file:
283
290
  kind: Art
284
291
  label: Label
@@ -370,6 +377,11 @@ de:
370
377
  attributes:
371
378
  user:
372
379
  required: Benutzer muss ausgewählt sein
380
+ pageflow/site:
381
+ attributes:
382
+ attribute_translations:
383
+ not_translatable: enthält ein Attribut, das nicht übersetzt werden kann
384
+ unknown_locale: enthält eine unbekannte Sprache
373
385
  models:
374
386
  account:
375
387
  one: Konto
@@ -431,6 +443,9 @@ de:
431
443
  user:
432
444
  one: Nutzer
433
445
  other: Nutzer
446
+ translation:
447
+ one: Übersetzung
448
+ other: Übersetzungen
434
449
  values:
435
450
  pageflow/chapter:
436
451
  navigation_bar_mode:
@@ -452,6 +467,9 @@ de:
452
467
  linked_in: LinkedIn
453
468
  telegram: Telegram (nur Mobilgeräte)
454
469
  whats_app: WhatsApp (nur Mobilgeräte)
470
+ bluesky: Bluesky
471
+ threads: Threads
472
+ twitter: X
455
473
  type_names:
456
474
  paged: Seitenbasiert / klassisch
457
475
  scrolled: Kontinuierlich scrollend / Pageflow Next
@@ -506,7 +524,7 @@ de:
506
524
  - Fr
507
525
  - Sa
508
526
  abbr_month_names:
509
- -
527
+ -
510
528
  - Jan
511
529
  - Feb
512
530
  - Mär
@@ -532,7 +550,7 @@ de:
532
550
  long: "%e. %B %Y"
533
551
  short: "%e. %b"
534
552
  month_names:
535
- -
553
+ -
536
554
  - Januar
537
555
  - Februar
538
556
  - März
@@ -810,6 +828,20 @@ de:
810
828
  site_defaults_inline_help: Die folgenden Einstellungen werden als Standard für neue Beiträge des Kontos verwendet. Änderungen wirken sich nicht auf existierende Beiträge aus.
811
829
  entries:
812
830
  add_folder: Ordner hinzufügen
831
+ comments:
832
+ tooltip: "Kommentare: %{summary}"
833
+ topic_count:
834
+ one: 1 ungelöstes Thema
835
+ other: "%{count} ungelöste Themen"
836
+ unread_reply_count:
837
+ one: 1 ungelesene Antwort
838
+ other: "%{count} ungelesene Antworten"
839
+ unread_resolution_count:
840
+ one: 1 neu gelöstes Thema
841
+ other: "%{count} neu gelöste Themen"
842
+ unread_topic_count:
843
+ one: 1 ungelesenes Thema
844
+ other: "%{count} ungelesene Themen"
813
845
  confirm_depublish: Soll der Beitrag wirklich depubliziert werden?
814
846
  confirm_duplicate: Beitrag wirklich duplizieren?
815
847
  confirm_restore: Soll der Beitrag wirklich auf den Stand dieser Revision zurückgesetzt werden? Vor dem Zurücksetzen wird eine automatische Sicherung des aktuellen Standes erstellt.
@@ -853,6 +885,10 @@ de:
853
885
  show_public_hint: Öffentliche Seite anzeigen
854
886
  snapshot: Aktuellen Stand sichern
855
887
  title_hint: Dieses Feld bestimmt die URL, unter der der Beitrag öffentlich erreichbar ist.
888
+ permalink_hint: |-
889
+ Wenn der Permalink geändert wird, nachdem der Beitrag
890
+ bereits veröffentlicht wurde, wird automatisch eine
891
+ Weiterleitung von der alten URL zur neuen URL eingerichtet.
856
892
  entry:
857
893
  add: Beitrag hinzufügen
858
894
  entry_membership_hint: Laden Sie Benutzer in Ihr Konto ein, um sie als Mitglieder dieser Story zuzuweisen.
@@ -890,6 +926,7 @@ de:
890
926
  revisions: Revisionen
891
927
  sites: Sites
892
928
  users: Benutzer
929
+ translations: Übersetzungen
893
930
  revisions:
894
931
  published_until_hint: Freilassen, um Beitrag unbegrenzt zu veröffentlichen.
895
932
  restored: Revision wiederhergestellt
@@ -908,7 +945,6 @@ de:
908
945
  https://%{site_host}/feeds/de.atom zu Verfügung, wobei "en"
909
946
  durch ein beliebiges Sprachkürzel ersetzt werden kann, nach
910
947
  dem gefiltert werden soll.
911
- home_url_hint: Wird einer der obigen CNAMES ohne Pfad in der URL verwendet, wird zu dieser URL umgeleitet. Standard Link Ziel des Home Buttons.
912
948
  name: "%{account_name}"
913
949
  remove_logo: Logo entfernen
914
950
  show: Anzeigen
@@ -920,6 +956,25 @@ de:
920
956
  title_hint: |-
921
957
  Wird in Titeln der Beiträge und als Titel für den Atom-Feed
922
958
  verwendet.
959
+ custom_404_entry:
960
+ none: "(Standard 404-Seite verwenden)"
961
+ hint: "Wählen Sie einen Eintrag aus, der als benutzerdefinierte 404-Seite angezeigt werden soll. Nur veröffentlichte Einträge ohne Passwortschutz sind verfügbar."
962
+ home_url_new_site_hint: |
963
+ Wird einer der obigen CNAMES ohne Pfad in der URL verwendet,
964
+ wird zu dieser URL umgeleitet. Nachdem die Site erstellt
965
+ wurde kann auch ein Beitrag als Einstiegsseite konfiguriert
966
+ werden.
967
+ home_url_hint_html: |
968
+ Wird einer der obigen CNAMES ohne Pfad in der URL verwendet,
969
+ wird zu dieser URL umgeleitet.
970
+ Alternativ kannst du auch einen Beitrag als Einstiegsseite
971
+ verwenden. <a href="%{choose_url}">Bestehenden Beitrag auswählen</a>
972
+ oder <a href="%{new_url}">neuen Beitrag erstellen</a>.
973
+ home_url_with_root_entry_hint_html: |
974
+ Im Moment wird der Beitrag <a
975
+ href="%{entry_url}">%{entry_title}</a> als Einstiegsseite
976
+ verwendet. Ändere den Permalink des Beitrags, um stattdessen
977
+ die Redirect URL zu verwenden.
923
978
  user:
924
979
  cannot_add: Was Sie tun möchten, ist nicht möglich. Sie müssen aktualisieren.
925
980
  none_addable_tooltip: Kein Benutzer verfügbar
@@ -997,6 +1052,43 @@ de:
997
1052
  suspended: Der Benutzer wurde gesperrt. Er kann sich nun nicht mehr anmelden.
998
1053
  unsuspend: Entsperren
999
1054
  unsuspended: Der Benutzer wurde entsperrt. Er kann sich nun wieder anmelden.
1055
+ entry_translations:
1056
+ add: Übersetzung zuordnen
1057
+ generate: Übersetzung generieren
1058
+ entry_id: Beitrag
1059
+ id: Übersetzung(en)
1060
+ new_hint_html: |-
1061
+ Verknüpfe Beiträge, die denselben Inhalt in verschiedenen
1062
+ Sprachen darstellen.
1063
+ create_model: Als Übersetzung zuordnen
1064
+ no_translations: Keine Beiträge zugeordnet
1065
+ remove: Entfernen
1066
+ remove_confirmation: |-
1067
+ Beitrag wirklich aus der Liste der Übersetzungen entfernen?
1068
+ mark_as_default: Als Standard markieren
1069
+ mark_as_default_confirmation: |-
1070
+ Beitrag wirklich as Standardübersetzung markieren?
1071
+ default_translation: "%{display_locale} (Standard)"
1072
+ default_translation_hint: |-
1073
+ Suchmaschinen verwenden den als Standard markierten Beitrag,
1074
+ falls keine Übersetzung verfügbar ist, die den
1075
+ Spracheinstellungen des Besuchers entspricht.
1076
+ site_root_entry:
1077
+ title: Einstiegsseite festlegen
1078
+ intro_html: |
1079
+ <p>Wähle den Beitrag aus, der als Einstiegsseite unter der
1080
+ folgenden URL gezeigt werden soll:
1081
+ <strong>https://%{site_host}/</strong><br>Dieser Inhalt
1082
+ wird gezeigt, wenn die Domain der Site ohne weiteren Pfad
1083
+ aufgerufen wird.</p>
1084
+ hint: |
1085
+ Der Permalink des Beitrags wird automatisch angepasst. Falls
1086
+ der Beitrag bereits veröffentlicht wurde, wird eine
1087
+ Weiterleitung von der alten URL zur neuen URL eingerichtet.
1088
+ submit: Als Einstiegsseite festlegen
1089
+ chosen: Der Beitrag wurde als Einstiegsseite festgelegt.
1090
+ root_permalink_directory_required: Für diese Seite wurde noch kein Permalink-Verzeichnis angelegt.
1091
+ root_entry_exists: Es existiert bereits ein Beitrag, der als Einstiegsseite verwendet wird.
1000
1092
  audio:
1001
1093
  help_entries:
1002
1094
  page_type:
@@ -1107,6 +1199,11 @@ de:
1107
1199
  entries:
1108
1200
  unsupported_browser_hint:
1109
1201
  message: Die Version Ihres Browsers wird vom Pageflow Editor nicht unterstützt. Bitte benutzen Sie einen aktuellen Browser.
1202
+ entry_structured_data_types:
1203
+ article:
1204
+ label: Artikel
1205
+ faq_page:
1206
+ label: FAQ-Seite
1110
1207
  errors:
1111
1208
  UnmatchedUploadError: Der Dateityp wird nicht unterstützt.
1112
1209
  invalid_nested_type_error: 'Fehler: Upload-Datei ''%{name}'' ist eine %{type}. Es sind nur folgende Arten von Dateien erlaubt: %{validList}'
@@ -1120,18 +1217,39 @@ de:
1120
1217
  video_settings_tab: Video-Details
1121
1218
  files:
1122
1219
  common_attributes:
1220
+ ai_indicator:
1221
+ blank: "(Nicht angegeben)"
1222
+ inline_help: |-
1223
+ Kennzeichne, dass die Datei mit künstlicher Intelligenz
1224
+ erzeugt oder verändert wurde. Wird als EU-KI-Label an
1225
+ der Stelle im Beitrag angezeigt, wo die Datei verwendet
1226
+ wird.
1227
+ label: KI-Kennzeichnung
1228
+ values:
1229
+ ai_generated: Vollständig KI-generiert
1230
+ ai_modified: Teilweise KI-modifiziert
1231
+ ai_indicator_text:
1232
+ inline_help: |-
1233
+ Erläutert, welche Teile der Datei mit künstlicher
1234
+ Intelligenz erzeugt oder verändert wurden.
1235
+ label: Text der KI-Kennzeichnung
1123
1236
  alt:
1124
1237
  inline_help: Ein Hinweis darauf, was in dem dargestellten Element zum Ausdruck kommt. Der Text ist im Beitrag nicht sichtbar, kann aber von Screen-Readern verarbeitet werden und trägt somit zur barrierearmen Gestaltung der Inhalte bei.
1125
1238
  label: Alt-Text
1126
1239
  file_name:
1127
1240
  column_header: Dateiname
1128
1241
  label: Dateiname
1242
+ display_name:
1243
+ column_header: Dateiname
1244
+ label: Dateiname
1129
1245
  license:
1130
1246
  blank: "(Nicht angegeben)"
1131
1247
  inline_help: Fügt der Rechteangabe im Beitrag einen Link zur Lizenz hinzu.
1132
1248
  label: Lizenz
1133
1249
  original_url:
1134
1250
  label: Original
1251
+ download_url:
1252
+ label: Download
1135
1253
  rights:
1136
1254
  cell_title:
1137
1255
  blank: Noch nicht ausgefüllt
@@ -1186,6 +1304,11 @@ de:
1186
1304
  failed: Fehler beim übertragen zu S3.
1187
1305
  finished: Erfolgreich zu S3 übertragen.
1188
1306
  pending: Noch nicht zu S3 übertragen.
1307
+ singular:
1308
+ audio_files: Audio-Datei
1309
+ image_files: Bild
1310
+ other_files: Datei
1311
+ video_files: Video
1189
1312
  tabs:
1190
1313
  audio_files: Audios
1191
1314
  image_files: Bilder
@@ -1303,11 +1426,18 @@ de:
1303
1426
  entry_preview:
1304
1427
  navigation_disabled_hint: Seitenwechsel sind innerhalb der Phone Vorschau nicht möglich.
1305
1428
  file_item:
1306
- cancel: Abbrechen
1429
+ actions: Aktionen
1430
+ cancel_upload: Upload abbrechen
1307
1431
  confirm: Überprüfen und bestätigen
1308
1432
  credits: Rechte
1309
1433
  destroy: Löschen
1310
1434
  download: Herunterladen
1435
+ expand_details: Details einblenden
1436
+ collapse_details: Details ausblenden
1437
+ move: Verschieben...
1438
+ reference_count:
1439
+ one: 1x verwendet
1440
+ other: "%{count}x verwendet"
1311
1441
  retry: Erneut versuchen
1312
1442
  select: Auswählen
1313
1443
  settings: Einstellungen
@@ -1318,8 +1448,9 @@ de:
1318
1448
  close: Schließen
1319
1449
  files:
1320
1450
  back: Zurück
1451
+ in_folder: 'Im Ordner:'
1321
1452
  files_blank_slate:
1322
- no_files: Es wurden noch keine Dateien dieses Typs hochgeladen.
1453
+ no_files: Es wurden noch keine Dateien hochgeladen.
1323
1454
  files_explorer:
1324
1455
  cancel: Abbrechen
1325
1456
  ok: Ok
@@ -1338,6 +1469,12 @@ de:
1338
1469
  list_item:
1339
1470
  edit: Bearbeiten
1340
1471
  remove: Löschen
1472
+ list_search_field:
1473
+ placeholder: 'Dateien filtern'
1474
+ hint: 'Mit %{hotkey} suchen'
1475
+ hint_in_all_folders: 'Mit %{hotkey} in allen Ordnern suchen'
1476
+ hint_in_folder: 'Mit %{hotkey} in diesem Ordner suchen'
1477
+ reset: 'Filter zurücksetzen'
1341
1478
  loading:
1342
1479
  loading: Daten werden geladen.
1343
1480
  locked:
@@ -1393,8 +1530,6 @@ de:
1393
1530
  until_including: Bis einschließlich
1394
1531
  user_name: Benutzername
1395
1532
  view_revisions: Revisionen ansehen
1396
- select_button:
1397
- select: Auswählen
1398
1533
  storyline_outline:
1399
1534
  header: Gliederung
1400
1535
  new_chapter: Neues Kapitel
@@ -1416,20 +1551,30 @@ de:
1416
1551
  title_loading_spinner:
1417
1552
  widget_type_info_box_text: Dies ist eine Vorschau der 'Titel und Bild'-Lade-Ansicht. Die Animation läuft ab, während der Beitrag lädt.
1418
1553
  views:
1554
+ audio_file_preview_view:
1555
+ pause: Pause
1556
+ play: Abspielen
1419
1557
  chapter_item_view:
1420
1558
  chapter: Kapitel
1421
1559
  unnamed: "(Unbenannt)"
1560
+ confirmable_file_item_view:
1561
+ confirm_destroy: Datei wirklich löschen?
1422
1562
  edit_chapter_view:
1423
1563
  confirm_destroy: |-
1424
1564
  Kapitel einschließlich ALLER enthaltener Seiten wirklich löschen?
1425
1565
 
1426
1566
  Dieser Schritt kann nicht rückgängig gemacht werden.
1567
+ destroy_menu_item:
1568
+ confirm_destroy: Wirklich löschen?
1569
+ destroy: Löschen
1427
1570
  edit_configuration:
1428
- back: Gliederung
1571
+ actions: Aktionen
1572
+ back: "Zurück"
1429
1573
  confirm_destroy: Wirklich löschen?
1430
1574
  destroy: Löschen
1431
1575
  retry: Erneut versuchen
1432
1576
  save_error: Fehler beim Speichern
1577
+ outline: "Gliederung"
1433
1578
  edit_entry_view:
1434
1579
  cannot_publish: Sie sind nicht berechtigt diesen Beitrag zu veröffentlichen.
1435
1580
  edit_page_view:
@@ -1444,18 +1589,67 @@ de:
1444
1589
  show_editor: Editorleiste einblenden
1445
1590
  entry_preview_view:
1446
1591
  scroll_hint: Scrollen, um weiterzulesen
1592
+ file_item_view:
1593
+ confirm_destroy: Datei wirklich löschen?
1447
1594
  file_meta_data_item_value_view:
1448
1595
  blank: "-"
1596
+ file_references:
1597
+ header: Verwendet in
1598
+ file_preview_progress_bar_view:
1599
+ position: Wiedergabeposition
1600
+ files_blank_slate_view:
1601
+ empty_folder: 'Dieser Ordner enthält noch keine Dateien.'
1602
+ no_matches: 'Keine Datei entspricht dem aktuellen Filter.'
1449
1603
  files_view:
1450
1604
  add: Hinzufügen
1451
1605
  authenticating: Authentifizieren
1452
- import: Importieren
1606
+ folder: Neuer Ordner
1607
+ import: Datei importieren...
1453
1608
  importer:
1454
1609
  heading: Dateien importieren von
1455
- reuse: Wiederverwenden
1456
- upload: Hochladen
1610
+ reuse: Datei wiederverwenden...
1611
+ tabs:
1612
+ files: Dateien
1613
+ upload: Datei hochladen...
1614
+ file_type_pills_view:
1615
+ group_label: 'Nach Dateityp filtern'
1616
+ hint: 'Dateityp anklicken, um nur dessen Dateien anzuzeigen. Mit Strg/Cmd Dateitypen kombinieren.'
1457
1617
  filtered_files_view:
1458
- banner_prefix: 'Aktiver Filter:'
1618
+ actions: 'Aktionen für die Dateiliste'
1619
+ any_file_type: 'Datei'
1620
+ cancel_selection: 'Auswahl abbrechen'
1621
+ confirm_destroy_selection:
1622
+ one: '1 Element wirklich löschen?'
1623
+ other: '%{count} Elemente wirklich löschen?'
1624
+ destroy_selection: 'Auswahl löschen'
1625
+ end_selection: 'Auswahl beenden'
1626
+ move_selection: 'Verschieben...'
1627
+ reset_filter: 'Filter zurücksetzen'
1628
+ search: 'Dateien und Ordner filtern'
1629
+ search_in_folder: 'Dateien in %{folder} filtern'
1630
+ select: '%{name} auswählen'
1631
+ select_items: 'Dateien und Ordner auswählen'
1632
+ selected_items:
1633
+ zero: 'Keine Elemente ausgewählt'
1634
+ one: '1 Element ausgewählt'
1635
+ other: '%{count} Elemente ausgewählt'
1636
+ sort_button_label: 'Sortieren'
1637
+ sort:
1638
+ alphabetical: 'Alphabetisch'
1639
+ most_recent: 'Zuletzt hochgeladen'
1640
+ folder_breadcrumb_view:
1641
+ label: 'Ordnerpfad'
1642
+ reset: 'Ordner verlassen'
1643
+ folder_item_view:
1644
+ actions: 'Ordner-Aktionen'
1645
+ destroy: 'Löschen'
1646
+ file_count:
1647
+ one: '1 Datei'
1648
+ other: '%{count} Dateien'
1649
+ move: 'Verschieben...'
1650
+ name: 'Name des neuen Ordners'
1651
+ new_name: 'Neuer Name des Ordners'
1652
+ rename: 'Umbenennen'
1459
1653
  inputs:
1460
1654
  file_input:
1461
1655
  auto_default_text_track: "(Automatisch)"
@@ -1469,6 +1663,35 @@ de:
1469
1663
  unset: Verknüpfung entfernen
1470
1664
  theme_input_view:
1471
1665
  choose: Theme ändern
1666
+ edit_defaults_input_view:
1667
+ label: Voreinstellungen für neue Elemente
1668
+ oembed_url_input_view:
1669
+ status:
1670
+ resolving: "Auflösen..."
1671
+ resolved: "Aufgelöst"
1672
+ invalid_provider: "Ungültiger Anbieter"
1673
+ not_found: "URL nicht gefunden"
1674
+ error: "Fehler beim Auflösen der URL"
1675
+ move_to_folder_dialog_view:
1676
+ cancel: 'Abbrechen'
1677
+ current: 'Aktueller Ordner'
1678
+ header:
1679
+ files:
1680
+ one: 'Datei verschieben'
1681
+ other: 'Dateien verschieben'
1682
+ folders:
1683
+ one: 'Ordner verschieben'
1684
+ other: 'Ordner verschieben'
1685
+ items: 'Elemente verschieben'
1686
+ hint:
1687
+ files:
1688
+ one: 'Wähle den Ordner aus, in den %{name} verschoben werden soll.'
1689
+ other: 'Wähle den Ordner aus, in den %{count} Dateien verschoben werden sollen.'
1690
+ folders:
1691
+ one: 'Wähle den Ordner aus, in den %{name} verschoben werden soll.'
1692
+ other: 'Wähle den Ordner aus, in den %{count} Ordner verschoben werden sollen.'
1693
+ items: 'Wähle den Ordner aus, in den %{count} Elemente verschoben werden sollen.'
1694
+ root: 'Kein Ordner'
1472
1695
  page_item_view:
1473
1696
  unnamed: "(Unbenannt)"
1474
1697
  page_link_item_view:
@@ -1477,6 +1700,9 @@ de:
1477
1700
  storylines_picker_view:
1478
1701
  label: Erzählstrang
1479
1702
  without_parent_page: Ohne übergeordnete Seite
1703
+ video_file_preview_view:
1704
+ mute: Ton ausschalten
1705
+ unmute: Ton einschalten
1480
1706
  widgets:
1481
1707
  attributes:
1482
1708
  media_loading_spinner:
@@ -1846,10 +2072,15 @@ de:
1846
2072
  untitled: Unbenannter Erzählstrang
1847
2073
  structured_data:
1848
2074
  feature_name: Eingebettete strukturierte Daten
2075
+ faq_page_structured_data:
2076
+ feature_name: FAQ-Seite strukturierte Daten
1849
2077
  title_loading_spinner:
1850
2078
  feature_name: "'Titel und Bild'-Lade-Ansicht"
1851
2079
  widget_type_name: Titel und Bild
1852
2080
  ui:
2081
+ color_picker:
2082
+ hue: "Farbton"
2083
+ opacity: "Deckkraft"
1853
2084
  configuration_editor:
1854
2085
  tabs:
1855
2086
  consent_bar: Consent-Leiste
@@ -1988,6 +2219,8 @@ de:
1988
2219
  default_slideshow_mode: Vertikales Scrollen/Wischen
1989
2220
  phone_horizontal_slideshow_mode: Horizontales Wischen auf Phones
1990
2221
  slim_player_controls: Minimalistisch
2222
+ cutoff_modes:
2223
+ none: "(Kein)"
1991
2224
  support:
1992
2225
  array:
1993
2226
  last_word_connector: " und "
@@ -2009,3 +2242,14 @@ de:
2009
2242
  next: ">>"
2010
2243
  previous: !!str '<<'
2011
2244
  truncate: "..."
2245
+ activemodel:
2246
+ attributes:
2247
+ pageflow/site_root_entry_form:
2248
+ entry: Beitrag
2249
+ entry_id: Beitrag
2250
+ errors:
2251
+ models:
2252
+ pageflow/site_root_entry_form:
2253
+ attributes:
2254
+ entry:
2255
+ blank: nicht gefunden