pageflow 15.6.1 → 15.7.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of pageflow might be problematic. Click here for more details.

Files changed (267) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +236 -11
  3. data/README.md +1 -2
  4. data/admins/pageflow/entry.rb +28 -57
  5. data/admins/pageflow/user.rb +1 -3
  6. data/app/assets/images/pageflow/admin/icons/buttons/editor.svg +2 -0
  7. data/app/assets/images/pageflow/admin/icons/buttons/preview.svg +2 -0
  8. data/app/assets/images/pageflow/admin/icons/buttons/show_public.svg +2 -0
  9. data/app/assets/images/pageflow/admin/icons/delete.svg +9 -0
  10. data/app/assets/images/pageflow/admin/icons/done.svg +6 -0
  11. data/app/assets/images/pageflow/admin/icons/edit.svg +7 -0
  12. data/app/assets/images/pageflow/admin/icons/editor.svg +2 -0
  13. data/app/assets/images/pageflow/admin/icons/folder.svg +8 -0
  14. data/app/assets/images/pageflow/admin/icons/folder_active.svg +8 -0
  15. data/app/assets/images/pageflow/admin/icons/info.svg +3 -0
  16. data/app/assets/images/pageflow/admin/icons/new.svg +5 -0
  17. data/app/assets/images/pageflow/admin/icons/preview.svg +2 -0
  18. data/app/assets/images/pageflow/admin/icons/published.svg +2 -0
  19. data/app/assets/images/pageflow/admin/icons/published_with_password.svg +2 -0
  20. data/app/assets/images/pageflow/admin/icons/show_public.svg +2 -0
  21. data/app/assets/images/pageflow/editor/blank_entry/logo.png +0 -0
  22. data/app/assets/images/pageflow/themes/default/embed_opt_in.svg +3 -0
  23. data/app/assets/images/pageflow/themes/default/embed_opt_out_info.svg +16 -0
  24. data/app/assets/javascripts/pageflow/admin/entries.js +9 -57
  25. data/app/assets/javascripts/pageflow/dist/ui.js +127 -10
  26. data/app/assets/stylesheets/pageflow/admin/active_admin_patches.scss +18 -16
  27. data/app/assets/stylesheets/pageflow/admin/badge_list.scss +25 -35
  28. data/app/assets/stylesheets/pageflow/admin/columns.scss +13 -11
  29. data/app/assets/stylesheets/pageflow/admin/embed_code.scss +1 -4
  30. data/app/assets/stylesheets/pageflow/admin/entries/folders.scss +44 -19
  31. data/app/assets/stylesheets/pageflow/admin/entries.scss +15 -31
  32. data/app/assets/stylesheets/pageflow/admin/features.scss +3 -1
  33. data/app/assets/stylesheets/pageflow/admin/forms.scss +14 -12
  34. data/app/assets/stylesheets/pageflow/admin/hint.scss +8 -14
  35. data/app/assets/stylesheets/pageflow/admin/icon_button.scss +25 -14
  36. data/app/assets/stylesheets/pageflow/admin/icon_link.scss +31 -15
  37. data/app/assets/stylesheets/pageflow/admin/publication_state_indicator.scss +14 -7
  38. data/app/assets/stylesheets/pageflow/admin/status_tags.scss +5 -4
  39. data/app/assets/stylesheets/pageflow/admin/tabs_view.scss +36 -34
  40. data/app/assets/stylesheets/pageflow/admin/tooltip_bubble.scss +15 -11
  41. data/app/assets/stylesheets/pageflow/admin.scss +12 -0
  42. data/app/assets/stylesheets/pageflow/editor/background_positioning.scss +15 -61
  43. data/app/assets/stylesheets/pageflow/editor/base.scss +28 -13
  44. data/app/assets/stylesheets/pageflow/editor/blank_entry.scss +6 -6
  45. data/app/assets/stylesheets/pageflow/editor/change_theme.scss +28 -71
  46. data/app/assets/stylesheets/pageflow/editor/composables.scss +2 -2
  47. data/app/assets/stylesheets/pageflow/editor/confirm_encoding.scss +18 -36
  48. data/app/assets/stylesheets/pageflow/editor/confirm_upload.scss +12 -39
  49. data/app/assets/stylesheets/pageflow/editor/dialogs.scss +39 -12
  50. data/app/assets/stylesheets/pageflow/editor/disabled_atmo_indicator.scss +3 -3
  51. data/app/assets/stylesheets/pageflow/editor/drop_down_button.scss +7 -10
  52. data/app/assets/stylesheets/pageflow/editor/emulation_mode_button.scss +3 -8
  53. data/app/assets/stylesheets/pageflow/editor/failures.scss +3 -3
  54. data/app/assets/stylesheets/pageflow/editor/file_import.scss +22 -38
  55. data/app/assets/stylesheets/pageflow/editor/file_meta_data.scss +3 -7
  56. data/app/assets/stylesheets/pageflow/editor/file_settings_dialog.scss +4 -24
  57. data/app/assets/stylesheets/pageflow/editor/file_stages.scss +10 -11
  58. data/app/assets/stylesheets/pageflow/editor/file_thumbnails.scss +4 -8
  59. data/app/assets/stylesheets/pageflow/editor/files.scss +7 -6
  60. data/app/assets/stylesheets/pageflow/editor/files_explorer.scss +13 -30
  61. data/app/assets/stylesheets/pageflow/editor/files_gallery.scss +15 -11
  62. data/app/assets/stylesheets/pageflow/editor/filtered_files.scss +6 -7
  63. data/app/assets/stylesheets/pageflow/editor/help.scss +19 -14
  64. data/app/assets/stylesheets/pageflow/editor/help_image.scss +1 -1
  65. data/app/assets/stylesheets/pageflow/editor/info_box.scss +19 -0
  66. data/app/assets/stylesheets/pageflow/editor/inputs/file_input.scss +7 -11
  67. data/app/assets/stylesheets/pageflow/editor/inputs/file_processing_state_display.scss +0 -2
  68. data/app/assets/stylesheets/pageflow/editor/inputs/reference.scss +7 -11
  69. data/app/assets/stylesheets/pageflow/editor/list.scss +13 -10
  70. data/app/assets/stylesheets/pageflow/editor/loading.scss +1 -1
  71. data/app/assets/stylesheets/pageflow/editor/locked.scss +9 -5
  72. data/app/assets/stylesheets/pageflow/editor/menu.scss +5 -5
  73. data/app/assets/stylesheets/pageflow/editor/notifications.scss +15 -14
  74. data/app/assets/stylesheets/pageflow/editor/other_entry_item.scss +7 -3
  75. data/app/assets/stylesheets/pageflow/editor/outline.scss +57 -19
  76. data/app/assets/stylesheets/pageflow/editor/page_links.scss +10 -8
  77. data/app/assets/stylesheets/pageflow/editor/page_selection.scss +2 -29
  78. data/app/assets/stylesheets/pageflow/editor/publish_entry.scss +5 -6
  79. data/app/assets/stylesheets/pageflow/editor/quotas.scss +2 -3
  80. data/app/assets/stylesheets/pageflow/editor/select_button.scss +12 -6
  81. data/app/assets/stylesheets/pageflow/editor/sidebar_footer.scss +1 -5
  82. data/app/assets/stylesheets/pageflow/editor/storyline_picker.scss +6 -2
  83. data/app/assets/stylesheets/pageflow/editor/text_tracks.scss +6 -22
  84. data/app/assets/stylesheets/pageflow/editor/widgets.scss +2 -2
  85. data/app/assets/stylesheets/pageflow/editor/wysihtml5.scss +35 -29
  86. data/app/assets/stylesheets/pageflow/mixins/background_icons.scss +3 -3
  87. data/app/assets/stylesheets/pageflow/mixins/buttons.scss +50 -68
  88. data/app/assets/stylesheets/pageflow/themes/default/base.scss +2 -0
  89. data/app/assets/stylesheets/pageflow/themes/default/consent/bar.scss +156 -0
  90. data/app/assets/stylesheets/pageflow/themes/default/consent/vendor_list.scss +62 -0
  91. data/app/assets/stylesheets/pageflow/themes/default/consent.scss +2 -0
  92. data/app/assets/stylesheets/pageflow/themes/default/logo/alignment.scss +7 -0
  93. data/app/assets/stylesheets/pageflow/themes/default/page/shadow.scss +44 -0
  94. data/app/assets/stylesheets/pageflow/themes/default/third_party_embed_consent.scss +103 -0
  95. data/app/assets/stylesheets/pageflow/ui/forms.scss +79 -84
  96. data/app/assets/stylesheets/pageflow/ui/functions.scss +56 -0
  97. data/app/assets/stylesheets/pageflow/ui/input/check_box_group_input.scss +2 -3
  98. data/app/assets/stylesheets/pageflow/ui/input/color_input.scss +6 -6
  99. data/app/assets/stylesheets/pageflow/ui/input/extended_select_input.scss +63 -50
  100. data/app/assets/stylesheets/pageflow/ui/normalize/forms.scss +153 -0
  101. data/app/assets/stylesheets/pageflow/ui/normalize.scss +278 -0
  102. data/app/assets/stylesheets/pageflow/ui/properties.scss +44 -0
  103. data/app/assets/stylesheets/pageflow/ui/table_cells/delete_row_table_cell.scss +1 -1
  104. data/app/assets/stylesheets/pageflow/ui/table_view.scss +14 -18
  105. data/app/assets/stylesheets/pageflow/ui/tabs_view.scss +8 -11
  106. data/app/assets/stylesheets/pageflow/ui/tooltip.scss +6 -8
  107. data/app/assets/stylesheets/pageflow/ui/validation_error_messages.scss +6 -0
  108. data/app/assets/stylesheets/pageflow/ui.scss +4 -0
  109. data/app/controllers/pageflow/edit_locks_controller.rb +3 -1
  110. data/app/helpers/pageflow/admin/entries_helper.rb +2 -12
  111. data/app/helpers/pageflow/embed_code_helper.rb +1 -1
  112. data/app/helpers/pageflow/entries_helper.rb +41 -2
  113. data/app/helpers/pageflow/file_background_images_helper.rb +1 -1
  114. data/app/helpers/pageflow/page_types_helper.rb +1 -1
  115. data/app/helpers/pageflow/themes_helper.rb +1 -1
  116. data/app/jobs/pageflow/poll_meta_data_from_zencoder_job.rb +1 -1
  117. data/app/jobs/pageflow/poll_zencoder_job.rb +1 -9
  118. data/app/models/pageflow/audio_file.rb +17 -0
  119. data/app/models/pageflow/audio_file_url_templates.rb +4 -1
  120. data/app/models/pageflow/customized_theme.rb +37 -0
  121. data/app/models/pageflow/draft_entry.rb +6 -59
  122. data/app/models/pageflow/entry_at_revision.rb +68 -0
  123. data/app/models/pageflow/entry_role_query.rb +44 -24
  124. data/app/models/pageflow/image_file_css_background_image_urls.rb +8 -2
  125. data/app/models/pageflow/published_entry.rb +9 -56
  126. data/app/models/pageflow/theme_customization.rb +46 -0
  127. data/app/models/pageflow/theme_customization_file.rb +58 -0
  128. data/app/models/pageflow/video_file.rb +11 -1
  129. data/app/models/pageflow/video_file_url_templates.rb +1 -0
  130. data/app/policies/pageflow/entry_policy.rb +4 -0
  131. data/app/state_machines/pageflow/media_encoding_state_machine.rb +23 -4
  132. data/app/views/admin/entries/_form.html.erb +50 -0
  133. data/app/views/admin/entries/entry_type_name_input.html.erb +5 -0
  134. data/app/views/admin/features/_form.html.erb +1 -1
  135. data/app/views/admin/memberships/_form.html.erb +2 -3
  136. data/app/views/admin/users/_form.html.erb +1 -1
  137. data/app/views/admin/users/invitation.html.erb +2 -2
  138. data/app/views/components/pageflow/admin/entry_user_badge_list.rb +10 -9
  139. data/app/views/components/pageflow/admin/members_tab.rb +5 -1
  140. data/app/views/components/pageflow/admin/revisions_tab.rb +13 -3
  141. data/app/views/components/pageflow/admin/timestamp.rb +20 -0
  142. data/app/views/components/pageflow/admin/user_account_badge_list.rb +5 -6
  143. data/app/views/pageflow/admin/entries/_cannot_add_user.html.erb +9 -5
  144. data/app/views/pageflow/admin/entries/_entry_type_name_input.html.erb +7 -0
  145. data/app/views/pageflow/audio_files/_audio_file.json.jbuilder +13 -0
  146. data/app/views/pageflow/editor/encoding_confirmations/_intro.html.erb +0 -0
  147. data/app/views/pageflow/editor/encoding_confirmations/check.json.jbuilder +14 -2
  148. data/config/initializers/paperclip.rb +16 -1
  149. data/config/locales/de.yml +24 -28
  150. data/config/locales/en.yml +19 -10
  151. data/db/migrate/20210528073122_create_pageflow_theme_customizations.rb +11 -0
  152. data/db/migrate/20210531090654_create_pageflow_theme_customization_files.rb +15 -0
  153. data/db/migrate/20210531102228_add_selected_file_ids_to_theme_customizations.rb +5 -0
  154. data/db/migrate/20211020085902_add_canonical_entry_url_prefix_to_themings.rb +5 -0
  155. data/db/migrate/20220503150010_add_peak_data_to_audio_files.rb +5 -0
  156. data/db/migrate/20220705084830_add_trailing_slash_in_canonical_urls_to_themings.rb +5 -0
  157. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/editor.js +256 -124
  158. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/frontend.js +566 -167
  159. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/react-client.js +5 -5
  160. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/react-server.js +4 -4
  161. data/entry_types/paged/app/helpers/pageflow_paged/third_party_embed_consent_helper.rb +38 -0
  162. data/entry_types/paged/app/views/pageflow_paged/third_party_embed_consent/_opt_in.html.erb +12 -0
  163. data/entry_types/paged/app/views/pageflow_paged/third_party_embed_consent/_opt_out_info.html.erb +10 -0
  164. data/entry_types/paged/config/initializers/features.rb +2 -0
  165. data/entry_types/paged/config/locales/new/video_contain.de.yml +7 -0
  166. data/entry_types/paged/config/locales/new/video_contain.en.yml +7 -0
  167. data/entry_types/scrolled/app/helpers/pageflow_scrolled/editor/seed_html_helper.rb +3 -0
  168. data/entry_types/scrolled/app/helpers/pageflow_scrolled/entry_json_seed_helper.rb +1 -0
  169. data/entry_types/scrolled/app/helpers/pageflow_scrolled/packs_helper.rb +58 -0
  170. data/entry_types/scrolled/app/helpers/pageflow_scrolled/react_server_side_rendering_helper.rb +37 -3
  171. data/entry_types/scrolled/app/helpers/pageflow_scrolled/themes_helper.rb +92 -6
  172. data/entry_types/scrolled/app/helpers/pageflow_scrolled/webpack_public_path_helper.rb +20 -0
  173. data/entry_types/scrolled/app/models/pageflow_scrolled/content_element.rb +7 -0
  174. data/entry_types/scrolled/app/views/pageflow_scrolled/editor/entries/_head.html.erb +5 -2
  175. data/entry_types/scrolled/app/views/pageflow_scrolled/editor/entries/_seed.json.jbuilder +5 -1
  176. data/entry_types/scrolled/app/views/pageflow_scrolled/entries/show.html.erb +5 -4
  177. data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_entry.json.jbuilder +16 -0
  178. data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_theme.json.jbuilder +13 -2
  179. data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_widget.json.jbuilder +2 -0
  180. data/entry_types/scrolled/config/locales/de.yml +1 -8
  181. data/entry_types/scrolled/config/locales/en.yml +1 -9
  182. data/entry_types/scrolled/config/locales/new/before_after_slider.de.yml +8 -0
  183. data/entry_types/scrolled/config/locales/new/before_after_slider.en.yml +8 -0
  184. data/entry_types/scrolled/config/locales/new/center_ragged.de.yml +8 -0
  185. data/entry_types/scrolled/config/locales/new/center_ragged.en.yml +9 -0
  186. data/entry_types/scrolled/config/locales/new/consent.de.yml +25 -0
  187. data/entry_types/scrolled/config/locales/new/consent.en.yml +24 -0
  188. data/entry_types/scrolled/config/locales/new/content_element_categories.de.yml +39 -0
  189. data/entry_types/scrolled/config/locales/new/content_element_categories.en.yml +39 -0
  190. data/entry_types/scrolled/config/locales/new/default_transition.de.yml +14 -0
  191. data/entry_types/scrolled/config/locales/new/default_transition.en.yml +14 -0
  192. data/entry_types/scrolled/config/locales/new/header_line_breaks.de.yml +28 -0
  193. data/entry_types/scrolled/config/locales/new/header_line_breaks.en.yml +27 -0
  194. data/entry_types/scrolled/config/locales/new/header_size.de.yml +17 -0
  195. data/entry_types/scrolled/config/locales/new/header_size.en.yml +17 -0
  196. data/entry_types/scrolled/config/locales/new/iframe_embed.de.yml +39 -0
  197. data/entry_types/scrolled/config/locales/new/iframe_embed.en.yml +39 -0
  198. data/entry_types/scrolled/config/locales/new/inline_loops.de.yml +26 -0
  199. data/entry_types/scrolled/config/locales/new/inline_loops.en.yml +26 -0
  200. data/entry_types/scrolled/config/locales/new/portrait_inline_image.de.yml +9 -0
  201. data/entry_types/scrolled/config/locales/new/portrait_inline_image.en.yml +9 -0
  202. data/entry_types/scrolled/config/locales/new/section_width.de.yml +10 -0
  203. data/entry_types/scrolled/config/locales/new/section_width.en.yml +10 -0
  204. data/entry_types/scrolled/config/locales/new/typography_variants.de.yml +7 -0
  205. data/entry_types/scrolled/config/locales/new/typography_variants.en.yml +7 -0
  206. data/entry_types/scrolled/config/locales/new/video_embed_poster.de.yml +8 -0
  207. data/entry_types/scrolled/config/locales/new/video_embed_poster.en.yml +8 -0
  208. data/entry_types/scrolled/config/locales/new/waveform_styles.de.yml +11 -0
  209. data/entry_types/scrolled/config/locales/new/waveform_styles.en.yml +12 -0
  210. data/entry_types/scrolled/config/locales/new/widgets.de.yml +6 -0
  211. data/entry_types/scrolled/config/locales/new/widgets.en.yml +6 -0
  212. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/install_generator.rb +29 -5
  213. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/themes_plugin.rb.tt +8 -6
  214. data/entry_types/scrolled/lib/pageflow_scrolled/additional_packs.rb +37 -0
  215. data/entry_types/scrolled/lib/pageflow_scrolled/additional_seed_data.rb +57 -0
  216. data/entry_types/scrolled/lib/pageflow_scrolled/configuration.rb +49 -0
  217. data/entry_types/scrolled/lib/pageflow_scrolled/plugin.rb +8 -0
  218. data/entry_types/scrolled/lib/pageflow_scrolled/react_widget_type.rb +42 -0
  219. data/entry_types/scrolled/lib/pageflow_scrolled.rb +17 -1
  220. data/entry_types/scrolled/package/contentElements-editor.js +323 -89
  221. data/entry_types/scrolled/package/contentElements-frontend.css +1 -1
  222. data/entry_types/scrolled/package/contentElements-frontend.js +719 -529
  223. data/entry_types/scrolled/package/editor.js +459 -261
  224. data/entry_types/scrolled/package/frontend/{EditableText-7093fd0e.js → EditableInlineText.module-b9923660.js} +284 -362
  225. data/entry_types/scrolled/package/frontend/{i18n-4dc6c377.js → PhonePlatformContext-9fb97827.js} +199 -106
  226. data/entry_types/scrolled/package/frontend/{Viewer-e49e7807.js → Viewer-e2290ea0.js} +196 -79
  227. data/entry_types/scrolled/package/frontend/{Wavesurfer-0adf5667.js → Wavesurfer-7d9cf1b7.js} +16 -58
  228. data/entry_types/scrolled/package/frontend/{components-6a6793ca.js → components-6ab26015.js} +664 -671
  229. data/entry_types/scrolled/package/frontend/{getPrototypeOf-63c7c8e8.js → createSuper-d0f30da3.js} +34 -5
  230. data/entry_types/scrolled/package/frontend/index.css +1 -9
  231. data/entry_types/scrolled/package/frontend/index.js +1919 -2386
  232. data/entry_types/scrolled/package/frontend/{useBrowserFeature-91a4c29d.js → usePhonePlatform-2857c22b.js} +9 -8
  233. data/entry_types/scrolled/package/frontend-server.js +3 -6
  234. data/entry_types/scrolled/package/package.json +16 -8
  235. data/entry_types/scrolled/package/testHelpers.js +456 -0
  236. data/entry_types/scrolled/package/values/breakpoints.module.css +9 -0
  237. data/entry_types/scrolled/package/values/colors.module.css +5 -0
  238. data/entry_types/scrolled/package/widgets/defaultNavigation.css +9 -0
  239. data/entry_types/scrolled/package/widgets/defaultNavigation.js +612 -0
  240. data/entry_types/scrolled/spec/fixtures/image.svg +1 -0
  241. data/lib/pageflow/ability_mixin.rb +4 -0
  242. data/lib/pageflow/built_in_widget_type.rb +4 -0
  243. data/lib/pageflow/built_in_widget_types_plugin.rb +7 -0
  244. data/lib/pageflow/configuration.rb +34 -1
  245. data/lib/pageflow/entry_type.rb +11 -2
  246. data/lib/pageflow/entry_type_configuration.rb +2 -0
  247. data/lib/pageflow/file_type.rb +24 -0
  248. data/lib/pageflow/paperclip_processors/audio_waveform.rb +42 -0
  249. data/lib/pageflow/paperclip_processors/noop.rb +10 -0
  250. data/lib/pageflow/theme_customizations.rb +61 -0
  251. data/lib/pageflow/version.rb +1 -1
  252. data/lib/pageflow.rb +9 -0
  253. data/package/config/jest/index.js +2 -1
  254. data/package/config/postcss/scaleFunctions.js +71 -0
  255. data/package/editor.js +95 -85
  256. data/package/frontend.js +521 -161
  257. data/package/package.json +5 -3
  258. data/package/testHelpers.js +26 -5
  259. data/package/ui.js +124 -11
  260. data/spec/factories/draft_entries.rb +19 -1
  261. data/spec/factories/entries.rb +4 -0
  262. data/spec/factories/published_entries.rb +6 -0
  263. data/spec/fixtures/audio.ogg +0 -0
  264. metadata +118 -14
  265. data/app/views/admin/entries/_not_allowed_to_see_entry_types.json.jbuilder +0 -2
  266. data/app/views/admin/entries/entry_types.json.jbuilder +0 -4
  267. data/package/config/jest/transformers/upwardBabel.js +0 -5
