WordPress.org

Make WordPress Core

Ticket #4169: widgets.2.diff

File widgets.2.diff, 2.9 KB (added by andy, 11 years ago)

undo last patch, no more using name as id

  • 2.2/wp-includes/widgets.php

     
    4343        $i = count($wp_registered_sidebars) + 1;
    4444
    4545        $defaults = array(
    46                 'name' => sprintf(__('Sidebar %d'), count($wp_registered_sidebars) + 1 ),
     46                'name' => sprintf(__('Sidebar %d'), $i ),
     47                'id' => "sidebar-$i",
    4748                'before_widget' => '<li id="%1$s" class="widget %2$s">',
    4849                'after_widget' => "</li>\n",
    4950                'before_title' => '<h2 class="widgettitle">',
     
    5253
    5354        $sidebar = array_merge($defaults, $args);
    5455
    55         if ( ! isset($sidebar['id']) ) $sidebar['id'] = sanitize_title($sidebar['name']);
    5656        $wp_registered_sidebars[$sidebar['id']] = $sidebar;
    5757
    5858        return $sidebar['id'];
     
    220220/* Internal Functions */
    221221
    222222function wp_get_sidebars_widgets($update = true) {
    223         global $wp_registered_widgets;
     223        global $wp_registered_widgets, $wp_registered_sidebars;
    224224
    225225        $sidebars_widgets = get_option('sidebars_widgets');
    226226        $_sidebars_widgets = array();
     
    246246                                unset($_sidebars_widgets[$index][$i]);
    247247                        }
    248248                        $_sidebars_widgets['array_version'] = 2;
     249                        $sidebars_widgets = $_sidebars_widgets;
     250                        unset($_sidebars_widgets);
     251
     252                case 2 :
     253                        $sidebars = array_keys( $wp_registered_sidebars );
     254                        if ( !empty( $sidebars ) ) {
     255                                // Move the known-good ones first
     256                                foreach ( $sidebars as $id ) {
     257                                        if ( array_key_exists( $id, $sidebars_widgets ) ) {
     258                                                $_sidebars_widgets[$id] = $sidebars_widgets[$id];
     259                                                unset($sidebars_widgets[$id], $sidebars[$id]);
     260                                        }
     261                                }
     262
     263                                // Assign to each unmatched registered sidebar the first available orphan
     264                                unset( $sidebars_widgets[ 'array_version' ] );
     265                                while ( ( $sidebar = array_shift( $sidebars ) ) && $widgets = array_shift( $sidebars_widgets ) )
     266                                        $_sidebars_widgets[ $sidebar ] = $widgets;
     267
     268                                $_sidebars_widgets['array_version'] = 3;
     269                                $sidebars_widgets = $_sidebars_widgets;
     270                                unset($_sidebars_widgets);
     271                        }
     272
    249273                        if ( $update )
    250                                 update_option('sidebars_widgets', $_sidebars_widgets);
    251                         break;
    252                 case 2 :
    253                         $_sidebars_widgets = $sidebars_widgets;
    254                         break;
     274                                update_option('sidebars_widgets', $sidebars_widgets);
    255275        }
    256276
    257         unset($_sidebars_widgets['array_version']);
     277        unset($sidebars_widgets['array_version']);
    258278
    259         return $_sidebars_widgets;
     279        return $sidebars_widgets;
    260280}
    261281
    262282function wp_set_sidebars_widgets( $sidebars_widgets ) {
     
    543563<script lang='javascript'><!--
    544564    var dropdown = document.getElementById("cat");
    545565    function onCatChange() {
    546         location.href = "?cat="+dropdown.options[dropdown.selectedIndex].value;
     566        location.href = "<?php echo get_option('siteurl'); ?>/?cat="+dropdown.options[dropdown.selectedIndex].value;
    547567    }
    548568    dropdown.onchange = onCatChange;
    549569--></script>