pageflow 0.11.4 → 12.0.0.rc1
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 +4 -4
- data/CHANGELOG.md +224 -1207
- data/README.md +7 -3
- data/Rakefile +2 -0
- data/admins/pageflow/accounts.rb +27 -8
- data/admins/pageflow/entry.rb +130 -47
- data/admins/pageflow/folder.rb +28 -17
- data/admins/pageflow/membership.rb +58 -6
- data/admins/pageflow/user.rb +105 -98
- data/app/assets/fonts/pageflow/fontawesome-webfont.eot +0 -0
- data/app/assets/fonts/pageflow/fontawesome-webfont.svg +644 -463
- data/app/assets/fonts/pageflow/fontawesome-webfont.ttf +0 -0
- data/app/assets/fonts/pageflow/fontawesome-webfont.woff +0 -0
- data/app/assets/fonts/pageflow/sourcesanspro-bold-webfont.eot +0 -0
- data/app/assets/fonts/pageflow/sourcesanspro-bold-webfont.svg +2864 -696
- data/app/assets/fonts/pageflow/sourcesanspro-bold-webfont.ttf +0 -0
- data/app/assets/fonts/pageflow/sourcesanspro-bold-webfont.woff +0 -0
- data/app/assets/fonts/pageflow/sourcesanspro-light-webfont.eot +0 -0
- data/app/assets/fonts/pageflow/sourcesanspro-light-webfont.svg +2572 -613
- data/app/assets/fonts/pageflow/sourcesanspro-light-webfont.ttf +0 -0
- data/app/assets/fonts/pageflow/sourcesanspro-light-webfont.woff +0 -0
- data/app/assets/fonts/pageflow/sourcesanspro-regular-webfont.eot +0 -0
- data/app/assets/fonts/pageflow/sourcesanspro-regular-webfont.svg +2977 -779
- data/app/assets/fonts/pageflow/sourcesanspro-regular-webfont.ttf +0 -0
- data/app/assets/fonts/pageflow/sourcesanspro-regular-webfont.woff +0 -0
- data/app/assets/javascripts/pageflow/admin/entries.js +21 -3
- data/app/assets/javascripts/pageflow/audio.js +30 -15
- data/app/assets/javascripts/pageflow/audio/multi_player.js +12 -1
- data/app/assets/javascripts/pageflow/audio_player.js +15 -1
- data/app/assets/javascripts/pageflow/audio_player/rewind_method.js +3 -1
- data/app/assets/javascripts/pageflow/base.js +4 -1
- data/app/assets/javascripts/pageflow/browser.js +3 -0
- data/app/assets/javascripts/pageflow/browser/autoplay_support.js +3 -0
- data/app/assets/javascripts/pageflow/browser/facebook.js +1 -2
- data/app/assets/javascripts/pageflow/browser/ios_platform.js +5 -0
- data/app/assets/javascripts/pageflow/browser/video.js +4 -0
- data/app/assets/javascripts/pageflow/components.js +7 -0
- data/app/assets/javascripts/pageflow/cookies.js +1 -4
- data/app/assets/javascripts/pageflow/dist/react.js +4724 -5808
- data/app/assets/javascripts/pageflow/editor/api.js +201 -161
- data/app/assets/javascripts/pageflow/editor/api/errors.js +80 -0
- data/app/assets/javascripts/pageflow/editor/api/failure.js +9 -0
- data/app/assets/javascripts/pageflow/editor/api/failures.js +25 -2
- data/app/assets/javascripts/pageflow/editor/api/file_type.js +42 -3
- data/app/assets/javascripts/pageflow/editor/api/file_types.js +75 -46
- data/app/assets/javascripts/pageflow/editor/base.js +8 -0
- data/app/assets/javascripts/pageflow/editor/collections/file_types_collection.js +37 -0
- data/app/assets/javascripts/pageflow/editor/collections/files_collection.js +32 -1
- data/app/assets/javascripts/pageflow/editor/collections/mixins/ordered_collection.js +1 -1
- data/app/assets/javascripts/pageflow/editor/collections/multi_collection.js +4 -6
- data/app/assets/javascripts/pageflow/editor/collections/nested_files_collection.js +27 -0
- data/app/assets/javascripts/pageflow/editor/collections/pages_collection.js +21 -1
- data/app/assets/javascripts/pageflow/editor/collections/subset_collection.js +8 -2
- data/app/assets/javascripts/pageflow/editor/controllers/sidebar_controller.js +3 -2
- data/app/assets/javascripts/pageflow/editor/initializers/error_listener.js +10 -5
- data/app/assets/javascripts/pageflow/editor/initializers/routing.js +3 -1
- data/app/assets/javascripts/pageflow/editor/initializers/setup_collections.js +3 -0
- data/app/assets/javascripts/pageflow/editor/initializers/setup_file_types.js +136 -6
- data/app/assets/javascripts/pageflow/editor/initializers/setup_file_uploader.js +10 -0
- data/app/assets/javascripts/pageflow/editor/initializers/setup_hotkeys.js +5 -7
- data/app/assets/javascripts/pageflow/editor/initializers/stylesheet_reloading.js +1 -1
- data/app/assets/javascripts/pageflow/editor/models/configuration.js +1 -0
- data/app/assets/javascripts/pageflow/editor/models/entry.js +34 -26
- data/app/assets/javascripts/pageflow/editor/models/file_configuration.js +10 -0
- data/app/assets/javascripts/pageflow/editor/models/file_reuse.js +23 -0
- data/app/assets/javascripts/pageflow/editor/models/file_uploader.js +69 -0
- data/app/assets/javascripts/pageflow/editor/models/mixins/retryable.js +1 -1
- data/app/assets/javascripts/pageflow/editor/models/page.js +13 -0
- data/app/assets/javascripts/pageflow/editor/models/text_track_file.js +48 -0
- data/app/assets/javascripts/pageflow/editor/models/uploaded_file.js +62 -11
- data/app/assets/javascripts/pageflow/editor/routers/sidebar_router.js +1 -0
- data/app/assets/javascripts/pageflow/editor/templates/confirm_upload.jst.ejs +18 -0
- data/app/assets/javascripts/pageflow/editor/templates/delete_row_table_cell.jst.ejs +1 -0
- data/app/assets/javascripts/pageflow/editor/templates/drop_down_button.jst.ejs +0 -2
- data/app/assets/javascripts/pageflow/editor/templates/drop_down_button_item.jst.ejs +1 -0
- data/app/assets/javascripts/pageflow/editor/templates/edit_entry.jst.ejs +3 -1
- data/app/assets/javascripts/pageflow/editor/templates/edit_file.jst.ejs +0 -0
- data/app/assets/javascripts/pageflow/editor/templates/file_item.jst.ejs +1 -6
- data/app/assets/javascripts/pageflow/editor/templates/file_meta_data_item_value_view.jst.ejs +3 -0
- data/app/assets/javascripts/pageflow/editor/templates/file_settings_dialog.jst.ejs +10 -0
- data/app/assets/javascripts/pageflow/editor/templates/files_blank_slate.jst.ejs +1 -1
- data/app/assets/javascripts/pageflow/editor/templates/filtered_files.jst.ejs +10 -0
- data/app/assets/javascripts/pageflow/{ui → editor}/templates/inputs/file_input.jst.ejs +1 -1
- data/app/assets/javascripts/pageflow/editor/templates/inputs/reference.jst.ejs +2 -2
- data/app/assets/javascripts/pageflow/editor/templates/nested_files.jst.ejs +1 -0
- data/app/assets/javascripts/pageflow/editor/templates/table_cell.jst.ejs +0 -0
- data/app/assets/javascripts/pageflow/editor/templates/text_tracks.jst.ejs +13 -0
- data/app/assets/javascripts/pageflow/editor/templates/uploadable_files.jst.ejs +1 -0
- data/app/assets/javascripts/pageflow/editor/utils/form_data_utils.js +19 -0
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/audio.js +5 -2
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/background_image.js +3 -2
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/groups/background.js +35 -0
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/groups/options.js +7 -9
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/video.js +6 -5
- data/app/assets/javascripts/pageflow/editor/views/confirm_upload_view.js +69 -0
- data/app/assets/javascripts/pageflow/editor/views/confirmable_file_item_view.js +1 -1
- data/app/assets/javascripts/pageflow/editor/views/drop_down_button_item_list_view.js +9 -0
- data/app/assets/javascripts/pageflow/editor/views/drop_down_button_item_view.js +14 -1
- data/app/assets/javascripts/pageflow/editor/views/drop_down_button_view.js +51 -20
- data/app/assets/javascripts/pageflow/editor/views/edit_entry_view.js +21 -2
- data/app/assets/javascripts/pageflow/editor/views/edit_file_view.js +52 -0
- data/app/assets/javascripts/pageflow/editor/views/edit_storyline_view.js +1 -1
- data/app/assets/javascripts/pageflow/editor/views/entry_preview_view.js +15 -7
- data/app/assets/javascripts/pageflow/editor/views/file_item_view.js +33 -22
- data/app/assets/javascripts/pageflow/editor/views/file_meta_data_item_value_view.js +49 -0
- data/app/assets/javascripts/pageflow/editor/views/file_meta_data_item_view.js +16 -5
- data/app/assets/javascripts/pageflow/editor/views/file_settings_dialog_view.js +31 -0
- data/app/assets/javascripts/pageflow/editor/views/files_explorer_view.js +6 -7
- data/app/assets/javascripts/pageflow/editor/views/files_view.js +13 -14
- data/app/assets/javascripts/pageflow/editor/views/filtered_files_view.js +75 -0
- data/app/assets/javascripts/pageflow/editor/views/help_view.js +3 -0
- data/app/assets/javascripts/pageflow/editor/views/inputs/file_input_view.js +217 -0
- data/app/assets/javascripts/pageflow/editor/views/inputs/page_link_input_view.js +6 -0
- data/app/assets/javascripts/pageflow/editor/views/inputs/reference_input_view.js +13 -2
- data/app/assets/javascripts/pageflow/editor/views/list_view.js +24 -14
- data/app/assets/javascripts/pageflow/editor/views/model_thumbnail_view.js +4 -1
- data/app/assets/javascripts/pageflow/editor/views/nested_files_view.js +94 -0
- data/app/assets/javascripts/pageflow/editor/views/page_preview_view.js +7 -2
- data/app/assets/javascripts/pageflow/editor/views/text_file_meta_data_item_value_view.js +25 -0
- data/app/assets/javascripts/pageflow/editor/views/text_tracks_file_meta_data_item_value_view.js +12 -0
- data/app/assets/javascripts/pageflow/editor/views/text_tracks_view.js +65 -0
- data/app/assets/javascripts/pageflow/editor/views/uploadable_files_view.js +56 -0
- data/app/assets/javascripts/pageflow/editor/views/uploader_view.js +13 -10
- data/app/assets/javascripts/pageflow/features.js +8 -12
- data/app/assets/javascripts/pageflow/focus_outline.js +2 -0
- data/app/assets/javascripts/pageflow/media_player/volume_binding.js +2 -0
- data/app/assets/javascripts/pageflow/media_player/volume_fading.js +6 -0
- data/app/assets/javascripts/pageflow/page_type.js +0 -1
- data/app/assets/javascripts/pageflow/phone_landscape_fullscreen.js +34 -0
- data/app/assets/javascripts/pageflow/react.js +4 -0
- data/app/assets/javascripts/pageflow/ready.js +3 -0
- data/app/assets/javascripts/pageflow/seed_entry_data.js +4 -1
- data/app/assets/javascripts/pageflow/slideshow.js +1 -0
- data/app/assets/javascripts/pageflow/slideshow/adjacent_preparer.js +7 -5
- data/app/assets/javascripts/pageflow/slideshow/atmo.js +3 -3
- data/app/assets/javascripts/pageflow/slideshow/hidden_text_indicator_widget.js +4 -2
- data/app/assets/javascripts/pageflow/slideshow/hide_text.js +8 -4
- data/app/assets/javascripts/pageflow/slideshow/lazy_page_widget.js +5 -0
- data/app/assets/javascripts/pageflow/slideshow/scroller_widget.js +11 -18
- data/app/assets/javascripts/pageflow/ui.js +6 -0
- data/app/assets/javascripts/pageflow/ui/templates/inputs/url_display.jst.ejs +7 -0
- data/app/assets/javascripts/pageflow/ui/templates/table.jst.ejs +7 -0
- data/app/assets/javascripts/pageflow/ui/templates/table_blank_slate.jst.ejs +3 -0
- data/app/assets/javascripts/pageflow/ui/utils/i18n_utils.js +97 -2
- data/app/assets/javascripts/pageflow/ui/views/collection_view.js +8 -1
- data/app/assets/javascripts/pageflow/ui/views/inputs/check_box_input_view.js +12 -1
- data/app/assets/javascripts/pageflow/ui/views/inputs/proxy_url_input_view.js +51 -5
- data/app/assets/javascripts/pageflow/ui/views/inputs/select_input_view.js +80 -2
- data/app/assets/javascripts/pageflow/ui/views/inputs/slider_input_view.js +8 -1
- data/app/assets/javascripts/pageflow/ui/views/inputs/text_area_input_view.js +17 -1
- data/app/assets/javascripts/pageflow/ui/views/inputs/text_input_view.js +47 -4
- data/app/assets/javascripts/pageflow/ui/views/inputs/url_display_view.js +42 -0
- data/app/assets/javascripts/pageflow/ui/views/inputs/url_input_view.js +20 -2
- data/app/assets/javascripts/pageflow/ui/views/mixins/input_view.js +74 -46
- data/app/assets/javascripts/pageflow/ui/views/table_cells/delete_row_table_cell_view.js +63 -0
- data/app/assets/javascripts/pageflow/ui/views/table_cells/enum_table_cell_view.js +26 -0
- data/app/assets/javascripts/pageflow/ui/views/table_cells/icon_table_cell_view.js +40 -0
- data/app/assets/javascripts/pageflow/ui/views/table_cells/presence_table_cell_view.js +31 -0
- data/app/assets/javascripts/pageflow/ui/views/table_cells/table_cell_view.js +101 -0
- data/app/assets/javascripts/pageflow/ui/views/table_cells/table_header_cell_view.js +10 -0
- data/app/assets/javascripts/pageflow/ui/views/table_cells/text_table_cell_view.js +46 -0
- data/app/assets/javascripts/pageflow/ui/views/table_row_view.js +47 -0
- data/app/assets/javascripts/pageflow/ui/views/table_view.js +47 -0
- data/app/assets/javascripts/pageflow/video_player.js +9 -5
- data/app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js +15 -13
- data/app/assets/javascripts/pageflow/video_player/cue_settings_methods.js +33 -0
- data/app/assets/javascripts/pageflow/video_player/dash.js +3 -0
- data/app/assets/javascripts/pageflow/video_player/filter_sources.js +1 -1
- data/app/assets/javascripts/pageflow/video_player/lazy.js +3 -9
- data/app/assets/javascripts/pageflow/video_player/prebuffering.js +11 -2
- data/app/assets/javascripts/pageflow/video_player/use_slim_controls_during_phone_playback.js +16 -0
- data/app/assets/javascripts/pageflow/videojs.js +6 -0
- data/app/assets/javascripts/pageflow/widgets.js +41 -7
- data/app/assets/stylesheets/pageflow/admin.scss +7 -4
- data/app/assets/stylesheets/pageflow/admin/{entries/user_badge_list.scss → badge_list.scss} +6 -9
- data/app/assets/stylesheets/pageflow/admin/embed_code.scss +13 -0
- data/app/assets/stylesheets/pageflow/admin/entries.scss +1 -2
- data/app/assets/stylesheets/pageflow/admin/hint.scss +20 -0
- data/app/assets/stylesheets/pageflow/admin/tooltip_bubble.scss +34 -0
- data/app/assets/stylesheets/pageflow/editor/base.scss +4 -4
- data/app/assets/stylesheets/pageflow/editor/confirm_upload.scss +66 -0
- data/app/assets/stylesheets/pageflow/editor/dialogs.scss +9 -1
- data/app/assets/stylesheets/pageflow/editor/drop_down_button.scss +56 -20
- data/app/assets/stylesheets/pageflow/editor/file_meta_data.scss +26 -6
- data/app/assets/stylesheets/pageflow/editor/file_settings_dialog.scss +32 -0
- data/app/assets/stylesheets/pageflow/editor/files.scss +5 -0
- data/app/assets/stylesheets/pageflow/editor/filtered_files.scss +25 -0
- data/app/assets/stylesheets/pageflow/editor/inputs.scss +2 -1
- data/app/assets/stylesheets/pageflow/editor/inputs/file_input.scss +65 -0
- data/app/assets/stylesheets/pageflow/editor/inputs/reference.scss +2 -2
- data/app/assets/stylesheets/pageflow/editor/text_tracks.scss +39 -0
- data/app/assets/stylesheets/pageflow/entries.scss +1 -0
- data/app/assets/stylesheets/pageflow/mixins/buttons.scss +77 -5
- data/app/assets/stylesheets/pageflow/mixins/icons/fontawesome.scss +3 -1
- data/app/assets/stylesheets/pageflow/page_types.scss +0 -4
- data/app/assets/stylesheets/pageflow/page_types/video.scss +5 -1
- data/app/assets/stylesheets/pageflow/page_types/video/content_hiding.scss +1 -0
- data/app/assets/stylesheets/pageflow/themes/default/base.scss +1 -0
- data/app/assets/stylesheets/pageflow/themes/default/built_in_page_types.scss +0 -2
- data/app/assets/stylesheets/pageflow/themes/default/definitions.scss +1 -0
- data/app/assets/stylesheets/pageflow/themes/default/loading_spinner.scss +31 -12
- data/app/assets/stylesheets/pageflow/themes/default/logo.scss +9 -1
- data/app/assets/stylesheets/pageflow/themes/default/logo/variant/background_image.scss +8 -2
- data/app/assets/stylesheets/pageflow/themes/default/logo/variant/watermark.scss +21 -0
- data/app/assets/stylesheets/pageflow/themes/default/mixins/cue_margins.scss +43 -0
- data/app/assets/stylesheets/pageflow/themes/default/mixins/indicator_typography.scss +7 -3
- data/app/assets/stylesheets/pageflow/themes/default/page.scss +20 -2
- data/app/assets/stylesheets/pageflow/themes/default/player_controls.scss +4 -0
- data/app/assets/stylesheets/pageflow/themes/default/player_controls/classic.scss +4 -0
- data/app/assets/stylesheets/pageflow/themes/default/player_controls/classic/container.scss +8 -6
- data/app/assets/stylesheets/pageflow/themes/default/player_controls/classic/control_bar.scss +18 -3
- data/app/assets/stylesheets/pageflow/themes/default/player_controls/classic/cue_margins.scss +1 -0
- data/app/assets/stylesheets/pageflow/themes/default/player_controls/classic/icons/custom.scss +14 -0
- data/app/assets/stylesheets/pageflow/themes/default/player_controls/classic/icons/icon_font.scss +4 -0
- data/app/assets/stylesheets/pageflow/themes/default/player_controls/classic/icons/sprite.scss +4 -0
- data/app/assets/stylesheets/pageflow/themes/default/player_controls/classic/info_box.scss +2 -2
- data/app/assets/stylesheets/pageflow/themes/default/player_controls/classic/menu_bar.scss +5 -0
- data/app/assets/stylesheets/pageflow/themes/default/player_controls/shared/menu_bar.scss +121 -0
- data/app/assets/stylesheets/pageflow/themes/default/player_controls/slim.scss +2 -0
- data/app/assets/stylesheets/pageflow/themes/default/player_controls/slim/container.scss +2 -0
- data/app/assets/stylesheets/pageflow/themes/default/player_controls/slim/control_bar.scss +74 -12
- data/app/assets/stylesheets/pageflow/themes/default/player_controls/slim/cue_margins.scss +3 -0
- data/app/assets/stylesheets/pageflow/themes/default/player_controls/slim/info_box.scss +31 -5
- data/app/assets/stylesheets/pageflow/themes/default/player_controls/slim/menu_bar.scss +13 -0
- data/app/assets/stylesheets/pageflow/themes/default/player_controls/slim/quality_menu.scss +116 -0
- data/app/assets/stylesheets/pageflow/themes/default/player_controls/vjs_mapping.scss +13 -3
- data/app/assets/stylesheets/pageflow/themes/default/player_controls/widget_margins.scss +8 -3
- data/app/assets/stylesheets/pageflow/themes/default/text_track_cues.scss +25 -0
- data/app/assets/stylesheets/pageflow/themes/default/variables/widgets.scss +2 -2
- data/app/assets/stylesheets/pageflow/themes/default/video_player/vjs_base.scss +122 -79
- data/app/assets/stylesheets/pageflow/themes/default/video_wrapper.scss +16 -7
- data/app/assets/stylesheets/pageflow/ui.scss +5 -1
- data/app/assets/stylesheets/pageflow/ui/forms.scss +5 -58
- data/app/assets/stylesheets/pageflow/ui/table_cells/delete_row_table_cell.scss +7 -0
- data/app/assets/stylesheets/pageflow/ui/table_cells/icon_table_cell.scss +16 -0
- data/app/assets/stylesheets/pageflow/ui/table_cells/presence_table_cell.scss +8 -0
- data/app/assets/stylesheets/pageflow/ui/table_view.scss +33 -0
- data/app/assets/stylesheets/pageflow/ui/tooltip.scss +1 -1
- data/app/controllers/pageflow/editor/encoding_confirmations_controller.rb +3 -3
- data/app/controllers/pageflow/editor/entry_publications_controller.rb +3 -3
- data/app/controllers/pageflow/editor/files_controller.rb +72 -14
- data/app/controllers/pageflow/editor/widgets_controller.rb +1 -1
- data/app/controllers/pageflow/entries_controller.rb +12 -2
- data/app/controllers/pageflow/files_controller.rb +1 -1
- data/app/helpers/pageflow/admin/entries_helper.rb +17 -0
- data/app/helpers/pageflow/admin/form_helper.rb +1 -1
- data/app/helpers/pageflow/admin/memberships_helper.rb +117 -13
- data/app/helpers/pageflow/common_entry_seed_helper.rb +36 -5
- data/app/helpers/pageflow/embed_code_helper.rb +32 -0
- data/app/helpers/pageflow/entries_helper.rb +1 -1
- data/app/helpers/pageflow/entry_json_seed_helper.rb +6 -16
- data/app/helpers/pageflow/files_helper.rb +5 -2
- data/app/helpers/pageflow/folders_helper.rb +26 -2
- data/app/helpers/pageflow/page_background_asset_helper.rb +8 -0
- data/app/helpers/pageflow/quota_helper.rb +1 -1
- data/app/helpers/pageflow/video_files_helper.rb +0 -5
- data/app/jobs/pageflow/poll_zencoder_job.rb +1 -1
- data/app/jobs/pageflow/process_file_job.rb +18 -0
- data/app/mailers/pageflow/user_mailer.rb +4 -2
- data/app/models/concerns/pageflow/hosted_file.rb +9 -0
- data/app/models/concerns/pageflow/output_source.rb +60 -0
- data/app/models/concerns/pageflow/uploaded_file.rb +33 -5
- data/app/models/pageflow/account.rb +3 -1
- data/app/models/pageflow/audio_file_url_templates.rb +21 -0
- data/app/models/pageflow/draft_entry.rb +19 -9
- data/app/models/pageflow/entry.rb +2 -1
- data/app/models/pageflow/entry_duplicate.rb +2 -2
- data/app/models/pageflow/entry_role_query.rb +81 -0
- data/app/models/pageflow/file_reuse.rb +25 -0
- data/app/models/pageflow/file_usage.rb +7 -1
- data/app/models/pageflow/image_file.rb +7 -1
- data/app/models/pageflow/image_file_url_templates.rb +19 -0
- data/app/models/pageflow/invited_user.rb +2 -0
- data/app/models/pageflow/membership.rb +46 -3
- data/app/models/pageflow/published_entry.rb +2 -2
- data/app/models/pageflow/revision.rb +16 -5
- data/app/models/pageflow/roles.rb +36 -0
- data/app/models/pageflow/text_track_file.rb +45 -0
- data/app/models/pageflow/text_track_file_url_templates.rb +16 -0
- data/app/models/pageflow/thumbnail_file_resolver.rb +22 -2
- data/app/models/pageflow/url_template.rb +13 -0
- data/app/models/pageflow/used_file.rb +21 -0
- data/app/models/pageflow/video_file.rb +72 -27
- data/app/models/pageflow/video_file_url_templates.rb +34 -0
- data/app/policies/pageflow/account_policy.rb +145 -0
- data/app/policies/pageflow/admin/admin_only_tab_policy.rb +16 -0
- data/app/policies/pageflow/admin/entry_tab_policy.rb +25 -0
- data/app/policies/pageflow/application_policy.rb +11 -0
- data/app/policies/pageflow/entry_policy.rb +138 -0
- data/app/policies/pageflow/file_policy.rb +42 -0
- data/app/policies/pageflow/folder_policy.rb +54 -0
- data/app/policies/pageflow/membership_policy.rb +105 -0
- data/app/policies/pageflow/theming_policy.rb +57 -0
- data/app/policies/pageflow/user_policy.rb +69 -0
- data/app/state_machines/pageflow/encoded_file_state_machine.rb +4 -0
- data/app/state_machines/pageflow/image_file_state_machine.rb +5 -1
- data/app/views/admin/entries/_attributes_table.html.arb +21 -2
- data/app/views/admin/entries/_links.html.arb +1 -1
- data/app/views/admin/memberships/_entity_account_input.html.erb +5 -0
- data/app/views/admin/memberships/_entity_entry_input.html.erb +5 -0
- data/app/views/admin/memberships/_form.html.erb +16 -5
- data/app/views/admin/memberships/_role_hint.html.arb +2 -0
- data/app/views/admin/users/_form.html.erb +29 -20
- data/app/views/components/pageflow/admin/add_membership_button_if_needed.rb +62 -0
- data/app/views/components/pageflow/admin/embed_code_field.rb +15 -0
- data/app/views/components/pageflow/admin/entry_user_badge_list.rb +15 -7
- data/app/views/components/pageflow/admin/grouped_folder_list.rb +20 -16
- data/app/views/components/pageflow/admin/members_tab.rb +22 -11
- data/app/views/components/pageflow/admin/membership_role_with_tooltip.rb +21 -0
- data/app/views/components/pageflow/admin/tabs_view.rb +13 -13
- data/app/views/components/pageflow/admin/user_account_badge_list.rb +43 -0
- data/app/views/components/pageflow/admin/user_accounts_tab.rb +46 -0
- data/app/views/components/pageflow/admin/user_entries_tab.rb +50 -0
- data/app/views/components/pageflow/admin/users_tab.rb +32 -4
- data/app/views/layouts/pageflow/application.html.erb +3 -2
- data/app/views/pageflow/config/_editor_seeds.json.jbuilder +15 -2
- data/app/views/pageflow/editor/entries/_entry.json.jbuilder +1 -0
- data/app/views/pageflow/editor/files/_file.json.jbuilder +10 -2
- data/app/views/pageflow/entries/show.css.erb +4 -11
- data/app/views/pageflow/entries/show.json.jbuilder +1 -1
- data/app/views/pageflow/entry_json_seed/_entry.json.jbuilder +19 -0
- data/app/views/pageflow/file_types/_thumbnails.css.erb +1 -1
- data/app/views/pageflow/files/_file.json.jbuilder +12 -0
- data/app/views/pageflow/page_background_asset/_element.html.erb +3 -0
- data/app/views/pageflow/page_types/_page_type.json.jbuilder +7 -0
- data/app/views/pageflow/react/_widget.html.erb +1 -0
- data/app/views/pageflow/react/page.html.erb +6 -0
- data/app/views/pageflow/video_files/_video_file.json.jbuilder +2 -0
- data/config/initializers/admin_resource_tabs.rb +8 -1
- data/config/initializers/features.rb +1 -4
- data/config/initializers/help_entries.rb +2 -1
- data/config/initializers/paperclip.rb +4 -0
- data/config/initializers/zencoder.rb +5 -2
- data/config/locales/de.yml +370 -108
- data/config/locales/en.yml +333 -83
- data/config/routes.rb +18 -10
- data/db/migrate/20150825133449_update_audio_loop_pages_to_use_atmo.rb +24 -0
- data/db/migrate/20160304072911_rename_membership_entry_and_make_polymorphic.rb +19 -0
- data/db/migrate/20160304151327_add_role_to_membership.rb +19 -0
- data/db/migrate/20160504093145_replace_role_and_account_on_user.rb +42 -0
- data/db/migrate/20160531152500_update_users_count.rb +27 -0
- data/db/migrate/20160707125400_add_output_presences_to_video_files.rb +5 -0
- data/db/migrate/20160824115000_add_parent_file_to_video_files.rb +8 -0
- data/db/migrate/20160824115100_add_parent_file_to_audio_files.rb +8 -0
- data/db/migrate/20160824115200_add_parent_file_to_image_files.rb +8 -0
- data/db/migrate/20160929102700_add_configuration_to_files.rb +7 -0
- data/db/migrate/20161007144500_add_text_track_files.rb +31 -0
- data/db/migrate/20161216175734_move_configuration_from_file_to_file_usage.rb +27 -0
- data/db/migrate/20161230144429_add_processed_attachment_to_text_track_files.rb +8 -0
- data/db/migrate/20170222124848_update_video_file_output_presences.rb +12 -0
- data/db/migrate/20170421112300_turn_background_video_pages_into_background_image_pages.rb +22 -0
- data/lib/generators/pageflow/assets/assets_generator.rb +2 -0
- data/lib/generators/pageflow/assets/templates/components.js +4 -0
- data/lib/generators/pageflow/initializer/templates/pageflow.rb +23 -20
- data/lib/generators/pageflow/seeds/templates/seeds.rb +81 -15
- data/lib/pageflow.rb +8 -0
- data/lib/pageflow/ability_mixin.rb +196 -62
- data/lib/pageflow/admin/tab.rb +21 -0
- data/lib/pageflow/admin/tabs.rb +31 -6
- data/lib/pageflow/built_in_file_type.rb +39 -0
- data/lib/pageflow/built_in_page_types_plugin.rb +80 -0
- data/lib/pageflow/configuration.rb +13 -1
- data/lib/pageflow/engine.rb +6 -1
- data/lib/pageflow/file_type.rb +60 -15
- data/lib/pageflow/file_types.rb +20 -2
- data/lib/pageflow/page_type.rb +53 -4
- data/lib/pageflow/page_types.rb +4 -0
- data/lib/pageflow/paperclip_processors/vtt.rb +35 -0
- data/lib/pageflow/react.rb +11 -0
- data/lib/pageflow/react/page_type.rb +26 -0
- data/lib/pageflow/react/widget_type.rb +20 -0
- data/lib/pageflow/seeds.rb +59 -15
- data/lib/pageflow/user_mixin.rb +18 -25
- data/lib/pageflow/version.rb +1 -1
- data/lib/pageflow/zencoder_api.rb +18 -4
- data/lib/pageflow/zencoder_video_output_definition.rb +375 -127
- data/lib/tasks/pageflow_tasks.rake +7 -0
- data/spec/factories/accounts.rb +36 -3
- data/spec/factories/entries.rb +22 -4
- data/spec/factories/invited_user.rb +3 -4
- data/spec/factories/memberships.rb +34 -2
- data/spec/factories/text_track_files.rb +40 -0
- data/spec/factories/users.rb +32 -7
- data/spec/factories/video_files.rb +7 -1
- data/spec/fixtures/sample.srt +12 -0
- data/spec/fixtures/sample.vtt +40 -0
- data/vendor/assets/javascripts/dash.all.min.js +14 -0
- data/vendor/assets/javascripts/polyfills/bind.js +17 -11
- data/vendor/assets/javascripts/videojs-dash.js +302 -0
- data/vendor/assets/javascripts/videojs.js +26804 -0
- metadata +187 -49
- data/app/assets/images/pageflow/themes/default/page_type_pictograms/audio_loop/sprite.png +0 -0
- data/app/assets/images/pageflow/themes/default/page_type_pictograms/audio_loop/wide.png +0 -0
- data/app/assets/javascripts/pageflow/editor/collections/file_usages_collection.js +0 -21
- data/app/assets/javascripts/pageflow/editor/models/file_usage.js +0 -8
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/audio_loop.js +0 -20
- data/app/assets/javascripts/pageflow/editor/views/configuration_editors/background_video.js +0 -24
- data/app/assets/javascripts/pageflow/page_types/audio.js +0 -135
- data/app/assets/javascripts/pageflow/page_types/audio_loop.js +0 -102
- data/app/assets/javascripts/pageflow/page_types/background_image.js +0 -44
- data/app/assets/javascripts/pageflow/page_types/background_video.js +0 -137
- data/app/assets/javascripts/pageflow/page_types/video.js +0 -277
- data/app/assets/javascripts/pageflow/ui/views/inputs/file_input_view.js +0 -79
- data/app/assets/javascripts/pageflow/video_player/play_button_patch.js +0 -39
- data/app/assets/javascripts/pageflow/video_player/player_buffered_patch.js +0 -47
- data/app/assets/javascripts/pageflow/video_player/src_from_options_method.js +0 -31
- data/app/assets/stylesheets/pageflow/page_types/audio_loop.scss +0 -18
- data/app/assets/stylesheets/pageflow/page_types/background-video.scss +0 -50
- data/app/controllers/pageflow/editor/file_usages_controller.rb +0 -37
- data/app/jobs/pageflow/process_image_file_job.rb +0 -18
- data/app/views/pageflow/pages/templates/_audio.html.erb +0 -69
- data/app/views/pageflow/pages/templates/_audio_loop.html.erb +0 -34
- data/app/views/pageflow/pages/templates/_background_image.html.erb +0 -24
- data/app/views/pageflow/pages/templates/_background_video.html.erb +0 -32
- data/app/views/pageflow/pages/templates/_video.html.erb +0 -42
- data/lib/pageflow/built_in_page_type.rb +0 -79
@@ -5,10 +5,12 @@
|
|
5
5
|
that = this;
|
6
6
|
|
7
7
|
parent.on('pageactivate', function(event) {
|
8
|
+
var pageOrPageWrapper = $(event.target).add('.content_and_background', event.target);
|
9
|
+
|
8
10
|
that.element.toggleClass('invert', $(event.target).hasClass('invert'));
|
9
11
|
that.element.toggleClass('hidden',
|
10
|
-
|
11
|
-
|
12
|
+
pageOrPageWrapper.hasClass('hide_content_with_text') ||
|
13
|
+
pageOrPageWrapper.hasClass('no_hidden_text_indicator'));
|
12
14
|
});
|
13
15
|
|
14
16
|
parent.on('hidetextactivate', function() {
|
@@ -32,13 +32,17 @@ pageflow.hideText = (function() {
|
|
32
32
|
},
|
33
33
|
|
34
34
|
activate: function() {
|
35
|
-
|
36
|
-
|
35
|
+
if (!this.isActive()) {
|
36
|
+
element().addClass('hideText');
|
37
|
+
element().trigger('hidetextactivate');
|
38
|
+
}
|
37
39
|
},
|
38
40
|
|
39
41
|
deactivate: function() {
|
40
|
-
|
41
|
-
|
42
|
+
if (this.isActive()) {
|
43
|
+
element().removeClass('hideText');
|
44
|
+
element().trigger('hidetextdeactivate');
|
45
|
+
}
|
42
46
|
},
|
43
47
|
|
44
48
|
on: function(event, callback) {
|
@@ -5,6 +5,11 @@
|
|
5
5
|
var prototype = {
|
6
6
|
_create: function() {
|
7
7
|
this.configuration = this.element.data('configuration') || this.options.configuration;
|
8
|
+
this.index = this.options.index;
|
9
|
+
},
|
10
|
+
|
11
|
+
_destroy: function() {
|
12
|
+
this.isDestroyed = true;
|
8
13
|
},
|
9
14
|
|
10
15
|
_ensureCreated: function() {
|
@@ -4,6 +4,7 @@
|
|
4
4
|
* Wrapper widget around iScroll adding special bump events which
|
5
5
|
* are triggered when scrolling to the very top or very bottom
|
6
6
|
* (called boundary posititon below).
|
7
|
+
* @private
|
7
8
|
*/
|
8
9
|
$.widget('pageflow.scroller', {
|
9
10
|
dragThreshold: 50,
|
@@ -157,13 +158,11 @@
|
|
157
158
|
}
|
158
159
|
},
|
159
160
|
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
* is turned to times in a short period of time.
|
166
|
-
*/
|
161
|
+
// Whenever the a mousewheel event is triggered, we test whether
|
162
|
+
// the scroller is at the very top or at the very bottom. If so,
|
163
|
+
// we trigger a hintdown or hintup event the first time the mouse
|
164
|
+
// wheel turns and a bumpup or bumpdown event when the mouse wheel
|
165
|
+
// is turned to times in a short period of time.
|
167
166
|
_initMousewheelBump: function(direction) {
|
168
167
|
var firstBump = false;
|
169
168
|
|
@@ -189,10 +188,8 @@
|
|
189
188
|
}, this));
|
190
189
|
},
|
191
190
|
|
192
|
-
|
193
|
-
|
194
|
-
* pressed while the scroller in boundary position.
|
195
|
-
*/
|
191
|
+
// Trigger bumpup or bumpdown event when the a up/down key is
|
192
|
+
// pressed while the scroller in boundary position.
|
196
193
|
_initKeyboardBump: function(direction) {
|
197
194
|
this.iscroll.on('keyboard' + direction, _.bind(function(event) {
|
198
195
|
if (this._atBoundary(direction)) {
|
@@ -210,10 +207,8 @@
|
|
210
207
|
}, this));
|
211
208
|
},
|
212
209
|
|
213
|
-
|
214
|
-
|
215
|
-
* boundary position.
|
216
|
-
*/
|
210
|
+
// Trigger bumpup or bumpdown when the user drags the page from a
|
211
|
+
// boundary position.
|
217
212
|
_initDragGestureBump: function() {
|
218
213
|
var allowUp = false,
|
219
214
|
allowDown = false,
|
@@ -265,9 +260,7 @@
|
|
265
260
|
}
|
266
261
|
},
|
267
262
|
|
268
|
-
|
269
|
-
* Checks whether the scroller is at the very top or very bottom.
|
270
|
-
*/
|
263
|
+
// Checks whether the scroller is at the very top or very bottom.
|
271
264
|
_atBoundary: function(direction, options) {
|
272
265
|
options = options || {};
|
273
266
|
var delta = options.delta || 0;
|
@@ -11,7 +11,13 @@
|
|
11
11
|
//= require_tree ./ui/utils
|
12
12
|
//= require_tree ./ui/views/mixins
|
13
13
|
//= require ./ui/views/inputs/select_input_view
|
14
|
+
//= require ./ui/views/table_cells/table_cell_view
|
14
15
|
//= require_tree ./ui/views
|
15
16
|
//= require_tree ./ui/templates
|
16
17
|
|
18
|
+
/**
|
19
|
+
* Reusable Backbone views for the editor and admin interface.
|
20
|
+
* @module pageflow/ui
|
21
|
+
*/
|
22
|
+
|
17
23
|
window.pageflow = window.pageflow || {};
|
@@ -1,12 +1,107 @@
|
|
1
|
+
/**
|
2
|
+
* Helpers functions for handling translations.
|
3
|
+
*
|
4
|
+
* @memberof module:pageflow/ui
|
5
|
+
*/
|
1
6
|
pageflow.i18nUtils = {
|
7
|
+
/**
|
8
|
+
* Returns an array of translation keys based on the `prefixes`
|
9
|
+
* option and the given `keyName`.
|
10
|
+
*
|
11
|
+
* @param {string} keyName
|
12
|
+
* Suffix to append to prefixes.
|
13
|
+
*
|
14
|
+
* @param {string[]} [options.prefixes]
|
15
|
+
* Array of translation key prefixes.
|
16
|
+
*
|
17
|
+
* @param {string} [options.fallbackPrefix]
|
18
|
+
* Optional additional prefix to form a model based translation
|
19
|
+
* key of the form
|
20
|
+
* `prefix.fallbackModelI18nKey.propertyName.keyName`.
|
21
|
+
*
|
22
|
+
* @param {string} [options.fallbackModelI18nKey]
|
23
|
+
* Required if `fallbackPrefix` option is present.
|
24
|
+
*
|
25
|
+
* @return {string[]}
|
26
|
+
* @since 12.0
|
27
|
+
*/
|
28
|
+
attributeTranslationKeys: function(attributeName, keyName, options) {
|
29
|
+
var result = [];
|
30
|
+
|
31
|
+
if (options.prefixes) {
|
32
|
+
result = result.concat(_(options.prefixes).map(function(prefix) {
|
33
|
+
return prefix + '.' + attributeName + '.' + keyName;
|
34
|
+
}, this));
|
35
|
+
}
|
36
|
+
|
37
|
+
if (options && options.fallbackPrefix) {
|
38
|
+
result.push(options.fallbackPrefix + '.' +
|
39
|
+
options.fallbackModelI18nKey + '.' +
|
40
|
+
attributeName);
|
41
|
+
}
|
42
|
+
|
43
|
+
return result;
|
44
|
+
},
|
45
|
+
|
46
|
+
/**
|
47
|
+
* Takes the same parameters as {@link
|
48
|
+
* module:pageflow/ui.pageflow.i18nUtils.attributeTranslationKeys
|
49
|
+
* i18nUtils.attributeTranslationKeys}, but returns the first
|
50
|
+
* existing translation.
|
51
|
+
*
|
52
|
+
* @return {string}
|
53
|
+
* @since 12.0
|
54
|
+
*/
|
55
|
+
attributeTranslation: function(attributeName, keyName, options) {
|
56
|
+
return pageflow.i18nUtils.findTranslation(
|
57
|
+
this.attributeTranslationKeys(attributeName, keyName, options)
|
58
|
+
);
|
59
|
+
},
|
60
|
+
|
61
|
+
/**
|
62
|
+
* Find the first key for which a translation exists and return the
|
63
|
+
* translation.
|
64
|
+
*
|
65
|
+
* @param {string[]} keys
|
66
|
+
* Translation key candidates.
|
67
|
+
*
|
68
|
+
* @param {string} [options.defaultValue]
|
69
|
+
* Value to return if none of the keys has a translation. Is
|
70
|
+
* treated like an HTML translation if html flag is set.
|
71
|
+
*
|
72
|
+
* @param {boolean} [options.html]
|
73
|
+
* If true, also search for keys ending in '_html' and HTML-escape
|
74
|
+
* keys that do not end in 'html'
|
75
|
+
*
|
76
|
+
* @return {string}
|
77
|
+
*/
|
2
78
|
findTranslation: function(keys, options) {
|
3
79
|
options = options || {};
|
4
80
|
|
81
|
+
if (options.html) {
|
82
|
+
keys = this.translationKeysWithSuffix(keys, 'html');
|
83
|
+
}
|
84
|
+
|
5
85
|
return _.chain(keys).reverse().reduce(function(result, key) {
|
6
|
-
|
86
|
+
var unescapedTranslation = I18n.t(key, _.extend({}, options, {defaultValue: result}));
|
87
|
+
if (!options.html || key.match(/_html$/) || result == unescapedTranslation) {
|
88
|
+
return unescapedTranslation;
|
89
|
+
}
|
90
|
+
else {
|
91
|
+
return $('<div />').text(unescapedTranslation).html();
|
92
|
+
}
|
7
93
|
}, options.defaultValue).value();
|
8
94
|
},
|
9
95
|
|
96
|
+
/**
|
97
|
+
* Return the first key for which a translation exists. Returns the
|
98
|
+
* first if non of the keys has a translation.
|
99
|
+
*
|
100
|
+
* @param {string[]} keys
|
101
|
+
* Translation key candidates.
|
102
|
+
*
|
103
|
+
* @return {string}
|
104
|
+
*/
|
10
105
|
findKeyWithTranslation: function(keys) {
|
11
106
|
var missing = '_not_translated';
|
12
107
|
|
@@ -20,4 +115,4 @@ pageflow.i18nUtils = {
|
|
20
115
|
return [key + '_' + suffix, key];
|
21
116
|
}).flatten().value();
|
22
117
|
}
|
23
|
-
};
|
118
|
+
};
|
@@ -80,7 +80,14 @@ pageflow.CollectionView = Backbone.Marionette.View.extend({
|
|
80
80
|
var last = null;
|
81
81
|
|
82
82
|
this.collection.each(function(item) {
|
83
|
-
var
|
83
|
+
var itemView = this.itemViews.findByModel(item);
|
84
|
+
var element;
|
85
|
+
|
86
|
+
if (!itemView) {
|
87
|
+
return;
|
88
|
+
}
|
89
|
+
|
90
|
+
element = itemView.$el;
|
84
91
|
|
85
92
|
if (last) {
|
86
93
|
last.after(element);
|
@@ -1,3 +1,14 @@
|
|
1
|
+
/**
|
2
|
+
* Input view for boolean values.
|
3
|
+
*
|
4
|
+
* @param {boolean} [options.displayUncheckedIfDisabled=false]
|
5
|
+
* Ignore the attribute value if the input is disabled and display
|
6
|
+
* an unchecked check box.
|
7
|
+
*
|
8
|
+
* @see {@link module:pageflow/ui.pageflow.inputView pageflow.inputView} for further options
|
9
|
+
* @class
|
10
|
+
* @memberof module:pageflow/ui
|
11
|
+
*/
|
1
12
|
pageflow.CheckBoxInputView = Backbone.Marionette.ItemView.extend({
|
2
13
|
mixins: [pageflow.inputView],
|
3
14
|
|
@@ -41,4 +52,4 @@ pageflow.CheckBoxInputView = Backbone.Marionette.ItemView.extend({
|
|
41
52
|
return this.model.get(this.options.propertyName);
|
42
53
|
}
|
43
54
|
}
|
44
|
-
});
|
55
|
+
});
|
@@ -1,7 +1,53 @@
|
|
1
1
|
//= require ./url_input_view
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
/**
|
4
|
+
* Input view that verifies that a certain URL is reachable via a
|
5
|
+
* proxy. To conform with same origin restrictions, this input view
|
6
|
+
* lets the user enter some url and saves a rewritten url where the
|
7
|
+
* domain is replaced with some path segment.
|
8
|
+
*
|
9
|
+
* That way, when `/example` is setup to proxy requests to
|
10
|
+
* `http://example.com`, the user can enter an url of the form
|
11
|
+
* `http://example.com/some/path` but the string `/example/some/path`
|
12
|
+
* is persisited to the database.
|
13
|
+
*
|
14
|
+
* @param {string} options.displayPropertyName
|
15
|
+
* Attribute name to store the url entered by the user.
|
16
|
+
*
|
17
|
+
* @param {Object[]} options.proxies
|
18
|
+
* List of supported proxies.
|
19
|
+
*
|
20
|
+
* @param {string} options.proxies[].url
|
21
|
+
* Supported prefix of an url that can be entered by the user.
|
22
|
+
*
|
23
|
+
* @param {string} options.proxies[].base_path
|
24
|
+
* Path to replace the url prefix with.
|
25
|
+
*
|
26
|
+
* @param {boolean} [options.required=false]
|
27
|
+
* Display an error if the url is blank.
|
28
|
+
*
|
29
|
+
* @param {boolean} [options.permitHttps=false]
|
30
|
+
* Allow urls with https protocol.
|
31
|
+
*
|
32
|
+
* @example
|
33
|
+
*
|
34
|
+
* this.input('url, pageflow.ProxyUrlInputView, {
|
35
|
+
* proxies: [
|
36
|
+
* {
|
37
|
+
* url: 'http://example.com',
|
38
|
+
* base_path: '/example'
|
39
|
+
* }
|
40
|
+
* ]
|
41
|
+
* });
|
42
|
+
*
|
43
|
+
* @see {@link module:pageflow/ui.pageflow.inputView pageflow.inputView} for further options
|
44
|
+
* @class
|
45
|
+
* @memberof module:pageflow/ui
|
46
|
+
*/
|
47
|
+
pageflow.ProxyUrlInputView = pageflow.UrlInputView.extend(
|
48
|
+
/** @lends module:pageflow/ui.pageflow.ProxyUrlInputView# */{
|
49
|
+
|
50
|
+
// @override
|
5
51
|
validateUrl: function(url) {
|
6
52
|
var view = this;
|
7
53
|
|
@@ -19,12 +65,12 @@ pageflow.ProxyUrlInputView = pageflow.UrlInputView.extend({
|
|
19
65
|
}).promise();
|
20
66
|
},
|
21
67
|
|
22
|
-
|
68
|
+
// @override
|
23
69
|
transformPropertyValue: function(url) {
|
24
70
|
return this.rewriteUrl(url);
|
25
71
|
},
|
26
72
|
|
27
|
-
|
73
|
+
// @override
|
28
74
|
supportedHosts: function() {
|
29
75
|
return _.pluck(this.options.proxies, 'url');
|
30
76
|
},
|
@@ -36,4 +82,4 @@ pageflow.ProxyUrlInputView = pageflow.UrlInputView.extend({
|
|
36
82
|
|
37
83
|
return url;
|
38
84
|
}
|
39
|
-
});
|
85
|
+
});
|
@@ -1,3 +1,76 @@
|
|
1
|
+
/**
|
2
|
+
* A drop down with support for grouped items.
|
3
|
+
*
|
4
|
+
* @param {string[]} [options.values]
|
5
|
+
* List of possible values to persist in the attribute.
|
6
|
+
*
|
7
|
+
* @param {string[]} [options.texts]
|
8
|
+
* List of display texts for drop down items.
|
9
|
+
*
|
10
|
+
* @param {string[]} [options.translationKeys]
|
11
|
+
* Translation keys to obtain item texts from.
|
12
|
+
*
|
13
|
+
* @param {string[]} [options.translationKeyPrefix]
|
14
|
+
* Obtain texts for items from translations by appending the item
|
15
|
+
* value to this prefix separated by a dot. By default the
|
16
|
+
* [`attributeTranslationKeyPrefixes` option]{@link module:pageflow/ui:pageflow.inputView}
|
17
|
+
* is used by appending the suffix `.values` to each candidate.
|
18
|
+
*
|
19
|
+
* @param {string[]} [options.groups]
|
20
|
+
* Array of same length as `values` array, containing the display
|
21
|
+
* name of a group header each item shall be grouped under.
|
22
|
+
*
|
23
|
+
* @param {Backbone.Model[]} [options.collection]
|
24
|
+
* Create items for each model in the collection. Use the
|
25
|
+
* `*Property` options to extract values and texts for each items
|
26
|
+
* from the models.
|
27
|
+
*
|
28
|
+
* @param {string} [options.valueProperty]
|
29
|
+
* Attribute to use as item value.
|
30
|
+
*
|
31
|
+
* @param {string} [options.textProperty]
|
32
|
+
* Attribute to use as item display text.
|
33
|
+
*
|
34
|
+
* @param {string} [options.groupProperty]
|
35
|
+
* Attribute to use as item group name.
|
36
|
+
*
|
37
|
+
* @param {string} [options.translationKeyProperty]
|
38
|
+
* Attribute to use as translation key to obtain display text.
|
39
|
+
*
|
40
|
+
* @param {string} [options.groupTranslationKeyProperty]
|
41
|
+
* Attribute to use as translation key to obtain group name.
|
42
|
+
*
|
43
|
+
* @param {boolean} [options.ensureValueDefined]
|
44
|
+
* Set the attribute to the first value on view creation.
|
45
|
+
*
|
46
|
+
* @param {boolean} [options.includeBlank]
|
47
|
+
* Include an item that sets the value of the attribute to a blank
|
48
|
+
* string.
|
49
|
+
*
|
50
|
+
* @param {string} [options.blankText]
|
51
|
+
* Display text for the blank item.
|
52
|
+
*
|
53
|
+
* @param {string} [options.blankTranslationKey]
|
54
|
+
* Translation key to obtain display text for blank item.
|
55
|
+
*
|
56
|
+
* @param {string} [options.placeholderValue]
|
57
|
+
* Include an item that sets the value of the attribute to a blank
|
58
|
+
* string and indicate that the attribute is set to a default
|
59
|
+
* value. Include the display name of the given value, in the
|
60
|
+
* text. This option can be used if a fallback to the
|
61
|
+
* `placeholderValue` occurs whenever the attribute is blank.
|
62
|
+
*
|
63
|
+
* @param {Backbone.Model} [options.placeholderModel]
|
64
|
+
* Behaves like `placeholderValue`, but obtains the value by looking
|
65
|
+
* up the `propertyName` attribute inside the given model. This
|
66
|
+
* option can be used if a fallback to the corresponding attribute
|
67
|
+
* value of the `placeholderModel` occurs whenever the attribute is
|
68
|
+
* blank.
|
69
|
+
*
|
70
|
+
* @see {@link module:pageflow/ui.pageflow.inputView pageflow.inputView} for further options
|
71
|
+
* @class
|
72
|
+
* @memberof module:pageflow/ui
|
73
|
+
*/
|
1
74
|
pageflow.SelectInputView = Backbone.Marionette.ItemView.extend({
|
2
75
|
mixins: [pageflow.inputView],
|
3
76
|
|
@@ -139,7 +212,12 @@ pageflow.SelectInputView = Backbone.Marionette.ItemView.extend({
|
|
139
212
|
|
140
213
|
load: function() {
|
141
214
|
if (!this.isClosed) {
|
142
|
-
|
215
|
+
if (this.model.has(this.options.propertyName)) {
|
216
|
+
this.ui.select.val(this.model.get(this.options.propertyName));
|
217
|
+
}
|
218
|
+
else {
|
219
|
+
this.ui.select.val(this.ui.select.find('option:first').val());
|
220
|
+
}
|
143
221
|
}
|
144
222
|
}
|
145
|
-
});
|
223
|
+
});
|