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
@@ -11,6 +11,21 @@ pageflow.EditorApi = pageflow.Object.extend({
|
|
11
11
|
this.initializers = [];
|
12
12
|
this.fileSelectionHandlers = {};
|
13
13
|
|
14
|
+
/**
|
15
|
+
* Display Backbone/Marionette View inside the main panel
|
16
|
+
* of the editor.
|
17
|
+
*/
|
18
|
+
this.showViewInMainPanel = function(view) {
|
19
|
+
pageflow.app.mainRegion.show(view);
|
20
|
+
};
|
21
|
+
|
22
|
+
/**
|
23
|
+
* Display the Pageflow-Preview inside the main panel.
|
24
|
+
*/
|
25
|
+
this.showPreview = function() {
|
26
|
+
pageflow.app.mainRegion.$el.empty();
|
27
|
+
};
|
28
|
+
|
14
29
|
/**
|
15
30
|
* Register additional router and controller for sidebar.
|
16
31
|
*
|
@@ -44,6 +59,7 @@ pageflow.EditorApi = pageflow.Object.extend({
|
|
44
59
|
* Supported options:
|
45
60
|
* - translationKey: for the label
|
46
61
|
* - path: route to link to
|
62
|
+
* - click: click handler
|
47
63
|
*/
|
48
64
|
this.registerMainMenuItem = function(options) {
|
49
65
|
this.mainMenuItems.push(options);
|
@@ -121,6 +137,14 @@ pageflow.EditorApi = pageflow.Object.extend({
|
|
121
137
|
this.navigate('/files/' + fileType + '?handler=' + handlerName + '&payload=' + encodeURIComponent(JSON.stringify(payload)), {trigger: true});
|
122
138
|
};
|
123
139
|
|
140
|
+
/**
|
141
|
+
* Returns a promise which resolves to a page selected by the
|
142
|
+
* user.
|
143
|
+
*/
|
144
|
+
this.selectPage = function() {
|
145
|
+
return pageflow.PageSelectionView.selectPage();
|
146
|
+
};
|
147
|
+
|
124
148
|
/**
|
125
149
|
* Failures API
|
126
150
|
*
|
@@ -136,6 +160,11 @@ pageflow.EditorApi = pageflow.Object.extend({
|
|
136
160
|
*/
|
137
161
|
this.failures = new pageflow.FailuresAPI();
|
138
162
|
|
163
|
+
/**
|
164
|
+
* Setup editor integration for page types.
|
165
|
+
*/
|
166
|
+
this.pageTypes = new pageflow.PageTypes();
|
167
|
+
|
139
168
|
/**
|
140
169
|
*
|
141
170
|
*/
|
@@ -0,0 +1,42 @@
|
|
1
|
+
pageflow.PageType = pageflow.Object.extend({
|
2
|
+
initialize: function(name, options, seed) {
|
3
|
+
this.name = name;
|
4
|
+
this.options = options;
|
5
|
+
this.seed = seed;
|
6
|
+
},
|
7
|
+
|
8
|
+
translationKey: function() {
|
9
|
+
return this.seed.translation_key;
|
10
|
+
},
|
11
|
+
|
12
|
+
thumbnailCandidates: function() {
|
13
|
+
return this.seed.thumbnail_candidates;
|
14
|
+
},
|
15
|
+
|
16
|
+
pageLinks: function(configuration) {
|
17
|
+
if ('pageLinks' in this.options) {
|
18
|
+
return this.options.pageLinks(configuration);
|
19
|
+
}
|
20
|
+
},
|
21
|
+
|
22
|
+
configurationEditorView: function() {
|
23
|
+
return this.options.configurationEditorView ||
|
24
|
+
pageflow.ConfigurationEditorView.repository[this.name];
|
25
|
+
},
|
26
|
+
|
27
|
+
embeddedViews: function() {
|
28
|
+
return this.options.embeddedViews;
|
29
|
+
},
|
30
|
+
|
31
|
+
createConfigurationEditorView: function(options) {
|
32
|
+
var constructor = this.configurationEditorView();
|
33
|
+
options.pageType = this.seed;
|
34
|
+
|
35
|
+
return new constructor(_.extend({
|
36
|
+
attributeTranslationKeyPrefixes: [
|
37
|
+
this.seed.translation_key_prefix + '.page_attributes',
|
38
|
+
'pageflow.common_page_attributes'
|
39
|
+
]
|
40
|
+
}, options));
|
41
|
+
}
|
42
|
+
});
|
@@ -0,0 +1,47 @@
|
|
1
|
+
pageflow.PageTypes = pageflow.Object.extend({
|
2
|
+
initialize: function() {
|
3
|
+
this.clientSideConfigs = {};
|
4
|
+
},
|
5
|
+
|
6
|
+
register: function(name, config) {
|
7
|
+
if (this._setup) {
|
8
|
+
throw 'Page types already set up. Register page types before initializers run.';
|
9
|
+
}
|
10
|
+
|
11
|
+
this.clientSideConfigs[name] = config;
|
12
|
+
},
|
13
|
+
|
14
|
+
setup: function(serverSideConfigs) {
|
15
|
+
var clientSideConfigs = this.clientSideConfigs;
|
16
|
+
this._setup = true;
|
17
|
+
|
18
|
+
this.pageTypes = _.map(serverSideConfigs, function(serverSideConfig) {
|
19
|
+
var clientSideConfig = clientSideConfigs[serverSideConfig.name] || {};
|
20
|
+
return new pageflow.PageType(serverSideConfig.name, clientSideConfig, serverSideConfig);
|
21
|
+
});
|
22
|
+
},
|
23
|
+
|
24
|
+
findByName: function(name) {
|
25
|
+
var result = this.find(function(pageType) {
|
26
|
+
return pageType.name === name;
|
27
|
+
});
|
28
|
+
|
29
|
+
if (!result) {
|
30
|
+
throw('Could not find page type with name "' + name +'"');
|
31
|
+
}
|
32
|
+
|
33
|
+
return result;
|
34
|
+
}
|
35
|
+
});
|
36
|
+
|
37
|
+
_.each(['each', 'map', 'reduce', 'first', 'find', 'pluck'], function(method) {
|
38
|
+
pageflow.PageTypes.prototype[method] = function() {
|
39
|
+
if (!this._setup) {
|
40
|
+
throw 'Page types are not yet set up.';
|
41
|
+
}
|
42
|
+
|
43
|
+
var args = Array.prototype.slice.call(arguments);
|
44
|
+
args.unshift(this.pageTypes);
|
45
|
+
return _[method].apply(_, args);
|
46
|
+
};
|
47
|
+
});
|
@@ -19,6 +19,7 @@
|
|
19
19
|
//= require ./models/uploaded_file
|
20
20
|
//= require ./models/hosted_file
|
21
21
|
//= require ./models/encoded_file
|
22
|
+
//= require ./models/configuration
|
22
23
|
//= require_tree ./models
|
23
24
|
//= require_tree ./collections/mixins
|
24
25
|
//= require ./collections/multi_collection
|
@@ -29,18 +30,23 @@
|
|
29
30
|
//= require_tree ./templates
|
30
31
|
|
31
32
|
//= require_tree ./views/mixins
|
33
|
+
//= require ./views/model_thumbnail_view
|
32
34
|
//= require ./views/file_item_view
|
33
35
|
//= require ./views/chapter_item_view
|
34
36
|
//= require ./views/page_item_view
|
37
|
+
//= require ./views/inputs/reference_input_view
|
35
38
|
//= require_tree ./views/configuration_editors
|
36
39
|
//= require_tree ./views
|
37
40
|
|
38
41
|
//= require ./initializers/setup_config
|
42
|
+
//= require ./initializers/setup_features
|
43
|
+
//= require ./initializers/setup_audio
|
39
44
|
//= require ./initializers/setup_help_entries
|
40
45
|
//= require ./initializers/setup_file_types
|
41
46
|
//= require ./initializers/setup_widget_types
|
42
47
|
//= require ./initializers/setup_collections
|
43
48
|
//= require ./initializers/setup_page_types
|
49
|
+
//= require ./initializers/setup_hotkeys
|
44
50
|
//= require ./initializers/edit_lock
|
45
51
|
//= require ./initializers/files_polling
|
46
52
|
//= require ./initializers/routing
|
@@ -55,7 +61,7 @@ pageflow.startEditor = function(options) {
|
|
55
61
|
jQuery(function() {
|
56
62
|
$.when(
|
57
63
|
$.getJSON('/editor/entries/' + options.entryId + '/seed'),
|
58
|
-
pageflow.
|
64
|
+
pageflow.browser.detectFeatures()
|
59
65
|
)
|
60
66
|
.done(function(result) {
|
61
67
|
pageflow.app.start(result[0]);
|
@@ -16,10 +16,14 @@ pageflow.SubsetCollection = Backbone.Collection.extend({
|
|
16
16
|
|
17
17
|
this.listenTo(this.parent, 'add', function(model, collection, options) {
|
18
18
|
if (!adding && this.filter(model)) {
|
19
|
-
this.add(model,
|
19
|
+
this.add(model, options);
|
20
20
|
}
|
21
21
|
});
|
22
22
|
|
23
|
+
this.listenTo(this.parent, 'remove', function(model) {
|
24
|
+
this.remove(model);
|
25
|
+
});
|
26
|
+
|
23
27
|
this.listenTo(this, 'add', function(model, collection, options) {
|
24
28
|
adding = true;
|
25
29
|
this.parent.add(model);
|
@@ -3,10 +3,16 @@ pageflow.app.addInitializer(function(options) {
|
|
3
3
|
el: $('body')
|
4
4
|
}).render();
|
5
5
|
|
6
|
-
|
6
|
+
new pageflow.ScrollingView({
|
7
|
+
el: $('sidebar .scrolling'),
|
8
|
+
region: pageflow.app.sidebarRegion
|
9
|
+
}).render();
|
10
|
+
|
11
|
+
pageflow.app.previewRegion.show(new pageflow.EntryPreviewView({
|
7
12
|
model: pageflow.entry
|
8
13
|
}));
|
9
14
|
|
15
|
+
pageflow.app.indicatorsRegion.show(new pageflow.DisabledAtmoIndicatorView().render());
|
10
16
|
pageflow.app.notificationsRegion.show(new pageflow.NotificationsView().render());
|
11
17
|
pageflow.app.helpButtonRegion.show(new pageflow.HelpButtonView().render());
|
12
18
|
|
@@ -14,7 +20,9 @@ pageflow.app.addInitializer(function(options) {
|
|
14
20
|
});
|
15
21
|
|
16
22
|
pageflow.app.addRegions({
|
17
|
-
|
23
|
+
previewRegion: '#entry_preview',
|
24
|
+
mainRegion: '#main_content',
|
25
|
+
indicatorsRegion: '#editor_indicators',
|
18
26
|
sidebarRegion: 'sidebar .container',
|
19
27
|
dialogRegion: '.dialog_container',
|
20
28
|
notificationsRegion: 'sidebar .notifications_container',
|
@@ -9,6 +9,13 @@ pageflow.app.addInitializer(function(options) {
|
|
9
9
|
pageflow.chapters = new pageflow.ChaptersCollection(options.chapters);
|
10
10
|
pageflow.entry = new pageflow.Entry(options.entry);
|
11
11
|
pageflow.theming = new pageflow.Theming(options.theming);
|
12
|
+
pageflow.account = new Backbone.Model(options.account);
|
13
|
+
|
14
|
+
pageflow.entryData = new pageflow.PreviewEntryData({
|
15
|
+
chapters: pageflow.chapters,
|
16
|
+
pages: pageflow.pages,
|
17
|
+
theming: pageflow.theming
|
18
|
+
});
|
12
19
|
|
13
20
|
pageflow.pages.sort();
|
14
21
|
|
@@ -0,0 +1,20 @@
|
|
1
|
+
pageflow.app.addInitializer(function(options) {
|
2
|
+
var KEY_A = 65;
|
3
|
+
var KEY_X = 88;
|
4
|
+
|
5
|
+
$(document).on('keydown', function(event) {
|
6
|
+
if (event.altKey && event.which === KEY_A) {
|
7
|
+
if (pageflow.features.isEnabled('atmo')) {
|
8
|
+
if (pageflow.atmo.disabled) {
|
9
|
+
pageflow.atmo.enable();
|
10
|
+
}
|
11
|
+
else {
|
12
|
+
pageflow.atmo.disable();
|
13
|
+
}
|
14
|
+
}
|
15
|
+
}
|
16
|
+
else if (event.altKey && event.which === KEY_X) {
|
17
|
+
pageflow.editor.navigate('pages/' + pageflow.slides.currentPage().data('id'), {trigger: true});
|
18
|
+
}
|
19
|
+
});
|
20
|
+
});
|
@@ -1,8 +1,3 @@
|
|
1
1
|
pageflow.app.addInitializer(function(options) {
|
2
|
-
pageflow.
|
3
|
-
|
4
|
-
pageflow.Page.typesByName = _.reduce(options.page_types, function(memo, pageType) {
|
5
|
-
memo[pageType.name] = pageType;
|
6
|
-
return memo;
|
7
|
-
}, {});
|
2
|
+
pageflow.editor.pageTypes.setup(options.page_types);
|
8
3
|
});
|
@@ -15,6 +15,13 @@ pageflow.Chapter = Backbone.Model.extend({
|
|
15
15
|
this.save();
|
16
16
|
});
|
17
17
|
|
18
|
+
this.configuration = new pageflow.ChapterConfiguration(this.get('configuration') || {});
|
19
|
+
|
20
|
+
this.listenTo(this.configuration, 'change', function() {
|
21
|
+
this.save();
|
22
|
+
this.trigger('change:configuration', this);
|
23
|
+
});
|
24
|
+
|
18
25
|
return attributes;
|
19
26
|
},
|
20
27
|
|
@@ -22,14 +29,26 @@ pageflow.Chapter = Backbone.Model.extend({
|
|
22
29
|
return this.isNew() ? this.collection.url() : '/chapters';
|
23
30
|
},
|
24
31
|
|
25
|
-
addPage: function() {
|
26
|
-
|
32
|
+
addPage: function(options) {
|
33
|
+
options = options || {};
|
34
|
+
|
35
|
+
var pos = ('position' in options) ? options.position : this.pages.length;
|
36
|
+
|
37
|
+
var create_opts = {
|
27
38
|
chapter_id: this.get('id'),
|
28
|
-
position:
|
39
|
+
position: pos
|
40
|
+
};
|
41
|
+
|
42
|
+
return this.pages.create(create_opts);
|
43
|
+
},
|
44
|
+
|
45
|
+
toJSON: function() {
|
46
|
+
return _.extend(_.clone(this.attributes), {
|
47
|
+
configuration: this.configuration.toJSON()
|
29
48
|
});
|
30
49
|
},
|
31
50
|
|
32
51
|
destroy: function() {
|
33
52
|
this.destroyWithDelay();
|
34
53
|
}
|
35
|
-
});
|
54
|
+
});
|
@@ -22,11 +22,13 @@ pageflow.Configuration = Backbone.Model.extend({
|
|
22
22
|
return this.parent.id;
|
23
23
|
},
|
24
24
|
|
25
|
-
getImageFileUrl: function(attribute) {
|
25
|
+
getImageFileUrl: function(attribute, options) {
|
26
|
+
options = options || {};
|
27
|
+
|
26
28
|
var file = this.getImageFile(attribute);
|
27
29
|
|
28
30
|
if (file && file.isReady()) {
|
29
|
-
return file.get('url');
|
31
|
+
return file.get(options.styleGroup ? options.styleGroup + '_url' : 'url');
|
30
32
|
}
|
31
33
|
|
32
34
|
return '';
|
@@ -110,7 +112,7 @@ pageflow.Configuration = Backbone.Model.extend({
|
|
110
112
|
|
111
113
|
return _.map(sources, function(source) {
|
112
114
|
var clone = _.clone(source);
|
113
|
-
clone.src = clone.src + '?e=' + parent.id;
|
115
|
+
clone.src = clone.src + '?e=' + parent.id + '&t=' + new Date().getTime();
|
114
116
|
return clone;
|
115
117
|
});
|
116
118
|
}
|
@@ -49,11 +49,13 @@ pageflow.Entry = Backbone.Model.extend({
|
|
49
49
|
});
|
50
50
|
},
|
51
51
|
|
52
|
-
addChapter: function() {
|
53
|
-
|
52
|
+
addChapter: function(params) {
|
53
|
+
var defaults = {
|
54
54
|
entry_id: this.get('id'),
|
55
|
+
title: '',
|
55
56
|
position: this.chapters.length
|
56
|
-
}
|
57
|
+
};
|
58
|
+
return this.chapters.create(_.extend(defaults, params));
|
57
59
|
},
|
58
60
|
|
59
61
|
addFileUpload: function(upload) {
|
@@ -93,7 +95,7 @@ pageflow.Entry = Backbone.Model.extend({
|
|
93
95
|
|
94
96
|
parse: function(response, options) {
|
95
97
|
if (response) {
|
96
|
-
this.set(_.pick(response, 'published', 'published_until'));
|
98
|
+
this.set(_.pick(response, 'published', 'published_until', 'password_protected'));
|
97
99
|
|
98
100
|
pageflow.editor.fileTypes.each(function(fileType) {
|
99
101
|
this.getFileCollection(fileType).set(response[fileType.collectionName], {add: false, remove: false});
|
@@ -1,8 +1,9 @@
|
|
1
1
|
pageflow.stageProvider = {
|
2
2
|
initialize: function() {
|
3
3
|
var finishedStates = [this.readyState];
|
4
|
+
var stages = _.result(this, 'stages') || [];
|
4
5
|
|
5
|
-
this.stages = new Backbone.Collection(_.chain(
|
6
|
+
this.stages = new Backbone.Collection(_.chain(stages).slice().reverse().map(function (options) {
|
6
7
|
var name = options.name;
|
7
8
|
|
8
9
|
options.file = this;
|
@@ -20,4 +21,4 @@ pageflow.stageProvider = {
|
|
20
21
|
return stage.get('active') || stage.get('action_required') || stage.get('failed');
|
21
22
|
});
|
22
23
|
}
|
23
|
-
};
|
24
|
+
};
|