PDF rausgenommen
This commit is contained in:
@ -0,0 +1,112 @@
|
||||
/* global tinymce */
|
||||
tinymce.PluginManager.add('wpgallery', function( editor ) {
|
||||
|
||||
function replaceGalleryShortcodes( content ) {
|
||||
return content.replace( /\[gallery([^\]]*)\]/g, function( match ) {
|
||||
return html( 'wp-gallery', match );
|
||||
});
|
||||
}
|
||||
|
||||
function html( cls, data ) {
|
||||
data = window.encodeURIComponent( data );
|
||||
return '<img src="' + tinymce.Env.transparentSrc + '" class="wp-media mceItem ' + cls + '" ' +
|
||||
'data-wp-media="' + data + '" data-mce-resize="false" data-mce-placeholder="1" alt="" />';
|
||||
}
|
||||
|
||||
function restoreMediaShortcodes( content ) {
|
||||
function getAttr( str, name ) {
|
||||
name = new RegExp( name + '=\"([^\"]+)\"' ).exec( str );
|
||||
return name ? window.decodeURIComponent( name[1] ) : '';
|
||||
}
|
||||
|
||||
return content.replace( /(?:<p(?: [^>]+)?>)*(<img [^>]+>)(?:<\/p>)*/g, function( match, image ) {
|
||||
var data = getAttr( image, 'data-wp-media' );
|
||||
|
||||
if ( data ) {
|
||||
return '<p>' + data + '</p>';
|
||||
}
|
||||
|
||||
return match;
|
||||
});
|
||||
}
|
||||
|
||||
function editMedia( node ) {
|
||||
var gallery, frame, data;
|
||||
|
||||
if ( node.nodeName !== 'IMG' ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Check if the `wp.media` API exists.
|
||||
if ( typeof wp === 'undefined' || ! wp.media ) {
|
||||
return;
|
||||
}
|
||||
|
||||
data = window.decodeURIComponent( editor.dom.getAttrib( node, 'data-wp-media' ) );
|
||||
|
||||
// Make sure we've selected a gallery node.
|
||||
if ( editor.dom.hasClass( node, 'wp-gallery' ) && wp.media.gallery ) {
|
||||
gallery = wp.media.gallery;
|
||||
frame = gallery.edit( data );
|
||||
|
||||
frame.state('gallery-edit').on( 'update', function( selection ) {
|
||||
var shortcode = gallery.shortcode( selection ).string();
|
||||
editor.dom.setAttrib( node, 'data-wp-media', window.encodeURIComponent( shortcode ) );
|
||||
frame.detach();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('...');
|
||||
editor.addCommand( 'WP_Gallery', function() {
|
||||
editMedia( editor.selection.getNode() );
|
||||
});
|
||||
|
||||
editor.on( 'mouseup', function( event ) {
|
||||
var dom = editor.dom,
|
||||
node = event.target;
|
||||
|
||||
function unselect() {
|
||||
dom.removeClass( dom.select( 'img.wp-media-selected' ), 'wp-media-selected' );
|
||||
}
|
||||
|
||||
if ( node.nodeName === 'IMG' && dom.getAttrib( node, 'data-wp-media' ) ) {
|
||||
// Don't trigger on right-click
|
||||
if ( event.button !== 2 ) {
|
||||
if ( dom.hasClass( node, 'wp-media-selected' ) ) {
|
||||
editMedia( node );
|
||||
} else {
|
||||
unselect();
|
||||
dom.addClass( node, 'wp-media-selected' );
|
||||
}
|
||||
}
|
||||
} else {
|
||||
unselect();
|
||||
}
|
||||
});
|
||||
|
||||
// Display gallery, audio or video instead of img in the element path
|
||||
editor.on( 'ResolveName', function( event ) {
|
||||
var dom = editor.dom,
|
||||
node = event.target;
|
||||
|
||||
if ( node.nodeName === 'IMG' && dom.getAttrib( node, 'data-wp-media' ) ) {
|
||||
if ( dom.hasClass( node, 'wp-gallery' ) ) {
|
||||
event.name = 'gallery';
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
editor.on( 'BeforeSetContent', function( event ) {
|
||||
// 'wpview' handles the gallery shortcode when present
|
||||
if ( ! editor.plugins.wpview || typeof wp === 'undefined' || ! wp.mce ) {
|
||||
event.content = replaceGalleryShortcodes( event.content );
|
||||
}
|
||||
});
|
||||
|
||||
editor.on( 'PostProcess', function( event ) {
|
||||
if ( event.get ) {
|
||||
event.content = restoreMediaShortcodes( event.content );
|
||||
}
|
||||
});
|
||||
});
|
1
msd2/wordpress/wp-includes/js/tinymce/plugins/wpgallery/plugin.min.js
vendored
Normal file
1
msd2/wordpress/wp-includes/js/tinymce/plugins/wpgallery/plugin.min.js
vendored
Normal file
@ -0,0 +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),'<img src="'+tinymce.Env.transparentSrc+'" class="wp-media mceItem '+a+'" data-wp-media="'+b+'" data-mce-resize="false" data-mce-placeholder="1" alt="" />'}function d(a){function b(a,b){return b=new RegExp(b+'="([^"]+)"').exec(a),b?window.decodeURIComponent(b[1]):""}return a.replace(/(?:<p(?: [^>]+)?>)*(<img [^>]+>)(?:<\/p>)*/g,function(a,c){var d=b(c,"data-wp-media");return d?"<p>"+d+"</p>":a})}function e(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.addCommand("WP_Gallery",function(){e(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,f=b.target;"IMG"===f.nodeName&&d.getAttrib(f,"data-wp-media")?2!==b.button&&(d.hasClass(f,"wp-media-selected")?e(f):(c(),d.addClass(f,"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")}),a.on("BeforeSetContent",function(c){a.plugins.wpview&&"undefined"!=typeof wp&&wp.mce||(c.content=b(c.content))}),a.on("PostProcess",function(a){a.get&&(a.content=d(a.content))})});
|
Reference in New Issue
Block a user