| 1 | Index: 2.2/wp-includes/widgets.php |
|---|
| 2 | =================================================================== |
|---|
| 3 | --- 2.2/wp-includes/widgets.php (revision 5352) |
|---|
| 4 | +++ 2.2/wp-includes/widgets.php (working copy) |
|---|
| 5 | @@ -43,7 +43,8 @@ |
|---|
| 6 | $i = count($wp_registered_sidebars) + 1; |
|---|
| 7 | |
|---|
| 8 | $defaults = array( |
|---|
| 9 | - 'name' => sprintf(__('Sidebar %d'), count($wp_registered_sidebars) + 1 ), |
|---|
| 10 | + 'name' => sprintf(__('Sidebar %d'), $i ), |
|---|
| 11 | + 'id' => "sidebar-$i", |
|---|
| 12 | 'before_widget' => '<li id="%1$s" class="widget %2$s">', |
|---|
| 13 | 'after_widget' => "</li>\n", |
|---|
| 14 | 'before_title' => '<h2 class="widgettitle">', |
|---|
| 15 | @@ -52,7 +53,6 @@ |
|---|
| 16 | |
|---|
| 17 | $sidebar = array_merge($defaults, $args); |
|---|
| 18 | |
|---|
| 19 | - if ( ! isset($sidebar['id']) ) $sidebar['id'] = sanitize_title($sidebar['name']); |
|---|
| 20 | $wp_registered_sidebars[$sidebar['id']] = $sidebar; |
|---|
| 21 | |
|---|
| 22 | return $sidebar['id']; |
|---|
| 23 | @@ -220,7 +220,7 @@ |
|---|
| 24 | /* Internal Functions */ |
|---|
| 25 | |
|---|
| 26 | function wp_get_sidebars_widgets($update = true) { |
|---|
| 27 | - global $wp_registered_widgets; |
|---|
| 28 | + global $wp_registered_widgets, $wp_registered_sidebars; |
|---|
| 29 | |
|---|
| 30 | $sidebars_widgets = get_option('sidebars_widgets'); |
|---|
| 31 | $_sidebars_widgets = array(); |
|---|
| 32 | @@ -246,17 +246,37 @@ |
|---|
| 33 | unset($_sidebars_widgets[$index][$i]); |
|---|
| 34 | } |
|---|
| 35 | $_sidebars_widgets['array_version'] = 2; |
|---|
| 36 | + $sidebars_widgets = $_sidebars_widgets; |
|---|
| 37 | + unset($_sidebars_widgets); |
|---|
| 38 | + |
|---|
| 39 | + case 2 : |
|---|
| 40 | + $sidebars = array_keys( $wp_registered_sidebars ); |
|---|
| 41 | + if ( !empty( $sidebars ) ) { |
|---|
| 42 | + // Move the known-good ones first |
|---|
| 43 | + foreach ( $sidebars as $id ) { |
|---|
| 44 | + if ( array_key_exists( $id, $sidebars_widgets ) ) { |
|---|
| 45 | + $_sidebars_widgets[$id] = $sidebars_widgets[$id]; |
|---|
| 46 | + unset($sidebars_widgets[$id], $sidebars[$id]); |
|---|
| 47 | + } |
|---|
| 48 | + } |
|---|
| 49 | + |
|---|
| 50 | + // Assign to each unmatched registered sidebar the first available orphan |
|---|
| 51 | + unset( $sidebars_widgets[ 'array_version' ] ); |
|---|
| 52 | + while ( ( $sidebar = array_shift( $sidebars ) ) && $widgets = array_shift( $sidebars_widgets ) ) |
|---|
| 53 | + $_sidebars_widgets[ $sidebar ] = $widgets; |
|---|
| 54 | + |
|---|
| 55 | + $_sidebars_widgets['array_version'] = 3; |
|---|
| 56 | + $sidebars_widgets = $_sidebars_widgets; |
|---|
| 57 | + unset($_sidebars_widgets); |
|---|
| 58 | + } |
|---|
| 59 | + |
|---|
| 60 | if ( $update ) |
|---|
| 61 | - update_option('sidebars_widgets', $_sidebars_widgets); |
|---|
| 62 | - break; |
|---|
| 63 | - case 2 : |
|---|
| 64 | - $_sidebars_widgets = $sidebars_widgets; |
|---|
| 65 | - break; |
|---|
| 66 | + update_option('sidebars_widgets', $sidebars_widgets); |
|---|
| 67 | } |
|---|
| 68 | |
|---|
| 69 | - unset($_sidebars_widgets['array_version']); |
|---|
| 70 | + unset($sidebars_widgets['array_version']); |
|---|
| 71 | |
|---|
| 72 | - return $_sidebars_widgets; |
|---|
| 73 | + return $sidebars_widgets; |
|---|
| 74 | } |
|---|
| 75 | |
|---|
| 76 | function wp_set_sidebars_widgets( $sidebars_widgets ) { |
|---|
| 77 | @@ -543,7 +563,7 @@ |
|---|
| 78 | <script lang='javascript'><!-- |
|---|
| 79 | var dropdown = document.getElementById("cat"); |
|---|
| 80 | function onCatChange() { |
|---|
| 81 | - location.href = "?cat="+dropdown.options[dropdown.selectedIndex].value; |
|---|
| 82 | + location.href = "<?php echo get_option('siteurl'); ?>/?cat="+dropdown.options[dropdown.selectedIndex].value; |
|---|
| 83 | } |
|---|
| 84 | dropdown.onchange = onCatChange; |
|---|
| 85 | --></script> |
|---|