185 } |
185 } |
186 } |
186 } |
187 unset( $id, $data, $subs, $first_sub ); |
187 unset( $id, $data, $subs, $first_sub ); |
188 |
188 |
189 /** |
189 /** |
190 * @param string $add |
190 * Adds a CSS class to a string. |
191 * @param string $class |
191 * |
192 * @return string |
192 * @since 2.7.0 |
193 */ |
193 * |
194 function add_cssclass( $add, $class ) { |
194 * @param string $class_to_add The CSS class to add. |
195 $class = empty( $class ) ? $add : $class .= ' ' . $add; |
195 * @param string $classes The string to add the CSS class to. |
196 return $class; |
196 * @return string The string with the CSS class added. |
|
197 */ |
|
198 function add_cssclass( $class_to_add, $classes ) { |
|
199 if ( empty( $classes ) ) { |
|
200 return $class_to_add; |
|
201 } |
|
202 |
|
203 return $classes . ' ' . $class_to_add; |
197 } |
204 } |
198 |
205 |
199 /** |
206 /** |
200 * @param array $menu |
207 * Adds CSS classes for top-level administration menu items. |
201 * @return array |
208 * |
|
209 * The list of added classes includes `.menu-top-first` and `.menu-top-last`. |
|
210 * |
|
211 * @since 2.7.0 |
|
212 * |
|
213 * @param array $menu The array of administration menu items. |
|
214 * @return array The array of administration menu items with the CSS classes added. |
202 */ |
215 */ |
203 function add_menu_classes( $menu ) { |
216 function add_menu_classes( $menu ) { |
204 $first = false; |
217 $first_item = false; |
205 $lastorder = false; |
218 $last_order = false; |
206 $i = 0; |
219 $items_count = count( $menu ); |
207 $mc = count( $menu ); |
220 $i = 0; |
|
221 |
208 foreach ( $menu as $order => $top ) { |
222 foreach ( $menu as $order => $top ) { |
209 $i++; |
223 $i++; |
210 |
224 |
211 if ( 0 == $order ) { // Dashboard is always shown/single. |
225 if ( 0 == $order ) { // Dashboard is always shown/single. |
212 $menu[0][4] = add_cssclass( 'menu-top-first', $top[4] ); |
226 $menu[0][4] = add_cssclass( 'menu-top-first', $top[4] ); |
213 $lastorder = 0; |
227 $last_order = 0; |
214 continue; |
228 continue; |
215 } |
229 } |
216 |
230 |
217 if ( 0 === strpos( $top[2], 'separator' ) && false !== $lastorder ) { // If separator. |
231 if ( 0 === strpos( $top[2], 'separator' ) && false !== $last_order ) { // If separator. |
218 $first = true; |
232 $first_item = true; |
219 $c = $menu[ $lastorder ][4]; |
233 $classes = $menu[ $last_order ][4]; |
220 $menu[ $lastorder ][4] = add_cssclass( 'menu-top-last', $c ); |
234 $menu[ $last_order ][4] = add_cssclass( 'menu-top-last', $classes ); |
221 continue; |
235 continue; |
222 } |
236 } |
223 |
237 |
224 if ( $first ) { |
238 if ( $first_item ) { |
225 $c = $menu[ $order ][4]; |
239 $classes = $menu[ $order ][4]; |
226 $menu[ $order ][4] = add_cssclass( 'menu-top-first', $c ); |
240 $menu[ $order ][4] = add_cssclass( 'menu-top-first', $classes ); |
227 $first = false; |
241 $first_item = false; |
228 } |
242 } |
229 |
243 |
230 if ( $mc == $i ) { // Last item. |
244 if ( $i == $items_count ) { // Last item. |
231 $c = $menu[ $order ][4]; |
245 $classes = $menu[ $order ][4]; |
232 $menu[ $order ][4] = add_cssclass( 'menu-top-last', $c ); |
246 $menu[ $order ][4] = add_cssclass( 'menu-top-last', $classes ); |
233 } |
247 } |
234 |
248 |
235 $lastorder = $order; |
249 $last_order = $order; |
236 } |
250 } |
237 |
251 |
238 /** |
252 /** |
239 * Filters administration menus array with classes added for top-level items. |
253 * Filters administration menu array with classes added for top-level items. |
240 * |
254 * |
241 * @since 2.7.0 |
255 * @since 2.7.0 |
242 * |
256 * |
243 * @param array $menu Associative array of administration menu items. |
257 * @param array $menu Associative array of administration menu items. |
244 */ |
258 */ |