@@ -114,7 +114,10 @@ module Pageflow
114
114
  def hls_playlist
115
115
  if Pageflow.config.zencoder_options[:hls_smil_suffix].present?
116
116
  ZencoderAttachment.new(self,
117
- 'hls-playlist.smil',
117
+ Pageflow.config.zencoder_options.fetch(
118
+ :hls_smil_file_name,
119
+ 'hls-playlist.smil'
120
+ ),
118
121
  host: :hls,
119
122
  url_suffix: Pageflow.config.zencoder_options[:hls_smil_suffix])
120
123
  else
@@ -153,5 +156,12 @@ module Pageflow
153
156
  :height,
154
157
  :output_presences)
155
158
  end
159
+
160
+ def post_process_encoded_files
161
+ self.thumbnail = URI.parse(zencoder_thumbnail.url(default_protocol: 'https'))
162
+ self.poster = URI.parse(zencoder_poster.url(default_protocol: 'https'))
163
+ rescue OpenURI::HTTPError
164
+ throw(:halt, :pending)
165
+ end
156
166
  end
157
167
  end
@@ -27,6 +27,7 @@ module Pageflow
27
27
  def example_file
28
28
  @example_file ||= VideoFile.new(id: 0).tap do |video_file|
29
29
  video_file.file_name = ':basename.mp4'
