From 7ad4205f7018ad356257ae1f1218dc27fdd1cfb2 Mon Sep 17 00:00:00 2001 From: Scott Taylor Date: Wed, 19 Mar 2014 07:02:15 +0000 Subject: [PATCH] Add MCE views for audio and video shortcodes. When the shortcode does not contain a source that supports native playback, just show the filename. * Remove the audio/video shortcode parsing from the `wpgallery` plugin. * Make `mce-view` a dependency of `media-audiovideo` * Introduce `wp.mce.video`, `wp.mce.audio`, `wp.mce.media`, and `wp.mce.media.View` * Rename `wp.media.audio|video.shortcode()` to `wp.media.audio|video.update()` since it is called on Update and returns a `wp.shortcode` object now. * In `wp.mce.View.render()`, fire a `ready` event when the placeholder is being parsed and pass the current node to the event handler. See #27389, #27437. Built from https://develop.svn.wordpress.org/trunk@27615 git-svn-id: http://core.svn.wordpress.org/trunk@27458 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/js/mce-view.js | 14 +- wp-includes/js/mce-view.min.js | 2 +- wp-includes/js/media-audiovideo.js | 165 +++++++++++++++--- wp-includes/js/media-audiovideo.min.js | 2 +- .../js/tinymce/plugins/wpgallery/plugin.js | 33 +--- .../tinymce/plugins/wpgallery/plugin.min.js | 2 +- .../js/tinymce/skins/wordpress/wp-content.css | 66 +++++-- wp-includes/js/tinymce/wp-tinymce.js.gz | Bin 121461 -> 121352 bytes wp-includes/media-template.php | 17 ++ wp-includes/script-loader.php | 2 +- 10 files changed, 224 insertions(+), 79 deletions(-) diff --git a/wp-includes/js/mce-view.js b/wp-includes/js/mce-view.js index be2681a06b..73e33c9cfb 100644 --- a/wp-includes/js/mce-view.js +++ b/wp-includes/js/mce-view.js @@ -31,10 +31,14 @@ window.wp = window.wp || {}; var html = this.getHtml(); // Search all tinymce editor instances and update the placeholders _.each( tinymce.editors, function( editor ) { - var doc; + var doc, self = this; if ( editor.plugins.wpview ) { doc = editor.getDoc(); - $( doc ).find( '[data-wpview-text="' + this.encodedText + '"]' ).html( html ); + $( doc ).find( '[data-wpview-text="' + this.encodedText + '"]' ).each(function (i, elem) { + var node = $( elem ); + node.html( html ); + $( self ).trigger( 'ready', elem ); + }); } }, this ); } @@ -178,7 +182,7 @@ window.wp = window.wp || {}; /** * Refresh views after an update is made - * + * * @param view {object} being refreshed * @param text {string} textual representation of the view */ @@ -204,9 +208,9 @@ window.wp = window.wp || {}; return instances[ encodedText ]; }, - /** + /** * render( scope ) - * + * * Renders any view instances inside a DOM node `scope`. * * View instances are detected by the presence of wrapper elements. diff --git a/wp-includes/js/mce-view.min.js b/wp-includes/js/mce-view.min.js index c0229cce0e..92d42a172b 100644 --- a/wp-includes/js/mce-view.min.js +++ b/wp-includes/js/mce-view.min.js @@ -1 +1 @@ -window.wp=window.wp||{},function(a){var b={},c={},d=wp.media,e=["encodedText"];wp.mce=wp.mce||{},wp.mce.View=function(a){a||(a={}),_.extend(this,_.pick(a,e)),this.initialize.apply(this,arguments)},_.extend(wp.mce.View.prototype,{initialize:function(){},html:function(){},render:function(){var b=this.getHtml();_.each(tinymce.editors,function(c){var d;c.plugins.wpview&&(d=c.getDoc(),a(d).find('[data-wpview-text="'+this.encodedText+'"]').html(b))},this)}}),wp.mce.View.extend=Backbone.View.extend,wp.mce.views={register:function(a,c){b[a]=c},get:function(a){return b[a]},unregister:function(a){delete b[a]},toViews:function(a){var c,d=[{content:a}];return _.each(b,function(a,b){c=d.slice(),d=[],_.each(c,function(c){var e,f=c.content;if(c.processed)return void d.push(c);for(;f&&(e=a.toView(f));)e.index&&d.push({content:f.substring(0,e.index)}),d.push({content:wp.mce.views.toView(b,e.content,e.options),processed:!0}),f=f.slice(e.index+e.content.length);f&&d.push({content:f})})}),_.pluck(d,"content").join("")},toView:function(a,b,d){var e,f,g=wp.mce.views.get(a),h=window.encodeURIComponent(b);return g?(wp.mce.views.getInstance(h)||(f=d,f.encodedText=h,e=new g.View(f),c[h]=e),wp.html.string({tag:"div",attrs:{"class":"wpview-wrap wpview-type-"+a,"data-wpview-text":h,"data-wpview-type":a,contenteditable:"false"},content:" "})):b},refreshView:function(a,b){var d,e,f,g=window.encodeURIComponent(b);f=wp.mce.views.getInstance(g),f||(e=a.toView(b),d=e.options,d.encodedText=g,f=new a.View(d),c[g]=f),wp.mce.views.render()},getInstance:function(a){return c[a]},render:function(){_.each(c,function(a){a.render()})},edit:function(b){var c=a(b).data("wpview-type"),d=wp.mce.views.get(c);d&&d.edit(b)}},wp.mce.gallery={shortcode:"gallery",toView:function(a){var b=wp.shortcode.next(this.shortcode,a);if(b)return{index:b.index,content:b.content,options:{shortcode:b.shortcode}}},View:wp.mce.View.extend({className:"editor-gallery",template:d.template("editor-gallery"),postID:a("#post_ID").val(),initialize:function(a){this.shortcode=a.shortcode,this.fetch()},fetch:function(){this.attachments=wp.media.gallery.attachments(this.shortcode,this.postID),this.attachments.more().done(_.bind(this.render,this))},getHtml:function(){var a,b,c=this.shortcode.attrs.named;if(this.attachments.length)return b=this.attachments.toJSON(),_.each(b,function(a){a.thumbnail=a.sizes.thumbnail?a.sizes.thumbnail:a.sizes.full}),a={attachments:b,columns:c.columns?parseInt(c.columns,10):3},this.template(a)}}),edit:function(b){var c,d,e=wp.media.gallery,f=this;d=window.decodeURIComponent(a(b).attr("data-wpview-text")),c=e.edit(d),c.state("gallery-edit").on("update",function(d){var g=e.shortcode(d).string();a(b).attr("data-wpview-text",window.encodeURIComponent(g)),wp.mce.views.refreshView(f,g),c.detach()})}},wp.mce.views.register("gallery",wp.mce.gallery)}(jQuery); \ No newline at end of file +window.wp=window.wp||{},function(a){var b={},c={},d=wp.media,e=["encodedText"];wp.mce=wp.mce||{},wp.mce.View=function(a){a||(a={}),_.extend(this,_.pick(a,e)),this.initialize.apply(this,arguments)},_.extend(wp.mce.View.prototype,{initialize:function(){},html:function(){},render:function(){var b=this.getHtml();_.each(tinymce.editors,function(c){var d,e=this;c.plugins.wpview&&(d=c.getDoc(),a(d).find('[data-wpview-text="'+this.encodedText+'"]').each(function(c,d){var f=a(d);f.html(b),a(e).trigger("ready",d)}))},this)}}),wp.mce.View.extend=Backbone.View.extend,wp.mce.views={register:function(a,c){b[a]=c},get:function(a){return b[a]},unregister:function(a){delete b[a]},toViews:function(a){var c,d=[{content:a}];return _.each(b,function(a,b){c=d.slice(),d=[],_.each(c,function(c){var e,f=c.content;if(c.processed)return void d.push(c);for(;f&&(e=a.toView(f));)e.index&&d.push({content:f.substring(0,e.index)}),d.push({content:wp.mce.views.toView(b,e.content,e.options),processed:!0}),f=f.slice(e.index+e.content.length);f&&d.push({content:f})})}),_.pluck(d,"content").join("")},toView:function(a,b,d){var e,f,g=wp.mce.views.get(a),h=window.encodeURIComponent(b);return g?(wp.mce.views.getInstance(h)||(f=d,f.encodedText=h,e=new g.View(f),c[h]=e),wp.html.string({tag:"div",attrs:{"class":"wpview-wrap wpview-type-"+a,"data-wpview-text":h,"data-wpview-type":a,contenteditable:"false"},content:" "})):b},refreshView:function(a,b){var d,e,f,g=window.encodeURIComponent(b);f=wp.mce.views.getInstance(g),f||(e=a.toView(b),d=e.options,d.encodedText=g,f=new a.View(d),c[g]=f),wp.mce.views.render()},getInstance:function(a){return c[a]},render:function(){_.each(c,function(a){a.render()})},edit:function(b){var c=a(b).data("wpview-type"),d=wp.mce.views.get(c);d&&d.edit(b)}},wp.mce.gallery={shortcode:"gallery",toView:function(a){var b=wp.shortcode.next(this.shortcode,a);if(b)return{index:b.index,content:b.content,options:{shortcode:b.shortcode}}},View:wp.mce.View.extend({className:"editor-gallery",template:d.template("editor-gallery"),postID:a("#post_ID").val(),initialize:function(a){this.shortcode=a.shortcode,this.fetch()},fetch:function(){this.attachments=wp.media.gallery.attachments(this.shortcode,this.postID),this.attachments.more().done(_.bind(this.render,this))},getHtml:function(){var a,b,c=this.shortcode.attrs.named;if(this.attachments.length)return b=this.attachments.toJSON(),_.each(b,function(a){a.thumbnail=a.sizes.thumbnail?a.sizes.thumbnail:a.sizes.full}),a={attachments:b,columns:c.columns?parseInt(c.columns,10):3},this.template(a)}}),edit:function(b){var c,d,e=wp.media.gallery,f=this;d=window.decodeURIComponent(a(b).attr("data-wpview-text")),c=e.edit(d),c.state("gallery-edit").on("update",function(d){var g=e.shortcode(d).string();a(b).attr("data-wpview-text",window.encodeURIComponent(g)),wp.mce.views.refreshView(f,g),c.detach()})}},wp.mce.views.register("gallery",wp.mce.gallery)}(jQuery); \ No newline at end of file diff --git a/wp-includes/js/media-audiovideo.js b/wp-includes/js/media-audiovideo.js index 173a203ec3..c3e2910655 100644 --- a/wp-includes/js/media-audiovideo.js +++ b/wp-includes/js/media-audiovideo.js @@ -1,4 +1,4 @@ -/* global _wpMediaViewsL10n */ +/* global _wpMediaViewsL10n, _wpmejsSettings, MediaElementPlayer */ (function ($, _, Backbone) { var media = wp.media, l10n = typeof _wpMediaViewsL10n === 'undefined' ? {} : _wpMediaViewsL10n; @@ -61,7 +61,7 @@ video: ['ogg', 'webm'] }, 'chrome' : { - audio: ['ogg', 'mpeg', 'x-ms-wma'], + audio: ['ogg', 'mpeg'], video: ['ogg', 'webm', 'mp4', 'm4v', 'mpeg'] }, 'ff' : { @@ -227,20 +227,24 @@ return frame; }, - shortcode : function (shortcode) { - var self = this; + update : function (model) { + var self = this, content; - _.each( wp.media.audio.defaults, function( value, key ) { - shortcode[ key ] = self.coerce( shortcode, key ); + _.each( this.defaults, function( value, key ) { + model[ key ] = self.coerce( model, key ); - if ( value === shortcode[ key ] ) { - delete shortcode[ key ]; + if ( value === model[ key ] ) { + delete model[ key ]; } }); - return wp.shortcode.string({ - tag: 'audio', - attrs: shortcode + content = model.content; + delete model.content; + + return new wp.shortcode({ + tag: 'audio', + attrs: model, + content: content }); } }; @@ -283,21 +287,23 @@ return frame; }, - shortcode : function (shortcode) { - var self = this, content = shortcode.content; - delete shortcode.content; + update : function (model) { + var self = this, content; _.each( this.defaults, function( value, key ) { - shortcode[ key ] = self.coerce( shortcode, key ); + model[ key ] = self.coerce( model, key ); - if ( value === shortcode[ key ] ) { - delete shortcode[ key ]; + if ( value === model[ key ] ) { + delete model[ key ]; } }); - return wp.shortcode.string({ - tag: 'video', - attrs: shortcode, + content = model.content; + delete model.content; + + return new wp.shortcode({ + tag: 'video', + attrs: model, content: content }); } @@ -972,6 +978,125 @@ } } ); + wp.mce.media = { + toView: function( content ) { + var match = wp.shortcode.next( this.shortcode, content ); + + if ( ! match ) { + return; + } + + return { + index: match.index, + content: match.content, + options: { + shortcode: match.shortcode + } + }; + }, + + edit: function( node ) { + var p, + media = wp.media[ this.shortcode ], + self = this, + frame, data; + + wp.media.mixin.pauseAllPlayers(); + + data = window.decodeURIComponent( $( node ).data('wpview-text') ); + frame = media.edit( data ); + frame.on( 'close', function () { + frame.detach(); + } ); + frame.state( self.shortcode + '-details' ).on( 'update', function( selection ) { + var shortcode = wp.media[ self.shortcode ].update( selection ).string(); + $( node ).attr( 'data-wpview-text', window.encodeURIComponent( shortcode ) ); + wp.mce.views.refreshView( self, shortcode ); + frame.detach(); + } ); + frame.open(); + } + }; + + wp.mce.media.View = wp.mce.View.extend({ + initialize: function( options ) { + this.shortcode = options.shortcode; + _.bindAll( this, 'setPlayer' ); + $(this).on( 'ready', this.setPlayer ); + }, + + setPlayer: function (e, node) { + // if the ready event fires on an empty node + if ( ! node ) { + return; + } + + var self = this, + media, + settings = {}, + className = '.wp-' + this.shortcode.tag + '-shortcode'; + + if ( this.player ) { + this.unsetPlayer(); + } + + media = $( node ).find( className ); + + if ( ! _.isUndefined( window._wpmejsSettings ) ) { + settings.pluginPath = _wpmejsSettings.pluginPath; + } + + if ( ! this.isCompatible( media ) ) { + media.closest( '.wpview-wrap' ).addClass( 'wont-play' ); + if ( ! media.parent().hasClass( 'wpview-wrap' ) ) { + media.parent().replaceWith( media ); + } + media.replaceWith( '

