From 005818b21cd5a4b9d352e7cb2983d177a22b2c6f Mon Sep 17 00:00:00 2001 From: Dhanendran Rajagopal Date: Mon, 25 Sep 2017 16:59:27 +0530 Subject: [PATCH 01/31] added a filter to modify the video sorting order --- includes/admin/api/class-bc-admin-media-api.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/includes/admin/api/class-bc-admin-media-api.php b/includes/admin/api/class-bc-admin-media-api.php index d2ebe8d9..bfae1edf 100644 --- a/includes/admin/api/class-bc-admin-media-api.php +++ b/includes/admin/api/class-bc-admin-media-api.php @@ -569,10 +569,18 @@ public function brightcove_media_query() { $bc_accounts->set_current_account_by_id( $account_id ); + /** + * Filter to modify the default sort order. + * Ref: https://support.brightcove.com/overview-cms-api#parameters + * + * @param string Valid sort field name. + */ + $bc_video_sort_field = apply_filters( 'bc_video_sort_field', 'updated_at' ); + // Get a list of videos. for ( $i = 0; $i < $tries; $i ++ ) { - $results = $this->cms_api->video_list( $posts_per_page, $posts_per_page * ( $page - 1 ), $query_string, 'updated_at' ); + $results = $this->cms_api->video_list( $posts_per_page, $posts_per_page * ( $page - 1 ), $query_string, $bc_video_sort_field ); if ( ! is_wp_error( $results ) ) { break; From fb09f08a4a0190fb44c13ebb0753d7cf6f157768 Mon Sep 17 00:00:00 2001 From: Dhanendran Rajagopal Date: Thu, 28 Sep 2017 15:35:47 +0530 Subject: [PATCH 02/31] Set bc_transient_keys to autoload false --- includes/class-bc-utility.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/includes/class-bc-utility.php b/includes/class-bc-utility.php index 52fe536b..dffa1536 100644 --- a/includes/class-bc-utility.php +++ b/includes/class-bc-utility.php @@ -655,7 +655,7 @@ public static function set_cache_item( $key, $type, $value, $expiration = 600 ) } - if ( update_option( 'bc_transient_keys', $transient_keys ) ) { + if ( update_option( 'bc_transient_keys', $transient_keys, false ) ) { return 1; // Key saved to Brightcove registry. } @@ -732,7 +732,7 @@ public static function delete_cache_item( $key = '', $type = '' ) { } - return update_option( 'bc_transient_keys', $transient_keys ); + return update_option( 'bc_transient_keys', $transient_keys, false ); } @@ -764,7 +764,7 @@ public static function get_cache_item( $key ) { unset( $transient_keys[ $key ] ); - update_option( 'bc_transient_keys', $transient_keys ); + update_option( 'bc_transient_keys', $transient_keys, false ); } From 8c2c5fc7e6949be8f8e1bb09764e0ed29e2ece89 Mon Sep 17 00:00:00 2001 From: Matthew Haines-Young Date: Thu, 28 Sep 2017 18:54:31 +0100 Subject: [PATCH 03/31] Add filter on query terms --- includes/admin/api/class-bc-admin-media-api.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/admin/api/class-bc-admin-media-api.php b/includes/admin/api/class-bc-admin-media-api.php index bfae1edf..c7539480 100644 --- a/includes/admin/api/class-bc-admin-media-api.php +++ b/includes/admin/api/class-bc-admin-media-api.php @@ -557,7 +557,7 @@ public function brightcove_media_query() { } - $query_string = implode( "+", $query_terms ); + $query_string = implode( "+", apply_filters( 'bc_video_query_terms', $query_terms ) ); /** * For playlists, we specify the order in the query string as follows: From 597eadafa5621515ad5c4c7078e45b9705566315 Mon Sep 17 00:00:00 2001 From: Sudar Muthu Date: Thu, 12 Oct 2017 21:31:37 +0530 Subject: [PATCH 04/31] Whitespce fixes --- package.json | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/package.json b/package.json index 47e9011f..fec5c555 100644 --- a/package.json +++ b/package.json @@ -1,31 +1,31 @@ { - "name": "brightcove-video-connect", - "private": true, - "title": "brightcove-video-connect", - "description": "A Brightclove plugin for WordPress.", - "version": "1.3.1", - "homepage": "https://wordpress.org/plugins/brightcove-video-connect/", - "author": { - "name": "10up", + "name": "brightcove-video-connect", + "private": true, + "title": "brightcove-video-connect", + "description": "A Brightclove plugin for WordPress.", + "version": "1.3.1", + "homepage": "https://wordpress.org/plugins/brightcove-video-connect/", + "author": { + "name": "10up", "email": "sales@10up.com" }, - "dependencies": {}, + "dependencies": {}, "devDependencies": { - "matchdep": "*", + "matchdep": "*", "grunt-contrib-nodeunit": "*", - "grunt-contrib-concat": "*", - "grunt-contrib-clean": "*", - "grunt-contrib-jshint": "*", - "grunt-contrib-sass": "*", - "grunt-sassdoc": "*", - "grunt": "*", - "grunt-contrib-uglify": "*", - "grunt-contrib-watch": "*", - "grunt-sass": "*", - "grunt-contrib-cssmin": "*", - "load-grunt-tasks": "*", - "grunt-autoprefixer": "*", - "grunt-wp-i18n": "*" + "grunt-contrib-concat": "*", + "grunt-contrib-clean": "*", + "grunt-contrib-jshint": "*", + "grunt-contrib-sass": "*", + "grunt-sassdoc": "*", + "grunt": "*", + "grunt-contrib-uglify": "*", + "grunt-contrib-watch": "*", + "grunt-sass": "*", + "grunt-contrib-cssmin": "*", + "load-grunt-tasks": "*", + "grunt-autoprefixer": "*", + "grunt-wp-i18n": "*" }, - "keywords": [] -} \ No newline at end of file + "keywords": [] +} From 5bb7e7662d975ebf1996edda6a13b17f03b4c798 Mon Sep 17 00:00:00 2001 From: Sudar Muthu Date: Thu, 12 Oct 2017 21:32:04 +0530 Subject: [PATCH 05/31] Update Gruntfile for latest grunt uglify plugin --- Gruntfile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gruntfile.js b/Gruntfile.js index a44ddfc1..fc8996b0 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -109,7 +109,7 @@ module.exports = function ( grunt ) { beautify : false, preserveComments : 'all', mangle : { - except : ['jQuery'] + reserved : ['jQuery'] }, separator: ';\n', From f030e86bbccd9540ad0216fb547601c4ef0cdd49 Mon Sep 17 00:00:00 2001 From: Sudar Muthu Date: Fri, 13 Oct 2017 13:58:14 +0530 Subject: [PATCH 06/31] Generate Video Player --- assets/css/brightcove_video_connect.css | 37 +- assets/css/brightcove_video_connect.min.css | 2 +- assets/js/bc-status.min.js | 8 +- assets/js/brightcove-admin.js | 97 +++-- assets/js/brightcove-admin.js.map | 2 +- assets/js/brightcove-admin.min.js | 382 +------------------- assets/js/src/views/brightcove-modal.js | 4 +- assets/js/src/views/brightcove.js | 24 +- assets/js/src/views/media-details.js | 69 +++- assets/scss/components/_video-grid.scss | 38 +- includes/admin/class-bc-templates.php | 115 +++++- includes/class-bc-utility.php | 106 ++++-- includes/class-bc-video-shortcode.php | 18 +- 13 files changed, 377 insertions(+), 525 deletions(-) diff --git a/assets/css/brightcove_video_connect.css b/assets/css/brightcove_video_connect.css index 3a5d9cac..33e82ede 100644 --- a/assets/css/brightcove_video_connect.css +++ b/assets/css/brightcove_video_connect.css @@ -120,8 +120,7 @@ div.brightcove-uploader div.brightcove-messages .updated { padding: 20px; box-sizing: border-box; border-right: 1px solid #ddd; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); } + transform: translate3d(0, 0, 0); } .brightcove-modal .video-preview-frame .brightcove.brightcove.media-frame-menu { padding-top: 20px; } @@ -417,10 +416,7 @@ div.brightcove-uploader div.brightcove-messages .updated { .brightcove.media-frame-menu .attachment-detail .video-info .video-created, .brightcove.media-frame-menu .attachment-detail .video-info .video-long-description, .brightcove.media-frame-menu .attachment-detail .video-info .video-description, - .brightcove.media-frame-menu .attachment-detail .video-info .video-id, - .brightcove.media-frame-menu .attachment-detail .video-info .video-source, .brightcove.media-frame-menu .attachment-detail .video-info .video-updated, - .brightcove.media-frame-menu .attachment-detail .video-info .video-player, .brightcove.media-frame-menu .attachment-detail .playlist-info .account-name, .brightcove.media-frame-menu .attachment-detail .playlist-info .created-date, .brightcove.media-frame-menu .attachment-detail .playlist-info .playlist-id, @@ -429,10 +425,7 @@ div.brightcove-uploader div.brightcove-messages .updated { .brightcove.media-frame-menu .attachment-detail .playlist-info .video-created, .brightcove.media-frame-menu .attachment-detail .playlist-info .video-long-description, .brightcove.media-frame-menu .attachment-detail .playlist-info .video-description, - .brightcove.media-frame-menu .attachment-detail .playlist-info .video-id, - .brightcove.media-frame-menu .attachment-detail .playlist-info .video-source, - .brightcove.media-frame-menu .attachment-detail .playlist-info .video-updated, - .brightcove.media-frame-menu .attachment-detail .playlist-info .video-player { + .brightcove.media-frame-menu .attachment-detail .playlist-info .video-updated { clear: both; display: block; color: #999; @@ -445,10 +438,7 @@ div.brightcove-uploader div.brightcove-messages .updated { .brightcove.media-frame-menu .attachment-detail .video-info .video-created .title, .brightcove.media-frame-menu .attachment-detail .video-info .video-long-description .title, .brightcove.media-frame-menu .attachment-detail .video-info .video-description .title, - .brightcove.media-frame-menu .attachment-detail .video-info .video-id .title, - .brightcove.media-frame-menu .attachment-detail .video-info .video-source .title, .brightcove.media-frame-menu .attachment-detail .video-info .video-updated .title, - .brightcove.media-frame-menu .attachment-detail .video-info .video-player .title, .brightcove.media-frame-menu .attachment-detail .playlist-info .account-name .title, .brightcove.media-frame-menu .attachment-detail .playlist-info .created-date .title, .brightcove.media-frame-menu .attachment-detail .playlist-info .playlist-id .title, @@ -457,11 +447,26 @@ div.brightcove-uploader div.brightcove-messages .updated { .brightcove.media-frame-menu .attachment-detail .playlist-info .video-created .title, .brightcove.media-frame-menu .attachment-detail .playlist-info .video-long-description .title, .brightcove.media-frame-menu .attachment-detail .playlist-info .video-description .title, - .brightcove.media-frame-menu .attachment-detail .playlist-info .video-id .title, - .brightcove.media-frame-menu .attachment-detail .playlist-info .video-source .title, - .brightcove.media-frame-menu .attachment-detail .playlist-info .video-updated .title, - .brightcove.media-frame-menu .attachment-detail .playlist-info .video-player .title { + .brightcove.media-frame-menu .attachment-detail .playlist-info .video-updated .title { margin-right: 5px; } + .brightcove.media-frame-menu .attachment-detail .video-details .left-col, .brightcove.media-frame-menu .attachment-detail .video-details label { + display: inline-block; + float: left; + clear: left; + width: 100px; + padding-top: 5px; } + .brightcove.media-frame-menu .attachment-detail .video-details .right-col { + display: inline-block; + float: left; + padding-top: 5px; } + .brightcove.media-frame-menu .attachment-detail .video-details input[type=number] { + width: 20%; } + .brightcove.media-frame-menu .attachment-detail .video-details textarea { + clear: both; + margin-top: 10px; + width: 100%; } + .brightcove.media-frame-menu .attachment-detail .video-details #custom { + display: none; } @media screen and (max-width: 700px) { .brightcove.media-frame-content { diff --git a/assets/css/brightcove_video_connect.min.css b/assets/css/brightcove_video_connect.min.css index 20704122..7ea979a4 100644 --- a/assets/css/brightcove_video_connect.min.css +++ b/assets/css/brightcove_video_connect.min.css @@ -1 +1 @@ -div.brightcove-messages{text-align:left;width:calc(100% - 4px)}div.brightcove-messages .updated{margin-left:0;margin-bottom:15px}div.brightcove-uploader div.brightcove-messages .updated{margin:20px 15px 2px}.brightcove-file-uploader{text-align:center}.brightcove-upload-queued-files{display:table;width:calc(100% - 20px);border:1px solid #ddd}.brightcove-pending-upload td{cursor:pointer}.brightcove-pending-upload td:nth-child(1){width:35%}.brightcove-pending-upload td:nth-child(2){width:10%}.brightcove-pending-upload td:nth-child(3){width:20%}.brightcove-pending-upload td:nth-child(4){width:35%}.brightcove-pending-upload.selected{background-color:#35a3ca}.brightcove-pending-upload.selected td{color:#fff}.ingest-success{background-color:#00adff}.upload-success{color:#003148}.brightcove-pending-upload-details{width:30%;display:table-cell;padding:20px;background-color:#f3f3f3;text-align:left;vertical-align:top}.pending-uploads{display:table-cell;width:70%;text-align:left;vertical-align:top;background-color:#fff}.pending-uploads table.widefat{border:0}.pending-uploads .brightcove-start-upload{margin-left:10px;margin-bottom:10px}.brightcove-media .spinner,.brightcove-media-videos .spinner{float:none;margin:5px 0;vertical-align:top}.brightcove-modal .media-frame-content,.brightcove-modal .media-frame-router,.brightcove-modal .media-frame-title,.brightcove-modal .media-frame-toolbar{left:0}.brightcove-modal .brightcove-media{overflow:hidden}.brightcove-modal .brightcove .wp-filter{border:0;box-shadow:none;right:0;width:100%;margin:0}.brightcove-modal .brightcove .media-toolbar-secondary{padding:0;min-width:280px}.brightcove-modal .brightcove .media-toolbar-primary.search-form input[type=search]{float:left;padding-bottom:0;width:200px}.brightcove-modal .brightcove #media-search{float:left;margin-left:10px;margin-right:5px}.brightcove-modal .pending-uploads{width:calc(100% - 40px);display:block;margin:20px}.brightcove-modal .brightcove-upload-queued-files{border:0;width:100%}.brightcove-modal .brightcove.media-frame-content{padding:0 20px;width:100%}@media screen and (min-width:700px){.brightcove-modal .brightcove.media-frame-content{width:calc(100% - 390px)}}.brightcove-modal .brightcove.video-preview{margin-top:20px}.brightcove-modal .video-preview-frame .brightcove.media-frame-content{padding:20px;box-sizing:border-box;border-right:1px solid #ddd;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.brightcove-modal .video-preview-frame .brightcove.brightcove.media-frame-menu{padding-top:20px}@media screen and (max-width:900px){.media-frame:not(.hide-menu) .media-frame-menu{width:300px}}.bc-page-icon{padding-right:10px}.notice{margin:5px 20px 2px 0}.brightcove-media-videos .error{margin:5px 20px 10px 0;text-align:left}.brightcove-media.playlist,.brightcove.media-frame-content{border-bottom:none;border-right:1px solid #ddd;border-top:none;position:static;height:600px;width:calc(100% - 370px);float:left;margin-right:30px;padding-right:20px}.brightcove-media.playlist .video-preview,.brightcove.media-frame-content .video-preview{padding-bottom:56.25%;position:relative}.brightcove-media.playlist .video-preview iframe,.brightcove.media-frame-content .video-preview iframe{height:100%;position:absolute;width:100%}.brightcove-media.playlist .brightcove-buttons,.brightcove.media-frame-content .brightcove-buttons{float:right;margin-top:20px}.brightcove-media.playlist.edit-view,.brightcove.media-frame-content.edit-view{width:calc(100% - 20px);border-right:none;height:auto}.brightcove-media.playlist .video-edit,.brightcove.media-frame-content .video-edit{max-width:721px;padding:5px}.brightcove-buttons .delete{color:#a00;padding-top:6px;display:inline-block}.brightcove-buttons .delete:hover{color:red}.brightcove.media-frame-router{position:relative;left:0;top:auto;height:auto}.brightcove.media-frame-router a.brightcove-toolbar{margin-left:1em}.brightcove.media-frame-menu{left:inherit;width:300px;position:relative;padding-top:0;left:auto;right:auto;top:auto;bottom:auto;float:left}.brightcove.media-frame-menu .brightcove-buttons::after{clear:both;content:"";display:table}.brightcove.media-frame-menu .more-actions{float:right}.brightcove.media-toolbar{padding:0}.brightcove.media-toolbar .wp-filter{padding:0 16px}.brightcove.media-toolbar .media-toolbar-secondary{margin:8px}@media screen and (max-width:780px){.brightcove.media-toolbar .brightcove.media-toolbar-secondary{margin:4px}}@media screen and (min-width:1500px){.brightcove-media.playlist .video-preview,.brightcove.media-frame-content .video-preview{padding-bottom:43.25%}}.brightcove .media-toolbar{position:relative;right:10px;width:calc(100% - 10px);height:auto}@media screen and (min-width:782px){.brightcove .media-toolbar{right:20px;width:calc(100% - 20px)}}.brightcove .media-toolbar-secondary{padding:12px 0;box-sizing:border-box}.wp-core-ui .brightcove.attachment{float:none}.wp-core-ui .brightcove.attachment.details:focus,.wp-core-ui .brightcove.attachment:focus,.wp-core-ui .selected.brightcove.attachment:focus{box-shadow:none}.brightcove.media-frame-content,.playlist-edit-container{background-color:transparent}.brightcove.media-frame-content .spinner,.playlist-edit-container .spinner{display:inline-block;margin:7px;visibility:visible}.brightcove.media-frame-content .spinner.hidden,.playlist-edit-container .spinner.hidden{visibility:hidden}.brightcove.media-frame-content .menu-visible .highlighted .thumbnail,.playlist-edit-container .menu-visible .highlighted .thumbnail{box-shadow:0 0 2px 5px #5b9dd9;outline:0}.brightcove.media-frame-content ul,.playlist-edit-container ul{text-align:justify}.brightcove.media-frame-content .attachment,.playlist-edit-container .attachment{display:inline-block;margin:0;vertical-align:top;word-wrap:break-word;padding:10px;width:100%}@media screen and (min-width:700px){.brightcove.media-frame-content .attachment,.playlist-edit-container .attachment{width:50%}}@media screen and (min-width:1000px){.brightcove.media-frame-content .attachment,.playlist-edit-container .attachment{width:33%}}@media screen and (min-width:1200px){.brightcove.media-frame-content .attachment,.playlist-edit-container .attachment{width:25%}}.brightcove.media-frame-content .attachment .attachment-preview,.playlist-edit-container .attachment .attachment-preview{background-color:transparent;box-shadow:none}.brightcove.media-frame-content .attachment .attachment-preview:before,.playlist-edit-container .attachment .attachment-preview:before{display:none}.brightcove.media-frame-content .attachment .thumbnail,.playlist-edit-container .attachment .thumbnail{overflow:hidden;position:relative;margin-bottom:10px}.brightcove.media-frame-content .attachment .thumbnail:after,.playlist-edit-container .attachment .thumbnail:after{display:none}.brightcove.media-frame-content .attachment .thumbnail img,.playlist-edit-container .attachment .thumbnail img{display:block;position:relative;width:100%;height:auto}.brightcove.media-frame-content .attachment .thumbnail .processing,.playlist-edit-container .attachment .thumbnail .processing{position:absolute;z-index:9999;top:0;left:0;width:100%;text-align:center;background:rgba(50,50,50,.7);color:#fff;font-size:12px;height:100%}.brightcove.media-frame-content .attachment .thumbnail .processing span,.playlist-edit-container .attachment .thumbnail .processing span{position:absolute;top:50%;margin-top:-9px;width:100%;left:0;text-align:center}.brightcove.media-frame-content .attachment .thumbnail .duration,.brightcove.media-frame-content .attachment .thumbnail .video-count,.playlist-edit-container .attachment .thumbnail .duration,.playlist-edit-container .attachment .thumbnail .video-count{background-color:#fff;bottom:0;padding:3px;position:absolute;right:0;width:auto;z-index:1000}.brightcove.media-frame-content .attachment .bc-info,.playlist-edit-container .attachment .bc-info{clear:both;display:block;height:auto;padding:1px;position:relative}.brightcove.media-frame-content .attachment .bc-info .bc-name,.playlist-edit-container .attachment .bc-info .bc-name{background-color:transparent;box-shadow:none!important;clear:both;display:inline;float:left;font-weight:700;height:auto;text-align:left!important;top:95px;word-break:break-word}.brightcove.media-frame-content .attachment .bc-info .bc-name div,.playlist-edit-container .attachment .bc-info .bc-name div{padding:0}.brightcove.media-frame-content .attachment .bc-info .bc-updated,.playlist-edit-container .attachment .bc-info .bc-updated{clear:both;color:#999;float:left;font-weight:400;height:100%}.brightcove.media-frame-content .attachment .media-actions,.playlist-edit-container .attachment .media-actions{clear:both;text-align:right}.brightcove.media-frame-content .attachment .media-actions .button,.playlist-edit-container .attachment .media-actions .button{margin-left:1em}@media screen and (min-width:700px){.brightcove.media-frame-content .attachment .media-actions,.playlist-edit-container .attachment .media-actions{display:none}}.brightcove.media-frame-menu{height:100%;box-sizing:border-box}.brightcove.media-frame-menu .attachment-detail .thumbnail{clear:both;position:relative}.brightcove.media-frame-menu .attachment-detail .thumbnail img{display:block;max-width:100%;height:auto}.brightcove.media-frame-menu .attachment-detail .thumbnail .processing{position:absolute;z-index:9999;top:0;left:0;width:100%;text-align:center;background:rgba(50,50,50,.7);color:#fff;font-size:12px;height:100%}.brightcove.media-frame-menu .attachment-detail .thumbnail .processing span{position:absolute;top:50%;margin-top:-6px;width:100%;left:0;text-align:center}.brightcove.media-frame-menu .attachment-detail .thumbnail .detail-duration,.brightcove.media-frame-menu .attachment-detail .thumbnail .detail-video-count{bottom:0;padding:0;position:absolute;right:0;z-index:1000}.brightcove.media-frame-menu .attachment-detail .thumbnail .detail-duration span,.brightcove.media-frame-menu .attachment-detail .thumbnail .detail-video-count span{background-color:#fff;float:right;padding:3px}.brightcove.media-frame-menu .attachment-detail .playlist-info,.brightcove.media-frame-menu .attachment-detail .video-info{margin:10px 0;overflow:hidden}.brightcove.media-frame-menu .attachment-detail .playlist-info .playlist-name,.brightcove.media-frame-menu .attachment-detail .playlist-info .video-name,.brightcove.media-frame-menu .attachment-detail .video-info .playlist-name,.brightcove.media-frame-menu .attachment-detail .video-info .video-name{clear:both;float:left;font-size:130%;font-weight:700;margin:5px 0 10px 0;word-break:break-word}.brightcove.media-frame-menu .attachment-detail .playlist-info .bc-video-section,.brightcove.media-frame-menu .attachment-detail .video-info .bc-video-section{display:block;float:left;height:auto;margin-bottom:20px;width:100%}.brightcove.media-frame-menu .attachment-detail .playlist-info .brightcove-player,.brightcove.media-frame-menu .attachment-detail .video-info .brightcove-player{display:block;padding:3px 0}.brightcove.media-frame-menu .attachment-detail .playlist-info .account-name,.brightcove.media-frame-menu .attachment-detail .playlist-info .created-date,.brightcove.media-frame-menu .attachment-detail .playlist-info .playlist-id,.brightcove.media-frame-menu .attachment-detail .playlist-info .playlist-type,.brightcove.media-frame-menu .attachment-detail .playlist-info .updated-date,.brightcove.media-frame-menu .attachment-detail .playlist-info .video-created,.brightcove.media-frame-menu .attachment-detail .playlist-info .video-description,.brightcove.media-frame-menu .attachment-detail .playlist-info .video-id,.brightcove.media-frame-menu .attachment-detail .playlist-info .video-long-description,.brightcove.media-frame-menu .attachment-detail .playlist-info .video-player,.brightcove.media-frame-menu .attachment-detail .playlist-info .video-source,.brightcove.media-frame-menu .attachment-detail .playlist-info .video-updated,.brightcove.media-frame-menu .attachment-detail .video-info .account-name,.brightcove.media-frame-menu .attachment-detail .video-info .created-date,.brightcove.media-frame-menu .attachment-detail .video-info .playlist-id,.brightcove.media-frame-menu .attachment-detail .video-info .playlist-type,.brightcove.media-frame-menu .attachment-detail .video-info .updated-date,.brightcove.media-frame-menu .attachment-detail .video-info .video-created,.brightcove.media-frame-menu .attachment-detail .video-info .video-description,.brightcove.media-frame-menu .attachment-detail .video-info .video-id,.brightcove.media-frame-menu .attachment-detail .video-info .video-long-description,.brightcove.media-frame-menu .attachment-detail .video-info .video-player,.brightcove.media-frame-menu .attachment-detail .video-info .video-source,.brightcove.media-frame-menu .attachment-detail .video-info .video-updated{clear:both;display:block;color:#999;float:left}.brightcove.media-frame-menu .attachment-detail .playlist-info .account-name .title,.brightcove.media-frame-menu .attachment-detail .playlist-info .created-date .title,.brightcove.media-frame-menu .attachment-detail .playlist-info .playlist-id .title,.brightcove.media-frame-menu .attachment-detail .playlist-info .playlist-type .title,.brightcove.media-frame-menu .attachment-detail .playlist-info .updated-date .title,.brightcove.media-frame-menu .attachment-detail .playlist-info .video-created .title,.brightcove.media-frame-menu .attachment-detail .playlist-info .video-description .title,.brightcove.media-frame-menu .attachment-detail .playlist-info .video-id .title,.brightcove.media-frame-menu .attachment-detail .playlist-info .video-long-description .title,.brightcove.media-frame-menu .attachment-detail .playlist-info .video-player .title,.brightcove.media-frame-menu .attachment-detail .playlist-info .video-source .title,.brightcove.media-frame-menu .attachment-detail .playlist-info .video-updated .title,.brightcove.media-frame-menu .attachment-detail .video-info .account-name .title,.brightcove.media-frame-menu .attachment-detail .video-info .created-date .title,.brightcove.media-frame-menu .attachment-detail .video-info .playlist-id .title,.brightcove.media-frame-menu .attachment-detail .video-info .playlist-type .title,.brightcove.media-frame-menu .attachment-detail .video-info .updated-date .title,.brightcove.media-frame-menu .attachment-detail .video-info .video-created .title,.brightcove.media-frame-menu .attachment-detail .video-info .video-description .title,.brightcove.media-frame-menu .attachment-detail .video-info .video-id .title,.brightcove.media-frame-menu .attachment-detail .video-info .video-long-description .title,.brightcove.media-frame-menu .attachment-detail .video-info .video-player .title,.brightcove.media-frame-menu .attachment-detail .video-info .video-source .title,.brightcove.media-frame-menu .attachment-detail .video-info .video-updated .title{margin-right:5px}@media screen and (max-width:700px){.brightcove.media-frame-content{border-right-width:0;margin-right:0;padding-right:0;width:auto}}@media screen and (max-width:412px){.brightcove.media-frame-content .attachment{padding:20px 10px}}.brightcove.video-edit .image-preview,.brightcove.video-edit .setting{margin-bottom:8px}.brightcove.video-edit .image-preview .description,.brightcove.video-edit .setting .description{margin-left:0}@media screen and (min-width:900px){.brightcove.video-edit .image-preview .description,.brightcove.video-edit .setting .description{margin-left:252px}}.brightcove.video-edit .setting-content,.brightcove.video-edit select{margin-left:7px}.brightcove.video-edit .setting-content{float:left;width:64%}.brightcove.video-edit .setting-content .button-secondary{clear:left;display:block}.brightcove.video-edit .attachment{cursor:pointer;padding:8px 0 0;width:auto}.brightcove.video-edit .attachment.active{display:block;max-width:100%}.brightcove.video-edit .attachment.active .check{display:block;top:9px}.brightcove.video-edit .attachment.active .button{display:none}.brightcove.video-edit .attachment img{height:auto;max-width:100%}.brightcove.video-edit .action-row{clear:both}.brightcove.video-edit .action-row .delete{color:#a00;display:inline-block;padding-top:6px}.brightcove.video-edit .caption-url,.brightcove.video-edit button.-captions{float:left}.brightcove.video-edit button.-captions{margin-right:1em}.brightcove.video-edit .caption-url{color:#666;line-height:28px}.brightcove.video-edit .add-remote-caption{line-height:28px}.brightcove.video-edit .caption-repeater{box-sizing:border-box;-moz-box-sizing:border-box;border-bottom:1px solid #d5d5d5;clear:both;padding:1em 0;width:100%}.brightcove.video-edit .caption-repeater:nth-last-child(1){border-bottom:0}.brightcove.video-edit .caption-repeater.empty-row{display:none}.brightcove.video-edit .caption-repeater.active{display:block}.brightcove.video-edit input.brightcove-captions{clear:both;margin-bottom:.75em;width:100%}.brightcove.video-edit .caption-secondary-fields{clear:both}.brightcove.video-edit .caption-secondary-fields:after,.brightcove.video-edit .caption-secondary-fields:before{content:" ";display:table}.brightcove.video-edit .caption-secondary-fields:after{clear:both}.brightcove.video-edit .caption-secondary-fields label{box-sizing:border-box;display:block;float:left;width:50%}.brightcove.video-edit .caption-secondary-fields label:after,.brightcove.video-edit .caption-secondary-fields label:before{content:" ";display:table}.brightcove.video-edit .caption-secondary-fields label:after{clear:both}.brightcove.video-edit .caption-secondary-fields label:nth-child(1){padding-right:1em}.brightcove.video-edit .caption-secondary-fields label input,.brightcove.video-edit .caption-secondary-fields label select,.brightcove.video-edit .caption-secondary-fields label span{margin:0;min-width:100%;text-align:left;width:100%}.playlist-edit.brightcove.attachment-details{width:100%;height:auto;margin-right:0;float:none;overflow:hidden;padding:20px;box-sizing:border-box}.playlist-edit.brightcove.attachment-details .settings{max-width:50%;margin-bottom:20px}.playlist-edit.brightcove.attachment-details .playlist-name{font-weight:700}.playlist-edit.brightcove.attachment-details .playlist-name span{display:inline-block;margin-right:20px;margin-left:10px}.playlist-edit.brightcove.attachment-details .playlist-name input{width:65%}.playlist-edit.brightcove.attachment-details .playlist-videos-list{border-right:1px solid #ddd;clear:both}.playlist-edit.brightcove.attachment-details .playlist-add-videos-list,.playlist-edit.brightcove.attachment-details .playlist-videos-list{width:50%;float:left;box-sizing:border-box}.playlist-edit.brightcove.attachment-details .playlist-add-videos-list h2,.playlist-edit.brightcove.attachment-details .playlist-videos-list h2{margin-bottom:0;padding-bottom:10px;padding-left:10px;border-bottom:1px solid #ddd}.playlist-edit.brightcove.attachment-details .playlist-add-videos-list ul,.playlist-edit.brightcove.attachment-details .playlist-videos-list ul{height:450px;overflow:auto}.playlist-edit.brightcove.attachment-details .playlist-add-videos-list .attachment,.playlist-edit.brightcove.attachment-details .playlist-videos-list .attachment{width:100%!important}.playlist-edit.brightcove.attachment-details .playlist-add-videos-list .thumbnail,.playlist-edit.brightcove.attachment-details .playlist-videos-list .thumbnail{width:162px;float:left}.playlist-edit.brightcove.attachment-details .playlist-add-videos-list .bc-info,.playlist-edit.brightcove.attachment-details .playlist-videos-list .bc-info{clear:none;float:left;margin-left:10px}.playlist-edit.brightcove.attachment-details .playlist-add-videos-list .row-actions,.playlist-edit.brightcove.attachment-details .playlist-videos-list .row-actions{visibility:visible;clear:both;display:block;text-align:left;position:relative;left:auto} \ No newline at end of file +div.brightcove-messages{text-align:left;width:calc(100% - 4px)}div.brightcove-messages .updated{margin-left:0;margin-bottom:15px}div.brightcove-uploader div.brightcove-messages .updated{margin:20px 15px 2px}.brightcove-file-uploader{text-align:center}.brightcove-upload-queued-files{display:table;width:calc(100% - 20px);border:1px solid #ddd}.brightcove-pending-upload td{cursor:pointer}.brightcove-pending-upload td:nth-child(1){width:35%}.brightcove-pending-upload td:nth-child(2){width:10%}.brightcove-pending-upload td:nth-child(3){width:20%}.brightcove-pending-upload td:nth-child(4){width:35%}.brightcove-pending-upload.selected{background-color:#35a3ca}.brightcove-pending-upload.selected td{color:#fff}.ingest-success{background-color:#00adff}.upload-success{color:#003148}.brightcove-pending-upload-details{width:30%;display:table-cell;padding:20px;background-color:#f3f3f3;text-align:left;vertical-align:top}.pending-uploads{display:table-cell;width:70%;text-align:left;vertical-align:top;background-color:#fff}.pending-uploads table.widefat{border:0}.pending-uploads .brightcove-start-upload{margin-left:10px;margin-bottom:10px}.brightcove-media .spinner,.brightcove-media-videos .spinner{float:none;margin:5px 0;vertical-align:top}.brightcove-modal .media-frame-content,.brightcove-modal .media-frame-router,.brightcove-modal .media-frame-title,.brightcove-modal .media-frame-toolbar{left:0}.brightcove-modal .brightcove-media{overflow:hidden}.brightcove-modal .brightcove .wp-filter{border:0;box-shadow:none;right:0;width:100%;margin:0}.brightcove-modal .brightcove .media-toolbar-secondary{padding:0;min-width:280px}.brightcove-modal .brightcove .media-toolbar-primary.search-form input[type=search]{float:left;padding-bottom:0;width:200px}.brightcove-modal .brightcove #media-search{float:left;margin-left:10px;margin-right:5px}.brightcove-modal .pending-uploads{width:calc(100% - 40px);display:block;margin:20px}.brightcove-modal .brightcove-upload-queued-files{border:0;width:100%}.brightcove-modal .brightcove.media-frame-content{padding:0 20px;width:100%}@media screen and (min-width:700px){.brightcove-modal .brightcove.media-frame-content{width:calc(100% - 390px)}}.brightcove-modal .brightcove.video-preview{margin-top:20px}.brightcove-modal .video-preview-frame .brightcove.media-frame-content{padding:20px;box-sizing:border-box;border-right:1px solid #ddd;transform:translate3d(0,0,0)}.brightcove-modal .video-preview-frame .brightcove.brightcove.media-frame-menu{padding-top:20px}@media screen and (max-width:900px){.media-frame:not(.hide-menu) .media-frame-menu{width:300px}}.bc-page-icon{padding-right:10px}.notice{margin:5px 20px 2px 0}.brightcove-media-videos .error{margin:5px 20px 10px 0;text-align:left}.brightcove-media.playlist,.brightcove.media-frame-content{border-bottom:none;border-right:1px solid #ddd;border-top:none;position:static;height:600px;width:calc(100% - 370px);float:left;margin-right:30px;padding-right:20px}.brightcove-media.playlist .video-preview,.brightcove.media-frame-content .video-preview{padding-bottom:56.25%;position:relative}.brightcove-media.playlist .video-preview iframe,.brightcove.media-frame-content .video-preview iframe{height:100%;position:absolute;width:100%}.brightcove-media.playlist .brightcove-buttons,.brightcove.media-frame-content .brightcove-buttons{float:right;margin-top:20px}.brightcove-media.playlist.edit-view,.brightcove.media-frame-content.edit-view{width:calc(100% - 20px);border-right:none;height:auto}.brightcove-media.playlist .video-edit,.brightcove.media-frame-content .video-edit{max-width:721px;padding:5px}.brightcove-buttons .delete{color:#a00;padding-top:6px;display:inline-block}.brightcove-buttons .delete:hover{color:red}.brightcove.media-frame-router{position:relative;left:0;top:auto;height:auto}.brightcove.media-frame-router a.brightcove-toolbar{margin-left:1em}.brightcove.media-frame-menu{left:inherit;width:300px;position:relative;padding-top:0;left:auto;right:auto;top:auto;bottom:auto;float:left}.brightcove.media-frame-menu .brightcove-buttons::after{clear:both;content:"";display:table}.brightcove.media-frame-menu .more-actions{float:right}.brightcove.media-toolbar{padding:0}.brightcove.media-toolbar .wp-filter{padding:0 16px}.brightcove.media-toolbar .media-toolbar-secondary{margin:8px}@media screen and (max-width:780px){.brightcove.media-toolbar .brightcove.media-toolbar-secondary{margin:4px}}@media screen and (min-width:1500px){.brightcove-media.playlist .video-preview,.brightcove.media-frame-content .video-preview{padding-bottom:43.25%}}.brightcove .media-toolbar{position:relative;right:10px;width:calc(100% - 10px);height:auto}@media screen and (min-width:782px){.brightcove .media-toolbar{right:20px;width:calc(100% - 20px)}}.brightcove .media-toolbar-secondary{padding:12px 0;box-sizing:border-box}.wp-core-ui .brightcove.attachment{float:none}.wp-core-ui .brightcove.attachment.details:focus,.wp-core-ui .brightcove.attachment:focus,.wp-core-ui .selected.brightcove.attachment:focus{box-shadow:none}.brightcove.media-frame-content,.playlist-edit-container{background-color:transparent}.brightcove.media-frame-content .spinner,.playlist-edit-container .spinner{display:inline-block;margin:7px;visibility:visible}.brightcove.media-frame-content .spinner.hidden,.playlist-edit-container .spinner.hidden{visibility:hidden}.brightcove.media-frame-content .menu-visible .highlighted .thumbnail,.playlist-edit-container .menu-visible .highlighted .thumbnail{box-shadow:0 0 2px 5px #5b9dd9;outline:0}.brightcove.media-frame-content ul,.playlist-edit-container ul{text-align:justify}.brightcove.media-frame-content .attachment,.playlist-edit-container .attachment{display:inline-block;margin:0;vertical-align:top;word-wrap:break-word;padding:10px;width:100%}@media screen and (min-width:700px){.brightcove.media-frame-content .attachment,.playlist-edit-container .attachment{width:50%}}@media screen and (min-width:1000px){.brightcove.media-frame-content .attachment,.playlist-edit-container .attachment{width:33%}}@media screen and (min-width:1200px){.brightcove.media-frame-content .attachment,.playlist-edit-container .attachment{width:25%}}.brightcove.media-frame-content .attachment .attachment-preview,.playlist-edit-container .attachment .attachment-preview{background-color:transparent;box-shadow:none}.brightcove.media-frame-content .attachment .attachment-preview:before,.playlist-edit-container .attachment .attachment-preview:before{display:none}.brightcove.media-frame-content .attachment .thumbnail,.playlist-edit-container .attachment .thumbnail{overflow:hidden;position:relative;margin-bottom:10px}.brightcove.media-frame-content .attachment .thumbnail:after,.playlist-edit-container .attachment .thumbnail:after{display:none}.brightcove.media-frame-content .attachment .thumbnail img,.playlist-edit-container .attachment .thumbnail img{display:block;position:relative;width:100%;height:auto}.brightcove.media-frame-content .attachment .thumbnail .processing,.playlist-edit-container .attachment .thumbnail .processing{position:absolute;z-index:9999;top:0;left:0;width:100%;text-align:center;background:rgba(50,50,50,.7);color:#fff;font-size:12px;height:100%}.brightcove.media-frame-content .attachment .thumbnail .processing span,.playlist-edit-container .attachment .thumbnail .processing span{position:absolute;top:50%;margin-top:-9px;width:100%;left:0;text-align:center}.brightcove.media-frame-content .attachment .thumbnail .duration,.brightcove.media-frame-content .attachment .thumbnail .video-count,.playlist-edit-container .attachment .thumbnail .duration,.playlist-edit-container .attachment .thumbnail .video-count{background-color:#fff;bottom:0;padding:3px;position:absolute;right:0;width:auto;z-index:1000}.brightcove.media-frame-content .attachment .bc-info,.playlist-edit-container .attachment .bc-info{clear:both;display:block;height:auto;padding:1px;position:relative}.brightcove.media-frame-content .attachment .bc-info .bc-name,.playlist-edit-container .attachment .bc-info .bc-name{background-color:transparent;box-shadow:none!important;clear:both;display:inline;float:left;font-weight:700;height:auto;text-align:left!important;top:95px;word-break:break-word}.brightcove.media-frame-content .attachment .bc-info .bc-name div,.playlist-edit-container .attachment .bc-info .bc-name div{padding:0}.brightcove.media-frame-content .attachment .bc-info .bc-updated,.playlist-edit-container .attachment .bc-info .bc-updated{clear:both;color:#999;float:left;font-weight:400;height:100%}.brightcove.media-frame-content .attachment .media-actions,.playlist-edit-container .attachment .media-actions{clear:both;text-align:right}.brightcove.media-frame-content .attachment .media-actions .button,.playlist-edit-container .attachment .media-actions .button{margin-left:1em}@media screen and (min-width:700px){.brightcove.media-frame-content .attachment .media-actions,.playlist-edit-container .attachment .media-actions{display:none}}.brightcove.media-frame-menu{height:100%;box-sizing:border-box}.brightcove.media-frame-menu .attachment-detail .thumbnail{clear:both;position:relative}.brightcove.media-frame-menu .attachment-detail .thumbnail img{display:block;max-width:100%;height:auto}.brightcove.media-frame-menu .attachment-detail .thumbnail .processing{position:absolute;z-index:9999;top:0;left:0;width:100%;text-align:center;background:rgba(50,50,50,.7);color:#fff;font-size:12px;height:100%}.brightcove.media-frame-menu .attachment-detail .thumbnail .processing span{position:absolute;top:50%;margin-top:-6px;width:100%;left:0;text-align:center}.brightcove.media-frame-menu .attachment-detail .thumbnail .detail-duration,.brightcove.media-frame-menu .attachment-detail .thumbnail .detail-video-count{bottom:0;padding:0;position:absolute;right:0;z-index:1000}.brightcove.media-frame-menu .attachment-detail .thumbnail .detail-duration span,.brightcove.media-frame-menu .attachment-detail .thumbnail .detail-video-count span{background-color:#fff;float:right;padding:3px}.brightcove.media-frame-menu .attachment-detail .playlist-info,.brightcove.media-frame-menu .attachment-detail .video-info{margin:10px 0;overflow:hidden}.brightcove.media-frame-menu .attachment-detail .playlist-info .playlist-name,.brightcove.media-frame-menu .attachment-detail .playlist-info .video-name,.brightcove.media-frame-menu .attachment-detail .video-info .playlist-name,.brightcove.media-frame-menu .attachment-detail .video-info .video-name{clear:both;float:left;font-size:130%;font-weight:700;margin:5px 0 10px 0;word-break:break-word}.brightcove.media-frame-menu .attachment-detail .playlist-info .bc-video-section,.brightcove.media-frame-menu .attachment-detail .video-info .bc-video-section{display:block;float:left;height:auto;margin-bottom:20px;width:100%}.brightcove.media-frame-menu .attachment-detail .playlist-info .brightcove-player,.brightcove.media-frame-menu .attachment-detail .video-info .brightcove-player{display:block;padding:3px 0}.brightcove.media-frame-menu .attachment-detail .playlist-info .account-name,.brightcove.media-frame-menu .attachment-detail .playlist-info .created-date,.brightcove.media-frame-menu .attachment-detail .playlist-info .playlist-id,.brightcove.media-frame-menu .attachment-detail .playlist-info .playlist-type,.brightcove.media-frame-menu .attachment-detail .playlist-info .updated-date,.brightcove.media-frame-menu .attachment-detail .playlist-info .video-created,.brightcove.media-frame-menu .attachment-detail .playlist-info .video-description,.brightcove.media-frame-menu .attachment-detail .playlist-info .video-long-description,.brightcove.media-frame-menu .attachment-detail .playlist-info .video-updated,.brightcove.media-frame-menu .attachment-detail .video-info .account-name,.brightcove.media-frame-menu .attachment-detail .video-info .created-date,.brightcove.media-frame-menu .attachment-detail .video-info .playlist-id,.brightcove.media-frame-menu .attachment-detail .video-info .playlist-type,.brightcove.media-frame-menu .attachment-detail .video-info .updated-date,.brightcove.media-frame-menu .attachment-detail .video-info .video-created,.brightcove.media-frame-menu .attachment-detail .video-info .video-description,.brightcove.media-frame-menu .attachment-detail .video-info .video-long-description,.brightcove.media-frame-menu .attachment-detail .video-info .video-updated{clear:both;display:block;color:#999;float:left}.brightcove.media-frame-menu .attachment-detail .playlist-info .account-name .title,.brightcove.media-frame-menu .attachment-detail .playlist-info .created-date .title,.brightcove.media-frame-menu .attachment-detail .playlist-info .playlist-id .title,.brightcove.media-frame-menu .attachment-detail .playlist-info .playlist-type .title,.brightcove.media-frame-menu .attachment-detail .playlist-info .updated-date .title,.brightcove.media-frame-menu .attachment-detail .playlist-info .video-created .title,.brightcove.media-frame-menu .attachment-detail .playlist-info .video-description .title,.brightcove.media-frame-menu .attachment-detail .playlist-info .video-long-description .title,.brightcove.media-frame-menu .attachment-detail .playlist-info .video-updated .title,.brightcove.media-frame-menu .attachment-detail .video-info .account-name .title,.brightcove.media-frame-menu .attachment-detail .video-info .created-date .title,.brightcove.media-frame-menu .attachment-detail .video-info .playlist-id .title,.brightcove.media-frame-menu .attachment-detail .video-info .playlist-type .title,.brightcove.media-frame-menu .attachment-detail .video-info .updated-date .title,.brightcove.media-frame-menu .attachment-detail .video-info .video-created .title,.brightcove.media-frame-menu .attachment-detail .video-info .video-description .title,.brightcove.media-frame-menu .attachment-detail .video-info .video-long-description .title,.brightcove.media-frame-menu .attachment-detail .video-info .video-updated .title{margin-right:5px}.brightcove.media-frame-menu .attachment-detail .video-details .left-col,.brightcove.media-frame-menu .attachment-detail .video-details label{display:inline-block;float:left;clear:left;width:100px;padding-top:5px}.brightcove.media-frame-menu .attachment-detail .video-details .right-col{display:inline-block;float:left;padding-top:5px}.brightcove.media-frame-menu .attachment-detail .video-details input[type=number]{width:20%}.brightcove.media-frame-menu .attachment-detail .video-details textarea{clear:both;margin-top:10px;width:100%}.brightcove.media-frame-menu .attachment-detail .video-details #custom{display:none}@media screen and (max-width:700px){.brightcove.media-frame-content{border-right-width:0;margin-right:0;padding-right:0;width:auto}}@media screen and (max-width:412px){.brightcove.media-frame-content .attachment{padding:20px 10px}}.brightcove.video-edit .image-preview,.brightcove.video-edit .setting{margin-bottom:8px}.brightcove.video-edit .image-preview .description,.brightcove.video-edit .setting .description{margin-left:0}@media screen and (min-width:900px){.brightcove.video-edit .image-preview .description,.brightcove.video-edit .setting .description{margin-left:252px}}.brightcove.video-edit .setting-content,.brightcove.video-edit select{margin-left:7px}.brightcove.video-edit .setting-content{float:left;width:64%}.brightcove.video-edit .setting-content .button-secondary{clear:left;display:block}.brightcove.video-edit .attachment{cursor:pointer;padding:8px 0 0;width:auto}.brightcove.video-edit .attachment.active{display:block;max-width:100%}.brightcove.video-edit .attachment.active .check{display:block;top:9px}.brightcove.video-edit .attachment.active .button{display:none}.brightcove.video-edit .attachment img{height:auto;max-width:100%}.brightcove.video-edit .action-row{clear:both}.brightcove.video-edit .action-row .delete{color:#a00;display:inline-block;padding-top:6px}.brightcove.video-edit .caption-url,.brightcove.video-edit button.-captions{float:left}.brightcove.video-edit button.-captions{margin-right:1em}.brightcove.video-edit .caption-url{color:#666;line-height:28px}.brightcove.video-edit .add-remote-caption{line-height:28px}.brightcove.video-edit .caption-repeater{box-sizing:border-box;-moz-box-sizing:border-box;border-bottom:1px solid #d5d5d5;clear:both;padding:1em 0;width:100%}.brightcove.video-edit .caption-repeater:nth-last-child(1){border-bottom:0}.brightcove.video-edit .caption-repeater.empty-row{display:none}.brightcove.video-edit .caption-repeater.active{display:block}.brightcove.video-edit input.brightcove-captions{clear:both;margin-bottom:.75em;width:100%}.brightcove.video-edit .caption-secondary-fields{clear:both}.brightcove.video-edit .caption-secondary-fields:after,.brightcove.video-edit .caption-secondary-fields:before{content:" ";display:table}.brightcove.video-edit .caption-secondary-fields:after{clear:both}.brightcove.video-edit .caption-secondary-fields label{box-sizing:border-box;display:block;float:left;width:50%}.brightcove.video-edit .caption-secondary-fields label:after,.brightcove.video-edit .caption-secondary-fields label:before{content:" ";display:table}.brightcove.video-edit .caption-secondary-fields label:after{clear:both}.brightcove.video-edit .caption-secondary-fields label:nth-child(1){padding-right:1em}.brightcove.video-edit .caption-secondary-fields label input,.brightcove.video-edit .caption-secondary-fields label select,.brightcove.video-edit .caption-secondary-fields label span{margin:0;min-width:100%;text-align:left;width:100%}.playlist-edit.brightcove.attachment-details{width:100%;height:auto;margin-right:0;float:none;overflow:hidden;padding:20px;box-sizing:border-box}.playlist-edit.brightcove.attachment-details .settings{max-width:50%;margin-bottom:20px}.playlist-edit.brightcove.attachment-details .playlist-name{font-weight:700}.playlist-edit.brightcove.attachment-details .playlist-name span{display:inline-block;margin-right:20px;margin-left:10px}.playlist-edit.brightcove.attachment-details .playlist-name input{width:65%}.playlist-edit.brightcove.attachment-details .playlist-videos-list{border-right:1px solid #ddd;clear:both}.playlist-edit.brightcove.attachment-details .playlist-add-videos-list,.playlist-edit.brightcove.attachment-details .playlist-videos-list{width:50%;float:left;box-sizing:border-box}.playlist-edit.brightcove.attachment-details .playlist-add-videos-list h2,.playlist-edit.brightcove.attachment-details .playlist-videos-list h2{margin-bottom:0;padding-bottom:10px;padding-left:10px;border-bottom:1px solid #ddd}.playlist-edit.brightcove.attachment-details .playlist-add-videos-list ul,.playlist-edit.brightcove.attachment-details .playlist-videos-list ul{height:450px;overflow:auto}.playlist-edit.brightcove.attachment-details .playlist-add-videos-list .attachment,.playlist-edit.brightcove.attachment-details .playlist-videos-list .attachment{width:100%!important}.playlist-edit.brightcove.attachment-details .playlist-add-videos-list .thumbnail,.playlist-edit.brightcove.attachment-details .playlist-videos-list .thumbnail{width:162px;float:left}.playlist-edit.brightcove.attachment-details .playlist-add-videos-list .bc-info,.playlist-edit.brightcove.attachment-details .playlist-videos-list .bc-info{clear:none;float:left;margin-left:10px}.playlist-edit.brightcove.attachment-details .playlist-add-videos-list .row-actions,.playlist-edit.brightcove.attachment-details .playlist-videos-list .row-actions{visibility:visible;clear:both;display:block;text-align:left;position:relative;left:auto} \ No newline at end of file diff --git a/assets/js/bc-status.min.js b/assets/js/bc-status.min.js index bc16467b..d0240b8b 100644 --- a/assets/js/bc-status.min.js +++ b/assets/js/bc-status.min.js @@ -1,8 +1,4 @@ ( function( $ ){ -/** - * Used to provide status warnings from the Brightcove servers. - */ -jQuery(document).ready(function(a){jQuery(".brightcove-service-error .notice-dismiss").click(function(){var b={action:"bc_status_dismiss",nonce:bcStatus.nonce}; -// Send dismissal to WordPress. -a.ajax({url:ajaxurl,type:"POST",data:b,complete:function(a){if(!0===a.responseJSON.success){var b=new Date;b.setTime(b.getTime()+3e5);var c="; expires="+b.toGMTString();document.cookie="bc-status-dismissed="+!0+c+"; path=/"}}})})}); + +jQuery(document).ready(function(e){jQuery(".brightcove-service-error .notice-dismiss").click(function(){var t={action:"bc_status_dismiss",nonce:bcStatus.nonce};e.ajax({url:ajaxurl,type:"POST",data:t,complete:function(e){if(!0===e.responseJSON.success){var t=new Date;t.setTime(t.getTime()+3e5);var s="; expires="+t.toGMTString();document.cookie="bc-status-dismissed="+!0+s+"; path=/"}}})})}); } )( jQuery ); \ No newline at end of file diff --git a/assets/js/brightcove-admin.js b/assets/js/brightcove-admin.js index 88556e6d..ea69fc81 100644 --- a/assets/js/brightcove-admin.js +++ b/assets/js/brightcove-admin.js @@ -669,26 +669,9 @@ var BrightcoveView = wp.Backbone.View.extend( return; } - var brightcoveId = this.model.get( 'id' ).replace( /\D/g, '' ); // video or playlist id - var accountId = this.model.get( 'account_id' ).replace( /\D/g, '' ); - var playerId = wpbc.selectedPlayer; - var shortcode = ''; + var shortcode = wpbc.shortcode; - if ( ! playerId ) { - var playerId = 'default'; - } - - if ( undefined !== this.mediaType ) { - if ( this.mediaType === 'videos' ) { - - shortcode = '[bc_video video_id="' + brightcoveId + '" account_id="' + accountId + '" player_id="' + playerId + '"]'; - - } else { - - shortcode = '[bc_playlist playlist_id="' + brightcoveId + '" account_id="' + accountId + '"]'; - - } - } else { + if ( undefined === this.mediaType ) { var template = wp.template( 'brightcove-mediatype-notice' ); // Throw a notice to the user that the file is not the correct format @@ -708,13 +691,12 @@ var BrightcoveView = wp.Backbone.View.extend( $( wpbc.modal.target ).val( shortcode ); $( wpbc.modal.target ).change(); } - wpbc.broadcast.trigger( 'close:modal' ); + wpbc.broadcast.trigger( 'close:modal' ); } } ); - /** * This is the toolbar to handle sorting, filtering, searching and grid/list view toggles. * State is captured in the brightcove-media-manager model. @@ -1443,13 +1425,11 @@ var BrightcoveModalView = BrightcoveView.extend( return; } - // Make the selected player available to the shortcode - wpbc.selectedPlayer = $( 'input[name="video-player-field"]:checked' ).val(); + wpbc.shortcode = $( '#shortcode' ).val(); // Media Details will trigger the insertion since it's always active and contains // the model we're inserting wpbc.broadcast.trigger( 'insert:shortcode' ); - }, toggleInsertButton : function ( state ) { @@ -1562,7 +1542,10 @@ var MediaDetailsView = BrightcoveView.extend( events : { 'click .brightcove.edit.button' : 'triggerEditMedia', 'click .brightcove.preview.button' : 'triggerPreviewMedia', - 'click .brightcove.back.button' : 'triggerCancelPreviewMedia' + 'click .brightcove.back.button' : 'triggerCancelPreviewMedia', + 'change #aspect-ratio' : 'toggleUnits', + 'change #video-player, #autoplay, input[name="embed-style"], input[name="sizing"], #aspect-ratio, #width, #height, #units' : 'generateShortcode', + 'change #generate-shortcode' : 'toggleShortcodeGeneration', }, triggerEditMedia : function ( event ) { @@ -1579,6 +1562,67 @@ var MediaDetailsView = BrightcoveView.extend( wpbc.broadcast.trigger( 'cancelPreview:media', this.mediaType ); }, + toggleUnits: function( event ) { + var value = $( '#aspect-ratio' ).val(); + + if ( 'custom' === value ) { + $( '#custom' ).show(); + } else { + $( '#custom' ).hide(); + } + }, + + generateShortcode: function () { + var videoId = this.model.get( 'id' ).replace( /\D/g, '' ), + accountId = this.model.get( 'account_id' ).replace( /\D/g, '' ), + playerId = $( '#video-player' ).val(), + autoplay = ( $( '#autoplay' ).is( ':checked' ) ) ? 'autoplay': '', + embedstyle = $( 'input[name="embed-style"]:checked' ).val(), + sizing = $( 'input[name="sizing"]:checked' ).val(), + aspectRatio = $( '#aspect-ratio' ).val(), + minWidth = '0px', + maxWidth = $( '#width' ).val(), + paddingTop = '', + width = $( '#width' ).val(), + height = $( '#height' ).val(), + units = $( '#units' ).val(), + shortcode; + + if ( '16:9' === aspectRatio ) { + paddingTop = '56'; + } else if ( '4:3' === aspectRatio ) { + paddingTop = '75'; + } else { + paddingTop = ( height / width * 100 ); + } + + if ( 'responsive' === sizing ) { + width = '100'; + height = '100'; + } + + shortcode = '[bc_video video_id="' + videoId + '" account_id="' + accountId + '" player_id="' + playerId + '" ' + + 'embed="' + embedstyle + '" padding_top="' + paddingTop + '%" autoplay="' + autoplay + '" ' + + 'min_width="' + minWidth + '" max_width="' + maxWidth + '" ' + + 'width="' + width + units + '" height="' + height + units + '"' + + ']'; + + $( '#shortcode' ).val( shortcode ); + }, + + toggleShortcodeGeneration: function () { + var method = $( '#generate-shortcode' ).val(), + $fields = $( '#video-player, #autoplay, input[name="embed-style"], input[name="sizing"], #aspect-ratio, #width, #height, #units' ); + + if ( 'manual' === method ) { + $( '#shortcode' ).removeAttr( 'readonly' ); + $fields.attr( 'disabled', true ); + } else { + $( '#shortcode' ).attr( 'readonly', true ); + $fields.removeAttr( 'disabled' ); + } + }, + initialize : function ( options ) { options = options || {}; this.type = options.type ? options.type : 'grid'; @@ -1602,6 +1646,8 @@ var MediaDetailsView = BrightcoveView.extend( this.$el.html( this.template( options ) ); this.delegateEvents(); + this.generateShortcode(); + return this; }, @@ -1612,7 +1658,6 @@ var MediaDetailsView = BrightcoveView.extend( this.stopListening(); return this; } - } ); diff --git a/assets/js/brightcove-admin.js.map b/assets/js/brightcove-admin.js.map index d54351b4..b44ab20b 100644 --- a/assets/js/brightcove-admin.js.map +++ b/assets/js/brightcove-admin.js.map @@ -1 +1 @@ -{"version":3,"sources":["src/models/media.js","src/models/media-collection.js","src/models/brightcove-media-manager.js","src/models/brightcove-modal.js","src/models/upload-collection.js","src/models/upload.js","src/views/brightcove.js","src/views/toolbar.js","src/views/upload-video-manager.js","src/views/brightcove-media-manager.js","src/views/brightcove-modal.js","src/views/media-details.js","src/views/media.js","src/views/playlist-edit.js","src/views/upload-details.js","src/views/upload-window.js","src/views/upload.js","src/views/video-edit.js","src/views/video-preview.js","src/views/media-collection.js","src/app.js"],"names":[],"mappings":"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","file":"brightcove-admin.js","sourcesContent":["/**\n * Media model for Media CPT\n */\n\nvar MediaModel = Backbone.Model.extend(\n\t{\n\n\t\t/**\n\t\t * Copied largely from WP Attachment sync function\n\t\t * Triggered when attachment details change\n\t\t * Overrides Backbone.Model.sync\n\t\t *\n\t\t * @param {string} method\n\t\t * @param {wp.media.model.Media} model\n\t\t * @param {Object} [options={}]\n\t\t *\n\t\t * @returns {Promise}\n\t\t */\n\t\tsync : function ( method, model, options ) {\n\n\t\t\tvar accountHash = null;\n\n\t\t\t// Set the accountHash to the wpbc.preload.accounts[*] where the account_id\n\t\t\t// matches this media objects account_id.\n\t\t\t_.find( wpbc.preload.accounts, function ( account, hash ) {\n\t\t\t\tif ( account.account_id === this.get( 'account_id' ) ) {\n\t\t\t\t\taccountHash = hash;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}, this );\n\n\t\t\t// If the attachment does not yet have an `id`, return an instantly\n\t\t\t// rejected promise. Otherwise, all of our requests will fail.\n\t\t\tif ( _.isUndefined( this.id ) ) {\n\t\t\t\treturn $.Deferred().rejectWith( this ).promise();\n\t\t\t}\n\n\t\t\t// Overload the `read` request so Media.fetch() functions correctly.\n\t\t\tif ( 'read' === method ) {\n\t\t\t\toptions = options || {};\n\t\t\t\toptions.context = this;\n\t\t\t\toptions.data = _.extend( options.data || {}, {\n\t\t\t\t\taction : 'bc_media_fetch',\n\t\t\t\t\tid : this.id\n\t\t\t\t} );\n\n\t\t\t\treturn wp.media.ajax( options );\n\n\t\t\t\t// Overload the `update` request so properties can be saved.\n\t\t\t} else if ( 'update' === method ) {\n\t\t\t\toptions = options || {};\n\t\t\t\toptions.context = this;\n\t\t\t\t// Set the action and ID.\n\t\t\t\toptions.data = _.extend( options.data || {}, {\n\t\t\t\t\taccount : accountHash,\n\t\t\t\t\taction : 'bc_media_update',\n\t\t\t\t\tdescription : this.get( 'description' ),\n\t\t\t\t\tlong_description : this.get( 'long_description' ),\n\t\t\t\t\tname : this.get( 'name' ),\n\t\t\t\t\tnonce : wpbc.preload.nonce,\n\t\t\t\t\ttags : this.get( 'tags' ),\n\t\t\t\t\ttype : this.get( 'mediaType' ),\n\t\t\t\t\tcustom_fields: this.get( 'custom_fields' ),\n\t\t\t\t\thistory: this.get( '_change_history' ),\n\t\t\t\t\tposter: this.get( 'poster' ),\n\t\t\t\t\tthumbnail: this.get( 'thumbnail' ),\n\t\t\t\t\tcaptions: this.get( 'captions' )\n\t\t\t\t} );\n\n\t\t\t\tvar video_ids = this.get( 'video_ids' );\n\t\t\t\tif ( video_ids ) {\n\t\t\t\t\toptions.data.playlist_id = this.id;\n\t\t\t\t\toptions.data.playlist_videos = video_ids;\n\t\t\t\t\toptions.data.type = 'playlists';\n\t\t\t\t} else {\n\t\t\t\t\toptions.data.video_id = this.id;\n\t\t\t\t}\n\n\t\t\t\toptions.success = this.successFunction;\n\t\t\t\toptions.error = this.failFunction;\n\n\t\t\t\twpbc.broadcast.trigger( 'spinner:on' );\n\t\t\t\treturn wp.media.ajax( options );\n\n\t\t\t\t// Overload the `delete` request so attachments can be removed.\n\t\t\t\t// This will permanently delete an attachment.\n\t\t\t} else if ( 'delete' === method ) {\n\t\t\t\toptions = options || {};\n\t\t\t\tvar self = this;\n\n\t\t\t\toptions.data = _.extend( options.data || {}, {\n\t\t\t\t\taccount : accountHash,\n\t\t\t\t\taction : 'bc_media_delete',\n\t\t\t\t\tid : this.get( 'id' ),\n\t\t\t\t\tnonce : wpbc.preload.nonce,\n\t\t\t\t\ttype : this.get( 'mediaType' ),\n\t\t\t\t} );\n\n\t\t\t\treturn wp.media.ajax( options ).done( function ( response ) {\n\t\t\t\t\tself.destroyed = true;\n\t\t\t\t\twpbc.broadcast.trigger( 'delete:successful', response );\n\t\t\t\t\tif ( 'videos' === self.get( 'mediaType' ) || ! _.isUndefined( self.get( 'video_ids' ) ) ) {\n\t\t\t\t\t\twpbc.preload.videos = undefined;\n\t\t\t\t\t} else {\n\t\t\t\t\t\twpbc.preload.playlists = undefined;\n\t\t\t\t\t}\n\t\t\t\t\twpbc.responses = {};\n\t\t\t\t} ).fail( function ( response ) {\n\t\t\t\t\tself.destroyed = false;\n\t\t\t\t\twpbc.broadcast.trigger( 'videoEdit:message', response, 'error' );\n\t\t\t\t\twpbc.broadcast.trigger( 'spinner:off' );\n\t\t\t\t} );\n\n\t\t\t\t// Otherwise, fall back to `Backbone.sync()`.\n\t\t\t} else {\n\t\t\t\t/**\n\t\t\t\t * Call `sync` directly on Backbone.Model\n\t\t\t\t */\n\t\t\t\treturn Backbone.Model.prototype.sync.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Convert date strings into Date objects.\n\t\t *\n\t\t * @param {Object} resp The raw response object, typically returned by fetch()\n\t\t * @returns {Object} The modified response object, which is the attributes hash\n\t\t * to be set on the model.\n\t\t */\n\t\tparse : function ( resp ) {\n\t\t\tif ( ! resp ) {\n\t\t\t\treturn resp;\n\t\t\t}\n\n\t\t\tresp.date = new Date( resp.date );\n\t\t\tresp.modified = new Date( resp.modified );\n\t\t\treturn resp;\n\t\t},\n\n\t\tgetAccountName : function () {\n\n\t\t\tvar account_id = this.get( 'account_id' );\n\t\t\tvar matchingAccount = _.findWhere( wpbc.preload.accounts, {account_id : this.get( 'account_id' )} );\n\t\t\treturn undefined === matchingAccount ? 'unavailable' : matchingAccount.account_name;\n\t\t},\n\n\t\tgetReadableDuration : function () {\n\n\t\t\tvar duration = this.get( 'duration' );\n\n\t\t\tif ( duration ) {\n\t\t\t\tduration = Number( duration / 1000 );\n\t\t\t\tvar hours = Math.floor( duration / 3600 );\n\t\t\t\tvar minutes = Math.floor( duration % 3600 / 60 );\n\t\t\t\tvar seconds = Math.floor( duration % 3600 % 60 );\n\t\t\t\treturn ((hours > 0 ? hours + \":\" + (minutes < 10 ? \"0\" : \"\") : \"\") + minutes + \":\" + (seconds < 10 ? \"0\" : \"\") + seconds);\n\t\t\t}\n\t\t\treturn duration;\n\t\t},\n\n\t\tgetReadableDate : function ( field ) {\n\n\t\t\tvar updated_at = this.get( field );\n\n\t\t\tif ( updated_at ) {\n\n\t\t\t\tvar date = new Date( updated_at );\n\n\t\t\t\tvar hour = date.getHours();\n\t\t\t\tvar min = date.getMinutes();\n\t\t\t\tvar year = date.getFullYear();\n\t\t\t\tvar mon = date.getMonth() + 1;\n\t\t\t\tvar day = date.getDate();\n\t\t\t\tvar ampm = hour >= 12 ? 'pm' : 'am';\n\n\t\t\t\thour = hour % 12;\n\t\t\t\thour = hour ? hour : 12;\n\n\t\t\t\tmin = min < 10 ? '0' + min : min;\n\n\t\t\t\tvar readableDate = year + '/' + mon + '/' + day + ' - ' + hour + ':' + min + ' ' + ampm;\n\t\t\t\treturn readableDate;\n\t\t\t}\n\t\t\treturn updated_at;\n\t\t},\n\n\t\tsuccessFunction : function ( message ) {\n\t\t\twpbc.broadcast.trigger( 'videoEdit:message', message, 'success' );\n\t\t\twpbc.broadcast.trigger( 'spinner:off' );\n\t\t\tif ( _.isArray( this.get( 'video_ids' ) ) && wpbc.preload && wpbc.preload.playlists ) {\n\t\t\t\tvar id = this.get( 'id' );\n\t\t\t\t_.each( wpbc.preload.playlists, function ( playlist, index ) {\n\t\t\t\t\tif ( playlist.id === id ) {\n\t\t\t\t\t\twpbc.preload.playlists[index] = this.toJSON();\n\t\t\t\t\t}\n\t\t\t\t}, this );\n\t\t\t}\n\t\t\twpbc.responses = {};\n\t\t\tif ( 'videos' === this.get( 'mediaType' ) || ! _.isUndefined( this.get( 'video_ids' ) ) ) {\n\t\t\t\twpbc.preload.videos = undefined;\n\t\t\t} else {\n\t\t\t\twpbc.preload.playlists = undefined;\n\t\t\t}\n\t\t},\n\n\t\tfailFunction : function ( message ) {\n\t\t\twpbc.broadcast.trigger( 'videoEdit:message', message, 'error' );\n\t\t\twpbc.broadcast.trigger( 'spinner:off' );\n\t\t}\n\t}\n);\n","var MediaCollection = Backbone.Collection.extend(\n\t{\n\t\tmodel : MediaModel,\n\t\t/**\n\t\t * @param {Array} [models=[]] Array of models used to populate the collection.\n\t\t * @param {Object} [options={}]\n\t\t */\n\t\tinitialize : function ( models, options ) {\n\t\t\toptions = options || {};\n\t\t\tif ( options.activeAccount ) {\n\t\t\t\tthis.activeAccount = options.activeAccount;\n\t\t\t}\n\n\t\t\tthis.additionalRequest = false;\n\n\t\t\tthis.pageNumber = this.pageNumber || 1;\n\n\t\t\tif ( ! this.mediaType && (this.mediaCollectionViewType === 'existingPlaylists' || this.mediaCollectionViewType === 'libraryPlaylists') ) {\n\t\t\t\tthis.mediaType = 'videos';\n\t\t\t}\n\n\t\t\tthis.mediaCollectionViewType = options.mediaCollectionViewType || 'grid';\n\n\t\t\tif ( options.excludeVideoIds && 'libraryPlaylists' === options.mediaCollectionViewType ) {\n\t\t\t\tthis.excludeVideoIds = options.excludeVideoIds;\n\t\t\t}\n\n\t\t\tif ( options.videoIds && ! models ) {\n\t\t\t\tthis.mediaType = 'videos';\n\t\t\t\tthis.videoIds = options.videoIds;\n\t\t\t\tthis.fetch();\n\t\t\t} else if ( 'playlists' !== options.mediaType ) {\n\t\t\t\tthis.mediaType = 'videos';\n\t\t\t\tthis.fetch();\n\t\t\t}\n\n\t\t\tthis.mediaType = options.mediaType;\n\n\t\t\tif ( 'videos' === this.mediaType ) {\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:uploadedFileDetails', function ( video ) {\n\t\t\t\t\t// Add the newly uploaded file\n\t\t\t\t\tthis.add( video, {at : 0} );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tthis.activeAccount = options.activeAccount || 'all';\n\t\t\tthis.searchTerm = options.searchTerm || '';\n\t\t\tthis.dates = options.dates || 'all';\n\t\t\tthis.tag = options.tag || '';\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:activeAccount', function ( accountId ) {\n\t\t\t\tthis.activeAccount = accountId;\n\t\t\t\twp.heartbeat.enqueue( 'brightcove_heartbeat', { 'accountId': accountId }, true );\n\t\t\t\tthis.fetch();\n\t\t\t} );\n\n\t\t\t$( document ).on( 'heartbeat-tick.brightcove_heartbeat', function( event, data ) {\n\t\t\t\tif ( data.hasOwnProperty( 'brightcove_heartbeat' ) ) {\n\t\t\t\t\twp.heartbeat.enqueue( 'brightcove_heartbeat', { 'accountId': data['brightcove_heartbeat']['account_id'] }, true );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:searchTerm', function ( searchTerm ) {\n\t\t\t\tthis.searchTerm = searchTerm;\n\t\t\t\tthis.fetch();\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:tag', function ( tag ) {\n\n\t\t\t\tif ( 'all' === tag ) {\n\t\t\t\t\ttag = '';\n\t\t\t\t}\n\n\t\t\t\tthis.tag = tag;\n\t\t\t\tthis.fetch();\n\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:date', function ( date ) {\n\t\t\t\tthis.date = date;\n\t\t\t\tthis.fetch();\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'tabChange', function ( settings ) {\n\t\t\t\tthis.killPendingRequests();\n\t\t\t\tif ( settings.mediaType !== this.mediaType ) {\n\t\t\t\t\tthis.mediaType = settings.mediaType;\n\t\t\t\t\tvar preload = wpbc.preload[this.mediaType];\n\t\t\t\t\tvar model;\n\t\t\t\t\t// Remove all models from the collection\n\t\t\t\t\twhile ( model = this.first() ) {\n\t\t\t\t\t\tthis.remove( model );\n\t\t\t\t\t}\n\t\t\t\t\tif ( preload !== undefined ) {\n\t\t\t\t\t\tthis.add( preload );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.fetch();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t},\n\n\t\tkillPendingRequests : function () {\n\t\t\t// Kill all pending requests\n\t\t\t_.each( wpbc.requests, function ( request ) {\n\t\t\t\trequest.abort();\n\t\t\t} );\n\n\t\t\twpbc.requests = [];\n\t\t},\n\n\t\tchecksum : function ( object ) {\n\t\t\tif ( ! _.isString( object ) ) {\n\t\t\t\tif ( _.isFunction( object.toJSON ) ) {\n\t\t\t\t\tobject = object.toJSON();\n\t\t\t\t} else {\n\t\t\t\t\tobject = JSON.stringify( object );\n\t\t\t\t}\n\n\t\t\t}\n\t\t\tvar checksum = 0x12345678;\n\n\t\t\tfor ( var i = 0; i < object.length; i ++ ) {\n\t\t\t\tchecksum += (object.charCodeAt( i ) * (i + 1));\n\t\t\t}\n\n\t\t\treturn checksum;\n\t\t},\n\n\t\t/**\n\t\t * Overrides Backbone.Collection.sync\n\t\t *\n\t\t * @param {String} method\n\t\t * @param {Backbone.Model} model\n\t\t * @param {Object} [options={}]\n\t\t * @returns {Promise}\n\t\t */\n\t\tsync : function ( method, model, options ) {\n\t\t\tvar args, fallback;\n\n\t\t\t// Overload the read method so Media.fetch() functions correctly.\n\t\t\tif ( 'read' === method ) {\n\t\t\t\toptions = options || {};\n\t\t\t\toptions.data = _.extend( options.data || {}, {\n\t\t\t\t\taction : 'bc_media_query',\n\t\t\t\t\taccount : this.activeAccount || wpbc.preload.defaultAccountId,\n\t\t\t\t\tdates : this.date,\n\t\t\t\t\tposts_per_page : wpbc.posts_per_page,\n\t\t\t\t\tpage_number : this.pageNumber,\n\t\t\t\t\tnonce : wpbc.preload.nonce,\n\t\t\t\t\tsearch : this.searchTerm,\n\t\t\t\t\ttags : this.tag,\n\t\t\t\t\ttagName : wpbc.preload.tags[this.tag],\n\t\t\t\t\ttype : this.mediaType || 'videos'\n\t\t\t\t} );\n\n\t\t\t\tvar previousRequest = _.pick( options.data, 'account', 'dates', 'posts_per_page', 'search', 'tags', 'type' );\n\n\t\t\t\t// Determine if we're infinite scrolling or not.\n\t\t\t\tthis.additionalRequest = _.isEqual( previousRequest, wpbc.previousRequest );\n\t\t\t\tif ( ! this.additionalRequest ) {\n\t\t\t\t\toptions.data.page_number = 1;\n\t\t\t\t}\n\t\t\t\t/* Prevent reloading on the playlist edit as the playlist videos are one request and library videos another */\n\t\t\t\tif ( this.mediaCollectionViewType !== 'existingPlaylists' ) {\n\t\t\t\t\twpbc.previousRequest = previousRequest;\n\t\t\t\t}\n\n\t\t\t\tif ( this.videoIds ) {\n\t\t\t\t\toptions.data.videoIds = this.videoIds.length ? this.videoIds : 'none';\n\t\t\t\t}\n\n\t\t\t\toptions.data.query = args;\n\n\t\t\t\tif ( ! _.contains( ['libraryPlaylists', 'existingPlaylists'], this.mediaCollectionViewType ) ) {\n\t\t\t\t\tthis.killPendingRequests();\n\t\t\t\t}\n\n\t\t\t\tvar requestChecksum = this.checksum( options.data );\n\n\t\t\t\tif ( ! _.isUndefined( wpbc.responses[requestChecksum] ) ) {\n\t\t\t\t\tthis.parse( {data : wpbc.responses[requestChecksum]}, 'cached' );\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tvar request = $.ajax( {\n\t\t\t\t\t type : 'POST',\n\t\t\t\t\t url : wp.ajax.settings.url,\n\t\t\t\t\t context : this,\n\t\t\t\t\t data : options.data\n\t\t\t\t } ).done( function ( response, status, request ) {\n\t\t\t\t\tthis.parse( response, status, request, requestChecksum );\n\t\t\t\t} ).fail( this.fetchFail );\n\n\t\t\t\twpbc.requests.push( request );\n\t\t\t\twpbc.broadcast.trigger( 'spinner:on' );\n\n\t\t\t\treturn request;\n\n\t\t\t\t// Otherwise, fall back to Backbone.sync()\n\t\t\t} else {\n\t\t\t\t/**\n\t\t\t\t * Call wp.media.model.MediaCollection.sync or Backbone.sync\n\t\t\t\t */\n\t\t\t\tfallback = MediaCollection.prototype.sync ? MediaCollection.prototype : Backbone;\n\t\t\t\treturn fallback.sync.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\tfetchFail : function () {\n\t\t\tif ( this.pageNumber > 1 ) {\n\t\t\t\tthis.pageNumber --;\n\t\t\t}\n\t\t\twpbc.broadcast.trigger( 'fetch:finished' );\n\t\t\twpbc.broadcast.trigger( 'spinner:off' );\n\t\t\twpbc.broadcast.trigger( 'fetch:apiError' );\n\t\t\tif ( 'abort' === status ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * A custom AJAX-response parser.\n\t\t *\n\t\t * See trac ticket #24753\n\t\t *\n\t\t * @param {Object|Array} resp The raw response Object/Array.\n\t\t * @param {Object} xhr\n\t\t * @returns {Array} The array of model attributes to be added to the collection\n\t\t */\n\t\tparse : function ( response, status, request, checksum ) {\n\t\t\twpbc.broadcast.trigger( 'fetch:finished' );\n\t\t\twpbc.broadcast.trigger( 'spinner:off' );\n\t\t\tif ( ! _.contains( ['success', 'cached'], status ) || ( 'cached' !== status && ! response['success'] ) ) {\n\t\t\t\twpbc.broadcast.trigger( 'fetch:apiError' );\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar data = response.data;\n\n\t\t\tif ( \"success\" === status ) {\n\t\t\t\twpbc.responses[checksum] = data;\n\t\t\t}\n\n\t\t\tif ( false === data ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif ( ! _.isArray( data ) ) {\n\t\t\t\tdata = [data];\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * In playlist video search, we remove the videos that already exist in the playlist.\n\t\t\t */\n\t\t\tif ( _.isArray( this.excludeVideoIds ) ) {\n\t\t\t\t_.each( this.excludeVideoIds, function ( videoId ) {\n\t\t\t\t\tdata = _.without( data, _.findWhere( data, {id : videoId} ) );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tvar allMedia = _.map( data, function ( attrs ) {\n\t\t\t\tvar id, media, newAttributes;\n\n\t\t\t\tif ( attrs instanceof Backbone.Model ) {\n\t\t\t\t\tid = attrs.get( 'id' );\n\t\t\t\t\tattrs = attrs.attributes;\n\t\t\t\t} else {\n\t\t\t\t\tid = attrs.id;\n\t\t\t\t}\n\n\t\t\t\tmedia = this.findWhere( {id : id} );\n\t\t\t\tif ( ! media ) {\n\t\t\t\t\tmedia = this.add( attrs );\n\t\t\t\t} else {\n\t\t\t\t\tnewAttributes = media.parse( attrs );\n\n\t\t\t\t\tif ( ! _.isEqual( media.attributes, newAttributes ) ) {\n\t\t\t\t\t\tmedia.set( newAttributes );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tmedia.set( 'viewType', this.mediaCollectionViewType );\n\t\t\t\treturn media;\n\t\t\t}, this );\n\n\t\t\tif ( this.additionalRequest ) {\n\t\t\t\tthis.add( allMedia );\n\t\t\t} else {\n\t\t\t\tthis.set( allMedia );\n\t\t\t}\n\t\t}\n\t}\n);\n","var BrightcoveMediaManagerModel = Backbone.Model.extend(\n\t{\n\t\tdefaults : {\n\t\t\tview : 'grid',\n\t\t\tdate : 'all',\n\t\t\ttags : 'all',\n\t\t\ttype : null, // enum[playlist, video]\n\t\t\tpreload : true,\n\t\t\tsearch : '',\n\t\t\taccount : wpbc.preload.defaultAccountId,\n\t\t\tposter: {},\n\t\t\tthumbnail: {}\n\t\t},\n\t\tinitialize : function ( options ) {\n\t\t\t_.defaults( options, this.defaults );\n\n\t\t\twp.heartbeat.enqueue( 'brightcove_heartbeat', { 'accountId': wpbc.preload.defaultAccountId }, true );\n\n\t\t\tvar collection = new MediaCollection( [], {mediaType : options.mediaType} );\n\t\t\tcollection.reset();\n\t\t\t/* Prevent empty element from living in our collection */\n\n\t\t\tif ( options.preload && options.preload.length ) {\n\t\t\t\tcollection.add( options.preload );\n\t\t\t}\n\n\t\t\toptions.preload = ! ! options.preload; // Whether or not a preload var was present.\n\n\t\t\tthis.set( 'media-collection-view', new MediaCollectionView( {collection : collection} ) );\n\t\t\tthis.set( 'options', options );\n\n\t\t}\n\t}\n);\n\n","/**\n * Media model for Media CPT\n */\n\nvar BrightcoveModalModel = Backbone.Model.extend(\n\t{\n\n\t\tgetMediaManagerSettings : function () {\n\t\t\tvar tab = this.get( 'tab' );\n\t\t\tvar settings = {\n\t\t\t\t'upload' : {\n\t\t\t\t\taccounts : 'all',\n\t\t\t\t\tdate : 'all',\n\t\t\t\t\tembedType : 'modal',\n\t\t\t\t\tmediaType : 'videos',\n\t\t\t\t\tmode : 'uploader',\n\t\t\t\t\tpreload : true,\n\t\t\t\t\tsearch : '',\n\t\t\t\t\ttags : 'all',\n\t\t\t\t\tviewType : 'grid',\n\t\t\t\t\tposter: {},\n\t\t\t\t\tthumbnail: {}\n\t\t\t\t},\n\t\t\t\t'videos' : {\n\t\t\t\t\taccounts : 'all',\n\t\t\t\t\tdate : 'all',\n\t\t\t\t\tembedType : 'modal',\n\t\t\t\t\tmediaType : 'videos',\n\t\t\t\t\tmode : 'manager',\n\t\t\t\t\tpreload : true,\n\t\t\t\t\tsearch : '',\n\t\t\t\t\ttags : 'all',\n\t\t\t\t\tviewType : 'grid'\n\t\t\t\t},\n\t\t\t\t'playlists' : {\n\t\t\t\t\taccounts : 'all',\n\t\t\t\t\tdate : 'all',\n\t\t\t\t\tembedType : 'modal',\n\t\t\t\t\tmediaType : 'playlists',\n\t\t\t\t\tmode : 'manager',\n\t\t\t\t\tpreload : true,\n\t\t\t\t\tsearch : '',\n\t\t\t\t\ttags : 'all',\n\t\t\t\t\tviewType : 'grid'\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tif ( undefined !== settings[tab] ) {\n\t\t\t\treturn settings[tab];\n\t\t\t}\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n);\n\n","/**\n * Collection model to contain pending uploads\n */\n\nvar UploadModelCollection = Backbone.Collection.extend(\n\t{\n\n\t\tinitialize : function ( options ) {\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:queuedFilesAdded', this.queuedFilesAdded );\n\t\t},\n\n\t\tqueuedFilesAdded : function ( queuedFiles ) {\n\t\t\t_.each( queuedFiles, function ( queuedFile ) {\n\t\t\t\tthis.add( new UploadModel( queuedFile ) );\n\t\t\t}, this );\n\t\t}\n\n\t}\n);\n\n","/**\n * Model to contain pending upload\n */\n\nvar UploadModel = Backbone.Model.extend(\n\t{\n\n\t\tinitialize : function ( options ) {\n\t\t},\n\n\t\thumanReadableSize : function () {\n\t\t\tvar bytes = this.get( 'size' );\n\t\t\tif ( bytes === 0 ) {\n\t\t\t\treturn '0 Byte';\n\t\t\t}\n\t\t\tvar k = 1000;\n\t\t\tvar sizes = ['Bytes', 'KB', 'MB', 'GB'];\n\t\t\tvar i = Math.floor( Math.log( bytes ) / Math.log( k ) );\n\t\t\treturn (bytes / Math.pow( k, i )).toPrecision( 3 ) + ' ' + sizes[i];\n\t\t}\n\n\t}\n);\n","var BrightcoveView = wp.Backbone.View.extend(\n\t{\n\t\tsubviews : null,\n\n\t\tregisterSubview : function ( view ) {\n\n\t\t\tthis.subviews = this.subviews || [];\n\t\t\tthis.subviews.push( view );\n\n\t\t},\n\n\t\tremove : function () {\n\n\t\t\t_.invoke( this.subviews, 'remove' );\n\t\t\twp.Backbone.View.prototype.remove.call( this );\n\n\t\t},\n\n\t\tinsertShortcode : function () {\n\n\t\t\tif ( ! this.model ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar brightcoveId = this.model.get( 'id' ).replace( /\\D/g, '' ); // video or playlist id\n\t\t\tvar accountId = this.model.get( 'account_id' ).replace( /\\D/g, '' );\n\t\t\tvar playerId = wpbc.selectedPlayer;\n\t\t\tvar shortcode = '';\n\n\t\t\tif ( ! playerId ) {\n\t\t\t\tvar playerId = 'default';\n\t\t\t}\n\n\t\t\tif ( undefined !== this.mediaType ) {\n\t\t\t\tif ( this.mediaType === 'videos' ) {\n\n\t\t\t\t\tshortcode = '[bc_video video_id=\"' + brightcoveId + '\" account_id=\"' + accountId + '\" player_id=\"' + playerId + '\"]';\n\n\t\t\t\t} else {\n\n\t\t\t\t\tshortcode = '[bc_playlist playlist_id=\"' + brightcoveId + '\" account_id=\"' + accountId + '\"]';\n\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar template = wp.template( 'brightcove-mediatype-notice' );\n\n\t\t\t\t// Throw a notice to the user that the file is not the correct format\n\t\t\t\t$( '#lost-connection-notice' ).before( template );\n\n\t\t\t\t// Allow the user to dismiss the notice\n\t\t\t\t$( '#js-mediatype-dismiss' ).on( 'click', function() {\n\t\t\t\t\t$( '#js-mediatype-notice' ).first().fadeOut( 500, function() {\n\t\t\t\t\t\t$( this ).remove();\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tif( wpbc.modal.target === 'content' ) {\n\t\t\t\twindow.send_to_editor( shortcode );\n\t\t\t} else {\n\t\t\t\t$( wpbc.modal.target ).val( shortcode );\n\t\t\t\t$( wpbc.modal.target ).change();\n\t\t\t}\n\t\t\twpbc.broadcast.trigger( 'close:modal' );\n\n\t\t}\n\t}\n);\n\n","/**\n * This is the toolbar to handle sorting, filtering, searching and grid/list view toggles.\n * State is captured in the brightcove-media-manager model.\n */\nvar ToolbarView = BrightcoveView.extend(\n\t{\n\t\ttagName : 'div',\n\t\tclassName : 'media-toolbar wp-filter',\n\t\ttemplate : wp.template( 'brightcove-media-toolbar' ),\n\n\t\tevents : {\n\t\t\t'click .view-list' : 'toggleList',\n\t\t\t'click .view-grid' : 'toggleGrid',\n\t\t\t'click .brightcove-toolbar': 'toggleToolbar',\n\t\t\t'change .brightcove-media-source' : 'sourceChanged',\n\t\t\t'change .brightcove-media-dates' : 'datesChanged',\n\t\t\t'change .brightcove-media-tags' : 'tagsChanged',\n\t\t\t'change .brightcove-empty-playlists' : 'emptyPlaylistsChanged',\n\t\t\t'click #media-search' : 'searchHandler'\n\t\t},\n\n\t\trender : function () {\n\t\t\tvar mediaType = this.model.get( 'mediaType' );\n\t\t\tvar options = {\n\t\t\t\taccounts : wpbc.preload.accounts,\n\t\t\t\tdates : {},\n\t\t\t\tmediaType : mediaType,\n\t\t\t\ttags : wpbc.preload.tags,\n\t\t\t\taccount : this.model.get( 'account' )\n\t\t\t};\n\n\t\t\tvar dates = wpbc.preload.dates;\n\t\t\tvar date_var = this.model.get( 'date' );\n\t\t\t/* @todo: find out if this is working */\n\t\t\tif ( dates !== undefined && dates[mediaType] !== undefined && dates[mediaType][date_var] !== undefined ) {\n\t\t\t\toptions.dates = dates[mediaType][date_var];\n\t\t\t}\n\n\t\t\tthis.$el.html( this.template( options ) );\n\t\t\tvar spinner = this.$el.find( '.spinner' );\n\t\t\tthis.listenTo( wpbc.broadcast, 'spinner:on', function () {\n\t\t\t\tspinner.addClass( 'is-active' ).removeClass( 'hidden' );\n\t\t\t} );\n\t\t\tthis.listenTo( wpbc.broadcast, 'spinner:off', function () {\n\t\t\t\tspinner.removeClass( 'is-active' ).addClass( 'hidden' );\n\t\t\t} );\n\t\t},\n\n\t\t// List view Selected\n\t\ttoggleList : function () {\n\t\t\tthis.trigger( 'viewType', 'list' );\n\t\t\tthis.$el.find( '.view-list' ).addClass( 'current' );\n\t\t\tthis.$el.find( '.view-grid' ).removeClass( 'current' );\n\t\t},\n\n\t\t// Grid view Selected\n\t\ttoggleGrid : function () {\n\t\t\tthis.trigger( 'viewType', 'grid' );\n\t\t\tthis.$el.find( '.view-grid' ).addClass( 'current' );\n\t\t\tthis.$el.find( '.view-list' ).removeClass( 'current' );\n\t\t},\n\n\t\t// Toggle toolbar help\n\t\ttoggleToolbar : function () {\n\t\t\tvar template = wp.template( 'brightcove-tooltip-notice' );\n\n\t\t\t// Throw a notice to the user that the file is not the correct format\n\t\t\t$( '.brightcove-media-videos' ).before( template );\n\t\t\t// Allow the user to dismiss the notice\n\t\t\t$( '#js-tooltip-dismiss' ).on( 'click', function() {\n\t\t\t\t$( '#js-tooltip-notice' ).first().fadeOut( 500, function() {\n\t\t\t\t\t$( this ).remove();\n\t\t\t\t} );\n\t\t\t} );\n\t\t},\n\n\t\t// Brightcove source changed\n\t\tsourceChanged : function ( event ) {\n\n\t\t\t// Store the currently selected account on the model.\n\t\t\tthis.model.set( 'account', event.target.value );\n\t\t\twpbc.broadcast.trigger( 'change:activeAccount', event.target.value );\n\t\t},\n\n\t\tdatesChanged : function ( event ) {\n\t\t\twpbc.broadcast.trigger( 'change:date', event.target.value );\n\t\t},\n\n\t\ttagsChanged : function ( event ) {\n\t\t\twpbc.broadcast.trigger( 'change:tag', event.target.value );\n\t\t},\n\n\t\temptyPlaylistsChanged : function ( event ) {\n\t\t\tvar emptyPlaylists = $( event.target ).prop( 'checked' );\n\t\t\twpbc.broadcast.trigger( 'change:emptyPlaylists', emptyPlaylists );\n\t\t},\n\n\t\tsearchHandler : function ( event ) {\n\t\t\tvar searchTerm = $( '#media-search-input' ).val();\n\n\t\t\tif ( searchTerm.length > 2 && searchTerm !== this.model.get( 'search' ) ) {\n\t\t\t\tthis.model.set( 'search', searchTerm );\n\t\t\t\twpbc.broadcast.trigger( 'change:searchTerm', searchTerm );\n\t\t\t}\n\t\t}\n\t}\n);\n\n","var UploadVideoManagerView = BrightcoveView.extend(\n\t{\n\t\tclassName : \"brightcove-file-uploader\",\n\n\t\tevents : {\n\t\t\t'click .brightcove-start-upload' : 'triggerUpload'\n\t\t},\n\n\t\tinitialize : function ( options ) {\n\t\t\t/**\n\t\t\t * If you're looking for the Plupload instance, you're in the wrong place, check the UploadWindowView\n\t\t\t */\n\t\t\tthis.collection = new UploadModelCollection();\n\t\t\tif ( options ) {\n\t\t\t\tthis.options = options;\n\n\t\t\t\tthis.successMessage = options.successMessage || this.successMessage;\n\t\t\t}\n\n\t\t\tthis.uploadWindow = new UploadWindowView();\n\n\t\t\tthis.listenTo( this.collection, 'add', this.fileAdded );\n\t\t\tthis.listenTo( wpbc.broadcast, 'pendingUpload:selectedItem', this.selectedItem );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:prepareUpload', this.prepareUpload );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:successMessage', this.successMessage );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:errorMessage', this.errorMessage );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:clear', this.resetUploads );\n\t\t\tthis.listenTo( wpbc.broadcast, 'upload:video', this.resetUploads );\n\t\t},\n\n\t\tresetUploads : function () {\n\t\t\twhile ( model = this.collection.first() ) {\n\t\t\t\tthis.collection.remove( model );\n\t\t\t}\n\t\t},\n\n\t\terrorMessage : function ( message ) {\n\t\t\tthis.message( message, 'error' );\n\t\t},\n\n\t\tsuccessMessage : function ( message ) {\n\t\t\tthis.message( message, 'success' );\n\t\t},\n\n\t\tmessage : function ( message, type ) {\n\t\t\tvar messages = this.$el.find( '.brightcove-messages' );\n\t\t\tvar messageClasses = '';\n\t\t\tif ( 'success' === type ) {\n\t\t\t\tmessageClasses = 'notice updated';\n\t\t\t} else if ( 'error' === type ) {\n\t\t\t\tmessageClasses = 'error';\n\t\t\t}\n\t\t\tvar newMessage = $( '

' );\n\t\t\tmessages.append( newMessage );\n\t\t\tnewMessage.addClass( messageClasses ).find( '.message-text' ).text( message );\n\t\t\tnewMessage.delay( 4000 ).fadeOut( 500, function () {\n\t\t\t\t$( this ).remove();\n\t\t\t\twpbc.broadcast.trigger('upload:video');\n\t\t\t} );\n\t\t},\n\n\t\tprepareUpload : function () {\n\t\t\twpbc.uploads = wpbc.uploads || {};\n\t\t\tthis.collection.each( function ( upload ) {\n\t\t\t\twpbc.uploads[upload.get( 'id' )] = {\n\t\t\t\t\taccount : upload.get( 'account' ),\n\t\t\t\t\tname : upload.get( 'fileName' ),\n\t\t\t\t\ttags : upload.get( 'tags' )\n\t\t\t\t};\n\t\t\t} );\n\t\t\twpbc.broadcast.trigger( 'uploader:startUpload' );\n\t\t},\n\n\t\tfileAdded : function ( model, collection ) {\n\t\t\t// Start upload triggers progress bars under every video.\n\t\t\t// Need to re-render when one model is added\n\t\t\tif ( this.collection.length === 1 ) {\n\t\t\t\tthis.render();\n\t\t\t}\n\t\t\tvar pendingUpload = new UploadView( {model : model} );\n\t\t\tpendingUpload.render();\n\t\t\tpendingUpload.$el.appendTo( this.$el.find( '.brightcove-pending-uploads' ) );\n\t\t},\n\n\t\ttriggerUpload : function () {\n\t\t\twpbc.broadcast.trigger( 'uploader:prepareUpload' );\n\t\t},\n\n\t\tselectedItem : function ( model ) {\n\t\t\tthis.uploadDetails = new UploadDetailsView( {model : model} );\n\t\t\tthis.uploadDetails.render();\n\t\t\tthis.$el.find( '.brightcove-pending-upload-details' ).remove();\n\t\t\tthis.uploadDetails.$el.appendTo( this.$el.find( '.brightcove-upload-queued-files' ) );\n\t\t},\n\n\t\trender : function ( options ) {\n\t\t\tif ( this.collection.length ) {\n\t\t\t\tthis.template = wp.template( 'brightcove-uploader-queued-files' );\n\t\t\t} else {\n\t\t\t\tthis.template = wp.template( 'brightcove-uploader-inline' );\n\t\t\t\tthis.uploadWindow.render();\n\t\t\t\tthis.uploadWindow.$el.appendTo( $( 'body' ) );\n\t\t\t}\n\t\t\tthis.$el.html( this.template( options ) );\n\t\t\tif ( this.collection.length ) {\n\t\t\t\tthis.$el.find( '.brightcove-start-upload' ).show();\n\t\t\t} else {\n\t\t\t\tthis.$el.find( '.brightcove-start-upload' ).hide();\n\t\t\t}\n\t\t}\n\t}\n);\n","var BrightcoveRouter = Backbone.Router.extend({\n\troutes: {\n\t\t'add-new-brightcove-video' : \"addNew\"\n\t},\n\taddNew: function() {\n\t\twpbc.broadcast.trigger('upload:video');\n\t}\n});\n\nvar BrightcoveMediaManagerView = BrightcoveView.extend(\n\t{\n\t\ttagName : 'div',\n\t\tclassName : 'brightcove-media',\n\n\t\tevents : {\n\t\t\t/*\n\t\t\t 'click .brightcove.media-button': 'insertIntoPost'\n\t\t\t */\n\t\t},\n\n\t\tscrollHandler : function () {\n\t\t\twpbc.broadcast.trigger( 'scroll:mediaGrid' );\n\t\t},\n\n\t\tinitialize : function ( options ) {\n\n\t\t\tvar scrollRefreshSensitivity = wp.media.isTouchDevice ? 300 : 200;\n\t\t\tthis.scrollHandler = _.chain( this.scrollHandler ).bind( this ).throttle( scrollRefreshSensitivity ).value();\n\t\t\tthis.options = options;\n\t\t\tthis.mode = options.mode || 'manager';\n\n\t\t\toptions.preload = this.options.preload ? wpbc.preload[this.options.mediaType] : false;\n\n\t\t\tthis.model = new BrightcoveMediaManagerModel( options );\n\n\t\t\t/* Search and dropdowns */\n\t\t\tthis.toolbar = new ToolbarView( {model : this.model} );\n\n\t\t\t/* Uploader View */\n\t\t\tthis.uploader = new UploadVideoManagerView();\n\n\t\t\tthis.model.set( 'accounts', wpbc.preload.accounts ); // All accounts.\n\t\t\tthis.model.set( 'activeAccount', options.account ); // Active account ID / All\n\n\t\t\tthis.listenTo( this.toolbar, 'viewType', function ( viewType ) {\n\t\t\t\tthis.model.set( 'view', viewType ); // Set the model view type\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'videoEdit:message', this.message );\n\t\t\tthis.listenTo( wpbc.broadcast, 'permanent:message', this.permanentMessage );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'remove:permanentMessage', function () {\n\n\t\t\t\tif ( wpbc.permanentMessage ) {\n\t\t\t\t\twpbc.permanentMessage.remove();\n\t\t\t\t}\n\n\t\t\t\tthis.$el.find( '.brightcove-message' ).addClass( 'hidden' );\n\n\t\t\t} );\n\n\t\t\t// We only care when a change occurs\n\t\t\tthis.listenTo( this.model, 'change:view', function ( model, type ) {\n\t\t\t\tthis.model.get( 'media-collection-view' ).setViewType( type );\n\t\t\t} );\n\n\t\t\tthis.listenTo( this.model, 'change:mode', function ( model, mode ) {\n\n\t\t\t\tif ( 'uploader' !== mode ) {\n\t\t\t\t\twpbc.broadcast.trigger( 'uploader:clear' );\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'cancelPreview:media', function ( settings ) {\n\t\t\t\tthis.clearPreview();\n\t\t\t\tthis.detailsView = undefined;\n\t\t\t\tthis.model.set( 'mode', 'manager' );\n\t\t\t\tthis.render();\n\n\t\t\t\t// Disable \"Insert Into Post\" button since no video would be selected.\n\t\t\t\twpbc.broadcast.trigger( 'toggle:insertButton' );\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:emptyPlaylists', function ( hideEmptyPlaylists ) {\n\n\t\t\t\tvar mediaCollectionView = this.model.get( 'media-collection-view' );\n\t\t\t\tthis.model.set( 'mode', 'manager' );\n\n\t\t\t\t_.each( mediaCollectionView.collection.models, function ( playlistModel ) {\n\n\t\t\t\t\t// Don't hide smart playlists. Only Manual playlists will have playlistType as 'EXPLICIT'.\n\t\t\t\t\tif ( 'EXPLICIT' !== playlistModel.get ( 'type' ) ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Manual play list will have videos populated in video_ids. Empty playlists will have zero video_ids.\n\t\t\t\t\tif ( playlistModel.get( 'video_ids' ).length === 0 ) {\n\t\t\t\t\t\tif ( hideEmptyPlaylists ) {\n\t\t\t\t\t\t\tplaylistModel.view.$el.hide();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tplaylistModel.view.$el.show();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'delete:successful', function ( message ) {\n\n\t\t\t\tthis.startGridView();\n\t\t\t\tthis.message( message, 'success' );\n\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:activeAccount', function ( accountId ) {\n\n\t\t\t\tthis.clearPreview();\n\t\t\t\tthis.model.set( 'activeAccount', accountId );\n\t\t\t\tthis.model.set( 'mode', 'manager' );\n\t\t\t\tthis.render();\n\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:tag', function ( tag ) {\n\n\t\t\t\tthis.clearPreview();\n\t\t\t\tthis.model.set( 'tag', tag );\n\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:date', function ( date ) {\n\n\t\t\t\tthis.clearPreview();\n\t\t\t\tthis.model.set( 'date', date );\n\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'upload:video', function () {\n\t\t\t\tthis.showUploader();\n\t\t\t} );\n\n\t\t\tthis.listenTo( this.model, 'change:search', function ( model, searchTerm ) {\n\t\t\t\tthis.model.get( 'search' );\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'start:gridview', function () {\n\n\t\t\t\t_.invoke( this.subviews, 'remove' );\n\n\t\t\t\tthis.detailsView = null; // Prevent selected view from not being toggleable when we hit the back button on edit\n\n\t\t\t\tthis.startGridView();\n\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'tabChange', function ( settings ) {\n\n\t\t\t\tthis.model.set( settings );\n\n\t\t\t\tif ( this.detailsView instanceof MediaDetailsView ) {\n\n\t\t\t\t\tthis.detailsView.remove();\n\n\t\t\t\t\tthis.detailsView = undefined;\n\n\t\t\t\t}\n\n\t\t\t\tthis.render();\n\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'edit:media', function ( model ) {\n\n\t\t\t\tvar mediaType = this.model.get( 'mediaType' );\n\n\t\t\t\tif ( mediaType === 'videos' ) {\n\n\t\t\t\t\t// We just hit the edit button with the edit window already open.\n\t\t\t\t\tif ( 'editVideo' === this.model.get( 'mode' ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\t// hide the previous notification\n\t\t\t\t\tvar messages = this.$el.find( '.brightcove-message' );\n\t\t\t\t\tmessages.addClass( 'hidden' );\n\n\t\t\t\t\tthis.editView = new VideoEditView( {model : model} );\n\n\t\t\t\t\tthis.registerSubview( this.editView );\n\t\t\t\t\tthis.model.set( 'mode', 'editVideo' );\n\t\t\t\t\tthis.render();\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// We just hit the edit button with the edit window already open.\n\t\t\t\t\tif ( 'editPlaylist' === this.model.get( 'mode' ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.editView = new PlaylistEditView( {model : model} );\n\n\t\t\t\t\tthis.registerSubview( this.editView );\n\t\t\t\t\tthis.model.set( 'mode', 'editPlaylist' );\n\t\t\t\t\tthis.render();\n\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'preview:media', function ( model ) {\n\n\t\t\t\tvar mediaType = this.model.get( 'mediaType' );\n\n\t\t\t\tif ( mediaType === 'videos' ) {\n\n\t\t\t\t\t// We just hit the preview button with the preview window already open.\n\t\t\t\t\tif ( 'previewVideo' === this.model.get( 'mode' ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.previewView = new VideoPreviewView( {model : model} );\n\n\t\t\t\t\tthis.registerSubview( this.previewView );\n\t\t\t\t\tthis.model.set( 'mode', 'previewVideo' );\n\t\t\t\t\tthis.render();\n\n\t\t\t\t} else {\n\n\t\t\t\t\t/**\n\t\t\t\t\t * @todo: playlist preview view\n\t\t\t\t\t */\n\t\t\t\t\tthis.model.set( 'mode', 'editPlaylist' );\n\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:searchTerm', function ( mediaView ) {\n\t\t\t\tthis.clearPreview();\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'select:media', function ( mediaView ) {\n\n\t\t\t\t/* If user selects same thumbnail they want to hide the details view */\n\t\t\t\tif ( this.detailsView && this.detailsView.model === mediaView.model ) {\n\n\t\t\t\t\tthis.detailsView.$el.toggle();\n\t\t\t\t\tmediaView.$el.toggleClass( 'highlighted' );\n\t\t\t\t\tthis.model.get( 'media-collection-view' ).$el.toggleClass( 'menu-visible' );\n\t\t\t\t\twpbc.broadcast.trigger( 'toggle:insertButton' );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.clearPreview();\n\t\t\t\t\tthis.detailsView = new MediaDetailsView( {model : mediaView.model, el : $( '.brightcove.media-frame-menu' ), mediaType : this.model.get( 'mediaType' )} );\n\t\t\t\t\tthis.registerSubview( this.detailsView );\n\n\t\t\t\t\tthis.detailsView.render();\n\t\t\t\t\tthis.detailsView.$el.toggle( true ); // Always show new view\n\t\t\t\t\tthis.model.get( 'media-collection-view' ).$el.addClass( 'menu-visible' );\n\t\t\t\t\tmediaView.$el.addClass( 'highlighted' );\n\t\t\t\t\twpbc.broadcast.trigger( 'toggle:insertButton', 'enabled' );\n\n\t\t\t\t}\n\t\t\t} );\n\n\t\t},\n\n\t\t/**\n\t\t * Clear the preview view and remove highlighted class from previous selected video.\n\t\t */\n\t\tclearPreview : function () {\n\n\t\t\tif ( this.detailsView instanceof MediaDetailsView ) {\n\t\t\t\tthis.detailsView.remove();\n\t\t\t}\n\n\t\t\tthis.model.get( 'media-collection-view' ).$el.find( '.highlighted' ).removeClass( 'highlighted' );\n\n\t\t},\n\n\t\tstartGridView : function () {\n\n\t\t\tthis.model.set( 'mode', 'manager' );\n\t\t\tthis.render();\n\n\t\t},\n\n\t\tmessage : function ( message, type, permanent ) {\n\n\t\t\tvar messages = this.$el.find( '.brightcove-message' );\n\n\t\t\tif ( 'success' === type ) {\n\n\t\t\t\tmessages.addClass( 'updated' );\n\t\t\t\tmessages.removeClass( 'error' );\n\n\t\t\t} else if ( 'error' === type ) {\n\n\t\t\t\tmessages.addClass( 'error' );\n\t\t\t\tmessages.removeClass( 'updated' );\n\n\t\t\t}\n\n\t\t\tvar newMessage = $( '

' );\n\t\t\tnewMessage.text( message );\n\n\t\t\tmessages.append( newMessage );\n\t\t\tmessages.removeClass( 'hidden' );\n\n\t\t\tif ( permanent ) {\n\n\t\t\t\tif ( wpbc.permanentMessage ) {\n\t\t\t\t\twpbc.permanentMessage.remove();\n\t\t\t\t}\n\n\t\t\t\twpbc.permanentMessage = newMessage;\n\n\t\t\t} else {\n\t\t\t\t// Make the notice dismissable.\n\t\t\t\tmessages.addClass( 'notice is-dismissible' );\n\t\t\t\tthis.makeNoticesDismissible();\n\t\t\t}\n\t\t},\n\n\t\t// Make notices dismissible, mimics core function, fades them empties.\n\t\tmakeNoticesDismissible : function() {\n\t\t\t$( '.notice.is-dismissible' ).each( function() {\n\t\t\t\tvar $el = $( this ),\n\t\t\t\t\t$button = $( '' ),\n\t\t\t\t\tbtnText = commonL10n.dismiss || '';\n\n\t\t\t\t// Ensure plain text\n\t\t\t\t$button.find( '.screen-reader-text' ).text( btnText );\n\t\t\t\t$button.on( 'click.wp-dismiss-notice', function( event ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t$el.fadeTo( 100, 0, function() {\n\t\t\t\t\t\t$el.slideUp( 100, function() {\n\t\t\t\t\t\t\t$el.addClass( 'hidden' )\n\t\t\t\t\t\t\t\t.css( {\n\t\t\t\t\t\t\t\t\t'opacity': 1,\n\t\t\t\t\t\t\t\t\t'margin-bottom': 0,\n\t\t\t\t\t\t\t\t\t'display': ''\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t.empty();\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\t$el.append( $button );\n\t\t\t});\n\t\t},\n\n\t\tshowUploader : function () {\n\n\t\t\tthis.model.set( 'mode', 'uploader' );\n\t\t\tthis.render();\n\n\t\t},\n\n\t\tpermanentMessage : function ( message ) {\n\t\t\tthis.message( message, 'error', true );\n\t\t},\n\n\t\trender : function () {\n\n\t\t\tvar options = this.model.get( 'options' );\n\t\t\tvar contentContainer;\n\n\t\t\tvar mode = this.model.get( 'mode' );\n\n\t\t\t// Nuke all registered subviews\n\t\t\t_.invoke( this.subviews, 'remove' );\n\n\t\t\tif ( 'uploader' === mode ) {\n\n\t\t\t\tthis.template = wp.template( 'brightcove-uploader-container' );\n\n\t\t\t\tthis.$el.empty();\n\t\t\t\tthis.$el.html( this.template( options ) );\n\t\t\t\tthis.uploader.render();\n\t\t\t\tthis.uploader.delegateEvents();\n\t\t\t\tthis.uploader.$el.appendTo( $( '.brightcove-uploader' ) );\n\n\t\t\t} else if ( 'manager' === mode ) {\n\n\t\t\t\tthis.template = wp.template( 'brightcove-media' );\n\n\t\t\t\tthis.$el.html( this.template( options ) );\n\t\t\t\tthis.toolbar.render();\n\t\t\t\tthis.toolbar.delegateEvents();\n\t\t\t\tthis.toolbar.$el.show();\n\t\t\t\tthis.toolbar.$el.appendTo( this.$el.find( '.media-frame-router' ) );\n\n\t\t\t\t// Add the Media views to the media manager\n\t\t\t\tvar mediaCollectionView = this.model.get( 'media-collection-view' );\n\n\t\t\t\tmediaCollectionView.render();\n\t\t\t\tmediaCollectionView.delegateEvents();\n\n\t\t\t\tvar mediaCollectionContainer = this.$el.find( '.media-frame-content' );\n\n\t\t\t\tmediaCollectionContainer.on( 'scroll', this.scrollHandler );\n\t\t\t\tmediaCollectionView.$el.appendTo( mediaCollectionContainer );\n\n\t\t\t\tif ( ! ! wpbc.initialSync ) {\n\n\t\t\t\t\twpbc.broadcast.trigger( 'remove:permanentMessage' );\n\t\t\t\t\twpbc.broadcast.trigger( 'permanent:message', wpbc.preload.messages.ongoingSync );\n\n\t\t\t\t}\n\t\t\t} else if ( 'editVideo' === mode ) {\n\n\t\t\t\tthis.toolbar.$el.hide();\n\n\t\t\t\tcontentContainer = this.$el.find( '.media-frame-content' );\n\n\t\t\t\tcontentContainer.empty();\n\t\t\t\tthis.editView.render();\n\t\t\t\tthis.editView.delegateEvents();\n\t\t\t\tthis.editView.$el.appendTo( contentContainer );\n\t\t\t\tthis.$el.find( '.brightcove.media-frame-content' ).addClass( 'edit-view' );\n\n\t\t\t} else if ( 'editPlaylist' === mode ) {\n\n\t\t\t\tthis.toolbar.$el.hide();\n\n\t\t\t\tcontentContainer = this.$el;\n\n\t\t\t\tcontentContainer.empty();\n\t\t\t\tcontentContainer.html( '
' );\n\n\t\t\t\tcontentContainer = contentContainer.find( '.playlist-edit-container' );\n\n\t\t\t\tthis.editView.render();\n\t\t\t\tthis.editView.delegateEvents();\n\t\t\t\tthis.editView.$el.appendTo( contentContainer );\n\t\t\t\tcontentContainer.addClass( 'playlist' );\n\n\t\t\t} else if ( 'previewVideo' === mode ) {\n\n\t\t\t\tthis.toolbar.$el.hide();\n\n\t\t\t\tcontentContainer = this.$el.find( '.media-frame-content' );\n\n\t\t\t\tcontentContainer.empty();\n\t\t\t\tthis.previewView.render();\n\t\t\t\tthis.detailsView.render( {detailsMode : 'preview'} );\n\t\t\t\tthis.previewView.delegateEvents();\n\t\t\t\tthis.previewView.$el.appendTo( contentContainer );\n\t\t\t\tthis.$el.find( '.brightcove.media-frame-toolbar' ).hide();\n\t\t\t\tbrightcove.createExperiences();\n\n\t\t\t}\n\n\t\t\tif ( 'editPlaylist' !== mode ) {\n\t\t\t\tthis.$el.find( '.media-frame-content' ).removeClass( 'playlist' );\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t}\n);\n","var BrightcoveModalView = BrightcoveView.extend(\n\t{\n\t\ttagName : 'div',\n\t\tclassName : 'media-modal brightcove',\n\t\ttemplate : wp.template( 'brightcove-media-modal' ),\n\n\t\tevents : {\n\t\t\t'click .brightcove.media-menu-item' : 'changeTab',\n\t\t\t'click .brightcove.media-button-insert' : 'insertIntoPost',\n\t\t\t'click .brightcove.media-modal-icon' : 'closeModal',\n\t\t\t'click .brightcove.save-sync' : 'saveSync',\n\t\t\t'click .brightcove.button.back' : 'back'\n\t\t},\n\n\t\tinitialize : function ( options ) {\n\t\t\tthis.model = new BrightcoveModalModel( {tab : options.tab} );\n\t\t\tthis.brightcoveMediaManager = new BrightcoveMediaManagerView( this.model.getMediaManagerSettings() );\n\t\t\tthis.registerSubview( this.brightcoveMediaManager );\n\t\t\tthis.listenTo( wpbc.broadcast, 'toggle:insertButton', function ( state ) {\n\t\t\t\tthis.toggleInsertButton( state );\n\t\t\t} );\n\t\t\tthis.listenTo( wpbc.broadcast, 'close:modal', this.closeModal );\n\t\t},\n\n\t\tsaveSync : function( evnt ) {\n\t\t\t// This event is triggered when the \"Save and Sync Changes\" button is clicked from edit video screen.\n\t\t\twpbc.broadcast.trigger( 'save:media', evnt );\n\t\t},\n\n\t\tback : function( evnt ) {\n\t\t\t// This event is triggered when the \"Back\" button is clicked from edit video screen.\n\t\t\twpbc.broadcast.trigger( 'back:editvideo', evnt );\n\t\t},\n\n\t\tinsertIntoPost : function ( evnt ) {\n\t\t\tevnt.preventDefault();\n\n\t\t\t// Exit if the 'button' is disabled.\n\t\t\tif ( $( evnt.currentTarget ).hasClass( 'disabled' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Make the selected player available to the shortcode\n\t\t\twpbc.selectedPlayer = $( 'input[name=\"video-player-field\"]:checked' ).val();\n\n\t\t\t// Media Details will trigger the insertion since it's always active and contains\n\t\t\t// the model we're inserting\n\t\t\twpbc.broadcast.trigger( 'insert:shortcode' );\n\n\t\t},\n\n\t\ttoggleInsertButton : function ( state ) {\n\t\t\tvar button = this.$el.find( '.brightcove.media-button-insert' ),\n\t\t\t\tprocessing = $('.attachment.highlighted' ).find( '.processing' ).length;\n\n\t\t\tbutton.show();\n\n\t\t\tif ( 1 === processing ) {\n\t\t\t\tbutton.attr( 'disabled', 'disabled' );\n\t\t\t} else if ( 'enabled' === state ) {\n\t\t\t\tbutton.removeAttr( 'disabled' );\n\t\t\t} else if ( 'disabled' === state ) {\n\t\t\t\tbutton.attr( 'disabled', 'disabled' );\n\t\t\t} else if ( undefined !== button.attr( 'disabled' ) ) {\n\t\t\t\tbutton.removeAttr( 'disabled' );\n\t\t\t} else {\n\t\t\t\tbutton.attr( 'disabled', 'disabled' );\n\t\t\t}\n\t\t},\n\n\t\tchangeTab : function ( event ) {\n\t\t\tevent.preventDefault();\n\n\t\t\tif ( $( event.target ).hasClass( 'active' ) ) {\n\t\t\t\treturn; // Clicking the already active tab\n\t\t\t}\n\t\t\t$( event.target ).addClass( 'active' );\n\t\t\tvar tab = _.without( event.target.classList, 'media-menu-item', 'brightcove' )[0];\n\t\t\tvar tabs = ['videos', 'upload', 'playlists'];\n\t\t\t_.each( _.without( tabs, tab ), function ( otherTab ) {\n\t\t\t\t$( '.brightcove.media-menu-item.' + otherTab ).removeClass( 'active' );\n\t\t\t} );\n\n\t\t\tif ( _.contains( tabs, tab ) ) {\n\t\t\t\tthis.model.set( 'tab', tab );\n\t\t\t\twpbc.broadcast.trigger( 'spinner:off' );\n\t\t\t\twpbc.broadcast.trigger( 'tabChange', this.model.getMediaManagerSettings() );\n\t\t\t}\n\n\t\t},\n\n\t\tcloseModal : function ( evnt ) {\n\n\t\t\t// If we are in the editVideo mode, switch back to the video view.\n\t\t\tif ( 'editVideo' === wpbc.modal.brightcoveMediaManager.model.get('mode') ) {\n\t\t\t\twpbc.broadcast.trigger( 'start:gridview' );\n\t\t\t}\n\n\t\t\t// Exit if the container button is disabled.\n\t\t\tif ( ! _.isUndefined( evnt ) && $( evnt.currentTarget ).parent().hasClass( 'disabled' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.$el.hide();\n\t\t\t$( 'body' ).removeClass( 'modal-open' );\n\t\t},\n\n\t\tmessage : function ( message ) {\n\t\t\tvar messageContainer = this.$el.find( '.brightcove-message' );\n\n\t\t},\n\n\t\trender : function ( options ) {\n\t\t\tthis.$el.html( this.template( options ) );\n\n\t\t\tthis.brightcoveMediaManager.render();\n\t\t\tthis.brightcoveMediaManager.$el.appendTo( this.$el.find( '.media-frame-content' ) );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'edit:media', function( model, mediaType ) {\n\t\t\t\tif ( 'videos' === mediaType ) {\n\t\t\t\t\t// When edit Video screen is opened, hide the \"Insert Into Post\" button and show video save button.\n\t\t\t\t\tthis.$el.find( '.brightcove.button.save-sync' ).show();\n\t\t\t\t\tthis.$el.find( '.brightcove.button.back' ).show();\n\t\t\t\t\tthis.$el.find( '.brightcove.media-button-insert' ).hide();\n\t\t\t\t} else {\n\t\t\t\t\t// When edit playlist screen is opened, hide all the buttons.\n\t\t\t\t\tthis.$el.find( '.brightcove.button.save-sync' ).hide();\n\t\t\t\t\tthis.$el.find( '.brightcove.button.back' ).hide();\n\t\t\t\t\tthis.$el.find( '.brightcove.media-button-insert' ).hide();\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'save:media back:editvideo start:gridView', function() {\n\t\t\t\tthis.$el.find( '.brightcove.button.save-sync' ).hide();\n\t\t\t\tthis.$el.find( '.brightcove.button.back' ).hide();\n\t\t\t\tthis.$el.find( '.brightcove.media-button-insert' ).show();\n\t\t\t\twpbc.broadcast.trigger( 'toggle:insertButton' );\n\t\t\t} );\n\t\t}\n\n\t}\n);\n\n","var MediaDetailsView = BrightcoveView.extend(\n\t{\n\t\ttagName : 'div',\n\t\tclassName : 'media-details',\n\n\t\tattributes : function () {\n\t\t\treturn {\n\t\t\t\t'tabIndex' : 0,\n\t\t\t\t'role' : 'checkbox',\n\t\t\t\t'aria-label' : this.model.get( 'title' ),\n\t\t\t\t'aria-checked' : false,\n\t\t\t\t'data-id' : this.model.get( 'id' )\n\t\t\t};\n\t\t},\n\n\t\tevents : {\n\t\t\t'click .brightcove.edit.button' : 'triggerEditMedia',\n\t\t\t'click .brightcove.preview.button' : 'triggerPreviewMedia',\n\t\t\t'click .brightcove.back.button' : 'triggerCancelPreviewMedia'\n\t\t},\n\n\t\ttriggerEditMedia : function ( event ) {\n\t\t\tevent.preventDefault();\n\t\t\twpbc.broadcast.trigger( 'edit:media', this.model, this.mediaType );\n\t\t},\n\n\t\ttriggerPreviewMedia : function ( event ) {\n\t\t\tevent.preventDefault();\n\t\t\twpbc.broadcast.trigger( 'preview:media', this.model );\n\t\t},\n\n\t\ttriggerCancelPreviewMedia : function ( event ) {\n\t\t\twpbc.broadcast.trigger( 'cancelPreview:media', this.mediaType );\n\t\t},\n\n\t\tinitialize : function ( options ) {\n\t\t\toptions = options || {};\n\t\t\tthis.type = options.type ? options.type : 'grid';\n\t\t\tthis.mediaType = options.mediaType;\n\t\t\tthis.listenTo( wpbc.broadcast, 'insert:shortcode', this.insertShortcode );\n\t\t\tthis.listenTo( this.model, 'change', this.render );\n\t\t},\n\n\t\t/**\n\t\t * @returns {wp.media.view.Media} Returns itself to allow chaining\n\t\t */\n\t\trender : function ( options ) {\n\t\t\toptions = _.extend( {}, options, this.model.toJSON() );\n\t\t\toptions.duration = this.model.getReadableDuration();\n\t\t\toptions.updated_at_readable = this.model.getReadableDate( 'updated_at' );\n\t\t\toptions.created_at_readable = this.model.getReadableDate( 'created_at' );\n\t\t\toptions.account_name = this.model.getAccountName();\n\n\t\t\tthis.template = wp.template( 'brightcove-media-item-details-' + this.mediaType );\n\n\t\t\tthis.$el.html( this.template( options ) );\n\n\t\t\tthis.delegateEvents();\n\t\t\treturn this;\n\t\t},\n\n\t\t/* Prevent this.remove() from removing the container element for the details view */\n\t\tremove : function () {\n\t\t\tthis.undelegateEvents();\n\t\t\tthis.$el.empty();\n\t\t\tthis.stopListening();\n\t\t\treturn this;\n\t\t}\n\n\t}\n);\n\n","var MediaView = BrightcoveView.extend(\n\t{\n\t\ttagName : 'li',\n\t\tclassName : 'attachment brightcove',\n\n\t\tattributes : function () {\n\t\t\treturn {\n\t\t\t\t'tabIndex' : 0,\n\t\t\t\t'role' : 'checkbox',\n\t\t\t\t'aria-label' : this.model.get( 'title' ),\n\t\t\t\t'aria-checked' : false,\n\t\t\t\t'data-id' : this.model.get( 'id' )\n\t\t\t};\n\t\t},\n\n\t\tevents : {\n\t\t\t'click .attachment-preview' : 'toggleDetailView',\n\t\t\t'click .video-move-up' : 'videoMoveUp',\n\t\t\t'click .video-move-down' : 'videoMoveDown',\n\t\t\t'click .trash' : 'removeVideoFromPlaylist',\n\t\t\t'click .add-to-playlist' : 'videoAdd',\n\t\t\t'click .edit' : 'triggerEditMedia',\n\t\t\t'click .preview' : 'triggerPreviewMedia'\n\t\t},\n\n\t\ttriggerEditMedia : function ( event ) {\n\t\t\tevent.preventDefault();\n\t\t\twpbc.broadcast.trigger( 'edit:media', this.model );\n\t\t},\n\n\t\ttriggerPreviewMedia : function ( event ) {\n\t\t\tevent.preventDefault();\n\t\t\twpbc.broadcast.trigger( 'preview:media', this.model );\n\t\t},\n\n\t\tbuttons : {},\n\n\t\tinitialize : function ( options ) {\n\t\t\toptions = options || {};\n\t\t\tthis.type = options.type ? options.type : 'grid';\n\n\t\t\t// We only care when a change occurs\n\t\t\tthis.listenTo( this.model, 'change:view', function ( model, type ) {\n\t\t\t\tif ( this.type !== type ) {\n\t\t\t\t\tthis.type = type;\n\t\t\t\t\tthis.render();\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthis.render();\n\t\t},\n\n\t\trender : function () {\n\t\t\tvar options = this.model.toJSON();\n\t\t\toptions.duration = this.model.getReadableDuration();\n\t\t\toptions.updated_at_readable = this.model.getReadableDate( 'updated_at' );\n\t\t\toptions.account_name = this.model.getAccountName();\n\n\t\t\tif ( 'existingPlaylists' === options.viewType ) {\n\t\t\t\tthis.template = wp.template( 'brightcove-playlist-edit-video-in-playlist' );\n\t\t\t} else if ( 'libraryPlaylists' === options.viewType ) {\n\t\t\t\tthis.template = wp.template( 'brightcove-playlist-edit-video-in-library' );\n\t\t\t} else {\n\t\t\t\tthis.template = wp.template( 'brightcove-media-item-' + this.type );\n\t\t\t}\n\n\t\t\toptions.buttons = this.buttons;\n\n\t\t\tthis.$el.html( this.template( options ) );\n\n\t\t\tthis.$el.toggleClass( 'uploading', options.uploading );\n\n\t\t\treturn this;\n\t\t},\n\n\t\ttoggleDetailView : function () {\n\t\t\twpbc.broadcast.trigger( 'select:media', this );\n\t\t},\n\n\t\tvideoMoveUp : function () {\n\t\t\twpbc.broadcast.trigger( 'playlist:moveUp', this );\n\t\t},\n\n\t\tvideoMoveDown : function () {\n\t\t\twpbc.broadcast.trigger( 'playlist:moveDown', this );\n\t\t},\n\n\t\tvideoAdd : function () {\n\t\t\twpbc.broadcast.trigger( 'playlist:add', this );\n\t\t},\n\n\t\tremoveVideoFromPlaylist : function () {\n\t\t\twpbc.broadcast.trigger( 'playlist:remove', this );\n\t\t}\n\t}\n);\n","var PlaylistEditView = BrightcoveView.extend(\n\t{\n\t\ttagName : 'div',\n\t\tclassName : 'playlist-edit brightcove attachment-details',\n\t\ttemplate : wp.template( 'brightcove-playlist-edit' ),\n\n\t\tevents : {\n\t\t\t'click .brightcove.button.save-sync' : 'saveSync',\n\t\t\t'click .brightcove.playlist-back' : 'back',\n\t\t\t'change .brightcove-name' : 'updatedName'\n\t\t},\n\n\t\tdeleteVideo : function ( event ) {\n\t\t\tevent.preventDefault();\n\t\t\tthis.model.set( 'mediaType', 'videos' );\n\t\t\tthis.model.destroy();\n\t\t},\n\n\t\tupdatedName : function ( event ) {\n\t\t\tvar name = this.model.get( 'name' );\n\t\t\tif ( name !== event.target.value ) {\n\t\t\t\tthis.model.set( 'name', event.target.value );\n\t\t\t\tthis.model.save();\n\t\t\t}\n\t\t},\n\n\t\tback : function ( event ) {\n\t\t\tevent.preventDefault();\n\t\t\twpbc.broadcast.trigger( 'start:gridview' );\n\n\t\t},\n\n\t\tsaveSync : function ( event ) {\n\t\t\tevent.preventDefault();\n\t\t\tthis.model.set( 'name', this.$el.find( '.brightcove-name' ).val() );\n\t\t\tthis.model.set( 'description', this.$el.find( '.brightcove-description' ).val() );\n\t\t\tthis.model.set( 'long_description', this.$el.find( '.brightcove-long-description' ).val() );\n\t\t\tthis.model.set( 'tags', this.$el.find( '.brightcove-tags' ).val() );\n\t\t\tthis.model.set( 'mediaType', 'videos' );\n\t\t\tthis.model.save();\n\t\t},\n\n\t\tinitialize : function () {\n\t\t\tthis.listenTo( wpbc.broadcast, 'tabChange', function () {\n\t\t\t\t_.invoke( this.subviews, 'remove' );\n\t\t\t} );\n\t\t\twpbc.broadcast.trigger( 'spinner:off' );\n\t\t},\n\n\t\trender : function ( options ) {\n\t\t\toptions = this.model.toJSON();\n\t\t\tthis.$el.html( this.template( options ) );\n\t\t\tthis.spinner = this.$el.find( '.spinner' );\n\t\t\tvar playlistVideosContainer = this.$el.find( '.existing-videos' );\n\t\t\t/*\n\t\t\t 1. Create a media collection here to fetch each of the videos in options.video_ids.\n\t\t\t */\n\n\t\t\tif ( options.video_ids ) {\n\t\t\t\tthis.killPendingRequests();\n\t\t\t\tthis.playlistVideosView = new MediaCollectionView( {el : this.$el.find( '.existing-videos' ), videoIds : options.video_ids, activeAccount : this.model.get( 'account_id' ), mediaCollectionViewType : 'existingPlaylists', mediaType : 'playlists'} );\n\t\t\t\tthis.libraryVideosView = new MediaCollectionView( {el : this.$el.find( '.library-videos' ), excludeVideoIds : options.video_ids, activeAccount : this.model.get( 'account_id' ), mediaCollectionViewType : 'libraryPlaylists', mediaType : 'playlists'} );\n\t\t\t\tthis.registerSubview( this.playlistVideosView );\n\t\t\t\tthis.registerSubview( this.libraryVideosView );\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'playlist:changed', _.throttle( this.playlistChanged, 300 ) );\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'insert:shortcode', this.insertShortcode );\n\t\t\t}\n\t\t\tthis.listenTo( wpbc.broadcast, 'spinner:on', function () {\n\t\t\t\tthis.spinner.addClass( 'is-active' ).removeClass( 'hidden' );\n\t\t\t} );\n\t\t\tthis.listenTo( wpbc.broadcast, 'spinner:off', function () {\n\t\t\t\tthis.spinner.removeClass( 'is-active' ).addClass( 'hidden' );\n\t\t\t} );\n\t\t},\n\n\t\tplaylistChanged : function ( videoIds ) {\n\t\t\tthis.killPendingRequests();\n\t\t\tthis.model.set( 'video_ids', videoIds );\n\t\t\tthis.model.save();\n\t\t},\n\n\t\tkillPendingRequests : function () {\n\t\t\t// Kill all pending requests\n\t\t\t_.each( wpbc.requests, function ( request ) {\n\t\t\t\trequest.abort();\n\t\t\t} );\n\n\t\t\twpbc.requests = [];\n\t\t},\n\n\t}\n);\n","var UploadDetailsView = BrightcoveView.extend(\n\t{\n\t\tclassName : 'brightcove-pending-upload-details attachment-details',\n\t\ttagName : 'div',\n\t\ttemplate : wp.template( 'brightcove-pending-upload-details' ),\n\n\t\tevents : {\n\t\t\t'keyup .brightcove-name' : 'nameChanged',\n\t\t\t'keyup .brightcove-tags' : 'tagsChanged',\n\t\t\t'change .brightcove-media-source' : 'accountChanged'\n\t\t},\n\n\t\tinitialize : function ( options ) {\n\t\t\tthis.listenTo( wpbc.broadcast, 'pendingUpload:hideDetails', this.hide );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:fileUploaded', function ( file ) {\n\t\t\t\tif ( file.id === this.model.get( 'id' ) ) {\n\t\t\t\t\tthis.model.set( 'uploaded', true );\n\t\t\t\t\tthis.render();\n\t\t\t\t}\n\t\t\t} );\n\t\t\tthis.model.set( 'ingestSuccess', true );\n\t\t\tthis.model.set( 'uploadSuccess', true );\n\t\t},\n\n\t\tnameChanged : function ( event ) {\n\t\t\tthis.model.set( 'fileName', event.target.value );\n\t\t},\n\n\t\ttagsChanged : function ( event ) {\n\t\t\tthis.model.set( 'tags', event.target.value );\n\t\t},\n\n\t\taccountChanged : function ( event ) {\n\t\t\tthis.model.set( 'account', event.target.value );\n\t\t},\n\n\t\thide : function () {\n\t\t\tthis.$el.hide();\n\t\t},\n\n\t\trender : function ( options ) {\n\t\t\toptions = options || {};\n\t\t\toptions.fileName = this.model.get( 'fileName' );\n\t\t\toptions.tags = this.model.get( 'tags' );\n\t\t\toptions.size = this.model.humanReadableSize();\n\t\t\toptions.accounts = this.model.get( 'accounts' );\n\t\t\toptions.account = this.model.get( 'account' );\n\t\t\toptions.uploaded = this.model.get( 'uploaded' );\n\t\t\tthis.$el.html( this.template( options ) );\n\t\t}\n\n\t}\n);\n","UploadWindowView = BrightcoveView.extend(\n\t{\n\t\tclassName : 'uploader-window',\n\t\ttemplate : wp.template( 'brightcove-uploader-window' ),\n\n\t\tinitialize : function ( options ) {\n\t\t\t_.bindAll( this, 'uploaderFilesAdded' );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:queuedFilesAdded', this.hide );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:startUpload', this.uploaderStartUpload );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:clear', this.resetUploads );\n\t\t},\n\n\t\trender : function ( options ) {\n\t\t\tthis.$el.html( this.template( options ) );\n\t\t\t_.defer( _.bind( this.afterRender, this ) );\n\t\t},\n\n\t\tresetUploads : function () {\n\t\t\tif ( this.uploader && this.uploader.files ) {\n\t\t\t\tthis.uploader.files = []; // Reset pending uploads\n\t\t\t}\n\t\t},\n\n\t\tafterRender : function () {\n\t\t\tthis.uploader = new plupload.Uploader( _.defaults( this.options, wpbc.preload.plupload ) );\n\n\t\t\t// Uploader has neither .on nor .listenTo\n\t\t\tthis.uploader.added = this.uploaderFilesAdded;\n\t\t\tthis.uploader.progress = this.uploaderUploadProgress;\n\t\t\tthis.uploader.bind( 'FilesAdded', this.uploaderFilesAdded );\n\t\t\tthis.uploader.bind( 'UploadProgress', this.uploaderUploadProgress );\n\t\t\tthis.uploader.bind( 'BeforeUpload', this.uploaderBeforeUpload );\n\t\t\tthis.uploader.bind( 'FileUploaded', this.uploaderFileUploaded );\n\n\t\t\tthis.uploader.bind( 'init', this.uploaderAfterInit );\n\n\t\t\tthis.uploader.init();\n\t\t\t$( 'html' ).on( 'dragenter', _.bind( this.show, this ) );\n\t\t\t/* the following dropzone function code is taken from the wp.Uploader code */\n\t\t\tvar drop_element = wpbc.preload.plupload.drop_element.replace( /[^a-zA-Z0-9-]+/g, '' );\n\t\t\tvar dropzone = $( '#' + drop_element );\n\t\t\tdropzone.on( 'dropzone:leave', _.bind( this.hide, this ) );\n\t\t},\n\n\t\tuploaderAfterInit : function ( uploader ) {\n\t\t\tvar drop_element = wpbc.preload.plupload.drop_element.replace( /[^a-zA-Z0-9-]+/g, '' );\n\t\t\tvar timer, active, dragdrop,\n\t\t\t dropzone = $( '#' + drop_element );\n\n\t\t\tdragdrop = uploader.features.dragdrop;\n\n\t\t\t// Generate drag/drop helper classes.\n\t\t\tif ( ! dropzone ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdropzone.toggleClass( 'supports-drag-drop', ! ! dragdrop );\n\n\t\t\tif ( ! dragdrop ) {\n\t\t\t\treturn dropzone.unbind( '.wp-uploader' );\n\t\t\t}\n\n\t\t\t// 'dragenter' doesn't fire correctly, simulate it with a limited 'dragover'.\n\t\t\tdropzone.bind( 'dragover.wp-uploader', function () {\n\t\t\t\tif ( timer ) {\n\t\t\t\t\tclearTimeout( timer );\n\t\t\t\t}\n\n\t\t\t\tif ( active ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tdropzone.trigger( 'dropzone:enter' ).addClass( 'drag-over' );\n\t\t\t\tactive = true;\n\t\t\t} );\n\n\t\t\tdropzone.bind( 'dragleave.wp-uploader, drop.wp-uploader', function () {\n\t\t\t\t// Using an instant timer prevents the drag-over class from\n\t\t\t\t// being quickly removed and re-added when elements inside the\n\t\t\t\t// dropzone are repositioned.\n\t\t\t\t//\n\t\t\t\t// @see https://core.trac.wordpress.org/ticket/21705\n\t\t\t\ttimer = setTimeout( function () {\n\t\t\t\t\tactive = false;\n\t\t\t\t\tdropzone.trigger( 'dropzone:leave' ).removeClass( 'drag-over' );\n\t\t\t\t}, 0 );\n\t\t\t} );\n\t\t},\n\n\t\tshow : function () {\n\t\t\tvar $el = this.$el.show();\n\n\t\t\t// Ensure that the animation is triggered by waiting until\n\t\t\t// the transparent element is painted into the DOM.\n\t\t\t_.defer( function () {\n\t\t\t\t$el.css( {opacity : 1} );\n\t\t\t} );\n\t\t},\n\n\t\thide : function () {\n\t\t\tvar $el = this.$el.css( {opacity : 0} );\n\n\t\t\twp.media.transition( $el ).done( function () {\n\t\t\t\t// Transition end events are subject to race conditions.\n\t\t\t\t// Make sure that the value is set as intended.\n\t\t\t\tif ( '0' === $el.css( 'opacity' ) ) {\n\t\t\t\t\t$el.hide();\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// https://core.trac.wordpress.org/ticket/27341\n\t\t\t_.delay( function () {\n\t\t\t\tif ( '0' === $el.css( 'opacity' ) && $el.is( ':visible' ) ) {\n\t\t\t\t\t$el.hide();\n\t\t\t\t}\n\t\t\t}, 500 );\n\t\t},\n\n\t\tuploaderFilesAdded : function ( uploader, queuedFiles ) {\n\t\t\twpbc.broadcast.trigger( 'uploader:queuedFilesAdded', queuedFiles );\n\t\t},\n\n\t\tuploaderStartUpload : function () {\n\t\t\tthis.uploader.start();\n\t\t},\n\n\t\tuploaderUploadProgress : function ( up, file ) {\n\t\t\twpbc.broadcast.trigger( 'uploader:uploadProgress', file );\n\t\t},\n\n\t\tuploaderBeforeUpload : function ( up, file ) {\n\t\t\tup.settings.multipart_params = _.defaults(\n\t\t\t\twpbc.uploads[file.id],\n\t\t\t\twpbc.preload.plupload.multipart_params,\n\t\t\t\t{nonce : wpbc.preload.nonce}\n\t\t\t);\n\t\t},\n\n\t\tuploaderFileUploaded : function ( up, file, response ) {\n\t\t\tvar status = JSON.parse( response.response );\n\t\t\twpbc.broadcast.trigger( 'uploader:fileUploaded', file );\n\t\t\tif ( status.data.upload === 'success' && status.data.ingest === 'success' ) {\n\t\t\t\tif ( status.data.videoDetails ) {\n\t\t\t\t\t// Add newly uploaded file to preload list.\n\t\t\t\t\twpbc.broadcast.trigger( 'uploader:uploadedFileDetails', status.data.videoDetails );\n\t\t\t\t}\n\t\t\t\twpbc.broadcast.trigger( 'uploader:successfulUploadIngest', file );\n\t\t\t} else {\n\t\t\t\tfile.percent = 0;\n\t\t\t\tfile.status = plupload.UPLOADING;\n\t\t\t\tup.state = plupload.STARTED;\n\t\t\t\tup.trigger( 'StateChanged' );\n\t\t\t\twpbc.broadcast.trigger( 'uploader:failedUploadIngest', file );\n\t\t\t}\n\t\t}\n\t}\n);\n","var UploadView = BrightcoveView.extend(\n\t{\n\t\tclassName : 'brightcove-pending-upload',\n\t\ttagName : 'tr',\n\t\ttemplate : wp.template( 'brightcove-pending-upload' ),\n\n\t\tevents : {\n\t\t\t'click' : 'toggleRow'\n\t\t},\n\n\t\tinitialize : function () {\n\t\t\tthis.listenTo( wpbc.broadcast, 'pendingUpload:selectedRow', this.otherToggledRow );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:uploadProgress', this.uploadProgress );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:getParams', this.getParams );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:successfulUploadIngest', this.successfulUploadIngest );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:failedUploadIngest', this.failedUploadIngest );\n\n\t\t\tvar options = {\n\t\t\t\t'fileName' : this.model.get( 'name' ),\n\t\t\t\t'tags' : '',\n\t\t\t\t'accounts' : wpbc.preload.accounts, // All accounts.\n\t\t\t\t'account' : wpbc.preload.defaultAccount,\n\t\t\t\t'ingestSuccess' : false,\n\t\t\t\t'uploadSuccess' : false,\n\t\t\t\t'uploaded' : false\n\t\t\t};\n\n\t\t\tthis.model.set( options );\n\n\t\t\tthis.listenTo( this.model, 'change:fileName', this.render );\n\t\t\tthis.listenTo( this.model, 'change:account', this.render );\n\t\t},\n\n\t\trender : function ( options ) {\n\t\t\toptions = options || {};\n\t\t\toptions.fileName = this.model.get( 'fileName' );\n\t\t\toptions.size = this.model.humanReadableSize();\n\t\t\tvar sourceHash = this.model.get( 'account' );\n\t\t\toptions.accountName = wpbc.preload.accounts[sourceHash].account_name;\n\t\t\toptions.percent = this.model.get( 'percent' );\n\t\t\toptions.activeUpload = this.model.get( 'activeUpload' );\n\t\t\toptions.ingestSuccess = this.model.get( 'ingestSuccess' );\n\t\t\toptions.uploadSuccess = this.model.get( 'uploadSuccess' );\n\n\t\t\tthis.$el.html( this.template( options ) );\n\t\t\tif ( this.model.get( 'selected' ) ) {\n\t\t\t\tthis.$el.addClass( 'selected' );\n\t\t\t}\n\t\t\tif ( this.model.get( 'ingestSuccess' ) ) {\n\t\t\t\tthis.$el.addClass( 'ingest-success' );\n\t\t\t}\n\t\t\tif ( this.model.get( 'uploadSuccess' ) ) {\n\t\t\t\tthis.$el.addClass( 'upload-success' );\n\t\t\t}\n\t\t},\n\n\t\tgetParams : function ( fileId ) {\n\t\t\twpbc.broadcast.trigger( 'uploader:params', \"abcde\" );\n\t\t},\n\n\t\tfailedUploadIngest : function ( file ) {\n\t\t\t// Make sure we're acting on the right file.\n\t\t\tif ( file.id === this.model.get( 'id' ) ) {\n\t\t\t\twpbc.broadcast.trigger( 'uploader:errorMessage', wpbc.preload.messages.unableToUpload.replace( '%%s%%', this.model.get( 'fileName' ) ) );\n\t\t\t\tthis.render();\n\t\t\t}\n\t\t},\n\n\t\tsuccessfulUploadIngest : function ( file ) {\n\t\t\t// Make sure we're acting on the right file.\n\t\t\tif ( file.id === this.model.get( 'id' ) ) {\n\t\t\t\twpbc.broadcast.trigger( 'uploader:successMessage', wpbc.preload.messages.successUpload.replace( '%%s%%', this.model.get( 'fileName' ) ) );\n\t\t\t\tthis.render();\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Render if we're the active upload.\n\t\t * Re-render if we thought we were but we no longer are.\n\t\t * @param file Fired from UploadProgress on plUpload\n\t\t */\n\t\tuploadProgress : function ( file ) {\n\t\t\t// Make sure we're acting on the right file.\n\t\t\tif ( file.id === this.model.get( 'id' ) ) {\n\t\t\t\tthis.model.set( 'activeUpload', true );\n\t\t\t\tthis.model.set( 'percent', file.percent );\n\t\t\t\tthis.render();\n\t\t\t} else {\n\t\t\t\tif ( this.model.get( 'activeUpload' ) ) {\n\t\t\t\t\tthis.model.unset( 'activeUpload' );\n\t\t\t\t\tthis.render();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\ttoggleRow : function ( event ) {\n\t\t\tthis.$el.toggleClass( 'selected' );\n\t\t\tif ( this.$el.hasClass( 'selected' ) ) {\n\t\t\t\tthis.model.set( 'selected', true );\n\t\t\t\twpbc.broadcast.trigger( 'pendingUpload:selectedRow', this.cid );\n\t\t\t} else {\n\t\t\t\twpbc.broadcast.trigger( 'pendingUpload:hideDetails', this.cid );\n\t\t\t}\n\t\t},\n\n\t\totherToggledRow : function ( cid ) {\n\t\t\t// Ignore broadcast from self\n\t\t\tif ( cid !== this.cid ) {\n\t\t\t\tthis.$el.removeClass( 'selected' );\n\t\t\t\tthis.model.unset( 'selected' );\n\t\t\t} else {\n\t\t\t\twpbc.broadcast.trigger( 'pendingUpload:selectedItem', this.model );\n\t\t\t}\n\t\t}\n\t}\n);\n","var VideoEditView = BrightcoveView.extend(\n\t{\n\t\ttagName : 'div',\n\t\tclassName : 'video-edit brightcove attachment-details',\n\t\ttemplate : wp.template( 'brightcove-video-edit' ),\n\n\t\tevents : {\n\t\t\t'click .brightcove.button.save-sync' : 'saveSync',\n\t\t\t'click .brightcove.delete' : 'deleteVideo',\n\t\t\t'click .brightcove.button.back' : 'back',\n\t\t\t'click .setting .button' : 'openMediaManager',\n\t\t\t'click .attachment .check' : 'removeAttachment',\n\t\t\t'click .caption-secondary-fields .delete' : 'removeCaptionRow',\n\t\t\t'click .add-remote-caption' : 'addCaptionRow'\n\t\t},\n\n\t\tback : function ( event ) {\n\t\t\tevent.preventDefault();\n\n\t\t\t// Exit if the 'button' is disabled.\n\t\t\tif ( $( event.currentTarget ).hasClass( 'disabled' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\twpbc.broadcast.trigger( 'start:gridview' );\n\t\t},\n\n\t\tdeleteVideo : function () {\n\t\t\tif ( confirm( wpbc.preload.messages.confirmDelete ) ) {\n\t\t\t\twpbc.broadcast.trigger( 'spinner:on' );\n\t\t\t\tthis.model.set( 'mediaType', 'videos' );\n\t\t\t\tthis.model.destroy();\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Allow the user to attach a video still or thumbnail.\n\t\t *\n\t\t * @param {Event} evnt\n\t\t */\n\t\topenMediaManager: function ( evnt ) {\n\t\t\tevnt.preventDefault();\n\n\t\t\tvar elem = $( evnt.currentTarget ).parents( '.setting' ),\n\t\t\t\teditor = elem.data('editor'),\n\t\t\t\tmediaManager = wp.media.frames.brightcove = wp.media(),\n\t\t\t\tthat = this,\n\t\t\t\toptions = {\n\t\t\t\t\tstate: 'insert',\n\t\t\t\t\ttitle: wp.media.view.l10n.addMedia,\n\t\t\t\t\tmultiple: false\n\t\t\t\t};\n\n\t\t\t// Open the media manager\n\t\t\tmediaManager.open( editor, options );\n\n\t\t\t// Listen for selection of media\n\t\t\tmediaManager.on( 'select', function() {\n\t\t\t\tvar media = mediaManager.state().get( 'selection' ).first().toJSON(),\n\t\t\t\t\tfield = $( evnt ).parents( '.setting' );\n\n\t\t\t\t// Set the selected attachment to the correct field\n\t\t\t\tthat.setAttachment( media, field );\n\n\t\t\t\t// Make this action available to other areas of the application\n\t\t\t\twpbc.broadcast.trigger( 'media:selected' );\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * Set the hidden input to the ID of the selected attachment.\n\t\t *\n\t\t * @param {Object} media\n\t\t * @param {String} field\n\t\t * @returns {boolean}\n\t\t */\n\t\tsetAttachment: function( media, field ) {\n\t\t\tvar field = field.prevObject[0].currentTarget,\n\t\t\t\tfield = $( field ).prev( 'input' ),\n\t\t\t\tattachment = field.parents( '.attachment' ),\n\t\t\t\tpreview = attachment.find( '.-image' );\n\n\t\t\t// Perform different setup actions based on the type of upload\n\t\t\tif ( attachment.context.className.indexOf( 'captions' ) > -1 ) {\n\t\t\t\t// Executed if the user is uploading a closed caption\n\t\t\t\tif ( 'vtt' === media.subtype ) {\n\t\t\t\t\tthis.addCaptionRow( false, media );\n\t\t\t\t} else {\n\t\t\t\t\tvar template = wp.template( 'brightcove-badformat-notice' );\n\n\t\t\t\t\t// Throw a notice to the user that the file is not the correct format\n\t\t\t\t\t$( '.brightcove-media-videos' ).prepend( template );\n\n\t\t\t\t\t// Allow the user to dismiss the notice\n\t\t\t\t\t$( '.badformat.notice-dismiss' ).on( 'click', function() {\n\t\t\t\t\t\t$( '.notice.badformat' ).first().fadeOut( 500, function() {\n\t\t\t\t\t\t\t$( this ).remove();\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Executed if the user is uploading a poster image or thumbnail\n\t\t\t\tvar selectedMedia = {\n\t\t\t\t\turl: media.sizes.full.url,\n\t\t\t\t\twidth: media.sizes.full.width,\n\t\t\t\t\theight: media.sizes.full.height\n\t\t\t\t};\n\n\t\t\t\t// Set up our preview image\n\t\t\t\tvar image = document.createElement( 'img' );\n\n\t\t\t\t// Set image properties\n\t\t\t\timage.src = media.sizes.full.url;\n\t\t\t\timage.className = 'thumbnail';\n\n\t\t\t\t// Display a preview image\n\t\t\t\tattachment.addClass( 'active' );\n\t\t\t\tpreview.html( image ); // .html() considered okay because auth is required to view this screen\n\t\t\t}\n\n\t\t\t// Add our meta to the hidden field\n\t\t\tfield.val( JSON.stringify( selectedMedia ) );\n\t\t},\n\n\t\t/**\n\t\t * Allow the user to remove media from a given field.\n\t\t *\n\t\t * @param {Event} evnt\n\t\t * @returns {boolean}\n\t\t */\n\t\tremoveAttachment: function( evnt ) {\n\t\t\tvar container = $( evnt.currentTarget ).parents( '.attachment' ),\n\t\t\t\timage = container.find( '.-image' ),\n\t\t\t\tfield = container.next( 'input' );\n\n\t\t\t// Empty the field\n\t\t\tfield.val( '' );\n\n\t\t\t// Remove the preview image\n\t\t\tcontainer.removeClass( 'active' );\n\t\t\timage.empty();\n\t\t},\n\n\t\t/**\n\t\t * Add a caption row\n\t\t *\n\t\t * @param {Event} evnt\n\t\t * @param {Object} media\n\t\t */\n\t\taddCaptionRow: function( evnt, media ) {\n\t\t\t// If using the add remote file link, prevent the page from jumping to the top\n\t\t\tif ( evnt ) {\n\t\t\t\tevnt.preventDefault();\n\t\t\t}\n\n\t\t\tvar source = undefined;\n\t\t\tif ( media ) {\n\t\t\t\tsource = media.url;\n\t\t\t}\n\n\t\t\tthis.addCaption( source );\n\t\t},\n\n\t\taddCaption: function( source, language, label ) {\n\t\t\tvar newRow = $( document.getElementById( 'js-caption-empty-row' ) ).clone(),\n\t\t\t\tcontainer = document.getElementById( 'js-captions' ),\n\t\t\t\tcaptionUrl = document.getElementById( 'js-caption-url' );\n\n\t\t\t// Clean up our cloned row\n\t\t\tnewRow.find( 'input' ).prop( 'disabled', false );\n\t\t\tnewRow.removeAttr( 'id' );\n\t\t\tnewRow.removeClass( 'empty-row' );\n\n\t\t\tif ( source ) {\n\t\t\t\tnewRow.find( '.brightcove-captions' ).val( source );\n\t\t\t}\n\n\t\t\tif ( language ) {\n\t\t\t\tnewRow.find( '.brightcove-captions-language' ).val( language );\n\t\t\t}\n\n\t\t\tif ( label ) {\n\t\t\t\tnewRow.find( '.brightcove-captions-label' ).val( label );\n\t\t\t}\n\n\t\t\t// Append our new row to the container\n\t\t\t$( container ).append( newRow );\n\n\t\t\t// Update the context button text\n\t\t\tthis.updateCaptionText();\n\t\t},\n\n\t\t/**\n\t\t * Remove a caption\n\t\t *\n\t\t * @param {Event} evnt\n\t\t */\n\t\tremoveCaptionRow: function( evnt ) {\n\t\t\tevnt.preventDefault();\n\n\t\t\tvar caption = evnt.currentTarget,\n\t\t\t\tcontainer = $( caption ).parents( '.caption-repeater' ),\n\t\t\t\tsource = container.find( '.brightcove-captions' ),\n\t\t\t\tlanguage = container.find( '.brightcove-captions-launguage' ),\n\t\t\t\tlabel = container.find( '.brightcove-captions-label' );\n\n\t\t\t// Empty the input fields\n\t\t\t$( source ).val( '' );\n\t\t\t$( language ).val( '' );\n\t\t\t$( label ).val( '' );\n\n\t\t\t// Remove the container entirely\n\t\t\tcontainer.remove();\n\n\t\t\t// Update the context button text\n\t\t\tthis.updateCaptionText();\n\t\t},\n\n\t\t/**\n\t\t * Updates the caption text based on number of captions\n\t\t */\n\t\tupdateCaptionText: function() {\n\t\t\tvar button = $( '.captions .button-secondary' ),\n\t\t\t\tlink = $( '.add-remote-caption' );\n\n\t\t\tif ( 1 < document.getElementsByClassName( 'caption-repeater' ).length ) {\n\t\t\t\tbutton.text( wpbc.str_addcaption );\n\t\t\t\tlink.text( wpbc.str_addremote );\n\t\t\t} else {\n\t\t\t\tbutton.text( wpbc.str_selectfile );\n\t\t\t\tlink.text( wpbc.str_useremote );\n\t\t\t}\n\t\t},\n\n\t\tsaveSync : function ( evnt ) {\n\t\t\tevnt.preventDefault();\n\n\t\t\tvar $mediaFrame = $( evnt.currentTarget ).parents( '.media-modal' ),\n\t\t\t\t$allButtons = $mediaFrame.find( '.button, .button-link'),\n\t\t\t\tSELF = this;\n\n\t\t\t// Exit if the 'button' is disabled.\n\t\t\tif ( $allButtons.hasClass( 'disabled' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Disable the button for the duration of the request.\n\t\t\t$allButtons.addClass( 'disabled' );\n\n\t\t\t// Hide the delete link for the duration of the request.\n\t\t\t$mediaFrame.find( '.delete-action' ).hide();\n\n\t\t\twpbc.broadcast.trigger( 'spinner:on' );\n\t\t\tthis.model.set( 'name', this.$el.find( '.brightcove-name' ).val() );\n\t\t\tthis.model.set( 'description', this.$el.find( '.brightcove-description' ).val() );\n\t\t\tthis.model.set( 'long_description', this.$el.find( '.brightcove-long-description' ).val() );\n\n\t\t\t// Trim whitespace and commas from tags beginning/end.\n\t\t\tthis.model.set( 'tags', this.$el.find( '.brightcove-tags' ).val().trim().replace(/(^,)|(,$)/g, '' ) );\n\t\t\tthis.model.set( 'height', this.$el.find( '.brightcove-height' ).val() );\n\t\t\tthis.model.set( 'width', this.$el.find( '.brightcove-width' ).val() );\n\t\t\tthis.model.set( 'mediaType', 'videos' );\n\t\t\tthis.model.set( 'poster', this.$el.find( '.brightcove-poster' ).val() );\n\t\t\tthis.model.set( 'thumbnail', this.$el.find( '.brightcove-thumbnail' ).val() );\n\n\t\t\t// Captions\n\t\t\tvar captions = [];\n\t\t\tthis.$el.find( '.caption-repeater.repeater-row' ).not( '.empty-row' ).each( function() {\n\t\t\t\tvar caption = $( this ),\n\t\t\t\t\tfileName = caption.find( '.brightcove-captions' ).val(),\n\t\t\t\t\textension = fileName.split( '?' )[0], // if the URL has a query string, strip it before validating filetype\n\t\t\t\t\textension = extension.split( '.' ).pop();\n\n\t\t\t\tif ( 'vtt' === extension ) {\n\t\t\t\t\tcaptions.push(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'source' : fileName,\n\t\t\t\t\t\t\t'language': caption.find( '.brightcove-captions-language' ).val(),\n\t\t\t\t\t\t\t'label' : caption.find( '.brightcove-captions-label' ).val()\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tvar template = wp.template( 'brightcove-badformat-notice' );\n\n\t\t\t\t\t// Throw a notice to the user that the file is not the correct format\n\t\t\t\t\t$( '.brightcove-media-videos' ).prepend( template );\n\n\t\t\t\t\t// Allow the user to dismiss the notice\n\t\t\t\t\t$( '.badformat.notice-dismiss' ).on( 'click', function() {\n\t\t\t\t\t\t$( '.notice.badformat' ).first().fadeOut( 500, function() {\n\t\t\t\t\t\t\t$( this ).remove();\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} );\n\t\t\tthis.model.set( 'captions', captions );\n\n\t\t\t// Custom fields\n\t\t\tvar custom = {},\n\t\t\t\tcustom_fields = this.model.get( 'custom' );\n\n\t\t\t_.each( this.$el.find( '.brightcove-custom-string, .brightcove-custom-enum' ), function( item ) {\n\t\t\t\tvar key = item.getAttribute( 'data-id' ),\n\t\t\t\t\tval = item.value.trim();\n\n\t\t\t\tif ( '' !== val ) {\n\t\t\t\t\tcustom[ key ] = val;\n\n\t\t\t\t\tvar obj = _.find( custom_fields, function( item ) { return item.id == key } );\n\t\t\t\t\tobj.value = val;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthis.model.set( 'custom_fields', custom );\n\t\t\tthis.model.set( 'custom', custom_fields );\n\n\t\t\tthis.model.save()\n\t\t\t\t.done( function() {\n\t\t\t\t\tif ( $mediaFrame.length > 0 ) {\n\t\t\t\t\t\t// Update the tag dropdown and wpbc.preload.tags with any new tag values.\n\t\t\t\t\t\tvar tagInput = $mediaFrame.find( '.brightcove-tags' ).val(),\n\t\t\t\t\t\t\teditTags,\n\t\t\t\t\t\t\tnewTags;\n\n\t\t\t\t\t\tif ( tagInput ) {\n\t\t\t\t\t\t\teditTags = tagInput.split( ',' );\n\t\t\t\t\t\t\tnewTags = _.difference( editTags, wpbc.preload.tags );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Add any new tags to the tags object and the dropdown.\n\t\t\t\t\t\t_.each( newTags, function( newTag ){\n\t\t\t\t\t\t\tnewTag = newTag.trim();\n\t\t\t\t\t\t\tif ( '' !== newTag ) {\n\t\t\t\t\t\t\t\twpbc.preload.tags.push( newTag );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t\twpbc.preload.tags.sort();\n\t\t\t\t\t}\n\t\t\t\t} )\n\t\t\t\t.always( function() {\n\t\t\t\t\t// Re-enable the button when the request has completed.\n\t\t\t\t\t$allButtons.removeClass( 'disabled' );\n\n\t\t\t\t\t// Show the delete link.\n\t\t\t\t\t$mediaFrame.find( '.delete-action' ).show();\n\t\t\t\t} );\n\n\t\t\t// Hide the video edit screen after save.\n\t\t\twpbc.broadcast.trigger( 'start:gridview' );\n\t\t},\n\n\t\t/**\n\t\t * Render the actual view for the Video Edit screen.\n\t\t *\n\t\t * @param {Object} options\n\t\t */\n\t\trender : function ( options ) {\n\t\t\tthis.listenTo( wpbc.broadcast, 'save:media', this.saveSync );\n\t\t\tthis.listenTo( wpbc.broadcast, 'back:editvideo', this.back );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'insert:shortcode', this.insertShortcode );\n\t\t\toptions = this.model.toJSON();\n\n\t\t\t// Render the model into the template\n\t\t\tthis.$el.html( this.template( options ) );\n\n\t\t\t// Render custom fields into the template\n\t\t\tvar customContainer = this.$el.find( '#brightcove-custom-fields' ),\n\t\t\t\tstringTmp = wp.template( 'brightcove-video-edit-custom-string' ),\n\t\t\t\tenumTmp = wp.template( 'brightcove-video-edit-custom-enum' );\n\n\t\t\t_.each( this.model.get('custom'), function( custom ) {\n\t\t\t\tif ( '_change_history' === custom.id ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tswitch( custom.type ) {\n\t\t\t\t\tcase 'string':\n\t\t\t\t\t\tcustomContainer.append( stringTmp( custom ) );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'enum':\n\t\t\t\t\t\tcustomContainer.append( enumTmp( custom ) );\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Render the change history\n\t\t\tvar history = this.model.get( 'history' );\n\n\t\t\tif ( history !== undefined ) {\n\t\t\t\tvar historyStr = '';\n\n\t\t\t\t// Parse our fetched JSON object\n\t\t\t\thistory = JSON.parse( history );\n\n\t\t\t\t_.each( history, function( item ) {\n\t\t\t\t\thistoryStr += item.user + ' - ' + item.time + '\\n';\n\t\t\t\t} );\n\n\t\t\t\tif ( '' !== historyStr ) {\n\t\t\t\t\tthis.$el.find( 'textarea.brightcove-change-history' ).val( historyStr );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Configure a spinner to provide feedback during updates\n\t\t\tvar spinner = this.$el.find( '.spinner' );\n\t\t\tthis.listenTo( wpbc.broadcast, 'spinner:on', function () {\n\t\t\t\tspinner.addClass( 'is-active' ).removeClass( 'hidden' );\n\t\t\t} );\n\t\t\tthis.listenTo( wpbc.broadcast, 'spinner:off', function () {\n\t\t\t\tspinner.removeClass( 'is-active' ).addClass( 'hidden' );\n\t\t\t} );\n\n\t\t\t// If there's already a poster or thumbnail set, display it\n\t\t\tif ( this.model.get( 'poster' ) ) {\n\t\t\t\tthis.displayAttachment( 'poster' );\n\t\t\t}\n\n\t\t\tif ( this.model.get( 'thumbnail' ) ) {\n\t\t\t\tthis.displayAttachment( 'thumbnail' );\n\t\t\t}\n\n\t\t\t// Captions\n\t\t\tif ( this.model.get( 'captions' ) ) {\n\t\t\t\tvar captions = this.model.get( 'captions' );\n\t\t\t\tfor ( var i = 0, l = captions.length; i < l; i++ ) {\n\t\t\t\t\tvar caption = captions[i];\n\t\t\t\t\tthis.addCaption( caption.source, caption.language, caption.label );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n);","var VideoPreviewView = BrightcoveView.extend(\n\t{\n\t\ttagName : 'div',\n\t\tclassName : 'video-preview brightcove',\n\t\ttemplate : wp.template( 'brightcove-video-preview' ),\n\n\t\trender : function ( options ) {\n\t\t\toptions = options || {};\n\t\t\toptions.id = this.model.get( 'id' );\n\t\t\toptions.account_id = this.model.get( 'account_id' );\n\t\t\tthis.$el.html( this.template( options ) );\n\t\t\tthis.listenTo( wpbc.broadcast, 'insert:shortcode', this.insertShortcode );\n\t\t}\n\n\t}\n);\n","var MediaCollectionView = BrightcoveView.extend(\n\t{\n\t\ttagName : 'ul',\n\t\tclassName : 'brightcove-media attachments',\n\n\t\tattributes : {\n\t\t\ttabIndex : - 1\n\t\t},\n\n\t\tevents : {\n\t\t\t/* scroll fired on playlist edits, but for media grids it's handled by firing 'scroll:mediaGrid' in brightcove-media-manager */\n\t\t\t'scroll' : 'scrollHandler'\n\t\t},\n\n\t\tloadMoreMediaItems : function () {\n\t\t\tthis.fetchingResults = true;\n\t\t\tthis.collection.fetch();\n\t\t},\n\n\t\tscrollHandler : function () {\n\t\t\t// We don't fetch for videos in an existing playlist\n\t\t\tif ( 'existingPlaylists' === this.collection.mediaCollectionViewType ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar scrollThreshold = 200; // How many px from bottom until we fetch the next page.\n\t\t\tif ( ! this.fetchingResults && this.el.scrollTop + this.el.clientHeight + scrollThreshold > this.el.scrollHeight ) {\n\t\t\t\tthis.collection.pageNumber += 1;\n\t\t\t\tthis.loadMoreMediaItems();\n\t\t\t}\n\t\t},\n\n\t\tinitialize : function ( options ) {\n\t\t\tthis.fetchingResults = false;\n\t\t\tthis.listenTo( wpbc.broadcast, 'fetch:finished', function () {\n\t\t\t\tthis.fetchingResults = false;\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'fetch:apiError', this.handleAPIError );\n\n\t\t\tvar scrollRefreshSensitivity = wp.media.isTouchDevice ? 300 : 200;\n\t\t\tthis.scrollHandler = _.chain( this.scrollHandler ).bind( this ).throttle( scrollRefreshSensitivity ).value();\n\t\t\tthis.listenTo( wpbc.broadcast, 'scroll:mediaGrid', this.scrollHandler );\n\t\t\toptions = options || {};\n\t\t\tthis.el.id = _.uniqueId( '__attachments-view-' );\n\n\t\t\t// Occurs on playlist edit, existing videos.\n\t\t\tif ( ! this.collection && options.videoIds ) {\n\t\t\t\tthis.collection = new MediaCollection( null, {videoIds : options.videoIds, activeAccount : options.activeAccount, mediaCollectionViewType : options.mediaCollectionViewType} );\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'playlist:moveUp', this.videoMoveUp );\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'playlist:moveDown', this.videoMoveDown );\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'playlist:remove', this.videoRemove );\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'playlist:add', this.videoAdd );\n\t\t\t} else if ( ! this.collection && 'libraryPlaylists' === options.mediaCollectionViewType ) {\n\t\t\t\tthis.collection = new MediaCollection( null, {excludeVideoIds : options.excludeVideoIds, activeAccount : options.activeAccount, mediaCollectionViewType : options.mediaCollectionViewType} );\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'playlist:remove', this.videoRemove );\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'playlist:add', this.videoAdd );\n\t\t\t}\n\n\t\t\t_.defaults( this.options, {\n\t\t\t\trefreshSensitivity : wp.media.isTouchDevice ? 300 : 200,\n\t\t\t\trefreshThreshold : 3,\n\t\t\t\tVideoView : wp.media.view.Video,\n\t\t\t\tsortable : false,\n\t\t\t\tresize : true,\n\t\t\t\tidealColumnWidth : 202\n\t\t\t} );\n\n\t\t\tthis._viewsByCid = {};\n\t\t\tthis.resizeEvent = 'resize.media-modal-columns';\n\n\t\t\tthis.listenTo( this.collection, 'add', function ( media ) {\n\t\t\t\tthis.views.add( this.createMediaView( media ), {\n\t\t\t\t\tat : this.collection.indexOf( media )\n\t\t\t\t} );\n\t\t\t}, this );\n\n\t\t\tthis.listenTo( this.collection, 'remove', function ( media ) {\n\t\t\t\tif ( media ) {\n\t\t\t\t\tif ( media.view ) {\n\t\t\t\t\t\tmedia.view.remove();\n\t\t\t\t\t} else if ( media.cid && this._viewsByCid[media.cid] ) {\n\t\t\t\t\t\tthis._viewsByCid[media.cid].remove();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, this );\n\n\t\t\tthis.listenTo( this.collection, 'reset', this.render );\n\n\t\t\t// Throttle the scroll handler and bind this.\n\t\t\tthis.scroll = _.chain( this.scroll ).bind( this ).throttle( this.options.refreshSensitivity ).value();\n\n\t\t\tthis.options.scrollElement = this.options.scrollElement || this.el;\n\t\t\t$( this.options.scrollElement ).on( 'scroll', this.scroll );\n\n\t\t\t_.bindAll( this, 'setColumns' );\n\n\t\t\tif ( this.options.resize ) {\n\t\t\t\tthis.on( 'ready', this.bindEvents );\n\t\t\t\t// this.controller.on('open', this.setColumns);\n\n\t\t\t\t// Call this.setColumns() after this view has been rendered in the DOM so\n\t\t\t\t// attachments get proper width applied.\n\t\t\t\t_.defer( this.setColumns, this );\n\t\t\t}\n\t\t},\n\n\t\thandleAPIError: function() {\n\t\t\tthis.el.innerText = wpbc.str_apifailure;\n\t\t},\n\n\t\trender : function () {\n\t\t\t// hide the spinner when content has finished loading\n\t\t\tthis.listenTo( wpbc.broadcast, 'spinner:off', function() {\n\t\t\t\t$( '#js-media-loading' ).css( 'display', 'none' );\n\t\t\t} );\n\n\t\t\tthis.$el.empty();\n\t\t\tthis.collection.each( function ( mediaModel ) {\n\t\t\t\tmediaModel.view = new MediaView( {model : mediaModel} );\n\t\t\t\tthis.registerSubview( mediaModel.view );\n\t\t\t\tmediaModel.view.render();\n\t\t\t\tmediaModel.view.delegateEvents();\n\t\t\t\tmediaModel.view.$el.appendTo( this.$el );\n\n\t\t\t\twpbc.broadcast.trigger( 'spinner:off' );\n\t\t\t}, this );\n\t\t},\n\n\t\tsetViewType : function ( type ) {\n\t\t\tthis.collection.each( function ( mediaModel ) {\n\t\t\t\tmediaModel.set( 'view', type );\n\t\t\t}, this );\n\t\t},\n\n\t\tbindEvents : function () {\n\t\t\tthis.$window.off( this.resizeEvent ).on( this.resizeEvent, _.debounce( this.setColumns, 50 ) );\n\t\t},\n\n\t\tsetColumns : function () {\n\t\t\tvar prev = this.columns,\n\t\t\t width = this.$el.width();\n\n\t\t\tif ( width ) {\n\t\t\t\tthis.columns = Math.min( Math.round( width / this.options.idealColumnWidth ), 12 ) || 1;\n\n\t\t\t\tif ( ! prev || prev !== this.columns ) {\n\t\t\t\t\tthis.$el.closest( '.media-frame-content' ).attr( 'data-columns', this.columns );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @param {wp.media.model.Video} attachment\n\t\t * @returns {wp.media.View}\n\t\t */\n\t\tcreateMediaView : function ( attachment ) {\n\t\t\tattachment.set( 'viewType', this.collection.mediaCollectionViewType );\n\t\t\tvar view = new MediaView( {\n\t\t\t\tcontroller : this.controller,\n\t\t\t\tmodel : attachment,\n\t\t\t\tcollection : this.collection,\n\t\t\t\tselection : this.options.selection\n\t\t\t} );\n\t\t\tthis.registerSubview( view );\n\t\t\tthis._viewsByCid[attachment.cid] = view;\n\t\t\treturn view;\n\t\t},\n\n\t\tprepare : function () {\n\t\t\t// Create all of the Video views, and replace\n\t\t\t// the list in a single DOM operation.\n\t\t\tif ( this.collection.length ) {\n\t\t\t\tthis.views.set( this.collection.map( this.createMediaView, this ) );\n\n\t\t\t\t// If there are no elements, clear the views and load some.\n\t\t\t} else {\n\t\t\t\tthis.views.unset();\n\t\t\t\tthis.collection.more().done( this.scroll );\n\t\t\t}\n\t\t},\n\n\t\tready : function () {\n\t\t\t// Trigger the scroll event to check if we're within the\n\t\t\t// threshold to query for additional attachments.\n\t\t\tthis.scroll();\n\t\t},\n\n\t\tscroll : function () {\n\t\t\tvar view = this,\n\t\t\t el = this.options.scrollElement,\n\t\t\t scrollTop = el.scrollTop,\n\t\t\t toolbar;\n\n\t\t\t// The scroll event occurs on the document, but the element\n\t\t\t// that should be checked is the document body.\n\t\t\tif ( el === document ) {\n\t\t\t\tel = document.body;\n\t\t\t\tscrollTop = $( document ).scrollTop();\n\t\t\t}\n\n\t\t\tif ( 'function' !== this.collection.hasMore || ! $( el ).is( ':visible' ) || ! this.collection.hasMore() ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttoolbar = this.views.parent.toolbar;\n\n\t\t\t// Show the spinner only if we are close to the bottom.\n\t\t\tif ( el.scrollHeight - ( scrollTop + el.clientHeight ) < el.clientHeight / 3 ) {\n\t\t\t\ttoolbar.get( 'spinner' ).show();\n\t\t\t}\n\n\t\t\tif ( el.scrollHeight < scrollTop + ( el.clientHeight * this.options.refreshThreshold ) ) {\n\t\t\t\tthis.collection.more().done( function () {\n\t\t\t\t\tview.scroll();\n\t\t\t\t\ttoolbar.get( 'spinner' ).hide();\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\n\t\tvideoMoveUp : function ( videoView ) {\n\t\t\tvar model = videoView.model;\n\t\t\tvar index = this.collection.indexOf( model );\n\t\t\tif ( index > 0 ) {\n\t\t\t\tthis.collection.remove( model, {silent : true} ); // silence this to stop excess event triggers\n\t\t\t\tthis.collection.add( model, {at : index - 1} );\n\t\t\t}\n\t\t\tthis.render();\n\t\t\tthis.playlistChanged();\n\t\t},\n\n\t\tvideoMoveDown : function ( videoView ) {\n\t\t\tvar model = videoView.model;\n\t\t\tvar index = this.collection.indexOf( model );\n\t\t\tif ( index < this.collection.models.length ) {\n\t\t\t\tthis.collection.remove( model, {silent : true} ); // silence this to stop excess event triggers\n\t\t\t\tthis.collection.add( model, {at : index + 1} );\n\t\t\t}\n\t\t\tthis.render();\n\t\t\tthis.playlistChanged();\n\t\t},\n\n\t\tvideoRemove : function ( videoView ) {\n\t\t\tvar model = videoView.model;\n\t\t\tif ( - 1 === this.collection.indexOf( model ) ) {\n\t\t\t\t// this is the library model\n\t\t\t\tthis.collection.add( model );\n\t\t\t} else {\n\t\t\t\t// this is the playlist collection\n\t\t\t\tthis.collection.remove( model, {silent : true} ); // silence this to stop excess event triggers\n\t\t\t\tthis.playlistChanged();\n\t\t\t}\n\t\t\tthis.render();\n\t\t},\n\n\t\tvideoAdd : function ( videoView ) {\n\t\t\t/**\n\t\t\t * Video add is heard by two collections, the one containing the videos for the playlists\n\t\t\t * and the one containing the videos that we can add to them.\n\t\t\t * We handle the add by adding from the collection where it doesn't exist (the playlist) and removing\n\t\t\t * where it does (the library).\n\t\t\t */\n\t\t\tvar model = videoView.model;\n\t\t\tif ( - 1 === this.collection.indexOf( model ) ) {\n\t\t\t\t// this is the playlist collection\n\t\t\t\tthis.collection.add( model );\n\t\t\t\tthis.playlistChanged();\n\t\t\t} else {\n\t\t\t\t// this is the library model\n\t\t\t\tthis.collection.remove( model, {silent : true} );\n\t\t\t\tthis.render();\n\t\t\t}\n\t\t},\n\n\t\tplaylistChanged : function () {\n\t\t\tvar videoIds = [];\n\t\t\tthis.collection.each( function ( video ) {\n\t\t\t\tvideoIds.push( video.id );\n\t\t\t} );\n\t\t\tthis.videoIds = videoIds;\n\t\t\t// var syncPlaylist = _.throttle(_.bind(this.syncPlaylist, this), 2000);\n\t\t\tthis.syncPlaylist();\n\t\t},\n\n\t\tsyncPlaylist : function () {\n\t\t\twpbc.broadcast.trigger( 'playlist:changed', this.videoIds );\n\t\t}\n\n\t}\n);\n\n","\tvar App = {\n\t\trenderMediaManager: function(mediaType) {\n\t\t\tvar brightcoveMediaContainer = $('.brightcove-media-' + mediaType);\n\t\t\tvar content_ifr = document.getElementById('content_ifr');\n\t\t\tif ( brightcoveMediaContainer.length ) {\n\t\t\t\tvar brightcoveMediaManager = new BrightcoveMediaManagerView({\n\t\t\t\t\tel: brightcoveMediaContainer,\n\t\t\t\t\tdate: 'all',\n\t\t\t\t\tembedType: 'page',\n\t\t\t\t\tpreload: true,\n\t\t\t\t\tmode: 'manager',\n\t\t\t\t\tsearch: '',\n\t\t\t\t\taccounts: 'all',\n\t\t\t\t\ttags: 'all',\n\t\t\t\t\tmediaType: mediaType,\n\t\t\t\t\tviewType: 'grid'\n\t\t\t\t});\n\t\t\t\tbrightcoveMediaManager.render();\n\t\t\t}\n\t\t},\n\n\t\tload: function() {\n\t\t\twpbc.requests = [];\n\t\t\twpbc.responses = {};\n\t\t\twpbc.broadcast = _.extend({}, Backbone.Events); // pubSub object\n\n\t\t\tthis.loaded();\n\n\t\t},\n\n\t\tloaded: function() {\n\t\t\tvar brightcoveModalContainer = $('.brightcove-modal');\n\n\t\t\tvar router = new BrightcoveRouter;\n\t\t\twpbc.triggerModal = function() {\n\t\t\t\tif (!wpbc.modal) {\n\t\t\t\t\twpbc.modal = new BrightcoveModalView({\n\t\t\t\t\t\tel: brightcoveModalContainer,\n\t\t\t\t\t\ttab: 'videos'\n\t\t\t\t\t});\n\t\t\t\t\twpbc.modal.render();\n\t\t\t\t\twpbc.modal.$el.find( '.spinner' ).addClass( 'is-active' );\n\t\t\t\t} else {\n\t\t\t\t\twpbc.modal.$el.show();\n\t\t\t\t}\n\n\t\t\t\t// Prevent body scrolling by adding a class to 'body'.\n\t\t\t\t$( 'body' ).addClass( 'modal-open' );\n\t\t\t};\n\n\t\t\tvar bc_sanitize_ids = function( id ) {\n\t\t\t\treturn id.replace(/\\D/g,'');\n\t\t\t};\n\n\t\t\t// Load the appropriate media type manager into the container element,\n\t\t\t// We only support loading one per page.\n\t\t\t_.each(['videos', 'playlists'], function(mediaType){\n\t\t\t\tApp.renderMediaManager(mediaType);\n\t\t\t});\n\n\t\t\t$('.account-toggle-button').on('click',function(event){\n\t\t\t\tevent.preventDefault();\n\t\t\t\t$(this).hide();\n\t\t\t\t$('.brightcove-account-row.hidden').show();\n\t\t\t});\n\n\t\t\t$('.brightcove-add-new-video').on('click', function(e) {\n\t\t\t\te.preventDefault();\n\t\t\t\trouter.navigate('add-new-brightcove-video', { trigger:true });\n\t\t\t});\n\n\t\t\t$(document).on('click', '.brightcove-add-media', function( e ) {\n\t\t\t\te.preventDefault();\n\t\t\t\twpbc.triggerModal();\n\t\t\t\twpbc.modal.target = e.currentTarget.dataset.target;\n\t\t\t});\n\n\t\t\t$(document).keyup(function(e) {\n\t\t\t\tif (27 === e.keyCode) {\n\t\t\t\t\t// Close modal on ESCAPE if it's open.\n\t\t\t\t\twpbc.broadcast.trigger('close:modal');\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t$('a.brightcove-action-delete-source').on('click',function(e){\n\t\t\t\tvar message = $(this).data('alert-message');\n\t\t\t\tif( !confirm( message ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t}\n\t};\n\n\tjQuery( document ).ready( function() {\n\t\tApp.load();\n\t\tvar router = new BrightcoveRouter;\n\t\tBackbone.history.start();\n\t} );\n"]} \ No newline at end of file +{"version":3,"sources":["src/models/media.js","src/models/media-collection.js","src/models/brightcove-media-manager.js","src/models/brightcove-modal.js","src/models/upload-collection.js","src/models/upload.js","src/views/brightcove.js","src/views/toolbar.js","src/views/upload-video-manager.js","src/views/brightcove-media-manager.js","src/views/brightcove-modal.js","src/views/media-details.js","src/views/media.js","src/views/playlist-edit.js","src/views/upload-details.js","src/views/upload-window.js","src/views/upload.js","src/views/video-edit.js","src/views/video-preview.js","src/views/media-collection.js","src/app.js"],"names":[],"mappings":"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","file":"brightcove-admin.js","sourcesContent":["/**\n * Media model for Media CPT\n */\n\nvar MediaModel = Backbone.Model.extend(\n\t{\n\n\t\t/**\n\t\t * Copied largely from WP Attachment sync function\n\t\t * Triggered when attachment details change\n\t\t * Overrides Backbone.Model.sync\n\t\t *\n\t\t * @param {string} method\n\t\t * @param {wp.media.model.Media} model\n\t\t * @param {Object} [options={}]\n\t\t *\n\t\t * @returns {Promise}\n\t\t */\n\t\tsync : function ( method, model, options ) {\n\n\t\t\tvar accountHash = null;\n\n\t\t\t// Set the accountHash to the wpbc.preload.accounts[*] where the account_id\n\t\t\t// matches this media objects account_id.\n\t\t\t_.find( wpbc.preload.accounts, function ( account, hash ) {\n\t\t\t\tif ( account.account_id === this.get( 'account_id' ) ) {\n\t\t\t\t\taccountHash = hash;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}, this );\n\n\t\t\t// If the attachment does not yet have an `id`, return an instantly\n\t\t\t// rejected promise. Otherwise, all of our requests will fail.\n\t\t\tif ( _.isUndefined( this.id ) ) {\n\t\t\t\treturn $.Deferred().rejectWith( this ).promise();\n\t\t\t}\n\n\t\t\t// Overload the `read` request so Media.fetch() functions correctly.\n\t\t\tif ( 'read' === method ) {\n\t\t\t\toptions = options || {};\n\t\t\t\toptions.context = this;\n\t\t\t\toptions.data = _.extend( options.data || {}, {\n\t\t\t\t\taction : 'bc_media_fetch',\n\t\t\t\t\tid : this.id\n\t\t\t\t} );\n\n\t\t\t\treturn wp.media.ajax( options );\n\n\t\t\t\t// Overload the `update` request so properties can be saved.\n\t\t\t} else if ( 'update' === method ) {\n\t\t\t\toptions = options || {};\n\t\t\t\toptions.context = this;\n\t\t\t\t// Set the action and ID.\n\t\t\t\toptions.data = _.extend( options.data || {}, {\n\t\t\t\t\taccount : accountHash,\n\t\t\t\t\taction : 'bc_media_update',\n\t\t\t\t\tdescription : this.get( 'description' ),\n\t\t\t\t\tlong_description : this.get( 'long_description' ),\n\t\t\t\t\tname : this.get( 'name' ),\n\t\t\t\t\tnonce : wpbc.preload.nonce,\n\t\t\t\t\ttags : this.get( 'tags' ),\n\t\t\t\t\ttype : this.get( 'mediaType' ),\n\t\t\t\t\tcustom_fields: this.get( 'custom_fields' ),\n\t\t\t\t\thistory: this.get( '_change_history' ),\n\t\t\t\t\tposter: this.get( 'poster' ),\n\t\t\t\t\tthumbnail: this.get( 'thumbnail' ),\n\t\t\t\t\tcaptions: this.get( 'captions' )\n\t\t\t\t} );\n\n\t\t\t\tvar video_ids = this.get( 'video_ids' );\n\t\t\t\tif ( video_ids ) {\n\t\t\t\t\toptions.data.playlist_id = this.id;\n\t\t\t\t\toptions.data.playlist_videos = video_ids;\n\t\t\t\t\toptions.data.type = 'playlists';\n\t\t\t\t} else {\n\t\t\t\t\toptions.data.video_id = this.id;\n\t\t\t\t}\n\n\t\t\t\toptions.success = this.successFunction;\n\t\t\t\toptions.error = this.failFunction;\n\n\t\t\t\twpbc.broadcast.trigger( 'spinner:on' );\n\t\t\t\treturn wp.media.ajax( options );\n\n\t\t\t\t// Overload the `delete` request so attachments can be removed.\n\t\t\t\t// This will permanently delete an attachment.\n\t\t\t} else if ( 'delete' === method ) {\n\t\t\t\toptions = options || {};\n\t\t\t\tvar self = this;\n\n\t\t\t\toptions.data = _.extend( options.data || {}, {\n\t\t\t\t\taccount : accountHash,\n\t\t\t\t\taction : 'bc_media_delete',\n\t\t\t\t\tid : this.get( 'id' ),\n\t\t\t\t\tnonce : wpbc.preload.nonce,\n\t\t\t\t\ttype : this.get( 'mediaType' ),\n\t\t\t\t} );\n\n\t\t\t\treturn wp.media.ajax( options ).done( function ( response ) {\n\t\t\t\t\tself.destroyed = true;\n\t\t\t\t\twpbc.broadcast.trigger( 'delete:successful', response );\n\t\t\t\t\tif ( 'videos' === self.get( 'mediaType' ) || ! _.isUndefined( self.get( 'video_ids' ) ) ) {\n\t\t\t\t\t\twpbc.preload.videos = undefined;\n\t\t\t\t\t} else {\n\t\t\t\t\t\twpbc.preload.playlists = undefined;\n\t\t\t\t\t}\n\t\t\t\t\twpbc.responses = {};\n\t\t\t\t} ).fail( function ( response ) {\n\t\t\t\t\tself.destroyed = false;\n\t\t\t\t\twpbc.broadcast.trigger( 'videoEdit:message', response, 'error' );\n\t\t\t\t\twpbc.broadcast.trigger( 'spinner:off' );\n\t\t\t\t} );\n\n\t\t\t\t// Otherwise, fall back to `Backbone.sync()`.\n\t\t\t} else {\n\t\t\t\t/**\n\t\t\t\t * Call `sync` directly on Backbone.Model\n\t\t\t\t */\n\t\t\t\treturn Backbone.Model.prototype.sync.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Convert date strings into Date objects.\n\t\t *\n\t\t * @param {Object} resp The raw response object, typically returned by fetch()\n\t\t * @returns {Object} The modified response object, which is the attributes hash\n\t\t * to be set on the model.\n\t\t */\n\t\tparse : function ( resp ) {\n\t\t\tif ( ! resp ) {\n\t\t\t\treturn resp;\n\t\t\t}\n\n\t\t\tresp.date = new Date( resp.date );\n\t\t\tresp.modified = new Date( resp.modified );\n\t\t\treturn resp;\n\t\t},\n\n\t\tgetAccountName : function () {\n\n\t\t\tvar account_id = this.get( 'account_id' );\n\t\t\tvar matchingAccount = _.findWhere( wpbc.preload.accounts, {account_id : this.get( 'account_id' )} );\n\t\t\treturn undefined === matchingAccount ? 'unavailable' : matchingAccount.account_name;\n\t\t},\n\n\t\tgetReadableDuration : function () {\n\n\t\t\tvar duration = this.get( 'duration' );\n\n\t\t\tif ( duration ) {\n\t\t\t\tduration = Number( duration / 1000 );\n\t\t\t\tvar hours = Math.floor( duration / 3600 );\n\t\t\t\tvar minutes = Math.floor( duration % 3600 / 60 );\n\t\t\t\tvar seconds = Math.floor( duration % 3600 % 60 );\n\t\t\t\treturn ((hours > 0 ? hours + \":\" + (minutes < 10 ? \"0\" : \"\") : \"\") + minutes + \":\" + (seconds < 10 ? \"0\" : \"\") + seconds);\n\t\t\t}\n\t\t\treturn duration;\n\t\t},\n\n\t\tgetReadableDate : function ( field ) {\n\n\t\t\tvar updated_at = this.get( field );\n\n\t\t\tif ( updated_at ) {\n\n\t\t\t\tvar date = new Date( updated_at );\n\n\t\t\t\tvar hour = date.getHours();\n\t\t\t\tvar min = date.getMinutes();\n\t\t\t\tvar year = date.getFullYear();\n\t\t\t\tvar mon = date.getMonth() + 1;\n\t\t\t\tvar day = date.getDate();\n\t\t\t\tvar ampm = hour >= 12 ? 'pm' : 'am';\n\n\t\t\t\thour = hour % 12;\n\t\t\t\thour = hour ? hour : 12;\n\n\t\t\t\tmin = min < 10 ? '0' + min : min;\n\n\t\t\t\tvar readableDate = year + '/' + mon + '/' + day + ' - ' + hour + ':' + min + ' ' + ampm;\n\t\t\t\treturn readableDate;\n\t\t\t}\n\t\t\treturn updated_at;\n\t\t},\n\n\t\tsuccessFunction : function ( message ) {\n\t\t\twpbc.broadcast.trigger( 'videoEdit:message', message, 'success' );\n\t\t\twpbc.broadcast.trigger( 'spinner:off' );\n\t\t\tif ( _.isArray( this.get( 'video_ids' ) ) && wpbc.preload && wpbc.preload.playlists ) {\n\t\t\t\tvar id = this.get( 'id' );\n\t\t\t\t_.each( wpbc.preload.playlists, function ( playlist, index ) {\n\t\t\t\t\tif ( playlist.id === id ) {\n\t\t\t\t\t\twpbc.preload.playlists[index] = this.toJSON();\n\t\t\t\t\t}\n\t\t\t\t}, this );\n\t\t\t}\n\t\t\twpbc.responses = {};\n\t\t\tif ( 'videos' === this.get( 'mediaType' ) || ! _.isUndefined( this.get( 'video_ids' ) ) ) {\n\t\t\t\twpbc.preload.videos = undefined;\n\t\t\t} else {\n\t\t\t\twpbc.preload.playlists = undefined;\n\t\t\t}\n\t\t},\n\n\t\tfailFunction : function ( message ) {\n\t\t\twpbc.broadcast.trigger( 'videoEdit:message', message, 'error' );\n\t\t\twpbc.broadcast.trigger( 'spinner:off' );\n\t\t}\n\t}\n);\n","var MediaCollection = Backbone.Collection.extend(\n\t{\n\t\tmodel : MediaModel,\n\t\t/**\n\t\t * @param {Array} [models=[]] Array of models used to populate the collection.\n\t\t * @param {Object} [options={}]\n\t\t */\n\t\tinitialize : function ( models, options ) {\n\t\t\toptions = options || {};\n\t\t\tif ( options.activeAccount ) {\n\t\t\t\tthis.activeAccount = options.activeAccount;\n\t\t\t}\n\n\t\t\tthis.additionalRequest = false;\n\n\t\t\tthis.pageNumber = this.pageNumber || 1;\n\n\t\t\tif ( ! this.mediaType && (this.mediaCollectionViewType === 'existingPlaylists' || this.mediaCollectionViewType === 'libraryPlaylists') ) {\n\t\t\t\tthis.mediaType = 'videos';\n\t\t\t}\n\n\t\t\tthis.mediaCollectionViewType = options.mediaCollectionViewType || 'grid';\n\n\t\t\tif ( options.excludeVideoIds && 'libraryPlaylists' === options.mediaCollectionViewType ) {\n\t\t\t\tthis.excludeVideoIds = options.excludeVideoIds;\n\t\t\t}\n\n\t\t\tif ( options.videoIds && ! models ) {\n\t\t\t\tthis.mediaType = 'videos';\n\t\t\t\tthis.videoIds = options.videoIds;\n\t\t\t\tthis.fetch();\n\t\t\t} else if ( 'playlists' !== options.mediaType ) {\n\t\t\t\tthis.mediaType = 'videos';\n\t\t\t\tthis.fetch();\n\t\t\t}\n\n\t\t\tthis.mediaType = options.mediaType;\n\n\t\t\tif ( 'videos' === this.mediaType ) {\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:uploadedFileDetails', function ( video ) {\n\t\t\t\t\t// Add the newly uploaded file\n\t\t\t\t\tthis.add( video, {at : 0} );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tthis.activeAccount = options.activeAccount || 'all';\n\t\t\tthis.searchTerm = options.searchTerm || '';\n\t\t\tthis.dates = options.dates || 'all';\n\t\t\tthis.tag = options.tag || '';\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:activeAccount', function ( accountId ) {\n\t\t\t\tthis.activeAccount = accountId;\n\t\t\t\twp.heartbeat.enqueue( 'brightcove_heartbeat', { 'accountId': accountId }, true );\n\t\t\t\tthis.fetch();\n\t\t\t} );\n\n\t\t\t$( document ).on( 'heartbeat-tick.brightcove_heartbeat', function( event, data ) {\n\t\t\t\tif ( data.hasOwnProperty( 'brightcove_heartbeat' ) ) {\n\t\t\t\t\twp.heartbeat.enqueue( 'brightcove_heartbeat', { 'accountId': data['brightcove_heartbeat']['account_id'] }, true );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:searchTerm', function ( searchTerm ) {\n\t\t\t\tthis.searchTerm = searchTerm;\n\t\t\t\tthis.fetch();\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:tag', function ( tag ) {\n\n\t\t\t\tif ( 'all' === tag ) {\n\t\t\t\t\ttag = '';\n\t\t\t\t}\n\n\t\t\t\tthis.tag = tag;\n\t\t\t\tthis.fetch();\n\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:date', function ( date ) {\n\t\t\t\tthis.date = date;\n\t\t\t\tthis.fetch();\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'tabChange', function ( settings ) {\n\t\t\t\tthis.killPendingRequests();\n\t\t\t\tif ( settings.mediaType !== this.mediaType ) {\n\t\t\t\t\tthis.mediaType = settings.mediaType;\n\t\t\t\t\tvar preload = wpbc.preload[this.mediaType];\n\t\t\t\t\tvar model;\n\t\t\t\t\t// Remove all models from the collection\n\t\t\t\t\twhile ( model = this.first() ) {\n\t\t\t\t\t\tthis.remove( model );\n\t\t\t\t\t}\n\t\t\t\t\tif ( preload !== undefined ) {\n\t\t\t\t\t\tthis.add( preload );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.fetch();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t},\n\n\t\tkillPendingRequests : function () {\n\t\t\t// Kill all pending requests\n\t\t\t_.each( wpbc.requests, function ( request ) {\n\t\t\t\trequest.abort();\n\t\t\t} );\n\n\t\t\twpbc.requests = [];\n\t\t},\n\n\t\tchecksum : function ( object ) {\n\t\t\tif ( ! _.isString( object ) ) {\n\t\t\t\tif ( _.isFunction( object.toJSON ) ) {\n\t\t\t\t\tobject = object.toJSON();\n\t\t\t\t} else {\n\t\t\t\t\tobject = JSON.stringify( object );\n\t\t\t\t}\n\n\t\t\t}\n\t\t\tvar checksum = 0x12345678;\n\n\t\t\tfor ( var i = 0; i < object.length; i ++ ) {\n\t\t\t\tchecksum += (object.charCodeAt( i ) * (i + 1));\n\t\t\t}\n\n\t\t\treturn checksum;\n\t\t},\n\n\t\t/**\n\t\t * Overrides Backbone.Collection.sync\n\t\t *\n\t\t * @param {String} method\n\t\t * @param {Backbone.Model} model\n\t\t * @param {Object} [options={}]\n\t\t * @returns {Promise}\n\t\t */\n\t\tsync : function ( method, model, options ) {\n\t\t\tvar args, fallback;\n\n\t\t\t// Overload the read method so Media.fetch() functions correctly.\n\t\t\tif ( 'read' === method ) {\n\t\t\t\toptions = options || {};\n\t\t\t\toptions.data = _.extend( options.data || {}, {\n\t\t\t\t\taction : 'bc_media_query',\n\t\t\t\t\taccount : this.activeAccount || wpbc.preload.defaultAccountId,\n\t\t\t\t\tdates : this.date,\n\t\t\t\t\tposts_per_page : wpbc.posts_per_page,\n\t\t\t\t\tpage_number : this.pageNumber,\n\t\t\t\t\tnonce : wpbc.preload.nonce,\n\t\t\t\t\tsearch : this.searchTerm,\n\t\t\t\t\ttags : this.tag,\n\t\t\t\t\ttagName : wpbc.preload.tags[this.tag],\n\t\t\t\t\ttype : this.mediaType || 'videos'\n\t\t\t\t} );\n\n\t\t\t\tvar previousRequest = _.pick( options.data, 'account', 'dates', 'posts_per_page', 'search', 'tags', 'type' );\n\n\t\t\t\t// Determine if we're infinite scrolling or not.\n\t\t\t\tthis.additionalRequest = _.isEqual( previousRequest, wpbc.previousRequest );\n\t\t\t\tif ( ! this.additionalRequest ) {\n\t\t\t\t\toptions.data.page_number = 1;\n\t\t\t\t}\n\t\t\t\t/* Prevent reloading on the playlist edit as the playlist videos are one request and library videos another */\n\t\t\t\tif ( this.mediaCollectionViewType !== 'existingPlaylists' ) {\n\t\t\t\t\twpbc.previousRequest = previousRequest;\n\t\t\t\t}\n\n\t\t\t\tif ( this.videoIds ) {\n\t\t\t\t\toptions.data.videoIds = this.videoIds.length ? this.videoIds : 'none';\n\t\t\t\t}\n\n\t\t\t\toptions.data.query = args;\n\n\t\t\t\tif ( ! _.contains( ['libraryPlaylists', 'existingPlaylists'], this.mediaCollectionViewType ) ) {\n\t\t\t\t\tthis.killPendingRequests();\n\t\t\t\t}\n\n\t\t\t\tvar requestChecksum = this.checksum( options.data );\n\n\t\t\t\tif ( ! _.isUndefined( wpbc.responses[requestChecksum] ) ) {\n\t\t\t\t\tthis.parse( {data : wpbc.responses[requestChecksum]}, 'cached' );\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tvar request = $.ajax( {\n\t\t\t\t\t type : 'POST',\n\t\t\t\t\t url : wp.ajax.settings.url,\n\t\t\t\t\t context : this,\n\t\t\t\t\t data : options.data\n\t\t\t\t } ).done( function ( response, status, request ) {\n\t\t\t\t\tthis.parse( response, status, request, requestChecksum );\n\t\t\t\t} ).fail( this.fetchFail );\n\n\t\t\t\twpbc.requests.push( request );\n\t\t\t\twpbc.broadcast.trigger( 'spinner:on' );\n\n\t\t\t\treturn request;\n\n\t\t\t\t// Otherwise, fall back to Backbone.sync()\n\t\t\t} else {\n\t\t\t\t/**\n\t\t\t\t * Call wp.media.model.MediaCollection.sync or Backbone.sync\n\t\t\t\t */\n\t\t\t\tfallback = MediaCollection.prototype.sync ? MediaCollection.prototype : Backbone;\n\t\t\t\treturn fallback.sync.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\tfetchFail : function () {\n\t\t\tif ( this.pageNumber > 1 ) {\n\t\t\t\tthis.pageNumber --;\n\t\t\t}\n\t\t\twpbc.broadcast.trigger( 'fetch:finished' );\n\t\t\twpbc.broadcast.trigger( 'spinner:off' );\n\t\t\twpbc.broadcast.trigger( 'fetch:apiError' );\n\t\t\tif ( 'abort' === status ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * A custom AJAX-response parser.\n\t\t *\n\t\t * See trac ticket #24753\n\t\t *\n\t\t * @param {Object|Array} resp The raw response Object/Array.\n\t\t * @param {Object} xhr\n\t\t * @returns {Array} The array of model attributes to be added to the collection\n\t\t */\n\t\tparse : function ( response, status, request, checksum ) {\n\t\t\twpbc.broadcast.trigger( 'fetch:finished' );\n\t\t\twpbc.broadcast.trigger( 'spinner:off' );\n\t\t\tif ( ! _.contains( ['success', 'cached'], status ) || ( 'cached' !== status && ! response['success'] ) ) {\n\t\t\t\twpbc.broadcast.trigger( 'fetch:apiError' );\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar data = response.data;\n\n\t\t\tif ( \"success\" === status ) {\n\t\t\t\twpbc.responses[checksum] = data;\n\t\t\t}\n\n\t\t\tif ( false === data ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif ( ! _.isArray( data ) ) {\n\t\t\t\tdata = [data];\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * In playlist video search, we remove the videos that already exist in the playlist.\n\t\t\t */\n\t\t\tif ( _.isArray( this.excludeVideoIds ) ) {\n\t\t\t\t_.each( this.excludeVideoIds, function ( videoId ) {\n\t\t\t\t\tdata = _.without( data, _.findWhere( data, {id : videoId} ) );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tvar allMedia = _.map( data, function ( attrs ) {\n\t\t\t\tvar id, media, newAttributes;\n\n\t\t\t\tif ( attrs instanceof Backbone.Model ) {\n\t\t\t\t\tid = attrs.get( 'id' );\n\t\t\t\t\tattrs = attrs.attributes;\n\t\t\t\t} else {\n\t\t\t\t\tid = attrs.id;\n\t\t\t\t}\n\n\t\t\t\tmedia = this.findWhere( {id : id} );\n\t\t\t\tif ( ! media ) {\n\t\t\t\t\tmedia = this.add( attrs );\n\t\t\t\t} else {\n\t\t\t\t\tnewAttributes = media.parse( attrs );\n\n\t\t\t\t\tif ( ! _.isEqual( media.attributes, newAttributes ) ) {\n\t\t\t\t\t\tmedia.set( newAttributes );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tmedia.set( 'viewType', this.mediaCollectionViewType );\n\t\t\t\treturn media;\n\t\t\t}, this );\n\n\t\t\tif ( this.additionalRequest ) {\n\t\t\t\tthis.add( allMedia );\n\t\t\t} else {\n\t\t\t\tthis.set( allMedia );\n\t\t\t}\n\t\t}\n\t}\n);\n","var BrightcoveMediaManagerModel = Backbone.Model.extend(\n\t{\n\t\tdefaults : {\n\t\t\tview : 'grid',\n\t\t\tdate : 'all',\n\t\t\ttags : 'all',\n\t\t\ttype : null, // enum[playlist, video]\n\t\t\tpreload : true,\n\t\t\tsearch : '',\n\t\t\taccount : wpbc.preload.defaultAccountId,\n\t\t\tposter: {},\n\t\t\tthumbnail: {}\n\t\t},\n\t\tinitialize : function ( options ) {\n\t\t\t_.defaults( options, this.defaults );\n\n\t\t\twp.heartbeat.enqueue( 'brightcove_heartbeat', { 'accountId': wpbc.preload.defaultAccountId }, true );\n\n\t\t\tvar collection = new MediaCollection( [], {mediaType : options.mediaType} );\n\t\t\tcollection.reset();\n\t\t\t/* Prevent empty element from living in our collection */\n\n\t\t\tif ( options.preload && options.preload.length ) {\n\t\t\t\tcollection.add( options.preload );\n\t\t\t}\n\n\t\t\toptions.preload = ! ! options.preload; // Whether or not a preload var was present.\n\n\t\t\tthis.set( 'media-collection-view', new MediaCollectionView( {collection : collection} ) );\n\t\t\tthis.set( 'options', options );\n\n\t\t}\n\t}\n);\n\n","/**\n * Media model for Media CPT\n */\n\nvar BrightcoveModalModel = Backbone.Model.extend(\n\t{\n\n\t\tgetMediaManagerSettings : function () {\n\t\t\tvar tab = this.get( 'tab' );\n\t\t\tvar settings = {\n\t\t\t\t'upload' : {\n\t\t\t\t\taccounts : 'all',\n\t\t\t\t\tdate : 'all',\n\t\t\t\t\tembedType : 'modal',\n\t\t\t\t\tmediaType : 'videos',\n\t\t\t\t\tmode : 'uploader',\n\t\t\t\t\tpreload : true,\n\t\t\t\t\tsearch : '',\n\t\t\t\t\ttags : 'all',\n\t\t\t\t\tviewType : 'grid',\n\t\t\t\t\tposter: {},\n\t\t\t\t\tthumbnail: {}\n\t\t\t\t},\n\t\t\t\t'videos' : {\n\t\t\t\t\taccounts : 'all',\n\t\t\t\t\tdate : 'all',\n\t\t\t\t\tembedType : 'modal',\n\t\t\t\t\tmediaType : 'videos',\n\t\t\t\t\tmode : 'manager',\n\t\t\t\t\tpreload : true,\n\t\t\t\t\tsearch : '',\n\t\t\t\t\ttags : 'all',\n\t\t\t\t\tviewType : 'grid'\n\t\t\t\t},\n\t\t\t\t'playlists' : {\n\t\t\t\t\taccounts : 'all',\n\t\t\t\t\tdate : 'all',\n\t\t\t\t\tembedType : 'modal',\n\t\t\t\t\tmediaType : 'playlists',\n\t\t\t\t\tmode : 'manager',\n\t\t\t\t\tpreload : true,\n\t\t\t\t\tsearch : '',\n\t\t\t\t\ttags : 'all',\n\t\t\t\t\tviewType : 'grid'\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tif ( undefined !== settings[tab] ) {\n\t\t\t\treturn settings[tab];\n\t\t\t}\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n);\n\n","/**\n * Collection model to contain pending uploads\n */\n\nvar UploadModelCollection = Backbone.Collection.extend(\n\t{\n\n\t\tinitialize : function ( options ) {\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:queuedFilesAdded', this.queuedFilesAdded );\n\t\t},\n\n\t\tqueuedFilesAdded : function ( queuedFiles ) {\n\t\t\t_.each( queuedFiles, function ( queuedFile ) {\n\t\t\t\tthis.add( new UploadModel( queuedFile ) );\n\t\t\t}, this );\n\t\t}\n\n\t}\n);\n\n","/**\n * Model to contain pending upload\n */\n\nvar UploadModel = Backbone.Model.extend(\n\t{\n\n\t\tinitialize : function ( options ) {\n\t\t},\n\n\t\thumanReadableSize : function () {\n\t\t\tvar bytes = this.get( 'size' );\n\t\t\tif ( bytes === 0 ) {\n\t\t\t\treturn '0 Byte';\n\t\t\t}\n\t\t\tvar k = 1000;\n\t\t\tvar sizes = ['Bytes', 'KB', 'MB', 'GB'];\n\t\t\tvar i = Math.floor( Math.log( bytes ) / Math.log( k ) );\n\t\t\treturn (bytes / Math.pow( k, i )).toPrecision( 3 ) + ' ' + sizes[i];\n\t\t}\n\n\t}\n);\n","var BrightcoveView = wp.Backbone.View.extend(\n\t{\n\t\tsubviews : null,\n\n\t\tregisterSubview : function ( view ) {\n\n\t\t\tthis.subviews = this.subviews || [];\n\t\t\tthis.subviews.push( view );\n\n\t\t},\n\n\t\tremove : function () {\n\n\t\t\t_.invoke( this.subviews, 'remove' );\n\t\t\twp.Backbone.View.prototype.remove.call( this );\n\n\t\t},\n\n\t\tinsertShortcode : function () {\n\n\t\t\tif ( ! this.model ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar shortcode = wpbc.shortcode;\n\n if ( undefined === this.mediaType ) {\n\t\t\t\tvar template = wp.template( 'brightcove-mediatype-notice' );\n\n\t\t\t\t// Throw a notice to the user that the file is not the correct format\n\t\t\t\t$( '#lost-connection-notice' ).before( template );\n\n\t\t\t\t// Allow the user to dismiss the notice\n\t\t\t\t$( '#js-mediatype-dismiss' ).on( 'click', function() {\n\t\t\t\t\t$( '#js-mediatype-notice' ).first().fadeOut( 500, function() {\n\t\t\t\t\t\t$( this ).remove();\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tif( wpbc.modal.target === 'content' ) {\n\t\t\t\twindow.send_to_editor( shortcode );\n\t\t\t} else {\n\t\t\t\t$( wpbc.modal.target ).val( shortcode );\n\t\t\t\t$( wpbc.modal.target ).change();\n\t\t\t}\n\n\t\t\twpbc.broadcast.trigger( 'close:modal' );\n\t\t}\n\t}\n);\n","/**\n * This is the toolbar to handle sorting, filtering, searching and grid/list view toggles.\n * State is captured in the brightcove-media-manager model.\n */\nvar ToolbarView = BrightcoveView.extend(\n\t{\n\t\ttagName : 'div',\n\t\tclassName : 'media-toolbar wp-filter',\n\t\ttemplate : wp.template( 'brightcove-media-toolbar' ),\n\n\t\tevents : {\n\t\t\t'click .view-list' : 'toggleList',\n\t\t\t'click .view-grid' : 'toggleGrid',\n\t\t\t'click .brightcove-toolbar': 'toggleToolbar',\n\t\t\t'change .brightcove-media-source' : 'sourceChanged',\n\t\t\t'change .brightcove-media-dates' : 'datesChanged',\n\t\t\t'change .brightcove-media-tags' : 'tagsChanged',\n\t\t\t'change .brightcove-empty-playlists' : 'emptyPlaylistsChanged',\n\t\t\t'click #media-search' : 'searchHandler'\n\t\t},\n\n\t\trender : function () {\n\t\t\tvar mediaType = this.model.get( 'mediaType' );\n\t\t\tvar options = {\n\t\t\t\taccounts : wpbc.preload.accounts,\n\t\t\t\tdates : {},\n\t\t\t\tmediaType : mediaType,\n\t\t\t\ttags : wpbc.preload.tags,\n\t\t\t\taccount : this.model.get( 'account' )\n\t\t\t};\n\n\t\t\tvar dates = wpbc.preload.dates;\n\t\t\tvar date_var = this.model.get( 'date' );\n\t\t\t/* @todo: find out if this is working */\n\t\t\tif ( dates !== undefined && dates[mediaType] !== undefined && dates[mediaType][date_var] !== undefined ) {\n\t\t\t\toptions.dates = dates[mediaType][date_var];\n\t\t\t}\n\n\t\t\tthis.$el.html( this.template( options ) );\n\t\t\tvar spinner = this.$el.find( '.spinner' );\n\t\t\tthis.listenTo( wpbc.broadcast, 'spinner:on', function () {\n\t\t\t\tspinner.addClass( 'is-active' ).removeClass( 'hidden' );\n\t\t\t} );\n\t\t\tthis.listenTo( wpbc.broadcast, 'spinner:off', function () {\n\t\t\t\tspinner.removeClass( 'is-active' ).addClass( 'hidden' );\n\t\t\t} );\n\t\t},\n\n\t\t// List view Selected\n\t\ttoggleList : function () {\n\t\t\tthis.trigger( 'viewType', 'list' );\n\t\t\tthis.$el.find( '.view-list' ).addClass( 'current' );\n\t\t\tthis.$el.find( '.view-grid' ).removeClass( 'current' );\n\t\t},\n\n\t\t// Grid view Selected\n\t\ttoggleGrid : function () {\n\t\t\tthis.trigger( 'viewType', 'grid' );\n\t\t\tthis.$el.find( '.view-grid' ).addClass( 'current' );\n\t\t\tthis.$el.find( '.view-list' ).removeClass( 'current' );\n\t\t},\n\n\t\t// Toggle toolbar help\n\t\ttoggleToolbar : function () {\n\t\t\tvar template = wp.template( 'brightcove-tooltip-notice' );\n\n\t\t\t// Throw a notice to the user that the file is not the correct format\n\t\t\t$( '.brightcove-media-videos' ).before( template );\n\t\t\t// Allow the user to dismiss the notice\n\t\t\t$( '#js-tooltip-dismiss' ).on( 'click', function() {\n\t\t\t\t$( '#js-tooltip-notice' ).first().fadeOut( 500, function() {\n\t\t\t\t\t$( this ).remove();\n\t\t\t\t} );\n\t\t\t} );\n\t\t},\n\n\t\t// Brightcove source changed\n\t\tsourceChanged : function ( event ) {\n\n\t\t\t// Store the currently selected account on the model.\n\t\t\tthis.model.set( 'account', event.target.value );\n\t\t\twpbc.broadcast.trigger( 'change:activeAccount', event.target.value );\n\t\t},\n\n\t\tdatesChanged : function ( event ) {\n\t\t\twpbc.broadcast.trigger( 'change:date', event.target.value );\n\t\t},\n\n\t\ttagsChanged : function ( event ) {\n\t\t\twpbc.broadcast.trigger( 'change:tag', event.target.value );\n\t\t},\n\n\t\temptyPlaylistsChanged : function ( event ) {\n\t\t\tvar emptyPlaylists = $( event.target ).prop( 'checked' );\n\t\t\twpbc.broadcast.trigger( 'change:emptyPlaylists', emptyPlaylists );\n\t\t},\n\n\t\tsearchHandler : function ( event ) {\n\t\t\tvar searchTerm = $( '#media-search-input' ).val();\n\n\t\t\tif ( searchTerm.length > 2 && searchTerm !== this.model.get( 'search' ) ) {\n\t\t\t\tthis.model.set( 'search', searchTerm );\n\t\t\t\twpbc.broadcast.trigger( 'change:searchTerm', searchTerm );\n\t\t\t}\n\t\t}\n\t}\n);\n\n","var UploadVideoManagerView = BrightcoveView.extend(\n\t{\n\t\tclassName : \"brightcove-file-uploader\",\n\n\t\tevents : {\n\t\t\t'click .brightcove-start-upload' : 'triggerUpload'\n\t\t},\n\n\t\tinitialize : function ( options ) {\n\t\t\t/**\n\t\t\t * If you're looking for the Plupload instance, you're in the wrong place, check the UploadWindowView\n\t\t\t */\n\t\t\tthis.collection = new UploadModelCollection();\n\t\t\tif ( options ) {\n\t\t\t\tthis.options = options;\n\n\t\t\t\tthis.successMessage = options.successMessage || this.successMessage;\n\t\t\t}\n\n\t\t\tthis.uploadWindow = new UploadWindowView();\n\n\t\t\tthis.listenTo( this.collection, 'add', this.fileAdded );\n\t\t\tthis.listenTo( wpbc.broadcast, 'pendingUpload:selectedItem', this.selectedItem );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:prepareUpload', this.prepareUpload );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:successMessage', this.successMessage );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:errorMessage', this.errorMessage );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:clear', this.resetUploads );\n\t\t\tthis.listenTo( wpbc.broadcast, 'upload:video', this.resetUploads );\n\t\t},\n\n\t\tresetUploads : function () {\n\t\t\twhile ( model = this.collection.first() ) {\n\t\t\t\tthis.collection.remove( model );\n\t\t\t}\n\t\t},\n\n\t\terrorMessage : function ( message ) {\n\t\t\tthis.message( message, 'error' );\n\t\t},\n\n\t\tsuccessMessage : function ( message ) {\n\t\t\tthis.message( message, 'success' );\n\t\t},\n\n\t\tmessage : function ( message, type ) {\n\t\t\tvar messages = this.$el.find( '.brightcove-messages' );\n\t\t\tvar messageClasses = '';\n\t\t\tif ( 'success' === type ) {\n\t\t\t\tmessageClasses = 'notice updated';\n\t\t\t} else if ( 'error' === type ) {\n\t\t\t\tmessageClasses = 'error';\n\t\t\t}\n\t\t\tvar newMessage = $( '

' );\n\t\t\tmessages.append( newMessage );\n\t\t\tnewMessage.addClass( messageClasses ).find( '.message-text' ).text( message );\n\t\t\tnewMessage.delay( 4000 ).fadeOut( 500, function () {\n\t\t\t\t$( this ).remove();\n\t\t\t\twpbc.broadcast.trigger('upload:video');\n\t\t\t} );\n\t\t},\n\n\t\tprepareUpload : function () {\n\t\t\twpbc.uploads = wpbc.uploads || {};\n\t\t\tthis.collection.each( function ( upload ) {\n\t\t\t\twpbc.uploads[upload.get( 'id' )] = {\n\t\t\t\t\taccount : upload.get( 'account' ),\n\t\t\t\t\tname : upload.get( 'fileName' ),\n\t\t\t\t\ttags : upload.get( 'tags' )\n\t\t\t\t};\n\t\t\t} );\n\t\t\twpbc.broadcast.trigger( 'uploader:startUpload' );\n\t\t},\n\n\t\tfileAdded : function ( model, collection ) {\n\t\t\t// Start upload triggers progress bars under every video.\n\t\t\t// Need to re-render when one model is added\n\t\t\tif ( this.collection.length === 1 ) {\n\t\t\t\tthis.render();\n\t\t\t}\n\t\t\tvar pendingUpload = new UploadView( {model : model} );\n\t\t\tpendingUpload.render();\n\t\t\tpendingUpload.$el.appendTo( this.$el.find( '.brightcove-pending-uploads' ) );\n\t\t},\n\n\t\ttriggerUpload : function () {\n\t\t\twpbc.broadcast.trigger( 'uploader:prepareUpload' );\n\t\t},\n\n\t\tselectedItem : function ( model ) {\n\t\t\tthis.uploadDetails = new UploadDetailsView( {model : model} );\n\t\t\tthis.uploadDetails.render();\n\t\t\tthis.$el.find( '.brightcove-pending-upload-details' ).remove();\n\t\t\tthis.uploadDetails.$el.appendTo( this.$el.find( '.brightcove-upload-queued-files' ) );\n\t\t},\n\n\t\trender : function ( options ) {\n\t\t\tif ( this.collection.length ) {\n\t\t\t\tthis.template = wp.template( 'brightcove-uploader-queued-files' );\n\t\t\t} else {\n\t\t\t\tthis.template = wp.template( 'brightcove-uploader-inline' );\n\t\t\t\tthis.uploadWindow.render();\n\t\t\t\tthis.uploadWindow.$el.appendTo( $( 'body' ) );\n\t\t\t}\n\t\t\tthis.$el.html( this.template( options ) );\n\t\t\tif ( this.collection.length ) {\n\t\t\t\tthis.$el.find( '.brightcove-start-upload' ).show();\n\t\t\t} else {\n\t\t\t\tthis.$el.find( '.brightcove-start-upload' ).hide();\n\t\t\t}\n\t\t}\n\t}\n);\n","var BrightcoveRouter = Backbone.Router.extend({\n\troutes: {\n\t\t'add-new-brightcove-video' : \"addNew\"\n\t},\n\taddNew: function() {\n\t\twpbc.broadcast.trigger('upload:video');\n\t}\n});\n\nvar BrightcoveMediaManagerView = BrightcoveView.extend(\n\t{\n\t\ttagName : 'div',\n\t\tclassName : 'brightcove-media',\n\n\t\tevents : {\n\t\t\t/*\n\t\t\t 'click .brightcove.media-button': 'insertIntoPost'\n\t\t\t */\n\t\t},\n\n\t\tscrollHandler : function () {\n\t\t\twpbc.broadcast.trigger( 'scroll:mediaGrid' );\n\t\t},\n\n\t\tinitialize : function ( options ) {\n\n\t\t\tvar scrollRefreshSensitivity = wp.media.isTouchDevice ? 300 : 200;\n\t\t\tthis.scrollHandler = _.chain( this.scrollHandler ).bind( this ).throttle( scrollRefreshSensitivity ).value();\n\t\t\tthis.options = options;\n\t\t\tthis.mode = options.mode || 'manager';\n\n\t\t\toptions.preload = this.options.preload ? wpbc.preload[this.options.mediaType] : false;\n\n\t\t\tthis.model = new BrightcoveMediaManagerModel( options );\n\n\t\t\t/* Search and dropdowns */\n\t\t\tthis.toolbar = new ToolbarView( {model : this.model} );\n\n\t\t\t/* Uploader View */\n\t\t\tthis.uploader = new UploadVideoManagerView();\n\n\t\t\tthis.model.set( 'accounts', wpbc.preload.accounts ); // All accounts.\n\t\t\tthis.model.set( 'activeAccount', options.account ); // Active account ID / All\n\n\t\t\tthis.listenTo( this.toolbar, 'viewType', function ( viewType ) {\n\t\t\t\tthis.model.set( 'view', viewType ); // Set the model view type\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'videoEdit:message', this.message );\n\t\t\tthis.listenTo( wpbc.broadcast, 'permanent:message', this.permanentMessage );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'remove:permanentMessage', function () {\n\n\t\t\t\tif ( wpbc.permanentMessage ) {\n\t\t\t\t\twpbc.permanentMessage.remove();\n\t\t\t\t}\n\n\t\t\t\tthis.$el.find( '.brightcove-message' ).addClass( 'hidden' );\n\n\t\t\t} );\n\n\t\t\t// We only care when a change occurs\n\t\t\tthis.listenTo( this.model, 'change:view', function ( model, type ) {\n\t\t\t\tthis.model.get( 'media-collection-view' ).setViewType( type );\n\t\t\t} );\n\n\t\t\tthis.listenTo( this.model, 'change:mode', function ( model, mode ) {\n\n\t\t\t\tif ( 'uploader' !== mode ) {\n\t\t\t\t\twpbc.broadcast.trigger( 'uploader:clear' );\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'cancelPreview:media', function ( settings ) {\n\t\t\t\tthis.clearPreview();\n\t\t\t\tthis.detailsView = undefined;\n\t\t\t\tthis.model.set( 'mode', 'manager' );\n\t\t\t\tthis.render();\n\n\t\t\t\t// Disable \"Insert Into Post\" button since no video would be selected.\n\t\t\t\twpbc.broadcast.trigger( 'toggle:insertButton' );\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:emptyPlaylists', function ( hideEmptyPlaylists ) {\n\n\t\t\t\tvar mediaCollectionView = this.model.get( 'media-collection-view' );\n\t\t\t\tthis.model.set( 'mode', 'manager' );\n\n\t\t\t\t_.each( mediaCollectionView.collection.models, function ( playlistModel ) {\n\n\t\t\t\t\t// Don't hide smart playlists. Only Manual playlists will have playlistType as 'EXPLICIT'.\n\t\t\t\t\tif ( 'EXPLICIT' !== playlistModel.get ( 'type' ) ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Manual play list will have videos populated in video_ids. Empty playlists will have zero video_ids.\n\t\t\t\t\tif ( playlistModel.get( 'video_ids' ).length === 0 ) {\n\t\t\t\t\t\tif ( hideEmptyPlaylists ) {\n\t\t\t\t\t\t\tplaylistModel.view.$el.hide();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tplaylistModel.view.$el.show();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'delete:successful', function ( message ) {\n\n\t\t\t\tthis.startGridView();\n\t\t\t\tthis.message( message, 'success' );\n\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:activeAccount', function ( accountId ) {\n\n\t\t\t\tthis.clearPreview();\n\t\t\t\tthis.model.set( 'activeAccount', accountId );\n\t\t\t\tthis.model.set( 'mode', 'manager' );\n\t\t\t\tthis.render();\n\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:tag', function ( tag ) {\n\n\t\t\t\tthis.clearPreview();\n\t\t\t\tthis.model.set( 'tag', tag );\n\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:date', function ( date ) {\n\n\t\t\t\tthis.clearPreview();\n\t\t\t\tthis.model.set( 'date', date );\n\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'upload:video', function () {\n\t\t\t\tthis.showUploader();\n\t\t\t} );\n\n\t\t\tthis.listenTo( this.model, 'change:search', function ( model, searchTerm ) {\n\t\t\t\tthis.model.get( 'search' );\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'start:gridview', function () {\n\n\t\t\t\t_.invoke( this.subviews, 'remove' );\n\n\t\t\t\tthis.detailsView = null; // Prevent selected view from not being toggleable when we hit the back button on edit\n\n\t\t\t\tthis.startGridView();\n\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'tabChange', function ( settings ) {\n\n\t\t\t\tthis.model.set( settings );\n\n\t\t\t\tif ( this.detailsView instanceof MediaDetailsView ) {\n\n\t\t\t\t\tthis.detailsView.remove();\n\n\t\t\t\t\tthis.detailsView = undefined;\n\n\t\t\t\t}\n\n\t\t\t\tthis.render();\n\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'edit:media', function ( model ) {\n\n\t\t\t\tvar mediaType = this.model.get( 'mediaType' );\n\n\t\t\t\tif ( mediaType === 'videos' ) {\n\n\t\t\t\t\t// We just hit the edit button with the edit window already open.\n\t\t\t\t\tif ( 'editVideo' === this.model.get( 'mode' ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\t// hide the previous notification\n\t\t\t\t\tvar messages = this.$el.find( '.brightcove-message' );\n\t\t\t\t\tmessages.addClass( 'hidden' );\n\n\t\t\t\t\tthis.editView = new VideoEditView( {model : model} );\n\n\t\t\t\t\tthis.registerSubview( this.editView );\n\t\t\t\t\tthis.model.set( 'mode', 'editVideo' );\n\t\t\t\t\tthis.render();\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// We just hit the edit button with the edit window already open.\n\t\t\t\t\tif ( 'editPlaylist' === this.model.get( 'mode' ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.editView = new PlaylistEditView( {model : model} );\n\n\t\t\t\t\tthis.registerSubview( this.editView );\n\t\t\t\t\tthis.model.set( 'mode', 'editPlaylist' );\n\t\t\t\t\tthis.render();\n\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'preview:media', function ( model ) {\n\n\t\t\t\tvar mediaType = this.model.get( 'mediaType' );\n\n\t\t\t\tif ( mediaType === 'videos' ) {\n\n\t\t\t\t\t// We just hit the preview button with the preview window already open.\n\t\t\t\t\tif ( 'previewVideo' === this.model.get( 'mode' ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.previewView = new VideoPreviewView( {model : model} );\n\n\t\t\t\t\tthis.registerSubview( this.previewView );\n\t\t\t\t\tthis.model.set( 'mode', 'previewVideo' );\n\t\t\t\t\tthis.render();\n\n\t\t\t\t} else {\n\n\t\t\t\t\t/**\n\t\t\t\t\t * @todo: playlist preview view\n\t\t\t\t\t */\n\t\t\t\t\tthis.model.set( 'mode', 'editPlaylist' );\n\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:searchTerm', function ( mediaView ) {\n\t\t\t\tthis.clearPreview();\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'select:media', function ( mediaView ) {\n\n\t\t\t\t/* If user selects same thumbnail they want to hide the details view */\n\t\t\t\tif ( this.detailsView && this.detailsView.model === mediaView.model ) {\n\n\t\t\t\t\tthis.detailsView.$el.toggle();\n\t\t\t\t\tmediaView.$el.toggleClass( 'highlighted' );\n\t\t\t\t\tthis.model.get( 'media-collection-view' ).$el.toggleClass( 'menu-visible' );\n\t\t\t\t\twpbc.broadcast.trigger( 'toggle:insertButton' );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.clearPreview();\n\t\t\t\t\tthis.detailsView = new MediaDetailsView( {model : mediaView.model, el : $( '.brightcove.media-frame-menu' ), mediaType : this.model.get( 'mediaType' )} );\n\t\t\t\t\tthis.registerSubview( this.detailsView );\n\n\t\t\t\t\tthis.detailsView.render();\n\t\t\t\t\tthis.detailsView.$el.toggle( true ); // Always show new view\n\t\t\t\t\tthis.model.get( 'media-collection-view' ).$el.addClass( 'menu-visible' );\n\t\t\t\t\tmediaView.$el.addClass( 'highlighted' );\n\t\t\t\t\twpbc.broadcast.trigger( 'toggle:insertButton', 'enabled' );\n\n\t\t\t\t}\n\t\t\t} );\n\n\t\t},\n\n\t\t/**\n\t\t * Clear the preview view and remove highlighted class from previous selected video.\n\t\t */\n\t\tclearPreview : function () {\n\n\t\t\tif ( this.detailsView instanceof MediaDetailsView ) {\n\t\t\t\tthis.detailsView.remove();\n\t\t\t}\n\n\t\t\tthis.model.get( 'media-collection-view' ).$el.find( '.highlighted' ).removeClass( 'highlighted' );\n\n\t\t},\n\n\t\tstartGridView : function () {\n\n\t\t\tthis.model.set( 'mode', 'manager' );\n\t\t\tthis.render();\n\n\t\t},\n\n\t\tmessage : function ( message, type, permanent ) {\n\n\t\t\tvar messages = this.$el.find( '.brightcove-message' );\n\n\t\t\tif ( 'success' === type ) {\n\n\t\t\t\tmessages.addClass( 'updated' );\n\t\t\t\tmessages.removeClass( 'error' );\n\n\t\t\t} else if ( 'error' === type ) {\n\n\t\t\t\tmessages.addClass( 'error' );\n\t\t\t\tmessages.removeClass( 'updated' );\n\n\t\t\t}\n\n\t\t\tvar newMessage = $( '

' );\n\t\t\tnewMessage.text( message );\n\n\t\t\tmessages.append( newMessage );\n\t\t\tmessages.removeClass( 'hidden' );\n\n\t\t\tif ( permanent ) {\n\n\t\t\t\tif ( wpbc.permanentMessage ) {\n\t\t\t\t\twpbc.permanentMessage.remove();\n\t\t\t\t}\n\n\t\t\t\twpbc.permanentMessage = newMessage;\n\n\t\t\t} else {\n\t\t\t\t// Make the notice dismissable.\n\t\t\t\tmessages.addClass( 'notice is-dismissible' );\n\t\t\t\tthis.makeNoticesDismissible();\n\t\t\t}\n\t\t},\n\n\t\t// Make notices dismissible, mimics core function, fades them empties.\n\t\tmakeNoticesDismissible : function() {\n\t\t\t$( '.notice.is-dismissible' ).each( function() {\n\t\t\t\tvar $el = $( this ),\n\t\t\t\t\t$button = $( '' ),\n\t\t\t\t\tbtnText = commonL10n.dismiss || '';\n\n\t\t\t\t// Ensure plain text\n\t\t\t\t$button.find( '.screen-reader-text' ).text( btnText );\n\t\t\t\t$button.on( 'click.wp-dismiss-notice', function( event ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t$el.fadeTo( 100, 0, function() {\n\t\t\t\t\t\t$el.slideUp( 100, function() {\n\t\t\t\t\t\t\t$el.addClass( 'hidden' )\n\t\t\t\t\t\t\t\t.css( {\n\t\t\t\t\t\t\t\t\t'opacity': 1,\n\t\t\t\t\t\t\t\t\t'margin-bottom': 0,\n\t\t\t\t\t\t\t\t\t'display': ''\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t.empty();\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\t$el.append( $button );\n\t\t\t});\n\t\t},\n\n\t\tshowUploader : function () {\n\n\t\t\tthis.model.set( 'mode', 'uploader' );\n\t\t\tthis.render();\n\n\t\t},\n\n\t\tpermanentMessage : function ( message ) {\n\t\t\tthis.message( message, 'error', true );\n\t\t},\n\n\t\trender : function () {\n\n\t\t\tvar options = this.model.get( 'options' );\n\t\t\tvar contentContainer;\n\n\t\t\tvar mode = this.model.get( 'mode' );\n\n\t\t\t// Nuke all registered subviews\n\t\t\t_.invoke( this.subviews, 'remove' );\n\n\t\t\tif ( 'uploader' === mode ) {\n\n\t\t\t\tthis.template = wp.template( 'brightcove-uploader-container' );\n\n\t\t\t\tthis.$el.empty();\n\t\t\t\tthis.$el.html( this.template( options ) );\n\t\t\t\tthis.uploader.render();\n\t\t\t\tthis.uploader.delegateEvents();\n\t\t\t\tthis.uploader.$el.appendTo( $( '.brightcove-uploader' ) );\n\n\t\t\t} else if ( 'manager' === mode ) {\n\n\t\t\t\tthis.template = wp.template( 'brightcove-media' );\n\n\t\t\t\tthis.$el.html( this.template( options ) );\n\t\t\t\tthis.toolbar.render();\n\t\t\t\tthis.toolbar.delegateEvents();\n\t\t\t\tthis.toolbar.$el.show();\n\t\t\t\tthis.toolbar.$el.appendTo( this.$el.find( '.media-frame-router' ) );\n\n\t\t\t\t// Add the Media views to the media manager\n\t\t\t\tvar mediaCollectionView = this.model.get( 'media-collection-view' );\n\n\t\t\t\tmediaCollectionView.render();\n\t\t\t\tmediaCollectionView.delegateEvents();\n\n\t\t\t\tvar mediaCollectionContainer = this.$el.find( '.media-frame-content' );\n\n\t\t\t\tmediaCollectionContainer.on( 'scroll', this.scrollHandler );\n\t\t\t\tmediaCollectionView.$el.appendTo( mediaCollectionContainer );\n\n\t\t\t\tif ( ! ! wpbc.initialSync ) {\n\n\t\t\t\t\twpbc.broadcast.trigger( 'remove:permanentMessage' );\n\t\t\t\t\twpbc.broadcast.trigger( 'permanent:message', wpbc.preload.messages.ongoingSync );\n\n\t\t\t\t}\n\t\t\t} else if ( 'editVideo' === mode ) {\n\n\t\t\t\tthis.toolbar.$el.hide();\n\n\t\t\t\tcontentContainer = this.$el.find( '.media-frame-content' );\n\n\t\t\t\tcontentContainer.empty();\n\t\t\t\tthis.editView.render();\n\t\t\t\tthis.editView.delegateEvents();\n\t\t\t\tthis.editView.$el.appendTo( contentContainer );\n\t\t\t\tthis.$el.find( '.brightcove.media-frame-content' ).addClass( 'edit-view' );\n\n\t\t\t} else if ( 'editPlaylist' === mode ) {\n\n\t\t\t\tthis.toolbar.$el.hide();\n\n\t\t\t\tcontentContainer = this.$el;\n\n\t\t\t\tcontentContainer.empty();\n\t\t\t\tcontentContainer.html( '
' );\n\n\t\t\t\tcontentContainer = contentContainer.find( '.playlist-edit-container' );\n\n\t\t\t\tthis.editView.render();\n\t\t\t\tthis.editView.delegateEvents();\n\t\t\t\tthis.editView.$el.appendTo( contentContainer );\n\t\t\t\tcontentContainer.addClass( 'playlist' );\n\n\t\t\t} else if ( 'previewVideo' === mode ) {\n\n\t\t\t\tthis.toolbar.$el.hide();\n\n\t\t\t\tcontentContainer = this.$el.find( '.media-frame-content' );\n\n\t\t\t\tcontentContainer.empty();\n\t\t\t\tthis.previewView.render();\n\t\t\t\tthis.detailsView.render( {detailsMode : 'preview'} );\n\t\t\t\tthis.previewView.delegateEvents();\n\t\t\t\tthis.previewView.$el.appendTo( contentContainer );\n\t\t\t\tthis.$el.find( '.brightcove.media-frame-toolbar' ).hide();\n\t\t\t\tbrightcove.createExperiences();\n\n\t\t\t}\n\n\t\t\tif ( 'editPlaylist' !== mode ) {\n\t\t\t\tthis.$el.find( '.media-frame-content' ).removeClass( 'playlist' );\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t}\n);\n","var BrightcoveModalView = BrightcoveView.extend(\n\t{\n\t\ttagName : 'div',\n\t\tclassName : 'media-modal brightcove',\n\t\ttemplate : wp.template( 'brightcove-media-modal' ),\n\n\t\tevents : {\n\t\t\t'click .brightcove.media-menu-item' : 'changeTab',\n\t\t\t'click .brightcove.media-button-insert' : 'insertIntoPost',\n\t\t\t'click .brightcove.media-modal-icon' : 'closeModal',\n\t\t\t'click .brightcove.save-sync' : 'saveSync',\n\t\t\t'click .brightcove.button.back' : 'back'\n\t\t},\n\n\t\tinitialize : function ( options ) {\n\t\t\tthis.model = new BrightcoveModalModel( {tab : options.tab} );\n\t\t\tthis.brightcoveMediaManager = new BrightcoveMediaManagerView( this.model.getMediaManagerSettings() );\n\t\t\tthis.registerSubview( this.brightcoveMediaManager );\n\t\t\tthis.listenTo( wpbc.broadcast, 'toggle:insertButton', function ( state ) {\n\t\t\t\tthis.toggleInsertButton( state );\n\t\t\t} );\n\t\t\tthis.listenTo( wpbc.broadcast, 'close:modal', this.closeModal );\n\t\t},\n\n\t\tsaveSync : function( evnt ) {\n\t\t\t// This event is triggered when the \"Save and Sync Changes\" button is clicked from edit video screen.\n\t\t\twpbc.broadcast.trigger( 'save:media', evnt );\n\t\t},\n\n\t\tback : function( evnt ) {\n\t\t\t// This event is triggered when the \"Back\" button is clicked from edit video screen.\n\t\t\twpbc.broadcast.trigger( 'back:editvideo', evnt );\n\t\t},\n\n\t\tinsertIntoPost : function ( evnt ) {\n\t\t\tevnt.preventDefault();\n\n\t\t\t// Exit if the 'button' is disabled.\n\t\t\tif ( $( evnt.currentTarget ).hasClass( 'disabled' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\twpbc.shortcode = $( '#shortcode' ).val();\n\n\t\t\t// Media Details will trigger the insertion since it's always active and contains\n\t\t\t// the model we're inserting\n\t\t\twpbc.broadcast.trigger( 'insert:shortcode' );\n\t\t},\n\n\t\ttoggleInsertButton : function ( state ) {\n\t\t\tvar button = this.$el.find( '.brightcove.media-button-insert' ),\n\t\t\t\tprocessing = $('.attachment.highlighted' ).find( '.processing' ).length;\n\n\t\t\tbutton.show();\n\n\t\t\tif ( 1 === processing ) {\n\t\t\t\tbutton.attr( 'disabled', 'disabled' );\n\t\t\t} else if ( 'enabled' === state ) {\n\t\t\t\tbutton.removeAttr( 'disabled' );\n\t\t\t} else if ( 'disabled' === state ) {\n\t\t\t\tbutton.attr( 'disabled', 'disabled' );\n\t\t\t} else if ( undefined !== button.attr( 'disabled' ) ) {\n\t\t\t\tbutton.removeAttr( 'disabled' );\n\t\t\t} else {\n\t\t\t\tbutton.attr( 'disabled', 'disabled' );\n\t\t\t}\n\t\t},\n\n\t\tchangeTab : function ( event ) {\n\t\t\tevent.preventDefault();\n\n\t\t\tif ( $( event.target ).hasClass( 'active' ) ) {\n\t\t\t\treturn; // Clicking the already active tab\n\t\t\t}\n\t\t\t$( event.target ).addClass( 'active' );\n\t\t\tvar tab = _.without( event.target.classList, 'media-menu-item', 'brightcove' )[0];\n\t\t\tvar tabs = ['videos', 'upload', 'playlists'];\n\t\t\t_.each( _.without( tabs, tab ), function ( otherTab ) {\n\t\t\t\t$( '.brightcove.media-menu-item.' + otherTab ).removeClass( 'active' );\n\t\t\t} );\n\n\t\t\tif ( _.contains( tabs, tab ) ) {\n\t\t\t\tthis.model.set( 'tab', tab );\n\t\t\t\twpbc.broadcast.trigger( 'spinner:off' );\n\t\t\t\twpbc.broadcast.trigger( 'tabChange', this.model.getMediaManagerSettings() );\n\t\t\t}\n\n\t\t},\n\n\t\tcloseModal : function ( evnt ) {\n\n\t\t\t// If we are in the editVideo mode, switch back to the video view.\n\t\t\tif ( 'editVideo' === wpbc.modal.brightcoveMediaManager.model.get('mode') ) {\n\t\t\t\twpbc.broadcast.trigger( 'start:gridview' );\n\t\t\t}\n\n\t\t\t// Exit if the container button is disabled.\n\t\t\tif ( ! _.isUndefined( evnt ) && $( evnt.currentTarget ).parent().hasClass( 'disabled' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.$el.hide();\n\t\t\t$( 'body' ).removeClass( 'modal-open' );\n\t\t},\n\n\t\tmessage : function ( message ) {\n\t\t\tvar messageContainer = this.$el.find( '.brightcove-message' );\n\n\t\t},\n\n\t\trender : function ( options ) {\n\t\t\tthis.$el.html( this.template( options ) );\n\n\t\t\tthis.brightcoveMediaManager.render();\n\t\t\tthis.brightcoveMediaManager.$el.appendTo( this.$el.find( '.media-frame-content' ) );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'edit:media', function( model, mediaType ) {\n\t\t\t\tif ( 'videos' === mediaType ) {\n\t\t\t\t\t// When edit Video screen is opened, hide the \"Insert Into Post\" button and show video save button.\n\t\t\t\t\tthis.$el.find( '.brightcove.button.save-sync' ).show();\n\t\t\t\t\tthis.$el.find( '.brightcove.button.back' ).show();\n\t\t\t\t\tthis.$el.find( '.brightcove.media-button-insert' ).hide();\n\t\t\t\t} else {\n\t\t\t\t\t// When edit playlist screen is opened, hide all the buttons.\n\t\t\t\t\tthis.$el.find( '.brightcove.button.save-sync' ).hide();\n\t\t\t\t\tthis.$el.find( '.brightcove.button.back' ).hide();\n\t\t\t\t\tthis.$el.find( '.brightcove.media-button-insert' ).hide();\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'save:media back:editvideo start:gridView', function() {\n\t\t\t\tthis.$el.find( '.brightcove.button.save-sync' ).hide();\n\t\t\t\tthis.$el.find( '.brightcove.button.back' ).hide();\n\t\t\t\tthis.$el.find( '.brightcove.media-button-insert' ).show();\n\t\t\t\twpbc.broadcast.trigger( 'toggle:insertButton' );\n\t\t\t} );\n\t\t}\n\n\t}\n);\n\n","var MediaDetailsView = BrightcoveView.extend(\n\t{\n\t\ttagName : 'div',\n\t\tclassName : 'media-details',\n\n\t\tattributes : function () {\n\t\t\treturn {\n\t\t\t\t'tabIndex' : 0,\n\t\t\t\t'role' : 'checkbox',\n\t\t\t\t'aria-label' : this.model.get( 'title' ),\n\t\t\t\t'aria-checked' : false,\n\t\t\t\t'data-id' : this.model.get( 'id' )\n\t\t\t};\n\t\t},\n\n\t\tevents : {\n\t\t\t'click .brightcove.edit.button' : 'triggerEditMedia',\n\t\t\t'click .brightcove.preview.button' : 'triggerPreviewMedia',\n\t\t\t'click .brightcove.back.button' : 'triggerCancelPreviewMedia',\n 'change #aspect-ratio' : 'toggleUnits',\n 'change #video-player, #autoplay, input[name=\"embed-style\"], input[name=\"sizing\"], #aspect-ratio, #width, #height, #units' : 'generateShortcode',\n\t\t\t'change #generate-shortcode' : 'toggleShortcodeGeneration',\n\t\t},\n\n\t\ttriggerEditMedia : function ( event ) {\n\t\t\tevent.preventDefault();\n\t\t\twpbc.broadcast.trigger( 'edit:media', this.model, this.mediaType );\n\t\t},\n\n\t\ttriggerPreviewMedia : function ( event ) {\n\t\t\tevent.preventDefault();\n\t\t\twpbc.broadcast.trigger( 'preview:media', this.model );\n\t\t},\n\n\t\ttriggerCancelPreviewMedia : function ( event ) {\n\t\t\twpbc.broadcast.trigger( 'cancelPreview:media', this.mediaType );\n\t\t},\n\n\t\ttoggleUnits: function( event ) {\n\t\t\tvar value = $( '#aspect-ratio' ).val();\n\n\t\t\tif ( 'custom' === value ) {\n\t\t\t\t$( '#custom' ).show();\n\t\t\t} else {\n $( '#custom' ).hide();\n\t\t\t}\n\t\t},\n\n\t\tgenerateShortcode: function () {\n\t\t var videoId = this.model.get( 'id' ).replace( /\\D/g, '' ),\n accountId = this.model.get( 'account_id' ).replace( /\\D/g, '' ),\n\t\t\t\tplayerId = $( '#video-player' ).val(),\n\t\t\t\tautoplay = ( $( '#autoplay' ).is( ':checked' ) ) ? 'autoplay': '',\n\t\t\t\tembedstyle = $( 'input[name=\"embed-style\"]:checked' ).val(),\n sizing = $( 'input[name=\"sizing\"]:checked' ).val(),\n\t\t\t\taspectRatio = $( '#aspect-ratio' ).val(),\n\t\t\t\tminWidth = '0px',\n\t\t\t\tmaxWidth = $( '#width' ).val(),\n\t\t\t\tpaddingTop = '',\n\t\t\t\twidth = $( '#width' ).val(),\n\t\t\t\theight = $( '#height' ).val(),\n\t\t\t\tunits = $( '#units' ).val(),\n\t\t\t\tshortcode;\n\n\t\t if ( '16:9' === aspectRatio ) {\n\t\t \tpaddingTop = '56';\n\t\t\t} else if ( '4:3' === aspectRatio ) {\n\t\t \tpaddingTop = '75';\n\t\t\t} else {\n\t\t paddingTop = ( height / width * 100 );\n\t\t\t}\n\n\t\t\tif ( 'responsive' === sizing ) {\n\t\t \twidth = '100';\n\t\t \theight = '100';\n\t\t\t}\n\n shortcode = '[bc_video video_id=\"' + videoId + '\" account_id=\"' + accountId + '\" player_id=\"' + playerId + '\" ' +\n\t\t\t\t'embed=\"' + embedstyle + '\" padding_top=\"' + paddingTop + '%\" autoplay=\"' + autoplay + '\" ' +\n\t\t\t\t'min_width=\"' + minWidth + '\" max_width=\"' + maxWidth + '\" ' +\n 'width=\"' + width + units + '\" height=\"' + height + units + '\"' +\n\t\t\t\t']';\n\n\t\t $( '#shortcode' ).val( shortcode );\n },\n\n\t\ttoggleShortcodeGeneration: function () {\n\t\t var method = $( '#generate-shortcode' ).val(),\n $fields = $( '#video-player, #autoplay, input[name=\"embed-style\"], input[name=\"sizing\"], #aspect-ratio, #width, #height, #units' );\n\n\t\t if ( 'manual' === method ) {\n\t\t \t$( '#shortcode' ).removeAttr( 'readonly' );\n $fields.attr( 'disabled', true );\n\t\t\t} else {\n $( '#shortcode' ).attr( 'readonly', true );\n $fields.removeAttr( 'disabled' );\n\t\t\t}\n },\n\n\t\tinitialize : function ( options ) {\n\t\t\toptions = options || {};\n\t\t\tthis.type = options.type ? options.type : 'grid';\n\t\t\tthis.mediaType = options.mediaType;\n\t\t\tthis.listenTo( wpbc.broadcast, 'insert:shortcode', this.insertShortcode );\n\t\t\tthis.listenTo( this.model, 'change', this.render );\n\t\t},\n\n\t\t/**\n\t\t * @returns {wp.media.view.Media} Returns itself to allow chaining\n\t\t */\n\t\trender : function ( options ) {\n\t\t\toptions = _.extend( {}, options, this.model.toJSON() );\n\t\t\toptions.duration = this.model.getReadableDuration();\n\t\t\toptions.updated_at_readable = this.model.getReadableDate( 'updated_at' );\n\t\t\toptions.created_at_readable = this.model.getReadableDate( 'created_at' );\n\t\t\toptions.account_name = this.model.getAccountName();\n\n\t\t\tthis.template = wp.template( 'brightcove-media-item-details-' + this.mediaType );\n\n\t\t\tthis.$el.html( this.template( options ) );\n\n\t\t\tthis.delegateEvents();\n this.generateShortcode();\n\n\t\t\treturn this;\n\t\t},\n\n\t\t/* Prevent this.remove() from removing the container element for the details view */\n\t\tremove : function () {\n\t\t\tthis.undelegateEvents();\n\t\t\tthis.$el.empty();\n\t\t\tthis.stopListening();\n\t\t\treturn this;\n\t\t}\n\t}\n);\n\n","var MediaView = BrightcoveView.extend(\n\t{\n\t\ttagName : 'li',\n\t\tclassName : 'attachment brightcove',\n\n\t\tattributes : function () {\n\t\t\treturn {\n\t\t\t\t'tabIndex' : 0,\n\t\t\t\t'role' : 'checkbox',\n\t\t\t\t'aria-label' : this.model.get( 'title' ),\n\t\t\t\t'aria-checked' : false,\n\t\t\t\t'data-id' : this.model.get( 'id' )\n\t\t\t};\n\t\t},\n\n\t\tevents : {\n\t\t\t'click .attachment-preview' : 'toggleDetailView',\n\t\t\t'click .video-move-up' : 'videoMoveUp',\n\t\t\t'click .video-move-down' : 'videoMoveDown',\n\t\t\t'click .trash' : 'removeVideoFromPlaylist',\n\t\t\t'click .add-to-playlist' : 'videoAdd',\n\t\t\t'click .edit' : 'triggerEditMedia',\n\t\t\t'click .preview' : 'triggerPreviewMedia'\n\t\t},\n\n\t\ttriggerEditMedia : function ( event ) {\n\t\t\tevent.preventDefault();\n\t\t\twpbc.broadcast.trigger( 'edit:media', this.model );\n\t\t},\n\n\t\ttriggerPreviewMedia : function ( event ) {\n\t\t\tevent.preventDefault();\n\t\t\twpbc.broadcast.trigger( 'preview:media', this.model );\n\t\t},\n\n\t\tbuttons : {},\n\n\t\tinitialize : function ( options ) {\n\t\t\toptions = options || {};\n\t\t\tthis.type = options.type ? options.type : 'grid';\n\n\t\t\t// We only care when a change occurs\n\t\t\tthis.listenTo( this.model, 'change:view', function ( model, type ) {\n\t\t\t\tif ( this.type !== type ) {\n\t\t\t\t\tthis.type = type;\n\t\t\t\t\tthis.render();\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthis.render();\n\t\t},\n\n\t\trender : function () {\n\t\t\tvar options = this.model.toJSON();\n\t\t\toptions.duration = this.model.getReadableDuration();\n\t\t\toptions.updated_at_readable = this.model.getReadableDate( 'updated_at' );\n\t\t\toptions.account_name = this.model.getAccountName();\n\n\t\t\tif ( 'existingPlaylists' === options.viewType ) {\n\t\t\t\tthis.template = wp.template( 'brightcove-playlist-edit-video-in-playlist' );\n\t\t\t} else if ( 'libraryPlaylists' === options.viewType ) {\n\t\t\t\tthis.template = wp.template( 'brightcove-playlist-edit-video-in-library' );\n\t\t\t} else {\n\t\t\t\tthis.template = wp.template( 'brightcove-media-item-' + this.type );\n\t\t\t}\n\n\t\t\toptions.buttons = this.buttons;\n\n\t\t\tthis.$el.html( this.template( options ) );\n\n\t\t\tthis.$el.toggleClass( 'uploading', options.uploading );\n\n\t\t\treturn this;\n\t\t},\n\n\t\ttoggleDetailView : function () {\n\t\t\twpbc.broadcast.trigger( 'select:media', this );\n\t\t},\n\n\t\tvideoMoveUp : function () {\n\t\t\twpbc.broadcast.trigger( 'playlist:moveUp', this );\n\t\t},\n\n\t\tvideoMoveDown : function () {\n\t\t\twpbc.broadcast.trigger( 'playlist:moveDown', this );\n\t\t},\n\n\t\tvideoAdd : function () {\n\t\t\twpbc.broadcast.trigger( 'playlist:add', this );\n\t\t},\n\n\t\tremoveVideoFromPlaylist : function () {\n\t\t\twpbc.broadcast.trigger( 'playlist:remove', this );\n\t\t}\n\t}\n);\n","var PlaylistEditView = BrightcoveView.extend(\n\t{\n\t\ttagName : 'div',\n\t\tclassName : 'playlist-edit brightcove attachment-details',\n\t\ttemplate : wp.template( 'brightcove-playlist-edit' ),\n\n\t\tevents : {\n\t\t\t'click .brightcove.button.save-sync' : 'saveSync',\n\t\t\t'click .brightcove.playlist-back' : 'back',\n\t\t\t'change .brightcove-name' : 'updatedName'\n\t\t},\n\n\t\tdeleteVideo : function ( event ) {\n\t\t\tevent.preventDefault();\n\t\t\tthis.model.set( 'mediaType', 'videos' );\n\t\t\tthis.model.destroy();\n\t\t},\n\n\t\tupdatedName : function ( event ) {\n\t\t\tvar name = this.model.get( 'name' );\n\t\t\tif ( name !== event.target.value ) {\n\t\t\t\tthis.model.set( 'name', event.target.value );\n\t\t\t\tthis.model.save();\n\t\t\t}\n\t\t},\n\n\t\tback : function ( event ) {\n\t\t\tevent.preventDefault();\n\t\t\twpbc.broadcast.trigger( 'start:gridview' );\n\n\t\t},\n\n\t\tsaveSync : function ( event ) {\n\t\t\tevent.preventDefault();\n\t\t\tthis.model.set( 'name', this.$el.find( '.brightcove-name' ).val() );\n\t\t\tthis.model.set( 'description', this.$el.find( '.brightcove-description' ).val() );\n\t\t\tthis.model.set( 'long_description', this.$el.find( '.brightcove-long-description' ).val() );\n\t\t\tthis.model.set( 'tags', this.$el.find( '.brightcove-tags' ).val() );\n\t\t\tthis.model.set( 'mediaType', 'videos' );\n\t\t\tthis.model.save();\n\t\t},\n\n\t\tinitialize : function () {\n\t\t\tthis.listenTo( wpbc.broadcast, 'tabChange', function () {\n\t\t\t\t_.invoke( this.subviews, 'remove' );\n\t\t\t} );\n\t\t\twpbc.broadcast.trigger( 'spinner:off' );\n\t\t},\n\n\t\trender : function ( options ) {\n\t\t\toptions = this.model.toJSON();\n\t\t\tthis.$el.html( this.template( options ) );\n\t\t\tthis.spinner = this.$el.find( '.spinner' );\n\t\t\tvar playlistVideosContainer = this.$el.find( '.existing-videos' );\n\t\t\t/*\n\t\t\t 1. Create a media collection here to fetch each of the videos in options.video_ids.\n\t\t\t */\n\n\t\t\tif ( options.video_ids ) {\n\t\t\t\tthis.killPendingRequests();\n\t\t\t\tthis.playlistVideosView = new MediaCollectionView( {el : this.$el.find( '.existing-videos' ), videoIds : options.video_ids, activeAccount : this.model.get( 'account_id' ), mediaCollectionViewType : 'existingPlaylists', mediaType : 'playlists'} );\n\t\t\t\tthis.libraryVideosView = new MediaCollectionView( {el : this.$el.find( '.library-videos' ), excludeVideoIds : options.video_ids, activeAccount : this.model.get( 'account_id' ), mediaCollectionViewType : 'libraryPlaylists', mediaType : 'playlists'} );\n\t\t\t\tthis.registerSubview( this.playlistVideosView );\n\t\t\t\tthis.registerSubview( this.libraryVideosView );\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'playlist:changed', _.throttle( this.playlistChanged, 300 ) );\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'insert:shortcode', this.insertShortcode );\n\t\t\t}\n\t\t\tthis.listenTo( wpbc.broadcast, 'spinner:on', function () {\n\t\t\t\tthis.spinner.addClass( 'is-active' ).removeClass( 'hidden' );\n\t\t\t} );\n\t\t\tthis.listenTo( wpbc.broadcast, 'spinner:off', function () {\n\t\t\t\tthis.spinner.removeClass( 'is-active' ).addClass( 'hidden' );\n\t\t\t} );\n\t\t},\n\n\t\tplaylistChanged : function ( videoIds ) {\n\t\t\tthis.killPendingRequests();\n\t\t\tthis.model.set( 'video_ids', videoIds );\n\t\t\tthis.model.save();\n\t\t},\n\n\t\tkillPendingRequests : function () {\n\t\t\t// Kill all pending requests\n\t\t\t_.each( wpbc.requests, function ( request ) {\n\t\t\t\trequest.abort();\n\t\t\t} );\n\n\t\t\twpbc.requests = [];\n\t\t},\n\n\t}\n);\n","var UploadDetailsView = BrightcoveView.extend(\n\t{\n\t\tclassName : 'brightcove-pending-upload-details attachment-details',\n\t\ttagName : 'div',\n\t\ttemplate : wp.template( 'brightcove-pending-upload-details' ),\n\n\t\tevents : {\n\t\t\t'keyup .brightcove-name' : 'nameChanged',\n\t\t\t'keyup .brightcove-tags' : 'tagsChanged',\n\t\t\t'change .brightcove-media-source' : 'accountChanged'\n\t\t},\n\n\t\tinitialize : function ( options ) {\n\t\t\tthis.listenTo( wpbc.broadcast, 'pendingUpload:hideDetails', this.hide );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:fileUploaded', function ( file ) {\n\t\t\t\tif ( file.id === this.model.get( 'id' ) ) {\n\t\t\t\t\tthis.model.set( 'uploaded', true );\n\t\t\t\t\tthis.render();\n\t\t\t\t}\n\t\t\t} );\n\t\t\tthis.model.set( 'ingestSuccess', true );\n\t\t\tthis.model.set( 'uploadSuccess', true );\n\t\t},\n\n\t\tnameChanged : function ( event ) {\n\t\t\tthis.model.set( 'fileName', event.target.value );\n\t\t},\n\n\t\ttagsChanged : function ( event ) {\n\t\t\tthis.model.set( 'tags', event.target.value );\n\t\t},\n\n\t\taccountChanged : function ( event ) {\n\t\t\tthis.model.set( 'account', event.target.value );\n\t\t},\n\n\t\thide : function () {\n\t\t\tthis.$el.hide();\n\t\t},\n\n\t\trender : function ( options ) {\n\t\t\toptions = options || {};\n\t\t\toptions.fileName = this.model.get( 'fileName' );\n\t\t\toptions.tags = this.model.get( 'tags' );\n\t\t\toptions.size = this.model.humanReadableSize();\n\t\t\toptions.accounts = this.model.get( 'accounts' );\n\t\t\toptions.account = this.model.get( 'account' );\n\t\t\toptions.uploaded = this.model.get( 'uploaded' );\n\t\t\tthis.$el.html( this.template( options ) );\n\t\t}\n\n\t}\n);\n","UploadWindowView = BrightcoveView.extend(\n\t{\n\t\tclassName : 'uploader-window',\n\t\ttemplate : wp.template( 'brightcove-uploader-window' ),\n\n\t\tinitialize : function ( options ) {\n\t\t\t_.bindAll( this, 'uploaderFilesAdded' );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:queuedFilesAdded', this.hide );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:startUpload', this.uploaderStartUpload );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:clear', this.resetUploads );\n\t\t},\n\n\t\trender : function ( options ) {\n\t\t\tthis.$el.html( this.template( options ) );\n\t\t\t_.defer( _.bind( this.afterRender, this ) );\n\t\t},\n\n\t\tresetUploads : function () {\n\t\t\tif ( this.uploader && this.uploader.files ) {\n\t\t\t\tthis.uploader.files = []; // Reset pending uploads\n\t\t\t}\n\t\t},\n\n\t\tafterRender : function () {\n\t\t\tthis.uploader = new plupload.Uploader( _.defaults( this.options, wpbc.preload.plupload ) );\n\n\t\t\t// Uploader has neither .on nor .listenTo\n\t\t\tthis.uploader.added = this.uploaderFilesAdded;\n\t\t\tthis.uploader.progress = this.uploaderUploadProgress;\n\t\t\tthis.uploader.bind( 'FilesAdded', this.uploaderFilesAdded );\n\t\t\tthis.uploader.bind( 'UploadProgress', this.uploaderUploadProgress );\n\t\t\tthis.uploader.bind( 'BeforeUpload', this.uploaderBeforeUpload );\n\t\t\tthis.uploader.bind( 'FileUploaded', this.uploaderFileUploaded );\n\n\t\t\tthis.uploader.bind( 'init', this.uploaderAfterInit );\n\n\t\t\tthis.uploader.init();\n\t\t\t$( 'html' ).on( 'dragenter', _.bind( this.show, this ) );\n\t\t\t/* the following dropzone function code is taken from the wp.Uploader code */\n\t\t\tvar drop_element = wpbc.preload.plupload.drop_element.replace( /[^a-zA-Z0-9-]+/g, '' );\n\t\t\tvar dropzone = $( '#' + drop_element );\n\t\t\tdropzone.on( 'dropzone:leave', _.bind( this.hide, this ) );\n\t\t},\n\n\t\tuploaderAfterInit : function ( uploader ) {\n\t\t\tvar drop_element = wpbc.preload.plupload.drop_element.replace( /[^a-zA-Z0-9-]+/g, '' );\n\t\t\tvar timer, active, dragdrop,\n\t\t\t dropzone = $( '#' + drop_element );\n\n\t\t\tdragdrop = uploader.features.dragdrop;\n\n\t\t\t// Generate drag/drop helper classes.\n\t\t\tif ( ! dropzone ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdropzone.toggleClass( 'supports-drag-drop', ! ! dragdrop );\n\n\t\t\tif ( ! dragdrop ) {\n\t\t\t\treturn dropzone.unbind( '.wp-uploader' );\n\t\t\t}\n\n\t\t\t// 'dragenter' doesn't fire correctly, simulate it with a limited 'dragover'.\n\t\t\tdropzone.bind( 'dragover.wp-uploader', function () {\n\t\t\t\tif ( timer ) {\n\t\t\t\t\tclearTimeout( timer );\n\t\t\t\t}\n\n\t\t\t\tif ( active ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tdropzone.trigger( 'dropzone:enter' ).addClass( 'drag-over' );\n\t\t\t\tactive = true;\n\t\t\t} );\n\n\t\t\tdropzone.bind( 'dragleave.wp-uploader, drop.wp-uploader', function () {\n\t\t\t\t// Using an instant timer prevents the drag-over class from\n\t\t\t\t// being quickly removed and re-added when elements inside the\n\t\t\t\t// dropzone are repositioned.\n\t\t\t\t//\n\t\t\t\t// @see https://core.trac.wordpress.org/ticket/21705\n\t\t\t\ttimer = setTimeout( function () {\n\t\t\t\t\tactive = false;\n\t\t\t\t\tdropzone.trigger( 'dropzone:leave' ).removeClass( 'drag-over' );\n\t\t\t\t}, 0 );\n\t\t\t} );\n\t\t},\n\n\t\tshow : function () {\n\t\t\tvar $el = this.$el.show();\n\n\t\t\t// Ensure that the animation is triggered by waiting until\n\t\t\t// the transparent element is painted into the DOM.\n\t\t\t_.defer( function () {\n\t\t\t\t$el.css( {opacity : 1} );\n\t\t\t} );\n\t\t},\n\n\t\thide : function () {\n\t\t\tvar $el = this.$el.css( {opacity : 0} );\n\n\t\t\twp.media.transition( $el ).done( function () {\n\t\t\t\t// Transition end events are subject to race conditions.\n\t\t\t\t// Make sure that the value is set as intended.\n\t\t\t\tif ( '0' === $el.css( 'opacity' ) ) {\n\t\t\t\t\t$el.hide();\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// https://core.trac.wordpress.org/ticket/27341\n\t\t\t_.delay( function () {\n\t\t\t\tif ( '0' === $el.css( 'opacity' ) && $el.is( ':visible' ) ) {\n\t\t\t\t\t$el.hide();\n\t\t\t\t}\n\t\t\t}, 500 );\n\t\t},\n\n\t\tuploaderFilesAdded : function ( uploader, queuedFiles ) {\n\t\t\twpbc.broadcast.trigger( 'uploader:queuedFilesAdded', queuedFiles );\n\t\t},\n\n\t\tuploaderStartUpload : function () {\n\t\t\tthis.uploader.start();\n\t\t},\n\n\t\tuploaderUploadProgress : function ( up, file ) {\n\t\t\twpbc.broadcast.trigger( 'uploader:uploadProgress', file );\n\t\t},\n\n\t\tuploaderBeforeUpload : function ( up, file ) {\n\t\t\tup.settings.multipart_params = _.defaults(\n\t\t\t\twpbc.uploads[file.id],\n\t\t\t\twpbc.preload.plupload.multipart_params,\n\t\t\t\t{nonce : wpbc.preload.nonce}\n\t\t\t);\n\t\t},\n\n\t\tuploaderFileUploaded : function ( up, file, response ) {\n\t\t\tvar status = JSON.parse( response.response );\n\t\t\twpbc.broadcast.trigger( 'uploader:fileUploaded', file );\n\t\t\tif ( status.data.upload === 'success' && status.data.ingest === 'success' ) {\n\t\t\t\tif ( status.data.videoDetails ) {\n\t\t\t\t\t// Add newly uploaded file to preload list.\n\t\t\t\t\twpbc.broadcast.trigger( 'uploader:uploadedFileDetails', status.data.videoDetails );\n\t\t\t\t}\n\t\t\t\twpbc.broadcast.trigger( 'uploader:successfulUploadIngest', file );\n\t\t\t} else {\n\t\t\t\tfile.percent = 0;\n\t\t\t\tfile.status = plupload.UPLOADING;\n\t\t\t\tup.state = plupload.STARTED;\n\t\t\t\tup.trigger( 'StateChanged' );\n\t\t\t\twpbc.broadcast.trigger( 'uploader:failedUploadIngest', file );\n\t\t\t}\n\t\t}\n\t}\n);\n","var UploadView = BrightcoveView.extend(\n\t{\n\t\tclassName : 'brightcove-pending-upload',\n\t\ttagName : 'tr',\n\t\ttemplate : wp.template( 'brightcove-pending-upload' ),\n\n\t\tevents : {\n\t\t\t'click' : 'toggleRow'\n\t\t},\n\n\t\tinitialize : function () {\n\t\t\tthis.listenTo( wpbc.broadcast, 'pendingUpload:selectedRow', this.otherToggledRow );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:uploadProgress', this.uploadProgress );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:getParams', this.getParams );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:successfulUploadIngest', this.successfulUploadIngest );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:failedUploadIngest', this.failedUploadIngest );\n\n\t\t\tvar options = {\n\t\t\t\t'fileName' : this.model.get( 'name' ),\n\t\t\t\t'tags' : '',\n\t\t\t\t'accounts' : wpbc.preload.accounts, // All accounts.\n\t\t\t\t'account' : wpbc.preload.defaultAccount,\n\t\t\t\t'ingestSuccess' : false,\n\t\t\t\t'uploadSuccess' : false,\n\t\t\t\t'uploaded' : false\n\t\t\t};\n\n\t\t\tthis.model.set( options );\n\n\t\t\tthis.listenTo( this.model, 'change:fileName', this.render );\n\t\t\tthis.listenTo( this.model, 'change:account', this.render );\n\t\t},\n\n\t\trender : function ( options ) {\n\t\t\toptions = options || {};\n\t\t\toptions.fileName = this.model.get( 'fileName' );\n\t\t\toptions.size = this.model.humanReadableSize();\n\t\t\tvar sourceHash = this.model.get( 'account' );\n\t\t\toptions.accountName = wpbc.preload.accounts[sourceHash].account_name;\n\t\t\toptions.percent = this.model.get( 'percent' );\n\t\t\toptions.activeUpload = this.model.get( 'activeUpload' );\n\t\t\toptions.ingestSuccess = this.model.get( 'ingestSuccess' );\n\t\t\toptions.uploadSuccess = this.model.get( 'uploadSuccess' );\n\n\t\t\tthis.$el.html( this.template( options ) );\n\t\t\tif ( this.model.get( 'selected' ) ) {\n\t\t\t\tthis.$el.addClass( 'selected' );\n\t\t\t}\n\t\t\tif ( this.model.get( 'ingestSuccess' ) ) {\n\t\t\t\tthis.$el.addClass( 'ingest-success' );\n\t\t\t}\n\t\t\tif ( this.model.get( 'uploadSuccess' ) ) {\n\t\t\t\tthis.$el.addClass( 'upload-success' );\n\t\t\t}\n\t\t},\n\n\t\tgetParams : function ( fileId ) {\n\t\t\twpbc.broadcast.trigger( 'uploader:params', \"abcde\" );\n\t\t},\n\n\t\tfailedUploadIngest : function ( file ) {\n\t\t\t// Make sure we're acting on the right file.\n\t\t\tif ( file.id === this.model.get( 'id' ) ) {\n\t\t\t\twpbc.broadcast.trigger( 'uploader:errorMessage', wpbc.preload.messages.unableToUpload.replace( '%%s%%', this.model.get( 'fileName' ) ) );\n\t\t\t\tthis.render();\n\t\t\t}\n\t\t},\n\n\t\tsuccessfulUploadIngest : function ( file ) {\n\t\t\t// Make sure we're acting on the right file.\n\t\t\tif ( file.id === this.model.get( 'id' ) ) {\n\t\t\t\twpbc.broadcast.trigger( 'uploader:successMessage', wpbc.preload.messages.successUpload.replace( '%%s%%', this.model.get( 'fileName' ) ) );\n\t\t\t\tthis.render();\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Render if we're the active upload.\n\t\t * Re-render if we thought we were but we no longer are.\n\t\t * @param file Fired from UploadProgress on plUpload\n\t\t */\n\t\tuploadProgress : function ( file ) {\n\t\t\t// Make sure we're acting on the right file.\n\t\t\tif ( file.id === this.model.get( 'id' ) ) {\n\t\t\t\tthis.model.set( 'activeUpload', true );\n\t\t\t\tthis.model.set( 'percent', file.percent );\n\t\t\t\tthis.render();\n\t\t\t} else {\n\t\t\t\tif ( this.model.get( 'activeUpload' ) ) {\n\t\t\t\t\tthis.model.unset( 'activeUpload' );\n\t\t\t\t\tthis.render();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\ttoggleRow : function ( event ) {\n\t\t\tthis.$el.toggleClass( 'selected' );\n\t\t\tif ( this.$el.hasClass( 'selected' ) ) {\n\t\t\t\tthis.model.set( 'selected', true );\n\t\t\t\twpbc.broadcast.trigger( 'pendingUpload:selectedRow', this.cid );\n\t\t\t} else {\n\t\t\t\twpbc.broadcast.trigger( 'pendingUpload:hideDetails', this.cid );\n\t\t\t}\n\t\t},\n\n\t\totherToggledRow : function ( cid ) {\n\t\t\t// Ignore broadcast from self\n\t\t\tif ( cid !== this.cid ) {\n\t\t\t\tthis.$el.removeClass( 'selected' );\n\t\t\t\tthis.model.unset( 'selected' );\n\t\t\t} else {\n\t\t\t\twpbc.broadcast.trigger( 'pendingUpload:selectedItem', this.model );\n\t\t\t}\n\t\t}\n\t}\n);\n","var VideoEditView = BrightcoveView.extend(\n\t{\n\t\ttagName : 'div',\n\t\tclassName : 'video-edit brightcove attachment-details',\n\t\ttemplate : wp.template( 'brightcove-video-edit' ),\n\n\t\tevents : {\n\t\t\t'click .brightcove.button.save-sync' : 'saveSync',\n\t\t\t'click .brightcove.delete' : 'deleteVideo',\n\t\t\t'click .brightcove.button.back' : 'back',\n\t\t\t'click .setting .button' : 'openMediaManager',\n\t\t\t'click .attachment .check' : 'removeAttachment',\n\t\t\t'click .caption-secondary-fields .delete' : 'removeCaptionRow',\n\t\t\t'click .add-remote-caption' : 'addCaptionRow'\n\t\t},\n\n\t\tback : function ( event ) {\n\t\t\tevent.preventDefault();\n\n\t\t\t// Exit if the 'button' is disabled.\n\t\t\tif ( $( event.currentTarget ).hasClass( 'disabled' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\twpbc.broadcast.trigger( 'start:gridview' );\n\t\t},\n\n\t\tdeleteVideo : function () {\n\t\t\tif ( confirm( wpbc.preload.messages.confirmDelete ) ) {\n\t\t\t\twpbc.broadcast.trigger( 'spinner:on' );\n\t\t\t\tthis.model.set( 'mediaType', 'videos' );\n\t\t\t\tthis.model.destroy();\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Allow the user to attach a video still or thumbnail.\n\t\t *\n\t\t * @param {Event} evnt\n\t\t */\n\t\topenMediaManager: function ( evnt ) {\n\t\t\tevnt.preventDefault();\n\n\t\t\tvar elem = $( evnt.currentTarget ).parents( '.setting' ),\n\t\t\t\teditor = elem.data('editor'),\n\t\t\t\tmediaManager = wp.media.frames.brightcove = wp.media(),\n\t\t\t\tthat = this,\n\t\t\t\toptions = {\n\t\t\t\t\tstate: 'insert',\n\t\t\t\t\ttitle: wp.media.view.l10n.addMedia,\n\t\t\t\t\tmultiple: false\n\t\t\t\t};\n\n\t\t\t// Open the media manager\n\t\t\tmediaManager.open( editor, options );\n\n\t\t\t// Listen for selection of media\n\t\t\tmediaManager.on( 'select', function() {\n\t\t\t\tvar media = mediaManager.state().get( 'selection' ).first().toJSON(),\n\t\t\t\t\tfield = $( evnt ).parents( '.setting' );\n\n\t\t\t\t// Set the selected attachment to the correct field\n\t\t\t\tthat.setAttachment( media, field );\n\n\t\t\t\t// Make this action available to other areas of the application\n\t\t\t\twpbc.broadcast.trigger( 'media:selected' );\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * Set the hidden input to the ID of the selected attachment.\n\t\t *\n\t\t * @param {Object} media\n\t\t * @param {String} field\n\t\t * @returns {boolean}\n\t\t */\n\t\tsetAttachment: function( media, field ) {\n\t\t\tvar field = field.prevObject[0].currentTarget,\n\t\t\t\tfield = $( field ).prev( 'input' ),\n\t\t\t\tattachment = field.parents( '.attachment' ),\n\t\t\t\tpreview = attachment.find( '.-image' );\n\n\t\t\t// Perform different setup actions based on the type of upload\n\t\t\tif ( attachment.context.className.indexOf( 'captions' ) > -1 ) {\n\t\t\t\t// Executed if the user is uploading a closed caption\n\t\t\t\tif ( 'vtt' === media.subtype ) {\n\t\t\t\t\tthis.addCaptionRow( false, media );\n\t\t\t\t} else {\n\t\t\t\t\tvar template = wp.template( 'brightcove-badformat-notice' );\n\n\t\t\t\t\t// Throw a notice to the user that the file is not the correct format\n\t\t\t\t\t$( '.brightcove-media-videos' ).prepend( template );\n\n\t\t\t\t\t// Allow the user to dismiss the notice\n\t\t\t\t\t$( '.badformat.notice-dismiss' ).on( 'click', function() {\n\t\t\t\t\t\t$( '.notice.badformat' ).first().fadeOut( 500, function() {\n\t\t\t\t\t\t\t$( this ).remove();\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Executed if the user is uploading a poster image or thumbnail\n\t\t\t\tvar selectedMedia = {\n\t\t\t\t\turl: media.sizes.full.url,\n\t\t\t\t\twidth: media.sizes.full.width,\n\t\t\t\t\theight: media.sizes.full.height\n\t\t\t\t};\n\n\t\t\t\t// Set up our preview image\n\t\t\t\tvar image = document.createElement( 'img' );\n\n\t\t\t\t// Set image properties\n\t\t\t\timage.src = media.sizes.full.url;\n\t\t\t\timage.className = 'thumbnail';\n\n\t\t\t\t// Display a preview image\n\t\t\t\tattachment.addClass( 'active' );\n\t\t\t\tpreview.html( image ); // .html() considered okay because auth is required to view this screen\n\t\t\t}\n\n\t\t\t// Add our meta to the hidden field\n\t\t\tfield.val( JSON.stringify( selectedMedia ) );\n\t\t},\n\n\t\t/**\n\t\t * Allow the user to remove media from a given field.\n\t\t *\n\t\t * @param {Event} evnt\n\t\t * @returns {boolean}\n\t\t */\n\t\tremoveAttachment: function( evnt ) {\n\t\t\tvar container = $( evnt.currentTarget ).parents( '.attachment' ),\n\t\t\t\timage = container.find( '.-image' ),\n\t\t\t\tfield = container.next( 'input' );\n\n\t\t\t// Empty the field\n\t\t\tfield.val( '' );\n\n\t\t\t// Remove the preview image\n\t\t\tcontainer.removeClass( 'active' );\n\t\t\timage.empty();\n\t\t},\n\n\t\t/**\n\t\t * Add a caption row\n\t\t *\n\t\t * @param {Event} evnt\n\t\t * @param {Object} media\n\t\t */\n\t\taddCaptionRow: function( evnt, media ) {\n\t\t\t// If using the add remote file link, prevent the page from jumping to the top\n\t\t\tif ( evnt ) {\n\t\t\t\tevnt.preventDefault();\n\t\t\t}\n\n\t\t\tvar source = undefined;\n\t\t\tif ( media ) {\n\t\t\t\tsource = media.url;\n\t\t\t}\n\n\t\t\tthis.addCaption( source );\n\t\t},\n\n\t\taddCaption: function( source, language, label ) {\n\t\t\tvar newRow = $( document.getElementById( 'js-caption-empty-row' ) ).clone(),\n\t\t\t\tcontainer = document.getElementById( 'js-captions' ),\n\t\t\t\tcaptionUrl = document.getElementById( 'js-caption-url' );\n\n\t\t\t// Clean up our cloned row\n\t\t\tnewRow.find( 'input' ).prop( 'disabled', false );\n\t\t\tnewRow.removeAttr( 'id' );\n\t\t\tnewRow.removeClass( 'empty-row' );\n\n\t\t\tif ( source ) {\n\t\t\t\tnewRow.find( '.brightcove-captions' ).val( source );\n\t\t\t}\n\n\t\t\tif ( language ) {\n\t\t\t\tnewRow.find( '.brightcove-captions-language' ).val( language );\n\t\t\t}\n\n\t\t\tif ( label ) {\n\t\t\t\tnewRow.find( '.brightcove-captions-label' ).val( label );\n\t\t\t}\n\n\t\t\t// Append our new row to the container\n\t\t\t$( container ).append( newRow );\n\n\t\t\t// Update the context button text\n\t\t\tthis.updateCaptionText();\n\t\t},\n\n\t\t/**\n\t\t * Remove a caption\n\t\t *\n\t\t * @param {Event} evnt\n\t\t */\n\t\tremoveCaptionRow: function( evnt ) {\n\t\t\tevnt.preventDefault();\n\n\t\t\tvar caption = evnt.currentTarget,\n\t\t\t\tcontainer = $( caption ).parents( '.caption-repeater' ),\n\t\t\t\tsource = container.find( '.brightcove-captions' ),\n\t\t\t\tlanguage = container.find( '.brightcove-captions-launguage' ),\n\t\t\t\tlabel = container.find( '.brightcove-captions-label' );\n\n\t\t\t// Empty the input fields\n\t\t\t$( source ).val( '' );\n\t\t\t$( language ).val( '' );\n\t\t\t$( label ).val( '' );\n\n\t\t\t// Remove the container entirely\n\t\t\tcontainer.remove();\n\n\t\t\t// Update the context button text\n\t\t\tthis.updateCaptionText();\n\t\t},\n\n\t\t/**\n\t\t * Updates the caption text based on number of captions\n\t\t */\n\t\tupdateCaptionText: function() {\n\t\t\tvar button = $( '.captions .button-secondary' ),\n\t\t\t\tlink = $( '.add-remote-caption' );\n\n\t\t\tif ( 1 < document.getElementsByClassName( 'caption-repeater' ).length ) {\n\t\t\t\tbutton.text( wpbc.str_addcaption );\n\t\t\t\tlink.text( wpbc.str_addremote );\n\t\t\t} else {\n\t\t\t\tbutton.text( wpbc.str_selectfile );\n\t\t\t\tlink.text( wpbc.str_useremote );\n\t\t\t}\n\t\t},\n\n\t\tsaveSync : function ( evnt ) {\n\t\t\tevnt.preventDefault();\n\n\t\t\tvar $mediaFrame = $( evnt.currentTarget ).parents( '.media-modal' ),\n\t\t\t\t$allButtons = $mediaFrame.find( '.button, .button-link'),\n\t\t\t\tSELF = this;\n\n\t\t\t// Exit if the 'button' is disabled.\n\t\t\tif ( $allButtons.hasClass( 'disabled' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Disable the button for the duration of the request.\n\t\t\t$allButtons.addClass( 'disabled' );\n\n\t\t\t// Hide the delete link for the duration of the request.\n\t\t\t$mediaFrame.find( '.delete-action' ).hide();\n\n\t\t\twpbc.broadcast.trigger( 'spinner:on' );\n\t\t\tthis.model.set( 'name', this.$el.find( '.brightcove-name' ).val() );\n\t\t\tthis.model.set( 'description', this.$el.find( '.brightcove-description' ).val() );\n\t\t\tthis.model.set( 'long_description', this.$el.find( '.brightcove-long-description' ).val() );\n\n\t\t\t// Trim whitespace and commas from tags beginning/end.\n\t\t\tthis.model.set( 'tags', this.$el.find( '.brightcove-tags' ).val().trim().replace(/(^,)|(,$)/g, '' ) );\n\t\t\tthis.model.set( 'height', this.$el.find( '.brightcove-height' ).val() );\n\t\t\tthis.model.set( 'width', this.$el.find( '.brightcove-width' ).val() );\n\t\t\tthis.model.set( 'mediaType', 'videos' );\n\t\t\tthis.model.set( 'poster', this.$el.find( '.brightcove-poster' ).val() );\n\t\t\tthis.model.set( 'thumbnail', this.$el.find( '.brightcove-thumbnail' ).val() );\n\n\t\t\t// Captions\n\t\t\tvar captions = [];\n\t\t\tthis.$el.find( '.caption-repeater.repeater-row' ).not( '.empty-row' ).each( function() {\n\t\t\t\tvar caption = $( this ),\n\t\t\t\t\tfileName = caption.find( '.brightcove-captions' ).val(),\n\t\t\t\t\textension = fileName.split( '?' )[0], // if the URL has a query string, strip it before validating filetype\n\t\t\t\t\textension = extension.split( '.' ).pop();\n\n\t\t\t\tif ( 'vtt' === extension ) {\n\t\t\t\t\tcaptions.push(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'source' : fileName,\n\t\t\t\t\t\t\t'language': caption.find( '.brightcove-captions-language' ).val(),\n\t\t\t\t\t\t\t'label' : caption.find( '.brightcove-captions-label' ).val()\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tvar template = wp.template( 'brightcove-badformat-notice' );\n\n\t\t\t\t\t// Throw a notice to the user that the file is not the correct format\n\t\t\t\t\t$( '.brightcove-media-videos' ).prepend( template );\n\n\t\t\t\t\t// Allow the user to dismiss the notice\n\t\t\t\t\t$( '.badformat.notice-dismiss' ).on( 'click', function() {\n\t\t\t\t\t\t$( '.notice.badformat' ).first().fadeOut( 500, function() {\n\t\t\t\t\t\t\t$( this ).remove();\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} );\n\t\t\tthis.model.set( 'captions', captions );\n\n\t\t\t// Custom fields\n\t\t\tvar custom = {},\n\t\t\t\tcustom_fields = this.model.get( 'custom' );\n\n\t\t\t_.each( this.$el.find( '.brightcove-custom-string, .brightcove-custom-enum' ), function( item ) {\n\t\t\t\tvar key = item.getAttribute( 'data-id' ),\n\t\t\t\t\tval = item.value.trim();\n\n\t\t\t\tif ( '' !== val ) {\n\t\t\t\t\tcustom[ key ] = val;\n\n\t\t\t\t\tvar obj = _.find( custom_fields, function( item ) { return item.id == key } );\n\t\t\t\t\tobj.value = val;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthis.model.set( 'custom_fields', custom );\n\t\t\tthis.model.set( 'custom', custom_fields );\n\n\t\t\tthis.model.save()\n\t\t\t\t.done( function() {\n\t\t\t\t\tif ( $mediaFrame.length > 0 ) {\n\t\t\t\t\t\t// Update the tag dropdown and wpbc.preload.tags with any new tag values.\n\t\t\t\t\t\tvar tagInput = $mediaFrame.find( '.brightcove-tags' ).val(),\n\t\t\t\t\t\t\teditTags,\n\t\t\t\t\t\t\tnewTags;\n\n\t\t\t\t\t\tif ( tagInput ) {\n\t\t\t\t\t\t\teditTags = tagInput.split( ',' );\n\t\t\t\t\t\t\tnewTags = _.difference( editTags, wpbc.preload.tags );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Add any new tags to the tags object and the dropdown.\n\t\t\t\t\t\t_.each( newTags, function( newTag ){\n\t\t\t\t\t\t\tnewTag = newTag.trim();\n\t\t\t\t\t\t\tif ( '' !== newTag ) {\n\t\t\t\t\t\t\t\twpbc.preload.tags.push( newTag );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t\twpbc.preload.tags.sort();\n\t\t\t\t\t}\n\t\t\t\t} )\n\t\t\t\t.always( function() {\n\t\t\t\t\t// Re-enable the button when the request has completed.\n\t\t\t\t\t$allButtons.removeClass( 'disabled' );\n\n\t\t\t\t\t// Show the delete link.\n\t\t\t\t\t$mediaFrame.find( '.delete-action' ).show();\n\t\t\t\t} );\n\n\t\t\t// Hide the video edit screen after save.\n\t\t\twpbc.broadcast.trigger( 'start:gridview' );\n\t\t},\n\n\t\t/**\n\t\t * Render the actual view for the Video Edit screen.\n\t\t *\n\t\t * @param {Object} options\n\t\t */\n\t\trender : function ( options ) {\n\t\t\tthis.listenTo( wpbc.broadcast, 'save:media', this.saveSync );\n\t\t\tthis.listenTo( wpbc.broadcast, 'back:editvideo', this.back );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'insert:shortcode', this.insertShortcode );\n\t\t\toptions = this.model.toJSON();\n\n\t\t\t// Render the model into the template\n\t\t\tthis.$el.html( this.template( options ) );\n\n\t\t\t// Render custom fields into the template\n\t\t\tvar customContainer = this.$el.find( '#brightcove-custom-fields' ),\n\t\t\t\tstringTmp = wp.template( 'brightcove-video-edit-custom-string' ),\n\t\t\t\tenumTmp = wp.template( 'brightcove-video-edit-custom-enum' );\n\n\t\t\t_.each( this.model.get('custom'), function( custom ) {\n\t\t\t\tif ( '_change_history' === custom.id ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tswitch( custom.type ) {\n\t\t\t\t\tcase 'string':\n\t\t\t\t\t\tcustomContainer.append( stringTmp( custom ) );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'enum':\n\t\t\t\t\t\tcustomContainer.append( enumTmp( custom ) );\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Render the change history\n\t\t\tvar history = this.model.get( 'history' );\n\n\t\t\tif ( history !== undefined ) {\n\t\t\t\tvar historyStr = '';\n\n\t\t\t\t// Parse our fetched JSON object\n\t\t\t\thistory = JSON.parse( history );\n\n\t\t\t\t_.each( history, function( item ) {\n\t\t\t\t\thistoryStr += item.user + ' - ' + item.time + '\\n';\n\t\t\t\t} );\n\n\t\t\t\tif ( '' !== historyStr ) {\n\t\t\t\t\tthis.$el.find( 'textarea.brightcove-change-history' ).val( historyStr );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Configure a spinner to provide feedback during updates\n\t\t\tvar spinner = this.$el.find( '.spinner' );\n\t\t\tthis.listenTo( wpbc.broadcast, 'spinner:on', function () {\n\t\t\t\tspinner.addClass( 'is-active' ).removeClass( 'hidden' );\n\t\t\t} );\n\t\t\tthis.listenTo( wpbc.broadcast, 'spinner:off', function () {\n\t\t\t\tspinner.removeClass( 'is-active' ).addClass( 'hidden' );\n\t\t\t} );\n\n\t\t\t// If there's already a poster or thumbnail set, display it\n\t\t\tif ( this.model.get( 'poster' ) ) {\n\t\t\t\tthis.displayAttachment( 'poster' );\n\t\t\t}\n\n\t\t\tif ( this.model.get( 'thumbnail' ) ) {\n\t\t\t\tthis.displayAttachment( 'thumbnail' );\n\t\t\t}\n\n\t\t\t// Captions\n\t\t\tif ( this.model.get( 'captions' ) ) {\n\t\t\t\tvar captions = this.model.get( 'captions' );\n\t\t\t\tfor ( var i = 0, l = captions.length; i < l; i++ ) {\n\t\t\t\t\tvar caption = captions[i];\n\t\t\t\t\tthis.addCaption( caption.source, caption.language, caption.label );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n);","var VideoPreviewView = BrightcoveView.extend(\n\t{\n\t\ttagName : 'div',\n\t\tclassName : 'video-preview brightcove',\n\t\ttemplate : wp.template( 'brightcove-video-preview' ),\n\n\t\trender : function ( options ) {\n\t\t\toptions = options || {};\n\t\t\toptions.id = this.model.get( 'id' );\n\t\t\toptions.account_id = this.model.get( 'account_id' );\n\t\t\tthis.$el.html( this.template( options ) );\n\t\t\tthis.listenTo( wpbc.broadcast, 'insert:shortcode', this.insertShortcode );\n\t\t}\n\n\t}\n);\n","var MediaCollectionView = BrightcoveView.extend(\n\t{\n\t\ttagName : 'ul',\n\t\tclassName : 'brightcove-media attachments',\n\n\t\tattributes : {\n\t\t\ttabIndex : - 1\n\t\t},\n\n\t\tevents : {\n\t\t\t/* scroll fired on playlist edits, but for media grids it's handled by firing 'scroll:mediaGrid' in brightcove-media-manager */\n\t\t\t'scroll' : 'scrollHandler'\n\t\t},\n\n\t\tloadMoreMediaItems : function () {\n\t\t\tthis.fetchingResults = true;\n\t\t\tthis.collection.fetch();\n\t\t},\n\n\t\tscrollHandler : function () {\n\t\t\t// We don't fetch for videos in an existing playlist\n\t\t\tif ( 'existingPlaylists' === this.collection.mediaCollectionViewType ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar scrollThreshold = 200; // How many px from bottom until we fetch the next page.\n\t\t\tif ( ! this.fetchingResults && this.el.scrollTop + this.el.clientHeight + scrollThreshold > this.el.scrollHeight ) {\n\t\t\t\tthis.collection.pageNumber += 1;\n\t\t\t\tthis.loadMoreMediaItems();\n\t\t\t}\n\t\t},\n\n\t\tinitialize : function ( options ) {\n\t\t\tthis.fetchingResults = false;\n\t\t\tthis.listenTo( wpbc.broadcast, 'fetch:finished', function () {\n\t\t\t\tthis.fetchingResults = false;\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'fetch:apiError', this.handleAPIError );\n\n\t\t\tvar scrollRefreshSensitivity = wp.media.isTouchDevice ? 300 : 200;\n\t\t\tthis.scrollHandler = _.chain( this.scrollHandler ).bind( this ).throttle( scrollRefreshSensitivity ).value();\n\t\t\tthis.listenTo( wpbc.broadcast, 'scroll:mediaGrid', this.scrollHandler );\n\t\t\toptions = options || {};\n\t\t\tthis.el.id = _.uniqueId( '__attachments-view-' );\n\n\t\t\t// Occurs on playlist edit, existing videos.\n\t\t\tif ( ! this.collection && options.videoIds ) {\n\t\t\t\tthis.collection = new MediaCollection( null, {videoIds : options.videoIds, activeAccount : options.activeAccount, mediaCollectionViewType : options.mediaCollectionViewType} );\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'playlist:moveUp', this.videoMoveUp );\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'playlist:moveDown', this.videoMoveDown );\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'playlist:remove', this.videoRemove );\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'playlist:add', this.videoAdd );\n\t\t\t} else if ( ! this.collection && 'libraryPlaylists' === options.mediaCollectionViewType ) {\n\t\t\t\tthis.collection = new MediaCollection( null, {excludeVideoIds : options.excludeVideoIds, activeAccount : options.activeAccount, mediaCollectionViewType : options.mediaCollectionViewType} );\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'playlist:remove', this.videoRemove );\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'playlist:add', this.videoAdd );\n\t\t\t}\n\n\t\t\t_.defaults( this.options, {\n\t\t\t\trefreshSensitivity : wp.media.isTouchDevice ? 300 : 200,\n\t\t\t\trefreshThreshold : 3,\n\t\t\t\tVideoView : wp.media.view.Video,\n\t\t\t\tsortable : false,\n\t\t\t\tresize : true,\n\t\t\t\tidealColumnWidth : 202\n\t\t\t} );\n\n\t\t\tthis._viewsByCid = {};\n\t\t\tthis.resizeEvent = 'resize.media-modal-columns';\n\n\t\t\tthis.listenTo( this.collection, 'add', function ( media ) {\n\t\t\t\tthis.views.add( this.createMediaView( media ), {\n\t\t\t\t\tat : this.collection.indexOf( media )\n\t\t\t\t} );\n\t\t\t}, this );\n\n\t\t\tthis.listenTo( this.collection, 'remove', function ( media ) {\n\t\t\t\tif ( media ) {\n\t\t\t\t\tif ( media.view ) {\n\t\t\t\t\t\tmedia.view.remove();\n\t\t\t\t\t} else if ( media.cid && this._viewsByCid[media.cid] ) {\n\t\t\t\t\t\tthis._viewsByCid[media.cid].remove();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, this );\n\n\t\t\tthis.listenTo( this.collection, 'reset', this.render );\n\n\t\t\t// Throttle the scroll handler and bind this.\n\t\t\tthis.scroll = _.chain( this.scroll ).bind( this ).throttle( this.options.refreshSensitivity ).value();\n\n\t\t\tthis.options.scrollElement = this.options.scrollElement || this.el;\n\t\t\t$( this.options.scrollElement ).on( 'scroll', this.scroll );\n\n\t\t\t_.bindAll( this, 'setColumns' );\n\n\t\t\tif ( this.options.resize ) {\n\t\t\t\tthis.on( 'ready', this.bindEvents );\n\t\t\t\t// this.controller.on('open', this.setColumns);\n\n\t\t\t\t// Call this.setColumns() after this view has been rendered in the DOM so\n\t\t\t\t// attachments get proper width applied.\n\t\t\t\t_.defer( this.setColumns, this );\n\t\t\t}\n\t\t},\n\n\t\thandleAPIError: function() {\n\t\t\tthis.el.innerText = wpbc.str_apifailure;\n\t\t},\n\n\t\trender : function () {\n\t\t\t// hide the spinner when content has finished loading\n\t\t\tthis.listenTo( wpbc.broadcast, 'spinner:off', function() {\n\t\t\t\t$( '#js-media-loading' ).css( 'display', 'none' );\n\t\t\t} );\n\n\t\t\tthis.$el.empty();\n\t\t\tthis.collection.each( function ( mediaModel ) {\n\t\t\t\tmediaModel.view = new MediaView( {model : mediaModel} );\n\t\t\t\tthis.registerSubview( mediaModel.view );\n\t\t\t\tmediaModel.view.render();\n\t\t\t\tmediaModel.view.delegateEvents();\n\t\t\t\tmediaModel.view.$el.appendTo( this.$el );\n\n\t\t\t\twpbc.broadcast.trigger( 'spinner:off' );\n\t\t\t}, this );\n\t\t},\n\n\t\tsetViewType : function ( type ) {\n\t\t\tthis.collection.each( function ( mediaModel ) {\n\t\t\t\tmediaModel.set( 'view', type );\n\t\t\t}, this );\n\t\t},\n\n\t\tbindEvents : function () {\n\t\t\tthis.$window.off( this.resizeEvent ).on( this.resizeEvent, _.debounce( this.setColumns, 50 ) );\n\t\t},\n\n\t\tsetColumns : function () {\n\t\t\tvar prev = this.columns,\n\t\t\t width = this.$el.width();\n\n\t\t\tif ( width ) {\n\t\t\t\tthis.columns = Math.min( Math.round( width / this.options.idealColumnWidth ), 12 ) || 1;\n\n\t\t\t\tif ( ! prev || prev !== this.columns ) {\n\t\t\t\t\tthis.$el.closest( '.media-frame-content' ).attr( 'data-columns', this.columns );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @param {wp.media.model.Video} attachment\n\t\t * @returns {wp.media.View}\n\t\t */\n\t\tcreateMediaView : function ( attachment ) {\n\t\t\tattachment.set( 'viewType', this.collection.mediaCollectionViewType );\n\t\t\tvar view = new MediaView( {\n\t\t\t\tcontroller : this.controller,\n\t\t\t\tmodel : attachment,\n\t\t\t\tcollection : this.collection,\n\t\t\t\tselection : this.options.selection\n\t\t\t} );\n\t\t\tthis.registerSubview( view );\n\t\t\tthis._viewsByCid[attachment.cid] = view;\n\t\t\treturn view;\n\t\t},\n\n\t\tprepare : function () {\n\t\t\t// Create all of the Video views, and replace\n\t\t\t// the list in a single DOM operation.\n\t\t\tif ( this.collection.length ) {\n\t\t\t\tthis.views.set( this.collection.map( this.createMediaView, this ) );\n\n\t\t\t\t// If there are no elements, clear the views and load some.\n\t\t\t} else {\n\t\t\t\tthis.views.unset();\n\t\t\t\tthis.collection.more().done( this.scroll );\n\t\t\t}\n\t\t},\n\n\t\tready : function () {\n\t\t\t// Trigger the scroll event to check if we're within the\n\t\t\t// threshold to query for additional attachments.\n\t\t\tthis.scroll();\n\t\t},\n\n\t\tscroll : function () {\n\t\t\tvar view = this,\n\t\t\t el = this.options.scrollElement,\n\t\t\t scrollTop = el.scrollTop,\n\t\t\t toolbar;\n\n\t\t\t// The scroll event occurs on the document, but the element\n\t\t\t// that should be checked is the document body.\n\t\t\tif ( el === document ) {\n\t\t\t\tel = document.body;\n\t\t\t\tscrollTop = $( document ).scrollTop();\n\t\t\t}\n\n\t\t\tif ( 'function' !== this.collection.hasMore || ! $( el ).is( ':visible' ) || ! this.collection.hasMore() ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttoolbar = this.views.parent.toolbar;\n\n\t\t\t// Show the spinner only if we are close to the bottom.\n\t\t\tif ( el.scrollHeight - ( scrollTop + el.clientHeight ) < el.clientHeight / 3 ) {\n\t\t\t\ttoolbar.get( 'spinner' ).show();\n\t\t\t}\n\n\t\t\tif ( el.scrollHeight < scrollTop + ( el.clientHeight * this.options.refreshThreshold ) ) {\n\t\t\t\tthis.collection.more().done( function () {\n\t\t\t\t\tview.scroll();\n\t\t\t\t\ttoolbar.get( 'spinner' ).hide();\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\n\t\tvideoMoveUp : function ( videoView ) {\n\t\t\tvar model = videoView.model;\n\t\t\tvar index = this.collection.indexOf( model );\n\t\t\tif ( index > 0 ) {\n\t\t\t\tthis.collection.remove( model, {silent : true} ); // silence this to stop excess event triggers\n\t\t\t\tthis.collection.add( model, {at : index - 1} );\n\t\t\t}\n\t\t\tthis.render();\n\t\t\tthis.playlistChanged();\n\t\t},\n\n\t\tvideoMoveDown : function ( videoView ) {\n\t\t\tvar model = videoView.model;\n\t\t\tvar index = this.collection.indexOf( model );\n\t\t\tif ( index < this.collection.models.length ) {\n\t\t\t\tthis.collection.remove( model, {silent : true} ); // silence this to stop excess event triggers\n\t\t\t\tthis.collection.add( model, {at : index + 1} );\n\t\t\t}\n\t\t\tthis.render();\n\t\t\tthis.playlistChanged();\n\t\t},\n\n\t\tvideoRemove : function ( videoView ) {\n\t\t\tvar model = videoView.model;\n\t\t\tif ( - 1 === this.collection.indexOf( model ) ) {\n\t\t\t\t// this is the library model\n\t\t\t\tthis.collection.add( model );\n\t\t\t} else {\n\t\t\t\t// this is the playlist collection\n\t\t\t\tthis.collection.remove( model, {silent : true} ); // silence this to stop excess event triggers\n\t\t\t\tthis.playlistChanged();\n\t\t\t}\n\t\t\tthis.render();\n\t\t},\n\n\t\tvideoAdd : function ( videoView ) {\n\t\t\t/**\n\t\t\t * Video add is heard by two collections, the one containing the videos for the playlists\n\t\t\t * and the one containing the videos that we can add to them.\n\t\t\t * We handle the add by adding from the collection where it doesn't exist (the playlist) and removing\n\t\t\t * where it does (the library).\n\t\t\t */\n\t\t\tvar model = videoView.model;\n\t\t\tif ( - 1 === this.collection.indexOf( model ) ) {\n\t\t\t\t// this is the playlist collection\n\t\t\t\tthis.collection.add( model );\n\t\t\t\tthis.playlistChanged();\n\t\t\t} else {\n\t\t\t\t// this is the library model\n\t\t\t\tthis.collection.remove( model, {silent : true} );\n\t\t\t\tthis.render();\n\t\t\t}\n\t\t},\n\n\t\tplaylistChanged : function () {\n\t\t\tvar videoIds = [];\n\t\t\tthis.collection.each( function ( video ) {\n\t\t\t\tvideoIds.push( video.id );\n\t\t\t} );\n\t\t\tthis.videoIds = videoIds;\n\t\t\t// var syncPlaylist = _.throttle(_.bind(this.syncPlaylist, this), 2000);\n\t\t\tthis.syncPlaylist();\n\t\t},\n\n\t\tsyncPlaylist : function () {\n\t\t\twpbc.broadcast.trigger( 'playlist:changed', this.videoIds );\n\t\t}\n\n\t}\n);\n\n","\tvar App = {\n\t\trenderMediaManager: function(mediaType) {\n\t\t\tvar brightcoveMediaContainer = $('.brightcove-media-' + mediaType);\n\t\t\tvar content_ifr = document.getElementById('content_ifr');\n\t\t\tif ( brightcoveMediaContainer.length ) {\n\t\t\t\tvar brightcoveMediaManager = new BrightcoveMediaManagerView({\n\t\t\t\t\tel: brightcoveMediaContainer,\n\t\t\t\t\tdate: 'all',\n\t\t\t\t\tembedType: 'page',\n\t\t\t\t\tpreload: true,\n\t\t\t\t\tmode: 'manager',\n\t\t\t\t\tsearch: '',\n\t\t\t\t\taccounts: 'all',\n\t\t\t\t\ttags: 'all',\n\t\t\t\t\tmediaType: mediaType,\n\t\t\t\t\tviewType: 'grid'\n\t\t\t\t});\n\t\t\t\tbrightcoveMediaManager.render();\n\t\t\t}\n\t\t},\n\n\t\tload: function() {\n\t\t\twpbc.requests = [];\n\t\t\twpbc.responses = {};\n\t\t\twpbc.broadcast = _.extend({}, Backbone.Events); // pubSub object\n\n\t\t\tthis.loaded();\n\n\t\t},\n\n\t\tloaded: function() {\n\t\t\tvar brightcoveModalContainer = $('.brightcove-modal');\n\n\t\t\tvar router = new BrightcoveRouter;\n\t\t\twpbc.triggerModal = function() {\n\t\t\t\tif (!wpbc.modal) {\n\t\t\t\t\twpbc.modal = new BrightcoveModalView({\n\t\t\t\t\t\tel: brightcoveModalContainer,\n\t\t\t\t\t\ttab: 'videos'\n\t\t\t\t\t});\n\t\t\t\t\twpbc.modal.render();\n\t\t\t\t\twpbc.modal.$el.find( '.spinner' ).addClass( 'is-active' );\n\t\t\t\t} else {\n\t\t\t\t\twpbc.modal.$el.show();\n\t\t\t\t}\n\n\t\t\t\t// Prevent body scrolling by adding a class to 'body'.\n\t\t\t\t$( 'body' ).addClass( 'modal-open' );\n\t\t\t};\n\n\t\t\tvar bc_sanitize_ids = function( id ) {\n\t\t\t\treturn id.replace(/\\D/g,'');\n\t\t\t};\n\n\t\t\t// Load the appropriate media type manager into the container element,\n\t\t\t// We only support loading one per page.\n\t\t\t_.each(['videos', 'playlists'], function(mediaType){\n\t\t\t\tApp.renderMediaManager(mediaType);\n\t\t\t});\n\n\t\t\t$('.account-toggle-button').on('click',function(event){\n\t\t\t\tevent.preventDefault();\n\t\t\t\t$(this).hide();\n\t\t\t\t$('.brightcove-account-row.hidden').show();\n\t\t\t});\n\n\t\t\t$('.brightcove-add-new-video').on('click', function(e) {\n\t\t\t\te.preventDefault();\n\t\t\t\trouter.navigate('add-new-brightcove-video', { trigger:true });\n\t\t\t});\n\n\t\t\t$(document).on('click', '.brightcove-add-media', function( e ) {\n\t\t\t\te.preventDefault();\n\t\t\t\twpbc.triggerModal();\n\t\t\t\twpbc.modal.target = e.currentTarget.dataset.target;\n\t\t\t});\n\n\t\t\t$(document).keyup(function(e) {\n\t\t\t\tif (27 === e.keyCode) {\n\t\t\t\t\t// Close modal on ESCAPE if it's open.\n\t\t\t\t\twpbc.broadcast.trigger('close:modal');\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t$('a.brightcove-action-delete-source').on('click',function(e){\n\t\t\t\tvar message = $(this).data('alert-message');\n\t\t\t\tif( !confirm( message ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t}\n\t};\n\n\tjQuery( document ).ready( function() {\n\t\tApp.load();\n\t\tvar router = new BrightcoveRouter;\n\t\tBackbone.history.start();\n\t} );\n"]} \ No newline at end of file diff --git a/assets/js/brightcove-admin.min.js b/assets/js/brightcove-admin.min.js index d77fec1b..86e1059a 100644 --- a/assets/js/brightcove-admin.min.js +++ b/assets/js/brightcove-admin.min.js @@ -1,382 +1,4 @@ ( function( $ ){ -/** - * Media model for Media CPT - */ -var MediaModel=Backbone.Model.extend({/** - * Copied largely from WP Attachment sync function - * Triggered when attachment details change - * Overrides Backbone.Model.sync - * - * @param {string} method - * @param {wp.media.model.Media} model - * @param {Object} [options={}] - * - * @returns {Promise} - */ -sync:function(a,b,c){var d=null; -// If the attachment does not yet have an `id`, return an instantly -// rejected promise. Otherwise, all of our requests will fail. -if( -// Set the accountHash to the wpbc.preload.accounts[*] where the account_id -// matches this media objects account_id. -_.find(wpbc.preload.accounts,function(a,b){if(a.account_id===this.get("account_id"))return d=b,!0},this),_.isUndefined(this.id))return $.Deferred().rejectWith(this).promise(); -// Overload the `read` request so Media.fetch() functions correctly. -if("read"===a)return c=c||{},c.context=this,c.data=_.extend(c.data||{},{action:"bc_media_fetch",id:this.id}),wp.media.ajax(c);if("update"===a){c=c||{},c.context=this, -// Set the action and ID. -c.data=_.extend(c.data||{},{account:d,action:"bc_media_update",description:this.get("description"),long_description:this.get("long_description"),name:this.get("name"),nonce:wpbc.preload.nonce,tags:this.get("tags"),type:this.get("mediaType"),custom_fields:this.get("custom_fields"),history:this.get("_change_history"),poster:this.get("poster"),thumbnail:this.get("thumbnail"),captions:this.get("captions")});var e=this.get("video_ids");return e?(c.data.playlist_id=this.id,c.data.playlist_videos=e,c.data.type="playlists"):c.data.video_id=this.id,c.success=this.successFunction,c.error=this.failFunction,wpbc.broadcast.trigger("spinner:on"),wp.media.ajax(c)}if("delete"===a){c=c||{};var f=this;return c.data=_.extend(c.data||{},{account:d,action:"bc_media_delete",id:this.get("id"),nonce:wpbc.preload.nonce,type:this.get("mediaType")}),wp.media.ajax(c).done(function(a){f.destroyed=!0,wpbc.broadcast.trigger("delete:successful",a),"videos"!==f.get("mediaType")&&_.isUndefined(f.get("video_ids"))?wpbc.preload.playlists=void 0:wpbc.preload.videos=void 0,wpbc.responses={}}).fail(function(a){f.destroyed=!1,wpbc.broadcast.trigger("videoEdit:message",a,"error"),wpbc.broadcast.trigger("spinner:off")})}/** - * Call `sync` directly on Backbone.Model - */ -return Backbone.Model.prototype.sync.apply(this,arguments)},/** - * Convert date strings into Date objects. - * - * @param {Object} resp The raw response object, typically returned by fetch() - * @returns {Object} The modified response object, which is the attributes hash - * to be set on the model. - */ -parse:function(a){return a?(a.date=new Date(a.date),a.modified=new Date(a.modified),a):a},getAccountName:function(){var a=(this.get("account_id"),_.findWhere(wpbc.preload.accounts,{account_id:this.get("account_id")}));return void 0===a?"unavailable":a.account_name},getReadableDuration:function(){var a=this.get("duration");if(a){a=Number(a/1e3);var b=Math.floor(a/3600),c=Math.floor(a%3600/60),d=Math.floor(a%3600%60);return(b>0?b+":"+(c<10?"0":""):"")+c+":"+(d<10?"0":"")+d}return a},getReadableDate:function(a){var b=this.get(a);if(b){var c=new Date(b),d=c.getHours(),e=c.getMinutes(),f=c.getFullYear(),g=c.getMonth()+1,h=c.getDate(),i=d>=12?"pm":"am";d%=12,d=d?d:12,e=e<10?"0"+e:e;return f+"/"+g+"/"+h+" - "+d+":"+e+" "+i}return b},successFunction:function(a){if(wpbc.broadcast.trigger("videoEdit:message",a,"success"),wpbc.broadcast.trigger("spinner:off"),_.isArray(this.get("video_ids"))&&wpbc.preload&&wpbc.preload.playlists){var b=this.get("id");_.each(wpbc.preload.playlists,function(a,c){a.id===b&&(wpbc.preload.playlists[c]=this.toJSON())},this)}wpbc.responses={},"videos"!==this.get("mediaType")&&_.isUndefined(this.get("video_ids"))?wpbc.preload.playlists=void 0:wpbc.preload.videos=void 0},failFunction:function(a){wpbc.broadcast.trigger("videoEdit:message",a,"error"),wpbc.broadcast.trigger("spinner:off")}}),MediaCollection=Backbone.Collection.extend({model:MediaModel,/** - * @param {Array} [models=[]] Array of models used to populate the collection. - * @param {Object} [options={}] - */ -initialize:function(a,b){b=b||{},b.activeAccount&&(this.activeAccount=b.activeAccount),this.additionalRequest=!1,this.pageNumber=this.pageNumber||1,this.mediaType||"existingPlaylists"!==this.mediaCollectionViewType&&"libraryPlaylists"!==this.mediaCollectionViewType||(this.mediaType="videos"),this.mediaCollectionViewType=b.mediaCollectionViewType||"grid",b.excludeVideoIds&&"libraryPlaylists"===b.mediaCollectionViewType&&(this.excludeVideoIds=b.excludeVideoIds),b.videoIds&&!a?(this.mediaType="videos",this.videoIds=b.videoIds,this.fetch()):"playlists"!==b.mediaType&&(this.mediaType="videos",this.fetch()),this.mediaType=b.mediaType,"videos"===this.mediaType&&this.listenTo(wpbc.broadcast,"uploader:uploadedFileDetails",function(a){ -// Add the newly uploaded file -this.add(a,{at:0})}),this.activeAccount=b.activeAccount||"all",this.searchTerm=b.searchTerm||"",this.dates=b.dates||"all",this.tag=b.tag||"",this.listenTo(wpbc.broadcast,"change:activeAccount",function(a){this.activeAccount=a,wp.heartbeat.enqueue("brightcove_heartbeat",{accountId:a},!0),this.fetch()}),$(document).on("heartbeat-tick.brightcove_heartbeat",function(a,b){b.hasOwnProperty("brightcove_heartbeat")&&wp.heartbeat.enqueue("brightcove_heartbeat",{accountId:b.brightcove_heartbeat.account_id},!0)}),this.listenTo(wpbc.broadcast,"change:searchTerm",function(a){this.searchTerm=a,this.fetch()}),this.listenTo(wpbc.broadcast,"change:tag",function(a){"all"===a&&(a=""),this.tag=a,this.fetch()}),this.listenTo(wpbc.broadcast,"change:date",function(a){this.date=a,this.fetch()}),this.listenTo(wpbc.broadcast,"tabChange",function(a){if(this.killPendingRequests(),a.mediaType!==this.mediaType){this.mediaType=a.mediaType; -// Remove all models from the collection -for(var b,c=wpbc.preload[this.mediaType];b=this.first();)this.remove(b);void 0!==c?this.add(c):this.fetch()}})},killPendingRequests:function(){ -// Kill all pending requests -_.each(wpbc.requests,function(a){a.abort()}),wpbc.requests=[]},checksum:function(a){_.isString(a)||(a=_.isFunction(a.toJSON)?a.toJSON():JSON.stringify(a));for(var b=305419896,c=0;c1&&this.pageNumber--,wpbc.broadcast.trigger("fetch:finished"),wpbc.broadcast.trigger("spinner:off"),wpbc.broadcast.trigger("fetch:apiError"),status},/** - * A custom AJAX-response parser. - * - * See trac ticket #24753 - * - * @param {Object|Array} resp The raw response Object/Array. - * @param {Object} xhr - * @returns {Array} The array of model attributes to be added to the collection - */ -parse:function(a,b,c,d){if(wpbc.broadcast.trigger("fetch:finished"),wpbc.broadcast.trigger("spinner:off"),!_.contains(["success","cached"],b)||"cached"!==b&&!a.success)return wpbc.broadcast.trigger("fetch:apiError"),!1;var e=a.data;if("success"===b&&(wpbc.responses[d]=e),!1===e)return!1;_.isArray(e)||(e=[e]),/** - * In playlist video search, we remove the videos that already exist in the playlist. - */ -_.isArray(this.excludeVideoIds)&&_.each(this.excludeVideoIds,function(a){e=_.without(e,_.findWhere(e,{id:a}))});var f=_.map(e,function(a){var b,c,d;return a instanceof Backbone.Model?(b=a.get("id"),a=a.attributes):b=a.id,c=this.findWhere({id:b}),c?(d=c.parse(a),_.isEqual(c.attributes,d)||c.set(d)):c=this.add(a),c.set("viewType",this.mediaCollectionViewType),c},this);this.additionalRequest?this.add(f):this.set(f)}}),BrightcoveMediaManagerModel=Backbone.Model.extend({defaults:{view:"grid",date:"all",tags:"all",type:null,// enum[playlist, video] -preload:!0,search:"",account:wpbc.preload.defaultAccountId,poster:{},thumbnail:{}},initialize:function(a){_.defaults(a,this.defaults),wp.heartbeat.enqueue("brightcove_heartbeat",{accountId:wpbc.preload.defaultAccountId},!0);var b=new MediaCollection([],{mediaType:a.mediaType});b.reset(),/* Prevent empty element from living in our collection */ -a.preload&&a.preload.length&&b.add(a.preload),a.preload=!!a.preload,// Whether or not a preload var was present. -this.set("media-collection-view",new MediaCollectionView({collection:b})),this.set("options",a)}}),BrightcoveModalModel=Backbone.Model.extend({getMediaManagerSettings:function(){var a=this.get("tab"),b={upload:{accounts:"all",date:"all",embedType:"modal",mediaType:"videos",mode:"uploader",preload:!0,search:"",tags:"all",viewType:"grid",poster:{},thumbnail:{}},videos:{accounts:"all",date:"all",embedType:"modal",mediaType:"videos",mode:"manager",preload:!0,search:"",tags:"all",viewType:"grid"},playlists:{accounts:"all",date:"all",embedType:"modal",mediaType:"playlists",mode:"manager",preload:!0,search:"",tags:"all",viewType:"grid"}};return void 0!==b[a]&&b[a]}}),UploadModelCollection=Backbone.Collection.extend({initialize:function(a){this.listenTo(wpbc.broadcast,"uploader:queuedFilesAdded",this.queuedFilesAdded)},queuedFilesAdded:function(a){_.each(a,function(a){this.add(new UploadModel(a))},this)}}),UploadModel=Backbone.Model.extend({initialize:function(a){},humanReadableSize:function(){var a=this.get("size");if(0===a)return"0 Byte";var b=["Bytes","KB","MB","GB"],c=Math.floor(Math.log(a)/Math.log(1e3));return(a/Math.pow(1e3,c)).toPrecision(3)+" "+b[c]}}),BrightcoveView=wp.Backbone.View.extend({subviews:null,registerSubview:function(a){this.subviews=this.subviews||[],this.subviews.push(a)},remove:function(){_.invoke(this.subviews,"remove"),wp.Backbone.View.prototype.remove.call(this)},insertShortcode:function(){if(this.model){var a=this.model.get("id").replace(/\D/g,""),b=this.model.get("account_id").replace(/\D/g,""),c=wpbc.selectedPlayer,d="";if(!c)var c="default";if(void 0!==this.mediaType)d="videos"===this.mediaType?'[bc_video video_id="'+a+'" account_id="'+b+'" player_id="'+c+'"]':'[bc_playlist playlist_id="'+a+'" account_id="'+b+'"]';else{var e=wp.template("brightcove-mediatype-notice"); -// Throw a notice to the user that the file is not the correct format -$("#lost-connection-notice").before(e), -// Allow the user to dismiss the notice -$("#js-mediatype-dismiss").on("click",function(){$("#js-mediatype-notice").first().fadeOut(500,function(){$(this).remove()})})}"content"===wpbc.modal.target?window.send_to_editor(d):($(wpbc.modal.target).val(d),$(wpbc.modal.target).change()),wpbc.broadcast.trigger("close:modal")}}}),ToolbarView=BrightcoveView.extend({tagName:"div",className:"media-toolbar wp-filter",template:wp.template("brightcove-media-toolbar"),events:{"click .view-list":"toggleList","click .view-grid":"toggleGrid","click .brightcove-toolbar":"toggleToolbar","change .brightcove-media-source":"sourceChanged","change .brightcove-media-dates":"datesChanged","change .brightcove-media-tags":"tagsChanged","change .brightcove-empty-playlists":"emptyPlaylistsChanged","click #media-search":"searchHandler"},render:function(){var a=this.model.get("mediaType"),b={accounts:wpbc.preload.accounts,dates:{},mediaType:a,tags:wpbc.preload.tags,account:this.model.get("account")},c=wpbc.preload.dates,d=this.model.get("date");/* @todo: find out if this is working */ -void 0!==c&&void 0!==c[a]&&void 0!==c[a][d]&&(b.dates=c[a][d]),this.$el.html(this.template(b));var e=this.$el.find(".spinner");this.listenTo(wpbc.broadcast,"spinner:on",function(){e.addClass("is-active").removeClass("hidden")}),this.listenTo(wpbc.broadcast,"spinner:off",function(){e.removeClass("is-active").addClass("hidden")})}, -// List view Selected -toggleList:function(){this.trigger("viewType","list"),this.$el.find(".view-list").addClass("current"),this.$el.find(".view-grid").removeClass("current")}, -// Grid view Selected -toggleGrid:function(){this.trigger("viewType","grid"),this.$el.find(".view-grid").addClass("current"),this.$el.find(".view-list").removeClass("current")}, -// Toggle toolbar help -toggleToolbar:function(){var a=wp.template("brightcove-tooltip-notice"); -// Throw a notice to the user that the file is not the correct format -$(".brightcove-media-videos").before(a), -// Allow the user to dismiss the notice -$("#js-tooltip-dismiss").on("click",function(){$("#js-tooltip-notice").first().fadeOut(500,function(){$(this).remove()})})}, -// Brightcove source changed -sourceChanged:function(a){ -// Store the currently selected account on the model. -this.model.set("account",a.target.value),wpbc.broadcast.trigger("change:activeAccount",a.target.value)},datesChanged:function(a){wpbc.broadcast.trigger("change:date",a.target.value)},tagsChanged:function(a){wpbc.broadcast.trigger("change:tag",a.target.value)},emptyPlaylistsChanged:function(a){var b=$(a.target).prop("checked");wpbc.broadcast.trigger("change:emptyPlaylists",b)},searchHandler:function(a){var b=$("#media-search-input").val();b.length>2&&b!==this.model.get("search")&&(this.model.set("search",b),wpbc.broadcast.trigger("change:searchTerm",b))}}),UploadVideoManagerView=BrightcoveView.extend({className:"brightcove-file-uploader",events:{"click .brightcove-start-upload":"triggerUpload"},initialize:function(a){/** - * If you're looking for the Plupload instance, you're in the wrong place, check the UploadWindowView - */ -this.collection=new UploadModelCollection,a&&(this.options=a,this.successMessage=a.successMessage||this.successMessage),this.uploadWindow=new UploadWindowView,this.listenTo(this.collection,"add",this.fileAdded),this.listenTo(wpbc.broadcast,"pendingUpload:selectedItem",this.selectedItem),this.listenTo(wpbc.broadcast,"uploader:prepareUpload",this.prepareUpload),this.listenTo(wpbc.broadcast,"uploader:successMessage",this.successMessage),this.listenTo(wpbc.broadcast,"uploader:errorMessage",this.errorMessage),this.listenTo(wpbc.broadcast,"uploader:clear",this.resetUploads),this.listenTo(wpbc.broadcast,"upload:video",this.resetUploads)},resetUploads:function(){for(;model=this.collection.first();)this.collection.remove(model)},errorMessage:function(a){this.message(a,"error")},successMessage:function(a){this.message(a,"success")},message:function(a,b){var c=this.$el.find(".brightcove-messages"),d="";"success"===b?d="notice updated":"error"===b&&(d="error");var e=$('

');c.append(e),e.addClass(d).find(".message-text").text(a),e.delay(4e3).fadeOut(500,function(){$(this).remove(),wpbc.broadcast.trigger("upload:video")})},prepareUpload:function(){wpbc.uploads=wpbc.uploads||{},this.collection.each(function(a){wpbc.uploads[a.get("id")]={account:a.get("account"),name:a.get("fileName"),tags:a.get("tags")}}),wpbc.broadcast.trigger("uploader:startUpload")},fileAdded:function(a,b){ -// Start upload triggers progress bars under every video. -// Need to re-render when one model is added -1===this.collection.length&&this.render();var c=new UploadView({model:a});c.render(),c.$el.appendTo(this.$el.find(".brightcove-pending-uploads"))},triggerUpload:function(){wpbc.broadcast.trigger("uploader:prepareUpload")},selectedItem:function(a){this.uploadDetails=new UploadDetailsView({model:a}),this.uploadDetails.render(),this.$el.find(".brightcove-pending-upload-details").remove(),this.uploadDetails.$el.appendTo(this.$el.find(".brightcove-upload-queued-files"))},render:function(a){this.collection.length?this.template=wp.template("brightcove-uploader-queued-files"):(this.template=wp.template("brightcove-uploader-inline"),this.uploadWindow.render(),this.uploadWindow.$el.appendTo($("body"))),this.$el.html(this.template(a)),this.collection.length?this.$el.find(".brightcove-start-upload").show():this.$el.find(".brightcove-start-upload").hide()}}),BrightcoveRouter=Backbone.Router.extend({routes:{"add-new-brightcove-video":"addNew"},addNew:function(){wpbc.broadcast.trigger("upload:video")}}),BrightcoveMediaManagerView=BrightcoveView.extend({tagName:"div",className:"brightcove-media",events:{},scrollHandler:function(){wpbc.broadcast.trigger("scroll:mediaGrid")},initialize:function(a){var b=wp.media.isTouchDevice?300:200;this.scrollHandler=_.chain(this.scrollHandler).bind(this).throttle(b).value(),this.options=a,this.mode=a.mode||"manager",a.preload=!!this.options.preload&&wpbc.preload[this.options.mediaType],this.model=new BrightcoveMediaManagerModel(a),/* Search and dropdowns */ -this.toolbar=new ToolbarView({model:this.model}),/* Uploader View */ -this.uploader=new UploadVideoManagerView,this.model.set("accounts",wpbc.preload.accounts),// All accounts. -this.model.set("activeAccount",a.account),// Active account ID / All -this.listenTo(this.toolbar,"viewType",function(a){this.model.set("view",a)}),this.listenTo(wpbc.broadcast,"videoEdit:message",this.message),this.listenTo(wpbc.broadcast,"permanent:message",this.permanentMessage),this.listenTo(wpbc.broadcast,"remove:permanentMessage",function(){wpbc.permanentMessage&&wpbc.permanentMessage.remove(),this.$el.find(".brightcove-message").addClass("hidden")}), -// We only care when a change occurs -this.listenTo(this.model,"change:view",function(a,b){this.model.get("media-collection-view").setViewType(b)}),this.listenTo(this.model,"change:mode",function(a,b){"uploader"!==b&&wpbc.broadcast.trigger("uploader:clear")}),this.listenTo(wpbc.broadcast,"cancelPreview:media",function(a){this.clearPreview(),this.detailsView=void 0,this.model.set("mode","manager"),this.render(), -// Disable "Insert Into Post" button since no video would be selected. -wpbc.broadcast.trigger("toggle:insertButton")}),this.listenTo(wpbc.broadcast,"change:emptyPlaylists",function(a){var b=this.model.get("media-collection-view");this.model.set("mode","manager"),_.each(b.collection.models,function(b){ -// Don't hide smart playlists. Only Manual playlists will have playlistType as 'EXPLICIT'. -"EXPLICIT"===b.get("type")&&0===b.get("video_ids").length&&(a?b.view.$el.hide():b.view.$el.show())})}),this.listenTo(wpbc.broadcast,"delete:successful",function(a){this.startGridView(),this.message(a,"success")}),this.listenTo(wpbc.broadcast,"change:activeAccount",function(a){this.clearPreview(),this.model.set("activeAccount",a),this.model.set("mode","manager"),this.render()}),this.listenTo(wpbc.broadcast,"change:tag",function(a){this.clearPreview(),this.model.set("tag",a)}),this.listenTo(wpbc.broadcast,"change:date",function(a){this.clearPreview(),this.model.set("date",a)}),this.listenTo(wpbc.broadcast,"upload:video",function(){this.showUploader()}),this.listenTo(this.model,"change:search",function(a,b){this.model.get("search")}),this.listenTo(wpbc.broadcast,"start:gridview",function(){_.invoke(this.subviews,"remove"),this.detailsView=null,// Prevent selected view from not being toggleable when we hit the back button on edit -this.startGridView()}),this.listenTo(wpbc.broadcast,"tabChange",function(a){this.model.set(a),this.detailsView instanceof MediaDetailsView&&(this.detailsView.remove(),this.detailsView=void 0),this.render()}),this.listenTo(wpbc.broadcast,"edit:media",function(a){if("videos"===this.model.get("mediaType")){ -// We just hit the edit button with the edit window already open. -if("editVideo"===this.model.get("mode"))return!0;this.$el.find(".brightcove-message").addClass("hidden"),this.editView=new VideoEditView({model:a}),this.registerSubview(this.editView),this.model.set("mode","editVideo"),this.render()}else{ -// We just hit the edit button with the edit window already open. -if("editPlaylist"===this.model.get("mode"))return!0;this.editView=new PlaylistEditView({model:a}),this.registerSubview(this.editView),this.model.set("mode","editPlaylist"),this.render()}}),this.listenTo(wpbc.broadcast,"preview:media",function(a){if("videos"===this.model.get("mediaType")){ -// We just hit the preview button with the preview window already open. -if("previewVideo"===this.model.get("mode"))return!0;this.previewView=new VideoPreviewView({model:a}),this.registerSubview(this.previewView),this.model.set("mode","previewVideo"),this.render()}else/** - * @todo: playlist preview view - */ -this.model.set("mode","editPlaylist")}),this.listenTo(wpbc.broadcast,"change:searchTerm",function(a){this.clearPreview()}),this.listenTo(wpbc.broadcast,"select:media",function(a){/* If user selects same thumbnail they want to hide the details view */ -this.detailsView&&this.detailsView.model===a.model?(this.detailsView.$el.toggle(),a.$el.toggleClass("highlighted"),this.model.get("media-collection-view").$el.toggleClass("menu-visible"),wpbc.broadcast.trigger("toggle:insertButton")):(this.clearPreview(),this.detailsView=new MediaDetailsView({model:a.model,el:$(".brightcove.media-frame-menu"),mediaType:this.model.get("mediaType")}),this.registerSubview(this.detailsView),this.detailsView.render(),this.detailsView.$el.toggle(!0),// Always show new view -this.model.get("media-collection-view").$el.addClass("menu-visible"),a.$el.addClass("highlighted"),wpbc.broadcast.trigger("toggle:insertButton","enabled"))})},/** - * Clear the preview view and remove highlighted class from previous selected video. - */ -clearPreview:function(){this.detailsView instanceof MediaDetailsView&&this.detailsView.remove(),this.model.get("media-collection-view").$el.find(".highlighted").removeClass("highlighted")},startGridView:function(){this.model.set("mode","manager"),this.render()},message:function(a,b,c){var d=this.$el.find(".brightcove-message");"success"===b?(d.addClass("updated"),d.removeClass("error")):"error"===b&&(d.addClass("error"),d.removeClass("updated"));var e=$("

");e.text(a),d.append(e),d.removeClass("hidden"),c?(wpbc.permanentMessage&&wpbc.permanentMessage.remove(),wpbc.permanentMessage=e):( -// Make the notice dismissable. -d.addClass("notice is-dismissible"),this.makeNoticesDismissible())}, -// Make notices dismissible, mimics core function, fades them empties. -makeNoticesDismissible:function(){$(".notice.is-dismissible").each(function(){var a=$(this),b=$(''),c=commonL10n.dismiss||""; -// Ensure plain text -b.find(".screen-reader-text").text(c),b.on("click.wp-dismiss-notice",function(b){b.preventDefault(),a.fadeTo(100,0,function(){a.slideUp(100,function(){a.addClass("hidden").css({opacity:1,"margin-bottom":0,display:""}).empty()})})}),a.append(b)})},showUploader:function(){this.model.set("mode","uploader"),this.render()},permanentMessage:function(a){this.message(a,"error",!0)},render:function(){var a,b=this.model.get("options"),c=this.model.get("mode");if( -// Nuke all registered subviews -_.invoke(this.subviews,"remove"),"uploader"===c)this.template=wp.template("brightcove-uploader-container"),this.$el.empty(),this.$el.html(this.template(b)),this.uploader.render(),this.uploader.delegateEvents(),this.uploader.$el.appendTo($(".brightcove-uploader"));else if("manager"===c){this.template=wp.template("brightcove-media"),this.$el.html(this.template(b)),this.toolbar.render(),this.toolbar.delegateEvents(),this.toolbar.$el.show(),this.toolbar.$el.appendTo(this.$el.find(".media-frame-router")); -// Add the Media views to the media manager -var d=this.model.get("media-collection-view");d.render(),d.delegateEvents();var e=this.$el.find(".media-frame-content");e.on("scroll",this.scrollHandler),d.$el.appendTo(e),wpbc.initialSync&&(wpbc.broadcast.trigger("remove:permanentMessage"),wpbc.broadcast.trigger("permanent:message",wpbc.preload.messages.ongoingSync))}else"editVideo"===c?(this.toolbar.$el.hide(),a=this.$el.find(".media-frame-content"),a.empty(),this.editView.render(),this.editView.delegateEvents(),this.editView.$el.appendTo(a),this.$el.find(".brightcove.media-frame-content").addClass("edit-view")):"editPlaylist"===c?(this.toolbar.$el.hide(),a=this.$el,a.empty(),a.html('
'),a=a.find(".playlist-edit-container"),this.editView.render(),this.editView.delegateEvents(),this.editView.$el.appendTo(a),a.addClass("playlist")):"previewVideo"===c&&(this.toolbar.$el.hide(),a=this.$el.find(".media-frame-content"),a.empty(),this.previewView.render(),this.detailsView.render({detailsMode:"preview"}),this.previewView.delegateEvents(),this.previewView.$el.appendTo(a),this.$el.find(".brightcove.media-frame-toolbar").hide(),brightcove.createExperiences());return"editPlaylist"!==c&&this.$el.find(".media-frame-content").removeClass("playlist"),this}}),BrightcoveModalView=BrightcoveView.extend({tagName:"div",className:"media-modal brightcove",template:wp.template("brightcove-media-modal"),events:{"click .brightcove.media-menu-item":"changeTab","click .brightcove.media-button-insert":"insertIntoPost","click .brightcove.media-modal-icon":"closeModal","click .brightcove.save-sync":"saveSync","click .brightcove.button.back":"back"},initialize:function(a){this.model=new BrightcoveModalModel({tab:a.tab}),this.brightcoveMediaManager=new BrightcoveMediaManagerView(this.model.getMediaManagerSettings()),this.registerSubview(this.brightcoveMediaManager),this.listenTo(wpbc.broadcast,"toggle:insertButton",function(a){this.toggleInsertButton(a)}),this.listenTo(wpbc.broadcast,"close:modal",this.closeModal)},saveSync:function(a){ -// This event is triggered when the "Save and Sync Changes" button is clicked from edit video screen. -wpbc.broadcast.trigger("save:media",a)},back:function(a){ -// This event is triggered when the "Back" button is clicked from edit video screen. -wpbc.broadcast.trigger("back:editvideo",a)},insertIntoPost:function(a){a.preventDefault(), -// Exit if the 'button' is disabled. -$(a.currentTarget).hasClass("disabled")||( -// Make the selected player available to the shortcode -wpbc.selectedPlayer=$('input[name="video-player-field"]:checked').val(), -// Media Details will trigger the insertion since it's always active and contains -// the model we're inserting -wpbc.broadcast.trigger("insert:shortcode"))},toggleInsertButton:function(a){var b=this.$el.find(".brightcove.media-button-insert"),c=$(".attachment.highlighted").find(".processing").length;b.show(),1===c?b.attr("disabled","disabled"):"enabled"===a?b.removeAttr("disabled"):"disabled"===a?b.attr("disabled","disabled"):void 0!==b.attr("disabled")?b.removeAttr("disabled"):b.attr("disabled","disabled")},changeTab:function(a){if(a.preventDefault(),!$(a.target).hasClass("active")){$(a.target).addClass("active");var b=_.without(a.target.classList,"media-menu-item","brightcove")[0],c=["videos","upload","playlists"];_.each(_.without(c,b),function(a){$(".brightcove.media-menu-item."+a).removeClass("active")}),_.contains(c,b)&&(this.model.set("tab",b),wpbc.broadcast.trigger("spinner:off"),wpbc.broadcast.trigger("tabChange",this.model.getMediaManagerSettings()))}},closeModal:function(a){ -// If we are in the editVideo mode, switch back to the video view. -"editVideo"===wpbc.modal.brightcoveMediaManager.model.get("mode")&&wpbc.broadcast.trigger("start:gridview"), -// Exit if the container button is disabled. -!_.isUndefined(a)&&$(a.currentTarget).parent().hasClass("disabled")||(this.$el.hide(),$("body").removeClass("modal-open"))},message:function(a){this.$el.find(".brightcove-message")},render:function(a){this.$el.html(this.template(a)),this.brightcoveMediaManager.render(),this.brightcoveMediaManager.$el.appendTo(this.$el.find(".media-frame-content")),this.listenTo(wpbc.broadcast,"edit:media",function(a,b){"videos"===b?( -// When edit Video screen is opened, hide the "Insert Into Post" button and show video save button. -this.$el.find(".brightcove.button.save-sync").show(),this.$el.find(".brightcove.button.back").show(),this.$el.find(".brightcove.media-button-insert").hide()):( -// When edit playlist screen is opened, hide all the buttons. -this.$el.find(".brightcove.button.save-sync").hide(),this.$el.find(".brightcove.button.back").hide(),this.$el.find(".brightcove.media-button-insert").hide())}),this.listenTo(wpbc.broadcast,"save:media back:editvideo start:gridView",function(){this.$el.find(".brightcove.button.save-sync").hide(),this.$el.find(".brightcove.button.back").hide(),this.$el.find(".brightcove.media-button-insert").show(),wpbc.broadcast.trigger("toggle:insertButton")})}}),MediaDetailsView=BrightcoveView.extend({tagName:"div",className:"media-details",attributes:function(){return{tabIndex:0,role:"checkbox","aria-label":this.model.get("title"),"aria-checked":!1,"data-id":this.model.get("id")}},events:{"click .brightcove.edit.button":"triggerEditMedia","click .brightcove.preview.button":"triggerPreviewMedia","click .brightcove.back.button":"triggerCancelPreviewMedia"},triggerEditMedia:function(a){a.preventDefault(),wpbc.broadcast.trigger("edit:media",this.model,this.mediaType)},triggerPreviewMedia:function(a){a.preventDefault(),wpbc.broadcast.trigger("preview:media",this.model)},triggerCancelPreviewMedia:function(a){wpbc.broadcast.trigger("cancelPreview:media",this.mediaType)},initialize:function(a){a=a||{},this.type=a.type?a.type:"grid",this.mediaType=a.mediaType,this.listenTo(wpbc.broadcast,"insert:shortcode",this.insertShortcode),this.listenTo(this.model,"change",this.render)},/** - * @returns {wp.media.view.Media} Returns itself to allow chaining - */ -render:function(a){return a=_.extend({},a,this.model.toJSON()),a.duration=this.model.getReadableDuration(),a.updated_at_readable=this.model.getReadableDate("updated_at"),a.created_at_readable=this.model.getReadableDate("created_at"),a.account_name=this.model.getAccountName(),this.template=wp.template("brightcove-media-item-details-"+this.mediaType),this.$el.html(this.template(a)),this.delegateEvents(),this},/* Prevent this.remove() from removing the container element for the details view */ -remove:function(){return this.undelegateEvents(),this.$el.empty(),this.stopListening(),this}}),MediaView=BrightcoveView.extend({tagName:"li",className:"attachment brightcove",attributes:function(){return{tabIndex:0,role:"checkbox","aria-label":this.model.get("title"),"aria-checked":!1,"data-id":this.model.get("id")}},events:{"click .attachment-preview":"toggleDetailView","click .video-move-up":"videoMoveUp","click .video-move-down":"videoMoveDown","click .trash":"removeVideoFromPlaylist","click .add-to-playlist":"videoAdd","click .edit":"triggerEditMedia","click .preview":"triggerPreviewMedia"},triggerEditMedia:function(a){a.preventDefault(),wpbc.broadcast.trigger("edit:media",this.model)},triggerPreviewMedia:function(a){a.preventDefault(),wpbc.broadcast.trigger("preview:media",this.model)},buttons:{},initialize:function(a){a=a||{},this.type=a.type?a.type:"grid", -// We only care when a change occurs -this.listenTo(this.model,"change:view",function(a,b){this.type!==b&&(this.type=b,this.render())}),this.render()},render:function(){var a=this.model.toJSON();return a.duration=this.model.getReadableDuration(),a.updated_at_readable=this.model.getReadableDate("updated_at"),a.account_name=this.model.getAccountName(),"existingPlaylists"===a.viewType?this.template=wp.template("brightcove-playlist-edit-video-in-playlist"):"libraryPlaylists"===a.viewType?this.template=wp.template("brightcove-playlist-edit-video-in-library"):this.template=wp.template("brightcove-media-item-"+this.type),a.buttons=this.buttons,this.$el.html(this.template(a)),this.$el.toggleClass("uploading",a.uploading),this},toggleDetailView:function(){wpbc.broadcast.trigger("select:media",this)},videoMoveUp:function(){wpbc.broadcast.trigger("playlist:moveUp",this)},videoMoveDown:function(){wpbc.broadcast.trigger("playlist:moveDown",this)},videoAdd:function(){wpbc.broadcast.trigger("playlist:add",this)},removeVideoFromPlaylist:function(){wpbc.broadcast.trigger("playlist:remove",this)}}),PlaylistEditView=BrightcoveView.extend({tagName:"div",className:"playlist-edit brightcove attachment-details",template:wp.template("brightcove-playlist-edit"),events:{"click .brightcove.button.save-sync":"saveSync","click .brightcove.playlist-back":"back","change .brightcove-name":"updatedName"},deleteVideo:function(a){a.preventDefault(),this.model.set("mediaType","videos"),this.model.destroy()},updatedName:function(a){this.model.get("name")!==a.target.value&&(this.model.set("name",a.target.value),this.model.save())},back:function(a){a.preventDefault(),wpbc.broadcast.trigger("start:gridview")},saveSync:function(a){a.preventDefault(),this.model.set("name",this.$el.find(".brightcove-name").val()),this.model.set("description",this.$el.find(".brightcove-description").val()),this.model.set("long_description",this.$el.find(".brightcove-long-description").val()),this.model.set("tags",this.$el.find(".brightcove-tags").val()),this.model.set("mediaType","videos"),this.model.save()},initialize:function(){this.listenTo(wpbc.broadcast,"tabChange",function(){_.invoke(this.subviews,"remove")}),wpbc.broadcast.trigger("spinner:off")},render:function(a){a=this.model.toJSON(),this.$el.html(this.template(a)),this.spinner=this.$el.find(".spinner");this.$el.find(".existing-videos");/* - 1. Create a media collection here to fetch each of the videos in options.video_ids. - */ -a.video_ids&&(this.killPendingRequests(),this.playlistVideosView=new MediaCollectionView({el:this.$el.find(".existing-videos"),videoIds:a.video_ids,activeAccount:this.model.get("account_id"),mediaCollectionViewType:"existingPlaylists",mediaType:"playlists"}),this.libraryVideosView=new MediaCollectionView({el:this.$el.find(".library-videos"),excludeVideoIds:a.video_ids,activeAccount:this.model.get("account_id"),mediaCollectionViewType:"libraryPlaylists",mediaType:"playlists"}),this.registerSubview(this.playlistVideosView),this.registerSubview(this.libraryVideosView),this.listenTo(wpbc.broadcast,"playlist:changed",_.throttle(this.playlistChanged,300)),this.listenTo(wpbc.broadcast,"insert:shortcode",this.insertShortcode)),this.listenTo(wpbc.broadcast,"spinner:on",function(){this.spinner.addClass("is-active").removeClass("hidden")}),this.listenTo(wpbc.broadcast,"spinner:off",function(){this.spinner.removeClass("is-active").addClass("hidden")})},playlistChanged:function(a){this.killPendingRequests(),this.model.set("video_ids",a),this.model.save()},killPendingRequests:function(){ -// Kill all pending requests -_.each(wpbc.requests,function(a){a.abort()}),wpbc.requests=[]}}),UploadDetailsView=BrightcoveView.extend({className:"brightcove-pending-upload-details attachment-details",tagName:"div",template:wp.template("brightcove-pending-upload-details"),events:{"keyup .brightcove-name":"nameChanged","keyup .brightcove-tags":"tagsChanged","change .brightcove-media-source":"accountChanged"},initialize:function(a){this.listenTo(wpbc.broadcast,"pendingUpload:hideDetails",this.hide),this.listenTo(wpbc.broadcast,"uploader:fileUploaded",function(a){a.id===this.model.get("id")&&(this.model.set("uploaded",!0),this.render())}),this.model.set("ingestSuccess",!0),this.model.set("uploadSuccess",!0)},nameChanged:function(a){this.model.set("fileName",a.target.value)},tagsChanged:function(a){this.model.set("tags",a.target.value)},accountChanged:function(a){this.model.set("account",a.target.value)},hide:function(){this.$el.hide()},render:function(a){a=a||{},a.fileName=this.model.get("fileName"),a.tags=this.model.get("tags"),a.size=this.model.humanReadableSize(),a.accounts=this.model.get("accounts"),a.account=this.model.get("account"),a.uploaded=this.model.get("uploaded"),this.$el.html(this.template(a))}});UploadWindowView=BrightcoveView.extend({className:"uploader-window",template:wp.template("brightcove-uploader-window"),initialize:function(a){_.bindAll(this,"uploaderFilesAdded"),this.listenTo(wpbc.broadcast,"uploader:queuedFilesAdded",this.hide),this.listenTo(wpbc.broadcast,"uploader:startUpload",this.uploaderStartUpload),this.listenTo(wpbc.broadcast,"uploader:clear",this.resetUploads)},render:function(a){this.$el.html(this.template(a)),_.defer(_.bind(this.afterRender,this))},resetUploads:function(){this.uploader&&this.uploader.files&&(this.uploader.files=[])},afterRender:function(){this.uploader=new plupload.Uploader(_.defaults(this.options,wpbc.preload.plupload)), -// Uploader has neither .on nor .listenTo -this.uploader.added=this.uploaderFilesAdded,this.uploader.progress=this.uploaderUploadProgress,this.uploader.bind("FilesAdded",this.uploaderFilesAdded),this.uploader.bind("UploadProgress",this.uploaderUploadProgress),this.uploader.bind("BeforeUpload",this.uploaderBeforeUpload),this.uploader.bind("FileUploaded",this.uploaderFileUploaded),this.uploader.bind("init",this.uploaderAfterInit),this.uploader.init(),$("html").on("dragenter",_.bind(this.show,this));/* the following dropzone function code is taken from the wp.Uploader code */ -var a=wpbc.preload.plupload.drop_element.replace(/[^a-zA-Z0-9-]+/g,"");$("#"+a).on("dropzone:leave",_.bind(this.hide,this))},uploaderAfterInit:function(a){var b,c,d,e=wpbc.preload.plupload.drop_element.replace(/[^a-zA-Z0-9-]+/g,""),f=$("#"+e); -// Generate drag/drop helper classes. -if(d=a.features.dragdrop,f){if(f.toggleClass("supports-drag-drop",!!d),!d)return f.unbind(".wp-uploader"); -// 'dragenter' doesn't fire correctly, simulate it with a limited 'dragover'. -f.bind("dragover.wp-uploader",function(){b&&clearTimeout(b),c||(f.trigger("dropzone:enter").addClass("drag-over"),c=!0)}),f.bind("dragleave.wp-uploader, drop.wp-uploader",function(){ -// Using an instant timer prevents the drag-over class from -// being quickly removed and re-added when elements inside the -// dropzone are repositioned. -// -// @see https://core.trac.wordpress.org/ticket/21705 -b=setTimeout(function(){c=!1,f.trigger("dropzone:leave").removeClass("drag-over")},0)})}},show:function(){var a=this.$el.show(); -// Ensure that the animation is triggered by waiting until -// the transparent element is painted into the DOM. -_.defer(function(){a.css({opacity:1})})},hide:function(){var a=this.$el.css({opacity:0});wp.media.transition(a).done(function(){ -// Transition end events are subject to race conditions. -// Make sure that the value is set as intended. -"0"===a.css("opacity")&&a.hide()}), -// https://core.trac.wordpress.org/ticket/27341 -_.delay(function(){"0"===a.css("opacity")&&a.is(":visible")&&a.hide()},500)},uploaderFilesAdded:function(a,b){wpbc.broadcast.trigger("uploader:queuedFilesAdded",b)},uploaderStartUpload:function(){this.uploader.start()},uploaderUploadProgress:function(a,b){wpbc.broadcast.trigger("uploader:uploadProgress",b)},uploaderBeforeUpload:function(a,b){a.settings.multipart_params=_.defaults(wpbc.uploads[b.id],wpbc.preload.plupload.multipart_params,{nonce:wpbc.preload.nonce})},uploaderFileUploaded:function(a,b,c){var d=JSON.parse(c.response);wpbc.broadcast.trigger("uploader:fileUploaded",b),"success"===d.data.upload&&"success"===d.data.ingest?(d.data.videoDetails&& -// Add newly uploaded file to preload list. -wpbc.broadcast.trigger("uploader:uploadedFileDetails",d.data.videoDetails),wpbc.broadcast.trigger("uploader:successfulUploadIngest",b)):(b.percent=0,b.status=plupload.UPLOADING,a.state=plupload.STARTED,a.trigger("StateChanged"),wpbc.broadcast.trigger("uploader:failedUploadIngest",b))}});var UploadView=BrightcoveView.extend({className:"brightcove-pending-upload",tagName:"tr",template:wp.template("brightcove-pending-upload"),events:{click:"toggleRow"},initialize:function(){this.listenTo(wpbc.broadcast,"pendingUpload:selectedRow",this.otherToggledRow),this.listenTo(wpbc.broadcast,"uploader:uploadProgress",this.uploadProgress),this.listenTo(wpbc.broadcast,"uploader:getParams",this.getParams),this.listenTo(wpbc.broadcast,"uploader:successfulUploadIngest",this.successfulUploadIngest),this.listenTo(wpbc.broadcast,"uploader:failedUploadIngest",this.failedUploadIngest);var a={fileName:this.model.get("name"),tags:"",accounts:wpbc.preload.accounts,// All accounts. -account:wpbc.preload.defaultAccount,ingestSuccess:!1,uploadSuccess:!1,uploaded:!1};this.model.set(a),this.listenTo(this.model,"change:fileName",this.render),this.listenTo(this.model,"change:account",this.render)},render:function(a){a=a||{},a.fileName=this.model.get("fileName"),a.size=this.model.humanReadableSize();var b=this.model.get("account");a.accountName=wpbc.preload.accounts[b].account_name,a.percent=this.model.get("percent"),a.activeUpload=this.model.get("activeUpload"),a.ingestSuccess=this.model.get("ingestSuccess"),a.uploadSuccess=this.model.get("uploadSuccess"),this.$el.html(this.template(a)),this.model.get("selected")&&this.$el.addClass("selected"),this.model.get("ingestSuccess")&&this.$el.addClass("ingest-success"),this.model.get("uploadSuccess")&&this.$el.addClass("upload-success")},getParams:function(a){wpbc.broadcast.trigger("uploader:params","abcde")},failedUploadIngest:function(a){ -// Make sure we're acting on the right file. -a.id===this.model.get("id")&&(wpbc.broadcast.trigger("uploader:errorMessage",wpbc.preload.messages.unableToUpload.replace("%%s%%",this.model.get("fileName"))),this.render())},successfulUploadIngest:function(a){ -// Make sure we're acting on the right file. -a.id===this.model.get("id")&&(wpbc.broadcast.trigger("uploader:successMessage",wpbc.preload.messages.successUpload.replace("%%s%%",this.model.get("fileName"))),this.render())},/** - * Render if we're the active upload. - * Re-render if we thought we were but we no longer are. - * @param file Fired from UploadProgress on plUpload - */ -uploadProgress:function(a){ -// Make sure we're acting on the right file. -a.id===this.model.get("id")?(this.model.set("activeUpload",!0),this.model.set("percent",a.percent),this.render()):this.model.get("activeUpload")&&(this.model.unset("activeUpload"),this.render())},toggleRow:function(a){this.$el.toggleClass("selected"),this.$el.hasClass("selected")?(this.model.set("selected",!0),wpbc.broadcast.trigger("pendingUpload:selectedRow",this.cid)):wpbc.broadcast.trigger("pendingUpload:hideDetails",this.cid)},otherToggledRow:function(a){ -// Ignore broadcast from self -a!==this.cid?(this.$el.removeClass("selected"),this.model.unset("selected")):wpbc.broadcast.trigger("pendingUpload:selectedItem",this.model)}}),VideoEditView=BrightcoveView.extend({tagName:"div",className:"video-edit brightcove attachment-details",template:wp.template("brightcove-video-edit"),events:{"click .brightcove.button.save-sync":"saveSync","click .brightcove.delete":"deleteVideo","click .brightcove.button.back":"back","click .setting .button":"openMediaManager","click .attachment .check":"removeAttachment","click .caption-secondary-fields .delete":"removeCaptionRow","click .add-remote-caption":"addCaptionRow"},back:function(a){a.preventDefault(), -// Exit if the 'button' is disabled. -$(a.currentTarget).hasClass("disabled")||wpbc.broadcast.trigger("start:gridview")},deleteVideo:function(){confirm(wpbc.preload.messages.confirmDelete)&&(wpbc.broadcast.trigger("spinner:on"),this.model.set("mediaType","videos"),this.model.destroy())},/** - * Allow the user to attach a video still or thumbnail. - * - * @param {Event} evnt - */ -openMediaManager:function(a){a.preventDefault();var b=$(a.currentTarget).parents(".setting"),c=b.data("editor"),d=wp.media.frames.brightcove=wp.media(),e=this,f={state:"insert",title:wp.media.view.l10n.addMedia,multiple:!1}; -// Open the media manager -d.open(c,f), -// Listen for selection of media -d.on("select",function(){var b=d.state().get("selection").first().toJSON(),c=$(a).parents(".setting"); -// Set the selected attachment to the correct field -e.setAttachment(b,c), -// Make this action available to other areas of the application -wpbc.broadcast.trigger("media:selected")})},/** - * Set the hidden input to the ID of the selected attachment. - * - * @param {Object} media - * @param {String} field - * @returns {boolean} - */ -setAttachment:function(a,b){var b=b.prevObject[0].currentTarget,b=$(b).prev("input"),c=b.parents(".attachment"),d=c.find(".-image"); -// Perform different setup actions based on the type of upload -if(c.context.className.indexOf("captions")>-1) -// Executed if the user is uploading a closed caption -if("vtt"===a.subtype)this.addCaptionRow(!1,a);else{var e=wp.template("brightcove-badformat-notice"); -// Throw a notice to the user that the file is not the correct format -$(".brightcove-media-videos").prepend(e), -// Allow the user to dismiss the notice -$(".badformat.notice-dismiss").on("click",function(){$(".notice.badformat").first().fadeOut(500,function(){$(this).remove()})})}else{ -// Executed if the user is uploading a poster image or thumbnail -var f={url:a.sizes.full.url,width:a.sizes.full.width,height:a.sizes.full.height},g=document.createElement("img"); -// Set image properties -g.src=a.sizes.full.url,g.className="thumbnail", -// Display a preview image -c.addClass("active"),d.html(g)} -// Add our meta to the hidden field -b.val(JSON.stringify(f))},/** - * Allow the user to remove media from a given field. - * - * @param {Event} evnt - * @returns {boolean} - */ -removeAttachment:function(a){var b=$(a.currentTarget).parents(".attachment"),c=b.find(".-image"); -// Empty the field -b.next("input").val(""), -// Remove the preview image -b.removeClass("active"),c.empty()},/** - * Add a caption row - * - * @param {Event} evnt - * @param {Object} media - */ -addCaptionRow:function(a,b){ -// If using the add remote file link, prevent the page from jumping to the top -a&&a.preventDefault();var c=void 0;b&&(c=b.url),this.addCaption(c)},addCaption:function(a,b,c){var d=$(document.getElementById("js-caption-empty-row")).clone(),e=document.getElementById("js-captions");document.getElementById("js-caption-url"); -// Clean up our cloned row -d.find("input").prop("disabled",!1),d.removeAttr("id"),d.removeClass("empty-row"),a&&d.find(".brightcove-captions").val(a),b&&d.find(".brightcove-captions-language").val(b),c&&d.find(".brightcove-captions-label").val(c), -// Append our new row to the container -$(e).append(d), -// Update the context button text -this.updateCaptionText()},/** - * Remove a caption - * - * @param {Event} evnt - */ -removeCaptionRow:function(a){a.preventDefault();var b=a.currentTarget,c=$(b).parents(".caption-repeater"),d=c.find(".brightcove-captions"),e=c.find(".brightcove-captions-launguage"),f=c.find(".brightcove-captions-label"); -// Empty the input fields -$(d).val(""),$(e).val(""),$(f).val(""), -// Remove the container entirely -c.remove(), -// Update the context button text -this.updateCaptionText()},/** - * Updates the caption text based on number of captions - */ -updateCaptionText:function(){var a=$(".captions .button-secondary"),b=$(".add-remote-caption");10){ -// Update the tag dropdown and wpbc.preload.tags with any new tag values. -var a,c,d=b.find(".brightcove-tags").val();d&&(a=d.split(","),c=_.difference(a,wpbc.preload.tags)), -// Add any new tags to the tags object and the dropdown. -_.each(c,function(a){""!==(a=a.trim())&&wpbc.preload.tags.push(a)}),wpbc.preload.tags.sort()}}).always(function(){ -// Re-enable the button when the request has completed. -c.removeClass("disabled"), -// Show the delete link. -b.find(".delete-action").show()}), -// Hide the video edit screen after save. -wpbc.broadcast.trigger("start:gridview")}},/** - * Render the actual view for the Video Edit screen. - * - * @param {Object} options - */ -render:function(a){this.listenTo(wpbc.broadcast,"save:media",this.saveSync),this.listenTo(wpbc.broadcast,"back:editvideo",this.back),this.listenTo(wpbc.broadcast,"insert:shortcode",this.insertShortcode),a=this.model.toJSON(), -// Render the model into the template -this.$el.html(this.template(a)); -// Render custom fields into the template -var b=this.$el.find("#brightcove-custom-fields"),c=wp.template("brightcove-video-edit-custom-string"),d=wp.template("brightcove-video-edit-custom-enum");_.each(this.model.get("custom"),function(a){if("_change_history"!==a.id)switch(a.type){case"string":b.append(c(a));break;case"enum":b.append(d(a))}}); -// Render the change history -var e=this.model.get("history");if(void 0!==e){var f=""; -// Parse our fetched JSON object -e=JSON.parse(e),_.each(e,function(a){f+=a.user+" - "+a.time+"\n"}),""!==f&&this.$el.find("textarea.brightcove-change-history").val(f)} -// Configure a spinner to provide feedback during updates -var g=this.$el.find(".spinner"); -// Captions -if(this.listenTo(wpbc.broadcast,"spinner:on",function(){g.addClass("is-active").removeClass("hidden")}),this.listenTo(wpbc.broadcast,"spinner:off",function(){g.removeClass("is-active").addClass("hidden")}), -// If there's already a poster or thumbnail set, display it -this.model.get("poster")&&this.displayAttachment("poster"),this.model.get("thumbnail")&&this.displayAttachment("thumbnail"),this.model.get("captions"))for(var h=this.model.get("captions"),i=0,j=h.length;ithis.el.scrollHeight&&(this.collection.pageNumber+=1,this.loadMoreMediaItems())}},initialize:function(a){this.fetchingResults=!1,this.listenTo(wpbc.broadcast,"fetch:finished",function(){this.fetchingResults=!1}),this.listenTo(wpbc.broadcast,"fetch:apiError",this.handleAPIError);var b=wp.media.isTouchDevice?300:200;this.scrollHandler=_.chain(this.scrollHandler).bind(this).throttle(b).value(),this.listenTo(wpbc.broadcast,"scroll:mediaGrid",this.scrollHandler),a=a||{},this.el.id=_.uniqueId("__attachments-view-"), -// Occurs on playlist edit, existing videos. -!this.collection&&a.videoIds?(this.collection=new MediaCollection(null,{videoIds:a.videoIds,activeAccount:a.activeAccount,mediaCollectionViewType:a.mediaCollectionViewType}),this.listenTo(wpbc.broadcast,"playlist:moveUp",this.videoMoveUp),this.listenTo(wpbc.broadcast,"playlist:moveDown",this.videoMoveDown),this.listenTo(wpbc.broadcast,"playlist:remove",this.videoRemove),this.listenTo(wpbc.broadcast,"playlist:add",this.videoAdd)):this.collection||"libraryPlaylists"!==a.mediaCollectionViewType||(this.collection=new MediaCollection(null,{excludeVideoIds:a.excludeVideoIds,activeAccount:a.activeAccount,mediaCollectionViewType:a.mediaCollectionViewType}),this.listenTo(wpbc.broadcast,"playlist:remove",this.videoRemove),this.listenTo(wpbc.broadcast,"playlist:add",this.videoAdd)),_.defaults(this.options,{refreshSensitivity:wp.media.isTouchDevice?300:200,refreshThreshold:3,VideoView:wp.media.view.Video,sortable:!1,resize:!0,idealColumnWidth:202}),this._viewsByCid={},this.resizeEvent="resize.media-modal-columns",this.listenTo(this.collection,"add",function(a){this.views.add(this.createMediaView(a),{at:this.collection.indexOf(a)})},this),this.listenTo(this.collection,"remove",function(a){a&&(a.view?a.view.remove():a.cid&&this._viewsByCid[a.cid]&&this._viewsByCid[a.cid].remove())},this),this.listenTo(this.collection,"reset",this.render), -// Throttle the scroll handler and bind this. -this.scroll=_.chain(this.scroll).bind(this).throttle(this.options.refreshSensitivity).value(),this.options.scrollElement=this.options.scrollElement||this.el,$(this.options.scrollElement).on("scroll",this.scroll),_.bindAll(this,"setColumns"),this.options.resize&&(this.on("ready",this.bindEvents), -// this.controller.on('open', this.setColumns); -// Call this.setColumns() after this view has been rendered in the DOM so -// attachments get proper width applied. -_.defer(this.setColumns,this))},handleAPIError:function(){this.el.innerText=wpbc.str_apifailure},render:function(){ -// hide the spinner when content has finished loading -this.listenTo(wpbc.broadcast,"spinner:off",function(){$("#js-media-loading").css("display","none")}),this.$el.empty(),this.collection.each(function(a){a.view=new MediaView({model:a}),this.registerSubview(a.view),a.view.render(),a.view.delegateEvents(),a.view.$el.appendTo(this.$el),wpbc.broadcast.trigger("spinner:off")},this)},setViewType:function(a){this.collection.each(function(b){b.set("view",a)},this)},bindEvents:function(){this.$window.off(this.resizeEvent).on(this.resizeEvent,_.debounce(this.setColumns,50))},setColumns:function(){var a=this.columns,b=this.$el.width();b&&(this.columns=Math.min(Math.round(b/this.options.idealColumnWidth),12)||1,a&&a===this.columns||this.$el.closest(".media-frame-content").attr("data-columns",this.columns))},/** - * @param {wp.media.model.Video} attachment - * @returns {wp.media.View} - */ -createMediaView:function(a){a.set("viewType",this.collection.mediaCollectionViewType);var b=new MediaView({controller:this.controller,model:a,collection:this.collection,selection:this.options.selection});return this.registerSubview(b),this._viewsByCid[a.cid]=b,b},prepare:function(){ -// Create all of the Video views, and replace -// the list in a single DOM operation. -this.collection.length?this.views.set(this.collection.map(this.createMediaView,this)):(this.views.unset(),this.collection.more().done(this.scroll))},ready:function(){ -// Trigger the scroll event to check if we're within the -// threshold to query for additional attachments. -this.scroll()},scroll:function(){var a,b=this,c=this.options.scrollElement,d=c.scrollTop; -// The scroll event occurs on the document, but the element -// that should be checked is the document body. -c===document&&(c=document.body,d=$(document).scrollTop()),"function"===this.collection.hasMore&&$(c).is(":visible")&&this.collection.hasMore()&&(a=this.views.parent.toolbar, -// Show the spinner only if we are close to the bottom. -c.scrollHeight-(d+c.clientHeight)0&&(this.collection.remove(b,{silent:!0}),// silence this to stop excess event triggers -this.collection.add(b,{at:c-1})),this.render(),this.playlistChanged()},videoMoveDown:function(a){var b=a.model,c=this.collection.indexOf(b);c0?t+":"+(i<10?"0":""):"")+i+":"+(s<10?"0":"")+s}return e},getReadableDate:function(e){var t=this.get(e);if(t){var i=new Date(t),s=i.getHours(),a=i.getMinutes(),o=i.getFullYear(),d=i.getMonth()+1,n=i.getDate(),l=s>=12?"pm":"am";return o+"/"+d+"/"+n+" - "+(s=(s%=12)||12)+":"+(a=a<10?"0"+a:a)+" "+l}return t},successFunction:function(e){if(wpbc.broadcast.trigger("videoEdit:message",e,"success"),wpbc.broadcast.trigger("spinner:off"),_.isArray(this.get("video_ids"))&&wpbc.preload&&wpbc.preload.playlists){var t=this.get("id");_.each(wpbc.preload.playlists,function(e,i){e.id===t&&(wpbc.preload.playlists[i]=this.toJSON())},this)}wpbc.responses={},"videos"!==this.get("mediaType")&&_.isUndefined(this.get("video_ids"))?wpbc.preload.playlists=void 0:wpbc.preload.videos=void 0},failFunction:function(e){wpbc.broadcast.trigger("videoEdit:message",e,"error"),wpbc.broadcast.trigger("spinner:off")}}),MediaCollection=Backbone.Collection.extend({model:MediaModel,initialize:function(e,t){(t=t||{}).activeAccount&&(this.activeAccount=t.activeAccount),this.additionalRequest=!1,this.pageNumber=this.pageNumber||1,this.mediaType||"existingPlaylists"!==this.mediaCollectionViewType&&"libraryPlaylists"!==this.mediaCollectionViewType||(this.mediaType="videos"),this.mediaCollectionViewType=t.mediaCollectionViewType||"grid",t.excludeVideoIds&&"libraryPlaylists"===t.mediaCollectionViewType&&(this.excludeVideoIds=t.excludeVideoIds),t.videoIds&&!e?(this.mediaType="videos",this.videoIds=t.videoIds,this.fetch()):"playlists"!==t.mediaType&&(this.mediaType="videos",this.fetch()),this.mediaType=t.mediaType,"videos"===this.mediaType&&this.listenTo(wpbc.broadcast,"uploader:uploadedFileDetails",function(e){this.add(e,{at:0})}),this.activeAccount=t.activeAccount||"all",this.searchTerm=t.searchTerm||"",this.dates=t.dates||"all",this.tag=t.tag||"",this.listenTo(wpbc.broadcast,"change:activeAccount",function(e){this.activeAccount=e,wp.heartbeat.enqueue("brightcove_heartbeat",{accountId:e},!0),this.fetch()}),$(document).on("heartbeat-tick.brightcove_heartbeat",function(e,t){t.hasOwnProperty("brightcove_heartbeat")&&wp.heartbeat.enqueue("brightcove_heartbeat",{accountId:t.brightcove_heartbeat.account_id},!0)}),this.listenTo(wpbc.broadcast,"change:searchTerm",function(e){this.searchTerm=e,this.fetch()}),this.listenTo(wpbc.broadcast,"change:tag",function(e){"all"===e&&(e=""),this.tag=e,this.fetch()}),this.listenTo(wpbc.broadcast,"change:date",function(e){this.date=e,this.fetch()}),this.listenTo(wpbc.broadcast,"tabChange",function(e){if(this.killPendingRequests(),e.mediaType!==this.mediaType){this.mediaType=e.mediaType;for(var t,i=wpbc.preload[this.mediaType];t=this.first();)this.remove(t);void 0!==i?this.add(i):this.fetch()}})},killPendingRequests:function(){_.each(wpbc.requests,function(e){e.abort()}),wpbc.requests=[]},checksum:function(e){_.isString(e)||(e=_.isFunction(e.toJSON)?e.toJSON():JSON.stringify(e));for(var t=305419896,i=0;i1&&this.pageNumber--,wpbc.broadcast.trigger("fetch:finished"),wpbc.broadcast.trigger("spinner:off"),wpbc.broadcast.trigger("fetch:apiError"),status},parse:function(e,t,i,s){if(wpbc.broadcast.trigger("fetch:finished"),wpbc.broadcast.trigger("spinner:off"),!_.contains(["success","cached"],t)||"cached"!==t&&!e.success)return wpbc.broadcast.trigger("fetch:apiError"),!1;var a=e.data;if("success"===t&&(wpbc.responses[s]=a),!1===a)return!1;_.isArray(a)||(a=[a]),_.isArray(this.excludeVideoIds)&&_.each(this.excludeVideoIds,function(e){a=_.without(a,_.findWhere(a,{id:e}))});var o=_.map(a,function(e){var t,i,s;return e instanceof Backbone.Model?(t=e.get("id"),e=e.attributes):t=e.id,(i=this.findWhere({id:t}))?(s=i.parse(e),_.isEqual(i.attributes,s)||i.set(s)):i=this.add(e),i.set("viewType",this.mediaCollectionViewType),i},this);this.additionalRequest?this.add(o):this.set(o)}}),BrightcoveMediaManagerModel=Backbone.Model.extend({defaults:{view:"grid",date:"all",tags:"all",type:null,preload:!0,search:"",account:wpbc.preload.defaultAccountId,poster:{},thumbnail:{}},initialize:function(e){_.defaults(e,this.defaults),wp.heartbeat.enqueue("brightcove_heartbeat",{accountId:wpbc.preload.defaultAccountId},!0);var t=new MediaCollection([],{mediaType:e.mediaType});t.reset(),e.preload&&e.preload.length&&t.add(e.preload),e.preload=!!e.preload,this.set("media-collection-view",new MediaCollectionView({collection:t})),this.set("options",e)}}),BrightcoveModalModel=Backbone.Model.extend({getMediaManagerSettings:function(){var e=this.get("tab"),t={upload:{accounts:"all",date:"all",embedType:"modal",mediaType:"videos",mode:"uploader",preload:!0,search:"",tags:"all",viewType:"grid",poster:{},thumbnail:{}},videos:{accounts:"all",date:"all",embedType:"modal",mediaType:"videos",mode:"manager",preload:!0,search:"",tags:"all",viewType:"grid"},playlists:{accounts:"all",date:"all",embedType:"modal",mediaType:"playlists",mode:"manager",preload:!0,search:"",tags:"all",viewType:"grid"}};return void 0!==t[e]&&t[e]}}),UploadModelCollection=Backbone.Collection.extend({initialize:function(e){this.listenTo(wpbc.broadcast,"uploader:queuedFilesAdded",this.queuedFilesAdded)},queuedFilesAdded:function(e){_.each(e,function(e){this.add(new UploadModel(e))},this)}}),UploadModel=Backbone.Model.extend({initialize:function(e){},humanReadableSize:function(){var e=this.get("size");if(0===e)return"0 Byte";var t=["Bytes","KB","MB","GB"],i=Math.floor(Math.log(e)/Math.log(1e3));return(e/Math.pow(1e3,i)).toPrecision(3)+" "+t[i]}}),BrightcoveView=wp.Backbone.View.extend({subviews:null,registerSubview:function(e){this.subviews=this.subviews||[],this.subviews.push(e)},remove:function(){_.invoke(this.subviews,"remove"),wp.Backbone.View.prototype.remove.call(this)},insertShortcode:function(){if(this.model){var e=wpbc.shortcode;if(void 0===this.mediaType){var t=wp.template("brightcove-mediatype-notice");$("#lost-connection-notice").before(t),$("#js-mediatype-dismiss").on("click",function(){$("#js-mediatype-notice").first().fadeOut(500,function(){$(this).remove()})})}"content"===wpbc.modal.target?window.send_to_editor(e):($(wpbc.modal.target).val(e),$(wpbc.modal.target).change()),wpbc.broadcast.trigger("close:modal")}}}),ToolbarView=BrightcoveView.extend({tagName:"div",className:"media-toolbar wp-filter",template:wp.template("brightcove-media-toolbar"),events:{"click .view-list":"toggleList","click .view-grid":"toggleGrid","click .brightcove-toolbar":"toggleToolbar","change .brightcove-media-source":"sourceChanged","change .brightcove-media-dates":"datesChanged","change .brightcove-media-tags":"tagsChanged","change .brightcove-empty-playlists":"emptyPlaylistsChanged","click #media-search":"searchHandler"},render:function(){var e=this.model.get("mediaType"),t={accounts:wpbc.preload.accounts,dates:{},mediaType:e,tags:wpbc.preload.tags,account:this.model.get("account")},i=wpbc.preload.dates,s=this.model.get("date");void 0!==i&&void 0!==i[e]&&void 0!==i[e][s]&&(t.dates=i[e][s]),this.$el.html(this.template(t));var a=this.$el.find(".spinner");this.listenTo(wpbc.broadcast,"spinner:on",function(){a.addClass("is-active").removeClass("hidden")}),this.listenTo(wpbc.broadcast,"spinner:off",function(){a.removeClass("is-active").addClass("hidden")})},toggleList:function(){this.trigger("viewType","list"),this.$el.find(".view-list").addClass("current"),this.$el.find(".view-grid").removeClass("current")},toggleGrid:function(){this.trigger("viewType","grid"),this.$el.find(".view-grid").addClass("current"),this.$el.find(".view-list").removeClass("current")},toggleToolbar:function(){var e=wp.template("brightcove-tooltip-notice");$(".brightcove-media-videos").before(e),$("#js-tooltip-dismiss").on("click",function(){$("#js-tooltip-notice").first().fadeOut(500,function(){$(this).remove()})})},sourceChanged:function(e){this.model.set("account",e.target.value),wpbc.broadcast.trigger("change:activeAccount",e.target.value)},datesChanged:function(e){wpbc.broadcast.trigger("change:date",e.target.value)},tagsChanged:function(e){wpbc.broadcast.trigger("change:tag",e.target.value)},emptyPlaylistsChanged:function(e){var t=$(e.target).prop("checked");wpbc.broadcast.trigger("change:emptyPlaylists",t)},searchHandler:function(e){var t=$("#media-search-input").val();t.length>2&&t!==this.model.get("search")&&(this.model.set("search",t),wpbc.broadcast.trigger("change:searchTerm",t))}}),UploadVideoManagerView=BrightcoveView.extend({className:"brightcove-file-uploader",events:{"click .brightcove-start-upload":"triggerUpload"},initialize:function(e){this.collection=new UploadModelCollection,e&&(this.options=e,this.successMessage=e.successMessage||this.successMessage),this.uploadWindow=new UploadWindowView,this.listenTo(this.collection,"add",this.fileAdded),this.listenTo(wpbc.broadcast,"pendingUpload:selectedItem",this.selectedItem),this.listenTo(wpbc.broadcast,"uploader:prepareUpload",this.prepareUpload),this.listenTo(wpbc.broadcast,"uploader:successMessage",this.successMessage),this.listenTo(wpbc.broadcast,"uploader:errorMessage",this.errorMessage),this.listenTo(wpbc.broadcast,"uploader:clear",this.resetUploads),this.listenTo(wpbc.broadcast,"upload:video",this.resetUploads)},resetUploads:function(){for(;model=this.collection.first();)this.collection.remove(model)},errorMessage:function(e){this.message(e,"error")},successMessage:function(e){this.message(e,"success")},message:function(e,t){var i=this.$el.find(".brightcove-messages"),s="";"success"===t?s="notice updated":"error"===t&&(s="error");var a=$('

');i.append(a),a.addClass(s).find(".message-text").text(e),a.delay(4e3).fadeOut(500,function(){$(this).remove(),wpbc.broadcast.trigger("upload:video")})},prepareUpload:function(){wpbc.uploads=wpbc.uploads||{},this.collection.each(function(e){wpbc.uploads[e.get("id")]={account:e.get("account"),name:e.get("fileName"),tags:e.get("tags")}}),wpbc.broadcast.trigger("uploader:startUpload")},fileAdded:function(e,t){1===this.collection.length&&this.render();var i=new UploadView({model:e});i.render(),i.$el.appendTo(this.$el.find(".brightcove-pending-uploads"))},triggerUpload:function(){wpbc.broadcast.trigger("uploader:prepareUpload")},selectedItem:function(e){this.uploadDetails=new UploadDetailsView({model:e}),this.uploadDetails.render(),this.$el.find(".brightcove-pending-upload-details").remove(),this.uploadDetails.$el.appendTo(this.$el.find(".brightcove-upload-queued-files"))},render:function(e){this.collection.length?this.template=wp.template("brightcove-uploader-queued-files"):(this.template=wp.template("brightcove-uploader-inline"),this.uploadWindow.render(),this.uploadWindow.$el.appendTo($("body"))),this.$el.html(this.template(e)),this.collection.length?this.$el.find(".brightcove-start-upload").show():this.$el.find(".brightcove-start-upload").hide()}}),BrightcoveRouter=Backbone.Router.extend({routes:{"add-new-brightcove-video":"addNew"},addNew:function(){wpbc.broadcast.trigger("upload:video")}}),BrightcoveMediaManagerView=BrightcoveView.extend({tagName:"div",className:"brightcove-media",events:{},scrollHandler:function(){wpbc.broadcast.trigger("scroll:mediaGrid")},initialize:function(e){var t=wp.media.isTouchDevice?300:200;this.scrollHandler=_.chain(this.scrollHandler).bind(this).throttle(t).value(),this.options=e,this.mode=e.mode||"manager",e.preload=!!this.options.preload&&wpbc.preload[this.options.mediaType],this.model=new BrightcoveMediaManagerModel(e),this.toolbar=new ToolbarView({model:this.model}),this.uploader=new UploadVideoManagerView,this.model.set("accounts",wpbc.preload.accounts),this.model.set("activeAccount",e.account),this.listenTo(this.toolbar,"viewType",function(e){this.model.set("view",e)}),this.listenTo(wpbc.broadcast,"videoEdit:message",this.message),this.listenTo(wpbc.broadcast,"permanent:message",this.permanentMessage),this.listenTo(wpbc.broadcast,"remove:permanentMessage",function(){wpbc.permanentMessage&&wpbc.permanentMessage.remove(),this.$el.find(".brightcove-message").addClass("hidden")}),this.listenTo(this.model,"change:view",function(e,t){this.model.get("media-collection-view").setViewType(t)}),this.listenTo(this.model,"change:mode",function(e,t){"uploader"!==t&&wpbc.broadcast.trigger("uploader:clear")}),this.listenTo(wpbc.broadcast,"cancelPreview:media",function(e){this.clearPreview(),this.detailsView=void 0,this.model.set("mode","manager"),this.render(),wpbc.broadcast.trigger("toggle:insertButton")}),this.listenTo(wpbc.broadcast,"change:emptyPlaylists",function(e){var t=this.model.get("media-collection-view");this.model.set("mode","manager"),_.each(t.collection.models,function(t){"EXPLICIT"===t.get("type")&&0===t.get("video_ids").length&&(e?t.view.$el.hide():t.view.$el.show())})}),this.listenTo(wpbc.broadcast,"delete:successful",function(e){this.startGridView(),this.message(e,"success")}),this.listenTo(wpbc.broadcast,"change:activeAccount",function(e){this.clearPreview(),this.model.set("activeAccount",e),this.model.set("mode","manager"),this.render()}),this.listenTo(wpbc.broadcast,"change:tag",function(e){this.clearPreview(),this.model.set("tag",e)}),this.listenTo(wpbc.broadcast,"change:date",function(e){this.clearPreview(),this.model.set("date",e)}),this.listenTo(wpbc.broadcast,"upload:video",function(){this.showUploader()}),this.listenTo(this.model,"change:search",function(e,t){this.model.get("search")}),this.listenTo(wpbc.broadcast,"start:gridview",function(){_.invoke(this.subviews,"remove"),this.detailsView=null,this.startGridView()}),this.listenTo(wpbc.broadcast,"tabChange",function(e){this.model.set(e),this.detailsView instanceof MediaDetailsView&&(this.detailsView.remove(),this.detailsView=void 0),this.render()}),this.listenTo(wpbc.broadcast,"edit:media",function(e){if("videos"===this.model.get("mediaType")){if("editVideo"===this.model.get("mode"))return!0;this.$el.find(".brightcove-message").addClass("hidden"),this.editView=new VideoEditView({model:e}),this.registerSubview(this.editView),this.model.set("mode","editVideo"),this.render()}else{if("editPlaylist"===this.model.get("mode"))return!0;this.editView=new PlaylistEditView({model:e}),this.registerSubview(this.editView),this.model.set("mode","editPlaylist"),this.render()}}),this.listenTo(wpbc.broadcast,"preview:media",function(e){if("videos"===this.model.get("mediaType")){if("previewVideo"===this.model.get("mode"))return!0;this.previewView=new VideoPreviewView({model:e}),this.registerSubview(this.previewView),this.model.set("mode","previewVideo"),this.render()}else this.model.set("mode","editPlaylist")}),this.listenTo(wpbc.broadcast,"change:searchTerm",function(e){this.clearPreview()}),this.listenTo(wpbc.broadcast,"select:media",function(e){this.detailsView&&this.detailsView.model===e.model?(this.detailsView.$el.toggle(),e.$el.toggleClass("highlighted"),this.model.get("media-collection-view").$el.toggleClass("menu-visible"),wpbc.broadcast.trigger("toggle:insertButton")):(this.clearPreview(),this.detailsView=new MediaDetailsView({model:e.model,el:$(".brightcove.media-frame-menu"),mediaType:this.model.get("mediaType")}),this.registerSubview(this.detailsView),this.detailsView.render(),this.detailsView.$el.toggle(!0),this.model.get("media-collection-view").$el.addClass("menu-visible"),e.$el.addClass("highlighted"),wpbc.broadcast.trigger("toggle:insertButton","enabled"))})},clearPreview:function(){this.detailsView instanceof MediaDetailsView&&this.detailsView.remove(),this.model.get("media-collection-view").$el.find(".highlighted").removeClass("highlighted")},startGridView:function(){this.model.set("mode","manager"),this.render()},message:function(e,t,i){var s=this.$el.find(".brightcove-message");"success"===t?(s.addClass("updated"),s.removeClass("error")):"error"===t&&(s.addClass("error"),s.removeClass("updated"));var a=$("

");a.text(e),s.append(a),s.removeClass("hidden"),i?(wpbc.permanentMessage&&wpbc.permanentMessage.remove(),wpbc.permanentMessage=a):(s.addClass("notice is-dismissible"),this.makeNoticesDismissible())},makeNoticesDismissible:function(){$(".notice.is-dismissible").each(function(){var e=$(this),t=$(''),i=commonL10n.dismiss||"";t.find(".screen-reader-text").text(i),t.on("click.wp-dismiss-notice",function(t){t.preventDefault(),e.fadeTo(100,0,function(){e.slideUp(100,function(){e.addClass("hidden").css({opacity:1,"margin-bottom":0,display:""}).empty()})})}),e.append(t)})},showUploader:function(){this.model.set("mode","uploader"),this.render()},permanentMessage:function(e){this.message(e,"error",!0)},render:function(){var e,t=this.model.get("options"),i=this.model.get("mode");if(_.invoke(this.subviews,"remove"),"uploader"===i)this.template=wp.template("brightcove-uploader-container"),this.$el.empty(),this.$el.html(this.template(t)),this.uploader.render(),this.uploader.delegateEvents(),this.uploader.$el.appendTo($(".brightcove-uploader"));else if("manager"===i){this.template=wp.template("brightcove-media"),this.$el.html(this.template(t)),this.toolbar.render(),this.toolbar.delegateEvents(),this.toolbar.$el.show(),this.toolbar.$el.appendTo(this.$el.find(".media-frame-router"));var s=this.model.get("media-collection-view");s.render(),s.delegateEvents();var a=this.$el.find(".media-frame-content");a.on("scroll",this.scrollHandler),s.$el.appendTo(a),wpbc.initialSync&&(wpbc.broadcast.trigger("remove:permanentMessage"),wpbc.broadcast.trigger("permanent:message",wpbc.preload.messages.ongoingSync))}else"editVideo"===i?(this.toolbar.$el.hide(),(e=this.$el.find(".media-frame-content")).empty(),this.editView.render(),this.editView.delegateEvents(),this.editView.$el.appendTo(e),this.$el.find(".brightcove.media-frame-content").addClass("edit-view")):"editPlaylist"===i?(this.toolbar.$el.hide(),(e=this.$el).empty(),e.html('
'),e=e.find(".playlist-edit-container"),this.editView.render(),this.editView.delegateEvents(),this.editView.$el.appendTo(e),e.addClass("playlist")):"previewVideo"===i&&(this.toolbar.$el.hide(),(e=this.$el.find(".media-frame-content")).empty(),this.previewView.render(),this.detailsView.render({detailsMode:"preview"}),this.previewView.delegateEvents(),this.previewView.$el.appendTo(e),this.$el.find(".brightcove.media-frame-toolbar").hide(),brightcove.createExperiences());return"editPlaylist"!==i&&this.$el.find(".media-frame-content").removeClass("playlist"),this}}),BrightcoveModalView=BrightcoveView.extend({tagName:"div",className:"media-modal brightcove",template:wp.template("brightcove-media-modal"),events:{"click .brightcove.media-menu-item":"changeTab","click .brightcove.media-button-insert":"insertIntoPost","click .brightcove.media-modal-icon":"closeModal","click .brightcove.save-sync":"saveSync","click .brightcove.button.back":"back"},initialize:function(e){this.model=new BrightcoveModalModel({tab:e.tab}),this.brightcoveMediaManager=new BrightcoveMediaManagerView(this.model.getMediaManagerSettings()),this.registerSubview(this.brightcoveMediaManager),this.listenTo(wpbc.broadcast,"toggle:insertButton",function(e){this.toggleInsertButton(e)}),this.listenTo(wpbc.broadcast,"close:modal",this.closeModal)},saveSync:function(e){wpbc.broadcast.trigger("save:media",e)},back:function(e){wpbc.broadcast.trigger("back:editvideo",e)},insertIntoPost:function(e){e.preventDefault(),$(e.currentTarget).hasClass("disabled")||(wpbc.shortcode=$("#shortcode").val(),wpbc.broadcast.trigger("insert:shortcode"))},toggleInsertButton:function(e){var t=this.$el.find(".brightcove.media-button-insert"),i=$(".attachment.highlighted").find(".processing").length;t.show(),1===i?t.attr("disabled","disabled"):"enabled"===e?t.removeAttr("disabled"):"disabled"===e?t.attr("disabled","disabled"):void 0!==t.attr("disabled")?t.removeAttr("disabled"):t.attr("disabled","disabled")},changeTab:function(e){if(e.preventDefault(),!$(e.target).hasClass("active")){$(e.target).addClass("active");var t=_.without(e.target.classList,"media-menu-item","brightcove")[0],i=["videos","upload","playlists"];_.each(_.without(i,t),function(e){$(".brightcove.media-menu-item."+e).removeClass("active")}),_.contains(i,t)&&(this.model.set("tab",t),wpbc.broadcast.trigger("spinner:off"),wpbc.broadcast.trigger("tabChange",this.model.getMediaManagerSettings()))}},closeModal:function(e){"editVideo"===wpbc.modal.brightcoveMediaManager.model.get("mode")&&wpbc.broadcast.trigger("start:gridview"),!_.isUndefined(e)&&$(e.currentTarget).parent().hasClass("disabled")||(this.$el.hide(),$("body").removeClass("modal-open"))},message:function(e){this.$el.find(".brightcove-message")},render:function(e){this.$el.html(this.template(e)),this.brightcoveMediaManager.render(),this.brightcoveMediaManager.$el.appendTo(this.$el.find(".media-frame-content")),this.listenTo(wpbc.broadcast,"edit:media",function(e,t){"videos"===t?(this.$el.find(".brightcove.button.save-sync").show(),this.$el.find(".brightcove.button.back").show(),this.$el.find(".brightcove.media-button-insert").hide()):(this.$el.find(".brightcove.button.save-sync").hide(),this.$el.find(".brightcove.button.back").hide(),this.$el.find(".brightcove.media-button-insert").hide())}),this.listenTo(wpbc.broadcast,"save:media back:editvideo start:gridView",function(){this.$el.find(".brightcove.button.save-sync").hide(),this.$el.find(".brightcove.button.back").hide(),this.$el.find(".brightcove.media-button-insert").show(),wpbc.broadcast.trigger("toggle:insertButton")})}}),MediaDetailsView=BrightcoveView.extend({tagName:"div",className:"media-details",attributes:function(){return{tabIndex:0,role:"checkbox","aria-label":this.model.get("title"),"aria-checked":!1,"data-id":this.model.get("id")}},events:{"click .brightcove.edit.button":"triggerEditMedia","click .brightcove.preview.button":"triggerPreviewMedia","click .brightcove.back.button":"triggerCancelPreviewMedia","change #aspect-ratio":"toggleUnits",'change #video-player, #autoplay, input[name="embed-style"], input[name="sizing"], #aspect-ratio, #width, #height, #units':"generateShortcode","change #generate-shortcode":"toggleShortcodeGeneration"},triggerEditMedia:function(e){e.preventDefault(),wpbc.broadcast.trigger("edit:media",this.model,this.mediaType)},triggerPreviewMedia:function(e){e.preventDefault(),wpbc.broadcast.trigger("preview:media",this.model)},triggerCancelPreviewMedia:function(e){wpbc.broadcast.trigger("cancelPreview:media",this.mediaType)},toggleUnits:function(e){"custom"===$("#aspect-ratio").val()?$("#custom").show():$("#custom").hide()},generateShortcode:function(){var e,t=this.model.get("id").replace(/\D/g,""),i=this.model.get("account_id").replace(/\D/g,""),s=$("#video-player").val(),a=$("#autoplay").is(":checked")?"autoplay":"",o=$('input[name="embed-style"]:checked').val(),d=$('input[name="sizing"]:checked').val(),n=$("#aspect-ratio").val(),l=$("#width").val(),r="",c=$("#width").val(),h=$("#height").val(),p=$("#units").val();r="16:9"===n?"56":"4:3"===n?"75":h/c*100,"responsive"===d&&(c="100",h="100"),e='[bc_video video_id="'+t+'" account_id="'+i+'" player_id="'+s+'" embed="'+o+'" padding_top="'+r+'%" autoplay="'+a+'" min_width="0px" max_width="'+l+'" width="'+c+p+'" height="'+h+p+'"]',$("#shortcode").val(e)},toggleShortcodeGeneration:function(){var e=$("#generate-shortcode").val(),t=$('#video-player, #autoplay, input[name="embed-style"], input[name="sizing"], #aspect-ratio, #width, #height, #units');"manual"===e?($("#shortcode").removeAttr("readonly"),t.attr("disabled",!0)):($("#shortcode").attr("readonly",!0),t.removeAttr("disabled"))},initialize:function(e){e=e||{},this.type=e.type?e.type:"grid",this.mediaType=e.mediaType,this.listenTo(wpbc.broadcast,"insert:shortcode",this.insertShortcode),this.listenTo(this.model,"change",this.render)},render:function(e){return e=_.extend({},e,this.model.toJSON()),e.duration=this.model.getReadableDuration(),e.updated_at_readable=this.model.getReadableDate("updated_at"),e.created_at_readable=this.model.getReadableDate("created_at"),e.account_name=this.model.getAccountName(),this.template=wp.template("brightcove-media-item-details-"+this.mediaType),this.$el.html(this.template(e)),this.delegateEvents(),this.generateShortcode(),this},remove:function(){return this.undelegateEvents(),this.$el.empty(),this.stopListening(),this}}),MediaView=BrightcoveView.extend({tagName:"li",className:"attachment brightcove",attributes:function(){return{tabIndex:0,role:"checkbox","aria-label":this.model.get("title"),"aria-checked":!1,"data-id":this.model.get("id")}},events:{"click .attachment-preview":"toggleDetailView","click .video-move-up":"videoMoveUp","click .video-move-down":"videoMoveDown","click .trash":"removeVideoFromPlaylist","click .add-to-playlist":"videoAdd","click .edit":"triggerEditMedia","click .preview":"triggerPreviewMedia"},triggerEditMedia:function(e){e.preventDefault(),wpbc.broadcast.trigger("edit:media",this.model)},triggerPreviewMedia:function(e){e.preventDefault(),wpbc.broadcast.trigger("preview:media",this.model)},buttons:{},initialize:function(e){e=e||{},this.type=e.type?e.type:"grid",this.listenTo(this.model,"change:view",function(e,t){this.type!==t&&(this.type=t,this.render())}),this.render()},render:function(){var e=this.model.toJSON();return e.duration=this.model.getReadableDuration(),e.updated_at_readable=this.model.getReadableDate("updated_at"),e.account_name=this.model.getAccountName(),"existingPlaylists"===e.viewType?this.template=wp.template("brightcove-playlist-edit-video-in-playlist"):"libraryPlaylists"===e.viewType?this.template=wp.template("brightcove-playlist-edit-video-in-library"):this.template=wp.template("brightcove-media-item-"+this.type),e.buttons=this.buttons,this.$el.html(this.template(e)),this.$el.toggleClass("uploading",e.uploading),this},toggleDetailView:function(){wpbc.broadcast.trigger("select:media",this)},videoMoveUp:function(){wpbc.broadcast.trigger("playlist:moveUp",this)},videoMoveDown:function(){wpbc.broadcast.trigger("playlist:moveDown",this)},videoAdd:function(){wpbc.broadcast.trigger("playlist:add",this)},removeVideoFromPlaylist:function(){wpbc.broadcast.trigger("playlist:remove",this)}}),PlaylistEditView=BrightcoveView.extend({tagName:"div",className:"playlist-edit brightcove attachment-details",template:wp.template("brightcove-playlist-edit"),events:{"click .brightcove.button.save-sync":"saveSync","click .brightcove.playlist-back":"back","change .brightcove-name":"updatedName"},deleteVideo:function(e){e.preventDefault(),this.model.set("mediaType","videos"),this.model.destroy()},updatedName:function(e){this.model.get("name")!==e.target.value&&(this.model.set("name",e.target.value),this.model.save())},back:function(e){e.preventDefault(),wpbc.broadcast.trigger("start:gridview")},saveSync:function(e){e.preventDefault(),this.model.set("name",this.$el.find(".brightcove-name").val()),this.model.set("description",this.$el.find(".brightcove-description").val()),this.model.set("long_description",this.$el.find(".brightcove-long-description").val()),this.model.set("tags",this.$el.find(".brightcove-tags").val()),this.model.set("mediaType","videos"),this.model.save()},initialize:function(){this.listenTo(wpbc.broadcast,"tabChange",function(){_.invoke(this.subviews,"remove")}),wpbc.broadcast.trigger("spinner:off")},render:function(e){e=this.model.toJSON(),this.$el.html(this.template(e)),this.spinner=this.$el.find(".spinner");this.$el.find(".existing-videos");e.video_ids&&(this.killPendingRequests(),this.playlistVideosView=new MediaCollectionView({el:this.$el.find(".existing-videos"),videoIds:e.video_ids,activeAccount:this.model.get("account_id"),mediaCollectionViewType:"existingPlaylists",mediaType:"playlists"}),this.libraryVideosView=new MediaCollectionView({el:this.$el.find(".library-videos"),excludeVideoIds:e.video_ids,activeAccount:this.model.get("account_id"),mediaCollectionViewType:"libraryPlaylists",mediaType:"playlists"}),this.registerSubview(this.playlistVideosView),this.registerSubview(this.libraryVideosView),this.listenTo(wpbc.broadcast,"playlist:changed",_.throttle(this.playlistChanged,300)),this.listenTo(wpbc.broadcast,"insert:shortcode",this.insertShortcode)),this.listenTo(wpbc.broadcast,"spinner:on",function(){this.spinner.addClass("is-active").removeClass("hidden")}),this.listenTo(wpbc.broadcast,"spinner:off",function(){this.spinner.removeClass("is-active").addClass("hidden")})},playlistChanged:function(e){this.killPendingRequests(),this.model.set("video_ids",e),this.model.save()},killPendingRequests:function(){_.each(wpbc.requests,function(e){e.abort()}),wpbc.requests=[]}}),UploadDetailsView=BrightcoveView.extend({className:"brightcove-pending-upload-details attachment-details",tagName:"div",template:wp.template("brightcove-pending-upload-details"),events:{"keyup .brightcove-name":"nameChanged","keyup .brightcove-tags":"tagsChanged","change .brightcove-media-source":"accountChanged"},initialize:function(e){this.listenTo(wpbc.broadcast,"pendingUpload:hideDetails",this.hide),this.listenTo(wpbc.broadcast,"uploader:fileUploaded",function(e){e.id===this.model.get("id")&&(this.model.set("uploaded",!0),this.render())}),this.model.set("ingestSuccess",!0),this.model.set("uploadSuccess",!0)},nameChanged:function(e){this.model.set("fileName",e.target.value)},tagsChanged:function(e){this.model.set("tags",e.target.value)},accountChanged:function(e){this.model.set("account",e.target.value)},hide:function(){this.$el.hide()},render:function(e){(e=e||{}).fileName=this.model.get("fileName"),e.tags=this.model.get("tags"),e.size=this.model.humanReadableSize(),e.accounts=this.model.get("accounts"),e.account=this.model.get("account"),e.uploaded=this.model.get("uploaded"),this.$el.html(this.template(e))}});UploadWindowView=BrightcoveView.extend({className:"uploader-window",template:wp.template("brightcove-uploader-window"),initialize:function(e){_.bindAll(this,"uploaderFilesAdded"),this.listenTo(wpbc.broadcast,"uploader:queuedFilesAdded",this.hide),this.listenTo(wpbc.broadcast,"uploader:startUpload",this.uploaderStartUpload),this.listenTo(wpbc.broadcast,"uploader:clear",this.resetUploads)},render:function(e){this.$el.html(this.template(e)),_.defer(_.bind(this.afterRender,this))},resetUploads:function(){this.uploader&&this.uploader.files&&(this.uploader.files=[])},afterRender:function(){this.uploader=new plupload.Uploader(_.defaults(this.options,wpbc.preload.plupload)),this.uploader.added=this.uploaderFilesAdded,this.uploader.progress=this.uploaderUploadProgress,this.uploader.bind("FilesAdded",this.uploaderFilesAdded),this.uploader.bind("UploadProgress",this.uploaderUploadProgress),this.uploader.bind("BeforeUpload",this.uploaderBeforeUpload),this.uploader.bind("FileUploaded",this.uploaderFileUploaded),this.uploader.bind("init",this.uploaderAfterInit),this.uploader.init(),$("html").on("dragenter",_.bind(this.show,this));var e=wpbc.preload.plupload.drop_element.replace(/[^a-zA-Z0-9-]+/g,"");$("#"+e).on("dropzone:leave",_.bind(this.hide,this))},uploaderAfterInit:function(e){var t,i,s,a=wpbc.preload.plupload.drop_element.replace(/[^a-zA-Z0-9-]+/g,""),o=$("#"+a);if(s=e.features.dragdrop,o){if(o.toggleClass("supports-drag-drop",!!s),!s)return o.unbind(".wp-uploader");o.bind("dragover.wp-uploader",function(){t&&clearTimeout(t),i||(o.trigger("dropzone:enter").addClass("drag-over"),i=!0)}),o.bind("dragleave.wp-uploader, drop.wp-uploader",function(){t=setTimeout(function(){i=!1,o.trigger("dropzone:leave").removeClass("drag-over")},0)})}},show:function(){var e=this.$el.show();_.defer(function(){e.css({opacity:1})})},hide:function(){var e=this.$el.css({opacity:0});wp.media.transition(e).done(function(){"0"===e.css("opacity")&&e.hide()}),_.delay(function(){"0"===e.css("opacity")&&e.is(":visible")&&e.hide()},500)},uploaderFilesAdded:function(e,t){wpbc.broadcast.trigger("uploader:queuedFilesAdded",t)},uploaderStartUpload:function(){this.uploader.start()},uploaderUploadProgress:function(e,t){wpbc.broadcast.trigger("uploader:uploadProgress",t)},uploaderBeforeUpload:function(e,t){e.settings.multipart_params=_.defaults(wpbc.uploads[t.id],wpbc.preload.plupload.multipart_params,{nonce:wpbc.preload.nonce})},uploaderFileUploaded:function(e,t,i){var s=JSON.parse(i.response);wpbc.broadcast.trigger("uploader:fileUploaded",t),"success"===s.data.upload&&"success"===s.data.ingest?(s.data.videoDetails&&wpbc.broadcast.trigger("uploader:uploadedFileDetails",s.data.videoDetails),wpbc.broadcast.trigger("uploader:successfulUploadIngest",t)):(t.percent=0,t.status=plupload.UPLOADING,e.state=plupload.STARTED,e.trigger("StateChanged"),wpbc.broadcast.trigger("uploader:failedUploadIngest",t))}});var UploadView=BrightcoveView.extend({className:"brightcove-pending-upload",tagName:"tr",template:wp.template("brightcove-pending-upload"),events:{click:"toggleRow"},initialize:function(){this.listenTo(wpbc.broadcast,"pendingUpload:selectedRow",this.otherToggledRow),this.listenTo(wpbc.broadcast,"uploader:uploadProgress",this.uploadProgress),this.listenTo(wpbc.broadcast,"uploader:getParams",this.getParams),this.listenTo(wpbc.broadcast,"uploader:successfulUploadIngest",this.successfulUploadIngest),this.listenTo(wpbc.broadcast,"uploader:failedUploadIngest",this.failedUploadIngest);var e={fileName:this.model.get("name"),tags:"",accounts:wpbc.preload.accounts,account:wpbc.preload.defaultAccount,ingestSuccess:!1,uploadSuccess:!1,uploaded:!1};this.model.set(e),this.listenTo(this.model,"change:fileName",this.render),this.listenTo(this.model,"change:account",this.render)},render:function(e){(e=e||{}).fileName=this.model.get("fileName"),e.size=this.model.humanReadableSize();var t=this.model.get("account");e.accountName=wpbc.preload.accounts[t].account_name,e.percent=this.model.get("percent"),e.activeUpload=this.model.get("activeUpload"),e.ingestSuccess=this.model.get("ingestSuccess"),e.uploadSuccess=this.model.get("uploadSuccess"),this.$el.html(this.template(e)),this.model.get("selected")&&this.$el.addClass("selected"),this.model.get("ingestSuccess")&&this.$el.addClass("ingest-success"),this.model.get("uploadSuccess")&&this.$el.addClass("upload-success")},getParams:function(e){wpbc.broadcast.trigger("uploader:params","abcde")},failedUploadIngest:function(e){e.id===this.model.get("id")&&(wpbc.broadcast.trigger("uploader:errorMessage",wpbc.preload.messages.unableToUpload.replace("%%s%%",this.model.get("fileName"))),this.render())},successfulUploadIngest:function(e){e.id===this.model.get("id")&&(wpbc.broadcast.trigger("uploader:successMessage",wpbc.preload.messages.successUpload.replace("%%s%%",this.model.get("fileName"))),this.render())},uploadProgress:function(e){e.id===this.model.get("id")?(this.model.set("activeUpload",!0),this.model.set("percent",e.percent),this.render()):this.model.get("activeUpload")&&(this.model.unset("activeUpload"),this.render())},toggleRow:function(e){this.$el.toggleClass("selected"),this.$el.hasClass("selected")?(this.model.set("selected",!0),wpbc.broadcast.trigger("pendingUpload:selectedRow",this.cid)):wpbc.broadcast.trigger("pendingUpload:hideDetails",this.cid)},otherToggledRow:function(e){e!==this.cid?(this.$el.removeClass("selected"),this.model.unset("selected")):wpbc.broadcast.trigger("pendingUpload:selectedItem",this.model)}}),VideoEditView=BrightcoveView.extend({tagName:"div",className:"video-edit brightcove attachment-details",template:wp.template("brightcove-video-edit"),events:{"click .brightcove.button.save-sync":"saveSync","click .brightcove.delete":"deleteVideo","click .brightcove.button.back":"back","click .setting .button":"openMediaManager","click .attachment .check":"removeAttachment","click .caption-secondary-fields .delete":"removeCaptionRow","click .add-remote-caption":"addCaptionRow"},back:function(e){e.preventDefault(),$(e.currentTarget).hasClass("disabled")||wpbc.broadcast.trigger("start:gridview")},deleteVideo:function(){confirm(wpbc.preload.messages.confirmDelete)&&(wpbc.broadcast.trigger("spinner:on"),this.model.set("mediaType","videos"),this.model.destroy())},openMediaManager:function(e){e.preventDefault();var t=$(e.currentTarget).parents(".setting").data("editor"),i=wp.media.frames.brightcove=wp.media(),s=this,a={state:"insert",title:wp.media.view.l10n.addMedia,multiple:!1};i.open(t,a),i.on("select",function(){var t=i.state().get("selection").first().toJSON(),a=$(e).parents(".setting");s.setAttachment(t,a),wpbc.broadcast.trigger("media:selected")})},setAttachment:function(e,t){var t=t.prevObject[0].currentTarget,i=(t=$(t).prev("input")).parents(".attachment"),s=i.find(".-image");if(i.context.className.indexOf("captions")>-1)if("vtt"===e.subtype)this.addCaptionRow(!1,e);else{var a=wp.template("brightcove-badformat-notice");$(".brightcove-media-videos").prepend(a),$(".badformat.notice-dismiss").on("click",function(){$(".notice.badformat").first().fadeOut(500,function(){$(this).remove()})})}else{var o={url:e.sizes.full.url,width:e.sizes.full.width,height:e.sizes.full.height},d=document.createElement("img");d.src=e.sizes.full.url,d.className="thumbnail",i.addClass("active"),s.html(d)}t.val(JSON.stringify(o))},removeAttachment:function(e){var t=$(e.currentTarget).parents(".attachment"),i=t.find(".-image");t.next("input").val(""),t.removeClass("active"),i.empty()},addCaptionRow:function(e,t){e&&e.preventDefault();var i=void 0;t&&(i=t.url),this.addCaption(i)},addCaption:function(e,t,i){var s=$(document.getElementById("js-caption-empty-row")).clone(),a=document.getElementById("js-captions");document.getElementById("js-caption-url");s.find("input").prop("disabled",!1),s.removeAttr("id"),s.removeClass("empty-row"),e&&s.find(".brightcove-captions").val(e),t&&s.find(".brightcove-captions-language").val(t),i&&s.find(".brightcove-captions-label").val(i),$(a).append(s),this.updateCaptionText()},removeCaptionRow:function(e){e.preventDefault();var t=e.currentTarget,i=$(t).parents(".caption-repeater"),s=i.find(".brightcove-captions"),a=i.find(".brightcove-captions-launguage"),o=i.find(".brightcove-captions-label");$(s).val(""),$(a).val(""),$(o).val(""),i.remove(),this.updateCaptionText()},updateCaptionText:function(){var e=$(".captions .button-secondary"),t=$(".add-remote-caption");10){var e,i,s=t.find(".brightcove-tags").val();s&&(e=s.split(","),i=_.difference(e,wpbc.preload.tags)),_.each(i,function(e){""!==(e=e.trim())&&wpbc.preload.tags.push(e)}),wpbc.preload.tags.sort()}}).always(function(){i.removeClass("disabled"),t.find(".delete-action").show()}),wpbc.broadcast.trigger("start:gridview")}},render:function(e){this.listenTo(wpbc.broadcast,"save:media",this.saveSync),this.listenTo(wpbc.broadcast,"back:editvideo",this.back),this.listenTo(wpbc.broadcast,"insert:shortcode",this.insertShortcode),e=this.model.toJSON(),this.$el.html(this.template(e));var t=this.$el.find("#brightcove-custom-fields"),i=wp.template("brightcove-video-edit-custom-string"),s=wp.template("brightcove-video-edit-custom-enum");_.each(this.model.get("custom"),function(e){if("_change_history"!==e.id)switch(e.type){case"string":t.append(i(e));break;case"enum":t.append(s(e))}});var a=this.model.get("history");if(void 0!==a){var o="";a=JSON.parse(a),_.each(a,function(e){o+=e.user+" - "+e.time+"\n"}),""!==o&&this.$el.find("textarea.brightcove-change-history").val(o)}var d=this.$el.find(".spinner");if(this.listenTo(wpbc.broadcast,"spinner:on",function(){d.addClass("is-active").removeClass("hidden")}),this.listenTo(wpbc.broadcast,"spinner:off",function(){d.removeClass("is-active").addClass("hidden")}),this.model.get("poster")&&this.displayAttachment("poster"),this.model.get("thumbnail")&&this.displayAttachment("thumbnail"),this.model.get("captions"))for(var n=this.model.get("captions"),l=0,r=n.length;lthis.el.scrollHeight&&(this.collection.pageNumber+=1,this.loadMoreMediaItems())}},initialize:function(e){this.fetchingResults=!1,this.listenTo(wpbc.broadcast,"fetch:finished",function(){this.fetchingResults=!1}),this.listenTo(wpbc.broadcast,"fetch:apiError",this.handleAPIError);var t=wp.media.isTouchDevice?300:200;this.scrollHandler=_.chain(this.scrollHandler).bind(this).throttle(t).value(),this.listenTo(wpbc.broadcast,"scroll:mediaGrid",this.scrollHandler),e=e||{},this.el.id=_.uniqueId("__attachments-view-"),!this.collection&&e.videoIds?(this.collection=new MediaCollection(null,{videoIds:e.videoIds,activeAccount:e.activeAccount,mediaCollectionViewType:e.mediaCollectionViewType}),this.listenTo(wpbc.broadcast,"playlist:moveUp",this.videoMoveUp),this.listenTo(wpbc.broadcast,"playlist:moveDown",this.videoMoveDown),this.listenTo(wpbc.broadcast,"playlist:remove",this.videoRemove),this.listenTo(wpbc.broadcast,"playlist:add",this.videoAdd)):this.collection||"libraryPlaylists"!==e.mediaCollectionViewType||(this.collection=new MediaCollection(null,{excludeVideoIds:e.excludeVideoIds,activeAccount:e.activeAccount,mediaCollectionViewType:e.mediaCollectionViewType}),this.listenTo(wpbc.broadcast,"playlist:remove",this.videoRemove),this.listenTo(wpbc.broadcast,"playlist:add",this.videoAdd)),_.defaults(this.options,{refreshSensitivity:wp.media.isTouchDevice?300:200,refreshThreshold:3,VideoView:wp.media.view.Video,sortable:!1,resize:!0,idealColumnWidth:202}),this._viewsByCid={},this.resizeEvent="resize.media-modal-columns",this.listenTo(this.collection,"add",function(e){this.views.add(this.createMediaView(e),{at:this.collection.indexOf(e)})},this),this.listenTo(this.collection,"remove",function(e){e&&(e.view?e.view.remove():e.cid&&this._viewsByCid[e.cid]&&this._viewsByCid[e.cid].remove())},this),this.listenTo(this.collection,"reset",this.render),this.scroll=_.chain(this.scroll).bind(this).throttle(this.options.refreshSensitivity).value(),this.options.scrollElement=this.options.scrollElement||this.el,$(this.options.scrollElement).on("scroll",this.scroll),_.bindAll(this,"setColumns"),this.options.resize&&(this.on("ready",this.bindEvents),_.defer(this.setColumns,this))},handleAPIError:function(){this.el.innerText=wpbc.str_apifailure},render:function(){this.listenTo(wpbc.broadcast,"spinner:off",function(){$("#js-media-loading").css("display","none")}),this.$el.empty(),this.collection.each(function(e){e.view=new MediaView({model:e}),this.registerSubview(e.view),e.view.render(),e.view.delegateEvents(),e.view.$el.appendTo(this.$el),wpbc.broadcast.trigger("spinner:off")},this)},setViewType:function(e){this.collection.each(function(t){t.set("view",e)},this)},bindEvents:function(){this.$window.off(this.resizeEvent).on(this.resizeEvent,_.debounce(this.setColumns,50))},setColumns:function(){var e=this.columns,t=this.$el.width();t&&(this.columns=Math.min(Math.round(t/this.options.idealColumnWidth),12)||1,e&&e===this.columns||this.$el.closest(".media-frame-content").attr("data-columns",this.columns))},createMediaView:function(e){e.set("viewType",this.collection.mediaCollectionViewType);var t=new MediaView({controller:this.controller,model:e,collection:this.collection,selection:this.options.selection});return this.registerSubview(t),this._viewsByCid[e.cid]=t,t},prepare:function(){this.collection.length?this.views.set(this.collection.map(this.createMediaView,this)):(this.views.unset(),this.collection.more().done(this.scroll))},ready:function(){this.scroll()},scroll:function(){var e,t=this,i=this.options.scrollElement,s=i.scrollTop;i===document&&(i=document.body,s=$(document).scrollTop()),"function"===this.collection.hasMore&&$(i).is(":visible")&&this.collection.hasMore()&&(e=this.views.parent.toolbar,i.scrollHeight-(s+i.clientHeight)0&&(this.collection.remove(t,{silent:!0}),this.collection.add(t,{at:i-1})),this.render(),this.playlistChanged()},videoMoveDown:function(e){var t=e.model,i=this.collection.indexOf(t);i <# } #> +
{{ data.name }} -
{{ data.account_name }}
-
{{ data.id }}
- parent_base; - - if ( 'edit' === $parent_base ) { ?> -
- - <# _.each( wpbc.players[data.account_id].items, function ( player ) { #> - - <# }); #> -
- -
+ + +
+ + + + {{ data.account_name }} + + + + + {{ data.id }} + + parent_base; + + if ( 'edit' === $parent_base ) : ?> + + + + + +
+ +
+ + +
+ + +
+ + +
+ + +
+ + + + +
+ + + + + + + + +
+ + + + + + + +
+
<# if ('preview' === data.detailsMode) { #> diff --git a/includes/class-bc-utility.php b/includes/class-bc-utility.php index 52fe536b..ded25cb2 100644 --- a/includes/class-bc-utility.php +++ b/includes/class-bc-utility.php @@ -790,30 +790,31 @@ public static function get_requests_transient_key( $account_id ) { } /** - * Render Player + * Render Player. * * Renders the player from Brightcove based on passed parameters * * @since 1.0 * - * @param string $type "playlist" or "video". - * @param string $id The brightcove player or video ID. - * @param string $account_id The Brightcove account ID. - * @param string $player_id The brightcove player ID. - * @param int $width The Width to display. - * @param int $height The height to display. + * @param string $type "playlist" or "video". + * @param array $atts The shortcode attributes. * * @return string The HTML code for the player */ - public static function player( $type, $id, $account_id, $player_id = 'default', $width = 0, $height = 0 ) { - - // Sanitize and Verify. - $account_id = BC_Utility::sanitize_id( $account_id ); - $player_id = BC_Utility::sanitize_player_id( $player_id ); - $id = BC_Utility::sanitize_id( $id ); - $height = (int) $height; - $width = (int) $width; + public static function player( $type, $atts ) { $type = ( 'playlist' === $type ) ? 'playlist' : 'video'; + $account_id = BC_Utility::sanitize_id( $atts['account_id'] ); + $player_id = BC_Utility::sanitize_player_id( $atts['player_id'] ); + $id = BC_Utility::sanitize_id( $atts['video_id'] ); + $height = sanitize_text_field( $atts['height'] ); + $width = sanitize_text_field( $atts['width'] ); + $min_width = sanitize_text_field( $atts['min_width'] ); + $max_width = sanitize_text_field( $atts['max_width'] ); + $padding_top = sanitize_text_field( $atts['padding_top'] ); + $autoplay = ( 'autoplay' === $atts['autoplay'] ) ? 'autoplay' : ''; + + $embed = sanitize_text_field( $atts['embed'] ); + if ( 'playlist' === $type && 'default' === $player_id ) { @@ -828,28 +829,66 @@ public static function player( $type, $id, $account_id, $player_id = 'default', } - $html = ''; + ob_start(); + ?> + + + +
+
+ + + +
+
+ + +
+
+ +
+
+ + + +
+ + + ', + $account_id, + $player_id, + $type, + $id, + ( 0 === $width ) ? '100%' : $width . 'px', + ( 0 === $height ) ? '100%' : $height . 'px', + ( 0 === $width && 0 === $height ) ? 'position: absolute; top: 0px; bottom: 0px; right: 0px; left: 0px;' : '' + ); + ?> - if ( 0 === $width && 0 === $height ) { - $html .= '
'; - } + +
+ - $html .= sprintf( - '', - $account_id, - $player_id, - $type, - $id, - ( 0 === $width ) ? '100%' : $width . 'px', - ( 0 === $height ) ? '100%' : $height . 'px', - ( 0 === $width && 0 === $height ) ? 'position: absolute; top: 0px; bottom: 0px; right: 0px; left: 0px;' : '' - ); + - if ( 0 === $width && 0 === $height ) { - $html .= '
'; - } + - $html .= ''; + 'default', - 'account_id' => '', - 'video_id' => '', - 'height' => 0, - 'width' => 0, + 'player_id' => 'default', + 'account_id' => '', + 'video_id' => '', + 'autoplay' => '', + 'embed' => '', + 'padding_top' => '56.25%', + 'min_width' => '0px', + 'max_width' => '100%', + 'height' => 0, + 'width' => 0, ); $atts = shortcode_atts( $defaults, $atts, 'bc_video' ); - return BC_Utility::player( 'video', $atts['video_id'], $atts['account_id'], $atts['player_id'], $atts['width'], $atts['height'] ); - + return BC_Utility::player( 'video', $atts ); } } From 814f0f2b5ee9743b20612e259a10b3a35b169011 Mon Sep 17 00:00:00 2001 From: Sudar Muthu Date: Fri, 13 Oct 2017 17:55:20 +0530 Subject: [PATCH 07/31] Add usage data to iframe and video url --- includes/class-bc-utility.php | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/includes/class-bc-utility.php b/includes/class-bc-utility.php index ded25cb2..0a573ebc 100644 --- a/includes/class-bc-utility.php +++ b/includes/class-bc-utility.php @@ -839,6 +839,7 @@ public static function player( $type, $atts ) {