30
+ video_file.output_presences = {':pageflow_hls_qualities' => true}
30
31
  video_file.poster_file_name = video_file.zencoder_poster.original_filename
31
32
  end
32
33
  end
@@ -46,6 +46,10 @@ module Pageflow
46
46
  @entry
47
47
  end
48
48
 
49
+ def filter_by_type?
50
+ user.admin?
51
+ end
52
+
49
53
  def preview?
50
54
  query.has_at_least_role?(:previewer)
51
55
  end
@@ -22,9 +22,9 @@ module Pageflow
22
22
 
23
23
  event :retry_encoding do
24
24
  transition 'encoding_failed' => 'waiting_for_confirmation',
25
- if: -> { Pageflow.config.confirm_encoding_jobs }
25
+ if: ->(file) { Pageflow.config.confirm_encoding_jobs?(file) }
26
26
  transition 'encoded' => 'waiting_for_confirmation',
27
- if: -> { Pageflow.config.confirm_encoding_jobs }
27
+ if: ->(file) { Pageflow.config.confirm_encoding_jobs?(file) }
28
28
 
29
29
  transition 'encoding_failed' => 'waiting_for_encoding'
30
30
  transition 'encoded' => 'waiting_for_encoding'
@@ -39,7 +39,14 @@ module Pageflow
39
39
  job PollMetaDataFromZencoderJob do
