File "editor-wysiwyg.js"

Full Path: /home/ycoalition/public_html/blog/wp-admin/js/widgets/plugins/smart-custom-fields/js/editor-wysiwyg.js
File size: 5.05 KB
MIME-type: text/plain
Charset: utf-8

jQuery( function( $ ) {

	$( '.smart-cf-meta-box' ).each( function( i, e ) {
		var wrapper = $( e );
		var table_class = '.smart-cf-meta-box-table';

		/**
		 * ロード時に wysiwyg エディター用のテキストエリアがあったら wysiwyg 化する。
		 */
		wrapper.find( '.smart-cf-wp-editor' ).each( function( i, e ) {
			if ( $( this ).parents( table_class ).css( 'display' ) === 'none' ) {
				return true;
			}
			$( e ).attr( 'id', $( e ).attr( 'name' ).replace( /(\[|\]|\-)/ig, '_' ) );
			var editor_id = $( e ).attr( 'id' );
			var wrap = $( e ).parents( '.wp-editor-wrap' );
			initialize_editor( wrap, editor_id );

			var mceinit = scf_generate_mceinit( editor_id );
			tinyMCEPreInit.mceInit[editor_id] = mceinit;
			if ( typeof tinymce !== 'undefined' ) {
				tinymce.init( mceinit );
			}

			var qtinit = scf_generate_qtinit( editor_id );
			tinyMCEPreInit.qtInit[editor_id] = qtinit;
			if ( typeof quicktags !== 'undefined' ) {
				quicktags( qtinit );
				QTags._buttonsInit();
			}
		} );
	} );

	/**
	 * グループ追加ボタンを押したときに発火。
	 * wysiwyg エディター用のテキストエリアがあったら wysiwyg 化する。
	 */
	$( document ).on( 'smart-cf-after-add-group', function( e, data ) {
		var button = data.button;
		var clone  = data.clone;
		clone.find( '.smart-cf-wp-editor' ).each( function( i, e ) {
			$( e ).attr( 'id', $( e ).attr( 'name' ).replace( /(\[|\]|\-)/ig, '_' ) );
			var editor_id = $( e ).attr( 'id' );
			var wrap = 	$( e ).parents( '.wp-editor-wrap' );
			initialize_editor( wrap, editor_id );

			var mceinit = scf_generate_mceinit( editor_id );
			tinyMCEPreInit.mceInit[editor_id] = mceinit;
			if ( typeof tinymce !== 'undefined' ) {
				tinymce.init( mceinit );
			}

			var qtinit = scf_generate_qtinit( editor_id );
			tinyMCEPreInit.qtInit[editor_id] = qtinit;
			if ( typeof quicktags !== 'undefined' ) {
				quicktags( qtinit );
				QTags._buttonsInit();
			}
		} );
	} );

	/**
	 * ドラッグしたときに発火。
	 * wysiwyg エディター用のテキストエリアをオフる。
	 */
	$( document ).on( 'smart-cf-repeat-table-sortable-start', function( e, ui ) {
		$( ui ).find( '.smart-cf-wp-editor' ).each( function( i, e ) {
			var editor_id = $( this ).attr( 'id' );

			tinymce.execCommand( 'mceRemoveEditor', false, editor_id );

			var mceinit = scf_generate_mceinit( editor_id );
			tinyMCEPreInit.mceInit[editor_id] = mceinit;

			var qtinit = scf_generate_qtinit( editor_id );
			tinyMCEPreInit.qtInit[editor_id] = qtinit;
			if ( typeof quicktags !== 'undefined' ) {
				quicktags( qtinit );
				QTags._buttonsInit();
			}
		} );
	} );

	/**
	 * ドロップしたときに発火。
	 * wysiwyg エディター用のテキストエリアを wysiwyg 化する。
	 */
	$( document ).on( 'smart-cf-repeat-table-sortable-stop', function( e, ui ) {
		$( ui ).find( '.smart-cf-wp-editor' ).each( function( i, e ) {
			var editor_id = $( this ).attr( 'id' );

			var mceinit = scf_generate_mceinit( editor_id );
			tinyMCEPreInit.mceInit[editor_id] = mceinit;
			if ( typeof tinymce !== 'undefined' ) {
				tinymce.init( mceinit );
			}

			var qtinit = scf_generate_qtinit( editor_id );
			tinyMCEPreInit.qtInit[editor_id] = qtinit;
			if ( typeof quicktags !== 'undefined' ) {
				quicktags( qtinit );
				QTags._buttonsInit();
			}
		} );
	} );

	function initialize_editor( wrap, editor_id ) {
		wrap.attr( 'id', 'wp-' + editor_id + '-wrap' );
		wrap.find( 'a.add_media' ).attr( 'data-editor', editor_id );
		wrap.find( '.switch-tmce' )
			.attr( 'data-wp-editor-id', editor_id )
			.attr( 'id', editor_id + '-tmce' );
		wrap.find( '.switch-html' )
			.attr( 'data-wp-editor-id', editor_id )
			.attr( 'id', editor_id + '-html' );
		wrap.find( '.quicktags-toolbar' ).attr( 'id', 'qt_' + editor_id + '_toolbar' );
	}

	function scf_generate_mceinit( editor_id ) {
		var mceinit;
		if ( typeof tinyMCEPreInit.mceInit.content !== 'undefined' ) {
			mceinit = $.extend( true, {}, tinyMCEPreInit.mceInit.content );
			mceinit.selector = '#' + editor_id;
		} else {
			mceinit = {
				content_css: ['../wp-includes/js/tinymce/skins/wordpress/wp-content.css', '../wp-content/plugins/smart-custom-fields/css/wysiwyg.css'],
				menubar: false,
				plugins: "hr,wplink,fullscreen,wordpress,textcolor,paste,charmap,lists",
				toolbar1: "bold,italic,strikethrough,bullist,numlist,blockquote,hr,alignleft,aligncenter,alignright,link,unlink,wp_more,spellchecker,wp_adv,fullscreen",
				toolbar2: "formatselect,underline,alignjustify,forecolor,pastetext,removeformat,charmap,outdent,indent,undo,redo,wp_help,code",
				convert_urls: false,
				theme: "modern",
				skin: "lightgray",
				wp_autoresize_on: true,
				wpautop: true,
				selector: '#' + editor_id
			};
		}
		return mceinit;
	}

	function scf_generate_qtinit( editor_id ) {
		var qtinit;
		if ( typeof tinyMCEPreInit.qtInit.content !== 'undefined' ) {
			qtinit = $.extend( true, {}, tinyMCEPreInit.qtInit.content );
			qtinit.id = editor_id;
		} else {
			qtinit = {
				id: editor_id,
				buttons: "strong,em,link,block,del,ins,img,ul,ol,li,code,more,close"
			}
		}
		return qtinit;
	}
} );