' + media.find( 'source' ).eq(0).prop( 'src' ) + '

' ); + return; + } else { + media.closest( '.wpview-wrap' ).removeClass( 'wont-play' ); + if ( this.ua.is( 'ff' ) ) { + media.prop( 'preload', 'metadata' ); + } else { + media.prop( 'preload', 'none' ); + } + } + + media = wp.media.view.MediaDetails.prepareSrc( media.get(0) ); + + // Thanks, Firefox! + setTimeout(function () { + self.player = new MediaElementPlayer( media, settings ); + }, 50); + }, + + getHtml: function() { + var attrs = this.shortcode.attrs.named; + return this.template({ model: attrs }); + } + }); + _.extend( wp.mce.media.View.prototype, wp.media.mixin ); + + wp.mce.video = _.extend( {}, wp.mce.media, { + shortcode: 'video', + View: wp.mce.media.View.extend({ + className: 'editor-video', + template: media.template('editor-video') + }) + } ); + + wp.mce.views.register( 'video', wp.mce.video ); + + wp.mce.audio = _.extend( {}, wp.mce.media, { + shortcode: 'audio', + View: wp.mce.media.View.extend({ + className: 'editor-audio', + template: media.template('editor-audio') + }) + } ); + + wp.mce.views.register( 'audio', wp.mce.audio ); + function init() { $(document.body) .on( 'click', '.wp-switch-editor', wp.media.mixin.pauseAllPlayers ) diff --git a/wp-includes/js/media-audiovideo.min.js b/wp-includes/js/media-audiovideo.min.js index 4e3f40bf77..151b42e2c4 100644 --- a/wp-includes/js/media-audiovideo.min.js +++ b/wp-includes/js/media-audiovideo.min.js @@ -1 +1 @@ -!function(a,b,c){function d(){a(document.body).on("click",".wp-switch-editor",wp.media.mixin.pauseAllPlayers).on("click",".add-media-source",function(){e.frame.setState("add-"+e.frame.defaults.id+"-source")})}var e=wp.media,f="undefined"==typeof _wpMediaViewsL10n?{}:_wpMediaViewsL10n;wp.media.mixin={pauseAllPlayers:function(){var a;if(window.mejs&&window.mejs.players)for(a in window.mejs.players)window.mejs.players[a].pause()},ua:{is:function(a){var b=!1,c=window.navigator.userAgent;switch(a){case"oldie":b=null!==c.match(/MSIE [6-8]/gi);break;case"ie":b=null!==c.match(/MSIE/gi);break;case"ff":b=null!==c.match(/firefox/gi);break;case"opera":b=null!==c.match(/OPR/);break;case"safari":b=null!==c.match(/safari/gi)&&null===c.match(/chrome/gi);break;case"chrome":b=c.match(/safari/gi)&&null!==c.match(/chrome/gi)}return b}},compat:{opera:{audio:["ogg","wav"],video:["ogg","webm"]},chrome:{audio:["ogg","mpeg","x-ms-wma"],video:["ogg","webm","mp4","m4v","mpeg"]},ff:{audio:["ogg","mpeg"],video:["ogg","webm"]},safari:{audio:["mpeg","wav"],video:["mp4","m4v","mpeg","x-ms-wmv","quicktime"]},ie:{audio:["mpeg"],video:["mp4","m4v","mpeg"]}},isCompatible:function(a){if(!a.find("source").length)return!1;var c,d=this.ua,e=!1,f=!1;return d.is("oldIE")?!1:(c=a.find("source"),b.find(this.compat,function(a,g){return d.is(g)&&(f=!0,b.each(c,function(b){var c=new RegExp("audio/("+a.audio.join("|")+")","gi"),d=new RegExp("video/("+a.video.join("|")+")","gi");(null!==b.type.match(d)||null!==b.type.match(c))&&(e=!0)})),e||f}),e)},removePlayer:function(){var a,b,c=this.player;for(a in c.options.features)if(b=c.options.features[a],c["clean"+b])try{c["clean"+b](c)}catch(d){}c.isDynamic||c.$node.remove(),"native"!==c.media.pluginType&&c.media.remove(),delete window.mejs.players[c.id],c.container.remove(),c.globalUnbind(),delete c.node.player},unsetPlayer:function(){this.player&&(wp.media.mixin.pauseAllPlayers(),wp.media.mixin.removePlayer.apply(this),this.player=!1)}},wp.media.playlist=new wp.media.collection({tag:"playlist",type:"audio",editTitle:f.editPlaylistTitle,defaults:{id:wp.media.view.settings.post.id,style:"light",tracklist:!0,tracknumbers:!0,images:!0,artists:!0}}),wp.media["video-playlist"]=new wp.media.collection({tag:"video-playlist",type:"video",editTitle:f.editVideoPlaylistTitle,defaults:{id:wp.media.view.settings.post.id,style:"light",tracklist:!1,tracknumbers:!1,images:!0}}),wp.media.audio={coerce:wp.media.coerce,defaults:{id:wp.media.view.settings.post.id,src:"",loop:!1,autoplay:!1,preload:"none"},edit:function(a){var c,d=wp.shortcode.next("audio",a).shortcode;return c=wp.media({frame:"audio",state:"audio-details",metadata:b.defaults(d.attrs.named,wp.media.audio.defaults)})},shortcode:function(a){var c=this;return b.each(wp.media.audio.defaults,function(b,d){a[d]=c.coerce(a,d),b===a[d]&&delete a[d]}),wp.shortcode.string({tag:"audio",attrs:a})}},wp.media.video={coerce:wp.media.coerce,defaults:{id:wp.media.view.settings.post.id,src:"",poster:"",loop:!1,autoplay:!1,preload:"metadata",content:""},edit:function(a){var c,d,e=this.defaults,f=wp.shortcode.next("video",a).shortcode;return d=f.attrs.named,d.content=f.content,c=wp.media({frame:"video",state:"video-details",metadata:b.defaults(d,e)})},shortcode:function(a){var c=this,d=a.content;return delete a.content,b.each(this.defaults,function(b,d){a[d]=c.coerce(a,d),b===a[d]&&delete a[d]}),wp.shortcode.string({tag:"video",attrs:a,content:d})}},e.model.PostMedia=c.Model.extend({initialize:function(){this.attachment=!1},setSource:function(a){this.attachment=a,this.extension=a.get("filename").split(".").pop(),this.get("src")&&this.extension===this.get("src").split(".").pop()&&this.unset("src"),b.contains(wp.media.view.settings.embedExts,this.extension)?this.set(this.extension,this.attachment.get("url")):this.unset(this.extension)},changeAttachment:function(a){var c=this;this.setSource(a),this.unset("src"),b.each(b.without(wp.media.view.settings.embedExts,this.extension),function(a){c.unset(a)})}}),e.controller.AudioDetails=e.controller.State.extend({defaults:b.defaults({id:"audio-details",toolbar:"audio-details",title:f.audioDetailsTitle,content:"audio-details",menu:"audio-details",router:!1,attachment:!1,priority:60,editing:!1},e.controller.Library.prototype.defaults),initialize:function(a){this.media=a.media,e.controller.State.prototype.initialize.apply(this,arguments)}}),e.controller.VideoDetails=e.controller.State.extend({defaults:b.defaults({id:"video-details",toolbar:"video-details",title:f.videoDetailsTitle,content:"video-details",menu:"video-details",router:!1,attachment:!1,priority:60,editing:!1},e.controller.Library.prototype.defaults),initialize:function(a){this.media=a.media,e.controller.State.prototype.initialize.apply(this,arguments)}}),e.view.MediaFrame.MediaDetails=e.view.MediaFrame.Select.extend({defaults:{id:"media",url:"",menu:"media-details",content:"media-details",toolbar:"media-details",type:"link",priority:120},initialize:function(a){this.DetailsView=a.DetailsView,this.cancelText=a.cancelText,this.addText=a.addText,this.media=new e.model.PostMedia(a.metadata),this.options.selection=new e.model.Selection(this.media.attachment,{multiple:!1}),e.view.MediaFrame.Select.prototype.initialize.apply(this,arguments)},bindHandlers:function(){var a=this.defaults.menu;e.view.MediaFrame.Select.prototype.bindHandlers.apply(this,arguments),this.on("menu:create:"+a,this.createMenu,this),this.on("content:render:"+a,this.renderDetailsContent,this),this.on("menu:render:"+a,this.renderMenu,this),this.on("toolbar:render:"+a,this.renderDetailsToolbar,this)},renderDetailsContent:function(){var a=new this.DetailsView({controller:this,model:this.state().media,attachment:this.state().media.attachment}).render();this.content.set(a)},renderMenu:function(a){var b=this.lastState(),c=b&&b.id,d=this;a.set({cancel:{text:this.cancelText,priority:20,click:function(){c?d.setState(c):d.close()}},separateCancel:new e.View({className:"separator",priority:40})})},renderDetailsToolbar:function(){this.toolbar.set(new e.view.Toolbar({controller:this,items:{select:{style:"primary",text:f.update,priority:80,click:function(){var a=this.controller,b=a.state();a.close(),b.trigger("update",a.media.toJSON()),a.setState(a.options.state),a.reset()}}}}))},renderReplaceToolbar:function(){this.toolbar.set(new e.view.Toolbar({controller:this,items:{replace:{style:"primary",text:f.replace,priority:80,click:function(){var a=this.controller,b=a.state(),c=b.get("selection"),d=c.single();a.media.changeAttachment(d),b.trigger("replace",a.media.toJSON()),a.setState(a.options.state),a.reset()}}}}))},renderAddSourceToolbar:function(){this.toolbar.set(new e.view.Toolbar({controller:this,items:{replace:{style:"primary",text:this.addText,priority:80,click:function(){var a=this.controller,b=a.state(),c=b.get("selection"),d=c.single();a.media.setSource(d),b.trigger("add-source",a.media.toJSON()),a.setState(a.options.state),a.reset()}}}}))}}),e.view.MediaFrame.AudioDetails=e.view.MediaFrame.MediaDetails.extend({defaults:{id:"audio",url:"",menu:"audio-details",content:"audio-details",toolbar:"audio-details",type:"link",title:f.audioDetailsTitle,priority:120},initialize:function(a){a.DetailsView=e.view.AudioDetails,a.cancelText=f.audioDetailsCancel,a.addText=f.audioAddSourceTitle,e.view.MediaFrame.MediaDetails.prototype.initialize.call(this,a)},bindHandlers:function(){e.view.MediaFrame.MediaDetails.prototype.bindHandlers.apply(this,arguments),this.on("toolbar:render:replace-audio",this.renderReplaceToolbar,this),this.on("toolbar:render:add-audio-source",this.renderAddSourceToolbar,this)},createStates:function(){this.states.add([new e.controller.AudioDetails({media:this.media,editable:!1,menu:"audio-details"}),new e.controller.MediaLibrary({type:"audio",id:"replace-audio",title:f.audioReplaceTitle,toolbar:"replace-audio",media:this.media,menu:"audio-details"}),new e.controller.MediaLibrary({type:"audio",id:"add-audio-source",title:f.audioAddSourceTitle,toolbar:"add-audio-source",media:this.media,menu:!1})])}}),e.view.MediaFrame.VideoDetails=e.view.MediaFrame.MediaDetails.extend({defaults:{id:"video",url:"",menu:"video-details",content:"video-details",toolbar:"video-details",type:"link",title:f.videoDetailsTitle,priority:120},initialize:function(a){a.DetailsView=e.view.VideoDetails,a.cancelText=f.videoDetailsCancel,a.addText=f.videoAddSourceTitle,e.view.MediaFrame.MediaDetails.prototype.initialize.call(this,a)},bindHandlers:function(){e.view.MediaFrame.MediaDetails.prototype.bindHandlers.apply(this,arguments),this.on("toolbar:render:replace-video",this.renderReplaceToolbar,this),this.on("toolbar:render:add-video-source",this.renderAddSourceToolbar,this),this.on("toolbar:render:select-poster-image",this.renderSelectPosterImageToolbar,this),this.on("toolbar:render:add-track",this.renderAddTrackToolbar,this)},createStates:function(){this.states.add([new e.controller.VideoDetails({media:this.media,editable:!1,menu:"video-details"}),new e.controller.MediaLibrary({type:"video",id:"replace-video",title:f.videoReplaceTitle,toolbar:"replace-video",media:this.media,menu:"video-details"}),new e.controller.MediaLibrary({type:"video",id:"add-video-source",title:f.videoAddSourceTitle,toolbar:"add-video-source",media:this.media,menu:!1}),new e.controller.MediaLibrary({type:"image",id:"select-poster-image",title:f.videoSelectPosterImageTitle,toolbar:"select-poster-image",media:this.media,menu:"video-details"}),new e.controller.MediaLibrary({type:"text",id:"add-track",title:f.videoAddTrackTitle,toolbar:"add-track",media:this.media,menu:"video-details"})])},renderSelectPosterImageToolbar:function(){this.toolbar.set(new e.view.Toolbar({controller:this,items:{replace:{style:"primary",text:f.videoSelectPosterImageTitle,priority:80,click:function(){var a=this.controller,b=a.state(),c=b.get("selection"),d=c.single();a.media.set("poster",d.get("url")),b.trigger("set-poster-image",a.media.toJSON()),a.setState(a.options.state),a.reset()}}}}))},renderAddTrackToolbar:function(){this.toolbar.set(new e.view.Toolbar({controller:this,items:{replace:{style:"primary",text:f.videoAddTrackTitle,priority:80,click:function(){var a=this.controller,b=a.state(),c=b.get("selection"),d=c.single(),e=a.media.get("content");-1===e.indexOf(d.get("url"))&&(e+=[''].join(""),a.media.set("content",e)),b.trigger("add-track",a.media.toJSON()),a.setState(a.options.state),a.reset()}}}}))}}),e.view.AudioDetails=e.view.MediaDetails.extend({className:"audio-details",template:e.template("audio-details"),setMedia:function(){var a=this.$(".wp-audio-shortcode");return a.find("source").length?(a.is(":hidden")&&a.show(),this.media=e.view.MediaDetails.prepareSrc(a.get(0))):(a.hide(),this.media=!1),this}}),e.view.VideoDetails=e.view.MediaDetails.extend({className:"video-details",template:e.template("video-details"),setMedia:function(){var a=this.$(".wp-video-shortcode");return a.find("source").length?(a.is(":hidden")&&a.show(),this.media=a.hasClass("youtube-video")?a.get(0):e.view.MediaDetails.prepareSrc(a.get(0))):(a.hide(),this.media=!1),this}}),b.extend(wp.media.playlist,{counts:function(a){var c={};return function(){if(!b.isEmpty(c))return c;var d=0,e=0;return b.each(a.attachmentCounts,function(a,b){var c;if(-1'].join(""),a.media.set("content",e)),b.trigger("add-track",a.media.toJSON()),a.setState(a.options.state),a.reset()}}}}))}}),e.view.AudioDetails=e.view.MediaDetails.extend({className:"audio-details",template:e.template("audio-details"),setMedia:function(){var a=this.$(".wp-audio-shortcode");return a.find("source").length?(a.is(":hidden")&&a.show(),this.media=e.view.MediaDetails.prepareSrc(a.get(0))):(a.hide(),this.media=!1),this}}),e.view.VideoDetails=e.view.MediaDetails.extend({className:"video-details",template:e.template("video-details"),setMedia:function(){var a=this.$(".wp-video-shortcode");return a.find("source").length?(a.is(":hidden")&&a.show(),this.media=a.hasClass("youtube-video")?a.get(0):e.view.MediaDetails.prepareSrc(a.get(0))):(a.hide(),this.media=!1),this}}),b.extend(wp.media.playlist,{counts:function(a){var c={};return function(){if(!b.isEmpty(c))return c;var d=0,e=0;return b.each(a.attachmentCounts,function(a,b){var c;if(-1"+e.find("source").eq(0).prop("src")+"

");e.closest(".wpview-wrap").removeClass("wont-play"),this.ua.is("ff")?e.prop("preload","metadata"):e.prop("preload","none"),e=wp.media.view.MediaDetails.prepareSrc(e.get(0)),setTimeout(function(){f.player=new MediaElementPlayer(e,g)},50)}},getHtml:function(){var a=this.shortcode.attrs.named;return this.template({model:a})}}),b.extend(wp.mce.media.View.prototype,wp.media.mixin),wp.mce.video=b.extend({},wp.mce.media,{shortcode:"video",View:wp.mce.media.View.extend({className:"editor-video",template:e.template("editor-video")})}),wp.mce.views.register("video",wp.mce.video),wp.mce.audio=b.extend({},wp.mce.media,{shortcode:"audio",View:wp.mce.media.View.extend({className:"editor-audio",template:e.template("editor-audio")})}),wp.mce.views.register("audio",wp.mce.audio),a(d)}(jQuery,_,Backbone); \ No newline at end of file diff --git a/wp-includes/js/tinymce/plugins/wpgallery/plugin.js b/wp-includes/js/tinymce/plugins/wpgallery/plugin.js index d33dbca088..2f0912873b 100644 --- a/wp-includes/js/tinymce/plugins/wpgallery/plugin.js +++ b/wp-includes/js/tinymce/plugins/wpgallery/plugin.js @@ -25,8 +25,8 @@ tinymce.PluginManager.add('wpgallery', function( editor ) { } function replaceAVShortcodes( content ) { - var testRegex = /\[(video-playlist|audio|video|playlist)[^\]]*\]/, - replaceRegex = /\[(video-playlist|audio|video|playlist)[^\]]*\]([\s\S]*?\[\/\1\])?/; + var testRegex = /\[(video-playlist|playlist)[^\]]*\]/, + replaceRegex = /\[(video-playlist|playlist)[^\]]*\]([\s\S]*?\[\/\1\])?/; while ( testRegex.test( content ) ) { content = content.replace( replaceRegex, replaceCallback ); @@ -92,31 +92,6 @@ tinymce.PluginManager.add('wpgallery', function( editor ) { editor.dom.setAttrib( node, 'data-wp-media', window.encodeURIComponent( shortcode ) ); frame.detach(); }); - } else if ( editor.dom.hasClass( node, 'wp-video' ) ) { - frame = wp.media.video.edit( data ); - frame.on( 'close', function () { - frame.detach(); - } ); - frame.state( 'video-details' ).on( - 'update replace add-source select-poster-image add-track', - function ( selection ) { - var shortcode = wp.media.video.shortcode( selection ); - editor.dom.setAttrib( node, 'data-wp-media', window.encodeURIComponent( shortcode ) ); - frame.detach(); - } - ); - frame.open(); - } else if ( editor.dom.hasClass( node, 'wp-audio' ) ) { - frame = wp.media.audio.edit( data ); - frame.on( 'close', function () { - frame.detach(); - } ); - frame.state( 'audio-details' ).on( 'update replace add-source', function ( selection ) { - var shortcode = wp.media.audio.shortcode( selection ); - editor.dom.setAttrib( node, 'data-wp-media', window.encodeURIComponent( shortcode ) ); - frame.detach(); - } ); - frame.open(); } else { // temp window.console && window.console.log( 'Edit AV shortcode ' + data ); @@ -177,10 +152,6 @@ tinymce.PluginManager.add('wpgallery', function( editor ) { if ( node.nodeName === 'IMG' && dom.getAttrib( node, 'data-wp-media' ) ) { if ( dom.hasClass( node, 'wp-gallery' ) ) { event.name = 'gallery'; - } else if ( dom.hasClass( node, 'wp-video' ) ) { - event.name = 'video'; - } else if ( dom.hasClass( node, 'wp-audio' ) ) { - event.name = 'audio'; } else if ( dom.hasClass( node, 'wp-playlist' ) ) { event.name = 'playlist'; } else if ( dom.hasClass( node, 'wp-video-playlist' ) ) { diff --git a/wp-includes/js/tinymce/plugins/wpgallery/plugin.min.js b/wp-includes/js/tinymce/plugins/wpgallery/plugin.min.js index 5e3e970106..65596d7bd7 100644 --- a/wp-includes/js/tinymce/plugins/wpgallery/plugin.min.js +++ b/wp-includes/js/tinymce/plugins/wpgallery/plugin.min.js @@ -1 +1 @@ -tinymce.PluginManager.add("wpgallery",function(a){function b(a){return a.replace(/\[gallery([^\]]*)\]/g,function(a){return c("wp-gallery",a)})}function c(a,b){return b=window.encodeURIComponent(b),''}function d(a,b,d){var e;return d&&d.indexOf("["+b)>-1?(e=a.length-d.length,c("wp-"+b,a.substring(0,e))+a.substring(e)):c("wp-"+b,a)}function e(a){for(var b=/\[(video-playlist|audio|video|playlist)[^\]]*\]/,c=/\[(video-playlist|audio|video|playlist)[^\]]*\]([\s\S]*?\[\/\1\])?/;b.test(a);)a=a.replace(c,d);return a}function f(a){function b(a,b){return b=new RegExp(b+'="([^"]+)"').exec(a),b?window.decodeURIComponent(b[1]):""}return a.replace(/(?:]+)?>)*(]+>)(?:<\/p>)*/g,function(a,c){var d=b(c,"data-wp-media");return d?"

"+d+"

":a})}function g(b){var c,d,e;"IMG"===b.nodeName&&"undefined"!=typeof wp&&wp.media&&(e=window.decodeURIComponent(a.dom.getAttrib(b,"data-wp-media")),a.dom.hasClass(b,"wp-gallery")&&wp.media.gallery?(c=wp.media.gallery,d=c.edit(e),d.state("gallery-edit").on("update",function(e){var f=c.shortcode(e).string();a.dom.setAttrib(b,"data-wp-media",window.encodeURIComponent(f)),d.detach()})):a.dom.hasClass(b,"wp-playlist")&&wp.media.playlist?(d=wp.media.playlist.edit(e),d.state("playlist-edit").on("update",function(c){var e=wp.media.playlist.shortcode(c).string();a.dom.setAttrib(b,"data-wp-media",window.encodeURIComponent(e)),d.detach()})):a.dom.hasClass(b,"wp-video-playlist")&&wp.media["video-playlist"]?(d=wp.media["video-playlist"].edit(e),d.state("video-playlist-edit").on("update",function(c){var e=wp.media["video-playlist"].shortcode(c).string();a.dom.setAttrib(b,"data-wp-media",window.encodeURIComponent(e)),d.detach()})):a.dom.hasClass(b,"wp-video")?(d=wp.media.video.edit(e),d.on("close",function(){d.detach()}),d.state("video-details").on("update replace add-source select-poster-image add-track",function(c){var e=wp.media.video.shortcode(c);a.dom.setAttrib(b,"data-wp-media",window.encodeURIComponent(e)),d.detach()}),d.open()):a.dom.hasClass(b,"wp-audio")?(d=wp.media.audio.edit(e),d.on("close",function(){d.detach()}),d.state("audio-details").on("update replace add-source",function(c){var e=wp.media.audio.shortcode(c);a.dom.setAttrib(b,"data-wp-media",window.encodeURIComponent(e)),d.detach()}),d.open()):window.console&&window.console.log("Edit AV shortcode "+e))}a.addCommand("WP_Gallery",function(){g(a.selection.getNode())}),a.on("mouseup",function(b){function c(){d.removeClass(d.select("img.wp-media-selected"),"wp-media-selected")}var d=a.dom,e=b.target;"IMG"===e.nodeName&&d.getAttrib(e,"data-wp-media")?2!==b.button&&(d.hasClass(e,"wp-media-selected")?g(e):(c(),d.addClass(e,"wp-media-selected"))):c()}),a.on("ResolveName",function(b){var c=a.dom,d=b.target;"IMG"===d.nodeName&&c.getAttrib(d,"data-wp-media")&&(c.hasClass(d,"wp-gallery")?b.name="gallery":c.hasClass(d,"wp-video")?b.name="video":c.hasClass(d,"wp-audio")?b.name="audio":c.hasClass(d,"wp-playlist")?b.name="playlist":c.hasClass(d,"wp-video-playlist")&&(b.name="video-playlist"))}),a.on("BeforeSetContent",function(c){a.plugins.wpview||(c.content=b(c.content)),c.content=e(c.content)}),a.on("PostProcess",function(a){a.get&&(a.content=f(a.content))})}); \ No newline at end of file +tinymce.PluginManager.add("wpgallery",function(a){function b(a){return a.replace(/\[gallery([^\]]*)\]/g,function(a){return c("wp-gallery",a)})}function c(a,b){return b=window.encodeURIComponent(b),''}function d(a,b,d){var e;return d&&d.indexOf("["+b)>-1?(e=a.length-d.length,c("wp-"+b,a.substring(0,e))+a.substring(e)):c("wp-"+b,a)}function e(a){for(var b=/\[(video-playlist|playlist)[^\]]*\]/,c=/\[(video-playlist|playlist)[^\]]*\]([\s\S]*?\[\/\1\])?/;b.test(a);)a=a.replace(c,d);return a}function f(a){function b(a,b){return b=new RegExp(b+'="([^"]+)"').exec(a),b?window.decodeURIComponent(b[1]):""}return a.replace(/(?:]+)?>)*(]+>)(?:<\/p>)*/g,function(a,c){var d=b(c,"data-wp-media");return d?"

"+d+"

":a})}function g(b){var c,d,e;"IMG"===b.nodeName&&"undefined"!=typeof wp&&wp.media&&(e=window.decodeURIComponent(a.dom.getAttrib(b,"data-wp-media")),a.dom.hasClass(b,"wp-gallery")&&wp.media.gallery?(c=wp.media.gallery,d=c.edit(e),d.state("gallery-edit").on("update",function(e){var f=c.shortcode(e).string();a.dom.setAttrib(b,"data-wp-media",window.encodeURIComponent(f)),d.detach()})):a.dom.hasClass(b,"wp-playlist")&&wp.media.playlist?(d=wp.media.playlist.edit(e),d.state("playlist-edit").on("update",function(c){var e=wp.media.playlist.shortcode(c).string();a.dom.setAttrib(b,"data-wp-media",window.encodeURIComponent(e)),d.detach()})):a.dom.hasClass(b,"wp-video-playlist")&&wp.media["video-playlist"]?(d=wp.media["video-playlist"].edit(e),d.state("video-playlist-edit").on("update",function(c){var e=wp.media["video-playlist"].shortcode(c).string();a.dom.setAttrib(b,"data-wp-media",window.encodeURIComponent(e)),d.detach()})):window.console&&window.console.log("Edit AV shortcode "+e))}a.addCommand("WP_Gallery",function(){g(a.selection.getNode())}),a.on("mouseup",function(b){function c(){d.removeClass(d.select("img.wp-media-selected"),"wp-media-selected")}var d=a.dom,e=b.target;"IMG"===e.nodeName&&d.getAttrib(e,"data-wp-media")?2!==b.button&&(d.hasClass(e,"wp-media-selected")?g(e):(c(),d.addClass(e,"wp-media-selected"))):c()}),a.on("ResolveName",function(b){var c=a.dom,d=b.target;"IMG"===d.nodeName&&c.getAttrib(d,"data-wp-media")&&(c.hasClass(d,"wp-gallery")?b.name="gallery":c.hasClass(d,"wp-playlist")?b.name="playlist":c.hasClass(d,"wp-video-playlist")&&(b.name="video-playlist"))}),a.on("BeforeSetContent",function(c){a.plugins.wpview||(c.content=b(c.content)),c.content=e(c.content)}),a.on("PostProcess",function(a){a.get&&(a.content=f(a.content))})}); \ No newline at end of file diff --git a/wp-includes/js/tinymce/skins/wordpress/wp-content.css b/wp-includes/js/tinymce/skins/wordpress/wp-content.css index 8e208de1d3..d90dc9386d 100644 --- a/wp-includes/js/tinymce/skins/wordpress/wp-content.css +++ b/wp-includes/js/tinymce/skins/wordpress/wp-content.css @@ -141,15 +141,6 @@ img::selection { background-image: url(images/gallery.png); } -.mce-content-body img.wp-media.wp-video { - background-image: url(images/video.png); -} - -.mce-content-body img.wp-media.wp-audio { - height: 70px; - background-image: url(images/audio.png); -} - .mce-content-body img.wp-media.wp-playlist { background-image: url("images/playlist-audio.png"); } @@ -223,44 +214,81 @@ embed { } /** - * Gallery preview + * Media previews */ -.wpview-type-gallery { +.wpview-type-gallery, +.wpview-type-audio, +.wpview-type-video { position: relative; margin-bottom: 16px; cursor: pointer; border: 1px solid transparent; } - .wpview-type-gallery:after { +.wpview-type-audio { + padding: 24px 0 0; +} + +.wpview-type-video { + padding: 0; +} + +.wont-play { + padding: 4px 0; +} + +.wont-play p { + font-size: 13px; + line-height: 1.3; + display: block; + width: 70%; + margin: 0 15%; + text-align: center; +} + +.wpview-type-gallery:after { content: ''; display: table; clear: both; } - .wpview-type-gallery.selected { +.wpview-type-gallery.selected, +.wpview-type-audio, +.wpview-type-video { background-color: #f2f8ff; border-color: #777; } -.wpview-type-gallery .toolbar { - position: absolute; - top: 0; - right: 0; - background-color: #333; - color: white; +.wpview-type-gallery .toolbar, +.wpview-type-audio .toolbar, +.wpview-type-video .toolbar { + position: absolute; + top: 0; + right: 0; + background-color: #333; + color: white; display: none; + z-index: 100; } +.wpview-type-video .toolbar div, .wpview-type-gallery .toolbar div, #wp-image-toolbar div { margin: 5px; } +.wpview-type-audio .toolbar div { + margin: 2px 5px; +} + +.wpview-type-audio .toolbar, +.wpview-type-video .toolbar, .wpview-type-gallery.selected .toolbar { display: block; } +.wpview-type-audio .toolbar span, +.wpview-type-video .toolbar span, .wpview-type-gallery .toolbar span { cursor: pointer; } diff --git a/wp-includes/js/tinymce/wp-tinymce.js.gz b/wp-includes/js/tinymce/wp-tinymce.js.gz index 9af78c5e79d7a13743092b17964754c40e4b7e11..0c65177662c750d4ebda192df6a14de3b41fd87b 100644 GIT binary patch delta 16057 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 delta 16166 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 E02sjD5C8xG diff --git a/wp-includes/media-template.php b/wp-includes/media-template.php index 0cad787ba3..5cde40b056 100644 --- a/wp-includes/media-template.php +++ b/wp-includes/media-template.php @@ -961,6 +961,23 @@ function wp_print_media_templates() { <# } ); #> + + + + + add( 'media-views', "/wp-includes/js/media-views$suffix.js", array( 'utils', 'media-models', 'wp-plupload', 'jquery-ui-sortable', 'wp-mediaelement', 'image-edit' ), false, 1 ); $scripts->add( 'media-editor', "/wp-includes/js/media-editor$suffix.js", array( 'shortcode', 'media-views' ), false, 1 ); - $scripts->add( 'media-audiovideo', "/wp-includes/js/media-audiovideo$suffix.js", array( 'media-editor' ), false, 1 ); + $scripts->add( 'media-audiovideo', "/wp-includes/js/media-audiovideo$suffix.js", array( 'media-editor', 'mce-view' ), false, 1 ); $scripts->add( 'mce-view', "/wp-includes/js/mce-view$suffix.js", array( 'shortcode', 'media-models' ), false, 1 ); if ( is_admin() ) {