40
40
  on_enter 'fetching_meta_data'
41
41
  result :pending, retry_after: 2.seconds
42
- result ok: 'waiting_for_confirmation'
42
+
43
+ result(
44
+ :ok,
45
+ state: 'waiting_for_confirmation',
46
+ if: ->(file) { Pageflow.config.confirm_encoding_jobs?(file) }
47
+ )
48
+ result ok: 'waiting_for_encoding'
49
+
43
50
  result error: 'fetching_meta_data_failed'
44
51
  end
45
52
 
@@ -51,6 +58,10 @@ module Pageflow
51
58
  Pageflow.config.hooks.invoke(:file_encoding_confirmed, file: file)
52
59
  end
53
60
 
61
+ after_transition any => 'waiting_for_encoding' do |file|
62
+ Pageflow.config.hooks.invoke(:file_encoding, file: file)
63
+ end
64
+
54
65
  job SubmitFileToZencoderJob do
55
66
  on_enter 'waiting_for_encoding'
56
67
  result ok: 'encoding'
@@ -76,7 +87,15 @@ module Pageflow
76
87
 
77
88
  # UploadableFile-overrides
78
89
  def retryable?
79
- can_retry_encoding? && !encoded?
90
+ # Calling `can_retry_encoding?` invokes
91
+ # `Pageflow.config.confirm_encoding_jobs` which might depend on
92
+ # accessing `file.entry.account`. If the file has been reused in
93
+ # a different entry and the original entry has been deleted, we
94
+ # default to making the file not retryable to prevent
95
+ # exceptions.
96
+ entry &&
97
+ can_retry_encoding? &&
98
+ !encoded?
80
99
  end
