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.

Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +20 -48
  3. data/app/assets/javascripts/pageflow/dist/react-client.js +3 -3
  4. data/app/assets/javascripts/pageflow/dist/react-server.js +3 -3
  5. data/app/assets/javascripts/pageflow/editor/models/page.js +2 -1
  6. data/app/assets/javascripts/pageflow/editor/views/configuration_editors/audio.js +1 -1
  7. data/app/assets/javascripts/pageflow/editor/views/configuration_editors/background_image.js +1 -1
  8. data/app/assets/javascripts/pageflow/editor/views/configuration_editors/groups/general.js +6 -2
  9. data/app/assets/javascripts/pageflow/editor/views/configuration_editors/video.js +1 -1
  10. data/app/assets/javascripts/pageflow/ui/views/inputs/select_input_view.js +5 -2
  11. data/app/assets/stylesheets/pageflow/themes/default/anchors.scss +14 -0
  12. data/app/assets/stylesheets/pageflow/themes/default/page/anchors.scss +1 -0
  13. data/app/assets/stylesheets/pageflow/themes/default/page/line_lengths.scss +19 -1
  14. data/app/assets/stylesheets/pageflow/themes/default/page/shadow.scss +18 -6
  15. data/app/helpers/pageflow/entry_json_seed_helper.rb +1 -1
  16. data/app/helpers/pageflow/social_share_helper.rb +1 -1
  17. data/app/jobs/pageflow/poll_zencoder_job.rb +2 -2
  18. data/app/models/concerns/pageflow/hosted_file.rb +4 -0
  19. data/app/state_machines/pageflow/encoded_file_state_machine.rb +6 -0
  20. data/app/state_machines/pageflow/processed_file_state_machine.rb +4 -0
  21. data/app/views/pageflow/audio_files/_audio_file.json.jbuilder +1 -1
  22. data/app/views/pageflow/image_files/_image_file.json.jbuilder +1 -1
  23. data/app/views/pageflow/structured_data/_entry.json.jbuilder +12 -5
  24. data/app/views/pageflow/video_files/_video_file.json.jbuilder +1 -1
  25. data/config/locales/de.yml +1 -0
  26. data/config/locales/en.yml +1 -0
  27. data/lib/pageflow/version.rb +1 -1
  28. data/spec/factories/audio_files.rb +4 -0
  29. data/spec/factories/image_files.rb +4 -0
  30. data/spec/factories/video_files.rb +4 -0
  31. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a833a9e170837eb7903aae1c60df6839492ed569a242f93b5219d5c2b5a8fb26
4
- data.tar.gz: dc50d5b61edd236c2876eb272bcbf336ad2b3f137316dd79695011e3ae5535a8
3
+ metadata.gz: 2b1dccc2159c3f19167d16c7e852a0a0fd3ccd4a068f01e72c060ee2b60a5e1d
4
+ data.tar.gz: 6a60400394872ee81248de6d251d41637630c56bacded5c9fd8b79d1f205a80b
5
5
  SHA512:
6
- metadata.gz: e0eed046eba35df4410a9cbfa19ac09ff9e85279343e4bfbf23ec727e618400b560b7731e748865893abf8196fd7a2d415a43041299e9c20b7b5444930c15f1a
7
- data.tar.gz: 906d8e876cc93801a49852e74eeb56c87664f8aac7995c08220e6bb9bfaebf3612345b2ac47f7430a4ab9655c11b23cbde7588940417efbea66e8cb2c44c55f4
6
+ metadata.gz: 4efd4cea653cb672ef04f9bcb27cd3a0b15c64d9abb162eb9dc1d845eb350ec52f8dd4048c62638a9b48253897d1afe92e63ef9570f89419a6091c5c0df62339
7
+ data.tar.gz: 7e8bd3b5cd259a41c69c52799ce1679b008cb48bdde5db83c94843d8316a4cc8faaf11bff6948ca1a6789eb32669b44c70525cc9b58995335350f41faee04696
@@ -1,54 +1,26 @@
1
1
  # CHANGELOG
2
2
 
