TinyMCE:
- Fix parsing of the init array in script-loader. - Do not JSON encode the options object when outputting it from PHP. - Remove JSON decoding of TinyMCE's `style_formats` option. Fixes #45221. Built from https://develop.svn.wordpress.org/branches/5.0@43867 git-svn-id: http://core.svn.wordpress.org/branches/5.0@43696 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
3e1ae54884
commit
23be3ef6e6
|
@ -463,113 +463,118 @@ function wp_default_packages_inline_scripts( &$scripts ) {
|
||||||
'after'
|
'after'
|
||||||
);
|
);
|
||||||
|
|
||||||
/* This filter is documented in wp-includes/class-wp-editor.php */
|
// TinyMCE init.
|
||||||
$tinymce_settings = apply_filters(
|
$tinymce_plugins = array(
|
||||||
'tiny_mce_before_init',
|
'charmap',
|
||||||
array(
|
'colorpicker',
|
||||||
'plugins' => implode(
|
'hr',
|
||||||
',',
|
'lists',
|
||||||
array_unique(
|
'media',
|
||||||
/* This filter is documented in wp-includes/class-wp-editor.php */
|
'paste',
|
||||||
apply_filters(
|
'tabfocus',
|
||||||
'tiny_mce_plugins',
|
'textcolor',
|
||||||
array(
|
'fullscreen',
|
||||||
'charmap',
|
'wordpress',
|
||||||
'colorpicker',
|
'wpautoresize',
|
||||||
'hr',
|
'wpeditimage',
|
||||||
'lists',
|
'wpemoji',
|
||||||
'media',
|
'wpgallery',
|
||||||
'paste',
|
'wplink',
|
||||||
'tabfocus',
|
'wpdialogs',
|
||||||
'textcolor',
|
'wptextpattern',
|
||||||
'fullscreen',
|
'wpview',
|
||||||
'wordpress',
|
|
||||||
'wpautoresize',
|
|
||||||
'wpeditimage',
|
|
||||||
'wpemoji',
|
|
||||||
'wpgallery',
|
|
||||||
'wplink',
|
|
||||||
'wpdialogs',
|
|
||||||
'wptextpattern',
|
|
||||||
'wpview',
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
),
|
|
||||||
'toolbar1' => implode(
|
|
||||||
',',
|
|
||||||
array_merge(
|
|
||||||
/* This filter is documented in wp-includes/class-wp-editor.php */
|
|
||||||
apply_filters(
|
|
||||||
'mce_buttons',
|
|
||||||
array(
|
|
||||||
'formatselect',
|
|
||||||
'bold',
|
|
||||||
'italic',
|
|
||||||
'bullist',
|
|
||||||
'numlist',
|
|
||||||
'blockquote',
|
|
||||||
'alignleft',
|
|
||||||
'aligncenter',
|
|
||||||
'alignright',
|
|
||||||
'link',
|
|
||||||
'unlink',
|
|
||||||
'wp_more',
|
|
||||||
'spellchecker',
|
|
||||||
'wp_add_media',
|
|
||||||
),
|
|
||||||
'editor'
|
|
||||||
),
|
|
||||||
array( 'kitchensink' )
|
|
||||||
)
|
|
||||||
),
|
|
||||||
'toolbar2' => implode(
|
|
||||||
',',
|
|
||||||
/* This filter is documented in wp-includes/class-wp-editor.php */
|
|
||||||
apply_filters(
|
|
||||||
'mce_buttons_2',
|
|
||||||
array(
|
|
||||||
'strikethrough',
|
|
||||||
'hr',
|
|
||||||
'forecolor',
|
|
||||||
'pastetext',
|
|
||||||
'removeformat',
|
|
||||||
'charmap',
|
|
||||||
'outdent',
|
|
||||||
'indent',
|
|
||||||
'undo',
|
|
||||||
'redo',
|
|
||||||
'wp_help',
|
|
||||||
),
|
|
||||||
'editor'
|
|
||||||
)
|
|
||||||
),
|
|
||||||
/* This filter is documented in wp-includes/class-wp-editor.php */
|
|
||||||
'toolbar3' => implode( ',', apply_filters( 'mce_buttons_3', array(), 'editor' ) ),
|
|
||||||
/* This filter is documented in wp-includes/class-wp-editor.php */
|
|
||||||
'toolbar4' => implode( ',', apply_filters( 'mce_buttons_4', array(), 'editor' ) ),
|
|
||||||
/* This filter is documented in wp-includes/class-wp-editor.php */
|
|
||||||
'external_plugins' => apply_filters( 'mce_external_plugins', array() ),
|
|
||||||
),
|
|
||||||
'editor'
|
|
||||||
);
|
);
|
||||||
|
|
||||||
if ( isset( $tinymce_settings['style_formats'] ) && is_string( $tinymce_settings['style_formats'] ) ) {
|
/* This filter is documented in wp-includes/class-wp-editor.php */
|
||||||
// Decode the options as we used to recommende json_encoding the TinyMCE settings.
|
$tinymce_plugins = apply_filters( 'tiny_mce_plugins', $tinymce_plugins, 'classic-block' );
|
||||||
$tinymce_settings['style_formats'] = json_decode( $tinymce_settings['style_formats'] );
|
$tinymce_plugins = array_unique( $tinymce_plugins );
|
||||||
|
|
||||||
|
$toolbar1 = array(
|
||||||
|
'formatselect',
|
||||||
|
'bold',
|
||||||
|
'italic',
|
||||||
|
'bullist',
|
||||||
|
'numlist',
|
||||||
|
'blockquote',
|
||||||
|
'alignleft',
|
||||||
|
'aligncenter',
|
||||||
|
'alignright',
|
||||||
|
'link',
|
||||||
|
'unlink',
|
||||||
|
'wp_more',
|
||||||
|
'spellchecker',
|
||||||
|
'wp_add_media',
|
||||||
|
'kitchensink',
|
||||||
|
);
|
||||||
|
|
||||||
|
/* This filter is documented in wp-includes/class-wp-editor.php */
|
||||||
|
$toolbar1 = apply_filters( 'mce_buttons', $toolbar1, 'classic-block' );
|
||||||
|
|
||||||
|
$toolbar2 = array(
|
||||||
|
'strikethrough',
|
||||||
|
'hr',
|
||||||
|
'forecolor',
|
||||||
|
'pastetext',
|
||||||
|
'removeformat',
|
||||||
|
'charmap',
|
||||||
|
'outdent',
|
||||||
|
'indent',
|
||||||
|
'undo',
|
||||||
|
'redo',
|
||||||
|
'wp_help',
|
||||||
|
);
|
||||||
|
|
||||||
|
/* This filter is documented in wp-includes/class-wp-editor.php */
|
||||||
|
$toolbar2 = apply_filters( 'mce_buttons_2', $toolbar2, 'classic-block' );
|
||||||
|
/* This filter is documented in wp-includes/class-wp-editor.php */
|
||||||
|
$toolbar3 = apply_filters( 'mce_buttons_3', array(), 'classic-block' );
|
||||||
|
/* This filter is documented in wp-includes/class-wp-editor.php */
|
||||||
|
$toolbar4 = apply_filters( 'mce_buttons_4', array(), 'classic-block' );
|
||||||
|
/* This filter is documented in wp-includes/class-wp-editor.php */
|
||||||
|
$external_plugins = apply_filters( 'mce_external_plugins', array(), 'classic-block' );
|
||||||
|
|
||||||
|
$tinymce_settings = array(
|
||||||
|
'plugins' => implode( ',', $tinymce_plugins ),
|
||||||
|
'toolbar1' => implode( ',', $toolbar1 ),
|
||||||
|
'toolbar2' => implode( ',', $toolbar2 ),
|
||||||
|
'toolbar3' => implode( ',', $toolbar3 ),
|
||||||
|
'toolbar4' => implode( ',', $toolbar4 ),
|
||||||
|
'external_plugins' => wp_json_encode( $external_plugins ),
|
||||||
|
'classic_block_editor' => true,
|
||||||
|
);
|
||||||
|
|
||||||
|
/* This filter is documented in wp-includes/class-wp-editor.php */
|
||||||
|
$tinymce_settings = apply_filters( 'tiny_mce_before_init', $tinymce_settings, 'classic-block' );
|
||||||
|
|
||||||
|
// Do "by hand" translation from PHP array to js object.
|
||||||
|
// Prevents breakage in some custom settings.
|
||||||
|
$init_obj = '';
|
||||||
|
foreach ( $tinymce_settings as $key => $value ) {
|
||||||
|
if ( is_bool( $value ) ) {
|
||||||
|
$val = $value ? 'true' : 'false';
|
||||||
|
$init_obj .= $key . ':' . $val . ',';
|
||||||
|
continue;
|
||||||
|
} elseif ( ! empty( $value ) && is_string( $value ) && (
|
||||||
|
( '{' == $value{0} && '}' == $value{strlen( $value ) - 1} ) ||
|
||||||
|
( '[' == $value{0} && ']' == $value{strlen( $value ) - 1} ) ||
|
||||||
|
preg_match( '/^\(?function ?\(/', $value ) ) ) {
|
||||||
|
$init_obj .= $key . ':' . $value . ',';
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$init_obj .= $key . ':"' . $value . '",';
|
||||||
}
|
}
|
||||||
|
|
||||||
$scripts->localize(
|
$init_obj = '{' . trim( $init_obj, ' ,' ) . '}';
|
||||||
'wp-block-library',
|
|
||||||
'wpEditorL10n',
|
$script = 'window.wpEditorL10n = {
|
||||||
array(
|
tinymce: {
|
||||||
'tinymce' => array(
|
baseURL: ' . wp_json_encode( includes_url( 'js/tinymce' ) ) . ',
|
||||||
'baseURL' => includes_url( 'js/tinymce' ),
|
suffix: ' . ( SCRIPT_DEBUG ? '""' : '".min"' ) . ',
|
||||||
'suffix' => SCRIPT_DEBUG ? '' : '.min',
|
settings: ' . $init_obj . ',
|
||||||
'settings' => $tinymce_settings,
|
}
|
||||||
),
|
}';
|
||||||
)
|
|
||||||
);
|
$scripts->add_inline_script( 'wp-block-library', $script, 'before' );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
*
|
*
|
||||||
* @global string $wp_version
|
* @global string $wp_version
|
||||||
*/
|
*/
|
||||||
$wp_version = '5.0-beta3-43866';
|
$wp_version = '5.0-beta3-43867';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
||||||
|
|
Loading…
Reference in New Issue