81
100
 
82
101
  def ready?
@@ -0,0 +1,50 @@
1
+ <%= admin_form_for([:admin, resource]) do |f| %>
2
+ <%= f.inputs do %>
3
+ <%= f.input :title, hint: I18n.t('pageflow.admin.entries.title_hint') %>
4
+
5
+ <% if authorized?(:update_account_on, resource) &&
6
+ account_policy_scope.entry_creatable.many? %>
7
+ <%= f.input(:account,
8
+ as: :searchable_select,
9
+ include_blank: false,
10
+ ajax: {
11
+ resource: Pageflow::Entry,
12
+ collection_name: :eligible_accounts
13
+ },
14
+ input_html: {class: 'entry_account_input'}) %>
15
+ <%end %>
16
+
17
+ <% if authorized?(:update_theming_on, resource) && !resource.new_record? %>
18
+ <%= f.input(:theming,
19
+ as: :searchable_select,
20
+ ajax: {
21
+ resource: Pageflow::Entry,
22
+ collection_name: :eligible_themings,
23
+ params: {
24
+ entry_id: resource.id
25
+ }
26
+ },
27
+ include_blank: false) %>
28
+ <% end %>
29
+
30
+ <% if resource.new_record? %>
31
+ <%= render('pageflow/admin/entries/entry_type_name_input',
32
+ form: f,
33
+ entry_types: Pageflow.config_for(resource.account).entry_types) %>
34
+ <% end %>
35
+
36
+ <% if authorized?(:configure_folder_for, resource) %>
37
+ <% folder_collection = collection_for_folders(resource.account, resource.folder) %>
38
+ <%= f.input(:folder,
39
+ collection: folder_collection,
40
+ include_blank: true) unless folder_collection.empty? %>
41
+ <% end %>
42
+
43
+ <% entry_config = Pageflow.config_for(resource) %>
44
+ <% entry_config.admin_form_inputs.find_all_for(:entry).each do |form_input| %>
45
+ <%= form_input.build(f) %>
46
+ <% end %>
47
+ <% end %>
48
+
49
+ <%= f.actions :submit, :cancel %>
50
+ <% end %>
@@ -0,0 +1,5 @@
1
+ <%= fields_for(:entry, @entry, builder: ActiveAdmin::FormBuilder) do |form| %>
2
+ <%= render('pageflow/admin/entries/entry_type_name_input',
3
+ form: form,
4
+ entry_types: Pageflow.config_for(@entry.account).entry_types) %>
5
+ <% end %>
@@ -3,7 +3,7 @@
3
3
 
4
4
  <%= f.inputs do %>
5
5
  <% Pageflow.config_for(resource).features.each do |feature| %>
6
- <li>
6
+ <li class="input">
7
7
  <%= label_tag(feature_state_input_name(resource, feature.name),
8
8
  t(feature.name_translation_key)) %>
9
9
  <%= feature_state_select_tag(resource, feature.name) %>
@@ -6,12 +6,11 @@
6
6
  <%= f.hidden_field :entity_type, value: entity_type %>
7
7
  <% end %>
8
8
  <%= f.inputs do %>
9
- <%= render partial: 'admin/memberships/role_hint',
10
- locals: {entity_type: entity_type
11
- .gsub('Pageflow::', '').downcase} %>
12
9
  <%= f.input :role,
13
10
  collection: membership_roles_collection(entity_type),
14
11
  include_blank: false %>
12
+ <%= render 'admin/memberships/role_hint',
13
+ entity_type: entity_type.gsub('Pageflow::', '').downcase %>
15
14
  <% end %>
16
15
  <%= f.actions do %>
17
16
  <%= f.action(:submit) %>
@@ -9,5 +9,5 @@
9
9
  collection: available_locales_collection %>
10
10
  <%= f.input :admin if authorized?(:set_admin, current_user) %>
11
11
  <% end %>
12
- <%= f.actions %>
12
+ <%= f.actions :submit, :cancel %>
13
13
  <% end %>
@@ -39,8 +39,8 @@
39
39
 
40
40
  <%= m.input :role,
41
41
  collection: membership_roles_collection('Pageflow::Account'),
42
- include_blank: false,
43
- hint: t('pageflow.admin.memberships.on_account.role.hint_html') %>
42
+ include_blank: false %>
43
+ <%= render 'admin/memberships/role_hint', entity_type: 'account' %>
44
44
  <%= u.input :admin if authorized?(:set_admin, current_user) %>
45
45
  <% end %>
46
46
  <% end %>
@@ -15,17 +15,18 @@ module Pageflow
15
15
 
16
16
  def build_badge(membership)
17
17
  li do
18
- span(user_initials(membership.user), class: 'abbreviation')
19
- div class: 'tooltip' do
18
+ if authorized?(:read, membership.user)
19
+ text_node link_to(user_initials(membership.user),
20
+ admin_user_path(membership.user),
21
+ class: 'abbreviation')
22
+ else
23
+ span(user_initials(membership.user), class: 'abbreviation')
24
+ end
25
+
26
+ div class: 'tooltip_bubble' do
20
27
  role_string =
21
28
  " (#{I18n.t(membership.role, scope: 'activerecord.values.pageflow/membership.role')})"
