X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/bf5c68485ef07868ad0a91168ecd0092af7661ae..8f374b7233bc2815ccc387e448d208c5434eb961:/wp-admin/includes/screen.php diff --git a/wp-admin/includes/screen.php b/wp-admin/includes/screen.php index a182b745..2fe318d9 100644 --- a/wp-admin/includes/screen.php +++ b/wp-admin/includes/screen.php @@ -114,7 +114,6 @@ function get_hidden_meta_boxes( $screen ) { * * @param string $option An option name. * @param mixed $args Option-dependent arguments. - * @return void */ function add_screen_option( $option, $args = array() ) { $current_screen = get_current_screen(); @@ -176,7 +175,7 @@ function get_screen_icon( $screen = '' ) { * * @since 3.1.0 * - * @return object Current screen object + * @return WP_Screen Current screen object */ function get_current_screen() { global $current_screen; @@ -196,7 +195,7 @@ function get_current_screen() { * @param mixed $hook_name Optional. The hook name (also known as the hook suffix) used to determine the screen, * or an existing screen object. */ -function set_current_screen( $hook_name = '' ) { +function set_current_screen( $hook_name = '' ) { WP_Screen::get( $hook_name )->set_current_screen(); } @@ -208,7 +207,7 @@ function set_current_screen( $hook_name = '' ) { */ final class WP_Screen { /** - * Any action associated with the screen. 'add' for *-add.php and *-new.php screens. Empty otherwise. + * Any action associated with the screen. 'add' for *-add.php and *-new.php screens. Empty otherwise. * * @since 3.3.0 * @var string @@ -217,7 +216,7 @@ final class WP_Screen { public $action; /** - * The base type of the screen. This is typically the same as $id but with any post types and taxonomies stripped. + * The base type of the screen. This is typically the same as $id but with any post types and taxonomies stripped. * For example, for an $id of 'edit-post' the base is 'edit'. * * @since 3.3.0 @@ -226,6 +225,15 @@ final class WP_Screen { */ public $base; + /** + * The number of columns to display. Access with get_columns(). + * + * @since 3.4.0 + * @var int + * @access private + */ + private $columns = 0; + /** * The unique ID of the screen. * @@ -539,7 +547,7 @@ final class WP_Screen { * * @since 3.3.0 * - * @param string $parent_file The parent file of the screen. Typically the $parent_file global. + * @param string $parent_file The parent file of the screen. Typically the $parent_file global. */ function set_parentage( $parent_file ) { $this->parent_file = $parent_file; @@ -565,7 +573,8 @@ final class WP_Screen { * * @since 3.3.0 * - * @param string + * @param string $option Option ID. + * @param mixed $key Optional. Specific array key for when the option is an array. */ public function get_option( $option, $key = false ) { if ( ! isset( $this->_options[ $option ] ) ) @@ -578,6 +587,31 @@ final class WP_Screen { return $this->_options[ $option ]; } + /** + * Gets the help tabs registered for the screen. + * + * @since 3.4.0 + * + * @return array Help tabs with arguments. + */ + public function get_help_tabs() { + return $this->_help_tabs; + } + + /** + * Gets the arguments for a help tab. + * + * @since 3.4.0 + * + * @param string $id Help Tab ID. + * @return array Help tab arguments. + */ + public function get_help_tab( $id ) { + if ( ! isset( $this->_help_tabs[ $id ] ) ) + return null; + return $this->_help_tabs[ $id ]; + } + /** * Add a help tab to the contextual help for the screen. * Call this on the load-$pagenow hook for the relevant screen. @@ -606,7 +640,8 @@ final class WP_Screen { if ( ! $args['id'] || ! $args['title'] ) return; - $this->_help_tabs[] = $args; + // Allows for overriding an existing tab with that ID. + $this->_help_tabs[ $args['id'] ] = $args; } /** @@ -629,6 +664,17 @@ final class WP_Screen { $this->_help_tabs = array(); } + /** + * Gets the content from a contextual help sidebar. + * + * @since 3.4.0 + * + * @return string Contents of the help sidebar. + */ + public function get_help_sidebar() { + return $this->_help_sidebar; + } + /** * Add a sidebar to the contextual help for the screen. * Call this in template files after admin.php is loaded and before admin-header.php is loaded to add a sidebar to the contextual help. @@ -641,6 +687,23 @@ final class WP_Screen { $this->_help_sidebar = $content; } + /** + * Gets the number of layout columns the user has selected. + * + * The layout_columns option controls the max number and default number of + * columns. This method returns the number of columns within that range selected + * by the user via Screen Options. If no selection has been made, the default + * provisioned in layout_columns is returned. If the screen does not support + * selecting the number of layout columns, 0 is returned. + * + * @since 3.4.0 + * + * @return int Number of columns to display. + */ + public function get_columns() { + return $this->columns; + } + /** * Render the screen's help section. * @@ -657,7 +720,7 @@ final class WP_Screen { $old_help = apply_filters( 'contextual_help', $old_help, $this->id, $this ); // Default help only if there is no old-style block of text and no new-style help tabs. - if ( empty( $old_help ) && empty( $this->_help_tabs ) ) { + if ( empty( $old_help ) && ! $this->get_help_tabs() ) { $default_help = apply_filters( 'default_contextual_help', '' ); if ( $default_help ) $old_help = '

' . $default_help . '

'; @@ -671,10 +734,10 @@ final class WP_Screen { ) ); } - $has_sidebar = ! empty( $this->_help_sidebar ); + $help_sidebar = $this->get_help_sidebar(); $help_class = 'hidden'; - if ( ! $has_sidebar ) + if ( ! $help_sidebar ) $help_class .= ' no-sidebar'; // Time to render! @@ -686,35 +749,39 @@ final class WP_Screen {
- +
- _help_sidebar; ?> +
- _help_tabs as $i => $tab ): + get_help_tabs() as $tab ): $panel_id = "tab-panel-{$tab['id']}"; - $classes = ( $i == 0 ) ? 'active' : ''; - $classes .= ' help-tab-content'; ?> -
+
- +
id, $this ); + + if ( ! empty( $columns ) && isset( $columns[ $this->id ] ) ) + $this->add_option( 'layout_columns', array('max' => $columns[ $this->id ] ) ); + + if ( $this->get_option( 'layout_columns' ) ) { + $this->columns = (int) get_user_option("screen_layout_$this->id"); + + if ( ! $this->columns && $this->get_option( 'layout_columns', 'default' ) ) + $this->columns = $this->get_option( 'layout_columns', 'default' ); + } + $GLOBALS[ 'screen_layout_columns' ] = $this->columns; // Set the global for back-compat. + // Add screen options if ( $this->show_screen_options() ) $this->render_screen_options(); ?> _help_tabs && ! $this->show_screen_options() ) + if ( ! $this->get_help_tabs() && ! $this->show_screen_options() ) return; ?>