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.

Files changed (145) hide show
  1. checksums.yaml +8 -8
  2. data/app/assets/images/pageflow/audio_loop_pictogram.png +0 -0
  3. data/app/assets/images/pageflow/audio_loop_pictogram_small.png +0 -0
  4. data/app/assets/images/pageflow/ov-internal_links.png +0 -0
  5. data/app/assets/images/pageflow/placeholder_link_thumbnail.jpg +0 -0
  6. data/app/assets/images/pageflow/placeholder_link_thumbnail_large.jpg +0 -0
  7. data/app/assets/images/pageflow/placeholder_thumbnail.jpg +0 -0
  8. data/app/assets/javascripts/pageflow/audio_player.js +5 -0
  9. data/app/assets/javascripts/pageflow/editor/api.js +4 -0
  10. data/app/assets/javascripts/pageflow/editor/api/file_type.js +32 -0
  11. data/app/assets/javascripts/pageflow/editor/api/file_types.js +73 -0
  12. data/app/assets/javascripts/pageflow/editor/base.js +5 -0
  13. data/app/assets/javascripts/pageflow/editor/collections/file_usages_collection.js +13 -1
  14. data/app/assets/javascripts/pageflow/editor/collections/files_collection.js +54 -0
  15. data/app/assets/javascripts/pageflow/editor/controllers/sidebar_controller.js +2 -14
  16. data/app/assets/javascripts/pageflow/editor/initializers/error_listener.js +8 -0
  17. data/app/assets/javascripts/pageflow/editor/initializers/setup_collections.js +5 -3
  18. data/app/assets/javascripts/pageflow/editor/initializers/setup_file_types.js +21 -0
  19. data/app/assets/javascripts/pageflow/editor/models/audio_file.js +1 -15
  20. data/app/assets/javascripts/pageflow/editor/models/encoded_file.js +32 -0
  21. data/app/assets/javascripts/pageflow/editor/models/entry.js +29 -63
  22. data/app/assets/javascripts/pageflow/editor/models/file_stage.js +7 -6
  23. data/app/assets/javascripts/pageflow/editor/models/hosted_file.js +20 -0
  24. data/app/assets/javascripts/pageflow/editor/models/image_file.js +8 -31
  25. data/app/assets/javascripts/pageflow/editor/models/mixins/file_with_type.js +3 -0
  26. data/app/assets/javascripts/pageflow/editor/models/mixins/stage_provider.js +11 -5
  27. data/app/assets/javascripts/pageflow/editor/models/mixins/transient_references.js +5 -0
  28. data/app/assets/javascripts/pageflow/editor/models/other_entry.js +9 -3
  29. data/app/assets/javascripts/pageflow/editor/models/page.js +9 -11
  30. data/app/assets/javascripts/pageflow/editor/models/uploaded_file.js +65 -0
  31. data/app/assets/javascripts/pageflow/editor/models/video_file.js +1 -14
  32. data/app/assets/javascripts/pageflow/editor/routers/sidebar_router.js +2 -9
  33. data/app/assets/javascripts/pageflow/editor/templates/file_item.jst.ejs +1 -1
  34. data/app/assets/javascripts/pageflow/editor/views/configuration_editors/audio.js +4 -0
  35. data/app/assets/javascripts/pageflow/editor/views/configuration_editors/audio_loop.js +23 -0
  36. data/app/assets/javascripts/pageflow/editor/views/configuration_editors/background_image.js +4 -0
  37. data/app/assets/javascripts/pageflow/editor/views/configuration_editors/background_video.js +4 -0
  38. data/app/assets/javascripts/pageflow/editor/views/configuration_editors/internal_links.js +4 -0
  39. data/app/assets/javascripts/pageflow/editor/views/configuration_editors/video.js +4 -0
  40. data/app/assets/javascripts/pageflow/editor/views/embedded/page_link_embedded_view.js +1 -1
  41. data/app/assets/javascripts/pageflow/editor/views/explorer_file_item_view.js +2 -0
  42. data/app/assets/javascripts/pageflow/editor/views/file_item_view.js +8 -1
  43. data/app/assets/javascripts/pageflow/editor/views/file_stage_item_view.js +8 -1
  44. data/app/assets/javascripts/pageflow/editor/views/files_explorer_view.js +11 -43
  45. data/app/assets/javascripts/pageflow/editor/views/files_view.js +11 -21
  46. data/app/assets/javascripts/pageflow/editor/views/input_view.js +1 -1
  47. data/app/assets/javascripts/pageflow/editor/views/inputs/file_input_view.js +6 -0
  48. data/app/assets/javascripts/pageflow/editor/views/inputs/select_input_view.js +5 -0
  49. data/app/assets/javascripts/pageflow/editor/views/mixins/selectable_view.js +7 -5
  50. data/app/assets/javascripts/pageflow/editor/views/uploader_view.js +15 -5
  51. data/app/assets/javascripts/pageflow/page_types/audio.js +1 -1
  52. data/app/assets/javascripts/pageflow/page_types/audio_loop.js +90 -0
  53. data/app/assets/javascripts/pageflow/page_types/video.js +1 -1
  54. data/app/assets/javascripts/pageflow/ready.js +17 -2
  55. data/app/assets/javascripts/pageflow/video_player/player_buffered_patch.js +13 -2
  56. data/app/assets/stylesheets/pageflow/mixins/pageflow.css.scss +9 -0
  57. data/app/assets/stylesheets/pageflow/mixins/shadow.css.scss +12 -1
  58. data/app/assets/stylesheets/pageflow/overview.css.scss +3 -3
  59. data/app/assets/stylesheets/pageflow/page_types.css.scss +2 -0
  60. data/app/assets/stylesheets/pageflow/page_types/audio.css.scss +2 -13
  61. data/app/assets/stylesheets/pageflow/page_types/audio_loop.css.scss +0 -0
  62. data/app/assets/stylesheets/pageflow/page_types/video.css.scss +4 -0
  63. data/app/assets/stylesheets/pageflow/player_controls.css.scss +72 -6
  64. data/app/assets/stylesheets/pageflow/themes/default/navigation.css.scss +3 -0
  65. data/app/assets/stylesheets/pageflow/themes/default/overview.css.scss +3 -0
  66. data/app/controllers/pageflow/editor/files_controller.rb +11 -24
  67. data/app/controllers/pageflow/{video_files_controller.rb → files_controller.rb} +6 -2
  68. data/app/helpers/pageflow/audio_files_helper.rb +40 -0
  69. data/app/helpers/pageflow/file_thumbnails_helper.rb +18 -0
  70. data/app/helpers/pageflow/pages_helper.rb +3 -24
  71. data/app/jobs/pageflow/upload_file_to_s3_job.rb +2 -2
  72. data/app/models/concerns/pageflow/hosted_file.rb +93 -0
  73. data/app/models/pageflow/audio_file.rb +1 -12
  74. data/app/models/pageflow/draft_entry.rb +2 -11
  75. data/app/models/pageflow/image_file.rb +14 -14
  76. data/app/models/pageflow/page.rb +7 -24
  77. data/app/models/pageflow/published_entry.rb +3 -2
  78. data/app/models/pageflow/revision.rb +7 -0
  79. data/app/models/pageflow/thumbnail_file_resolver.rb +33 -0
  80. data/app/models/pageflow/video_file.rb +10 -34
  81. data/app/models/pageflow/zencoder_attachment.rb +2 -2
  82. data/app/state_machines/pageflow/encoded_file_state_machine.rb +8 -20
  83. data/app/state_machines/pageflow/image_file_state_machine.rb +4 -0
  84. data/app/views/pageflow/audio_files/_audio_file.html.erb +1 -0
  85. data/app/views/pageflow/audio_files/_script_tag.html.erb +3 -0
  86. data/app/views/pageflow/config/_editor_seeds.json.jbuilder +1 -0
  87. data/app/views/pageflow/editor/audio_files/_audio_file.json.jbuilder +0 -6
  88. data/app/views/pageflow/editor/files/_file.json.jbuilder +16 -0
  89. data/app/views/pageflow/editor/files/create.json.jbuilder +1 -1
  90. data/app/views/pageflow/editor/files/index.json.jbuilder +4 -1
  91. data/app/views/pageflow/editor/image_files/_image_file.json.jbuilder +1 -8
  92. data/app/views/pageflow/editor/video_files/_video_file.json.jbuilder +0 -8
  93. data/app/views/pageflow/entries/_entry.html.erb +2 -2
  94. data/app/views/pageflow/entries/_multimedia_alert.html.erb +14 -7
  95. data/app/views/pageflow/entries/_social_meta_tags.html.erb +1 -1
  96. data/app/views/pageflow/entries/edit.html.erb +6 -4
  97. data/app/views/pageflow/entries/navigation/_bar_top.html.erb +1 -1
  98. data/app/views/pageflow/entries/navigation/_page.html.erb +2 -2
  99. data/app/views/pageflow/entries/overview/_chapter.html.erb +3 -1
  100. data/app/views/pageflow/entries/overview/_entry.html.erb +2 -1
  101. data/app/views/pageflow/entries/overview/_page.html.erb +1 -1
  102. data/app/views/pageflow/entries/show.css.erb +1 -21
  103. data/app/views/pageflow/entries/show.json.jbuilder +8 -3
  104. data/app/views/pageflow/file_types/_thumbnails.css.erb +7 -0
  105. data/app/views/pageflow/files/show.html.erb +1 -0
  106. data/app/views/pageflow/page_types/_page_type.json.jbuilder +4 -0
  107. data/app/views/pageflow/pages/templates/_audio.html.erb +6 -5
  108. data/app/views/pageflow/pages/templates/_audio_loop.html.erb +34 -0
  109. data/app/views/pageflow/video_files/_video_file.html.erb +1 -0
  110. data/config/initializers/page_type_helpers.rb +2 -2
  111. data/config/initializers/paperclip.rb +32 -0
  112. data/config/initializers/zencoder.rb +3 -3
  113. data/config/locales/activerecord.de.yml +3 -2
  114. data/config/locales/pageflow/audio.de.yml +4 -0
  115. data/config/locales/pageflow/editor/errors.de.yml +6 -0
  116. data/config/routes.rb +4 -10
  117. data/lib/generators/pageflow/initializer/templates/pageflow.rb +2 -1
  118. data/lib/pageflow.rb +5 -3
  119. data/lib/pageflow/ability_mixin.rb +2 -2
  120. data/lib/pageflow/built_in_page_type.rb +40 -7
  121. data/lib/pageflow/configuration.rb +17 -0
  122. data/lib/pageflow/file_type.rb +60 -0
  123. data/lib/pageflow/file_types.rb +25 -0
  124. data/lib/pageflow/page_type.rb +31 -0
  125. data/lib/pageflow/version.rb +1 -1
  126. data/lib/pageflow/zencoder_video_output_definition.rb +3 -3
  127. data/spec/factories/audio_files.rb +2 -2
  128. data/spec/factories/hosted_files.rb +35 -0
  129. data/spec/factories/video_files.rb +2 -2
  130. metadata +37 -18
  131. data/app/assets/images/pageflow/themes/default/logo_navi.png +0 -0
  132. data/app/assets/images/pageflow/themes/default/logo_navi_invert.png +0 -0
  133. data/app/assets/javascripts/pageflow/editor/collections/audio_files_collection.js +0 -7
  134. data/app/assets/javascripts/pageflow/editor/collections/image_files_collection.js +0 -8
  135. data/app/assets/javascripts/pageflow/editor/collections/mixins/files_collection.js +0 -42
  136. data/app/assets/javascripts/pageflow/editor/collections/video_files_collection.js +0 -8
  137. data/app/assets/javascripts/pageflow/editor/models/mixins/encoded_file.js +0 -51
  138. data/app/assets/javascripts/pageflow/editor/models/mixins/file.js +0 -31
  139. data/app/assets/javascripts/pageflow/editor/views/audio_file_item_view.js +0 -14
  140. data/app/assets/javascripts/pageflow/editor/views/image_file_item_view.js +0 -10
  141. data/app/assets/javascripts/pageflow/editor/views/video_file_item_view.js +0 -18
  142. data/app/controllers/pageflow/editor/audio_files_controller.rb +0 -11
  143. data/app/controllers/pageflow/editor/image_files_controller.rb +0 -11
  144. data/app/controllers/pageflow/editor/video_files_controller.rb +0 -11
  145. data/app/views/pageflow/video_files/show.html.erb +0 -1
