pageflow 0.8.2 → 0.9.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/CHANGELOG.md +810 -0
- data/README.md +179 -0
- data/admins/pageflow/accounts.rb +46 -3
- data/admins/pageflow/entry.rb +35 -7
- data/app/assets/javascripts/pageflow/audio.js +62 -0
- data/app/assets/javascripts/pageflow/audio/multi_player.js +127 -0
- data/app/assets/javascripts/pageflow/audio/player_pool.js +15 -0
- data/app/assets/javascripts/pageflow/audio_player.js +23 -1
- data/app/assets/javascripts/pageflow/audio_player/null.js +37 -0
- data/app/assets/javascripts/pageflow/audio_player/pause_in_background.js +34 -0
- data/app/assets/javascripts/pageflow/audio_player/rewind_method.js +17 -0
- data/app/assets/javascripts/pageflow/audio_player/seek_with_invalid_state_handling.js +41 -0
- data/app/assets/javascripts/pageflow/base.js +10 -0
- data/app/assets/javascripts/pageflow/browser.js +123 -0
- data/app/assets/javascripts/pageflow/{features → browser}/hashchange_support.js +1 -1
- data/app/assets/javascripts/pageflow/{features → browser}/high_bandwidth.js +1 -1
- data/app/assets/javascripts/pageflow/{features → browser}/ie_platform.js +1 -1
- data/app/assets/javascripts/pageflow/browser/ios_platform.js +6 -0
- data/app/assets/javascripts/pageflow/{features → browser}/mobile_platform.js +1 -1
- data/app/assets/javascripts/pageflow/{features → browser}/phone_platform.js +1 -1
- data/app/assets/javascripts/pageflow/browser/pushstate_support.js +3 -0
- data/app/assets/javascripts/pageflow/{features → browser}/touch_support.js +1 -1
- data/app/assets/javascripts/pageflow/browser/video.js +16 -0
- data/app/assets/javascripts/pageflow/browser/volume_control_support.js +3 -0
- data/app/assets/javascripts/pageflow/chapter_filter.js +56 -0
- data/app/assets/javascripts/pageflow/editor/api.js +29 -0
- data/app/assets/javascripts/pageflow/editor/api/page_type.js +42 -0
- data/app/assets/javascripts/pageflow/editor/api/page_types.js +47 -0
- data/app/assets/javascripts/pageflow/editor/base.js +7 -1
- data/app/assets/javascripts/pageflow/editor/collections/subset_collection.js +5 -1
- data/app/assets/javascripts/pageflow/editor/initializers/boot.js +10 -2
- data/app/assets/javascripts/pageflow/editor/initializers/setup_audio.js +8 -0
- data/app/assets/javascripts/pageflow/editor/initializers/setup_collections.js +7 -0
- data/app/assets/javascripts/pageflow/editor/initializers/setup_features.js +3 -0
- data/app/assets/javascripts/pageflow/editor/initializers/setup_hotkeys.js +20 -0
- data/app/assets/javascripts/pageflow/editor/initializers/setup_page_types.js +1 -6
- data/app/assets/javascripts/pageflow/editor/models/audio_file.js +8 -0
- data/app/assets/javascripts/pageflow/editor/models/chapter.js +23 -4
- data/app/assets/javascripts/pageflow/editor/models/chapter_configuration.js +7 -0
- data/app/assets/javascripts/pageflow/editor/models/configuration.js +5 -3
- data/app/assets/javascripts/pageflow/editor/models/entry.js +6 -4
- data/app/assets/javascripts/pageflow/editor/models/mixins/delayed_destroying.js +1 -1
- data/app/assets/javascripts/pageflow/editor/models/mixins/stage_provider.js +3 -2
- data/app/assets/javascripts/pageflow/editor/models/page.js +11 -4
- data/app/assets/javascripts/pageflow/editor/models/preview_entry_data.js +31 -0
- data/app/assets/javascripts/pageflow/editor/models/theming.js +8 -0
- data/app/assets/javascripts/pageflow/editor/models/uploaded_file.js +8 -0
- data/app/assets/javascripts/pageflow/editor/templates/drop_down_button.jst.ejs +6 -0
- data/app/assets/javascripts/pageflow/editor/templates/drop_down_button_item.jst.ejs +1 -0
- data/app/assets/javascripts/pageflow/editor/templates/files_explorer.jst.ejs +2 -2
- data/app/assets/javascripts/pageflow/editor/templates/inputs/reference.jst.ejs +7 -0
- data/app/assets/javascripts/pageflow/editor/templates/list.jst.ejs +5 -0
- data/app/assets/javascripts/pageflow/editor/templates/list_blank_slate.jst.ejs +1 -0
- data/app/assets/javascripts/pageflow/editor/templates/list_item.jst.ejs +11 -0
- data/app/assets/javascripts/pageflow/editor/templates/loading.jst.ejs +7 -1
- data/app/assets/javascripts/pageflow/editor/templates/other_entries_blank_slate.jst.ejs +1 -1
- data/app/assets/javascripts/pageflow/editor/templates/page_link_item.jst.ejs +7 -0
- data/app/assets/javascripts/pageflow/editor/templates/page_links.jst.ejs +6 -0
- data/app/assets/javascripts/pageflow/editor/templates/page_selection.jst.ejs +12 -0
- data/app/assets/javascripts/pageflow/editor/templates/publish_entry.jst.ejs +44 -8
- data/app/assets/javascripts/pageflow/editor/views/chapter_item_view.js +3 -1
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/audio.js +1 -1
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/groups/options.js +34 -2
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/groups/page_transitions.js +6 -0
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/video.js +6 -1
- data/app/assets/javascripts/pageflow/editor/views/disabled_atmo_indicator_view.js +27 -0
- data/app/assets/javascripts/pageflow/editor/views/drop_down_button_item_view.js +33 -0
- data/app/assets/javascripts/pageflow/editor/views/drop_down_button_view.js +80 -0
- data/app/assets/javascripts/pageflow/editor/views/edit_chapter_view.js +25 -5
- data/app/assets/javascripts/pageflow/editor/views/edit_entry_view.js +9 -1
- data/app/assets/javascripts/pageflow/editor/views/edit_page_view.js +7 -5
- data/app/assets/javascripts/pageflow/editor/views/edit_widget_view.js +1 -1
- data/app/assets/javascripts/pageflow/editor/views/embedded/background_image_embedded_view.js +4 -1
- data/app/assets/javascripts/pageflow/editor/views/embedded/lazy_video_embedded_view.js +41 -0
- data/app/assets/javascripts/pageflow/editor/views/entry_preview_view.js +6 -6
- data/app/assets/javascripts/pageflow/editor/views/inputs/page_link_input_view.js +9 -0
- data/app/assets/javascripts/pageflow/editor/views/inputs/reference_input_view.js +66 -0
- data/app/assets/javascripts/pageflow/editor/views/list_item_view.js +95 -0
- data/app/assets/javascripts/pageflow/editor/views/list_view.js +59 -0
- data/app/assets/javascripts/pageflow/editor/views/loading_view.js +5 -0
- data/app/assets/javascripts/pageflow/editor/views/model_thumbnail_view.js +37 -0
- data/app/assets/javascripts/pageflow/editor/views/navigatable_page_item_view.js +1 -0
- data/app/assets/javascripts/pageflow/editor/views/other_entries_collection_view.js +4 -4
- data/app/assets/javascripts/pageflow/editor/views/other_entry_item_view.js +2 -1
- data/app/assets/javascripts/pageflow/editor/views/page_item_view.js +2 -2
- data/app/assets/javascripts/pageflow/editor/views/page_link_item_view.js +51 -0
- data/app/assets/javascripts/pageflow/editor/views/page_links_view.js +45 -0
- data/app/assets/javascripts/pageflow/editor/views/page_preview_view.js +24 -16
- data/app/assets/javascripts/pageflow/editor/views/page_selection_view.js +46 -0
- data/app/assets/javascripts/pageflow/editor/views/page_thumbnail_view.js +2 -29
- data/app/assets/javascripts/pageflow/editor/views/publish_entry_view.js +95 -10
- data/app/assets/javascripts/pageflow/editor/views/scrolling_view.js +24 -0
- data/app/assets/javascripts/pageflow/entry_data.js +35 -0
- data/app/assets/javascripts/pageflow/features.js +68 -98
- data/app/assets/javascripts/pageflow/fullscreen.js +24 -0
- data/app/assets/javascripts/pageflow/highlighted_page.js +48 -0
- data/app/assets/javascripts/pageflow/history.js +50 -18
- data/app/assets/javascripts/pageflow/history/hash_adapter.js +36 -0
- data/app/assets/javascripts/pageflow/history/push_state_adapter.js +37 -0
- data/app/assets/javascripts/pageflow/history/simulated_adapter.js +44 -0
- data/app/assets/javascripts/pageflow/media_player.js +25 -0
- data/app/assets/javascripts/pageflow/media_player/async_play.js +54 -0
- data/app/assets/javascripts/pageflow/media_player/hooks.js +24 -0
- data/app/assets/javascripts/pageflow/media_player/load_waiting.js +11 -0
- data/app/assets/javascripts/pageflow/media_player/volume_binding.js +72 -0
- data/app/assets/javascripts/pageflow/media_player/volume_fading.js +62 -0
- data/app/assets/javascripts/pageflow/multimedia_alert.js +13 -0
- data/app/assets/javascripts/pageflow/object.js +14 -0
- data/app/assets/javascripts/pageflow/page_transitions.js +27 -0
- data/app/assets/javascripts/pageflow/page_type.js +6 -0
- data/app/assets/javascripts/pageflow/page_types/audio.js +17 -21
- data/app/assets/javascripts/pageflow/page_types/background_video.js +18 -17
- data/app/assets/javascripts/pageflow/page_types/mixins/common_page_css_classes.js +29 -4
- data/app/assets/javascripts/pageflow/page_types/video.js +73 -36
- data/app/assets/javascripts/pageflow/preload.js +9 -6
- data/app/assets/javascripts/pageflow/ready.js +18 -14
- data/app/assets/javascripts/pageflow/seed_entry_data.js +43 -0
- data/app/assets/javascripts/pageflow/settings.js +17 -4
- data/app/assets/javascripts/pageflow/slideshow.js +103 -23
- data/app/assets/javascripts/pageflow/slideshow/adjacent_pages.js +26 -0
- data/app/assets/javascripts/pageflow/slideshow/adjacent_preparer.js +44 -0
- data/app/assets/javascripts/pageflow/slideshow/atmo.js +105 -0
- data/app/assets/javascripts/pageflow/slideshow/dom_order_scroll_navigator.js +29 -0
- data/app/assets/javascripts/pageflow/slideshow/lazy_page_widget.js +49 -0
- data/app/assets/javascripts/pageflow/slideshow/page_widget.js +60 -26
- data/app/assets/javascripts/pageflow/slideshow/progressive_preload.js +16 -7
- data/app/assets/javascripts/pageflow/slideshow/scroll_indicator_widget.js +45 -7
- data/app/assets/javascripts/pageflow/slideshow/scroller_widget.js +42 -5
- data/app/assets/javascripts/pageflow/ui.js +1 -0
- data/app/assets/javascripts/pageflow/ui/object.js +4 -13
- data/app/assets/javascripts/pageflow/ui/utils/i18n_utils.js +23 -0
- data/app/assets/javascripts/pageflow/ui/views/collection_view.js +8 -4
- data/app/assets/javascripts/pageflow/ui/views/configuration_editor_tab_view.js +6 -5
- data/app/assets/javascripts/pageflow/ui/views/configuration_editor_view.js +2 -11
- data/app/assets/javascripts/pageflow/ui/views/inputs/select_input_view.js +6 -1
- data/app/assets/javascripts/pageflow/ui/views/inputs/text_input_view.js +4 -0
- data/app/assets/javascripts/pageflow/ui/views/mixins/input_view.js +149 -6
- data/app/assets/javascripts/pageflow/ui/views/mixins/subview_container.js +4 -0
- data/app/assets/javascripts/pageflow/video_player.js +5 -0
- data/app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js +1 -1
- data/app/assets/javascripts/pageflow/video_player/lazy.js +8 -4
- data/app/assets/javascripts/pageflow/video_player/media_events.js +1 -1
- data/app/assets/javascripts/pageflow/video_player/play_button_patch.js +1 -1
- data/app/assets/javascripts/pageflow/video_player/prebuffering.js +1 -1
- data/app/assets/javascripts/pageflow/widgets/fullscreen_button.js +26 -0
- data/app/assets/javascripts/pageflow/widgets/multimedia_alert.js +21 -5
- data/app/assets/javascripts/pageflow/widgets/mute_button.js +42 -0
- data/app/assets/javascripts/pageflow/widgets/navigation.js +5 -78
- data/app/assets/javascripts/pageflow/widgets/navigation_mobile.js +4 -0
- data/app/assets/javascripts/pageflow/widgets/page_navigation_list.js +28 -34
- data/app/assets/javascripts/pageflow/widgets/parent_page_button.js +27 -0
- data/app/assets/javascripts/pageflow/widgets/skip_page_button.js +22 -0
- data/app/assets/javascripts/pageflow/widgets/top_button.js +6 -7
- data/app/assets/javascripts/pageflow/widgets/volume_slider.js +62 -0
- data/app/assets/stylesheets/pageflow/admin/entries.css.scss +10 -0
- data/app/assets/stylesheets/pageflow/animations.css.scss +1 -0
- data/app/assets/stylesheets/pageflow/animations/loading.css.scss +8 -0
- data/app/assets/stylesheets/pageflow/animations/scroll.css.scss +18 -0
- data/app/assets/stylesheets/pageflow/base.css.scss +3 -1
- data/app/assets/stylesheets/pageflow/delayed_text_fade_in.css.scss +49 -0
- data/app/assets/stylesheets/pageflow/editor/base.css.scss +15 -2
- data/app/assets/stylesheets/pageflow/editor/disabled_atmo_indicator.css.scss +13 -0
- data/app/assets/stylesheets/pageflow/editor/drop_down_button.css.scss +54 -0
- data/app/assets/stylesheets/pageflow/editor/files_explorer.css.scss +6 -0
- data/app/assets/stylesheets/pageflow/editor/indicators.css.scss +5 -0
- data/app/assets/stylesheets/pageflow/editor/inputs.css.scss +1 -0
- data/app/assets/stylesheets/pageflow/editor/inputs/reference.css.scss +51 -0
- data/app/assets/stylesheets/pageflow/editor/list.css.scss +108 -0
- data/app/assets/stylesheets/pageflow/editor/loading.css.scss +31 -0
- data/app/assets/stylesheets/pageflow/editor/outline.css.scss +7 -5
- data/app/assets/stylesheets/pageflow/editor/page_links.css.scss +58 -0
- data/app/assets/stylesheets/pageflow/editor/page_selection.css.scss +39 -0
- data/app/assets/stylesheets/pageflow/editor/publish_entry.css.scss +38 -1
- data/app/assets/stylesheets/pageflow/entries.css.scss +17 -9
- data/app/assets/stylesheets/pageflow/navigation_bar.css.scss +4 -0
- data/app/assets/stylesheets/pageflow/page_transitions.css.scss +10 -0
- data/app/assets/stylesheets/pageflow/page_transitions/crossfade.css.scss +29 -0
- data/app/assets/stylesheets/pageflow/page_transitions/cut.css.scss +23 -0
- data/app/assets/stylesheets/pageflow/page_transitions/fade.css.scss +78 -0
- data/app/assets/stylesheets/pageflow/page_transitions/fade_to_black.css.scss +107 -0
- data/app/assets/stylesheets/pageflow/page_transitions/scroll.css.scss +20 -0
- data/app/assets/stylesheets/pageflow/page_transitions/scroll_in.css.scss +66 -0
- data/app/assets/stylesheets/pageflow/page_transitions/scroll_in_right.css.scss +68 -0
- data/app/assets/stylesheets/pageflow/page_transitions/scroll_left.css.scss +20 -0
- data/app/assets/stylesheets/pageflow/page_transitions/scroll_right.css.scss +20 -0
- data/app/assets/stylesheets/pageflow/page_types.css.scss +1 -3
- data/app/assets/stylesheets/pageflow/page_types/video.css.scss +0 -4
- data/app/assets/stylesheets/pageflow/slideshow.css.scss +0 -145
- data/app/assets/stylesheets/pageflow/text_variants.css.scss +0 -4
- data/app/assets/stylesheets/pageflow/themes/default/navigation.css.scss +0 -3
- data/app/controllers/concerns/pageflow/public_https_mode.rb +13 -0
- data/app/controllers/pageflow/application_controller.rb +0 -6
- data/app/controllers/pageflow/chapters_controller.rb +2 -1
- data/app/controllers/pageflow/editor/entries_controller.rb +2 -0
- data/app/controllers/pageflow/editor/entry_publications_controller.rb +3 -1
- data/app/controllers/pageflow/entries_controller.rb +16 -3
- data/app/controllers/pageflow/files_controller.rb +3 -1
- data/app/helpers/pageflow/admin/features_helper.rb +25 -0
- data/app/helpers/pageflow/background_image_helper.rb +40 -9
- data/app/helpers/pageflow/entries_helper.rb +10 -11
- data/app/helpers/pageflow/entry_json_seed_helper.rb +44 -0
- data/app/helpers/pageflow/help_entries_helper.rb +4 -4
- data/app/helpers/pageflow/page_types_helper.rb +4 -2
- data/app/helpers/pageflow/pages_helper.rb +20 -27
- data/app/helpers/pageflow/widgets_helper.rb +4 -4
- data/app/models/concerns/pageflow/feature_target.rb +37 -0
- data/app/models/pageflow/account.rb +2 -0
- data/app/models/pageflow/chapter.rb +6 -0
- data/app/models/pageflow/draft_entry.rb +2 -0
- data/app/models/pageflow/entry.rb +47 -9
- data/app/models/pageflow/entry_duplicate.rb +51 -0
- data/app/models/pageflow/image_file.rb +33 -13
- data/app/models/pageflow/page.rb +2 -2
- data/app/models/pageflow/published_entry.rb +7 -1
- data/app/views/admin/accounts/_form.html.erb +11 -1
- data/app/views/admin/features/_form.html.erb +16 -0
- data/app/views/components/pageflow/admin/features_tab.rb +10 -0
- data/app/views/components/pageflow/admin/revisions_tab.rb +4 -0
- data/app/views/layouts/pageflow/_meta_tags.html.erb +1 -1
- data/app/views/layouts/pageflow/application.html.erb +2 -2
- data/app/views/pageflow/editor/accounts/_account.json.jbuilder +1 -0
- data/app/views/pageflow/editor/entries/_entry.json.jbuilder +2 -1
- data/app/views/pageflow/editor/entries/_help_entries_seed.html.erb +2 -2
- data/app/views/pageflow/editor/entries/_indicators_seed.html.erb +3 -0
- data/app/views/pageflow/editor/entries/seed.json.erb +3 -2
- data/app/views/pageflow/editor/entry_publications/check.json.jbuilder +1 -0
- data/app/views/pageflow/editor/image_files/_image_file.json.jbuilder +1 -1
- data/app/views/pageflow/editor/themings/_theming.json.jbuilder +4 -0
- data/app/views/pageflow/editor/video_files/_video_file.json.jbuilder +1 -0
- data/app/views/pageflow/entries/_entry.html.erb +4 -3
- data/app/views/pageflow/entries/_indicators.html.erb +13 -0
- data/app/views/pageflow/entries/_mobile_navigation.html.erb +3 -15
- data/app/views/pageflow/entries/edit.html.erb +9 -1
- data/app/views/pageflow/entries/navigation/_bar_top.html.erb +3 -15
- data/app/views/pageflow/entries/share_menu/_facebook_link.html.erb +12 -0
- data/app/views/pageflow/entries/share_menu/_google_link.html.erb +12 -0
- data/app/views/pageflow/entries/share_menu/_twitter_link.html.erb +12 -0
- data/app/views/pageflow/entries/show.css.erb +12 -2
- data/app/views/pageflow/entries/show.html.erb +5 -1
- data/app/views/pageflow/page_types/_page_type.json.jbuilder +7 -1
- data/app/views/pageflow/pages/_page.html.erb +2 -2
- data/app/views/pageflow/pages/templates/_audio.html.erb +10 -0
- data/config/initializers/admin_resource_tabs.rb +1 -0
- data/config/initializers/features.rb +9 -0
- data/config/initializers/page_type_helpers.rb +1 -1
- data/config/initializers/paperclip.rb +1 -1
- data/config/initializers/zencoder.rb +1 -1
- data/config/locales/de.yml +132 -71
- data/config/locales/en.yml +118 -191
- data/db/migrate/20141211110226_add_configuration_to_chapters.rb +5 -0
- data/db/migrate/20150115175116_add_features_configuration_to_accounts.rb +5 -0
- data/db/migrate/20150115175207_add_features_configuration_to_entries.rb +5 -0
- data/db/migrate/20150603091823_add_password_attributes_to_revisions.rb +6 -0
- data/db/migrate/20151022080518_add_first_published_at_to_entries.rb +14 -0
- data/lib/generators/pageflow/initializer/templates/pageflow.rb +26 -17
- data/lib/generators/pageflow/theme/theme_generator.rb +2 -1
- data/lib/pageflow.rb +2 -46
- data/lib/pageflow/admin/form_input.rb +18 -0
- data/lib/pageflow/admin/form_inputs.rb +41 -0
- data/lib/pageflow/built_in_page_type.rb +0 -4
- data/lib/pageflow/configuration.rb +74 -18
- data/lib/pageflow/feature.rb +33 -0
- data/lib/pageflow/features.rb +68 -0
- data/lib/pageflow/global_config_api.rb +118 -0
- data/lib/pageflow/page_type_feature.rb +21 -0
- data/lib/pageflow/page_types.rb +29 -0
- data/lib/pageflow/theme.rb +20 -0
- data/lib/pageflow/themes.rb +26 -0
- data/lib/pageflow/version.rb +1 -1
- data/spec/factories/entries.rb +6 -0
- data/spec/factories/feature_targets.rb +4 -0
- data/spec/fixtures/image.gif +0 -0
- data/spec/fixtures/video.mp4 +0 -0
- data/vendor/assets/javascripts/audio5.min.js +12 -8
- data/vendor/assets/javascripts/iscroll.js +1 -1
- metadata +144 -24
- data/app/assets/images/pageflow/internal_links_pictogram.png +0 -0
- data/app/assets/images/pageflow/internal_links_pictogram_small.png +0 -0
- data/app/assets/images/pageflow/internal_links_sprite.png +0 -0
- data/app/assets/images/pageflow/ov-internal_links.png +0 -0
- data/app/assets/images/pageflow/themes/default/internal_links_sprite.png +0 -0
- data/app/assets/javascripts/pageflow/editor/templates/embedded/page_link.jst.ejs +0 -3
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/internal_links.js +0 -24
- data/app/assets/javascripts/pageflow/editor/views/draggable_page_item_view.js +0 -31
- data/app/assets/javascripts/pageflow/editor/views/embedded/page_link_embedded_view.js +0 -176
- data/app/assets/javascripts/pageflow/features/video.js +0 -16
- data/app/assets/javascripts/pageflow/page_types/internal_links.js +0 -55
- data/app/assets/javascripts/pageflow/ui/templates/inputs/page_reference.jst.ejs +0 -6
- data/app/assets/javascripts/pageflow/ui/views/inputs/page_reference_input_view.js +0 -44
- data/app/assets/stylesheets/pageflow/editor/embedded.css.scss +0 -104
- data/app/assets/stylesheets/pageflow/page_types/internal_links.css.scss +0 -222
- data/app/views/pageflow/pages/templates/_internal_links.html.erb +0 -31
@@ -4,10 +4,12 @@ pageflow.Settings = Backbone.Model.extend({
|
|
4
4
|
},
|
5
5
|
|
6
6
|
initialize: function() {
|
7
|
-
|
8
|
-
|
7
|
+
var storage = this.getLocalStorage();
|
8
|
+
|
9
|
+
if (storage) {
|
10
|
+
if (storage['pageflow.settings']) {
|
9
11
|
try {
|
10
|
-
this.set(JSON.parse(
|
12
|
+
this.set(JSON.parse(storage['pageflow.settings']));
|
11
13
|
}
|
12
14
|
catch(e) {
|
13
15
|
pageflow.log(e);
|
@@ -15,9 +17,20 @@ pageflow.Settings = Backbone.Model.extend({
|
|
15
17
|
}
|
16
18
|
|
17
19
|
this.on('change', function() {
|
18
|
-
|
20
|
+
storage['pageflow.settings'] = JSON.stringify(this);
|
19
21
|
});
|
20
22
|
}
|
23
|
+
},
|
24
|
+
|
25
|
+
getLocalStorage: function() {
|
26
|
+
try {
|
27
|
+
return window.localStorage;
|
28
|
+
}
|
29
|
+
catch(e) {
|
30
|
+
// Safari throws SecurityError when accessing window.localStorage
|
31
|
+
// if cookies/website data are disabled.
|
32
|
+
return null;
|
33
|
+
}
|
21
34
|
}
|
22
35
|
});
|
23
36
|
|
@@ -1,18 +1,23 @@
|
|
1
|
+
//=require ./slideshow/atmo
|
2
|
+
//=require ./slideshow/lazy_page_widget
|
1
3
|
//=require ./slideshow/page_widget
|
2
4
|
//=require ./slideshow/scroller_widget
|
3
5
|
//=require ./slideshow/scroll_indicator_widget
|
4
6
|
//=require ./slideshow/hidden_text_indicator_widget
|
5
7
|
//=require ./slideshow/progressive_preload
|
8
|
+
//=require ./slideshow/adjacent_preparer
|
6
9
|
//=require ./slideshow/swipe_gesture
|
7
10
|
//=require ./slideshow/hide_text
|
8
11
|
//=require ./slideshow/hide_text_on_swipe
|
12
|
+
//=require ./slideshow/dom_order_scroll_navigator
|
9
13
|
|
10
14
|
pageflow.Slideshow = function($el, configurations) {
|
11
|
-
var
|
12
|
-
transitioning = false,
|
15
|
+
var transitioning = false,
|
13
16
|
preload = new pageflow.ProgressivePreload(),
|
14
17
|
currentPage = $(),
|
15
|
-
|
18
|
+
pages = $(),
|
19
|
+
that = this,
|
20
|
+
currentPageIndex;
|
16
21
|
|
17
22
|
configurations = configurations || {};
|
18
23
|
|
@@ -20,7 +25,7 @@ pageflow.Slideshow = function($el, configurations) {
|
|
20
25
|
if (transitioning) { return; }
|
21
26
|
transitioning = true;
|
22
27
|
|
23
|
-
fn.call(context);
|
28
|
+
var transitionDuration = fn.call(context);
|
24
29
|
|
25
30
|
setTimeout(function() {
|
26
31
|
transitioning = false;
|
@@ -37,25 +42,49 @@ pageflow.Slideshow = function($el, configurations) {
|
|
37
42
|
return result;
|
38
43
|
}
|
39
44
|
|
45
|
+
function currentPagePermaId() {
|
46
|
+
return parseInt(currentPage.attr('id'), 10);
|
47
|
+
}
|
48
|
+
|
40
49
|
this.nextPageExists = function() {
|
41
|
-
return (
|
50
|
+
return this.scrollNavigator.nextPageExists(currentPage, pages);
|
51
|
+
};
|
52
|
+
|
53
|
+
this.previousPageExists = function() {
|
54
|
+
return this.scrollNavigator.previousPageExists(currentPage, pages);
|
55
|
+
};
|
56
|
+
|
57
|
+
this.isOnLandingPage = function() {
|
58
|
+
return currentPage.is(this.scrollNavigator.getLandingPage(pages));
|
59
|
+
};
|
60
|
+
|
61
|
+
this.goToLandingPage = function() {
|
62
|
+
this.goTo(this.scrollNavigator.getLandingPage(pages));
|
42
63
|
};
|
43
64
|
|
44
65
|
this.back = function() {
|
45
|
-
this.
|
66
|
+
this.scrollNavigator.back(currentPage);
|
46
67
|
};
|
47
68
|
|
48
69
|
this.next = function() {
|
49
|
-
this.
|
70
|
+
this.scrollNavigator.next(currentPage);
|
50
71
|
};
|
51
72
|
|
52
|
-
this.
|
53
|
-
|
73
|
+
this.parentPageExists = function() {
|
74
|
+
return !!pageflow.entryData.getParentPagePermaIdByPagePermaId(currentPagePermaId());
|
54
75
|
};
|
55
76
|
|
56
|
-
this.
|
77
|
+
this.goToParentPage = function() {
|
78
|
+
this.goToByPermaId(pageflow.entryData.getParentPagePermaIdByPagePermaId(currentPagePermaId()));
|
79
|
+
};
|
80
|
+
|
81
|
+
this.goToById = function(id, options) {
|
82
|
+
return this.goTo($el.find('[data-id=' + id + ']'), options);
|
83
|
+
};
|
84
|
+
|
85
|
+
this.goToByPermaId = function(permaId, options) {
|
57
86
|
if (permaId) {
|
58
|
-
this.goTo($el.find('#' + permaId));
|
87
|
+
return this.goTo($el.find('#' + permaId), options);
|
59
88
|
}
|
60
89
|
};
|
61
90
|
|
@@ -68,19 +97,31 @@ pageflow.Slideshow = function($el, configurations) {
|
|
68
97
|
currentPage = page;
|
69
98
|
currentPageIndex = currentPage.index();
|
70
99
|
|
71
|
-
var direction =
|
100
|
+
var direction = this.scrollNavigator.getTransitionDirection(previousPage, currentPage, options);
|
72
101
|
|
73
|
-
previousPage.page('deactivate', {
|
74
|
-
|
102
|
+
var outDuration = previousPage.page('deactivate', {
|
103
|
+
direction: direction,
|
104
|
+
transition: options.transition
|
105
|
+
});
|
106
|
+
|
107
|
+
var inDuration = currentPage.page('activate', {
|
108
|
+
direction: direction,
|
109
|
+
position: options.position,
|
110
|
+
transition: options.transition
|
111
|
+
});
|
75
112
|
|
76
113
|
preload.start(currentPage);
|
77
|
-
$el.trigger('slideshowchangepage');
|
114
|
+
$el.trigger('slideshowchangepage', [options]);
|
115
|
+
|
116
|
+
return Math.max(outDuration, inDuration);
|
78
117
|
}, this);
|
118
|
+
|
119
|
+
return true;
|
79
120
|
}
|
80
121
|
};
|
81
122
|
|
82
123
|
this.goToFirstPage = function() {
|
83
|
-
this.goTo(pages.first());
|
124
|
+
return this.goTo(pages.first());
|
84
125
|
};
|
85
126
|
|
86
127
|
this.update = function() {
|
@@ -102,6 +143,10 @@ pageflow.Slideshow = function($el, configurations) {
|
|
102
143
|
return currentPage;
|
103
144
|
};
|
104
145
|
|
146
|
+
this.currentPageConfiguration = function() {
|
147
|
+
return currentPage.page('getConfiguration');
|
148
|
+
};
|
149
|
+
|
105
150
|
function ensureCurrentPage() {
|
106
151
|
var newCurrentPage = findNewCurrentPage();
|
107
152
|
|
@@ -116,7 +161,7 @@ pageflow.Slideshow = function($el, configurations) {
|
|
116
161
|
|
117
162
|
function findNewCurrentPage() {
|
118
163
|
if (!currentPage.length) {
|
119
|
-
return
|
164
|
+
return that.scrollNavigator.getLandingPage(pages);
|
120
165
|
}
|
121
166
|
else if (!currentPage.parent().length) {
|
122
167
|
return nearestPage(currentPageIndex);
|
@@ -140,7 +185,7 @@ pageflow.Slideshow = function($el, configurations) {
|
|
140
185
|
}, this));
|
141
186
|
|
142
187
|
$el.on('click', 'a.to_top', _.bind(function() {
|
143
|
-
this.
|
188
|
+
this.goToLandingPage();
|
144
189
|
}, this));
|
145
190
|
|
146
191
|
$(window).on('resize', this.triggerResizeHooks);
|
@@ -155,9 +200,44 @@ pageflow.Slideshow = function($el, configurations) {
|
|
155
200
|
pageflow.hideText.deactivate();
|
156
201
|
});
|
157
202
|
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
203
|
+
$el.find('.scroll_indicator').scrollIndicator({parent: this});
|
204
|
+
|
205
|
+
this.scrollNavigator = new pageflow.DomOrderScrollNavigator(this);
|
206
|
+
this.preparer = pageflow.AdjacentPreparer.create(function() { return pages; }, this.scrollNavigator).attach(pageflow.events);
|
207
|
+
};
|
208
|
+
|
209
|
+
pageflow.Slideshow.setup = function(options) {
|
210
|
+
function configurationsById(pages) {
|
211
|
+
return _.reduce(pages, function(memo, page) {
|
212
|
+
memo[page.id] = page.configuration;
|
213
|
+
return memo;
|
214
|
+
}, {});
|
215
|
+
}
|
216
|
+
|
217
|
+
pageflow.slides = new pageflow.Slideshow(
|
218
|
+
options.element,
|
219
|
+
configurationsById(options.pages)
|
220
|
+
);
|
221
|
+
|
222
|
+
pageflow.features.enable('slideshow', options.enabledFeatureNames || []);
|
223
|
+
|
224
|
+
pageflow.atmo = pageflow.Atmo.create(
|
225
|
+
pageflow.slides,
|
226
|
+
pageflow.events,
|
227
|
+
pageflow.audio
|
228
|
+
);
|
229
|
+
|
230
|
+
pageflow.history = pageflow.History.create(
|
231
|
+
pageflow.slides,
|
232
|
+
{simulate: options.simulateHistory}
|
233
|
+
);
|
234
|
+
|
235
|
+
if (options.beforeFirstUpdate) {
|
236
|
+
options.beforeFirstUpdate();
|
237
|
+
}
|
238
|
+
|
239
|
+
pageflow.slides.update();
|
240
|
+
pageflow.history.start();
|
241
|
+
|
242
|
+
return pageflow.slides;
|
163
243
|
};
|
@@ -0,0 +1,26 @@
|
|
1
|
+
pageflow.AdjacentPages = pageflow.Object.extend({
|
2
|
+
initialize: function(pages, scrollNavigator) {
|
3
|
+
this.pages = pages;
|
4
|
+
this.scrollNavigator = scrollNavigator;
|
5
|
+
},
|
6
|
+
|
7
|
+
of: function(page) {
|
8
|
+
var result = [];
|
9
|
+
var pages = this.pages();
|
10
|
+
var nextPage = this.scrollNavigator.getNextPage(page.element, pages);
|
11
|
+
|
12
|
+
if (nextPage.length) {
|
13
|
+
result.push(nextPage.page('instance'));
|
14
|
+
}
|
15
|
+
|
16
|
+
_(page.linkedPages()).each(function(permaId) {
|
17
|
+
var linkedPage = pages.filter('#' + permaId);
|
18
|
+
|
19
|
+
if (linkedPage.length) {
|
20
|
+
result.push(linkedPage.page('instance'));
|
21
|
+
}
|
22
|
+
}, this);
|
23
|
+
|
24
|
+
return result;
|
25
|
+
}
|
26
|
+
});
|
@@ -0,0 +1,44 @@
|
|
1
|
+
//= require ./adjacent_pages
|
2
|
+
|
3
|
+
pageflow.AdjacentPreparer = pageflow.Object.extend({
|
4
|
+
initialize: function(adjacentPages) {
|
5
|
+
this.adjacentPages = adjacentPages;
|
6
|
+
},
|
7
|
+
|
8
|
+
attach: function(events) {
|
9
|
+
this.listenTo(events, 'page:change', this.schedule);
|
10
|
+
},
|
11
|
+
|
12
|
+
schedule: function(page) {
|
13
|
+
clearTimeout(this.scheduleTimeout);
|
14
|
+
|
15
|
+
var prepare = _.bind(this.prepareAdjacent, this, page.element.page('instance'));
|
16
|
+
this.scheduleTimeout = setTimeout(prepare, page.prepareNextPageTimeout());
|
17
|
+
},
|
18
|
+
|
19
|
+
prepareAdjacent: function(page) {
|
20
|
+
var adjacentPages = this.adjacentPages.of(page);
|
21
|
+
var noLongerAdjacentPages = _.difference(this.lastAdjacentPages, adjacentPages, [page]);
|
22
|
+
var newAdjacentPages = _.difference(adjacentPages, this.lastAdjacentPages);
|
23
|
+
|
24
|
+
_(noLongerAdjacentPages).each(function(page) {
|
25
|
+
page.unprepare();
|
26
|
+
});
|
27
|
+
|
28
|
+
_(newAdjacentPages).each(function(adjacentPage) {
|
29
|
+
adjacentPage.prepare();
|
30
|
+
adjacentPage.preload();
|
31
|
+
});
|
32
|
+
|
33
|
+
this.lastAdjacentPages = adjacentPages;
|
34
|
+
}
|
35
|
+
});
|
36
|
+
|
37
|
+
pageflow.AdjacentPreparer.create = function(pages, scrollNavigator) {
|
38
|
+
return new pageflow.AdjacentPreparer(
|
39
|
+
new pageflow.AdjacentPages(
|
40
|
+
pages,
|
41
|
+
scrollNavigator
|
42
|
+
)
|
43
|
+
);
|
44
|
+
};
|
@@ -0,0 +1,105 @@
|
|
1
|
+
(function() {
|
2
|
+
var attributeName = 'atmo_audio_file_id';
|
3
|
+
|
4
|
+
pageflow.Atmo = pageflow.Object.extend({
|
5
|
+
initialize: function(slideshow, events, multiPlayer) {
|
6
|
+
this.slideshow = slideshow;
|
7
|
+
this.multiPlayer = multiPlayer;
|
8
|
+
this.disabled = false;
|
9
|
+
|
10
|
+
this.listenTo(events, 'page:change page:update', function() {
|
11
|
+
this.update();
|
12
|
+
});
|
13
|
+
},
|
14
|
+
|
15
|
+
disable: function() {
|
16
|
+
this.disabled = true;
|
17
|
+
this.multiPlayer.fadeOutAndPause();
|
18
|
+
|
19
|
+
pageflow.events.trigger('atmo:disabled');
|
20
|
+
},
|
21
|
+
|
22
|
+
enable: function() {
|
23
|
+
this.disabled = false;
|
24
|
+
this.update();
|
25
|
+
|
26
|
+
pageflow.events.trigger('atmo:enabled');
|
27
|
+
},
|
28
|
+
|
29
|
+
pause: function() {
|
30
|
+
if (pageflow.browser.has('volume control support')) {
|
31
|
+
return this.multiPlayer.fadeOutAndPause();
|
32
|
+
}
|
33
|
+
else {
|
34
|
+
this.multiPlayer.pause();
|
35
|
+
}
|
36
|
+
},
|
37
|
+
|
38
|
+
turnDown: function() {
|
39
|
+
if (pageflow.browser.has('volume control support')) {
|
40
|
+
return this.multiPlayer.changeVolumeFactor(0.2);
|
41
|
+
}
|
42
|
+
else {
|
43
|
+
this.multiPlayer.pause();
|
44
|
+
}
|
45
|
+
},
|
46
|
+
|
47
|
+
resume: function() {
|
48
|
+
if (this.multiPlayer.paused()) {
|
49
|
+
if (this.disabled) {
|
50
|
+
return new $.Deferred().resolve().promise();
|
51
|
+
}
|
52
|
+
else {
|
53
|
+
return this.multiPlayer.resumeAndFadeIn();
|
54
|
+
}
|
55
|
+
}
|
56
|
+
else {
|
57
|
+
return this.multiPlayer.changeVolumeFactor(1);
|
58
|
+
}
|
59
|
+
},
|
60
|
+
|
61
|
+
update: function() {
|
62
|
+
var configuration = this.slideshow.currentPageConfiguration();
|
63
|
+
|
64
|
+
if (!this.disabled) {
|
65
|
+
this.multiPlayer.fadeTo(configuration[attributeName]);
|
66
|
+
}
|
67
|
+
},
|
68
|
+
|
69
|
+
createMediaPlayerHooks: function(configuration) {
|
70
|
+
var atmo = this;
|
71
|
+
|
72
|
+
return {
|
73
|
+
before: function() {
|
74
|
+
if (configuration.atmo_during_playback === 'mute') {
|
75
|
+
atmo.pause();
|
76
|
+
}
|
77
|
+
else if (configuration.atmo_during_playback === 'turn_down') {
|
78
|
+
atmo.turnDown();
|
79
|
+
}
|
80
|
+
},
|
81
|
+
|
82
|
+
after: function() {
|
83
|
+
atmo.resume();
|
84
|
+
}
|
85
|
+
};
|
86
|
+
}
|
87
|
+
});
|
88
|
+
|
89
|
+
pageflow.Atmo.create = function(slideshow, events, audio) {
|
90
|
+
return new pageflow.Atmo(
|
91
|
+
slideshow,
|
92
|
+
events,
|
93
|
+
audio.createMultiPlayer({
|
94
|
+
loop: true,
|
95
|
+
fadeDuration: 500,
|
96
|
+
crossFade: true,
|
97
|
+
playFromBeginning: false,
|
98
|
+
rewindOnChange: true,
|
99
|
+
pauseInBackground: true
|
100
|
+
})
|
101
|
+
);
|
102
|
+
};
|
103
|
+
|
104
|
+
pageflow.Atmo.duringPlaybackModes = ['play', 'mute', 'turn_down'];
|
105
|
+
}());
|
@@ -0,0 +1,29 @@
|
|
1
|
+
pageflow.DomOrderScrollNavigator = function(slideshow) {
|
2
|
+
this.getLandingPage = function(pages) {
|
3
|
+
return pages.first();
|
4
|
+
};
|
5
|
+
|
6
|
+
this.back = function(currentPage) {
|
7
|
+
slideshow.goTo(currentPage.prev('.page'), {position: 'bottom'});
|
8
|
+
};
|
9
|
+
|
10
|
+
this.next = function(currentPage) {
|
11
|
+
slideshow.goTo(currentPage.next('.page'));
|
12
|
+
};
|
13
|
+
|
14
|
+
this.nextPageExists = function(currentPage, pages) {
|
15
|
+
return !currentPage.is(pages.last());
|
16
|
+
};
|
17
|
+
|
18
|
+
this.previousPageExists = function(currentPage, pages) {
|
19
|
+
return !currentPage.is(pages.first());
|
20
|
+
};
|
21
|
+
|
22
|
+
this.getNextPage = function(currentPage, pages) {
|
23
|
+
return currentPage.next('.page');
|
24
|
+
};
|
25
|
+
|
26
|
+
this.getTransitionDirection = function(previousPage, currentPage, options) {
|
27
|
+
return (currentPage.index() > previousPage.index() ? 'forwards' : 'backwards');
|
28
|
+
};
|
29
|
+
};
|