WordPress.org

Make WordPress Core


Ignore:
Timestamp:
08/11/2010 09:54:51 PM (10 years ago)
Author:
scribu
Message:

Ajaxify list-type screens in the admin. See #14579

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/admin-ajax.php

    r15471 r15491  
    5151if ( isset( $_GET['action'] ) ) :
    5252switch ( $action = $_GET['action'] ) :
     53case 'fetch-list' :
     54    require_once( './includes/default-list-tables.php' );
     55
     56    $class = $_GET['list_args']['class'];
     57
     58    if ( class_exists( $class ) ) {
     59        global $current_screen;
     60        $current_screen = (object) $_GET['list_args']['screen'];
     61        $table = new $class;
     62        $table->ajax_response();
     63    }
     64
     65    die('-1');
     66    break;
    5367case 'ajax-tag-search' :
    5468    if ( !current_user_can( 'edit_posts' ) )
     
    516530    $x->send();
    517531    break;
    518 case 'add-link-cat' : // From Blogroll -> Categories
    519     check_ajax_referer( 'add-link-category' );
    520     if ( !current_user_can( 'manage_categories' ) )
    521         die('-1');
    522 
    523     if ( '' === trim($_POST['name']) ) {
    524         $x = new WP_Ajax_Response( array(
    525             'what' => 'link-cat',
    526             'id' => new WP_Error( 'name', __('You did not enter a category name.') )
    527         ) );
    528         $x->send();
    529     }
    530 
    531     $r = wp_insert_term($_POST['name'], 'link_category', $_POST );
    532     if ( is_wp_error( $r ) ) {
    533         $x = new WP_AJAX_Response( array(
    534             'what' => 'link-cat',
    535             'id' => $r
    536         ) );
    537         $x->send();
    538     }
    539 
    540     extract($r, EXTR_SKIP);
    541 
    542     if ( !$link_cat = link_cat_row( $term_id ) )
    543         die('0');
    544 
    545     $x = new WP_Ajax_Response( array(
    546         'what' => 'link-cat',
    547         'id' => $term_id,
    548         'position' => -1,
    549         'data' => $link_cat
    550     ) );
    551     $x->send();
    552     break;
    553 case 'add-tag' : // From Manage->Tags
     532case 'add-tag' :
    554533    check_ajax_referer( 'add-tag' );
    555534    $post_type = !empty($_POST['post_type']) ? $_POST['post_type'] : 'post';
     
    557536    $tax = get_taxonomy($taxonomy);
    558537
     538    if ( !current_user_can( $tax->cap->edit_terms ) )
     539        die('-1');
     540
    559541    $x = new WP_Ajax_Response();
    560 
    561     if ( !current_user_can( $tax->cap->edit_terms ) )
    562         die('-1');
    563542
    564543    $tag = wp_insert_term($_POST['tag-name'], $taxonomy, $_POST );
     
    578557    if ( isset($_POST['screen']) )
    579558        set_current_screen($_POST['screen']);
     559
     560    require_once( './includes/default-list-tables.php' );
     561    $table = new WP_Terms_Table( 'ajax' );
    580562
    581563    $level = 0;
     
    589571            $level++;
    590572        }
    591         $noparents = _tag_row( $tag, $level, $taxonomy );
     573        $noparents = $table->single_row( $tag, $level, $taxonomy );
    592574    }
    593575    $tag->name = $tag_full_name;
    594     $parents = _tag_row( $tag, 0, $taxonomy);
     576    $parents = $table->single_row( $tag, 0, $taxonomy);
    595577
    596578    $x->add( array(
     
    601583        'what' => 'term',
    602584        'position' => $level,
    603         'supplemental' => get_term( $tag->term_id, $taxonomy, ARRAY_A ) //Refetch as $tag has been contaminated by the full name.
     585        'supplemental' => get_term( $tag->term_id, $taxonomy, ARRAY_A ) // Refetch as $tag has been contaminated by the full name.
    604586        ) );
    605587    $x->send();
     
    643625    if ( !current_user_can( 'edit_posts' ) )
    644626        die('-1');
    645     $search = isset($_POST['s']) ? $_POST['s'] : false;
    646     $status = isset($_POST['comment_status']) ? $_POST['comment_status'] : 'all';
    647     $per_page = isset($_POST['per_page']) ?  (int) $_POST['per_page'] + 8 : 28;
    648     $start = isset($_POST['page']) ? ( intval($_POST['page']) * $per_page ) -1 : $per_page - 1;
    649     if ( 1 > $start )
    650         $start = 27;
    651 
    652     $mode = isset($_POST['mode']) ? $_POST['mode'] : 'detail';
    653     $p = isset($_POST['p']) ? $_POST['p'] : 0;
    654     $comment_type = isset($_POST['comment_type']) ? $_POST['comment_type'] : '';
    655     list($comments, $total) = _wp_get_comment_list( $status, $search, $start, 1, $p, $comment_type );
     627
     628    require_once( './includes/default-list-tables.php' );
     629    $table = new WP_Comments_Table( 'ajax' );
     630
     631    global $comments;
     632
     633    if ( !$comments )
     634        die('1');
    656635
    657636    if ( get_option('show_avatars') )
    658637        add_filter( 'comment_author', 'floated_admin_avatar' );
    659638
    660     if ( !$comments )
    661         die('1');
    662639    $x = new WP_Ajax_Response();
    663640    foreach ( (array) $comments as $comment ) {
    664641        get_comment( $comment );
    665642        ob_start();
    666             _wp_comment_row( $comment->comment_ID, $mode, $status, true, true );
     643            $table->single_row( $comment->comment_ID, $mode, $status, true, true );
    667644            $comment_list_item = ob_get_contents();
    668645        ob_end_clean();
     
    682659        die('-1');
    683660
    684     $start = isset($_POST['start']) ? intval($_POST['start']) : 0;
    685     $num = isset($_POST['num']) ? intval($_POST['num']) : 10;
    686 
    687     list($comments, $total) = _wp_get_comment_list( false, false, $start, $num, $post_ID );
     661    require_once( './includes/default-list-tables.php' );
     662    $table = new WP_Comments_Table( 'ajax' );
     663
     664    global $comments;
    688665
    689666    if ( !$comments )
     
    695672        get_comment( $comment );
    696673        ob_start();
    697             _wp_comment_row( $comment->comment_ID, 'single', false, false );
     674            $table->single_row( $comment->comment_ID, 'single', false, false );
    698675            $comment_list_item .= ob_get_contents();
    699676        ob_end_clean();
     
    707684case 'replyto-comment' :
    708685    check_ajax_referer( $action, '_ajax_nonce-replyto-comment' );
     686
     687    require_once( './includes/default-list-tables.php' );
     688    $table = new WP_Comments_Table( 'ajax' );
    709689
    710690    $comment_post_ID = (int) $_POST['comment_post_ID'];
     
    760740            _wp_dashboard_recent_comments_row( $comment, false );
    761741        } else {
    762             _wp_comment_row( $comment->comment_ID, $mode, false, $checkbox );
     742            $table->single_row( $comment->comment_ID, $mode, false, $checkbox );
    763743        }
    764744        $comment_list_item = ob_get_contents();
     
    796776        add_filter( 'comment_author', 'floated_admin_avatar' );
    797777
    798     $x = new WP_Ajax_Response();
     778    require_once( './includes/default-list-tables.php' );
     779    $table = new WP_Comments_Table( 'ajax' );
    799780
    800781    ob_start();
    801         _wp_comment_row( $comment_id, $mode, $comments_listing, $checkbox );
     782        $table->single_row( $comment_id, $mode, $comments_listing, $checkbox );
    802783        $comment_list_item = ob_get_contents();
    803784    ob_end_clean();
     785
     786    $x = new WP_Ajax_Response();
    804787
    805788    $x->add( array(
     
    942925    $user_object = new WP_User( $user_id );
    943926
     927    require_once( './includes/default-list-tables.php' );
     928    $table = new WP_Users_Table( 'ajax' );
     929
    944930    $x = new WP_Ajax_Response( array(
    945931        'what' => 'user',
    946932        'id' => $user_id,
    947         'data' => user_row( $user_object, '', $user_object->roles[0] ),
     933        'data' => $table->single_row( $user_object, '', $user_object->roles[0] ),
    948934        'supplemental' => array(
    949935            'show-link' => sprintf(__( 'User <a href="#%s">%s</a> added' ), "user-$user_id", $user_object->user_login),
     
    12321218    edit_post();
    12331219
    1234     if ( in_array( $_POST['post_type'], get_post_types( array( 'show_ui' => true ) ) ) ) {
    1235         $post = array();
    1236         $post[] = get_post($_POST['post_ID']);
    1237         if ( is_post_type_hierarchical( $_POST['post_type'] ) ) {
    1238             page_rows( $post );
    1239         } else {
    1240             $mode = $_POST['post_view'];
    1241             post_rows( $post );
    1242         }
    1243     }
     1220    require_once( './includes/default-list-tables.php' );
     1221    $table = new WP_Posts_Table( 'ajax' );
     1222
     1223    $mode = $_POST['post_view'];
     1224    $table->display_rows( array( get_post( $_POST['post_ID'] ) ) );
    12441225
    12451226    exit;
     
    12591240        die(-1);
    12601241
    1261     switch ($_POST['tax_type']) {
    1262         case 'link-cat' :
    1263             $updated = wp_update_term($id, 'link_category', $_POST);
    1264 
    1265             if ( $updated && !is_wp_error($updated) )
    1266                 echo link_cat_row($updated['term_id']);
    1267             else
    1268                 die( __('Category not updated.') );
    1269 
    1270             break;
    1271         case 'tag' :
    1272             $taxonomy = !empty($_POST['taxonomy']) ? $_POST['taxonomy'] : 'post_tag';
    1273 
    1274             $tag = get_term( $id, $taxonomy );
    1275             $_POST['description'] = $tag->description;
    1276 
    1277             $updated = wp_update_term($id, $taxonomy, $_POST);
    1278             if ( $updated && !is_wp_error($updated) ) {
    1279                 $tag = get_term( $updated['term_id'], $taxonomy );
    1280                 if ( !$tag || is_wp_error( $tag ) ) {
    1281                     if ( is_wp_error($tag) && $tag->get_error_message() )
    1282                         die( $tag->get_error_message() );
    1283                     die( __('Item not updated.') );
    1284                 }
    1285 
    1286                 set_current_screen( 'edit-' . $taxonomy );
    1287 
    1288                 echo _tag_row($tag, 0, $taxonomy);
    1289             } else {
    1290                 if ( is_wp_error($updated) && $updated->get_error_message() )
    1291                     die( $updated->get_error_message() );
    1292                 die( __('Item not updated.') );
    1293             }
    1294 
    1295             break;
     1242    $taxonomy = !empty($_POST['taxonomy']) ? $_POST['taxonomy'] : 'post_tag';
     1243
     1244    $tag = get_term( $id, $taxonomy );
     1245    $_POST['description'] = $tag->description;
     1246
     1247    $updated = wp_update_term($id, $taxonomy, $_POST);
     1248    if ( $updated && !is_wp_error($updated) ) {
     1249        $tag = get_term( $updated['term_id'], $taxonomy );
     1250        if ( !$tag || is_wp_error( $tag ) ) {
     1251            if ( is_wp_error($tag) && $tag->get_error_message() )
     1252                die( $tag->get_error_message() );
     1253            die( __('Item not updated.') );
     1254        }
     1255
     1256        set_current_screen( 'edit-' . $taxonomy );
     1257
     1258        require_once( './includes/default-list-tables.php' );
     1259        $table = new WP_Terms_Table( 'ajax' );
     1260
     1261        echo $table->single_row( $tag, 0, $taxonomy );
     1262    } else {
     1263        if ( is_wp_error($updated) && $updated->get_error_message() )
     1264            die( $updated->get_error_message() );
     1265        die( __('Item not updated.') );
    12961266    }
    12971267
Note: See TracChangeset for help on using the changeset viewer.