pageflow 16.0.0 → 16.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +210 -33
- data/README.md +0 -1
- data/Rakefile +1 -1
- data/admins/pageflow/entry.rb +0 -1
- data/admins/pageflow/sites.rb +3 -0
- data/app/assets/javascripts/pageflow/dist/ui.js +298 -72
- data/app/assets/stylesheets/pageflow/admin/permalink_input.scss +10 -0
- data/app/assets/stylesheets/pageflow/editor/drop_down_button.scss +6 -1
- data/app/assets/stylesheets/pageflow/editor/file_thumbnails.scss +4 -0
- data/app/assets/stylesheets/pageflow/editor/help.scss +3 -3
- data/app/assets/stylesheets/pageflow/editor/info_box.scss +7 -0
- data/app/assets/stylesheets/pageflow/editor/inputs/file_input.scss +0 -5
- data/app/assets/stylesheets/pageflow/ui/forms.scss +1 -1
- data/app/controllers/pageflow/chapters_controller.rb +2 -2
- data/app/controllers/pageflow/editor/files_controller.rb +1 -1
- data/app/controllers/pageflow/entries_controller.rb +10 -0
- data/app/controllers/pageflow/feeds_controller.rb +18 -0
- data/app/controllers/pageflow/pages_controller.rb +2 -2
- data/app/controllers/pageflow/sitemaps_controller.rb +15 -0
- data/app/controllers/pageflow/storylines_controller.rb +2 -2
- data/app/helpers/pageflow/entries_helper.rb +2 -1
- data/app/helpers/pageflow/feeds_helper.rb +66 -0
- data/app/helpers/pageflow/page_types_helper.rb +9 -9
- data/app/inputs/pageflow_permalink_input.rb +15 -3
- data/app/models/concerns/pageflow/reusable_file.rb +3 -3
- data/app/models/pageflow/account.rb +8 -0
- data/app/models/pageflow/audio_file_url_templates.rb +2 -1
- data/app/models/pageflow/draft_entry.rb +1 -1
- data/app/models/pageflow/entries_feed.rb +32 -0
- data/app/models/pageflow/image_file.rb +14 -3
- data/app/models/pageflow/membership.rb +3 -2
- data/app/models/pageflow/other_file.rb +5 -0
- data/app/models/pageflow/other_file_url_templates.rb +16 -0
- data/app/models/pageflow/published_entry.rb +6 -0
- data/app/models/pageflow/revision.rb +4 -0
- data/app/models/pageflow/site.rb +8 -0
- data/app/models/pageflow/sitemaps.rb +13 -0
- data/app/models/pageflow/used_file.rb +2 -2
- data/app/models/pageflow/video_file_url_templates.rb +3 -1
- data/app/models/pageflow/widget.rb +9 -1
- data/app/views/admin/entries/_permalink_inputs.html.erb +1 -2
- data/app/views/admin/sites/_attributes_table.html.arb +3 -0
- data/app/views/admin/sites/_fields.html.erb +6 -0
- data/app/views/components/pageflow/admin/extensible_attributes_table.rb +8 -2
- data/app/views/components/pageflow/admin/sites_tab.rb +3 -0
- data/app/views/pageflow/editor/config/_seeds.json.jbuilder +1 -0
- data/app/views/pageflow/feeds/index.atom.builder +20 -0
- data/app/views/pageflow/sitemaps/index.xml.builder +9 -0
- data/config/initializers/features.rb +1 -0
- data/config/initializers/paperclip.rb +4 -0
- data/config/locales/de.yml +27 -6
- data/config/locales/en.yml +30 -4
- data/config/routes.rb +3 -0
- data/config/spring.rb +1 -1
- data/db/migrate/20230120092923_create_other_files.rb +23 -0
- data/db/migrate/20230323115745_add_feeds_enabled_to_sites.rb +5 -0
- data/db/migrate/20230323154323_add_sitemap_enabled_to_sites.rb +5 -0
- data/db/migrate/20230331103823_add_title_to_sites.rb +5 -0
- data/db/migrate/20230405103612_add_custom_feed_url_to_sites.rb +5 -0
- data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/editor.js +445 -109
- data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/frontend.js +26 -3
- data/entry_types/paged/app/controllers/pageflow_paged/editor/entries_controller.rb +0 -2
- data/entry_types/paged/app/controllers/pageflow_paged/entries_controller.rb +1 -0
- data/entry_types/paged/app/views/pageflow_paged/entries/show.html.erb +1 -0
- data/entry_types/paged/config/initializers/features.rb +0 -1
- data/entry_types/paged/lib/pageflow_paged/engine.rb +17 -1
- data/entry_types/scrolled/app/controllers/pageflow_scrolled/editor/chapters_controller.rb +2 -2
- data/entry_types/scrolled/app/controllers/pageflow_scrolled/editor/content_elements_controller.rb +3 -4
- data/entry_types/scrolled/app/controllers/pageflow_scrolled/editor/sections_controller.rb +13 -6
- data/entry_types/scrolled/app/controllers/pageflow_scrolled/entries_controller.rb +2 -0
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/cache_helper.rb +11 -0
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/editor/entry_json_seed_helper.rb +42 -0
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/editor/seed_html_helper.rb +3 -0
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/packs_helper.rb +31 -10
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/react_server_side_rendering_helper.rb +9 -1
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/themes_helper.rb +3 -1
- data/entry_types/scrolled/app/models/pageflow_scrolled/chapter.rb +23 -0
- data/entry_types/scrolled/app/views/pageflow_scrolled/editor/entries/_head.html.erb +6 -1
- data/entry_types/scrolled/app/views/pageflow_scrolled/editor/entries/_seed.json.jbuilder +1 -5
- data/entry_types/scrolled/app/views/pageflow_scrolled/editor/sections/_section_with_content_elements.json.jbuilder +10 -0
- data/entry_types/scrolled/app/views/pageflow_scrolled/entries/show.html.erb +44 -41
- data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_consent_vendors.json.jbuilder +16 -0
- data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_entry.json.jbuilder +3 -0
- data/entry_types/scrolled/config/initializers/features.rb +5 -0
- data/entry_types/scrolled/config/locales/consent_widget.de.yml +4 -0
- data/entry_types/scrolled/config/locales/consent_widget.en.yml +4 -0
- data/entry_types/scrolled/config/locales/de.yml +189 -8
- data/entry_types/scrolled/config/locales/en.yml +207 -2
- data/entry_types/scrolled/config/routes.rb +4 -0
- data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/install_generator.rb +97 -5
- data/entry_types/scrolled/lib/pageflow_scrolled/additional_seed_data.rb +1 -1
- data/entry_types/scrolled/lib/pageflow_scrolled/configuration.rb +96 -0
- data/entry_types/scrolled/lib/pageflow_scrolled/content_element_consent_vendors.rb +38 -0
- data/entry_types/scrolled/lib/pageflow_scrolled/engine.rb +17 -1
- data/entry_types/scrolled/lib/pageflow_scrolled/plugin.rb +24 -0
- data/entry_types/scrolled/lib/pageflow_scrolled/react_widget_type.rb +6 -1
- data/entry_types/scrolled/lib/tasks/pageflow_scrolled/storybook.rake +1 -2
- data/entry_types/scrolled/package/contentElements-editor.js +307 -22
- data/entry_types/scrolled/package/contentElements-frontend.css +1 -1
- data/entry_types/scrolled/package/contentElements-frontend.js +690 -71
- data/entry_types/scrolled/package/editor.js +616 -220
- data/entry_types/scrolled/package/frontend/{EditableInlineText.module-14c7b097.js → EditableInlineText.module-fa9e3aff.js} +1669 -1674
- data/entry_types/scrolled/package/frontend/PhonePlatformContext-10a1d600.js +32 -0
- data/entry_types/scrolled/package/frontend/ToggleFullscreenCornerButton-727cce0d.js +107 -0
- data/entry_types/scrolled/package/frontend/Viewer-169e14ca.js +154 -0
- data/entry_types/scrolled/package/frontend/{Viewer-b6becc57.js → Viewer-ee1aa590.js} +32 -161
- data/entry_types/scrolled/package/frontend/arrowRight-92a34ccc.js +77 -0
- data/entry_types/scrolled/package/frontend/{components-b3160dd7.js → components-4a09bfa3.js} +185 -45
- data/entry_types/scrolled/package/frontend/{PhonePlatformContext-f6093cc6.js → i18n-ddd92820.js} +149 -107
- data/entry_types/scrolled/package/frontend/index-02378634.js +118 -0
- data/entry_types/scrolled/package/frontend/index.css +1 -1
- data/entry_types/scrolled/package/frontend/index.js +206 -54
- data/entry_types/scrolled/package/frontend/useContentElementEditorState-63045393.js +52 -0
- data/entry_types/scrolled/package/package.json +2 -1
- data/entry_types/scrolled/package/testHelpers.js +9 -2
- data/entry_types/scrolled/package/values/colors.module.css +15 -0
- data/entry_types/scrolled/package/widgets/consentBar.css +1 -0
- data/entry_types/scrolled/package/widgets/consentBar.js +426 -0
- data/entry_types/scrolled/package/widgets/defaultNavigation.css +1 -1
- data/lib/generators/pageflow/resque/resque_generator.rb +1 -1
- data/lib/pageflow/ability_mixin.rb +5 -5
- data/lib/pageflow/active_admin_can_can_fix.rb +2 -2
- data/lib/pageflow/built_in_file_type.rb +7 -0
- data/lib/pageflow/configuration.rb +21 -0
- data/lib/pageflow/engine.rb +60 -39
- data/lib/pageflow/entry_export_import/revision_serialization.rb +1 -1
- data/lib/pageflow/file_type.rb +2 -2
- data/lib/pageflow/global_config_api.rb +2 -2
- data/lib/pageflow/nested_revision_component.rb +23 -5
- data/lib/pageflow/rails_version.rb +19 -0
- data/lib/pageflow/seeds.rb +10 -7
- data/lib/pageflow/version.rb +1 -1
- data/lib/pageflow/widget_types.rb +4 -0
- data/package/config/webpack5.js +14 -0
- data/package/editor.js +141 -30
- data/package/frontend.js +26 -2
- data/package/testHelpers.js +1 -1
- data/package/ui.js +296 -71
- data/spec/factories/entries.rb +17 -3
- data/spec/factories/sites.rb +3 -0
- data/vendor/assets/javascripts/iscroll.js +4 -7
- metadata +65 -49
- data/app/helpers/pageflow/admin/permalinks_helper.rb +0 -15
- data/entry_types/scrolled/package/frontend/arrowRight-78a7cee4.js +0 -42
@@ -0,0 +1,15 @@
|
|
1
|
+
module Pageflow
|
2
|
+
# @api private
|
3
|
+
class SitemapsController < Pageflow::ApplicationController
|
4
|
+
def index
|
5
|
+
site = Site.for_request(request).first!
|
6
|
+
return head 404 unless site.sitemap_enabled?
|
7
|
+
|
8
|
+
@entries = Sitemaps.entries_for(site: site)
|
9
|
+
|
10
|
+
respond_to do |format|
|
11
|
+
format.xml
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -31,7 +31,7 @@ module Pageflow
|
|
31
31
|
|
32
32
|
authorize!(:update, storyline)
|
33
33
|
verify_edit_lock!(storyline.entry)
|
34
|
-
storyline.
|
34
|
+
storyline.update(storyline_params)
|
35
35
|
|
36
36
|
respond_with(storyline)
|
37
37
|
end
|
@@ -42,7 +42,7 @@ module Pageflow
|
|
42
42
|
authorize!(:edit_outline, entry.to_model)
|
43
43
|
verify_edit_lock!(entry)
|
44
44
|
params.require(:ids).each_with_index do |id, index|
|
45
|
-
entry.storylines.update(
|
45
|
+
entry.storylines.find(id).update(position: index)
|
46
46
|
end
|
47
47
|
|
48
48
|
head :no_content
|
@@ -1,7 +1,8 @@
|
|
1
1
|
module Pageflow
|
2
2
|
module EntriesHelper
|
3
3
|
def pretty_entry_title(entry)
|
4
|
-
[entry.title,
|
4
|
+
[entry.title,
|
5
|
+
entry.site.title.presence || entry.site.cname_domain.presence].compact.join(' - ')
|
5
6
|
end
|
6
7
|
|
7
8
|
def pretty_entry_url(entry, options = {})
|
@@ -0,0 +1,66 @@
|
|
1
|
+
module Pageflow
|
2
|
+
# Helpers to render alternate links to atom feeds.
|
3
|
+
#
|
4
|
+
# @since 16.1
|
5
|
+
module FeedsHelper
|
6
|
+
# Render alternate links to atom feed of entries in the same site
|
7
|
+
# using the same locale.
|
8
|
+
def feed_link_tags_for_entry(entry)
|
9
|
+
return '' unless entry.site.feeds_enabled?
|
10
|
+
|
11
|
+
href =
|
12
|
+
entry.site.custom_feed_url.presence&.gsub(':locale', entry.locale) ||
|
13
|
+
pageflow.feed_url(
|
14
|
+
{
|
15
|
+
locale: entry.locale,
|
16
|
+
format: 'atom'
|
17
|
+
}.merge(Pageflow.config.site_url_options(entry.site) || {})
|
18
|
+
)
|
19
|
+
|
20
|
+
tag(:link,
|
21
|
+
rel: 'alternate',
|
22
|
+
type: 'application/atom+xml',
|
23
|
+
title: 'Feed',
|
24
|
+
href: href)
|
25
|
+
end
|
26
|
+
|
27
|
+
# @api private
|
28
|
+
def feed_entry_content(entry)
|
29
|
+
FeedContent.new(self, entry).build
|
30
|
+
end
|
31
|
+
|
32
|
+
# @api private
|
33
|
+
FeedContent = Struct.new(:template, :entry) do
|
34
|
+
def build
|
35
|
+
[image_html, summary_html, link_html].compact.join
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def image_html
|
41
|
+
return if entry.thumbnail_file.blank?
|
42
|
+
|
43
|
+
template.content_tag(
|
44
|
+
:p,
|
45
|
+
template.tag(
|
46
|
+
:img,
|
47
|
+
src: entry.thumbnail_file.thumbnail_url(:thumbnail_large),
|
48
|
+
width: 560, height: 315
|
49
|
+
)
|
50
|
+
)
|
51
|
+
end
|
52
|
+
|
53
|
+
def summary_html
|
54
|
+
template.content_tag(:p, template.raw(entry.summary))
|
55
|
+
end
|
56
|
+
|
57
|
+
def link_html
|
58
|
+
template.content_tag(
|
59
|
+
:p,
|
60
|
+
template.link_to(template.t('pageflow.public.read_more'),
|
61
|
+
template.social_share_entry_url(entry))
|
62
|
+
)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -17,16 +17,16 @@ module Pageflow
|
|
17
17
|
def page_type_templates(entry)
|
18
18
|
safe_join(Pageflow.config.page_types.map do |page_type|
|
19
19
|
content_tag(:script,
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
20
|
+
render(template: page_type.template_path,
|
21
|
+
locals: {
|
22
|
+
configuration: {},
|
23
|
+
page: Page.new,
|
24
|
+
entry: entry,
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
26
|
+
# Required by RevisionFileHelper#find_file_in_entry
|
27
|
+
:@entry => entry
|
28
|
+
},
|
29
|
+
layout: false).to_str,
|
30
30
|
type: 'text/html', data: {template: "#{page_type.name}_page"})
|
31
31
|
end)
|
32
32
|
end
|
@@ -27,9 +27,9 @@ class PageflowPermalinkInput
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def permalink_inputs_html
|
30
|
-
return '' if options[:
|
30
|
+
return '' if options[:site].permalink_directories.empty?
|
31
31
|
|
32
|
-
builder.select(:directory_id,
|
32
|
+
builder.select(:directory_id, directory_select_options) <<
|
33
33
|
builder.text_field(:slug, placeholder: options[:slug_placeholder])
|
34
34
|
end
|
35
35
|
|
@@ -38,10 +38,22 @@ class PageflowPermalinkInput
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def wrapper_html_options
|
41
|
-
if options[:
|
41
|
+
if options[:site].permalink_directories.empty?
|
42
42
|
super.merge(style: 'display: none')
|
43
|
+
elsif options[:site].permalink_directories.one?
|
44
|
+
result = super
|
45
|
+
result.merge(class: "#{result[:class]} no_directories")
|
43
46
|
else
|
44
47
|
super
|
45
48
|
end
|
46
49
|
end
|
50
|
+
|
51
|
+
def directory_select_options
|
52
|
+
template.options_from_collection_for_select(
|
53
|
+
options[:site].permalink_directories,
|
54
|
+
'id',
|
55
|
+
'path',
|
56
|
+
builder.object.directory_id
|
57
|
+
)
|
58
|
+
end
|
47
59
|
end
|
@@ -30,8 +30,8 @@ module Pageflow
|
|
30
30
|
file_type_of_parent = Pageflow.config.file_types.find_by_model!(parent_class)
|
31
31
|
models_of_nested_file_types = file_type_of_parent.nested_file_types.map(&:model)
|
32
32
|
unless models_of_nested_file_types.include?(self.class)
|
33
|
-
errors
|
34
|
-
|
33
|
+
errors.add(:base, 'File type of provided parent file does not permit nesting files of '\
|
34
|
+
"type #{self.class.name}")
|
35
35
|
end
|
36
36
|
end
|
37
37
|
end
|
@@ -39,7 +39,7 @@ module Pageflow
|
|
39
39
|
def parent_belongs_to_same_entry
|
40
40
|
if parent_file.present?
|
41
41
|
unless parent_file.using_entries.include?(entry)
|
42
|
-
errors
|
42
|
+
errors.add(:base, 'Parent file does not belong to same entry as nested file')
|
43
43
|
end
|
44
44
|
end
|
45
45
|
end
|
@@ -2,6 +2,7 @@ module Pageflow
|
|
2
2
|
class AudioFileUrlTemplates
|
3
3
|
def call
|
4
4
|
{
|
5
|
+
original: url_template(:attachment, :original),
|
5
6
|
m4a: url_template(:m4a),
|
6
7
|
mp3: url_template(:mp3),
|
7
8
|
ogg: url_template(:ogg),
|
@@ -17,7 +18,7 @@ module Pageflow
|
|
17
18
|
|
18
19
|
def example_file
|
19
20
|
@example_file ||= AudioFile.new(id: 0,
|
20
|
-
file_name: ':basename
|
21
|
+
file_name: ':basename.:extension',
|
21
22
|
peak_data_file_name: 'audio.json')
|
22
23
|
end
|
23
24
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Pageflow
|
2
|
+
# @api private
|
3
|
+
EntriesFeed = Struct.new(:title, :locale, :custom_url, :root_url, :entries) do
|
4
|
+
def updated_at
|
5
|
+
entries.map(&:published_at).max
|
6
|
+
end
|
7
|
+
|
8
|
+
class << self
|
9
|
+
def for(site:, locale:)
|
10
|
+
new(
|
11
|
+
site.title.presence || site.host,
|
12
|
+
locale,
|
13
|
+
site.custom_feed_url&.gsub(':locale', locale),
|
14
|
+
site.canonical_entry_url_prefix&.gsub(':locale', locale),
|
15
|
+
find_entries(site, locale)
|
16
|
+
)
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def find_entries(site, locale)
|
22
|
+
Pageflow::PublishedEntry.wrap_all(
|
23
|
+
site
|
24
|
+
.entries
|
25
|
+
.published_without_password_protection
|
26
|
+
.where(pageflow_revisions: {locale: locale})
|
27
|
+
.order('first_published_at DESC')
|
28
|
+
)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -9,7 +9,7 @@ module Pageflow
|
|
9
9
|
'processed_attachments'
|
10
10
|
end
|
11
11
|
|
12
|
-
|
12
|
+
before_attachment_on_s3_post_process :save_image_dimensions
|
13
13
|
|
14
14
|
def thumbnail_url(*args)
|
15
15
|
unless ready?
|
@@ -49,10 +49,10 @@ module Pageflow
|
|
49
49
|
ultra: {geometry: '3840x3840>',
|
50
50
|
format: :JPG,
|
51
51
|
convert_options: '-quality 90 -interlace Plane'},
|
52
|
-
panorama_medium: {geometry:
|
52
|
+
panorama_medium: {geometry: ImageFile.scale_down_to_cover(1024, 1024),
|
53
53
|
format: panorama_format,
|
54
54
|
convert_options: '-quality 90 -interlace Plane'},
|
55
|
-
panorama_large: {geometry:
|
55
|
+
panorama_large: {geometry: ImageFile.scale_down_to_cover(1920, 1080),
|
56
56
|
format: panorama_format,
|
57
57
|
convert_options: '-quality 90 -interlace Plane'}
|
58
58
|
)
|
@@ -63,6 +63,17 @@ module Pageflow
|
|
63
63
|
end
|
64
64
|
# <- UploadableFile-overrides
|
65
65
|
|
66
|
+
def self.scale_down_to_cover(width, height)
|
67
|
+
lambda do |image_file|
|
68
|
+
if image_file.width.present? && image_file.height.present? &&
|
69
|
+
(image_file.width <= width || image_file.height <= height)
|
70
|
+
'100%'
|
71
|
+
else
|
72
|
+
"#{width}x#{height}^"
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
66
77
|
private
|
67
78
|
|
68
79
|
def save_image_dimensions
|
@@ -38,8 +38,9 @@ module Pageflow
|
|
38
38
|
private
|
39
39
|
|
40
40
|
def account_membership_exists
|
41
|
-
|
42
|
-
|
41
|
+
return if user.blank? || user.accounts.include?(entity.account)
|
42
|
+
|
43
|
+
errors.add(:base, 'Entry Membership misses presupposed Membership on account of entry')
|
43
44
|
end
|
44
45
|
|
45
46
|
def on_entry?
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Pageflow
|
2
|
+
# @api private
|
3
|
+
class OtherFileUrlTemplates
|
4
|
+
def call
|
5
|
+
{
|
6
|
+
original: UrlTemplate.from_attachment(example_file.attachment, :original)
|
7
|
+
}
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
def example_file
|
13
|
+
@example_file ||= OtherFile.new(id: 0, file_name: ':basename.:extension')
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/app/models/pageflow/site.rb
CHANGED
@@ -10,9 +10,9 @@ module Pageflow
|
|
10
10
|
@usage.configuration
|
11
11
|
end
|
12
12
|
|
13
|
-
def
|
13
|
+
def update!(attributes)
|
14
14
|
super(attributes.except(:configuration))
|
15
|
-
@usage.
|
15
|
+
@usage.update!(attributes.slice(:configuration))
|
16
16
|
end
|
17
17
|
|
18
18
|
def usage_id
|
@@ -2,6 +2,8 @@ module Pageflow
|
|
2
2
|
class VideoFileUrlTemplates
|
3
3
|
def call
|
4
4
|
{
|
5
|
+
original: url_template(:attachment, :original),
|
6
|
+
|
5
7
|
high: url_template(:mp4_high),
|
6
8
|
medium: url_template(:mp4_medium),
|
7
9
|
fullhd: url_template(:mp4_fullhd),
|
@@ -26,7 +28,7 @@ module Pageflow
|
|
26
28
|
|
27
29
|
def example_file
|
28
30
|
@example_file ||= VideoFile.new(id: 0).tap do |video_file|
|
29
|
-
video_file.file_name = ':basename
|
31
|
+
video_file.file_name = ':basename.:extension'
|
30
32
|
video_file.output_presences = {':pageflow_hls_qualities' => true}
|
31
33
|
video_file.poster_file_name = video_file.zencoder_poster.original_filename
|
32
34
|
end
|
@@ -72,7 +72,15 @@ module Pageflow
|
|
72
72
|
end
|
73
73
|
|
74
74
|
def from_db_by_role
|
75
|
-
Widget.all
|
75
|
+
reject_unknown_widget_types(Widget.all)
|
76
|
+
.index_by(&:role)
|
77
|
+
end
|
78
|
+
|
79
|
+
def reject_unknown_widget_types(widgets)
|
80
|
+
widgets.select do |widget|
|
81
|
+
widget.type_name.blank? ||
|
82
|
+
config.widget_types.type_name?(widget.type_name)
|
83
|
+
end
|
76
84
|
end
|
77
85
|
|
78
86
|
def defaults_by_role
|
@@ -1,9 +1,12 @@
|
|
1
1
|
extensible_attributes_table_for(site,
|
2
2
|
Pageflow.config_for(site.account)
|
3
3
|
.admin_attributes_table_rows.for(:site)) do
|
4
|
+
row :title
|
4
5
|
row :host, class: 'host'
|
5
6
|
row :account, class: 'account' do
|
6
7
|
link_to(site.account.name,
|
7
8
|
admin_account_path(site.account, tab: 'sites'))
|
8
9
|
end
|
10
|
+
row :feeds_enabled
|
11
|
+
row :sitemap_enabled
|
9
12
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
<%= f.inputs do %>
|
2
|
+
<%= f.input :title, hint: t('pageflow.admin.sites.title_hint') %>
|
2
3
|
<%= f.input :cname, hint: t('pageflow.admin.sites.cname_hint') %>
|
3
4
|
<%= f.input :additional_cnames, hint: t('pageflow.admin.sites.additional_cnames_hint') %>
|
4
5
|
<%= f.input :home_url, hint: t('pageflow.admin.sites.home_url_hint') %>
|
@@ -11,6 +12,11 @@
|
|
11
12
|
<%= f.input :copyright_link_url %>
|
12
13
|
<%= f.input :privacy_link_url %>
|
13
14
|
|
15
|
+
<%= f.input :feeds_enabled, hint: t('pageflow.admin.sites.feeds_hint',
|
16
|
+
site_host: @site&.persisted? ? @site.host : '<host>') %>
|
17
|
+
<%= f.input :sitemap_enabled, hint: t('pageflow.admin.sites.sitemap_hint',
|
18
|
+
site_host: @site&.persisted? ? @site.host : '<host>') %>
|
19
|
+
|
14
20
|
<% account_config.admin_form_inputs.find_all_for(:site).each do |form_input| %>
|
15
21
|
<%= form_input.build(f) %>
|
16
22
|
<% end %>
|
@@ -78,8 +78,14 @@ module Pageflow
|
|
78
78
|
#
|
79
79
|
# This is also the reason we can not use SimpleDelegator here
|
80
80
|
# and also delegate_missing in Rails 5 would not work.
|
81
|
-
def method_missing(method, *args, &block)
|
82
|
-
|
81
|
+
def method_missing(method, *args, **kwargs, &block)
|
82
|
+
# Required for Ruby 2.6. Remove together with
|
83
|
+
# Pageflow::RailsVersion.experimental? conditionals.
|
84
|
+
if kwargs.present?
|
85
|
+
@context.public_send(method, *args, **kwargs, &block)
|
86
|
+
else
|
87
|
+
@context.public_send(method, *args, &block)
|
88
|
+
end
|
83
89
|
end
|
84
90
|
# rubocop:enable Style/MethodMissing
|
85
91
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
atom_feed language: @feed.locale,
|
2
|
+
root_url: @feed.root_url,
|
3
|
+
url: @feed.custom_url do |feed|
|
4
|
+
feed.title(@feed.title)
|
5
|
+
feed.updated(@feed.updated_at&.utc)
|
6
|
+
|
7
|
+
@feed.entries.each do |entry|
|
8
|
+
feed.entry(entry,
|
9
|
+
url: social_share_entry_url(entry),
|
10
|
+
published: entry.first_published_at.utc,
|
11
|
+
updated: entry.published_at.utc) do |feed_entry|
|
12
|
+
feed_entry.title(entry.title)
|
13
|
+
feed_entry.content(feed_entry_content(entry), type: 'html')
|
14
|
+
|
15
|
+
feed_entry.author do |author|
|
16
|
+
author.name(entry.author)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|