X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/d3b1ea255664edd2deef17f900a655613d20820d..16e7b37c7914d753890c1a05a9335f3b43751eb8:/wp-admin/includes/widgets.php?widgets-access=on diff --git a/wp-admin/includes/widgets.php b/wp-admin/includes/widgets.php index 2be81453..fe2a957f 100644 --- a/wp-admin/includes/widgets.php +++ b/wp-admin/includes/widgets.php @@ -7,20 +7,18 @@ */ /** - * Display list of the available widgets, either all or matching search. + * Display list of the available widgets. * - * The search parameter are search terms separated by spaces. + * @since 2.5.0 * - * @since unknown - * - * @param string $show Optional, default is all. What to display, can be 'all', 'unused', or 'used'. - * @param string $_search Optional. Search for widgets. Should be unsanitized. + * @global array $wp_registered_widgets + * @global array $wp_registered_widget_controls */ function wp_list_widgets() { - global $wp_registered_widgets, $sidebars_widgets, $wp_registered_widget_controls; + global $wp_registered_widgets, $wp_registered_widget_controls; $sort = $wp_registered_widgets; - usort( $sort, create_function( '$a, $b', 'return strnatcasecmp( $a["name"], $b["name"] );' ) ); + usort( $sort, '_sort_name_callback' ); $done = array(); foreach ( $sort as $widget ) { @@ -52,24 +50,63 @@ function wp_list_widgets() { } /** - * {@internal Missing Short Description}} + * Callback to sort array by a 'name' key. * - * @since unknown + * @since 3.1.0 + * @access private * - * @param string $sidebar + * @return int */ -function wp_list_widget_controls( $sidebar ) { +function _sort_name_callback( $a, $b ) { + return strnatcasecmp( $a['name'], $b['name'] ); +} + +/** + * Show the widgets and their settings for a sidebar. + * Used in the admin widget config screen. + * + * @since 2.5.0 + * + * @param string $sidebar Sidebar ID. + * @param string $sidebar_name Optional. Sidebar name. Default empty. + */ +function wp_list_widget_controls( $sidebar, $sidebar_name = '' ) { add_filter( 'dynamic_sidebar_params', 'wp_list_widget_controls_dynamic_sidebar' ); - echo "\t
\n"; + $description = wp_sidebar_description( $sidebar ); + + echo '
'; + + if ( $sidebar_name ) { + ?> + + + + \n"; + + echo '
'; } /** - * {@internal Missing Short Description}} + * Retrieves the widget control arguments. + * + * @since 2.5.0 * - * @since unknown + * @global array $wp_registered_widgets + * + * @staticvar int $i * * @param array $params * @return array @@ -83,7 +120,7 @@ function wp_list_widget_controls_dynamic_sidebar( $params ) { $id = isset($params[0]['_temp_id']) ? $params[0]['_temp_id'] : $widget_id; $hidden = isset($params[0]['_hide']) ? ' style="display:none;"' : ''; - $params[0]['before_widget'] = "
"; + $params[0]['before_widget'] = "
"; $params[0]['after_widget'] = "
"; $params[0]['before_title'] = "%BEG_OF_TITLE%"; // deprecated $params[0]['after_title'] = "%END_OF_TITLE%"; // deprecated @@ -95,12 +132,22 @@ function wp_list_widget_controls_dynamic_sidebar( $params ) { return $params; } -function next_widget_id_number($id_base) { +/** + * + * @global array $wp_registered_widgets + * + * @param string $id_base + * @return int + */ +function next_widget_id_number( $id_base ) { global $wp_registered_widgets; - $number = 2; + $number = 1; - while ( isset($wp_registered_widgets["$id_base-$number"]) ) - $number++; + foreach ( $wp_registered_widgets as $widget_id => $widget ) { + if ( preg_match( '/' . $id_base . '-([0-9]+)$/', $widget_id, $matches ) ) + $number = max($number, $matches[1]); + } + $number++; return $number; } @@ -110,7 +157,11 @@ function next_widget_id_number($id_base) { * * Called from dynamic_sidebar(). * - * @since unknown + * @since 2.5.0 + * + * @global array $wp_registered_widgets + * @global array $wp_registered_widget_controls + * @global array $sidebars_widgets * * @param array $sidebar_args * @return array @@ -130,6 +181,11 @@ function wp_widget_control( $sidebar_args ) { $multi_number = isset($sidebar_args['_multi_num']) ? $sidebar_args['_multi_num'] : ''; $add_new = isset($sidebar_args['_add']) ? $sidebar_args['_add'] : ''; + $before_form = isset( $sidebar_args['before_form'] ) ? $sidebar_args['before_form'] : '
'; + $after_form = isset( $sidebar_args['after_form'] ) ? $sidebar_args['after_form'] : '
'; + $before_widget_content = isset( $sidebar_args['before_widget_content'] ) ? $sidebar_args['before_widget_content'] : '
'; + $after_widget_content = isset( $sidebar_args['after_widget_content'] ) ? $sidebar_args['after_widget_content'] : '
'; + $query_arg = array( 'editwidget' => $widget['id'] ); if ( $add_new ) { $query_arg['addnew'] = 1; @@ -142,11 +198,14 @@ function wp_widget_control( $sidebar_args ) { $query_arg['key'] = $key; } - // We aren't showing a widget control, we're outputing a template for a mult-widget control + /* + * We aren't showing a widget control, we're outputting a template + * for a multi-widget control. + */ if ( isset($sidebar_args['_display']) && 'template' == $sidebar_args['_display'] && $widget_number ) { // number == -1 implies a template where id numbers are replaced by a generic '__i__' $control['params'][0]['number'] = -1; - // with id_base widget id's are constructed like {$id_base}-{$id_number} + // With id_base widget id's are constructed like {$id_base}-{$id_number}. if ( isset($control['id_base']) ) $id_format = $control['id_base'] . '-__i__'; } @@ -161,40 +220,46 @@ function wp_widget_control( $sidebar_args ) {
-

+

-
-
- + + " . __('There are no options for this widget.') . "

\n"; ?> -
+ } else { + echo "\t\t

" . __('There are no options for this widget.') . "

\n"; + } + ?> + - - + +
- | + |
- - + 'widget-' . esc_attr( $id_format ) . '-savewidget' ) ); ?> +

-
+
@@ -202,6 +267,15 @@ function wp_widget_control( $sidebar_args ) {