WordPress.org

Make WordPress Core

Ticket #3945: 3945b.diff

File 3945b.diff, 17.6 KB (added by mdawaffe, 11 years ago)

for posts. all on one tab. pagination may need some work

  • wp-includes/query.php

     
    995995                }
    996996
    997997                if ( $this->is_attachment ) {
    998                         $where .= " AND (post_type = 'attachment')";
     998                        $where .= " AND post_type = 'attachment'";
    999999                } elseif ($this->is_page) {
    1000                         $where .= " AND (post_type = 'page')";
     1000                        $where .= " AND post_type = 'page'";
    10011001                } elseif ($this->is_single) {
    1002                         $where .= " AND (post_type = 'post')";
     1002                        $where .= " AND post_type = 'post'";
    10031003                } else {
    1004                         $where .= " AND (post_type = '$post_type' AND (post_status = 'publish'";
     1004                        $where .= " AND post_type = '$post_type'";
     1005                }
    10051006
     1007                if ( isset($q['post_status']) && '' != $q['post_status'] ) {
     1008                        $q_status = explode(',', $q['post_status']);
     1009                        $r_status = array();
     1010                        if ( in_array( 'draft'  , $q_status ) )
     1011                                $r_status[] = "post_status = 'draft'";
     1012                        if ( in_array( 'future' , $q_status ) )
     1013                                $r_status[] = "post_status = 'future'";
     1014                        if ( in_array( 'inherit' , $q_status ) )
     1015                                $r_status[] = "post_status = 'inherit'";
     1016                        if ( in_array( 'private', $q_status ) )
     1017                                $r_status[] = "post_status = 'private'";
     1018                        if ( in_array( 'publish', $q_status ) )
     1019                                $r_status[] = "post_status = 'publish'";
     1020                        if ( !empty($r_status) )
     1021                                $where .= " AND (" . join( ' OR ', $r_status ) . ")";
     1022                } elseif ( !$this->is_singular ) {
     1023                        $where .= " AND (post_status = 'publish'";
     1024
    10061025                        if ( is_admin() )
    10071026                                $where .= " OR post_status = 'future' OR post_status = 'draft'";
    10081027
    1009                         if ( is_user_logged_in() ) {
    1010                                 if ( 'post' == $post_type )
    1011                                         $cap = 'read_private_posts';
    1012                                 else
    1013                                         $cap = 'read_private_pages';
     1028                        $where .= current_user_can( "read_private_{$post_type}s" ) ? " OR post_status = 'private'" : " OR post_author = $user_ID AND post_status = 'private'";
    10141029
    1015                                 if ( current_user_can($cap) )
    1016                                         $where .= " OR post_status = 'private'";
    1017                                 else
    1018                                 $where .= " OR post_author = $user_ID AND post_status = 'private'";
    1019                         }
    1020 
    1021                         $where .= '))';
     1030                        $where .= ')';
    10221031                }
    10231032
    10241033                // Apply filters on where and join prior to paging so that any
  • wp-includes/link-template.php

     
    476476        $request = preg_replace('|^'. $home_root . '|', '', $request);
    477477        $request = preg_replace('|^/+|', '', $request);
    478478       
    479         if ( !$wp_rewrite->using_permalinks() ) {
     479        if ( !$wp_rewrite->using_permalinks() || is_admin() ) {
    480480                $base = trailingslashit( get_bloginfo( 'home' ) );
    481                
     481
    482482                if ( $pagenum > 1 ) {
    483483                        $result = add_query_arg( 'paged', $pagenum, $base . $request );
    484484                } else {
  • wp-includes/capabilities.php

     
    445445function current_user_can($capability) {
    446446        $current_user = wp_get_current_user();
    447447
     448        if ( empty($current_user) )
     449                return false;
     450
    448451        $args = array_slice(func_get_args(), 1);
    449452        $args = array_merge(array($capability), $args);
    450453
    451         if ( empty($current_user) )
    452                 return false;
    453 
    454454        return call_user_func_array(array(&$current_user, 'has_cap'), $args);
    455455}
    456456
  • wp-includes/classes.php

     
    33class WP {
    44        var $public_query_vars = array('m', 'p', 'posts', 'w', 'cat', 'withcomments', 'withoutcomments', 's', 'search', 'exact', 'sentence', 'debug', 'calendar', 'page', 'paged', 'more', 'tb', 'pb', 'author', 'order', 'orderby', 'year', 'monthnum', 'day', 'hour', 'minute', 'second', 'name', 'category_name', 'tag', 'feed', 'author_name', 'static', 'pagename', 'page_id', 'error', 'comments_popup', 'attachment', 'attachment_id', 'subpost', 'subpost_id', 'preview', 'robots');
    55
    6         var $private_query_vars = array('offset', 'posts_per_page', 'posts_per_archive_page', 'what_to_show', 'showposts', 'nopaging', 'post_type');
     6        var $private_query_vars = array('offset', 'posts_per_page', 'posts_per_archive_page', 'what_to_show', 'showposts', 'nopaging', 'post_type', 'post_status');
    77        var $extra_query_vars = array();
    88
    99        var $query_vars;
  • wp-admin/wp-admin.css

     
    790790        width: 320px;
    791791}
    792792
    793 #searchform {
     793#searchform fieldset {
    794794        float: left;
    795         margin-right: 1em;
    796         width: 18em;
     795        margin-right: 1.5ex;
    797796}
    798797
    799 #viewarc {
    800         float: left;
    801         width: 23em;
    802         margin-bottom: 1em;
     798#searchform #s {
     799        padding: 4px 3px;
    803800}
    804801
    805 #viewcat {
     802#searchform #post-query-submit {
    806803        float: left;
    807         width: 30em;
    808         margin-bottom: 1em;
    809804}
    810805
    811806#postcustom .updatemeta, #postcustom .deletemeta {
  • wp-admin/edit-post-rows.php

     
     1<table class="widefat">
     2        <thead>
     3        <tr>
     4
     5<?php foreach($posts_columns as $column_display_name) { ?>
     6        <th scope="col"><?php echo $column_display_name; ?></th>
     7<?php } ?>
     8
     9        </tr>
     10        </thead>
     11        <tbody id="the-list">
     12<?php
     13if ($posts) {
     14$bgcolor = '';
     15while (have_posts()) : the_post();
     16add_filter('the_title','wp_specialchars');
     17$class = ('alternate' == $class) ? '' : 'alternate';
     18?>
     19        <tr id='post-<?php echo $id; ?>' class='<?php echo $class; ?>'>
     20
     21<?php
     22
     23foreach($posts_columns as $column_name=>$column_display_name) {
     24
     25        switch($column_name) {
     26
     27        case 'id':
     28                ?>
     29                <th scope="row" style="text-align: center"><?php echo $id ?></th>
     30                <?php
     31                break;
     32
     33        case 'date':
     34                ?>
     35                <td><?php if ( '0000-00-00 00:00:00' ==$post->post_modified ) _e('Unpublished'); else the_time(__('Y-m-d \<\b\r \/\> g:i:s a')); ?></td>
     36                <?php
     37                break;
     38        case 'title':
     39                ?>
     40                <td><?php the_title() ?>
     41                <?php if ('private' == $post->post_status) _e(' - <strong>Private</strong>'); ?></td>
     42                <?php
     43                break;
     44
     45        case 'categories':
     46                ?>
     47                <td><?php the_category(','); ?></td>
     48                <?php
     49                break;
     50
     51        case 'comments':
     52                ?>
     53                <td style="text-align: center">
     54                        <?php comments_number("<a href='edit.php?p=$id&amp;c=1'>" . __('0') . '</a>', "<a href='edit.php?p=$id&amp;c=1'>" . __('1') . '</a>', "<a href='edit.php?p=$id&amp;c=1'>" . __('%') . '</a>') ?>
     55                        </td>
     56                <?php
     57                break;
     58
     59        case 'author':
     60                ?>
     61                <td><?php the_author() ?></td>
     62                <?php
     63                break;
     64
     65        case 'control_view':
     66                ?>
     67                <td><a href="<?php the_permalink(); ?>" rel="permalink" class="edit"><?php _e('View'); ?></a></td>
     68                <?php
     69                break;
     70
     71        case 'control_edit':
     72                ?>
     73                <td><?php if ( current_user_can('edit_post',$post->ID) ) { echo "<a href='post.php?action=edit&amp;post=$id' class='edit'>" . __('Edit') . "</a>"; } ?></td>
     74                <?php
     75                break;
     76
     77        case 'control_delete':
     78                ?>
     79                <td><?php if ( current_user_can('delete_post',$post->ID) ) { echo "<a href='" . wp_nonce_url("post.php?action=delete&amp;post=$id", 'delete-post_' . $post->ID) . "' class='delete' onclick=\"return deleteSomething( 'post', " . $id . ", '" . js_escape(sprintf(__("You are about to delete this post '%s'.\n'OK' to delete, 'Cancel' to stop."), get_the_title())) . "' );\">" . __('Delete') . "</a>"; } ?></td>
     80                <?php
     81                break;
     82
     83        default:
     84                ?>
     85                <td><?php do_action('manage_posts_custom_column', $column_name, $id); ?></td>
     86                <?php
     87                break;
     88        }
     89}
     90?>
     91        </tr>
     92<?php
     93endwhile;
     94} else {
     95?>
     96  <tr style='background-color: <?php echo $bgcolor; ?>'>
     97    <td colspan="8"><?php _e('No posts found.') ?></td>
     98  </tr>
     99<?php
     100} // end if ($posts)
     101?>
     102        </tbody>
     103</table>
  • wp-admin/edit.php

     
    88
    99$_GET['m'] = (int) $_GET['m'];
    1010
    11 $drafts = get_users_drafts( $user_ID );
    12 $other_drafts = get_others_drafts( $user_ID);
     11$post_stati = array('draft' => __('Draft'), 'future' => __('Future Dated'), 'private' => __('Private'), 'publish' => __('Published'));
    1312
    14 if ($drafts || $other_drafts) {
     13$post_status_q = isset($_GET['post_status']) && in_array( $_GET['post_status'], array_keys($post_stati) ) ? "&author=$user_ID&post_status=" . $_GET['post_status'] : '';
    1514?>
     15
    1616<div class="wrap">
    17 <?php if ($drafts) { ?>
    18         <p><strong><?php _e('Your Drafts:') ?></strong>
    19         <?php
    20         $i = 0;
    21         foreach ($drafts as $draft) {
    22                 if (0 != $i)
    23                         echo ', ';
    24                 $draft->post_title = apply_filters('the_title', stripslashes($draft->post_title));
    25                 if ($draft->post_title == '')
    26                         $draft->post_title = sprintf(__('Post #%s'), $draft->ID);
    27                 echo "<a href='post.php?action=edit&amp;post=$draft->ID' title='" . __('Edit this draft') . "'>$draft->post_title</a>";
    28                 ++$i;
    29                 }
    30         ?>
    31 .</p>
    32 <?php } ?>
    3317
    34 <?php if ($other_drafts) { ?>
    35         <p><strong><?php _e('Other&#8217;s Drafts:') ?></strong>
    36         <?php
    37         $i = 0;
    38         foreach ($other_drafts as $draft) {
    39                 if (0 != $i)
    40                         echo ', ';
    41                 $draft->post_title = apply_filters('the_title', stripslashes($draft->post_title));
    42                 if ($draft->post_title == '')
    43                         $draft->post_title = sprintf(__('Post #%s'), $draft->ID);
    44                 echo "<a href='post.php?action=edit&amp;post=$draft->ID' title='" . __('Edit this draft') . "'>$draft->post_title</a>";
    45                 ++$i;
    46                 }
    47         ?>
    48         .</p>
     18<?php
    4919
    50 <?php } ?>
     20wp("what_to_show=posts$post_status_q&posts_per_page=15&posts_per_archive_page=-1");
    5121
    52 </div>
    53 <?php } ?>
     22do_action('restrict_manage_posts');
    5423
    55 <div class="wrap">
    56 <h2>
    57 <?php
     24// define the columns to display, the syntax is 'internal name' => 'display name'
     25$posts_columns = array(
     26        'id'         => '<div style="text-align: center">' . __('ID') . '</div>',
     27        'date'       => __('When'),
     28        'title'      => __('Title'),
     29        'categories' => __('Categories'),
     30        'comments'   => '<div style="text-align: center">' . __('Comments') . '</div>',
     31        'author'     => __('Author')
     32);
     33$posts_columns = apply_filters('manage_posts_columns', $posts_columns);
    5834
    59 wp('what_to_show=posts&posts_per_page=15&posts_per_archive_page=-1');
     35// you can not edit these at the moment
     36$posts_columns['control_view']   = '';
     37$posts_columns['control_edit']   = '';
     38$posts_columns['control_delete'] = '';
    6039
     40?>
     41
     42<h2><?php
    6143if ( is_month() ) {
    6244        single_month_title(' ');
    6345} elseif ( is_search() ) {
     
    7052        else
    7153                _e('Previous Posts');
    7254}
    73 ?>
    74 </h2>
     55?></h2>
    7556
     57
    7658<form name="searchform" id="searchform" action="" method="get">
    77   <fieldset>
    78   <legend><?php _e('Search Posts&hellip;') ?></legend>
    79   <input type="text" name="s" id="s" value="<?php if (isset($s)) echo attribute_escape($s); ?>" size="17" />
    80   <input type="submit" name="submit" value="<?php _e('Search') ?>" class="button" />
    81   </fieldset>
    82 </form>
     59        <fieldset><legend><?php _e('Search terms&hellip;'); ?></legend>
     60                <input type="text" name="s" id="s" value="<?php if (isset($s)) echo attribute_escape($s); ?>" size="17" />
     61        </fieldset>
    8362
    84 <?php $arc_result = $wpdb->get_results("SELECT DISTINCT YEAR(post_date) AS yyear, MONTH(post_date) AS mmonth FROM $wpdb->posts WHERE post_type = 'post' ORDER BY post_date DESC");
     63        <fieldset><legend><?php _e('Post Type&hellip;'); ?></legend>
     64                <select name='post_status'>
     65                        <option<?php selected( @$_GET['post_status'], 0 ); ?> value='0'><?php _e('Any'); ?></option>
     66<?php   foreach ( $post_stati as $status => $label ) : ?>
     67                        <option<?php selected( @$_GET['post_status'], $status ); ?> value='<?php echo $status; ?>'><?php echo $label; ?></option>
     68<?php   endforeach; ?>
     69                </select>
     70        </fieldset>
    8571
    86 if ( count($arc_result) ) { ?>
     72<?php
    8773
    88 <form name="viewarc" id="viewarc" action="" method="get">
    89         <fieldset>
    90         <legend><?php _e('Browse Month&hellip;') ?></legend>
    91         <select name='m'>
    92         <?php
     74
     75$arc_query = "SELECT DISTINCT YEAR(post_date) AS yyear, MONTH(post_date) AS mmonth FROM $wpdb->posts WHERE post_type = 'post' ORDER BY post_date DESC";
     76
     77$arc_result = $wpdb->get_results( $arc_query );
     78
     79$month_count = count($arc_result);
     80
     81if ( $month_count && !( 1 == $month_count && 0 == $arc_result[0]->mmonth ) ) { ?>
     82
     83        <fieldset><legend><?php _e('Month&hellip;') ?></legend>
     84                <select name='m'>
     85                        <option<?php selected( @$_GET['m'], 0 ); ?> value='0'><?php _e('Any'); ?></option>
     86                <?php
    9387                foreach ($arc_result as $arc_row) {
    9488                        if ( $arc_row->yyear == 0 )
    9589                                continue;
     
    10498                        echo $wp_locale->get_month($arc_row->mmonth) . " $arc_row->yyear";
    10599                        echo "</option>\n";
    106100                }
    107         ?>
    108         </select>
    109                 <input type="submit" name="submit" value="<?php _e('Show Month') ?>" class="button" />
     101                ?>
     102                </select>
    110103        </fieldset>
    111 </form>
    112104
    113105<?php } ?>
    114106
    115 <form name="viewcat" id="viewcat" action="" method="get">
    116         <fieldset>
    117         <legend><?php _e('Browse Category&hellip;') ?></legend>
    118         <?php wp_dropdown_categories('show_option_all='.__('All').'&hide_empty=1&hierarchical=1&show_count=1&selected='.$cat);?>
    119         <input type="submit" name="submit" value="<?php _e('Show Category') ?>" class="button" />
     107        <fieldset><legend><?php _e('Category&hellip;') ?></legend>
     108                <?php wp_dropdown_categories('show_option_all='.__('All').'&hide_empty=1&hierarchical=1&show_count=1&selected='.$cat);?>
    120109        </fieldset>
     110        <input type="submit" id="post-query-submit" value="<?php _e('Go &#187;'); ?>" class="button" />
    121111</form>
    122112
    123 <?php do_action('restrict_manage_posts'); ?>
    124 
    125113<br style="clear:both;" />
    126114
    127115<?php
    128 // define the columns to display, the syntax is 'internal name' => 'display name'
    129 $posts_columns = array(
    130         'id'         => '<div style="text-align: center">' . __('ID') . '</div>',
    131         'date'       => __('When'),
    132         'title'      => __('Title'),
    133         'categories' => __('Categories'),
    134         'comments'   => '<div style="text-align: center">' . __('Comments') . '</div>',
    135         'author'     => __('Author')
    136 );
    137 $posts_columns = apply_filters('manage_posts_columns', $posts_columns);
     116if ( $post_status_q && ( false !== strpos($post_status_q, 'draft') || false !== strpos($post_status_q, 'private') ) ) {
     117        echo '<h3>' . __('Your Posts') . "</h3>\n";
     118        include( 'edit-post-rows.php' );
    138119
    139 // you can not edit these at the moment
    140 $posts_columns['control_view']   = '';
    141 $posts_columns['control_edit']   = '';
    142 $posts_columns['control_delete'] = '';
     120        $editable_ids = get_editable_user_ids( $user_ID );
    143121
    144 ?>
     122        if ( $editable_ids && count($editable_ids) > 1 ) {
     123                $_editable_ids = join(',', array_diff($editable_ids, array($user_ID)));
    145124
    146 <table class="widefat">
    147         <thead>
    148         <tr>
     125                $post_status_q = "&post_status=" . $_GET['post_status'];
    149126
    150 <?php foreach($posts_columns as $column_display_name) { ?>
    151         <th scope="col"><?php echo $column_display_name; ?></th>
    152 <?php } ?>
     127                unset($GLOBALS['day']); // setup_postdata does this
     128                wp("what_to_show=posts&author=$_editable_ids$post_status_q&posts_per_archive_page=-1");
    153129
    154         </tr>
    155         </thead>
    156         <tbody id="the-list">
    157 <?php
    158 if ($posts) {
    159 $bgcolor = '';
    160 while (have_posts()) : the_post();
    161 add_filter('the_title','wp_specialchars');
    162 $class = ('alternate' == $class) ? '' : 'alternate';
    163 ?>
    164         <tr id='post-<?php echo $id; ?>' class='<?php echo $class; ?>'>
    165 
    166 <?php
    167 
    168 foreach($posts_columns as $column_name=>$column_display_name) {
    169 
    170         switch($column_name) {
    171 
    172         case 'id':
    173                 ?>
    174                 <th scope="row" style="text-align: center"><?php echo $id ?></th>
    175                 <?php
    176                 break;
    177 
    178         case 'date':
    179                 ?>
    180                 <td><?php if ( '0000-00-00 00:00:00' ==$post->post_modified ) _e('Unpublished'); else the_time(__('Y-m-d \<\b\r \/\> g:i:s a')); ?></td>
    181                 <?php
    182                 break;
    183         case 'title':
    184                 ?>
    185                 <td><?php the_title() ?>
    186                 <?php if ('private' == $post->post_status) _e(' - <strong>Private</strong>'); ?></td>
    187                 <?php
    188                 break;
    189 
    190         case 'categories':
    191                 ?>
    192                 <td><?php the_category(','); ?></td>
    193                 <?php
    194                 break;
    195 
    196         case 'comments':
    197                 ?>
    198                 <td style="text-align: center">
    199                         <?php comments_number("<a href='edit.php?p=$id&amp;c=1'>" . __('0') . '</a>', "<a href='edit.php?p=$id&amp;c=1'>" . __('1') . '</a>', "<a href='edit.php?p=$id&amp;c=1'>" . __('%') . '</a>') ?>
    200                         </td>
    201                 <?php
    202                 break;
    203 
    204         case 'author':
    205                 ?>
    206                 <td><?php the_author() ?></td>
    207                 <?php
    208                 break;
    209 
    210         case 'control_view':
    211                 ?>
    212                 <td><a href="<?php the_permalink(); ?>" rel="permalink" class="edit"><?php _e('View'); ?></a></td>
    213                 <?php
    214                 break;
    215 
    216         case 'control_edit':
    217                 ?>
    218                 <td><?php if ( current_user_can('edit_post',$post->ID) ) { echo "<a href='post.php?action=edit&amp;post=$id' class='edit'>" . __('Edit') . "</a>"; } ?></td>
    219                 <?php
    220                 break;
    221 
    222         case 'control_delete':
    223                 ?>
    224                 <td><?php if ( current_user_can('delete_post',$post->ID) ) { echo "<a href='" . wp_nonce_url("post.php?action=delete&amp;post=$id", 'delete-post_' . $post->ID) . "' class='delete' onclick=\"return deleteSomething( 'post', " . $id . ", '" . js_escape(sprintf(__("You are about to delete this post '%s'.\n'OK' to delete, 'Cancel' to stop."), get_the_title())) . "' );\">" . __('Delete') . "</a>"; } ?></td>
    225                 <?php
    226                 break;
    227 
    228         default:
    229                 ?>
    230                 <td><?php do_action('manage_posts_custom_column', $column_name, $id); ?></td>
    231                 <?php
    232                 break;
     130                if ( have_posts() ) {
     131                        echo '<h3>' . __("Others' Posts") . "</h3>\n";
     132                        include( 'edit-post-rows.php' );
     133                }
    233134        }
     135
     136} else {
     137        include( 'edit-post-rows.php' );
    234138}
    235139?>
    236         </tr>
    237 <?php
    238 endwhile;
    239 } else {
    240 ?>
    241   <tr style='background-color: <?php echo $bgcolor; ?>'>
    242     <td colspan="8"><?php _e('No posts found.') ?></td>
    243   </tr>
    244 <?php
    245 } // end if ($posts)
    246 ?>
    247         </tbody>
    248 </table>
    249140
    250141<div id="ajax-response"></div>
    251142
     
    255146</div>
    256147
    257148<?php
     149
    258150if ( 1 == count($posts) ) {
    259151
    260152        $comments = $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_post_ID = $id AND comment_approved != 'spam' ORDER BY comment_date");
     
    301193        ?>
    302194<?php } ?>
    303195</div>
    304 <?php
    305  include('admin-footer.php');
    306 ?>
     196
     197<?php include('admin-footer.php'); ?>