3
- ### Version 14.2.1
4
-
5
- 2019-07-04
6
-
7
- [Compare changes](https://github.com/codevise/pageflow/compare/v14.2.0...v14.2.1)
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
- ([#1185](https://github.com/codevise/pageflow/pull/1185))
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-1-stable branch](https://github.com/codevise/pageflow/blob/14-1-stable/CHANGELOG.md)
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
- null,
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
- null,
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,7 +1,7 @@
1
1
  pageflow.ConfigurationEditorView.register('background_image', {
2
2
  configure: function() {
3
3
  this.tab('general', function() {
4
- this.group('general');
4
+ this.group('general', {supportsTextPositionCenter: true});
5
5
  });
6
6
 
7
7
  this.tab('files', function() {
@@ -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, {values: pageflow.Page.textPositions});
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
- if (this.model.has(this.options.propertyName)) {
215
- this.ui.select.val(this.model.get(this.options.propertyName));
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
  }
@@ -16,6 +16,7 @@ $page-anchor-typography: () !default;
16
16
  @extend %anchor;
17
17
  color: $page-anchor-color;
18
18
  pointer-events: all;
19
+ margin-right: 0;
19
20
  @include typography($page-anchor-typography)
20
21
  }
21
22
 
@@ -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
- &.text_position_right {
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
- &.text_position_right .shadow {
21
- @include shadow-end($page-shadow-color);
22
- }
31
+ &.text_position_right .shadow {
32
+ @include shadow-end($page-shadow-inverted-color);
33
+ }
23
34
 
24
- &.invert.text_position_right .shadow {
25
- @include shadow-end($page-shadow-inverted-color);
35
+ &.text_position_center .supports_text_position_center .shadow {
36
+ background: transparentize($page-shadow-inverted-color, 0.3);
37
+ }
26
38
  }
27
39
  }
@@ -15,7 +15,7 @@ module Pageflow
15
15
  {
16
16
  title: entry.title,
17
17
  slug: entry.slug,
18
- published_at: entry.published_at.try(:iso8601, 0)
18
+ published_at: entry.published_at.try(:utc).try(:iso8601, 0)
19
19
  }
20
20
  end
21
21
 
@@ -72,7 +72,7 @@ module Pageflow
72
72
  end
73
73
 
74
74
  def social_share_normalize_protocol(url)
75
- url.gsub(/^(\/\/|https:\/\/)/, 'http://')
75
+ url.gsub(%r{^//}, 'https://')
76
76
  end
77
77
 
78
78
  private
@@ -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: 'http'))
45
- file.poster = URI.parse(file.zencoder_poster.url(default_protocol: 'http'))
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
@@ -66,6 +66,10 @@ module Pageflow
66
66
  attachment.present?
67
67
  end
68
68
 
69
+ def failed?
70
+ uploading_failed?
71
+ end
72
+
69
73
  def basename
70
74
  File.basename(attachment.original_filename, '.*')
71
75
  end
@@ -78,5 +78,11 @@ module Pageflow
78
78
  def ready?
79
79
  encoded?
80
80
  end
81
+
82
+ def failed?
83
+ super ||
84
+ fetching_meta_data_failed? ||
85
+ encoding_failed?
86
+ end
81
87
  end
82
88
  end
@@ -34,5 +34,9 @@ module Pageflow
34
34
  def ready?
35
35
  processed?
36
36
  end
37
+
38
+ def failed?
39
+ super || processing_failed?
40
+ end
37
41
  end
38
42
  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]
@@ -462,6 +462,7 @@ de:
462
462
  internal_links: Seiten-Verweise
463
463
  video: Video
464
464
  text_position:
465
+ center: Mittig
465
466
  left: Links
466
467
  right: Rechts
467
468
  transition:
@@ -462,6 +462,7 @@ en:
462
462
  internal_links: Internal Links
463
463
  video: Video
464
464
  text_position:
465
+ center: Center
465
466
  left: Left
466
467
  right: Right
467
468
  transition:
@@ -1,3 +1,3 @@
1
1
  module Pageflow
2
- VERSION = '14.2.1'.freeze
2
+ VERSION = '14.3.0'.freeze
3
3
  end
@@ -48,6 +48,10 @@ module Pageflow
48
48
  state { 'waiting_for_confirmation' }
49
49
  end
50
50
 
51
+ trait :fetching_meta_data_failed do
52
+ state { 'fetching_meta_data_failed' }
53
+ end
54
+
51
55
  trait :encoding_failed do
52
56
  state { 'encoding_failed' }
53
57
  end
@@ -40,6 +40,10 @@ module Pageflow
40
40
  state { 'uploaded' }
41
41
  end
42
42
 
43
+ trait :uploading_failed do
44
+ state { 'uploading_failed' }
45
+ end
46
+
43
47
  trait :processing do
44
48
  state { 'processing' }
45
49
  end
@@ -48,6 +48,10 @@ module Pageflow
48
48
  state { 'waiting_for_confirmation' }
49
49
  end
50
50
 
51
+ trait :fetching_meta_data_failed do
52
+ state { 'fetching_meta_data_failed' }
53
+ end
54
+
51
55
  trait :encoding_failed do
52
56
  state { 'encoding_failed' }
53
57
  end
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.2.1
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-04 00:00:00.000000000 Z
11
+ date: 2019-07-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails