2007-05-25 09:16:21 +02:00
< ? php
2008-10-02 03:03:26 +02:00
/**
* Template WordPress Administration API .
*
* A Big Mess . Also some neat functions that are nicely written .
*
* @ package WordPress
* @ subpackage Administration
*/
2007-05-25 09:16:21 +02:00
2007-10-31 04:53:32 +01:00
2007-05-25 09:16:21 +02:00
//
2008-04-18 19:41:10 +02:00
// Category Checklists
2007-05-25 09:16:21 +02:00
//
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
2010-12-01 20:24:38 +01:00
* @ since 2.5 . 1
2008-10-02 03:03:26 +02:00
*/
2010-08-11 23:54:51 +02:00
class Walker_Category_Checklist extends Walker {
var $tree_type = 'category' ;
var $db_fields = array ( 'parent' => 'parent' , 'id' => 'term_id' ); //TODO: decouple this
2008-06-15 02:45:01 +02:00
2010-08-11 23:54:51 +02:00
function start_lvl ( & $output , $depth , $args ) {
$indent = str_repeat ( " \t " , $depth );
$output .= " $indent <ul class='children'> \n " ;
2008-06-15 02:45:01 +02:00
}
2010-08-11 23:54:51 +02:00
function end_lvl ( & $output , $depth , $args ) {
$indent = str_repeat ( " \t " , $depth );
$output .= " $indent </ul> \n " ;
}
2008-02-05 07:47:27 +01:00
2010-08-11 23:54:51 +02:00
function start_el ( & $output , $category , $depth , $args ) {
extract ( $args );
if ( empty ( $taxonomy ) )
$taxonomy = 'category' ;
2008-06-15 02:45:01 +02:00
2010-08-11 23:54:51 +02:00
if ( $taxonomy == 'category' )
$name = 'post_category' ;
else
$name = 'tax_input[' . $taxonomy . ']' ;
2008-02-05 07:47:27 +01:00
2010-08-11 23:54:51 +02:00
$class = in_array ( $category -> term_id , $popular_cats ) ? ' class="popular-category"' : '' ;
$output .= " \n <li id=' { $taxonomy } - { $category -> term_id } ' $class > " . '<label class="selectit"><input value="' . $category -> term_id . '" type="checkbox" name="' . $name . '[]" id="in-' . $taxonomy . '-' . $category -> term_id . '"' . checked ( in_array ( $category -> term_id , $selected_cats ), true , false ) . disabled ( empty ( $args [ 'disabled' ] ), false , false ) . ' /> ' . esc_html ( apply_filters ( 'the_category' , $category -> name )) . '</label>' ;
2007-12-14 07:20:42 +01:00
}
2008-08-09 07:36:14 +02:00
2010-08-11 23:54:51 +02:00
function end_el ( & $output , $category , $depth , $args ) {
$output .= " </li> \n " ;
2008-07-12 17:40:57 +02:00
}
2008-06-15 02:45:01 +02:00
}
2010-05-24 23:28:07 +02:00
/**
2010-08-11 23:54:51 +02:00
* { @ internal Missing Short Description }}
2008-10-02 03:03:26 +02:00
*
2010-12-01 20:24:38 +01:00
* @ since 2.5 . 1
2008-10-02 03:03:26 +02:00
*
2010-08-11 23:54:51 +02:00
* @ param unknown_type $post_id
* @ param unknown_type $descendants_and_self
* @ param unknown_type $selected_cats
* @ param unknown_type $popular_cats
2008-10-02 03:03:26 +02:00
*/
2010-08-11 23:54:51 +02:00
function wp_category_checklist ( $post_id = 0 , $descendants_and_self = 0 , $selected_cats = false , $popular_cats = false , $walker = null , $checked_ontop = true ) {
wp_terms_checklist ( $post_id ,
array (
'taxonomy' => 'category' ,
'descendants_and_self' => $descendants_and_self ,
'selected_cats' => $selected_cats ,
'popular_cats' => $popular_cats ,
'walker' => $walker ,
'checked_ontop' => $checked_ontop
));
}
2008-08-09 07:36:14 +02:00
2010-08-11 23:54:51 +02:00
/**
* Taxonomy independent version of wp_category_checklist
*
2010-12-01 20:24:38 +01:00
* @ since 3.0 . 0
*
2010-08-11 23:54:51 +02:00
* @ param int $post_id
* @ param array $args
*/
function wp_terms_checklist ( $post_id = 0 , $args = array ()) {
$defaults = array (
'descendants_and_self' => 0 ,
'selected_cats' => false ,
'popular_cats' => false ,
'walker' => null ,
'taxonomy' => 'category' ,
'checked_ontop' => true
);
extract ( wp_parse_args ( $args , $defaults ), EXTR_SKIP );
2008-08-09 07:36:14 +02:00
2010-08-11 23:54:51 +02:00
if ( empty ( $walker ) || ! is_a ( $walker , 'Walker' ) )
$walker = new Walker_Category_Checklist ;
2008-08-09 07:36:14 +02:00
2010-08-11 23:54:51 +02:00
$descendants_and_self = ( int ) $descendants_and_self ;
2008-08-09 07:36:14 +02:00
2010-08-11 23:54:51 +02:00
$args = array ( 'taxonomy' => $taxonomy );
2008-08-09 07:36:14 +02:00
2010-08-11 23:54:51 +02:00
$tax = get_taxonomy ( $taxonomy );
$args [ 'disabled' ] = ! current_user_can ( $tax -> cap -> assign_terms );
2008-06-15 02:45:01 +02:00
2010-08-11 23:54:51 +02:00
if ( is_array ( $selected_cats ) )
$args [ 'selected_cats' ] = $selected_cats ;
elseif ( $post_id )
$args [ 'selected_cats' ] = wp_get_object_terms ( $post_id , $taxonomy , array_merge ( $args , array ( 'fields' => 'ids' )));
else
$args [ 'selected_cats' ] = array ();
2008-08-09 07:36:14 +02:00
2010-08-11 23:54:51 +02:00
if ( is_array ( $popular_cats ) )
$args [ 'popular_cats' ] = $popular_cats ;
else
$args [ 'popular_cats' ] = get_terms ( $taxonomy , array ( 'fields' => 'ids' , 'orderby' => 'count' , 'order' => 'DESC' , 'number' => 10 , 'hierarchical' => false ) );
2008-06-15 02:45:01 +02:00
2010-08-11 23:54:51 +02:00
if ( $descendants_and_self ) {
$categories = ( array ) get_terms ( $taxonomy , array ( 'child_of' => $descendants_and_self , 'hierarchical' => 0 , 'hide_empty' => 0 ) );
$self = get_term ( $descendants_and_self , $taxonomy );
array_unshift ( $categories , $self );
} else {
$categories = ( array ) get_terms ( $taxonomy , array ( 'get' => 'all' ));
2008-06-15 02:45:01 +02:00
}
2008-08-09 07:36:14 +02:00
2010-08-11 23:54:51 +02:00
if ( $checked_ontop ) {
// Post process $categories rather than adding an exclude to the get_terms() query to keep the query the same across all posts (for any query cache)
$checked_categories = array ();
$keys = array_keys ( $categories );
foreach ( $keys as $k ) {
if ( in_array ( $categories [ $k ] -> term_id , $args [ 'selected_cats' ] ) ) {
$checked_categories [] = $categories [ $k ];
unset ( $categories [ $k ] );
}
}
// Put checked cats on top
echo call_user_func_array ( array ( & $walker , 'walk' ), array ( $checked_categories , 0 , $args ));
}
// Then the rest of them
echo call_user_func_array ( array ( & $walker , 'walk' ), array ( $categories , 0 , $args ));
2007-12-14 07:20:42 +01:00
}
2008-10-02 03:03:26 +02:00
/**
2010-08-11 23:54:51 +02:00
* { @ internal Missing Short Description }}
2008-10-02 03:03:26 +02:00
*
2010-12-01 20:24:38 +01:00
* @ since 2.5 . 0
2008-10-02 03:03:26 +02:00
*
2010-08-11 23:54:51 +02:00
* @ param unknown_type $taxonomy
* @ param unknown_type $default
* @ param unknown_type $number
* @ param unknown_type $echo
* @ return unknown
2008-10-02 03:03:26 +02:00
*/
2010-08-11 23:54:51 +02:00
function wp_popular_terms_checklist ( $taxonomy , $default = 0 , $number = 10 , $echo = true ) {
global $post_ID ;
2009-02-01 10:45:24 +01:00
2010-08-11 23:54:51 +02:00
if ( $post_ID )
$checked_terms = wp_get_object_terms ( $post_ID , $taxonomy , array ( 'fields' => 'ids' ));
else
$checked_terms = array ();
2010-04-22 21:48:13 +02:00
2010-08-11 23:54:51 +02:00
$terms = get_terms ( $taxonomy , array ( 'orderby' => 'count' , 'order' => 'DESC' , 'number' => $number , 'hierarchical' => false ) );
2010-04-23 00:53:44 +02:00
2010-08-11 23:54:51 +02:00
$tax = get_taxonomy ( $taxonomy );
if ( ! current_user_can ( $tax -> cap -> assign_terms ) )
$disabled = 'disabled="disabled"' ;
else
$disabled = '' ;
2009-02-01 10:45:24 +01:00
2010-08-11 23:54:51 +02:00
$popular_ids = array ();
foreach ( ( array ) $terms as $term ) {
$popular_ids [] = $term -> term_id ;
if ( ! $echo ) // hack for AJAX use
continue ;
$id = " popular- $taxonomy - $term->term_id " ;
$checked = in_array ( $term -> term_id , $checked_terms ) ? 'checked="checked"' : '' ;
?>
2009-02-01 10:45:24 +01:00
2010-08-11 23:54:51 +02:00
< li id = " <?php echo $id ; ?> " class = " popular-category " >
< label class = " selectit " >
< input id = " in-<?php echo $id ; ?> " type = " checkbox " < ? php echo $checked ; ?> value="<?php echo (int) $term->term_id; ?>" <?php echo $disabled ?>/>
< ? php echo esc_html ( apply_filters ( 'the_category' , $term -> name ) ); ?>
</ label >
</ li >
2008-09-19 07:31:00 +02:00
2010-08-11 23:54:51 +02:00
< ? php
2007-05-25 09:16:21 +02:00
}
2010-08-11 23:54:51 +02:00
return $popular_ids ;
2007-05-25 09:16:21 +02:00
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
2010-12-01 20:24:38 +01:00
* @ since 2.5 . 1
2008-10-02 03:03:26 +02:00
*
2010-08-11 23:54:51 +02:00
* @ param unknown_type $link_id
2008-10-02 03:03:26 +02:00
*/
2010-08-11 23:54:51 +02:00
function wp_link_category_checklist ( $link_id = 0 ) {
$default = 1 ;
2007-05-25 09:16:21 +02:00
2010-08-11 23:54:51 +02:00
if ( $link_id ) {
$checked_categories = wp_get_link_cats ( $link_id );
// No selected categories, strange
if ( ! count ( $checked_categories ) )
$checked_categories [] = $default ;
2009-01-23 23:26:40 +01:00
} else {
2010-08-11 23:54:51 +02:00
$checked_categories [] = $default ;
2009-01-23 23:26:40 +01:00
}
2008-03-02 21:17:30 +01:00
2010-08-11 23:54:51 +02:00
$categories = get_terms ( 'link_category' , array ( 'orderby' => 'name' , 'hide_empty' => 0 ) );
2008-09-28 19:48:55 +02:00
2010-08-11 23:54:51 +02:00
if ( empty ( $categories ) )
return ;
2009-09-04 10:50:55 +02:00
2010-08-11 23:54:51 +02:00
foreach ( $categories as $category ) {
$cat_id = $category -> term_id ;
$name = esc_html ( apply_filters ( 'the_category' , $category -> name ) );
$checked = in_array ( $cat_id , $checked_categories ) ? ' checked="checked"' : '' ;
echo '<li id="link-category-' , $cat_id , '"><label for="in-link-category-' , $cat_id , '" class="selectit"><input value="' , $cat_id , '" type="checkbox" name="link_category[]" id="in-link-category-' , $cat_id , '"' , $checked , '/> ' , $name , " </label></li> " ;
2007-05-25 09:16:21 +02:00
}
}
2010-09-24 15:35:06 +02:00
/**
* 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 ] ) ) {
2010-10-09 11:39:16 +02:00
$_wp_column_headers [ $screen -> id ] = apply_filters ( 'manage_' . $screen -> id . '_columns' , array () );
2010-09-24 15:35:06 +02:00
}
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' );
}
2010-08-11 23:54:51 +02:00
// adds hidden fields with the data for use in the inline editor for posts and pages
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
2010-12-01 20:24:38 +01:00
* @ since 2.7 . 0
2008-10-02 03:03:26 +02:00
*
2010-08-11 23:54:51 +02:00
* @ param unknown_type $post
2008-10-02 03:03:26 +02:00
*/
2010-08-11 23:54:51 +02:00
function get_inline_data ( $post ) {
2010-02-02 18:37:03 +01:00
$post_type_object = get_post_type_object ( $post -> post_type );
2010-08-11 23:54:51 +02:00
if ( ! current_user_can ( $post_type_object -> cap -> edit_post , $post -> ID ) )
return ;
2008-03-02 21:17:30 +01:00
2010-11-10 18:08:05 +01:00
$title = esc_attr ( trim ( $post -> post_title ) );
2008-08-20 06:06:36 +02:00
2010-08-11 23:54:51 +02:00
echo '
< div class = " hidden " id = " inline_' . $post->ID . ' " >
< div class = " post_title " > ' . $title . ' </ div >
< div class = " post_name " > ' . apply_filters(' editable_slug ', $post->post_name) . ' </ div >
< div class = " post_author " > ' . $post->post_author . ' </ div >
< div class = " comment_status " > ' . $post->comment_status . ' </ div >
< div class = " ping_status " > ' . $post->ping_status . ' </ div >
< div class = " _status " > ' . $post->post_status . ' </ div >
< div class = " jj " > ' . mysql2date( ' d ', $post->post_date, false ) . ' </ div >
< div class = " mm " > ' . mysql2date( ' m ', $post->post_date, false ) . ' </ div >
< div class = " aa " > ' . mysql2date( ' Y ', $post->post_date, false ) . ' </ div >
< div class = " hh " > ' . mysql2date( ' H ', $post->post_date, false ) . ' </ div >
< div class = " mn " > ' . mysql2date( ' i ', $post->post_date, false ) . ' </ div >
< div class = " ss " > ' . mysql2date( ' s ', $post->post_date, false ) . ' </ div >
< div class = " post_password " > ' . esc_html( $post->post_password ) . ' </ div > ' ;
2009-12-25 03:46:40 +01:00
2010-08-11 23:54:51 +02:00
if ( $post_type_object -> hierarchical )
echo '<div class="post_parent">' . $post -> post_parent . '</div>' ;
2008-10-30 16:50:21 +01:00
2010-08-11 23:54:51 +02:00
if ( $post -> post_type == 'page' )
echo '<div class="page_template">' . esc_html ( get_post_meta ( $post -> ID , '_wp_page_template' , true ) ) . '</div>' ;
2009-07-21 05:11:12 +02:00
2010-08-11 23:54:51 +02:00
if ( $post_type_object -> hierarchical )
echo '<div class="menu_order">' . $post -> menu_order . '</div>' ;
2009-07-21 05:11:12 +02:00
2010-08-11 23:54:51 +02:00
$taxonomy_names = get_object_taxonomies ( $post -> post_type );
foreach ( $taxonomy_names as $taxonomy_name ) {
$taxonomy = get_taxonomy ( $taxonomy_name );
2009-07-21 05:11:12 +02:00
2010-08-11 23:54:51 +02:00
if ( $taxonomy -> hierarchical && $taxonomy -> show_ui )
echo '<div class="post_category" id="' . $taxonomy_name . '_' . $post -> ID . '">' . implode ( ',' , wp_get_object_terms ( $post -> ID , $taxonomy_name , array ( 'fields' => 'ids' )) ) . '</div>' ;
elseif ( $taxonomy -> show_ui )
echo '<div class="tags_input" id="' . $taxonomy_name . '_' . $post -> ID . '">' . esc_html ( str_replace ( ',' , ', ' , get_terms_to_edit ( $post -> ID , $taxonomy_name ) ) ) . '</div>' ;
}
2008-10-08 03:18:16 +02:00
2010-08-11 23:54:51 +02:00
if ( ! $post_type_object -> hierarchical )
echo '<div class="sticky">' . ( is_sticky ( $post -> ID ) ? 'sticky' : '' ) . '</div>' ;
2008-10-30 16:50:21 +01:00
2010-08-11 23:54:51 +02:00
echo '</div>' ;
2007-05-25 09:16:21 +02:00
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
2010-12-01 20:24:38 +01:00
* @ since 2.7 . 0
2008-10-02 03:03:26 +02:00
*
* @ param unknown_type $position
* @ param unknown_type $checkbox
* @ param unknown_type $mode
*/
2008-10-30 16:50:21 +01:00
function wp_comment_reply ( $position = '1' , $checkbox = false , $mode = 'single' , $table_row = true ) {
2008-08-24 08:56:22 +02:00
// allow plugin to replace the popup content
2008-10-08 03:18:16 +02:00
$content = apply_filters ( 'wp_comment_reply' , '' , array ( 'position' => $position , 'checkbox' => $checkbox , 'mode' => $mode ) );
2008-09-21 21:45:45 +02:00
2008-08-24 08:56:22 +02:00
if ( ! empty ( $content ) ) {
echo $content ;
return ;
}
2008-12-07 00:42:22 +01:00
2010-11-04 09:07:03 +01:00
$wp_list_table = get_list_table ( 'WP_Comments_List_Table' );
2010-08-11 23:54:51 +02:00
2008-08-24 08:56:22 +02:00
?>
2008-10-09 01:32:34 +02:00
< form method = " get " action = " " >
< ? php if ( $table_row ) : ?>
2010-11-14 19:00:09 +01:00
< table style = " display:none; " >< tbody id = " com-reply " >< tr id = " replyrow " style = " display:none; " >< td colspan = " <?php echo $wp_list_table->get_column_count (); ?> " class = " colspanchange " >
2008-10-09 01:32:34 +02:00
< ? php else : ?>
2009-11-03 09:28:59 +01:00
< div id = " com-reply " style = " display:none; " >< div id = " replyrow " style = " display:none; " >
2008-10-09 01:32:34 +02:00
< ? php endif ; ?>
2008-10-08 03:18:16 +02:00
< div id = " replyhead " style = " display:none; " >< ? php _e ( 'Reply to Comment' ); ?> </div>
< div id = " edithead " style = " display:none; " >
< div class = " inside " >
2010-08-11 23:54:51 +02:00
< label for = " author " >< ? php _e ( 'Name' ) ?> </label>
2008-10-08 03:18:16 +02:00
< input type = " text " name = " newcomment_author " size = " 50 " value = " " tabindex = " 101 " id = " author " />
</ div >
< div class = " inside " >
2010-08-11 23:54:51 +02:00
< label for = " author-email " >< ? php _e ( 'E-mail' ) ?> </label>
2008-10-08 03:18:16 +02:00
< input type = " text " name = " newcomment_author_email " size = " 50 " value = " " tabindex = " 102 " id = " author-email " />
</ div >
< div class = " inside " >
2010-08-11 23:54:51 +02:00
< label for = " author-url " >< ? php _e ( 'URL' ) ?> </label>
2008-10-08 03:18:16 +02:00
< input type = " text " id = " author-url " name = " newcomment_author_url " size = " 103 " value = " " tabindex = " 103 " />
</ div >
< div style = " clear:both; " ></ div >
2008-08-24 08:56:22 +02:00
</ div >
2008-09-21 21:45:45 +02:00
2008-10-08 03:18:16 +02:00
< div id = " replycontainer " >< textarea rows = " 8 " cols = " 40 " name = " replycontent " tabindex = " 104 " id = " replycontent " ></ textarea ></ div >
2008-11-11 03:58:24 +01:00
< p id = " replysubmit " class = " submit " >
< a href = " #comments-form " class = " cancel button-secondary alignleft " tabindex = " 106 " >< ? php _e ( 'Cancel' ); ?> </a>
< a href = " #comments-form " class = " save button-primary alignright " tabindex = " 104 " >
2008-12-09 10:07:36 +01:00
< span id = " savebtn " style = " display:none; " >< ? php _e ( 'Update Comment' ); ?> </span>
2008-10-08 03:18:16 +02:00
< span id = " replybtn " style = " display:none; " >< ? php _e ( 'Submit Reply' ); ?> </span></a>
2010-05-03 20:16:22 +02:00
< img class = " waiting " style = " display:none; " src = " <?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?> " alt = " " />
2008-10-08 03:18:16 +02:00
< span class = " error " style = " display:none; " ></ span >
2008-11-11 03:58:24 +01:00
< br class = " clear " />
2008-10-08 03:18:16 +02:00
</ p >
2010-06-24 17:01:29 +02:00
< input type = " hidden " name = " user_ID " id = " user_ID " value = " <?php echo get_current_user_id(); ?> " />
2008-10-08 03:18:16 +02:00
< input type = " hidden " name = " action " id = " action " value = " " />
2008-08-24 08:56:22 +02:00
< input type = " hidden " name = " comment_ID " id = " comment_ID " value = " " />
< input type = " hidden " name = " comment_post_ID " id = " comment_post_ID " value = " " />
2008-10-08 03:18:16 +02:00
< input type = " hidden " name = " status " id = " status " value = " " />
2008-08-24 08:56:22 +02:00
< input type = " hidden " name = " position " id = " position " value = " <?php echo $position ; ?> " />
< input type = " hidden " name = " checkbox " id = " checkbox " value = " <?php echo $checkbox ? 1 : 0; ?> " />
2009-05-05 21:43:53 +02:00
< input type = " hidden " name = " mode " id = " mode " value = " <?php echo esc_attr( $mode ); ?> " />
2010-05-26 06:55:21 +02:00
< ? php wp_nonce_field ( 'replyto-comment' , '_ajax_nonce-replyto-comment' , false ); ?>
2008-08-24 08:56:22 +02:00
< ? php wp_comment_form_unfiltered_html_nonce (); ?>
2008-10-09 01:32:34 +02:00
< ? php if ( $table_row ) : ?>
2008-10-11 01:54:27 +02:00
</ td ></ tr ></ tbody ></ table >
2008-10-09 01:32:34 +02:00
< ? php else : ?>
2008-10-30 16:50:21 +01:00
</ div ></ div >
2008-10-09 01:32:34 +02:00
< ? php endif ; ?>
2008-10-11 01:54:27 +02:00
</ form >
2008-08-24 08:56:22 +02:00
< ? php
}
2009-10-08 10:24:59 +02:00
/**
* Output 'undo move to trash' text for comments
*
* @ since 2.9 . 0
*/
function wp_comment_trashnotice () {
?>
2009-11-27 11:34:09 +01:00
< div class = " hidden " id = " trash-undo-holder " >
< div class = " trash-undo-inside " >< ? php printf ( __ ( 'Comment by %s moved to the trash.' ), '<strong></strong>' ); ?> <span class="undo untrash"><a href="#"><?php _e('Undo'); ?></a></span></div>
</ div >
< div class = " hidden " id = " spam-undo-holder " >
< div class = " spam-undo-inside " >< ? php printf ( __ ( 'Comment by %s marked as spam.' ), '<strong></strong>' ); ?> <span class="undo unspam"><a href="#"><?php _e('Undo'); ?></a></span></div>
2009-10-08 10:24:59 +02:00
</ div >
< ? php
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
2010-12-01 20:24:38 +01:00
* @ since 1.2 . 0
2008-10-02 03:03:26 +02:00
*
* @ param unknown_type $meta
*/
2007-05-25 09:16:21 +02:00
function list_meta ( $meta ) {
// Exit if no meta
2008-11-08 03:15:53 +01:00
if ( ! $meta ) {
echo '
< table id = " list-table " style = " display: none; " >
< thead >
< tr >
< th class = " left " > ' . __( ' Name ' ) . ' </ th >
< th > ' . __( ' Value ' ) . ' </ th >
</ tr >
</ thead >
< tbody id = " the-list " class = " list:meta " >
< tr >< td ></ td ></ tr >
</ tbody >
</ table > ' ; //TBODY needed for list-manipulation JS
2007-05-25 09:16:21 +02:00
return ;
}
$count = 0 ;
?>
2008-11-08 03:15:53 +01:00
< table id = " list-table " >
2007-05-25 09:16:21 +02:00
< thead >
< tr >
2010-08-11 23:54:51 +02:00
< th class = " left " >< ? php _e ( 'Name' ) ?> </th>
< th >< ? php _e ( 'Value' ) ?> </th>
2007-05-25 09:16:21 +02:00
</ tr >
</ thead >
2007-10-10 00:49:42 +02:00
< tbody id = 'the-list' class = 'list:meta' >
2007-05-25 09:16:21 +02:00
< ? php
2007-10-10 00:49:42 +02:00
foreach ( $meta as $entry )
echo _list_meta_row ( $entry , $count );
2008-11-08 03:15:53 +01:00
?>
</ tbody >
</ table >
< ? php
2007-10-10 00:49:42 +02:00
}
2007-05-25 09:16:21 +02:00
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
2010-12-01 20:24:38 +01:00
* @ since 2.5 . 0
2008-10-02 03:03:26 +02:00
*
* @ param unknown_type $entry
* @ param unknown_type $count
* @ return unknown
*/
2007-10-10 00:49:42 +02:00
function _list_meta_row ( $entry , & $count ) {
2008-03-22 09:15:48 +01:00
static $update_nonce = false ;
if ( ! $update_nonce )
$update_nonce = wp_create_nonce ( 'add-meta' );
2007-10-10 00:49:42 +02:00
$r = '' ;
++ $count ;
if ( $count % 2 )
$style = 'alternate' ;
else
$style = '' ;
if ( '_' == $entry [ 'meta_key' ] { 0 } )
$style .= ' hidden' ;
if ( is_serialized ( $entry [ 'meta_value' ] ) ) {
if ( is_serialized_string ( $entry [ 'meta_value' ] ) ) {
// this is a serialized string, so we should display it
$entry [ 'meta_value' ] = maybe_unserialize ( $entry [ 'meta_value' ] );
} else {
// this is a serialized array/object so we should NOT display it
-- $count ;
return ;
}
2007-05-25 09:16:21 +02:00
}
2007-10-10 00:49:42 +02:00
2009-05-05 21:43:53 +02:00
$entry [ 'meta_key' ] = esc_attr ( $entry [ 'meta_key' ]);
2010-11-17 18:12:01 +01:00
$entry [ 'meta_value' ] = esc_textarea ( $entry [ 'meta_value' ] ); // using a <textarea />
2007-10-10 00:49:42 +02:00
$entry [ 'meta_id' ] = ( int ) $entry [ 'meta_id' ];
2008-03-22 09:15:48 +01:00
$delete_nonce = wp_create_nonce ( 'delete-meta_' . $entry [ 'meta_id' ] );
2007-10-10 00:49:42 +02:00
$r .= " \n \t <tr id='meta- { $entry [ 'meta_id' ] } ' class=' $style '> " ;
2009-05-13 00:40:56 +02:00
$r .= " \n \t \t <td class='left'><label class='screen-reader-text' for='meta[ { $entry [ 'meta_id' ] } ][key]'> " . __ ( 'Key' ) . " </label><input name='meta[ { $entry [ 'meta_id' ] } ][key]' id='meta[ { $entry [ 'meta_id' ] } ][key]' tabindex='6' type='text' size='20' value=' { $entry [ 'meta_key' ] } ' /> " ;
2008-11-08 03:15:53 +01:00
2010-10-28 23:56:43 +02:00
$r .= " \n \t \t <div class='submit'> " ;
$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 .= " \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 .= " </div> " ;
2008-03-22 09:15:48 +01:00
$r .= wp_nonce_field ( 'change-meta' , '_ajax_nonce' , false , false );
2008-11-08 03:15:53 +01:00
$r .= " </td> " ;
2008-12-09 19:03:31 +01:00
2009-05-13 00:40:56 +02:00
$r .= " \n \t \t <td><label class='screen-reader-text' for='meta[ { $entry [ 'meta_id' ] } ][value]'> " . __ ( 'Value' ) . " </label><textarea name='meta[ { $entry [ 'meta_id' ] } ][value]' id='meta[ { $entry [ 'meta_id' ] } ][value]' tabindex='6' rows='2' cols='30'> { $entry [ 'meta_value' ] } </textarea></td> \n \t </tr> " ;
2007-10-10 00:49:42 +02:00
return $r ;
2007-05-25 09:16:21 +02:00
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
2010-12-01 20:24:38 +01:00
* @ since 1.2 . 0
2008-10-02 03:03:26 +02:00
*/
2007-05-25 09:16:21 +02:00
function meta_form () {
global $wpdb ;
$limit = ( int ) apply_filters ( 'postmeta_form_limit' , 30 );
$keys = $wpdb -> get_col ( "
SELECT meta_key
FROM $wpdb -> postmeta
GROUP BY meta_key
2009-05-05 07:40:03 +02:00
HAVING meta_key NOT LIKE '\_%'
2010-02-28 14:15:54 +01:00
ORDER BY meta_key
2007-05-25 09:16:21 +02:00
LIMIT $limit " );
2009-05-05 07:40:03 +02:00
if ( $keys )
2007-05-25 09:16:21 +02:00
natcasesort ( $keys );
?>
2010-08-11 23:54:51 +02:00
< p >< strong >< ? php _e ( 'Add New Custom Field:' ) ?> </strong></p>
2008-11-08 03:15:53 +01:00
< table id = " newmeta " >
< thead >
< tr >
2010-08-11 23:54:51 +02:00
< th class = " left " >< label for = " metakeyselect " >< ? php _e ( 'Name' ) ?> </label></th>
< th >< label for = " metavalue " >< ? php _e ( 'Value' ) ?> </label></th>
2007-05-25 09:16:21 +02:00
</ tr >
2008-11-08 03:15:53 +01:00
</ thead >
< tbody >
< tr >
< td id = " newmetaleft " class = " left " >
2008-12-01 01:29:14 +01:00
< ? php if ( $keys ) { ?>
2007-05-25 09:16:21 +02:00
< select id = " metakeyselect " name = " metakeyselect " tabindex = " 7 " >
2010-01-21 22:37:43 +01:00
< option value = " #NONE# " >< ? php _e ( '— Select —' ); ?> </option>
2007-05-25 09:16:21 +02:00
< ? php
foreach ( $keys as $key ) {
2010-08-11 23:54:51 +02:00
echo " \n <option value=' " . esc_attr ( $key ) . " '> " . esc_html ( $key ) . " </option> " ;
2007-05-25 09:16:21 +02:00
}
?>
2008-11-08 03:15:53 +01:00
</ select >
< input class = " hide-if-js " type = " text " id = " metakeyinput " name = " metakeyinput " tabindex = " 7 " value = " " />
2010-02-28 20:39:06 +01:00
< a href = " #postcustomstuff " class = " hide-if-no-js " onclick = " jQuery('#metakeyinput, #metakeyselect, #enternew, #cancelnew').toggle();return false; " >
2008-11-08 03:15:53 +01:00
< span id = " enternew " >< ? php _e ( 'Enter new' ); ?> </span>
2008-12-01 01:29:14 +01:00
< span id = " cancelnew " class = " hidden " >< ? php _e ( 'Cancel' ); ?> </span></a>
< ? php } else { ?>
< input type = " text " id = " metakeyinput " name = " metakeyinput " tabindex = " 7 " value = " " />
< ? php } ?>
2007-05-25 09:16:21 +02:00
</ td >
2008-11-08 03:15:53 +01:00
< td >< textarea id = " metavalue " name = " metavalue " rows = " 2 " cols = " 25 " tabindex = " 8 " ></ textarea ></ td >
</ tr >
< tr >< td colspan = " 2 " class = " submit " >
2010-10-28 23:56:43 +02:00
< ? php submit_button ( __ ( 'Add Custom Field' ), 'add:the-list:newmeta' , 'addmeta' , false , array ( 'id' => 'addmetasub' , 'tabindex' => '9' ) ); ?>
2010-05-26 06:55:21 +02:00
< ? php wp_nonce_field ( 'add-meta' , '_ajax_nonce-add-meta' , false ); ?>
2007-10-10 00:49:42 +02:00
</ td ></ tr >
2008-11-08 03:15:53 +01:00
</ tbody >
2007-05-25 09:16:21 +02:00
</ table >
< ? php
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
2010-12-01 20:24:38 +01:00
* @ since 0.71
2008-10-02 03:03:26 +02:00
*
* @ param unknown_type $edit
* @ param unknown_type $for_post
* @ param unknown_type $tab_index
* @ param unknown_type $multi
*/
2008-09-11 00:47:03 +02:00
function touch_time ( $edit = 1 , $for_post = 1 , $tab_index = 0 , $multi = 0 ) {
2007-05-25 09:16:21 +02:00
global $wp_locale , $post , $comment ;
if ( $for_post )
2010-03-19 22:15:00 +01:00
$edit = ! ( in_array ( $post -> post_status , array ( 'draft' , 'pending' ) ) && ( ! $post -> post_date_gmt || '0000-00-00 00:00:00' == $post -> post_date_gmt ) );
2008-02-05 07:47:27 +01:00
2007-09-11 21:08:26 +02:00
$tab_index_attribute = '' ;
if ( ( int ) $tab_index > 0 )
$tab_index_attribute = " tabindex= \" $tab_index\ " " ;
2007-06-14 04:25:30 +02:00
2008-03-17 00:05:16 +01:00
// echo '<label for="timestamp" style="display: block;"><input type="checkbox" class="checkbox" name="edit_date" value="1" id="timestamp"'.$tab_index_attribute.' /> '.__( 'Edit timestamp' ).'</label><br />';
2007-05-25 09:16:21 +02:00
2009-12-30 18:56:09 +01:00
$time_adj = current_time ( 'timestamp' );
2007-05-25 09:16:21 +02:00
$post_date = ( $for_post ) ? $post -> post_date : $comment -> comment_date ;
2009-05-14 04:00:32 +02:00
$jj = ( $edit ) ? mysql2date ( 'd' , $post_date , false ) : gmdate ( 'd' , $time_adj );
$mm = ( $edit ) ? mysql2date ( 'm' , $post_date , false ) : gmdate ( 'm' , $time_adj );
$aa = ( $edit ) ? mysql2date ( 'Y' , $post_date , false ) : gmdate ( 'Y' , $time_adj );
$hh = ( $edit ) ? mysql2date ( 'H' , $post_date , false ) : gmdate ( 'H' , $time_adj );
$mn = ( $edit ) ? mysql2date ( 'i' , $post_date , false ) : gmdate ( 'i' , $time_adj );
$ss = ( $edit ) ? mysql2date ( 's' , $post_date , false ) : gmdate ( 's' , $time_adj );
2007-05-25 09:16:21 +02:00
2008-10-29 20:22:56 +01:00
$cur_jj = gmdate ( 'd' , $time_adj );
$cur_mm = gmdate ( 'm' , $time_adj );
$cur_aa = gmdate ( 'Y' , $time_adj );
$cur_hh = gmdate ( 'H' , $time_adj );
$cur_mn = gmdate ( 'i' , $time_adj );
2008-09-11 00:47:03 +02:00
$month = " <select " . ( $multi ? '' : 'id="mm" ' ) . " name= \" mm \" $tab_index_attribute > \n " ;
2007-07-17 21:26:03 +02:00
for ( $i = 1 ; $i < 13 ; $i = $i + 1 ) {
2008-03-17 00:05:16 +01:00
$month .= " \t \t \t " . '<option value="' . zeroise ( $i , 2 ) . '"' ;
2007-07-17 21:26:03 +02:00
if ( $i == $mm )
2008-02-23 00:13:02 +01:00
$month .= ' selected="selected"' ;
2008-10-29 09:19:15 +01:00
$month .= '>' . $wp_locale -> get_month_abbrev ( $wp_locale -> get_month ( $i ) ) . " </option> \n " ;
2007-07-17 21:26:03 +02:00
}
2008-02-23 00:13:02 +01:00
$month .= '</select>' ;
2008-09-21 21:45:45 +02:00
$day = '<input type="text" ' . ( $multi ? '' : 'id="jj" ' ) . 'name="jj" value="' . $jj . '" size="2" maxlength="2"' . $tab_index_attribute . ' autocomplete="off" />' ;
2009-03-05 21:15:10 +01:00
$year = '<input type="text" ' . ( $multi ? '' : 'id="aa" ' ) . 'name="aa" value="' . $aa . '" size="4" maxlength="4"' . $tab_index_attribute . ' autocomplete="off" />' ;
2008-09-21 21:45:45 +02:00
$hour = '<input type="text" ' . ( $multi ? '' : 'id="hh" ' ) . 'name="hh" value="' . $hh . '" size="2" maxlength="2"' . $tab_index_attribute . ' autocomplete="off" />' ;
$minute = '<input type="text" ' . ( $multi ? '' : 'id="mn" ' ) . 'name="mn" value="' . $mn . '" size="2" maxlength="2"' . $tab_index_attribute . ' autocomplete="off" />' ;
2009-12-03 10:56:20 +01:00
echo '<div class="timestamp-wrap">' ;
2009-03-02 20:20:19 +01:00
/* 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 );
2008-09-11 00:47:03 +02:00
2009-12-03 10:56:20 +01:00
echo '</div><input type="hidden" id="ss" name="ss" value="' . $ss . '" />' ;
2008-11-15 13:04:38 +01:00
2008-09-11 00:47:03 +02:00
if ( $multi ) return ;
2008-09-21 21:45:45 +02:00
2008-03-17 00:05:16 +01:00
echo " \n \n " ;
2008-10-29 20:22:56 +01:00
foreach ( array ( 'mm' , 'jj' , 'aa' , 'hh' , 'mn' ) as $timeunit ) {
2008-03-17 00:05:16 +01:00
echo '<input type="hidden" id="hidden_' . $timeunit . '" name="hidden_' . $timeunit . '" value="' . $$timeunit . '" />' . " \n " ;
2008-10-29 20:22:56 +01:00
$cur_timeunit = 'cur_' . $timeunit ;
echo '<input type="hidden" id="' . $cur_timeunit . '" name="' . $cur_timeunit . '" value="' . $$cur_timeunit . '" />' . " \n " ;
}
2007-05-25 09:16:21 +02:00
?>
2008-03-17 00:05:16 +01:00
2008-10-29 09:19:15 +01:00
< p >
2008-08-20 06:06:36 +02:00
< a href = " #edit_timestamp " class = " save-timestamp hide-if-no-js button " >< ? php _e ( 'OK' ); ?> </a>
2008-09-14 14:58:00 +02:00
< a href = " #edit_timestamp " class = " cancel-timestamp hide-if-no-js " >< ? php _e ( 'Cancel' ); ?> </a>
2008-10-29 09:19:15 +01:00
</ p >
2007-05-25 09:16:21 +02:00
< ? php
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
2010-12-01 20:24:38 +01:00
* @ since 1.5 . 0
2008-10-02 03:03:26 +02:00
*
* @ param unknown_type $default
*/
2007-05-25 09:16:21 +02:00
function page_template_dropdown ( $default = '' ) {
$templates = get_page_templates ();
ksort ( $templates );
foreach ( array_keys ( $templates ) as $template )
: if ( $default == $templates [ $template ] )
$selected = " selected='selected' " ;
else
$selected = '' ;
echo " \n \t <option value=' " . $templates [ $template ] . " ' $selected > $template </option> " ;
endforeach ;
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
2010-12-01 20:24:38 +01:00
* @ since 1.5 . 0
2008-10-02 03:03:26 +02:00
*
* @ param unknown_type $default
* @ param unknown_type $parent
* @ param unknown_type $level
* @ return unknown
*/
2007-05-25 09:16:21 +02:00
function parent_dropdown ( $default = 0 , $parent = 0 , $level = 0 ) {
global $wpdb , $post_ID ;
2008-04-14 18:13:25 +02:00
$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 ) );
2007-05-25 09:16:21 +02:00
if ( $items ) {
foreach ( $items as $item ) {
// A page cannot be its own parent.
if ( ! empty ( $post_ID ) ) {
if ( $item -> ID == $post_ID ) {
continue ;
}
}
$pad = str_repeat ( ' ' , $level * 3 );
if ( $item -> ID == $default )
$current = ' selected="selected"' ;
else
$current = '' ;
2010-08-11 23:54:51 +02:00
echo " \n \t <option class='level- $level ' value=' $item->ID ' $current > $pad " . esc_html ( $item -> post_title ) . " </option> " ;
2007-05-25 09:16:21 +02:00
parent_dropdown ( $default , $item -> ID , $level + 1 );
}
} else {
return false ;
}
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
2010-12-01 20:24:38 +01:00
* @ since 2.0 . 0
2008-10-02 03:03:26 +02:00
*
* @ param unknown_type $id
* @ return unknown
*/
2007-05-25 09:16:21 +02:00
function the_attachment_links ( $id = false ) {
$id = ( int ) $id ;
$post = & get_post ( $id );
if ( $post -> post_type != 'attachment' )
return false ;
2010-02-26 01:41:23 +01:00
$icon = wp_get_attachment_image ( $post -> ID , 'thumbnail' , true );
2007-05-25 09:16:21 +02:00
$attachment_data = wp_get_attachment_metadata ( $id );
$thumb = isset ( $attachment_data [ 'thumb' ] );
?>
< form id = " the-attachment-links " >
< table >
< col />
< col class = " widefat " />
< tr >
2010-08-11 23:54:51 +02:00
< th scope = " row " >< ? php _e ( 'URL' ) ?> </th>
2010-11-17 18:12:01 +01:00
< td >< textarea rows = " 1 " cols = " 40 " type = " text " class = " attachmentlinks " readonly = " readonly " >< ? php echo esc_textarea ( wp_get_attachment_url () ); ?> </textarea></td>
2007-05-25 09:16:21 +02:00
</ tr >
< ? php if ( $icon ) : ?>
< tr >
< th scope = " row " >< ? php $thumb ? _e ( 'Thumbnail linked to file' ) : _e ( 'Image linked to file' ); ?> </th>
2010-08-11 23:54:51 +02:00
< td >< textarea rows = " 1 " cols = " 40 " type = " text " class = " attachmentlinks " readonly = " readonly " >< a href = " <?php echo wp_get_attachment_url(); ?> " >< ? php echo $icon ?> </a></textarea></td>
2007-05-25 09:16:21 +02:00
</ tr >
< tr >
< th scope = " row " >< ? php $thumb ? _e ( 'Thumbnail linked to page' ) : _e ( 'Image linked to page' ); ?> </th>
2010-08-11 23:54:51 +02:00
< td >< textarea rows = " 1 " cols = " 40 " type = " text " class = " attachmentlinks " readonly = " readonly " >< a href = " <?php echo get_attachment_link( $post->ID ) ?> " rel = " attachment wp-att-<?php echo $post->ID ; ?> " >< ? php echo $icon ?> </a></textarea></td>
2007-05-25 09:16:21 +02:00
</ tr >
< ? php else : ?>
< tr >
2010-08-11 23:54:51 +02:00
< th scope = " row " >< ? php _e ( 'Link to file' ) ?> </th>
2008-09-21 21:45:45 +02:00
< td >< textarea rows = " 1 " cols = " 40 " type = " text " class = " attachmentlinks " readonly = " readonly " >< a href = " <?php echo wp_get_attachment_url(); ?> " class = " attachmentlink " >< ? php echo basename ( wp_get_attachment_url () ); ?> </a></textarea></td>
2007-05-25 09:16:21 +02:00
</ tr >
< tr >
2010-08-11 23:54:51 +02:00
< th scope = " row " >< ? php _e ( 'Link to page' ) ?> </th>
< td >< textarea rows = " 1 " cols = " 40 " type = " text " class = " attachmentlinks " readonly = " readonly " >< a href = " <?php echo get_attachment_link( $post->ID ) ?> " rel = " attachment wp-att-<?php echo $post->ID ?> " >< ? php the_title (); ?> </a></textarea></td>
2007-05-25 09:16:21 +02:00
</ tr >
< ? php endif ; ?>
</ table >
</ form >
< ? php
}
2009-02-01 10:45:24 +01:00
2008-10-02 03:03:26 +02:00
/**
2010-09-07 13:21:11 +02:00
* Print out < option > html elements for role selectors
2008-10-02 03:03:26 +02:00
*
2010-12-01 20:24:38 +01:00
* @ since 2.1 . 0
2008-10-02 03:03:26 +02:00
*
2010-09-07 13:21:11 +02:00
* @ param string $selected slug for the role that should be already selected
2008-10-02 03:03:26 +02:00
*/
2008-12-31 18:40:05 +01:00
function wp_dropdown_roles ( $selected = false ) {
2008-08-14 19:00:37 +02:00
$p = '' ;
2007-05-25 09:16:21 +02:00
$r = '' ;
2009-02-01 10:45:24 +01:00
2009-01-06 23:00:05 +01:00
$editable_roles = get_editable_roles ();
2009-02-01 10:45:24 +01:00
2010-02-20 03:01:46 +01:00
foreach ( $editable_roles as $role => $details ) {
2009-03-11 00:02:29 +01:00
$name = translate_user_role ( $details [ 'name' ] );
2010-09-07 13:21:11 +02:00
if ( $selected == $role ) // preselect specified role
2009-05-05 21:43:53 +02:00
$p = " \n \t <option selected='selected' value=' " . esc_attr ( $role ) . " '> $name </option> " ;
2007-05-25 09:16:21 +02:00
else
2009-05-05 21:43:53 +02:00
$r .= " \n \t <option value=' " . esc_attr ( $role ) . " '> $name </option> " ;
2008-02-19 21:28:54 +01:00
}
2007-05-25 09:16:21 +02:00
echo $p . $r ;
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
2010-12-01 20:24:38 +01:00
* @ since 2.3 . 0
2008-10-02 03:03:26 +02:00
*
* @ param unknown_type $size
* @ return unknown
*/
2007-08-29 01:13:16 +02:00
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 ;
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
2010-12-01 20:24:38 +01:00
* @ since 2.3 . 0
2008-10-02 03:03:26 +02:00
*
* @ param unknown_type $bytes
* @ return unknown
*/
2007-08-29 01:13:16 +02:00
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 ];
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
2010-12-01 20:24:38 +01:00
* @ since 2.5 . 0
2008-10-02 03:03:26 +02:00
*
* @ return unknown
*/
2008-01-25 20:21:11 +01:00
function wp_max_upload_size () {
2007-08-29 01:13:16 +02:00
$u_bytes = wp_convert_hr_to_bytes ( ini_get ( 'upload_max_filesize' ) );
$p_bytes = wp_convert_hr_to_bytes ( ini_get ( 'post_max_size' ) );
2008-01-25 20:21:11 +01:00
$bytes = apply_filters ( 'upload_size_limit' , min ( $u_bytes , $p_bytes ), $u_bytes , $p_bytes );
return $bytes ;
}
2008-10-02 03:03:26 +02:00
/**
2009-09-23 08:59:20 +02:00
* Outputs the form used by the importers to accept the data to be imported
2008-10-02 03:03:26 +02:00
*
2010-12-01 20:24:38 +01:00
* @ since 2.0 . 0
2008-10-02 03:03:26 +02:00
*
2009-09-23 08:59:20 +02:00
* @ param string $action The action attribute for the form .
2008-10-02 03:03:26 +02:00
*/
2008-01-25 20:21:11 +01:00
function wp_import_upload_form ( $action ) {
$bytes = apply_filters ( 'import_upload_size_limit' , wp_max_upload_size () );
2007-08-29 01:13:16 +02:00
$size = wp_convert_bytes_to_hr ( $bytes );
2009-02-12 20:39:35 +01:00
$upload_dir = wp_upload_dir ();
if ( ! empty ( $upload_dir [ 'error' ] ) ) :
?> <div class="error"><p><?php _e('Before you can upload your import file, you will need to fix the following error:'); ?></p>
2009-03-18 03:43:45 +01:00
< p >< strong >< ? php echo $upload_dir [ 'error' ]; ?> </strong></p></div><?php
else :
2007-05-25 09:16:21 +02:00
?>
2009-09-23 08:59:20 +02:00
< form enctype = " multipart/form-data " id = " import-upload-form " method = " post " action = " <?php echo esc_attr(wp_nonce_url( $action , 'import-upload')); ?> " >
2007-05-25 09:16:21 +02:00
< p >
2007-08-29 01:13:16 +02:00
< label for = " upload " >< ? php _e ( 'Choose a file from your computer:' ); ?> </label> (<?php printf( __('Maximum size: %s' ), $size ); ?>)
2007-05-25 09:16:21 +02:00
< input type = " file " id = " upload " name = " import " size = " 25 " />
< input type = " hidden " name = " action " value = " save " />
< input type = " hidden " name = " max_file_size " value = " <?php echo $bytes ; ?> " />
</ p >
2010-10-28 23:56:43 +02:00
< ? php submit_button ( __ ( 'Upload file and import' ), 'button' ); ?>
2007-05-25 09:16:21 +02:00
</ form >
< ? php
2009-02-12 20:39:35 +01:00
endif ;
2007-05-25 09:16:21 +02:00
}
2008-02-08 19:51:37 +01:00
/**
2008-10-02 03:03:26 +02:00
* Add a meta box to an edit form .
2008-02-08 19:51:37 +01:00
*
2008-10-02 03:03:26 +02:00
* @ since 2.5 . 0
2008-02-08 19:51:37 +01:00
*
* @ param string $id String for use in the 'id' attribute of tags .
2008-10-02 03:03:26 +02:00
* @ param string $title Title of the meta box .
2008-09-21 21:45:45 +02:00
* @ param string $callback Function that fills the box with the desired content . The function should echo its output .
2008-10-02 03:03:26 +02:00
* @ 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' ) .
2008-02-08 19:51:37 +01:00
*/
2008-12-18 20:12:26 +01:00
function add_meta_box ( $id , $title , $callback , $page , $context = 'advanced' , $priority = 'default' , $callback_args = null ) {
2008-02-08 19:51:37 +01:00
global $wp_meta_boxes ;
2008-09-21 21:45:45 +02:00
if ( ! isset ( $wp_meta_boxes ) )
2008-02-08 22:06:15 +01:00
$wp_meta_boxes = array ();
if ( ! isset ( $wp_meta_boxes [ $page ]) )
$wp_meta_boxes [ $page ] = array ();
if ( ! isset ( $wp_meta_boxes [ $page ][ $context ]) )
$wp_meta_boxes [ $page ][ $context ] = array ();
2008-08-20 06:06:36 +02:00
foreach ( array_keys ( $wp_meta_boxes [ $page ]) as $a_context ) {
2010-11-20 20:20:32 +01:00
foreach ( array ( 'high' , 'core' , 'default' , 'low' ) as $a_priority ) {
if ( ! isset ( $wp_meta_boxes [ $page ][ $a_context ][ $a_priority ][ $id ]) )
continue ;
2010-12-13 22:21:50 +01:00
2010-11-20 20:20:32 +01:00
// If a core box was previously added or removed by a plugin, don't add.
if ( 'core' == $priority ) {
// 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 ( '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 ]);
}
2008-05-14 10:22:01 +02:00
return ;
}
2010-11-20 20:20:32 +01:00
// 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.
} 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
if ( $priority != $a_priority || $context != $a_context )
unset ( $wp_meta_boxes [ $page ][ $a_context ][ $a_priority ][ $id ]);
2008-08-20 06:06:36 +02:00
}
2008-05-14 10:22:01 +02:00
}
if ( empty ( $priority ) )
2008-08-20 06:06:36 +02:00
$priority = 'low' ;
2008-05-14 10:22:01 +02:00
if ( ! isset ( $wp_meta_boxes [ $page ][ $context ][ $priority ]) )
$wp_meta_boxes [ $page ][ $context ][ $priority ] = array ();
2008-12-18 20:12:26 +01:00
$wp_meta_boxes [ $page ][ $context ][ $priority ][ $id ] = array ( 'id' => $id , 'title' => $title , 'callback' => $callback , 'args' => $callback_args );
2008-02-08 19:51:37 +01:00
}
2008-10-02 03:03:26 +02:00
/**
2010-05-19 21:11:33 +02:00
* Meta - Box template function
2008-10-02 03:03:26 +02:00
*
2010-05-19 21:11:33 +02:00
* @ since 2.5 . 0
2008-10-02 03:03:26 +02:00
*
2010-05-19 21:11:33 +02:00
* @ 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
2008-10-09 01:32:34 +02:00
* @ return int number of meta_boxes
2008-10-02 03:03:26 +02:00
*/
2008-02-08 22:06:15 +01:00
function do_meta_boxes ( $page , $context , $object ) {
2008-02-08 19:51:37 +01:00
global $wp_meta_boxes ;
2008-08-20 06:06:36 +02:00
static $already_sorted = false ;
2008-02-08 19:51:37 +01:00
2008-11-28 23:35:01 +01:00
$hidden = get_hidden_meta_boxes ( $page );
2008-08-22 20:58:42 +02:00
2010-05-26 04:42:15 +02:00
printf ( '<div id="%s-sortables" class="meta-box-sortables">' , htmlspecialchars ( $context ));
2008-02-08 19:51:37 +01:00
2008-08-20 06:06:36 +02:00
$i = 0 ;
2008-09-21 21:45:45 +02:00
do {
// Grab the ones the user has manually sorted. Pull them out of their previous context/priority and into the one the user chose
2010-01-07 01:01:52 +01:00
if ( ! $already_sorted && $sorted = get_user_option ( " meta-box-order_ $page " ) ) {
2008-08-20 06:06:36 +02:00
foreach ( $sorted as $box_context => $ids )
foreach ( explode ( ',' , $ids ) as $id )
if ( $id )
add_meta_box ( $id , null , null , $page , $box_context , 'sorted' );
}
$already_sorted = true ;
2008-08-08 19:05:10 +02:00
2008-08-20 06:06:36 +02:00
if ( ! isset ( $wp_meta_boxes ) || ! isset ( $wp_meta_boxes [ $page ]) || ! isset ( $wp_meta_boxes [ $page ][ $context ]) )
break ;
foreach ( array ( 'high' , 'sorted' , 'core' , 'default' , 'low' ) as $priority ) {
2008-08-25 23:50:11 +02:00
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 = '' ;
2010-05-05 00:28:51 +02:00
$hidden_class = in_array ( $box [ 'id' ], $hidden ) ? ' hide-if-js' : '' ;
echo '<div id="' . $box [ 'id' ] . '" class="postbox ' . postbox_classes ( $box [ 'id' ], $page ) . $hidden_class . '" ' . '>' . " \n " ;
2008-12-01 02:31:57 +01:00
echo '<div class="handlediv" title="' . __ ( 'Click to toggle' ) . '"><br /></div>' ;
echo " <h3 class='hndle'><span> { $box [ 'title' ] } </span></h3> \n " ;
2008-08-25 23:50:11 +02:00
echo '<div class="inside">' . " \n " ;
call_user_func ( $box [ 'callback' ], $object , $box );
echo " </div> \n " ;
echo " </div> \n " ;
}
2008-08-20 06:06:36 +02:00
}
2008-05-14 10:22:01 +02:00
}
2008-08-20 06:06:36 +02:00
} while ( 0 );
2010-08-11 23:54:51 +02:00
echo " </div> " ;
2008-08-20 06:06:36 +02:00
return $i ;
2008-02-08 19:51:37 +01:00
}
2008-05-14 10:22:01 +02:00
/**
2008-10-02 03:03:26 +02:00
* Remove a meta box from an edit form .
2008-05-14 10:22:01 +02:00
*
2008-10-02 03:03:26 +02:00
* @ since 2.6 . 0
2008-05-14 10:22:01 +02:00
*
* @ param string $id String for use in the 'id' attribute of tags .
2008-10-02 03:03:26 +02:00
* @ 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' ) .
2008-05-14 10:22:01 +02:00
*/
function remove_meta_box ( $id , $page , $context ) {
global $wp_meta_boxes ;
2008-09-21 21:45:45 +02:00
if ( ! isset ( $wp_meta_boxes ) )
2008-05-14 10:22:01 +02:00
$wp_meta_boxes = array ();
if ( ! isset ( $wp_meta_boxes [ $page ]) )
$wp_meta_boxes [ $page ] = array ();
if ( ! isset ( $wp_meta_boxes [ $page ][ $context ]) )
$wp_meta_boxes [ $page ][ $context ] = array ();
foreach ( array ( 'high' , 'core' , 'default' , 'low' ) as $priority )
$wp_meta_boxes [ $page ][ $context ][ $priority ][ $id ] = false ;
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
2010-12-01 20:24:38 +01:00
* @ since 2.7 . 0
2008-10-02 03:03:26 +02:00
*
2010-01-15 17:58:36 +01:00
* @ param unknown_type $screen
2008-10-02 03:03:26 +02:00
*/
2010-01-15 17:58:36 +01:00
function meta_box_prefs ( $screen ) {
2008-08-22 20:58:42 +02:00
global $wp_meta_boxes ;
2010-01-15 17:58:36 +01:00
if ( is_string ( $screen ) )
$screen = convert_to_screen ( $screen );
if ( empty ( $wp_meta_boxes [ $screen -> id ]) )
2008-08-22 20:58:42 +02:00
return ;
2010-01-15 17:58:36 +01:00
$hidden = get_hidden_meta_boxes ( $screen );
2008-08-22 20:58:42 +02:00
2010-01-15 17:58:36 +01:00
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 ) {
2008-08-22 20:58:42 +02:00
if ( false == $box || ! $box [ 'title' ] )
continue ;
2008-09-11 20:56:04 +02:00
// Submit box cannot be hidden
2008-11-15 01:09:18 +01:00
if ( 'submitdiv' == $box [ 'id' ] || 'linksubmitdiv' == $box [ 'id' ] )
2008-09-11 20:56:04 +02:00
continue ;
2008-08-22 20:58:42 +02:00
$box_id = $box [ 'id' ];
echo '<label for="' . $box_id . '-hide">' ;
2008-10-22 08:52:06 +02:00
echo '<input class="hide-postbox-tog" name="' . $box_id . '-hide" type="checkbox" id="' . $box_id . '-hide" value="' . $box_id . '"' . ( ! in_array ( $box_id , $hidden ) ? ' checked="checked"' : '' ) . ' />' ;
2008-08-25 12:17:41 +02:00
echo " { $box [ 'title' ] } </label> \n " ;
2008-08-22 20:58:42 +02:00
}
}
}
}
2008-09-10 00:31:22 +02:00
2010-05-19 21:11:33 +02:00
/**
* Get Hidden Meta Boxes
*
2010-12-01 20:24:38 +01:00
* @ since 2.7 . 0
2010-05-19 21:11:33 +02:00
*
* @ 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 );
2010-01-15 17:58:36 +01:00
2010-05-19 21:11:33 +02:00
$hidden = get_user_option ( " metaboxhidden_ { $screen -> id } " );
2008-11-28 23:35:01 +01:00
// Hide slug boxes by default
2010-08-31 20:27:59 +02:00
if ( ! is_array ( $hidden ) ) {
if ( 'post' == $screen -> base )
2010-10-26 19:14:31 +02:00
$hidden = array ( 'slugdiv' , 'trackbacksdiv' , 'postcustom' , 'postexcerpt' , 'commentstatusdiv' , 'commentsdiv' , 'authordiv' , 'revisionsdiv' );
2010-08-31 20:27:59 +02:00
else
2010-11-09 01:46:05 +01:00
$hidden = array ( 'slugdiv' );
2010-08-31 20:27:59 +02:00
$hidden = apply_filters ( 'default_hidden_meta_boxes' , $hidden , $screen );
}
2008-11-28 23:35:01 +01:00
return $hidden ;
}
2008-09-10 00:31:22 +02:00
/**
2008-10-02 03:03:26 +02:00
* Add a new section to a settings page .
2008-09-10 00:31:22 +02:00
*
2010-02-17 18:50:42 +01:00
* Part of the Settings API . Use this to define new settings sections for an admin page .
* Show settings sections in your admin page callback function with do_settings_sections () .
* Add settings fields to your section with add_settings_field ()
*
2010-06-06 07:16:32 +02:00
* The $callback argument should be the name of a function that echoes out any
2010-02-17 18:50:42 +01:00
* content you want to show at the top of the settings section before the actual
* fields . It can output nothing if you want .
*
2008-10-02 03:03:26 +02:00
* @ since 2.7 . 0
2008-09-10 00:31:22 +02:00
*
2010-02-17 18:50:42 +01:00
* @ global $wp_settings_sections Storage array of all settings sections added to admin pages
2010-06-09 22:21:43 +02:00
*
2010-02-17 18:50:42 +01:00
* @ param string $id Slug - name to identify the section . Used in the 'id' attribute of tags .
2010-03-17 17:27:25 +01:00
* @ param string $title Formatted title of the section . Shown as the heading for the section .
2010-06-09 22:21:43 +02:00
* @ param string $callback Function that echos out any content at the top of the section ( between heading and fields ) .
* @ param string $page The slug - name of the settings page on which to show the section . Built - in pages include 'general' , 'reading' , 'writing' , 'discussion' , 'media' , etc . Create your own using add_options_page ();
2008-09-10 00:31:22 +02:00
*/
function add_settings_section ( $id , $title , $callback , $page ) {
global $wp_settings_sections ;
2010-03-18 18:32:27 +01:00
if ( 'misc' == $page ) {
_deprecated_argument ( __FUNCTION__ , '3.0' , __ ( 'The miscellaneous options group has been removed. Use another settings group.' ) );
2010-03-18 08:50:43 +01:00
$page = 'general' ;
2010-03-18 18:32:27 +01:00
}
2010-03-18 08:50:43 +01:00
2008-09-21 21:45:45 +02:00
if ( ! isset ( $wp_settings_sections ) )
2008-09-10 00:31:22 +02:00
$wp_settings_sections = array ();
if ( ! isset ( $wp_settings_sections [ $page ]) )
$wp_settings_sections [ $page ] = array ();
if ( ! isset ( $wp_settings_sections [ $page ][ $id ]) )
$wp_settings_sections [ $page ][ $id ] = array ();
$wp_settings_sections [ $page ][ $id ] = array ( 'id' => $id , 'title' => $title , 'callback' => $callback );
}
/**
2010-02-17 18:50:42 +01:00
* Add a new field to a section of a settings page
*
* Part of the Settings API . Use this to define a settings field that will show
* as part of a settings section inside a settings page . The fields are shown using
* 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
2010-03-17 17:27:25 +01:00
* values to show .
2008-09-10 00:31:22 +02:00
*
2008-10-02 03:03:26 +02:00
* @ since 2.7 . 0
2008-09-10 00:31:22 +02:00
*
2010-02-17 18:50:42 +01:00
* @ 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 , ... ) .
2008-09-10 00:31:22 +02:00
* @ param array $args Additional arguments
*/
function add_settings_field ( $id , $title , $callback , $page , $section = 'default' , $args = array ()) {
global $wp_settings_fields ;
2010-03-18 18:32:27 +01:00
if ( 'misc' == $page ) {
_deprecated_argument ( __FUNCTION__ , '3.0' , __ ( 'The miscellaneous options group has been removed. Use another settings group.' ) );
2010-03-18 08:50:43 +01:00
$page = 'general' ;
2010-03-18 18:32:27 +01:00
}
2010-03-18 08:50:43 +01:00
2008-09-21 21:45:45 +02:00
if ( ! isset ( $wp_settings_fields ) )
2008-09-10 00:31:22 +02:00
$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 ();
$wp_settings_fields [ $page ][ $section ][ $id ] = array ( 'id' => $id , 'title' => $title , 'callback' => $callback , 'args' => $args );
}
2008-10-02 03:03:26 +02:00
/**
2010-02-17 18:50:42 +01:00
* Prints out all settings sections added to a particular settings page
2008-10-02 03:03:26 +02:00
*
2010-02-17 18:50:42 +01:00
* Part of the Settings API . Use this in a settings page callback function
* to output all the sections and fields that were added to that $page with
* add_settings_section () and add_settings_field ()
*
* @ global $wp_settings_sections Storage array of all settings sections added to admin pages
* @ global $wp_settings_fields Storage array of settings fields and info about their pages / sections
2010-12-01 20:24:38 +01:00
* @ since 2.7 . 0
2008-10-02 03:03:26 +02:00
*
2010-02-17 18:50:42 +01:00
* @ param string $page The slug name of the page whos settings sections you want to output
2008-10-02 03:03:26 +02:00
*/
2008-09-10 00:31:22 +02:00
function do_settings_sections ( $page ) {
global $wp_settings_sections , $wp_settings_fields ;
if ( ! isset ( $wp_settings_sections ) || ! isset ( $wp_settings_sections [ $page ]) )
return ;
foreach ( ( array ) $wp_settings_sections [ $page ] as $section ) {
echo " <h3> { $section [ 'title' ] } </h3> \n " ;
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 '<table class="form-table">' ;
do_settings_fields ( $page , $section [ 'id' ]);
echo '</table>' ;
}
}
2008-10-02 03:03:26 +02:00
/**
2010-02-17 18:50:42 +01:00
* Print out the settings fields for a particular settings section
*
* Part of the Settings API . Use this in a settings page to output
* a specific section . Should normally be called by do_settings_sections ()
* rather than directly .
*
* @ global $wp_settings_fields Storage array of settings fields and their pages / sections
2008-10-02 03:03:26 +02:00
*
2010-12-01 20:24:38 +01:00
* @ since 2.7 . 0
2008-10-02 03:03:26 +02:00
*
2010-02-17 18:50:42 +01:00
* @ 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 .
2008-10-02 03:03:26 +02:00
*/
2008-09-10 00:31:22 +02:00
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 ]) )
return ;
foreach ( ( array ) $wp_settings_fields [ $page ][ $section ] as $field ) {
echo '<tr valign="top">' ;
if ( ! empty ( $field [ 'args' ][ 'label_for' ]) )
echo '<th scope="row"><label for="' . $field [ 'args' ][ 'label_for' ] . '">' . $field [ 'title' ] . '</label></th>' ;
else
echo '<th scope="row">' . $field [ 'title' ] . '</th>' ;
echo '<td>' ;
2009-11-19 18:37:50 +01:00
call_user_func ( $field [ 'callback' ], $field [ 'args' ]);
2008-09-10 00:31:22 +02:00
echo '</td>' ;
echo '</tr>' ;
2008-09-21 21:45:45 +02:00
}
2008-09-10 00:31:22 +02:00
}
2010-02-17 18:50:42 +01:00
/**
* Register a settings error to be displayed to the user
*
* Part of the Settings API . Use this to show messages to users about settings validation
* problems , missing settings or anything else .
*
* Settings errors should be added inside the $sanitize_callback function defined in
* register_setting () for a given setting to give feedback about the submission .
*
* By default messages will show immediately after the submission that generated the error .
* Additional calls to settings_errors () can be used to show errors even when the settings
* page is first accessed .
*
2010-12-01 20:24:38 +01:00
* @ since 3.0 . 0
*
2010-02-17 18:50:42 +01:00
* @ global array $wp_settings_errors Storage array of errors registered during this pageload
2010-03-17 17:27:25 +01:00
*
2010-02-17 18:50:42 +01:00
* @ param string $setting Slug title of the setting to which this error applies
2010-02-18 20:43:44 +01:00
* @ param string $code Slug - name to identify the error . Used as part of 'id' attribute in HTML output .
2010-02-17 18:50:42 +01:00
* @ param string $message The formatted message text to display to the user ( will be shown inside styled < div > and < p > )
* @ param string $type The type of message it is , controls HTML class . Use 'error' or 'updated' .
*/
2010-02-18 20:43:44 +01:00
function add_settings_error ( $setting , $code , $message , $type = 'error' ) {
2010-02-17 18:50:42 +01:00
global $wp_settings_errors ;
if ( ! isset ( $wp_settings_errors ) )
$wp_settings_errors = array ();
$new_error = array (
'setting' => $setting ,
2010-02-18 20:43:44 +01:00
'code' => $code ,
2010-02-17 18:50:42 +01:00
'message' => $message ,
'type' => $type
);
$wp_settings_errors [] = $new_error ;
}
/**
* Fetch settings errors registered by add_settings_error ()
*
* Checks the $wp_settings_errors array for any errors declared during the current
* pageload and returns them .
*
2010-12-03 11:59:20 +01:00
* If changes were just submitted ( $_GET [ 'settings-updated' ]) and settings errors were saved
2010-02-17 18:50:42 +01:00
* to the 'settings_errors' transient then those errors will be returned instead . This
* is used to pass errors back across pageloads .
*
* Use the $sanitize argument to manually re - sanitize the option before returning errors .
* This is useful if you have errors or notices you want to show even when the user
* hasn ' t submitted data ( i . e . when they first load an options page , or in admin_notices action hook )
*
2010-12-01 20:24:38 +01:00
* @ since 3.0 . 0
*
2010-02-17 18:50:42 +01:00
* @ global array $wp_settings_errors Storage array of errors registered during this pageload
*
* @ 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 .
* @ return array Array of settings errors
*/
2010-08-11 23:54:51 +02:00
function get_settings_errors ( $setting = '' , $sanitize = FALSE ) {
2010-02-17 18:50:42 +01:00
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 )
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
2010-12-03 11:59:20 +01:00
if ( isset ( $_GET [ 'settings-updated' ]) && $_GET [ 'settings-updated' ] && get_transient ( 'settings_errors' ) ) {
2010-02-17 18:50:42 +01:00
$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 ;
}
// 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 ] );
}
return $settings_errors ;
}
/**
* Display settings errors registered by add_settings_error ()
*
* Part of the Settings API . Outputs a < div > for each error retrieved by get_settings_errors () .
2010-03-17 17:27:25 +01:00
*
2010-02-17 18:50:42 +01:00
* 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 ()
*
* The $sanitize option is passed into 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 .
*
2010-12-01 20:24:38 +01:00
* @ since 3.0 . 0
*
2010-02-17 18:50:42 +01:00
* @ 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 .
*/
2010-09-07 13:21:11 +02:00
function settings_errors ( $setting = '' , $sanitize = FALSE , $hide_on_update = FALSE ) {
2010-02-17 18:50:42 +01:00
2010-12-03 11:59:20 +01:00
if ( $hide_on_update AND $_GET [ 'settings-updated' ]) return ;
2010-02-23 00:12:48 +01:00
2010-02-17 18:50:42 +01:00
$settings_errors = get_settings_errors ( $setting , $sanitize );
2010-08-11 23:54:51 +02:00
if ( ! is_array ( $settings_errors ) ) return ;
2010-02-17 18:50:42 +01:00
2010-08-11 23:54:51 +02:00
$output = '' ;
2010-02-17 18:50:42 +01:00
foreach ( $settings_errors as $key => $details ) {
2010-02-18 20:43:44 +01:00
$css_id = 'setting-error-' . $details [ 'code' ];
2010-04-08 05:36:52 +02:00
$css_class = $details [ 'type' ] . ' settings-error' ;
2010-08-11 23:54:51 +02:00
$output .= " <div id=' $css_id ' class=' $css_class '> \n " ;
$output .= " <p><strong> { $details [ 'message' ] } </strong></p> " ;
$output .= " </div> \n " ;
2010-02-17 18:50:42 +01:00
}
2010-08-11 23:54:51 +02:00
echo $output ;
2010-02-17 18:50:42 +01:00
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
2010-12-01 20:24:38 +01:00
* @ since 2.7 . 0
2008-10-02 03:03:26 +02:00
*
* @ param unknown_type $found_action
*/
2008-09-16 06:24:28 +02:00
function find_posts_div ( $found_action = '' ) {
?>
< div id = " find-posts " class = " find-box " style = " display:none; " >
< div id = " find-posts-head " class = " find-box-head " >< ? php _e ( 'Find Posts or Pages' ); ?> </div>
< div class = " find-box-inside " >
< div class = " find-box-search " >
< ? php if ( $found_action ) { ?>
2009-05-05 21:43:53 +02:00
< input type = " hidden " name = " found_action " value = " <?php echo esc_attr( $found_action ); ?> " />
2008-09-16 06:24:28 +02:00
< ? php } ?>
2008-09-21 21:45:45 +02:00
2008-09-16 06:24:28 +02:00
< input type = " hidden " name = " affected " id = " affected " value = " " />
< ? php wp_nonce_field ( 'find-posts' , '_ajax_nonce' , false ); ?>
2009-05-13 00:40:56 +02:00
< label class = " screen-reader-text " for = " find-posts-input " >< ? php _e ( 'Search' ); ?> </label>
2009-04-16 06:41:05 +02:00
< input type = " text " id = " find-posts-input " name = " ps " value = " " />
2010-10-22 21:23:00 +02:00
< input type = " button " id = " find-posts-search " value = " <?php esc_attr_e( 'Search' ); ?> " class = " button " />< br />
2008-09-16 06:24:28 +02:00
2010-05-25 04:18:07 +02:00
< ? php
$post_types = get_post_types ( array ( 'public' => true ), 'objects' );
foreach ( $post_types as $post ) {
if ( 'attachment' == $post -> name )
continue ;
?>
2010-08-11 23:54:51 +02:00
< input type = " radio " name = " find-posts-what " id = " find-posts-<?php echo esc_attr( $post->name ); ?> " value = " <?php echo esc_attr( $post->name ); ?> " < ? php checked ( $post -> name , 'post' ); ?> />
2010-05-25 04:18:07 +02:00
< label for = " find-posts-<?php echo esc_attr( $post->name ); ?> " >< ? php echo $post -> label ; ?> </label>
< ? php
} ?>
2008-09-16 06:24:28 +02:00
</ div >
< div id = " find-posts-response " ></ div >
</ div >
< div class = " find-box-buttons " >
2010-10-22 21:23:00 +02:00
< input id = " find-posts-close " type = " button " class = " button alignleft " value = " <?php esc_attr_e('Close'); ?> " />
2010-10-28 23:56:43 +02:00
< ? php submit_button ( __ ( 'Select' ), 'button-primary alignright' , 'find-posts-submit' , false ); ?>
2008-09-16 06:24:28 +02:00
</ div >
</ div >
< ? php
}
2008-09-21 23:10:14 +02:00
/**
* Display the post password .
2008-10-08 03:18:16 +02:00
*
2009-05-05 21:43:53 +02:00
* The password is passed through { @ link esc_attr ()} to ensure that it
2008-10-02 03:03:26 +02:00
* is safe for placing in an html attribute .
2008-09-21 23:10:14 +02:00
*
2009-04-28 07:58:45 +02:00
* @ uses attr
2008-09-21 23:10:14 +02:00
* @ since 2.7 . 0
*/
function the_post_password () {
global $post ;
2010-08-11 23:54:51 +02:00
if ( isset ( $post -> post_password ) ) echo esc_attr ( $post -> post_password );
2008-09-21 23:10:14 +02:00
}
2008-09-26 01:49:24 +02:00
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
2010-12-01 20:24:38 +01:00
* @ since 2.7 . 0
2008-10-02 03:03:26 +02:00
*/
2009-04-22 03:30:15 +02:00
function favorite_actions ( $screen = null ) {
2010-03-01 17:03:27 +01:00
$default_action = false ;
2010-03-17 17:27:25 +01:00
2010-01-15 17:58:36 +01:00
if ( is_string ( $screen ) )
$screen = convert_to_screen ( $screen );
2010-03-17 17:27:25 +01:00
2010-10-07 21:34:18 +02:00
if ( $screen -> is_user )
return ;
2010-06-14 21:33:04 +02:00
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 ));
2010-03-01 17:03:27 +01:00
}
2010-03-17 17:27:25 +01:00
2010-03-01 17:03:27 +01:00
if ( ! $default_action ) {
2010-08-02 21:07:03 +02:00
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 ;
}
2010-03-01 17:03:27 +01:00
}
2009-04-22 03:30:15 +02:00
}
2010-08-02 21:07:03 +02:00
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' )
2008-09-26 01:49:24 +02:00
);
2010-08-02 21:07:03 +02:00
}
2008-09-26 01:49:24 +02:00
2009-04-22 03:30:15 +02:00
$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 );
2010-10-14 11:53:04 +02:00
$actions = apply_filters ( 'favorite_actions' , $actions , $screen );
2008-10-13 19:30:45 +02:00
$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 ];
2008-09-27 14:02:32 +02:00
echo '<div id="favorite-actions">' ;
2008-10-18 18:54:14 +02:00
echo '<div id="favorite-first"><a href="' . $first . '">' . $allowed_actions [ $first ] . '</a></div><div id="favorite-toggle"><br /></div>' ;
echo '<div id="favorite-inside">' ;
2008-10-13 19:30:45 +02:00
array_shift ( $allowed_actions );
2010-08-11 23:54:51 +02:00
foreach ( $allowed_actions as $action => $label ) {
2008-09-27 14:02:32 +02:00
echo " <div class='favorite-action'><a href=' $action '> " ;
2008-09-26 01:49:24 +02:00
echo $label ;
2008-09-27 14:02:32 +02:00
echo " </a></div> \n " ;
2008-09-26 01:49:24 +02:00
}
2008-09-27 14:02:32 +02:00
echo " </div></div> \n " ;
2008-09-26 01:49:24 +02:00
}
2008-10-02 03:03:26 +02:00
2008-09-30 23:32:13 +02:00
/**
* Get the post title .
2008-10-08 03:18:16 +02:00
*
2008-10-02 03:03:26 +02:00
* The post title is fetched and if it is blank then a default string is
* returned .
2008-09-30 23:32:13 +02:00
*
* @ since 2.7 . 0
2010-09-07 13:21:11 +02:00
* @ param int $post_id The post id . If not supplied the global $post is used .
* @ return string The post title if set
2008-09-30 23:32:13 +02:00
*/
2010-09-07 13:21:11 +02:00
function _draft_or_post_title ( $post_id = 0 ) {
2008-09-30 23:32:13 +02:00
$title = get_the_title ( $post_id );
if ( empty ( $title ) )
2008-10-05 06:43:52 +02:00
$title = __ ( '(no title)' );
2008-09-30 23:32:13 +02:00
return $title ;
}
2008-10-02 03:03:26 +02:00
2008-10-03 05:06:43 +02:00
/**
* Display the search query .
2008-10-08 03:18:16 +02:00
*
2008-10-03 05:06:43 +02:00
* A simple wrapper to display the " s " parameter in a GET URI . This function
* should only be used when { @ link the_search_query ()} cannot .
*
2009-04-28 07:58:45 +02:00
* @ uses attr
2008-10-03 05:06:43 +02:00
* @ since 2.7 . 0
2008-10-08 03:18:16 +02:00
*
2008-10-03 05:06:43 +02:00
*/
function _admin_search_query () {
2010-08-11 23:54:51 +02:00
echo isset ( $_GET [ 's' ]) ? esc_attr ( stripslashes ( $_GET [ 's' ] ) ) : '' ;
2008-10-14 01:39:56 +02:00
}
/**
* 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 ) .
*
*/
2009-05-16 21:21:29 +02:00
function iframe_header ( $title = '' , $limit_styles = false ) {
2010-10-23 21:49:25 +02:00
show_admin_bar ( false );
2010-12-12 07:40:52 +01:00
global $hook_suffix , $current_screen , $current_user , $admin_body_class , $wp_locale ;
2010-12-12 06:43:35 +01:00
$admin_body_class = preg_replace ( '/[^a-z0-9_-]+/i' , '-' , $hook_suffix );
2010-12-15 11:39:50 +01:00
$admin_body_class .= ' iframe' ;
2010-12-13 22:21:50 +01:00
2010-08-11 23:54:51 +02:00
?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2008-10-14 01:39:56 +02:00
< html xmlns = " http://www.w3.org/1999/xhtml " < ? php do_action ( 'admin_xml_ns' ); ?> <?php language_attributes(); ?>>
< head >
< meta http - equiv = " Content-Type " content = " <?php bloginfo('html_type'); ?>; charset=<?php echo get_option('blog_charset'); ?> " />
2010-08-11 23:54:51 +02:00
< title >< ? php bloginfo ( 'name' ) ?> › <?php echo $title ?> — <?php _e('WordPress'); ?></title>
2008-10-14 01:39:56 +02:00
< ? php
2010-08-11 23:54:51 +02:00
wp_enqueue_style ( 'global' );
if ( ! $limit_styles )
wp_enqueue_style ( 'wp-admin' );
wp_enqueue_style ( 'colors' );
2008-10-14 01:39:56 +02:00
?>
< script type = " text/javascript " >
//<![CDATA[
2009-03-20 01:14:57 +01:00
addLoadEvent = function ( func ){ if ( typeof jQuery != " undefined " ) jQuery ( document ) . ready ( func ); else if ( typeof wpOnload != 'function' ){ wpOnload = func ;} else { var oldonload = wpOnload ; wpOnload = function (){ oldonload (); func ();}}};
function tb_close (){ var win = window . dialogArguments || opener || parent || top ; win . tb_remove ();}
2010-12-12 06:43:35 +01:00
var userSettings = {
'url' : '<?php echo SITECOOKIEPATH; ?>' ,
'uid' : '<?php if ( ! isset($current_user) ) $current_user = wp_get_current_user(); echo $current_user->ID; ?>' ,
'time' : '<?php echo time() ?>'
},
ajaxurl = '<?php echo admin_url(' admin - ajax . php '); ?>' ,
pagenow = '<?php echo $current_screen->id; ?>' ,
typenow = '<?php if ( isset($current_screen->post_type) ) echo $current_screen->post_type; ?>' ,
adminpage = '<?php echo $admin_body_class; ?>' ,
thousandsSeparator = '<?php echo addslashes( $wp_locale->number_format[' thousands_sep '] ); ?>' ,
decimalPoint = '<?php echo addslashes( $wp_locale->number_format[' decimal_point '] ); ?>' ,
isRtl = < ? php echo ( int ) is_rtl (); ?> ;
2008-10-14 01:39:56 +02:00
//]]>
</ script >
< ? php
2010-12-12 06:43:35 +01:00
do_action ( 'admin_enqueue_scripts' , $hook_suffix );
do_action ( " admin_print_styles- $hook_suffix " );
2010-08-11 23:54:51 +02:00
do_action ( 'admin_print_styles' );
2010-12-12 06:43:35 +01:00
do_action ( " admin_print_scripts- $hook_suffix " );
2010-08-11 23:54:51 +02:00
do_action ( 'admin_print_scripts' );
2010-12-12 06:43:35 +01:00
do_action ( " admin_head- $hook_suffix " );
2010-08-11 23:54:51 +02:00
do_action ( 'admin_head' );
2008-10-14 01:39:56 +02:00
?>
</ head >
2010-08-11 23:54:51 +02:00
< body < ? php if ( isset ( $GLOBALS [ 'body_id' ]) ) echo ' id="' . $GLOBALS [ 'body_id' ] . '"' ; ?> class="no-js <?php echo $admin_body_class; ?>">
2010-04-17 14:27:13 +02:00
< script type = " text/javascript " >
//<![CDATA[
( function (){
var c = document . body . className ;
c = c . replace ( / no - js / , 'js' );
document . body . className = c ;
})();
//]]>
</ script >
2008-10-14 01:39:56 +02:00
< ? php
}
/**
* Generic Iframe footer for use with Thickbox
*
* @ since 2.7 . 0
*
*/
function iframe_footer () {
2009-05-16 21:21:29 +02:00
//We're going to hide any footer output on iframe pages, but run the hooks anyway since they output Javascript or other needed content. ?>
< div class = " hidden " >
< ? php
do_action ( 'admin_footer' , '' );
do_action ( 'admin_print_footer_scripts' ); ?>
</ div >
< script type = " text/javascript " > if ( typeof wpOnload == " function " ) wpOnload (); </ script >
</ body >
</ html >
< ? php
2008-10-03 05:06:43 +02:00
}
2008-10-14 05:49:57 +02:00
function _post_states ( $post ) {
$post_states = array ();
if ( isset ( $_GET [ 'post_status' ]) )
$post_status = $_GET [ 'post_status' ];
else
$post_status = '' ;
if ( ! empty ( $post -> post_password ) )
2008-12-06 12:10:24 +01:00
$post_states [] = __ ( 'Password protected' );
2008-10-14 05:49:57 +02:00
if ( 'private' == $post -> post_status && 'private' != $post_status )
$post_states [] = __ ( 'Private' );
if ( 'draft' == $post -> post_status && 'draft' != $post_status )
$post_states [] = __ ( 'Draft' );
if ( 'pending' == $post -> post_status && 'pending' != $post_status )
2009-03-02 20:20:19 +01:00
/* translators: post state */
$post_states [] = _x ( 'Pending' , 'post state' );
2009-02-17 20:13:31 +01:00
if ( is_sticky ( $post -> ID ) )
$post_states [] = __ ( 'Sticky' );
2010-12-15 19:50:39 +01:00
if ( get_post_format ( $post -> ID ) )
2010-11-05 04:04:13 +01:00
$post_states [] = '<span>[</span>' . get_post_format_string ( get_post_format ( $post -> ID ) ) . '<span>]</span>' ;
2008-10-14 05:49:57 +02:00
2009-02-04 17:52:36 +01:00
$post_states = apply_filters ( 'display_post_states' , $post_states );
2008-10-14 05:49:57 +02:00
if ( ! empty ( $post_states ) ) {
$state_count = count ( $post_states );
$i = 0 ;
2008-10-14 08:07:49 +02:00
echo ' - ' ;
2008-10-14 05:49:57 +02:00
foreach ( $post_states as $state ) {
++ $i ;
( $i == $state_count ) ? $sep = '' : $sep = ', ' ;
echo " <span class='post-state'> $state $sep </span> " ;
}
}
}
2010-05-14 17:47:14 +02:00
/**
* Convert a screen string to a screen object
2010-05-26 04:42:15 +02:00
*
2010-05-19 21:11:33 +02:00
* @ since 3.0 . 0
2010-05-26 04:42:15 +02:00
*
2010-05-14 17:47:14 +02:00
* @ param string $screen The name of the screen
* @ return object An object containing the safe screen name and id
*/
2010-01-15 17:58:36 +01:00
function convert_to_screen ( $screen ) {
2010-05-19 21:11:33 +02:00
$screen = str_replace ( array ( '.php' , '-new' , '-add' ), '' , $screen );
$screen = ( string ) apply_filters ( 'screen_meta_screen' , $screen );
$screen = ( object ) array ( 'id' => $screen , 'base' => $screen );
return $screen ;
2010-01-15 17:58:36 +01:00
}
function screen_meta ( $screen ) {
2010-10-07 21:34:18 +02:00
global $wp_meta_boxes , $_wp_contextual_help , $wp_list_table , $wp_current_screen_options ;
2010-01-15 17:58:36 +01:00
if ( is_string ( $screen ) )
$screen = convert_to_screen ( $screen );
2010-09-24 15:35:06 +02:00
$columns = get_column_headers ( $screen );
$hidden = get_hidden_columns ( $screen );
2008-11-11 23:40:16 +01:00
$meta_screens = array ( 'index' => 'dashboard' );
2010-01-15 17:58:36 +01:00
if ( isset ( $meta_screens [ $screen -> id ]) ) {
$screen -> id = $meta_screens [ $screen -> id ];
$screen -> base = $screen -> id ;
2010-01-12 01:14:27 +01:00
}
2010-01-04 17:58:43 +01:00
2008-11-06 23:21:27 +01:00
$show_screen = false ;
2010-09-24 15:35:06 +02:00
if ( ! empty ( $wp_meta_boxes [ $screen -> id ]) || ! empty ( $columns ) )
2009-04-21 08:49:53 +02:00
$show_screen = true ;
$screen_options = screen_options ( $screen );
if ( $screen_options )
2008-11-06 23:21:27 +01:00
$show_screen = true ;
2008-11-06 09:32:25 +01:00
2008-11-18 20:54:54 +01:00
if ( ! isset ( $_wp_contextual_help ) )
$_wp_contextual_help = array ();
2008-12-06 21:54:51 +01:00
2010-04-29 05:43:39 +02:00
$settings = apply_filters ( 'screen_settings' , '' , $screen );
2009-06-02 01:31:34 +02:00
2010-01-15 17:58:36 +01:00
switch ( $screen -> id ) {
2009-04-30 04:33:22 +02:00
case 'widgets' :
2009-06-07 03:52:44 +02:00
$settings = '<p><a id="access-on" href="widgets.php?widgets-access=on">' . __ ( 'Enable accessibility mode' ) . '</a><a id="access-off" href="widgets.php?widgets-access=off">' . __ ( 'Disable accessibility mode' ) . " </a></p> \n " ;
2010-05-14 18:39:56 +02:00
$show_screen = true ;
2009-04-30 04:33:22 +02:00
break ;
2008-12-06 21:54:51 +01:00
}
2010-10-07 21:34:18 +02:00
if ( ! empty ( $settings ) )
$show_screen = true ;
if ( ! empty ( $wp_current_screen_options ) )
2010-04-29 05:43:39 +02:00
$show_screen = true ;
2010-08-11 23:54:51 +02:00
2009-03-25 15:29:22 +01:00
?>
< div id = " screen-meta " >
2010-05-14 18:12:46 +02:00
< ? php if ( $show_screen ) : ?>
2009-03-25 15:29:22 +01:00
< div id = " screen-options-wrap " class = " hidden " >
2009-04-17 14:46:53 +02:00
< form id = " adv-settings " action = " " method = " post " >
2010-04-29 05:43:39 +02:00
< ? php if ( isset ( $wp_meta_boxes [ $screen -> id ]) ) : ?>
2010-08-11 23:54:51 +02:00
< h5 >< ? php _ex ( 'Show on screen' , 'Metaboxes' ) ?> </h5>
2010-04-29 05:43:39 +02:00
< div class = " metabox-prefs " >
< ? php meta_box_prefs ( $screen ); ?>
< br class = " clear " />
</ div >
< ? php endif ;
2010-09-24 15:35:06 +02:00
if ( ! empty ( $columns ) ) : ?>
< h5 >< ? php echo ( isset ( $columns [ '_title' ] ) ? $columns [ '_title' ] : _x ( 'Show on screen' , 'Columns' ) ) ?> </h5>
2010-04-29 05:43:39 +02:00
< div class = " metabox-prefs " >
2010-09-24 15:35:06 +02:00
< ? php
$special = array ( '_title' , 'cb' , 'comment' , 'media' , 'name' , 'title' , 'username' );
foreach ( $columns as $column => $title ) {
// Can't hide these for they are special
if ( in_array ( $column , $special ) )
continue ;
if ( empty ( $title ) )
continue ;
if ( 'comments' == $column )
$title = __ ( 'Comments' );
$id = " $column -hide " ;
echo '<label for="' . $id . '">' ;
echo '<input class="hide-column-tog" name="' . $id . '" type="checkbox" id="' . $id . '" value="' . $column . '"' . checked ( ! in_array ( $column , $hidden ), true , false ) . ' />' ;
echo " $title </label> \n " ;
}
?>
2010-04-29 05:43:39 +02:00
< br class = " clear " />
</ div >
< ? php endif ;
echo screen_layout ( $screen );
2010-05-20 23:29:45 +02:00
if ( ! empty ( $screen_options ) ) {
2010-05-26 04:42:15 +02:00
?>
2010-08-11 23:54:51 +02:00
< h5 >< ? php _ex ( 'Show on screen' , 'Screen Options' ) ?> </h5>
2010-05-20 23:29:45 +02:00
< ? php
}
2010-05-26 04:42:15 +02:00
2010-04-29 05:43:39 +02:00
echo $screen_options ;
echo $settings ; ?>
2009-04-05 10:25:10 +02:00
< div >< ? php wp_nonce_field ( 'screen-options-nonce' , 'screenoptionnonce' , false ); ?> </div>
2009-03-25 15:29:22 +01:00
</ form >
</ div >
2010-05-14 18:12:46 +02:00
< ? php endif ; // $show_screen
2009-03-25 15:29:22 +01:00
2008-12-09 19:03:31 +01:00
$_wp_contextual_help = apply_filters ( 'contextual_help_list' , $_wp_contextual_help , $screen );
2008-11-06 09:13:50 +01:00
?>
< div id = " contextual-help-wrap " class = " hidden " >
< ? php
2008-11-12 18:11:49 +01:00
$contextual_help = '' ;
2010-01-15 17:58:36 +01:00
if ( isset ( $_wp_contextual_help [ $screen -> id ]) ) {
$contextual_help .= '<div class="metabox-prefs">' . $_wp_contextual_help [ $screen -> id ] . " </div> \n " ;
2008-11-12 18:11:49 +01:00
} else {
2010-05-26 05:36:04 +02:00
$contextual_help .= '<div class="metabox-prefs">' ;
$default_help = __ ( '<a href="http://codex.wordpress.org/" target="_blank">Documentation</a>' );
$default_help .= '<br />' ;
$default_help .= __ ( '<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>' );
$contextual_help .= apply_filters ( 'default_contextual_help' , $default_help );
$contextual_help .= " </div> \n " ;
2008-11-06 23:21:27 +01:00
}
2008-11-12 18:11:49 +01:00
2010-04-15 18:09:56 +02:00
echo apply_filters ( 'contextual_help' , $contextual_help , $screen -> id , $screen );
2008-11-06 09:13:50 +01:00
?>
2008-10-27 02:22:24 +01:00
</ div >
2008-11-06 09:13:50 +01:00
< div id = " screen-meta-links " >
< div id = " contextual-help-link-wrap " class = " hide-if-no-js screen-meta-toggle " >
2010-08-11 23:54:51 +02:00
< a href = " #contextual-help " id = " contextual-help-link " class = " show-settings " >< ? php _e ( 'Help' ) ?> </a>
2008-11-06 09:13:50 +01:00
</ div >
2008-11-06 23:21:27 +01:00
< ? php if ( $show_screen ) { ?>
2008-11-06 09:13:50 +01:00
< div id = " screen-options-link-wrap " class = " hide-if-no-js screen-meta-toggle " >
2010-08-11 23:54:51 +02:00
< a href = " #screen-options " id = " show-settings-link " class = " show-settings " >< ? php _e ( 'Screen Options' ) ?> </a>
2008-11-06 09:13:50 +01:00
</ div >
2008-11-06 23:21:27 +01:00
< ? php } ?>
2008-11-06 09:13:50 +01:00
</ div >
2008-10-27 02:22:24 +01:00
</ div >
< ? php
}
2008-11-18 20:54:54 +01:00
/**
* Add contextual help text for a page
*
* @ since 2.7 . 0
*
2010-08-11 23:54:51 +02:00
* @ param string $screen The handle for the screen to add help to . This is usually the hook name returned by the add_ * _page () functions .
2008-11-18 20:54:54 +01:00
* @ param string $help Arbitrary help text
*/
function add_contextual_help ( $screen , $help ) {
global $_wp_contextual_help ;
2010-01-15 17:58:36 +01:00
if ( is_string ( $screen ) )
$screen = convert_to_screen ( $screen );
2008-11-18 20:54:54 +01:00
if ( ! isset ( $_wp_contextual_help ) )
$_wp_contextual_help = array ();
2010-01-15 17:58:36 +01:00
$_wp_contextual_help [ $screen -> id ] = $help ;
2008-11-18 20:54:54 +01:00
}
2009-02-24 03:37:22 +01:00
function screen_layout ( $screen ) {
2010-10-07 21:34:18 +02:00
global $screen_layout_columns , $wp_current_screen_options ;
2009-02-24 03:37:22 +01:00
2010-01-15 17:58:36 +01:00
if ( is_string ( $screen ) )
$screen = convert_to_screen ( $screen );
2010-10-07 21:34:18 +02:00
// 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 ]) );
2010-01-04 17:58:43 +01:00
2010-10-07 21:34:18 +02:00
if ( ! isset ( $wp_current_screen_options [ 'layout_columns' ]) ) {
2009-05-01 00:51:42 +02:00
$screen_layout_columns = 0 ;
return '' ;
2010-10-07 21:34:18 +02:00
}
2009-05-25 01:47:49 +02:00
2010-01-15 17:58:36 +01:00
$screen_layout_columns = get_user_option ( " screen_layout_ $screen->id " );
2010-10-07 21:34:18 +02:00
$num = $wp_current_screen_options [ 'layout_columns' ][ 'max' ];
2009-03-18 03:43:45 +01:00
2010-10-07 21:34:18 +02:00
if ( ! $screen_layout_columns ) {
if ( isset ( $wp_current_screen_options [ 'layout_columns' ][ 'default' ]) )
$screen_layout_columns = $wp_current_screen_options [ 'layout_columns' ][ 'default' ];
else
2010-08-11 23:54:51 +02:00
$screen_layout_columns = 2 ;
2010-10-07 21:34:18 +02:00
}
2009-02-24 03:37:22 +01:00
$i = 1 ;
$return = '<h5>' . __ ( 'Screen Layout' ) . " </h5> \n <div class='columns-prefs'> " . __ ( 'Number of Columns:' ) . " \n " ;
while ( $i <= $num ) {
$return .= " <label><input type='radio' name='screen_columns' value=' $i ' " . ( ( $screen_layout_columns == $i ) ? " checked='checked' " : " " ) . " /> $i </label> \n " ;
++ $i ;
}
$return .= " </div> \n " ;
return $return ;
}
2010-10-07 21:34:18 +02:00
/**
* 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 ;
}
2009-03-27 23:47:47 +01:00
function screen_options ( $screen ) {
2010-10-07 21:34:18 +02:00
global $wp_current_screen_options ;
2010-01-15 17:58:36 +01:00
if ( is_string ( $screen ) )
$screen = convert_to_screen ( $screen );
2010-01-12 01:14:27 +01:00
2010-10-07 21:34:18 +02:00
if ( ! isset ( $wp_current_screen_options [ 'per_page' ]) )
return '' ;
2009-03-27 23:47:47 +01:00
2010-10-07 21:34:18 +02:00
$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' ];
2010-02-13 04:52:33 +01:00
}
2010-01-07 01:01:52 +01:00
$per_page = ( int ) get_user_option ( $option );
2009-12-12 00:14:43 +01:00
if ( empty ( $per_page ) || $per_page < 1 ) {
2010-10-07 21:34:18 +02:00
if ( isset ( $wp_current_screen_options [ 'per_page' ][ 'default' ]) )
$per_page = $wp_current_screen_options [ 'per_page' ][ 'default' ];
2009-05-13 06:26:40 +02:00
else
$per_page = 20 ;
}
2010-02-13 04:52:33 +01:00
2009-12-12 00:14:43 +01:00
if ( 'edit_comments_per_page' == $option )
$per_page = apply_filters ( 'comments_per_page' , $per_page , isset ( $_REQUEST [ 'comment_status' ]) ? $_REQUEST [ 'comment_status' ] : 'all' );
2010-02-13 04:52:33 +01:00
elseif ( 'categories_per_page' == $option )
2009-12-12 00:14:43 +01:00
$per_page = apply_filters ( 'edit_categories_per_page' , $per_page );
else
$per_page = apply_filters ( $option , $per_page );
2009-03-27 23:47:47 +01:00
2010-04-18 19:15:58 +02:00
$return = " <div class='screen-options'> \n " ;
2009-03-27 23:47:47 +01:00
if ( ! empty ( $per_page_label ) )
2010-04-18 19:15:58 +02:00
$return .= " <input type='text' class='screen-per-page' name='wp_screen_options[value]' id=' $option ' maxlength='3' value=' $per_page ' /> <label for=' $option '> $per_page_label </label> \n " ;
2010-10-28 23:56:43 +02:00
$return .= get_submit_button ( __ ( 'Apply' ), 'button' , '' , false );
2009-05-05 21:43:53 +02:00
$return .= " <input type='hidden' name='wp_screen_options[option]' value=' " . esc_attr ( $option ) . " ' /> " ;
2009-03-27 23:47:47 +01:00
$return .= " </div> \n " ;
return $return ;
}
2010-01-15 17:58:36 +01:00
function screen_icon ( $screen = '' ) {
2010-09-26 11:34:09 +02:00
global $current_screen , $typenow ;
2010-01-15 17:58:36 +01:00
if ( empty ( $screen ) )
$screen = $current_screen ;
elseif ( is_string ( $screen ) )
$name = $screen ;
2008-11-26 14:51:25 +01:00
2010-09-26 11:34:09 +02:00
$class = 'icon32' ;
2008-11-27 00:35:23 +01:00
if ( empty ( $name ) ) {
2010-01-15 17:58:36 +01:00
if ( ! empty ( $screen -> parent_base ) )
$name = $screen -> parent_base ;
2008-11-27 00:35:23 +01:00
else
2010-01-15 17:58:36 +01:00
$name = $screen -> base ;
2010-01-20 23:35:21 +01:00
2010-03-11 17:54:47 +01:00
if ( 'edit' == $name && isset ( $screen -> post_type ) && 'page' == $screen -> post_type )
$name = 'edit-pages' ;
2010-09-26 10:51:34 +02:00
2010-09-26 11:34:09 +02:00
$post_type = '' ;
2010-09-26 10:51:34 +02:00
if ( isset ( $screen -> post_type ) )
2010-09-26 11:34:09 +02:00
$post_type = $screen -> post_type ;
elseif ( $current_screen == $screen )
$post_type = $typenow ;
if ( $post_type )
$class .= ' ' . sanitize_html_class ( 'icon32-posts-' . $post_type );
2008-11-27 00:35:23 +01:00
}
2010-01-20 23:35:21 +01:00
2008-11-26 14:51:25 +01:00
?>
2010-09-26 10:51:34 +02:00
< div id = " icon-<?php echo $name ; ?> " class = " <?php echo $class ; ?> " >< br /></ div >
2008-11-26 14:51:25 +01:00
< ? php
}
2009-01-14 15:18:51 +01:00
/**
2009-01-26 13:59:10 +01:00
* Test support for compressing JavaScript from PHP
2009-01-14 15:18:51 +01:00
*
* Outputs JavaScript that tests if compression from PHP works as expected
* and sets an option with the result . Has no effect when the current user
* is not an administrator . To run the test again the option 'can_compress_scripts'
2009-02-01 10:45:24 +01:00
* has to be deleted .
2009-01-14 15:18:51 +01:00
*
* @ since 2.8 . 0
*/
function compression_test () {
?>
< script type = " text/javascript " >
/* <![CDATA[ */
2009-02-01 10:45:24 +01:00
var testCompression = {
get : function ( test ) {
var x ;
if ( window . XMLHttpRequest ) {
x = new XMLHttpRequest ();
} else {
try { x = new ActiveXObject ( 'Msxml2.XMLHTTP' );} catch ( e ){ try { x = new ActiveXObject ( 'Microsoft.XMLHTTP' );} catch ( e ){};}
}
if ( x ) {
x . onreadystatechange = function () {
var r , h ;
if ( x . readyState == 4 ) {
r = x . responseText . substr ( 0 , 18 );
h = x . getResponseHeader ( 'Content-Encoding' );
testCompression . check ( r , h , test );
}
}
2010-12-02 15:15:25 +01:00
x . open ( 'GET' , ajaxurl + '?action=wp-compression-test&test=' + test + '&' + ( new Date ()) . getTime (), true );
2009-02-01 10:45:24 +01:00
x . send ( '' );
}
},
check : function ( r , h , test ) {
if ( ! r && ! test )
this . get ( 1 );
if ( 1 == test ) {
if ( h && ( h . match ( / deflate / i ) || h . match ( / gzip / i ) ) )
this . get ( 'no' );
else
this . get ( 2 );
return ;
}
if ( 2 == test ) {
if ( '"wpCompressionTest' == r )
this . get ( 'yes' );
else
this . get ( 'no' );
}
2009-01-14 15:18:51 +01:00
}
2009-02-01 10:45:24 +01:00
};
testCompression . check ();
2009-01-14 15:18:51 +01:00
/* ]]> */
</ script >
< ? php
}
2010-10-07 21:34:18 +02:00
/**
* 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 ;
}
2010-01-22 19:27:54 +01:00
/**
* Set the current screen object
*
2010-03-26 20:13:36 +01:00
* @ since 3.0 . 0
2010-01-22 19:27:54 +01:00
*
* @ uses $current_screen
2010-01-22 20:30:05 +01:00
*
2010-01-22 19:27:54 +01:00
* @ param string $id Screen id , optional .
*/
2010-08-11 23:54:51 +02:00
function set_current_screen ( $id = '' ) {
2010-06-08 17:34:42 +02:00
global $current_screen , $hook_suffix , $typenow , $taxnow ;
2010-01-22 19:27:54 +01:00
2010-06-14 21:33:04 +02:00
$action = '' ;
2010-01-22 19:27:54 +01:00
if ( empty ( $id ) ) {
$current_screen = $hook_suffix ;
$current_screen = str_replace ( '.php' , '' , $current_screen );
2010-06-14 21:33:04 +02:00
if ( preg_match ( '/-add|-new$/' , $current_screen ) )
$action = 'add' ;
2010-01-22 19:27:54 +01:00
$current_screen = str_replace ( '-new' , '' , $current_screen );
$current_screen = str_replace ( '-add' , '' , $current_screen );
$current_screen = array ( 'id' => $current_screen , 'base' => $current_screen );
} else {
2010-06-09 18:52:25 +02:00
$id = sanitize_key ( $id );
if ( false !== strpos ( $id , '-' ) ) {
2010-01-22 19:27:54 +01:00
list ( $id , $typenow ) = explode ( '-' , $id , 2 );
2010-06-13 08:20:51 +02:00
if ( taxonomy_exists ( $typenow ) ) {
2010-06-09 18:52:25 +02:00
$id = 'edit-tags' ;
$taxnow = $typenow ;
$typenow = '' ;
}
}
2010-01-22 19:27:54 +01:00
$current_screen = array ( 'id' => $id , 'base' => $id );
}
2010-01-22 20:30:05 +01:00
2010-01-22 19:27:54 +01:00
$current_screen = ( object ) $current_screen ;
2010-01-22 20:30:05 +01:00
2010-06-14 21:33:04 +02:00
$current_screen -> action = $action ;
2010-04-14 23:55:09 +02:00
// Map index to dashboard
if ( 'index' == $current_screen -> base )
$current_screen -> base = 'dashboard' ;
if ( 'index' == $current_screen -> id )
$current_screen -> id = 'dashboard' ;
2010-01-22 19:27:54 +01:00
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 ;
2010-06-08 17:34:42 +02:00
} elseif ( 'edit-tags' == $current_screen -> id ) {
if ( empty ( $taxnow ) )
$taxnow = 'post_tag' ;
$current_screen -> id = 'edit-' . $taxnow ;
$current_screen -> taxonomy = $taxnow ;
2010-01-22 19:27:54 +01:00
}
2010-01-22 20:30:05 +01:00
2010-11-04 19:28:58 +01:00
$current_screen -> is_network = is_network_admin ();
$current_screen -> is_user = is_user_admin ();
2010-10-19 09:48:22 +02:00
2010-10-07 21:34:18 +02:00
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' ;
}
2010-08-02 21:07:03 +02:00
2010-01-22 19:27:54 +01:00
$current_screen = apply_filters ( 'current_screen' , $current_screen );
}
2010-10-14 21:58:06 +02:00
/**
2010-10-28 23:56:43 +02:00
* Echos a submit button , with provided text and appropriate class
2010-10-14 21:58:06 +02:00
*
* @ 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
2010-10-28 23:56:43 +02:00
* @ 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 .
2010-10-14 21:58:06 +02:00
*/
2010-10-28 23:56:43 +02:00
function submit_button ( $text = NULL , $type = 'primary' , $name = 'submit' , $wrap = true , $other_attributes = NULL ) {
echo get_submit_button ( $text , $type , $name , $wrap , $other_attributes );
2010-10-14 21:58:06 +02:00
}
/**
2010-10-28 23:56:43 +02:00
* Returns a submit button , with provided text and appropriate class
2010-10-14 21:58:06 +02:00
*
* @ 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
2010-10-28 23:56:43 +02:00
* @ 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 .
2010-10-14 21:58:06 +02:00
*/
2010-10-28 23:56:43 +02:00
function get_submit_button ( $text = NULL , $type = 'primary' , $name = 'submit' , $wrap = true , $other_attributes = NULL ) {
2010-10-14 21:58:06 +02:00
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 ;
2010-11-17 19:47:34 +01:00
2010-11-24 17:30:40 +01:00
// Default the id attribute to $name unless an id was specifically provided in $other_attributes
$id = $name ;
if ( is_array ( $other_attributes ) && isset ( $other_attributes [ 'id' ] ) ) {
$id = $other_attributes [ 'id' ];
unset ( $other_attributes [ 'id' ] );
}
2010-10-28 23:56:43 +02:00
$attributes = '' ;
if ( is_array ( $other_attributes ) ) {
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
$attributes = $other_attributes ;
}
2010-11-17 19:47:34 +01:00
2010-10-30 08:14:15 +02:00
$button = '<input type="submit" name="' . esc_attr ( $name ) . '" id="' . esc_attr ( $id ) . '" class="' . esc_attr ( $class );
2010-10-28 23:56:43 +02:00
$button .= '" value="' . esc_attr ( $text ) . '" ' . $attributes . ' />' ;
2010-11-17 19:47:34 +01:00
2010-10-28 23:56:43 +02:00
if ( $wrap ) {
$button = '<p class="submit">' . $button . '</p>' ;
}
2010-11-17 19:47:34 +01:00
2010-10-28 23:56:43 +02:00
return $button ;
2010-10-14 21:58:06 +02:00
}