diff -r 490d5cc509ed -r cf61fcea0001 wp/wp-content/plugins/portfolio/bws_menu/js/shortcode-button.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wp/wp-content/plugins/portfolio/bws_menu/js/shortcode-button.js Mon Oct 14 17:39:30 2019 +0200 @@ -0,0 +1,162 @@ +(function($) { + if ( typeof bws_shortcode_button != 'undefined' ) { + var win; + + tinymce.create( 'tinymce.plugins.BWSButton', { + /** + * Initializes the plugin, this will be executed after the plugin has been created. + * This call is done before the editor instance has finished it's initialization so use the onInit event + * of the editor instance to intercept that event. + * + * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in. + * @param {string} url Absolute URL to where the plugin is located. + */ + init : function( ed, url ) { + if ( bws_shortcode_button.wp_version < '3.9' ) { + ed.addButton( 'add_bws_shortcode', { + title : bws_shortcode_button.title, + classes: 'bws_shortcode_button widget btn', + image : bws_shortcode_button.icon_url, + onclick: function() { + /* triggers the thickbox */ + var width = jQuery(window).width(), H = jQuery(window).height(), W = ( 720 < width ) ? 720 : width; + W = W - 80; + H = H - 84; + tb_show( bws_shortcode_button.title, '#TB_inline?width=' + W + '&height=' + H + '&inlineId=bws_shortcode_popup' ); + + var current_object = '#TB_ajaxContent'; + + var select_count = $( current_object + ' select#bws_shortcode_select option').length; + if ( 1 == select_count ) { + $( current_object + ' #bws_shortcode_select_plugin' ).hide(); + } + + var plugin = $( current_object + ' #bws_shortcode_select option:selected' ).val(); + $( current_object + ' #bws_shortcode_content > div' ).hide(); + $( current_object + ' #bws_shortcode_content > #' + plugin ).show(); + + if ( $( current_object + ' #bws_shortcode_content > #' + plugin + ' .bws_default_shortcode' ).length > 0 ) { + $( current_object + ' #bws_shortcode_display' ).text( $( current_object + ' #bws_shortcode_content > #' + plugin + ' .bws_default_shortcode' ).val() ); + } + + $( current_object + ' #bws_shortcode_select' ).on( 'change',function() { + var plugin = $( current_object + ' #bws_shortcode_select option:selected' ).val(); + $( current_object + ' #bws_shortcode_content > div' ).hide(); + $( current_object + ' #bws_shortcode_content > #' + plugin ).show(); + if ( $( current_object + ' #bws_shortcode_content > #' + plugin + ' .bws_default_shortcode' ).length > 0 ) { + $( current_object + ' #bws_shortcode_display' ).text( $( current_object + ' #bws_shortcode_content > #' + plugin + ' .bws_default_shortcode' ).val() ); + } else { + $( current_object + ' #bws_shortcode_display' ).text( '' ); + } + }); + + $.each( bws_shortcode_button.function_name, function( index, value ) { + eval( value + '();' ); + }); + } + }); + } else { + ed.addButton( 'add_bws_shortcode', { + title : bws_shortcode_button.title, + classes: 'bws_shortcode_button widget btn', + icon: 'icon bwsicons bwsicons-shortcode', + text: bws_shortcode_button.label, + onclick: function() { + + win = ed.windowManager.open( { + width: 400, + height: 400, + inline: true, + title: bws_shortcode_button.title, + body: { + id : 'bws-shortcode-content', + type: 'container', + classes: 'bws-shortcode', + html: $( '#bws_shortcode_popup' ).html() + }, + buttons: [{ + text: 'Insert', + classes: 'button-primary primary bws_shortcode_insert', + onclick: function( e ) { + var shortcode = $( '.mce-container-body #bws_shortcode_display' ).text(); + if ( '' != shortcode ) { + /* insert shortcode to tinymce */ + ed.insertContent( shortcode ); + } + ed.windowManager.close(); + }, + }, + { + text: 'Cancel', + onclick: 'close' + }], + + }); + var current_object = '.mce-container-body'; + var select_count = $( current_object + ' select#bws_shortcode_select option').length; + if ( 1 == select_count ) { + $( current_object + ' #bws_shortcode_select_plugin' ).hide(); + } + + var plugin = $( current_object + ' #bws_shortcode_select option:selected' ).val(); + $( current_object + ' #bws_shortcode_content > div' ).hide(); + $( current_object + ' #bws_shortcode_content > #' + plugin ).show(); + + if ( $( current_object + ' #bws_shortcode_content > #' + plugin + ' .bws_default_shortcode' ).length > 0 ) { + $( current_object + ' #bws_shortcode_display' ).text( $( current_object + ' #bws_shortcode_content > #' + plugin + ' .bws_default_shortcode' ).val() ); + } + + $( current_object + ' #bws_shortcode_select' ).on( 'change',function() { + var plugin = $( current_object + ' #bws_shortcode_select option:selected' ).val(); + $( current_object + ' #bws_shortcode_content > div' ).hide(); + $( current_object + ' #bws_shortcode_content > #' + plugin ).show(); + if ( $( current_object + ' #bws_shortcode_content > #' + plugin + ' .bws_default_shortcode' ).length > 0 ) { + $( current_object + ' #bws_shortcode_display' ).text( $( current_object + ' #bws_shortcode_content > #' + plugin + ' .bws_default_shortcode' ).val() ); + } else { + $( current_object + ' #bws_shortcode_display' ).text( '' ); + } + }); + + $.each( bws_shortcode_button.function_name, function( index, value ) { + eval( value + '();' ); + }); + } + }); + } + }, + + /** + * Creates control instances based in the incomming name. This method is normally not + * needed since the addButton method of the tinymce.Editor class is a more easy way of adding buttons + * but you sometimes need to create more complex controls like listboxes, split buttons etc then this + * method can be used to create those. + * + * @param {String} n Name of the control to create. + * @param {tinymce.ControlManager} cm Control manager to use inorder to create new control. + * @return {tinymce.ui.Control} New control instance or null if no control was created. + */ + createControl : function(n, cm) { + return null; + }, + + /** + * Returns information about the plugin as a name/value array. + * The current keys are longname, author, authorurl, infourl and version. + * + * @return {Object} Name/value array containing information about the plugin. + */ + getInfo : function() { + return { + longname : 'BWS Shortcode Buttons', + author : 'BWS', + authorurl : 'https://bestwebsoft.com', + infourl : '', + version : "0.1" + }; + } + }); + + /* Register plugin */ + tinymce.PluginManager.add( 'add_bws_shortcode', tinymce.plugins.BWSButton ); + } +})(jQuery); \ No newline at end of file