wp/wp-content/plugins/portfolio/bws_menu/js/shortcode-button.js
changeset 7 cf61fcea0001
child 16 a86126ab1dd4
equal deleted inserted replaced
6:490d5cc509ed 7:cf61fcea0001
       
     1 (function($) {
       
     2     if ( typeof bws_shortcode_button != 'undefined' ) {
       
     3     	var win;
       
     4 
       
     5         tinymce.create( 'tinymce.plugins.BWSButton', {
       
     6             /**
       
     7              * Initializes the plugin, this will be executed after the plugin has been created.
       
     8              * This call is done before the editor instance has finished it's initialization so use the onInit event
       
     9              * of the editor instance to intercept that event.
       
    10              *
       
    11              * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
       
    12              * @param {string} url Absolute URL to where the plugin is located.
       
    13              */
       
    14             init : function( ed, url ) {
       
    15                 if ( bws_shortcode_button.wp_version < '3.9' ) {
       
    16                     ed.addButton( 'add_bws_shortcode', {
       
    17                         title : bws_shortcode_button.title,
       
    18                         classes: 'bws_shortcode_button widget btn',                   
       
    19                         image : bws_shortcode_button.icon_url,                        
       
    20         				onclick: function() {	
       
    21                             /* triggers the thickbox */
       
    22                             var width = jQuery(window).width(), H = jQuery(window).height(), W = ( 720 < width ) ? 720 : width;
       
    23                             W = W - 80;
       
    24                             H = H - 84;
       
    25                             tb_show( bws_shortcode_button.title, '#TB_inline?width=' + W + '&height=' + H + '&inlineId=bws_shortcode_popup' );
       
    26                     	
       
    27                             var current_object = '#TB_ajaxContent';
       
    28                             
       
    29                             var select_count = $( current_object + ' select#bws_shortcode_select option').length;
       
    30                             if ( 1 == select_count ) {
       
    31                                 $( current_object + ' #bws_shortcode_select_plugin' ).hide();
       
    32                             }
       
    33 
       
    34                             var plugin = $( current_object + ' #bws_shortcode_select option:selected' ).val();
       
    35                             $( current_object + ' #bws_shortcode_content > div' ).hide();
       
    36                             $( current_object + ' #bws_shortcode_content > #' + plugin ).show();
       
    37 
       
    38                             if ( $( current_object + ' #bws_shortcode_content > #' + plugin + ' .bws_default_shortcode' ).length > 0 ) {
       
    39                                 $( current_object + ' #bws_shortcode_display' ).text( $( current_object + ' #bws_shortcode_content > #' + plugin + ' .bws_default_shortcode' ).val() );
       
    40                             }
       
    41 
       
    42                             $( current_object + ' #bws_shortcode_select' ).on( 'change',function() {
       
    43                                 var plugin = $( current_object + ' #bws_shortcode_select option:selected' ).val();
       
    44                                 $( current_object + ' #bws_shortcode_content > div' ).hide();
       
    45                                 $( current_object + ' #bws_shortcode_content > #' + plugin ).show();
       
    46                                 if ( $( current_object + ' #bws_shortcode_content > #' + plugin + ' .bws_default_shortcode' ).length > 0 ) {
       
    47                                     $( current_object + ' #bws_shortcode_display' ).text( $( current_object + ' #bws_shortcode_content > #' + plugin + ' .bws_default_shortcode' ).val() );
       
    48                                 } else {
       
    49                                     $( current_object + ' #bws_shortcode_display' ).text( '' );
       
    50                                 }
       
    51                             });                   
       
    52 
       
    53                             $.each( bws_shortcode_button.function_name, function( index, value ) {
       
    54                                 eval( value + '();' );
       
    55                             });
       
    56         				}
       
    57                     });
       
    58                 } else {
       
    59                     ed.addButton( 'add_bws_shortcode', {
       
    60                         title : bws_shortcode_button.title,
       
    61                         classes: 'bws_shortcode_button widget btn',                
       
    62                         icon: 'icon bwsicons bwsicons-shortcode',
       
    63                         text: bws_shortcode_button.label,
       
    64                         onclick: function() {   
       
    65 
       
    66                             win = ed.windowManager.open( {
       
    67                                 width: 400,
       
    68                                 height: 400,   
       
    69                                 inline: true, 
       
    70                                 title: bws_shortcode_button.title,
       
    71                                 body: {
       
    72                                     id : 'bws-shortcode-content',
       
    73                                     type: 'container',
       
    74                                     classes: 'bws-shortcode',
       
    75                                     html: $( '#bws_shortcode_popup' ).html()
       
    76                                 },  
       
    77                                 buttons: [{
       
    78                                     text: 'Insert',
       
    79                                     classes: 'button-primary primary bws_shortcode_insert',
       
    80                                     onclick: function( e ) {
       
    81                                         var shortcode = $( '.mce-container-body #bws_shortcode_display' ).text();
       
    82                                         if ( '' != shortcode ) {
       
    83                                             /* insert shortcode to tinymce */
       
    84                                             ed.insertContent( shortcode );                                    
       
    85                                         } 
       
    86                                         ed.windowManager.close();                          
       
    87                                     },
       
    88                                 },
       
    89                                 {
       
    90                                     text: 'Cancel',
       
    91                                     onclick: 'close'
       
    92                                 }],
       
    93                                                      
       
    94                             });
       
    95                             var current_object = '.mce-container-body';
       
    96                             var select_count = $( current_object + ' select#bws_shortcode_select option').length;
       
    97                             if ( 1 == select_count ) {
       
    98                                 $( current_object + ' #bws_shortcode_select_plugin' ).hide();
       
    99                             }
       
   100 
       
   101                             var plugin = $( current_object + ' #bws_shortcode_select option:selected' ).val();
       
   102                             $( current_object + ' #bws_shortcode_content > div' ).hide();
       
   103                             $( current_object + ' #bws_shortcode_content > #' + plugin ).show();
       
   104 
       
   105                             if ( $( current_object + ' #bws_shortcode_content > #' + plugin + ' .bws_default_shortcode' ).length > 0 ) {
       
   106                                 $( current_object + ' #bws_shortcode_display' ).text( $( current_object + ' #bws_shortcode_content > #' + plugin + ' .bws_default_shortcode' ).val() );
       
   107                             }
       
   108 
       
   109                             $( current_object + ' #bws_shortcode_select' ).on( 'change',function() {
       
   110                                 var plugin = $( current_object + ' #bws_shortcode_select option:selected' ).val();
       
   111                                 $( current_object + ' #bws_shortcode_content > div' ).hide();
       
   112                                 $( current_object + ' #bws_shortcode_content > #' + plugin ).show();
       
   113                                 if ( $( current_object + ' #bws_shortcode_content > #' + plugin + ' .bws_default_shortcode' ).length > 0 ) {
       
   114                                     $( current_object + ' #bws_shortcode_display' ).text( $( current_object + ' #bws_shortcode_content > #' + plugin + ' .bws_default_shortcode' ).val() );
       
   115                                 } else {
       
   116                                     $( current_object + ' #bws_shortcode_display' ).text( '' );
       
   117                                 }
       
   118                             });                   
       
   119 
       
   120                             $.each( bws_shortcode_button.function_name, function( index, value ) {
       
   121                                 eval( value + '();' );
       
   122                             });
       
   123                         }
       
   124                     });
       
   125                 }
       
   126             },
       
   127      
       
   128             /**
       
   129              * Creates control instances based in the incomming name. This method is normally not
       
   130              * needed since the addButton method of the tinymce.Editor class is a more easy way of adding buttons
       
   131              * but you sometimes need to create more complex controls like listboxes, split buttons etc then this
       
   132              * method can be used to create those.
       
   133              *
       
   134              * @param {String} n Name of the control to create.
       
   135              * @param {tinymce.ControlManager} cm Control manager to use inorder to create new control.
       
   136              * @return {tinymce.ui.Control} New control instance or null if no control was created.
       
   137              */
       
   138             createControl : function(n, cm) {
       
   139                 return null;
       
   140             },
       
   141      
       
   142             /**
       
   143              * Returns information about the plugin as a name/value array.
       
   144              * The current keys are longname, author, authorurl, infourl and version.
       
   145              *
       
   146              * @return {Object} Name/value array containing information about the plugin.
       
   147              */
       
   148             getInfo : function() {
       
   149                 return {
       
   150                     longname : 'BWS Shortcode Buttons',
       
   151                     author : 'BWS',
       
   152                     authorurl : 'https://bestwebsoft.com',
       
   153                     infourl : '',
       
   154                     version : "0.1"
       
   155                 };
       
   156             }
       
   157         });
       
   158      
       
   159         /* Register plugin */
       
   160         tinymce.PluginManager.add( 'add_bws_shortcode', tinymce.plugins.BWSButton );   
       
   161     }
       
   162 })(jQuery);