22
- if authorized?(:read, membership.user)
23
- link_to(membership.user.full_name, admin_user_path(membership.user)) + role_string
24
- else
25
- span class: 'name' do
26
- membership.user.full_name + role_string
27
- end
28
- end
29
+ membership.user.full_name + role_string
29
30
  end
30
31
  end
31
32
  end
@@ -45,7 +45,11 @@ module Pageflow
45
45
  end
46
46
  end
47
47
  end
48
- para text_node I18n.t('pageflow.admin.resource_tabs.account_editor_hint')
48
+
49
+ div class: 'side_hint' do
50
+ para text_node I18n.t('pageflow.admin.resource_tabs.account_editor_hint')
51
+ end
52
+
49
53
  if authorized?(:add_member_to, entry)
50
54
  add_membership_button(current_user, entry, 'entry')
51
55
  end
@@ -30,11 +30,21 @@ module Pageflow
30
30
  end
31
31
  end
32
32
  column :created_with do |revision|
33
- span(I18n.t(revision.created_with, :scope => 'pageflow.admin.entries.revision_created_with'),
34
- :title => I18n.t(revision.created_with, :scope => 'pageflow.admin.entries.revision_created_with_hint'))
33
+ span(class: 'tooltip_clue') do
34
+ text_node t(revision.created_with,
35
+ scope: 'pageflow.admin.entries.revision_created_with')
36
+ span class: 'tooltip_bubble' do
37
+ t(revision.created_with,
38
+ scope: 'pageflow.admin.entries.revision_created_with_hint')
39
+ end
40
+ end
35
41
 
36
42
  if revision.password_protected?
37
- span('', :class => 'password_protected', :title => t('pageflow.admin.entries.password_protected'))
43
+ span(class: 'publication_state_indicator published_with_password_protection') do
44
+ span(class: 'tooltip_bubble') do
45
+ t('pageflow.admin.entries.password_protected')
46
+ end
47
+ end
38
48
  end
39
49
  end
40
50
  column do |revision|
@@ -0,0 +1,20 @@
1
+ module Pageflow
2
+ module Admin
3
+ class Timestamp < ViewComponent
4
+ builder_method :timestamp
5
+
6
+ def build(time)
7
+ if time
8
+ span class: 'tooltip_clue' do
9
+ text_node(l(time, format: time.today? ? :time_today : :date))
10
+ span(l(time, format: :long), class: 'tooltip_bubble')
11
+ end
12
+ end
13
+ end
14
+
15
+ def tag_name
16
+ 'span'
17
+ end
18
+ end
19
+ end
20
+ end
@@ -20,12 +20,11 @@ module Pageflow
20
20
  def build_badge(membership)
21
21
  li do
22
22
  if authorized?(:read, membership.entity)
23
- account_name_display = span(link_to(membership.entity.name,
24
- main_app.admin_account_path(membership.entity)),
25
- class: 'abbreviation')
26
- div class: 'tooltip' do
27
- account_name_display +
28
- " (#{I18n.t(membership.role, scope: 'activerecord.values.pageflow/membership.role')})"
23
+ text_node link_to(membership.entity.name,
24
+ main_app.admin_account_path(membership.entity),
25
+ class: 'abbreviation')
26
+ div class: 'tooltip_bubble' do
27
+ I18n.t(membership.role, scope: 'activerecord.values.pageflow/membership.role')
29
28
  end
30
29
  else
31
30
  span(membership.entity.name, class: 'abbreviation')
@@ -1,5 +1,9 @@
1
- <% if quota.exhausted? %>
2
- <%= t("pageflow.admin.entry.user_quota_exhausted") %>
3
- <% else %>
4
- <%= t("pageflow.admin.entry.entry_membership_hint") %>
5
- <% end %>
1
+ <div class="side_hint">
2
+ <p>
3
+ <% if quota.exhausted? %>
4
+ <%= t("pageflow.admin.entry.user_quota_exhausted") %>
5
+ <% else %>
6
+ <%= t("pageflow.admin.entry.entry_membership_hint") %>
7
+ <% end %>
8
+ </p>
9
+ </div>
@@ -0,0 +1,7 @@
1
+ <%= form.input(:type_name,
2
+ as: :select,
3
+ include_blank: false,
4
+ collection: entry_type_collection(entry_types),
5
+ wrapper_html: {
6
+ style: ('display: none' if entry_types.one?)
7
+ }) %>
@@ -1,2 +1,15 @@
1
1
  json.call(audio_file, :duration_in_ms)
2
2
  json.created_at audio_file.created_at.try(:utc).try(:iso8601, 0)
3
+
4
+ variants = [
5
+ :m4a,
6
+ :mp3,
7
+ :ogg,
8
+ audio_file.peak_data.present? ? :peak_data : nil
9
+ ].compact
10
+
11
+ # Use JBuilder's private _key method to use format variants according
12
+ # to current key format (camel case/underscored). This ensures
13
+ # variants are consistent with the keys generated by
14
+ # ConfigHelper#config_file_url_templates_seed.
15
+ json.variants(variants.map { |varaint| json.__send__(:_key, varaint) })
@@ -1,3 +1,15 @@
1
1
  json.exceeding(@encoding_confirmation.exceeding?)
2
- json.summary_html(render_html_partial('pageflow/editor/encoding_confirmations/summary',
3
- encoding_confirmation: @encoding_confirmation))
2
+
3
+ json.intro_html(
4
+ render_html_partial(
5
+ 'pageflow/editor/encoding_confirmations/intro',
6
+ encoding_confirmation: @encoding_confirmation
7
+ )
8
+ )
9
+
10
+ json.summary_html(
11
+ render_html_partial(
12
+ 'pageflow/editor/encoding_confirmations/summary',
13
+ encoding_confirmation: @encoding_confirmation
14
+ )
15
+ )
@@ -20,8 +20,23 @@ Paperclip.interpolates(:pageflow_attachments_version) do |attachment, style|
20
20
  Pageflow::PaperclipInterpolations::Support.pageflow_attachments_version(attachment, style)
21
21
  end
22
22
 
23
+ Paperclip.interpolates(:pageflow_hls_qualities) do |attachment, _style|
24
+ # Placeholder :pageflow_hls_qualities is included here to let
25
+ # VideoFileUrlTemplates preserve the palceholder in url templates.
26
+ %w[:pageflow_hls_qualities low medium high fullhd 4k].select { |quality|
27
+ attachment.instance.output_presences[quality]
28
+ }.join(',')
29
+ end
30
+
23
31
  Paperclip.configure do |config|
