Widgets: Fix extensibility of Text widgets so that JS logic will initialize on subclassed widgets.

Amends [40631].
See #35243.
Fixes #41540.

Built from https://develop.svn.wordpress.org/trunk@41245


git-svn-id: http://core.svn.wordpress.org/trunk@41085 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Weston Ruter 2017-08-13 05:25:46 +00:00
parent 300894da61
commit 9c3cdaf3fb
4 changed files with 12 additions and 8 deletions

View File

@ -4,7 +4,8 @@ wp.textWidgets = ( function( $ ) {
'use strict';
var component = {
dismissedPointers: []
dismissedPointers: [],
idBases: [ 'text' ]
};
/**
@ -357,7 +358,7 @@ wp.textWidgets = ( function( $ ) {
widgetForm = widgetContainer.find( '> .widget-inside > .form, > .widget-inside > form' ); // Note: '.form' appears in the customizer, whereas 'form' on the widgets admin screen.
idBase = widgetForm.find( '> .id_base' ).val();
if ( 'text' !== idBase ) {
if ( -1 === component.idBases.indexOf( idBase ) ) {
return;
}
@ -424,7 +425,7 @@ wp.textWidgets = ( function( $ ) {
}
idBase = widgetForm.find( '> .widget-control-actions > .id_base' ).val();
if ( 'text' !== idBase ) {
if ( -1 === component.idBases.indexOf( idBase ) ) {
return;
}
@ -461,7 +462,7 @@ wp.textWidgets = ( function( $ ) {
widgetForm = widgetContainer.find( '> .widget-inside > .form, > .widget-inside > form' );
idBase = widgetForm.find( '> .id_base' ).val();
if ( 'text' !== idBase ) {
if ( -1 === component.idBases.indexOf( idBase ) ) {
return;
}

File diff suppressed because one or more lines are too long

View File

@ -4,7 +4,7 @@
*
* @global string $wp_version
*/
$wp_version = '4.9-alpha-41244';
$wp_version = '4.9-alpha-41245';
/**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.

View File

@ -55,11 +55,13 @@ class WP_Widget_Text extends WP_Widget {
}
$this->registered = true;
wp_add_inline_script( 'text-widgets', sprintf( 'wp.textWidgets.idBases.push( %s );', wp_json_encode( $this->id_base ) ) );
// Note that the widgets component in the customizer will also do the 'admin_print_scripts-widgets.php' action in WP_Customize_Widgets::print_scripts().
add_action( 'admin_print_scripts-widgets.php', array( $this, 'enqueue_admin_scripts' ) );
// Note that the widgets component in the customizer will also do the 'admin_footer-widgets.php' action in WP_Customize_Widgets::print_footer_scripts().
add_action( 'admin_footer-widgets.php', array( $this, 'render_control_template_scripts' ) );
add_action( 'admin_footer-widgets.php', array( 'WP_Widget_Text', 'render_control_template_scripts' ) );
}
/**
@ -376,8 +378,9 @@ class WP_Widget_Text extends WP_Widget {
* Render form template scripts.
*
* @since 4.8.0
* @since 4.9.0 The method is now static.
*/
public function render_control_template_scripts() {
public static function render_control_template_scripts() {
$dismissed_pointers = explode( ',', (string) get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) );
?>
<script type="text/html" id="tmpl-widget-text-control-fields">