aboutsummaryrefslogtreecommitdiff
path: root/srcs/wordpress/wp-includes/js/tinymce/plugins/wpgallery
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-01-07 13:06:14 +0100
committerCharles <sircharlesaze@gmail.com>2020-01-07 13:06:14 +0100
commit7086111ad4dd997e12a3220e1ee60c9b9bcf0bb8 (patch)
treef7453d7dd5cbaaab246e23810b02d3edf1e451be /srcs/wordpress/wp-includes/js/tinymce/plugins/wpgallery
parentc59bdcf77c50cbe89b4a93782cdd6d9e7532080e (diff)
downloadft_server-7086111ad4dd997e12a3220e1ee60c9b9bcf0bb8.tar.gz
ft_server-7086111ad4dd997e12a3220e1ee60c9b9bcf0bb8.tar.bz2
ft_server-7086111ad4dd997e12a3220e1ee60c9b9bcf0bb8.zip
Added wordpress
Diffstat (limited to 'srcs/wordpress/wp-includes/js/tinymce/plugins/wpgallery')
-rw-r--r--srcs/wordpress/wp-includes/js/tinymce/plugins/wpgallery/plugin.js112
-rw-r--r--srcs/wordpress/wp-includes/js/tinymce/plugins/wpgallery/plugin.min.js1
2 files changed, 113 insertions, 0 deletions
diff --git a/srcs/wordpress/wp-includes/js/tinymce/plugins/wpgallery/plugin.js b/srcs/wordpress/wp-includes/js/tinymce/plugins/wpgallery/plugin.js
new file mode 100644
index 0000000..d9723f2
--- /dev/null
+++ b/srcs/wordpress/wp-includes/js/tinymce/plugins/wpgallery/plugin.js
@@ -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 );
+ }
+ });
+});
diff --git a/srcs/wordpress/wp-includes/js/tinymce/plugins/wpgallery/plugin.min.js b/srcs/wordpress/wp-includes/js/tinymce/plugins/wpgallery/plugin.min.js
new file mode 100644
index 0000000..524e729
--- /dev/null
+++ b/srcs/wordpress/wp-includes/js/tinymce/plugins/wpgallery/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("wpgallery",function(d){function t(e){return e.replace(/\[gallery([^\]]*)\]/g,function(e){return function(e,t){return t=window.encodeURIComponent(t),'<img src="'+tinymce.Env.transparentSrc+'" class="wp-media mceItem '+e+'" data-wp-media="'+t+'" data-mce-resize="false" data-mce-placeholder="1" alt="" />'}("wp-gallery",e)})}function n(e){return e.replace(/(?:<p(?: [^>]+)?>)*(<img [^>]+>)(?:<\/p>)*/g,function(e,t){var n=function(e,t){return(t=new RegExp(t+'="([^"]+)"').exec(e))?window.decodeURIComponent(t[1]):""}(t,"data-wp-media");return n?"<p>"+n+"</p>":e})}function o(n){var a,o,e;"IMG"===n.nodeName&&"undefined"!=typeof wp&&wp.media&&(e=window.decodeURIComponent(d.dom.getAttrib(n,"data-wp-media")),d.dom.hasClass(n,"wp-gallery")&&wp.media.gallery&&(a=wp.media.gallery,(o=a.edit(e)).state("gallery-edit").on("update",function(e){var t=a.shortcode(e).string();d.dom.setAttrib(n,"data-wp-media",window.encodeURIComponent(t)),o.detach()})))}d.addCommand("WP_Gallery",function(){o(d.selection.getNode())}),d.on("mouseup",function(e){var t=d.dom,n=e.target;function a(){t.removeClass(t.select("img.wp-media-selected"),"wp-media-selected")}"IMG"===n.nodeName&&t.getAttrib(n,"data-wp-media")?2!==e.button&&(t.hasClass(n,"wp-media-selected")?o(n):(a(),t.addClass(n,"wp-media-selected"))):a()}),d.on("ResolveName",function(e){var t=d.dom,n=e.target;"IMG"===n.nodeName&&t.getAttrib(n,"data-wp-media")&&t.hasClass(n,"wp-gallery")&&(e.name="gallery")}),d.on("BeforeSetContent",function(e){d.plugins.wpview&&"undefined"!=typeof wp&&wp.mce||(e.content=t(e.content))}),d.on("PostProcess",function(e){e.get&&(e.content=n(e.content))})}); \ No newline at end of file