pageflow 16.1.0 → 16.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +70 -194
- data/README.md +6 -5
- data/app/assets/images/pageflow/admin/icons/published_with_noindex.svg +4 -0
- data/app/assets/javascripts/pageflow/dist/ui.js +1 -0
- data/app/assets/stylesheets/pageflow/admin/active_admin_patches.scss +1 -1
- data/app/assets/stylesheets/pageflow/admin/entries.scss +4 -0
- data/app/assets/stylesheets/pageflow/admin/publication_state_indicator.scss +4 -0
- data/app/assets/stylesheets/pageflow/editor/base.scss +0 -1
- data/app/assets/stylesheets/pageflow/editor/drop_down_button.scss +55 -6
- data/app/assets/stylesheets/pageflow/editor/file_meta_data.scss +12 -1
- data/app/assets/stylesheets/pageflow/ui/forms.scss +3 -3
- data/app/assets/stylesheets/pageflow/{editor/wysihtml5.scss → ui/input/text_area_input.scss} +13 -1
- data/app/assets/stylesheets/pageflow/ui.scss +1 -0
- data/app/controllers/pageflow/editor/entry_publications_controller.rb +5 -1
- data/app/controllers/pageflow/editor/file_import_controller.rb +1 -1
- data/app/controllers/pageflow/entries_controller.rb +2 -2
- data/app/helpers/pageflow/entries_helper.rb +2 -0
- data/app/helpers/pageflow/meta_tags_helper.rb +2 -1
- data/app/helpers/pageflow/page_types_helper.rb +4 -4
- data/app/helpers/pageflow/revision_file_helper.rb +3 -3
- data/app/helpers/pageflow/social_share_helper.rb +2 -2
- data/app/models/concerns/pageflow/entry_publication_states.rb +9 -0
- data/app/models/concerns/pageflow/uploadable_file.rb +5 -0
- data/app/models/pageflow/account.rb +2 -2
- data/app/models/pageflow/entry.rb +7 -5
- data/app/models/pageflow/entry_at_revision.rb +2 -0
- data/app/models/pageflow/image_file.rb +20 -5
- data/app/models/pageflow/image_file_url_templates.rb +7 -1
- data/app/models/pageflow/revision.rb +6 -4
- data/app/models/pageflow/site.rb +2 -2
- data/app/models/pageflow/sitemaps.rb +1 -0
- data/app/models/pageflow/used_file.rb +8 -0
- data/app/views/components/pageflow/admin/extensible_attributes_table.rb +1 -7
- data/app/views/components/pageflow/admin/revisions_tab.rb +8 -0
- data/app/views/pageflow/editor/config/_seeds.json.jbuilder +1 -0
- data/app/views/pageflow/editor/entries/_entry.json.jbuilder +1 -0
- data/app/views/pageflow/editor/entry_publications/check.json.jbuilder +1 -0
- data/app/views/pageflow/image_files/_image_file.json.jbuilder +1 -0
- data/app/views/pageflow/meta_tags/_entry.html.erb +1 -0
- data/config/initializers/features.rb +2 -0
- data/config/initializers/paperclip.rb +4 -0
- data/config/locales/de.yml +50 -0
- data/config/locales/en.yml +49 -0
- data/db/migrate/20231024062501_add_output_presences_to_image_files.rb +5 -0
- data/db/migrate/20231128124523_add_noindex_to_revisions.rb +5 -0
- data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/editor.js +266 -151
- data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/frontend.js +8 -2
- data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/react-client.js +1 -1
- data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/react-server.js +1 -1
- data/entry_types/paged/app/controllers/pageflow_paged/entries_controller.rb +1 -1
- data/entry_types/paged/lib/pageflow_paged/engine.rb +7 -11
- data/entry_types/scrolled/app/controllers/pageflow_scrolled/entries_controller.rb +9 -3
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/editor/seed_html_helper.rb +6 -6
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/packs_helper.rb +21 -37
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/themes_helper.rb +1 -3
- data/entry_types/scrolled/app/views/pageflow_scrolled/editor/entries/_head.html.erb +1 -6
- data/entry_types/scrolled/app/views/pageflow_scrolled/entries/show.html.erb +17 -17
- data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_entry.json.jbuilder +4 -0
- data/entry_types/scrolled/config/locales/de.yml +47 -11
- data/entry_types/scrolled/config/locales/en.yml +42 -10
- data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/install_generator.rb +22 -89
- data/entry_types/scrolled/lib/pageflow_scrolled/additional_packs.rb +2 -1
- data/entry_types/scrolled/lib/pageflow_scrolled/engine.rb +8 -12
- data/entry_types/scrolled/lib/pageflow_scrolled/plugin.rb +6 -0
- data/entry_types/scrolled/lib/pageflow_scrolled/web_app_manifest.rb +1 -1
- data/entry_types/scrolled/lib/tasks/pageflow_scrolled/dummy.rake +1 -1
- data/entry_types/scrolled/package/config/webpack.js +26 -0
- data/entry_types/scrolled/package/contentElements-editor.js +36 -23
- data/entry_types/scrolled/package/contentElements-frontend.css +1 -1
- data/entry_types/scrolled/package/contentElements-frontend.js +250 -94
- data/entry_types/scrolled/package/editor.js +331 -147
- data/entry_types/scrolled/package/frontend/{EditableInlineText.module-fa9e3aff.js → EditableInlineText.module-6ee0e024.js} +463 -275
- data/entry_types/scrolled/package/frontend/{PhonePlatformContext-10a1d600.js → PhonePlatformContext-b28d991a.js} +1 -1
- data/entry_types/scrolled/package/frontend/{ToggleFullscreenCornerButton-727cce0d.js → ToggleFullscreenCornerButton-8242f213.js} +1 -1
- data/entry_types/scrolled/package/frontend/{Viewer-169e14ca.js → Viewer-32cd1ac1.js} +4 -4
- data/entry_types/scrolled/package/frontend/{Viewer-ee1aa590.js → Viewer-6e4d14ed.js} +4 -4
- data/entry_types/scrolled/package/frontend/{arrowRight-92a34ccc.js → arrowRight-e42e6011.js} +2 -2
- data/entry_types/scrolled/package/frontend/{components-4a09bfa3.js → components-24363f97.js} +7 -6
- data/entry_types/scrolled/package/frontend/{i18n-ddd92820.js → i18n-71c39823.js} +84 -46
- data/entry_types/scrolled/package/frontend/{index-02378634.js → index-fc4b13e6.js} +3 -3
- data/entry_types/scrolled/package/frontend/index.css +1 -1
- data/entry_types/scrolled/package/frontend/index.js +90 -66
- data/entry_types/scrolled/package/frontend/{useContentElementEditorState-63045393.js → useContentElementEditorState-245f1986.js} +1 -1
- data/entry_types/scrolled/package/package.json +4 -3
- data/entry_types/scrolled/package/testHelpers.js +4 -2
- data/entry_types/scrolled/package/widgets/defaultNavigation.css +2 -2
- data/entry_types/scrolled/package/widgets/defaultNavigation.js +39 -4
- data/entry_types/scrolled/package/widgets/iconInlineFileRights.css +1 -0
- data/entry_types/scrolled/package/widgets/iconInlineFileRights.js +49 -0
- data/entry_types/scrolled/package/widgets/textInlineFileRights.css +1 -0
- data/entry_types/scrolled/package/widgets/textInlineFileRights.js +37 -0
- data/lib/generators/pageflow/resque/templates/resque.rake +1 -1
- data/lib/generators/pageflow/resque/templates/resque.rb +1 -1
- data/lib/generators/pageflow/routes/routes_generator.rb +1 -1
- data/lib/pageflow/configuration.rb +8 -1
- data/lib/pageflow/engine.rb +15 -58
- data/lib/pageflow/page_type.rb +1 -1
- data/lib/pageflow/paperclip_processors/webp.rb +63 -0
- data/lib/pageflow/rails_version.rb +2 -2
- data/lib/pageflow/user_mixin.rb +1 -1
- data/lib/pageflow/version.rb +1 -1
- data/package/config/jest/index.js +3 -1
- data/package/editor.js +272 -154
- data/package/frontend.js +8 -2
- data/package/ui.js +1 -0
- data/spec/factories/entries.rb +17 -0
- metadata +78 -56
|
@@ -19,9 +19,9 @@ module Pageflow
|
|
|
19
19
|
#
|
|
20
20
|
# @since 15.0
|
|
21
21
|
# @returns UsedFile
|
|
22
|
-
def find_file_in_entry(file_type, file_perma_id)
|
|
23
|
-
raise 'No entry of type PublishedEntry or DraftEntry set.' unless
|
|
24
|
-
|
|
22
|
+
def find_file_in_entry(file_type, file_perma_id, entry = @entry)
|
|
23
|
+
raise 'No entry of type PublishedEntry or DraftEntry set.' unless entry.present?
|
|
24
|
+
entry.find_file_by_perma_id(file_type, file_perma_id)
|
|
25
25
|
end
|
|
26
26
|
end
|
|
27
27
|
end
|
|
@@ -8,7 +8,7 @@ module Pageflow
|
|
|
8
8
|
if target.is_a?(Page)
|
|
9
9
|
render('pageflow/social_share/page_meta_tags', entry: @entry, page: @entry.share_target)
|
|
10
10
|
else
|
|
11
|
-
render('pageflow/social_share/entry_meta_tags', entry:
|
|
11
|
+
render('pageflow/social_share/entry_meta_tags', entry: target)
|
|
12
12
|
end
|
|
13
13
|
end
|
|
14
14
|
|
|
@@ -55,7 +55,7 @@ module Pageflow
|
|
|
55
55
|
|
|
56
56
|
def social_share_entry_image_tags(entry)
|
|
57
57
|
share_images = []
|
|
58
|
-
image_file = find_file_in_entry(ImageFile, entry.share_image_id)
|
|
58
|
+
image_file = find_file_in_entry(ImageFile, entry.share_image_id, entry)
|
|
59
59
|
|
|
60
60
|
if image_file
|
|
61
61
|
image_url = image_file.thumbnail_url(:medium)
|
|
@@ -11,6 +11,9 @@ module Pageflow
|
|
|
11
11
|
scope(:published_with_password_protection,
|
|
12
12
|
-> { published.merge(Revision.with_password_protection) })
|
|
13
13
|
|
|
14
|
+
scope(:published_without_noindex,
|
|
15
|
+
-> { published.merge(Revision.without_noindex) })
|
|
16
|
+
|
|
14
17
|
scope(:not_published,
|
|
15
18
|
lambda do
|
|
16
19
|
includes(:published_revision)
|
|
@@ -22,6 +25,8 @@ module Pageflow
|
|
|
22
25
|
def publication_state
|
|
23
26
|
if published_with_password_protection?
|
|
24
27
|
'published_with_password_protection'
|
|
28
|
+
elsif published? && published_revision.noindex?
|
|
29
|
+
'published_with_noindex'
|
|
25
30
|
elsif published?
|
|
26
31
|
'published_without_password_protection'
|
|
27
32
|
else
|
|
@@ -45,6 +50,10 @@ module Pageflow
|
|
|
45
50
|
published? ? published_revision.published_until : nil
|
|
46
51
|
end
|
|
47
52
|
|
|
53
|
+
def last_published_with_noindex?
|
|
54
|
+
!!revisions.publications.first&.noindex
|
|
55
|
+
end
|
|
56
|
+
|
|
48
57
|
module ClassMethods
|
|
49
58
|
def with_publication_state(state)
|
|
50
59
|
case state
|
|
@@ -28,11 +28,11 @@ module Pageflow
|
|
|
28
28
|
[:features_configuration]
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
def self.ransackable_attributes(_auth_object)
|
|
31
|
+
def self.ransackable_attributes(_auth_object = nil)
|
|
32
32
|
%w[id name]
|
|
33
33
|
end
|
|
34
34
|
|
|
35
|
-
def self.ransackable_associations(_auth_object)
|
|
35
|
+
def self.ransackable_associations(_auth_object = nil)
|
|
36
36
|
[]
|
|
37
37
|
end
|
|
38
38
|
end
|
|
@@ -29,8 +29,8 @@ module Pageflow
|
|
|
29
29
|
|
|
30
30
|
has_many :imports, class_name: 'Pageflow::FileImport', dependent: :destroy
|
|
31
31
|
|
|
32
|
-
has_one :draft, -> { editable }, :
|
|
33
|
-
has_one :published_revision, -> { published }, :
|
|
32
|
+
has_one :draft, -> { editable }, class_name: 'Revision', inverse_of: :entry
|
|
33
|
+
has_one :published_revision, -> { published }, class_name: 'Revision', inverse_of: :entry
|
|
34
34
|
|
|
35
35
|
has_one :edit_lock, :dependent => :destroy
|
|
36
36
|
|
|
@@ -88,6 +88,7 @@ module Pageflow
|
|
|
88
88
|
revision.published_at = Time.now
|
|
89
89
|
revision.published_until = options[:published_until]
|
|
90
90
|
revision.password_protected = options[:password_protected]
|
|
91
|
+
revision.noindex = !!options[:noindex]
|
|
91
92
|
end
|
|
92
93
|
end
|
|
93
94
|
end
|
|
@@ -111,6 +112,7 @@ module Pageflow
|
|
|
111
112
|
revision.published_at = nil
|
|
112
113
|
revision.published_until = nil
|
|
113
114
|
revision.password_protected = nil
|
|
115
|
+
revision.noindex = nil
|
|
114
116
|
end
|
|
115
117
|
end
|
|
116
118
|
|
|
@@ -130,15 +132,15 @@ module Pageflow
|
|
|
130
132
|
title.to_s.parameterize
|
|
131
133
|
end
|
|
132
134
|
|
|
133
|
-
def self.ransackable_attributes(_auth_object)
|
|
135
|
+
def self.ransackable_attributes(_auth_object = nil)
|
|
134
136
|
%w[title type_name created_at edited_at first_published_at]
|
|
135
137
|
end
|
|
136
138
|
|
|
137
|
-
def self.ransackable_associations(_auth_object)
|
|
139
|
+
def self.ransackable_associations(_auth_object = nil)
|
|
138
140
|
%w[account published_revision]
|
|
139
141
|
end
|
|
140
142
|
|
|
141
|
-
def self.ransackable_scopes(
|
|
143
|
+
def self.ransackable_scopes(_auth_object = nil)
|
|
142
144
|
[:with_publication_state, :published]
|
|
143
145
|
end
|
|
144
146
|
|
|
@@ -22,6 +22,7 @@ module Pageflow
|
|
|
22
22
|
:password_digest,
|
|
23
23
|
:to_model, :to_key, :to_param, :persisted?, :to_json,
|
|
24
24
|
:first_published_at, :published_until, :published?,
|
|
25
|
+
:last_published_with_noindex?,
|
|
25
26
|
:type_name,
|
|
26
27
|
to: :entry)
|
|
27
28
|
|
|
@@ -35,6 +36,7 @@ module Pageflow
|
|
|
35
36
|
:locale,
|
|
36
37
|
:author, :publisher, :keywords,
|
|
37
38
|
:published_at,
|
|
39
|
+
:noindex?,
|
|
38
40
|
:configuration,
|
|
39
41
|
to: :revision)
|
|
40
42
|
|
|
@@ -2,6 +2,9 @@ module Pageflow
|
|
|
2
2
|
class ImageFile < ApplicationRecord
|
|
3
3
|
include UploadableFile
|
|
4
4
|
include ImageAndTextTrackProcessingStateMachine
|
|
5
|
+
include OutputSource
|
|
6
|
+
|
|
7
|
+
before_post_process :set_output_presences
|
|
5
8
|
|
|
6
9
|
# used in paperclip initializer to interpolate the storage path
|
|
7
10
|
# needs to be "processed_attachments" for images for legacy reasons
|
|
@@ -35,19 +38,19 @@ module Pageflow
|
|
|
35
38
|
panorama_format = File.extname(attachment.original_filename) == '.png' ? :PNG : :JPG
|
|
36
39
|
|
|
37
40
|
Pageflow
|
|
38
|
-
.config.thumbnail_styles
|
|
41
|
+
.config.thumbnail_styles.transform_values { |options| options.merge(style_defaults) }
|
|
39
42
|
.merge(
|
|
40
43
|
print: {geometry: '300x300>',
|
|
41
|
-
|
|
44
|
+
**style_defaults,
|
|
42
45
|
convert_options: '-quality 10 -interlace Plane'},
|
|
43
46
|
medium: {geometry: '1024x1024>',
|
|
44
|
-
|
|
47
|
+
**style_defaults,
|
|
45
48
|
convert_options: '-quality 70 -interlace Plane'},
|
|
46
49
|
large: {geometry: '1920x1920>',
|
|
47
|
-
|
|
50
|
+
**style_defaults,
|
|
48
51
|
convert_options: '-quality 70 -interlace Plane'},
|
|
49
52
|
ultra: {geometry: '3840x3840>',
|
|
50
|
-
|
|
53
|
+
**style_defaults,
|
|
51
54
|
convert_options: '-quality 90 -interlace Plane'},
|
|
52
55
|
panorama_medium: {geometry: ImageFile.scale_down_to_cover(1024, 1024),
|
|
53
56
|
format: panorama_format,
|
|
@@ -82,5 +85,17 @@ module Pageflow
|
|
|
82
85
|
self.height = geo.height
|
|
83
86
|
rescue Paperclip::Errors::NotIdentifiedByImageMagickError
|
|
84
87
|
end
|
|
88
|
+
|
|
89
|
+
def style_defaults
|
|
90
|
+
if output_present?(:webp)
|
|
91
|
+
{format: :webp, processors: [:pageflow_webp]}
|
|
92
|
+
else
|
|
93
|
+
{format: :JPG}
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def set_output_presences
|
|
98
|
+
self.output_presences = {webp: true} if entry&.feature_state('webp_images')
|
|
99
|
+
end
|
|
85
100
|
end
|
|
86
101
|
end
|
|
@@ -2,12 +2,18 @@ module Pageflow
|
|
|
2
2
|
class ImageFileUrlTemplates
|
|
3
3
|
def call
|
|
4
4
|
styles.each_with_object({}) do |style, result|
|
|
5
|
-
result[style] =
|
|
5
|
+
result[style] = replace_extension_with_placeholder(
|
|
6
|
+
UrlTemplate.from_attachment(example_file.attachment, style)
|
|
7
|
+
)
|
|
6
8
|
end
|
|
7
9
|
end
|
|
8
10
|
|
|
9
11
|
private
|
|
10
12
|
|
|
13
|
+
def replace_extension_with_placeholder(url)
|
|
14
|
+
url.gsub(/.JPG$/, '.:processed_extension')
|
|
15
|
+
end
|
|
16
|
+
|
|
11
17
|
def styles
|
|
12
18
|
example_file.attachment_styles(example_file.attachment).keys + [:original]
|
|
13
19
|
end
|
|
@@ -65,6 +65,8 @@ module Pageflow
|
|
|
65
65
|
scope(:with_password_protection, -> { where('password_protected IS TRUE') })
|
|
66
66
|
scope(:without_password_protection, -> { where('password_protected IS NOT TRUE') })
|
|
67
67
|
|
|
68
|
+
scope(:without_noindex, -> { where('noindex IS NOT TRUE') })
|
|
69
|
+
|
|
68
70
|
scope :editable, -> { where('frozen_at IS NULL') }
|
|
69
71
|
scope :frozen, -> { where('frozen_at IS NOT NULL') }
|
|
70
72
|
|
|
@@ -204,6 +206,10 @@ module Pageflow
|
|
|
204
206
|
.merge(read_attribute(:configuration) || {})
|
|
205
207
|
end
|
|
206
208
|
|
|
209
|
+
def self.ransackable_attributes(_auth_object = nil)
|
|
210
|
+
%w[published_at]
|
|
211
|
+
end
|
|
212
|
+
|
|
207
213
|
private
|
|
208
214
|
|
|
209
215
|
def files(model)
|
|
@@ -232,9 +238,5 @@ module Pageflow
|
|
|
232
238
|
def available_themes
|
|
233
239
|
@available_themes ||= Pageflow.config_for(entry).themes
|
|
234
240
|
end
|
|
235
|
-
|
|
236
|
-
def self.ransackable_attributes(_auth_object)
|
|
237
|
-
%w[published_at]
|
|
238
|
-
end
|
|
239
241
|
end
|
|
240
242
|
end
|
data/app/models/pageflow/site.rb
CHANGED
|
@@ -56,11 +56,11 @@ module Pageflow
|
|
|
56
56
|
first_paged_entry_template.theme_name
|
|
57
57
|
end
|
|
58
58
|
|
|
59
|
-
def self.ransackable_attributes(_auth_object)
|
|
59
|
+
def self.ransackable_attributes(_auth_object = nil)
|
|
60
60
|
%w[name]
|
|
61
61
|
end
|
|
62
62
|
|
|
63
|
-
def self.ransackable_associations(_auth_object)
|
|
63
|
+
def self.ransackable_associations(_auth_object = nil)
|
|
64
64
|
%w[account]
|
|
65
65
|
end
|
|
66
66
|
end
|
|
@@ -23,6 +23,14 @@ module Pageflow
|
|
|
23
23
|
@usage.perma_id
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
+
def cache_key
|
|
27
|
+
[@file.cache_key, @usage.cache_key].join('-')
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def cache_key_with_version
|
|
31
|
+
[@file.cache_key_with_version, @usage.cache_key_with_version].join('-')
|
|
32
|
+
end
|
|
33
|
+
|
|
26
34
|
# Not delegated by default. Required to allow using instances in
|
|
27
35
|
# Active Record conditions.
|
|
28
36
|
|
|
@@ -79,13 +79,7 @@ module Pageflow
|
|
|
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
81
|
def method_missing(method, *args, **kwargs, &block)
|
|
82
|
-
|
|
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
|
|
82
|
+
@context.public_send(method, *args, **kwargs, &block)
|
|
89
83
|
end
|
|
90
84
|
# rubocop:enable Style/MethodMissing
|
|
91
85
|
end
|
|
@@ -39,6 +39,14 @@ module Pageflow
|
|
|
39
39
|
end
|
|
40
40
|
end
|
|
41
41
|
|
|
42
|
+
if revision.noindex?
|
|
43
|
+
span(class: 'publication_state_indicator published_with_noindex') do
|
|
44
|
+
span(class: 'tooltip_bubble') do
|
|
45
|
+
t('pageflow.admin.entries.noindex')
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
42
50
|
if revision.password_protected?
|
|
43
51
|
span(class: 'publication_state_indicator published_with_password_protection') do
|
|
44
52
|
span(class: 'tooltip_bubble') do
|
|
@@ -4,6 +4,7 @@ json.call(Pageflow.config,
|
|
|
4
4
|
:default_published_until_duration_in_months,
|
|
5
5
|
:available_locales,
|
|
6
6
|
:available_public_locales,
|
|
7
|
+
:available_file_licenses,
|
|
7
8
|
:available_text_track_kinds,
|
|
8
9
|
:available_share_providers)
|
|
9
10
|
json.file_types Pageflow.config_for(entry).file_types do |file_type|
|
|
@@ -6,6 +6,7 @@ json.default_file_rights entry.account.default_file_rights
|
|
|
6
6
|
json.published(entry.published?)
|
|
7
7
|
json.publishable(can?(:publish, entry.to_model))
|
|
8
8
|
json.password_protected(entry.password_digest.present?)
|
|
9
|
+
json.last_published_with_noindex(entry.last_published_with_noindex?)
|
|
9
10
|
|
|
10
11
|
json.metadata do
|
|
11
12
|
json.(entry,
|
|
@@ -6,6 +6,7 @@ json.entry do
|
|
|
6
6
|
json.(@entry_publication.entry, :published_until)
|
|
7
7
|
json.published(@entry_publication.entry.published?)
|
|
8
8
|
json.password_protected(@entry_publication.entry.password_digest.present?)
|
|
9
|
+
json.last_published_with_noindex(@entry_publication.entry.last_published_with_noindex?)
|
|
9
10
|
end
|
|
10
11
|
json.exhausted_html(render_html_partial('pageflow/editor/quotas/published_entries_exhausted',
|
|
11
12
|
entry: @entry_publication.entry,
|
|
@@ -2,3 +2,4 @@
|
|
|
2
2
|
<% if keywords.present? %><meta name="keywords" content="<%= keywords %>"><% end %>
|
|
3
3
|
<% if author.present? %><meta name="author" content="<%= author %>"><% end %>
|
|
4
4
|
<% if publisher.present? %><meta name="publisher" content="<%= publisher %>"><% end %>
|
|
5
|
+
<% if noindex %><meta name="robots" content="noindex"><% end %>
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
Pageflow.configure do |config|
|
|
2
|
+
config.features.register('webp_images')
|
|
2
3
|
config.features.register('highdef_video_encoding')
|
|
3
4
|
config.features.register('force_fullhd_video_quality')
|
|
5
|
+
config.features.register('large_player_pool')
|
|
4
6
|
config.features.register('selectable_themes')
|
|
5
7
|
end
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
require 'pageflow/paperclip_processors/vtt'
|
|
2
2
|
require 'pageflow/paperclip_processors/audio_waveform'
|
|
3
|
+
require 'pageflow/paperclip_processors/webp'
|
|
3
4
|
require 'pageflow/paperclip_processors/noop'
|
|
4
5
|
|
|
5
6
|
Paperclip.interpolates(:pageflow_s3_root) do |_attachment, _style|
|
|
@@ -33,6 +34,9 @@ Paperclip.interpolates(:pageflow_hls_qualities) do |attachment, _style|
|
|
|
33
34
|
end
|
|
34
35
|
|
|
35
36
|
Paperclip.configure do |config|
|
|
37
|
+
config.register_processor(:pageflow_webp,
|
|
38
|
+
Pageflow::PaperclipProcessors::Webp)
|
|
39
|
+
|
|
36
40
|
config.register_processor(:pageflow_vtt,
|
|
37
41
|
Pageflow::PaperclipProcessors::Vtt)
|
|
38
42
|
|
data/config/locales/de.yml
CHANGED
|
@@ -443,6 +443,7 @@ de:
|
|
|
443
443
|
pageflow/entry:
|
|
444
444
|
publication_states:
|
|
445
445
|
not_published: Nicht veröffentlicht
|
|
446
|
+
published_with_noindex: Veröffentlicht aber aus Suchmaschinen ausgeschlossen
|
|
446
447
|
published_with_password_protection: Mit Passwortschutz veröffentlicht
|
|
447
448
|
published_without_password_protection: Ohne Passwortschutz veröffentlicht
|
|
448
449
|
share_providers:
|
|
@@ -826,6 +827,7 @@ de:
|
|
|
826
827
|
members: Mitglieder
|
|
827
828
|
no_members: Es sind keine Redakteure zugeordnet.
|
|
828
829
|
no_revisions: Bisher keine Revisionen
|
|
830
|
+
noindex: Aus Suchmaschinen ausgeschlossen
|
|
829
831
|
not_allowed_to_see_entry_types: Sie sind nicht berechtigt, die verfügbaren Beitrags-Typen für dieses Konto abzurufen
|
|
830
832
|
not_published: Nicht veröffentlicht
|
|
831
833
|
password_protected: Mit Passwortschutz
|
|
@@ -1125,6 +1127,10 @@ de:
|
|
|
1125
1127
|
file_name:
|
|
1126
1128
|
column_header: Dateiname
|
|
1127
1129
|
label: Dateiname
|
|
1130
|
+
license:
|
|
1131
|
+
blank: "(Nicht angegeben)"
|
|
1132
|
+
inline_help: Fügt der Rechteangabe im Beitrag einen Link zur Lizenz hinzu.
|
|
1133
|
+
label: Lizenz
|
|
1128
1134
|
original_url:
|
|
1129
1135
|
label: Original
|
|
1130
1136
|
rights:
|
|
@@ -1134,6 +1140,21 @@ de:
|
|
|
1134
1140
|
column_header: Rechte
|
|
1135
1141
|
inline_help: Wird im Copyright-Bereich des Beitrags angezeigt.
|
|
1136
1142
|
label: Rechte
|
|
1143
|
+
rights_display:
|
|
1144
|
+
inline_help: |-
|
|
1145
|
+
Lege fest, ob die Rechteangabe der Datei in der
|
|
1146
|
+
zusammenfassenden Liste in der Info-Box angezeigt werden
|
|
1147
|
+
soll oder unmittelbar an der Stelle im Beitrag, wo die
|
|
1148
|
+
Datei verwendet wird.
|
|
1149
|
+
label: Rechte anzeigen
|
|
1150
|
+
values:
|
|
1151
|
+
credits: In der Info-Box
|
|
1152
|
+
inline: Am verwendenden Element
|
|
1153
|
+
source_url:
|
|
1154
|
+
inline_help: |-
|
|
1155
|
+
Rechteangabe mit einem Link zur ursprünglichen Quelle
|
|
1156
|
+
oder zum Author der Datei versehen.
|
|
1157
|
+
label: Quell-URL
|
|
1137
1158
|
text_tracks:
|
|
1138
1159
|
label: Untertitel
|
|
1139
1160
|
settings_dialog_tabs:
|
|
@@ -1351,6 +1372,12 @@ de:
|
|
|
1351
1372
|
already_published_without_password_help: Dieser Beitrag ist im Moment ohne Passwortschutz veröffentlicht. Nach Festlegen eines Passworts ist kein öffentlicher Zugriff mehr möglich.
|
|
1352
1373
|
date: Datum
|
|
1353
1374
|
files_pending_notice: Bitte warten Sie bis alle Dateien des Beitrags verarbeitet wurden und überprüfen Sie das Ergebnis. Der Beitrag kann dann veröffentlicht werden.
|
|
1375
|
+
noindex: Suchmaschinen ausschließen
|
|
1376
|
+
noindex_help: |
|
|
1377
|
+
Ein Meta-Tag setzen, das Crawler von Suchmaschinen wie
|
|
1378
|
+
Google oder Bing anweist, den veröffentlichten Beitrag
|
|
1379
|
+
nicht in den Index aufzunehmen. Der Beitrag erscheint
|
|
1380
|
+
daher nicht in Suchergebnissen.
|
|
1354
1381
|
not_published_notice: Dieser Beitrag ist zur Zeit nicht veröffentlicht.
|
|
1355
1382
|
password: Passwort
|
|
1356
1383
|
password_help: Teilen Sie Ihren veröffentlichten Beitrag nur mit bestimmten Personen. Besucher benötigen dann das von Ihnen festgelegte Passwort, um den Beitrag ansehen zu können.
|
|
@@ -1513,6 +1540,25 @@ de:
|
|
|
1513
1540
|
label: Übersicht-Button anzeigen
|
|
1514
1541
|
overview_button_enabled_disabled:
|
|
1515
1542
|
inline_help: Diese Funktion steht in diesem Theme nicht zur Verfügung.
|
|
1543
|
+
file_licenses:
|
|
1544
|
+
cc_by_4:
|
|
1545
|
+
name: CC-BY 4.0
|
|
1546
|
+
url: https://creativecommons.org/licenses/by/4.0/
|
|
1547
|
+
cc_by_nc_4:
|
|
1548
|
+
name: CC-BY-NC 4.0
|
|
1549
|
+
url: https://creativecommons.org/licenses/by-nc/4.0/
|
|
1550
|
+
cc_by_nc_nd_4:
|
|
1551
|
+
name: CC-BY-NC-ND 4.0
|
|
1552
|
+
url: https://creativecommons.org/licenses/by-nc-nd/4.0/
|
|
1553
|
+
cc_by_nc_sa_4:
|
|
1554
|
+
name: CC-BY-NC-SA 4.0
|
|
1555
|
+
url: https://creativecommons.org/licenses/by-sa-nc/4.0/
|
|
1556
|
+
cc_by_nd_4:
|
|
1557
|
+
name: CC-BY-ND 4.0
|
|
1558
|
+
url: https://creativecommons.org/licenses/by-nd/4.0/
|
|
1559
|
+
cc_by_sa_4:
|
|
1560
|
+
name: CC-BY-SA 4.0
|
|
1561
|
+
url: https://creativecommons.org/licenses/by-sa/4.0/
|
|
1516
1562
|
help_entries:
|
|
1517
1563
|
files:
|
|
1518
1564
|
menu_item: Dateien verwalten
|
|
@@ -1748,6 +1794,8 @@ de:
|
|
|
1748
1794
|
tr: Türkisch
|
|
1749
1795
|
unknown: "(Unbekannt)"
|
|
1750
1796
|
zh: Chinesisch
|
|
1797
|
+
large_player_pool:
|
|
1798
|
+
feature_name: Vergrößerter Player-Pool
|
|
1751
1799
|
media_loading_spinner:
|
|
1752
1800
|
widget_type_name: Media
|
|
1753
1801
|
page_transitions:
|
|
@@ -1920,6 +1968,8 @@ de:
|
|
|
1920
1968
|
page_type_name: Video
|
|
1921
1969
|
waveform_player_controls:
|
|
1922
1970
|
feature_name: Waveform-Steuerlement-Variante für Audio-Seite
|
|
1971
|
+
webp_images:
|
|
1972
|
+
feature_name: webp Bilder
|
|
1923
1973
|
widgets:
|
|
1924
1974
|
none: "(Kein)"
|
|
1925
1975
|
roles:
|
data/config/locales/en.yml
CHANGED
|
@@ -443,6 +443,7 @@ en:
|
|
|
443
443
|
pageflow/entry:
|
|
444
444
|
publication_states:
|
|
445
445
|
not_published: Not published
|
|
446
|
+
published_with_noindex: Published but excluded from search engines
|
|
446
447
|
published_with_password_protection: Published with password protection
|
|
447
448
|
published_without_password_protection: Published without password protection
|
|
448
449
|
share_providers:
|
|
@@ -826,6 +827,7 @@ en:
|
|
|
826
827
|
members: Members
|
|
827
828
|
no_members: No members assigned
|
|
828
829
|
no_revisions: No versions yet
|
|
830
|
+
noindex: Excluded from search engines
|
|
829
831
|
not_allowed_to_see_entry_types: You are not allowed to access the available story types for this account.
|
|
830
832
|
not_published: Not yet published
|
|
831
833
|
password_protected: Password protected
|
|
@@ -1123,6 +1125,10 @@ en:
|
|
|
1123
1125
|
file_name:
|
|
1124
1126
|
column_header: File name
|
|
1125
1127
|
label: File name
|
|
1128
|
+
license:
|
|
1129
|
+
blank: "(Not specified)"
|
|
1130
|
+
inline_help: Adds a link to the license in the credit note.
|
|
1131
|
+
label: License
|
|
1126
1132
|
original_url:
|
|
1127
1133
|
label: Original
|
|
1128
1134
|
rights:
|
|
@@ -1132,6 +1138,20 @@ en:
|
|
|
1132
1138
|
column_header: Rights
|
|
1133
1139
|
inline_help: Displayed in copyright area of story.
|
|
1134
1140
|
label: Rights
|
|
1141
|
+
rights_display:
|
|
1142
|
+
inline_help: |-
|
|
1143
|
+
Decide if the file's credit note should be displayed in
|
|
1144
|
+
the summary list in the info box, or right at the place
|
|
1145
|
+
in the entry where the file is used.
|
|
1146
|
+
label: Display rights
|
|
1147
|
+
values:
|
|
1148
|
+
credits: In the info box
|
|
1149
|
+
inline: At the element where it is used
|
|
1150
|
+
source_url:
|
|
1151
|
+
inline_help: |-
|
|
1152
|
+
Turns the credit note into a link to the original source
|
|
1153
|
+
or to the author of the file.
|
|
1154
|
+
label: Source URL
|
|
1135
1155
|
text_tracks:
|
|
1136
1156
|
label: Subtitles
|
|
1137
1157
|
settings_dialog_tabs:
|
|
@@ -1349,6 +1369,12 @@ en:
|
|
|
1349
1369
|
already_published_without_password_help: This story is published without a password at the moment. Setting a password will prevent public access from now on.
|
|
1350
1370
|
date: Date
|
|
1351
1371
|
files_pending_notice: Please wait until all files have been processed and check the results. You may then publish your story.
|
|
1372
|
+
noindex: Exclude from search engines
|
|
1373
|
+
noindex_help: |
|
|
1374
|
+
Set a meta tag that instructs crawlers of search engines
|
|
1375
|
+
like Google or Bing to not include the published entry in
|
|
1376
|
+
the index. The entry will, thus, not show up in search
|
|
1377
|
+
results.
|
|
1352
1378
|
not_published_notice: This story is currently not published.
|
|
1353
1379
|
password: Password
|
|
1354
1380
|
password_help: Restrict access to the published version of this story. Visitors will have to enter a password.
|
|
@@ -1511,6 +1537,25 @@ en:
|
|
|
1511
1537
|
label: Show 'Overview' button
|
|
1512
1538
|
overview_button_enabled_disabled:
|
|
1513
1539
|
inline_help: This option is not available for your theme.
|
|
1540
|
+
file_licenses:
|
|
1541
|
+
cc_by_4:
|
|
1542
|
+
name: CC-BY 4.0
|
|
1543
|
+
url: https://creativecommons.org/licenses/by/4.0/
|
|
1544
|
+
cc_by_nc_4:
|
|
1545
|
+
name: CC-BY-NC 4.0
|
|
1546
|
+
url: https://creativecommons.org/licenses/by-nc/4.0/
|
|
1547
|
+
cc_by_nc_nd_4:
|
|
1548
|
+
name: CC-BY-NC-ND 4.0
|
|
1549
|
+
url: https://creativecommons.org/licenses/by-nc-nd/4.0/
|
|
1550
|
+
cc_by_nc_sa_4:
|
|
1551
|
+
name: CC-BY-NC-SA 4.0
|
|
1552
|
+
url: https://creativecommons.org/licenses/by-sa-nc/4.0/
|
|
1553
|
+
cc_by_nd_4:
|
|
1554
|
+
name: CC-BY-ND 4.0
|
|
1555
|
+
url: https://creativecommons.org/licenses/by-nd/4.0/
|
|
1556
|
+
cc_by_sa_4:
|
|
1557
|
+
name: CC-BY-SA 4.0
|
|
1558
|
+
url: https://creativecommons.org/licenses/by-sa/4.0/
|
|
1514
1559
|
help_entries:
|
|
1515
1560
|
files:
|
|
1516
1561
|
menu_item: Manage Files
|
|
@@ -1741,6 +1786,8 @@ en:
|
|
|
1741
1786
|
tr: Turkish
|
|
1742
1787
|
unknown: "(Unknown)"
|
|
1743
1788
|
zh: Chinese
|
|
1789
|
+
large_player_pool:
|
|
1790
|
+
feature_name: Large Player-Pool
|
|
1744
1791
|
media_loading_spinner:
|
|
1745
1792
|
widget_type_name: Media
|
|
1746
1793
|
page_transitions:
|
|
@@ -1916,6 +1963,8 @@ en:
|
|
|
1916
1963
|
page_type_name: Video
|
|
1917
1964
|
waveform_player_controls:
|
|
1918
1965
|
feature_name: Waveform player controls variant for audio page
|
|
1966
|
+
webp_images:
|
|
1967
|
+
feature_name: webp images
|
|
1919
1968
|
widgets:
|
|
1920
1969
|
none: "(none)"
|
|
1921
1970
|
roles:
|