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
@@ -37,47 +37,31 @@ pageflow.FilesExplorerView = Backbone.Marionette.ItemView.extend({
|
|
37
37
|
selection: this.selection
|
38
38
|
}));
|
39
39
|
|
40
|
-
|
41
40
|
this.tabsView = new pageflow.TabsView({
|
42
41
|
model: this.model,
|
43
42
|
i18n: 'editor.files.tabs',
|
44
43
|
defaultTab: this.options.tabName
|
45
44
|
});
|
46
45
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
});
|
51
|
-
|
52
|
-
this.tab('video_files', {
|
53
|
-
collectionName: 'videoFiles',
|
54
|
-
itemView: pageflow.ExplorerFileItemView
|
55
|
-
});
|
56
|
-
|
57
|
-
this.tab('audio_files', {
|
58
|
-
collectionName: 'audioFiles',
|
59
|
-
itemView: pageflow.ExplorerFileItemView
|
60
|
-
});
|
46
|
+
pageflow.editor.fileTypes.each(function(fileType) {
|
47
|
+
this.tab(fileType);
|
48
|
+
}, this);
|
61
49
|
|
62
50
|
this.ui.filesPanel.append(this.subview(this.tabsView).el);
|
63
51
|
|
64
52
|
this.ui.okButton.prop('disabled', true);
|
65
53
|
},
|
66
54
|
|
67
|
-
tab: function(
|
68
|
-
this.tabsView.tab(
|
69
|
-
var collection = this._collection(
|
70
|
-
disabledIds =
|
71
|
-
|
72
|
-
if (collection.name) { // collection.name indicates *FilesCollection
|
73
|
-
disabledIds = pageflow.entry.getFileCollection(collection.fileType()).pluck('id');
|
74
|
-
}
|
55
|
+
tab: function(fileType) {
|
56
|
+
this.tabsView.tab(fileType.collectionName, _.bind(function() {
|
57
|
+
var collection = this._collection(fileType);
|
58
|
+
var disabledIds = pageflow.entry.getFileCollection(fileType).pluck('id');
|
75
59
|
|
76
60
|
return new pageflow.CollectionView({
|
77
61
|
tagName: 'ul',
|
78
62
|
className: 'files_gallery',
|
79
63
|
collection: collection,
|
80
|
-
itemViewConstructor:
|
64
|
+
itemViewConstructor: pageflow.ExplorerFileItemView,
|
81
65
|
itemViewOptions: {
|
82
66
|
selection: this.selection,
|
83
67
|
disabledIds: disabledIds
|
@@ -87,12 +71,12 @@ pageflow.FilesExplorerView = Backbone.Marionette.ItemView.extend({
|
|
87
71
|
}, this));
|
88
72
|
},
|
89
73
|
|
90
|
-
_collection: function(
|
74
|
+
_collection: function(fileType) {
|
91
75
|
var collection,
|
92
76
|
entry = this.selection.get('entry');
|
93
77
|
|
94
78
|
if (entry) {
|
95
|
-
collection = entry
|
79
|
+
collection = entry.getFileCollection(fileType);
|
96
80
|
collection.fetch();
|
97
81
|
} else {
|
98
82
|
collection = new Backbone.Collection();
|
@@ -107,23 +91,7 @@ pageflow.FilesExplorerView = Backbone.Marionette.ItemView.extend({
|
|
107
91
|
},
|
108
92
|
|
109
93
|
_selectedFile: function() {
|
110
|
-
|
111
|
-
file;
|
112
|
-
|
113
|
-
if ((file = sel.get('image_file'))) {
|
114
|
-
file.set('typeName', 'Pageflow::ImageFile');
|
115
|
-
return file;
|
116
|
-
}
|
117
|
-
|
118
|
-
if ((file = sel.get('audio_file'))) {
|
119
|
-
file.set('typeName', 'Pageflow::AudioFile');
|
120
|
-
return file;
|
121
|
-
}
|
122
|
-
|
123
|
-
if ((file = sel.get('video_file'))) {
|
124
|
-
file.set('typeName', 'Pageflow::VideoFile');
|
125
|
-
return file;
|
126
|
-
}
|
94
|
+
return this.selection.get('file');
|
127
95
|
}
|
128
96
|
});
|
129
97
|
|
@@ -35,33 +35,23 @@ pageflow.FilesView = Backbone.Marionette.ItemView.extend({
|
|
35
35
|
defaultTab: this.options.tabName
|
36
36
|
});
|
37
37
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
});
|
42
|
-
|
43
|
-
this.tab('video_files', {
|
44
|
-
collection: this.model.videoFiles,
|
45
|
-
itemView: pageflow.VideoFileItemView
|
46
|
-
});
|
47
|
-
|
48
|
-
this.tab('audio_files', {
|
49
|
-
collection: this.model.audioFiles,
|
50
|
-
itemView: pageflow.AudioFileItemView
|
51
|
-
});
|
38
|
+
pageflow.editor.fileTypes.each(function(fileType) {
|
39
|
+
this.tab(fileType);
|
40
|
+
}, this);
|
52
41
|
|
53
42
|
this.$el.append(this.subview(this.tabsView).el);
|
54
43
|
},
|
55
44
|
|
56
|
-
tab: function(
|
57
|
-
this.tabsView.tab(
|
45
|
+
tab: function(fileType) {
|
46
|
+
this.tabsView.tab(fileType.collectionName, _.bind(function() {
|
58
47
|
return this.subview(new pageflow.CollectionView({
|
59
48
|
tagName: 'ul',
|
60
49
|
className: 'files expandable',
|
61
|
-
collection:
|
62
|
-
itemViewConstructor:
|
50
|
+
collection: pageflow.entry.getFileCollection(fileType),
|
51
|
+
itemViewConstructor: pageflow.FileItemView,
|
63
52
|
itemViewOptions: {
|
64
|
-
|
53
|
+
metaDataAttributes: fileType.metaDataAttributes,
|
54
|
+
selectionHandler: this.options.tabName === fileType.collectionName && this.options.selectionHandler
|
65
55
|
},
|
66
56
|
blankSlateViewConstructor: Backbone.Marionette.ItemView.extend({
|
67
57
|
template: 'templates/files_blank_slate'
|
@@ -69,8 +59,8 @@ pageflow.FilesView = Backbone.Marionette.ItemView.extend({
|
|
69
59
|
}));
|
70
60
|
}, this));
|
71
61
|
|
72
|
-
this.listenTo(this.model, 'change:uploading_' +
|
73
|
-
this.tabsView.toggleSpinnerOnTab(
|
62
|
+
this.listenTo(this.model, 'change:uploading_' + fileType.collectionName +'_count', function(model, value) {
|
63
|
+
this.tabsView.toggleSpinnerOnTab(fileType.collectionName, value > 0);
|
74
64
|
});
|
75
65
|
},
|
76
66
|
|
@@ -45,6 +45,12 @@ pageflow.FileInputView = Backbone.Marionette.ItemView.extend({
|
|
45
45
|
this.options = _.extend({
|
46
46
|
imagePositioning: true
|
47
47
|
}, this.options);
|
48
|
+
|
49
|
+
if (typeof this.options.collection === 'string') {
|
50
|
+
this.options.collection = pageflow.entry.getFileCollection(
|
51
|
+
pageflow.editor.fileTypes.findByCollectionName(this.options.collection)
|
52
|
+
);
|
53
|
+
}
|
48
54
|
},
|
49
55
|
|
50
56
|
onRender: function() {
|
@@ -47,6 +47,11 @@ pageflow.SelectInputView = Backbone.Marionette.ItemView.extend({
|
|
47
47
|
}, this);
|
48
48
|
|
49
49
|
this.load();
|
50
|
+
|
51
|
+
if (this.options.ensureValueDefined && !this.ui.select.val()) {
|
52
|
+
this.ui.select.val(this.options.values[0]);
|
53
|
+
this.save();
|
54
|
+
}
|
50
55
|
},
|
51
56
|
|
52
57
|
save: function() {
|
@@ -1,19 +1,21 @@
|
|
1
1
|
pageflow.selectableView = {
|
2
2
|
initialize: function() {
|
3
|
-
this.
|
3
|
+
this.selectionAttribute = this.selectionAttribute || this.model.modelName;
|
4
|
+
|
5
|
+
this.listenTo(this.options.selection, 'change:' + this.selectionAttribute, function(selection, selectedModel) {
|
4
6
|
this.$el.toggleClass('active', selectedModel === this.model);
|
5
7
|
});
|
6
8
|
|
7
|
-
this.$el.toggleClass('active', this.options.selection.get(this.
|
9
|
+
this.$el.toggleClass('active', this.options.selection.get(this.selectionAttribute) === this.model);
|
8
10
|
},
|
9
11
|
|
10
12
|
select: function() {
|
11
|
-
this.options.selection.set(this.
|
13
|
+
this.options.selection.set(this.selectionAttribute, this.model);
|
12
14
|
},
|
13
15
|
|
14
16
|
onClose: function() {
|
15
|
-
if (this.options.selection.get(this.
|
16
|
-
this.options.selection.set(this.
|
17
|
+
if (this.options.selection.get(this.selectionAttribute) === this.model) {
|
18
|
+
this.options.selection.set(this.selectionAttribute, null);
|
17
19
|
}
|
18
20
|
}
|
19
21
|
};
|
@@ -20,12 +20,22 @@ pageflow.UploaderView = Backbone.Marionette.View.extend({
|
|
20
20
|
dataType: 'json',
|
21
21
|
|
22
22
|
add: function(event, data) {
|
23
|
-
|
24
|
-
|
23
|
+
try {
|
24
|
+
data.record = pageflow.entry.addFileUpload(data.files[0]);
|
25
|
+
var xhr = data.submit();
|
25
26
|
|
26
|
-
|
27
|
-
|
28
|
-
|
27
|
+
that.listenTo(data.record, 'uploadCancelled', function() {
|
28
|
+
xhr.abort();
|
29
|
+
});
|
30
|
+
}
|
31
|
+
catch(e) {
|
32
|
+
if (e instanceof pageflow.FileTypes.UnmatchedUploadError) {
|
33
|
+
pageflow.app.trigger('error', e);
|
34
|
+
}
|
35
|
+
else {
|
36
|
+
throw(e);
|
37
|
+
}
|
38
|
+
}
|
29
39
|
},
|
30
40
|
|
31
41
|
progress: function(event, data) {
|
@@ -99,7 +99,7 @@ pageflow.pageType.register('audio', _.extend({
|
|
99
99
|
},
|
100
100
|
|
101
101
|
_ensureAudioPlayer: function(pageElement) {
|
102
|
-
this.audioPlayer = this.audioPlayer || pageflow.AudioPlayer.
|
102
|
+
this.audioPlayer = this.audioPlayer || pageflow.AudioPlayer.fromScriptTag(pageElement.find('script[data-audio]'));
|
103
103
|
|
104
104
|
pageElement.find('.vjs-controls').playerControls({
|
105
105
|
player: this.audioPlayer
|
@@ -0,0 +1,90 @@
|
|
1
|
+
pageflow.pageType.register('audio_loop', _.extend({
|
2
|
+
enhance: function(pageElement, configuration) {
|
3
|
+
pageElement.find('.contentText').before(pageElement.find('.page_header'));
|
4
|
+
pageElement.find('audio').hide();
|
5
|
+
},
|
6
|
+
|
7
|
+
prepare: function(pageElement, configuration) {
|
8
|
+
},
|
9
|
+
|
10
|
+
preload: function(pageElement, configuration) {
|
11
|
+
return pageflow.preload.backgroundImage(pageElement.find('.background_image'));
|
12
|
+
},
|
13
|
+
|
14
|
+
activating: function(pageElement, configuration) {
|
15
|
+
// for SkipLinks
|
16
|
+
$('#firstContent').attr("id","");
|
17
|
+
var firstContentElement = pageElement.find('*[tabindex], a');
|
18
|
+
|
19
|
+
$(firstContentElement[0]).attr('id','firstContent');
|
20
|
+
//
|
21
|
+
|
22
|
+
this._ensureAudioPlayer(pageElement);
|
23
|
+
|
24
|
+
var that = this;
|
25
|
+
|
26
|
+
this.audioPlayer.readyPromise.then(function() {
|
27
|
+
that.audioPlayer.volume(pageflow.settings.get('volume'));
|
28
|
+
that.listenTo(pageflow.settings, "change:volume", function(model, value) {
|
29
|
+
that.fadeSound(that.audioPlayer, value, 40);
|
30
|
+
});
|
31
|
+
});
|
32
|
+
},
|
33
|
+
|
34
|
+
activated: function(pageElement, configuration) {
|
35
|
+
var that = this;
|
36
|
+
this.fadeInTimeout = setTimeout(function() {
|
37
|
+
that.audioPlayer.readyPromise.then(function() {
|
38
|
+
that.audioPlayer.volume(0);
|
39
|
+
that.audioPlayer.play();
|
40
|
+
that.fadeSound(that.audioPlayer, pageflow.settings.get('volume'), 1000);
|
41
|
+
});
|
42
|
+
}, 1000);
|
43
|
+
},
|
44
|
+
|
45
|
+
deactivating: function(pageElement, configuration) {
|
46
|
+
clearTimeout(this.fadeInTimeout);
|
47
|
+
this.fadeSound(this.audioPlayer, 0, 400);
|
48
|
+
this.stopListening();
|
49
|
+
$('body').off('keyup');
|
50
|
+
},
|
51
|
+
|
52
|
+
deactivated: function(pageElement, configuration) {
|
53
|
+
this.audioPlayer.pause();
|
54
|
+
},
|
55
|
+
|
56
|
+
update: function(pageElement, configuration) {
|
57
|
+
pageElement.find('h2 .tagline').text(configuration.get('tagline') || '');
|
58
|
+
pageElement.find('h2 .title').text(configuration.get('title') || '');
|
59
|
+
pageElement.find('h2 .subtitle').text(configuration.get('subtitle') || '');
|
60
|
+
pageElement.find('p').html(configuration.get('text') || '');
|
61
|
+
|
62
|
+
this.updateInfoBox(pageElement, configuration);
|
63
|
+
this.updateCommonPageCssClasses(pageElement, configuration);
|
64
|
+
|
65
|
+
pageElement.find('.shadow').css({
|
66
|
+
opacity: configuration.get('gradient_opacity') / 100
|
67
|
+
});
|
68
|
+
|
69
|
+
this._ensureAudioPlayer(pageElement);
|
70
|
+
this.audioPlayer.src(configuration.getAudioFileSources('audio_file_id'));
|
71
|
+
},
|
72
|
+
|
73
|
+
|
74
|
+
embeddedEditorViews: function() {
|
75
|
+
return {
|
76
|
+
'.background_image': {
|
77
|
+
view: pageflow.BackgroundImageEmbeddedView,
|
78
|
+
options: {propertyName: 'background_image_id'}
|
79
|
+
}
|
80
|
+
};
|
81
|
+
},
|
82
|
+
|
83
|
+
_ensureAudioPlayer: function(pageElement) {
|
84
|
+
this.audioPlayer = this.audioPlayer || pageflow.AudioPlayer.fromScriptTag(pageElement.find('script[data-audio]'));
|
85
|
+
|
86
|
+
pageElement.find('.vjs-controls').playerControls({
|
87
|
+
player: this.audioPlayer
|
88
|
+
});
|
89
|
+
}
|
90
|
+
}, pageflow.volumeFade, pageflow.infoBox, pageflow.commonPageCssClasses));
|
@@ -163,7 +163,7 @@ pageflow.pageType.register('video', _.extend({
|
|
163
163
|
// alternate poster image handling
|
164
164
|
$("<div class='vjs-poster-mobile' style='" +
|
165
165
|
poster.attr('style') +
|
166
|
-
"display:block; background-size:
|
166
|
+
"display:block; background-size: cover;'></div>").appendTo(pageElement.find(".videoWrapper"));
|
167
167
|
poster.removeClass('vjs-poster').addClass('vjs-poster-mobile');
|
168
168
|
|
169
169
|
// listening for exit fullscreen to force pausing
|
@@ -1,5 +1,5 @@
|
|
1
1
|
pageflow.ready = new $.Deferred(function(readyDeferred) {
|
2
|
-
|
2
|
+
onLoadWithTimeout(function() {
|
3
3
|
pageflow.features.detect().then(function() {
|
4
4
|
$('body').one('pagepreloaded', function() {
|
5
5
|
readyDeferred.resolve();
|
@@ -44,5 +44,20 @@ pageflow.ready = new $.Deferred(function(readyDeferred) {
|
|
44
44
|
return false; }
|
45
45
|
);
|
46
46
|
});
|
47
|
-
};
|
47
|
+
});
|
48
|
+
|
49
|
+
function onLoadWithTimeout(callback) {
|
50
|
+
var invoked = false;
|
51
|
+
var invokeOnce = function() {
|
52
|
+
clearTimeout(timeout);
|
53
|
+
|
54
|
+
if (!invoked) {
|
55
|
+
callback();
|
56
|
+
invoked = true;
|
57
|
+
}
|
58
|
+
};
|
59
|
+
|
60
|
+
var timeout = setTimeout(invokeOnce, 10000);
|
61
|
+
window.onload = invokeOnce;
|
62
|
+
}
|
48
63
|
}).promise();
|
@@ -8,8 +8,8 @@ vjs.Player.prototype.buffered = function(){
|
|
8
8
|
|
9
9
|
if (buffered && buffered.length > 0) {
|
10
10
|
for (var i = 0; i < buffered.length; i++) {
|
11
|
-
if (buffered
|
12
|
-
max = buffered
|
11
|
+
if (getEnd(buffered, i) > max) {
|
12
|
+
max = getEnd(buffered, i);
|
13
13
|
}
|
14
14
|
}
|
15
15
|
|
@@ -21,6 +21,17 @@ vjs.Player.prototype.buffered = function(){
|
|
21
21
|
}
|
22
22
|
|
23
23
|
return vjs.createTimeRange(start, end);
|
24
|
+
|
25
|
+
function getEnd(buffered, i) {
|
26
|
+
// Firefox 32 sometimes reports negative values as start and
|
27
|
+
// end. If both are negative, treat difference as end time stamp.
|
28
|
+
if (buffered.start(i) < 0 && buffered.end(i) < 0) {
|
29
|
+
return buffered.end(i) - buffered.start(i);
|
30
|
+
}
|
31
|
+
else {
|
32
|
+
return buffered.end(i);
|
33
|
+
}
|
34
|
+
}
|
24
35
|
};
|
25
36
|
|
26
37
|
// If end is after duration return buffered percent 0
|
@@ -2,4 +2,13 @@
|
|
2
2
|
.#{$name} .type_pictogram {
|
3
3
|
background-image: image-url("pageflow/#{$name}_pictogram_small.png");
|
4
4
|
}
|
5
|
+
}
|
6
|
+
|
7
|
+
@mixin pageflow-hosted-file-stage($stage-name) {
|
8
|
+
.editor {
|
9
|
+
.file_thumbnail .pictogram.#{$stage-name},
|
10
|
+
.file_stage_item.#{$stage-name} {
|
11
|
+
@content;
|
12
|
+
}
|
13
|
+
}
|
5
14
|
}
|
@@ -31,7 +31,7 @@
|
|
31
31
|
background: linear-gradient(to right, rgba($color,0) 0%,rgba($color,1) 100%); /* W3C */
|
32
32
|
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#{ie_hex_str(rgba($color, 0))}', endColorstr='#{ie_hex_str(rgba($color, 1))}',GradientType=1 ); /* IE6-9 */
|
33
33
|
|
34
|
-
@include
|
34
|
+
@include pad_portrait {
|
35
35
|
/* IE9 SVG, needs conditional override of 'filter' to 'none' */
|
36
36
|
background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIxMDAlIiB5Mj0iMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwMDAwMCIgc3RvcC1vcGFjaXR5PSIwLjgiLz4KICAgIDxzdG9wIG9mZnNldD0iNjYlIiBzdG9wLWNvbG9yPSIjMDAwMDAwIiBzdG9wLW9wYWNpdHk9IjAuNCIvPgogICAgPHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjMDAwMDAwIiBzdG9wLW9wYWNpdHk9IjAiLz4KICA8L2xpbmVhckdyYWRpZW50PgogIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGZpbGw9InVybCgjZ3JhZC11Y2dnLWdlbmVyYXRlZCkiIC8+Cjwvc3ZnPg==);
|
37
37
|
background: -moz-linear-gradient(left, rgba($color,0) 0%, rgba($color,0.4) 33%, rgba($color,0.8) 100%); /* FF3.6+ */
|
@@ -42,4 +42,15 @@
|
|
42
42
|
background: linear-gradient(to right, rgba($color,0) 0%,rgba($color,0.4) 33%,rgba($color,0.8) 100%); /* W3C */
|
43
43
|
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#{ie_hex_str(rgba($color, 0))}', endColorstr='#{ie_hex_str(rgba($color, 1))}',GradientType=1 ); /* IE6-8 */
|
44
44
|
}
|
45
|
+
@include phone {
|
46
|
+
/* IE9 SVG, needs conditional override of 'filter' to 'none' */
|
47
|
+
background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIxMDAlIiB5Mj0iMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwMDAwMCIgc3RvcC1vcGFjaXR5PSIwLjgiLz4KICAgIDxzdG9wIG9mZnNldD0iNjYlIiBzdG9wLWNvbG9yPSIjMDAwMDAwIiBzdG9wLW9wYWNpdHk9IjAuNCIvPgogICAgPHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjMDAwMDAwIiBzdG9wLW9wYWNpdHk9IjAiLz4KICA8L2xpbmVhckdyYWRpZW50PgogIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGZpbGw9InVybCgjZ3JhZC11Y2dnLWdlbmVyYXRlZCkiIC8+Cjwvc3ZnPg==);
|
48
|
+
background: -moz-linear-gradient(left, rgba($color,0.8) 0%, rgba($color,0.4) 66%, rgba($color,0) 100%); /* FF3.6+ */
|
49
|
+
background: -webkit-gradient(linear, left top, right top, color-stop(0%,rgba($color,0.8)), color-stop(66%,rgba($color,0.4)), color-stop(100%,rgba($color,0))); /* Chrome,Safari4+ */
|
50
|
+
background: -webkit-linear-gradient(left, rgba($color,0.8) 0%,rgba($color,0.4) 66%,rgba($color,0) 100%); /* Chrome10+,Safari5.1+ */
|
51
|
+
background: -o-linear-gradient(left, rgba($color,0.8) 0%,rgba($color,0.4) 66%,rgba($color,0) 100%); /* Opera 11.10+ */
|
52
|
+
background: -ms-linear-gradient(left, rgba($color,0.8) 0%,rgba($color,0.4) 66%,rgba($color,0) 100%); /* IE10+ */
|
53
|
+
background: linear-gradient(to right, rgba($color,0.8) 0%,rgba($color,0.4) 66%,rgba($color,0) 100%); /* W3C */
|
54
|
+
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#{ie_hex_str(rgba($color, 1))}', endColorstr='#{ie_hex_str(rgba($color, 0))}',GradientType=1 ); /* IE6-8 */
|
55
|
+
}
|
45
56
|
}
|