WordPress.org

Make WordPress Core

Ticket #7725: 7725.diff

File 7725.diff, 11.2 KB (added by ryan, 10 years ago)

Show hide for posts page. Inline edit not yet hidden column aware.

  • 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

     
    674674        <tr id='post-<?php echo $post->ID; ?>' class='<?php echo trim( $class . ' author-' . $post_owner . ' status-' . $post->post_status ); ?>' valign="top">
    675675<?php
    676676        $posts_columns = wp_manage_posts_columns();
    677         foreach($posts_columns as $column_name=>$column_display_name) {
     677        $hidden = (array) get_user_option( 'manage-post-columns-hidden' );
     678        foreach ( $posts_columns as $column_name=>$column_display_name ) {
     679                $class = "class=\"$column_name column-$column_name\"";
    678680
    679                 switch($column_name) {
     681                $style = '';
     682                if ( in_array($column_name, $hidden) )
     683                        $style = ' style="display:none;"';
    680684
     685                $attributes = "$class$style";
     686
     687                switch ($column_name) {
     688
    681689                case 'cb':
    682690                ?>
    683691                <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>
     
    686694
    687695                case 'modified':
    688696                case 'date':
     697                        $attributes = 'class="date column-date"' . $style;
    689698                        if ( '0000-00-00 00:00:00' == $post->post_date && 'date' == $column_name ) {
    690699                                $t_time = $h_time = __('Unpublished');
    691700                        } else {
     
    709718                        }
    710719
    711720                        if ( 'excerpt' == $mode ) { ?>
    712                 <td class="date"><?php echo apply_filters('post_date_column_time', $t_time, $post, $column_name, $mode) ?></td>
     721                <td <?php echo $attributes ?>><?php echo apply_filters('post_date_column_time', $t_time, $post, $column_name, $mode) ?></td>
    713722                <?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>
     723                <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>
    715724                <?php }
    716725                break;
    717726
    718727                case 'title':
     728                        $attributes = 'class="post-title column-title"' . $style;
    719729                ?>
    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>
     730                <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>
    721731                <?php
    722732                        if ( !empty($post->post_password) ) { _e(' &#8212; <strong>Protected</strong>'); } elseif ('private' == $post->post_status) { _e(' &#8212; <strong>Private</strong>'); }
    723733
     
    742752
    743753                case 'categories':
    744754                ?>
    745                 <td class="categories"><?php
     755                <td <?php echo $attributes ?>><?php
    746756                        $categories = get_the_category();
    747757                        if ( !empty( $categories ) ) {
    748758                                $out = array();
     
    758768
    759769                case 'tags':
    760770                ?>
    761                 <td class="tags"><?php
     771                <td <?php echo $attributes ?>><?php
    762772                        $tags = get_the_tags();
    763773                        if ( !empty( $tags ) ) {
    764774                                $out = array();
     
    773783                break;
    774784
    775785                case 'comments':
     786                        $attributes = 'class="comments column-comments num"' . $style;
    776787                ?>
    777                 <td class="comments num"><div class="post-com-count-wrapper">
     788                <td <?php echo $attributes ?>><div class="post-com-count-wrapper">
    778789                <?php
    779790                        $pending_phrase = sprintf( __('%s pending'), number_format( $pending_comments ) );
    780791                        if ( $pending_comments )
     
    789800
    790801                case 'author':
    791802                ?>
    792                 <td class="author"><a href="edit.php?author=<?php the_author_ID(); ?>"><?php the_author() ?></a></td>
     803                <td <?php echo $attributes ?>><a href="edit.php?author=<?php the_author_ID(); ?>"><?php the_author() ?></a></td>
    793804                <?php
    794805                break;
    795806
    796807                case 'status':
    797808                ?>
    798                 <td class="status">
     809                <td <?php echo $attributes ?>>
    799810                <a href="<?php the_permalink(); ?>" title="<?php echo attribute_escape(sprintf(__('View "%s"'), $title)); ?>" rel="permalink">
    800811                <?php
    801812                        switch ( $post->post_status ) {
     
    19171928        }       
    19181929}
    19191930
     1931function manage_columns_prefs($page) {
     1932        if ( 'post' == $page )
     1933                $columns = wp_manage_posts_columns();
     1934        elseif ( 'page' == $page )
     1935                $columns = wp_manage_pages_columns();
     1936        elseif ( 'media' == $page )
     1937                $columns = wp_manage_media_columns();
     1938        else return;
     1939
     1940        $hidden = (array) get_user_option( "manage-$page-columns-hidden" );
     1941
     1942        foreach ( $columns as $column => $title ) {
     1943                // Can't hide these
     1944                if ( 'cb' == $column || 'title' == $column )
     1945                        continue;
     1946                if ( 'comments' == $column )
     1947                        $title = __('Comments');
     1948                $id = "$column-hide";
     1949                echo '<label for="' . $id . '">';
     1950                echo '<input class="hide-column-tog" name="' . $id . '" type="checkbox" id="' . $id . '" value="' . $column . '"' . (! in_array($column, $hidden) ? ' checked="checked"' : '') . ' />';
     1951                echo "$title</label>\n";
     1952        }
     1953}
     1954
    19201955?>
  • 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>