wp/wp-admin/includes/menu.php
changeset 19 3d72ae0968f4
parent 16 a86126ab1dd4
child 21 48c4eec2b7e6
equal deleted inserted replaced
18:be944660c56a 19:3d72ae0968f4
   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 	 */