Make WordPress Core

Ticket #3945: 3945c.diff

File 3945c.diff, 17.7 KB (added by mdawaffe, 17 years ago)

pagination tweaks

  • 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 = '';
     14$author_q = '';
     15if ( isset($_GET['post_status']) && in_array( $_GET['post_status'], array_keys($post_stati) ) ) {
     16        $post_status_q = '&post_status=' . $_GET['post_status'];
     17        if ( in_array( $_GET['post_status'], array('draft', 'private') ) )
     18                $author_q = "&author=$user_ID";
     19}
    1520?>
     21
    1622<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 } ?>
    3323
    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>
     24<?php
    4925
    50 <?php } ?>
     26wp("what_to_show=posts$author_q$post_status_q&posts_per_page=15&posts_per_archive_page-'");
    5127
    52 </div>
    53 <?php } ?>
     28do_action('restrict_manage_posts');
    5429
    55 <div class="wrap">
    56 <h2>
    57 <?php
     30// define the columns to display, the syntax is 'internal name' => 'display name'
     31$posts_columns = array(
     32        'id'         => '<div style="text-align: center">' . __('ID') . '</div>',
     33        'date'       => __('When'),
     34        'title'      => __('Title'),
     35        'categories' => __('Categories'),
     36        'comments'   => '<div style="text-align: center">' . __('Comments') . '</div>',
     37        'author'     => __('Author')
     38);
     39$posts_columns = apply_filters('manage_posts_columns', $posts_columns);
    5840
    59 wp('what_to_show=posts&posts_per_page=15&posts_per_archive_page=-1');
     41// you can not edit these at the moment
     42$posts_columns['control_view']   = '';
     43$posts_columns['control_edit']   = '';
     44$posts_columns['control_delete'] = '';
    6045
     46?>
     47
     48<h2><?php
    6149if ( is_month() ) {
    6250        single_month_title(' ');
    6351} elseif ( is_search() ) {
     
    7058        else
    7159                _e('Previous Posts');
    7260}
    73 ?>
    74 </h2>
     61?></h2>
    7562
     63
    7664<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>
     65        <fieldset><legend><?php _e('Search terms&hellip;'); ?></legend>
     66                <input type="text" name="s" id="s" value="<?php if (isset($s)) echo attribute_escape($s); ?>" size="17" />
     67        </fieldset>
    8368
    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");
     69        <fieldset><legend><?php _e('Post Type&hellip;'); ?></legend>
     70                <select name='post_status'>
     71                        <option<?php selected( @$_GET['post_status'], 0 ); ?> value='0'><?php _e('Any'); ?></option>
     72<?php   foreach ( $post_stati as $status => $label ) : ?>
     73                        <option<?php selected( @$_GET['post_status'], $status ); ?> value='<?php echo $status; ?>'><?php echo $label; ?></option>
     74<?php   endforeach; ?>
     75                </select>
     76        </fieldset>
    8577
    86 if ( count($arc_result) ) { ?>
     78<?php
    8779
    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
     80
     81$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";
     82
     83$arc_result = $wpdb->get_results( $arc_query );
     84
     85$month_count = count($arc_result);
     86
     87if ( $month_count && !( 1 == $month_count && 0 == $arc_result[0]->mmonth ) ) { ?>
     88
     89        <fieldset><legend><?php _e('Month&hellip;') ?></legend>
     90                <select name='m'>
     91                        <option<?php selected( @$_GET['m'], 0 ); ?> value='0'><?php _e('Any'); ?></option>
     92                <?php
    9393                foreach ($arc_result as $arc_row) {
    9494                        if ( $arc_row->yyear == 0 )
    9595                                continue;
     
    104104                        echo $wp_locale->get_month($arc_row->mmonth) . " $arc_row->yyear";
    105105                        echo "</option>\n";
    106106                }
    107         ?>
    108         </select>
    109                 <input type="submit" name="submit" value="<?php _e('Show Month') ?>" class="button" />
     107                ?>
     108                </select>
    110109        </fieldset>
    111 </form>
    112110
    113111<?php } ?>
    114112
    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" />
     113        <fieldset><legend><?php _e('Category&hellip;') ?></legend>
     114                <?php wp_dropdown_categories('show_option_all='.__('All').'&hide_empty=1&hierarchical=1&show_count=1&selected='.$cat);?>
    120115        </fieldset>
     116        <input type="submit" id="post-query-submit" value="<?php _e('Go &#187;'); ?>" class="button" />
    121117</form>
    122118
    123 <?php do_action('restrict_manage_posts'); ?>
    124 
    125119<br style="clear:both;" />
    126120
    127121<?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);
     122if ( $post_status_q && ( false !== strpos($post_status_q, 'draft') || false !== strpos($post_status_q, 'private') ) ) {
     123        echo '<h3>' . __('Your Posts') . "</h3>\n";
     124        include( 'edit-post-rows.php' );
    138125
    139 // you can not edit these at the moment
    140 $posts_columns['control_view']   = '';
    141 $posts_columns['control_edit']   = '';
    142 $posts_columns['control_delete'] = '';
     126        $editable_ids = get_editable_user_ids( $user_ID );
    143127
    144 ?>
     128        if ( $editable_ids && count($editable_ids) > 1 ) {
     129                $_editable_ids = join(',', array_diff($editable_ids, array($user_ID)));
    145130
    146 <table class="widefat">
    147         <thead>
    148         <tr>
     131                $post_status_q = "&post_status=" . $_GET['post_status'];
    149132
    150 <?php foreach($posts_columns as $column_display_name) { ?>
    151         <th scope="col"><?php echo $column_display_name; ?></th>
    152 <?php } ?>
     133                unset($GLOBALS['day']); // setup_postdata does this
     134                wp("what_to_show=posts&author=$_editable_ids$post_status_q&posts_per_page=-1&posts_per_archive_page=-1");
    153135
    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;
     136                if ( have_posts() ) {
     137                        echo '<h3>' . __("Others' Posts") . "</h3>\n";
     138                        include( 'edit-post-rows.php' );
     139                }
    233140        }
     141
     142} else {
     143        include( 'edit-post-rows.php' );
    234144}
    235145?>
    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>
    249146
    250147<div id="ajax-response"></div>
    251148
     
    255152</div>
    256153
    257154<?php
     155
    258156if ( 1 == count($posts) ) {
    259157
    260158        $comments = $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_post_ID = $id AND comment_approved != 'spam' ORDER BY comment_date");
     
    301199        ?>
    302200<?php } ?>
    303201</div>
    304 <?php
    305  include('admin-footer.php');
    306 ?>
     202
     203<?php include('admin-footer.php'); ?>