WordPress.org

Make WordPress Core

Ticket #7725: 7725.2.diff

File 7725.2.diff, 14.0 KB (added by ryan, 6 years ago)

With inline edit support

  • wp-includes/script-loader.php

     
    257257                        'uid' => $userid, 
    258258                        'time' => time() 
    259259                ) ); 
     260 
     261                $scripts->add( 'posts', '/wp-admin/js/posts.js', array('columns'), '20080910' ); 
     262 
     263                $scripts->add( 'columns', '/wp-admin/js/columns.js', false, '20080910' ); 
     264                $scripts->localize( 'columns', 'columnsL10n', array( 
     265                        'requestFile' => admin_url('admin-ajax.php'), 
     266                ) ); 
    260267        } 
    261268} 
    262269 
  • wp-admin/admin-ajax.php

     
    704704        if ( is_array($hidden) ) 
    705705                update_usermeta($current_user->ID, 'meta-box-hidden_'.$page, $hidden); 
    706706break; 
     707case 'hidden-columns' : 
     708        check_ajax_referer( 'hiddencolumns', 'hiddencolumnsnonce' ); 
     709        $hidden = isset( $_POST['hidden'] )? $_POST['hidden'] : ''; 
     710        $hidden = explode( ',', $_POST['hidden'] ); 
     711        $page = isset( $_POST['page'] )? $_POST['page'] : ''; 
     712        if ( !preg_match( '/^[a-z-]+$/', $page ) ) { 
     713                die(-1); 
     714        } 
     715        $current_user = wp_get_current_user(); 
     716        if ( is_array($hidden) ) 
     717                update_usermeta($current_user->ID, "manage-$page-columns-hidden", $hidden); 
    707718case 'get-permalink': 
    708719        check_ajax_referer( 'getpermalink', 'getpermalinknonce' ); 
    709720        $post_id = isset($_POST['post_id'])? intval($_POST['post_id']) : 0; 
  • wp-admin/includes/template.php

     
    416416 
    417417        echo '<tr id="inline-edit" style="display: none">'; 
    418418        $columns = $type == 'post' ? wp_manage_posts_columns() : wp_manage_pages_columns(); 
     419        $hidden = (array) get_user_option( "manage-$type-columns-hidden" ); 
    419420        foreach($columns as $column_name=>$column_display_name) { 
     421                $class = "class=\"$column_name column-$column_name\""; 
    420422 
     423                $style = ''; 
     424                if ( in_array($column_name, $hidden) ) 
     425                        $style = ' style="display:none;"'; 
     426 
     427                $attributes = "$class$style"; 
     428 
    421429                switch($column_name) { 
    422430 
    423431                        case 'cb': ?> 
     
    426434                          break; 
    427435 
    428436                        case 'modified': 
    429                         case 'date': ?> 
    430                                 <td class="date"> 
     437                        case 'date': 
     438                                $attributes = 'class="date column-date"' . $style; 
     439                        ?> 
     440                                <td class="date"<?php echo $style ?>> 
    431441                                        <?php touch_time(1, 1, 4, 1); ?> 
    432442                                </td> 
    433443                                <?php 
    434444                                break; 
    435445 
    436                         case 'title': ?> 
    437                                 <td class="<?php echo $type ?>-title"> 
     446                        case 'title': 
     447                                $attributes = "class=\"$type-title column-title\"" . $style; 
     448                        ?> 
     449                                <td <?php echo $attributes ?>> 
    438450                                        <div class="title"> 
    439451                                                <input type="text" name="post_title" class="title" value="" /><br /> 
    440452                                                <label><?php _e('Slug'); ?></label><input type="text" name="post_name" value="" class="slug" /> 
    441453                                        </div> 
    442                                         <?php if($type == 'page'): ?> 
     454                                        <?php if ($type == 'page'): ?> 
    443455                                        <div class="other"> 
    444456                                                <label><?php _e('Parent'); ?></label> 
    445457                                                <select name="post_parent"> 
     
    475487                                break; 
    476488 
    477489                        case 'categories': ?> 
    478                                 <td class="categories"> 
     490                                <td <?php echo $attributes ?>> 
    479491                                        <ul class="categories"> 
    480492                                                <?php wp_category_checklist() ?> 
    481493                                        </ul> 
     
    484496                                break; 
    485497 
    486498                        case 'tags': ?> 
    487                                 <td class="tags"> 
     499                                <td <?php echo $attributes ?>> 
    488500                                        <textarea name="tags_input"></textarea> 
    489501                                </td> 
    490502                                <?php 
    491503                                break; 
    492504 
    493                         case 'comments': ?> 
    494                                 <td class="comments num"> 
     505                        case 'comments': 
     506                                $attributes = 'class="comments column-comments num"' . $style; 
     507                         ?> 
     508                                <td <?php echo $attributes ?>> 
    495509                                        <input title="Allow Comments" type="checkbox" name="comment_status" value="open" /><br /> 
    496510                                        <input title="Allow Pings" type="checkbox" name="ping_status" value="open" /> 
    497511                                </td> 
     
    499513                                break; 
    500514 
    501515                        case 'author': ?> 
    502                                 <td class="author"> 
     516                                <td <?php echo $attributes ?>> 
    503517                                        <?php 
    504518                                        $authors = get_editable_user_ids( $current_user->id ); // TODO: ROLE SYSTEM 
    505519                                        if ( $authors && count( $authors ) > 1 ) { 
     
    513527                                break; 
    514528 
    515529                        case 'status': ?> 
    516                                 <td class="status"> 
     530                                <td <?php echo $attributes ?>> 
    517531                                        <select name="post_status"> 
    518532                                                <?php if ( current_user_can('publish_posts') ) : // Contributors only get "Unpublished" and "Pending Review" ?> 
    519533                                                <option value='publish'><?php _e('Published') ?></option> 
     
    674688        <tr id='post-<?php echo $post->ID; ?>' class='<?php echo trim( $class . ' author-' . $post_owner . ' status-' . $post->post_status ); ?>' valign="top"> 
    675689<?php 
    676690        $posts_columns = wp_manage_posts_columns(); 
    677         foreach($posts_columns as $column_name=>$column_display_name) { 
     691        $hidden = (array) get_user_option( 'manage-post-columns-hidden' ); 
     692        foreach ( $posts_columns as $column_name=>$column_display_name ) { 
     693                $class = "class=\"$column_name column-$column_name\""; 
    678694 
    679                 switch($column_name) { 
     695                $style = ''; 
     696                if ( in_array($column_name, $hidden) ) 
     697                        $style = ' style="display:none;"'; 
    680698 
     699                $attributes = "$class$style"; 
     700 
     701                switch ($column_name) { 
     702 
    681703                case 'cb': 
    682704                ?> 
    683705                <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> 
     
    686708 
    687709                case 'modified': 
    688710                case 'date': 
     711                        $attributes = 'class="date column-date"' . $style; 
    689712                        if ( '0000-00-00 00:00:00' == $post->post_date && 'date' == $column_name ) { 
    690713                                $t_time = $h_time = __('Unpublished'); 
    691714                        } else { 
     
    709732                        } 
    710733 
    711734                        if ( 'excerpt' == $mode ) { ?> 
    712                 <td class="date"><?php echo apply_filters('post_date_column_time', $t_time, $post, $column_name, $mode) ?></td> 
     735                <td <?php echo $attributes ?>><?php echo apply_filters('post_date_column_time', $t_time, $post, $column_name, $mode) ?></td> 
    713736                <?php } else { ?> 
    714                 <td class="date"><abbr title="<?php echo $t_time ?>"><?php echo apply_filters('post_date_column_time', $h_time, $post, $column_name, $mode) ?></abbr></td> 
     737                <td <?php echo $attributes ?>><abbr title="<?php echo $t_time ?>"><?php echo apply_filters('post_date_column_time', $h_time, $post, $column_name, $mode) ?></abbr></td> 
    715738                <?php } 
    716739                break; 
    717740 
    718741                case 'title': 
     742                        $attributes = 'class="post-title column-title"' . $style; 
    719743                ?> 
    720                 <td class="post-title"><strong><?php if ( current_user_can( 'edit_post', $post->ID ) ) { ?><a class="row-title" href="<?php echo $edit_link; ?>" title="<?php echo attribute_escape(sprintf(__('Edit "%s"'), $title)); ?>"><?php echo $title ?></a><?php } else { echo $title; } ?></strong> 
     744                <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 attribute_escape(sprintf(__('Edit "%s"'), $title)); ?>"><?php echo $title ?></a><?php } else { echo $title; } ?></strong> 
    721745                <?php 
    722746                        if ( !empty($post->post_password) ) { _e(' &#8212; <strong>Protected</strong>'); } elseif ('private' == $post->post_status) { _e(' &#8212; <strong>Private</strong>'); } 
    723747 
     
    742766 
    743767                case 'categories': 
    744768                ?> 
    745                 <td class="categories"><?php 
     769                <td <?php echo $attributes ?>><?php 
    746770                        $categories = get_the_category(); 
    747771                        if ( !empty( $categories ) ) { 
    748772                                $out = array(); 
     
    758782 
    759783                case 'tags': 
    760784                ?> 
    761                 <td class="tags"><?php 
     785                <td <?php echo $attributes ?>><?php 
    762786                        $tags = get_the_tags(); 
    763787                        if ( !empty( $tags ) ) { 
    764788                                $out = array(); 
     
    773797                break; 
    774798 
    775799                case 'comments': 
     800                        $attributes = 'class="comments column-comments num"' . $style; 
    776801                ?> 
    777                 <td class="comments num"><div class="post-com-count-wrapper"> 
     802                <td <?php echo $attributes ?>><div class="post-com-count-wrapper"> 
    778803                <?php 
    779804                        $pending_phrase = sprintf( __('%s pending'), number_format( $pending_comments ) ); 
    780805                        if ( $pending_comments ) 
     
    789814 
    790815                case 'author': 
    791816                ?> 
    792                 <td class="author"><a href="edit.php?author=<?php the_author_ID(); ?>"><?php the_author() ?></a></td> 
     817                <td <?php echo $attributes ?>><a href="edit.php?author=<?php the_author_ID(); ?>"><?php the_author() ?></a></td> 
    793818                <?php 
    794819                break; 
    795820 
    796821                case 'status': 
    797822                ?> 
    798                 <td class="status"> 
     823                <td <?php echo $attributes ?>> 
    799824                <a href="<?php the_permalink(); ?>" title="<?php echo attribute_escape(sprintf(__('View "%s"'), $title)); ?>" rel="permalink"> 
    800825                <?php 
    801826                        switch ( $post->post_status ) { 
     
    19171942        }        
    19181943} 
    19191944 
     1945function manage_columns_prefs($page) { 
     1946        if ( 'post' == $page ) 
     1947                $columns = wp_manage_posts_columns(); 
     1948        elseif ( 'page' == $page ) 
     1949                $columns = wp_manage_pages_columns(); 
     1950        elseif ( 'media' == $page ) 
     1951                $columns = wp_manage_media_columns(); 
     1952        else return; 
     1953 
     1954        $hidden = (array) get_user_option( "manage-$page-columns-hidden" ); 
     1955 
     1956        foreach ( $columns as $column => $title ) { 
     1957                // Can't hide these 
     1958                if ( 'cb' == $column || 'title' == $column ) 
     1959                        continue; 
     1960                if ( 'comments' == $column ) 
     1961                        $title = __('Comments'); 
     1962                $id = "$column-hide"; 
     1963                echo '<label for="' . $id . '">'; 
     1964                echo '<input class="hide-column-tog" name="' . $id . '" type="checkbox" id="' . $id . '" value="' . $column . '"' . (! in_array($column, $hidden) ? ' checked="checked"' : '') . ' />'; 
     1965                echo "$title</label>\n"; 
     1966        } 
     1967} 
     1968 
    19201969?> 
  • wp-admin/js/posts.js

     
     1jQuery(document).ready( function($) { 
     2        columns.init('post'); 
     3 
     4        // Edit Settings 
     5        $('#show-settings-link').click(function () { 
     6                $('#edit-settings').slideDown('normal', function(){ 
     7                        $('#show-settings-link').hide(); 
     8                        $('#hide-settings-link').show(); 
     9                         
     10                }); 
     11                $('#show-settings').addClass('show-settings-opened'); 
     12                return false; 
     13        }); 
     14         
     15        $('#hide-settings-link').click(function () { 
     16                $('#edit-settings').slideUp('normal', function(){ 
     17                        $('#hide-settings-link').hide(); 
     18                        $('#show-settings-link').show(); 
     19                        $('#show-settings').removeClass('show-settings-opened'); 
     20                }); 
     21                 
     22                return false; 
     23        }); 
     24}); 
     25 No newline at end of file 
  • wp-admin/js/columns.js

    Property changes on: wp-admin/js/posts.js
    ___________________________________________________________________
    Name: svn:eol-stye
       + native
    
     
     1(function($) { 
     2        columns = { 
     3                init : function(page) { 
     4                        $('.hide-column-tog').click( function() { 
     5                                var column = jQuery(this).val(); 
     6                                var show = jQuery(this).attr('checked'); 
     7                                if ( show ) { 
     8                                        jQuery('.column-' + column).show(); 
     9                                } else { 
     10                                        jQuery('.column-' + column).hide(); 
     11                                } 
     12                                save_manage_columns_state(page); 
     13                        } ); 
     14 
     15                        if ( $.browser.msie ) { 
     16                                $('#side-sortables').append( '<div id="make-it-tall"></div>' ); 
     17                        } else { 
     18                                $('#side-sortables').append( '<div id="make-it-tall" style="margin-bottom: -2000px; padding-bottom: 2001px"></div>' ); 
     19                        } 
     20                        $('#wpbody-content').css( 'overflow', 'hidden' ); 
     21                } 
     22        } 
     23}(jQuery)); 
     24 
     25function save_manage_columns_state(page) { 
     26        var hidden = jQuery('.manage-column').filter(':hidden').map(function() { return this.id; }).get().join(','); 
     27        jQuery.post(columnsL10n.requestFile, { 
     28                action: 'hidden-columns', 
     29                hidden: hidden, 
     30                hiddencolumnsnonce: jQuery('#hiddencolumnsnonce').val(), 
     31                page: page 
     32        }); 
     33} 
     34 No newline at end of file 
  • wp-admin/edit-post-rows.php

    Property changes on: wp-admin/js/columns.js
    ___________________________________________________________________
    Name: svn:eol-stye
       + native
    
     
    1212        <thead> 
    1313        <tr> 
    1414 
    15 <?php $posts_columns = wp_manage_posts_columns(); ?> 
    16 <?php foreach($posts_columns as $post_column_key => $column_display_name) { 
     15<?php 
     16$posts_columns = wp_manage_posts_columns();  
     17$hidden = (array) get_user_option( 'manage-post-columns-hidden' ); 
     18foreach ( $posts_columns as $post_column_key => $column_display_name ) { 
    1719        if ( 'cb' === $post_column_key ) 
    1820                $class = ' class="check-column"'; 
    1921        elseif ( 'comments' === $post_column_key ) 
    20                 $class = ' class="num"'; 
     22                $class = ' class="manage-column column-comments num"'; 
     23        elseif ( 'modified' === $post_column_key ) 
     24                $class = ' class="manage-column column-date"'; 
    2125        else 
    22                 $class = ''; 
     26                $class = " class=\"manage-column column-$post_column_key\""; 
     27 
     28        $style = ''; 
     29        if ( in_array($post_column_key, $hidden) ) 
     30                $style = ' style="display:none;"'; 
    2331?> 
    24         <th scope="col"<?php echo $class; ?>><?php echo $column_display_name; ?></th> 
     32        <th scope="col"<?php echo "id=\"$post_column_key\""; echo $class; echo $style?>><?php echo $column_display_name; ?></th> 
    2533<?php } ?> 
    2634 
    2735        </tr> 
  • wp-admin/edit.php

     
    5151$parent_file = 'edit.php'; 
    5252wp_enqueue_script('admin-forms'); 
    5353wp_enqueue_script('inline-edit'); 
     54wp_enqueue_script('posts'); 
    5455 
    55  
    5656list($post_stati, $avail_post_stati) = wp_edit_posts_query(); 
    5757 
    5858if ( 1 == count($posts) && is_singular() ) { 
     
    7474<div class="wrap"> 
    7575 
    7676<form id="posts-filter" action="" method="get"> 
     77 
     78<div id="show-settings"><a href="#edit_settings" id="show-settings-link" class="hide-if-no-js"><?php _e('Show Settings') ?></a> 
     79<a href="#edit_settings" id="hide-settings-link" class="hide-if-js hide-if-no-js"><?php _e('Hide Settings') ?></a></div> 
     80 
     81<div id="edit-settings" class="hide-if-js hide-if-no-js"> 
     82<div id="edit-settings-wrap"> 
     83<h5><?php _e('Show on screen') ?></h5> 
     84<div class="metabox-prefs"> 
     85<?php manage_columns_prefs('post') ?> 
     86<br class="clear" /> 
     87</div></div> 
     88</div> 
     89 
    7790<h2><?php 
    7891if ( is_single() ) { 
    7992        printf(__('Comments on %s'), apply_filters( "the_title", $post->post_title)); 
     
    226239 
    227240<?php include( 'edit-post-rows.php' ); ?> 
    228241 
     242<?php wp_nonce_field( 'hiddencolumns', 'hiddencolumnsnonce', false ); ?> 
     243 
    229244</form> 
    230245 
    231246<div id="ajax-response"></div>