X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/7688c6ba71852cd89123b62b2d57683535e4702a..refs/tags/wordpress-2.9:/wp-admin/widgets.php
diff --git a/wp-admin/widgets.php b/wp-admin/widgets.php
index a33dc846..e28f46ae 100644
--- a/wp-admin/widgets.php
+++ b/wp-admin/widgets.php
@@ -1,360 +1,396 @@
-
-
- $sidebar ) {
- $cols[] = '\'' . $index . '\'';
- }
- $cols = implode( ', ', $cols );
+if ( 'on' == $widgets_access )
+ add_filter( 'admin_body_class', create_function('', '{return " widgets_access ";}') );
+else
+ wp_enqueue_script('admin-widgets');
- $widgets = array();
- foreach ( $wp_registered_widgets as $name => $widget ) {
- $widgets[] = '\'' . $widget['id'] . '\'';
- }
- $widgets = implode( ', ', $widgets );
-?>
-
- $widgets ) {
+ if ( !is_array($widgets) )
+ continue;
- if ( !isset( $wp_registered_widgets[$name] ) ) {
- return;
+ $_widgets = array();
+ foreach ( $widgets as $widget ) {
+ if ( isset($wp_registered_widgets[$widget]) )
+ $_widgets[] = $widget;
+ }
+ $_sidebars_widgets[$sidebar] = $_widgets;
+ $shown_widgets = array_merge($shown_widgets, $_widgets);
}
- $sanitized_name = sanitize_title( $wp_registered_widgets[$name]['id'] );
- $link_title = __( 'Configure' );
- $popper = ( isset( $wp_registered_widget_controls[$name] ) )
- ? '
-
-
follow these instructions.' ); /* TODO: article on codex */; ?>
+
+
+
+
+
follow these instructions.' ); ?>
- $val ) {
+ if ( is_array($val) && preg_match('/__i__|%i%/', key($val)) ) {
+ $_POST[$key] = array( $number => array_shift($val) );
+ break;
+ }
+ }
+ }
-if ( empty( $sidebars_widgets ) ) {
- $sidebars_widgets = wp_get_widget_defaults();
-}
+ $sidebar_id = $_POST['sidebar'];
+ $position = isset($_POST[$sidebar_id . '_position']) ? (int) $_POST[$sidebar_id . '_position'] - 1 : 0;
-if ( isset( $_POST['action'] ) ) {
- check_admin_referer( 'widgets-save-widget-order' );
+ $id_base = $_POST['id_base'];
+ $sidebar = isset($sidebars_widgets[$sidebar_id]) ? $sidebars_widgets[$sidebar_id] : array();
- switch ( $_POST['action'] ) {
- case 'default' :
- $sidebars_widgets = wp_get_widget_defaults();
- wp_set_sidebars_widgets( $sidebars_widgets );
- break;
+ // delete
+ if ( isset($_POST['removewidget']) && $_POST['removewidget'] ) {
- case 'save_widget_order' :
- $sidebars_widgets = array();
+ if ( !in_array($widget_id, $sidebar, true) ) {
+ wp_redirect('widgets.php?error=0');
+ exit;
+ }
- foreach ( $wp_registered_sidebars as $index => $sidebar ) {
- $postindex = $index . 'order';
+ $sidebar = array_diff( $sidebar, array($widget_id) );
+ $_POST = array('sidebar' => $sidebar_id, 'widget-' . $id_base => array(), 'the-widget-id' => $widget_id, 'delete_widget' => '1');
+ }
- parse_str( $_POST[$postindex], $order );
+ $_POST['widget-id'] = $sidebar;
- $new_order = $order[$index];
+ foreach ( (array) $wp_registered_widget_updates as $name => $control ) {
+ if ( $name != $id_base || !is_callable($control['callback']) )
+ continue;
- if ( is_array( $new_order ) ) {
- foreach ( $new_order as $sanitized_name ) {
- foreach ( $wp_registered_widgets as $name => $widget ) {
- if ( $sanitized_name == $widget['id'] ) {
- $sidebars_widgets[$index][] = $name;
- }
- }
- }
- }
- }
+ ob_start();
+ call_user_func_array( $control['callback'], $control['params'] );
+ ob_end_clean();
- wp_set_sidebars_widgets( $sidebars_widgets );
break;
}
-}
-ksort( $wp_registered_widgets );
+ $sidebars_widgets[$sidebar_id] = $sidebar;
-$inactive_widgets = array();
+ // remove old position
+ if ( !isset($_POST['delete_widget']) ) {
+ foreach ( $sidebars_widgets as $key => $sb ) {
+ if ( is_array($sb) )
+ $sidebars_widgets[$key] = array_diff( $sb, array($widget_id) );
+ }
+ array_splice( $sidebars_widgets[$sidebar_id], $position, 0, $widget_id );
+ }
-foreach ( $wp_registered_widgets as $name => $widget ) {
- $is_active = false;
+ wp_set_sidebars_widgets($sidebars_widgets);
+ wp_redirect('widgets.php?message=0');
+ exit;
+}
- foreach ( $wp_registered_sidebars as $index => $sidebar ) {
- if ( is_array( $sidebars_widgets[$index] ) && in_array( $name, $sidebars_widgets[$index] ) ) {
- $is_active = true;
- break;
+// Output the widget form without js
+if ( isset($_GET['editwidget']) && $_GET['editwidget'] ) {
+ $widget_id = $_GET['editwidget'];
+
+ if ( isset($_GET['addnew']) ) {
+ // Default to the first sidebar
+ $sidebar = array_shift( $keys = array_keys($wp_registered_sidebars) );
+
+ if ( isset($_GET['base']) && isset($_GET['num']) ) { // multi-widget
+ // Copy minimal info from an existing instance of this widget to a new instance
+ foreach ( $wp_registered_widget_controls as $control ) {
+ if ( $_GET['base'] === $control['id_base'] ) {
+ $control_callback = $control['callback'];
+ $multi_number = (int) $_GET['num'];
+ $control['params'][0]['number'] = -1;
+ $widget_id = $control['id'] = $control['id_base'] . '-' . $multi_number;
+ $wp_registered_widget_controls[$control['id']] = $control;
+ break;
+ }
+ }
}
}
- if ( !$is_active ) {
- $inactive_widgets[] = $name;
+ if ( isset($wp_registered_widget_controls[$widget_id]) && !isset($control) ) {
+ $control = $wp_registered_widget_controls[$widget_id];
+ $control_callback = $control['callback'];
+ } elseif ( !isset($wp_registered_widget_controls[$widget_id]) && isset($wp_registered_widgets[$widget_id]) ) {
+ $name = esc_html( strip_tags($wp_registered_widgets[$widget_id]['name']) );
}
-}
-$containers = array( 'palette' );
+ if ( !isset($name) )
+ $name = esc_html( strip_tags($control['name']) );
-foreach ( $wp_registered_sidebars as $index => $sidebar ) {
- $containers[] = $index;
-}
+ if ( !isset($sidebar) )
+ $sidebar = isset($_GET['sidebar']) ? $_GET['sidebar'] : 'wp_inactive_widgets';
-$c_string = '';
+ if ( !isset($multi_number) )
+ $multi_number = isset($control['params'][0]['number']) ? $control['params'][0]['number'] : '';
-foreach ( $containers as $container ) {
- $c_string .= '"' . $container . '",';
-}
+ $id_base = isset($control['id_base']) ? $control['id_base'] : $control['id'];
-$c_string = substr( $c_string, 0, -1 );
+ // show the widget form
+ $width = ' style="width:' . max($control['width'], 350) . 'px"';
+ $key = isset($_GET['key']) ? (int) $_GET['key'] : 0;
-if ( isset( $_POST['action'] ) ) {
-?>
-
-
View site »' ), get_bloginfo( 'url' ) . '/' ); ?>
+ require_once( 'admin-header.php' ); ?>
+
+
-
-
-
-
-
-
+$messages = array(
+ __('Changes saved.')
+);
+
+$errors = array(
+ __('Error while saving.'),
+ __('Error in displaying the widget settings form.')
+);
+
+require_once( 'admin-header.php' ); ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
-
+