Ticket #4169: widgets.2.diff

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

undo last patch, no more using name as id

Line 
1Index: 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>