From 04543417c94be279fd5383e1a6dfa607f3f1ba0e Mon Sep 17 00:00:00 2001 From: westi Date: Thu, 13 Mar 2008 21:33:11 +0000 Subject: [PATCH] Better protection against double widget insertion. Fixes #6191 props mdawaffe. git-svn-id: http://svn.automattic.com/wordpress/trunk@7275 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-admin/includes/widgets.php | 14 ++++++++++---- wp-admin/js/widgets.js | 4 ++-- wp-includes/script-loader.php | 2 +- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/wp-admin/includes/widgets.php b/wp-admin/includes/widgets.php index df977bf90b..4523b2425d 100644 --- a/wp-admin/includes/widgets.php +++ b/wp-admin/includes/widgets.php @@ -48,7 +48,7 @@ function wp_list_widgets( $show = 'all', $_search = false ) { ob_start(); $args = wp_list_widget_controls_dynamic_sidebar( array( 0 => array( 'widget_id' => $widget['id'], 'widget_name' => $widget['name'], '_display' => 'template' ) ) ); - call_user_func_array( 'wp_widget_control', $args ); + $sidebar_args = call_user_func_array( 'wp_widget_control', $args ); $widget_control_template = ob_get_contents(); ob_end_clean(); @@ -70,9 +70,12 @@ function wp_list_widgets( $show = 'all', $_search = false ) { 'edit' => $widget['id'], 'key' => array_search( $widget['id'], $sidebars_widgets[$sidebar] ), ) ) ); - $widget_control_template = '
  • '; + + $widget_control_template = ''; } + $widget_control_template = $sidebar_args['before_widget'] . $widget_control_template . $sidebar_args['after_widget']; + $no_widgets_shown = false; ?> @@ -201,7 +204,8 @@ function wp_widget_control( $sidebar_args ) { $widget_title = wp_specialchars( strip_tags( $sidebar_args['widget_name'] ) ); - echo $sidebar_args['before_widget']; + if ( empty($sidebar_args['_display']) || 'template' != $sidebar_args['_display'] ) + echo $sidebar_args['before_widget']; ?>

    @@ -242,7 +246,9 @@ function wp_widget_control( $sidebar_args ) { attribute_escape(__('Save »')), 'confirmText' => __("Are you sure you want to delete the file '%title%'?\nClick ok to delete or cancel to go back.") ) ); - $this->add( 'admin-widgets', '/wp-admin/js/widgets.js', array( 'interface' ), '20080305' ); + $this->add( 'admin-widgets', '/wp-admin/js/widgets.js', array( 'interface' ), '20080313' ); $this->localize( 'admin-widgets', 'widgetsL10n', array( 'add' => __('Add'), 'edit' => __('Edit'),