2007-05-25 03:16:21 -04:00
< ? php
2008-10-01 21:03:26 -04:00
/**
* Template WordPress Administration API .
*
* A Big Mess . Also some neat functions that are nicely written .
*
* @ package WordPress
* @ subpackage Administration
*/
2007-05-25 03:16:21 -04:00
2008-06-13 19:22:29 -04:00
// Ugly recursive category stuff.
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $parent
* @ param unknown_type $level
* @ param unknown_type $categories
* @ param unknown_type $page
* @ param unknown_type $per_page
*/
2008-06-13 19:52:07 -04:00
function cat_rows ( $parent = 0 , $level = 0 , $categories = 0 , $page = 1 , $per_page = 20 ) {
2009-05-24 19:47:49 -04:00
2008-06-13 19:52:07 -04:00
$count = 0 ;
2009-05-24 19:47:49 -04:00
2009-04-30 12:29:40 -04:00
if ( empty ( $categories ) ) {
2009-05-24 19:47:49 -04:00
2009-04-30 12:29:40 -04:00
$args = array ( 'hide_empty' => 0 );
if ( ! empty ( $_GET [ 's' ]) )
$args [ 'search' ] = $_GET [ 's' ];
2009-05-24 19:47:49 -04:00
$categories = get_categories ( $args );
2009-04-30 12:29:40 -04:00
if ( empty ( $categories ) )
return false ;
}
2009-05-24 19:47:49 -04:00
$children = _get_term_hierarchy ( 'category' );
_cat_rows ( $parent , $level , $categories , $children , $page , $per_page , $count );
2008-06-13 19:52:07 -04:00
}
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $categories
* @ param unknown_type $count
* @ param unknown_type $parent
* @ param unknown_type $level
* @ param unknown_type $page
* @ param unknown_type $per_page
* @ return unknown
*/
2009-05-24 19:47:49 -04:00
function _cat_rows ( $parent = 0 , $level = 0 , $categories , & $children , $page = 1 , $per_page = 20 , & $count ) {
2008-06-13 19:22:29 -04:00
$start = ( $page - 1 ) * $per_page ;
$end = $start + $per_page ;
ob_start ();
2009-05-24 19:47:49 -04:00
2009-04-30 12:29:40 -04:00
foreach ( $categories as $key => $category ) {
2008-06-13 19:22:29 -04:00
if ( $count >= $end )
break ;
2009-05-24 19:47:49 -04:00
2009-04-29 12:46:45 -04:00
if ( $category -> parent != $parent && empty ( $_GET [ 's' ]) )
2008-06-13 19:22:29 -04:00
continue ;
// If the page starts in a subtree, print the parents.
if ( $count == $start && $category -> parent > 0 ) {
2009-05-24 19:47:49 -04:00
2008-06-13 19:22:29 -04:00
$my_parents = array ();
2009-04-30 12:29:40 -04:00
$p = $category -> parent ;
while ( $p ) {
$my_parent = get_category ( $p );
2008-06-13 19:22:29 -04:00
$my_parents [] = $my_parent ;
2009-04-30 12:29:40 -04:00
if ( $my_parent -> parent == 0 )
2008-06-13 19:22:29 -04:00
break ;
2009-04-30 12:29:40 -04:00
$p = $my_parent -> parent ;
2008-06-13 19:22:29 -04:00
}
2009-05-24 19:47:49 -04:00
2008-06-13 19:22:29 -04:00
$num_parents = count ( $my_parents );
while ( $my_parent = array_pop ( $my_parents ) ) {
echo " \t " . _cat_row ( $my_parent , $level - $num_parents );
$num_parents -- ;
2007-05-25 03:16:21 -04:00
}
}
2008-06-13 19:22:29 -04:00
if ( $count >= $start )
echo " \t " . _cat_row ( $category , $level );
2009-05-24 19:47:49 -04:00
unset ( $categories [ $key ] );
2008-06-13 19:22:29 -04:00
$count ++ ;
if ( isset ( $children [ $category -> term_id ]) )
2009-05-24 19:47:49 -04:00
_cat_rows ( $category -> term_id , $level + 1 , $categories , $children , $page , $per_page , $count );
2007-05-25 03:16:21 -04:00
}
2008-06-13 19:22:29 -04:00
$output = ob_get_contents ();
ob_end_clean ();
echo $output ;
2007-05-25 03:16:21 -04:00
}
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $category
* @ param unknown_type $level
* @ param unknown_type $name_override
* @ return unknown
*/
2007-05-25 03:16:21 -04:00
function _cat_row ( $category , $level , $name_override = false ) {
2008-11-18 12:41:50 -05:00
static $row_class = '' ;
2007-05-25 03:16:21 -04:00
2008-11-18 12:25:43 -05:00
$category = get_category ( $category , OBJECT , 'display' );
2007-10-30 23:53:32 -04:00
2008-09-16 20:11:17 -04:00
$default_cat_id = ( int ) get_option ( 'default_category' );
2009-05-29 12:36:44 -04:00
$pad = str_repeat ( '— ' , max ( 0 , $level ) );
2008-11-18 12:25:43 -05:00
$name = ( $name_override ? $name_override : $pad . ' ' . $category -> name );
2008-09-16 20:04:02 -04:00
$edit_link = " categories.php?action=edit&cat_ID= $category->term_id " ;
2007-05-25 03:16:21 -04:00
if ( current_user_can ( 'manage_categories' ) ) {
2009-05-05 15:43:53 -04:00
$edit = " <a class='row-title' href=' $edit_link ' title=' " . esc_attr ( sprintf ( __ ( 'Edit “%s”' ), $category -> name )) . " '> " . esc_attr ( $name ) . '</a><br />' ;
2008-09-16 20:04:02 -04:00
$actions = array ();
$actions [ 'edit' ] = '<a href="' . $edit_link . '">' . __ ( 'Edit' ) . '</a>' ;
2008-10-29 04:23:48 -04:00
$actions [ 'inline hide-if-no-js' ] = '<a href="#" class="editinline">' . __ ( 'Quick Edit' ) . '</a>' ;
2008-09-16 20:11:17 -04:00
if ( $default_cat_id != $category -> term_id )
2009-02-07 10:26:01 -05:00
$actions [ 'delete' ] = " <a class='delete:the-list:cat- $category->term_id submitdelete' href=' " . wp_nonce_url ( " categories.php?action=delete&cat_ID= $category->term_id " , 'delete-category_' . $category -> term_id ) . " '> " . __ ( 'Delete' ) . " </a> " ;
2009-02-22 23:28:50 -05:00
$actions = apply_filters ( 'cat_row_actions' , $actions , $category );
2008-09-16 20:04:02 -04:00
$action_count = count ( $actions );
$i = 0 ;
2008-11-27 23:33:35 -05:00
$edit .= '<div class="row-actions">' ;
2008-09-16 20:04:02 -04:00
foreach ( $actions as $action => $link ) {
++ $i ;
( $i == $action_count ) ? $sep = '' : $sep = ' | ' ;
$edit .= " <span class=' $action '> $link $sep </span> " ;
}
2008-11-27 23:33:35 -05:00
$edit .= '</div>' ;
2008-02-12 04:02:02 -05:00
} else {
2008-03-17 19:47:03 -04:00
$edit = $name ;
2008-02-12 04:02:02 -05:00
}
2007-05-25 03:16:21 -04:00
2008-11-14 14:44:01 -05:00
$row_class = 'alternate' == $row_class ? '' : 'alternate' ;
2008-11-18 12:25:43 -05:00
$qe_data = get_category_to_edit ( $category -> term_id );
2007-05-25 03:16:21 -04:00
$category -> count = number_format_i18n ( $category -> count );
$posts_count = ( $category -> count > 0 ) ? " <a href='edit.php?cat= $category->term_id '> $category->count </a> " : $category -> count ;
2008-11-14 14:44:01 -05:00
$output = " <tr id='cat- $category->term_id ' class='iedit $row_class '> " ;
2008-09-18 18:31:25 -04:00
2008-11-17 14:16:26 -05:00
$columns = get_column_headers ( 'categories' );
$hidden = get_hidden_columns ( 'categories' );
2008-09-18 18:31:25 -04: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' :
$output .= " <th scope='row' class='check-column'> " ;
if ( $default_cat_id != $category -> term_id ) {
$output .= " <input type='checkbox' name='delete[]' value=' $category->term_id ' /> " ;
} else {
$output .= " " ;
}
$output .= '</th>' ;
break ;
case 'name' :
2008-10-05 00:43:52 -04:00
$output .= " <td $attributes > $edit " ;
2008-11-18 12:25:43 -05:00
$output .= '<div class="hidden" id="inline_' . $qe_data -> term_id . '">' ;
$output .= '<div class="name">' . $qe_data -> name . '</div>' ;
$output .= '<div class="slug">' . $qe_data -> slug . '</div>' ;
$output .= '<div class="cat_parent">' . $qe_data -> parent . '</div></div></td>' ;
2008-09-18 18:31:25 -04:00
break ;
case 'description' :
2008-11-18 12:25:43 -05:00
$output .= " <td $attributes > $category->description </td> " ;
2008-09-18 18:31:25 -04:00
break ;
2008-09-30 19:40:44 -04:00
case 'slug' :
$output .= " <td $attributes > $category->slug </td> " ;
break ;
2008-09-18 18:31:25 -04:00
case 'posts' :
$attributes = 'class="posts column-posts num"' . $style ;
$output .= " <td $attributes > $posts_count </td> \n " ;
2009-01-03 23:21:35 -05:00
break ;
default :
$output .= " <td $attributes > " ;
2009-02-04 07:31:47 -05:00
$output .= apply_filters ( 'manage_categories_custom_column' , '' , $column_name , $category -> term_id );
2009-01-03 23:21:35 -05:00
$output .= " </td> " ;
2008-09-18 18:31:25 -04:00
}
2008-03-16 06:00:11 -04:00
}
2008-09-18 18:31:25 -04:00
$output .= '</tr>' ;
2007-09-11 21:08:19 -04:00
2008-11-18 12:25:43 -05:00
return $output ;
2007-05-25 03:16:21 -04:00
}
2008-10-05 00:43:52 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since 2.7
2008-10-07 21:18:16 -04:00
*
2008-10-05 00:43:52 -04:00
* Outputs the HTML for the hidden table rows used in Categories , Link Caregories and Tags quick edit .
*
* @ param string $type " tag " , " category " or " link-category "
2008-10-07 21:18:16 -04:00
* @ return
2008-10-05 00:43:52 -04:00
*/
function inline_edit_term_row ( $type ) {
if ( ! current_user_can ( 'manage_categories' ) )
return ;
2008-11-29 18:09:04 -05:00
$is_tag = $type == 'edit-tags' ;
$columns = get_column_headers ( $type );
2008-11-25 13:33:04 -05:00
$hidden = array_intersect ( array_keys ( $columns ), array_filter ( get_hidden_columns ( $type ) ) );
2008-11-10 21:58:24 -05:00
$col_count = count ( $columns ) - count ( $hidden );
2008-11-15 13:10:35 -05:00
?>
2008-10-05 00:43:52 -04:00
< form method = " get " action = " " >< table style = " display: none " >< tbody id = " inlineedit " >
2008-11-10 21:58:24 -05:00
< tr id = " inline-edit " class = " inline-edit-row " style = " display: none " >< td colspan = " <?php echo $col_count ; ?> " >
2008-10-05 00:43:52 -04:00
2008-11-10 21:58:24 -05:00
< fieldset >< div class = " inline-edit-col " >
< h4 >< ? php _e ( 'Quick Edit' ); ?> </h4>
2008-10-05 00:43:52 -04:00
2008-11-10 21:58:24 -05:00
< label >
< span class = " title " >< ? php _e ( 'Name' ); ?> </span>
< span class = " input-text-wrap " >< input type = " text " name = " name " class = " ptitle " value = " " /></ span >
</ label >
2008-10-05 00:43:52 -04:00
2008-11-10 21:58:24 -05:00
< label >
< span class = " title " >< ? php _e ( 'Slug' ); ?> </span>
< span class = " input-text-wrap " >< input type = " text " name = " slug " class = " ptitle " value = " " /></ span >
</ label >
2008-10-05 00:43:52 -04:00
2008-11-10 21:58:24 -05:00
< ? php if ( 'category' == $type ) : ?>
< label >
< span class = " title " >< ? php _e ( 'Parent' ); ?> </span>
< ? php wp_dropdown_categories ( array ( 'hide_empty' => 0 , 'name' => 'parent' , 'orderby' => 'name' , 'hierarchical' => 1 , 'show_option_none' => __ ( 'None' ))); ?>
</ label >
< ? php endif ; // $type ?>
</ 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 ;
do_action ( 'quick_edit_custom_box' , $column_name , $type );
2008-10-05 00:43:52 -04:00
}
2008-11-10 21:58:24 -05: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>
2008-12-09 04:07:36 -05:00
< ? php $update_text = ( $is_tag ) ? __ ( 'Update Tag' ) : __ ( 'Update Category' ); ?>
2009-05-05 15:43:53 -04:00
< a accesskey = " s " href = " #inline-edit " title = " <?php echo esc_attr( $update_text ); ?> " class = " save button-primary alignright " >< ? php echo $update_text ; ?> </a>
2009-05-05 14:57:43 -04:00
< img class = " waiting " style = " display:none; " src = " images/wpspin_light.gif " alt = " " />
2008-10-07 21:18:16 -04:00
< span class = " error " style = " display:none; " ></ span >
2008-10-05 00:43:52 -04:00
< ? php wp_nonce_field ( 'taxinlineeditnonce' , '_inline_edit' , false ); ?>
2008-11-10 21:58:24 -05:00
< br class = " clear " />
</ p >
2008-10-05 00:43:52 -04:00
</ td ></ tr >
</ tbody ></ table ></ form >
< ? php
}
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $category
* @ param unknown_type $name_override
* @ return unknown
*/
2008-09-27 18:00:52 -04:00
function link_cat_row ( $category , $name_override = false ) {
2008-11-18 12:41:50 -05:00
static $row_class = '' ;
2007-10-30 23:53:32 -04:00
2008-11-18 12:25:43 -05:00
if ( ! $category = get_term ( $category , 'link_category' , OBJECT , 'display' ) )
2007-10-30 23:53:32 -04:00
return false ;
if ( is_wp_error ( $category ) )
return $category ;
2008-09-16 20:11:17 -04:00
$default_cat_id = ( int ) get_option ( 'default_link_category' );
2008-11-18 12:25:43 -05:00
$name = ( $name_override ? $name_override : $category -> name );
2008-09-16 20:11:17 -04:00
$edit_link = " link-category.php?action=edit&cat_ID= $category->term_id " ;
2007-10-30 23:53:32 -04:00
if ( current_user_can ( 'manage_categories' ) ) {
2009-05-05 15:43:53 -04:00
$edit = " <a class='row-title' href=' $edit_link ' title=' " . esc_attr ( sprintf ( __ ( 'Edit “%s”' ), $category -> name )) . " '> $name </a><br /> " ;
2008-09-16 20:11:17 -04:00
$actions = array ();
$actions [ 'edit' ] = '<a href="' . $edit_link . '">' . __ ( 'Edit' ) . '</a>' ;
2008-10-29 04:23:48 -04:00
$actions [ 'inline hide-if-no-js' ] = '<a href="#" class="editinline">' . __ ( 'Quick Edit' ) . '</a>' ;
2008-09-16 20:11:17 -04:00
if ( $default_cat_id != $category -> term_id )
2009-02-07 10:26:01 -05: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-22 23:28:50 -05:00
$actions = apply_filters ( 'link_cat_row_actions' , $actions , $category );
2008-09-16 20:11:17 -04:00
$action_count = count ( $actions );
$i = 0 ;
2008-11-27 23:33:35 -05:00
$edit .= '<div class="row-actions">' ;
2008-09-16 20:11:17 -04:00
foreach ( $actions as $action => $link ) {
++ $i ;
( $i == $action_count ) ? $sep = '' : $sep = ' | ' ;
$edit .= " <span class=' $action '> $link $sep </span> " ;
}
2008-11-27 23:33:35 -05:00
$edit .= '</div>' ;
2007-10-30 23:53:32 -04:00
} else {
2008-03-17 19:51:34 -04:00
$edit = $name ;
2007-10-30 23:53:32 -04:00
}
2008-11-18 12:41:50 -05:00
$row_class = 'alternate' == $row_class ? '' : 'alternate' ;
2008-11-18 12:25:43 -05:00
$qe_data = get_term_to_edit ( $category -> term_id , 'link_category' );
2007-10-30 23:53:32 -04: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 12:41:50 -05:00
$output = " <tr id='link-cat- $category->term_id ' class='iedit $row_class '> " ;
2008-11-17 14:16:26 -05:00
$columns = get_column_headers ( 'edit-link-categories' );
$hidden = get_hidden_columns ( 'edit-link-categories' );
2008-09-18 18:52:07 -04: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 15:45:45 -04: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-18 18:52:07 -04:00
case 'name' :
2008-10-05 00:43:52 -04:00
$output .= " <td $attributes > $edit " ;
2008-11-18 12:25:43 -05:00
$output .= '<div class="hidden" id="inline_' . $qe_data -> term_id . '">' ;
$output .= '<div class="name">' . $qe_data -> name . '</div>' ;
$output .= '<div class="slug">' . $qe_data -> slug . '</div>' ;
$output .= '<div class="cat_parent">' . $qe_data -> parent . '</div></div></td>' ;
2008-09-18 18:52:07 -04:00
break ;
case 'description' :
2008-11-18 12:25:43 -05:00
$output .= " <td $attributes > $category->description </td> " ;
2008-09-18 18:52:07 -04:00
break ;
2008-12-03 14:18:41 -05:00
case 'slug' :
$output .= " <td $attributes > $category->slug </td> " ;
break ;
2008-09-18 18:52:07 -04:00
case 'links' :
$attributes = 'class="links column-links num"' . $style ;
$output .= " <td $attributes > $count </td> " ;
2009-01-03 23:21:35 -05:00
break ;
default :
$output .= " <td $attributes > " ;
2009-02-04 07:31:47 -05:00
$output .= apply_filters ( 'manage_link_categories_custom_column' , '' , $column_name , $category -> term_id );
2009-01-03 23:21:35 -05:00
$output .= " </td> " ;
2008-09-18 18:52:07 -04:00
}
2008-04-03 01:02:19 -04:00
}
2008-09-18 18:52:07 -04:00
$output .= '</tr>' ;
2007-10-30 23:53:32 -04:00
2008-11-18 12:25:43 -05:00
return $output ;
2007-10-30 23:53:32 -04:00
}
2008-10-01 21:03:26 -04:00
/**
2009-02-27 13:28:09 -05:00
* Outputs the html checked attribute .
2008-10-01 21:03:26 -04:00
*
2009-02-27 13:28:09 -05:00
* Compares the first two arguments and if identical marks as checked
2009-03-17 22:43:45 -04:00
*
2009-04-08 14:40:36 -04:00
* @ since 2.8
2008-10-01 21:03:26 -04:00
*
2009-02-27 13:28:09 -05:00
* @ param any $checked One of the values to compare
* @ param any $current ( true ) The other value to compare if not just true
* @ param bool $echo Whether or not to echo or just return the string
2008-10-01 21:03:26 -04:00
*/
2009-02-27 13:28:09 -05:00
function checked ( $checked , $current = true , $echo = true ) {
return __checked_selected_helper ( $checked , $current , $echo , 'checked' );
2007-05-25 03:16:21 -04:00
}
2008-10-01 21:03:26 -04:00
/**
2009-02-27 13:28:09 -05:00
* Outputs the html selected attribute .
2009-03-17 22:43:45 -04:00
*
2009-02-27 13:28:09 -05:00
* Compares the first two arguments and if identical marks as selected
*
2009-04-08 14:40:36 -04:00
* @ since 2.8
2009-02-27 13:28:09 -05:00
*
2009-04-08 14:40:36 -04:00
* @ param any selected One of the values to compare
2009-02-27 13:28:09 -05:00
* @ param any $current ( true ) The other value to compare if not just true
* @ param bool $echo Whether or not to echo or just return the string
*/
function selected ( $selected , $current = true , $echo = true ) {
return __checked_selected_helper ( $selected , $current , $echo , 'selected' );
}
/**
* Private helper function for checked and selected .
2009-03-17 22:43:45 -04:00
*
2009-02-27 13:28:09 -05:00
* Compares the first two arguments and if identical marks as $type
2008-10-01 21:03:26 -04:00
*
2009-04-08 14:40:36 -04:00
* @ since 2.8
2009-02-27 13:28:09 -05:00
* @ access private
2008-10-01 21:03:26 -04:00
*
2009-04-08 14:40:36 -04:00
* @ param any $helper One of the values to compare
2009-02-27 13:28:09 -05:00
* @ param any $current ( true ) The other value to compare if not just true
* @ param bool $echo Whether or not to echo or just return the string
* @ param string $type The type of checked | selected we are doing .
2008-10-01 21:03:26 -04:00
*/
2009-02-27 13:28:09 -05:00
function __checked_selected_helper ( $helper , $current , $echo , $type ) {
if ( $helper == $current )
$result = " $type =' $type ' " ;
else
$result = '' ;
2009-03-17 22:43:45 -04:00
2009-02-27 13:28:09 -05:00
if ( $echo )
echo $result ;
2009-03-17 22:43:45 -04:00
2009-02-27 13:28:09 -05:00
return $result ;
2007-05-25 03:16:21 -04:00
}
//
2008-04-18 13:41:10 -04:00
// Category Checklists
2007-05-25 03:16:21 -04:00
//
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
* @ deprecated Use { @ link wp_link_category_checklist ()}
* @ see wp_link_category_checklist ()
*
* @ param unknown_type $default
* @ param unknown_type $parent
* @ param unknown_type $popular_ids
*/
2008-04-18 13:41:10 -04:00
function dropdown_categories ( $default = 0 , $parent = 0 , $popular_ids = array () ) {
global $post_ID ;
wp_category_checklist ( $post_ID );
2007-05-25 03:16:21 -04:00
}
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*/
2008-04-18 13:41:10 -04: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 03:16:21 -04:00
2008-04-21 15:30:54 -04:00
function start_lvl ( & $output , $depth , $args ) {
2008-04-18 13:41:10 -04:00
$indent = str_repeat ( " \t " , $depth );
$output .= " $indent <ul class='children'> \n " ;
}
2007-05-25 03:16:21 -04:00
2008-04-21 15:30:54 -04:00
function end_lvl ( & $output , $depth , $args ) {
2008-04-18 13:41:10 -04:00
$indent = str_repeat ( " \t " , $depth );
$output .= " $indent </ul> \n " ;
2007-05-25 03:16:21 -04:00
}
2008-04-21 15:30:54 -04:00
function start_el ( & $output , $category , $depth , $args ) {
2008-04-18 13:41:10 -04:00
extract ( $args );
2007-05-25 03:16:21 -04:00
2008-04-18 13:41:10 -04:00
$class = in_array ( $category -> term_id , $popular_cats ) ? ' class="popular-category"' : '' ;
2009-05-18 11:11:07 -04:00
$output .= " \n <li id='category- $category->term_id ' $class > " . '<label class="selectit"><input value="' . $category -> term_id . '" type="checkbox" name="post_category[]" id="in-category-' . $category -> term_id . '"' . ( in_array ( $category -> term_id , $selected_cats ) ? ' checked="checked"' : " " ) . '/> ' . esc_html ( apply_filters ( 'the_category' , $category -> name )) . '</label>' ;
2007-05-25 03:16:21 -04:00
}
2008-04-21 15:30:54 -04:00
function end_el ( & $output , $category , $depth , $args ) {
2008-04-18 13:41:10 -04:00
$output .= " </li> \n " ;
}
2007-05-25 03:16:21 -04:00
}
2008-10-01 21:03:26 -04: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
*/
2008-12-23 07:52:37 -05:00
function wp_category_checklist ( $post_id = 0 , $descendants_and_self = 0 , $selected_cats = false , $popular_cats = false , $walker = null ) {
if ( empty ( $walker ) || ! is_a ( $walker , 'Walker' ) )
$walker = new Walker_Category_Checklist ;
2008-04-22 18:45:53 -04:00
$descendants_and_self = ( int ) $descendants_and_self ;
2007-05-25 03:16:21 -04:00
2008-04-18 13:41:10 -04:00
$args = array ();
2008-08-09 01:36:14 -04:00
2008-05-19 17:35:18 -04:00
if ( is_array ( $selected_cats ) )
$args [ 'selected_cats' ] = $selected_cats ;
elseif ( $post_id )
2008-04-18 14:12:04 -04:00
$args [ 'selected_cats' ] = wp_get_post_categories ( $post_id );
else
$args [ 'selected_cats' ] = array ();
2008-05-19 17:35:18 -04:00
if ( is_array ( $popular_cats ) )
$args [ 'popular_cats' ] = $popular_cats ;
else
$args [ 'popular_cats' ] = get_terms ( 'category' , array ( 'fields' => 'ids' , 'orderby' => 'count' , 'order' => 'DESC' , 'number' => 10 , 'hierarchical' => false ) );
2008-04-22 18:45:53 -04:00
if ( $descendants_and_self ) {
$categories = get_categories ( " child_of= $descendants_and_self &hierarchical=0&hide_empty=0 " );
$self = get_category ( $descendants_and_self );
array_unshift ( $categories , $self );
} else {
$categories = get_categories ( 'get=all' );
}
2008-05-19 17:35:18 -04:00
// 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 ();
2009-05-24 19:47:49 -04:00
$keys = array_keys ( $categories );
2009-04-29 17:01:51 -04:00
foreach ( $keys as $k ) {
if ( in_array ( $categories [ $k ] -> term_id , $args [ 'selected_cats' ] ) ) {
$checked_categories [] = $categories [ $k ];
unset ( $categories [ $k ] );
2009-05-24 19:47:49 -04:00
}
2008-05-19 17:35:18 -04:00
}
2007-05-25 03:16:21 -04:00
2008-05-19 17:35:18 -04:00
// Put checked cats on top
echo call_user_func_array ( array ( & $walker , 'walk' ), array ( $checked_categories , 0 , $args ));
// Then the rest of them
echo call_user_func_array ( array ( & $walker , 'walk' ), array ( $categories , 0 , $args ));
2008-01-10 04:39:35 -05:00
}
2008-10-01 21:03:26 -04: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 17:35:18 -04:00
function wp_popular_terms_checklist ( $taxonomy , $default = 0 , $number = 10 , $echo = true ) {
2008-04-23 20:54:27 -04:00
global $post_ID ;
if ( $post_ID )
$checked_categories = wp_get_post_categories ( $post_ID );
else
$checked_categories = array ();
2008-04-22 18:45:53 -04:00
$categories = get_terms ( $taxonomy , array ( 'orderby' => 'count' , 'order' => 'DESC' , 'number' => $number , 'hierarchical' => false ) );
2008-01-10 04:39:35 -05:00
2008-04-14 15:31:20 -04:00
$popular_ids = array ();
2008-01-10 04:39:35 -05:00
foreach ( ( array ) $categories as $category ) {
2008-04-14 15:31:20 -04:00
$popular_ids [] = $category -> term_id ;
2008-05-19 17:35:18 -04:00
if ( ! $echo ) // hack for AJAX use
continue ;
2008-01-10 04:39:35 -05:00
$id = " popular-category- $category->term_id " ;
?>
2008-04-14 15:31:20 -04:00
< li id = " <?php echo $id ; ?> " class = " popular-category " >
2008-09-21 15:45:45 -04:00
< label class = " selectit " >
2008-04-17 15:32:38 -04:00
< input id = " in-<?php echo $id ; ?> " type = " checkbox " value = " <?php echo (int) $category->term_id ; ?> " />
2009-05-18 11:11:07 -04:00
< ? php echo esc_html ( apply_filters ( 'the_category' , $category -> name ) ); ?>
2008-01-10 04:39:35 -05:00
</ label >
</ li >
< ? php
}
2008-04-14 15:31:20 -04:00
return $popular_ids ;
2007-05-25 03:16:21 -04:00
}
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
* @ deprecated Use { @ link wp_link_category_checklist ()}
* @ see wp_link_category_checklist ()
*
* @ param unknown_type $default
*/
2007-05-25 03:16:21 -04:00
function dropdown_link_categories ( $default = 0 ) {
global $link_id ;
2008-04-18 13:41:10 -04:00
wp_link_category_checklist ( $link_id );
}
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $link_id
*/
2008-04-18 13:41:10 -04:00
function wp_link_category_checklist ( $link_id = 0 ) {
2008-08-08 13:05:10 -04:00
$default = 1 ;
2007-05-25 03:16:21 -04:00
if ( $link_id ) {
$checked_categories = wp_get_link_cats ( $link_id );
if ( count ( $checked_categories ) == 0 ) {
// No selected categories, strange
$checked_categories [] = $default ;
}
} else {
$checked_categories [] = $default ;
}
$categories = get_terms ( 'link_category' , 'orderby=count&hide_empty=0' );
2007-06-13 22:25:30 -04:00
2007-05-25 03:16:21 -04:00
if ( empty ( $categories ) )
return ;
foreach ( $categories as $category ) {
$cat_id = $category -> term_id ;
2009-05-18 11:11:07 -04:00
$name = esc_html ( apply_filters ( 'the_category' , $category -> name ));
2007-05-25 03:16:21 -04:00
$checked = in_array ( $cat_id , $checked_categories );
2007-06-01 22:53:09 -04:00
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 ? ' checked="checked"' : " " ), '/> ' , $name , " </label></li> " ;
2007-05-25 03:16:21 -04:00
}
}
2008-01-25 14:29:01 -05:00
// Tag stuff
// Returns a single tag row (see tag_rows below)
// Note: this is also used in admin-ajax.php!
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $tag
* @ param unknown_type $class
* @ return unknown
*/
2008-12-22 14:33:09 -05:00
function _tag_row ( $tag , $class = '' , $taxonomy = 'post_tag' ) {
2008-01-25 14:29:01 -05:00
$count = number_format_i18n ( $tag -> count );
2009-05-28 17:26:01 -04:00
$tagsel = ( $taxonomy == 'post_tag' ? 'tag' : $taxonomy );
$count = ( $count > 0 ) ? " <a href='edit.php? $tagsel = $tag->slug '> $count </a> " : $count ;
2008-02-05 01:47:27 -05:00
2008-11-18 12:25:43 -05:00
$name = apply_filters ( 'term_name' , $tag -> name );
2008-12-22 14:33:09 -05:00
$qe_data = get_term ( $tag -> term_id , $taxonomy , object , 'edit' );
$edit_link = " edit-tags.php?action=edit&taxonomy= $taxonomy &tag_ID= $tag->term_id " ;
2008-01-25 14:29:01 -05:00
$out = '' ;
$out .= '<tr id="tag-' . $tag -> term_id . '"' . $class . '>' ;
2008-11-17 14:16:26 -05:00
$columns = get_column_headers ( 'edit-tags' );
$hidden = get_hidden_columns ( 'edit-tags' );
2008-09-18 16:13:10 -04: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' :
$out .= '<th scope="row" class="check-column"> <input type="checkbox" name="delete_tags[]" value="' . $tag -> term_id . '" /></th>' ;
break ;
case 'name' :
2009-05-05 15:43:53 -04: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 16:13:10 -04:00
$actions = array ();
$actions [ 'edit' ] = '<a href="' . $edit_link . '">' . __ ( 'Edit' ) . '</a>' ;
2008-10-29 04:23:48 -04:00
$actions [ 'inline hide-if-no-js' ] = '<a href="#" class="editinline">' . __ ( 'Quick Edit' ) . '</a>' ;
2009-02-07 10:26:01 -05:00
$actions [ 'delete' ] = " <a class='delete:the-list:tag- $tag->term_id submitdelete' 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-22 23:28:50 -05:00
$actions = apply_filters ( 'tag_row_actions' , $actions , $tag );
2008-09-18 16:13:10 -04:00
$action_count = count ( $actions );
$i = 0 ;
2008-11-27 23:33:35 -05:00
$out .= '<div class="row-actions">' ;
2008-09-18 16:13:10 -04:00
foreach ( $actions as $action => $link ) {
++ $i ;
( $i == $action_count ) ? $sep = '' : $sep = ' | ' ;
$out .= " <span class=' $action '> $link $sep </span> " ;
}
2008-11-27 23:33:35 -05:00
$out .= '</div>' ;
2008-11-18 12:25:43 -05:00
$out .= '<div class="hidden" id="inline_' . $qe_data -> term_id . '">' ;
$out .= '<div class="name">' . $qe_data -> name . '</div>' ;
$out .= '<div class="slug">' . $qe_data -> slug . '</div></div></td>' ;
2008-09-18 16:13:10 -04:00
break ;
2009-04-09 12:00:40 -04:00
case 'description' :
$out .= " <td $attributes > $tag->description </td> " ;
break ;
2008-09-30 19:40:44 -04:00
case 'slug' :
$out .= " <td $attributes > $tag->slug </td> " ;
break ;
2008-09-18 16:13:10 -04:00
case 'posts' :
$attributes = 'class="posts column-posts num"' . $style ;
$out .= " <td $attributes > $count </td> " ;
break ;
2009-01-03 23:21:35 -05:00
default :
$out .= " <td $attributes > " ;
2009-02-04 07:31:47 -05:00
$out .= apply_filters ( " manage_ ${ taxonomy } _custom_column " , '' , $column_name , $tag -> term_id );
2009-01-03 23:21:35 -05:00
$out .= " </td> " ;
2008-09-18 16:13:10 -04:00
}
2008-09-16 19:17:03 -04:00
}
2008-01-25 14:29:01 -05:00
$out .= '</tr>' ;
2008-02-05 01:47:27 -05:00
2008-01-25 14:29:01 -05:00
return $out ;
}
// Outputs appropriate rows for the Nth page of the Tag Management screen,
2008-02-05 01:47:27 -05:00
// assuming M tags displayed at a time on the page
2008-01-25 14:29:01 -05:00
// Returns the number of tags displayed
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $page
* @ param unknown_type $pagesize
* @ param unknown_type $searchterms
* @ return unknown
*/
2008-12-22 14:33:09 -05:00
function tag_rows ( $page = 1 , $pagesize = 20 , $searchterms = '' , $taxonomy = 'post_tag' ) {
2008-02-05 01:47:27 -05:00
2008-01-25 14:29:01 -05:00
// Get a page worth of tags
2008-02-12 04:25:19 -05:00
$start = ( $page - 1 ) * $pagesize ;
2008-01-28 12:21:14 -05:00
$args = array ( 'offset' => $start , 'number' => $pagesize , 'hide_empty' => 0 );
2008-02-05 01:47:27 -05:00
2008-01-29 12:20:27 -05:00
if ( ! empty ( $searchterms ) ) {
2008-02-12 04:25:19 -05:00
$args [ 'search' ] = $searchterms ;
2008-01-29 12:20:27 -05:00
}
2008-01-28 12:21:14 -05:00
2008-12-22 14:33:09 -05:00
$tags = get_terms ( $taxonomy , $args );
2008-02-05 01:47:27 -05:00
2008-01-25 14:29:01 -05:00
// convert it to table rows
$out = '' ;
$count = 0 ;
2008-02-26 19:46:27 -05:00
foreach ( $tags as $tag )
2008-12-22 14:33:09 -05:00
$out .= _tag_row ( $tag , ++ $count % 2 ? ' class="iedit alternate"' : ' class="iedit"' , $taxonomy );
2008-02-05 01:47:27 -05:00
2008-01-25 14:29:01 -05:00
// filter and send to screen
echo $out ;
return $count ;
}
2007-10-09 18:49:42 -04:00
// define the columns to display, the syntax is 'internal name' => 'display name'
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ return unknown
*/
2007-10-09 18:49:42 -04:00
function wp_manage_posts_columns () {
$posts_columns = array ();
2008-04-18 18:23:02 -04:00
$posts_columns [ 'cb' ] = '<input type="checkbox" />' ;
2009-03-02 14:20:19 -05:00
/* translators: manage posts column name */
$posts_columns [ 'title' ] = _x ( 'Post' , 'column name' );
2008-09-10 18:47:03 -04:00
$posts_columns [ 'author' ] = __ ( 'Author' );
2007-10-09 18:49:42 -04:00
$posts_columns [ 'categories' ] = __ ( 'Categories' );
2008-02-10 03:10:11 -05:00
$posts_columns [ 'tags' ] = __ ( 'Tags' );
2008-08-14 13:00:37 -04:00
if ( ! isset ( $_GET [ 'post_status' ]) || ! in_array ( $_GET [ 'post_status' ], array ( 'pending' , 'draft' , 'future' )) )
2008-03-10 04:24:45 -04:00
$posts_columns [ 'comments' ] = '<div class="vers"><img alt="Comments" src="images/comment-grey-bubble.png" /></div>' ;
2008-10-13 23:49:57 -04:00
$posts_columns [ 'date' ] = __ ( 'Date' );
2007-10-09 18:49:42 -04:00
$posts_columns = apply_filters ( 'manage_posts_columns' , $posts_columns );
2008-02-12 00:51:53 -05:00
return $posts_columns ;
}
2008-02-19 01:13:20 -05:00
// define the columns to display, the syntax is 'internal name' => 'display name'
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ return unknown
*/
2008-02-19 01:13:20 -05:00
function wp_manage_media_columns () {
$posts_columns = array ();
2008-04-18 18:23:02 -04:00
$posts_columns [ 'cb' ] = '<input type="checkbox" />' ;
2008-02-19 01:13:20 -05:00
$posts_columns [ 'icon' ] = '' ;
2009-03-02 14:20:19 -05:00
/* translators: column name */
$posts_columns [ 'media' ] = _x ( 'File' , 'column name' );
2008-10-15 01:39:40 -04:00
$posts_columns [ 'author' ] = __ ( 'Author' );
2009-03-10 19:02:29 -04:00
//$posts_columns['tags'] = _x('Tags', 'column name');
2009-03-02 14:20:19 -05:00
/* translators: column name */
$posts_columns [ 'parent' ] = _x ( 'Attached to' , 'column name' );
2008-11-17 13:01:00 -05:00
$posts_columns [ 'comments' ] = '<div class="vers"><img alt="Comments" src="images/comment-grey-bubble.png" /></div>' ;
//$posts_columns['comments'] = __('Comments');
2009-03-02 14:20:19 -05:00
/* translators: column name */
$posts_columns [ 'date' ] = _x ( 'Date' , 'column name' );
2008-02-19 01:13:20 -05:00
$posts_columns = apply_filters ( 'manage_media_columns' , $posts_columns );
return $posts_columns ;
}
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ return unknown
*/
2008-02-12 00:51:53 -05:00
function wp_manage_pages_columns () {
$posts_columns = array ();
2008-04-18 18:23:02 -04:00
$posts_columns [ 'cb' ] = '<input type="checkbox" />' ;
2008-08-20 17:52:47 -04:00
$posts_columns [ 'title' ] = __ ( 'Title' );
2008-02-12 00:51:53 -05:00
$posts_columns [ 'author' ] = __ ( 'Author' );
2008-11-03 01:36:52 -05:00
$post_status = 'all' ;
if ( ! empty ( $_GET [ 'post_status' ]) )
$post_status = $_GET [ 'post_status' ];
2008-08-08 13:05:10 -04:00
if ( ! in_array ( $post_status , array ( 'pending' , 'draft' , 'future' )) )
2008-03-10 04:24:45 -04:00
$posts_columns [ 'comments' ] = '<div class="vers"><img alt="" src="images/comment-grey-bubble.png" /></div>' ;
2008-10-13 23:49:57 -04:00
$posts_columns [ 'date' ] = __ ( 'Date' );
2008-02-12 00:51:53 -05:00
$posts_columns = apply_filters ( 'manage_pages_columns' , $posts_columns );
2007-10-09 18:49:42 -04:00
return $posts_columns ;
}
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $page
* @ return unknown
*/
2008-09-18 01:41:45 -04:00
function get_column_headers ( $page ) {
2008-11-18 15:49:39 -05:00
global $_wp_column_headers ;
if ( ! isset ( $_wp_column_headers ) )
$_wp_column_headers = array ();
2008-11-17 14:16:26 -05:00
// Store in static to avoid running filters on each call
2008-11-18 15:49:39 -05:00
if ( isset ( $_wp_column_headers [ $page ]) )
return $_wp_column_headers [ $page ];
2008-11-17 14:16:26 -05:00
2008-09-18 01:41:45 -04:00
switch ( $page ) {
2008-11-17 14:16:26 -05:00
case 'edit' :
2008-11-18 15:49:39 -05:00
$_wp_column_headers [ $page ] = wp_manage_posts_columns ();
2008-11-17 14:16:26 -05:00
break ;
case 'edit-pages' :
2008-11-18 15:49:39 -05:00
$_wp_column_headers [ $page ] = wp_manage_pages_columns ();
2008-11-17 14:16:26 -05:00
break ;
case 'edit-comments' :
2008-11-18 15:49:39 -05:00
$_wp_column_headers [ $page ] = array (
2008-09-25 21:05:52 -04:00
'cb' => '<input type="checkbox" />' ,
'author' => __ ( 'Author' ),
2009-03-02 14:20:19 -05:00
/* translators: column name */
'comment' => _x ( 'Comment' , 'column name' ),
2008-11-25 16:11:05 -05:00
//'date' => __('Submitted'),
2008-11-11 18:48:27 -05:00
'response' => __ ( 'In Response To' )
2008-09-25 21:05:52 -04:00
);
2008-11-17 14:16:26 -05:00
break ;
case 'link-manager' :
2008-11-18 15:49:39 -05:00
$_wp_column_headers [ $page ] = array (
2008-09-18 01:41:45 -04:00
'cb' => '<input type="checkbox" />' ,
'name' => __ ( 'Name' ),
'url' => __ ( 'URL' ),
'categories' => __ ( 'Categories' ),
2009-03-25 22:17:01 -04:00
'rel' => __ ( 'Relationship' ),
2009-05-05 00:59:19 -04:00
'visible' => __ ( 'Visible' ),
'rating' => __ ( 'Rating' )
2008-09-18 01:41:45 -04:00
);
2008-11-17 14:16:26 -05:00
break ;
case 'upload' :
2008-11-18 15:49:39 -05:00
$_wp_column_headers [ $page ] = wp_manage_media_columns ();
2008-11-17 14:16:26 -05:00
break ;
case 'categories' :
2008-11-18 15:49:39 -05:00
$_wp_column_headers [ $page ] = array (
2008-09-18 01:41:45 -04:00
'cb' => '<input type="checkbox" />' ,
'name' => __ ( 'Name' ),
'description' => __ ( 'Description' ),
2008-09-30 19:40:44 -04:00
'slug' => __ ( 'Slug' ),
2008-09-18 01:41:45 -04:00
'posts' => __ ( 'Posts' )
);
2008-11-17 14:16:26 -05:00
break ;
case 'edit-link-categories' :
2008-11-18 15:49:39 -05:00
$_wp_column_headers [ $page ] = array (
2008-09-18 01:41:45 -04:00
'cb' => '<input type="checkbox" />' ,
'name' => __ ( 'Name' ),
'description' => __ ( 'Description' ),
2008-12-03 14:18:41 -05:00
'slug' => __ ( 'Slug' ),
2008-09-18 01:41:45 -04:00
'links' => __ ( 'Links' )
);
2008-11-17 14:16:26 -05:00
break ;
case 'edit-tags' :
2008-11-18 15:49:39 -05:00
$_wp_column_headers [ $page ] = array (
2008-09-18 01:41:45 -04:00
'cb' => '<input type="checkbox" />' ,
'name' => __ ( 'Name' ),
2009-04-09 12:00:40 -04:00
'description' => __ ( 'Description' ),
2008-09-30 19:40:44 -04:00
'slug' => __ ( 'Slug' ),
2008-09-18 01:41:45 -04:00
'posts' => __ ( 'Posts' )
);
2008-11-17 14:16:26 -05:00
break ;
case 'users' :
2008-11-18 15:49:39 -05:00
$_wp_column_headers [ $page ] = array (
2008-09-19 01:31:00 -04:00
'cb' => '<input type="checkbox" />' ,
'username' => __ ( 'Username' ),
'name' => __ ( 'Name' ),
'email' => __ ( 'E-mail' ),
'role' => __ ( 'Role' ),
'posts' => __ ( 'Posts' )
);
2008-11-17 14:16:26 -05:00
break ;
2008-10-05 00:43:52 -04:00
default :
2008-11-18 15:49:39 -05:00
$_wp_column_headers [ $page ] = array ();
2008-09-18 01:41:45 -04:00
}
2008-11-17 14:16:26 -05:00
2008-11-18 15:49:39 -05:00
$_wp_column_headers [ $page ] = apply_filters ( 'manage_' . $page . '_columns' , $_wp_column_headers [ $page ]);
return $_wp_column_headers [ $page ];
2008-09-18 01:41:45 -04:00
}
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $type
* @ param unknown_type $id
*/
2008-09-29 05:26:21 -04:00
function print_column_headers ( $type , $id = true ) {
2008-11-17 14:16:26 -05:00
$type = str_replace ( '.php' , '' , $type );
2008-09-21 15:45:45 -04:00
$columns = get_column_headers ( $type );
2008-11-17 14:16:26 -05:00
$hidden = get_hidden_columns ( $type );
2008-09-18 01:41:45 -04:00
$styles = array ();
2008-11-17 13:01:00 -05:00
// $styles['tag']['posts'] = 'width: 90px;';
// $styles['link-category']['links'] = 'width: 90px;';
// $styles['category']['posts'] = 'width: 90px;';
// $styles['link']['visible'] = 'text-align: center;';
2008-09-18 01:41:45 -04:00
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;' ;
if ( isset ( $styles [ $type ]) && isset ( $styles [ $type ][ $column_key ]) )
$style .= ' ' . $styles [ $type ][ $column_key ];
$style = ' style="' . $style . '"' ;
?>
2008-09-29 05:26:21 -04:00
< th scope = " col " < ? php echo $id ? " id= \" $column_key\ " " : " " ; echo $class ; echo $style ; ?>><?php echo $column_display_name ; ?></th>
2008-09-18 01:41:45 -04:00
< ? php }
2008-09-14 02:51:42 -04:00
}
2008-11-18 15:49:39 -05: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 ;
if ( ! isset ( $_wp_column_headers ) )
$_wp_column_headers = array ();
$_wp_column_headers [ $screen ] = $columns ;
}
2008-11-17 14:16:26 -05:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $page
*/
function get_hidden_columns ( $page ) {
$page = str_replace ( '.php' , '' , $page );
2008-12-09 13:03:31 -05:00
return ( array ) get_user_option ( 'manage-' . $page . '-columns-hidden' , 0 , false );
2008-11-17 14:16:26 -05:00
}
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
2008-10-07 21:18:16 -04:00
* Outputs the quick edit and bulk edit table rows for posts and pages
*
2008-10-05 00:43:52 -04:00
* @ since 2.7
2008-10-01 21:03:26 -04:00
*
2008-10-05 00:43:52 -04:00
* @ param string $type 'post' or 'page'
2008-10-01 21:03:26 -04:00
*/
2008-09-10 18:47:03 -04:00
function inline_edit_row ( $type ) {
2008-09-21 15:45:45 -04:00
global $current_user , $mode ;
2008-09-10 18:47:03 -04:00
2008-09-21 15:45:45 -04:00
$is_page = 'page' == $type ;
2008-11-29 18:09:04 -05:00
if ( $is_page ) {
2008-11-30 19:29:14 -05:00
$screen = 'edit-pages' ;
2008-09-21 15:45:45 -04:00
$post = get_default_page_to_edit ();
2008-11-29 18:09:04 -05:00
} else {
2008-11-30 19:29:14 -05:00
$screen = 'edit' ;
2008-09-21 15:45:45 -04:00
$post = get_default_post_to_edit ();
2008-11-29 18:09:04 -05:00
}
2008-09-10 18:47:03 -04:00
2008-09-21 15:45:45 -04:00
$columns = $is_page ? wp_manage_pages_columns () : wp_manage_posts_columns ();
2008-11-29 18:09:04 -05:00
$hidden = array_intersect ( array_keys ( $columns ), array_filter ( get_hidden_columns ( $screen ) ) );
2008-11-10 21:58:24 -05:00
$col_count = count ( $columns ) - count ( $hidden );
2008-09-21 15:45:45 -04:00
$m = ( isset ( $mode ) && 'excerpt' == $mode ) ? 'excerpt' : 'list' ;
2008-11-15 13:04:09 -05:00
$can_publish = current_user_can ( " publish_ { $type } s " );
2008-11-10 21:58:24 -05:00
$core_columns = array ( 'cb' => true , 'date' => true , 'title' => true , 'categories' => true , 'tags' => true , 'comments' => true , 'author' => true );
?>
2008-09-25 09:42:34 -04:00
< form method = " get " action = " " >< table style = " display: none " >< tbody id = " inlineedit " >
< ? php
$bulk = 0 ;
while ( $bulk < 2 ) { ?>
2008-10-05 00:43:52 -04:00
2008-11-10 21:58:24 -05:00
< tr id = " <?php echo $bulk ? 'bulk-edit' : 'inline-edit'; ?> " class = " inline-edit-row inline-edit-row-<?php echo " $type " ;
echo $bulk ? " bulk-edit-row bulk-edit-row- $type " : " quick-edit-row quick-edit-row- $type " ;
?> " style="display: none"><td colspan="<?php echo $col_count; ?>">
2008-09-10 21:46:30 -04:00
2008-11-10 21:58:24 -05:00
< fieldset class = " inline-edit-col-left " >< div class = " inline-edit-col " >
2008-11-29 22:51:45 -05:00
< h4 >< ? php echo $bulk ? ( $is_page ? __ ( 'Bulk Edit Pages' ) : __ ( 'Bulk Edit Posts' ) ) : __ ( 'Quick Edit' ); ?> </h4>
2008-09-10 21:46:30 -04:00
2008-09-10 18:47:03 -04:00
2008-11-10 21:58:24 -05:00
< ? php if ( $bulk ) : ?>
< div id = " bulk-title-div " >
< div id = " bulk-titles " ></ div >
</ div >
2008-09-10 18:47:03 -04:00
2008-11-10 21:58:24 -05:00
< ? php else : // $bulk ?>
2008-09-10 18:47:03 -04:00
2008-11-10 21:58:24 -05: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-13 23:49:57 -04:00
2008-11-10 21:58:24 -05:00
< ? php endif ; // $bulk ?>
2008-09-25 09:42:34 -04:00
2008-11-10 21:58:24 -05:00
< ? php if ( ! $bulk ) : ?>
2008-09-21 15:45:45 -04:00
2008-11-10 21:58:24 -05: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-10 18:47:03 -04:00
2008-11-10 21:58:24 -05: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-10 18:47:03 -04:00
2008-11-10 21:58:24 -05:00
< ? php endif ; // $bulk
2008-09-10 18:47:03 -04:00
2008-11-10 21:58:24 -05:00
ob_start ();
2008-11-15 13:04:09 -05:00
$authors = get_editable_user_ids ( $current_user -> id , true , $type ); // TODO: ROLE SYSTEM
2008-11-10 21:58:24 -05:00
if ( $authors && count ( $authors ) > 1 ) :
$users_opt = array ( 'include' => $authors , 'name' => 'post_author' , 'class' => 'authors' , 'multi' => 1 );
if ( $bulk )
$users_opt [ 'show_option_none' ] = __ ( '- No Change -' );
?>
< label >
< span class = " title " >< ? php _e ( 'Author' ); ?> </span>
< ? php wp_dropdown_users ( $users_opt ); ?>
</ label >
2008-09-10 18:47:03 -04:00
2008-11-10 21:58:24 -05:00
< ? php
2008-12-09 13:03:31 -05:00
endif ; // authors
2008-11-10 21:58:24 -05:00
$authors_dropdown = ob_get_clean ();
?>
2008-09-10 18:47:03 -04:00
2008-11-10 21:58:24 -05:00
< ? php if ( ! $bulk ) : echo $authors_dropdown ; ?>
2008-09-10 18:47:03 -04:00
2008-11-10 21:58:24 -05: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 14:20:19 -05: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-10 21:58:24 -05:00
< label class = " alignleft inline-edit-private " >
2008-12-06 06:10:24 -05:00
< input type = " checkbox " name = " keep_private " value = " private " />
2008-11-10 21:58:24 -05:00
< span class = " checkbox-title " >< ? php echo $is_page ? __ ( 'Private page' ) : __ ( 'Private post' ); ?> </span>
</ label >
</ div >
< ? php endif ; ?>
2008-09-21 15:45:45 -04:00
2008-11-10 21:58:24 -05:00
</ div ></ fieldset >
< ? php if ( ! $is_page && ! $bulk ) : ?>
< fieldset class = " inline-edit-col-center inline-edit-categories " >< div class = " inline-edit-col " >
< span class = " title inline-edit-categories-label " >< ? php _e ( 'Categories' ); ?>
< span class = " catshow " >< ? php _e ( '[more]' ); ?> </span>
< span class = " cathide " style = " display:none; " >< ? php _e ( '[less]' ); ?> </span>
</ span >
< ul class = " cat-checklist " >
< ? php wp_category_checklist (); ?>
</ ul >
</ div ></ fieldset >
< ? php endif ; // !$is_page && !$bulk ?>
< fieldset class = " inline-edit-col-right " >< div class = " inline-edit-col " >
< ? php
if ( $bulk )
echo $authors_dropdown ;
?>
< ? php if ( $is_page ) : ?>
< label >
< span class = " title " >< ? php _e ( 'Parent' ); ?> </span>
2008-12-05 13:03:24 -05:00
< ? php
2008-12-10 17:22:30 -05:00
$dropdown_args = array ( '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 13:03:24 -05:00
if ( $bulk )
$dropdown_args [ 'show_option_no_change' ] = __ ( '- No Change -' );
2008-12-05 14:40:30 -05:00
$dropdown_args = apply_filters ( 'quick_edit_dropdown_pages_args' , $dropdown_args );
2008-12-05 14:19:24 -05:00
wp_dropdown_pages ( $dropdown_args );
2008-12-05 13:03:24 -05:00
?>
2008-11-10 21:58:24 -05:00
</ label >
< ? php if ( ! $bulk ) : ?>
< 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 ) : ?>
< option value = " -1 " >< ? php _e ( '- No Change -' ); ?> </option>
< ? php endif ; // $bulk ?>
< option value = " default " >< ? php _e ( 'Default Template' ); ?> </option>
< ? php page_template_dropdown () ?>
</ select >
</ label >
< ? php elseif ( ! $bulk ) : // $is_page ?>
< label class = " inline-edit-tags " >
< span class = " title " >< ? php _e ( 'Tags' ); ?> </span>
< textarea cols = " 22 " rows = " 1 " name = " tags_input " class = " tags_input " ></ textarea >
</ label >
< ? php endif ; // $is_page ?>
< ? php if ( $bulk ) : ?>
< div class = " inline-edit-group " >
< label class = " alignleft " >
< span class = " title " >< ? php _e ( 'Comments' ); ?> </span>
< select name = " comment_status " >
< option value = " " >< ? php _e ( '- No Change -' ); ?> </option>
< option value = " open " >< ? php _e ( 'Allow' ); ?> </option>
< option value = " closed " >< ? php _e ( 'Do not allow' ); ?> </option>
</ select >
</ label >
< label class = " alignright " >
< span class = " title " >< ? php _e ( 'Pings' ); ?> </span>
< select name = " ping_status " >
< option value = " " >< ? php _e ( '- No Change -' ); ?> </option>
< option value = " open " >< ? php _e ( 'Allow' ); ?> </option>
< option value = " closed " >< ? php _e ( 'Do not allow' ); ?> </option>
</ select >
</ label >
</ div >
< ? php else : // $bulk ?>
< div class = " inline-edit-group " >
< label class = " alignleft " >
< input type = " checkbox " name = " comment_status " value = " open " />
< span class = " checkbox-title " >< ? php _e ( 'Allow Comments' ); ?> </span>
</ label >
< label class = " alignleft " >
< input type = " checkbox " name = " ping_status " value = " open " />
< span class = " checkbox-title " >< ? php _e ( 'Allow Pings' ); ?> </span>
</ label >
</ div >
< ? php endif ; // $bulk ?>
< div class = " inline-edit-group " >
< label class = " inline-edit-status alignleft " >
< span class = " title " >< ? php _e ( 'Status' ); ?> </span>
< select name = " _status " >
< ? php if ( $bulk ) : ?>
< option value = " -1 " >< ? php _e ( '- No Change -' ); ?> </option>
< ? 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 17:09:41 -05:00
< option value = " draft " >< ? php _e ( 'Draft' ); ?> </option>
2008-11-10 21:58:24 -05:00
</ select >
</ label >
< ? php if ( ! $is_page && $can_publish && current_user_can ( 'edit_others_posts' ) ) : ?>
< ? php if ( $bulk ) : ?>
< label class = " alignright " >
< span class = " title " >< ? php _e ( 'Sticky' ); ?> </span>
< select name = " sticky " >
< option value = " -1 " >< ? php _e ( '- No Change -' ); ?> </option>
< 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 ?>
< ? php endif ; // !$is_page && $can_publish && current_user_can( 'edit_others_posts' ) ?>
</ div >
</ div ></ fieldset >
< ? php
foreach ( $columns as $column_name => $column_display_name ) {
if ( isset ( $core_columns [ $column_name ] ) )
continue ;
do_action ( $bulk ? 'bulk_edit_custom_box' : 'quick_edit_custom_box' , $column_name , $type );
}
?>
< 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-07 21:18:16 -04:00
< ? php if ( ! $bulk ) {
2008-12-09 04:14:31 -05:00
wp_nonce_field ( 'inlineeditnonce' , '_inline_edit' , false );
2008-12-09 04:07:36 -05:00
$update_text = ( $is_page ) ? __ ( 'Update Page' ) : __ ( 'Update Post' );
2008-12-09 04:14:31 -05:00
?>
2009-05-05 15:43:53 -04:00
< a accesskey = " s " href = " #inline-edit " title = " <?php _e('Update'); ?> " class = " button-primary save alignright " >< ? php echo esc_attr ( $update_text ); ?> </a>
2009-05-05 14:57:43 -04:00
< img class = " waiting " style = " display:none; " src = " images/wpspin_light.gif " alt = " " />
2008-12-09 04:07:36 -05:00
< ? php } else {
$update_text = ( $is_page ) ? __ ( 'Update Pages' ) : __ ( 'Update Posts' );
?>
2009-05-05 15:43:53 -04:00
< input accesskey = " s " class = " button-primary alignright " type = " submit " name = " bulk_edit " value = " <?php echo esc_attr( $update_text ); ?> " />
2008-10-07 21:18:16 -04:00
< ? php } ?>
2008-09-21 15:45:45 -04:00
< input type = " hidden " name = " post_view " value = " <?php echo $m ; ?> " />
2008-11-10 21:58:24 -05:00
< br class = " clear " />
</ p >
2008-09-21 15:45:45 -04:00
</ td ></ tr >
2008-09-25 09:42:34 -04:00
< ? php
$bulk ++ ;
} ?>
</ tbody ></ table ></ form >
2008-09-21 15:45:45 -04:00
< ? php
2008-09-10 18:47:03 -04:00
}
2008-10-07 21:18:16 -04:00
// adds hidden fields with the data for use in the inline editor for posts and pages
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $post
*/
2008-09-21 15:45:45 -04:00
function get_inline_data ( $post ) {
2008-09-10 18:47:03 -04:00
2008-09-21 15:45:45 -04:00
if ( ! current_user_can ( 'edit_' . $post -> post_type , $post -> ID ) )
return ;
2008-10-05 00:43:52 -04:00
2009-05-05 15:43:53 -04:00
$title = esc_attr ( $post -> post_title );
2008-09-10 18:47:03 -04:00
2008-09-21 15:45:45 -04:00
echo '
2008-09-25 09:42:34 -04:00
< div class = " hidden " id = " inline_' . $post->ID . ' " >
< div class = " post_title " > ' . $title . ' </ div >
< div class = " post_name " > ' . $post->post_name . ' </ div >
< div class = " post_author " > ' . $post->post_author . ' </ div >
< div class = " comment_status " > ' . $post->comment_status . ' </ div >
< div class = " ping_status " > ' . $post->ping_status . ' </ div >
< div class = " _status " > ' . $post->post_status . ' </ div >
2009-05-13 22:00:32 -04: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 11:11:07 -04:00
< div class = " post_password " > ' . esc_html( $post->post_password ) . ' </ div > ' ;
2008-09-21 15:45:45 -04:00
if ( $post -> post_type == 'page' )
echo '
2008-09-25 09:42:34 -04:00
< div class = " post_parent " > ' . $post->post_parent . ' </ div >
2009-05-18 11:11:07 -04:00
< div class = " page_template " > ' . esc_html( get_post_meta( $post->ID, ' _wp_page_template ', true ) ) . ' </ div >
2008-09-25 09:42:34 -04:00
< div class = " menu_order " > ' . $post->menu_order . ' </ div > ' ;
2008-10-05 00:43:52 -04:00
2008-09-21 15:45:45 -04:00
if ( $post -> post_type == 'post' )
echo '
2009-05-18 11:11:07 -04:00
< div class = " tags_input " > ' . esc_html( str_replace( ' , ', ' , ', get_tags_to_edit($post->ID) ) ) . ' </ div >
2008-09-25 09:42:34 -04:00
< div class = " post_category " > ' . implode( ' , ', wp_get_post_categories( $post->ID ) ) . ' </ div >
< div class = " sticky " > ' . (is_sticky($post->ID) ? ' sticky ' : ' ') . ' </ div > ' ;
2008-10-05 00:43:52 -04:00
2008-09-21 15:45:45 -04:00
echo '</div>' ;
2008-09-10 18:47:03 -04:00
}
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $posts
*/
2008-09-10 18:47:03 -04:00
function post_rows ( $posts = array () ) {
2008-08-25 16:21:27 -04:00
global $wp_query , $post , $mode ;
2009-05-18 11:11:07 -04:00
add_filter ( 'the_title' , 'esc_html' );
2008-08-25 16:21:27 -04:00
// Create array of post IDs.
$post_ids = array ();
2008-09-10 18:47:03 -04:00
if ( empty ( $posts ) )
$posts = & $wp_query -> posts ;
foreach ( $posts as $a_post )
2008-08-25 16:21:27 -04:00
$post_ids [] = $a_post -> ID ;
$comment_pending_count = get_pending_comments_num ( $post_ids );
2008-09-10 18:47:03 -04:00
if ( empty ( $comment_pending_count ) )
2008-08-25 16:21:27 -04:00
$comment_pending_count = array ();
2008-09-10 18:47:03 -04:00
foreach ( $posts as $post ) {
2008-08-25 16:21:27 -04: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-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $a_post
* @ param unknown_type $pending_comments
* @ param unknown_type $mode
*/
2008-08-25 16:21:27 -04:00
function _post_row ( $a_post , $pending_comments , $mode ) {
global $post ;
2008-09-21 15:45:45 -04:00
static $rowclass ;
2008-08-25 16:21:27 -04:00
$global_post = $post ;
$post = $a_post ;
2008-09-10 18:47:03 -04:00
setup_postdata ( $post );
2008-08-25 16:21:27 -04:00
2008-09-21 15:45:45 -04:00
$rowclass = 'alternate' == $rowclass ? '' : 'alternate' ;
2008-08-25 16:21:27 -04:00
global $current_user ;
$post_owner = ( $current_user -> ID == $post -> post_author ? 'self' : 'other' );
$edit_link = get_edit_post_link ( $post -> ID );
2008-09-30 17:32:13 -04:00
$title = _draft_or_post_title ();
2008-08-25 16:21:27 -04:00
?>
2008-09-21 15:45:45 -04: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 16:21:27 -04:00
< ? php
2008-11-17 14:16:26 -05:00
$posts_columns = get_column_headers ( 'edit' );
$hidden = get_hidden_columns ( 'edit' );
2008-09-10 21:46:30 -04:00
foreach ( $posts_columns as $column_name => $column_display_name ) {
$class = " class= \" $column_name column- $column_name\ " " ;
2008-08-25 16:21:27 -04:00
2008-09-10 21:46:30 -04:00
$style = '' ;
if ( in_array ( $column_name , $hidden ) )
$style = ' style="display:none;"' ;
$attributes = " $class $style " ;
switch ( $column_name ) {
2008-08-25 16:21:27 -04:00
case 'cb' :
?>
< th scope = " row " class = " check-column " >< ? php if ( current_user_can ( 'edit_post' , $post -> ID ) ) { ?> <input type="checkbox" name="post[]" value="<?php the_ID(); ?>" /><?php } ?></th>
< ? 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 17:47:18 -05:00
$time_diff = 0 ;
2008-08-25 16:21:27 -04:00
} else {
2008-10-09 02:40:30 -04:00
$t_time = get_the_time ( __ ( 'Y/m/d g:i:s A' ));
$m_time = $post -> post_date ;
2008-11-03 22:22:24 -05:00
$time = get_post_time ( 'G' , true , $post );
2008-10-09 02:40:30 -04:00
2008-12-09 13:03:31 -05:00
$time_diff = time () - $time ;
2008-11-05 14:19:52 -05:00
2009-01-20 17:47:18 -05: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 16:21:27 -04:00
}
2008-09-21 15:45:45 -04: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 12:56:32 -04:00
echo '<br />' ;
2008-11-05 14:19:52 -05:00
if ( 'publish' == $post -> post_status ) {
2008-10-14 12:56:32 -04:00
_e ( 'Published' );
2008-11-05 14:19:52 -05:00
} elseif ( 'future' == $post -> post_status ) {
2009-01-20 17:47:18 -05:00
if ( $time_diff > 0 )
2008-11-05 14:19:52 -05:00
echo '<strong class="attention">' . __ ( 'Missed schedule' ) . '</strong>' ;
else
_e ( 'Scheduled' );
} else {
2008-10-14 12:56:32 -04:00
_e ( 'Last Modified' );
2008-11-05 14:19:52 -05:00
}
2008-09-21 15:45:45 -04:00
echo '</td>' ;
2008-08-25 16:21:27 -04:00
break ;
case 'title' :
2008-09-10 21:46:30 -04:00
$attributes = 'class="post-title column-title"' . $style ;
2008-08-25 16:21:27 -04:00
?>
2009-05-05 15:43:53 -04:00
< td < ? php echo $attributes ?> ><strong><?php if ( current_user_can( 'edit_post', $post->ID ) ) { ?><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 16:21:27 -04:00
< ? php
if ( 'excerpt' == $mode )
the_excerpt ();
$actions = array ();
2008-10-02 00:34:52 -04:00
if ( current_user_can ( 'edit_post' , $post -> ID ) ) {
2009-05-05 15:43:53 -04:00
$actions [ 'edit' ] = '<a href="' . get_edit_post_link ( $post -> ID , true ) . '" title="' . esc_attr ( __ ( 'Edit this post' )) . '">' . __ ( 'Edit' ) . '</a>' ;
$actions [ 'inline hide-if-no-js' ] = '<a href="#" class="editinline" title="' . esc_attr ( __ ( 'Edit this post inline' )) . '">' . __ ( 'Quick Edit' ) . '</a>' ;
2009-05-09 03:27:22 -04:00
$actions [ 'delete' ] = " <a class='submitdelete' title=' " . esc_attr ( __ ( 'Delete this post' )) . " ' href=' " . wp_nonce_url ( " post.php?action=delete&post= $post->ID " , 'delete-post_' . $post -> ID ) . " ' onclick= \" if ( confirm(' " . esc_js ( sprintf ( ( 'draft' == $post -> post_status ) ? __ ( " You are about to delete this draft '%s' \n 'Cancel' to stop, 'OK' to delete. " ) : __ ( " You are about to delete this post '%s' \n 'Cancel' to stop, 'OK' to delete. " ), $post -> post_title )) . " ') ) { return true;}return false; \" > " . __ ( 'Delete' ) . " </a> " ;
2008-10-02 00:34:52 -04:00
}
2008-12-09 12:31:43 -05:00
if ( in_array ( $post -> post_status , array ( 'pending' , 'draft' )) ) {
if ( current_user_can ( 'edit_post' , $post -> ID ) )
2009-05-05 15:43:53 -04:00
$actions [ 'view' ] = '<a href="' . get_permalink ( $post -> ID ) . '" title="' . esc_attr ( sprintf ( __ ( 'Preview “%s”' ), $title )) . '" rel="permalink">' . __ ( 'Preview' ) . '</a>' ;
2008-12-09 12:31:43 -05:00
} else {
2009-05-05 15:43:53 -04:00
$actions [ 'view' ] = '<a href="' . get_permalink ( $post -> ID ) . '" title="' . esc_attr ( sprintf ( __ ( 'View “%s”' ), $title )) . '" rel="permalink">' . __ ( 'View' ) . '</a>' ;
2008-12-09 12:31:43 -05:00
}
2009-02-22 23:28:50 -05:00
$actions = apply_filters ( 'post_row_actions' , $actions , $post );
2008-08-25 16:21:27 -04:00
$action_count = count ( $actions );
$i = 0 ;
2008-11-27 23:33:35 -05:00
echo '<div class="row-actions">' ;
2008-08-25 16:21:27 -04:00
foreach ( $actions as $action => $link ) {
++ $i ;
( $i == $action_count ) ? $sep = '' : $sep = ' | ' ;
2008-12-09 07:00:44 -05:00
echo " <span class=' $action '> $link $sep </span> " ;
2008-08-25 16:21:27 -04:00
}
2008-11-27 23:33:35 -05:00
echo '</div>' ;
2008-09-21 15:45:45 -04:00
get_inline_data ( $post );
2008-08-25 16:21:27 -04:00
?>
</ td >
< ? php
break ;
case 'categories' :
?>
2008-09-10 21:46:30 -04:00
< td < ? php echo $attributes ?> ><?php
2008-08-25 16:21:27 -04:00
$categories = get_the_category ();
if ( ! empty ( $categories ) ) {
$out = array ();
foreach ( $categories as $c )
2009-05-18 11:11:07 -04: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 16:21:27 -04:00
echo join ( ', ' , $out );
} else {
_e ( 'Uncategorized' );
}
?> </td>
< ? php
break ;
case 'tags' :
?>
2008-09-10 21:46:30 -04:00
< td < ? php echo $attributes ?> ><?php
2008-09-18 13:27:07 -04:00
$tags = get_the_tags ( $post -> ID );
2008-08-25 16:21:27 -04:00
if ( ! empty ( $tags ) ) {
$out = array ();
foreach ( $tags as $c )
2009-05-18 11:11:07 -04: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 16:21:27 -04:00
echo join ( ', ' , $out );
} else {
_e ( 'No Tags' );
}
?> </td>
< ? php
break ;
case 'comments' :
?>
2008-09-10 21:46:30 -04:00
< td < ? php echo $attributes ?> ><div class="post-com-count-wrapper">
2008-08-25 16:21:27 -04:00
< ? php
$pending_phrase = sprintf ( __ ( '%s pending' ), number_format ( $pending_comments ) );
if ( $pending_comments )
echo '<strong>' ;
2009-03-12 23:53:39 -04: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 16:21:27 -04:00
if ( $pending_comments )
echo '</strong>' ;
?>
</ div ></ td >
< ? php
break ;
case 'author' :
?>
2009-05-13 21:52:42 -04:00
< td < ? php echo $attributes ?> ><a href="edit.php?author=<?php the_author_meta('ID'); ?>"><?php the_author() ?></a></td>
2008-08-25 16:21:27 -04: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' :
?>
< td >< ? php if ( current_user_can ( 'edit_post' , $post -> ID ) ) { echo " <a href=' $edit_link ' class='edit'> " . __ ( 'Edit' ) . " </a> " ; } ?> </td>
< ? php
break ;
case 'control_delete' :
?>
< td >< ? php if ( current_user_can ( '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>
< ? php
break ;
default :
?>
2008-10-08 22:39:52 -04:00
< td < ? php echo $attributes ?> ><?php do_action('manage_posts_custom_column', $column_name, $post->ID); ?></td>
2008-08-25 16:21:27 -04:00
< ? php
break ;
}
}
?>
</ tr >
< ? php
$post = $global_post ;
}
2007-12-14 01:20:42 -05:00
/*
* display one row if the page doesn ' t have any children
* otherwise , display the row and its children in subsequent rows
*/
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $page
* @ param unknown_type $level
*/
2008-06-14 20:45:01 -04:00
function display_page_row ( $page , $level = 0 ) {
2007-12-14 01:20:42 -05:00
global $post ;
2008-09-21 15:45:45 -04:00
static $rowclass ;
2008-02-05 01:47:27 -05:00
2007-12-14 01:20:42 -05:00
$post = $page ;
setup_postdata ( $page );
2009-04-16 20:07:22 -04: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 14:18:39 -04:00
2009-04-16 20:07:22 -04:00
if ( is_null ( $parent ) )
break ;
2009-04-20 14:18:39 -04:00
2009-04-16 20:07:22 -04:00
$level ++ ;
$find_main_page = ( int ) $parent -> post_parent ;
2009-04-20 14:18:39 -04:00
2009-04-16 20:07:22 -04:00
if ( ! isset ( $parent_name ) )
$parent_name = $parent -> post_title ;
}
}
2009-05-18 11:11:07 -04:00
$page -> post_title = esc_html ( $page -> post_title );
2007-12-14 01:20:42 -05:00
$pad = str_repeat ( '— ' , $level );
$id = ( int ) $page -> ID ;
2008-09-21 15:45:45 -04:00
$rowclass = 'alternate' == $rowclass ? '' : 'alternate' ;
2008-11-17 14:16:26 -05:00
$posts_columns = get_column_headers ( 'edit-pages' );
$hidden = get_hidden_columns ( 'edit-pages' );
2008-09-30 17:32:13 -04:00
$title = _draft_or_post_title ();
2007-05-25 03:16:21 -04:00
?>
2008-09-21 15:45:45 -04:00
< tr id = " page-<?php echo $id ; ?> " class = " <?php echo $rowclass ; ?> iedit " >
< ? php
2008-02-12 00:51:53 -05:00
foreach ( $posts_columns as $column_name => $column_display_name ) {
2008-09-11 01:36:34 -04: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 00:51:53 -05:00
switch ( $column_name ) {
case 'cb' :
?>
2008-09-10 18:47:03 -04:00
< th scope = " row " class = " check-column " >< input type = " checkbox " name = " post[] " value = " <?php the_ID(); ?> " /></ th >
2008-02-12 00:51:53 -05:00
< ? php
break ;
case 'date' :
2008-02-20 02:01:36 -05:00
if ( '0000-00-00 00:00:00' == $page -> post_date && 'date' == $column_name ) {
$t_time = $h_time = __ ( 'Unpublished' );
2009-01-20 18:07:21 -05:00
$time_diff = 0 ;
2008-02-12 00:51:53 -05:00
} else {
2008-10-09 02:40:30 -04: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-20 18:07:21 -05: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 02:01:36 -05:00
$h_time = mysql2date ( __ ( 'Y/m/d' ), $m_time );
2008-02-12 00:51:53 -05:00
}
2008-10-14 12:56:32 -04:00
echo '<td ' . $attributes . '>' ;
2008-11-03 01:31:06 -05:00
echo '<abbr title="' . $t_time . '">' . apply_filters ( 'post_date_column_time' , $h_time , $page , $column_name , '' ) . '</abbr>' ;
2008-10-14 12:56:32 -04:00
echo '<br />' ;
2009-01-20 18:07:21 -05:00
if ( 'publish' == $page -> post_status ) {
2008-10-14 12:56:32 -04:00
_e ( 'Published' );
2009-01-20 18:07:21 -05:00
} elseif ( 'future' == $page -> post_status ) {
if ( $time_diff > 0 )
echo '<strong class="attention">' . __ ( 'Missed schedule' ) . '</strong>' ;
else
_e ( 'Scheduled' );
} else {
2008-10-14 12:56:32 -04:00
_e ( 'Last Modified' );
2009-01-20 18:07:21 -05:00
}
2008-10-14 12:56:32 -04:00
echo '</td>' ;
2008-02-12 00:51:53 -05:00
break ;
case 'title' :
2008-09-11 01:36:34 -04:00
$attributes = 'class="post-title page-title column-title"' . $style ;
2008-08-21 01:52:03 -04:00
$edit_link = get_edit_post_link ( $page -> ID );
2008-02-12 00:51:53 -05:00
?>
2009-05-18 11:11:07 -04:00
< td < ? php echo $attributes ?> ><strong><?php if ( current_user_can( 'edit_post', $page->ID ) ) { ?><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) ? ' | ' . __('Parent Page: ') . esc_html($parent_name) : ''; ?></strong>
2008-08-20 17:52:47 -04:00
< ? php
$actions = array ();
2008-12-09 12:31:43 -05:00
if ( current_user_can ( 'edit_page' , $page -> ID ) ) {
2009-05-05 15:43:53 -04:00
$actions [ 'edit' ] = '<a href="' . $edit_link . '" title="' . esc_attr ( __ ( 'Edit this page' )) . '">' . __ ( 'Edit' ) . '</a>' ;
2008-12-09 12:31:43 -05:00
$actions [ 'inline' ] = '<a href="#" class="editinline">' . __ ( 'Quick Edit' ) . '</a>' ;
2009-05-09 03:27:22 -04:00
$actions [ 'delete' ] = " <a class='submitdelete' title=' " . esc_attr ( __ ( 'Delete this page' )) . " ' href=' " . wp_nonce_url ( " page.php?action=delete&post= $page->ID " , 'delete-page_' . $page -> ID ) . " ' onclick= \" if ( confirm(' " . esc_js ( sprintf ( ( 'draft' == $page -> post_status ) ? __ ( " You are about to delete this draft '%s' \n 'Cancel' to stop, 'OK' to delete. " ) : __ ( " You are about to delete this page '%s' \n 'Cancel' to stop, 'OK' to delete. " ), $page -> post_title )) . " ') ) { return true;}return false; \" > " . __ ( 'Delete' ) . " </a> " ;
2008-12-09 12:31:43 -05:00
}
if ( in_array ( $post -> post_status , array ( 'pending' , 'draft' )) ) {
if ( current_user_can ( 'edit_page' , $page -> ID ) )
2009-05-05 15:43:53 -04:00
$actions [ 'view' ] = '<a href="' . get_permalink ( $page -> ID ) . '" title="' . esc_attr ( sprintf ( __ ( 'Preview “%s”' ), $title )) . '" rel="permalink">' . __ ( 'Preview' ) . '</a>' ;
2008-12-09 12:31:43 -05:00
} else {
2009-05-05 15:43:53 -04:00
$actions [ 'view' ] = '<a href="' . get_permalink ( $page -> ID ) . '" title="' . esc_attr ( sprintf ( __ ( 'View “%s”' ), $title )) . '" rel="permalink">' . __ ( 'View' ) . '</a>' ;
2008-12-09 12:31:43 -05:00
}
2009-02-22 23:28:50 -05:00
$actions = apply_filters ( 'page_row_actions' , $actions , $page );
2008-08-20 17:52:47 -04:00
$action_count = count ( $actions );
2008-11-27 23:33:35 -05:00
2008-08-20 17:52:47 -04:00
$i = 0 ;
2008-11-27 23:33:35 -05:00
echo '<div class="row-actions">' ;
2008-08-20 17:52:47 -04:00
foreach ( $actions as $action => $link ) {
++ $i ;
( $i == $action_count ) ? $sep = '' : $sep = ' | ' ;
echo " <span class=' $action '> $link $sep </span> " ;
}
2008-11-27 23:33:35 -05:00
echo '</div>' ;
2008-10-05 00:43:52 -04:00
2008-09-21 15:45:45 -04:00
get_inline_data ( $post );
echo '</td>' ;
2008-02-12 00:51:53 -05:00
break ;
case 'comments' :
?>
2008-09-11 01:36:34 -04:00
< td < ? php echo $attributes ?> ><div class="post-com-count-wrapper">
2008-02-12 00:51:53 -05:00
< ? php
$left = get_pending_comments_num ( $page -> ID );
$pending_phrase = sprintf ( __ ( '%s pending' ), number_format ( $left ) );
if ( $left )
echo '<strong>' ;
2009-03-12 23:53:39 -04: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 00:51:53 -05:00
if ( $left )
echo '</strong>' ;
?>
2008-03-20 17:40:17 -04:00
</ div ></ td >
2008-02-12 00:51:53 -05:00
< ? php
break ;
case 'author' :
?>
2009-05-13 21:52:42 -04:00
< td < ? php echo $attributes ?> ><a href="edit-pages.php?author=<?php the_author_meta('ID'); ?>"><?php the_author() ?></a></td>
2008-02-12 00:51:53 -05:00
< ? php
break ;
default :
?>
2008-10-08 22:39:52 -04:00
< td < ? php echo $attributes ?> ><?php do_action('manage_pages_custom_column', $column_name, $id); ?></td>
2008-02-12 00:51:53 -05:00
< ? php
break ;
}
}
2008-09-21 15:45:45 -04:00
?>
2008-03-02 15:17:30 -05:00
2008-09-21 15:45:45 -04:00
</ tr >
2007-05-25 03:16:21 -04:00
< ? php
}
2007-12-14 01:20:42 -05:00
/*
2008-07-12 11:40:57 -04:00
* displays pages in hierarchical order with paging support
2007-12-14 01:20:42 -05:00
*/
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $pages
* @ param unknown_type $pagenum
* @ param unknown_type $per_page
* @ return unknown
*/
2008-06-14 20:45:01 -04:00
function page_rows ( $pages , $pagenum = 1 , $per_page = 20 ) {
2008-09-19 13:18:29 -04:00
global $wpdb ;
2008-06-14 20:45:01 -04:00
$level = 0 ;
if ( ! $pages ) {
2008-05-08 15:19:58 -04:00
$pages = get_pages ( array ( 'sort_column' => 'menu_order' ) );
2007-12-14 01:20:42 -05:00
2008-06-14 20:45:01 -04:00
if ( ! $pages )
return false ;
}
2007-12-14 01:20:42 -05:00
2008-08-09 01:36:14 -04:00
/*
2008-07-12 11:40:57 -04:00
* arrange pages into two parts : top level pages and children_pages
2008-08-09 01:36:14 -04:00
* children_pages is two dimensional array , eg .
* children_pages [ 10 ][] contains all sub - pages whose parent is 10.
2008-07-12 11:40:57 -04: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 15:45:45 -04:00
if ( empty ( $_GET [ 's' ]) ) {
2008-08-09 01:36:14 -04:00
2008-07-12 11:40:57 -04:00
$top_level_pages = array ();
2008-09-21 15:45:45 -04:00
$children_pages = array ();
2008-08-09 01:36:14 -04:00
2008-06-14 20:45:01 -04:00
foreach ( $pages as $page ) {
2008-08-09 01:36:14 -04:00
2008-06-14 20:45:01 -04:00
// catch and repair bad pages
if ( $page -> post_parent == $page -> ID ) {
$page -> post_parent = 0 ;
$wpdb -> query ( $wpdb -> prepare ( " UPDATE $wpdb->posts SET post_parent = '0' WHERE ID = %d " , $page -> ID ) );
clean_page_cache ( $page -> ID );
}
2008-08-09 01:36:14 -04:00
2008-06-14 20:45:01 -04:00
if ( 0 == $page -> post_parent )
$top_level_pages [] = $page ;
else
2008-07-12 11:40:57 -04:00
$children_pages [ $page -> post_parent ][] = $page ;
2008-06-14 20:45:01 -04:00
}
$pages = & $top_level_pages ;
}
$count = 0 ;
$start = ( $pagenum - 1 ) * $per_page ;
$end = $start + $per_page ;
2008-08-09 01:36:14 -04:00
2007-12-14 01:20:42 -05:00
foreach ( $pages as $page ) {
2008-06-14 20:45:01 -04:00
if ( $count >= $end )
break ;
2008-02-05 01:47:27 -05:00
2008-06-14 20:45:01 -04:00
if ( $count >= $start )
echo " \t " . display_page_row ( $page , $level );
$count ++ ;
2008-02-05 01:47:27 -05:00
2008-06-14 20:45:01 -04:00
if ( isset ( $children_pages ) )
_page_rows ( $children_pages , $count , $page -> ID , $level + 1 , $pagenum , $per_page );
2007-12-14 01:20:42 -05:00
}
2008-08-09 01:36:14 -04:00
2008-07-12 11:40:57 -04: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-14 20:45:01 -04:00
}
2008-07-12 11:40:57 -04:00
/*
* Given a top level page ID , display the nested hierarchy of sub - pages
* together with paging support
*/
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ 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 11:40:57 -04:00
function _page_rows ( & $children_pages , & $count , $parent , $level , $pagenum , $per_page ) {
2008-08-09 01:36:14 -04:00
2008-07-12 11:40:57 -04:00
if ( ! isset ( $children_pages [ $parent ] ) )
2008-08-09 01:36:14 -04:00
return ;
2008-06-14 20:45:01 -04:00
$start = ( $pagenum - 1 ) * $per_page ;
$end = $start + $per_page ;
2008-08-09 01:36:14 -04:00
2008-07-12 11:40:57 -04:00
foreach ( $children_pages [ $parent ] as $page ) {
2008-08-09 01:36:14 -04:00
2008-06-14 20:45:01 -04:00
if ( $count >= $end )
break ;
2008-08-09 01:36:14 -04:00
2008-06-14 20:45:01 -04: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 01:47:27 -05:00
}
2008-06-14 20:45:01 -04:00
if ( $count >= $start )
echo " \t " . display_page_row ( $page , $level );
2008-08-09 01:36:14 -04:00
2008-06-14 20:45:01 -04:00
$count ++ ;
2008-07-12 11:40:57 -04:00
_page_rows ( $children_pages , $count , $page -> ID , $level + 1 , $pagenum , $per_page );
2008-06-14 20:45:01 -04:00
}
2008-08-09 01:36:14 -04:00
2008-07-12 11:40:57 -04:00
unset ( $children_pages [ $parent ] ); //required in order to keep track of orphans
2007-12-14 01:20:42 -05:00
}
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $user_object
* @ param unknown_type $style
* @ param unknown_type $role
* @ return unknown
*/
2008-01-07 15:38:49 -05:00
function user_row ( $user_object , $style = '' , $role = '' ) {
2008-02-16 16:44:50 -05:00
global $wp_roles ;
2008-03-15 16:27:16 -04:00
$current_user = wp_get_current_user ();
2008-08-09 01:36:14 -04:00
2007-12-14 01:20:42 -05:00
if ( ! ( is_object ( $user_object ) && is_a ( $user_object , 'WP_User' ) ) )
2007-05-25 03:16:21 -04:00
$user_object = new WP_User ( ( int ) $user_object );
$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 15:45:45 -04:00
$short_url = substr ( $short_url , 0 , 32 ) . '...' ;
2007-05-25 03:16:21 -04:00
$numposts = get_usernumposts ( $user_object -> ID );
2008-12-30 14:38:44 -05:00
$checkbox = '' ;
2009-02-01 04:45:24 -05:00
// Check if the user for this row is editable
2008-02-14 15:15:36 -05:00
if ( current_user_can ( 'edit_user' , $user_object -> ID ) ) {
2009-02-01 04:45:24 -05:00
// Set up the user editing link
2008-12-30 14:38:44 -05:00
// TODO: make profile/user-edit determination a seperate function
2008-03-15 16:27:16 -04:00
if ( $current_user -> ID == $user_object -> ID ) {
2008-09-17 00:39:08 -04:00
$edit_link = 'profile.php' ;
2008-03-15 16:27:16 -04:00
} else {
2009-05-18 12:00:33 -04: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 00:39:08 -04:00
}
$edit = " <strong><a href= \" $edit_link\ " > $user_object -> user_login </ a ></ strong >< br /> " ;
2009-02-01 04:45:24 -05:00
2008-12-30 14:38:44 -05:00
// Set up the hover actions for this user
2008-09-17 00:39:08 -04:00
$actions = array ();
$actions [ 'edit' ] = '<a href="' . $edit_link . '">' . __ ( 'Edit' ) . '</a>' ;
2008-11-28 17:03:52 -05:00
if ( $current_user -> ID != $user_object -> ID )
$actions [ 'delete' ] = " <a class='submitdelete' href=' " . wp_nonce_url ( " users.php?action=delete&user= $user_object->ID " , 'bulk-users' ) . " '> " . __ ( 'Delete' ) . " </a> " ;
2009-02-22 23:28:50 -05:00
$actions = apply_filters ( 'user_row_actions' , $actions , $user_object );
2008-09-17 00:39:08 -04:00
$action_count = count ( $actions );
$i = 0 ;
2008-11-27 23:33:35 -05:00
$edit .= '<div class="row-actions">' ;
2008-09-17 00:39:08 -04:00
foreach ( $actions as $action => $link ) {
++ $i ;
( $i == $action_count ) ? $sep = '' : $sep = ' | ' ;
$edit .= " <span class=' $action '> $link $sep </span> " ;
2008-03-15 16:27:16 -04:00
}
2008-11-27 23:33:35 -05:00
$edit .= '</div>' ;
2009-02-01 04:45:24 -05:00
2008-12-30 14:38:44 -05: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 04:45:24 -05:00
2008-02-14 15:15:36 -05:00
} else {
2008-09-17 00:39:08 -04:00
$edit = '<strong>' . $user_object -> user_login . '</strong>' ;
2008-02-14 15:15:36 -05:00
}
2009-03-10 19:02:29 -04:00
$role_name = isset ( $wp_roles -> role_names [ $role ]) ? translate_user_role ( $wp_roles -> role_names [ $role ] ) : __ ( 'None' );
2008-09-19 01:31:00 -04:00
$r = " <tr id='user- $user_object->ID ' $style > " ;
2008-11-17 14:16:26 -05:00
$columns = get_column_headers ( 'users' );
$hidden = get_hidden_columns ( 'users' );
2009-01-26 17:03:40 -05:00
$avatar = get_avatar ( $user_object -> ID , 32 );
2008-09-19 01:31:00 -04: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 14:38:44 -05:00
$r .= " <th scope='row' class='check-column'> $checkbox </th> " ;
2008-09-19 01:31:00 -04:00
break ;
case 'username' :
2008-11-01 07:19:13 -04:00
$r .= " <td $attributes > $avatar $edit </td> " ;
2008-09-19 01:31:00 -04:00
break ;
case 'name' :
$r .= " <td $attributes > $user_object->first_name $user_object->last_name </td> " ;
break ;
case 'email' :
$r .= " <td $attributes ><a href='mailto: $email ' title=' " . sprintf ( __ ( 'e-mail: %s' ), $email ) . " '> $email </a></td> " ;
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-03 23:21:35 -05:00
break ;
default :
$r .= " <td $attributes > " ;
2009-02-04 07:31:47 -05:00
$r .= apply_filters ( 'manage_users_custom_column' , '' , $column_name , $user_object -> ID );
2009-01-03 23:21:35 -05:00
$r .= " </td> " ;
2008-09-19 01:31:00 -04:00
}
2007-05-25 03:16:21 -04:00
}
2008-09-19 01:31:00 -04:00
$r .= '</tr>' ;
2007-05-25 03:16:21 -04:00
return $r ;
}
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $status
* @ param unknown_type $s
* @ param unknown_type $start
* @ param unknown_type $num
* @ param unknown_type $post
* @ param unknown_type $type
* @ return unknown
*/
2008-10-01 11:48:45 -04:00
function _wp_get_comment_list ( $status = '' , $s = false , $start , $num , $post = 0 , $type = '' ) {
2007-05-25 03:16:21 -04:00
global $wpdb ;
2007-08-01 15:41:44 -04:00
$start = abs ( ( int ) $start );
2007-05-25 03:16:21 -04:00
$num = ( int ) $num ;
2008-09-28 13:48:55 -04:00
$post = ( int ) $post ;
2009-01-23 17:26:40 -05:00
$count = wp_count_comments ();
2009-01-26 17:34:50 -05:00
$index = '' ;
2009-02-01 04:45:24 -05:00
2009-01-23 17:26:40 -05:00
if ( 'moderated' == $status ) {
2008-02-23 03:01:51 -05:00
$approved = " comment_approved = '0' " ;
2009-01-23 17:26:40 -05:00
$total = $count -> moderated ;
} elseif ( 'approved' == $status ) {
2008-02-23 03:01:51 -05:00
$approved = " comment_approved = '1' " ;
2009-01-23 17:26:40 -05:00
$total = $count -> approved ;
} elseif ( 'spam' == $status ) {
2008-02-23 03:01:51 -05:00
$approved = " comment_approved = 'spam' " ;
2009-01-23 17:26:40 -05:00
$total = $count -> spam ;
} else {
2008-04-22 21:25:01 -04:00
$approved = " ( comment_approved = '0' OR comment_approved = '1' ) " ;
2009-01-23 17:26:40 -05:00
$total = $count -> moderated + $count -> approved ;
2009-01-26 17:34:50 -05:00
$index = 'USE INDEX (comment_date_gmt)' ;
2009-01-23 17:26:40 -05:00
}
2008-03-02 15:17:30 -05:00
2008-12-05 22:59:03 -05:00
if ( $post ) {
2009-01-23 17:26:40 -05:00
$total = '' ;
2008-09-28 13:48:55 -04:00
$post = " AND comment_post_ID = ' $post ' " ;
2008-12-05 22:59:03 -05:00
$orderby = " ORDER BY comment_date_gmt ASC LIMIT $start , $num " ;
} else {
2008-09-28 13:48:55 -04:00
$post = '' ;
2008-12-05 22:59:03 -05:00
$orderby = " ORDER BY comment_date_gmt DESC LIMIT $start , $num " ;
}
2008-09-28 13:48:55 -04:00
2008-10-01 11:48:45 -04:00
if ( 'comment' == $type )
$typesql = " AND comment_type = '' " ;
elseif ( 'pingback' == $type )
$typesql = " AND comment_type = 'pingback' " ;
elseif ( 'trackback' == $type )
$typesql = " AND comment_type = 'trackback' " ;
2008-10-18 20:38:29 -04:00
elseif ( 'pings' == $type )
$typesql = " AND ( comment_type = 'pingback' OR comment_type = 'trackback' ) " ;
2008-10-01 11:48:45 -04:00
else
$typesql = '' ;
2009-01-23 17:26:40 -05:00
if ( ! empty ( $type ) )
$total = '' ;
2007-05-25 03:16:21 -04:00
if ( $s ) {
2009-01-23 17:26:40 -05:00
$total = '' ;
2007-05-25 03:16:21 -04:00
$s = $wpdb -> escape ( $s );
2009-01-23 17:26:40 -05:00
$query = " FROM $wpdb->comments WHERE
2007-05-25 03:16:21 -04:00
( comment_author LIKE '%$s%' OR
comment_author_email LIKE '%$s%' OR
comment_author_url LIKE ( '%$s%' ) OR
comment_author_IP LIKE ( '%$s%' ) OR
comment_content LIKE ( '%$s%' ) ) AND
2008-02-23 03:01:51 -05:00
$approved
2009-01-23 17:40:37 -05:00
$typesql " ;
2007-05-25 03:16:21 -04:00
} else {
2009-01-26 17:34:50 -05:00
$query = " FROM $wpdb->comments $index WHERE $approved $post $typesql " ;
2007-05-25 03:16:21 -04:00
}
2009-01-23 17:40:37 -05:00
$comments = $wpdb -> get_results ( " SELECT * $query $orderby " );
2009-01-23 17:26:40 -05:00
if ( '' === $total )
$total = $wpdb -> get_var ( " SELECT COUNT(comment_ID) $query " );
2007-06-07 20:20:22 -04:00
2009-01-23 17:26:40 -05:00
update_comment_cache ( $comments );
2007-05-25 03:16:21 -04:00
return array ( $comments , $total );
}
2008-10-01 21:03:26 -04: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-24 21:41:54 -05:00
function _wp_comment_row ( $comment_id , $mode , $comment_status , $checkbox = true , $from_ajax = false ) {
2008-12-07 02:10:47 -05:00
global $comment , $post , $_comment_pending_count ;
2008-02-28 01:50:25 -05:00
$comment = get_comment ( $comment_id );
2007-06-07 20:20:22 -04:00
$post = get_post ( $comment -> comment_post_ID );
2008-02-28 01:50:25 -05:00
$the_comment_status = wp_get_comment_status ( $comment -> comment_ID );
2009-04-16 20:48:41 -04:00
$user_can = current_user_can ( 'edit_post' , $post -> ID );
2008-03-15 18:09:23 -04:00
2008-02-28 01:50:25 -05:00
$author_url = get_comment_author_url ();
if ( 'http://' == $author_url )
$author_url = '' ;
$author_url_display = $author_url ;
2008-11-27 12:46:53 -05:00
$author_url_display = str_replace ( 'http://www.' , '' , $author_url_display );
$author_url_display = str_replace ( 'http://' , '' , $author_url_display );
2008-02-28 01:50:25 -05:00
if ( strlen ( $author_url_display ) > 50 )
$author_url_display = substr ( $author_url_display , 0 , 49 ) . '...' ;
2008-03-15 18:09:23 -04:00
2008-03-11 03:28:47 -04:00
$ptime = date ( 'G' , strtotime ( $comment -> comment_date ) );
2008-02-28 01:50:25 -05:00
if ( ( abs ( time () - $ptime ) ) < 86400 )
$ptime = sprintf ( __ ( '%s ago' ), human_time_diff ( $ptime ) );
else
2008-03-11 03:28:47 -04:00
$ptime = mysql2date ( __ ( 'Y/m/d \a\t g:i A' ), $comment -> comment_date );
2007-05-25 03:16:21 -04:00
2009-05-18 12:00:33 -04:00
$delete_url = esc_url ( wp_nonce_url ( " comment.php?action=deletecomment&p= $post->ID &c= $comment->comment_ID " , " delete-comment_ $comment->comment_ID " ) );
$approve_url = esc_url ( wp_nonce_url ( " comment.php?action=approvecomment&p= $post->ID &c= $comment->comment_ID " , " approve-comment_ $comment->comment_ID " ) );
$unapprove_url = esc_url ( wp_nonce_url ( " comment.php?action=unapprovecomment&p= $post->ID &c= $comment->comment_ID " , " unapprove-comment_ $comment->comment_ID " ) );
$spam_url = esc_url ( wp_nonce_url ( " comment.php?action=deletecomment&dt=spam&p= $post->ID &c= $comment->comment_ID " , " delete-comment_ $comment->comment_ID " ) );
2008-03-02 15:17:30 -05:00
2008-10-30 11:50:21 -04:00
echo " <tr id='comment- $comment->comment_ID ' class=' $the_comment_status '> " ;
2008-11-17 14:16:26 -05:00
$columns = get_column_headers ( 'edit-comments' );
$hidden = get_hidden_columns ( 'edit-comments' );
2008-10-30 11:50:21 -04:00
foreach ( $columns as $column_name => $column_display_name ) {
$class = " class= \" $column_name column- $column_name\ " " ;
2008-08-20 00:06:36 -04:00
2008-10-30 11:50:21 -04:00
$style = '' ;
if ( in_array ( $column_name , $hidden ) )
$style = ' style="display:none;"' ;
2008-09-25 21:05:52 -04:00
2008-10-30 11:50:21 -04:00
$attributes = " $class $style " ;
2008-09-25 21:05:52 -04:00
2008-10-30 11:50:21 -04:00
switch ( $column_name ) {
case 'cb' :
if ( ! $checkbox ) break ;
echo '<th scope="row" class="check-column">' ;
2009-04-16 20:48:41 -04:00
if ( $user_can ) echo " <input type='checkbox' name='delete_comments[]' value=' $comment->comment_ID ' /> " ;
2008-10-30 11:50:21 -04:00
echo '</th>' ;
break ;
case 'comment' :
echo " <td $attributes > " ;
2008-11-25 16:11:05 -05:00
echo '<div id="submitted-on">' ;
2008-11-25 16:51:28 -05:00
printf ( __ ( 'Submitted on <a href="%1$s">%2$s at %3$s</a>' ), get_comment_link ( $comment -> comment_ID ), get_comment_date ( __ ( 'Y/m/d' )), get_comment_date ( __ ( 'g:ia' )));
2008-11-25 16:11:05 -05:00
echo '</div>' ;
comment_text (); ?>
2008-10-30 11:50:21 -04:00
< div id = " inline-<?php echo $comment->comment_ID ; ?> " class = " hidden " >
< textarea class = " comment " rows = " 3 " cols = " 10 " >< ? php echo $comment -> comment_content ; ?> </textarea>
2009-05-05 15:43:53 -04:00
< div class = " author-email " >< ? php if ( $user_can ) echo esc_attr ( $comment -> comment_author_email ); ?> </div>
< div class = " author " >< ? php if ( $user_can ) echo esc_attr ( $comment -> comment_author ); ?> </div>
< div class = " author-url " >< ? php echo esc_attr ( $comment -> comment_author_url ); ?> </div>
2008-10-30 11:50:21 -04:00
< div class = " comment_status " >< ? php echo $comment -> comment_approved ; ?> </div>
</ div >
< ? php
$actions = array ();
2009-04-16 20:48:41 -04:00
if ( $user_can ) {
2008-10-30 11:50:21 -04:00
$actions [ 'approve' ] = " <a href=' $approve_url ' class='dim:the-comment-list:comment- $comment->comment_ID :unapproved:e7e7d3:e7e7d3:new=approved vim-a' title=' " . __ ( '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=' " . __ ( 'Unapprove this comment' ) . " '> " . __ ( 'Unapprove' ) . '</a>' ;
2009-04-23 22:25:20 -04:00
if ( $comment_status && 'all' != $comment_status ) { // not looking at all comments
2008-10-30 11:50:21 -04:00
if ( 'approved' == $the_comment_status ) {
2008-12-05 00:10:38 -05: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=' " . __ ( 'Unapprove this comment' ) . " '> " . __ ( 'Unapprove' ) . '</a>' ;
2008-10-30 11:50:21 -04:00
unset ( $actions [ 'approve' ]);
} else {
2008-12-05 00:10:38 -05: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=' " . __ ( 'Approve this comment' ) . " '> " . __ ( 'Approve' ) . '</a>' ;
2008-10-30 11:50:21 -04:00
unset ( $actions [ 'unapprove' ]);
}
}
if ( 'spam' != $the_comment_status )
2009-03-02 14:20:19 -05:00
$actions [ 'spam' ] = " <a href=' $spam_url ' class='delete:the-comment-list:comment- $comment->comment_ID ::spam=1 vim-s vim-destructive' title=' " . __ ( 'Mark this comment as spam' ) . " '> " . /* translators: mark as spam link */ _x ( 'Spam' , 'verb' ) . '</a>' ;
2008-10-30 11:50:21 -04:00
$actions [ 'delete' ] = " <a href=' $delete_url ' class='delete:the-comment-list:comment- $comment->comment_ID delete vim-d vim-destructive'> " . __ ( 'Delete' ) . '</a>' ;
$actions [ 'edit' ] = " <a href='comment.php?action=editcomment&c= { $comment -> comment_ID } ' title=' " . __ ( 'Edit comment' ) . " '> " . __ ( 'Edit' ) . '</a>' ;
$actions [ 'quickedit' ] = '<a onclick="commentReply.open(\'' . $comment -> comment_ID . '\',\'' . $post -> ID . '\',\'edit\');return false;" class="vim-q" title="' . __ ( 'Quick Edit' ) . '" href="#">' . __ ( 'Quick Edit' ) . '</a>' ;
if ( 'spam' != $the_comment_status )
$actions [ 'reply' ] = '<a onclick="commentReply.open(\'' . $comment -> comment_ID . '\',\'' . $post -> ID . '\');return false;" class="vim-r" title="' . __ ( 'Reply to this comment' ) . '" href="#">' . __ ( 'Reply' ) . '</a>' ;
2008-10-07 21:18:16 -04:00
2008-10-30 11:50:21 -04:00
$actions = apply_filters ( 'comment_row_actions' , $actions , $comment );
$i = 0 ;
2008-11-27 23:33:35 -05:00
echo '<div class="row-actions">' ;
2008-10-30 11:50:21 -04:00
foreach ( $actions as $action => $link ) {
++ $i ;
( ( ( 'approve' == $action || 'unapprove' == $action ) && 2 === $i ) || 1 === $i ) ? $sep = '' : $sep = ' | ' ;
2008-10-07 21:18:16 -04:00
2008-11-24 21:41:54 -05: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 11:50:21 -04:00
$action .= ' hide-if-no-js' ;
2008-09-25 21:05:52 -04:00
2008-10-30 11:50:21 -04:00
echo " <span class=' $action '> $sep $link </span> " ;
}
2008-11-27 23:33:35 -05:00
echo '</div>' ;
2008-10-30 11:50:21 -04:00
}
echo '</td>' ;
break ;
case 'author' :
echo " <td $attributes ><strong> " ; comment_author (); echo '</strong><br />' ;
if ( ! empty ( $author_url ) )
2008-11-17 13:01:00 -05:00
echo " <a title=' $author_url ' href=' $author_url '> $author_url_display </a><br /> " ;
2009-04-16 20:48:41 -04:00
if ( $user_can ) {
2008-10-30 11:50:21 -04: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 07:31:41 -05:00
echo '&mode=detail' ;
if ( 'spam' == $comment_status )
echo '&comment_status=spam' ;
echo '">' ;
2008-10-30 11:50:21 -04: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 02:10:47 -05:00
if ( isset ( $_comment_pending_count [ $post -> ID ] ) ) {
$pending_comments = absint ( $_comment_pending_count [ $post -> ID ] );
} else {
$_comment_pending_count_temp = ( array ) get_pending_comments_num ( array ( $post -> ID ) );
$pending_comments = $_comment_pending_count [ $post -> ID ] = $_comment_pending_count_temp [ $post -> ID ];
}
2009-04-16 20:48:41 -04:00
if ( $user_can ) {
2008-12-07 02:10:47 -05: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 11:50:21 -04:00
echo " <td $attributes > \n " ;
2008-12-07 20:39:23 -05:00
echo '<div class="response-links"><span class="post-com-count-wrapper">' ;
2009-04-21 01:01:04 -04:00
echo $post_link . '<br />' ;
2008-12-07 02:10:47 -05:00
$pending_phrase = sprintf ( __ ( '%s pending' ), number_format ( $pending_comments ) );
if ( $pending_comments )
echo '<strong>' ;
2009-03-12 23:53:39 -04: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 02:10:47 -05:00
if ( $pending_comments )
echo '</strong>' ;
echo '</span> ' ;
echo " <a href=' " . get_permalink ( $post -> ID ) . " '>#</a> " ;
2009-04-21 01:01:04 -04: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 11:50:21 -04:00
}
2009-04-19 16:18:27 -04: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 11:50:21 -04:00
}
2008-02-28 01:50:25 -05:00
}
2008-10-30 11:50:21 -04:00
echo " </tr> \n " ;
2007-05-25 03:16:21 -04:00
}
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $position
* @ param unknown_type $checkbox
* @ param unknown_type $mode
*/
2008-10-30 11:50:21 -04:00
function wp_comment_reply ( $position = '1' , $checkbox = false , $mode = 'single' , $table_row = true ) {
2008-08-24 02:56:22 -04:00
global $current_user ;
// allow plugin to replace the popup content
2008-10-07 21:18:16 -04:00
$content = apply_filters ( 'wp_comment_reply' , '' , array ( 'position' => $position , 'checkbox' => $checkbox , 'mode' => $mode ) );
2008-09-21 15:45:45 -04:00
2008-08-24 02:56:22 -04:00
if ( ! empty ( $content ) ) {
echo $content ;
return ;
}
2008-12-06 18:42:22 -05: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 02:56:22 -04:00
?>
2008-10-08 19:32:34 -04:00
< form method = " get " action = " " >
< ? php if ( $table_row ) : ?>
2008-12-06 18:42:22 -05:00
< table style = " display:none; " >< tbody id = " com-reply " >< tr id = " replyrow " >< td colspan = " <?php echo $col_count ; ?> " >
2008-10-08 19:32:34 -04:00
< ? php else : ?>
2008-10-30 11:50:21 -04:00
< div id = " com-reply " style = " display:none; " >< div id = " replyrow " >
2008-10-08 19:32:34 -04:00
< ? php endif ; ?>
2008-10-07 21:18:16 -04: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 02:56:22 -04:00
</ div >
2008-09-21 15:45:45 -04:00
2008-10-07 21:18:16 -04:00
< div id = " replycontainer " >< textarea rows = " 8 " cols = " 40 " name = " replycontent " tabindex = " 104 " id = " replycontent " ></ textarea ></ div >
2008-11-10 21:58:24 -05: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 04:07:36 -05:00
< span id = " savebtn " style = " display:none; " >< ? php _e ( 'Update Comment' ); ?> </span>
2008-10-07 21:18:16 -04:00
< span id = " replybtn " style = " display:none; " >< ? php _e ( 'Submit Reply' ); ?> </span></a>
2009-05-05 14:57:43 -04:00
< img class = " waiting " style = " display:none; " src = " images/wpspin_light.gif " alt = " " />
2008-10-07 21:18:16 -04:00
< span class = " error " style = " display:none; " ></ span >
2008-11-10 21:58:24 -05:00
< br class = " clear " />
2008-10-07 21:18:16 -04:00
</ p >
2008-08-24 02:56:22 -04:00
< input type = " hidden " name = " user_ID " id = " user_ID " value = " <?php echo $current_user->ID ; ?> " />
2008-10-07 21:18:16 -04:00
< input type = " hidden " name = " action " id = " action " value = " " />
2008-08-24 02:56:22 -04: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-07 21:18:16 -04:00
< input type = " hidden " name = " status " id = " status " value = " " />
2008-08-24 02:56:22 -04: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 15:43:53 -04:00
< input type = " hidden " name = " mode " id = " mode " value = " <?php echo esc_attr( $mode ); ?> " />
2008-08-24 02:56:22 -04:00
< ? php wp_nonce_field ( 'replyto-comment' , '_ajax_nonce' , false ); ?>
< ? php wp_comment_form_unfiltered_html_nonce (); ?>
2008-10-08 19:32:34 -04:00
< ? php if ( $table_row ) : ?>
2008-10-10 19:54:27 -04:00
</ td ></ tr ></ tbody ></ table >
2008-10-08 19:32:34 -04:00
< ? php else : ?>
2008-10-30 11:50:21 -04:00
</ div ></ div >
2008-10-08 19:32:34 -04:00
< ? php endif ; ?>
2008-10-10 19:54:27 -04:00
</ form >
2008-08-24 02:56:22 -04:00
< ? php
}
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $currentcat
* @ param unknown_type $currentparent
* @ param unknown_type $parent
* @ param unknown_type $level
* @ param unknown_type $categories
* @ return unknown
*/
2007-05-25 03:16:21 -04:00
function wp_dropdown_cats ( $currentcat = 0 , $currentparent = 0 , $parent = 0 , $level = 0 , $categories = 0 ) {
if ( ! $categories )
2008-05-08 15:19:58 -04:00
$categories = get_categories ( array ( 'hide_empty' => 0 ) );
2007-05-25 03:16:21 -04:00
if ( $categories ) {
foreach ( $categories as $category ) {
if ( $currentcat != $category -> term_id && $parent == $category -> parent ) {
$pad = str_repeat ( '– ' , $level );
2009-05-18 11:11:07 -04:00
$category -> name = esc_html ( $category -> name );
2007-05-25 03:16:21 -04:00
echo " \n \t <option value=' $category->term_id ' " ;
if ( $currentparent == $category -> term_id )
echo " selected='selected' " ;
echo " > $pad $category->name </option> " ;
wp_dropdown_cats ( $currentcat , $currentparent , $category -> term_id , $level + 1 , $categories );
}
}
} else {
return false ;
}
}
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $meta
*/
2007-05-25 03:16:21 -04:00
function list_meta ( $meta ) {
// Exit if no meta
2008-11-07 21:15:53 -05: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 03:16:21 -04:00
return ;
}
$count = 0 ;
?>
2008-11-07 21:15:53 -05:00
< table id = " list-table " >
2007-05-25 03:16:21 -04:00
< thead >
< tr >
2008-11-07 21:15:53 -05:00
< th class = " left " >< ? php _e ( 'Name' ) ?> </th>
2007-05-25 03:16:21 -04:00
< th >< ? php _e ( 'Value' ) ?> </th>
</ tr >
</ thead >
2007-10-09 18:49:42 -04:00
< tbody id = 'the-list' class = 'list:meta' >
2007-05-25 03:16:21 -04:00
< ? php
2007-10-09 18:49:42 -04:00
foreach ( $meta as $entry )
echo _list_meta_row ( $entry , $count );
2008-11-07 21:15:53 -05:00
?>
</ tbody >
</ table >
< ? php
2007-10-09 18:49:42 -04:00
}
2007-05-25 03:16:21 -04:00
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $entry
* @ param unknown_type $count
* @ return unknown
*/
2007-10-09 18:49:42 -04:00
function _list_meta_row ( $entry , & $count ) {
2008-03-22 04:15:48 -04:00
static $update_nonce = false ;
if ( ! $update_nonce )
$update_nonce = wp_create_nonce ( 'add-meta' );
2007-10-09 18:49:42 -04: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 03:16:21 -04:00
}
2007-10-09 18:49:42 -04:00
2009-05-05 15:43:53 -04:00
$entry [ 'meta_key' ] = esc_attr ( $entry [ 'meta_key' ]);
2008-03-24 18:06:17 -04:00
$entry [ 'meta_value' ] = htmlspecialchars ( $entry [ 'meta_value' ]); // using a <textarea />
2007-10-09 18:49:42 -04:00
$entry [ 'meta_id' ] = ( int ) $entry [ 'meta_id' ];
2008-03-22 04:15:48 -04:00
$delete_nonce = wp_create_nonce ( 'delete-meta_' . $entry [ 'meta_id' ] );
2007-10-09 18:49:42 -04:00
$r .= " \n \t <tr id='meta- { $entry [ 'meta_id' ] } ' class=' $style '> " ;
2009-05-12 18:40:56 -04: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-07 21:15:53 -05:00
$r .= " \n \t \t <div class='submit'><input name='deletemeta[ { $entry [ 'meta_id' ] } ]' type='submit' " ;
2009-05-05 15:43:53 -04:00
$r .= " class='delete:the-list:meta- { $entry [ 'meta_id' ] } ::_ajax_nonce= $delete_nonce deletemeta' tabindex='6' value=' " . esc_attr__ ( 'Delete' ) . " ' /> " ;
$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= $update_nonce updatemeta' /></div> " ;
2008-03-22 04:15:48 -04:00
$r .= wp_nonce_field ( 'change-meta' , '_ajax_nonce' , false , false );
2008-11-07 21:15:53 -05:00
$r .= " </td> " ;
2008-12-09 13:03:31 -05:00
2009-05-12 18:40:56 -04: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-09 18:49:42 -04:00
return $r ;
2007-05-25 03:16:21 -04:00
}
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*/
2007-05-25 03:16:21 -04: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 01:40:03 -04:00
HAVING meta_key NOT LIKE '\_%'
ORDER BY LOWER ( meta_key )
2007-05-25 03:16:21 -04:00
LIMIT $limit " );
2009-05-05 01:40:03 -04:00
if ( $keys )
2007-05-25 03:16:21 -04:00
natcasesort ( $keys );
?>
2008-11-30 19:29:14 -05:00
< p >< strong >< ? php _e ( 'Add new custom field:' ) ?> </strong></p>
2008-11-07 21:15:53 -05:00
< table id = " newmeta " >
< thead >
< tr >
< th class = " left " >< label for = " metakeyselect " >< ? php _e ( 'Name' ) ?> </label></th>
2008-05-04 06:37:06 -04:00
< th >< label for = " metavalue " >< ? php _e ( 'Value' ) ?> </label></th>
2007-05-25 03:16:21 -04:00
</ tr >
2008-11-07 21:15:53 -05:00
</ thead >
< tbody >
< tr >
< td id = " newmetaleft " class = " left " >
2008-11-30 19:29:14 -05:00
< ? php if ( $keys ) { ?>
2007-05-25 03:16:21 -04:00
< select id = " metakeyselect " name = " metakeyselect " tabindex = " 7 " >
< option value = " #NONE# " >< ? php _e ( '- Select -' ); ?> </option>
< ? php
foreach ( $keys as $key ) {
2009-05-05 15:43:53 -04:00
$key = esc_attr ( $key );
echo " \n <option value=' " . esc_attr ( $key ) . " '> $key </option> " ;
2007-05-25 03:16:21 -04:00
}
?>
2008-11-07 21:15:53 -05:00
</ select >
< input class = " hide-if-js " type = " text " id = " metakeyinput " name = " metakeyinput " tabindex = " 7 " value = " " />
< a href = " #postcustomstuff " class = " hide-if-no-js " onclick = " jQuery('#metakeyinput, #metakeyselect, #enternew, #cancelnew').toggle();return false; " >
< span id = " enternew " >< ? php _e ( 'Enter new' ); ?> </span>
2008-11-30 19:29:14 -05: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 03:16:21 -04:00
</ td >
2008-11-07 21:15:53 -05: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 15:43:53 -04:00
< input type = " submit " id = " addmetasub " name = " addmeta " class = " add:the-list:newmeta " tabindex = " 9 " value = " <?php esc_attr_e( 'Add Custom Field' ) ?> " />
2008-12-09 13:03:31 -05:00
< ? php wp_nonce_field ( 'add-meta' , '_ajax_nonce' , false ); ?>
2007-10-09 18:49:42 -04:00
</ td ></ tr >
2008-11-07 21:15:53 -05:00
</ tbody >
2007-05-25 03:16:21 -04:00
</ table >
< ? php
}
2008-10-01 21:03:26 -04: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-10 18:47:03 -04:00
function touch_time ( $edit = 1 , $for_post = 1 , $tab_index = 0 , $multi = 0 ) {
2007-05-25 03:16:21 -04:00
global $wp_locale , $post , $comment ;
if ( $for_post )
2009-01-28 14:37:36 -05:00
$edit = ( in_array ( $post -> post_status , array ( 'draft' , 'pending' ) ) && ( ! $post -> post_date_gmt || '0000-00-00 00:00:00' == $post -> post_date_gmt ) ) ? false : true ;
2008-02-05 01:47:27 -05:00
2007-09-11 15:08:26 -04:00
$tab_index_attribute = '' ;
if ( ( int ) $tab_index > 0 )
$tab_index_attribute = " tabindex= \" $tab_index\ " " ;
2007-06-13 22:25:30 -04:00
2008-03-16 19:05:16 -04: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 03:16:21 -04:00
$time_adj = time () + ( get_option ( 'gmt_offset' ) * 3600 );
$post_date = ( $for_post ) ? $post -> post_date : $comment -> comment_date ;
2009-05-13 22:00:32 -04: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 03:16:21 -04:00
2008-10-29 15:22:56 -04: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-10 18:47:03 -04:00
$month = " <select " . ( $multi ? '' : 'id="mm" ' ) . " name= \" mm \" $tab_index_attribute > \n " ;
2007-07-17 15:26:03 -04:00
for ( $i = 1 ; $i < 13 ; $i = $i + 1 ) {
2008-03-16 19:05:16 -04:00
$month .= " \t \t \t " . '<option value="' . zeroise ( $i , 2 ) . '"' ;
2007-07-17 15:26:03 -04:00
if ( $i == $mm )
2008-02-22 18:13:02 -05:00
$month .= ' selected="selected"' ;
2008-10-29 04:19:15 -04:00
$month .= '>' . $wp_locale -> get_month_abbrev ( $wp_locale -> get_month ( $i ) ) . " </option> \n " ;
2007-07-17 15:26:03 -04:00
}
2008-02-22 18:13:02 -05:00
$month .= '</select>' ;
2008-09-21 15:45:45 -04:00
$day = '<input type="text" ' . ( $multi ? '' : 'id="jj" ' ) . 'name="jj" value="' . $jj . '" size="2" maxlength="2"' . $tab_index_attribute . ' autocomplete="off" />' ;
2009-03-05 15:15:10 -05:00
$year = '<input type="text" ' . ( $multi ? '' : 'id="aa" ' ) . 'name="aa" value="' . $aa . '" size="4" maxlength="4"' . $tab_index_attribute . ' autocomplete="off" />' ;
2008-09-21 15:45:45 -04: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-03-02 14:20:19 -05: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-10 18:47:03 -04:00
2008-11-15 07:04:38 -05:00
echo '<input type="hidden" id="ss" name="ss" value="' . $ss . '" />' ;
2008-09-10 18:47:03 -04:00
if ( $multi ) return ;
2008-09-21 15:45:45 -04:00
2008-03-16 19:05:16 -04:00
echo " \n \n " ;
2008-10-29 15:22:56 -04:00
foreach ( array ( 'mm' , 'jj' , 'aa' , 'hh' , 'mn' ) as $timeunit ) {
2008-03-16 19:05:16 -04:00
echo '<input type="hidden" id="hidden_' . $timeunit . '" name="hidden_' . $timeunit . '" value="' . $$timeunit . '" />' . " \n " ;
2008-10-29 15:22:56 -04:00
$cur_timeunit = 'cur_' . $timeunit ;
echo '<input type="hidden" id="' . $cur_timeunit . '" name="' . $cur_timeunit . '" value="' . $$cur_timeunit . '" />' . " \n " ;
}
2007-05-25 03:16:21 -04:00
?>
2008-03-16 19:05:16 -04:00
2008-10-29 04:19:15 -04:00
< p >
2008-08-20 00:06:36 -04:00
< a href = " #edit_timestamp " class = " save-timestamp hide-if-no-js button " >< ? php _e ( 'OK' ); ?> </a>
2008-09-14 08:58:00 -04:00
< a href = " #edit_timestamp " class = " cancel-timestamp hide-if-no-js " >< ? php _e ( 'Cancel' ); ?> </a>
2008-10-29 04:19:15 -04:00
</ p >
2007-05-25 03:16:21 -04:00
< ? php
}
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $default
*/
2007-05-25 03:16:21 -04: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-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $default
* @ param unknown_type $parent
* @ param unknown_type $level
* @ return unknown
*/
2007-05-25 03:16:21 -04:00
function parent_dropdown ( $default = 0 , $parent = 0 , $level = 0 ) {
global $wpdb , $post_ID ;
2008-04-14 12:13:25 -04: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 03:16:21 -04: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 11:11:07 -04:00
echo " \n \t <option class='level- $level ' value=' $item->ID ' $current > $pad " . esc_html ( $item -> post_title ) . " </option> " ;
2007-05-25 03:16:21 -04:00
parent_dropdown ( $default , $item -> ID , $level + 1 );
}
} else {
return false ;
}
}
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*/
2007-06-21 21:29:57 -04:00
function browse_happy () {
$getit = __ ( 'WordPress recommends a better browser' );
echo '
2008-10-22 18:08:58 -04:00
< div id = " bh " >< a href = " http://browsehappy.com/ " title = " '. $getit .' " >< img src = " images/browse-happy.gif " alt = " Browse Happy " /></ a ></ div >
' ;
2007-06-21 21:29:57 -04:00
}
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $id
* @ return unknown
*/
2007-05-25 03:16:21 -04:00
function the_attachment_links ( $id = false ) {
$id = ( int ) $id ;
$post = & get_post ( $id );
if ( $post -> post_type != 'attachment' )
return false ;
$icon = get_attachment_icon ( $post -> ID );
$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 15:45:45 -04: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 03:16:21 -04: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 04:45:24 -05:00
2008-10-01 21:03:26 -04:00
/**
2008-12-31 12:40:05 -05:00
* Print out < option > html elements for role selectors based on $wp_roles
2008-10-01 21:03:26 -04:00
*
2008-12-31 12:40:05 -05:00
* @ package WordPress
* @ subpackage Administration
* @ since 2.1
2008-10-01 21:03:26 -04:00
*
2008-12-31 12:40:05 -05:00
* @ uses $wp_roles
* @ param string $default slug for the role that should be already selected
2008-10-01 21:03:26 -04:00
*/
2008-12-31 12:40:05 -05:00
function wp_dropdown_roles ( $selected = false ) {
2007-05-25 03:16:21 -04:00
global $wp_roles ;
2008-08-14 13:00:37 -04:00
$p = '' ;
2007-05-25 03:16:21 -04:00
$r = '' ;
2009-02-01 04:45:24 -05:00
2009-01-06 17:00:05 -05:00
$editable_roles = get_editable_roles ();
2009-02-01 04:45:24 -05:00
2009-01-06 17:00:05 -05:00
foreach ( $editable_roles as $role => $details ) {
2009-03-10 19:02:29 -04:00
$name = translate_user_role ( $details [ 'name' ] );
2008-12-31 12:40:05 -05:00
if ( $selected == $role ) // Make default first in list
2009-05-05 15:43:53 -04:00
$p = " \n \t <option selected='selected' value=' " . esc_attr ( $role ) . " '> $name </option> " ;
2007-05-25 03:16:21 -04:00
else
2009-05-05 15:43:53 -04:00
$r .= " \n \t <option value=' " . esc_attr ( $role ) . " '> $name </option> " ;
2008-02-19 15:28:54 -05:00
}
2007-05-25 03:16:21 -04:00
echo $p . $r ;
}
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $size
* @ return unknown
*/
2007-08-28 19:13:16 -04: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-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $bytes
* @ return unknown
*/
2007-08-28 19:13:16 -04: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-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ return unknown
*/
2008-01-25 14:21:11 -05:00
function wp_max_upload_size () {
2007-08-28 19:13:16 -04: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 14:21:11 -05:00
$bytes = apply_filters ( 'upload_size_limit' , min ( $u_bytes , $p_bytes ), $u_bytes , $p_bytes );
return $bytes ;
}
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $action
*/
2008-01-25 14:21:11 -05:00
function wp_import_upload_form ( $action ) {
$bytes = apply_filters ( 'import_upload_size_limit' , wp_max_upload_size () );
2007-08-28 19:13:16 -04:00
$size = wp_convert_bytes_to_hr ( $bytes );
2009-02-12 14:39:35 -05: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-17 22:43:45 -04:00
< p >< strong >< ? php echo $upload_dir [ 'error' ]; ?> </strong></p></div><?php
else :
2007-05-25 03:16:21 -04:00
?>
2009-05-05 15:43:53 -04:00
< form enctype = " multipart/form-data " id = " import-upload-form " method = " post " action = " <?php echo esc_attr( $action ) ?> " >
2007-05-25 03:16:21 -04:00
< p >
< ? php wp_nonce_field ( 'import-upload' ); ?>
2007-08-28 19:13:16 -04:00
< label for = " upload " >< ? php _e ( 'Choose a file from your computer:' ); ?> </label> (<?php printf( __('Maximum size: %s' ), $size ); ?>)
2007-05-25 03:16:21 -04: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 15:43:53 -04:00
< input type = " submit " class = " button " value = " <?php esc_attr_e( 'Upload file and import' ); ?> " />
2007-05-25 03:16:21 -04:00
</ p >
</ form >
< ? php
2009-02-12 14:39:35 -05:00
endif ;
2007-05-25 03:16:21 -04:00
}
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*/
2007-05-25 03:16:21 -04:00
function wp_remember_old_slug () {
global $post ;
2009-05-05 15:43:53 -04:00
$name = esc_attr ( $post -> post_name ); // just in case
2007-05-25 03:16:21 -04:00
if ( strlen ( $name ) )
echo '<input type="hidden" id="wp-old-slug" name="wp-old-slug" value="' . $name . '" />' ;
}
2008-02-08 13:51:37 -05:00
/**
2008-10-01 21:03:26 -04:00
* Add a meta box to an edit form .
2008-02-08 13:51:37 -05:00
*
2008-10-01 21:03:26 -04:00
* @ since 2.5 . 0
2008-02-08 13:51:37 -05:00
*
* @ param string $id String for use in the 'id' attribute of tags .
2008-10-01 21:03:26 -04:00
* @ param string $title Title of the meta box .
2008-09-21 15:45:45 -04:00
* @ param string $callback Function that fills the box with the desired content . The function should echo its output .
2008-10-01 21:03:26 -04: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 13:51:37 -05:00
*/
2008-12-18 14:12:26 -05:00
function add_meta_box ( $id , $title , $callback , $page , $context = 'advanced' , $priority = 'default' , $callback_args = null ) {
2008-02-08 13:51:37 -05:00
global $wp_meta_boxes ;
2008-09-21 15:45:45 -04:00
if ( ! isset ( $wp_meta_boxes ) )
2008-02-08 16:06:15 -05: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 00:06:36 -04:00
foreach ( array_keys ( $wp_meta_boxes [ $page ]) as $a_context ) {
2008-05-14 04:22:01 -04:00
foreach ( array ( 'high' , 'core' , 'default' , 'low' ) as $a_priority ) {
2008-08-20 00:06:36 -04:00
if ( ! isset ( $wp_meta_boxes [ $page ][ $a_context ][ $a_priority ][ $id ]) )
2008-05-14 04:22:01 -04:00
continue ;
2008-08-20 00:06:36 -04:00
2008-05-14 04:22:01 -04: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 00:06:36 -04:00
if ( false === $wp_meta_boxes [ $page ][ $a_context ][ $a_priority ][ $id ] )
2008-05-14 04:22:01 -04:00
return ;
// If box was added with default priority, give it core priority to maintain sort order
if ( 'default' == $a_priority ) {
2008-08-20 00:06:36 -04: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 04:22:01 -04:00
}
return ;
}
// If no priority given and id already present, use existing priority
2008-08-20 00:06:36 -04:00
if ( empty ( $priority ) ) {
2008-05-14 04:22:01 -04:00
$priority = $a_priority ;
2008-09-21 15:45:45 -04: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 00:06:36 -04: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 14:12:26 -05:00
$callback_args = $wp_meta_boxes [ $page ][ $a_context ][ $a_priority ][ $id ][ 'args' ];
2008-08-20 00:06:36 -04: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 04:22:01 -04:00
}
if ( empty ( $priority ) )
2008-08-20 00:06:36 -04:00
$priority = 'low' ;
2008-05-14 04:22:01 -04:00
if ( ! isset ( $wp_meta_boxes [ $page ][ $context ][ $priority ]) )
$wp_meta_boxes [ $page ][ $context ][ $priority ] = array ();
2008-12-18 14:12:26 -05:00
$wp_meta_boxes [ $page ][ $context ][ $priority ][ $id ] = array ( 'id' => $id , 'title' => $title , 'callback' => $callback , 'args' => $callback_args );
2008-02-08 13:51:37 -05:00
}
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $page
* @ param unknown_type $context
* @ param unknown_type $object
2008-10-08 19:32:34 -04:00
* @ return int number of meta_boxes
2008-10-01 21:03:26 -04:00
*/
2008-02-08 16:06:15 -05:00
function do_meta_boxes ( $page , $context , $object ) {
2008-02-08 13:51:37 -05:00
global $wp_meta_boxes ;
2008-08-20 00:06:36 -04:00
static $already_sorted = false ;
2008-02-08 13:51:37 -05:00
2008-11-11 17:40:16 -05:00
//do_action('do_meta_boxes', $page, $context, $object);
2008-05-14 04:22:01 -04:00
2008-11-28 17:35:01 -05:00
$hidden = get_hidden_meta_boxes ( $page );
2008-08-22 14:58:42 -04:00
2008-08-20 00:06:36 -04:00
echo " <div id=' $context -sortables' class='meta-box-sortables'> \n " ;
2008-02-08 13:51:37 -05:00
2008-08-20 00:06:36 -04:00
$i = 0 ;
2008-09-21 15:45:45 -04: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
2008-11-25 13:33:04 -05:00
if ( ! $already_sorted && $sorted = get_user_option ( " meta-box-order_ $page " , 0 , false ) ) {
2008-08-20 00:06:36 -04: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 13:05:10 -04:00
2008-08-20 00:06:36 -04: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 17:50:11 -04: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 = '' ;
if ( in_array ( $box [ 'id' ], $hidden ) )
$style = 'style="display:none;"' ;
echo '<div id="' . $box [ 'id' ] . '" class="postbox ' . postbox_classes ( $box [ 'id' ], $page ) . '" ' . $style . '>' . " \n " ;
2008-11-30 20:31:57 -05:00
echo '<div class="handlediv" title="' . __ ( 'Click to toggle' ) . '"><br /></div>' ;
echo " <h3 class='hndle'><span> { $box [ 'title' ] } </span></h3> \n " ;
2008-08-25 17:50:11 -04:00
echo '<div class="inside">' . " \n " ;
call_user_func ( $box [ 'callback' ], $object , $box );
echo " </div> \n " ;
echo " </div> \n " ;
}
2008-08-20 00:06:36 -04:00
}
2008-05-14 04:22:01 -04:00
}
2008-08-20 00:06:36 -04:00
} while ( 0 );
echo " </div> " ;
return $i ;
2008-02-08 13:51:37 -05:00
}
2008-05-14 04:22:01 -04:00
/**
2008-10-01 21:03:26 -04:00
* Remove a meta box from an edit form .
2008-05-14 04:22:01 -04:00
*
2008-10-01 21:03:26 -04:00
* @ since 2.6 . 0
2008-05-14 04:22:01 -04:00
*
* @ param string $id String for use in the 'id' attribute of tags .
2008-10-01 21:03:26 -04: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 04:22:01 -04:00
*/
function remove_meta_box ( $id , $page , $context ) {
global $wp_meta_boxes ;
2008-09-21 15:45:45 -04:00
if ( ! isset ( $wp_meta_boxes ) )
2008-05-14 04:22:01 -04: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-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $page
*/
2008-08-22 14:58:42 -04:00
function meta_box_prefs ( $page ) {
global $wp_meta_boxes ;
if ( empty ( $wp_meta_boxes [ $page ]) )
return ;
2008-11-28 17:35:01 -05:00
$hidden = get_hidden_meta_boxes ( $page );
2008-08-22 14:58:42 -04:00
foreach ( array_keys ( $wp_meta_boxes [ $page ]) as $context ) {
foreach ( array_keys ( $wp_meta_boxes [ $page ][ $context ]) as $priority ) {
foreach ( $wp_meta_boxes [ $page ][ $context ][ $priority ] as $box ) {
if ( false == $box || ! $box [ 'title' ] )
continue ;
2008-09-11 14:56:04 -04:00
// Submit box cannot be hidden
2008-11-14 19:09:18 -05:00
if ( 'submitdiv' == $box [ 'id' ] || 'linksubmitdiv' == $box [ 'id' ] )
2008-09-11 14:56:04 -04:00
continue ;
2008-08-22 14:58:42 -04:00
$box_id = $box [ 'id' ];
echo '<label for="' . $box_id . '-hide">' ;
2008-10-22 02:52:06 -04: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 06:17:41 -04:00
echo " { $box [ 'title' ] } </label> \n " ;
2008-08-22 14:58:42 -04:00
}
}
}
}
2008-09-09 18:31:22 -04:00
2008-11-28 17:35:01 -05:00
function get_hidden_meta_boxes ( $page ) {
$hidden = ( array ) get_user_option ( " meta-box-hidden_ $page " , 0 , false );
// Hide slug boxes by default
if ( empty ( $hidden [ 0 ]) ) {
if ( 'page' == $page )
$hidden = array ( 'pageslugdiv' );
elseif ( 'post' == $page )
$hidden = array ( 'slugdiv' );
}
return $hidden ;
}
2008-09-09 18:31:22 -04:00
/**
2008-10-01 21:03:26 -04:00
* Add a new section to a settings page .
2008-09-09 18:31:22 -04:00
*
2008-10-01 21:03:26 -04:00
* @ since 2.7 . 0
2008-09-09 18:31:22 -04:00
*
* @ param string $id String for use in the 'id' attribute of tags .
2008-10-01 21:03:26 -04:00
* @ param string $title Title of the section .
2008-09-21 15:45:45 -04:00
* @ param string $callback Function that fills the section with the desired content . The function should echo its output .
2008-10-01 21:03:26 -04:00
* @ param string $page The type of settings page on which to show the section ( general , reading , writing , ... ) .
2008-09-09 18:31:22 -04:00
*/
function add_settings_section ( $id , $title , $callback , $page ) {
global $wp_settings_sections ;
2008-09-21 15:45:45 -04:00
if ( ! isset ( $wp_settings_sections ) )
2008-09-09 18:31:22 -04: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 );
}
/**
2008-10-01 21:03:26 -04:00
* Add a new field to a settings page .
2008-09-09 18:31:22 -04:00
*
2008-10-01 21:03:26 -04:00
* @ since 2.7 . 0
2008-09-09 18:31:22 -04:00
*
* @ param string $id String for use in the 'id' attribute of tags .
2008-10-01 21:03:26 -04:00
* @ param string $title Title of the field .
2008-09-21 15:45:45 -04:00
* @ param string $callback Function that fills the field with the desired content . The function should echo its output .
2008-10-01 21:03:26 -04:00
* @ param string $page The type of settings page on which to show the field ( general , reading , writing , ... ) .
* @ param string $section The section of the settingss page in which to show the box ( default , ... ) .
2008-09-09 18:31:22 -04:00
* @ param array $args Additional arguments
*/
function add_settings_field ( $id , $title , $callback , $page , $section = 'default' , $args = array ()) {
global $wp_settings_fields ;
2008-09-21 15:45:45 -04:00
if ( ! isset ( $wp_settings_fields ) )
2008-09-09 18:31:22 -04: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-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $page
*/
2008-09-09 18:31:22 -04: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-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $page
* @ param unknown_type $section
*/
2008-09-09 18:31:22 -04: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>' ;
call_user_func ( $field [ 'callback' ]);
echo '</td>' ;
echo '</tr>' ;
2008-09-21 15:45:45 -04:00
}
2008-09-09 18:31:22 -04:00
}
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $page
*/
2008-09-10 21:46:30 -04:00
function manage_columns_prefs ( $page ) {
2008-09-18 01:41:45 -04:00
$columns = get_column_headers ( $page );
2008-09-10 21:46:30 -04:00
2008-11-17 14:16:26 -05:00
$hidden = get_hidden_columns ( $page );
2008-09-10 21:46:30 -04:00
foreach ( $columns as $column => $title ) {
// Can't hide these
2008-09-25 21:05:52 -04:00
if ( 'cb' == $column || 'title' == $column || 'name' == $column || 'username' == $column || 'media' == $column || 'comment' == $column )
2008-09-10 21:46:30 -04:00
continue ;
2008-09-15 13:53:30 -04:00
if ( empty ( $title ) )
continue ;
2008-09-10 21:46:30 -04:00
if ( 'comments' == $column )
$title = __ ( 'Comments' );
$id = " $column -hide " ;
echo '<label for="' . $id . '">' ;
echo '<input class="hide-column-tog" name="' . $id . '" type="checkbox" id="' . $id . '" value="' . $column . '"' . ( ! in_array ( $column , $hidden ) ? ' checked="checked"' : '' ) . ' />' ;
echo " $title </label> \n " ;
}
}
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*
* @ param unknown_type $found_action
*/
2008-09-16 00:24:28 -04: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 15:43:53 -04:00
< input type = " hidden " name = " found_action " value = " <?php echo esc_attr( $found_action ); ?> " />
2008-09-16 00:24:28 -04:00
< ? php } ?>
2008-09-21 15:45:45 -04:00
2008-09-16 00:24:28 -04:00
< input type = " hidden " name = " affected " id = " affected " value = " " />
< ? php wp_nonce_field ( 'find-posts' , '_ajax_nonce' , false ); ?>
2009-05-12 18:40:56 -04:00
< label class = " screen-reader-text " for = " find-posts-input " >< ? php _e ( 'Search' ); ?> </label>
2009-04-16 00:41:05 -04:00
< input type = " text " id = " find-posts-input " name = " ps " value = " " />
2009-05-05 15:43:53 -04:00
< input type = " button " onclick = " findPosts.send(); " value = " <?php esc_attr_e( 'Search' ); ?> " class = " button " />< br />
2008-09-16 00:24:28 -04:00
< input type = " radio " name = " find-posts-what " id = " find-posts-posts " checked = " checked " value = " posts " />
< label for = " find-posts-posts " >< ? php _e ( 'Posts' ); ?> </label>
< input type = " radio " name = " find-posts-what " id = " find-posts-pages " value = " pages " />
< label for = " find-posts-pages " >< ? php _e ( 'Pages' ); ?> </label>
</ div >
< div id = " find-posts-response " ></ div >
</ div >
< div class = " find-box-buttons " >
2009-05-05 15:43:53 -04:00
< input type = " button " class = " button alignleft " onclick = " findPosts.close(); " value = " <?php esc_attr_e('Close'); ?> " />
< input id = " find-posts-submit " type = " submit " class = " button-primary alignright " value = " <?php esc_attr_e('Select'); ?> " />
2008-09-16 00:24:28 -04:00
</ div >
</ div >
< ? php
}
2008-09-21 17:10:14 -04:00
/**
* Display the post password .
2008-10-07 21:18:16 -04:00
*
2009-05-05 15:43:53 -04:00
* The password is passed through { @ link esc_attr ()} to ensure that it
2008-10-01 21:03:26 -04:00
* is safe for placing in an html attribute .
2008-09-21 17:10:14 -04:00
*
2009-04-28 01:58:45 -04:00
* @ uses attr
2008-09-21 17:10:14 -04:00
* @ since 2.7 . 0
*/
function the_post_password () {
global $post ;
2009-05-05 15:43:53 -04:00
if ( isset ( $post -> post_password ) ) echo esc_attr ( $post -> post_password );
2008-09-21 17:10:14 -04:00
}
2008-09-25 19:49:24 -04:00
2008-10-01 21:03:26 -04:00
/**
* { @ internal Missing Short Description }}
*
* @ since unknown
*/
2009-04-21 21:30:15 -04:00
function favorite_actions ( $screen = null ) {
switch ( $screen ) {
2009-04-21 21:47:20 -04:00
case 'post-new.php' :
$default_action = array ( 'edit.php' => array ( __ ( 'Edit Posts' ), 'edit_posts' ));
break ;
2009-04-21 21:30:15 -04:00
case 'edit-pages.php' :
$default_action = array ( 'page-new.php' => array ( __ ( 'New Page' ), 'edit_pages' ));
break ;
2009-04-21 21:47:20 -04:00
case 'page-new.php' :
$default_action = array ( 'edit-pages.php' => array ( __ ( 'Edit Pages' ), 'edit_pages' ));
break ;
2009-04-21 21:30:15 -04:00
case 'upload.php' :
$default_action = array ( 'media-new.php' => array ( __ ( 'New Media' ), 'upload_files' ));
break ;
2009-04-21 21:47:20 -04:00
case 'media-new.php' :
$default_action = array ( 'upload.php' => array ( __ ( 'Edit Media' ), 'upload_files' ));
break ;
2009-04-21 21:30:15 -04:00
case 'link-manager.php' :
$default_action = array ( 'link-add.php' => array ( __ ( 'New Link' ), 'manage_links' ));
break ;
2009-04-21 21:47:20 -04:00
case 'link-add.php' :
$default_action = array ( 'link-manager.php' => array ( __ ( 'Edit Links' ), 'manage_links' ));
break ;
2009-04-21 21:30:15 -04:00
case 'users.php' :
$default_action = array ( 'user-new.php' => array ( __ ( 'New User' ), 'create_users' ));
break ;
2009-04-21 21:47:20 -04:00
case 'user-new.php' :
$default_action = array ( 'users.php' => array ( __ ( 'Edit Users' ), 'edit_users' ));
break ;
2009-04-21 21:30:15 -04:00
case 'plugins.php' :
$default_action = array ( 'plugin-install.php' => array ( __ ( 'Install Plugins' ), 'install_plugins' ));
break ;
2009-04-21 21:47:20 -04:00
case 'plugin-install.php' :
$default_action = array ( 'plugins.php' => array ( __ ( 'Manage Plugins' ), 'activate_plugins' ));
break ;
2009-04-21 21:30:15 -04:00
case 'themes.php' :
$default_action = array ( 'theme-install.php' => array ( __ ( 'Install Themes' ), 'install_themes' ));
break ;
2009-04-21 21:47:20 -04:00
case 'theme-install.php' :
$default_action = array ( 'themes.php' => array ( __ ( 'Manage Themes' ), 'switch_themes' ));
break ;
2009-04-21 21:30:15 -04:00
default :
$default_action = array ( 'post-new.php' => array ( __ ( 'New Post' ), 'edit_posts' ));
break ;
}
2008-09-25 19:49:24 -04:00
$actions = array (
2008-11-25 14:16:22 -05:00
'post-new.php' => array ( __ ( 'New Post' ), 'edit_posts' ),
2008-12-09 13:03:31 -05:00
'edit.php?post_status=draft' => array ( __ ( 'Drafts' ), 'edit_posts' ),
2008-11-25 14:16:22 -05:00
'page-new.php' => array ( __ ( 'New Page' ), 'edit_pages' ),
'media-new.php' => array ( __ ( 'Upload' ), 'upload_files' ),
'edit-comments.php' => array ( __ ( 'Comments' ), 'moderate_comments' )
2008-09-25 19:49:24 -04:00
);
2009-04-21 21:30:15 -04: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-25 19:49:24 -04:00
$actions = apply_filters ( 'favorite_actions' , $actions );
2008-10-13 13:30:45 -04: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 08:02:32 -04:00
echo '<div id="favorite-actions">' ;
2008-10-18 12:54:14 -04: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 13:30:45 -04:00
array_shift ( $allowed_actions );
foreach ( $allowed_actions as $action => $label ) {
2008-09-27 08:02:32 -04:00
echo " <div class='favorite-action'><a href=' $action '> " ;
2008-09-25 19:49:24 -04:00
echo $label ;
2008-09-27 08:02:32 -04:00
echo " </a></div> \n " ;
2008-09-25 19:49:24 -04:00
}
2008-09-27 08:02:32 -04:00
echo " </div></div> \n " ;
2008-09-25 19:49:24 -04:00
}
2008-10-01 21:03:26 -04:00
2008-09-30 17:32:13 -04:00
/**
* Get the post title .
2008-10-07 21:18:16 -04:00
*
2008-10-01 21:03:26 -04:00
* The post title is fetched and if it is blank then a default string is
* returned .
2008-09-30 17:32:13 -04:00
*
* @ since 2.7 . 0
2008-10-01 21:03:26 -04:00
* @ param int $id The post id . If not supplied the global $post is used .
2008-10-07 21:18:16 -04:00
*
2008-09-30 17:32:13 -04:00
*/
function _draft_or_post_title ( $post_id = 0 )
{
$title = get_the_title ( $post_id );
if ( empty ( $title ) )
2008-10-05 00:43:52 -04:00
$title = __ ( '(no title)' );
2008-09-30 17:32:13 -04:00
return $title ;
}
2008-10-01 21:03:26 -04:00
2008-10-02 23:06:43 -04:00
/**
* Display the search query .
2008-10-07 21:18:16 -04:00
*
2008-10-02 23:06:43 -04: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 01:58:45 -04:00
* @ uses attr
2008-10-02 23:06:43 -04:00
* @ since 2.7 . 0
2008-10-07 21:18:16 -04:00
*
2008-10-02 23:06:43 -04:00
*/
function _admin_search_query () {
2009-05-05 15:43:53 -04:00
echo isset ( $_GET [ 's' ]) ? esc_attr ( stripslashes ( $_GET [ 's' ] ) ) : '' ;
2008-10-13 19:39:56 -04: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 15:21:29 -04:00
function iframe_header ( $title = '' , $limit_styles = false ) {
2008-10-13 19:39:56 -04: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-19 20:14:57 -04:00
wp_enqueue_style ( 'colors' );
2008-10-13 19:39:56 -04:00
?>
< script type = " text/javascript " >
//<![CDATA[
2009-03-19 20:14:57 -04: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-13 19:39:56 -04:00
//]]>
</ script >
< ? php
do_action ( 'admin_print_styles' );
do_action ( 'admin_print_scripts' );
do_action ( 'admin_head' );
?>
</ head >
< body < ? php if ( isset ( $GLOBALS [ 'body_id' ]) ) echo ' id="' . $GLOBALS [ 'body_id' ] . '"' ; ?> >
< ? php
}
/**
* Generic Iframe footer for use with Thickbox
*
* @ since 2.7 . 0
*
*/
function iframe_footer () {
2009-05-16 15:21:29 -04: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-02 23:06:43 -04:00
}
2008-10-13 23:49:57 -04: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 06:10:24 -05:00
$post_states [] = __ ( 'Password protected' );
2008-10-13 23:49:57 -04: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 14:20:19 -05:00
/* translators: post state */
$post_states [] = _x ( 'Pending' , 'post state' );
2009-02-17 14:13:31 -05:00
if ( is_sticky ( $post -> ID ) )
$post_states [] = __ ( 'Sticky' );
2008-10-13 23:49:57 -04:00
2009-02-04 11:52:36 -05:00
$post_states = apply_filters ( 'display_post_states' , $post_states );
2008-10-13 23:49:57 -04:00
if ( ! empty ( $post_states ) ) {
$state_count = count ( $post_states );
$i = 0 ;
2008-10-14 02:07:49 -04:00
echo ' - ' ;
2008-10-13 23:49:57 -04:00
foreach ( $post_states as $state ) {
++ $i ;
( $i == $state_count ) ? $sep = '' : $sep = ', ' ;
echo " <span class='post-state'> $state $sep </span> " ;
}
}
}
2008-11-14 18:54:15 -05:00
function screen_meta ( $screen ) {
2008-11-18 14:54:54 -05:00
global $wp_meta_boxes , $_wp_contextual_help ;
2008-11-06 17:21:27 -05:00
2008-11-11 17:40:16 -05:00
$screen = str_replace ( '.php' , '' , $screen );
$screen = str_replace ( '-new' , '' , $screen );
$screen = str_replace ( '-add' , '' , $screen );
2008-11-19 12:20:26 -05:00
$screen = apply_filters ( 'screen_meta_screen' , $screen );
2008-11-17 14:16:26 -05:00
$column_screens = get_column_headers ( $screen );
2008-11-11 17:40:16 -05:00
$meta_screens = array ( 'index' => 'dashboard' );
if ( isset ( $meta_screens [ $screen ]) )
$screen = $meta_screens [ $screen ];
2008-11-06 17:21:27 -05:00
$show_screen = false ;
2009-04-21 02:49:53 -04:00
$show_on_screen = false ;
if ( ! empty ( $wp_meta_boxes [ $screen ]) || ! empty ( $column_screens ) ) {
$show_screen = true ;
$show_on_screen = true ;
}
$screen_options = screen_options ( $screen );
if ( $screen_options )
2008-11-06 17:21:27 -05:00
$show_screen = true ;
2008-11-06 03:32:25 -05:00
2008-11-18 14:54:54 -05:00
if ( ! isset ( $_wp_contextual_help ) )
$_wp_contextual_help = array ();
2008-12-06 15:54:51 -05:00
2009-06-06 21:52:44 -04:00
$settings = '' ;
2009-06-01 19:31:34 -04:00
2009-02-23 21:37:22 -05:00
switch ( $screen ) {
case 'post' :
if ( ! isset ( $_wp_contextual_help [ 'post' ]) ) {
$help = drag_drop_help ();
$help .= '<p>' . __ ( '<a href="http://codex.wordpress.org/Writing_Posts" target="_blank">Writing Posts</a>' ) . '</p>' ;
$_wp_contextual_help [ 'post' ] = $help ;
}
break ;
case 'page' :
if ( ! isset ( $_wp_contextual_help [ 'page' ]) ) {
$help = drag_drop_help ();
$_wp_contextual_help [ 'page' ] = $help ;
}
break ;
case 'dashboard' :
if ( ! isset ( $_wp_contextual_help [ 'dashboard' ]) ) {
$help = '<p>' . __ ( 'The modules on this screen can be arranged in several columns. You can select the number of columns from the Screen Options tab.' ) . " </p> \n " ;
$help .= drag_drop_help ();
$_wp_contextual_help [ 'dashboard' ] = $help ;
}
break ;
case 'link' :
if ( ! isset ( $_wp_contextual_help [ 'link' ]) ) {
$help = drag_drop_help ();
$_wp_contextual_help [ 'link' ] = $help ;
}
break ;
case 'options-general' :
if ( ! isset ( $_wp_contextual_help [ 'options-general' ]) )
2009-03-15 07:04:34 -04:00
$_wp_contextual_help [ 'options-general' ] = __ ( '<a href="http://codex.wordpress.org/Settings_General_SubPanel" target="_blank">General Settings</a>' );
break ;
case 'theme-install' :
case 'plugin-install' :
2009-03-25 10:29:22 -04:00
if ( ( ! isset ( $_GET [ 'tab' ]) || 'dashboard' == $_GET [ 'tab' ] ) && ! isset ( $_wp_contextual_help [ $screen ]) ) {
$help = plugins_search_help ();
$_wp_contextual_help [ $screen ] = $help ;
}
2009-02-23 21:37:22 -05:00
break ;
2009-06-06 21:52:44 -04:00
case 'theme-editor' :
case 'plugin-editor' :
$settings = '<p><a id="codepress-on" href="' . $screen . '.php?codepress=on">' . __ ( 'Enable syntax highlighting' ) . '</a><a id="codepress-off" href="' . $screen . '.php?codepress=off">' . __ ( 'Disable syntax highlighting' ) . " </a></p> \n " ;
$show_screen = true ;
break ;
2009-04-29 22:33:22 -04:00
case 'widgets' :
if ( ! isset ( $_wp_contextual_help [ 'widgets' ]) ) {
$help = widgets_help ();
$_wp_contextual_help [ 'widgets' ] = $help ;
}
2009-06-06 21:52:44 -04: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 " ;
2009-06-01 19:31:34 -04:00
$show_screen = true ;
2009-04-29 22:33:22 -04:00
break ;
2008-12-06 15:54:51 -05:00
}
2009-03-25 10:29:22 -04:00
?>
< div id = " screen-meta " >
< ? php
if ( $show_screen ) :
?>
< div id = " screen-options-wrap " class = " hidden " >
2009-04-17 08:46:53 -04:00
< form id = " adv-settings " action = " " method = " post " >
2009-04-21 02:49:53 -04:00
< ? php if ( $show_on_screen ) : ?>
2009-03-25 10:29:22 -04:00
< h5 >< ? php _e ( 'Show on screen' ) ?> </h5>
< div class = " metabox-prefs " >
< ? php
if ( ! meta_box_prefs ( $screen ) && isset ( $column_screens ) ) {
manage_columns_prefs ( $screen );
}
?>
< br class = " clear " />
</ div >
2009-04-21 02:49:53 -04:00
< ? php endif ; ?>
2009-03-25 10:29:22 -04:00
< ? php echo screen_layout ( $screen ); ?>
2009-04-21 02:49:53 -04:00
< ? php echo $screen_options ; ?>
2009-06-06 21:52:44 -04:00
< ? php echo $settings ; ?>
2009-04-05 04:25:10 -04:00
< div >< ? php wp_nonce_field ( 'screen-options-nonce' , 'screenoptionnonce' , false ); ?> </div>
2009-03-25 10:29:22 -04:00
</ form >
</ div >
< ? php
endif ;
global $title ;
2008-12-06 15:54:51 -05:00
2008-12-09 13:03:31 -05:00
$_wp_contextual_help = apply_filters ( 'contextual_help_list' , $_wp_contextual_help , $screen );
2008-11-06 03:13:50 -05:00
?>
< div id = " contextual-help-wrap " class = " hidden " >
< ? php
2008-11-12 12:11:49 -05:00
$contextual_help = '' ;
2008-11-18 14:54:54 -05:00
if ( isset ( $_wp_contextual_help [ $screen ]) ) {
if ( ! empty ( $title ) )
2009-05-05 00:28:05 -04:00
$contextual_help .= '<h5>' . sprintf ( __ ( 'Get help with “%s”' ), $title ) . '</h5>' ;
2008-11-12 12:11:49 -05:00
else
$contextual_help .= '<h5>' . __ ( 'Get help with this page' ) . '</h5>' ;
2008-11-18 14:54:54 -05:00
$contextual_help .= '<div class="metabox-prefs">' . $_wp_contextual_help [ $screen ] . " </div> \n " ;
2008-11-06 03:32:25 -05:00
2008-11-12 12:11:49 -05:00
$contextual_help .= '<h5>' . __ ( 'Other Help' ) . '</h5>' ;
} else {
$contextual_help .= '<h5>' . __ ( 'Help' ) . '</h5>' ;
2008-11-06 17:21:27 -05:00
}
2008-11-12 12:11:49 -05:00
$contextual_help .= '<div class="metabox-prefs">' ;
2009-05-07 15:30:41 -04:00
$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 );
2008-11-12 12:11:49 -05:00
$contextual_help .= " </div> \n " ;
2008-11-14 18:54:15 -05:00
echo apply_filters ( 'contextual_help' , $contextual_help , $screen );
2008-11-06 03:13:50 -05:00
?>
2008-10-26 21:22:24 -04:00
</ div >
2008-11-06 03:13:50 -05: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 17:21:27 -05:00
< ? php if ( $show_screen ) { ?>
2008-11-06 03:13:50 -05: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 17:21:27 -05:00
< ? php } ?>
2008-11-06 03:13:50 -05:00
</ div >
2008-10-26 21:22:24 -04:00
</ div >
< ? php
}
2008-11-18 14:54:54 -05: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 ;
if ( ! isset ( $_wp_contextual_help ) )
$_wp_contextual_help = array ();
$_wp_contextual_help [ $screen ] = $help ;
}
2008-12-06 15:54:51 -05:00
function drag_drop_help () {
return '
2009-02-27 03:43:48 -05: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 15:54:51 -05: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 10:29:22 -04: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-04-29 22:33:22 -04:00
function widgets_help () {
return '
2009-05-15 22:25:06 -04:00
< p > ' . __(' Widgets are added and arranged by simple drag & #8217;n’ drop. If you hover your mouse over the titlebar of a widget, you’ll see a 4-arrow cursor which indicates that the widget is movable. Click on the titlebar, hold down the mouse button and drag the widget to a sidebar. As you drag, you’ll see a dotted box that also moves. This box shows where the widget will go once you drop it.') . '</p>
2009-05-24 11:46:09 -04:00
< p > ' . __(' To remove a widget from a sidebar , drag it back to Available Widgets or click on the arrow on its titlebar to reveal its settings , and then click Remove . ') . ' </ p >
2009-05-15 22:25:06 -04:00
< p > ' . __(' To remove a widget from a sidebar < em > and keep its configuration </ em > , drag it to Inactive Widgets . ') . ' </ p >
< p > ' . __(' The Inactive Widgets area stores widgets that are configured but not curently used . If you change themes and the new theme has fewer sidebars than the old , all extra widgets will be stored to Inactive Widgets automatically . ') . ' </ p >
2009-04-29 22:33:22 -04:00
' ;
}
2009-02-23 21:37:22 -05:00
function screen_layout ( $screen ) {
global $screen_layout_columns ;
2009-04-30 18:51:42 -04:00
$columns = array ( 'dashboard' => 4 , 'post' => 2 , 'page' => 2 , 'link' => 2 );
$columns = apply_filters ( 'screen_layout_columns' , $columns , $screen );
if ( ! isset ( $columns [ $screen ]) ) {
$screen_layout_columns = 0 ;
return '' ;
}
2009-05-24 19:47:49 -04:00
2009-04-30 18:51:42 -04:00
$screen_layout_columns = get_user_option ( " screen_layout_ $screen " );
$num = $columns [ $screen ];
2009-03-17 22:43:45 -04:00
2009-02-23 21:37:22 -05: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 18:47:47 -04:00
function screen_options ( $screen ) {
switch ( $screen ) {
case 'edit' :
$per_page_label = __ ( 'Posts per page:' );
break ;
case 'edit-pages' :
$per_page_label = __ ( 'Pages per page:' );
break ;
case 'edit-comments' :
$per_page_label = __ ( 'Comments per page:' );
break ;
case 'upload' :
$per_page_label = __ ( 'Media items per page:' );
break ;
2009-04-10 17:47:01 -04:00
case 'categories' :
$per_page_label = __ ( 'Categories per page:' );
break ;
2009-04-10 17:52:57 -04:00
case 'edit-tags' :
$per_page_label = __ ( 'Tags per page:' );
break ;
2009-04-21 02:49:53 -04:00
case 'plugins' :
$per_page_label = __ ( 'Plugins per page:' );
break ;
2009-03-27 18:47:47 -04:00
default :
return '' ;
}
2009-04-05 04:25:10 -04:00
$option = str_replace ( '-' , '_' , " ${ screen } _per_page " );
$per_page = get_user_option ( $option );
2009-05-13 00:26:40 -04:00
if ( empty ( $per_page ) ) {
if ( 'plugins' == $screen )
$per_page = 999 ;
else
$per_page = 20 ;
}
2009-03-27 18:47:47 -04:00
$return = '<h5>' . __ ( 'Options' ) . " </h5> \n " ;
$return .= " <div class='screen-options'> \n " ;
if ( ! empty ( $per_page_label ) )
2009-04-17 08:46:53 -04:00
$return .= " <label for=' $option '> $per_page_label </label> <input type='text' class='screen-per-page' name='wp_screen_options[value]' id=' $option ' maxlength='3' value=' $per_page ' /> \n " ;
2009-05-05 15:43:53 -04: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 18:47:47 -04:00
$return .= " </div> \n " ;
return $return ;
}
2008-11-26 18:35:23 -05:00
function screen_icon ( $name = '' ) {
2008-11-26 08:51:25 -05:00
global $parent_file , $hook_suffix ;
2008-11-26 18:35:23 -05:00
if ( empty ( $name ) ) {
if ( isset ( $parent_file ) && ! empty ( $parent_file ) )
$name = substr ( $parent_file , 0 , - 4 );
else
$name = str_replace ( array ( '.php' , '-new' , '-add' ), '' , $hook_suffix );
}
2008-11-26 08:51:25 -05:00
?>
< div id = " icon-<?php echo $name ; ?> " class = " icon32 " >< br /></ div >
< ? php
}
2009-01-14 09:18:51 -05:00
/**
2009-01-26 07:59:10 -05:00
* Test support for compressing JavaScript from PHP
2009-01-14 09:18:51 -05: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 04:45:24 -05:00
* has to be deleted .
2009-01-14 09:18:51 -05:00
*
* @ since 2.8 . 0
*/
function compression_test () {
?>
< script type = " text/javascript " >
/* <![CDATA[ */
2009-02-01 04:45:24 -05: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 09:18:51 -05:00
}
2009-02-01 04:45:24 -05:00
};
testCompression . check ();
2009-01-14 09:18:51 -05:00
/* ]]> */
</ script >
< ? php
}
2008-10-07 21:18:16 -04:00
?>