Changeset 12798 for trunk/wp-admin/admin-ajax.php
- Timestamp:
- 01/22/2010 07:30:05 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-admin/admin-ajax.php
r12797 r12798 201 201 } 202 202 203 function _wp_ajax_add_hierarchical_term() { 204 $action = $_POST['action']; 205 $taxonomy = get_taxonomy(substr($action, 4)); 206 check_ajax_referer( $action ); 207 if ( !current_user_can( 'manage_categories' ) ) 208 die('-1'); 209 $names = explode(',', $_POST['new'.$taxonomy->name]); 210 $parent = isset($_POST['new'.$taxonomy->name.'_parent']) ? (int) $_POST['new'.$taxonomy->name.'_parent'] : 0; 211 if ( 0 > $parent ) 212 $parent = 0; 213 if ( $taxonomy->name == 'category' ) 214 $post_category = isset($_POST['post_category']) ? (array) $_POST['post_category'] : array(); 215 else 216 $post_category = ( isset($_POST['tax_input']) && isset($_POST['tax_input'][$taxonomy->name]) ) ? (array) $_POST['tax_input'][$taxonomy->name] : array(); 217 $checked_categories = array_map( 'absint', (array) $post_category ); 218 $popular_ids = wp_popular_terms_checklist($taxonomy->name, 0, 10, false); 219 220 foreach ( $names as $cat_name ) { 221 $cat_name = trim($cat_name); 222 $category_nicename = sanitize_title($cat_name); 223 if ( '' === $category_nicename ) 224 continue; 225 if ( !($cat_id = is_term($cat_name, $taxonomy->name, $parent)) ) { 226 $new_term = wp_insert_term($cat_name, $taxonomy->name, array('parent' => $parent)); 227 $cat_id = $new_term['term_id']; 228 } 229 $checked_categories[] = $cat_id; 230 if ( $parent ) // Do these all at once in a second 231 continue; 232 $category = get_term( $cat_id, $taxonomy->name ); 233 ob_start(); 234 wp_terms_checklist( 0, array( 'taxonomy' => $taxonomy->name, 'descendants_and_self' => $cat_id, 'selected_cats' => $checked_categories, 'popular_cats' => $popular_ids )); 235 $data = ob_get_contents(); 236 ob_end_clean(); 237 $add = array( 238 'what' => $taxonomy->name, 239 'id' => $cat_id, 240 'data' => str_replace( array("\n", "\t"), '', $data), 241 'position' => -1 242 ); 243 } 244 245 if ( $parent ) { // Foncy - replace the parent and all its children 246 $parent = get_term( $parent, $taxonomy->name ); 247 $term_id = $parent->term_id; 248 249 while ( $parent->parent ) { // get the top parent 250 $parent = &get_term( $parent->parent, $taxonomy->name ); 251 if ( is_wp_error( $parent ) ) 252 break; 253 $term_id = $parent->term_id; 254 } 255 256 ob_start(); 257 wp_terms_checklist( 0, array('taxonomy' => $taxonomy->name, 'descendants_and_self' => $term_id, 'selected_cats' => $checked_categories, 'popular_cats' => $popular_ids)); 258 $data = ob_get_contents(); 259 ob_end_clean(); 260 $add = array( 261 'what' => $taxonomy->name, 262 'id' => $term_id, 263 'data' => str_replace( array("\n", "\t"), '', $data), 264 'position' => -1 265 ); 266 } 267 268 ob_start(); 269 wp_dropdown_categories( array( 'taxonomy' => $taxonomy->name, 'hide_empty' => 0, 'name' => 'new'.$taxonomy->name.'_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => __('Parent category') ) ); 270 $sup = ob_get_contents(); 271 ob_end_clean(); 272 $add['supplemental'] = array( 'newcat_parent' => $sup ); 273 274 $x = new WP_Ajax_Response( $add ); 275 $x->send(); 276 } 277 203 278 $id = isset($_POST['id'])? (int) $_POST['id'] : 0; 204 279 switch ( $action = $_POST['action'] ) : … … 410 485 die( '0' ); 411 486 break; 412 case 'add-category' : // On the Fly413 check_ajax_referer( $action );414 if ( !current_user_can( 'manage_categories' ) )415 die('-1');416 $names = explode(',', $_POST['newcat']);417 if ( 0 > $parent = (int) $_POST['newcat_parent'] )418 $parent = 0;419 $post_category = isset($_POST['post_category'])? (array) $_POST['post_category'] : array();420 $checked_categories = array_map( 'absint', (array) $post_category );421 $popular_ids = wp_popular_terms_checklist('category', 0, 10, false);422 423 foreach ( $names as $cat_name ) {424 $cat_name = trim($cat_name);425 $category_nicename = sanitize_title($cat_name);426 if ( '' === $category_nicename )427 continue;428 $cat_id = wp_create_category( $cat_name, $parent );429 $checked_categories[] = $cat_id;430 if ( $parent ) // Do these all at once in a second431 continue;432 $category = get_category( $cat_id );433 ob_start();434 wp_category_checklist( 0, $cat_id, $checked_categories, $popular_ids );435 $data = ob_get_contents();436 ob_end_clean();437 $add = array(438 'what' => 'category',439 'id' => $cat_id,440 'data' => str_replace( array("\n", "\t"), '', $data),441 'position' => -1442 );443 }444 if ( $parent ) { // Foncy - replace the parent and all its children445 $parent = get_category( $parent );446 $term_id = $parent->term_id;447 448 while ( $parent->parent ) { // get the top parent449 $parent = &get_category( $parent->parent );450 if ( is_wp_error( $parent ) )451 break;452 $term_id = $parent->term_id;453 }454 455 ob_start();456 wp_category_checklist( 0, $term_id, $checked_categories, $popular_ids, null, false );457 $data = ob_get_contents();458 ob_end_clean();459 $add = array(460 'what' => 'category',461 'id' => $term_id,462 'data' => str_replace( array("\n", "\t"), '', $data),463 'position' => -1464 );465 }466 467 ob_start();468 wp_dropdown_categories( array( 'hide_empty' => 0, 'name' => 'newcat_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => __('Parent category') ) );469 $sup = ob_get_contents();470 ob_end_clean();471 $add['supplemental'] = array( 'newcat_parent' => $sup );472 473 $x = new WP_Ajax_Response( $add );474 $x->send();475 break;476 487 case 'add-link-category' : // On the Fly 477 488 check_ajax_referer( $action ); … … 512 523 } 513 524 514 if ( category_exists( trim( $_POST['cat_name'] ), $_POST['category_parent'] ) ) {525 if ( is_term( trim( $_POST['cat_name'] ), $_POST['taxonomy'], $_POST['category_parent'] ) ) { 515 526 $x = new WP_Ajax_Response( array( 516 527 'what' => 'cat', … … 530 541 } 531 542 532 if ( !$cat || (!$cat = get_ category( $cat )) )543 if ( !$cat || (!$cat = get_term( $cat, $_POST['taxonomy'] ) ) ) 533 544 die('0'); 534 545
Note: See TracChangeset
for help on using the changeset viewer.