pageflow 0.4.0 → 0.5.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 +8 -8
- data/app/assets/images/pageflow/audio_loop_pictogram.png +0 -0
- data/app/assets/images/pageflow/audio_loop_pictogram_small.png +0 -0
- data/app/assets/images/pageflow/ov-internal_links.png +0 -0
- data/app/assets/images/pageflow/placeholder_link_thumbnail.jpg +0 -0
- data/app/assets/images/pageflow/placeholder_link_thumbnail_large.jpg +0 -0
- data/app/assets/images/pageflow/placeholder_thumbnail.jpg +0 -0
- data/app/assets/javascripts/pageflow/audio_player.js +5 -0
- data/app/assets/javascripts/pageflow/editor/api.js +4 -0
- data/app/assets/javascripts/pageflow/editor/api/file_type.js +32 -0
- data/app/assets/javascripts/pageflow/editor/api/file_types.js +73 -0
- data/app/assets/javascripts/pageflow/editor/base.js +5 -0
- data/app/assets/javascripts/pageflow/editor/collections/file_usages_collection.js +13 -1
- data/app/assets/javascripts/pageflow/editor/collections/files_collection.js +54 -0
- data/app/assets/javascripts/pageflow/editor/controllers/sidebar_controller.js +2 -14
- data/app/assets/javascripts/pageflow/editor/initializers/error_listener.js +8 -0
- data/app/assets/javascripts/pageflow/editor/initializers/setup_collections.js +5 -3
- data/app/assets/javascripts/pageflow/editor/initializers/setup_file_types.js +21 -0
- data/app/assets/javascripts/pageflow/editor/models/audio_file.js +1 -15
- data/app/assets/javascripts/pageflow/editor/models/encoded_file.js +32 -0
- data/app/assets/javascripts/pageflow/editor/models/entry.js +29 -63
- data/app/assets/javascripts/pageflow/editor/models/file_stage.js +7 -6
- data/app/assets/javascripts/pageflow/editor/models/hosted_file.js +20 -0
- data/app/assets/javascripts/pageflow/editor/models/image_file.js +8 -31
- data/app/assets/javascripts/pageflow/editor/models/mixins/file_with_type.js +3 -0
- data/app/assets/javascripts/pageflow/editor/models/mixins/stage_provider.js +11 -5
- data/app/assets/javascripts/pageflow/editor/models/mixins/transient_references.js +5 -0
- data/app/assets/javascripts/pageflow/editor/models/other_entry.js +9 -3
- data/app/assets/javascripts/pageflow/editor/models/page.js +9 -11
- data/app/assets/javascripts/pageflow/editor/models/uploaded_file.js +65 -0
- data/app/assets/javascripts/pageflow/editor/models/video_file.js +1 -14
- data/app/assets/javascripts/pageflow/editor/routers/sidebar_router.js +2 -9
- data/app/assets/javascripts/pageflow/editor/templates/file_item.jst.ejs +1 -1
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/audio.js +4 -0
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/audio_loop.js +23 -0
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/background_image.js +4 -0
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/background_video.js +4 -0
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/internal_links.js +4 -0
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/video.js +4 -0
- data/app/assets/javascripts/pageflow/editor/views/embedded/page_link_embedded_view.js +1 -1
- data/app/assets/javascripts/pageflow/editor/views/explorer_file_item_view.js +2 -0
- data/app/assets/javascripts/pageflow/editor/views/file_item_view.js +8 -1
- data/app/assets/javascripts/pageflow/editor/views/file_stage_item_view.js +8 -1
- data/app/assets/javascripts/pageflow/editor/views/files_explorer_view.js +11 -43
- data/app/assets/javascripts/pageflow/editor/views/files_view.js +11 -21
- data/app/assets/javascripts/pageflow/editor/views/input_view.js +1 -1
- data/app/assets/javascripts/pageflow/editor/views/inputs/file_input_view.js +6 -0
- data/app/assets/javascripts/pageflow/editor/views/inputs/select_input_view.js +5 -0
- data/app/assets/javascripts/pageflow/editor/views/mixins/selectable_view.js +7 -5
- data/app/assets/javascripts/pageflow/editor/views/uploader_view.js +15 -5
- data/app/assets/javascripts/pageflow/page_types/audio.js +1 -1
- data/app/assets/javascripts/pageflow/page_types/audio_loop.js +90 -0
- data/app/assets/javascripts/pageflow/page_types/video.js +1 -1
- data/app/assets/javascripts/pageflow/ready.js +17 -2
- data/app/assets/javascripts/pageflow/video_player/player_buffered_patch.js +13 -2
- data/app/assets/stylesheets/pageflow/mixins/pageflow.css.scss +9 -0
- data/app/assets/stylesheets/pageflow/mixins/shadow.css.scss +12 -1
- data/app/assets/stylesheets/pageflow/overview.css.scss +3 -3
- data/app/assets/stylesheets/pageflow/page_types.css.scss +2 -0
- data/app/assets/stylesheets/pageflow/page_types/audio.css.scss +2 -13
- data/app/assets/stylesheets/pageflow/page_types/audio_loop.css.scss +0 -0
- data/app/assets/stylesheets/pageflow/page_types/video.css.scss +4 -0
- data/app/assets/stylesheets/pageflow/player_controls.css.scss +72 -6
- data/app/assets/stylesheets/pageflow/themes/default/navigation.css.scss +3 -0
- data/app/assets/stylesheets/pageflow/themes/default/overview.css.scss +3 -0
- data/app/controllers/pageflow/editor/files_controller.rb +11 -24
- data/app/controllers/pageflow/{video_files_controller.rb → files_controller.rb} +6 -2
- data/app/helpers/pageflow/audio_files_helper.rb +40 -0
- data/app/helpers/pageflow/file_thumbnails_helper.rb +18 -0
- data/app/helpers/pageflow/pages_helper.rb +3 -24
- data/app/jobs/pageflow/upload_file_to_s3_job.rb +2 -2
- data/app/models/concerns/pageflow/hosted_file.rb +93 -0
- data/app/models/pageflow/audio_file.rb +1 -12
- data/app/models/pageflow/draft_entry.rb +2 -11
- data/app/models/pageflow/image_file.rb +14 -14
- data/app/models/pageflow/page.rb +7 -24
- data/app/models/pageflow/published_entry.rb +3 -2
- data/app/models/pageflow/revision.rb +7 -0
- data/app/models/pageflow/thumbnail_file_resolver.rb +33 -0
- data/app/models/pageflow/video_file.rb +10 -34
- data/app/models/pageflow/zencoder_attachment.rb +2 -2
- data/app/state_machines/pageflow/encoded_file_state_machine.rb +8 -20
- data/app/state_machines/pageflow/image_file_state_machine.rb +4 -0
- data/app/views/pageflow/audio_files/_audio_file.html.erb +1 -0
- data/app/views/pageflow/audio_files/_script_tag.html.erb +3 -0
- data/app/views/pageflow/config/_editor_seeds.json.jbuilder +1 -0
- data/app/views/pageflow/editor/audio_files/_audio_file.json.jbuilder +0 -6
- data/app/views/pageflow/editor/files/_file.json.jbuilder +16 -0
- data/app/views/pageflow/editor/files/create.json.jbuilder +1 -1
- data/app/views/pageflow/editor/files/index.json.jbuilder +4 -1
- data/app/views/pageflow/editor/image_files/_image_file.json.jbuilder +1 -8
- data/app/views/pageflow/editor/video_files/_video_file.json.jbuilder +0 -8
- data/app/views/pageflow/entries/_entry.html.erb +2 -2
- data/app/views/pageflow/entries/_multimedia_alert.html.erb +14 -7
- data/app/views/pageflow/entries/_social_meta_tags.html.erb +1 -1
- data/app/views/pageflow/entries/edit.html.erb +6 -4
- data/app/views/pageflow/entries/navigation/_bar_top.html.erb +1 -1
- data/app/views/pageflow/entries/navigation/_page.html.erb +2 -2
- data/app/views/pageflow/entries/overview/_chapter.html.erb +3 -1
- data/app/views/pageflow/entries/overview/_entry.html.erb +2 -1
- data/app/views/pageflow/entries/overview/_page.html.erb +1 -1
- data/app/views/pageflow/entries/show.css.erb +1 -21
- data/app/views/pageflow/entries/show.json.jbuilder +8 -3
- data/app/views/pageflow/file_types/_thumbnails.css.erb +7 -0
- data/app/views/pageflow/files/show.html.erb +1 -0
- data/app/views/pageflow/page_types/_page_type.json.jbuilder +4 -0
- data/app/views/pageflow/pages/templates/_audio.html.erb +6 -5
- data/app/views/pageflow/pages/templates/_audio_loop.html.erb +34 -0
- data/app/views/pageflow/video_files/_video_file.html.erb +1 -0
- data/config/initializers/page_type_helpers.rb +2 -2
- data/config/initializers/paperclip.rb +32 -0
- data/config/initializers/zencoder.rb +3 -3
- data/config/locales/activerecord.de.yml +3 -2
- data/config/locales/pageflow/audio.de.yml +4 -0
- data/config/locales/pageflow/editor/errors.de.yml +6 -0
- data/config/routes.rb +4 -10
- data/lib/generators/pageflow/initializer/templates/pageflow.rb +2 -1
- data/lib/pageflow.rb +5 -3
- data/lib/pageflow/ability_mixin.rb +2 -2
- data/lib/pageflow/built_in_page_type.rb +40 -7
- data/lib/pageflow/configuration.rb +17 -0
- data/lib/pageflow/file_type.rb +60 -0
- data/lib/pageflow/file_types.rb +25 -0
- data/lib/pageflow/page_type.rb +31 -0
- data/lib/pageflow/version.rb +1 -1
- data/lib/pageflow/zencoder_video_output_definition.rb +3 -3
- data/spec/factories/audio_files.rb +2 -2
- data/spec/factories/hosted_files.rb +35 -0
- data/spec/factories/video_files.rb +2 -2
- metadata +37 -18
- data/app/assets/images/pageflow/themes/default/logo_navi.png +0 -0
- data/app/assets/images/pageflow/themes/default/logo_navi_invert.png +0 -0
- data/app/assets/javascripts/pageflow/editor/collections/audio_files_collection.js +0 -7
- data/app/assets/javascripts/pageflow/editor/collections/image_files_collection.js +0 -8
- data/app/assets/javascripts/pageflow/editor/collections/mixins/files_collection.js +0 -42
- data/app/assets/javascripts/pageflow/editor/collections/video_files_collection.js +0 -8
- data/app/assets/javascripts/pageflow/editor/models/mixins/encoded_file.js +0 -51
- data/app/assets/javascripts/pageflow/editor/models/mixins/file.js +0 -31
- data/app/assets/javascripts/pageflow/editor/views/audio_file_item_view.js +0 -14
- data/app/assets/javascripts/pageflow/editor/views/image_file_item_view.js +0 -10
- data/app/assets/javascripts/pageflow/editor/views/video_file_item_view.js +0 -18
- data/app/controllers/pageflow/editor/audio_files_controller.rb +0 -11
- data/app/controllers/pageflow/editor/image_files_controller.rb +0 -11
- data/app/controllers/pageflow/editor/video_files_controller.rb +0 -11
- data/app/views/pageflow/video_files/show.html.erb +0 -1
@@ -0,0 +1,93 @@
|
|
1
|
+
module Pageflow
|
2
|
+
module HostedFile
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
include UploadedFile
|
5
|
+
|
6
|
+
included do
|
7
|
+
has_attached_file(:attachment_on_filesystem, Pageflow.config.paperclip_filesystem_default_options)
|
8
|
+
has_attached_file(:attachment_on_s3, Pageflow.config.paperclip_s3_default_options)
|
9
|
+
|
10
|
+
state_machine initial: 'not_uploaded_to_s3' do
|
11
|
+
extend StateMachineJob::Macro
|
12
|
+
|
13
|
+
state 'not_uploaded_to_s3'
|
14
|
+
state 'uploading_to_s3'
|
15
|
+
state 'uploaded_to_s3'
|
16
|
+
state 'uploading_to_s3_failed'
|
17
|
+
|
18
|
+
event :publish do
|
19
|
+
transition 'not_uploaded_to_s3' => 'uploading_to_s3'
|
20
|
+
end
|
21
|
+
|
22
|
+
event :retry do
|
23
|
+
transition 'uploading_to_s3_failed' => 'uploading_to_s3'
|
24
|
+
end
|
25
|
+
|
26
|
+
job UploadFileToS3Job do
|
27
|
+
on_enter 'uploading_to_s3'
|
28
|
+
result :pending, retry_after: 30.seconds
|
29
|
+
result :ok, state: 'uploaded_to_s3'
|
30
|
+
result :error, state: 'uploading_to_s3_failed'
|
31
|
+
end
|
32
|
+
|
33
|
+
event :process
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def attachment
|
38
|
+
attachment_on_s3.present? ? attachment_on_s3 : attachment_on_filesystem
|
39
|
+
end
|
40
|
+
|
41
|
+
def attachment=(value)
|
42
|
+
self.attachment_on_filesystem = value
|
43
|
+
end
|
44
|
+
|
45
|
+
def keep_on_filesystem_after_upload_to_s3?
|
46
|
+
false
|
47
|
+
end
|
48
|
+
|
49
|
+
def retryable?
|
50
|
+
can_retry?
|
51
|
+
end
|
52
|
+
|
53
|
+
def url
|
54
|
+
if attachment_on_s3.present?
|
55
|
+
attachment.url
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def self.columns(t)
|
60
|
+
t.belongs_to(:entry, index: true)
|
61
|
+
t.belongs_to(:uploader, index: true)
|
62
|
+
|
63
|
+
t.string(:state)
|
64
|
+
t.string(:rights)
|
65
|
+
|
66
|
+
t.string(:attachment_on_filesystem_file_name)
|
67
|
+
t.string(:attachment_on_filesystem_content_type)
|
68
|
+
t.integer(:attachment_on_filesystem_file_size, limit: 8)
|
69
|
+
t.datetime(:attachment_on_filesystem_updated_at)
|
70
|
+
|
71
|
+
t.string(:attachment_on_s3_file_name)
|
72
|
+
t.string(:attachment_on_s3_content_type)
|
73
|
+
t.integer(:attachment_on_s3_file_size, limit: 8)
|
74
|
+
t.datetime(:attachment_on_s3_updated_at)
|
75
|
+
|
76
|
+
t.timestamps
|
77
|
+
end
|
78
|
+
|
79
|
+
module ClassMethods
|
80
|
+
def processing_state_machine(&block)
|
81
|
+
state_machine do
|
82
|
+
extend StateMachineJob::Macro
|
83
|
+
|
84
|
+
after_transition(any => 'uploaded_to_s3') do |hosted_file|
|
85
|
+
hosted_file.process!
|
86
|
+
end
|
87
|
+
|
88
|
+
instance_eval(&block)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
@@ -1,21 +1,10 @@
|
|
1
1
|
module Pageflow
|
2
2
|
class AudioFile < ActiveRecord::Base
|
3
|
+
include HostedFile
|
3
4
|
include EncodedFileStateMachine
|
4
|
-
include UploadedFile
|
5
5
|
|
6
6
|
belongs_to :confirmed_by, :class_name => 'User'
|
7
7
|
|
8
|
-
has_attached_file(:attachment_on_filesystem, Pageflow.config.paperclip_filesystem_default_options)
|
9
|
-
has_attached_file(:attachment_on_s3, Pageflow.config.paperclip_s3_default_options)
|
10
|
-
|
11
|
-
def attachment
|
12
|
-
attachment_on_s3
|
13
|
-
end
|
14
|
-
|
15
|
-
def attachment=(value)
|
16
|
-
self.attachment_on_filesystem = value
|
17
|
-
end
|
18
|
-
|
19
8
|
def attachment_s3_url
|
20
9
|
"s3://#{File.join(attachment_on_s3.bucket_name, attachment_on_s3.path)}"
|
21
10
|
end
|
@@ -12,6 +12,7 @@ module Pageflow
|
|
12
12
|
|
13
13
|
delegate(:title, :summary, :credits, :manual_start,
|
14
14
|
:chapters, :pages,
|
15
|
+
:files,
|
15
16
|
:image_files, :video_files, :audio_files,
|
16
17
|
:to => :draft)
|
17
18
|
|
@@ -32,7 +33,7 @@ module Pageflow
|
|
32
33
|
end
|
33
34
|
|
34
35
|
def remove_file(file)
|
35
|
-
|
36
|
+
draft.file_usages.where(file: file).destroy_all
|
36
37
|
file.destroy if file.usages.empty?
|
37
38
|
end
|
38
39
|
|
@@ -73,15 +74,5 @@ module Pageflow
|
|
73
74
|
def home_button
|
74
75
|
HomeButton.new(draft, theming)
|
75
76
|
end
|
76
|
-
|
77
|
-
private
|
78
|
-
|
79
|
-
def collection_containing(file)
|
80
|
-
collection_for(file.class.name)
|
81
|
-
end
|
82
|
-
|
83
|
-
def collection_for(model_name)
|
84
|
-
draft.send(model_name.to_s.underscore.split('/').last.pluralize)
|
85
|
-
end
|
86
77
|
end
|
87
78
|
end
|
@@ -7,20 +7,10 @@ module Pageflow
|
|
7
7
|
|
8
8
|
has_attached_file(:processed_attachment, Pageflow.config.paperclip_s3_default_options
|
9
9
|
.merge(:default_url => ':pageflow_placeholder',
|
10
|
-
:styles =>
|
11
|
-
:
|
12
|
-
|
13
|
-
|
14
|
-
:thumbnail_overview_desktop => ['230x72#', :JPG],
|
15
|
-
:thumbnail_overview_mobile => ['200x112#', :JPG],
|
16
|
-
|
17
|
-
:link_thumbnail => ['192x108#', :JPG],
|
18
|
-
:link_thumbnail_large => ['394x226#', :JPG],
|
19
|
-
|
20
|
-
:print => ['300x300>', :JPG],
|
21
|
-
:medium => ['1024x1024>', :JPG],
|
22
|
-
:large => ['1920x1920>', :JPG]
|
23
|
-
},
|
10
|
+
:styles => Pageflow.config.thumbnail_styles
|
11
|
+
.merge(:print => ['300x300>', :JPG],
|
12
|
+
:medium => ['1024x1024>', :JPG],
|
13
|
+
:large => ['1920x1920>', :JPG]),
|
24
14
|
:convert_options => {
|
25
15
|
:print => "-quality 10 -interlace Plane",
|
26
16
|
:medium => "-quality 70 -interlace Plane",
|
@@ -37,6 +27,16 @@ module Pageflow
|
|
37
27
|
self.unprocessed_attachment = value
|
38
28
|
end
|
39
29
|
|
30
|
+
def thumbnail_url(*args)
|
31
|
+
processed_attachment.url(*args)
|
32
|
+
end
|
33
|
+
|
34
|
+
def url
|
35
|
+
if processed_attachment.present?
|
36
|
+
attachment.url(:large)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
40
|
private
|
41
41
|
|
42
42
|
def save_image_dimensions
|
data/app/models/pageflow/page.rb
CHANGED
@@ -16,33 +16,16 @@ module Pageflow
|
|
16
16
|
configuration['title'].presence || configuration['additional_title']
|
17
17
|
end
|
18
18
|
|
19
|
-
def
|
20
|
-
|
19
|
+
def thumbnail_url(*args)
|
20
|
+
thumbnail_file.thumbnail_url(*args)
|
21
|
+
end
|
21
22
|
|
22
|
-
|
23
|
-
|
24
|
-
rescue ActiveRecord::RecordNotFound
|
25
|
-
ImageFile.new.processed_attachment
|
26
|
-
end
|
23
|
+
def thumbnail_file
|
24
|
+
ThumbnailFileResolver.new(page_type.thumbnail_candidates, configuration).find
|
27
25
|
end
|
28
26
|
|
29
|
-
def
|
30
|
-
|
31
|
-
if template == 'video' || template == 'background_video'
|
32
|
-
if configuration['poster_image_id'].present?
|
33
|
-
['pageflow/image_file', :processed_attachment, 'poster_image_id', 'image_file']
|
34
|
-
else
|
35
|
-
['pageflow/video_file', :poster, 'video_file_id', 'video_file']
|
36
|
-
end
|
37
|
-
else
|
38
|
-
if configuration['thumbnail_image_id'].present?
|
39
|
-
['pageflow/image_file', :processed_attachment, 'thumbnail_image_id', 'image_file']
|
40
|
-
elsif configuration['after_image_id'].present?
|
41
|
-
['pageflow/image_file', :processed_attachment, 'after_image_id','image_file']
|
42
|
-
else
|
43
|
-
['pageflow/image_file', :processed_attachment, 'background_image_id', 'image_file']
|
44
|
-
end
|
45
|
-
end
|
27
|
+
def page_type
|
28
|
+
Pageflow.config.lookup_page_type(template)
|
46
29
|
end
|
47
30
|
|
48
31
|
def configuration
|
@@ -8,6 +8,7 @@ module Pageflow
|
|
8
8
|
delegate(:account, :theming, :to_model, :to_key, :persisted?, :to => :entry)
|
9
9
|
|
10
10
|
delegate(:chapters, :pages,
|
11
|
+
:files,
|
11
12
|
:image_files, :video_files, :audio_files,
|
12
13
|
:title, :summary, :credits, :manual_start,
|
13
14
|
:to => :revision)
|
@@ -26,8 +27,8 @@ module Pageflow
|
|
26
27
|
revision.cache_key
|
27
28
|
end
|
28
29
|
|
29
|
-
def
|
30
|
-
pages.first.try(:
|
30
|
+
def thumbnail_url(*args)
|
31
|
+
pages.first.try(:thumbnail_url, *args) || ImageFile.new.processed_attachment.url(*args)
|
31
32
|
end
|
32
33
|
|
33
34
|
def self.find(id, scope = Entry)
|
@@ -33,6 +33,13 @@ module Pageflow
|
|
33
33
|
validate :published_until_unchanged, :if => :published_until_was_in_past?
|
34
34
|
validate :published_until_blank, :if => :published_at_blank?
|
35
35
|
|
36
|
+
def files(model)
|
37
|
+
model
|
38
|
+
.select("#{model.table_name}.*, pageflow_file_usages.id AS usage_id")
|
39
|
+
.joins(:usages)
|
40
|
+
.where(pageflow_file_usages: {revision_id: id})
|
41
|
+
end
|
42
|
+
|
36
43
|
def creator
|
37
44
|
super || NullUser.new
|
38
45
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Pageflow
|
2
|
+
class ThumbnailFileResolver < Struct.new(:candidates, :configuration)
|
3
|
+
class Null
|
4
|
+
def thumbnail_url(*args)
|
5
|
+
ImageFile.new.processed_attachment.url(*args)
|
6
|
+
end
|
7
|
+
|
8
|
+
def blank?
|
9
|
+
true
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def find
|
14
|
+
candidates.reduce(nil) do |result, candidate|
|
15
|
+
result || file_model(candidate).find_by_id(record_id(candidate))
|
16
|
+
end || Null.new
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def file_model(candidate)
|
22
|
+
file_type(candidate).model
|
23
|
+
end
|
24
|
+
|
25
|
+
def file_type(candidate)
|
26
|
+
Pageflow.config.file_types.find_by_collection_name!(candidate.fetch(:file_collection))
|
27
|
+
end
|
28
|
+
|
29
|
+
def record_id(candidate)
|
30
|
+
configuration[candidate.fetch(:attribute)]
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -1,30 +1,16 @@
|
|
1
1
|
module Pageflow
|
2
2
|
class VideoFile < ActiveRecord::Base
|
3
|
+
include HostedFile
|
3
4
|
include EncodedFileStateMachine
|
4
|
-
include UploadedFile
|
5
5
|
|
6
6
|
belongs_to :confirmed_by, :class_name => 'User'
|
7
7
|
|
8
|
-
has_attached_file(:attachment_on_filesystem, Pageflow.config.paperclip_filesystem_default_options)
|
9
|
-
|
10
|
-
has_attached_file(:attachment_on_s3, Pageflow.config.paperclip_s3_default_options)
|
11
|
-
|
12
8
|
has_attached_file(:poster, Pageflow.config.paperclip_s3_default_options
|
13
9
|
.merge(:default_url => ':pageflow_placeholder',
|
14
|
-
:styles =>
|
15
|
-
:
|
16
|
-
|
17
|
-
|
18
|
-
:thumbnail_overview_desktop => ['230x72#', :JPG],
|
19
|
-
:thumbnail_overview_mobile => ['200x112#', :JPG],
|
20
|
-
|
21
|
-
:link_thumbnail => ['192x108#', :JPG],
|
22
|
-
:link_thumbnail_large => ['394x226#', :JPG],
|
23
|
-
|
24
|
-
:medium => ['1920x1920>', :JPG],
|
25
|
-
:large => ['1024x1024>', :JPG],
|
26
|
-
:print => ['300x300>', :JPG]
|
27
|
-
},
|
10
|
+
:styles => Pageflow.config.thumbnail_styles
|
11
|
+
.merge(:medium => ['1920x1920>', :JPG],
|
12
|
+
:large => ['1024x1024>', :JPG],
|
13
|
+
:print => ['300x300>', :JPG]),
|
28
14
|
:convert_options => {
|
29
15
|
:medium => "-quality 90 -interlace Plane",
|
30
16
|
:large => "-quality 90 -interlace Plane",
|
@@ -34,26 +20,16 @@ module Pageflow
|
|
34
20
|
has_attached_file(:thumbnail, Pageflow.config.paperclip_s3_default_options
|
35
21
|
.merge(:default_url => ':pageflow_placeholder',
|
36
22
|
:default_style => :thumbnail,
|
37
|
-
:styles =>
|
38
|
-
:
|
39
|
-
|
40
|
-
:navigation_thumbnail_large => ['170x95#', :JPG],
|
41
|
-
:thumbnail_overview_desktop => ['230x72#', :JPG],
|
42
|
-
:thumbnail_overview_mobile => ['200x112#', :JPG],
|
43
|
-
:medium => ['1920x1920>', :JPG],
|
44
|
-
:large => ['1024x1024>', :JPG],
|
45
|
-
},
|
23
|
+
:styles => Pageflow.config.thumbnail_styles
|
24
|
+
.merge(:medium => ['1920x1920>', :JPG],
|
25
|
+
:large => ['1024x1024>', :JPG]),
|
46
26
|
:convert_options => {
|
47
27
|
:medium => "-quality 60 -interlace Plane",
|
48
28
|
:large => "-quality 60 -interlace Plane"
|
49
29
|
}))
|
50
30
|
|
51
|
-
def
|
52
|
-
|
53
|
-
end
|
54
|
-
|
55
|
-
def attachment=(value)
|
56
|
-
self.attachment_on_filesystem = value
|
31
|
+
def thumbnail_url(*args)
|
32
|
+
poster.url(*args)
|
57
33
|
end
|
58
34
|
|
59
35
|
def attachment_s3_url
|
@@ -14,7 +14,7 @@ module Pageflow
|
|
14
14
|
def initialize(instance, file_name_pattern, options = {})
|
15
15
|
@instance = instance
|
16
16
|
@file_name_pattern = file_name_pattern
|
17
|
-
@options = options.
|
17
|
+
@options = options.reverse_merge(default_options)
|
18
18
|
|
19
19
|
@styles = {}
|
20
20
|
end
|
@@ -47,7 +47,7 @@ module Pageflow
|
|
47
47
|
private
|
48
48
|
|
49
49
|
def ensure_default_protocol(url, url_options)
|
50
|
-
url =~
|
50
|
+
url =~ %r'^//' ? [url_options[:default_protocol], url].compact.join(':') : url
|
51
51
|
end
|
52
52
|
|
53
53
|
def url_pattern(url_options)
|
@@ -3,11 +3,7 @@ module Pageflow
|
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
|
5
5
|
included do
|
6
|
-
|
7
|
-
extend StateMachineJob::Macro
|
8
|
-
|
9
|
-
state 'not_uploaded_to_s3'
|
10
|
-
state 'uploading_to_s3'
|
6
|
+
processing_state_machine do
|
11
7
|
state 'waiting_for_meta_data'
|
12
8
|
state 'fetching_meta_data'
|
13
9
|
state 'waiting_for_confirmation'
|
@@ -15,17 +11,15 @@ module Pageflow
|
|
15
11
|
state 'encoding'
|
16
12
|
state 'encoded'
|
17
13
|
|
18
|
-
state 'upload_to_s3_failed'
|
19
14
|
state 'fetching_meta_data_failed'
|
20
15
|
state 'encoding_failed'
|
21
16
|
|
22
|
-
event :
|
23
|
-
transition '
|
17
|
+
event :process do
|
18
|
+
transition any => 'waiting_for_meta_data', :if => lambda { Pageflow.config.confirm_encoding_jobs }
|
19
|
+
transition any => 'waiting_for_encoding'
|
24
20
|
end
|
25
21
|
|
26
22
|
event :retry do
|
27
|
-
transition 'upload_to_s3_failed' => 'uploading_to_s3'
|
28
|
-
|
29
23
|
transition 'encoding_failed' => 'waiting_for_confirmation', :if => lambda { Pageflow.config.confirm_encoding_jobs }
|
30
24
|
transition 'encoded' => 'waiting_for_confirmation', :if => lambda { Pageflow.config.confirm_encoding_jobs }
|
31
25
|
|
@@ -33,16 +27,6 @@ module Pageflow
|
|
33
27
|
transition 'encoded' => 'waiting_for_encoding'
|
34
28
|
end
|
35
29
|
|
36
|
-
job UploadFileToS3Job do
|
37
|
-
on_enter 'uploading_to_s3'
|
38
|
-
result :pending, :retry_after => 30.seconds
|
39
|
-
|
40
|
-
result :ok, :state => 'waiting_for_meta_data', :if => lambda { Pageflow.config.confirm_encoding_jobs }
|
41
|
-
result :ok, :state => 'waiting_for_encoding'
|
42
|
-
|
43
|
-
result :error => 'uploading_to_s3_failed'
|
44
|
-
end
|
45
|
-
|
46
30
|
job RequestMetaDataFromZencoderJob do
|
47
31
|
on_enter 'waiting_for_meta_data'
|
48
32
|
result :ok => 'fetching_meta_data'
|
@@ -86,5 +70,9 @@ module Pageflow
|
|
86
70
|
end
|
87
71
|
end
|
88
72
|
end
|
73
|
+
|
74
|
+
def retryable?
|
75
|
+
can_retry? && !encoded?
|
76
|
+
end
|
89
77
|
end
|
90
78
|
end
|