pageflow 0.5.0 → 0.6.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/Rakefile +2 -1
- data/admins/pageflow/accounts.rb +20 -4
- data/admins/pageflow/entry.rb +4 -5
- data/app/assets/javascripts/pageflow/audio_player.js +16 -7
- data/app/assets/javascripts/pageflow/base.js +5 -0
- data/app/assets/javascripts/pageflow/built_in_widget_types.js +11 -0
- data/app/assets/javascripts/pageflow/cookies.js +43 -0
- data/app/assets/javascripts/pageflow/editor/base.js +2 -10
- data/app/assets/javascripts/pageflow/editor/collections/widgets_collection.js +16 -0
- data/app/assets/javascripts/pageflow/editor/controllers/sidebar_controller.js +3 -2
- data/app/assets/javascripts/pageflow/editor/edit_widget.jst.ejs +2 -0
- data/app/assets/javascripts/pageflow/editor/initializers/setup_widget_types.js +3 -0
- data/app/assets/javascripts/pageflow/editor/models/configuration.js +18 -9
- data/app/assets/javascripts/pageflow/editor/models/edit_lock_container.js +1 -0
- data/app/assets/javascripts/pageflow/editor/models/entry.js +13 -3
- data/app/assets/javascripts/pageflow/editor/models/entry_configuration.js +4 -0
- data/app/assets/javascripts/pageflow/editor/models/entry_configuration_file_selection_handler.js +11 -0
- data/app/assets/javascripts/pageflow/editor/models/image_file.js +4 -0
- data/app/assets/javascripts/pageflow/editor/models/mixins/widget_subject.js +37 -0
- data/app/assets/javascripts/pageflow/editor/models/page.js +1 -1
- data/app/assets/javascripts/pageflow/editor/models/page_configuration_file_selection_handler.js +1 -25
- data/app/assets/javascripts/pageflow/editor/models/theming.js +3 -0
- data/app/assets/javascripts/pageflow/editor/models/video_file.js +7 -0
- data/app/assets/javascripts/pageflow/editor/models/widget.js +19 -0
- data/app/assets/javascripts/pageflow/editor/routers/sidebar_router.js +1 -0
- data/app/assets/javascripts/pageflow/editor/templates/background_positioning.jst.ejs +18 -0
- data/app/assets/javascripts/pageflow/editor/templates/background_positioning_preview.jst.ejs +2 -0
- data/app/assets/javascripts/pageflow/editor/templates/background_positioning_sliders.jst.ejs +6 -0
- data/app/assets/javascripts/pageflow/editor/templates/edit_meta_data.jst.ejs +1 -1
- data/app/assets/javascripts/pageflow/editor/templates/edit_widget.jst.ejs +2 -0
- data/app/assets/javascripts/pageflow/editor/templates/edit_widgets.jst.ejs +2 -0
- data/app/assets/javascripts/pageflow/editor/templates/entry_preview.jst.ejs +1 -3
- data/app/assets/javascripts/pageflow/editor/views/background_positioning_preview_view.js +39 -0
- data/app/assets/javascripts/pageflow/editor/views/background_positioning_sliders_view.js +94 -0
- data/app/assets/javascripts/pageflow/editor/views/background_positioning_view.js +67 -0
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/audio.js +1 -1
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/audio_loop.js +1 -1
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/background_image.js +1 -1
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/background_video.js +4 -3
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/internal_links.js +1 -1
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/video.js +9 -2
- data/app/assets/javascripts/pageflow/editor/views/edit_meta_data_view.js +18 -2
- data/app/assets/javascripts/pageflow/editor/views/edit_widget_view.js +29 -0
- data/app/assets/javascripts/pageflow/editor/views/edit_widgets_view.js +20 -0
- data/app/assets/javascripts/pageflow/editor/views/embedded/background_image_embedded_view.js +8 -3
- data/app/assets/javascripts/pageflow/editor/views/entry_preview_view.js +53 -9
- data/app/assets/javascripts/pageflow/editor/views/page_item_view.js +1 -1
- data/app/assets/javascripts/pageflow/editor/views/page_preview_view.js +11 -3
- data/app/assets/javascripts/pageflow/events.js +1 -0
- data/app/assets/javascripts/pageflow/features/hashchange_support.js +8 -0
- data/app/assets/javascripts/pageflow/history.js +14 -2
- data/app/assets/javascripts/pageflow/page_types/audio.js +18 -6
- data/app/assets/javascripts/pageflow/page_types/audio_loop.js +19 -7
- data/app/assets/javascripts/pageflow/page_types/background_video.js +41 -33
- data/app/assets/javascripts/pageflow/page_types/mixins/video_helpers.js +7 -16
- data/app/assets/javascripts/pageflow/ready.js +12 -25
- data/app/assets/javascripts/pageflow/slideshow.js +5 -5
- data/app/assets/javascripts/pageflow/slideshow/hide_text_on_swipe.js +1 -1
- data/app/assets/javascripts/pageflow/slideshow/page_widget.js +11 -1
- data/app/assets/javascripts/pageflow/slideshow/scroll_indicator_widget.js +19 -2
- data/app/assets/javascripts/pageflow/slideshow/scroller_widget.js +31 -6
- data/app/assets/javascripts/pageflow/slideshow/swipe_gesture.js +6 -5
- data/app/assets/javascripts/pageflow/ui.js +16 -0
- data/app/assets/javascripts/pageflow/{editor → ui}/object.js +0 -0
- data/app/assets/javascripts/pageflow/{editor → ui}/renderer.js +0 -0
- data/app/assets/javascripts/pageflow/{editor → ui}/templates/inputs/check_box.jst.ejs +0 -0
- data/app/assets/javascripts/pageflow/{editor → ui}/templates/inputs/file_input.jst.ejs +0 -0
- data/app/assets/javascripts/pageflow/{editor → ui}/templates/inputs/page_reference.jst.ejs +0 -0
- data/app/assets/javascripts/pageflow/{editor → ui}/templates/inputs/select_input.jst.ejs +0 -0
- data/app/assets/javascripts/pageflow/{editor → ui}/templates/inputs/slider_input.jst.ejs +0 -0
- data/app/assets/javascripts/pageflow/{editor → ui}/templates/inputs/text_area_input.jst.ejs +0 -0
- data/app/assets/javascripts/pageflow/{editor → ui}/templates/inputs/text_input.jst.ejs +0 -0
- data/app/assets/javascripts/pageflow/{editor → ui}/templates/inputs/url_input.jst.ejs +0 -0
- data/app/assets/javascripts/pageflow/{editor → ui}/templates/tabs_view.jst.ejs +0 -0
- data/app/assets/javascripts/pageflow/{editor → ui}/views/collection_view.js +0 -0
- data/app/assets/javascripts/pageflow/{editor → ui}/views/configuration_editor_tab_view.js +8 -1
- data/app/assets/javascripts/pageflow/{editor → ui}/views/configuration_editor_view.js +3 -1
- data/app/assets/javascripts/pageflow/{editor → ui}/views/inputs/check_box_input_view.js +1 -1
- data/app/assets/javascripts/pageflow/{editor → ui}/views/inputs/file_input_view.js +10 -8
- data/app/assets/javascripts/pageflow/{editor → ui}/views/inputs/page_reference_input_view.js +1 -1
- data/app/assets/javascripts/pageflow/{editor → ui}/views/inputs/proxy_url_input_view.js +0 -0
- data/app/assets/javascripts/pageflow/{editor → ui}/views/inputs/select_input_view.js +41 -1
- data/app/assets/javascripts/pageflow/{editor → ui}/views/inputs/slider_input_view.js +1 -1
- data/app/assets/javascripts/pageflow/{editor → ui}/views/inputs/text_area_input_view.js +1 -1
- data/app/assets/javascripts/pageflow/{editor → ui}/views/inputs/text_input_view.js +8 -2
- data/app/assets/javascripts/pageflow/{editor → ui}/views/inputs/url_input_view.js +9 -3
- data/app/assets/javascripts/pageflow/{editor/views → ui/views/mixins}/input_view.js +5 -1
- data/app/assets/javascripts/pageflow/{editor → ui}/views/mixins/subview_container.js +0 -0
- data/app/assets/javascripts/pageflow/{editor → ui}/views/sortable_collection_view.js +0 -0
- data/app/assets/javascripts/pageflow/{editor → ui}/views/tabs_view.js +11 -2
- data/app/assets/javascripts/pageflow/video_player/lazy.js +4 -1
- data/app/assets/javascripts/pageflow/visited.js +56 -0
- data/app/assets/javascripts/pageflow/widget_types.js +27 -0
- data/app/assets/javascripts/pageflow/widgets/events.js +33 -0
- data/app/assets/javascripts/pageflow/widgets/navigation.js +42 -33
- data/app/assets/javascripts/pageflow/widgets/navigation_mobile.js +60 -38
- data/app/assets/javascripts/pageflow/widgets/overview.js +3 -3
- data/app/assets/javascripts/pageflow/widgets/page_navigation_list.js +34 -4
- data/app/assets/javascripts/pageflow/widgets/share_menu.js +60 -0
- data/app/assets/stylesheets/pageflow/admin.css.scss +1 -0
- data/app/assets/stylesheets/pageflow/admin/tabs_view.css.scss +50 -0
- data/app/assets/stylesheets/pageflow/application_with_simulated_media_queries.css.scss +2 -0
- data/app/assets/stylesheets/pageflow/base.css.scss +2 -1
- data/app/assets/stylesheets/pageflow/editor/{image_positioning.css.scss → background_positioning.css.scss} +66 -65
- data/app/assets/stylesheets/pageflow/editor/base.css.scss +7 -5
- data/app/assets/stylesheets/pageflow/editor/file_thumbnails.css.scss +7 -9
- data/app/assets/stylesheets/pageflow/editor/select_button.css.scss +4 -4
- data/app/assets/stylesheets/pageflow/editor/widgets.css.scss +4 -0
- data/app/assets/stylesheets/pageflow/entries.css.scss +5 -0
- data/app/assets/stylesheets/pageflow/mixins/breakpoints.css.scss +75 -10
- data/app/assets/stylesheets/pageflow/multimedia_alert.css.scss +31 -30
- data/app/assets/stylesheets/pageflow/navigation_bar.css.scss +4 -0
- data/app/assets/stylesheets/pageflow/navigation_mobile.css.scss +57 -58
- data/app/assets/stylesheets/pageflow/player_controls.css.scss +2 -2
- data/app/assets/stylesheets/pageflow/slideshow.css.scss +4 -1
- data/app/assets/stylesheets/pageflow/subshare.css.scss +28 -0
- data/app/assets/stylesheets/pageflow/ui.css.scss +7 -0
- data/app/assets/stylesheets/pageflow/{editor → ui}/forms.css.scss +1 -0
- data/app/assets/stylesheets/pageflow/{editor → ui}/tabs_view.css.scss +1 -0
- data/app/controllers/pageflow/editor/widgets_controller.rb +39 -0
- data/app/controllers/pageflow/entries_controller.rb +10 -1
- data/app/helpers/pageflow/entries_helper.rb +7 -0
- data/app/helpers/pageflow/page_types_helper.rb +7 -7
- data/app/helpers/pageflow/pages_helper.rb +36 -5
- data/app/helpers/pageflow/social_share_helper.rb +54 -0
- data/app/helpers/pageflow/widgets_helper.rb +43 -0
- data/app/models/pageflow/draft_entry.rb +4 -1
- data/app/models/pageflow/entry.rb +1 -0
- data/app/models/pageflow/published_entry.rb +6 -3
- data/app/models/pageflow/revision.rb +5 -0
- data/app/models/pageflow/theming.rb +3 -0
- data/app/models/pageflow/widget.rb +74 -0
- data/app/views/admin/accounts/_form.html.erb +10 -0
- data/app/views/components/pageflow/admin/entries_tab.rb +22 -0
- data/app/views/components/pageflow/admin/members_tab.rb +35 -0
- data/app/views/components/pageflow/admin/revisions_tab.rb +51 -0
- data/app/views/components/pageflow/admin/tabs_view.rb +78 -0
- data/app/views/components/pageflow/admin/users_tab.rb +22 -0
- data/app/views/layouts/pageflow/application.html.erb +5 -5
- data/app/views/pageflow/editor/entries/_entry.json.jbuilder +7 -4
- data/app/views/pageflow/editor/files/_file.json.jbuilder +2 -2
- data/app/views/pageflow/editor/widgets/_widget.json.jbuilder +2 -0
- data/app/views/pageflow/editor/widgets/index.json.jbuilder +1 -0
- data/app/views/pageflow/entries/_entry.html.erb +6 -2
- data/app/views/pageflow/entries/_mobile_navigation.html.erb +56 -0
- data/app/views/pageflow/entries/_navigation.html.erb +3 -53
- data/app/views/pageflow/entries/edit.html.erb +2 -0
- data/app/views/pageflow/entries/navigation/_bar_top.html.erb +7 -3
- data/app/views/pageflow/entries/navigation/_page.html.erb +2 -2
- data/app/views/pageflow/entries/partials.html.erb +1 -1
- data/app/views/pageflow/entries/show.html.erb +12 -4
- data/app/views/pageflow/files/show.html.erb +5 -0
- data/app/views/pageflow/pages/templates/_audio_loop.html.erb +1 -1
- data/app/views/pageflow/pages/templates/_background_video.html.erb +2 -2
- data/app/views/pageflow/pages/templates/_video.html.erb +4 -3
- data/app/views/pageflow/{entries/_social_meta_tags.html.erb → social_share/_entry_meta_tags.html.erb} +2 -2
- data/app/views/pageflow/social_share/_image_tags.html.erb +3 -0
- data/app/views/pageflow/social_share/_page_meta_tags.html.erb +9 -0
- data/config/initializers/admin_resource_tabs.rb +7 -0
- data/config/initializers/paperclip.rb +1 -1
- data/config/initializers/view_components.rb +9 -1
- data/config/initializers/widget_types.rb +4 -0
- data/config/locales/activerecord.de.yml +5 -1
- data/config/locales/admin/tabs.de.yml +8 -0
- data/config/locales/editor.de.yml +5 -4
- data/config/locales/pageflow/editor/background_positioning.de.yml +13 -0
- data/config/locales/pageflow/ui.de.yml +6 -0
- data/config/locales/pageflow/widgets.de.yml +14 -0
- data/config/routes.rb +6 -0
- data/config/spring.rb +2 -1
- data/db/migrate/20141027102310_create_widgets.rb +11 -0
- data/db/migrate/20141028125408_add_emphasize_chapter_beginning_to_revisions.rb +5 -0
- data/db/migrate/20141119164526_add_emphasize_new_pages_to_revisions.rb +5 -0
- data/db/migrate/20141119174032_add_sharing_image_to_revisions.rb +7 -0
- data/lib/pageflow/ability_mixin.rb +2 -0
- data/lib/pageflow/admin/tabs.rb +18 -0
- data/lib/pageflow/built_in_widget_type.rb +27 -0
- data/lib/pageflow/configuration.rb +17 -0
- data/lib/pageflow/engine.rb +2 -0
- data/lib/pageflow/version.rb +1 -1
- data/lib/pageflow/widget_type.rb +52 -0
- data/lib/pageflow/widget_types.rb +50 -0
- data/spec/factories/audio_files.rb +1 -1
- data/spec/factories/chapters.rb +1 -1
- data/spec/factories/entries.rb +2 -2
- data/spec/factories/image_files.rb +1 -1
- data/spec/factories/video_files.rb +1 -1
- data/spec/factories/widgets.rb +6 -0
- data/vendor/assets/javascripts/audio5.min.js +3 -0
- metadata +104 -44
- data/app/assets/javascripts/pageflow/editor/templates/image_positioning.jst.ejs +0 -26
- data/app/assets/javascripts/pageflow/editor/views/image_positioning_view.js +0 -153
- data/app/views/admin/accounts/_entries_panel.html.arb +0 -15
- data/app/views/admin/accounts/_users_panel.html.arb +0 -15
- data/app/views/admin/entries/_members.html.arb +0 -29
- data/app/views/admin/entries/_revisions.html.arb +0 -45
@@ -0,0 +1,37 @@
|
|
1
|
+
pageflow.widgetSubject = {
|
2
|
+
initialize: function() {
|
3
|
+
this.widgets = pageflow.WidgetsCollection.createForSubject(this);
|
4
|
+
|
5
|
+
if (this.autoSaveWidgets) {
|
6
|
+
this.listenTo(this.widgets, 'change:type_name', function() {
|
7
|
+
this.saveWidgets();
|
8
|
+
});
|
9
|
+
}
|
10
|
+
},
|
11
|
+
|
12
|
+
widgetsUrlRoot: function() {
|
13
|
+
return '/editor/subjects/' + this.collectionName + '/' + this.id;
|
14
|
+
},
|
15
|
+
|
16
|
+
fetchWidgets: function() {
|
17
|
+
this.widgets.fetch();
|
18
|
+
},
|
19
|
+
|
20
|
+
saveWidgets: function(options) {
|
21
|
+
var model = this;
|
22
|
+
|
23
|
+
return Backbone.sync('patch', model, _.extend(options || {}, {
|
24
|
+
url: this.widgetsUrlRoot() + '/widgets/batch',
|
25
|
+
|
26
|
+
attrs: {
|
27
|
+
widgets: model.widgets.map(function(widget) {
|
28
|
+
return widget.toJSON();
|
29
|
+
})
|
30
|
+
},
|
31
|
+
|
32
|
+
success: function(response) {
|
33
|
+
model.trigger('sync:widgets', model, response, {});
|
34
|
+
}
|
35
|
+
}));
|
36
|
+
}
|
37
|
+
};
|
@@ -16,7 +16,7 @@ pageflow.Page = Backbone.Model.extend({
|
|
16
16
|
|
17
17
|
initialize: function() {
|
18
18
|
this.configuration = new pageflow.Configuration(this.get('configuration') || {});
|
19
|
-
this.configuration.page = this;
|
19
|
+
this.configuration.parent = this.configuration.page = this;
|
20
20
|
|
21
21
|
this.listenTo(this.configuration, 'change', function() {
|
22
22
|
this.trigger('change:configuration');
|
data/app/assets/javascripts/pageflow/editor/models/page_configuration_file_selection_handler.js
CHANGED
@@ -1,28 +1,4 @@
|
|
1
|
-
|
2
1
|
pageflow.PageConfigurationFileSelectionHandler = function(options) {
|
3
|
-
pageflow.ConfigurationEditorView.register('audio_loop', {
|
4
|
-
configure: function() {
|
5
|
-
this.tab('general', function() {
|
6
|
-
this.group('general');
|
7
|
-
|
8
|
-
this.input('additional_title', pageflow.TextInputView);
|
9
|
-
this.input('additional_description', pageflow.TextAreaInputView, {size: 'short'});
|
10
|
-
});
|
11
|
-
|
12
|
-
this.tab('files', function() {
|
13
|
-
this.input('audio_file_id', pageflow.FileInputView, {collection: pageflow.audioFiles});
|
14
|
-
this.input('background_image_id', pageflow.FileInputView, {collection: pageflow.imageFiles});
|
15
|
-
this.input('thumbnail_image_id', pageflow.FileInputView, {
|
16
|
-
collection: pageflow.imageFiles,
|
17
|
-
imagePositioning: false
|
18
|
-
});
|
19
|
-
});
|
20
|
-
|
21
|
-
this.tab('options', function() {
|
22
|
-
this.group('options');
|
23
|
-
});
|
24
|
-
}
|
25
|
-
});
|
26
2
|
var page = pageflow.pages.get(options.id);
|
27
3
|
|
28
4
|
this.call = function(file) {
|
@@ -30,7 +6,7 @@ pageflow.PageConfigurationFileSelectionHandler = function(options) {
|
|
30
6
|
};
|
31
7
|
|
32
8
|
this.getReferer = function() {
|
33
|
-
return '/pages/' + page.id + '/files';
|
9
|
+
return '/pages/' + page.id + '/' + (options.returnToTab || 'files');
|
34
10
|
};
|
35
11
|
};
|
36
12
|
|
@@ -0,0 +1,19 @@
|
|
1
|
+
pageflow.Widget = Backbone.Model.extend({
|
2
|
+
paramRoot: 'widget',
|
3
|
+
i18nKey: 'pageflow/widget',
|
4
|
+
|
5
|
+
role: function() {
|
6
|
+
return this.id;
|
7
|
+
},
|
8
|
+
|
9
|
+
urlRoot: function() {
|
10
|
+
return this.collection.url();
|
11
|
+
},
|
12
|
+
|
13
|
+
toJSON: function() {
|
14
|
+
return {
|
15
|
+
role: this.role(),
|
16
|
+
type_name: this.get('type_name')
|
17
|
+
};
|
18
|
+
},
|
19
|
+
});
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<div class="box">
|
2
|
+
<h2><%= I18n.t('pageflow.editor.background_positioning.title') %></h2>
|
3
|
+
<p><%= I18n.t('pageflow.editor.background_positioning.help') %></p>
|
4
|
+
|
5
|
+
<div class="wrapper">
|
6
|
+
</div>
|
7
|
+
|
8
|
+
<h3><%= I18n.t('pageflow.editor.background_positioning.preview_title') %></h3>
|
9
|
+
<div class="previews">
|
10
|
+
<div>
|
11
|
+
</div>
|
12
|
+
</div>
|
13
|
+
|
14
|
+
<div class="footer">
|
15
|
+
<a href="" class="save">Speichern</a>
|
16
|
+
<a href="" class="close">Abbrechen</a>
|
17
|
+
</div>
|
18
|
+
</div>
|
@@ -0,0 +1,39 @@
|
|
1
|
+
pageflow.BackgroundPositioningPreviewView = Backbone.Marionette.ItemView.extend({
|
2
|
+
template: 'templates/background_positioning_preview',
|
3
|
+
className: 'preview',
|
4
|
+
|
5
|
+
modelEvents: {
|
6
|
+
change: 'update'
|
7
|
+
},
|
8
|
+
|
9
|
+
ui: {
|
10
|
+
image: '.image',
|
11
|
+
label: '.label'
|
12
|
+
},
|
13
|
+
|
14
|
+
onRender: function() {
|
15
|
+
this.update();
|
16
|
+
},
|
17
|
+
|
18
|
+
update: function() {
|
19
|
+
var ratio = this.options.ratio;
|
20
|
+
var max = this.options.maxSize;
|
21
|
+
var width = ratio > 1 ? max : max * ratio;
|
22
|
+
var height = ratio > 1 ? max / ratio : max;
|
23
|
+
|
24
|
+
this.ui.image.css({
|
25
|
+
width: width + 'px',
|
26
|
+
height: height + 'px',
|
27
|
+
backgroundImage: this.imageValue(),
|
28
|
+
backgroundPosition: this.model.getFilePosition(this.options.propertyName, 'x') + '% ' +
|
29
|
+
this.model.getFilePosition(this.options.propertyName, 'y') + '%'
|
30
|
+
});
|
31
|
+
|
32
|
+
this.ui.label.text(this.options.label);
|
33
|
+
},
|
34
|
+
|
35
|
+
imageValue: function() {
|
36
|
+
var file = this.model.getReference(this.options.propertyName, this.options.filesCollection);
|
37
|
+
return file ? 'url("' + file.getBackgroundPositioningImageUrl() + '")' : 'none';
|
38
|
+
}
|
39
|
+
});
|
@@ -0,0 +1,94 @@
|
|
1
|
+
pageflow.BackgroundPositioningSlidersView = Backbone.Marionette.ItemView.extend({
|
2
|
+
template: 'templates/background_positioning_sliders',
|
3
|
+
className: '',
|
4
|
+
|
5
|
+
ui: {
|
6
|
+
container: '.container',
|
7
|
+
|
8
|
+
sliderHorizontal: '.horizontal.slider',
|
9
|
+
sliderVertical: '.vertical.slider'
|
10
|
+
},
|
11
|
+
|
12
|
+
events: {
|
13
|
+
'mousedown img': function(event) {
|
14
|
+
var view = this;
|
15
|
+
view.saveFromEvent(event);
|
16
|
+
|
17
|
+
function onMove(event) {
|
18
|
+
view.saveFromEvent(event);
|
19
|
+
}
|
20
|
+
|
21
|
+
function onUp() {
|
22
|
+
$('.background_positioning.dialog')
|
23
|
+
.off('mousemove', onMove)
|
24
|
+
.off('mouseup', onUp);
|
25
|
+
}
|
26
|
+
|
27
|
+
$('.background_positioning.dialog')
|
28
|
+
.on('mousemove', onMove)
|
29
|
+
.on('mouseup', onUp);
|
30
|
+
},
|
31
|
+
|
32
|
+
'dragstart img': function(event) {
|
33
|
+
event.preventDefault();
|
34
|
+
}
|
35
|
+
},
|
36
|
+
|
37
|
+
onRender: function() {
|
38
|
+
var view = this;
|
39
|
+
var file = this.model.getReference(this.options.propertyName, this.options.filesCollection),
|
40
|
+
image = $('<img />').attr('src', file.getBackgroundPositioningImageUrl());
|
41
|
+
|
42
|
+
this.ui.container.append(image);
|
43
|
+
|
44
|
+
this.ui.sliderVertical.slider({
|
45
|
+
orientation: 'vertical',
|
46
|
+
step: 0.01,
|
47
|
+
value: 100 - this.model.getFilePosition(this.options.propertyName, 'y'),
|
48
|
+
|
49
|
+
change: function() {
|
50
|
+
view.save();
|
51
|
+
},
|
52
|
+
|
53
|
+
slide: function(event, ui) {
|
54
|
+
view.save({y: ui.value});
|
55
|
+
}
|
56
|
+
});
|
57
|
+
|
58
|
+
this.ui.sliderHorizontal.slider({
|
59
|
+
orientation: 'horizontal',
|
60
|
+
step: 0.01,
|
61
|
+
value: this.model.getFilePosition(this.options.propertyName, 'x'),
|
62
|
+
|
63
|
+
change: function() {
|
64
|
+
view.save();
|
65
|
+
},
|
66
|
+
|
67
|
+
slide: function(event, ui) {
|
68
|
+
view.save({y: ui.value});
|
69
|
+
}
|
70
|
+
});
|
71
|
+
},
|
72
|
+
|
73
|
+
onShow: function() {
|
74
|
+
},
|
75
|
+
|
76
|
+
saveFromEvent: function(event) {
|
77
|
+
var x = event.pageX - this.ui.container.offset().left;
|
78
|
+
var y = event.pageY - this.ui.container.offset().top;
|
79
|
+
|
80
|
+
this.ui.sliderHorizontal.slider('value', x / this.ui.container.width() * 100);
|
81
|
+
this.ui.sliderVertical.slider('value', (1 - y / this.ui.container.height()) * 100);
|
82
|
+
this.save();
|
83
|
+
},
|
84
|
+
|
85
|
+
save: function(options) {
|
86
|
+
options = options || {};
|
87
|
+
|
88
|
+
var x = x in options ? options.x : this.ui.sliderHorizontal.slider('value');
|
89
|
+
var y = y in options ? options.y : 100 - this.ui.sliderVertical.slider('value');
|
90
|
+
|
91
|
+
this.model.setFilePosition(this.options.propertyName, 'x', x);
|
92
|
+
this.model.setFilePosition(this.options.propertyName, 'y', y);
|
93
|
+
}
|
94
|
+
});
|
@@ -0,0 +1,67 @@
|
|
1
|
+
pageflow.BackgroundPositioningView = Backbone.Marionette.ItemView.extend({
|
2
|
+
template: 'templates/background_positioning',
|
3
|
+
className: 'background_positioning dialog',
|
4
|
+
|
5
|
+
mixins: [pageflow.dialogView],
|
6
|
+
|
7
|
+
ui: {
|
8
|
+
previews: '.previews > div',
|
9
|
+
wrapper: '.wrapper',
|
10
|
+
},
|
11
|
+
|
12
|
+
previews: {
|
13
|
+
ratio16to9: 16 / 9,
|
14
|
+
ratio16to9Portrait: 9 / 16,
|
15
|
+
ratio4to3: 4 / 3,
|
16
|
+
ratio4to3Portrait: 3 / 4,
|
17
|
+
banner: 5 / 1
|
18
|
+
},
|
19
|
+
|
20
|
+
events: {
|
21
|
+
'click .save': function() {
|
22
|
+
this.save();
|
23
|
+
this.close();
|
24
|
+
}
|
25
|
+
},
|
26
|
+
|
27
|
+
initialize: function() {
|
28
|
+
this.transientModel = this.model.clone();
|
29
|
+
},
|
30
|
+
|
31
|
+
onRender: function() {
|
32
|
+
this.ui.wrapper.append(this.subview(new pageflow.BackgroundPositioningSlidersView({
|
33
|
+
model: this.transientModel,
|
34
|
+
propertyName: this.options.propertyName,
|
35
|
+
filesCollection: this.options.filesCollection
|
36
|
+
})).el);
|
37
|
+
|
38
|
+
this.createPreviews();
|
39
|
+
},
|
40
|
+
|
41
|
+
save: function() {
|
42
|
+
this.model.setFilePositions(
|
43
|
+
this.options.propertyName,
|
44
|
+
this.transientModel.getFilePosition(this.options.propertyName, 'x'),
|
45
|
+
this.transientModel.getFilePosition(this.options.propertyName, 'y')
|
46
|
+
);
|
47
|
+
},
|
48
|
+
|
49
|
+
createPreviews: function() {
|
50
|
+
var view = this;
|
51
|
+
|
52
|
+
_.each(view.previews, function(ratio, name) {
|
53
|
+
view.ui.previews.append(view.subview(new pageflow.BackgroundPositioningPreviewView({
|
54
|
+
model: view.transientModel,
|
55
|
+
propertyName: view.options.propertyName,
|
56
|
+
filesCollection: view.options.filesCollection,
|
57
|
+
ratio: ratio,
|
58
|
+
maxSize: 200,
|
59
|
+
label: I18n.t('pageflow.editor.background_positioning.previews.' + name)
|
60
|
+
})).el);
|
61
|
+
});
|
62
|
+
}
|
63
|
+
});
|
64
|
+
|
65
|
+
pageflow.BackgroundPositioningView.open = function(options) {
|
66
|
+
pageflow.app.dialogRegion.show(new pageflow.BackgroundPositioningView(options).render());
|
67
|
+
};
|
@@ -12,7 +12,7 @@ pageflow.ConfigurationEditorView.register('audio', {
|
|
12
12
|
this.input('background_image_id', pageflow.FileInputView, {collection: pageflow.imageFiles});
|
13
13
|
this.input('thumbnail_image_id', pageflow.FileInputView, {
|
14
14
|
collection: pageflow.imageFiles,
|
15
|
-
|
15
|
+
positioning: false
|
16
16
|
});
|
17
17
|
});
|
18
18
|
|
@@ -12,7 +12,7 @@ pageflow.ConfigurationEditorView.register('audio_loop', {
|
|
12
12
|
this.input('background_image_id', pageflow.FileInputView, {collection: pageflow.imageFiles});
|
13
13
|
this.input('thumbnail_image_id', pageflow.FileInputView, {
|
14
14
|
collection: pageflow.imageFiles,
|
15
|
-
|
15
|
+
positioning: false
|
16
16
|
});
|
17
17
|
});
|
18
18
|
|
@@ -8,7 +8,7 @@ pageflow.ConfigurationEditorView.register('background_image', {
|
|
8
8
|
this.input('background_image_id', pageflow.FileInputView, {collection: pageflow.imageFiles});
|
9
9
|
this.input('thumbnail_image_id', pageflow.FileInputView, {
|
10
10
|
collection: pageflow.imageFiles,
|
11
|
-
|
11
|
+
positioning: false
|
12
12
|
});
|
13
13
|
});
|
14
14
|
|
@@ -6,11 +6,12 @@ pageflow.ConfigurationEditorView.register('background_video', {
|
|
6
6
|
|
7
7
|
this.tab('files', function() {
|
8
8
|
this.input('video_file_id', pageflow.FileInputView, {collection: pageflow.videoFiles});
|
9
|
-
this.input('poster_image_id', pageflow.FileInputView, {
|
9
|
+
this.input('poster_image_id', pageflow.FileInputView, {collection: pageflow.imageFiles});
|
10
|
+
this.input('thumbnail_image_id', pageflow.FileInputView, {
|
10
11
|
collection: pageflow.imageFiles,
|
11
|
-
|
12
|
+
positioning: false
|
12
13
|
});
|
13
|
-
this.input('
|
14
|
+
this.input('mobile_poster_image_id', pageflow.FileInputView, {
|
14
15
|
collection: pageflow.imageFiles,
|
15
16
|
imagePositioning: false
|
16
17
|
});
|
@@ -8,7 +8,7 @@ pageflow.ConfigurationEditorView.register('internal_links', {
|
|
8
8
|
this.input('background_image_id', pageflow.FileInputView, {collection: pageflow.imageFiles});
|
9
9
|
this.input('thumbnail_image_id', pageflow.FileInputView, {
|
10
10
|
collection: pageflow.imageFiles,
|
11
|
-
|
11
|
+
positioning: false
|
12
12
|
});
|
13
13
|
});
|
14
14
|
|