pageflow 14.2.1 → 14.3.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +20 -48
- data/app/assets/javascripts/pageflow/dist/react-client.js +3 -3
- data/app/assets/javascripts/pageflow/dist/react-server.js +3 -3
- data/app/assets/javascripts/pageflow/editor/models/page.js +2 -1
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/audio.js +1 -1
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/background_image.js +1 -1
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/groups/general.js +6 -2
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/video.js +1 -1
- data/app/assets/javascripts/pageflow/ui/views/inputs/select_input_view.js +5 -2
- data/app/assets/stylesheets/pageflow/themes/default/anchors.scss +14 -0
- data/app/assets/stylesheets/pageflow/themes/default/page/anchors.scss +1 -0
- data/app/assets/stylesheets/pageflow/themes/default/page/line_lengths.scss +19 -1
- data/app/assets/stylesheets/pageflow/themes/default/page/shadow.scss +18 -6
- data/app/helpers/pageflow/entry_json_seed_helper.rb +1 -1
- data/app/helpers/pageflow/social_share_helper.rb +1 -1
- data/app/jobs/pageflow/poll_zencoder_job.rb +2 -2
- data/app/models/concerns/pageflow/hosted_file.rb +4 -0
- data/app/state_machines/pageflow/encoded_file_state_machine.rb +6 -0
- data/app/state_machines/pageflow/processed_file_state_machine.rb +4 -0
- data/app/views/pageflow/audio_files/_audio_file.json.jbuilder +1 -1
- data/app/views/pageflow/image_files/_image_file.json.jbuilder +1 -1
- data/app/views/pageflow/structured_data/_entry.json.jbuilder +12 -5
- data/app/views/pageflow/video_files/_video_file.json.jbuilder +1 -1
- data/config/locales/de.yml +1 -0
- data/config/locales/en.yml +1 -0
- data/lib/pageflow/version.rb +1 -1
- data/spec/factories/audio_files.rb +4 -0
- data/spec/factories/image_files.rb +4 -0
- data/spec/factories/video_files.rb +4 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2b1dccc2159c3f19167d16c7e852a0a0fd3ccd4a068f01e72c060ee2b60a5e1d
|
4
|
+
data.tar.gz: 6a60400394872ee81248de6d251d41637630c56bacded5c9fd8b79d1f205a80b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4efd4cea653cb672ef04f9bcb27cd3a0b15c64d9abb162eb9dc1d845eb350ec52f8dd4048c62638a9b48253897d1afe92e63ef9570f89419a6091c5c0df62339
|
7
|
+
data.tar.gz: 7e8bd3b5cd259a41c69c52799ce1679b008cb48bdde5db83c94843d8316a4cc8faaf11bff6948ca1a6789eb32669b44c70525cc9b58995335350f41faee04696
|
data/CHANGELOG.md
CHANGED
@@ -1,54 +1,26 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
-
### Version 14.
|
4
|
-
|
5
|
-
2019-07-
|
6
|
-
|
7
|
-
[Compare changes](https://github.com/codevise/pageflow/compare/
|
8
|
-
|
3
|
+
### Version 14.3.0
|
4
|
+
|
5
|
+
2019-07-24
|
6
|
+
|
7
|
+
[Compare changes](https://github.com/codevise/pageflow/compare/14-2-stable...v14.3.0)
|
8
|
+
|
9
|
+
- Add text position center option
|
10
|
+
([#1183](https://github.com/codevise/pageflow/pull/1183))
|
11
|
+
- Add `failed?` method to file models
|
12
|
+
([#1191](https://github.com/codevise/pageflow/pull/1191))
|
13
|
+
- Structured data improvements
|
14
|
+
([#1189](https://github.com/codevise/pageflow/pull/1189))
|
15
|
+
- Remove margin right of links in page text
|
16
|
+
([#1188](https://github.com/codevise/pageflow/pull/1188))
|
17
|
+
- Add theme option for alternative content link icon
|
18
|
+
([#1184](https://github.com/codevise/pageflow/pull/1184))
|
19
|
+
- Support CDN that redirects to HTTPS
|
20
|
+
([#1190](https://github.com/codevise/pageflow/pull/1190))
|
9
21
|
- Bug fix: Prevent hiding links in credits menu
|
10
|
-
([#
|
11
|
-
|
12
|
-
### Version 14.2.0
|
13
|
-
|
14
|
-
2019-06-18
|
15
|
-
|
16
|
-
[Compare changes](https://github.com/codevise/pageflow/compare/14-1-stable...v14.2.0)
|
17
|
-
|
18
|
-
#### Published Entries
|
19
|
-
|
20
|
-
- Bug fix: Prevent duplicate network requests for video preload
|
21
|
-
([#1173](https://github.com/codevise/pageflow/pull/1173))
|
22
|
-
- Bug fix: Fix hide text on swipe
|
23
|
-
([#1172](https://github.com/codevise/pageflow/pull/1172))
|
24
|
-
|
25
|
-
#### Editor
|
26
|
-
|
27
|
-
- Add plugin API to add common page config tabs
|
28
|
-
([#1169](https://github.com/codevise/pageflow/pull/1169))
|
29
|
-
- Add page type specific configuration editor tab translations
|
30
|
-
([#1168](https://github.com/codevise/pageflow/pull/1168))
|
31
|
-
- Make TabsView tabs scrollable
|
32
|
-
([#1164](https://github.com/codevise/pageflow/pull/1164),
|
33
|
-
[#1174](https://github.com/codevise/pageflow/pull/1174),
|
34
|
-
[#1175](https://github.com/codevise/pageflow/pull/1175))
|
35
|
-
- Add JSONInputView
|
36
|
-
([#1167](https://github.com/codevise/pageflow/pull/1167))
|
37
|
-
- Bug fix: Prevent creating storyline twice
|
38
|
-
([#1171](https://github.com/codevise/pageflow/pull/1171))
|
39
|
-
- Bug fix: Ensure remove link button is show in text editor
|
40
|
-
([#1160](https://github.com/codevise/pageflow/pull/1160),
|
41
|
-
[#1161](https://github.com/codevise/pageflow/pull/1161))
|
42
|
-
|
43
|
-
#### Internal
|
44
|
-
|
45
|
-
- Fix Capybara tests in Chrome 75
|
46
|
-
([#1176](https://github.com/codevise/pageflow/pull/1176))
|
47
|
-
- Update bundler in Travis build
|
48
|
-
([#1166](https://github.com/codevise/pageflow/pull/1166))
|
49
|
-
- Fix sassc-rails development dependency
|
50
|
-
([#1165](https://github.com/codevise/pageflow/pull/1165))
|
22
|
+
([#1182](https://github.com/codevise/pageflow/pull/1182))
|
51
23
|
|
52
24
|
See
|
53
|
-
[14-
|
25
|
+
[14-2-stable branch](https://github.com/codevise/pageflow/blob/14-2-stable/CHANGELOG.md)
|
54
26
|
for previous changes.
|
@@ -30886,7 +30886,7 @@ pageflow = typeof pageflow === "object" ? pageflow : {}; pageflow["react"] =
|
|
30886
30886
|
|
30887
30887
|
return React.createElement(
|
30888
30888
|
_media.Page,
|
30889
|
-
{ className: 'audio_page',
|
30889
|
+
{ className: 'audio_page supports_text_position_center',
|
30890
30890
|
page: props.page,
|
30891
30891
|
file: props.audioFile,
|
30892
30892
|
playerState: props.playerState,
|
@@ -30967,7 +30967,7 @@ pageflow = typeof pageflow === "object" ? pageflow : {}; pageflow["react"] =
|
|
30967
30967
|
|
30968
30968
|
return React.createElement(
|
30969
30969
|
_components.PageWrapper,
|
30970
|
-
|
30970
|
+
{ className: 'supports_text_position_center' },
|
30971
30971
|
React.createElement(_media.PageBackground, { page: page }),
|
30972
30972
|
React.createElement(
|
30973
30973
|
_components.PageForeground,
|
@@ -31031,7 +31031,7 @@ pageflow = typeof pageflow === "object" ? pageflow : {}; pageflow["react"] =
|
|
31031
31031
|
function VideoPage(props) {
|
31032
31032
|
return React.createElement(
|
31033
31033
|
_media.Page,
|
31034
|
-
{ className: 'video_page',
|
31034
|
+
{ className: 'video_page supports_text_position_center',
|
31035
31035
|
page: props.page,
|
31036
31036
|
file: props.videoFile,
|
31037
31037
|
qualities: qualities,
|
@@ -30864,7 +30864,7 @@ pageflow = typeof pageflow === "object" ? pageflow : {}; pageflow["react"] =
|
|
30864
30864
|
|
30865
30865
|
return React.createElement(
|
30866
30866
|
_media.Page,
|
30867
|
-
{ className: 'audio_page',
|
30867
|
+
{ className: 'audio_page supports_text_position_center',
|
30868
30868
|
page: props.page,
|
30869
30869
|
file: props.audioFile,
|
30870
30870
|
playerState: props.playerState,
|
@@ -30945,7 +30945,7 @@ pageflow = typeof pageflow === "object" ? pageflow : {}; pageflow["react"] =
|
|
30945
30945
|
|
30946
30946
|
return React.createElement(
|
30947
30947
|
_components.PageWrapper,
|
30948
|
-
|
30948
|
+
{ className: 'supports_text_position_center' },
|
30949
30949
|
React.createElement(_media.PageBackground, { page: page }),
|
30950
30950
|
React.createElement(
|
30951
30951
|
_components.PageForeground,
|
@@ -31009,7 +31009,7 @@ pageflow = typeof pageflow === "object" ? pageflow : {}; pageflow["react"] =
|
|
31009
31009
|
function VideoPage(props) {
|
31010
31010
|
return React.createElement(
|
31011
31011
|
_media.Page,
|
31012
|
-
{ className: 'video_page',
|
31012
|
+
{ className: 'video_page supports_text_position_center',
|
31013
31013
|
page: props.page,
|
31014
31014
|
file: props.videoFile,
|
31015
31015
|
qualities: qualities,
|
@@ -104,7 +104,8 @@ function conditionMet(condition, configuration) {
|
|
104
104
|
}
|
105
105
|
|
106
106
|
pageflow.Page.linkedPagesLayouts = ['default', 'hero_top_left', 'hero_top_right'];
|
107
|
-
pageflow.Page.textPositions = ['left', 'right'];
|
107
|
+
pageflow.Page.textPositions = ['left', 'center', 'right'];
|
108
|
+
pageflow.Page.textPositionsWithoutCenterOption = ['left', 'right'];
|
108
109
|
|
109
110
|
pageflow.Page.scrollIndicatorModes = ['all', 'only_back', 'only_next', 'non'];
|
110
111
|
pageflow.Page.scrollIndicatorOrientations = ['vertical', 'horizontal'];
|
@@ -1,7 +1,7 @@
|
|
1
1
|
pageflow.ConfigurationEditorView.register('audio', {
|
2
2
|
configure: function() {
|
3
3
|
this.tab('general', function() {
|
4
|
-
this.group('general');
|
4
|
+
this.group('general', {supportsTextPositionCenter: true});
|
5
5
|
|
6
6
|
this.input('additional_title', pageflow.TextInputView);
|
7
7
|
this.input('additional_description', pageflow.TextAreaInputView, {size: 'short'});
|
@@ -1,4 +1,4 @@
|
|
1
|
-
pageflow.ConfigurationEditorTabView.groups.define('general', function() {
|
1
|
+
pageflow.ConfigurationEditorTabView.groups.define('general', function(options) {
|
2
2
|
this.input('title', pageflow.TextInputView, {required: true, maxLength: 5000});
|
3
3
|
this.input('hide_title', pageflow.CheckBoxInputView);
|
4
4
|
this.input('tagline', pageflow.TextInputView, {maxLength: 5000});
|
@@ -7,7 +7,11 @@ pageflow.ConfigurationEditorTabView.groups.define('general', function() {
|
|
7
7
|
fragmentLinkInputView: pageflow.PageLinkInputView,
|
8
8
|
enableLists: true
|
9
9
|
});
|
10
|
-
this.input('text_position', pageflow.SelectInputView, {
|
10
|
+
this.input('text_position', pageflow.SelectInputView, {
|
11
|
+
values: options.supportsTextPositionCenter ?
|
12
|
+
pageflow.Page.textPositions :
|
13
|
+
pageflow.Page.textPositionsWithoutCenterOption
|
14
|
+
});
|
11
15
|
this.input('gradient_opacity', pageflow.SliderInputView);
|
12
16
|
this.input('invert', pageflow.CheckBoxInputView);
|
13
17
|
});
|
@@ -1,7 +1,7 @@
|
|
1
1
|
pageflow.ConfigurationEditorView.register('video', {
|
2
2
|
configure: function() {
|
3
3
|
this.tab('general', function() {
|
4
|
-
this.group('general');
|
4
|
+
this.group('general', {supportsTextPositionCenter: true});
|
5
5
|
|
6
6
|
this.input('additional_title', pageflow.TextInputView);
|
7
7
|
this.input('additional_description', pageflow.TextAreaInputView, {size: 'short'});
|
@@ -211,8 +211,11 @@ pageflow.SelectInputView = Backbone.Marionette.ItemView.extend({
|
|
211
211
|
|
212
212
|
load: function() {
|
213
213
|
if (!this.isClosed) {
|
214
|
-
|
215
|
-
|
214
|
+
var value = this.model.get(this.options.propertyName);
|
215
|
+
|
216
|
+
if (this.model.has(this.options.propertyName) &&
|
217
|
+
this.ui.select.find('option[value="' + value +'"]').length) {
|
218
|
+
this.ui.select.val(value);
|
216
219
|
}
|
217
220
|
else {
|
218
221
|
this.ui.select.val(this.ui.select.find('option:first').val());
|
@@ -2,6 +2,8 @@
|
|
2
2
|
/// color by default.
|
3
3
|
$anchor-icon-color: null !default;
|
4
4
|
|
5
|
+
$anchor-external-links-icon: false !default;
|
6
|
+
|
5
7
|
%anchor {
|
6
8
|
@include fa-caret-right-icon;
|
7
9
|
|
@@ -31,4 +33,16 @@ $anchor-icon-color: null !default;
|
|
31
33
|
height: 12px;
|
32
34
|
color: $anchor-icon-color;
|
33
35
|
}
|
36
|
+
|
37
|
+
@if $anchor-external-links-icon {
|
38
|
+
&[target="_blank"] {
|
39
|
+
@include fa-external-link-icon;
|
40
|
+
|
41
|
+
&:before {
|
42
|
+
width: 18px;
|
43
|
+
font-size: 12px;
|
44
|
+
font-weight: bold;
|
45
|
+
}
|
46
|
+
}
|
47
|
+
}
|
34
48
|
}
|
@@ -10,6 +10,9 @@ $page-header-title-max-width: 700px !default;
|
|
10
10
|
/// Maximal width for right positioned headlines and content text.
|
11
11
|
$page-content-position-right-max-width: 500px !default;
|
12
12
|
|
13
|
+
/// Maximal width for center positioned headlines and content text.
|
14
|
+
$page-content-position-center-max-width: $page-content-max-width !default;
|
15
|
+
|
13
16
|
/// Min width the header title is supposed to have in a split layout
|
14
17
|
/// (i.e. when the page has two columns and some kind of embed is
|
15
18
|
/// displayed on the right) with text positioned on the left.
|
@@ -79,7 +82,12 @@ $page-content-width: 60% !default;
|
|
79
82
|
}
|
80
83
|
}
|
81
84
|
|
82
|
-
|
85
|
+
// Not all page types support text position "center" so far. Make
|
86
|
+
// sure styles only apply to those that explicitly opt in by setting
|
87
|
+
// a class on their wrapper element.
|
88
|
+
|
89
|
+
&.text_position_right,
|
90
|
+
&.text_position_center .supports_text_position_center {
|
83
91
|
.page_header-subtitle,
|
84
92
|
.page_header-title,
|
85
93
|
.page_header-tagline,
|
@@ -103,4 +111,14 @@ $page-content-width: 60% !default;
|
|
103
111
|
}
|
104
112
|
}
|
105
113
|
}
|
114
|
+
|
115
|
+
&.text_position_center .supports_text_position_center {
|
116
|
+
.page_header-subtitle,
|
117
|
+
.page_header-title,
|
118
|
+
.page_header-tagline,
|
119
|
+
.paragraph {
|
120
|
+
@include margin-end(auto);
|
121
|
+
max-width: $page-content-position-center-max-width;
|
122
|
+
}
|
123
|
+
}
|
106
124
|
}
|
@@ -11,17 +11,29 @@ $page-shadow-inverted-color: #fff !default;
|
|
11
11
|
@include shadow-start($page-shadow-color);
|
12
12
|
}
|
13
13
|
|
14
|
+
&.text_position_right .shadow {
|
15
|
+
@include shadow-end($page-shadow-color);
|
16
|
+
}
|
17
|
+
|
18
|
+
// Not all page types support text position "center" so far. Make
|
19
|
+
// sure styles only apply to those that explicitly opt in by setting
|
20
|
+
// a class on their wrapper element.
|
21
|
+
|
22
|
+
&.text_position_center .supports_text_position_center .shadow {
|
23
|
+
background: transparentize($page-shadow-color, 0.3);
|
24
|
+
}
|
25
|
+
|
14
26
|
&.invert {
|
15
27
|
.shadow {
|
16
28
|
@include shadow-start($page-shadow-inverted-color);
|
17
29
|
}
|
18
|
-
}
|
19
30
|
|
20
|
-
|
21
|
-
|
22
|
-
|
31
|
+
&.text_position_right .shadow {
|
32
|
+
@include shadow-end($page-shadow-inverted-color);
|
33
|
+
}
|
23
34
|
|
24
|
-
|
25
|
-
|
35
|
+
&.text_position_center .supports_text_position_center .shadow {
|
36
|
+
background: transparentize($page-shadow-inverted-color, 0.3);
|
37
|
+
}
|
26
38
|
}
|
27
39
|
}
|
@@ -41,8 +41,8 @@ module Pageflow
|
|
41
41
|
|
42
42
|
def fetch_thumbnail(file)
|
43
43
|
return unless file.respond_to?(:thumbnail)
|
44
|
-
file.thumbnail = URI.parse(file.zencoder_thumbnail.url(default_protocol: '
|
45
|
-
file.poster = URI.parse(file.zencoder_poster.url(default_protocol: '
|
44
|
+
file.thumbnail = URI.parse(file.zencoder_thumbnail.url(default_protocol: 'https'))
|
45
|
+
file.poster = URI.parse(file.zencoder_poster.url(default_protocol: 'https'))
|
46
46
|
rescue OpenURI::HTTPError
|
47
47
|
throw(:halt, :pending)
|
48
48
|
end
|
@@ -1,2 +1,2 @@
|
|
1
1
|
json.call(audio_file, :duration_in_ms)
|
2
|
-
json.created_at audio_file.created_at.try(:iso8601, 0)
|
2
|
+
json.created_at audio_file.created_at.try(:utc).try(:iso8601, 0)
|
@@ -1,2 +1,2 @@
|
|
1
1
|
json.call(image_file, :width, :height)
|
2
|
-
json.created_at image_file.created_at.try(:iso8601, 0)
|
2
|
+
json.created_at image_file.created_at.try(:utc).try(:iso8601, 0)
|
@@ -4,21 +4,22 @@ json.set! '@context', 'http://schema.org'
|
|
4
4
|
json.set! '@type', 'Article'
|
5
5
|
|
6
6
|
json.headline pretty_entry_title(entry)
|
7
|
+
json.url structured_data_normalize_protocol(social_share_entry_url(entry))
|
7
8
|
json.description social_share_entry_description(entry)
|
8
9
|
|
9
|
-
json.keywords(meta_data[:keywords]) if meta_data[:keywords].present?
|
10
|
+
json.keywords(meta_data[:keywords].split(',').map(&:squish)) if meta_data[:keywords].present?
|
10
11
|
|
11
12
|
if meta_data[:author].present?
|
12
13
|
json.author do
|
13
14
|
json.set! '@type', 'Organization'
|
14
|
-
json.name meta_data[:author]
|
15
|
+
json.name meta_data[:author].split(',').map(&:squish)
|
15
16
|
end
|
16
17
|
end
|
17
18
|
|
18
19
|
if meta_data[:publisher].present?
|
19
20
|
json.publisher do
|
20
21
|
json.set! '@type', 'Organization'
|
21
|
-
json.name meta_data[:publisher]
|
22
|
+
json.name meta_data[:publisher].split(',').map(&:squish)
|
22
23
|
json.logo do
|
23
24
|
json.set! '@type', 'ImageObject'
|
24
25
|
json.url structured_data_normalize_protocol(asset_url(entry.theme.print_logo_path))
|
@@ -26,8 +27,10 @@ if meta_data[:publisher].present?
|
|
26
27
|
end
|
27
28
|
end
|
28
29
|
|
29
|
-
json.date_published entry.first_published_at.try(:iso8601, 0)
|
30
|
-
json.date_modified entry.published_at.try(:iso8601, 0)
|
30
|
+
json.date_published entry.first_published_at.try(:utc).try(:iso8601, 0)
|
31
|
+
json.date_modified entry.published_at.try(:utc).try(:iso8601, 0)
|
32
|
+
|
33
|
+
json.article_section 'longform'
|
31
34
|
|
32
35
|
json.main_entity_of_page do
|
33
36
|
json.set! '@type', 'WebPage'
|
@@ -43,4 +46,8 @@ if thumbnail_file.present?
|
|
43
46
|
json.width 560
|
44
47
|
json.height 315
|
45
48
|
end
|
49
|
+
|
50
|
+
json.thumbnail_url structured_data_normalize_protocol(
|
51
|
+
thumbnail_file.thumbnail_url(:thumbnail_large)
|
52
|
+
)
|
46
53
|
end
|
@@ -1,3 +1,3 @@
|
|
1
1
|
json.call(video_file, :width, :height, :duration_in_ms)
|
2
|
-
json.created_at video_file.created_at.try(:iso8601, 0)
|
2
|
+
json.created_at video_file.created_at.try(:utc).try(:iso8601, 0)
|
3
3
|
json.variants video_file.present_outputs + [:poster_medium, :poster_large, :poster_ultra, :print]
|
data/config/locales/de.yml
CHANGED
data/config/locales/en.yml
CHANGED
data/lib/pageflow/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pageflow
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 14.
|
4
|
+
version: 14.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Codevise Solutions Ltd
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-07-
|
11
|
+
date: 2019-07-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|