@@ -90,7 +90,7 @@
90
90
  position: relative;
91
91
  float: left;
92
92
  width: 265px;
93
- height: 395px;
93
+ height: 400px;
94
94
  margin-top: 25px;
95
95
  margin-right: 10px;
96
96
  background-image: image-url('pageflow/chapter_bg.png');
@@ -121,9 +121,9 @@
121
121
  font-weight: bold;
122
122
  margin: 10px 17px;
123
123
  margin-top: 0;
124
- height: 20px;
124
+ height: 44px;
125
125
  font-size: 1.1em;
126
- margin-bottom: 21px;
126
+ overflow: hidden;
127
127
  }
128
128
 
129
129
  .heading-5 {
@@ -1,10 +1,12 @@
1
1
  @import "page_types/audio";
2
+ @import "page_types/audio_loop";
2
3
  @import "page_types/background-image";
3
4
  @import "page_types/background-video";
4
5
  @import "page_types/video";
5
6
  @import "page_types/internal_links";
6
7
 
7
8
  @include pageflow-page-type(audio);
9
+ @include pageflow-page-type(audio_loop);
8
10
  @include pageflow-page-type(background_image);
9
11
  @include pageflow-page-type(background_video);
10
12
  @include pageflow-page-type(video);
@@ -10,19 +10,12 @@
10
10
  .audioPage .vjs-control-bar {
11
11
  position: absolute;
12
12
  left: 50%;
13
- @include transform(translate(-50%, 0));
14
13
  }
15
14
 
16
15
  .audioPage {
17
16
  .vjs-controls.vjs-player {
18
17
  display: none;
19
18
  }
20
- .audio-js-box {
21
- margin-bottom: 3em;
22
- }
23
- audio {
24
- pointer-events: all;
25
- }
26
19
  }
27
20
 
28
21
  .js .audioPage {
@@ -34,12 +27,8 @@
34
27
  }
35
28
  }
