X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/af50974463450c98503e763a7836a50e260461a9..03f2fa83c13c1b532284205fa7efcab9b8b2c41f:/wp-admin/includes/template.php?ds=sidebyside
diff --git a/wp-admin/includes/template.php b/wp-admin/includes/template.php
index 425e40b0..e65c7d0f 100644
--- a/wp-admin/includes/template.php
+++ b/wp-admin/includes/template.php
@@ -8,126 +8,34 @@
* @subpackage Administration
*/
+/** Walker_Category_Checklist class */
+require_once( ABSPATH . 'wp-admin/includes/class-walker-category-checklist.php' );
+
+/** WP_Internal_Pointers class */
+require_once( ABSPATH . 'wp-admin/includes/class-wp-internal-pointers.php' );
+
//
// Category Checklists
//
/**
- * Walker to output an unordered list of category checkbox input elements.
+ * Output an unordered list of checkbox input elements labeled with category names.
*
* @since 2.5.1
*
- * @see Walker
- * @see wp_category_checklist()
* @see wp_terms_checklist()
- */
-class Walker_Category_Checklist extends Walker {
- public $tree_type = 'category';
- public $db_fields = array ('parent' => 'parent', 'id' => 'term_id'); //TODO: decouple this
-
- /**
- * Starts the list before the elements are added.
- *
- * @see Walker:start_lvl()
- *
- * @since 2.5.1
- *
- * @param string $output Passed by reference. Used to append additional content.
- * @param int $depth Depth of category. Used for tab indentation.
- * @param array $args An array of arguments. @see wp_terms_checklist()
- */
- public function start_lvl( &$output, $depth = 0, $args = array() ) {
- $indent = str_repeat("\t", $depth);
- $output .= "$indent
\n";
- }
-
- /**
- * Ends the list of after the elements are added.
- *
- * @see Walker::end_lvl()
- *
- * @since 2.5.1
- *
- * @param string $output Passed by reference. Used to append additional content.
- * @param int $depth Depth of category. Used for tab indentation.
- * @param array $args An array of arguments. @see wp_terms_checklist()
- */
- public function end_lvl( &$output, $depth = 0, $args = array() ) {
- $indent = str_repeat("\t", $depth);
- $output .= "$indent
\n";
- }
-
- /**
- * Start the element output.
- *
- * @see Walker::start_el()
- *
- * @since 2.5.1
- *
- * @param string $output Passed by reference. Used to append additional content.
- * @param object $category The current term object.
- * @param int $depth Depth of the term in reference to parents. Default 0.
- * @param array $args An array of arguments. @see wp_terms_checklist()
- * @param int $id ID of the current term.
- */
- public function start_el( &$output, $category, $depth = 0, $args = array(), $id = 0 ) {
- if ( empty( $args['taxonomy'] ) ) {
- $taxonomy = 'category';
- } else {
- $taxonomy = $args['taxonomy'];
- }
-
- if ( $taxonomy == 'category' ) {
- $name = 'post_category';
- } else {
- $name = 'tax_input[' . $taxonomy . ']';
- }
- $args['popular_cats'] = empty( $args['popular_cats'] ) ? array() : $args['popular_cats'];
- $class = in_array( $category->term_id, $args['popular_cats'] ) ? ' class="popular-category"' : '';
-
- $args['selected_cats'] = empty( $args['selected_cats'] ) ? array() : $args['selected_cats'];
-
- /** This filter is documented in wp-includes/category-template.php */
- $output .= "\n
" .
- '';
- }
-
- /**
- * Ends the element output, if needed.
- *
- * @see Walker::end_el()
- *
- * @since 2.5.1
- *
- * @param string $output Passed by reference. Used to append additional content.
- * @param object $category The current term object.
- * @param int $depth Depth of the term in reference to parents. Default 0.
- * @param array $args An array of arguments. @see wp_terms_checklist()
- */
- public function end_el( &$output, $category, $depth = 0, $args = array() ) {
- $output .= "
\n";
- }
-}
-
-/**
- * Output an unordered list of checkbox input elements labelled
- * with category names.
- *
- * @since 2.5.1
- *
- * @todo Properly document optional arguments as such.
*
- * @see wp_terms_checklist()
- *
- * @param int $post_id Mark categories associated with this post as checked. $selected_cats must not be an array.
- * @param int $descendants_and_self ID of the category to output along with its descendents.
- * @param bool|array $selected_cats List of categories to mark as checked.
- * @param bool|array $popular_cats Override the list of categories that receive the "popular-category" class.
- * @param object $walker Walker object to use to build the output.
- * @param bool $checked_ontop Move checked items out of the hierarchy and to the top of the list.
+ * @param int $post_id Optional. Post to generate a categories checklist for. Default 0.
+ * $selected_cats must not be an array. Default 0.
+ * @param int $descendants_and_self Optional. ID of the category to output along with its descendants.
+ * Default 0.
+ * @param array $selected_cats Optional. List of categories to mark as checked. Default false.
+ * @param array $popular_cats Optional. List of categories to receive the "popular-category" class.
+ * Default false.
+ * @param object $walker Optional. Walker object to use to build the output.
+ * Default is a Walker_Category_Checklist instance.
+ * @param bool $checked_ontop Optional. Whether to move checked items out of the hierarchy and to
+ * the top of the list. Default true.
*/
function wp_category_checklist( $post_id = 0, $descendants_and_self = 0, $selected_cats = false, $popular_cats = false, $walker = null, $checked_ontop = true ) {
wp_terms_checklist( $post_id, array(
@@ -143,14 +51,28 @@ function wp_category_checklist( $post_id = 0, $descendants_and_self = 0, $select
/**
* Output an unordered list of checkbox input elements labelled with term names.
*
- * Taxonomy independent version of {@see wp_category_checklist()}.
+ * Taxonomy-independent version of wp_category_checklist().
*
* @since 3.0.0
- *
- * @todo Properly document optional default arguments.
- *
- * @param int $post_id Post ID.
- * @param array $args Arguments to form the terms checklist.
+ * @since 4.4.0 Introduced the `$echo` argument.
+ *
+ * @param int $post_id Optional. Post ID. Default 0.
+ * @param array|string $args {
+ * Optional. Array or string of arguments for generating a terms checklist. Default empty array.
+ *
+ * @type int $descendants_and_self ID of the category to output along with its descendants.
+ * Default 0.
+ * @type array $selected_cats List of categories to mark as checked. Default false.
+ * @type array $popular_cats List of categories to receive the "popular-category" class.
+ * Default false.
+ * @type object $walker Walker object to use to build the output.
+ * Default is a Walker_Category_Checklist instance.
+ * @type string $taxonomy Taxonomy to generate the checklist for. Default 'category'.
+ * @type bool $checked_ontop Whether to move checked items out of the hierarchy and to
+ * the top of the list. Default true.
+ * @type bool $echo Whether to echo the generated markup. False to return the markup instead
+ * of echoing it. Default true.
+ * }
*/
function wp_terms_checklist( $post_id = 0, $args = array() ) {
$defaults = array(
@@ -159,7 +81,8 @@ function wp_terms_checklist( $post_id = 0, $args = array() ) {
'popular_cats' => false,
'walker' => null,
'taxonomy' => 'category',
- 'checked_ontop' => true
+ 'checked_ontop' => true,
+ 'echo' => true,
);
/**
@@ -176,7 +99,7 @@ function wp_terms_checklist( $post_id = 0, $args = array() ) {
$r = wp_parse_args( $params, $defaults );
- if ( empty( $r['walker'] ) || ! is_a( $r['walker'], 'Walker' ) ) {
+ if ( empty( $r['walker'] ) || ! ( $r['walker'] instanceof Walker ) ) {
$walker = new Walker_Category_Checklist;
} else {
$walker = $r['walker'];
@@ -190,6 +113,8 @@ function wp_terms_checklist( $post_id = 0, $args = array() ) {
$tax = get_taxonomy( $taxonomy );
$args['disabled'] = ! current_user_can( $tax->cap->assign_terms );
+ $args['list_only'] = ! empty( $r['list_only'] );
+
if ( is_array( $r['selected_cats'] ) ) {
$args['selected_cats'] = $r['selected_cats'];
} elseif ( $post_id ) {
@@ -220,12 +145,14 @@ function wp_terms_checklist( $post_id = 0, $args = array() ) {
$categories = (array) get_terms( $taxonomy, array( 'get' => 'all' ) );
}
+ $output = '';
+
if ( $r['checked_ontop'] ) {
// Post process $categories rather than adding an exclude to the get_terms() query to keep the query the same across all posts (for any query cache)
$checked_categories = array();
$keys = array_keys( $categories );
- foreach( $keys as $k ) {
+ foreach ( $keys as $k ) {
if ( in_array( $categories[$k]->term_id, $args['selected_cats'] ) ) {
$checked_categories[] = $categories[$k];
unset( $categories[$k] );
@@ -233,10 +160,16 @@ function wp_terms_checklist( $post_id = 0, $args = array() ) {
}
// Put checked cats on top
- echo call_user_func_array( array( $walker, 'walk' ), array( $checked_categories, 0, $args ) );
+ $output .= 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 ) );
+ $output .= call_user_func_array( array( $walker, 'walk' ), array( $categories, 0, $args ) );
+
+ if ( $r['echo'] ) {
+ echo $output;
+ }
+
+ return $output;
}
/**
@@ -250,7 +183,7 @@ function wp_terms_checklist( $post_id = 0, $args = array() ) {
* @since 2.5.0
*
* @param string $taxonomy Taxonomy to retrieve terms from.
- * @param int $default Unused.
+ * @param int $default Not used.
* @param int $number Number of terms to retrieve. Defaults to 10.
* @param bool $echo Optionally output the list as well. Defaults to true.
* @return array List of popular term IDs.
@@ -292,7 +225,7 @@ function wp_popular_terms_checklist( $taxonomy, $default = 0, $number = 10, $ech
}
/**
- * {@internal Missing Short Description}}
+ * Outputs a link category checklist element.
*
* @since 2.5.1
*
@@ -301,11 +234,14 @@ function wp_popular_terms_checklist( $taxonomy, $default = 0, $number = 10, $ech
function wp_link_category_checklist( $link_id = 0 ) {
$default = 1;
+ $checked_categories = array();
+
if ( $link_id ) {
$checked_categories = wp_get_link_cats( $link_id );
// No selected categories, strange
- if ( ! count( $checked_categories ) )
+ if ( ! count( $checked_categories ) ) {
$checked_categories[] = $default;
+ }
} else {
$checked_categories[] = $default;
}
@@ -325,13 +261,12 @@ function wp_link_category_checklist( $link_id = 0 ) {
}
}
-// adds hidden fields with the data for use in the inline editor for posts and pages
/**
- * {@internal Missing Short Description}}
+ * Adds hidden fields with the data for use in the inline editor for posts and pages.
*
* @since 2.7.0
*
- * @param WP_Post $post
+ * @param WP_Post $post Post object.
*/
function get_inline_data($post) {
$post_type_object = get_post_type_object($post->post_type);
@@ -343,8 +278,9 @@ function get_inline_data($post) {
/** This filter is documented in wp-admin/edit-tag-form.php */
echo '