24
- config.register_processor(:pageflow_vtt, Pageflow::PaperclipProcessors::Vtt)
32
+ config.register_processor(:pageflow_vtt,
33
+ Pageflow::PaperclipProcessors::Vtt)
34
+
35
+ config.register_processor(:pageflow_audio_waveform,
36
+ Pageflow::PaperclipProcessors::AudioWaveform)
37
+
38
+ config.register_processor(:noop,
39
+ Pageflow::PaperclipProcessors::Noop)
25
40
  end
26
41
 
27
42
  Paperclip::UriAdapter.register
@@ -178,16 +178,16 @@ de:
178
178
  pageflow/entry:
179
179
  account: Konto
180
180
  author: Autor
181
- created_at: Erstellt am
181
+ created_at: Erstellt
182
182
  credits: Credits
183
- edited_at: Geändert am
183
+ edited_at: Geändert
184
184
  embed_code: Einbetten
185
185
  first_published_at: Erstmals veröffentlicht am
186
186
  keywords: Schlüsselwörter
187
187
  locale: Sprache
188
188
  own_role: Rolle
189
189
  published?: Veröffentlichungstatus
190
- published_at: Veröffentlicht seit
190
+ published_at: Veröffentlicht
191
191
  published_revision_published_at: Veröffentlicht am
192
192
  publisher: Herausgeber
193
193
  share_image_id: Social Sharing Bild
@@ -732,6 +732,12 @@ de:
732
732
  create: "%{model} erstellen"
733
733
  submit: "%{model} speichern"
734
734
  update: "%{model} aktualisieren"
735
+ i18n:
736
+ transliterate:
737
+ rule:
738
+ ä: ae
739
+ ö: oe
740
+ ü: ue
735
741
  language: Deutsch
736
742
  number:
737
743
  currency:
@@ -1026,8 +1032,11 @@ de:
1026
1032
  captions: Ton-Ersatz-Textspur
1027
1033
  descriptions: Bild-Ersatz-Textspur
1028
1034
  subtitles: Übersetzungs-Textspur
1035
+ consent_bar:
1036
+ feature_name: Consent-Leiste
1037
+ widget_type_name: Consent-Leiste
1029
1038
  cookie_notice_bar:
1030
- widget_type_name: Leiste am unteren Seitenrand
1039
+ widget_type_name: Cookie-Hinweis
1031
1040
  default_theme:
1032
1041
  name: Standard
1033
1042
  delayed_text_fade_in:
@@ -1064,6 +1073,11 @@ de:
1064
1073
  outro: Hier siehst Du dann eine Vorschau deines Pageflows.
1065
1074
  classic_loading_spinner:
1066
1075
  widget_type_info_box_text: Dies ist eine Vorschau der klassischen Lade-Ansicht. Wird angezeigt, während der Beitrag lädt.
1076
+ consent_bar:
1077
+ widget_type_info_box_text: |-
1078
+ Die Leiste wird beim ersten Öffnen von Beiträgen angezeigt,
1079
+ wenn Integrationen von Drittanbietern (z.B. Website Tracking
1080
+ oder Embeds) verwendet werden.
1067
1081
  cookie_notice_bar:
1068
1082
  widget_type_info_box_text: Der Hinweis wird beim ersten Öffnen von Beiträgen, die Cookies verwenden, am unteren Seitenrand angezeigt. Cookies werden gesetzt, falls ein Dienst zur Erhebnung von Nutzungsdaten (z.B. Google Analytics) verwendet wird oder wenn die Funktion 'Neue Seiten hervorheben' aktiv ist.
1069
1083
  entries:
@@ -1541,29 +1555,7 @@ de:
1541
1555
  meta_data:
1542
1556
  general:
1543
1557
  menu_item: Allgemein
1544
- text: |
1545
- # Allgemein
1546
-
1547
- ## Titel des Pageflows
1548
-
1549
- Hier kannst Du Deinem Pageflow einen Titel geben, der in der
1550
- Titelleiste des Browserfensters angezeigt wird. Unter diesem
1551
- Titel wird Dein Pageflow nach der Veröffentlichung auch in
1552
- Suchmaschinen indiziert werden.
1553
-
1554
- ## Sprache
1555
-
1556
- Wähle hier, in welcher Sprache Dein Pageflow ausgespielt
1557
- wird. Hierbei geht es um die Frontend-Elemente wie
1558
- z.B. Scroll-Hinweise, die Mouse-over-Texte der Navigation
1559
- und das Impressum.
1560
-
1561
- ## Credits
1562
-
1563
- Hier kannst Du Deine Impressums-Information im Freitext
1564
- eingeben. Zudem können für alle Dateien unter „Dateien
1565
- verwalten“ auch Bildrechte vergeben werden, die dann
1566
- automatisch im Impressum angezeigt werden.
1558
+ text: "# Allgemein\n\n## Titel des Pageflows\n\nHier kannst Du Deinem Pageflow einen Titel geben, der in der\nTitelleiste des Browserfensters angezeigt wird. Unter diesem\nTitel wird Dein Pageflow nach der Veröffentlichung auch in\nSuchmaschinen indiziert werden.\n\n## Sprache\n\nWähle hier, in welcher Sprache Dein Pageflow ausgespielt\nwird. Hierbei geht es um die Frontend-Elemente wie das \nImpressum und die Datenschutz-Einstellung.\n\n## Credits\n\nHier kannst Du Deine Impressums-Information im Freitext\neingeben. Zudem können für alle Dateien unter „Dateien\nverwalten“ auch Bildrechte vergeben werden, die dann\nautomatisch im Impressum angezeigt werden."
1567
1559
  menu_item: Titel und Optionen
1568
1560
  social:
1569
1561
  menu_item: Social
@@ -1695,6 +1687,8 @@ de:
1695
1687
  entries:
1696
1688
  global_links: Globale Links
1697
1689
  image_rights: Bildrechte
1690
+ highdef_background_images:
1691
+ feature_name: Hochaufgelöste Hintergrundbilder
1698
1692
  highdef_video_encoding:
1699
1693
  feature_name: Full HD und 4K Videos
1700
1694
  initial_password:
@@ -1787,6 +1781,7 @@ de:
1787
1781
  ui:
1788
1782
  configuration_editor:
1789
1783
  tabs:
1784
+ consent_bar: Consent-Leiste
1790
1785
  cookie_notice_bar: Cookie Hinweis
1791
1786
  files: Dateien
1792
1787
  general: Allgemein
@@ -1908,7 +1903,7 @@ de:
1908
1903
  roles:
1909
1904
  analytics: Zählpixel