36
29
 
37
- .audio-js-box {
38
- margin-bottom: 0;
39
- }
40
-
41
- audio {
42
- visibility: hidden;
30
+ .non_js_audio {
31
+ display: none;
43
32
  }
44
33
 
45
34
  .vjs-slider-handle {
@@ -126,6 +126,10 @@
126
126
 
127
127
  .vjs-control-bar {
128
128
  @include transform(translate3d(-50%, 0, 0));
129
+
130
+ @include phone {
131
+ @include transform(translate3d(0, 0, 0));
132
+ }
129
133
  }
130
134
  .vjs-tech {
131
135
  height: 100%;
@@ -6,12 +6,20 @@
6
6
  font-size: 0.8em;
7
7
  color: white;
8
8
 
9
+ @include phone {
10
+ font-size: 1.2em;
11
+ }
12
+
9
13
  h3,
10
14
  p {
11
15
  margin: 15px 3%;
12
16
  width: 94%;
13
17
  }
14
18
 
19
+ a {
20
+ color: white;
21
+ }
22
+
15
23
  &.empty {
16
24
  display: none;
17
25
  }
@@ -39,10 +47,13 @@
39
47
  .controls {
40
48
  position: absolute;
41
49
  bottom: 10%;
42
- left: 0;
43
- width: 100%;
50
+ left: 50%;
44
51
  z-index: 2;
45
52
 
53
+ @include phone {
54
+ left: 5%;
55
+ }
56
+
46
57
  .control_bar_text {
47
58
  position: absolute;
48
59
  left: 80px;
@@ -66,7 +77,10 @@
66
77
  @include transform(translate3d(-50%, 0,0));
67
78
  z-index: 2;
68
79
  font-size: 0.8em;
69
- max-width: 90%;
80
+
81
+ @include phone {
82
+ font-size: 1.2em;
83
+ }
70
84
  }
71
85
 
72
86
  .vjs-control-bar {
@@ -242,11 +256,12 @@
242
256
  height: 60px;
243
257
  border: none;
244
258
  background: none;
245
- width: 90%;
246
- left: 50%;
259
+ width: 60px;
260
+ left: 0;
247
261
  margin-left: -4px;
248
262
  max-width: 435px;
249
263
  pointer-events: none;
264
+ @include transform(translate3d(0,0,0));
250
265
  }
251
266
 
252
267
  .add_info_box {
@@ -256,10 +271,15 @@
256
271
  padding-left: 0;
257
272
  max-width: 435px;
258
273
  min-height: 60px;
259
- width: 90%;
274
+ width: 100%;
275
+ min-width: 260px;
260
276
 
261
277
  &.empty {
262
278
  display: block;
279
+ width: 60px;
280
+ @include transform(translate3d(0,0,0));
281
+ left: 0;
282
+ min-width: 0;
263
283
 
264
284
  &:before {
265
285
  display: none;
@@ -294,4 +314,50 @@
294
314
  bottom: 50px;
295
315
  }
296
316
  }
317
+
318
+ /* Controlbar used to toggle embedded media views */
319
+
320
+ .controls {
321
+ pointer-events: none;
322
+
323
+ a, .vjs-control-bar {
324
+ pointer-events: all;
325
+ }
326
+
327
+ @include phone {
328
+ max-width: 90%;
329
+
330
+ .hint {
331
+ display: block;
332
+ }
333
+
334
+ }
335
+
336
+
337
+ }
338
+
339
+ .vjs-control-bar.view-control {
340
+ .control_bar_text {
341
+ top: 20px;
342
+ }
343
+
344
+ @include phone {
345
+ display: block;
346
+ top: 50%;
347
+ margin-top: -31px;
348
+ bottom: auto;
349
+ height: 60px;
350
+ width: 60px;
351
+ left: 0;
352
+ margin-left: -3px;
353
+ max-width: 435px;
354
+ pointer-events: all;
355
+ @include transform(translate3d(0, 0, 0));
356
+
357
+
358
+ .control_bar_text {
359
+ display: none;
360
+ }
361
+ }
362
+ }
297
363
  }
@@ -192,6 +192,9 @@ $nav-bg-color-transparent: $basic-background-color-transparent;
192
192
  .internal_links:after {
193
193
  background-image: image-url('pageflow/themes/#{$theme-name}/internal_links_sprite.png');
194
194
  }
195
+ .audio_loop:after {
196
+ background-image: image-url('pageflow/themes/#{$theme-name}/image_sprite.png');
197
+ }
195
198
  }
196
199
 
197
200
  .navigation.js .scroller ul a.active img, .navigation_mobile .wrapper a.active {
@@ -104,6 +104,9 @@ $overview-header-font: $standard-font;
104
104
  &.audio .pictogram {
105
105
  background-image: image-url('pageflow/ov-audio.png');
106
106
  }
107
+ &.audio_loop .pictogram {
108
+ background-image: image-url('pageflow/ov-image.png');
109
+ }
107
110
  }
108
111
 
109
112
  .content .ov_chapter .ov_page.active {
@@ -9,9 +9,7 @@ module Pageflow
9
9
  entry = DraftEntry.find(params[:entry_id])
10
10
 
11
11
  authorize!(:use_files, entry.to_model)
12
- @files = entry.send(collection_name).with_usage_id
13
- @model_name = model_name
14
- @collection_name = collection_name.to_s
12
+ @files = entry.files(file_type.model)
15
13
 
16
14
  respond_with(:editor, @files)
17
15
  end
@@ -21,27 +19,24 @@ module Pageflow
21
19
  authorize!(:edit, entry.to_model)
22
20
  verify_edit_lock!(entry)
23
21
 
24
- @file = entry.create_file(model, file_params)
22
+ @file = entry.create_file(file_type.model, file_params)
25
23
  @file.publish!
26
24
 
27
- @model_name = model_name
28
- @collection_name = collection_name.to_s
29
-
30
25
  respond_with(:editor, @file)
31
26
  end
32
27
 
33
28
  def retry
34
- file = model.find(params[:id])
29
+ file = file_type.model.find(params[:id])
35
30
 
36
31
  authorize!(:retry, file)
37
32
  verify_edit_lock!(file.entry)
38
33
  file.retry!
39
34
 
40
- respond_with(:editor, file)
35
+ respond_with(:editor, file, location: editor_file_url(file, collection_name: params[:collection_name]))
41
36
  end
42
37
 
43
38
  def update
44
- file = model.find(params[:id])
39
+ file = file_type.model.find(params[:id])
45
40
 
46
41
  authorize!(:update, file)
47
42
  verify_edit_lock!(file.entry)
@@ -50,30 +45,22 @@ module Pageflow
50
45
  head(:no_content)
51
46
  end
52
47
 
53
- protected
54
-
55
- def model
56
- raise NotImplementedError
57
- end
58
-
59
48
  private
60
49
 
61
- def collection_name
62
- model.name.underscore.split('/').last.pluralize.to_sym
50
+ def file_type
51
+ @file_type ||= Pageflow.config.file_types.find_by_collection_name!(params[:collection_name])
63
52
  end
64
53
 
65
- def model_name
66
- model.name.underscore.split('/').last.to_sym
67
- end
54
+ helper_method :file_type
68
55
 
69
56
  def file_params
70
- params.require(model_name)
57
+ params.require(file_type.param_key)
71
58
  .permit(:attachment => [:tmp_path, :original_name, :content_type])
72
- .merge(params.require(model_name).permit(:attachment))
59
+ .merge(params.require(file_type.param_key).permit(:attachment))
73
60
  end
74
61
 
75
62
  def update_params
76
- params.require(model_name).permit(:rights)
63
+ params.require(file_type.param_key).permit(:rights)
77
64
  end
78
65
  end
79
66
  end
@@ -1,18 +1,22 @@
1
1
  module Pageflow
2
- class VideoFilesController < Pageflow::ApplicationController
2
+ class FilesController < Pageflow::ApplicationController
3
3
  before_filter :prevent_ssl
4
4
 
5
5
  def show
6
6
  respond_to do |format|
7
7
  format.html do
8
8
  entry = PublishedEntry.find(params[:entry_id], entry_request_scope)
9
- @video_file = entry.video_files.find(params[:id])
9
+ @file = entry.files(file_type.model).find(params[:id])
10
10
  end
11
11
  end
12
12
  end
13
13
 
14
14
  protected
15
15
 
16
+ def file_type
17
+ @file_type ||= Pageflow.config.file_types.find_by_collection_name!(params[:collection_name])
18
+ end
19
+
16
20
  def entry_request_scope
17
21
  Pageflow.config.public_entry_request_scope.call(Entry, request)
18
22
  end
@@ -0,0 +1,40 @@
1
+ module Pageflow
2
+ module AudioFilesHelper
3
+ def audio_file_audio_tag(audio_file_id, options = {})
4
+ options.merge!(class: ['audio-js', options.delete(:class)].compact * ' ',
5
+ controls: true,
6
+ preload: 'none')
7
+ url_options = {unique_id: options.delete(:unique_id)}
8
+
9
+ if (audio_file = AudioFile.find_by_id(audio_file_id))
10
+ content_tag(:audio, options) do
11
+ audio_file_sources(audio_file, url_options).each do |source|
12
+ concat(tag(:source, source.slice(:src, :type)))
13
+ end
14
+ end
15
+ end
16
+ end
17
+
18
+ def audio_file_script_tag(audio_file_id, options = {})
19
+ if (audio_file = AudioFile.find_by_id(audio_file_id))
20
+ render('pageflow/audio_files/script_tag',
21
+ audio_file: audio_file,
22
+ audio_file_sources: audio_file_sources(audio_file, options))
23
+ end
24
+ end
25
+
26
+ def audio_file_non_js_link(audio_file_id)
27
+ if (audio_file = AudioFile.find_by_id(audio_file_id))
28
+ link_to(t('pageflow.audio.open'), short_audio_file_path(audio_file.entry, audio_file))
29
+ end
30
+ end
31
+
32
+ def audio_file_sources(audio_file, options = {})
33
+ [
34
+ {type: 'audio/ogg', src: audio_file.ogg.url(options)},
35
+ {type: 'audio/mp4', src: audio_file.m4a.url(options)},
36
+ {type: 'audio/mpeg', src: audio_file.mp3.url(options)}
37
+ ]
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,18 @@
1
+ module Pageflow
2
+ module FileThumbnailsHelper
3
+ def file_thumbnails_css(revision)
4
+ render(partial: 'pageflow/file_types/thumbnails',
5
+ collection: Pageflow.config.file_types.with_thumbnail_support,
6
+ as: :file_type,
7
+ locals: {
8
+ revision: revision,
9
+ styles: Pageflow.config.css_rendered_thumbnail_styles
10
+ })
11
+ end
12
+
13
+ def file_thumbnail_css_class(file, style)
14
+ return if file.blank?
15
+ [file.class.model_name.singular, style, file.id] * '_'
16
+ end
17
+ end
18
+ end
@@ -86,27 +86,6 @@ module Pageflow
86
86
  }]
87
87
  end
88
88
 
89
- def audio_tag(audio_id, options = {})
90
- defaults = {:class => ['audio-js', options.delete(:class)].compact * ' ',
91
- :controls => true, :preload => 'none'}
92
- options.merge! defaults
93
- url_options = {:unique_id => options.delete(:unique_id)}
94
-
95
- if (audio = AudioFile.find_by_id(audio_id))
96
- content_tag :audio, options do
97
- audio_file_sources(audio, url_options).map do |v|
98
- concat tag(:source, :src => v[:src], :type => v[:type])
99
- end
100
- end
101
- end
102
- end
103
-
104
- def audio_file_sources(audio_file, options = {})
105
- [{:type => 'audio/ogg', :src => audio_file.ogg.url(options)},
106
- {:type => 'audio/mp4', :src => audio_file.m4a.url(options)},
107
- {:type => 'audio/mpeg', :src => audio_file.mp3.url(options)}]
108
- end
109
-
110
89
  def page_media_breakpoints
111
90
  {
112
91
  :large => :default,
@@ -140,9 +119,9 @@ module Pageflow
140
119
  end
141
120
 
142
121
  def page_thumbnail_image_class(page, hero)
143
- model, attachment, property, model_class = page.thumbnail_definition
144
- size = hero ? 'large_' : ''
145
- "#{model_class}_link_thumbnail_#{size}#{page.configuration[property]}"
122
+ file_thumbnail_css_class(page.thumbnail_file, hero ? :link_thumbnail : :link_thumbnail_large)
146
123
  end
124
+
125
+ CSS_RENDERED_THUMBNAIL_STYLES = [:link_thumbnail, :link_thumbnail_large]
147
126
  end
148
127
  end
@@ -4,13 +4,13 @@ module Pageflow
4
4
 
5
5
  extend StateMachineJob
6
6
 
7
- def self.perform_with_result(file, options)
7
+ def self.perform_with_result(file, options = {})
8
8
  if file && file.attachment_on_filesystem.file?
9
9
  if File.exists?(file.attachment_on_filesystem.path)
10
10
  file.attachment_on_s3 = file.attachment_on_filesystem
11
11
  file.save!
12
12
 
13
- file.attachment_on_filesystem.destroy
13
+ file.attachment_on_filesystem.destroy unless file.keep_on_filesystem_after_upload_to_s3?
14
14
  :ok
15
15
  else
16
16
  logger.info "#{file.class.name} #{file.id} not yet transfered to instance."