screen.php tidying. Doc fixes and improvements. Improve logic in ::show_screen_options(). Remove regex in ::set_parentage(). Better variable names. Streamline get_screen_icon(). Whitespace. see #18785.

git-svn-id: http://svn.automattic.com/wordpress/trunk@19051 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
nacin 2011-10-24 06:40:15 +00:00
parent a4a58839d0
commit 29f6c203cd
1 changed files with 67 additions and 56 deletions

View File

@ -11,7 +11,7 @@
* *
* @since 2.7.0 * @since 2.7.0
* *
* @param string|object $screen The screen you want the headers for * @param string|WP_Screen $screen The screen you want the headers for
* @return array Containing the headers in the format id => UI String * @return array Containing the headers in the format id => UI String
*/ */
function get_column_headers( $screen ) { function get_column_headers( $screen ) {
@ -31,7 +31,7 @@ function get_column_headers( $screen ) {
* *
* @since 2.7.0 * @since 2.7.0
* *
* @param string|object $screen The screen you want the hidden columns for * @param string|WP_Screen $screen The screen you want the hidden columns for
* @return array * @return array
*/ */
function get_hidden_columns( $screen ) { function get_hidden_columns( $screen ) {
@ -42,17 +42,17 @@ function get_hidden_columns( $screen ) {
} }
/** /**
* {@internal Missing Short Description}} * Prints the meta box preferences for screen meta.
* *
* @since 2.7.0 * @since 2.7.0
* *
* @param unknown_type $screen * @param string|WP_Screen $screen
*/ */
function meta_box_prefs( $screen ) { function meta_box_prefs( $screen ) {
global $wp_meta_boxes; global $wp_meta_boxes;
if ( is_string($screen) ) if ( is_string( $screen ) )
$screen = convert_to_screen($screen); $screen = convert_to_screen( $screen );
if ( empty($wp_meta_boxes[$screen->id]) ) if ( empty($wp_meta_boxes[$screen->id]) )
return; return;
@ -81,7 +81,7 @@ function meta_box_prefs( $screen ) {
* *
* @since 2.7.0 * @since 2.7.0
* *
* @param string|object $screen Screen identifier * @param string|WP_Screen $screen Screen identifier
* @return array Hidden Meta Boxes * @return array Hidden Meta Boxes
*/ */
function get_hidden_meta_boxes( $screen ) { function get_hidden_meta_boxes( $screen ) {
@ -112,11 +112,11 @@ function get_hidden_meta_boxes( $screen ) {
* *
* @since 3.0.0 * @since 3.0.0
* *
* @param string $screen The name of the screen * @param string $hook_name The hook name (also known as the hook suffix) used to determine the screen.
* @return object An object containing the safe screen name and id * @return object An object containing the safe screen name and id
*/ */
function convert_to_screen( $screen ) { function convert_to_screen( $hook_suffix ) {
$screen = str_replace( array('.php', '-new', '-add', '-network', '-user' ), '', $screen); $screen = str_replace( array('.php', '-new', '-add', '-network', '-user' ), '', $hook_suffix);
if ( is_network_admin() ) if ( is_network_admin() )
$screen .= '-network'; $screen .= '-network';
@ -144,7 +144,7 @@ function add_contextual_help( $screen, $help ) {
if ( is_string( $screen ) ) if ( is_string( $screen ) )
$screen = convert_to_screen( $screen ); $screen = convert_to_screen( $screen );
WP_Screen::add_old_compat_help( $screen->id, $help ); WP_Screen::add_old_compat_help( $screen, $help );
} }
/** /**
@ -165,39 +165,50 @@ function add_screen_option( $option, $args = array() ) {
return $current_screen->add_option( $option, $args ); return $current_screen->add_option( $option, $args );
} }
/**
* Displays a screen icon.
*
* @uses get_screen_icon()
* @since 2.7.0
*
* @param string|WP_Screen $screen Optional. Accepts a screen object (and defaults to the current screen object)
* which it uses to determine an icon HTML ID. Or, if a string is provided, it is used to form the icon HTML ID.
*/
function screen_icon( $screen = '' ) { function screen_icon( $screen = '' ) {
echo get_screen_icon( $screen ); echo get_screen_icon( $screen );
} }
/**
* Gets a screen icon.
*
* @since 3.2.0
*
* @param string|WP_Screen $screen Optional. Accepts a screen object (and defaults to the current screen object)
* which it uses to determine an icon HTML ID. Or, if a string is provided, it is used to form the icon HTML ID.
* @return string HTML for the screen icon.
*/
function get_screen_icon( $screen = '' ) { function get_screen_icon( $screen = '' ) {
global $current_screen, $typenow; if ( empty( $screen ) )
$screen = get_current_screen();
if ( empty($screen) ) elseif ( is_string( $screen ) )
$screen = $current_screen; $icon_id = $screen;
elseif ( is_string($screen) )
$name = $screen;
$class = 'icon32'; $class = 'icon32';
if ( empty($name) ) { if ( empty( $icon_id ) ) {
if ( !empty($screen->parent_base) ) if ( ! empty( $screen->parent_base ) )
$name = $screen->parent_base; $icon_id = $screen->parent_base;
else else
$name = $screen->base; $icon_id = $screen->base;
if ( 'edit' == $name && isset($screen->post_type) && 'page' == $screen->post_type ) if ( ! empty( $screen->post_type ) && 'page' == $screen->post_type )
$name = 'edit-pages'; $icon_id = 'edit-pages';
$post_type = ''; if ( ! empty( $screen->post_type ) )
if ( isset( $screen->post_type ) ) $class .= ' ' . sanitize_html_class( 'icon32-posts-' . $screen->post_type );
$post_type = $screen->post_type;
elseif ( $current_screen == $screen )
$post_type = $typenow;
if ( $post_type )
$class .= ' ' . sanitize_html_class( 'icon32-posts-' . $post_type );
} }
return '<div id="icon-' . esc_attr( $name ) . '" class="' . $class . '"><br /></div>'; return '<div id="icon-' . esc_attr( $icon_id ) . '" class="' . $class . '"><br /></div>';
} }
/** /**
@ -210,7 +221,7 @@ function get_screen_icon( $screen = '' ) {
function get_current_screen() { function get_current_screen() {
global $current_screen; global $current_screen;
if ( !isset($current_screen) ) if ( ! isset( $current_screen ) )
return null; return null;
return $current_screen; return $current_screen;
@ -220,21 +231,20 @@ function get_current_screen() {
* Set the current screen object * Set the current screen object
* *
* @since 3.0.0 * @since 3.0.0
*
* @uses $current_screen * @uses $current_screen
* *
* @param string $id Screen id, optional. * @param string $hook_name Optional. The hook name (also known as the hook suffix) used to determine the screen.
*/ */
function set_current_screen( $id = '' ) { function set_current_screen( $hook_name = '' ) {
global $current_screen; global $current_screen;
$current_screen = new WP_Screen( $id ); $current_screen = new WP_Screen( $hook_name );
$current_screen = apply_filters('current_screen', $current_screen); $current_screen = apply_filters('current_screen', $current_screen);
} }
/** /**
* A class representing the current admin screen. * A class representing the admin screen.
* *
* @since 3.3.0 * @since 3.3.0
* @access public * @access public
@ -453,8 +463,18 @@ final class WP_Screen {
self::$_options[ $this->id ] = array(); self::$_options[ $this->id ] = array();
} }
/**
* Sets the old string-based contextual help for the screen.
*
* For backwards compatibility.
*
* @since 3.3.0
*
* @param WP_Screen $screen A screen object.
* @param string $help Help text.
*/
static function add_old_compat_help( $screen, $help ) { static function add_old_compat_help( $screen, $help ) {
self::$_old_compat_help[ $screen ] = $help; self::$_old_compat_help[ $screen->id ] = $help;
} }
/** /**
@ -467,8 +487,8 @@ final class WP_Screen {
*/ */
function set_parentage( $parent_file ) { function set_parentage( $parent_file ) {
$this->parent_file = $parent_file; $this->parent_file = $parent_file;
$this->parent_base = preg_replace('/\?.*$/', '', $parent_file); list( $this->parent_base ) = explode( '?', $parent_file );
$this->parent_base = str_replace('.php', '', $this->parent_base); $this->parent_base = str_replace( '.php', '', $this->parent_base );
} }
/** /**
@ -640,33 +660,24 @@ final class WP_Screen {
} }
public function show_screen_options() { public function show_screen_options() {
global $wp_meta_boxes, $wp_list_table; global $wp_meta_boxes;
if ( is_bool( $this->_show_screen_options ) ) if ( is_bool( $this->_show_screen_options ) )
return $this->_show_screen_options; return $this->_show_screen_options;
$columns = get_column_headers( $this ); $columns = get_column_headers( $this );
$show_screen = false; $show_screen = ! empty( $wp_meta_boxes[ $this->id ] ) || $columns || $this->get_option( 'per_page' );
if ( ! empty( $wp_meta_boxes[ $this->id ] ) || ! empty( $columns ) )
$show_screen = true;
// Check if there are per-page options.
$show_screen = $show_screen || $this->get_option('per_page');
$this->_screen_settings = apply_filters( 'screen_settings', '', $this ); $this->_screen_settings = apply_filters( 'screen_settings', '', $this );
switch ( $this->id ) { switch ( $this->id ) {
case 'widgets': case 'widgets':
$this->_screen_settings = '<p><a id="access-on" href="widgets.php?widgets-access=on">' . __('Enable accessibility mode') . '</a><a id="access-off" href="widgets.php?widgets-access=off">' . __('Disable accessibility mode') . "</a></p>\n"; $this->_screen_settings = '<p><a id="access-on" href="widgets.php?widgets-access=on">' . __('Enable accessibility mode') . '</a><a id="access-off" href="widgets.php?widgets-access=off">' . __('Disable accessibility mode') . "</a></p>\n";
$show_screen = true;
break; break;
} }
if ( ! empty( $this->_screen_settings ) ) if ( $this->_screen_settings || self::$_options[ $this->id ] )
$show_screen = true;
if ( ! empty( self::$_options[ $this->id ] ) )
$show_screen = true; $show_screen = true;
$this->_show_screen_options = apply_filters( 'screen_options_show_screen', $show_screen, $this ); $this->_show_screen_options = apply_filters( 'screen_options_show_screen', $show_screen, $this );