1910
1905
  background_media_control: Hintergrund-Media-Control
1911
- cookie_notice: Cookie Hinweis
1906
+ cookie_notice: Privatsphäre-Einstellungen
1912
1907
  loading_spinner: Lade-Ansicht
1913
1908
  mobile_navigation: Mobile Navigation
1914
1909
  navigation: Navigationsleiste
@@ -1933,6 +1928,7 @@ de:
1933
1928
  default: "%d.%m.%Y, %H:%M"
1934
1929
  long: "%d.%m.%Y, %H:%M"
1935
1930
  short: "%d. %B %Y, %H:%M Uhr"
1931
+ time_today: Heute, %H:%M
1936
1932
  pm: nachmittags
1937
1933
  views:
1938
1934
  pagination:
@@ -178,16 +178,16 @@ en:
178
178
  pageflow/entry:
179
179
  account: Account
180
180
  author: Author
181
- created_at: Created at
181
+ created_at: Created
182
182
  credits: Credits
183
- edited_at: Updated at
183
+ edited_at: Edited
184
184
  embed_code: Embed
185
185
  first_published_at: First published at
186
186
  keywords: Keywords
187
187
  locale: Language
188
188
  own_role: Role
189
189
  published?: Publication state
190
- published_at: Published since
190
+ published_at: Published
191
191
  published_revision_published_at: Published since
192
192
  publisher: Publisher
193
193
  share_image_id: Social Sharing Image
@@ -1026,8 +1026,11 @@ en:
1026
1026
  captions: Audio Replacement Text Track
1027
1027
  descriptions: Image Description Text Track
1028
1028
  subtitles: Translation Text Track
1029
+ consent_bar:
1030
+ feature_name: Consent bar
1031
+ widget_type_name: Consent bar
1029
1032
  cookie_notice_bar:
1030
- widget_type_name: Bar at lower page margin
1033
+ widget_type_name: Cookied notice
1031
1034
  default_theme:
1032
1035
  name: Default
1033
1036
  delayed_text_fade_in:
@@ -1066,6 +1069,10 @@ en:
1066
1069
  outro: In this area, a live preview will be shown.
1067
1070
  classic_loading_spinner:
1068
1071
  widget_type_info_box_text: This is a preview of the classic loading spinner. It is displayed while the page is loading.
1072
+ consent_bar:
1073
+ widget_type_info_box_text: |-
1074
+ The bar is displayed when first viewing an entry that uses
1075
+ third party integrations (e.g., website tracking or embeds).
1069
1076
  cookie_notice_bar:
1070
1077
  widget_type_info_box_text: The notice is displayed when visiting a story that uses Cookies. Cookies are set, if an analytics integration is active or the 'Emphasize new pages' feature has been enabled.
1071
1078
  entries:
@@ -1528,7 +1535,7 @@ en:
1528
1535
  meta_data:
1529
1536
  general:
1530
1537
  menu_item: General
1531
- text: |
1538
+ text: |-
1532
1539
  # General
1533
1540
 
1534
1541
  ## Title of the Pageflow
@@ -1540,7 +1547,7 @@ en:
1540
1547
 
1541
1548
  ## Language
1542
1549
 
1543
- Decide in which language your Pageflow should be displayed. This refers to the frontend text such as multimedia tips, scroll-indicators, the overview and the legal notice.
1550
+ Decide in which language your Pageflow should be displayed. This refers to the frontend text such as the legal notice and privacy settings.
1544
1551
 
1545
1552
  ## Credits
1546
1553
  Here you can enter your imprint information in free text. In addition, image rights can be assigned for all files under "Manage files", which are then automatically displayed in the imprint.
@@ -1670,6 +1677,8 @@ en:
1670
1677
  entries:
1671
1678
  global_links: Global links
1672
1679
  image_rights: Credits
1680
+ highdef_background_images:
1681
+ feature_name: High resolution background images
1673
1682
  highdef_video_encoding:
1674
1683
  feature_name: Full HD and 4K videos
1675
1684
  initial_password:
@@ -1762,6 +1771,7 @@ en:
1762
1771
  ui:
1763
1772
  configuration_editor:
1764
1773
  tabs:
1774
+ consent_bar: Consent bar
1765
1775
  cookie_notice_bar: Cookie Notice
1766
1776
  files: Files
1767
1777
  general: General
@@ -1804,9 +1814,7 @@ en:
1804
1814
  The text-block can be formatted with the buttons underneath the input field. [B= bold / I=italic / U=underlined / infinity symbol= Link/URL to an external website]
1805
1815
 
1806
1816
  All changes are visible in the left front-end-view as soon as you leave the appropriate input field in the editor.
1807
- thumbnail_image_id: 'The thumbnail replaces the automatically generated preview-picture in the navigation and overview.
1808
-
1809
- '
1817
+ thumbnail_image_id: 'The thumbnail replaces the automatically generated preview-picture in the navigation and overview.'
1810
1818
  transition: Choose the animation, that will be used when users scroll to this page.
1811
1819
  templates:
1812
1820
  inputs:
@@ -1886,7 +1894,7 @@ en:
1886
1894
  roles:
1887
1895
  analytics: Tracking
1888
1896
  background_media_control: Background media control
1889
- cookie_notice: Cookie Notice
1897
+ cookie_notice: Privacy settings
1890
1898
  loading_spinner: Loading View
1891
1899
  mobile_navigation: Mobile navigation
1892
1900
  navigation: Navigation bar
@@ -1911,6 +1919,7 @@ en:
1911
1919
  default: "%a, %d %b %Y %H:%M:%S %z"
1912
1920
  long: "%B %d, %Y %H:%M"
1913
1921
  short: "%d %b %H:%M"
1922
+ time_today: Today, %H:%M
1914
1923
  pm: pm
1915
1924
  views:
1916
1925
  pagination:
@@ -0,0 +1,11 @@
1
+ class CreatePageflowThemeCustomizations < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :pageflow_theme_customizations do |t|
4
+ t.references :account
5
+ t.string :entry_type_name
6
+ t.text :overrides
7
+
8
+ t.timestamps
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,15 @@
1
+ class CreatePageflowThemeCustomizationFiles < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :pageflow_theme_customization_files do |t|
4
+ t.references :theme_customization,
5
+ index: {name: 'index_pageflow_theme_customization_files_on_customization'}
6
+ t.string :type_name
7
+ t.string :attachment_file_name
8
+ t.string :attachment_content_type
9
+ t.integer :attachment_file_size
10
+ t.datetime :attachment_updated_at
11
+
12
+ t.timestamps
13
+ end
14
+ end
15
+ end