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
2008-10-05 06:43:52 +02:00
/**
* { @ internal Missing Short Description }}
*
* @ since 2.7
2008-10-08 03:18:16 +02:00
*
2010-05-24 18:09:52 +02:00
* Outputs the HTML for the hidden table rows used in Categories , Link Categories and Tags quick edit .
2008-10-05 06:43:52 +02:00
*
2010-05-11 21:52:50 +02:00
* @ param string $type " edit-tags " , " categoried " or " edit-link-categories "
2010-01-24 12:00:27 +01:00
* @ param string $taxonomy The taxonomy of the row .
2008-10-08 03:18:16 +02:00
* @ return
2008-10-05 06:43:52 +02:00
*/
2010-01-24 12:00:27 +01:00
function inline_edit_term_row ( $type , $taxonomy ) {
2008-10-05 06:43:52 +02:00
2010-01-26 12:32:04 +01:00
$tax = get_taxonomy ( $taxonomy );
2010-05-13 06:10:17 +02:00
if ( ! current_user_can ( $tax -> cap -> edit_terms ) )
2008-10-05 06:43:52 +02:00
return ;
2008-11-30 00:09:04 +01:00
$columns = get_column_headers ( $type );
2008-11-25 19:33:04 +01:00
$hidden = array_intersect ( array_keys ( $columns ), array_filter ( get_hidden_columns ( $type ) ) );
2008-11-11 03:58:24 +01:00
$col_count = count ( $columns ) - count ( $hidden );
2008-11-15 19:10:35 +01:00
?>
2008-10-05 06:43:52 +02:00
< form method = " get " action = " " >< table style = " display: none " >< tbody id = " inlineedit " >
2008-11-11 03:58:24 +01:00
< tr id = " inline-edit " class = " inline-edit-row " style = " display: none " >< td colspan = " <?php echo $col_count ; ?> " >
2008-10-05 06:43:52 +02:00
2008-11-11 03:58:24 +01:00
< fieldset >< div class = " inline-edit-col " >
< h4 >< ? php _e ( 'Quick Edit' ); ?> </h4>
2008-10-05 06:43:52 +02:00
2008-11-11 03:58:24 +01:00
< label >
< span class = " title " >< ? php _e ( 'Name' ); ?> </span>
< span class = " input-text-wrap " >< input type = " text " name = " name " class = " ptitle " value = " " /></ span >
</ label >
2010-01-15 01:21:13 +01:00
< ? php if ( ! is_multisite () ) { ?>
2008-11-11 03:58:24 +01:00
< label >
< span class = " title " >< ? php _e ( 'Slug' ); ?> </span>
< span class = " input-text-wrap " >< input type = " text " name = " slug " class = " ptitle " value = " " /></ span >
</ label >
2010-01-15 01:21:13 +01:00
< ? php } ?>
2008-10-05 06:43:52 +02:00
2008-11-11 03:58:24 +01:00
</ div ></ fieldset >
< ? php
$core_columns = array ( 'cb' => true , 'description' => true , 'name' => true , 'slug' => true , 'posts' => true );
foreach ( $columns as $column_name => $column_display_name ) {
if ( isset ( $core_columns [ $column_name ] ) )
continue ;
2010-01-24 12:00:27 +01:00
do_action ( 'quick_edit_custom_box' , $column_name , $type , $taxonomy );
2008-10-05 06:43:52 +02:00
}
2008-11-11 03:58:24 +01:00
?>
< p class = " inline-edit-save submit " >
< a accesskey = " c " href = " #inline-edit " title = " <?php _e('Cancel'); ?> " class = " cancel button-secondary alignleft " >< ? php _e ( 'Cancel' ); ?> </a>
2010-05-14 02:34:04 +02:00
< ? php $update_text = $tax -> labels -> update_item ; ?>
2009-05-05 21:43:53 +02:00
< a accesskey = " s " href = " #inline-edit " title = " <?php echo esc_attr( $update_text ); ?> " class = " save button-primary alignright " >< ? php echo $update_text ; ?> </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-10-05 06:43:52 +02:00
< ? php wp_nonce_field ( 'taxinlineeditnonce' , '_inline_edit' , false ); ?>
2010-03-09 11:23:03 +01:00
< input type = " hidden " name = " taxonomy " value = " <?php echo esc_attr( $tax->name ); ?> " />
2008-11-11 03:58:24 +01:00
< br class = " clear " />
</ p >
2008-10-05 06:43:52 +02:00
</ td ></ tr >
</ tbody ></ table ></ form >
< ? php
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $category
* @ param unknown_type $name_override
* @ return unknown
*/
2008-09-28 00:00:52 +02:00
function link_cat_row ( $category , $name_override = false ) {
2008-11-18 18:41:50 +01:00
static $row_class = '' ;
2007-10-31 04:53:32 +01:00
2008-11-18 18:25:43 +01:00
if ( ! $category = get_term ( $category , 'link_category' , OBJECT , 'display' ) )
2007-10-31 04:53:32 +01:00
return false ;
if ( is_wp_error ( $category ) )
return $category ;
2008-09-17 02:11:17 +02:00
$default_cat_id = ( int ) get_option ( 'default_link_category' );
2008-11-18 18:25:43 +01:00
$name = ( $name_override ? $name_override : $category -> name );
2008-09-17 02:11:17 +02:00
$edit_link = " link-category.php?action=edit&cat_ID= $category->term_id " ;
2007-10-31 04:53:32 +01:00
if ( current_user_can ( 'manage_categories' ) ) {
2009-05-05 21:43:53 +02:00
$edit = " <a class='row-title' href=' $edit_link ' title=' " . esc_attr ( sprintf ( __ ( 'Edit “%s”' ), $category -> name )) . " '> $name </a><br /> " ;
2008-09-17 02:11:17 +02:00
$actions = array ();
$actions [ 'edit' ] = '<a href="' . $edit_link . '">' . __ ( 'Edit' ) . '</a>' ;
2008-10-29 09:23:48 +01:00
$actions [ 'inline hide-if-no-js' ] = '<a href="#" class="editinline">' . __ ( 'Quick Edit' ) . '</a>' ;
2008-09-17 02:11:17 +02:00
if ( $default_cat_id != $category -> term_id )
2009-02-07 16:26:01 +01:00
$actions [ 'delete' ] = " <a class='delete:the-list:link-cat- $category->term_id submitdelete' href=' " . wp_nonce_url ( " link-category.php?action=delete&cat_ID= $category->term_id " , 'delete-link-category_' . $category -> term_id ) . " '> " . __ ( 'Delete' ) . " </a> " ;
2009-02-23 05:28:50 +01:00
$actions = apply_filters ( 'link_cat_row_actions' , $actions , $category );
2008-09-17 02:11:17 +02:00
$action_count = count ( $actions );
$i = 0 ;
2008-11-28 05:33:35 +01:00
$edit .= '<div class="row-actions">' ;
2008-09-17 02:11:17 +02:00
foreach ( $actions as $action => $link ) {
++ $i ;
( $i == $action_count ) ? $sep = '' : $sep = ' | ' ;
$edit .= " <span class=' $action '> $link $sep </span> " ;
}
2008-11-28 05:33:35 +01:00
$edit .= '</div>' ;
2007-10-31 04:53:32 +01:00
} else {
2008-03-18 00:51:34 +01:00
$edit = $name ;
2007-10-31 04:53:32 +01:00
}
2008-11-18 18:41:50 +01:00
$row_class = 'alternate' == $row_class ? '' : 'alternate' ;
2008-11-18 18:25:43 +01:00
$qe_data = get_term_to_edit ( $category -> term_id , 'link_category' );
2007-10-31 04:53:32 +01:00
$category -> count = number_format_i18n ( $category -> count );
$count = ( $category -> count > 0 ) ? " <a href='link-manager.php?cat_id= $category->term_id '> $category->count </a> " : $category -> count ;
2008-11-18 18:41:50 +01:00
$output = " <tr id='link-cat- $category->term_id ' class='iedit $row_class '> " ;
2008-11-17 20:16:26 +01:00
$columns = get_column_headers ( 'edit-link-categories' );
$hidden = get_hidden_columns ( 'edit-link-categories' );
2008-09-19 00:52:07 +02:00
foreach ( $columns as $column_name => $column_display_name ) {
$class = " class= \" $column_name column- $column_name\ " " ;
$style = '' ;
if ( in_array ( $column_name , $hidden ) )
$style = ' style="display:none;"' ;
$attributes = " $class $style " ;
switch ( $column_name ) {
case 'cb' :
2008-09-21 21:45:45 +02:00
$output .= " <th scope='row' class='check-column'> " ;
if ( absint ( get_option ( 'default_link_category' ) ) != $category -> term_id ) {
$output .= " <input type='checkbox' name='delete[]' value=' $category->term_id ' /> " ;
} else {
$output .= " " ;
}
$output .= " </th> " ;
break ;
2008-09-19 00:52:07 +02:00
case 'name' :
2008-10-05 06:43:52 +02:00
$output .= " <td $attributes > $edit " ;
2008-11-18 18:25:43 +01:00
$output .= '<div class="hidden" id="inline_' . $qe_data -> term_id . '">' ;
$output .= '<div class="name">' . $qe_data -> name . '</div>' ;
2009-11-25 16:11:57 +01:00
$output .= '<div class="slug">' . apply_filters ( 'editable_slug' , $qe_data -> slug ) . '</div>' ;
2008-11-18 18:25:43 +01:00
$output .= '<div class="cat_parent">' . $qe_data -> parent . '</div></div></td>' ;
2008-09-19 00:52:07 +02:00
break ;
case 'description' :
2008-11-18 18:25:43 +01:00
$output .= " <td $attributes > $category->description </td> " ;
2008-09-19 00:52:07 +02:00
break ;
2008-12-03 20:18:41 +01:00
case 'slug' :
2009-11-25 16:11:57 +01:00
$output .= " <td $attributes > " . apply_filters ( 'editable_slug' , $category -> slug ) . " </td> " ;
2008-12-03 20:18:41 +01:00
break ;
2008-09-19 00:52:07 +02:00
case 'links' :
$attributes = 'class="links column-links num"' . $style ;
$output .= " <td $attributes > $count </td> " ;
2009-01-04 05:21:35 +01:00
break ;
default :
$output .= " <td $attributes > " ;
2009-02-04 13:31:47 +01:00
$output .= apply_filters ( 'manage_link_categories_custom_column' , '' , $column_name , $category -> term_id );
2009-01-04 05:21:35 +01:00
$output .= " </td> " ;
2008-09-19 00:52:07 +02:00
}
2008-04-03 07:02:19 +02:00
}
2008-09-19 00:52:07 +02:00
$output .= '</tr>' ;
2007-10-31 04:53:32 +01:00
2008-11-18 18:25:43 +01:00
return $output ;
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 }}
*
* @ since unknown
*/
2008-04-18 19:41:10 +02:00
class Walker_Category_Checklist extends Walker {
var $tree_type = 'category' ;
var $db_fields = array ( 'parent' => 'parent' , 'id' => 'term_id' ); //TODO: decouple this
2007-05-25 09:16:21 +02:00
2008-04-21 21:30:54 +02:00
function start_lvl ( & $output , $depth , $args ) {
2008-04-18 19:41:10 +02:00
$indent = str_repeat ( " \t " , $depth );
$output .= " $indent <ul class='children'> \n " ;
}
2007-05-25 09:16:21 +02:00
2008-04-21 21:30:54 +02:00
function end_lvl ( & $output , $depth , $args ) {
2008-04-18 19:41:10 +02:00
$indent = str_repeat ( " \t " , $depth );
$output .= " $indent </ul> \n " ;
2007-05-25 09:16:21 +02:00
}
2008-04-21 21:30:54 +02:00
function start_el ( & $output , $category , $depth , $args ) {
2008-04-18 19:41:10 +02:00
extract ( $args );
2010-01-22 20:30:05 +01:00
if ( empty ( $taxonomy ) )
$taxonomy = 'category' ;
if ( $taxonomy == 'category' )
$name = 'post_category' ;
else
$name = 'tax_input[' . $taxonomy . ']' ;
2007-05-25 09:16:21 +02:00
2008-04-18 19:41:10 +02:00
$class = in_array ( $category -> term_id , $popular_cats ) ? ' class="popular-category"' : '' ;
2010-03-11 18:12:23 +01:00
$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-05-25 09:16:21 +02:00
}
2008-04-21 21:30:54 +02:00
function end_el ( & $output , $category , $depth , $args ) {
2008-04-18 19:41:10 +02:00
$output .= " </li> \n " ;
}
2007-05-25 09:16:21 +02:00
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $post_id
* @ param unknown_type $descendants_and_self
* @ param unknown_type $selected_cats
* @ param unknown_type $popular_cats
*/
2009-10-13 12:02:42 +02:00
function wp_category_checklist ( $post_id = 0 , $descendants_and_self = 0 , $selected_cats = false , $popular_cats = false , $walker = null , $checked_ontop = true ) {
2010-01-22 20:30:05 +01:00
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
));
}
/**
* Taxonomy independent version of wp_category_checklist
*
* @ 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-12-23 13:52:37 +01:00
if ( empty ( $walker ) || ! is_a ( $walker , 'Walker' ) )
$walker = new Walker_Category_Checklist ;
2008-04-23 00:45:53 +02:00
$descendants_and_self = ( int ) $descendants_and_self ;
2007-05-25 09:16:21 +02:00
2010-01-22 20:30:05 +01:00
$args = array ( 'taxonomy' => $taxonomy );
2008-08-09 07:36:14 +02:00
2010-02-05 15:33:29 +01:00
$tax = get_taxonomy ( $taxonomy );
2010-05-13 06:10:17 +02:00
$args [ 'disabled' ] = ! current_user_can ( $tax -> cap -> assign_terms );
2010-02-05 15:33:29 +01:00
2008-05-19 23:35:18 +02:00
if ( is_array ( $selected_cats ) )
$args [ 'selected_cats' ] = $selected_cats ;
elseif ( $post_id )
2010-01-22 20:30:05 +01:00
$args [ 'selected_cats' ] = wp_get_object_terms ( $post_id , $taxonomy , array_merge ( $args , array ( 'fields' => 'ids' )));
2008-04-18 20:12:04 +02:00
else
$args [ 'selected_cats' ] = array ();
2008-05-19 23:35:18 +02:00
if ( is_array ( $popular_cats ) )
$args [ 'popular_cats' ] = $popular_cats ;
else
2010-01-22 20:30:05 +01:00
$args [ 'popular_cats' ] = get_terms ( $taxonomy , array ( 'fields' => 'ids' , 'orderby' => 'count' , 'order' => 'DESC' , 'number' => 10 , 'hierarchical' => false ) );
2008-05-19 23:35:18 +02:00
2008-04-23 00:45:53 +02:00
if ( $descendants_and_self ) {
2010-01-22 20:30:05 +01:00
$categories = ( array ) get_terms ( $taxonomy , array ( 'child_of' => $descendants_and_self , 'hierarchical' => 0 , 'hide_empty' => 0 ) );
$self = get_term ( $descendants_and_self , $taxonomy );
2008-04-23 00:45:53 +02:00
array_unshift ( $categories , $self );
} else {
2010-01-22 20:30:05 +01:00
$categories = ( array ) get_terms ( $taxonomy , array ( 'get' => 'all' ));
2008-04-23 00:45:53 +02:00
}
2009-10-13 12:02:42 +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 );
2009-05-25 01:47:49 +02:00
2009-10-13 12:02:42 +02:00
foreach ( $keys as $k ) {
if ( in_array ( $categories [ $k ] -> term_id , $args [ 'selected_cats' ] ) ) {
$checked_categories [] = $categories [ $k ];
unset ( $categories [ $k ] );
}
2009-05-25 01:47:49 +02:00
}
2007-05-25 09:16:21 +02:00
2009-10-13 12:02:42 +02:00
// Put checked cats on top
echo call_user_func_array ( array ( & $walker , 'walk' ), array ( $checked_categories , 0 , $args ));
}
2008-05-19 23:35:18 +02:00
// Then the rest of them
echo call_user_func_array ( array ( & $walker , 'walk' ), array ( $categories , 0 , $args ));
2008-01-10 10:39:35 +01:00
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $taxonomy
* @ param unknown_type $default
* @ param unknown_type $number
* @ param unknown_type $echo
* @ return unknown
*/
2008-05-19 23:35:18 +02:00
function wp_popular_terms_checklist ( $taxonomy , $default = 0 , $number = 10 , $echo = true ) {
2008-04-24 02:54:27 +02:00
global $post_ID ;
2009-10-13 12:02:42 +02:00
2008-04-24 02:54:27 +02:00
if ( $post_ID )
2010-02-05 15:16:31 +01:00
$checked_terms = wp_get_object_terms ( $post_ID , $taxonomy , array ( 'fields' => 'ids' ));
2008-04-24 02:54:27 +02:00
else
2010-02-05 15:16:31 +01:00
$checked_terms = array ();
2009-10-13 12:02:42 +02:00
2010-02-05 15:16:31 +01:00
$terms = get_terms ( $taxonomy , array ( 'orderby' => 'count' , 'order' => 'DESC' , 'number' => $number , 'hierarchical' => false ) );
2008-01-10 10:39:35 +01:00
2010-02-05 15:33:29 +01:00
$tax = get_taxonomy ( $taxonomy );
2010-05-13 06:10:17 +02:00
if ( ! current_user_can ( $tax -> cap -> assign_terms ) )
2010-02-05 15:33:29 +01:00
$disabled = 'disabled="disabled"' ;
else
$disabled = '' ;
2008-04-14 21:31:20 +02:00
$popular_ids = array ();
2010-02-05 15:16:31 +01:00
foreach ( ( array ) $terms as $term ) {
$popular_ids [] = $term -> term_id ;
2008-05-19 23:35:18 +02:00
if ( ! $echo ) // hack for AJAX use
continue ;
2010-02-05 15:16:31 +01:00
$id = " popular- $taxonomy - $term->term_id " ;
$checked = in_array ( $term -> term_id , $checked_terms ) ? 'checked="checked"' : '' ;
2008-01-10 10:39:35 +01:00
?>
2008-04-14 21:31:20 +02:00
< li id = " <?php echo $id ; ?> " class = " popular-category " >
2008-09-21 21:45:45 +02:00
< label class = " selectit " >
2010-02-05 15:33:29 +01:00
< input id = " in-<?php echo $id ; ?> " type = " checkbox " < ? php echo $checked ; ?> value="<?php echo (int) $term->term_id; ?>" <?php echo $disabled ?>/>
2010-02-05 15:16:31 +01:00
< ? php echo esc_html ( apply_filters ( 'the_category' , $term -> name ) ); ?>
2008-01-10 10:39:35 +01:00
</ label >
</ li >
< ? php
}
2008-04-14 21:31:20 +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 }}
*
* @ since unknown
*
* @ param unknown_type $link_id
*/
2008-04-18 19:41:10 +02:00
function wp_link_category_checklist ( $link_id = 0 ) {
2008-08-08 19:05:10 +02:00
$default = 1 ;
2007-05-25 09:16:21 +02:00
if ( $link_id ) {
2010-02-22 22:59:40 +01:00
$checked_categories = wp_get_link_cats ( $link_id );
// No selected categories, strange
if ( ! count ( $checked_categories ) )
2007-05-25 09:16:21 +02:00
$checked_categories [] = $default ;
} else {
$checked_categories [] = $default ;
}
2010-02-22 22:59:40 +01:00
$categories = get_terms ( 'link_category' , array ( 'orderby' => 'name' , 'hide_empty' => 0 ) );
2007-06-14 04:25:30 +02:00
2010-02-22 22:59:40 +01:00
if ( empty ( $categories ) )
2007-05-25 09:16:21 +02:00
return ;
foreach ( $categories as $category ) {
$cat_id = $category -> term_id ;
2010-02-22 22:59:40 +01:00
$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
}
}
2008-01-25 20:29:01 +01:00
// Tag stuff
// Returns a single tag row (see tag_rows below)
// Note: this is also used in admin-ajax.php!
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $tag
* @ param unknown_type $class
* @ return unknown
*/
2010-02-13 06:40:47 +01:00
function _tag_row ( $tag , $level , $taxonomy = 'post_tag' ) {
2010-06-08 17:34:42 +02:00
global $post_type , $current_screen ;
2010-02-13 06:40:47 +01:00
static $row_class = '' ;
$row_class = ( $row_class == '' ? ' class="alternate"' : '' );
2008-01-25 20:29:01 +01:00
$count = number_format_i18n ( $tag -> count );
2010-02-19 10:54:18 +01:00
$tax = get_taxonomy ( $taxonomy );
if ( 'post_tag' == $taxonomy ) {
2010-01-24 12:00:27 +01:00
$tagsel = 'tag' ;
2010-02-19 10:54:18 +01:00
} elseif ( 'category' == $taxonomy ) {
2010-01-24 12:00:27 +01:00
$tagsel = 'category_name' ;
2010-02-19 10:54:18 +01:00
} elseif ( ! empty ( $tax -> query_var ) ) {
$tagsel = $tax -> query_var ;
} else {
2010-01-24 12:00:27 +01:00
$tagsel = $taxonomy ;
2010-02-19 10:54:18 +01:00
}
2010-01-26 12:32:04 +01:00
2010-01-24 12:00:27 +01:00
$pad = str_repeat ( '— ' , max ( 0 , $level ) );
2010-02-13 06:40:47 +01:00
$name = apply_filters ( 'term_name' , $pad . ' ' . $tag -> name , $tag );
2008-12-22 20:33:09 +01:00
$qe_data = get_term ( $tag -> term_id , $taxonomy , object , 'edit' );
2010-02-19 10:54:18 +01:00
$edit_link = " edit-tags.php?action=edit&taxonomy= $taxonomy &post_type= $post_type &tag_ID= $tag->term_id " ;
2010-01-26 12:32:04 +01:00
2008-01-25 20:29:01 +01:00
$out = '' ;
2010-02-13 06:40:47 +01:00
$out .= '<tr id="tag-' . $tag -> term_id . '"' . $row_class . '>' ;
2010-01-26 12:32:04 +01:00
2010-06-08 17:34:42 +02:00
$columns = get_column_headers ( $current_screen );
$hidden = get_hidden_columns ( $current_screen );
2010-01-26 12:32:04 +01:00
$default_term = get_option ( 'default_' . $taxonomy );
2008-09-18 22:13:10 +02:00
foreach ( $columns as $column_name => $column_display_name ) {
$class = " class= \" $column_name column- $column_name\ " " ;
$style = '' ;
if ( in_array ( $column_name , $hidden ) )
$style = ' style="display:none;"' ;
$attributes = " $class $style " ;
switch ( $column_name ) {
case 'cb' :
2010-05-13 06:10:17 +02:00
if ( current_user_can ( $tax -> cap -> delete_terms ) && $tag -> term_id != $default_term )
2010-01-24 12:00:27 +01:00
$out .= '<th scope="row" class="check-column"> <input type="checkbox" name="delete_tags[]" value="' . $tag -> term_id . '" /></th>' ;
else
$out .= '<th scope="row" class="check-column"> </th>' ;
2008-09-18 22:13:10 +02:00
break ;
case 'name' :
2009-05-05 21:43:53 +02:00
$out .= '<td ' . $attributes . '><strong><a class="row-title" href="' . $edit_link . '" title="' . esc_attr ( sprintf ( __ ( 'Edit “%s”' ), $name )) . '">' . $name . '</a></strong><br />' ;
2008-09-18 22:13:10 +02:00
$actions = array ();
2010-05-13 06:10:17 +02:00
if ( current_user_can ( $tax -> cap -> edit_terms ) ) {
2010-01-26 12:32:04 +01:00
$actions [ 'edit' ] = '<a href="' . $edit_link . '">' . __ ( 'Edit' ) . '</a>' ;
$actions [ 'inline hide-if-no-js' ] = '<a href="#" class="editinline">' . __ ( 'Quick Edit' ) . '</a>' ;
}
2010-05-13 06:10:17 +02:00
if ( current_user_can ( $tax -> cap -> delete_terms ) && $tag -> term_id != $default_term )
2010-01-24 12:00:27 +01:00
$actions [ 'delete' ] = " <a class='delete-tag' href=' " . wp_nonce_url ( " edit-tags.php?action=delete&taxonomy= $taxonomy &tag_ID= $tag->term_id " , 'delete-tag_' . $tag -> term_id ) . " '> " . __ ( 'Delete' ) . " </a> " ;
2009-02-23 05:28:50 +01:00
$actions = apply_filters ( 'tag_row_actions' , $actions , $tag );
2010-01-24 12:00:27 +01:00
$actions = apply_filters ( " ${ taxonomy } _row_actions " , $actions , $tag );
2008-09-18 22:13:10 +02:00
$action_count = count ( $actions );
$i = 0 ;
2008-11-28 05:33:35 +01:00
$out .= '<div class="row-actions">' ;
2008-09-18 22:13:10 +02:00
foreach ( $actions as $action => $link ) {
++ $i ;
( $i == $action_count ) ? $sep = '' : $sep = ' | ' ;
$out .= " <span class=' $action '> $link $sep </span> " ;
}
2008-11-28 05:33:35 +01:00
$out .= '</div>' ;
2008-11-18 18:25:43 +01:00
$out .= '<div class="hidden" id="inline_' . $qe_data -> term_id . '">' ;
$out .= '<div class="name">' . $qe_data -> name . '</div>' ;
2010-01-24 12:00:27 +01:00
$out .= '<div class="slug">' . apply_filters ( 'editable_slug' , $qe_data -> slug ) . '</div>' ;
$out .= '<div class="parent">' . $qe_data -> parent . '</div></div></td>' ;
2008-09-18 22:13:10 +02:00
break ;
2009-04-09 18:00:40 +02:00
case 'description' :
$out .= " <td $attributes > $tag->description </td> " ;
break ;
2008-10-01 01:40:44 +02:00
case 'slug' :
2009-11-25 16:11:57 +01:00
$out .= " <td $attributes > " . apply_filters ( 'editable_slug' , $tag -> slug ) . " </td> " ;
2008-10-01 01:40:44 +02:00
break ;
2008-09-18 22:13:10 +02:00
case 'posts' :
$attributes = 'class="posts column-posts num"' . $style ;
2010-02-21 12:02:14 +01:00
$out .= " <td $attributes ><a href='edit.php? $tagsel = $tag->slug &post_type= $post_type '> $count </a></td> " ;
2008-09-18 22:13:10 +02:00
break ;
2009-01-04 05:21:35 +01:00
default :
$out .= " <td $attributes > " ;
2009-02-04 13:31:47 +01:00
$out .= apply_filters ( " manage_ ${ taxonomy } _custom_column " , '' , $column_name , $tag -> term_id );
2009-01-04 05:21:35 +01:00
$out .= " </td> " ;
2008-09-18 22:13:10 +02:00
}
2008-09-17 01:17:03 +02:00
}
2008-01-25 20:29:01 +01:00
2010-01-26 12:32:04 +01:00
$out .= " </tr> \n " ;
2008-02-05 07:47:27 +01:00
2008-01-25 20:29:01 +01:00
return $out ;
}
// Outputs appropriate rows for the Nth page of the Tag Management screen,
2008-02-05 07:47:27 +01:00
// assuming M tags displayed at a time on the page
2008-01-25 20:29:01 +01:00
// Returns the number of tags displayed
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $page
* @ param unknown_type $pagesize
* @ param unknown_type $searchterms
* @ return unknown
*/
2008-12-22 20:33:09 +01:00
function tag_rows ( $page = 1 , $pagesize = 20 , $searchterms = '' , $taxonomy = 'post_tag' ) {
2008-02-05 07:47:27 +01:00
2008-01-25 20:29:01 +01:00
// Get a page worth of tags
2008-02-12 10:25:19 +01:00
$start = ( $page - 1 ) * $pagesize ;
2008-01-28 18:21:14 +01:00
$args = array ( 'offset' => $start , 'number' => $pagesize , 'hide_empty' => 0 );
2008-02-05 07:47:27 +01:00
2010-01-24 12:00:27 +01:00
if ( ! empty ( $searchterms ) )
2008-02-12 10:25:19 +01:00
$args [ 'search' ] = $searchterms ;
2008-02-05 07:47:27 +01:00
2008-01-25 20:29:01 +01:00
// convert it to table rows
$out = '' ;
$count = 0 ;
2010-01-24 12:00:27 +01:00
if ( is_taxonomy_hierarchical ( $taxonomy ) ) {
// We'll need the full set of terms then.
$args [ 'number' ] = $args [ 'offset' ] = 0 ;
$terms = get_terms ( $taxonomy , $args );
if ( ! empty ( $searchterms ) ) // Ignore children on searches.
$children = array ();
else
$children = _get_term_hierarchy ( $taxonomy );
2010-02-13 06:40:47 +01:00
// Some funky recursion to get the job done(Paging & parents mainly) is contained within, Skip it for non-hierarchical taxonomies for performance sake
2010-01-24 12:00:27 +01:00
$out .= _term_rows ( $taxonomy , $terms , $children , $page , $pagesize , $count );
} else {
$terms = get_terms ( $taxonomy , $args );
foreach ( $terms as $term )
2010-02-13 06:40:47 +01:00
$out .= _tag_row ( $term , 0 , $taxonomy );
2010-02-19 10:54:18 +01:00
$count = $pagesize ; // Only displaying a single page.
2010-01-24 12:00:27 +01:00
}
2008-02-05 07:47:27 +01:00
2008-01-25 20:29:01 +01:00
echo $out ;
return $count ;
}
2010-01-24 12:00:27 +01:00
function _term_rows ( $taxonomy , $terms , & $children , $page = 1 , $per_page = 20 , & $count , $parent = 0 , $level = 0 ) {
$start = ( $page - 1 ) * $per_page ;
$end = $start + $per_page ;
$output = '' ;
foreach ( $terms as $key => $term ) {
if ( $count >= $end )
break ;
if ( $term -> parent != $parent && empty ( $_GET [ 's' ]) )
continue ;
// If the page starts in a subtree, print the parents.
if ( $count == $start && $term -> parent > 0 && empty ( $_GET [ 's' ]) ) {
$my_parents = $parent_ids = array ();
$p = $term -> parent ;
while ( $p ) {
$my_parent = get_term ( $p , $taxonomy );
$my_parents [] = $my_parent ;
$p = $my_parent -> parent ;
if ( in_array ( $p , $parent_ids ) ) // Prevent parent loops.
break ;
$parent_ids [] = $p ;
}
unset ( $parent_ids );
$num_parents = count ( $my_parents );
while ( $my_parent = array_pop ( $my_parents ) ) {
2010-02-13 06:40:47 +01:00
$output .= " \t " . _tag_row ( $my_parent , $level - $num_parents , $taxonomy );
2010-01-24 12:00:27 +01:00
$num_parents -- ;
}
}
if ( $count >= $start )
2010-02-13 06:40:47 +01:00
$output .= " \t " . _tag_row ( $term , $level , $taxonomy );
++ $count ;
2010-01-24 12:00:27 +01:00
unset ( $terms [ $key ]);
2010-02-13 06:40:47 +01:00
if ( isset ( $children [ $term -> term_id ]) && empty ( $_GET [ 's' ]) )
2010-01-24 12:00:27 +01:00
$output .= _term_rows ( $taxonomy , $terms , $children , $page , $per_page , $count , $term -> term_id , $level + 1 );
}
return $output ;
}
2007-10-10 00:49:42 +02:00
// define the columns to display, the syntax is 'internal name' => 'display name'
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ return unknown
*/
2010-01-15 17:58:36 +01:00
function wp_manage_posts_columns ( $screen = '' ) {
if ( empty ( $screen ) )
$post_type = 'post' ;
else
$post_type = $screen -> post_type ;
2010-01-12 01:14:27 +01:00
2007-10-10 00:49:42 +02:00
$posts_columns = array ();
2008-04-19 00:23:02 +02:00
$posts_columns [ 'cb' ] = '<input type="checkbox" />' ;
2009-03-02 20:20:19 +01:00
/* translators: manage posts column name */
2010-01-15 17:58:36 +01:00
$posts_columns [ 'title' ] = _x ( 'Title' , 'column name' );
2008-09-11 00:47:03 +02:00
$posts_columns [ 'author' ] = __ ( 'Author' );
2010-01-15 17:58:36 +01:00
if ( empty ( $post_type ) || is_object_in_taxonomy ( $post_type , 'category' ) )
2010-01-12 01:14:27 +01:00
$posts_columns [ 'categories' ] = __ ( 'Categories' );
2010-03-18 23:34:58 +01:00
if ( empty ( $post_type ) || is_object_in_taxonomy ( $post_type , 'post_tag' ) )
2010-01-12 01:14:27 +01:00
$posts_columns [ 'tags' ] = __ ( 'Tags' );
2009-07-25 14:21:55 +02:00
$post_status = ! empty ( $_REQUEST [ 'post_status' ]) ? $_REQUEST [ 'post_status' ] : 'all' ;
2010-01-15 17:58:36 +01:00
if ( ! in_array ( $post_status , array ( 'pending' , 'draft' , 'future' ) ) && ( empty ( $post_type ) || post_type_supports ( $post_type , 'comments' ) ) )
2010-05-03 20:16:22 +02:00
$posts_columns [ 'comments' ] = '<div class="vers"><img alt="Comments" src="' . esc_url ( admin_url ( 'images/comment-grey-bubble.png' ) ) . '" /></div>' ;
2008-10-14 05:49:57 +02:00
$posts_columns [ 'date' ] = __ ( 'Date' );
2010-02-27 07:45:23 +01:00
if ( 'page' == $post_type )
$posts_columns = apply_filters ( 'manage_pages_columns' , $posts_columns );
else
2010-02-27 16:53:06 +01:00
$posts_columns = apply_filters ( 'manage_posts_columns' , $posts_columns , $post_type );
$posts_columns = apply_filters ( " manage_ { $post_type } _posts_columns " , $posts_columns );
2007-10-10 00:49:42 +02:00
2008-02-12 06:51:53 +01:00
return $posts_columns ;
}
2008-02-19 07:13:20 +01:00
// define the columns to display, the syntax is 'internal name' => 'display name'
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ return unknown
*/
2008-02-19 07:13:20 +01:00
function wp_manage_media_columns () {
$posts_columns = array ();
2008-04-19 00:23:02 +02:00
$posts_columns [ 'cb' ] = '<input type="checkbox" />' ;
2008-02-19 07:13:20 +01:00
$posts_columns [ 'icon' ] = '' ;
2009-03-02 20:20:19 +01:00
/* translators: column name */
$posts_columns [ 'media' ] = _x ( 'File' , 'column name' );
2008-10-15 07:39:40 +02:00
$posts_columns [ 'author' ] = __ ( 'Author' );
2009-03-11 00:02:29 +01:00
//$posts_columns['tags'] = _x('Tags', 'column name');
2009-03-02 20:20:19 +01:00
/* translators: column name */
$posts_columns [ 'parent' ] = _x ( 'Attached to' , 'column name' );
2010-05-03 20:16:22 +02:00
$posts_columns [ 'comments' ] = '<div class="vers"><img alt="Comments" src="' . esc_url ( admin_url ( 'images/comment-grey-bubble.png' ) ) . '" /></div>' ;
2008-11-17 19:01:00 +01:00
//$posts_columns['comments'] = __('Comments');
2009-03-02 20:20:19 +01:00
/* translators: column name */
$posts_columns [ 'date' ] = _x ( 'Date' , 'column name' );
2008-02-19 07:13:20 +01:00
$posts_columns = apply_filters ( 'manage_media_columns' , $posts_columns );
return $posts_columns ;
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ return unknown
*/
2008-02-12 06:51:53 +01:00
function wp_manage_pages_columns () {
2010-01-15 17:58:36 +01:00
return wp_manage_posts_columns ();
2007-10-10 00:49:42 +02:00
}
2008-10-02 03:03:26 +02:00
/**
2010-05-14 17:47:14 +02:00
* Get the column headers for a screen
2008-10-02 03:03:26 +02:00
*
* @ since unknown
*
2010-05-14 17:47:14 +02:00
* @ param string | object $screen The screen you want the headers for
* @ return array Containing the headers in the format id => UI String
2008-10-02 03:03:26 +02:00
*/
2010-01-15 17:58:36 +01:00
function get_column_headers ( $screen ) {
2008-11-18 21:49:39 +01:00
global $_wp_column_headers ;
if ( ! isset ( $_wp_column_headers ) )
$_wp_column_headers = array ();
2008-11-17 20:16:26 +01:00
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
2008-11-17 20:16:26 +01:00
// Store in static to avoid running filters on each call
2010-01-15 17:58:36 +01:00
if ( isset ( $_wp_column_headers [ $screen -> id ]) )
return $_wp_column_headers [ $screen -> id ];
2008-11-17 20:16:26 +01:00
2010-01-15 17:58:36 +01:00
switch ( $screen -> base ) {
2008-11-17 20:16:26 +01:00
case 'edit' :
2010-01-15 17:58:36 +01:00
$_wp_column_headers [ $screen -> id ] = wp_manage_posts_columns ( $screen );
2008-11-17 20:16:26 +01:00
break ;
case 'edit-comments' :
2010-01-15 17:58:36 +01:00
$_wp_column_headers [ $screen -> id ] = array (
2008-09-26 03:05:52 +02:00
'cb' => '<input type="checkbox" />' ,
'author' => __ ( 'Author' ),
2009-03-02 20:20:19 +01:00
/* translators: column name */
'comment' => _x ( 'Comment' , 'column name' ),
2008-11-25 22:11:05 +01:00
//'date' => __('Submitted'),
2008-11-12 00:48:27 +01:00
'response' => __ ( 'In Response To' )
2008-09-26 03:05:52 +02:00
);
2008-11-17 20:16:26 +01:00
break ;
case 'link-manager' :
2010-01-15 17:58:36 +01:00
$_wp_column_headers [ $screen -> id ] = array (
2008-09-18 07:41:45 +02:00
'cb' => '<input type="checkbox" />' ,
'name' => __ ( 'Name' ),
'url' => __ ( 'URL' ),
'categories' => __ ( 'Categories' ),
2009-03-26 03:17:01 +01:00
'rel' => __ ( 'Relationship' ),
2009-05-05 06:59:19 +02:00
'visible' => __ ( 'Visible' ),
'rating' => __ ( 'Rating' )
2008-09-18 07:41:45 +02:00
);
2008-11-17 20:16:26 +01:00
break ;
case 'upload' :
2010-01-15 17:58:36 +01:00
$_wp_column_headers [ $screen -> id ] = wp_manage_media_columns ();
2008-11-17 20:16:26 +01:00
break ;
case 'categories' :
2010-01-15 17:58:36 +01:00
$_wp_column_headers [ $screen -> id ] = array (
2008-09-18 07:41:45 +02:00
'cb' => '<input type="checkbox" />' ,
'name' => __ ( 'Name' ),
'description' => __ ( 'Description' ),
2008-10-01 01:40:44 +02:00
'slug' => __ ( 'Slug' ),
2008-09-18 07:41:45 +02:00
'posts' => __ ( 'Posts' )
);
2008-11-17 20:16:26 +01:00
break ;
case 'edit-link-categories' :
2010-01-15 17:58:36 +01:00
$_wp_column_headers [ $screen -> id ] = array (
2008-09-18 07:41:45 +02:00
'cb' => '<input type="checkbox" />' ,
'name' => __ ( 'Name' ),
'description' => __ ( 'Description' ),
2008-12-03 20:18:41 +01:00
'slug' => __ ( 'Slug' ),
2008-09-18 07:41:45 +02:00
'links' => __ ( 'Links' )
);
2008-11-17 20:16:26 +01:00
break ;
case 'edit-tags' :
2010-01-15 17:58:36 +01:00
$_wp_column_headers [ $screen -> id ] = array (
2008-09-18 07:41:45 +02:00
'cb' => '<input type="checkbox" />' ,
'name' => __ ( 'Name' ),
2009-04-09 18:00:40 +02:00
'description' => __ ( 'Description' ),
2008-10-01 01:40:44 +02:00
'slug' => __ ( 'Slug' ),
2008-09-18 07:41:45 +02:00
'posts' => __ ( 'Posts' )
);
2008-11-17 20:16:26 +01:00
break ;
case 'users' :
2010-01-15 17:58:36 +01:00
$_wp_column_headers [ $screen -> id ] = array (
2008-09-19 07:31:00 +02:00
'cb' => '<input type="checkbox" />' ,
'username' => __ ( 'Username' ),
'name' => __ ( 'Name' ),
'email' => __ ( 'E-mail' ),
'role' => __ ( 'Role' ),
'posts' => __ ( 'Posts' )
);
2008-11-17 20:16:26 +01:00
break ;
2008-10-05 06:43:52 +02:00
default :
2010-01-15 17:58:36 +01:00
$_wp_column_headers [ $screen -> id ] = array ();
2008-09-18 07:41:45 +02:00
}
2008-11-17 20:16:26 +01:00
2010-01-15 17:58:36 +01:00
$_wp_column_headers [ $screen -> id ] = apply_filters ( 'manage_' . $screen -> id . '_columns' , $_wp_column_headers [ $screen -> id ]);
return $_wp_column_headers [ $screen -> id ];
2008-09-18 07:41:45 +02:00
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
2010-01-15 17:58:36 +01:00
* @ param unknown_type $screen
2008-10-02 03:03:26 +02:00
* @ param unknown_type $id
*/
2010-01-15 17:58:36 +01:00
function print_column_headers ( $screen , $id = true ) {
if ( is_string ( $screen ) )
$screen = convert_to_screen ( $screen );
$columns = get_column_headers ( $screen );
$hidden = get_hidden_columns ( $screen );
2008-09-18 07:41:45 +02:00
$styles = array ();
foreach ( $columns as $column_key => $column_display_name ) {
$class = ' class="manage-column' ;
$class .= " column- $column_key " ;
if ( 'cb' == $column_key )
$class .= ' check-column' ;
elseif ( in_array ( $column_key , array ( 'posts' , 'comments' , 'links' )) )
$class .= ' num' ;
$class .= '"' ;
$style = '' ;
if ( in_array ( $column_key , $hidden ) )
$style = 'display:none;' ;
2010-01-15 17:58:36 +01:00
if ( isset ( $styles [ $screen -> id ]) && isset ( $styles [ $screen -> id ][ $column_key ]) )
$style .= ' ' . $styles [ $screen > id ][ $column_key ];
2008-09-18 07:41:45 +02:00
$style = ' style="' . $style . '"' ;
?>
2008-09-29 11:26:21 +02:00
< th scope = " col " < ? php echo $id ? " id= \" $column_key\ " " : " " ; echo $class ; echo $style ; ?>><?php echo $column_display_name ; ?></th>
2008-09-18 07:41:45 +02:00
< ? php }
2008-09-14 08:51:42 +02:00
}
2008-11-18 21:49:39 +01:00
/**
* Register column headers for a particular screen . The header names will be listed in the Screen Options .
*
* @ since 2.7 . 0
*
* @ param string $screen The handle for the screen to add help to . This is usually the hook name returned by the add_ * _page () functions .
* @ param array $columns An array of columns with column IDs as the keys and translated column names as the values
* @ see get_column_headers (), print_column_headers (), get_hidden_columns ()
*/
function register_column_headers ( $screen , $columns ) {
global $_wp_column_headers ;
2010-01-15 17:58:36 +01:00
if ( is_string ( $screen ) )
$screen = convert_to_screen ( $screen );
2008-11-18 21:49:39 +01:00
if ( ! isset ( $_wp_column_headers ) )
$_wp_column_headers = array ();
2010-01-15 17:58:36 +01:00
$_wp_column_headers [ $screen -> id ] = $columns ;
2008-11-18 21:49:39 +01:00
}
2008-11-17 20:16:26 +01:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
2010-01-15 17:58:36 +01:00
* @ param unknown_type $screen
2008-11-17 20:16:26 +01:00
*/
2010-01-15 17:58:36 +01:00
function get_hidden_columns ( $screen ) {
if ( is_string ( $screen ) )
$screen = convert_to_screen ( $screen );
2010-04-25 17:59:03 +02:00
return ( array ) get_user_option ( 'manage' . $screen -> id . 'columnshidden' );
2008-11-17 20:16:26 +01:00
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
2008-10-08 03:18:16 +02:00
* Outputs the quick edit and bulk edit table rows for posts and pages
*
2008-10-05 06:43:52 +02:00
* @ since 2.7
2008-10-02 03:03:26 +02:00
*
2010-04-07 08:01:29 +02:00
* @ param string $screen
2008-10-02 03:03:26 +02:00
*/
2010-01-15 17:58:36 +01:00
function inline_edit_row ( $screen ) {
2008-09-21 21:45:45 +02:00
global $current_user , $mode ;
2008-09-11 00:47:03 +02:00
2010-01-15 17:58:36 +01:00
if ( is_string ( $screen ) ) {
$screen = array ( 'id' => 'edit-' . $screen , 'base' => 'edit' , 'post_type' => $screen );
$screen = ( object ) $screen ;
2008-11-30 00:09:04 +01:00
}
2008-09-11 00:47:03 +02:00
2010-01-15 17:58:36 +01:00
$post = get_default_post_to_edit ( $screen -> post_type );
$post_type_object = get_post_type_object ( $screen -> post_type );
2010-03-01 16:48:01 +01:00
$taxonomy_names = get_object_taxonomies ( $screen -> post_type );
$hierarchical_taxonomies = array ();
$flat_taxonomies = array ();
foreach ( $taxonomy_names as $taxonomy_name ) {
$taxonomy = get_taxonomy ( $taxonomy_name );
2010-03-17 17:27:25 +01:00
2010-03-21 03:29:11 +01:00
if ( ! $taxonomy -> show_ui )
continue ;
2010-03-17 17:27:25 +01:00
2010-03-21 03:29:11 +01:00
if ( $taxonomy -> hierarchical )
2010-03-01 16:48:01 +01:00
$hierarchical_taxonomies [] = $taxonomy ;
2010-03-17 17:27:25 +01:00
else
2010-03-01 16:48:01 +01:00
$flat_taxonomies [] = $taxonomy ;
}
2010-03-17 17:27:25 +01:00
2010-01-15 17:58:36 +01:00
$columns = wp_manage_posts_columns ( $screen );
2008-11-30 00:09:04 +01:00
$hidden = array_intersect ( array_keys ( $columns ), array_filter ( get_hidden_columns ( $screen ) ) );
2008-11-11 03:58:24 +01:00
$col_count = count ( $columns ) - count ( $hidden );
2008-09-21 21:45:45 +02:00
$m = ( isset ( $mode ) && 'excerpt' == $mode ) ? 'excerpt' : 'list' ;
2010-05-12 22:45:18 +02:00
$can_publish = current_user_can ( $post_type_object -> cap -> publish_posts );
2008-11-11 03:58:24 +01:00
$core_columns = array ( 'cb' => true , 'date' => true , 'title' => true , 'categories' => true , 'tags' => true , 'comments' => true , 'author' => true );
?>
2008-09-25 15:42:34 +02:00
< form method = " get " action = " " >< table style = " display: none " >< tbody id = " inlineedit " >
< ? php
2010-04-07 04:58:23 +02:00
$hclass = count ( $hierarchical_taxonomies ) ? 'post' : 'page' ;
2008-09-25 15:42:34 +02:00
$bulk = 0 ;
while ( $bulk < 2 ) { ?>
2008-10-05 06:43:52 +02:00
2010-04-07 04:58:23 +02:00
< tr id = " <?php echo $bulk ? 'bulk-edit' : 'inline-edit'; ?> " class = " inline-edit-row inline-edit-row-<?php echo " $hclass inline - edit - $screen -> post_type " ;
echo $bulk ? " bulk-edit-row bulk-edit-row- $hclass bulk-edit- $screen->post_type " : " quick-edit-row quick-edit-row- $hclass inline-edit- $screen->post_type " ;
2008-11-11 03:58:24 +01:00
?> " style="display: none"><td colspan="<?php echo $col_count; ?>">
2008-09-11 03:46:30 +02:00
2008-11-11 03:58:24 +01:00
< fieldset class = " inline-edit-col-left " >< div class = " inline-edit-col " >
2010-01-26 12:32:04 +01:00
< h4 >< ? php echo $bulk ? __ ( 'Bulk Edit' ) : __ ( 'Quick Edit' ); ?> </h4>
2008-09-11 03:46:30 +02:00
2008-09-11 00:47:03 +02:00
2010-04-07 07:08:37 +02:00
< ? php
2010-05-03 22:26:11 +02:00
if ( post_type_supports ( $screen -> post_type , 'title' ) ) :
2010-04-07 07:08:37 +02:00
if ( $bulk ) : ?>
2008-11-11 03:58:24 +01:00
< div id = " bulk-title-div " >
< div id = " bulk-titles " ></ div >
</ div >
2008-09-11 00:47:03 +02:00
2008-11-11 03:58:24 +01:00
< ? php else : // $bulk ?>
2008-09-11 00:47:03 +02:00
2008-11-11 03:58:24 +01:00
< label >
< span class = " title " >< ? php _e ( 'Title' ); ?> </span>
< span class = " input-text-wrap " >< input type = " text " name = " post_title " class = " ptitle " value = " " /></ span >
</ label >
2008-10-14 05:49:57 +02:00
2008-11-11 03:58:24 +01:00
< label >
< span class = " title " >< ? php _e ( 'Slug' ); ?> </span>
< span class = " input-text-wrap " >< input type = " text " name = " post_name " value = " " /></ span >
</ label >
2008-09-11 00:47:03 +02:00
2010-04-07 07:08:37 +02:00
< ? php endif ; // $bulk
endif ; // post_type_supports title ?>
< ? php if ( ! $bulk ) : ?>
2008-11-11 03:58:24 +01:00
< label >< span class = " title " >< ? php _e ( 'Date' ); ?> </span></label>
< div class = " inline-edit-date " >
< ? php touch_time ( 1 , 1 , 4 , 1 ); ?>
</ div >
< br class = " clear " />
2008-09-11 00:47:03 +02:00
2008-11-11 03:58:24 +01:00
< ? php endif ; // $bulk
2008-09-11 00:47:03 +02:00
2010-04-07 07:08:37 +02:00
if ( post_type_supports ( $screen -> post_type , 'author' ) ) :
2010-01-15 17:58:36 +01:00
$authors = get_editable_user_ids ( $current_user -> id , true , $screen -> post_type ); // TODO: ROLE SYSTEM
2009-11-26 12:41:37 +01:00
$authors_dropdown = '' ;
2008-11-11 03:58:24 +01:00
if ( $authors && count ( $authors ) > 1 ) :
2009-07-11 11:17:09 +02:00
$users_opt = array ( 'include' => $authors , 'name' => 'post_author' , 'class' => 'authors' , 'multi' => 1 , 'echo' => 0 );
2008-11-11 03:58:24 +01:00
if ( $bulk )
2010-01-21 22:37:43 +01:00
$users_opt [ 'show_option_none' ] = __ ( '— No Change —' );
2009-11-26 12:41:37 +01:00
$authors_dropdown = '<label>' ;
$authors_dropdown .= '<span class="title">' . __ ( 'Author' ) . '</span>' ;
$authors_dropdown .= wp_dropdown_users ( $users_opt );
$authors_dropdown .= '</label>' ;
2009-07-11 11:17:09 +02:00
2008-12-09 19:03:31 +01:00
endif ; // authors
2008-11-11 03:58:24 +01:00
?>
2008-09-11 00:47:03 +02:00
2010-04-07 07:08:37 +02:00
< ? php if ( ! $bulk ) echo $authors_dropdown ;
endif ; // post_type_supports author
if ( ! $bulk ) :
?>
2008-09-11 00:47:03 +02:00
2008-11-11 03:58:24 +01:00
< div class = " inline-edit-group " >
< label class = " alignleft " >
< span class = " title " >< ? php _e ( 'Password' ); ?> </span>
< span class = " input-text-wrap " >< input type = " text " name = " post_password " class = " inline-edit-password-input " value = " " /></ span >
</ label >
2009-03-02 20:20:19 +01:00
< em style = " margin:5px 10px 0 0 " class = " alignleft " >
< ? php
/* translators: Between password field and private checkbox on post quick edit interface */
echo __ ( '–OR–' );
?>
</ em >
2008-11-11 03:58:24 +01:00
< label class = " alignleft inline-edit-private " >
2008-12-06 12:10:24 +01:00
< input type = " checkbox " name = " keep_private " value = " private " />
2010-01-15 17:58:36 +01:00
< span class = " checkbox-title " >< ? php echo __ ( 'Private' ); ?> </span>
2008-11-11 03:58:24 +01:00
</ label >
</ div >
< ? php endif ; ?>
2008-09-21 21:45:45 +02:00
2008-11-11 03:58:24 +01:00
</ div ></ fieldset >
2010-03-01 16:48:01 +01:00
< ? php if ( count ( $hierarchical_taxonomies ) && ! $bulk ) : ?>
2008-11-11 03:58:24 +01:00
< fieldset class = " inline-edit-col-center inline-edit-categories " >< div class = " inline-edit-col " >
2010-03-17 17:27:25 +01:00
2010-03-01 16:48:01 +01:00
< ? php foreach ( $hierarchical_taxonomies as $taxonomy ) : ?>
2010-05-14 02:34:04 +02:00
< span class = " title inline-edit-categories-label " >< ? php echo esc_html ( $taxonomy -> labels -> name ) ?>
2008-11-11 03:58:24 +01:00
< span class = " catshow " >< ? php _e ( '[more]' ); ?> </span>
< span class = " cathide " style = " display:none; " >< ? php _e ( '[less]' ); ?> </span>
</ span >
2010-05-18 17:08:05 +02:00
< input type = " hidden " name = " <?php echo ( $taxonomy->name == 'category' ) ? 'post_category[]' : 'tax_input[' . esc_attr( $taxonomy->name ) . '][]'; ?> " value = " 0 " />
2010-03-01 16:48:01 +01:00
< ul class = " cat-checklist <?php echo esc_attr( $taxonomy->name )?>-checklist " >
< ? php wp_terms_checklist ( null , array ( 'taxonomy' => $taxonomy -> name )) ?>
2008-11-11 03:58:24 +01:00
</ ul >
2010-03-01 16:48:01 +01:00
< ? php endforeach ; //$hierarchical_taxonomies as $taxonomy ?>
2008-11-11 03:58:24 +01:00
</ div ></ fieldset >
2010-03-01 16:48:01 +01:00
< ? php endif ; // count($hierarchical_taxonomies) && !$bulk ?>
2008-11-11 03:58:24 +01:00
< fieldset class = " inline-edit-col-right " >< div class = " inline-edit-col " >
< ? php
2010-04-07 07:08:37 +02:00
if ( post_type_supports ( $screen -> post_type , 'author' ) && $bulk )
2008-11-11 03:58:24 +01:00
echo $authors_dropdown ;
?>
2010-01-15 17:58:36 +01:00
< ? php if ( $post_type_object -> hierarchical ) : ?>
2008-11-11 03:58:24 +01:00
< label >
< span class = " title " >< ? php _e ( 'Parent' ); ?> </span>
2008-12-05 19:03:24 +01:00
< ? php
2010-03-20 04:05:25 +01:00
$dropdown_args = array ( 'post_type' => $post_type_object -> name , 'selected' => $post -> post_parent , 'name' => 'post_parent' , 'show_option_none' => __ ( 'Main Page (no parent)' ), 'option_none_value' => 0 , 'sort_column' => 'menu_order, post_title' );
2008-12-05 19:03:24 +01:00
if ( $bulk )
2010-01-21 22:37:43 +01:00
$dropdown_args [ 'show_option_no_change' ] = __ ( '— No Change —' );
2008-12-05 20:40:30 +01:00
$dropdown_args = apply_filters ( 'quick_edit_dropdown_pages_args' , $dropdown_args );
2008-12-05 20:19:24 +01:00
wp_dropdown_pages ( $dropdown_args );
2008-12-05 19:03:24 +01:00
?>
2008-11-11 03:58:24 +01:00
</ label >
2010-04-07 07:08:37 +02:00
< ? php if ( post_type_supports ( $screen -> post_type , 'page-attributes' ) ) :
if ( ! $bulk ) : ?>
2008-11-11 03:58:24 +01:00
< label >
< span class = " title " >< ? php _e ( 'Order' ); ?> </span>
< span class = " input-text-wrap " >< input type = " text " name = " menu_order " class = " inline-edit-menu-order-input " value = " <?php echo $post->menu_order ?> " /></ span >
</ label >
< ? php endif ; // !$bulk ?>
< label >
< span class = " title " >< ? php _e ( 'Template' ); ?> </span>
< select name = " page_template " >
< ? php if ( $bulk ) : ?>
2010-01-21 22:37:43 +01:00
< option value = " -1 " >< ? php _e ( '— No Change —' ); ?> </option>
2008-11-11 03:58:24 +01:00
< ? php endif ; // $bulk ?>
< option value = " default " >< ? php _e ( 'Default Template' ); ?> </option>
< ? php page_template_dropdown () ?>
</ select >
</ label >
2010-05-03 22:26:11 +02:00
< ? php
2010-04-07 07:08:37 +02:00
endif ; // post_type_supports page-attributes
endif ; // $post_type_object->hierarchical ?>
2010-02-24 23:13:23 +01:00
2010-03-01 16:48:01 +01:00
< ? php if ( count ( $flat_taxonomies ) && ! $bulk ) : ?>
< ? php foreach ( $flat_taxonomies as $taxonomy ) : ?>
2008-11-11 03:58:24 +01:00
< label class = " inline-edit-tags " >
2010-05-14 02:34:04 +02:00
< span class = " title " >< ? php echo esc_html ( $taxonomy -> labels -> name ) ?> </span>
2010-03-01 16:48:01 +01:00
< textarea cols = " 22 " rows = " 1 " name = " tax_input[<?php echo esc_attr( $taxonomy->name )?>] " class = " tax_input_<?php echo esc_attr( $taxonomy->name )?> " ></ textarea >
2008-11-11 03:58:24 +01:00
</ label >
2010-03-01 16:48:01 +01:00
< ? php endforeach ; //$flat_taxonomies as $taxonomy ?>
< ? php endif ; // count($flat_taxonomies) && !$bulk ?>
2008-11-11 03:58:24 +01:00
2010-04-07 07:08:37 +02:00
< ? php if ( post_type_supports ( $screen -> post_type , 'comments' ) || post_type_supports ( $screen -> post_type , 'trackbacks' ) ) :
if ( $bulk ) : ?>
2008-11-11 03:58:24 +01:00
< div class = " inline-edit-group " >
2010-04-07 07:08:37 +02:00
< ? php if ( post_type_supports ( $screen -> post_type , 'comments' ) ) : ?>
2008-11-11 03:58:24 +01:00
< label class = " alignleft " >
< span class = " title " >< ? php _e ( 'Comments' ); ?> </span>
< select name = " comment_status " >
2010-01-21 22:37:43 +01:00
< option value = " " >< ? php _e ( '— No Change —' ); ?> </option>
2008-11-11 03:58:24 +01:00
< option value = " open " >< ? php _e ( 'Allow' ); ?> </option>
< option value = " closed " >< ? php _e ( 'Do not allow' ); ?> </option>
</ select >
</ label >
2010-04-07 07:08:37 +02:00
< ? php endif ; if ( post_type_supports ( $screen -> post_type , 'trackbacks' ) ) : ?>
2008-11-11 03:58:24 +01:00
< label class = " alignright " >
< span class = " title " >< ? php _e ( 'Pings' ); ?> </span>
< select name = " ping_status " >
2010-01-21 22:37:43 +01:00
< option value = " " >< ? php _e ( '— No Change —' ); ?> </option>
2008-11-11 03:58:24 +01:00
< option value = " open " >< ? php _e ( 'Allow' ); ?> </option>
< option value = " closed " >< ? php _e ( 'Do not allow' ); ?> </option>
</ select >
</ label >
2010-04-07 07:08:37 +02:00
< ? php endif ; ?>
2008-11-11 03:58:24 +01:00
</ div >
< ? php else : // $bulk ?>
< div class = " inline-edit-group " >
2010-04-07 07:08:37 +02:00
< ? php if ( post_type_supports ( $screen -> post_type , 'comments' ) ) : ?>
2008-11-11 03:58:24 +01:00
< label class = " alignleft " >
< input type = " checkbox " name = " comment_status " value = " open " />
< span class = " checkbox-title " >< ? php _e ( 'Allow Comments' ); ?> </span>
</ label >
2010-04-07 07:08:37 +02:00
< ? php endif ; if ( post_type_supports ( $screen -> post_type , 'trackbacks' ) ) : ?>
2008-11-11 03:58:24 +01:00
< label class = " alignleft " >
< input type = " checkbox " name = " ping_status " value = " open " />
< span class = " checkbox-title " >< ? php _e ( 'Allow Pings' ); ?> </span>
</ label >
2010-04-07 07:08:37 +02:00
< ? php endif ; ?>
2008-11-11 03:58:24 +01:00
</ div >
2010-04-07 07:08:37 +02:00
< ? php endif ; // $bulk
endif ; // post_type_supports comments or pings ?>
2008-11-11 03:58:24 +01:00
< div class = " inline-edit-group " >
< label class = " inline-edit-status alignleft " >
< span class = " title " >< ? php _e ( 'Status' ); ?> </span>
< select name = " _status " >
< ? php if ( $bulk ) : ?>
2010-01-21 22:37:43 +01:00
< option value = " -1 " >< ? php _e ( '— No Change —' ); ?> </option>
2008-11-11 03:58:24 +01:00
< ? php endif ; // $bulk ?>
< ? php if ( $can_publish ) : // Contributors only get "Unpublished" and "Pending Review" ?>
< option value = " publish " >< ? php _e ( 'Published' ); ?> </option>
< option value = " future " >< ? php _e ( 'Scheduled' ); ?> </option>
< ? php if ( $bulk ) : ?>
< option value = " private " >< ? php _e ( 'Private' ) ?> </option>
< ? php endif ; // $bulk ?>
< ? php endif ; ?>
< option value = " pending " >< ? php _e ( 'Pending Review' ); ?> </option>
2009-02-16 23:09:41 +01:00
< option value = " draft " >< ? php _e ( 'Draft' ); ?> </option>
2008-11-11 03:58:24 +01:00
</ select >
</ label >
2010-05-12 23:03:33 +02:00
< ? php if ( 'post' == $screen -> post_type && $can_publish && current_user_can ( $post_type_object -> cap -> edit_others_posts ) ) : ?>
2008-11-11 03:58:24 +01:00
< ? php if ( $bulk ) : ?>
< label class = " alignright " >
< span class = " title " >< ? php _e ( 'Sticky' ); ?> </span>
< select name = " sticky " >
2010-01-21 22:37:43 +01:00
< option value = " -1 " >< ? php _e ( '— No Change —' ); ?> </option>
2008-11-11 03:58:24 +01:00
< option value = " sticky " >< ? php _e ( 'Sticky' ); ?> </option>
< option value = " unsticky " >< ? php _e ( 'Not Sticky' ); ?> </option>
</ select >
</ label >
< ? php else : // $bulk ?>
< label class = " alignleft " >
< input type = " checkbox " name = " sticky " value = " sticky " />
< span class = " checkbox-title " >< ? php _e ( 'Make this post sticky' ); ?> </span>
</ label >
< ? php endif ; // $bulk ?>
2010-02-02 18:37:03 +01:00
< ? php endif ; // !$is_page && $can_publish && current_user_can( 'edit_others_cap' ) ?>
2008-11-11 03:58:24 +01:00
</ div >
</ div ></ fieldset >
< ? php
foreach ( $columns as $column_name => $column_display_name ) {
if ( isset ( $core_columns [ $column_name ] ) )
continue ;
2010-04-07 08:01:29 +02:00
do_action ( $bulk ? 'bulk_edit_custom_box' : 'quick_edit_custom_box' , $column_name , $screen -> post_type );
2008-11-11 03:58:24 +01:00
}
?>
< p class = " submit inline-edit-save " >
< a accesskey = " c " href = " #inline-edit " title = " <?php _e('Cancel'); ?> " class = " button-secondary cancel alignleft " >< ? php _e ( 'Cancel' ); ?> </a>
2008-10-08 03:18:16 +02:00
< ? php if ( ! $bulk ) {
2008-12-09 10:14:31 +01:00
wp_nonce_field ( 'inlineeditnonce' , '_inline_edit' , false );
2010-01-15 17:58:36 +01:00
$update_text = __ ( 'Update' );
2008-12-09 10:14:31 +01:00
?>
2009-05-05 21:43:53 +02:00
< a accesskey = " s " href = " #inline-edit " title = " <?php _e('Update'); ?> " class = " button-primary save alignright " >< ? php echo esc_attr ( $update_text ); ?> </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-12-09 10:07:36 +01:00
< ? php } else {
2010-01-15 17:58:36 +01:00
$update_text = __ ( 'Update' );
2008-12-09 10:07:36 +01:00
?>
2009-05-05 21:43:53 +02:00
< input accesskey = " s " class = " button-primary alignright " type = " submit " name = " bulk_edit " value = " <?php echo esc_attr( $update_text ); ?> " />
2008-10-08 03:18:16 +02:00
< ? php } ?>
2010-01-22 19:27:54 +01:00
< input type = " hidden " name = " post_view " value = " <?php echo esc_attr( $m ); ?> " />
< input type = " hidden " name = " screen " value = " <?php echo esc_attr( $screen->id ); ?> " />
2008-11-11 03:58:24 +01:00
< br class = " clear " />
</ p >
2008-09-21 21:45:45 +02:00
</ td ></ tr >
2008-09-25 15:42:34 +02:00
< ? php
$bulk ++ ;
} ?>
</ tbody ></ table ></ form >
2008-09-21 21:45:45 +02:00
< ? php
2008-09-11 00:47:03 +02:00
}
2008-10-08 03:18:16 +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 }}
*
* @ since unknown
*
* @ param unknown_type $post
*/
2008-09-21 21:45:45 +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-05-12 22:45:18 +02:00
if ( ! current_user_can ( $post_type_object -> cap -> edit_post , $post -> ID ) )
2008-09-21 21:45:45 +02:00
return ;
2008-10-05 06:43:52 +02:00
2010-02-13 04:17:57 +01:00
$title = esc_attr ( get_the_title ( $post -> ID ) );
2008-09-11 00:47:03 +02:00
2008-09-21 21:45:45 +02:00
echo '
2008-09-25 15:42:34 +02:00
< div class = " hidden " id = " inline_' . $post->ID . ' " >
< div class = " post_title " > ' . $title . ' </ div >
2009-11-25 16:11:57 +01:00
< div class = " post_name " > ' . apply_filters(' editable_slug ', $post->post_name) . ' </ div >
2008-09-25 15:42:34 +02:00
< 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 >
2009-05-14 04:00:32 +02:00
< 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 >
2009-05-18 17:11:07 +02:00
< div class = " post_password " > ' . esc_html( $post->post_password ) . ' </ div > ' ;
2008-09-21 21:45:45 +02:00
2010-02-02 18:37:03 +01:00
if ( $post_type_object -> hierarchical )
echo '<div class="post_parent">' . $post -> post_parent . '</div>' ;
2010-01-18 21:34:48 +01:00
if ( $post -> post_type == 'page' )
2010-02-02 18:37:03 +01:00
echo '<div class="page_template">' . esc_html ( get_post_meta ( $post -> ID , '_wp_page_template' , true ) ) . '</div>' ;
if ( $post_type_object -> hierarchical )
echo '<div class="menu_order">' . $post -> menu_order . '</div>' ;
2010-03-01 16:48:01 +01:00
$taxonomy_names = get_object_taxonomies ( $post -> post_type );
foreach ( $taxonomy_names as $taxonomy_name ) {
$taxonomy = get_taxonomy ( $taxonomy_name );
2010-02-02 18:37:03 +01:00
2010-03-01 16:48:01 +01: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-05 06:43:52 +02:00
2010-03-01 16:48:01 +01:00
if ( ! $post_type_object -> hierarchical )
2010-02-02 18:37:03 +01:00
echo '<div class="sticky">' . ( is_sticky ( $post -> ID ) ? 'sticky' : '' ) . '</div>' ;
2008-10-05 06:43:52 +02:00
2008-09-21 21:45:45 +02:00
echo '</div>' ;
2008-09-11 00:47:03 +02:00
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $posts
*/
2008-09-11 00:47:03 +02:00
function post_rows ( $posts = array () ) {
2008-08-25 22:21:27 +02:00
global $wp_query , $post , $mode ;
2009-05-18 17:11:07 +02:00
add_filter ( 'the_title' , 'esc_html' );
2008-08-25 22:21:27 +02:00
// Create array of post IDs.
$post_ids = array ();
2008-09-11 00:47:03 +02:00
if ( empty ( $posts ) )
$posts = & $wp_query -> posts ;
foreach ( $posts as $a_post )
2008-08-25 22:21:27 +02:00
$post_ids [] = $a_post -> ID ;
$comment_pending_count = get_pending_comments_num ( $post_ids );
2008-09-11 00:47:03 +02:00
foreach ( $posts as $post ) {
2008-08-25 22:21:27 +02:00
if ( empty ( $comment_pending_count [ $post -> ID ]) )
$comment_pending_count [ $post -> ID ] = 0 ;
_post_row ( $post , $comment_pending_count [ $post -> ID ], $mode );
}
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $a_post
* @ param unknown_type $pending_comments
* @ param unknown_type $mode
*/
2008-08-25 22:21:27 +02:00
function _post_row ( $a_post , $pending_comments , $mode ) {
2010-01-15 17:58:36 +01:00
global $post , $current_user , $current_screen ;
2008-09-21 21:45:45 +02:00
static $rowclass ;
2008-08-25 22:21:27 +02:00
$global_post = $post ;
$post = $a_post ;
2008-09-11 00:47:03 +02:00
setup_postdata ( $post );
2008-08-25 22:21:27 +02:00
2008-09-21 21:45:45 +02:00
$rowclass = 'alternate' == $rowclass ? '' : 'alternate' ;
2008-08-25 22:21:27 +02:00
$post_owner = ( $current_user -> ID == $post -> post_author ? 'self' : 'other' );
$edit_link = get_edit_post_link ( $post -> ID );
2008-09-30 23:32:13 +02:00
$title = _draft_or_post_title ();
2010-02-02 18:37:03 +01:00
$post_type_object = get_post_type_object ( $post -> post_type );
2008-08-25 22:21:27 +02:00
?>
2008-09-21 21:45:45 +02:00
< tr id = 'post-<?php echo $post->ID; ?>' class = '<?php echo trim( $rowclass . ' author - ' . $post_owner . ' status - ' . $post->post_status ); ?> iedit' valign = " top " >
2008-08-25 22:21:27 +02:00
< ? php
2010-01-15 17:58:36 +01:00
$posts_columns = get_column_headers ( $current_screen );
$hidden = get_hidden_columns ( $current_screen );
2008-09-11 03:46:30 +02:00
foreach ( $posts_columns as $column_name => $column_display_name ) {
$class = " class= \" $column_name column- $column_name\ " " ;
2008-08-25 22:21:27 +02:00
2008-09-11 03:46:30 +02:00
$style = '' ;
if ( in_array ( $column_name , $hidden ) )
$style = ' style="display:none;"' ;
$attributes = " $class $style " ;
switch ( $column_name ) {
2008-08-25 22:21:27 +02:00
case 'cb' :
?>
2010-05-12 22:45:18 +02:00
< th scope = " row " class = " check-column " >< ? php if ( current_user_can ( $post_type_object -> cap -> edit_post , $post -> ID ) ) { ?> <input type="checkbox" name="post[]" value="<?php the_ID(); ?>" /><?php } ?></th>
2008-08-25 22:21:27 +02:00
< ? php
break ;
case 'date' :
if ( '0000-00-00 00:00:00' == $post -> post_date && 'date' == $column_name ) {
$t_time = $h_time = __ ( 'Unpublished' );
2009-01-20 23:47:18 +01:00
$time_diff = 0 ;
2008-08-25 22:21:27 +02:00
} else {
2008-10-09 08:40:30 +02:00
$t_time = get_the_time ( __ ( 'Y/m/d g:i:s A' ));
$m_time = $post -> post_date ;
2008-11-04 04:22:24 +01:00
$time = get_post_time ( 'G' , true , $post );
2008-10-09 08:40:30 +02:00
2008-12-09 19:03:31 +01:00
$time_diff = time () - $time ;
2008-11-05 20:19:52 +01:00
2009-01-20 23:47:18 +01:00
if ( $time_diff > 0 && $time_diff < 24 * 60 * 60 )
$h_time = sprintf ( __ ( '%s ago' ), human_time_diff ( $time ) );
else
$h_time = mysql2date ( __ ( 'Y/m/d' ), $m_time );
2008-08-25 22:21:27 +02:00
}
2008-09-21 21:45:45 +02:00
echo '<td ' . $attributes . '>' ;
if ( 'excerpt' == $mode )
echo apply_filters ( 'post_date_column_time' , $t_time , $post , $column_name , $mode );
else
echo '<abbr title="' . $t_time . '">' . apply_filters ( 'post_date_column_time' , $h_time , $post , $column_name , $mode ) . '</abbr>' ;
2008-10-14 18:56:32 +02:00
echo '<br />' ;
2008-11-05 20:19:52 +01:00
if ( 'publish' == $post -> post_status ) {
2008-10-14 18:56:32 +02:00
_e ( 'Published' );
2008-11-05 20:19:52 +01:00
} elseif ( 'future' == $post -> post_status ) {
2009-01-20 23:47:18 +01:00
if ( $time_diff > 0 )
2008-11-05 20:19:52 +01:00
echo '<strong class="attention">' . __ ( 'Missed schedule' ) . '</strong>' ;
else
_e ( 'Scheduled' );
} else {
2008-10-14 18:56:32 +02:00
_e ( 'Last Modified' );
2008-11-05 20:19:52 +01:00
}
2008-09-21 21:45:45 +02:00
echo '</td>' ;
2008-08-25 22:21:27 +02:00
break ;
case 'title' :
2008-09-11 03:46:30 +02:00
$attributes = 'class="post-title column-title"' . $style ;
2008-08-25 22:21:27 +02:00
?>
2010-05-12 22:45:18 +02:00
< td < ? php echo $attributes ?> ><strong><?php if ( current_user_can($post_type_object->cap->edit_post, $post->ID) && $post->post_status != 'trash' ) { ?><a class="row-title" href="<?php echo $edit_link; ?>" title="<?php echo esc_attr(sprintf(__('Edit “%s”'), $title)); ?>"><?php echo $title ?></a><?php } else { echo $title; }; _post_states($post); ?></strong>
2008-08-25 22:21:27 +02:00
< ? php
if ( 'excerpt' == $mode )
the_excerpt ();
$actions = array ();
2010-05-12 22:45:18 +02:00
if ( current_user_can ( $post_type_object -> cap -> edit_post , $post -> ID ) && 'trash' != $post -> post_status ) {
2010-05-25 21:47:22 +02:00
$actions [ 'edit' ] = '<a href="' . get_edit_post_link ( $post -> ID , true ) . '" title="' . esc_attr ( __ ( 'Edit this item' )) . '">' . __ ( 'Edit' ) . '</a>' ;
$actions [ 'inline hide-if-no-js' ] = '<a href="#" class="editinline" title="' . esc_attr ( __ ( 'Edit this item inline' )) . '">' . __ ( 'Quick Edit' ) . '</a>' ;
2009-11-10 11:38:19 +01:00
}
2010-05-12 22:45:18 +02:00
if ( current_user_can ( $post_type_object -> cap -> delete_post , $post -> ID ) ) {
2009-11-10 11:38:19 +01:00
if ( 'trash' == $post -> post_status )
2010-05-25 21:47:22 +02:00
$actions [ 'untrash' ] = " <a title=' " . esc_attr ( __ ( 'Restore this item from the Trash' )) . " ' href=' " . wp_nonce_url ( admin_url ( sprintf ( $post_type_object -> _edit_link . '&action=untrash' , $post -> ID ) ), 'untrash-' . $post -> post_type . '_' . $post -> ID ) . " '> " . __ ( 'Restore' ) . " </a> " ;
2009-11-10 11:38:19 +01:00
elseif ( EMPTY_TRASH_DAYS )
2010-05-25 21:47:22 +02:00
$actions [ 'trash' ] = " <a class='submitdelete' title=' " . esc_attr ( __ ( 'Move this item to the Trash' )) . " ' href=' " . get_delete_post_link ( $post -> ID ) . " '> " . __ ( 'Trash' ) . " </a> " ;
2009-11-10 11:38:19 +01:00
if ( 'trash' == $post -> post_status || ! EMPTY_TRASH_DAYS )
2010-05-25 21:47:22 +02:00
$actions [ 'delete' ] = " <a class='submitdelete' title=' " . esc_attr ( __ ( 'Delete this item permanently' )) . " ' href=' " . get_delete_post_link ( $post -> ID , '' , true ) . " '> " . __ ( 'Delete Permanently' ) . " </a> " ;
2009-11-10 11:38:19 +01:00
}
if ( in_array ( $post -> post_status , array ( 'pending' , 'draft' )) ) {
2010-05-12 22:45:18 +02:00
if ( current_user_can ( $post_type_object -> cap -> edit_post , $post -> ID ) )
2010-05-15 22:36:49 +02:00
$actions [ 'view' ] = '<a href="' . esc_url ( add_query_arg ( 'preview' , 'true' , get_permalink ( $post -> ID ) ) ) . '" title="' . esc_attr ( sprintf ( __ ( 'Preview “%s”' ), $title )) . '" rel="permalink">' . __ ( 'Preview' ) . '</a>' ;
2009-11-10 11:38:19 +01:00
} elseif ( 'trash' != $post -> post_status ) {
$actions [ 'view' ] = '<a href="' . get_permalink ( $post -> ID ) . '" title="' . esc_attr ( sprintf ( __ ( 'View “%s”' ), $title )) . '" rel="permalink">' . __ ( 'View' ) . '</a>' ;
2008-12-09 18:31:43 +01:00
}
2009-02-23 05:28:50 +01:00
$actions = apply_filters ( 'post_row_actions' , $actions , $post );
2008-08-25 22:21:27 +02:00
$action_count = count ( $actions );
$i = 0 ;
2008-11-28 05:33:35 +01:00
echo '<div class="row-actions">' ;
2008-08-25 22:21:27 +02:00
foreach ( $actions as $action => $link ) {
++ $i ;
( $i == $action_count ) ? $sep = '' : $sep = ' | ' ;
2008-12-09 13:00:44 +01:00
echo " <span class=' $action '> $link $sep </span> " ;
2008-08-25 22:21:27 +02:00
}
2008-11-28 05:33:35 +01:00
echo '</div>' ;
2008-09-21 21:45:45 +02:00
get_inline_data ( $post );
2008-08-25 22:21:27 +02:00
?>
</ td >
< ? php
break ;
case 'categories' :
?>
2008-09-11 03:46:30 +02:00
< td < ? php echo $attributes ?> ><?php
2008-08-25 22:21:27 +02:00
$categories = get_the_category ();
if ( ! empty ( $categories ) ) {
$out = array ();
foreach ( $categories as $c )
2009-05-18 17:11:07 +02:00
$out [] = " <a href='edit.php?category_name= $c->slug '> " . esc_html ( sanitize_term_field ( 'name' , $c -> name , $c -> term_id , 'category' , 'display' )) . " </a> " ;
2008-08-25 22:21:27 +02:00
echo join ( ', ' , $out );
} else {
_e ( 'Uncategorized' );
}
?> </td>
< ? php
break ;
case 'tags' :
?>
2008-09-11 03:46:30 +02:00
< td < ? php echo $attributes ?> ><?php
2008-09-18 19:27:07 +02:00
$tags = get_the_tags ( $post -> ID );
2008-08-25 22:21:27 +02:00
if ( ! empty ( $tags ) ) {
$out = array ();
foreach ( $tags as $c )
2009-05-18 17:11:07 +02:00
$out [] = " <a href='edit.php?tag= $c->slug '> " . esc_html ( sanitize_term_field ( 'name' , $c -> name , $c -> term_id , 'post_tag' , 'display' )) . " </a> " ;
2008-08-25 22:21:27 +02:00
echo join ( ', ' , $out );
} else {
_e ( 'No Tags' );
}
?> </td>
< ? php
break ;
case 'comments' :
?>
2008-09-11 03:46:30 +02:00
< td < ? php echo $attributes ?> ><div class="post-com-count-wrapper">
2008-08-25 22:21:27 +02:00
< ? php
$pending_phrase = sprintf ( __ ( '%s pending' ), number_format ( $pending_comments ) );
if ( $pending_comments )
echo '<strong>' ;
2009-03-13 04:53:39 +01:00
comments_number ( " <a href='edit-comments.php?p= $post->ID ' title=' $pending_phrase ' class='post-com-count'><span class='comment-count'> " . /* translators: comment count link */ _x ( '0' , 'comment count' ) . '</span></a>' , " <a href='edit-comments.php?p= $post->ID ' title=' $pending_phrase ' class='post-com-count'><span class='comment-count'> " . /* translators: comment count link */ _x ( '1' , 'comment count' ) . '</span></a>' , " <a href='edit-comments.php?p= $post->ID ' title=' $pending_phrase ' class='post-com-count'><span class='comment-count'> " . /* translators: comment count link: % will be substituted by comment count */ _x ( '%' , 'comment count' ) . '</span></a>' );
2008-08-25 22:21:27 +02:00
if ( $pending_comments )
echo '</strong>' ;
?>
</ div ></ td >
< ? php
break ;
case 'author' :
?>
2010-06-01 02:26:49 +02:00
< td < ? php echo $attributes ?> ><a href="edit.php?post_type=<?php echo $post->post_type; ?>&author=<?php the_author_meta('ID'); ?>"><?php the_author() ?></a></td>
2008-08-25 22:21:27 +02:00
< ? php
break ;
case 'control_view' :
?>
< td >< a href = " <?php the_permalink(); ?> " rel = " permalink " class = " view " >< ? php _e ( 'View' ); ?> </a></td>
< ? php
break ;
case 'control_edit' :
?>
2010-05-12 22:45:18 +02:00
< td >< ? php if ( current_user_can ( $post_type_object -> cap -> edit_post , $post -> ID ) ) { echo " <a href=' $edit_link ' class='edit'> " . __ ( 'Edit' ) . " </a> " ; } ?> </td>
2008-08-25 22:21:27 +02:00
< ? php
break ;
case 'control_delete' :
?>
2010-05-12 22:45:18 +02:00
< td >< ? php if ( current_user_can ( $post_type_object -> cap -> delete_post , $post -> ID ) ) { echo " <a href=' " . wp_nonce_url ( " post.php?action=delete&post= $id " , 'delete-post_' . $post -> ID ) . " ' class='delete'> " . __ ( 'Delete' ) . " </a> " ; } ?> </td>
2008-08-25 22:21:27 +02:00
< ? php
break ;
default :
?>
2008-10-09 04:39:52 +02:00
< td < ? php echo $attributes ?> ><?php do_action('manage_posts_custom_column', $column_name, $post->ID); ?></td>
2008-08-25 22:21:27 +02:00
< ? php
break ;
}
}
?>
</ tr >
< ? php
$post = $global_post ;
}
2007-12-14 07:20:42 +01:00
/*
* display one row if the page doesn ' t have any children
* otherwise , display the row and its children in subsequent rows
*/
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $page
* @ param unknown_type $level
*/
2008-06-15 02:45:01 +02:00
function display_page_row ( $page , $level = 0 ) {
2010-01-15 17:58:36 +01:00
global $post , $current_screen ;
2008-09-21 21:45:45 +02:00
static $rowclass ;
2008-02-05 07:47:27 +01:00
2007-12-14 07:20:42 +01:00
$post = $page ;
setup_postdata ( $page );
2009-04-17 02:07:22 +02:00
if ( 0 == $level && ( int ) $page -> post_parent > 0 ) {
//sent level 0 by accident, by default, or because we don't know the actual level
$find_main_page = ( int ) $page -> post_parent ;
while ( $find_main_page > 0 ) {
$parent = get_page ( $find_main_page );
2009-04-20 20:18:39 +02:00
2009-04-17 02:07:22 +02:00
if ( is_null ( $parent ) )
break ;
2009-04-20 20:18:39 +02:00
2009-04-17 02:07:22 +02:00
$level ++ ;
$find_main_page = ( int ) $parent -> post_parent ;
2009-04-20 20:18:39 +02:00
2009-04-17 02:07:22 +02:00
if ( ! isset ( $parent_name ) )
$parent_name = $parent -> post_title ;
}
}
2009-05-18 17:11:07 +02:00
$page -> post_title = esc_html ( $page -> post_title );
2007-12-14 07:20:42 +01:00
$pad = str_repeat ( '— ' , $level );
$id = ( int ) $page -> ID ;
2008-09-21 21:45:45 +02:00
$rowclass = 'alternate' == $rowclass ? '' : 'alternate' ;
2010-01-15 17:58:36 +01:00
$posts_columns = get_column_headers ( $current_screen );
$hidden = get_hidden_columns ( $current_screen );
2008-09-30 23:32:13 +02:00
$title = _draft_or_post_title ();
2010-01-21 07:53:33 +01:00
$post_type = $page -> post_type ;
2010-02-02 18:37:03 +01:00
$post_type_object = get_post_type_object ( $post_type );
2007-05-25 09:16:21 +02:00
?>
2008-09-21 21:45:45 +02:00
< tr id = " page-<?php echo $id ; ?> " class = " <?php echo $rowclass ; ?> iedit " >
< ? php
2008-02-12 06:51:53 +01:00
2010-02-02 18:37:03 +01:00
foreach ( $posts_columns as $column_name => $column_display_name ) {
2008-09-11 07:36:34 +02:00
$class = " class= \" $column_name column- $column_name\ " " ;
$style = '' ;
if ( in_array ( $column_name , $hidden ) )
$style = ' style="display:none;"' ;
$attributes = " $class $style " ;
2008-02-12 06:51:53 +01:00
switch ( $column_name ) {
case 'cb' :
?>
2010-05-28 17:49:13 +02:00
< th scope = " row " class = " check-column " >< ? php if ( current_user_can ( $post_type_object -> cap -> edit_post , $page -> ID ) ) { ?> <input type="checkbox" name="post[]" value="<?php the_ID(); ?>" /><?php } ?></th>
2008-02-12 06:51:53 +01:00
< ? php
break ;
case 'date' :
2008-02-20 08:01:36 +01:00
if ( '0000-00-00 00:00:00' == $page -> post_date && 'date' == $column_name ) {
$t_time = $h_time = __ ( 'Unpublished' );
2009-01-21 00:07:21 +01:00
$time_diff = 0 ;
2008-02-12 06:51:53 +01:00
} else {
2008-10-09 08:40:30 +02:00
$t_time = get_the_time ( __ ( 'Y/m/d g:i:s A' ));
$m_time = $page -> post_date ;
$time = get_post_time ( 'G' , true );
2009-01-21 00:07:21 +01:00
$time_diff = time () - $time ;
if ( $time_diff > 0 && $time_diff < 24 * 60 * 60 )
$h_time = sprintf ( __ ( '%s ago' ), human_time_diff ( $time ) );
else
2008-02-20 08:01:36 +01:00
$h_time = mysql2date ( __ ( 'Y/m/d' ), $m_time );
2008-02-12 06:51:53 +01:00
}
2008-10-14 18:56:32 +02:00
echo '<td ' . $attributes . '>' ;
2008-11-03 07:31:06 +01:00
echo '<abbr title="' . $t_time . '">' . apply_filters ( 'post_date_column_time' , $h_time , $page , $column_name , '' ) . '</abbr>' ;
2008-10-14 18:56:32 +02:00
echo '<br />' ;
2009-01-21 00:07:21 +01:00
if ( 'publish' == $page -> post_status ) {
2008-10-14 18:56:32 +02:00
_e ( 'Published' );
2009-01-21 00:07:21 +01:00
} elseif ( 'future' == $page -> post_status ) {
if ( $time_diff > 0 )
echo '<strong class="attention">' . __ ( 'Missed schedule' ) . '</strong>' ;
else
_e ( 'Scheduled' );
} else {
2008-10-14 18:56:32 +02:00
_e ( 'Last Modified' );
2009-01-21 00:07:21 +01:00
}
2008-10-14 18:56:32 +02:00
echo '</td>' ;
2008-02-12 06:51:53 +01:00
break ;
case 'title' :
2008-09-11 07:36:34 +02:00
$attributes = 'class="post-title page-title column-title"' . $style ;
2008-08-21 07:52:03 +02:00
$edit_link = get_edit_post_link ( $page -> ID );
2008-02-12 06:51:53 +01:00
?>
2010-05-14 02:34:04 +02:00
< td < ? php echo $attributes ?> ><strong><?php if ( current_user_can($post_type_object->cap->edit_post, $page->ID) && $post->post_status != 'trash' ) { ?><a class="row-title" href="<?php echo $edit_link; ?>" title="<?php echo esc_attr(sprintf(__('Edit “%s”'), $title)); ?>"><?php echo $pad; echo $title ?></a><?php } else { echo $pad; echo $title; }; _post_states($page); echo isset($parent_name) ? ' | ' . $post_type_object->labels->parent_item_colon . ' ' . esc_html($parent_name) : ''; ?></strong>
2008-08-20 23:52:47 +02:00
< ? php
$actions = array ();
2010-05-12 22:45:18 +02:00
if ( current_user_can ( $post_type_object -> cap -> edit_post , $page -> ID ) && $post -> post_status != 'trash' ) {
2009-11-10 11:38:19 +01:00
$actions [ 'edit' ] = '<a href="' . $edit_link . '" title="' . esc_attr ( __ ( 'Edit this page' )) . '">' . __ ( 'Edit' ) . '</a>' ;
$actions [ 'inline' ] = '<a href="#" class="editinline">' . __ ( 'Quick Edit' ) . '</a>' ;
}
2010-05-12 22:45:18 +02:00
if ( current_user_can ( $post_type_object -> cap -> delete_post , $page -> ID ) ) {
2009-11-10 11:38:19 +01:00
if ( $post -> post_status == 'trash' )
2010-03-21 03:29:11 +01:00
$actions [ 'untrash' ] = " <a title=' " . esc_attr ( __ ( 'Remove this page from the Trash' )) . " ' href=' " . wp_nonce_url ( " post.php?post_type= $post_type &action=untrash&post= $page->ID " , 'untrash-' . $post -> post_type . '_' . $page -> ID ) . " '> " . __ ( 'Restore' ) . " </a> " ;
2009-11-10 11:38:19 +01:00
elseif ( EMPTY_TRASH_DAYS )
2009-09-21 23:33:00 +02:00
$actions [ 'trash' ] = " <a class='submitdelete' title=' " . esc_attr ( __ ( 'Move this page to the Trash' )) . " ' href=' " . get_delete_post_link ( $page -> ID ) . " '> " . __ ( 'Trash' ) . " </a> " ;
2009-11-10 11:38:19 +01:00
if ( $post -> post_status == 'trash' || ! EMPTY_TRASH_DAYS )
2010-03-21 03:29:11 +01:00
$actions [ 'delete' ] = " <a class='submitdelete' title=' " . esc_attr ( __ ( 'Delete this page permanently' )) . " ' href=' " . wp_nonce_url ( " post.php?post_type= $post_type &action=delete&post= $page->ID " , 'delete-' . $post -> post_type . '_' . $page -> ID ) . " '> " . __ ( 'Delete Permanently' ) . " </a> " ;
2009-11-10 11:38:19 +01:00
}
if ( in_array ( $post -> post_status , array ( 'pending' , 'draft' )) ) {
2010-05-12 22:45:18 +02:00
if ( current_user_can ( $post_type_object -> cap -> edit_post , $page -> ID ) )
2010-05-15 22:36:49 +02:00
$actions [ 'view' ] = '<a href="' . esc_url ( add_query_arg ( 'preview' , 'true' , get_permalink ( $page -> ID ) ) ) . '" title="' . esc_attr ( sprintf ( __ ( 'Preview “%s”' ), $title )) . '" rel="permalink">' . __ ( 'Preview' ) . '</a>' ;
2009-11-10 11:38:19 +01:00
} elseif ( $post -> post_status != 'trash' ) {
$actions [ 'view' ] = '<a href="' . get_permalink ( $page -> ID ) . '" title="' . esc_attr ( sprintf ( __ ( 'View “%s”' ), $title )) . '" rel="permalink">' . __ ( 'View' ) . '</a>' ;
2008-12-09 18:31:43 +01:00
}
2009-02-23 05:28:50 +01:00
$actions = apply_filters ( 'page_row_actions' , $actions , $page );
2008-08-20 23:52:47 +02:00
$action_count = count ( $actions );
2008-11-28 05:33:35 +01:00
2008-08-20 23:52:47 +02:00
$i = 0 ;
2008-11-28 05:33:35 +01:00
echo '<div class="row-actions">' ;
2008-08-20 23:52:47 +02:00
foreach ( $actions as $action => $link ) {
++ $i ;
( $i == $action_count ) ? $sep = '' : $sep = ' | ' ;
echo " <span class=' $action '> $link $sep </span> " ;
}
2008-11-28 05:33:35 +01:00
echo '</div>' ;
2008-10-05 06:43:52 +02:00
2008-09-21 21:45:45 +02:00
get_inline_data ( $post );
echo '</td>' ;
2008-02-12 06:51:53 +01:00
break ;
case 'comments' :
?>
2008-09-11 07:36:34 +02:00
< td < ? php echo $attributes ?> ><div class="post-com-count-wrapper">
2008-02-12 06:51:53 +01:00
< ? php
$left = get_pending_comments_num ( $page -> ID );
$pending_phrase = sprintf ( __ ( '%s pending' ), number_format ( $left ) );
if ( $left )
echo '<strong>' ;
2009-03-13 04:53:39 +01:00
comments_number ( " <a href='edit-comments.php?p= $id ' title=' $pending_phrase ' class='post-com-count'><span class='comment-count'> " . /* translators: comment count link */ _x ( '0' , 'comment count' ) . '</span></a>' , " <a href='edit-comments.php?p= $id ' title=' $pending_phrase ' class='post-com-count'><span class='comment-count'> " . /* translators: comment count link */ _x ( '1' , 'comment count' ) . '</span></a>' , " <a href='edit-comments.php?p= $id ' title=' $pending_phrase ' class='post-com-count'><span class='comment-count'> " . /* translators: comment count link: % will be substituted by comment count */ _x ( '%' , 'comment count' ) . '</span></a>' );
2008-02-12 06:51:53 +01:00
if ( $left )
echo '</strong>' ;
?>
2008-03-20 22:40:17 +01:00
</ div ></ td >
2008-02-12 06:51:53 +01:00
< ? php
break ;
case 'author' :
?>
2010-06-01 02:26:49 +02:00
< td < ? php echo $attributes ?> ><a href="edit.php?post_type=<?php echo $post_type; ?>&author=<?php the_author_meta('ID'); ?>"><?php the_author() ?></a></td>
2008-02-12 06:51:53 +01:00
< ? php
break ;
default :
?>
2008-10-09 04:39:52 +02:00
< td < ? php echo $attributes ?> ><?php do_action('manage_pages_custom_column', $column_name, $id); ?></td>
2008-02-12 06:51:53 +01:00
< ? php
break ;
}
}
2008-09-21 21:45:45 +02:00
?>
2008-03-02 21:17:30 +01:00
2008-09-21 21:45:45 +02:00
</ tr >
2007-05-25 09:16:21 +02:00
< ? php
}
2007-12-14 07:20:42 +01:00
/*
2008-07-12 17:40:57 +02:00
* displays pages in hierarchical order with paging support
2007-12-14 07:20:42 +01:00
*/
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $pages
* @ param unknown_type $pagenum
* @ param unknown_type $per_page
* @ return unknown
*/
2008-06-15 02:45:01 +02:00
function page_rows ( $pages , $pagenum = 1 , $per_page = 20 ) {
2008-09-19 19:18:29 +02:00
global $wpdb ;
2008-06-15 02:45:01 +02:00
$level = 0 ;
if ( ! $pages ) {
2008-05-08 21:19:58 +02:00
$pages = get_pages ( array ( 'sort_column' => 'menu_order' ) );
2007-12-14 07:20:42 +01:00
2008-06-15 02:45:01 +02:00
if ( ! $pages )
return false ;
}
2007-12-14 07:20:42 +01:00
2008-08-09 07:36:14 +02:00
/*
2008-07-12 17:40:57 +02:00
* arrange pages into two parts : top level pages and children_pages
2008-08-09 07:36:14 +02:00
* children_pages is two dimensional array , eg .
* children_pages [ 10 ][] contains all sub - pages whose parent is 10.
2008-07-12 17:40:57 +02:00
* It only takes O ( N ) to arrange this and it takes O ( 1 ) for subsequent lookup operations
* If searching , ignore hierarchy and treat everything as top level
*/
2008-09-21 21:45:45 +02:00
if ( empty ( $_GET [ 's' ]) ) {
2008-08-09 07:36:14 +02:00
2008-07-12 17:40:57 +02:00
$top_level_pages = array ();
2008-09-21 21:45:45 +02:00
$children_pages = array ();
2008-08-09 07:36:14 +02:00
2008-06-15 02:45:01 +02:00
foreach ( $pages as $page ) {
2008-08-09 07:36:14 +02:00
2008-06-15 02:45:01 +02:00
// catch and repair bad pages
if ( $page -> post_parent == $page -> ID ) {
$page -> post_parent = 0 ;
2010-01-07 21:13:54 +01:00
$wpdb -> update ( $wpdb -> posts , array ( 'post_parent' => 0 ), array ( 'ID' => $page -> ID ));
2008-06-15 02:45:01 +02:00
clean_page_cache ( $page -> ID );
}
2008-08-09 07:36:14 +02:00
2008-06-15 02:45:01 +02:00
if ( 0 == $page -> post_parent )
$top_level_pages [] = $page ;
else
2008-07-12 17:40:57 +02:00
$children_pages [ $page -> post_parent ][] = $page ;
2008-06-15 02:45:01 +02:00
}
$pages = & $top_level_pages ;
}
$count = 0 ;
$start = ( $pagenum - 1 ) * $per_page ;
$end = $start + $per_page ;
2008-08-09 07:36:14 +02:00
2007-12-14 07:20:42 +01:00
foreach ( $pages as $page ) {
2008-06-15 02:45:01 +02:00
if ( $count >= $end )
break ;
2008-02-05 07:47:27 +01:00
2008-06-15 02:45:01 +02:00
if ( $count >= $start )
echo " \t " . display_page_row ( $page , $level );
$count ++ ;
2008-02-05 07:47:27 +01:00
2008-06-15 02:45:01 +02:00
if ( isset ( $children_pages ) )
_page_rows ( $children_pages , $count , $page -> ID , $level + 1 , $pagenum , $per_page );
2007-12-14 07:20:42 +01:00
}
2008-08-09 07:36:14 +02:00
2008-07-12 17:40:57 +02:00
// if it is the last pagenum and there are orphaned pages, display them with paging as well
if ( isset ( $children_pages ) && $count < $end ){
foreach ( $children_pages as $orphans ){
foreach ( $orphans as $op ) {
if ( $count >= $end )
break ;
if ( $count >= $start )
echo " \t " . display_page_row ( $op , 0 );
$count ++ ;
}
}
}
2008-06-15 02:45:01 +02:00
}
2010-05-24 23:28:07 +02:00
/**
2008-07-12 17:40:57 +02:00
* Given a top level page ID , display the nested hierarchy of sub - pages
* together with paging support
2008-10-02 03:03:26 +02:00
*
* @ since unknown
*
* @ param unknown_type $children_pages
* @ param unknown_type $count
* @ param unknown_type $parent
* @ param unknown_type $level
* @ param unknown_type $pagenum
* @ param unknown_type $per_page
*/
2008-07-12 17:40:57 +02:00
function _page_rows ( & $children_pages , & $count , $parent , $level , $pagenum , $per_page ) {
2008-08-09 07:36:14 +02:00
2008-07-12 17:40:57 +02:00
if ( ! isset ( $children_pages [ $parent ] ) )
2008-08-09 07:36:14 +02:00
return ;
2008-06-15 02:45:01 +02:00
$start = ( $pagenum - 1 ) * $per_page ;
$end = $start + $per_page ;
2008-08-09 07:36:14 +02:00
2008-07-12 17:40:57 +02:00
foreach ( $children_pages [ $parent ] as $page ) {
2008-08-09 07:36:14 +02:00
2008-06-15 02:45:01 +02:00
if ( $count >= $end )
break ;
2008-08-09 07:36:14 +02:00
2008-06-15 02:45:01 +02:00
// If the page starts in a subtree, print the parents.
if ( $count == $start && $page -> post_parent > 0 ) {
$my_parents = array ();
$my_parent = $page -> post_parent ;
while ( $my_parent ) {
$my_parent = get_post ( $my_parent );
$my_parents [] = $my_parent ;
if ( ! $my_parent -> post_parent )
break ;
$my_parent = $my_parent -> post_parent ;
}
$num_parents = count ( $my_parents );
while ( $my_parent = array_pop ( $my_parents ) ) {
echo " \t " . display_page_row ( $my_parent , $level - $num_parents );
$num_parents -- ;
}
2008-02-05 07:47:27 +01:00
}
2008-06-15 02:45:01 +02:00
if ( $count >= $start )
echo " \t " . display_page_row ( $page , $level );
2008-08-09 07:36:14 +02:00
2008-06-15 02:45:01 +02:00
$count ++ ;
2008-07-12 17:40:57 +02:00
_page_rows ( $children_pages , $count , $page -> ID , $level + 1 , $pagenum , $per_page );
2008-06-15 02:45:01 +02:00
}
2008-08-09 07:36:14 +02:00
2008-07-12 17:40:57 +02:00
unset ( $children_pages [ $parent ] ); //required in order to keep track of orphans
2007-12-14 07:20:42 +01:00
}
2008-10-02 03:03:26 +02:00
/**
2010-03-03 20:08:30 +01:00
* Generate HTML for a single row on the users . php admin panel .
2008-10-02 03:03:26 +02:00
*
2010-03-03 20:08:30 +01:00
* @ since 2.1 . 0
2008-10-02 03:03:26 +02:00
*
2010-03-03 20:08:30 +01:00
* @ param object $user_object
* @ param string $style Optional . Attributes added to the TR element . Must be sanitized .
* @ param string $role Key for the $wp_roles array .
* @ param int $numposts Optional . Post count to display for this user . Defaults to zero , as in , a new user has made zero posts .
* @ return string
2008-10-02 03:03:26 +02:00
*/
2010-03-03 20:08:30 +01:00
function user_row ( $user_object , $style = '' , $role = '' , $numposts = 0 ) {
2008-02-16 22:44:50 +01:00
global $wp_roles ;
2008-03-15 21:27:16 +01:00
$current_user = wp_get_current_user ();
2008-08-09 07:36:14 +02:00
2007-12-14 07:20:42 +01:00
if ( ! ( is_object ( $user_object ) && is_a ( $user_object , 'WP_User' ) ) )
2007-05-25 09:16:21 +02:00
$user_object = new WP_User ( ( int ) $user_object );
2009-09-14 15:57:48 +02:00
$user_object = sanitize_user_object ( $user_object , 'display' );
2007-05-25 09:16:21 +02:00
$email = $user_object -> user_email ;
$url = $user_object -> user_url ;
$short_url = str_replace ( 'http://' , '' , $url );
$short_url = str_replace ( 'www.' , '' , $short_url );
if ( '/' == substr ( $short_url , - 1 ))
$short_url = substr ( $short_url , 0 , - 1 );
if ( strlen ( $short_url ) > 35 )
2008-09-21 21:45:45 +02:00
$short_url = substr ( $short_url , 0 , 32 ) . '...' ;
2008-12-30 20:38:44 +01:00
$checkbox = '' ;
2009-02-01 10:45:24 +01:00
// Check if the user for this row is editable
2010-04-23 00:53:44 +02:00
if ( current_user_can ( 'list_users' ) ) {
2009-02-01 10:45:24 +01:00
// Set up the user editing link
2010-02-26 06:46:08 +01:00
// TODO: make profile/user-edit determination a separate function
2008-03-15 21:27:16 +01:00
if ( $current_user -> ID == $user_object -> ID ) {
2008-09-17 06:39:08 +02:00
$edit_link = 'profile.php' ;
2008-03-15 21:27:16 +01:00
} else {
2010-05-03 20:16:22 +02:00
$edit_link = esc_url ( add_query_arg ( 'wp_http_referer' , urlencode ( esc_url ( stripslashes ( $_SERVER [ 'REQUEST_URI' ] ) ) ), " user-edit.php?user_id= $user_object->ID " ) );
2008-09-17 06:39:08 +02:00
}
$edit = " <strong><a href= \" $edit_link\ " > $user_object -> user_login </ a ></ strong >< br /> " ;
2009-02-01 10:45:24 +01:00
2008-12-30 20:38:44 +01:00
// Set up the hover actions for this user
2008-09-17 06:39:08 +02:00
$actions = array ();
2010-04-22 21:48:13 +02:00
2010-04-23 00:53:44 +02:00
if ( current_user_can ( 'edit_user' , $user_object -> ID ) ) {
$edit = " <strong><a href= \" $edit_link\ " > $user_object -> user_login </ a ></ strong >< br /> " ;
2010-04-22 21:48:13 +02:00
$actions [ 'edit' ] = '<a href="' . $edit_link . '">' . __ ( 'Edit' ) . '</a>' ;
2010-04-23 00:53:44 +02:00
} else {
$edit = " <strong> $user_object->user_login </strong><br /> " ;
}
2010-04-21 19:43:53 +02:00
if ( ! is_multisite () && $current_user -> ID != $user_object -> ID && current_user_can ( 'delete_user' , $user_object -> ID ) )
2008-11-28 23:03:52 +01:00
$actions [ 'delete' ] = " <a class='submitdelete' href=' " . wp_nonce_url ( " users.php?action=delete&user= $user_object->ID " , 'bulk-users' ) . " '> " . __ ( 'Delete' ) . " </a> " ;
2010-04-21 19:43:53 +02:00
if ( is_multisite () && $current_user -> ID != $user_object -> ID && current_user_can ( 'remove_user' , $user_object -> ID ) )
$actions [ 'remove' ] = " <a class='submitdelete' href=' " . wp_nonce_url ( " users.php?action=remove&user= $user_object->ID " , 'bulk-users' ) . " '> " . __ ( 'Remove' ) . " </a> " ;
2009-02-23 05:28:50 +01:00
$actions = apply_filters ( 'user_row_actions' , $actions , $user_object );
2008-09-17 06:39:08 +02:00
$action_count = count ( $actions );
$i = 0 ;
2008-11-28 05:33:35 +01:00
$edit .= '<div class="row-actions">' ;
2008-09-17 06:39:08 +02:00
foreach ( $actions as $action => $link ) {
++ $i ;
( $i == $action_count ) ? $sep = '' : $sep = ' | ' ;
$edit .= " <span class=' $action '> $link $sep </span> " ;
2008-03-15 21:27:16 +01:00
}
2008-11-28 05:33:35 +01:00
$edit .= '</div>' ;
2009-02-01 10:45:24 +01:00
2008-12-30 20:38:44 +01:00
// Set up the checkbox (because the user is editable, otherwise its empty)
$checkbox = " <input type='checkbox' name='users[]' id='user_ { $user_object -> ID } ' class=' $role ' value=' { $user_object -> ID } ' /> " ;
2009-02-01 10:45:24 +01:00
2008-02-14 21:15:36 +01:00
} else {
2008-09-17 06:39:08 +02:00
$edit = '<strong>' . $user_object -> user_login . '</strong>' ;
2008-02-14 21:15:36 +01:00
}
2009-03-11 00:02:29 +01:00
$role_name = isset ( $wp_roles -> role_names [ $role ]) ? translate_user_role ( $wp_roles -> role_names [ $role ] ) : __ ( 'None' );
2008-09-19 07:31:00 +02:00
$r = " <tr id='user- $user_object->ID ' $style > " ;
2008-11-17 20:16:26 +01:00
$columns = get_column_headers ( 'users' );
$hidden = get_hidden_columns ( 'users' );
2009-01-26 23:03:40 +01:00
$avatar = get_avatar ( $user_object -> ID , 32 );
2008-09-19 07:31:00 +02:00
foreach ( $columns as $column_name => $column_display_name ) {
$class = " class= \" $column_name column- $column_name\ " " ;
$style = '' ;
if ( in_array ( $column_name , $hidden ) )
$style = ' style="display:none;"' ;
$attributes = " $class $style " ;
switch ( $column_name ) {
case 'cb' :
2008-12-30 20:38:44 +01:00
$r .= " <th scope='row' class='check-column'> $checkbox </th> " ;
2008-09-19 07:31:00 +02:00
break ;
case 'username' :
2008-11-01 12:19:13 +01:00
$r .= " <td $attributes > $avatar $edit </td> " ;
2008-09-19 07:31:00 +02:00
break ;
case 'name' :
$r .= " <td $attributes > $user_object->first_name $user_object->last_name </td> " ;
break ;
case 'email' :
2010-01-21 22:37:43 +01:00
$r .= " <td $attributes ><a href='mailto: $email ' title=' " . sprintf ( __ ( 'E-mail: %s' ), $email ) . " '> $email </a></td> " ;
2008-09-19 07:31:00 +02:00
break ;
case 'role' :
$r .= " <td $attributes > $role_name </td> " ;
break ;
case 'posts' :
$attributes = 'class="posts column-posts num"' . $style ;
$r .= " <td $attributes > " ;
if ( $numposts > 0 ) {
$r .= " <a href='edit.php?author= $user_object->ID ' title=' " . __ ( 'View posts by this author' ) . " ' class='edit'> " ;
$r .= $numposts ;
$r .= '</a>' ;
} else {
$r .= 0 ;
}
$r .= " </td> " ;
2009-01-04 05:21:35 +01:00
break ;
default :
$r .= " <td $attributes > " ;
2009-02-04 13:31:47 +01:00
$r .= apply_filters ( 'manage_users_custom_column' , '' , $column_name , $user_object -> ID );
2009-01-04 05:21:35 +01:00
$r .= " </td> " ;
2008-09-19 07:31:00 +02:00
}
2007-05-25 09:16:21 +02:00
}
2008-09-19 07:31:00 +02:00
$r .= '</tr>' ;
2007-05-25 09:16:21 +02:00
return $r ;
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
2009-07-30 15:39:34 +02:00
* @ param string $status Comment status ( approved , spam , trash , etc )
2009-07-28 01:28:13 +02:00
* @ param string $s Term to search for
* @ param int $start Offset to start at for pagination
* @ param int $num Maximum number of comments to return
* @ param int $post Post ID or 0 to return all comments
* @ param string $type Comment type ( comment , trackback , pingback , etc )
* @ return array [ 0 ] contains the comments and [ 1 ] contains the total number of comments that match ( ignoring $start and $num )
2008-10-02 03:03:26 +02:00
*/
2008-10-01 17:48:45 +02:00
function _wp_get_comment_list ( $status = '' , $s = false , $start , $num , $post = 0 , $type = '' ) {
2007-05-25 09:16:21 +02:00
global $wpdb ;
2007-08-01 21:41:44 +02:00
$start = abs ( ( int ) $start );
2007-05-25 09:16:21 +02:00
$num = ( int ) $num ;
2008-09-28 19:48:55 +02:00
$post = ( int ) $post ;
2009-01-23 23:26:40 +01:00
$count = wp_count_comments ();
2009-01-26 23:34:50 +01:00
$index = '' ;
2009-02-01 10:45:24 +01:00
2009-01-23 23:26:40 +01:00
if ( 'moderated' == $status ) {
2009-07-30 15:39:34 +02:00
$approved = " c.comment_approved = '0' " ;
2009-01-23 23:26:40 +01:00
$total = $count -> moderated ;
} elseif ( 'approved' == $status ) {
2009-07-30 15:39:34 +02:00
$approved = " c.comment_approved = '1' " ;
2009-01-23 23:26:40 +01:00
$total = $count -> approved ;
} elseif ( 'spam' == $status ) {
2009-07-30 15:39:34 +02:00
$approved = " c.comment_approved = 'spam' " ;
2009-01-23 23:26:40 +01:00
$total = $count -> spam ;
2009-07-30 15:39:34 +02:00
} elseif ( 'trash' == $status ) {
$approved = " c.comment_approved = 'trash' " ;
$total = $count -> trash ;
2009-01-23 23:26:40 +01:00
} else {
2009-07-30 15:39:34 +02:00
$approved = " ( c.comment_approved = '0' OR c.comment_approved = '1' ) " ;
2009-01-23 23:26:40 +01:00
$total = $count -> moderated + $count -> approved ;
2009-07-30 15:39:34 +02:00
$index = 'USE INDEX (c.comment_date_gmt)' ;
2009-01-23 23:26:40 +01:00
}
2008-03-02 21:17:30 +01:00
2008-12-06 04:59:03 +01:00
if ( $post ) {
2009-01-23 23:26:40 +01:00
$total = '' ;
2009-07-30 15:39:34 +02:00
$post = " AND c.comment_post_ID = ' $post ' " ;
2008-12-06 04:59:03 +01:00
} else {
2008-09-28 19:48:55 +02:00
$post = '' ;
2008-12-06 04:59:03 +01:00
}
2008-09-28 19:48:55 +02:00
2009-09-04 10:50:55 +02:00
$orderby = " ORDER BY c.comment_date_gmt DESC LIMIT $start , $num " ;
2008-10-01 17:48:45 +02:00
if ( 'comment' == $type )
2009-07-30 15:39:34 +02:00
$typesql = " AND c.comment_type = '' " ;
2008-10-19 02:38:29 +02:00
elseif ( 'pings' == $type )
2009-07-30 15:39:34 +02:00
$typesql = " AND ( c.comment_type = 'pingback' OR c.comment_type = 'trackback' ) " ;
2009-09-21 16:43:31 +02:00
elseif ( 'all' == $type )
$typesql = '' ;
2009-07-28 01:28:13 +02:00
elseif ( ! empty ( $type ) )
2009-07-30 15:39:34 +02:00
$typesql = $wpdb -> prepare ( " AND c.comment_type = %s " , $type );
2008-10-01 17:48:45 +02:00
else
$typesql = '' ;
2009-01-23 23:26:40 +01:00
if ( ! empty ( $type ) )
$total = '' ;
2009-07-30 15:39:34 +02:00
$query = " FROM $wpdb->comments c LEFT JOIN $wpdb->posts p ON c.comment_post_ID = p.ID WHERE p.post_status != 'trash' " ;
2007-05-25 09:16:21 +02:00
if ( $s ) {
2009-01-23 23:26:40 +01:00
$total = '' ;
2007-05-25 09:16:21 +02:00
$s = $wpdb -> escape ( $s );
2009-07-30 15:39:34 +02:00
$query .= " AND
( c . comment_author LIKE '%$s%' OR
c . comment_author_email LIKE '%$s%' OR
c . comment_author_url LIKE ( '%$s%' ) OR
c . comment_author_IP LIKE ( '%$s%' ) OR
c . comment_content LIKE ( '%$s%' ) ) AND
2008-02-23 09:01:51 +01:00
$approved
2009-01-23 23:40:37 +01:00
$typesql " ;
2007-05-25 09:16:21 +02:00
} else {
2009-07-30 15:39:34 +02:00
$query .= " AND $approved $post $typesql " ;
2007-05-25 09:16:21 +02:00
}
2009-09-14 16:03:32 +02:00
2009-01-23 23:40:37 +01:00
$comments = $wpdb -> get_results ( " SELECT * $query $orderby " );
2009-01-23 23:26:40 +01:00
if ( '' === $total )
2009-07-30 15:39:34 +02:00
$total = $wpdb -> get_var ( " SELECT COUNT(c.comment_ID) $query " );
2007-06-08 02:20:22 +02:00
2009-01-23 23:26:40 +01:00
update_comment_cache ( $comments );
2007-05-25 09:16:21 +02:00
return array ( $comments , $total );
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $comment_id
* @ param unknown_type $mode
* @ param unknown_type $comment_status
* @ param unknown_type $checkbox
*/
2008-11-25 03:41:54 +01:00
function _wp_comment_row ( $comment_id , $mode , $comment_status , $checkbox = true , $from_ajax = false ) {
2008-12-07 08:10:47 +01:00
global $comment , $post , $_comment_pending_count ;
2008-02-28 07:50:25 +01:00
$comment = get_comment ( $comment_id );
2007-06-08 02:20:22 +02:00
$post = get_post ( $comment -> comment_post_ID );
2008-02-28 07:50:25 +01:00
$the_comment_status = wp_get_comment_status ( $comment -> comment_ID );
2010-02-02 18:37:03 +01:00
$post_type_object = get_post_type_object ( $post -> post_type );
2010-05-12 22:45:18 +02:00
$user_can = current_user_can ( $post_type_object -> cap -> edit_post , $post -> ID );
2008-03-15 23:09:23 +01:00
2010-05-03 20:16:22 +02:00
$comment_url = esc_url ( get_comment_link ( $comment -> comment_ID ));
2008-02-28 07:50:25 +01:00
$author_url = get_comment_author_url ();
if ( 'http://' == $author_url )
$author_url = '' ;
2009-07-19 01:21:50 +02:00
$author_url_display = preg_replace ( '|http://(www\.)?|i' , '' , $author_url );
2008-02-28 07:50:25 +01:00
if ( strlen ( $author_url_display ) > 50 )
$author_url_display = substr ( $author_url_display , 0 , 49 ) . '...' ;
2008-03-15 23:09:23 +01:00
2008-03-11 08:28:47 +01:00
$ptime = date ( 'G' , strtotime ( $comment -> comment_date ) );
2008-02-28 07:50:25 +01:00
if ( ( abs ( time () - $ptime ) ) < 86400 )
$ptime = sprintf ( __ ( '%s ago' ), human_time_diff ( $ptime ) );
else
2008-03-11 08:28:47 +01:00
$ptime = mysql2date ( __ ( 'Y/m/d \a\t g:i A' ), $comment -> comment_date );
2007-05-25 09:16:21 +02:00
2009-10-08 10:24:59 +02:00
if ( $user_can ) {
$del_nonce = esc_html ( '_wpnonce=' . wp_create_nonce ( " delete-comment_ $comment->comment_ID " ) );
$approve_nonce = esc_html ( '_wpnonce=' . wp_create_nonce ( " approve-comment_ $comment->comment_ID " ) );
$approve_url = esc_url ( " comment.php?action=approvecomment&p= $post->ID &c= $comment->comment_ID & $approve_nonce " );
$unapprove_url = esc_url ( " comment.php?action=unapprovecomment&p= $post->ID &c= $comment->comment_ID & $approve_nonce " );
2009-11-27 11:34:09 +01:00
$spam_url = esc_url ( " comment.php?action=spamcomment&p= $post->ID &c= $comment->comment_ID & $del_nonce " );
$unspam_url = esc_url ( " comment.php?action=unspamcomment&p= $post->ID &c= $comment->comment_ID & $del_nonce " );
2009-10-08 10:24:59 +02:00
$trash_url = esc_url ( " comment.php?action=trashcomment&p= $post->ID &c= $comment->comment_ID & $del_nonce " );
$untrash_url = esc_url ( " comment.php?action=untrashcomment&p= $post->ID &c= $comment->comment_ID & $del_nonce " );
2009-11-27 11:34:09 +01:00
$delete_url = esc_url ( " comment.php?action=deletecomment&p= $post->ID &c= $comment->comment_ID & $del_nonce " );
2009-10-08 10:24:59 +02:00
}
2008-03-02 21:17:30 +01:00
2008-10-30 16:50:21 +01:00
echo " <tr id='comment- $comment->comment_ID ' class=' $the_comment_status '> " ;
2008-11-17 20:16:26 +01:00
$columns = get_column_headers ( 'edit-comments' );
$hidden = get_hidden_columns ( 'edit-comments' );
2008-10-30 16:50:21 +01:00
foreach ( $columns as $column_name => $column_display_name ) {
$class = " class= \" $column_name column- $column_name\ " " ;
2008-08-20 06:06:36 +02:00
2008-10-30 16:50:21 +01:00
$style = '' ;
if ( in_array ( $column_name , $hidden ) )
$style = ' style="display:none;"' ;
2008-09-26 03:05:52 +02:00
2008-10-30 16:50:21 +01:00
$attributes = " $class $style " ;
2008-09-26 03:05:52 +02:00
2008-10-30 16:50:21 +01:00
switch ( $column_name ) {
case 'cb' :
if ( ! $checkbox ) break ;
echo '<th scope="row" class="check-column">' ;
2009-04-17 02:48:41 +02:00
if ( $user_can ) echo " <input type='checkbox' name='delete_comments[]' value=' $comment->comment_ID ' /> " ;
2008-10-30 16:50:21 +01:00
echo '</th>' ;
break ;
case 'comment' :
echo " <td $attributes > " ;
2008-11-25 22:11:05 +01:00
echo '<div id="submitted-on">' ;
2010-01-21 22:37:43 +01:00
/* translators: 2: comment date, 3: comment time */
printf ( __ ( '<a href="%1$s">%2$s at %3$s</a>' ), $comment_url ,
/* translators: comment date format. See http://php.net/date */ get_comment_date ( __ ( 'Y/m/d' ) ),
/* translators: comment time format. See http://php.net/date */ get_comment_date ( get_option ( 'time_format' ) ) );
2009-12-25 03:46:40 +01:00
if ( $comment -> comment_parent ) {
$parent = get_comment ( $comment -> comment_parent );
2010-05-03 20:16:22 +02:00
$parent_link = esc_url ( get_comment_link ( $comment -> comment_parent ) );
2009-12-25 03:46:40 +01:00
$name = apply_filters ( 'get_comment_author' , $parent -> comment_author ); // there's no API function for this
2010-01-21 22:37:43 +01:00
printf ( ' | ' . __ ( 'In reply to <a href="%1$s">%2$s</a>.' ), $parent_link , $name );
2009-12-25 03:46:40 +01:00
}
2008-11-25 22:11:05 +01:00
echo '</div>' ;
2009-07-28 01:28:13 +02:00
comment_text ();
2009-07-14 09:59:52 +02:00
if ( $user_can ) { ?>
2008-10-30 16:50:21 +01:00
< div id = " inline-<?php echo $comment->comment_ID ; ?> " class = " hidden " >
2009-09-29 12:28:08 +02:00
< textarea class = " comment " rows = " 1 " cols = " 1 " >< ? php echo htmlspecialchars ( apply_filters ( 'comment_edit_pre' , $comment -> comment_content ), ENT_QUOTES ); ?> </textarea>
2009-07-14 09:59:52 +02:00
< div class = " author-email " >< ? php echo esc_attr ( $comment -> comment_author_email ); ?> </div>
< div class = " author " >< ? php echo esc_attr ( $comment -> comment_author ); ?> </div>
2009-05-05 21:43:53 +02:00
< div class = " author-url " >< ? php echo esc_attr ( $comment -> comment_author_url ); ?> </div>
2008-10-30 16:50:21 +01:00
< div class = " comment_status " >< ? php echo $comment -> comment_approved ; ?> </div>
</ div >
< ? php
2009-07-14 09:59:52 +02:00
}
2008-10-30 16:50:21 +01:00
2009-04-17 02:48:41 +02:00
if ( $user_can ) {
2009-12-01 23:05:03 +01:00
// preorder it: Approve | Reply | Quick Edit | Edit | Spam | Trash
2009-11-27 13:57:35 +01:00
$actions = array (
'approve' => '' , 'unapprove' => '' ,
'reply' => '' ,
'quickedit' => '' ,
'edit' => '' ,
2009-12-01 23:05:03 +01:00
'spam' => '' , 'unspam' => '' ,
'trash' => '' , 'untrash' => '' , 'delete' => ''
2009-11-27 13:57:35 +01:00
);
2009-11-27 11:34:09 +01:00
if ( $comment_status && 'all' != $comment_status ) { // not looking at all comments
if ( 'approved' == $the_comment_status )
2009-12-22 18:00:54 +01:00
$actions [ 'unapprove' ] = " <a href=' $unapprove_url ' class='delete:the-comment-list:comment- $comment->comment_ID :e7e7d3:action=dim-comment&new=unapproved vim-u vim-destructive' title=' " . esc_attr__ ( 'Unapprove this comment' ) . " '> " . __ ( 'Unapprove' ) . '</a>' ;
2009-11-27 11:34:09 +01:00
else if ( 'unapproved' == $the_comment_status )
2009-12-22 18:00:54 +01:00
$actions [ 'approve' ] = " <a href=' $approve_url ' class='delete:the-comment-list:comment- $comment->comment_ID :e7e7d3:action=dim-comment&new=approved vim-a vim-destructive' title=' " . esc_attr__ ( 'Approve this comment' ) . " '> " . __ ( 'Approve' ) . '</a>' ;
2009-07-21 05:11:12 +02:00
} else {
2009-12-22 18:00:54 +01:00
$actions [ 'approve' ] = " <a href=' $approve_url ' class='dim:the-comment-list:comment- $comment->comment_ID :unapproved:e7e7d3:e7e7d3:new=approved vim-a' title=' " . esc_attr__ ( 'Approve this comment' ) . " '> " . __ ( 'Approve' ) . '</a>' ;
$actions [ 'unapprove' ] = " <a href=' $unapprove_url ' class='dim:the-comment-list:comment- $comment->comment_ID :unapproved:e7e7d3:e7e7d3:new=unapproved vim-u' title=' " . esc_attr__ ( 'Unapprove this comment' ) . " '> " . __ ( 'Unapprove' ) . '</a>' ;
2009-11-27 11:34:09 +01:00
}
2009-07-21 05:11:12 +02:00
2009-11-27 11:34:09 +01:00
if ( 'spam' != $the_comment_status && 'trash' != $the_comment_status ) {
2009-12-22 18:00:54 +01:00
$actions [ 'spam' ] = " <a href=' $spam_url ' class='delete:the-comment-list:comment- $comment->comment_ID ::spam=1 vim-s vim-destructive' title=' " . esc_attr__ ( 'Mark this comment as spam' ) . " '> " . /* translators: mark as spam link */ _x ( 'Spam' , 'verb' ) . '</a>' ;
2009-11-27 11:34:09 +01:00
} elseif ( 'spam' == $the_comment_status ) {
2010-05-03 22:37:07 +02:00
$actions [ 'unspam' ] = " <a href=' $unspam_url ' class='delete:the-comment-list:comment- $comment->comment_ID :66cc66:unspam=1 vim-z vim-destructive'> " . _x ( 'Not Spam' , 'comment' ) . '</a>' ;
2009-11-27 11:34:09 +01:00
} elseif ( 'trash' == $the_comment_status ) {
2009-11-28 03:56:15 +01:00
$actions [ 'untrash' ] = " <a href=' $untrash_url ' class='delete:the-comment-list:comment- $comment->comment_ID :66cc66:untrash=1 vim-z vim-destructive'> " . __ ( 'Restore' ) . '</a>' ;
2009-11-27 11:34:09 +01:00
}
2009-07-21 05:11:12 +02:00
2009-11-27 11:34:09 +01:00
if ( 'spam' == $the_comment_status || 'trash' == $the_comment_status || ! EMPTY_TRASH_DAYS ) {
$actions [ 'delete' ] = " <a href=' $delete_url ' class='delete:the-comment-list:comment- $comment->comment_ID ::delete=1 delete vim-d vim-destructive'> " . __ ( 'Delete Permanently' ) . '</a>' ;
} else {
2009-12-22 18:00:54 +01:00
$actions [ 'trash' ] = " <a href=' $trash_url ' class='delete:the-comment-list:comment- $comment->comment_ID ::trash=1 delete vim-d vim-destructive' title=' " . esc_attr__ ( 'Move this comment to the trash' ) . " '> " . _x ( 'Trash' , 'verb' ) . '</a>' ;
2009-11-27 11:34:09 +01:00
}
2009-07-21 05:11:12 +02:00
2009-11-27 11:34:09 +01:00
if ( 'trash' != $the_comment_status ) {
2009-12-22 18:00:54 +01:00
$actions [ 'edit' ] = " <a href='comment.php?action=editcomment&c= { $comment -> comment_ID } ' title=' " . esc_attr__ ( 'Edit comment' ) . " '> " . __ ( 'Edit' ) . '</a>' ;
$actions [ 'quickedit' ] = '<a onclick="commentReply.open(\'' . $comment -> comment_ID . '\',\'' . $post -> ID . '\',\'edit\');return false;" class="vim-q" title="' . esc_attr__ ( 'Quick Edit' ) . '" href="#">' . __ ( 'Quick Edit' ) . '</a>' ;
2009-07-21 05:11:12 +02:00
if ( 'spam' != $the_comment_status )
2009-12-22 18:00:54 +01:00
$actions [ 'reply' ] = '<a onclick="commentReply.open(\'' . $comment -> comment_ID . '\',\'' . $post -> ID . '\');return false;" class="vim-r" title="' . esc_attr__ ( 'Reply to this comment' ) . '" href="#">' . __ ( 'Reply' ) . '</a>' ;
2008-10-30 16:50:21 +01:00
}
2008-10-08 03:18:16 +02:00
2009-11-27 13:57:35 +01:00
$actions = apply_filters ( 'comment_row_actions' , array_filter ( $actions ), $comment );
2008-10-30 16:50:21 +01:00
$i = 0 ;
2008-11-28 05:33:35 +01:00
echo '<div class="row-actions">' ;
2008-10-30 16:50:21 +01:00
foreach ( $actions as $action => $link ) {
++ $i ;
( ( ( 'approve' == $action || 'unapprove' == $action ) && 2 === $i ) || 1 === $i ) ? $sep = '' : $sep = ' | ' ;
2008-10-08 03:18:16 +02:00
2008-11-25 03:41:54 +01:00
// Reply and quickedit need a hide-if-no-js span when not added with ajax
if ( ( 'reply' == $action || 'quickedit' == $action ) && ! $from_ajax )
2008-10-30 16:50:21 +01:00
$action .= ' hide-if-no-js' ;
2009-11-27 11:34:09 +01:00
elseif ( ( $action == 'untrash' && $the_comment_status == 'trash' ) || ( $action == 'unspam' && $the_comment_status == 'spam' ) ) {
2009-09-17 22:51:12 +02:00
if ( '1' == get_comment_meta ( $comment_id , '_wp_trash_meta_status' , true ))
$action .= ' approve' ;
else
$action .= ' unapprove' ;
2009-07-30 15:39:34 +02:00
}
2008-09-26 03:05:52 +02:00
2008-10-30 16:50:21 +01:00
echo " <span class=' $action '> $sep $link </span> " ;
}
2008-11-28 05:33:35 +01:00
echo '</div>' ;
2008-10-30 16:50:21 +01:00
}
echo '</td>' ;
break ;
case 'author' :
echo " <td $attributes ><strong> " ; comment_author (); echo '</strong><br />' ;
if ( ! empty ( $author_url ) )
2008-11-17 19:01:00 +01:00
echo " <a title=' $author_url ' href=' $author_url '> $author_url_display </a><br /> " ;
2009-04-17 02:48:41 +02:00
if ( $user_can ) {
2008-10-30 16:50:21 +01:00
if ( ! empty ( $comment -> comment_author_email ) ) {
comment_author_email_link ();
echo '<br />' ;
}
echo '<a href="edit-comments.php?s=' ;
comment_author_IP ();
2008-12-09 13:31:41 +01:00
echo '&mode=detail' ;
if ( 'spam' == $comment_status )
echo '&comment_status=spam' ;
echo '">' ;
2008-10-30 16:50:21 +01:00
comment_author_IP ();
echo '</a>' ;
} //current_user_can
echo '</td>' ;
break ;
case 'date' :
echo " <td $attributes > " . get_comment_date ( __ ( 'Y/m/d \a\t g:ia' )) . '</td>' ;
break ;
case 'response' :
if ( 'single' !== $mode ) {
2008-12-07 08:10:47 +01:00
if ( isset ( $_comment_pending_count [ $post -> ID ] ) ) {
2010-01-12 23:38:26 +01:00
$pending_comments = $_comment_pending_count [ $post -> ID ];
2008-12-07 08:10:47 +01:00
} else {
2010-01-02 18:16:26 +01:00
$_comment_pending_count_temp = get_pending_comments_num ( array ( $post -> ID ) );
2010-01-12 23:38:26 +01:00
$pending_comments = $_comment_pending_count [ $post -> ID ] = $_comment_pending_count_temp [ $post -> ID ];
2008-12-07 08:10:47 +01:00
}
2009-04-17 02:48:41 +02:00
if ( $user_can ) {
2008-12-07 08:10:47 +01:00
$post_link = " <a href=' " . get_edit_post_link ( $post -> ID ) . " '> " ;
$post_link .= get_the_title ( $post -> ID ) . '</a>' ;
} else {
$post_link = get_the_title ( $post -> ID );
}
2008-10-30 16:50:21 +01:00
echo " <td $attributes > \n " ;
2008-12-08 02:39:23 +01:00
echo '<div class="response-links"><span class="post-com-count-wrapper">' ;
2009-04-21 07:01:04 +02:00
echo $post_link . '<br />' ;
2009-12-22 18:00:54 +01:00
$pending_phrase = esc_attr ( sprintf ( __ ( '%s pending' ), number_format ( $pending_comments ) ));
2008-12-07 08:10:47 +01:00
if ( $pending_comments )
echo '<strong>' ;
2009-03-13 04:53:39 +01:00
comments_number ( " <a href='edit-comments.php?p= $post->ID ' title=' $pending_phrase ' class='post-com-count'><span class='comment-count'> " . /* translators: comment count link */ _x ( '0' , 'comment count' ) . '</span></a>' , " <a href='edit-comments.php?p= $post->ID ' title=' $pending_phrase ' class='post-com-count'><span class='comment-count'> " . /* translators: comment count link */ _x ( '1' , 'comment count' ) . '</span></a>' , " <a href='edit-comments.php?p= $post->ID ' title=' $pending_phrase ' class='post-com-count'><span class='comment-count'> " . /* translators: comment count link: % will be substituted by comment count */ _x ( '%' , 'comment count' ) . '</span></a>' );
2008-12-07 08:10:47 +01:00
if ( $pending_comments )
echo '</strong>' ;
echo '</span> ' ;
echo " <a href=' " . get_permalink ( $post -> ID ) . " '>#</a> " ;
2009-04-21 07:01:04 +02:00
echo '</div>' ;
if ( 'attachment' == $post -> post_type && ( $thumb = wp_get_attachment_image ( $post -> ID , array ( 80 , 60 ), true ) ) )
echo $thumb ;
echo '</td>' ;
2008-10-30 16:50:21 +01:00
}
2009-04-19 22:18:27 +02:00
break ;
default :
echo " <td $attributes > \n " ;
do_action ( 'manage_comments_custom_column' , $column_name , $comment -> comment_ID );
echo " </td> \n " ;
break ;
2008-10-30 16:50:21 +01:00
}
2008-02-28 07:50:25 +01:00
}
2008-10-30 16:50:21 +01:00
echo " </tr> \n " ;
2007-05-25 09:16:21 +02:00
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ 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
global $current_user ;
// 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
$columns = get_column_headers ( 'edit-comments' );
$hidden = array_intersect ( array_keys ( $columns ), array_filter ( get_hidden_columns ( 'edit-comments' ) ) );
$col_count = count ( $columns ) - count ( $hidden );
2008-08-24 08:56:22 +02:00
?>
2008-10-09 01:32:34 +02:00
< form method = " get " action = " " >
< ? php if ( $table_row ) : ?>
2009-11-03 09:28:59 +01:00
< table style = " display:none; " >< tbody id = " com-reply " >< tr id = " replyrow " style = " display:none; " >< td colspan = " <?php echo $col_count ; ?> " >
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 " >
< label for = " author " >< ? php _e ( 'Name' ) ?> </label>
< input type = " text " name = " newcomment_author " size = " 50 " value = " " tabindex = " 101 " id = " author " />
</ div >
< div class = " inside " >
< label for = " author-email " >< ? php _e ( 'E-mail' ) ?> </label>
< input type = " text " name = " newcomment_author_email " size = " 50 " value = " " tabindex = " 102 " id = " author-email " />
</ div >
< div class = " inside " >
< label for = " author-url " >< ? php _e ( 'URL' ) ?> </label>
< 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 >
2008-08-24 08:56:22 +02:00
< input type = " hidden " name = " user_ID " id = " user_ID " value = " <?php echo $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 }}
*
* @ since unknown
*
* @ 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 >
2008-11-08 03:15:53 +01:00
< th class = " left " >< ? php _e ( 'Name' ) ?> </th>
2007-05-25 09:16:21 +02:00
< th >< ? php _e ( 'Value' ) ?> </th>
</ 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 }}
*
* @ since unknown
*
* @ 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' ]);
2008-03-24 23:06:17 +01:00
$entry [ 'meta_value' ] = htmlspecialchars ( $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
$r .= " \n \t \t <div class='submit'><input name='deletemeta[ { $entry [ 'meta_id' ] } ]' type='submit' " ;
2009-05-05 21:43:53 +02:00
$r .= " class='delete:the-list:meta- { $entry [ 'meta_id' ] } ::_ajax_nonce= $delete_nonce deletemeta' tabindex='6' value=' " . esc_attr__ ( 'Delete' ) . " ' /> " ;
2010-05-28 06:09:08 +02:00
$r .= " \n \t \t <input name='updatemeta' type='submit' tabindex='6' value=' " . esc_attr__ ( 'Update' ) . " ' class='add:the-list:meta- { $entry [ 'meta_id' ] } ::_ajax_nonce-add-meta= $update_nonce updatemeta' /></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 }}
*
* @ since unknown
*/
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-01-21 22:37:43 +01:00
< p >< strong >< ? php _e ( 'Add New Custom Field:' ) ?> </strong></p>
2008-11-08 03:15:53 +01:00
< table id = " newmeta " >
< thead >
< tr >
< th class = " left " >< label for = " metakeyselect " >< ? php _e ( 'Name' ) ?> </label></th>
2008-05-04 12:37:06 +02:00
< 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-02-28 08:12:05 +01: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 " >
2009-05-05 21:43:53 +02:00
< input type = " submit " id = " addmetasub " name = " addmeta " class = " add:the-list:newmeta " tabindex = " 9 " value = " <?php esc_attr_e( 'Add Custom Field' ) ?> " />
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 }}
*
* @ since unknown
*
* @ 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 }}
*
* @ since unknown
*
* @ 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 }}
*
* @ since unknown
*
* @ 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 = '' ;
2009-05-18 17:11:07 +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 }}
*
* @ since unknown
*
* @ 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 >
< th scope = " row " >< ? php _e ( 'URL' ) ?> </th>
< td >< textarea rows = " 1 " cols = " 40 " type = " text " class = " attachmentlinks " readonly = " readonly " >< ? php echo wp_get_attachment_url (); ?> </textarea></td>
</ tr >
< ? php if ( $icon ) : ?>
< tr >
< th scope = " row " >< ? php $thumb ? _e ( 'Thumbnail linked to file' ) : _e ( 'Image linked to file' ); ?> </th>
< 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>
</ tr >
< tr >
< th scope = " row " >< ? php $thumb ? _e ( 'Thumbnail linked to page' ) : _e ( 'Image linked 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 echo $icon ?> </a></textarea></td>
</ tr >
< ? php else : ?>
< tr >
< 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 >
< 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>
</ tr >
< ? php endif ; ?>
</ table >
</ form >
< ? php
}
2009-02-01 10:45:24 +01:00
2008-10-02 03:03:26 +02:00
/**
2008-12-31 18:40:05 +01:00
* Print out < option > html elements for role selectors based on $wp_roles
2008-10-02 03:03:26 +02:00
*
2008-12-31 18:40:05 +01:00
* @ package WordPress
* @ subpackage Administration
* @ since 2.1
2008-10-02 03:03:26 +02:00
*
2008-12-31 18:40:05 +01:00
* @ uses $wp_roles
* @ param string $default 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' ] );
2008-12-31 18:40:05 +01:00
if ( $selected == $role ) // Make default first in list
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 }}
*
* @ since unknown
*
* @ 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 }}
*
* @ since unknown
*
* @ 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 }}
*
* @ since unknown
*
* @ 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
*
2009-09-23 08:59:20 +02:00
* @ since 2.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 >
< p class = " submit " >
2009-05-05 21:43:53 +02:00
< input type = " submit " class = " button " value = " <?php esc_attr_e( 'Upload file and import' ); ?> " />
2007-05-25 09:16:21 +02:00
</ p >
</ 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 ) {
2008-05-14 10:22:01 +02:00
foreach ( array ( 'high' , 'core' , 'default' , 'low' ) as $a_priority ) {
2008-08-20 06:06:36 +02:00
if ( ! isset ( $wp_meta_boxes [ $page ][ $a_context ][ $a_priority ][ $id ]) )
2008-05-14 10:22:01 +02:00
continue ;
2008-08-20 06:06:36 +02:00
2008-05-14 10:22:01 +02: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
2008-08-20 06:06:36 +02:00
if ( false === $wp_meta_boxes [ $page ][ $a_context ][ $a_priority ][ $id ] )
2008-05-14 10:22:01 +02:00
return ;
// If box was added with default priority, give it core priority to maintain sort order
if ( 'default' == $a_priority ) {
2008-08-20 06:06:36 +02:00
$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 ;
}
// If no priority given and id already present, use existing priority
2008-08-20 06:06:36 +02:00
if ( empty ( $priority ) ) {
2008-05-14 10:22:01 +02:00
$priority = $a_priority ;
2008-09-21 21:45:45 +02:00
// 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.
2008-08-20 06:06:36 +02:00
} 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' ];
2008-12-18 20:12:26 +01:00
$callback_args = $wp_meta_boxes [ $page ][ $a_context ][ $a_priority ][ $id ][ 'args' ];
2008-08-20 06:06:36 +02:00
}
// 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-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 );
echo " </div> " ;
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 }}
*
* @ since unknown
*
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
*
* @ since 2.7
*
* @ 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-05-19 21:11:33 +02:00
if ( ! is_array ( $hidden ) )
2009-10-13 12:02:42 +02:00
$hidden = array ( 'slugdiv' );
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
* @ 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-02-17 18:50:42 +01:00
* @ param string $callback Function that echo ' s out content for the section heading .
* @ param string $page The slug - name of the settings page on which to show the section ( general , reading , writing , ... ) .
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
2008-10-02 03:03:26 +02:00
* @ since unknown
*
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
*
* @ since unknown
*
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 .
*
* @ 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-03-17 17:27:25 +01:00
* If changes were just submitted ( $_GET [ '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 )
*
* @ 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
*/
function get_settings_errors ( $setting = '' , $sanitize = FALSE ) {
global $wp_settings_errors ;
// If $sanitize is true, manually re-run the sanitizisation for this option
// This allows the $sanitize_callback from register_setting() to run, adding
// any settings errors you want to show by default.
if ( $sanitize )
sanitize_option ( $setting , get_option ( $setting ));
// If settings were passed back from options.php then use them
// Ignore transients if $sanitize is true, we dont' want the old values anyway
if ( isset ( $_GET [ 'updated' ]) && $_GET [ 'updated' ] && get_transient ( 'settings_errors' ) ) {
$settings_errors = get_transient ( 'settings_errors' );
delete_transient ( 'settings_errors' );
// Otherwise check global in case validation has been run on this pageload
} elseif ( count ( $wp_settings_errors ) ) {
$settings_errors = $wp_settings_errors ;
} else {
return ;
}
// 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 .
*
* @ 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 .
* @ return < type >
*/
function settings_errors ( $setting = '' , $sanitize = FALSE , $hide_on_update = FALSE ) {
if ( $hide_on_update AND $_GET [ '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 );
if ( ! is_array ( $settings_errors ) ) return ;
$output = '' ;
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-02-17 18:50:42 +01:00
$output .= " <div id=' $css_id ' class=' $css_class '> \n " ;
$output .= " <p><strong> { $details [ 'message' ] } </strong></p> " ;
$output .= " </div> \n " ;
}
echo $output ;
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $page
*/
2010-05-19 21:11:33 +02:00
function manage_columns_prefs ( $page ) {
$columns = get_column_headers ( $page );
2010-05-26 04:42:15 +02:00
$hidden = get_hidden_columns ( $page );
2010-05-19 21:11:33 +02:00
$special = array ( '_title' , 'cb' , 'comment' , 'media' , 'name' , 'title' , 'username' );
2008-09-11 03:46:30 +02:00
foreach ( $columns as $column => $title ) {
2010-05-15 22:57:17 +02:00
// Can't hide these or they are special
2010-05-19 21:11:33 +02:00
if ( in_array ( $column , $special ) )
2008-09-11 03:46:30 +02:00
continue ;
2010-05-19 21:11:33 +02:00
if ( empty ( $title ) )
2008-09-15 19:53:30 +02:00
continue ;
2008-09-11 03:46:30 +02:00
if ( 'comments' == $column )
2010-05-19 21:11:33 +02:00
$title = __ ( 'Comments' );
2008-09-11 03:46:30 +02:00
$id = " $column -hide " ;
echo '<label for="' . $id . '">' ;
echo '<input class="hide-column-tog" name="' . $id . '" type="checkbox" id="' . $id . '" value="' . $column . '"' . ( ! in_array ( $column , $hidden ) ? ' checked="checked"' : '' ) . ' />' ;
echo " $title </label> \n " ;
}
}
2008-10-02 03:03:26 +02:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ 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-02-28 20:39:06 +01:00
< input type = " button " onclick = " findPosts.send(); " 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 ;
?>
< 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' ); ?> />
< 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-02-28 20:39:06 +01:00
< input type = " button " class = " button alignleft " onclick = " findPosts.close(); " value = " <?php esc_attr_e('Close'); ?> " />
2009-05-05 21:43:53 +02:00
< input id = " find-posts-submit " type = " submit " class = " button-primary alignright " value = " <?php esc_attr_e('Select'); ?> " />
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 ;
2009-05-05 21:43:53 +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 }}
*
* @ since unknown
*/
2009-04-22 03:30:15 +02:00
function favorite_actions ( $screen = null ) {
2010-03-01 17:03:27 +01:00
global $post_type_object ;
2010-03-17 17:27:25 +01:00
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-03-01 17:03:27 +01:00
if ( isset ( $post_type_object ) ) {
switch ( $screen -> id ) {
case $post_type_object -> name :
2010-05-12 22:45:18 +02:00
$default_action = array ( 'edit.php?post_type=' . $post_type_object -> name => array ( $post_type_object -> labels -> edit_item , $post_type_object -> cap -> edit_posts ));
2010-03-01 17:03:27 +01:00
break ;
case " edit- { $post_type_object -> name } " :
2010-05-12 22:45:18 +02:00
$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 ));
2010-03-01 17:03:27 +01:00
break ;
}
}
2010-03-17 17:27:25 +01:00
2010-03-01 17:03:27 +01:00
if ( ! $default_action ) {
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' :
$default_action = array ( 'link-add.php' => array ( __ ( 'New Link' ), 'manage_links' ));
break ;
case 'link-add' :
$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 ;
}
2009-04-22 03:30:15 +02:00
}
2008-09-26 01:49:24 +02:00
$actions = array (
2008-11-25 20:16:22 +01:00
'post-new.php' => array ( __ ( 'New Post' ), 'edit_posts' ),
2008-12-09 19:03:31 +01:00
'edit.php?post_status=draft' => array ( __ ( 'Drafts' ), 'edit_posts' ),
2010-01-23 18:59:06 +01:00
'post-new.php?post_type=page' => array ( __ ( 'New Page' ), 'edit_pages' ),
2008-11-25 20:16:22 +01:00
'media-new.php' => array ( __ ( 'Upload' ), 'upload_files' ),
'edit-comments.php' => array ( __ ( 'Comments' ), 'moderate_comments' )
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 );
2008-09-26 01:49:24 +02:00
$actions = apply_filters ( 'favorite_actions' , $actions );
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 );
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
2008-10-02 03:03:26 +02:00
* @ param int $id The post id . If not supplied the global $post is used .
2008-10-08 03:18:16 +02:00
*
2008-09-30 23:32:13 +02:00
*/
2010-02-13 04:17:57 +01: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 () {
2009-05-05 21:43:53 +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-04-17 14:27:13 +02:00
global $hook_suffix ;
2008-10-14 01:39:56 +02:00
?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
< 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'); ?> " />
< title >< ? php bloginfo ( 'name' ) ?> › <?php echo $title ?> — <?php _e('WordPress'); ?></title>
< ? php
wp_enqueue_style ( 'global' );
if ( ! $limit_styles )
wp_enqueue_style ( 'wp-admin' );
2009-03-20 01:14:57 +01:00
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 ();}
2008-10-14 01:39:56 +02:00
//]]>
</ script >
< ? php
do_action ( 'admin_print_styles' );
do_action ( 'admin_print_scripts' );
do_action ( 'admin_head' );
2010-04-17 14:27:13 +02:00
$admin_body_class = preg_replace ( '/[^a-z0-9_-]+/i' , '-' , $hook_suffix );
2008-10-14 01:39:56 +02:00
?>
</ head >
2010-04-24 04:59:41 +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' );
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-02-20 03:01:46 +01:00
global $wp_meta_boxes , $_wp_contextual_help , $title ;
2010-01-15 17:58:36 +01:00
if ( is_string ( $screen ) )
$screen = convert_to_screen ( $screen );
2008-11-17 20:16:26 +01:00
$column_screens = get_column_headers ( $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-04-18 19:15:58 +02:00
if ( ! empty ( $wp_meta_boxes [ $screen -> id ]) || ! empty ( $column_screens ) )
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-05-19 21:11:33 +02:00
if ( ! empty ( $settings ) )
2010-04-29 05:43:39 +02:00
$show_screen = true ;
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-05-14 23:46:25 +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-05-14 17:49:20 +02:00
if ( ! empty ( $column_screens ) ) : ?>
2010-05-15 22:57:17 +02:00
< h5 >< ? php echo ( isset ( $column_screens [ '_title' ] ) ? $column_screens [ '_title' ] : _x ( 'Show on screen' , 'Columns' ) ) ?> </h5>
2010-04-29 05:43:39 +02:00
< div class = " metabox-prefs " >
< ? php manage_columns_prefs ( $screen ); ?>
< 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-05-20 23:29:45 +02:00
< h5 >< ? php _ex ( 'Show on screen' , 'Screen Options' ) ?> </h5>
< ? 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 " >
< a href = " #contextual-help " id = " contextual-help-link " class = " show-settings " >< ? php _e ( 'Help' ) ?> </a>
</ 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 " >
< a href = " #screen-options " id = " show-settings-link " class = " show-settings " >< ? php _e ( 'Screen Options' ) ?> </a>
</ 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
*
* @ param string $screen The handle for the screen to add help to . This is usually the hook name returned by the add_ * _page () functions .
* @ param 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
}
2008-12-06 21:54:51 +01:00
function drag_drop_help () {
return '
2009-02-27 09:43:48 +01:00
< p > ' . __(' Most of the modules on this screen can be moved . If you hover your mouse over the title bar of a module you & rsquo ; ll notice the 4 arrow cursor appears to let you know it is movable . Click on it , hold down the mouse button and start dragging the module to a new location . As you drag the module , notice the dotted gray box that also moves . This box indicates where the module will be placed when you release the mouse button . ') . ' </ p >
2008-12-06 21:54:51 +01:00
< p > ' . __(' The same modules can be expanded and collapsed by clicking once on their title bar and also completely hidden from the Screen Options tab . ') . ' </ p >
' ;
}
2009-03-25 15:29:22 +01:00
function plugins_search_help () {
return '
< p >< strong > ' . __(' Search help ') . ' </ strong ></ p > ' .
'<p>' . __ ( 'You may search based on 3 criteria:' ) . '<br />' .
__ ( '<strong>Term:</strong> Searches theme names and descriptions for the specified term.' ) . '<br />' .
__ ( '<strong>Tag:</strong> Searches for themes tagged as such.' ) . '<br />' .
__ ( '<strong>Author:</strong> Searches for themes created by the Author, or which the Author contributed to.' ) . ' </ p >
' ;
}
2009-02-24 03:37:22 +01:00
function screen_layout ( $screen ) {
global $screen_layout_columns ;
2010-01-15 17:58:36 +01:00
if ( is_string ( $screen ) )
$screen = convert_to_screen ( $screen );
2010-05-17 18:39:36 +02:00
$columns = array ( 'dashboard' => 4 , 'link' => 2 );
2010-01-04 17:58:43 +01:00
// Add custom post types
2010-02-10 18:41:07 +01:00
foreach ( get_post_types ( array ( 'show_ui' => true ) ) as $post_type )
2010-01-04 17:58:43 +01:00
$columns [ $post_type ] = 2 ;
2010-01-15 17:58:36 +01:00
$columns = apply_filters ( 'screen_layout_columns' , $columns , $screen -> id , $screen );
2009-05-01 00:51:42 +02:00
2010-01-15 17:58:36 +01:00
if ( ! isset ( $columns [ $screen -> id ]) ) {
2009-05-01 00:51:42 +02:00
$screen_layout_columns = 0 ;
return '' ;
}
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 " );
$num = $columns [ $screen -> id ];
2009-03-18 03:43:45 +01:00
2009-02-24 03:37:22 +01:00
if ( ! $screen_layout_columns )
$screen_layout_columns = 2 ;
$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 ;
}
2009-03-27 23:47:47 +01:00
function screen_options ( $screen ) {
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-01-15 17:58:36 +01:00
switch ( $screen -> base ) {
2009-03-27 23:47:47 +01:00
case 'edit' :
case 'edit-pages' :
2010-04-18 19:15:58 +02:00
$post_type = 'post' ;
if ( isset ( $_GET [ 'post_type' ]) && in_array ( $_GET [ 'post_type' ], get_post_types ( array ( 'public' => true ) ) ) )
$post_type = $_GET [ 'post_type' ];
$post_type_object = get_post_type_object ( $post_type );
2010-05-11 21:52:50 +02:00
$per_page_label = $post_type_object -> labels -> name ;
2009-03-27 23:47:47 +01:00
break ;
2010-03-06 19:31:10 +01:00
case 'ms-sites' :
2010-04-18 19:15:58 +02:00
$per_page_label = __ ( 'Sites' );
2010-03-06 19:31:10 +01:00
break ;
case 'ms-users' :
2010-04-18 19:15:58 +02:00
$per_page_label = __ ( 'Users' );
2010-03-06 19:31:10 +01:00
break ;
2009-03-27 23:47:47 +01:00
case 'edit-comments' :
2010-04-18 19:15:58 +02:00
$per_page_label = __ ( 'Comments' );
2009-03-27 23:47:47 +01:00
break ;
case 'upload' :
2010-04-18 19:15:58 +02:00
$per_page_label = __ ( 'Media items' );
2009-03-27 23:47:47 +01:00
break ;
2009-04-10 23:52:57 +02:00
case 'edit-tags' :
2010-04-18 19:15:58 +02:00
global $tax ;
2010-05-14 02:34:04 +02:00
$per_page_label = $tax -> labels -> name ;
2009-04-10 23:52:57 +02:00
break ;
2009-04-21 08:49:53 +02:00
case 'plugins' :
2010-04-18 19:15:58 +02:00
$per_page_label = __ ( 'Plugins' );
2009-04-21 08:49:53 +02:00
break ;
2009-03-27 23:47:47 +01:00
default :
return '' ;
}
2010-01-15 17:58:36 +01:00
$option = str_replace ( '-' , '_' , " { $screen -> id } _per_page " );
2010-02-13 04:52:33 +01:00
if ( 'edit_tags_per_page' == $option ) {
2010-04-20 17:13:27 +02:00
if ( 'category' == $tax -> name )
2010-02-13 04:52:33 +01:00
$option = 'categories_per_page' ;
2010-04-20 17:13:27 +02:00
elseif ( 'post_tag' != $tax -> name )
$option = 'edit_' . $tax -> name . '_per_page' ;
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-01-15 17:58:36 +01:00
if ( 'plugins' == $screen -> id )
2009-05-13 06:26:40 +02:00
$per_page = 999 ;
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 " ;
2009-05-05 21:43:53 +02:00
$return .= " <input type='submit' class='button' value=' " . esc_attr__ ( 'Apply' ) . " ' /> " ;
$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 = '' ) {
global $current_screen ;
if ( empty ( $screen ) )
$screen = $current_screen ;
elseif ( is_string ( $screen ) )
$name = $screen ;
2008-11-26 14:51:25 +01:00
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' ;
2008-11-27 00:35:23 +01:00
}
2010-01-20 23:35:21 +01:00
2008-11-26 14:51:25 +01:00
?>
< div id = " icon-<?php echo $name ; ?> " class = " icon32 " >< br /></ div >
< ? 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 );
}
}
x . open ( 'GET' , 'admin-ajax.php?action=wp-compression-test&test=' + test + '&' + ( new Date ()) . getTime (), true );
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-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 .
*/
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
if ( empty ( $id ) ) {
$current_screen = $hook_suffix ;
$current_screen = str_replace ( '.php' , '' , $current_screen );
$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-09 18:52:25 +02:00
if ( is_taxonomy ( $typenow ) ) {
$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-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-01-22 19:27:54 +01:00
$current_screen = apply_filters ( 'current_screen' , $current_screen );
}
2008-10-08 03:18:16 +02:00
?>