+
@@ -416,7 +562,7 @@ function wp_comment_trashnotice() {
*
* @since 1.2.0
*
- * @param unknown_type $meta
+ * @param array $meta
*/
function list_meta( $meta ) {
// Exit if no meta
@@ -425,11 +571,11 @@ function list_meta( $meta ) {
- ' . __( 'Name' ) . '
+ ' . _x( 'Name', 'meta name' ) . '
' . __( 'Value' ) . '
-
+
'; //TBODY needed for list-manipulation JS
@@ -440,11 +586,11 @@ function list_meta( $meta ) {
-
+
-
+
";
- $r .= "\n\t\t" . __( 'Key' ) . " ";
+ $r .= "\n\t";
+ $r .= "\n\t\t" . __( 'Key' ) . " ";
$r .= "\n\t\t";
- $r .= get_submit_button( __( 'Delete' ), "delete:the-list:meta-{$entry['meta_id']}::_ajax_nonce=$delete_nonce deletemeta", "deletemeta[{$entry['meta_id']}]", false, array( 'tabindex' => '6' ) );
+ $r .= get_submit_button( __( 'Delete' ), 'deletemeta small', "deletemeta[{$entry['meta_id']}]", false, array( 'data-wp-lists' => "delete:the-list:meta-{$entry['meta_id']}::_ajax_nonce=$delete_nonce" ) );
$r .= "\n\t\t";
- $r .= get_submit_button( __( 'Update' ), "add:the-list:meta-{$entry['meta_id']}::_ajax_nonce-add-meta=$update_nonce updatemeta" , 'updatemeta', false, array( 'tabindex' => '6' ) );
+ $r .= get_submit_button( __( 'Update' ), 'updatemeta small', "meta-{$entry['meta_id']}-submit", false, array( 'data-wp-lists' => "add:the-list:meta-{$entry['meta_id']}::_ajax_nonce-add-meta=$update_nonce" ) );
$r .= "
";
$r .= wp_nonce_field( 'change-meta', '_ajax_nonce', false, false );
$r .= " ";
- $r .= "\n\t\t" . __( 'Value' ) . " \n\t ";
+ $r .= "\n\t\t" . __( 'Value' ) . " \n\t";
return $r;
}
/**
- * {@internal Missing Short Description}}
+ * Prints the form in the Custom Fields meta box.
*
* @since 1.2.0
+ *
+ * @global wpdb $wpdb
+ *
+ * @param WP_Post $post Optional. The post being edited.
*/
-function meta_form() {
+function meta_form( $post = null ) {
global $wpdb;
- $limit = (int) apply_filters( 'postmeta_form_limit', 30 );
- $keys = $wpdb->get_col( "
- SELECT meta_key
+ $post = get_post( $post );
+
+ /**
+ * Filter the number of custom fields to retrieve for the drop-down
+ * in the Custom Fields meta box.
+ *
+ * @since 2.1.0
+ *
+ * @param int $limit Number of custom fields to retrieve. Default 30.
+ */
+ $limit = apply_filters( 'postmeta_form_limit', 30 );
+ $sql = "SELECT DISTINCT meta_key
FROM $wpdb->postmeta
- GROUP BY meta_key
- HAVING meta_key NOT LIKE '\_%'
+ WHERE meta_key NOT BETWEEN '_' AND '_z'
+ HAVING meta_key NOT LIKE %s
ORDER BY meta_key
- LIMIT $limit" );
- if ( $keys )
- natcasesort($keys);
+ LIMIT %d";
+ $keys = $wpdb->get_col( $wpdb->prepare( $sql, $wpdb->esc_like( '_' ) . '%', $limit ) );
+ if ( $keys ) {
+ natcasesort( $keys );
+ $meta_key_input_id = 'metakeyselect';
+ } else {
+ $meta_key_input_id = 'metakeyinput';
+ }
?>
-
+
@@ -544,28 +704,32 @@ function meta_form() {
-
+
ID, $key ) )
+ continue;
echo "\n" . esc_html($key) . " ";
}
?>
-
+
-
+
-
+
-
- 'addmetasub', 'tabindex' => '9' ) ); ?>
+
+
+ 'newmeta-submit', 'data-wp-lists' => 'add:the-list:newmeta' ) ); ?>
+
@@ -575,17 +739,22 @@ function meta_form() {
}
/**
- * {@internal Missing Short Description}}
+ * Print out HTML form date elements for editing post or comment publish date.
*
* @since 0.71
*
- * @param unknown_type $edit
- * @param unknown_type $for_post
- * @param unknown_type $tab_index
- * @param unknown_type $multi
+ * @global WP_Locale $wp_locale
+ * @global object $comment
+ *
+ * @param int|bool $edit Accepts 1|true for editing the date, 0|false for adding the date.
+ * @param int|bool $for_post Accepts 1|true for applying the date to a post, 0|false for a comment.
+ * @param int $tab_index The tabindex attribute to add. Default 0.
+ * @param int|bool $multi Optional. Whether the additional fields and buttons should be added.
+ * Default 0|false.
*/
function touch_time( $edit = 1, $for_post = 1, $tab_index = 0, $multi = 0 ) {
- global $wp_locale, $post, $comment;
+ global $wp_locale, $comment;
+ $post = get_post();
if ( $for_post )
$edit = ! ( in_array($post->post_status, array('draft', 'pending') ) && (!$post->post_date_gmt || '0000-00-00 00:00:00' == $post->post_date_gmt ) );
@@ -594,6 +763,7 @@ function touch_time( $edit = 1, $for_post = 1, $tab_index = 0, $multi = 0 ) {
if ( (int) $tab_index > 0 )
$tab_index_attribute = " tabindex=\"$tab_index\"";
+ // todo: Remove this?
// echo ' '.__( 'Edit timestamp' ).' ';
$time_adj = current_time('timestamp');
@@ -611,91 +781,97 @@ function touch_time( $edit = 1, $for_post = 1, $tab_index = 0, $multi = 0 ) {
$cur_hh = gmdate( 'H', $time_adj );
$cur_mn = gmdate( 'i', $time_adj );
- $month = "\n";
+ $month = '' . __( 'Month' ) . ' \n";
for ( $i = 1; $i < 13; $i = $i +1 ) {
- $month .= "\t\t\t" . 'get_month_abbrev( $wp_locale->get_month( $i ) ) . " \n";
+ $monthnum = zeroise($i, 2);
+ $monthtext = $wp_locale->get_month_abbrev( $wp_locale->get_month( $i ) );
+ $month .= "\t\t\t" . '';
+ /* translators: 1: month number (01, 02, etc.), 2: month abbreviation */
+ $month .= sprintf( __( '%1$s-%2$s' ), $monthnum, $monthtext ) . " \n";
}
- $month .= ' ';
+ $month .= ' ';
- $day = ' ';
- $year = ' ';
- $hour = ' ';
- $minute = ' ';
+ $day = '' . __( 'Day' ) . ' ';
+ $year = '' . __( 'Year' ) . ' ';
+ $hour = '' . __( 'Hour' ) . ' ';
+ $minute = '' . __( 'Minute' ) . ' ';
echo '';
- /* translators: 1: month input, 2: day input, 3: year input, 4: hour input, 5: minute input */
- printf(__('%1$s%2$s, %3$s @ %4$s : %5$s'), $month, $day, $year, $hour, $minute);
+ /* translators: 1: month, 2: day, 3: year, 4: hour, 5: minute */
+ printf( __( '%1$s %2$s, %3$s @ %4$s:%5$s' ), $month, $day, $year, $hour, $minute );
echo '
';
if ( $multi ) return;
echo "\n\n";
- foreach ( array('mm', 'jj', 'aa', 'hh', 'mn') as $timeunit ) {
- echo ' ' . "\n";
+ $map = array(
+ 'mm' => array( $mm, $cur_mm ),
+ 'jj' => array( $jj, $cur_jj ),
+ 'aa' => array( $aa, $cur_aa ),
+ 'hh' => array( $hh, $cur_hh ),
+ 'mn' => array( $mn, $cur_mn ),
+ );
+ foreach ( $map as $timeunit => $value ) {
+ list( $unit, $curr ) = $value;
+
+ echo ' ' . "\n";
$cur_timeunit = 'cur_' . $timeunit;
- echo ' ' . "\n";
+ echo ' ' . "\n";
}
?>
-
+
$template";
- endforeach;
+ foreach ( array_keys( $templates ) as $template ) {
+ $selected = selected( $default, $templates[ $template ], false );
+ echo "\n\t$template ";
+ }
}
/**
- * {@internal Missing Short Description}}
+ * Print out option HTML elements for the page parents drop-down.
*
* @since 1.5.0
*
- * @param unknown_type $default
- * @param unknown_type $parent
- * @param unknown_type $level
- * @return unknown
+ * @global wpdb $wpdb
+ *
+ * @param int $default Optional. The default page ID to be pre-selected. Default 0.
+ * @param int $parent Optional. The parent page ID. Default 0.
+ * @param int $level Optional. Page depth level. Default 0.
+ *
+ * @return null|false Boolean False if page has no children, otherwise print out html elements
*/
function parent_dropdown( $default = 0, $parent = 0, $level = 0 ) {
- global $wpdb, $post_ID;
+ global $wpdb;
+ $post = get_post();
$items = $wpdb->get_results( $wpdb->prepare("SELECT ID, post_parent, post_title FROM $wpdb->posts WHERE post_parent = %d AND post_type = 'page' ORDER BY menu_order", $parent) );
if ( $items ) {
foreach ( $items as $item ) {
// A page cannot be its own parent.
- if (!empty ( $post_ID ) ) {
- if ( $item->ID == $post_ID ) {
- continue;
- }
- }
+ if ( $post && $post->ID && $item->ID == $post->ID )
+ continue;
+
$pad = str_repeat( ' ', $level * 3 );
- if ( $item->ID == $default)
- $current = ' selected="selected"';
- else
- $current = '';
+ $selected = selected( $default, $item->ID, false );
- echo "\n\t$pad " . esc_html($item->post_title) . " ";
+ echo "\n\t$pad " . esc_html($item->post_title) . " ";
parent_dropdown( $default, $item->ID, $level +1 );
}
} else {
@@ -704,69 +880,17 @@ function parent_dropdown( $default = 0, $parent = 0, $level = 0 ) {
}
/**
- * {@internal Missing Short Description}}
- *
- * @since 2.0.0
- *
- * @param unknown_type $id
- * @return unknown
- */
-function the_attachment_links( $id = false ) {
- $id = (int) $id;
- $post = & get_post( $id );
-
- if ( $post->post_type != 'attachment' )
- return false;
-
- $icon = wp_get_attachment_image( $post->ID, 'thumbnail', true );
- $attachment_data = wp_get_attachment_metadata( $id );
- $thumb = isset( $attachment_data['thumb'] );
-?>
-
- html elements for role selectors
+ * Print out option html elements for role selectors.
*
* @since 2.1.0
*
- * @param string $selected slug for the role that should be already selected
+ * @param string $selected Slug for the role that should be already selected.
*/
-function wp_dropdown_roles( $selected = false ) {
+function wp_dropdown_roles( $selected = '' ) {
$p = '';
$r = '';
- $editable_roles = get_editable_roles();
+ $editable_roles = array_reverse( get_editable_roles() );
foreach ( $editable_roles as $role => $details ) {
$name = translate_user_role($details['name'] );
@@ -778,56 +902,6 @@ function wp_dropdown_roles( $selected = false ) {
echo $p . $r;
}
-/**
- * {@internal Missing Short Description}}
- *
- * @since 2.3.0
- *
- * @param unknown_type $size
- * @return unknown
- */
-function wp_convert_hr_to_bytes( $size ) {
- $size = strtolower($size);
- $bytes = (int) $size;
- if ( strpos($size, 'k') !== false )
- $bytes = intval($size) * 1024;
- elseif ( strpos($size, 'm') !== false )
- $bytes = intval($size) * 1024 * 1024;
- elseif ( strpos($size, 'g') !== false )
- $bytes = intval($size) * 1024 * 1024 * 1024;
- return $bytes;
-}
-
-/**
- * {@internal Missing Short Description}}
- *
- * @since 2.3.0
- *
- * @param unknown_type $bytes
- * @return unknown
- */
-function wp_convert_bytes_to_hr( $bytes ) {
- $units = array( 0 => 'B', 1 => 'kB', 2 => 'MB', 3 => 'GB' );
- $log = log( $bytes, 1024 );
- $power = (int) $log;
- $size = pow(1024, $log - $power);
- return $size . $units[$power];
-}
-
-/**
- * {@internal Missing Short Description}}
- *
- * @since 2.5.0
- *
- * @return unknown
- */
-function wp_max_upload_size() {
- $u_bytes = wp_convert_hr_to_bytes( ini_get( 'upload_max_filesize' ) );
- $p_bytes = wp_convert_hr_to_bytes( ini_get( 'post_max_size' ) );
- $bytes = apply_filters( 'upload_size_limit', min($u_bytes, $p_bytes), $u_bytes, $p_bytes );
- return $bytes;
-}
-
/**
* Outputs the form used by the importers to accept the data to be imported
*
@@ -836,15 +910,25 @@ function wp_max_upload_size() {
* @param string $action The action attribute for the form.
*/
function wp_import_upload_form( $action ) {
+
+ /**
+ * Filter the maximum allowed upload size for import files.
+ *
+ * @since 2.3.0
+ *
+ * @see wp_max_upload_size()
+ *
+ * @param int $max_upload_size Allowed upload size. Default 1 MB.
+ */
$bytes = apply_filters( 'import_upload_size_limit', wp_max_upload_size() );
- $size = wp_convert_bytes_to_hr( $bytes );
+ $size = size_format( $bytes );
$upload_dir = wp_upload_dir();
if ( ! empty( $upload_dir['error'] ) ) :
?>
-
+
()
@@ -862,16 +946,36 @@ function wp_import_upload_form( $action ) {
*
* @since 2.5.0
*
- * @param string $id String for use in the 'id' attribute of tags.
- * @param string $title Title of the meta box.
- * @param string $callback Function that fills the box with the desired content. The function should echo its output.
- * @param string $page The type of edit page on which to show the box (post, page, link).
- * @param string $context The context within the page where the boxes should show ('normal', 'advanced').
- * @param string $priority The priority within the context where the boxes should show ('high', 'low').
+ * @global array $wp_meta_boxes
+ *
+ * @param string $id String for use in the 'id' attribute of tags.
+ * @param string $title Title of the meta box.
+ * @param callback $callback Function that fills the box with the desired content.
+ * The function should echo its output.
+ * @param string|WP_Screen $screen Optional. The screen on which to show the box (like a post
+ * type, 'link', or 'comment'). Default is the current screen.
+ * @param string $context Optional. The context within the screen where the boxes
+ * should display. Available contexts vary from screen to
+ * screen. Post edit screen contexts include 'normal', 'side',
+ * and 'advanced'. Comments screen contexts include 'normal'
+ * and 'side'. Menus meta boxes (accordion sections) all use
+ * the 'side' context. Global default is 'advanced'.
+ * @param string $priority Optional. The priority within the context where the boxes
+ * should show ('high', 'low'). Default 'default'.
+ * @param array $callback_args Optional. Data that should be set as the $args property
+ * of the box array (which is the second parameter passed
+ * to your callback). Default null.
*/
-function add_meta_box($id, $title, $callback, $page, $context = 'advanced', $priority = 'default', $callback_args=null) {
+function add_meta_box( $id, $title, $callback, $screen = null, $context = 'advanced', $priority = 'default', $callback_args = null ) {
global $wp_meta_boxes;
+ if ( empty( $screen ) )
+ $screen = get_current_screen();
+ elseif ( is_string( $screen ) )
+ $screen = convert_to_screen( $screen );
+
+ $page = $screen->id;
+
if ( !isset($wp_meta_boxes) )
$wp_meta_boxes = array();
if ( !isset($wp_meta_boxes[$page]) )
@@ -889,23 +993,30 @@ function add_meta_box($id, $title, $callback, $page, $context = 'advanced', $pri
// If core box previously deleted, don't add
if ( false === $wp_meta_boxes[$page][$a_context][$a_priority][$id] )
return;
- // If box was added with default priority, give it core priority to maintain sort order
+
+ /*
+ * If box was added with default priority, give it core priority to
+ * maintain sort order.
+ */
if ( 'default' == $a_priority ) {
$wp_meta_boxes[$page][$a_context]['core'][$id] = $wp_meta_boxes[$page][$a_context]['default'][$id];
unset($wp_meta_boxes[$page][$a_context]['default'][$id]);
}
return;
}
- // If no priority given and id already present, use existing priority
+ // If no priority given and id already present, use existing priority.
if ( empty($priority) ) {
$priority = $a_priority;
- // else if we're adding to the sorted priortiy, we don't know the title or callback. Glab them from the previously added context/priority.
+ /*
+ * Else, if we're adding to the sorted priority, we don't know the title
+ * or callback. Grab them from the previously added context/priority.
+ */
} elseif ( 'sorted' == $priority ) {
$title = $wp_meta_boxes[$page][$a_context][$a_priority][$id]['title'];
$callback = $wp_meta_boxes[$page][$a_context][$a_priority][$id]['callback'];
$callback_args = $wp_meta_boxes[$page][$a_context][$a_priority][$id]['args'];
}
- // An id can be in only one priority and one context
+ // An id can be in only one priority and one context.
if ( $priority != $a_priority || $context != $a_context )
unset($wp_meta_boxes[$page][$a_context][$a_priority][$id]);
}
@@ -925,43 +1036,55 @@ function add_meta_box($id, $title, $callback, $page, $context = 'advanced', $pri
*
* @since 2.5.0
*
- * @param string $page page identifier, also known as screen identifier
- * @param string $context box context
- * @param mixed $object gets passed to the box callback function as first parameter
+ * @global array $wp_meta_boxes
+ *
+ * @staticvar bool $already_sorted
+ * @param string|WP_Screen $screen Screen identifier
+ * @param string $context box context
+ * @param mixed $object gets passed to the box callback function as first parameter
* @return int number of meta_boxes
*/
-function do_meta_boxes($page, $context, $object) {
+function do_meta_boxes( $screen, $context, $object ) {
global $wp_meta_boxes;
static $already_sorted = false;
- $hidden = get_hidden_meta_boxes($page);
+ if ( empty( $screen ) )
+ $screen = get_current_screen();
+ elseif ( is_string( $screen ) )
+ $screen = convert_to_screen( $screen );
+
+ $page = $screen->id;
+
+ $hidden = get_hidden_meta_boxes( $screen );
printf('
', htmlspecialchars($context));
- $i = 0;
- do {
- // Grab the ones the user has manually sorted. Pull them out of their previous context/priority and into the one the user chose
- if ( !$already_sorted && $sorted = get_user_option( "meta-box-order_$page" ) ) {
- foreach ( $sorted as $box_context => $ids )
- foreach ( explode(',', $ids) as $id )
- if ( $id )
- add_meta_box( $id, null, null, $page, $box_context, 'sorted' );
+ // Grab the ones the user has manually sorted. Pull them out of their previous context/priority and into the one the user chose
+ if ( ! $already_sorted && $sorted = get_user_option( "meta-box-order_$page" ) ) {
+ foreach ( $sorted as $box_context => $ids ) {
+ foreach ( explode( ',', $ids ) as $id ) {
+ if ( $id && 'dashboard_browser_nag' !== $id ) {
+ add_meta_box( $id, null, null, $screen, $box_context, 'sorted' );
+ }
+ }
}
- $already_sorted = true;
+ }
+
+ $already_sorted = true;
- if ( !isset($wp_meta_boxes) || !isset($wp_meta_boxes[$page]) || !isset($wp_meta_boxes[$page][$context]) )
- break;
+ $i = 0;
- foreach ( array('high', 'sorted', 'core', 'default', 'low') as $priority ) {
- if ( isset($wp_meta_boxes[$page][$context][$priority]) ) {
- foreach ( (array) $wp_meta_boxes[$page][$context][$priority] as $box ) {
+ if ( isset( $wp_meta_boxes[ $page ][ $context ] ) ) {
+ foreach ( array( 'high', 'sorted', 'core', 'default', 'low' ) as $priority ) {
+ if ( isset( $wp_meta_boxes[ $page ][ $context ][ $priority ]) ) {
+ foreach ( (array) $wp_meta_boxes[ $page ][ $context ][ $priority ] as $box ) {
if ( false == $box || ! $box['title'] )
continue;
$i++;
- $style = '';
$hidden_class = in_array($box['id'], $hidden) ? ' hide-if-js' : '';
echo '
' . "\n";
- echo '
';
+ if ( 'dashboard_browser_nag' != $box['id'] )
+ echo '
';
echo "
{$box['title']} \n";
echo '
' . "\n";
call_user_func($box['callback'], $object, $box);
@@ -970,7 +1093,7 @@ function do_meta_boxes($page, $context, $object) {
}
}
}
- } while(0);
+ }
echo "
";
@@ -983,13 +1106,22 @@ function do_meta_boxes($page, $context, $object) {
*
* @since 2.6.0
*
- * @param string $id String for use in the 'id' attribute of tags.
- * @param string $page The type of edit page on which to show the box (post, page, link).
- * @param string $context The context within the page where the boxes should show ('normal', 'advanced').
+ * @global array $wp_meta_boxes
+ *
+ * @param string $id String for use in the 'id' attribute of tags.
+ * @param string|object $screen The screen on which to show the box (post, page, link).
+ * @param string $context The context within the page where the boxes should show ('normal', 'advanced').
*/
-function remove_meta_box($id, $page, $context) {
+function remove_meta_box($id, $screen, $context) {
global $wp_meta_boxes;
+ if ( empty( $screen ) )
+ $screen = get_current_screen();
+ elseif ( is_string( $screen ) )
+ $screen = convert_to_screen( $screen );
+
+ $page = $screen->id;
+
if ( !isset($wp_meta_boxes) )
$wp_meta_boxes = array();
if ( !isset($wp_meta_boxes[$page]) )
@@ -1002,64 +1134,77 @@ function remove_meta_box($id, $page, $context) {
}
/**
- * {@internal Missing Short Description}}
+ * Meta Box Accordion Template Function
*
- * @since 2.7.0
+ * Largely made up of abstracted code from {@link do_meta_boxes()}, this
+ * function serves to build meta boxes as list items for display as
+ * a collapsible accordion.
*
- * @param unknown_type $screen
+ * @since 3.6.0
+ *
+ * @uses global $wp_meta_boxes Used to retrieve registered meta boxes.
+ *
+ * @param string|object $screen The screen identifier.
+ * @param string $context The meta box context.
+ * @param mixed $object gets passed to the section callback function as first parameter.
+ * @return int number of meta boxes as accordion sections.
*/
-function meta_box_prefs($screen) {
+function do_accordion_sections( $screen, $context, $object ) {
global $wp_meta_boxes;
- if ( is_string($screen) )
- $screen = convert_to_screen($screen);
+ wp_enqueue_script( 'accordion' );
- if ( empty($wp_meta_boxes[$screen->id]) )
- return;
+ if ( empty( $screen ) )
+ $screen = get_current_screen();
+ elseif ( is_string( $screen ) )
+ $screen = convert_to_screen( $screen );
- $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";
- }
- }
- }
-}
+ $page = $screen->id;
-/**
- * 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_hidden_meta_boxes( $screen );
+ ?>
+
+
+ id}" );
+ if ( isset( $wp_meta_boxes[ $page ][ $context ] ) ) {
+ foreach ( array( 'high', 'core', 'default', 'low' ) as $priority ) {
+ if ( isset( $wp_meta_boxes[ $page ][ $context ][ $priority ] ) ) {
+ foreach ( $wp_meta_boxes[ $page ][ $context ][ $priority ] as $box ) {
+ if ( false == $box || ! $box['title'] )
+ continue;
+ $i++;
+ $hidden_class = in_array( $box['id'], $hidden ) ? 'hide-if-js' : '';
- // 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);
+ $open_class = '';
+ if ( ! $first_open && empty( $hidden_class ) ) {
+ $first_open = true;
+ $open_class = 'open';
+ }
+ ?>
+
+
+
+
+
+
+
+
+
+
+ $id, 'title' => $title, 'callback' => $callback);
}
@@ -1108,19 +1251,32 @@ function add_settings_section($id, $title, $callback, $page) {
* do_settings_fields() in do_settings-sections()
*
* The $callback argument should be the name of a function that echoes out the
- * html input tags for this setting field. Use get_option() to retrive existing
+ * html input tags for this setting field. Use get_option() to retrieve existing
* values to show.
*
* @since 2.7.0
+ * @since 4.2.0 The `$class` argument was added.
*
* @global $wp_settings_fields Storage array of settings fields and info about their pages/sections
*
- * @param string $id Slug-name to identify the field. Used in the 'id' attribute of tags.
- * @param string $title Formatted title of the field. Shown as the label for the field during output.
- * @param string $callback Function that fills the field with the desired form inputs. The function should echo its output.
- * @param string $page The slug-name of the settings page on which to show the section (general, reading, writing, ...).
- * @param string $section The slug-name of the section of the settingss page in which to show the box (default, ...).
- * @param array $args Additional arguments
+ * @param string $id Slug-name to identify the field. Used in the 'id' attribute of tags.
+ * @param string $title Formatted title of the field. Shown as the label for the field
+ * during output.
+ * @param string $callback Function that fills the field with the desired form inputs. The
+ * function should echo its output.
+ * @param string $page The slug-name of the settings page on which to show the section
+ * (general, reading, writing, ...).
+ * @param string $section Optional. The slug-name of the section of the settings page
+ * in which to show the box. Default 'default'.
+ * @param array $args {
+ * Optional. Extra arguments used when outputting the field.
+ *
+ * @type string $label_for When supplied, the setting title will be wrapped
+ * in a `
` element, its `for` attribute populated
+ * with this value.
+ * @type string $class CSS Class to be added to the `` element when the
+ * field is output.
+ * }
*/
function add_settings_field($id, $title, $callback, $page, $section = 'default', $args = array()) {
global $wp_settings_fields;
@@ -1130,12 +1286,10 @@ function add_settings_field($id, $title, $callback, $page, $section = 'default',
$page = 'general';
}
- if ( !isset($wp_settings_fields) )
- $wp_settings_fields = array();
- if ( !isset($wp_settings_fields[$page]) )
- $wp_settings_fields[$page] = array();
- if ( !isset($wp_settings_fields[$page][$section]) )
- $wp_settings_fields[$page][$section] = array();
+ if ( 'privacy' == $page ) {
+ _deprecated_argument( __FUNCTION__, '3.5', __( 'The privacy options group has been removed. Use another settings group.' ) );
+ $page = 'reading';
+ }
$wp_settings_fields[$page][$section][$id] = array('id' => $id, 'title' => $title, 'callback' => $callback, 'args' => $args);
}
@@ -1153,19 +1307,23 @@ function add_settings_field($id, $title, $callback, $page, $section = 'default',
*
* @param string $page The slug name of the page whos settings sections you want to output
*/
-function do_settings_sections($page) {
+function do_settings_sections( $page ) {
global $wp_settings_sections, $wp_settings_fields;
- if ( !isset($wp_settings_sections) || !isset($wp_settings_sections[$page]) )
+ if ( ! isset( $wp_settings_sections[$page] ) )
return;
foreach ( (array) $wp_settings_sections[$page] as $section ) {
- echo "{$section['title']} \n";
- call_user_func($section['callback'], $section);
- if ( !isset($wp_settings_fields) || !isset($wp_settings_fields[$page]) || !isset($wp_settings_fields[$page][$section['id']]) )
+ if ( $section['title'] )
+ echo "{$section['title']} \n";
+
+ if ( $section['callback'] )
+ call_user_func( $section['callback'], $section );
+
+ if ( ! isset( $wp_settings_fields ) || !isset( $wp_settings_fields[$page] ) || !isset( $wp_settings_fields[$page][$section['id']] ) )
continue;
echo '';
}
}
@@ -1182,20 +1340,29 @@ function do_settings_sections($page) {
* @since 2.7.0
*
* @param string $page Slug title of the admin page who's settings fields you want to show.
- * @param section $section Slug title of the settings section who's fields you want to show.
+ * @param string $section Slug title of the settings section who's fields you want to show.
*/
function do_settings_fields($page, $section) {
global $wp_settings_fields;
- if ( !isset($wp_settings_fields) || !isset($wp_settings_fields[$page]) || !isset($wp_settings_fields[$page][$section]) )
+ if ( ! isset( $wp_settings_fields[$page][$section] ) )
return;
foreach ( (array) $wp_settings_fields[$page][$section] as $field ) {
- echo ' ';
- if ( !empty($field['args']['label_for']) )
- echo '' . $field['title'] . ' ';
- else
+ $class = '';
+
+ if ( ! empty( $field['args']['class'] ) ) {
+ $class = ' class="' . esc_attr( $field['args']['class'] ) . '"';
+ }
+
+ echo " ";
+
+ if ( ! empty( $field['args']['label_for'] ) ) {
+ echo '' . $field['title'] . ' ';
+ } else {
echo '' . $field['title'] . ' ';
+ }
+
echo '';
call_user_func($field['callback'], $field['args']);
echo ' ';
@@ -1221,23 +1388,21 @@ function do_settings_fields($page, $section) {
* @global array $wp_settings_errors Storage array of errors registered during this pageload
*
* @param string $setting Slug title of the setting to which this error applies
- * @param string $code Slug-name to identify the error. Used as part of 'id' attribute in HTML output.
- * @param string $message The formatted message text to display to the user (will be shown inside styled and
)
- * @param string $type The type of message it is, controls HTML class. Use 'error' or 'updated'.
+ * @param string $code Slug-name to identify the error. Used as part of 'id' attribute in HTML output.
+ * @param string $message The formatted message text to display to the user (will be shown inside styled
+ * `
` and `
` tags).
+ * @param string $type Optional. Message type, controls HTML class. Accepts 'error' or 'updated'.
+ * Default 'error'.
*/
function add_settings_error( $setting, $code, $message, $type = 'error' ) {
global $wp_settings_errors;
- if ( !isset($wp_settings_errors) )
- $wp_settings_errors = array();
-
- $new_error = array(
+ $wp_settings_errors[] = array(
'setting' => $setting,
- 'code' => $code,
+ 'code' => $code,
'message' => $message,
- 'type' => $type
+ 'type' => $type
);
- $wp_settings_errors[] = $new_error;
}
/**
@@ -1262,70 +1427,80 @@ function add_settings_error( $setting, $code, $message, $type = 'error' ) {
* @param boolean $sanitize Whether to re-sanitize the setting value before returning errors.
* @return array Array of settings errors
*/
-function get_settings_errors( $setting = '', $sanitize = FALSE ) {
+function get_settings_errors( $setting = '', $sanitize = false ) {
global $wp_settings_errors;
- // If $sanitize is true, manually re-run the sanitizisation for this option
- // This allows the $sanitize_callback from register_setting() to run, adding
- // any settings errors you want to show by default.
+ /*
+ * If $sanitize is true, manually re-run the sanitization for this option
+ * This allows the $sanitize_callback from register_setting() to run, adding
+ * any settings errors you want to show by default.
+ */
if ( $sanitize )
- sanitize_option( $setting, get_option($setting));
-
- // If settings were passed back from options.php then use them
- // Ignore transients if $sanitize is true, we dont' want the old values anyway
- if ( isset($_GET['settings-updated']) && $_GET['settings-updated'] && get_transient('settings_errors') ) {
- $settings_errors = get_transient('settings_errors');
- delete_transient('settings_errors');
- // Otherwise check global in case validation has been run on this pageload
- } elseif ( count( $wp_settings_errors ) ) {
- $settings_errors = $wp_settings_errors;
- } else {
- return;
+ sanitize_option( $setting, get_option( $setting ) );
+
+ // If settings were passed back from options.php then use them.
+ if ( isset( $_GET['settings-updated'] ) && $_GET['settings-updated'] && get_transient( 'settings_errors' ) ) {
+ $wp_settings_errors = array_merge( (array) $wp_settings_errors, get_transient( 'settings_errors' ) );
+ delete_transient( 'settings_errors' );
}
- // Filter the results to those of a specific setting if one was set
+ // Check global in case errors have been added on this pageload.
+ if ( ! count( $wp_settings_errors ) )
+ return array();
+
+ // Filter the results to those of a specific setting if one was set.
if ( $setting ) {
- foreach ( (array) $settings_errors as $key => $details )
- if ( $setting != $details['setting'] )
- unset( $settings_errors[$key] );
+ $setting_errors = array();
+ foreach ( (array) $wp_settings_errors as $key => $details ) {
+ if ( $setting == $details['setting'] )
+ $setting_errors[] = $wp_settings_errors[$key];
+ }
+ return $setting_errors;
}
- return $settings_errors;
+
+ return $wp_settings_errors;
}
/**
- * Display settings errors registered by add_settings_error()
+ * Display settings errors registered by {@see add_settings_error()}.
*
- * Part of the Settings API. Outputs a
for each error retrieved by get_settings_errors().
+ * Part of the Settings API. Outputs a div for each error retrieved by
+ * {@see get_settings_errors()}.
*
- * This is called automatically after a settings page based on the Settings API is submitted.
- * Errors should be added during the validation callback function for a setting defined in register_setting()
+ * This is called automatically after a settings page based on the
+ * Settings API is submitted. Errors should be added during the validation
+ * callback function for a setting defined in {@see register_setting()}
*
- * The $sanitize option is passed into get_settings_errors() and will re-run the setting sanitization
+ * The $sanitize option is passed into {@see get_settings_errors()} and will
+ * re-run the setting sanitization
* on its current value.
*
- * The $hide_on_update option will cause errors to only show when the settings page is first loaded.
- * if the user has already saved new values it will be hidden to avoid repeating messages already
- * shown in the default error reporting after submission. This is useful to show general errors like missing
- * settings when the user arrives at the settings page.
+ * The $hide_on_update option will cause errors to only show when the settings
+ * page is first loaded. if the user has already saved new values it will be
+ * hidden to avoid repeating messages already shown in the default error
+ * reporting after submission. This is useful to show general errors like
+ * missing settings when the user arrives at the settings page.
*
* @since 3.0.0
*
- * @param string $setting Optional slug title of a specific setting who's errors you want.
- * @param boolean $sanitize Whether to re-sanitize the setting value before returning errors.
- * @param boolean $hide_on_update If set to true errors will not be shown if the settings page has already been submitted.
+ * @param string $setting Optional slug title of a specific setting who's errors you want.
+ * @param bool $sanitize Whether to re-sanitize the setting value before returning errors.
+ * @param bool $hide_on_update If set to true errors will not be shown if the settings page has already been submitted.
*/
-function settings_errors( $setting = '', $sanitize = FALSE, $hide_on_update = FALSE ) {
+function settings_errors( $setting = '', $sanitize = false, $hide_on_update = false ) {
- if ($hide_on_update AND $_GET['settings-updated']) return;
+ if ( $hide_on_update && ! empty( $_GET['settings-updated'] ) )
+ return;
$settings_errors = get_settings_errors( $setting, $sanitize );
- if ( !is_array($settings_errors) ) return;
+ if ( empty( $settings_errors ) )
+ return;
$output = '';
foreach ( $settings_errors as $key => $details ) {
$css_id = 'setting-error-' . $details['code'];
- $css_class = $details['type'] . ' settings-error';
+ $css_class = $details['type'] . ' settings-error notice is-dismissible';
$output .= "
\n";
$output .= "
{$details['message']}
";
$output .= "
\n";
@@ -1338,40 +1513,33 @@ function settings_errors( $setting = '', $sanitize = FALSE, $hide_on_update = FA
*
* @since 2.7.0
*
- * @param unknown_type $found_action
+ * @param string $found_action
*/
function find_posts_div($found_action = '') {
?>
-
-
+
post_password ) ) echo esc_attr( $post->post_password );
+ $post = get_post();
+ if ( isset( $post->post_password ) )
+ echo esc_attr( $post->post_password );
}
/**
- * {@internal Missing Short Description}}
+ * Get the post title.
+ *
+ * The post title is fetched and if it is blank then a default string is
+ * returned.
*
* @since 2.7.0
+ *
+ * @param int|WP_Post $post Optional. Post ID or WP_Post object. Default is global $post.
+ * @return string The post title if set.
*/
-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.
- *
- * The post title is fetched and if it is blank then a default string is
- * returned.
- *
- * @since 2.7.0
- * @param int $post_id The post id. If not supplied the global $post is used.
- * @return string The post title if set
- */
-function _draft_or_post_title( $post_id = 0 ) {
- $title = get_the_title($post_id);
- if ( empty($title) )
- $title = __('(no title)');
- return $title;
-}
+function _draft_or_post_title( $post = 0 ) {
+ $title = get_the_title( $post );
+ if ( empty( $title ) )
+ $title = __( '(no title)' );
+ return esc_html( $title );
+}
/**
* Display the search query.
@@ -1526,76 +1583,93 @@ function _draft_or_post_title( $post_id = 0 ) {
* A simple wrapper to display the "s" parameter in a GET URI. This function
* should only be used when {@link the_search_query()} cannot.
*
- * @uses attr
* @since 2.7.0
- *
*/
function _admin_search_query() {
- echo isset($_REQUEST['s']) ? esc_attr( stripslashes( $_REQUEST['s'] ) ) : '';
+ echo isset($_REQUEST['s']) ? esc_attr( wp_unslash( $_REQUEST['s'] ) ) : '';
}
/**
* Generic Iframe header for use with Thickbox
*
* @since 2.7.0
- * @param string $title Title of the Iframe page.
- * @param bool $limit_styles Limit styles to colour-related styles only (unless others are enqueued).
*
+ * @global string $hook_suffix
+ * @global string $admin_body_class
+ * @global WP_Locale $wp_locale
+ *
+ * @param string $title Optional. Title of the Iframe page. Default empty.
+ * @param bool $deprecated Not used.
*/
-function iframe_header( $title = '', $limit_styles = false ) {
+function iframe_header( $title = '', $deprecated = false ) {
show_admin_bar( false );
- global $hook_suffix, $current_screen, $current_user, $admin_body_class, $wp_locale;
+ global $hook_suffix, $admin_body_class, $wp_locale;
$admin_body_class = preg_replace('/[^a-z0-9_-]+/i', '-', $hook_suffix);
- $admin_body_class .= ' iframe';
-?>
- >
-
-
+ $current_screen = get_current_screen();
+
+ @header( 'Content-Type: ' . get_option( 'html_type' ) . '; charset=' . get_option( 'blog_charset' ) );
+ _wp_admin_html_begin();
+?>
› —
- class="no-js ">
+
+ class="wp-admin wp-core-ui no-js iframe ">
+ /*
+ * We're going to hide any footer output on iFrame pages,
+ * but run the hooks anyway since they output JavaScript
+ * or other needed content.
+ */
+ ?>
+ /** This action is documented in wp-admin/admin-footer.php */
+ do_action( 'admin_footer', '' );
+
+ /** This action is documented in wp-admin/admin-footer.php */
+ do_action( 'admin_print_footer_scripts' );
+?>
@@ -1619,26 +1701,50 @@ function iframe_footer() {
post_password) )
- $post_states[] = __('Password protected');
+ $post_states['protected'] = __('Password protected');
if ( 'private' == $post->post_status && 'private' != $post_status )
- $post_states[] = __('Private');
+ $post_states['private'] = __('Private');
if ( 'draft' == $post->post_status && 'draft' != $post_status )
- $post_states[] = __('Draft');
+ $post_states['draft'] = __('Draft');
if ( 'pending' == $post->post_status && 'pending' != $post_status )
/* translators: post state */
- $post_states[] = _x('Pending', 'post state');
+ $post_states['pending'] = _x('Pending', 'post state');
if ( is_sticky($post->ID) )
- $post_states[] = __('Sticky');
+ $post_states['sticky'] = __('Sticky');
+
+ if ( 'future' === $post->post_status ) {
+ $post_states['scheduled'] = __( 'Scheduled' );
+ }
- $post_states = apply_filters( 'display_post_states', $post_states );
+ if ( get_option( 'page_on_front' ) == $post->ID ) {
+ $post_states['page_on_front'] = __( 'Front Page' );
+ }
+
+ if ( get_option( 'page_for_posts' ) == $post->ID ) {
+ $post_states['page_for_posts'] = __( 'Posts Page' );
+ }
+
+ /**
+ * Filter the default post display states used in the posts list table.
+ *
+ * @since 2.8.0
+ *
+ * @param array $post_states An array of post display states.
+ * @param int $post The post ID.
+ */
+ $post_states = apply_filters( 'display_post_states', $post_states, $post );
if ( ! empty($post_states) ) {
$state_count = count($post_states);
@@ -1651,308 +1757,52 @@ function _post_states($post) {
}
}
- if ( get_post_format( $post->ID ) )
- echo ' -
' . get_post_format_string( get_post_format( $post->ID ) ) . ' ';
-}
-
-/**
- * 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;
-
-?>
-
-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 '';
+function _media_states( $post ) {
+ $media_states = array();
+ $stylesheet = get_option('stylesheet');
+
+ if ( current_theme_supports( 'custom-header') ) {
+ $meta_header = get_post_meta($post->ID, '_wp_attachment_is_custom_header', true );
+ if ( ! empty( $meta_header ) && $meta_header == $stylesheet )
+ $media_states[] = __( 'Header Image' );
}
- $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 = 2;
+ if ( current_theme_supports( 'custom-background') ) {
+ $meta_background = get_post_meta($post->ID, '_wp_attachment_is_custom_background', true );
+ if ( ! empty( $meta_background ) && $meta_background == $stylesheet )
+ $media_states[] = __( 'Background Image' );
}
- $i = 1;
- $return = '
' . __('Screen Layout') . " \n
" . __('Number of Columns:') . "\n";
- while ( $i <= $num ) {
- $return .= " $i \n";
- ++$i;
+ if ( $post->ID == get_option( 'site_icon' ) ) {
+ $media_states[] = __( 'Site Icon' );
}
- $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 = '') {
- 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 );
+ /**
+ * Filter the default media display states for items in the Media list table.
+ *
+ * @since 3.2.0
+ *
+ * @param array $media_states An array of media states. Default 'Header Image',
+ * 'Background Image', 'Site Icon'.
+ */
+ $media_states = apply_filters( 'display_media_states', $media_states );
+
+ if ( ! empty( $media_states ) ) {
+ $state_count = count( $media_states );
+ $i = 0;
+ echo ' - ';
+ foreach ( $media_states as $state ) {
+ ++$i;
+ ( $i == $state_count ) ? $sep = '' : $sep = ', ';
+ echo "
$state$sep ";
+ }
}
-
-?>
-
-
$current_screen, 'base' => $current_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 = '';
- }
- }
- $current_screen = array('id' => $id, 'base' => $id);
- }
-
- $current_screen = (object) $current_screen;
-
- $current_screen->action = $action;
-
- // Map index to dashboard
- if ( 'index' == $current_screen->base )
- $current_screen->base = 'dashboard';
- if ( 'index' == $current_screen->id )
- $current_screen->id = 'dashboard';
-
- if ( 'edit' == $current_screen->id ) {
- if ( empty($typenow) )
- $typenow = 'post';
- $current_screen->id .= '-' . $typenow;
- $current_screen->post_type = $typenow;
- } elseif ( 'post' == $current_screen->id ) {
- if ( empty($typenow) )
- $typenow = 'post';
- $current_screen->id = $typenow;
- $current_screen->post_type = $typenow;
- } elseif ( 'edit-tags' == $current_screen->id ) {
- if ( empty($taxnow) )
- $taxnow = 'post_tag';
- $current_screen->id = 'edit-' . $taxnow;
- $current_screen->taxonomy = $taxnow;
- }
-
- $current_screen->is_network = is_network_admin();
- $current_screen->is_user = is_user_admin();
-
- if ( $current_screen->is_network ) {
- $current_screen->base .= '-network';
- $current_screen->id .= '-network';
- } elseif ( $current_screen->is_user ) {
- $current_screen->base .= '-user';
- $current_screen->id .= '-user';
- }
-
- $current_screen = apply_filters('current_screen', $current_screen);
-}
-
-/**
- * Echos a submit button, with provided text and appropriate class
+ * Echoes a submit button, with provided text and appropriate class(es).
*
* @since 3.1.0
*
- * @param string $text The text of the button (defaults to 'Save Changes')
- * @param string $type The type of button. One of: primary, secondary, delete
- * @param string $name The HTML name of the submit button. Defaults to "submit". If no id attribute
- * is given in $other_attributes below, $name will be used as the button's id.
- * @param bool $wrap True if the output button should be wrapped in a paragraph tag,
- * false otherwise. Defaults to true
- * @param array|string $other_attributes Other attributes that should be output with the button,
- * mapping attributes to their values, such as array( 'tabindex' => '1' ).
- * These attributes will be ouput as attribute="value", such as tabindex="1".
- * Defaults to no other attributes. Other attributes can also be provided as a
- * string such as 'tabindex="1"', though the array format is typically cleaner.
+ * @see get_submit_button()
+ *
+ * @param string $text The text of the button (defaults to 'Save Changes')
+ * @param string $type Optional. The type and CSS class(es) of the button. Core values
+ * include 'primary', 'secondary', 'delete'. Default 'primary'
+ * @param string $name The HTML name of the submit button. Defaults to "submit". If no
+ * id attribute is given in $other_attributes below, $name will be
+ * used as the button's id.
+ * @param bool $wrap True if the output button should be wrapped in a paragraph tag,
+ * false otherwise. Defaults to true
+ * @param array|string $other_attributes Other attributes that should be output with the button, mapping
+ * attributes to their values, such as setting tabindex to 1, etc.
+ * These key/value attribute pairs will be output as attribute="value",
+ * where attribute is the key. Other attributes can also be provided
+ * as a string such as 'tabindex="1"', though the array format is
+ * preferred. Default null.
*/
-function submit_button( $text = NULL, $type = 'primary', $name = 'submit', $wrap = true, $other_attributes = NULL ) {
+function submit_button( $text = null, $type = 'primary', $name = 'submit', $wrap = true, $other_attributes = null ) {
echo get_submit_button( $text, $type, $name, $wrap, $other_attributes );
}
@@ -2138,31 +1899,39 @@ function submit_button( $text = NULL, $type = 'primary', $name = 'submit', $wrap
*
* @since 3.1.0
*
- * @param string $text The text of the button (defaults to 'Save Changes')
- * @param string $type The type of button. One of: primary, secondary, delete
- * @param string $name The HTML name of the submit button. Defaults to "submit". If no id attribute
- * is given in $other_attributes below, $name will be used as the button's id.
- * @param bool $wrap True if the output button should be wrapped in a paragraph tag,
- * false otherwise. Defaults to true
- * @param array|string $other_attributes Other attributes that should be output with the button,
- * mapping attributes to their values, such as array( 'tabindex' => '1' ).
- * These attributes will be ouput as attribute="value", such as tabindex="1".
- * Defaults to no other attributes. Other attributes can also be provided as a
- * string such as 'tabindex="1"', though the array format is typically cleaner.
+ * @param string $text Optional. The text of the button. Default 'Save Changes'.
+ * @param string $type Optional. The type of button. Accepts 'primary', 'secondary',
+ * or 'delete'. Default 'primary large'.
+ * @param string $name Optional. The HTML name of the submit button. Defaults to "submit".
+ * If no id attribute is given in $other_attributes below, `$name` will
+ * be used as the button's id. Default 'submit'.
+ * @param bool $wrap Optional. True if the output button should be wrapped in a paragraph
+ * tag, false otherwise. Default true.
+ * @param array|string $other_attributes Optional. Other attributes that should be output with the button,
+ * mapping attributes to their values, such as `array( 'tabindex' => '1' )`.
+ * These attributes will be output as `attribute="value"`, such as
+ * `tabindex="1"`. Other attributes can also be provided as a string such
+ * as `tabindex="1"`, though the array format is typically cleaner.
+ * Default empty.
+ * @return string Submit button HTML.
*/
-function get_submit_button( $text = NULL, $type = 'primary', $name = 'submit', $wrap = true, $other_attributes = NULL ) {
- switch ( $type ) :
- case 'primary' :
- case 'secondary' :
- $class = 'button-' . $type;
- break;
- case 'delete' :
- $class = 'button-secondary delete';
- break;
- default :
- $class = $type; // Custom cases can just pass in the classes they want to be used
- endswitch;
- $text = ( NULL == $text ) ? __( 'Save Changes' ) : $text;
+function get_submit_button( $text = '', $type = 'primary large', $name = 'submit', $wrap = true, $other_attributes = '' ) {
+ if ( ! is_array( $type ) )
+ $type = explode( ' ', $type );
+
+ $button_shorthand = array( 'primary', 'small', 'large' );
+ $classes = array( 'button' );
+ foreach ( $type as $t ) {
+ if ( 'secondary' === $t || 'button-secondary' === $t )
+ continue;
+ $classes[] = in_array( $t, $button_shorthand ) ? 'button-' . $t : $t;
+ }
+ $class = implode( ' ', array_unique( $classes ) );
+
+ if ( 'delete' === $type )
+ $class = 'button-secondary delete';
+
+ $text = $text ? $text : __( 'Save Changes' );
// Default the id attribute to $name unless an id was specifically provided in $other_attributes
$id = $name;
@@ -2176,11 +1945,15 @@ function get_submit_button( $text = NULL, $type = 'primary', $name = 'submit', $
foreach ( $other_attributes as $attribute => $value ) {
$attributes .= $attribute . '="' . esc_attr( $value ) . '" '; // Trailing space is important
}
- } else if ( !empty( $other_attributes ) ) { // Attributes provided as a string
+ } elseif ( ! empty( $other_attributes ) ) { // Attributes provided as a string
$attributes = $other_attributes;
}
- $button = '
';
if ( $wrap ) {
@@ -2190,3 +1963,294 @@ function get_submit_button( $text = NULL, $type = 'primary', $name = 'submit', $
return $button;
}
+/**
+ *
+ * @global bool $is_IE
+ */
+function _wp_admin_html_begin() {
+ global $is_IE;
+
+ $admin_html_class = ( is_admin_bar_showing() ) ? 'wp-toolbar' : '';
+
+ if ( $is_IE )
+ @header('X-UA-Compatible: IE=edge');
+
+?>
+
+
+
+ >
+
+
+
+ pointer callback
+ * )
+ *
+ * Example:
+ * array(
+ * 'themes.php' => 'wp390_widgets'
+ * )
+ */
+ $registered_pointers = array(
+ // None currently
+ );
+
+ // Check if screen related pointer is registered
+ if ( empty( $registered_pointers[ $hook_suffix ] ) )
+ return;
+
+ $pointers = (array) $registered_pointers[ $hook_suffix ];
+
+ /*
+ * Specify required capabilities for feature pointers
+ *
+ * Format:
+ * array(
+ * pointer callback => Array of required capabilities
+ * )
+ *
+ * Example:
+ * array(
+ * 'wp390_widgets' => array( 'edit_theme_options' )
+ * )
+ */
+ $caps_required = array(
+ // None currently
+ );
+
+ // Get dismissed pointers
+ $dismissed = explode( ',', (string) get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) );
+
+ $got_pointers = false;
+ foreach ( array_diff( $pointers, $dismissed ) as $pointer ) {
+ if ( isset( $caps_required[ $pointer ] ) ) {
+ foreach ( $caps_required[ $pointer ] as $cap ) {
+ if ( ! current_user_can( $cap ) )
+ continue 2;
+ }
+ }
+
+ // Bind pointer print function
+ add_action( 'admin_print_footer_scripts', array( 'WP_Internal_Pointers', 'pointer_' . $pointer ) );
+ $got_pointers = true;
+ }
+
+ if ( ! $got_pointers )
+ return;
+
+ // Add pointers script and style to queue
+ wp_enqueue_style( 'wp-pointer' );
+ wp_enqueue_script( 'wp-pointer' );
+ }
+
+ /**
+ * Print the pointer JavaScript data.
+ *
+ * @since 3.3.0
+ *
+ * @static
+ *
+ * @param string $pointer_id The pointer ID.
+ * @param string $selector The HTML elements, on which the pointer should be attached.
+ * @param array $args Arguments to be passed to the pointer JS (see wp-pointer.js).
+ */
+ private static function print_js( $pointer_id, $selector, $args ) {
+ if ( empty( $pointer_id ) || empty( $selector ) || empty( $args ) || empty( $args['content'] ) )
+ return;
+
+ ?>
+
+ '_invalid', 'base' => '_are_belong_to_us' );
+ }
+
+ return WP_Screen::get( $hook_name );
+}
+
+/**
+ * Output the HTML for restoring the post data from DOM storage
+ *
+ * @since 3.6.0
+ * @access private
+ */
+function _local_storage_notice() {
+ ?>
+
+ 0,
+ 'type' => 'rating',
+ 'number' => 0,
+ );
+ $r = wp_parse_args( $args, $defaults );
+
+ // Non-english decimal places when the $rating is coming from a string
+ $rating = str_replace( ',', '.', $r['rating'] );
+
+ // Convert Percentage to star rating, 0..5 in .5 increments
+ if ( 'percent' == $r['type'] ) {
+ $rating = round( $rating / 10, 0 ) / 2;
+ }
+
+ // Calculate the number of each type of star needed
+ $full_stars = floor( $rating );
+ $half_stars = ceil( $rating - $full_stars );
+ $empty_stars = 5 - $full_stars - $half_stars;
+
+ if ( $r['number'] ) {
+ /* translators: 1: The rating, 2: The number of ratings */
+ $format = _n( '%1$s rating based on %2$s rating', '%1$s rating based on %2$s ratings', $r['number'] );
+ $title = sprintf( $format, number_format_i18n( $rating, 1 ), number_format_i18n( $r['number'] ) );
+ } else {
+ /* translators: 1: The rating */
+ $title = sprintf( __( '%s rating' ), number_format_i18n( $rating, 1 ) );
+ }
+
+ echo '
';
+ echo '
' . $title . ' ';
+ echo str_repeat( '
', $full_stars );
+ echo str_repeat( '
', $half_stars );
+ echo str_repeat( '
', $empty_stars);
+ echo '
';
+}
+
+/**
+ * Output a notice when editing the page for posts (internal use only).
+ *
+ * @ignore
+ * @since 4.2.0
+ */
+function _wp_posts_page_notice() {
+ echo '
' . __( 'You are currently editing the page that shows your latest posts.' ) . '
';
+}