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
@@ -18,11 +18,11 @@ pageflow.OtherEntriesCollectionView = Backbone.Marionette.View.extend({
|
|
18
18
|
selection: this.options.selection
|
19
19
|
},
|
20
20
|
blankSlateViewConstructor: Backbone.Marionette.ItemView.extend({
|
21
|
-
template: 'templates/other_entries_blank_slate'
|
21
|
+
template: 'templates/other_entries_blank_slate',
|
22
|
+
tagName: 'li',
|
23
|
+
className: 'blank_slate'
|
22
24
|
}),
|
23
|
-
loadingViewConstructor:
|
24
|
-
template: 'templates/loading'
|
25
|
-
})
|
25
|
+
loadingViewConstructor: pageflow.LoadingView
|
26
26
|
}));
|
27
27
|
|
28
28
|
this.otherEntries.fetch();
|
@@ -1,6 +1,7 @@
|
|
1
1
|
pageflow.OtherEntryItemView = Backbone.Marionette.ItemView.extend({
|
2
2
|
template: 'templates/other_entry_item',
|
3
3
|
className: 'other_entry_item',
|
4
|
+
tagName: 'li',
|
4
5
|
|
5
6
|
mixins: [pageflow.selectableView],
|
6
7
|
|
@@ -9,7 +10,7 @@ pageflow.OtherEntryItemView = Backbone.Marionette.ItemView.extend({
|
|
9
10
|
},
|
10
11
|
|
11
12
|
events: {
|
12
|
-
|
13
|
+
'click': 'select'
|
13
14
|
},
|
14
15
|
|
15
16
|
onRender: function() {
|
@@ -29,7 +29,7 @@ pageflow.PageItemView = Backbone.Marionette.ItemView.extend({
|
|
29
29
|
this.$el.toggleClass('active', this.model.get('active'));
|
30
30
|
this.$el.toggleClass('display_in_navigation', !!this.model.configuration.get('display_in_navigation'));
|
31
31
|
this.$el
|
32
|
-
.removeClass(
|
32
|
+
.removeClass(pageflow.editor.pageTypes.pluck('name').join(' '))
|
33
33
|
.addClass(this.model.get('template'));
|
34
34
|
|
35
35
|
this.ui.pictogram.attr('title', this._getPictogramTitle());
|
@@ -37,7 +37,7 @@ pageflow.PageItemView = Backbone.Marionette.ItemView.extend({
|
|
37
37
|
},
|
38
38
|
|
39
39
|
_getPictogramTitle: function() {
|
40
|
-
var result = I18n.t(this.model.pageType().
|
40
|
+
var result = I18n.t(this.model.pageType().translationKey());
|
41
41
|
result += ' Seite';
|
42
42
|
|
43
43
|
if (this.options.displayInNavigationHint && !this.model.configuration.get('display_in_navigation')) {
|
@@ -0,0 +1,51 @@
|
|
1
|
+
pageflow.PageLinkItemView = Backbone.Marionette.ItemView.extend({
|
2
|
+
template: 'pageflow/editor/templates/page_link_item',
|
3
|
+
|
4
|
+
tagName: 'li',
|
5
|
+
className: 'page_link',
|
6
|
+
|
7
|
+
ui: {
|
8
|
+
thumbnail: '.page_thumbnail',
|
9
|
+
title: '.title',
|
10
|
+
label: '.label',
|
11
|
+
editButton: '.edit'
|
12
|
+
},
|
13
|
+
|
14
|
+
events: {
|
15
|
+
'click .edit': function() {
|
16
|
+
pageflow.editor.navigate(this.model.editPath(), {trigger: true});
|
17
|
+
return false;
|
18
|
+
},
|
19
|
+
|
20
|
+
'mouseenter': function() {
|
21
|
+
this.model.highlight(true);
|
22
|
+
},
|
23
|
+
|
24
|
+
'mouseleave': function() {
|
25
|
+
this.model.resetHighlight(false);
|
26
|
+
}
|
27
|
+
},
|
28
|
+
|
29
|
+
onRender: function() {
|
30
|
+
var page = this.model.targetPage();
|
31
|
+
|
32
|
+
if (page) {
|
33
|
+
this.subview(new pageflow.PageThumbnailView({
|
34
|
+
el: this.ui.thumbnail,
|
35
|
+
model: page
|
36
|
+
}));
|
37
|
+
|
38
|
+
this.$el.addClass(page.get('template'));
|
39
|
+
this.ui.title.text(page.title() || I18n.t('pageflow.editor.views.page_link_item_view.unnamed'));
|
40
|
+
}
|
41
|
+
else {
|
42
|
+
this.ui.title.text(I18n.t('pageflow.editor.views.page_link_item_view.no_page'));
|
43
|
+
}
|
44
|
+
|
45
|
+
this.ui.label.text(this.model.label());
|
46
|
+
this.ui.label.toggle(!!this.model.label());
|
47
|
+
this.ui.editButton.toggle(!!this.model.editPath());
|
48
|
+
|
49
|
+
this.$el.toggleClass('dangling', !page);
|
50
|
+
},
|
51
|
+
});
|
@@ -0,0 +1,45 @@
|
|
1
|
+
pageflow.PageLinksView = Backbone.Marionette.ItemView.extend({
|
2
|
+
template: 'pageflow/editor/templates/page_links',
|
3
|
+
className: 'page_links',
|
4
|
+
|
5
|
+
ui: {
|
6
|
+
links: 'ul.links',
|
7
|
+
addButton: '.add_link'
|
8
|
+
},
|
9
|
+
|
10
|
+
events: {
|
11
|
+
'click .add_link': function() {
|
12
|
+
var view = this;
|
13
|
+
|
14
|
+
pageflow.editor.selectPage().then(function(page) {
|
15
|
+
view.model.pageLinks().addLink(page.get('perma_id'));
|
16
|
+
});
|
17
|
+
|
18
|
+
return false;
|
19
|
+
}
|
20
|
+
},
|
21
|
+
|
22
|
+
onRender: function() {
|
23
|
+
var pageLinks = this.model.pageLinks();
|
24
|
+
var collectionViewConstructor = pageLinks.saveOrder ? pageflow.SortableCollectionView : pageflow.CollectionView;
|
25
|
+
|
26
|
+
this.subview(new collectionViewConstructor({
|
27
|
+
el: this.ui.links,
|
28
|
+
collection: pageLinks,
|
29
|
+
itemViewConstructor: pageflow.PageLinkItemView,
|
30
|
+
itemViewOptions: {
|
31
|
+
pageLinks: pageLinks
|
32
|
+
}
|
33
|
+
}));
|
34
|
+
|
35
|
+
this.listenTo(pageLinks, 'add remove', function() {
|
36
|
+
this.updateAddButton(pageLinks);
|
37
|
+
});
|
38
|
+
|
39
|
+
this.updateAddButton(pageLinks);
|
40
|
+
},
|
41
|
+
|
42
|
+
updateAddButton: function(pageLinks) {
|
43
|
+
this.ui.addButton.css('display', pageLinks.canAddLink() ? 'inline-block' : 'none');
|
44
|
+
}
|
45
|
+
});
|
@@ -12,6 +12,7 @@ pageflow.PagePreviewView = Backbone.Marionette.View.extend({
|
|
12
12
|
'sync': function() {
|
13
13
|
this.$el.attr('data-id', this.model.id);
|
14
14
|
this.$el.attr('data-perma-id', this.model.get('perma_id'));
|
15
|
+
this.$el.attr('id', this.model.get('perma_id'));
|
15
16
|
}
|
16
17
|
},
|
17
18
|
|
@@ -27,17 +28,21 @@ pageflow.PagePreviewView = Backbone.Marionette.View.extend({
|
|
27
28
|
|
28
29
|
render: function() {
|
29
30
|
this.$el.html(this.pageTemplate());
|
31
|
+
|
30
32
|
this.$el.attr('data-id', this.model.id);
|
31
33
|
this.$el.attr('data-perma-id', this.model.get('perma_id'));
|
34
|
+
this.$el.attr('id', this.model.get('perma_id'));
|
35
|
+
this.$el.attr('data-chapter-id', this.model.get('chapter_id'));
|
36
|
+
|
32
37
|
this.$el.data('template', this.model.get('template'));
|
33
38
|
this.$el.data('configuration', this.model.get('configuration'));
|
34
39
|
|
35
|
-
this.$el.
|
36
|
-
|
37
|
-
|
38
|
-
this.$el.page('reactivate');
|
40
|
+
this.$el.on('pageenhanced', _.bind(function() {
|
41
|
+
this.update();
|
42
|
+
this.initEmbeddedViews();
|
39
43
|
|
40
|
-
|
44
|
+
this.$el.page('reactivate');
|
45
|
+
}, this));
|
41
46
|
|
42
47
|
return this;
|
43
48
|
},
|
@@ -49,21 +54,16 @@ pageflow.PagePreviewView = Backbone.Marionette.View.extend({
|
|
49
54
|
this.$el.data('template', this.model.get('template'));
|
50
55
|
|
51
56
|
this.$el.page('reinit');
|
52
|
-
this.updateChapterBeginningClass();
|
53
|
-
this.update();
|
54
|
-
this.$el.page('reactivate');
|
55
|
-
|
56
|
-
this.initEmbeddedViews();
|
57
57
|
},
|
58
58
|
|
59
59
|
update: function() {
|
60
|
-
this.$el.
|
60
|
+
this.$el.page('update', this.model.configuration);
|
61
61
|
|
62
|
-
|
63
|
-
_.extend(this.$el.data('configuration'), this.model.configuration.attributes);
|
62
|
+
pageflow.events.trigger('page:update', this.model);
|
64
63
|
|
65
64
|
this.refreshScroller();
|
66
65
|
this.ensureTargetBlankForContentLinks();
|
66
|
+
this.updateChapterBeginningClass();
|
67
67
|
},
|
68
68
|
|
69
69
|
updateChapterBeginningClass: function() {
|
@@ -71,8 +71,8 @@ pageflow.PagePreviewView = Backbone.Marionette.View.extend({
|
|
71
71
|
this.$el.toggleClass('chapter_beginning', chapterBeginning);
|
72
72
|
},
|
73
73
|
|
74
|
-
|
75
|
-
return this
|
74
|
+
pageTypeHooks: function() {
|
75
|
+
return pageflow.pageType.get(this.model.get('template'));
|
76
76
|
},
|
77
77
|
|
78
78
|
pageTemplate: function() {
|
@@ -96,7 +96,7 @@ pageflow.PagePreviewView = Backbone.Marionette.View.extend({
|
|
96
96
|
|
97
97
|
view.embeddedViews = new Backbone.ChildViewContainer();
|
98
98
|
|
99
|
-
_.each(view.
|
99
|
+
_.each(view.embeddedViewDefinitions(), function(item, selector) {
|
100
100
|
view.$(selector).each(function() {
|
101
101
|
view.embeddedViews.add(new item.view(_.extend(item.options || {}, {
|
102
102
|
el: this,
|
@@ -107,6 +107,14 @@ pageflow.PagePreviewView = Backbone.Marionette.View.extend({
|
|
107
107
|
});
|
108
108
|
},
|
109
109
|
|
110
|
+
embeddedViewDefinitions: function() {
|
111
|
+
return _.extend(
|
112
|
+
{},
|
113
|
+
this.pageTypeHooks().embeddedEditorViews() || {},
|
114
|
+
this.model.pageType().embeddedViews()
|
115
|
+
);
|
116
|
+
},
|
117
|
+
|
110
118
|
_unescape: function(text) {
|
111
119
|
return $('<div/>').html(text).text();
|
112
120
|
}
|
@@ -0,0 +1,46 @@
|
|
1
|
+
pageflow.PageSelectionView = Backbone.Marionette.ItemView.extend({
|
2
|
+
template: 'templates/page_selection',
|
3
|
+
className: 'page_selection dialog',
|
4
|
+
|
5
|
+
mixins: [pageflow.dialogView],
|
6
|
+
|
7
|
+
ui: {
|
8
|
+
chapters: 'ul.chapters',
|
9
|
+
},
|
10
|
+
|
11
|
+
events: {
|
12
|
+
'click ul.pages li': function(event) {
|
13
|
+
this.options.onSelect(pageflow.pages.get($(event.currentTarget).data('id')));
|
14
|
+
this.close();
|
15
|
+
}
|
16
|
+
},
|
17
|
+
|
18
|
+
onRender: function() {
|
19
|
+
var onSelect = this.onSelect;
|
20
|
+
|
21
|
+
this.subview(new pageflow.CollectionView({
|
22
|
+
el: this.ui.chapters,
|
23
|
+
collection: this.model.chapters,
|
24
|
+
itemViewConstructor: pageflow.ChapterItemView,
|
25
|
+
itemViewOptions: {
|
26
|
+
pageItemView: pageflow.PageItemView,
|
27
|
+
sortable: false
|
28
|
+
}
|
29
|
+
}));
|
30
|
+
}
|
31
|
+
});
|
32
|
+
|
33
|
+
pageflow.PageSelectionView.selectPage = function() {
|
34
|
+
return $.Deferred(function(deferred) {
|
35
|
+
var view = new pageflow.PageSelectionView({
|
36
|
+
model: pageflow.entry,
|
37
|
+
onSelect: deferred.resolve
|
38
|
+
});
|
39
|
+
|
40
|
+
view.on('close', function() {
|
41
|
+
deferred.reject();
|
42
|
+
});
|
43
|
+
|
44
|
+
pageflow.app.dialogRegion.show(view.render());
|
45
|
+
}).promise();
|
46
|
+
};
|
@@ -1,30 +1,3 @@
|
|
1
|
-
pageflow.PageThumbnailView =
|
2
|
-
|
3
|
-
'change:configuration': 'update'
|
4
|
-
},
|
5
|
-
|
6
|
-
render: function() {
|
7
|
-
this.update();
|
8
|
-
return this;
|
9
|
-
},
|
10
|
-
|
11
|
-
update: function() {
|
12
|
-
if (this.fileThumbnailView && this.currentFileThumbnail == this.model.thumbnailFile()) {
|
13
|
-
return;
|
14
|
-
}
|
15
|
-
|
16
|
-
this.currentFileThumbnail = this.model.thumbnailFile();
|
17
|
-
|
18
|
-
if (this.fileThumbnailView) {
|
19
|
-
this.fileThumbnailView.close();
|
20
|
-
}
|
21
|
-
|
22
|
-
this.fileThumbnailView = this.subview(new pageflow.FileThumbnailView({
|
23
|
-
model: this.model.thumbnailFile(),
|
24
|
-
className: 'thumbnail file_thumbnail',
|
25
|
-
imageUrlPropertyName: this.options.imageUrlPropertyName
|
26
|
-
}));
|
27
|
-
|
28
|
-
this.$el.append(this.fileThumbnailView.el);
|
29
|
-
}
|
1
|
+
pageflow.PageThumbnailView = pageflow.ModelThumbnailView.extend({
|
2
|
+
className: 'model_thumbnail page_thumbnail'
|
30
3
|
});
|
@@ -8,6 +8,13 @@ pageflow.PublishEntryView = Backbone.Marionette.ItemView.extend({
|
|
8
8
|
publishUntilTimeField: 'input[name=publish_until_time]',
|
9
9
|
publishUntilRadioBox: '#publish_entry_until',
|
10
10
|
publishForeverRadioBox: 'input[value=publish_forever]',
|
11
|
+
passwordProtectedCheckBox: 'input[name=password_protected]',
|
12
|
+
passwordFields: '.password_fields',
|
13
|
+
userNameField: 'input[name=user_name]',
|
14
|
+
passwordField: 'input[name=password]',
|
15
|
+
alreadyPublishedWithPassword: '.already_published_with_password',
|
16
|
+
previouslyPublishedWithPassword: '.previously_published_with_password',
|
17
|
+
alreadyPublishedWithoutPassword: '.already_published_without_password',
|
11
18
|
revisionsLink: '.published.notice a',
|
12
19
|
publishedNotice: '.published.notice',
|
13
20
|
saveButton: 'button.save',
|
@@ -24,7 +31,13 @@ pageflow.PublishEntryView = Backbone.Marionette.ItemView.extend({
|
|
24
31
|
|
25
32
|
'focus .publish_until_fields input': 'enablePublishUntilFields',
|
26
33
|
|
27
|
-
'change .publish_until_fields input': '
|
34
|
+
'change .publish_until_fields input': 'checkForm',
|
35
|
+
|
36
|
+
'click input#publish_password_protected': 'togglePasswordFields',
|
37
|
+
|
38
|
+
'keyup input[name=password]': 'checkForm',
|
39
|
+
|
40
|
+
'change input[name=password]': 'checkForm'
|
28
41
|
},
|
29
42
|
|
30
43
|
modelEvents: {
|
@@ -63,6 +76,23 @@ pageflow.PublishEntryView = Backbone.Marionette.ItemView.extend({
|
|
63
76
|
this.ui.publishUntilField.datepicker('setDate', publishedUntil);
|
64
77
|
this.ui.publishUntilTimeField.val(timeStr(publishedUntil));
|
65
78
|
}
|
79
|
+
else {
|
80
|
+
this.ui.publishUntilField.datepicker('setDate', oneYearFromNow());
|
81
|
+
}
|
82
|
+
|
83
|
+
this.ui.userNameField.val(pageflow.account.get('name'));
|
84
|
+
|
85
|
+
if (this.model.get('password_protected')) {
|
86
|
+
this.ui.passwordProtectedCheckBox.prop('checked', true);
|
87
|
+
this.togglePasswordFields();
|
88
|
+
}
|
89
|
+
else {
|
90
|
+
this.ui.passwordField.val(this.randomPassword());
|
91
|
+
}
|
92
|
+
|
93
|
+
this.ui.alreadyPublishedWithPassword.toggle(this.model.get('published') && this.model.get('password_protected'));
|
94
|
+
this.ui.previouslyPublishedWithPassword.toggle(!this.model.get('published') && this.model.get('password_protected'));
|
95
|
+
this.ui.alreadyPublishedWithoutPassword.toggle(this.model.get('published') && !this.model.get('password_protected'));
|
66
96
|
|
67
97
|
// Helpers
|
68
98
|
function timeStr(date) {
|
@@ -72,6 +102,12 @@ pageflow.PublishEntryView = Backbone.Marionette.ItemView.extend({
|
|
72
102
|
return ("0" + val).slice(-2);
|
73
103
|
}
|
74
104
|
}
|
105
|
+
|
106
|
+
function oneYearFromNow() {
|
107
|
+
var date = new Date();
|
108
|
+
date.setFullYear(date.getFullYear() + 1);
|
109
|
+
return date;
|
110
|
+
}
|
75
111
|
},
|
76
112
|
|
77
113
|
save: function() {
|
@@ -100,7 +136,11 @@ pageflow.PublishEntryView = Backbone.Marionette.ItemView.extend({
|
|
100
136
|
|
101
137
|
var that = this;
|
102
138
|
|
103
|
-
this.options.entryPublication.publish({
|
139
|
+
this.options.entryPublication.publish({
|
140
|
+
published_until: publishedUntil,
|
141
|
+
password_protected: this.ui.passwordProtectedCheckBox.is(':checked'),
|
142
|
+
password: this.ui.passwordField.val()
|
143
|
+
})
|
104
144
|
.fail(function() {
|
105
145
|
alert('Beim Veröffentlichen ist ein Fehler aufgetreten');
|
106
146
|
})
|
@@ -156,17 +196,20 @@ pageflow.PublishEntryView = Backbone.Marionette.ItemView.extend({
|
|
156
196
|
this.ui.publishUntilRadioBox[0].checked = true;
|
157
197
|
|
158
198
|
this.ui.publishUntilFields.removeClass('disabled');
|
159
|
-
this.
|
199
|
+
this.checkForm();
|
160
200
|
},
|
161
201
|
|
162
202
|
disablePublishUntilFields: function() {
|
163
203
|
this.ui.publishUntilRadioBox[0].checked = false;
|
164
204
|
this.ui.publishUntilFields.addClass('disabled');
|
205
|
+
this.checkForm();
|
165
206
|
|
166
207
|
if (!this.checkPublishUntilTime()) {
|
167
208
|
this.ui.publishUntilTimeField.val('00:00');
|
168
|
-
this.ui.publishUntilTimeField.removeClass('invalid');
|
169
209
|
}
|
210
|
+
|
211
|
+
this.ui.publishUntilTimeField.removeClass('invalid');
|
212
|
+
this.ui.publishUntilField.removeClass('invalid');
|
170
213
|
},
|
171
214
|
|
172
215
|
enablePublishForever: function() {
|
@@ -175,15 +218,31 @@ pageflow.PublishEntryView = Backbone.Marionette.ItemView.extend({
|
|
175
218
|
this.enableSave();
|
176
219
|
},
|
177
220
|
|
221
|
+
checkForm: function() {
|
222
|
+
if (_.all([this.checkPublishUntil(), this.checkPassword()])) {
|
223
|
+
this.enableSave();
|
224
|
+
}
|
225
|
+
else{
|
226
|
+
this.disableSave();
|
227
|
+
}
|
228
|
+
},
|
229
|
+
|
178
230
|
checkPublishUntil: function() {
|
179
|
-
|
231
|
+
return (this.ui.publishForeverRadioBox.is(':checked') ||
|
232
|
+
(this.ui.publishUntilRadioBox.is(':checked') &&
|
233
|
+
_.all([this.checkPublishUntilDate(),
|
234
|
+
this.checkPublishUntilTime()])));
|
235
|
+
},
|
180
236
|
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
}
|
185
|
-
this.enableSave();
|
237
|
+
checkPublishUntilDate: function() {
|
238
|
+
if (this.ui.publishUntilField.datepicker('getDate')) {
|
239
|
+
this.ui.publishUntilField.removeClass('invalid');
|
186
240
|
return true;
|
241
|
+
}
|
242
|
+
else {
|
243
|
+
this.ui.publishUntilField.addClass('invalid');
|
244
|
+
return false;
|
245
|
+
}
|
187
246
|
},
|
188
247
|
|
189
248
|
checkPublishUntilTime: function() {
|
@@ -193,6 +252,32 @@ pageflow.PublishEntryView = Backbone.Marionette.ItemView.extend({
|
|
193
252
|
}
|
194
253
|
this.ui.publishUntilTimeField.removeClass('invalid');
|
195
254
|
return true;
|
255
|
+
},
|
256
|
+
|
257
|
+
togglePasswordFields: function() {
|
258
|
+
this.ui.passwordFields.toggleClass('disabled', !this.ui.passwordProtectedCheckBox.is(':checked'));
|
259
|
+
this.checkForm();
|
260
|
+
},
|
261
|
+
|
262
|
+
checkPassword: function() {
|
263
|
+
if (this.ui.passwordField.val().length === 0 &&
|
264
|
+
!this.model.get('password_protected') &&
|
265
|
+
this.ui.passwordProtectedCheckBox.is(':checked')) {
|
266
|
+
this.ui.passwordField.addClass('invalid');
|
267
|
+
return false;
|
268
|
+
}
|
269
|
+
else {
|
270
|
+
this.ui.passwordField.removeClass('invalid');
|
271
|
+
return true;
|
272
|
+
}
|
273
|
+
},
|
274
|
+
|
275
|
+
randomPassword: function() {
|
276
|
+
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
277
|
+
|
278
|
+
return _(10).times(function() {
|
279
|
+
return possible.charAt(Math.floor(Math.random() * possible.length));
|
280
|
+
}).join('');
|
196
281
|
}
|
197
282
|
});
|
198
283
|
|