diff --git a/wp-admin/includes/admin.php b/wp-admin/includes/admin.php
index 37f5c8ec9..e6c3edfba 100644
--- a/wp-admin/includes/admin.php
+++ b/wp-admin/includes/admin.php
@@ -33,6 +33,9 @@ require_once(ABSPATH . 'wp-admin/includes/plugin.php');
/** WordPress Post Administration API */
require_once(ABSPATH . 'wp-admin/includes/post.php');
+/** WordPress Administration Screen API */
+require_once(ABSPATH . 'wp-admin/includes/screen.php');
+
/** WordPress Taxonomy Administration API */
require_once(ABSPATH . 'wp-admin/includes/taxonomy.php');
diff --git a/wp-admin/includes/screen.php b/wp-admin/includes/screen.php
new file mode 100644
index 000000000..45f2b07c5
--- /dev/null
+++ b/wp-admin/includes/screen.php
@@ -0,0 +1,694 @@
+ UI String
+ */
+function get_column_headers( $screen ) {
+ if ( is_string( $screen ) )
+ $screen = convert_to_screen( $screen );
+
+ global $_wp_column_headers;
+
+ if ( !isset( $_wp_column_headers[ $screen->id ] ) ) {
+ $_wp_column_headers[ $screen->id ] = apply_filters( 'manage_' . $screen->id . '_columns', array() );
+ }
+
+ return $_wp_column_headers[ $screen->id ];
+}
+
+/**
+ * Get a list of hidden columns.
+ *
+ * @since 2.7.0
+ *
+ * @param string|object $screen The screen you want the hidden columns for
+ * @return array
+ */
+function get_hidden_columns( $screen ) {
+ if ( is_string( $screen ) )
+ $screen = convert_to_screen( $screen );
+
+ return (array) get_user_option( 'manage' . $screen->id . 'columnshidden' );
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since 2.7.0
+ *
+ * @param unknown_type $screen
+ */
+function meta_box_prefs($screen) {
+ global $wp_meta_boxes;
+
+ if ( is_string($screen) )
+ $screen = convert_to_screen($screen);
+
+ if ( empty($wp_meta_boxes[$screen->id]) )
+ return;
+
+ $hidden = get_hidden_meta_boxes($screen);
+
+ foreach ( array_keys($wp_meta_boxes[$screen->id]) as $context ) {
+ foreach ( array_keys($wp_meta_boxes[$screen->id][$context]) as $priority ) {
+ foreach ( $wp_meta_boxes[$screen->id][$context][$priority] as $box ) {
+ if ( false == $box || ! $box['title'] )
+ continue;
+ // Submit box cannot be hidden
+ if ( 'submitdiv' == $box['id'] || 'linksubmitdiv' == $box['id'] )
+ continue;
+ $box_id = $box['id'];
+ echo '';
+ echo ' ';
+ echo "{$box['title']} \n";
+ }
+ }
+ }
+}
+
+/**
+ * Get Hidden Meta Boxes
+ *
+ * @since 2.7.0
+ *
+ * @param string|object $screen Screen identifier
+ * @return array Hidden Meta Boxes
+ */
+function get_hidden_meta_boxes( $screen ) {
+ if ( is_string( $screen ) )
+ $screen = convert_to_screen( $screen );
+
+ $hidden = get_user_option( "metaboxhidden_{$screen->id}" );
+
+ // Hide slug boxes by default
+ if ( !is_array( $hidden ) ) {
+ if ( 'post' == $screen->base || 'page' == $screen->base )
+ $hidden = array('slugdiv', 'trackbacksdiv', 'postcustom', 'postexcerpt', 'commentstatusdiv', 'commentsdiv', 'authordiv', 'revisionsdiv');
+ else
+ $hidden = array( 'slugdiv' );
+ $hidden = apply_filters('default_hidden_meta_boxes', $hidden, $screen);
+ }
+
+ return $hidden;
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since 2.7.0
+ */
+function favorite_actions( $screen = null ) {
+ $default_action = false;
+
+ if ( is_string($screen) )
+ $screen = convert_to_screen($screen);
+
+ if ( $screen->is_user )
+ return;
+
+ if ( isset($screen->post_type) ) {
+ $post_type_object = get_post_type_object($screen->post_type);
+ if ( 'add' != $screen->action )
+ $default_action = array('post-new.php?post_type=' . $post_type_object->name => array($post_type_object->labels->new_item, $post_type_object->cap->edit_posts));
+ else
+ $default_action = array('edit.php?post_type=' . $post_type_object->name => array($post_type_object->labels->name, $post_type_object->cap->edit_posts));
+ }
+
+ if ( !$default_action ) {
+ if ( $screen->is_network ) {
+ $default_action = array('sites.php' => array( __('Sites'), 'manage_sites'));
+ } else {
+ switch ( $screen->id ) {
+ case 'upload':
+ $default_action = array('media-new.php' => array(__('New Media'), 'upload_files'));
+ break;
+ case 'media':
+ $default_action = array('upload.php' => array(__('Edit Media'), 'upload_files'));
+ break;
+ case 'link-manager':
+ case 'link':
+ if ( 'add' != $screen->action )
+ $default_action = array('link-add.php' => array(__('New Link'), 'manage_links'));
+ else
+ $default_action = array('link-manager.php' => array(__('Edit Links'), 'manage_links'));
+ break;
+ case 'users':
+ $default_action = array('user-new.php' => array(__('New User'), 'create_users'));
+ break;
+ case 'user':
+ $default_action = array('users.php' => array(__('Edit Users'), 'edit_users'));
+ break;
+ case 'plugins':
+ $default_action = array('plugin-install.php' => array(__('Install Plugins'), 'install_plugins'));
+ break;
+ case 'plugin-install':
+ $default_action = array('plugins.php' => array(__('Manage Plugins'), 'activate_plugins'));
+ break;
+ case 'themes':
+ $default_action = array('theme-install.php' => array(__('Install Themes'), 'install_themes'));
+ break;
+ case 'theme-install':
+ $default_action = array('themes.php' => array(__('Manage Themes'), 'switch_themes'));
+ break;
+ default:
+ $default_action = array('post-new.php' => array(__('New Post'), 'edit_posts'));
+ break;
+ }
+ }
+ }
+
+ if ( !$screen->is_network ) {
+ $actions = array(
+ 'post-new.php' => array(__('New Post'), 'edit_posts'),
+ 'edit.php?post_status=draft' => array(__('Drafts'), 'edit_posts'),
+ 'post-new.php?post_type=page' => array(__('New Page'), 'edit_pages'),
+ 'media-new.php' => array(__('Upload'), 'upload_files'),
+ 'edit-comments.php' => array(__('Comments'), 'moderate_comments')
+ );
+ } else {
+ $actions = array(
+ 'sites.php' => array( __('Sites'), 'manage_sites'),
+ 'users.php' => array( __('Users'), 'manage_network_users')
+ );
+ }
+
+ $default_key = array_keys($default_action);
+ $default_key = $default_key[0];
+ if ( isset($actions[$default_key]) )
+ unset($actions[$default_key]);
+ $actions = array_merge($default_action, $actions);
+ $actions = apply_filters( 'favorite_actions', $actions, $screen );
+
+ $allowed_actions = array();
+ foreach ( $actions as $action => $data ) {
+ if ( current_user_can($data[1]) )
+ $allowed_actions[$action] = $data[0];
+ }
+
+ if ( empty($allowed_actions) )
+ return;
+
+ $first = array_keys($allowed_actions);
+ $first = $first[0];
+ echo '
';
+ echo '
';
+ echo '
';
+
+ array_shift($allowed_actions);
+
+ foreach ( $allowed_actions as $action => $label) {
+ echo "
\n";
+ }
+ echo "
\n";
+}
+
+/**
+ * Convert a screen string to a screen object
+ *
+ * @since 3.0.0
+ *
+ * @param string $screen The name of the screen
+ * @return object An object containing the safe screen name and id
+ */
+function convert_to_screen( $screen ) {
+ $screen = str_replace( array('.php', '-new', '-add', '-network', '-user' ), '', $screen);
+
+ if ( is_network_admin() )
+ $screen .= '-network';
+ elseif ( is_user_admin() )
+ $screen .= '-user';
+
+ $screen = (string) apply_filters( 'screen_meta_screen', $screen );
+ $screen = (object) array('id' => $screen, 'base' => $screen);
+ return $screen;
+}
+
+function screen_meta($screen) {
+ global $wp_meta_boxes, $_wp_contextual_help, $wp_list_table, $wp_current_screen_options;
+
+ if ( is_string($screen) )
+ $screen = convert_to_screen($screen);
+
+ $columns = get_column_headers( $screen );
+ $hidden = get_hidden_columns( $screen );
+
+ $meta_screens = array('index' => 'dashboard');
+
+ if ( isset($meta_screens[$screen->id]) ) {
+ $screen->id = $meta_screens[$screen->id];
+ $screen->base = $screen->id;
+ }
+
+ $show_screen = false;
+ if ( !empty($wp_meta_boxes[$screen->id]) || !empty($columns) )
+ $show_screen = true;
+
+ $screen_options = screen_options($screen);
+ if ( $screen_options )
+ $show_screen = true;
+
+ if ( !isset($_wp_contextual_help) )
+ $_wp_contextual_help = array();
+
+ $settings = apply_filters('screen_settings', '', $screen);
+
+ switch ( $screen->id ) {
+ case 'widgets':
+ $settings = '' . __('Enable accessibility mode') . ' ' . __('Disable accessibility mode') . "
\n";
+ $show_screen = true;
+ break;
+ }
+ if ( ! empty( $settings ) )
+ $show_screen = true;
+
+ if ( !empty($wp_current_screen_options) )
+ $show_screen = true;
+
+ $show_screen = apply_filters('screen_options_show_screen', $show_screen, $screen);
+
+ // If we have screen options, add the menu to the admin bar.
+ if ( $show_screen )
+ add_action( 'admin_bar_menu', 'wp_admin_bar_screen_options_menu', 80 );
+
+
+?>
+ array( $tab1_title => $tab1_value [, $tab2_title => $tab2_value, ...] ),
+ * 'contextual-help-links' => $help_links_as_string )
+ *
+ * For backwards compatability, a string is also accepted.
+ *
+ * @since 2.7.0
+ *
+ * @param string $screen The handle for the screen to add help to. This is usually the hook name returned by the add_*_page() functions.
+ * @param array|string $help Creates tabs & links columns within help text in array.
+ *
+ */
+function add_contextual_help($screen, $help) {
+ global $_wp_contextual_help;
+
+ if ( is_string($screen) )
+ $screen = convert_to_screen($screen);
+
+ if ( !isset($_wp_contextual_help) )
+ $_wp_contextual_help = array();
+
+ $_wp_contextual_help[$screen->id] = $help;
+}
+
+function screen_layout($screen) {
+ global $screen_layout_columns, $wp_current_screen_options;
+
+ if ( is_string($screen) )
+ $screen = convert_to_screen($screen);
+
+ // Back compat for plugins using the filter instead of add_screen_option()
+ $columns = apply_filters('screen_layout_columns', array(), $screen->id, $screen);
+ if ( !empty($columns) && isset($columns[$screen->id]) )
+ add_screen_option('layout_columns', array('max' => $columns[$screen->id]) );
+
+ if ( !isset($wp_current_screen_options['layout_columns']) ) {
+ $screen_layout_columns = 0;
+ return '';
+ }
+
+ $screen_layout_columns = get_user_option("screen_layout_$screen->id");
+ $num = $wp_current_screen_options['layout_columns']['max'];
+
+ if ( ! $screen_layout_columns ) {
+ if ( isset($wp_current_screen_options['layout_columns']['default']) )
+ $screen_layout_columns = $wp_current_screen_options['layout_columns']['default'];
+ else
+ $screen_layout_columns = 'auto';
+ }
+
+ $i = 1;
+ $return = '' . __('Screen Layout') . " \n" . __('Number of Columns:') . "\n";
+ while ( $i <= $num ) {
+ $return .= " $i \n";
+ ++$i;
+ }
+ $return .= " " . __('auto') . " \n";
+ $return .= "
\n";
+ return $return;
+}
+
+/**
+ * Register and configure an admin screen option
+ *
+ * @since 3.1.0
+ *
+ * @param string $option An option name.
+ * @param mixed $args Option dependent arguments
+ * @return void
+ */
+function add_screen_option( $option, $args = array() ) {
+ global $wp_current_screen_options;
+
+ if ( !isset($wp_current_screen_options) )
+ $wp_current_screen_options = array();
+
+ $wp_current_screen_options[$option] = $args;
+}
+
+function screen_options($screen) {
+ global $wp_current_screen_options;
+
+ if ( is_string($screen) )
+ $screen = convert_to_screen($screen);
+
+ if ( !isset($wp_current_screen_options['per_page']) )
+ return '';
+
+ $per_page_label = $wp_current_screen_options['per_page']['label'];
+
+ if ( empty($wp_current_screen_options['per_page']['option']) ) {
+ $option = str_replace( '-', '_', "{$screen->id}_per_page" );
+ } else {
+ $option = $wp_current_screen_options['per_page']['option'];
+ }
+
+ $per_page = (int) get_user_option( $option );
+ if ( empty( $per_page ) || $per_page < 1 ) {
+ if ( isset($wp_current_screen_options['per_page']['default']) )
+ $per_page = $wp_current_screen_options['per_page']['default'];
+ else
+ $per_page = 20;
+ }
+
+ if ( 'edit_comments_per_page' == $option )
+ $per_page = apply_filters( 'comments_per_page', $per_page, isset($_REQUEST['comment_status']) ? $_REQUEST['comment_status'] : 'all' );
+ elseif ( 'categories_per_page' == $option )
+ $per_page = apply_filters( 'edit_categories_per_page', $per_page );
+ else
+ $per_page = apply_filters( $option, $per_page );
+
+ // Back compat
+ if ( isset( $screen->post_type ) )
+ $per_page = apply_filters( 'edit_posts_per_page', $per_page, $screen->post_type );
+
+ $return = "\n";
+ if ( !empty($per_page_label) )
+ $return .= " $per_page_label \n";
+ $return .= get_submit_button( __( 'Apply' ), 'button', 'screen-options-apply', false );
+ $return .= " ";
+ $return .= "
\n";
+ return $return;
+}
+
+function screen_icon( $screen = '' ) {
+ echo get_screen_icon( $screen );
+}
+
+function get_screen_icon( $screen = '' ) {
+ global $current_screen, $typenow;
+
+ if ( empty($screen) )
+ $screen = $current_screen;
+ elseif ( is_string($screen) )
+ $name = $screen;
+
+ $class = 'icon32';
+
+ if ( empty($name) ) {
+ if ( !empty($screen->parent_base) )
+ $name = $screen->parent_base;
+ else
+ $name = $screen->base;
+
+ if ( 'edit' == $name && isset($screen->post_type) && 'page' == $screen->post_type )
+ $name = 'edit-pages';
+
+ $post_type = '';
+ if ( isset( $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 '
';
+}
+
+/**
+ * Get the current screen object
+ *
+ * @since 3.1.0
+ *
+ * @return object Current screen object
+ */
+function get_current_screen() {
+ global $current_screen;
+
+ if ( !isset($current_screen) )
+ return null;
+
+ return $current_screen;
+}
+
+/**
+ * Set the current screen object
+ *
+ * @since 3.0.0
+ *
+ * @uses $current_screen
+ *
+ * @param string $id Screen id, optional.
+ */
+function set_current_screen( $id = '' ) {
+ global $current_screen;
+
+ $current_screen = new WP_Screen( $id );
+
+ $current_screen = apply_filters('current_screen', $current_screen);
+}
+
+class WP_Screen {
+ var $action = '';
+ var $base;
+ var $id;
+ var $is_network;
+ var $is_user;
+ var $parent_base;
+ var $parent_file;
+ var $post_type;
+ var $taxonomy;
+
+ function __construct( $id = '' ) {
+ global $hook_suffix, $typenow, $taxnow;
+
+ $action = '';
+
+ if ( empty( $id ) ) {
+ $screen = $hook_suffix;
+ $screen = str_replace('.php', '', $screen);
+ if ( preg_match('/-add|-new$/', $screen) )
+ $action = 'add';
+ $screen = str_replace('-new', '', $screen);
+ $screen = str_replace('-add', '', $screen);
+ $this->id = $this->base = $screen;
+ } else {
+ $id = sanitize_key( $id );
+ if ( false !== strpos($id, '-') ) {
+ list( $id, $typenow ) = explode('-', $id, 2);
+ if ( taxonomy_exists( $typenow ) ) {
+ $id = 'edit-tags';
+ $taxnow = $typenow;
+ $typenow = '';
+ }
+ }
+ $this->id = $this->base = $id;
+ }
+
+ $this->action = $action;
+
+ // Map index to dashboard
+ if ( 'index' == $this->base )
+ $this->base = 'dashboard';
+ if ( 'index' == $this->id )
+ $this->id = 'dashboard';
+
+ if ( 'edit' == $this->id ) {
+ if ( empty($typenow) )
+ $typenow = 'post';
+ $this->id .= '-' . $typenow;
+ $this->post_type = $typenow;
+ } elseif ( 'post' == $this->id ) {
+ if ( empty($typenow) )
+ $typenow = 'post';
+ $this->id = $typenow;
+ $this->post_type = $typenow;
+ } elseif ( 'edit-tags' == $this->id ) {
+ if ( empty($taxnow) )
+ $taxnow = 'post_tag';
+ $this->id = 'edit-' . $taxnow;
+ $this->taxonomy = $taxnow;
+ }
+
+ $this->is_network = is_network_admin();
+ $this->is_user = is_user_admin();
+
+ if ( $this->is_network ) {
+ $this->base .= '-network';
+ $this->id .= '-network';
+ } elseif ( $this->is_user ) {
+ $this->base .= '-user';
+ $this->id .= '-user';
+ }
+ }
+
+ function set_parentage( $parent_file ) {
+ $this->parent_file = $parent_file;
+ $this->parent_base = preg_replace('/\?.*$/', '', $parent_file);
+ $this->parent_base = str_replace('.php', '', $this->parent_base);
+ }
+
+ function add_option( $option, $args = array() ) {
+ return add_screen_option( $option, $args );
+ }
+
+ function add_help_tab( $id, $title, $content) {
+ global $_wp_contextual_help;
+
+ $_wp_contextual_help[$this->id]['tabs'][] = array( $id, $title, $content );
+ }
+
+ function add_help_sidebar( $content ) {
+ global $_wp_contextual_help;
+
+ $_wp_contextual_help[$this->id]['sidebar'] = $content;
+ }
+}
\ No newline at end of file
diff --git a/wp-admin/includes/template.php b/wp-admin/includes/template.php
index 2e89ce258..adeb2f970 100644
--- a/wp-admin/includes/template.php
+++ b/wp-admin/includes/template.php
@@ -221,42 +221,6 @@ function wp_link_category_checklist( $link_id = 0 ) {
}
}
-/**
- * Get the column headers for a screen
- *
- * @since 2.7.0
- *
- * @param string|object $screen The screen you want the headers for
- * @return array Containing the headers in the format id => UI String
- */
-function get_column_headers( $screen ) {
- if ( is_string( $screen ) )
- $screen = convert_to_screen( $screen );
-
- global $_wp_column_headers;
-
- if ( !isset( $_wp_column_headers[ $screen->id ] ) ) {
- $_wp_column_headers[ $screen->id ] = apply_filters( 'manage_' . $screen->id . '_columns', array() );
- }
-
- return $_wp_column_headers[ $screen->id ];
-}
-
-/**
- * Get a list of hidden columns.
- *
- * @since 2.7.0
- *
- * @param string|object $screen The screen you want the hidden columns for
- * @return array
- */
-function get_hidden_columns( $screen ) {
- if ( is_string( $screen ) )
- $screen = convert_to_screen( $screen );
-
- return (array) get_user_option( 'manage' . $screen->id . 'columnshidden' );
-}
-
// adds hidden fields with the data for use in the inline editor for posts and pages
/**
* {@internal Missing Short Description}}
@@ -1005,67 +969,6 @@ function remove_meta_box($id, $page, $context) {
$wp_meta_boxes[$page][$context][$priority][$id] = false;
}
-/**
- * {@internal Missing Short Description}}
- *
- * @since 2.7.0
- *
- * @param unknown_type $screen
- */
-function meta_box_prefs($screen) {
- global $wp_meta_boxes;
-
- if ( is_string($screen) )
- $screen = convert_to_screen($screen);
-
- if ( empty($wp_meta_boxes[$screen->id]) )
- return;
-
- $hidden = get_hidden_meta_boxes($screen);
-
- foreach ( array_keys($wp_meta_boxes[$screen->id]) as $context ) {
- foreach ( array_keys($wp_meta_boxes[$screen->id][$context]) as $priority ) {
- foreach ( $wp_meta_boxes[$screen->id][$context][$priority] as $box ) {
- if ( false == $box || ! $box['title'] )
- continue;
- // Submit box cannot be hidden
- if ( 'submitdiv' == $box['id'] || 'linksubmitdiv' == $box['id'] )
- continue;
- $box_id = $box['id'];
- echo '';
- echo ' ';
- echo "{$box['title']} \n";
- }
- }
- }
-}
-
-/**
- * Get Hidden Meta Boxes
- *
- * @since 2.7.0
- *
- * @param string|object $screen Screen identifier
- * @return array Hidden Meta Boxes
- */
-function get_hidden_meta_boxes( $screen ) {
- if ( is_string( $screen ) )
- $screen = convert_to_screen( $screen );
-
- $hidden = get_user_option( "metaboxhidden_{$screen->id}" );
-
- // Hide slug boxes by default
- if ( !is_array( $hidden ) ) {
- if ( 'post' == $screen->base || 'page' == $screen->base )
- $hidden = array('slugdiv', 'trackbacksdiv', 'postcustom', 'postexcerpt', 'commentstatusdiv', 'commentsdiv', 'authordiv', 'revisionsdiv');
- else
- $hidden = array( 'slugdiv' );
- $hidden = apply_filters('default_hidden_meta_boxes', $hidden, $screen);
- }
-
- return $hidden;
-}
-
/**
* Add a new section to a settings page.
*
@@ -1396,118 +1299,6 @@ function the_post_password() {
if ( isset( $post->post_password ) ) echo esc_attr( $post->post_password );
}
-/**
- * {@internal Missing Short Description}}
- *
- * @since 2.7.0
- */
-function favorite_actions( $screen = null ) {
- $default_action = false;
-
- if ( is_string($screen) )
- $screen = convert_to_screen($screen);
-
- if ( $screen->is_user )
- return;
-
- if ( isset($screen->post_type) ) {
- $post_type_object = get_post_type_object($screen->post_type);
- if ( 'add' != $screen->action )
- $default_action = array('post-new.php?post_type=' . $post_type_object->name => array($post_type_object->labels->new_item, $post_type_object->cap->edit_posts));
- else
- $default_action = array('edit.php?post_type=' . $post_type_object->name => array($post_type_object->labels->name, $post_type_object->cap->edit_posts));
- }
-
- if ( !$default_action ) {
- if ( $screen->is_network ) {
- $default_action = array('sites.php' => array( __('Sites'), 'manage_sites'));
- } else {
- switch ( $screen->id ) {
- case 'upload':
- $default_action = array('media-new.php' => array(__('New Media'), 'upload_files'));
- break;
- case 'media':
- $default_action = array('upload.php' => array(__('Edit Media'), 'upload_files'));
- break;
- case 'link-manager':
- case 'link':
- if ( 'add' != $screen->action )
- $default_action = array('link-add.php' => array(__('New Link'), 'manage_links'));
- else
- $default_action = array('link-manager.php' => array(__('Edit Links'), 'manage_links'));
- break;
- case 'users':
- $default_action = array('user-new.php' => array(__('New User'), 'create_users'));
- break;
- case 'user':
- $default_action = array('users.php' => array(__('Edit Users'), 'edit_users'));
- break;
- case 'plugins':
- $default_action = array('plugin-install.php' => array(__('Install Plugins'), 'install_plugins'));
- break;
- case 'plugin-install':
- $default_action = array('plugins.php' => array(__('Manage Plugins'), 'activate_plugins'));
- break;
- case 'themes':
- $default_action = array('theme-install.php' => array(__('Install Themes'), 'install_themes'));
- break;
- case 'theme-install':
- $default_action = array('themes.php' => array(__('Manage Themes'), 'switch_themes'));
- break;
- default:
- $default_action = array('post-new.php' => array(__('New Post'), 'edit_posts'));
- break;
- }
- }
- }
-
- if ( !$screen->is_network ) {
- $actions = array(
- 'post-new.php' => array(__('New Post'), 'edit_posts'),
- 'edit.php?post_status=draft' => array(__('Drafts'), 'edit_posts'),
- 'post-new.php?post_type=page' => array(__('New Page'), 'edit_pages'),
- 'media-new.php' => array(__('Upload'), 'upload_files'),
- 'edit-comments.php' => array(__('Comments'), 'moderate_comments')
- );
- } else {
- $actions = array(
- 'sites.php' => array( __('Sites'), 'manage_sites'),
- 'users.php' => array( __('Users'), 'manage_network_users')
- );
- }
-
- $default_key = array_keys($default_action);
- $default_key = $default_key[0];
- if ( isset($actions[$default_key]) )
- unset($actions[$default_key]);
- $actions = array_merge($default_action, $actions);
- $actions = apply_filters( 'favorite_actions', $actions, $screen );
-
- $allowed_actions = array();
- foreach ( $actions as $action => $data ) {
- if ( current_user_can($data[1]) )
- $allowed_actions[$action] = $data[0];
- }
-
- if ( empty($allowed_actions) )
- return;
-
- $first = array_keys($allowed_actions);
- $first = $first[0];
- echo '';
- echo '
';
- echo '
';
-
- array_shift($allowed_actions);
-
- foreach ( $allowed_actions as $action => $label) {
- echo "
\n";
- }
- echo "
\n";
-}
-
/**
* Get the post title.
*
@@ -1687,354 +1478,6 @@ function _media_states( $post ) {
}
}
-/**
- * Convert a screen string to a screen object
- *
- * @since 3.0.0
- *
- * @param string $screen The name of the screen
- * @return object An object containing the safe screen name and id
- */
-function convert_to_screen( $screen ) {
- $screen = str_replace( array('.php', '-new', '-add', '-network', '-user' ), '', $screen);
-
- if ( is_network_admin() )
- $screen .= '-network';
- elseif ( is_user_admin() )
- $screen .= '-user';
-
- $screen = (string) apply_filters( 'screen_meta_screen', $screen );
- $screen = (object) array('id' => $screen, 'base' => $screen);
- return $screen;
-}
-
-function screen_meta($screen) {
- global $wp_meta_boxes, $_wp_contextual_help, $wp_list_table, $wp_current_screen_options;
-
- if ( is_string($screen) )
- $screen = convert_to_screen($screen);
-
- $columns = get_column_headers( $screen );
- $hidden = get_hidden_columns( $screen );
-
- $meta_screens = array('index' => 'dashboard');
-
- if ( isset($meta_screens[$screen->id]) ) {
- $screen->id = $meta_screens[$screen->id];
- $screen->base = $screen->id;
- }
-
- $show_screen = false;
- if ( !empty($wp_meta_boxes[$screen->id]) || !empty($columns) )
- $show_screen = true;
-
- $screen_options = screen_options($screen);
- if ( $screen_options )
- $show_screen = true;
-
- if ( !isset($_wp_contextual_help) )
- $_wp_contextual_help = array();
-
- $settings = apply_filters('screen_settings', '', $screen);
-
- switch ( $screen->id ) {
- case 'widgets':
- $settings = '' . __('Enable accessibility mode') . ' ' . __('Disable accessibility mode') . "
\n";
- $show_screen = true;
- break;
- }
- if ( ! empty( $settings ) )
- $show_screen = true;
-
- if ( !empty($wp_current_screen_options) )
- $show_screen = true;
-
- $show_screen = apply_filters('screen_options_show_screen', $show_screen, $screen);
-
- // If we have screen options, add the menu to the admin bar.
- if ( $show_screen )
- add_action( 'admin_bar_menu', 'wp_admin_bar_screen_options_menu', 80 );
-
-
-?>
- array( $tab1_title => $tab1_value [, $tab2_title => $tab2_value, ...] ),
- * 'contextual-help-links' => $help_links_as_string )
- *
- * For backwards compatability, a string is also accepted.
- *
- * @since 2.7.0
- *
- * @param string $screen The handle for the screen to add help to. This is usually the hook name returned by the add_*_page() functions.
- * @param array|string $help Creates tabs & links columns within help text in array.
- *
- */
-function add_contextual_help($screen, $help) {
- global $_wp_contextual_help;
-
- if ( is_string($screen) )
- $screen = convert_to_screen($screen);
-
- if ( !isset($_wp_contextual_help) )
- $_wp_contextual_help = array();
-
- $_wp_contextual_help[$screen->id] = $help;
-}
-
-function screen_layout($screen) {
- global $screen_layout_columns, $wp_current_screen_options;
-
- if ( is_string($screen) )
- $screen = convert_to_screen($screen);
-
- // Back compat for plugins using the filter instead of add_screen_option()
- $columns = apply_filters('screen_layout_columns', array(), $screen->id, $screen);
- if ( !empty($columns) && isset($columns[$screen->id]) )
- add_screen_option('layout_columns', array('max' => $columns[$screen->id]) );
-
- if ( !isset($wp_current_screen_options['layout_columns']) ) {
- $screen_layout_columns = 0;
- return '';
- }
-
- $screen_layout_columns = get_user_option("screen_layout_$screen->id");
- $num = $wp_current_screen_options['layout_columns']['max'];
-
- if ( ! $screen_layout_columns ) {
- if ( isset($wp_current_screen_options['layout_columns']['default']) )
- $screen_layout_columns = $wp_current_screen_options['layout_columns']['default'];
- else
- $screen_layout_columns = 'auto';
- }
-
- $i = 1;
- $return = '' . __('Screen Layout') . " \n" . __('Number of Columns:') . "\n";
- while ( $i <= $num ) {
- $return .= " $i \n";
- ++$i;
- }
- $return .= " " . __('auto') . " \n";
- $return .= "
\n";
- return $return;
-}
-
-/**
- * Register and configure an admin screen option
- *
- * @since 3.1.0
- *
- * @param string $option An option name.
- * @param mixed $args Option dependent arguments
- * @return void
- */
-function add_screen_option( $option, $args = array() ) {
- global $wp_current_screen_options;
-
- if ( !isset($wp_current_screen_options) )
- $wp_current_screen_options = array();
-
- $wp_current_screen_options[$option] = $args;
-}
-
-function screen_options($screen) {
- global $wp_current_screen_options;
-
- if ( is_string($screen) )
- $screen = convert_to_screen($screen);
-
- if ( !isset($wp_current_screen_options['per_page']) )
- return '';
-
- $per_page_label = $wp_current_screen_options['per_page']['label'];
-
- if ( empty($wp_current_screen_options['per_page']['option']) ) {
- $option = str_replace( '-', '_', "{$screen->id}_per_page" );
- } else {
- $option = $wp_current_screen_options['per_page']['option'];
- }
-
- $per_page = (int) get_user_option( $option );
- if ( empty( $per_page ) || $per_page < 1 ) {
- if ( isset($wp_current_screen_options['per_page']['default']) )
- $per_page = $wp_current_screen_options['per_page']['default'];
- else
- $per_page = 20;
- }
-
- if ( 'edit_comments_per_page' == $option )
- $per_page = apply_filters( 'comments_per_page', $per_page, isset($_REQUEST['comment_status']) ? $_REQUEST['comment_status'] : 'all' );
- elseif ( 'categories_per_page' == $option )
- $per_page = apply_filters( 'edit_categories_per_page', $per_page );
- else
- $per_page = apply_filters( $option, $per_page );
-
- // Back compat
- if ( isset( $screen->post_type ) )
- $per_page = apply_filters( 'edit_posts_per_page', $per_page, $screen->post_type );
-
- $return = "\n";
- if ( !empty($per_page_label) )
- $return .= " $per_page_label \n";
- $return .= get_submit_button( __( 'Apply' ), 'button', 'screen-options-apply', false );
- $return .= " ";
- $return .= "
\n";
- return $return;
-}
-
-function screen_icon( $screen = '' ) {
- echo get_screen_icon( $screen );
-}
-
-function get_screen_icon( $screen = '' ) {
- global $current_screen, $typenow;
-
- if ( empty($screen) )
- $screen = $current_screen;
- elseif ( is_string($screen) )
- $name = $screen;
-
- $class = 'icon32';
-
- if ( empty($name) ) {
- if ( !empty($screen->parent_base) )
- $name = $screen->parent_base;
- else
- $name = $screen->base;
-
- if ( 'edit' == $name && isset($screen->post_type) && 'page' == $screen->post_type )
- $name = 'edit-pages';
-
- $post_type = '';
- if ( isset( $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 '
';
-}
-
/**
* Test support for compressing JavaScript from PHP
*
@@ -2100,39 +1543,6 @@ function compression_test() {
id = $this->base = $screen;
- } else {
- $id = sanitize_key( $id );
- if ( false !== strpos($id, '-') ) {
- list( $id, $typenow ) = explode('-', $id, 2);
- if ( taxonomy_exists( $typenow ) ) {
- $id = 'edit-tags';
- $taxnow = $typenow;
- $typenow = '';
- }
- }
- $this->id = $this->base = $id;
- }
-
- $this->action = $action;
-
- // Map index to dashboard
- if ( 'index' == $this->base )
- $this->base = 'dashboard';
- if ( 'index' == $this->id )
- $this->id = 'dashboard';
-
- if ( 'edit' == $this->id ) {
- if ( empty($typenow) )
- $typenow = 'post';
- $this->id .= '-' . $typenow;
- $this->post_type = $typenow;
- } elseif ( 'post' == $this->id ) {
- if ( empty($typenow) )
- $typenow = 'post';
- $this->id = $typenow;
- $this->post_type = $typenow;
- } elseif ( 'edit-tags' == $this->id ) {
- if ( empty($taxnow) )
- $taxnow = 'post_tag';
- $this->id = 'edit-' . $taxnow;
- $this->taxonomy = $taxnow;
- }
-
- $this->is_network = is_network_admin();
- $this->is_user = is_user_admin();
-
- if ( $this->is_network ) {
- $this->base .= '-network';
- $this->id .= '-network';
- } elseif ( $this->is_user ) {
- $this->base .= '-user';
- $this->id .= '-user';
- }
- }
-
- function set_parentage( $parent_file ) {
- $this->parent_file = $parent_file;
- $this->parent_base = preg_replace('/\?.*$/', '', $parent_file);
- $this->parent_base = str_replace('.php', '', $this->parent_base);
- }
-
- function add_option( $option, $args = array() ) {
- return add_screen_option( $option, $args );
- }
-
- function add_help_tab( $id, $title, $content) {
- global $_wp_contextual_help;
-
- $_wp_contextual_help[$this->id]['tabs'][] = array( $id, $title, $content );
- }
-
- function add_help_sidebar( $content ) {
- global $_wp_contextual_help;
-
- $_wp_contextual_help[$this->id]['sidebar'] = $content;
- }
}
\ No newline at end of file