WordPress.org

Plugin Directory

Changeset 567485


Ignore:
Timestamp:
07/04/12 18:16:23 (22 months ago)
Author:
batmoo
Message:

v0.3, which syncs over lots of goodies from WordPress.com VIP

Location:
zoninator/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • zoninator/trunk/css/zoninator.css

    r370459 r567485  
    202202            } 
    203203            */ 
     204            .zone-post-status { 
     205                color: #999; 
     206            } 
    204207        .zone-post .row-actions { 
    205208            font-size: 11px; 
     
    241244        border-bottom: 1px dotted #eee; 
    242245        cursor: pointer; 
     246        overflow: hidden; 
    243247    } 
    244248    .ui-autocomplete .title { 
     
    252256        font-size: 11px; 
    253257        clear: both; 
    254         display: block; 
     258        float: left; 
    255259    } 
    256260    .ui-autocomplete .type { 
     
    263267        text-align: right; 
    264268    } 
     269    .ui-autocomplete .status { 
     270        font-size: 10px; 
     271        width: 19%; 
     272        margin-left: 1%; 
     273        float: right; 
     274        text-align: right; 
     275    } 
  • zoninator/trunk/js/zoninator.js

    r442709 r567485  
    9292                        + '<span class="type">' + item.post_type + '</span>' 
    9393                        + '<span class="date">' + item.date + '</span>' 
     94                        + '<span class="status">' + item.post_status + '</span>' 
    9495                        + '</a>'; 
    9596                    return $( '<li></li>' ) 
     
    263264        } 
    264265         
    265         console.log('ajaxSuccessCallback', returnData, originalData); 
     266        //console.log('ajaxSuccessCallback', returnData, originalData); 
    266267         
    267268        if(returnData.nonce) 
     
    283284        } 
    284285         
    285         console.log('ajaxErrorCallback', returnData, originalData); 
     286        //console.log('ajaxErrorCallback', returnData, originalData); 
    286287         
    287288        if(typeof(errorCallback) === 'function') { 
  • zoninator/trunk/readme.txt

    r458860 r567485  
    11=== Zone Manager (Zoninator) === 
    2 Contributors: batmoo 
     2Contributors: batmoo, automattic 
    33Tags: zones, post order, post list, posts, order, zonination, content curation, curation, content management 
    4 Requires at least: 3.0 
    5 Tested up to: 3.3 
    6 Stable tag: 0.2 
     4Requires at least: 3.3 
     5Tested up to: 3.4.1 
     6Stable tag: 0.3 
     7License: GPLv2 
    78 
    89Curation made easy! Create "zones" then add and order your content! 
     
    4546Filter the following and change according to your needs: 
    4647 
    47 <pre>zoninator_zone_lock_period</pre> - number of seconds a lock is valid for, default `30` 
     48* Number of seconds a lock is valid for, default `30`: `zoninator_zone_lock_period` 
     49* Max idle time in seconds: `zoninator_zone_max_lock_period` 
    4850 
    49 <pre>zoninator_zone_max_lock_period</pre> - max idle time in seconds 
    5051 
    5152== Screenshots == 
     
    5960* Introduce z_get_zone_query: returns a WP_Query object so you can run the loop like usual. 
    6061* Disable editing and prefixing of slugs. They're just problems waiting to happen... 
     62* Add new filter to allow filtering of search args, props imrannathani for the suggestion 
     63* Allow scheduled posts to be added to zones so they automagically show up when they're published, props imrannathani for the idea. 
     64* Default to published post in all zone queries in the front-end. Scheduled posts can still be added via a filter. 
     65* Run clean_term_cache when a post is added or deleted from a zone so that the necessary caches are flushed. 
     66* Add new filter to limit editing access on a per-zone level. props hooman and the National Post team 
     67* Allow editor role (editor_others_posts) to manage zones (plus other capability fixes, props rinat k.) 
    6168 
    6269= 0.2 =  
     
    8693== Usage Notes == 
    8794 
     95= Example = 
     96 
     97You can work with with a zone's posts either as an array or a WP_Query object. 
     98 
     99<strong>WP_Query</strong> 
     100 
     101` 
     102$zone_query = z_get_zone_query( 'homepage' ); 
     103if ( $zone_query->have_posts() ) : 
     104    while ( $zone_query->have_posts() ) $zone_query->the_post(); 
     105        echo '<li>' . get_the_title() . </li>; 
     106    endwhile; 
     107endif; 
     108wp_reset_query(); 
     109` 
     110 
     111<strong>Posts Array</strong> 
     112 
     113` 
     114$zone_posts = z_get_posts_in_zone( 'homepage' ); 
     115foreach ( $zone_posts as $zone_post ) : 
     116    echo '<li>' . get_the_title( $zone_post->ID ) . </li>; 
     117endforeach; 
     118` 
     119 
    88120= Function Reference =  
    89121 
    90 <code> 
    91 @return array List of all zones 
    92 z_get_zones() 
    93 </code> 
     122Get an array of all zones: 
    94123 
    95 <code> 
    96 @param $zone int|string ID or Slug of the zone 
    97 @return array Zone object 
    98 z_get_zone( $zone ) 
    99 </code> 
     124`z_get_zones()` 
    100125 
    101 <code> 
    102 @param $zone int|string ID or Slug of the zone 
    103 @return array List of orders post objects 
    104 z_get_posts_in_zone( $zone ) 
    105 </code> 
     126Get a single zone. Accepts either ID or slug. 
    106127 
    107 More functions listed in functions.php 
     128`z_get_zone( $zone )` 
     129 
     130Get an array of ordered posts in a given zone. Accepts either ID or slug. 
     131 
     132`z_get_posts_in_zone( $zone )` 
     133 
     134Get a WP_Query object for a given zone. Accepts either ID or slug. 
     135 
     136`z_get_zone_query( $zone ); 
     137 
     138 
     139More functions listed in `functions.php` 
  • zoninator/trunk/zoninator.php

    r458860 r567485  
    165165                case 'insert': 
    166166                case 'update': 
     167                    $zone_id = $this->_get_post_var( 'zone_id', 0, 'absint' ); 
     168 
    167169                    $this->verify_nonce( $action ); 
    168                     $this->verify_access( $action ); 
    169                      
    170                     $zone_id = $this->_get_post_var( 'zone_id', 0, 'absint' ); 
     170                    $this->verify_access( $action, $zone_id ); 
     171 
    171172                    $name = $this->_get_post_var( 'name' ); 
    172173                    $slug = $this->_get_post_var( 'slug', sanitize_title( $name ) ); 
     
    202203                 
    203204                case 'delete': 
     205                    $zone_id = $this->_get_request_var( 'zone_id', 0, 'absint' ); 
     206 
    204207                    $this->verify_nonce( $action ); 
    205                     $this->verify_access( $action ); 
    206                      
    207                     $zone_id = $this->_get_request_var( 'zone_id', 0, 'absint' ); 
     208                    $this->verify_access( $action, $zone_id ); 
    208209                     
    209210                    if( $zone_id ) { 
     
    331332                    <div class="form-wrap zone-form zone-info-form"> 
    332333                         
    333                         <?php if( $this->_current_user_can_edit_zones() && ! $zone_locked ) : ?> 
     334                        <?php if( $this->_current_user_can_edit_zones( $zone_id ) && ! $zone_locked ) : ?> 
    334335                         
    335336                            <form id="zone-info" method="post"> 
     
    410411                 
    411412                <div class="col-wrap zone-col zone-posts-col"> 
    412                     <div class="zone-posts-wrapper <?php echo $zone_locked ? 'readonly' : ''; ?>"> 
     413                    <div class="zone-posts-wrapper <?php echo ! $this->_current_user_can_manage_zones( $zone_id ) || $zone_locked ? 'readonly' : ''; ?>"> 
    413414                        <?php if( $zone_id ) : ?> 
    414415                            <h3><?php _e( 'Zone Content', 'zoninator' ); ?></h3> 
     
    473474        ); 
    474475        ?> 
    475         <?php echo esc_html( $post->post_title ); ?> 
     476        <?php echo sprintf( '%s <span class="zone-post-status">(%s)</span>', esc_html( $post->post_title ), esc_html( $post->post_status ) ); ?> 
    476477         
    477478        <div class="row-actions"> 
     
    517518     
    518519    function ajax_add_post() { 
     520        $zone_id = $this->_get_post_var( 'zone_id', 0, 'absint' ); 
     521        $post_id = $this->_get_post_var( 'post_id', 0, 'absint' ); 
     522         
    519523        // Verify nonce 
    520524        $this->verify_nonce( $this->zone_ajax_nonce_action ); 
    521         $this->verify_access(); 
    522          
    523         $zone_id = $this->_get_post_var( 'zone_id', 0, 'absint' ); 
    524         $post_id = $this->_get_post_var( 'post_id', 0, 'absint' ); 
    525          
     525        $this->verify_access( '', $zone_id ); 
     526 
    526527        // Validate 
    527528        if( ! $zone_id || ! $post_id ) 
     
    549550     
    550551    function ajax_remove_post() { 
     552        $zone_id = $this->_get_post_var( 'zone_id', 0, 'absint' ); 
     553        $post_id = $this->_get_post_var( 'post_id', 0, 'absint' ); 
     554 
    551555        // Verify nonce 
    552556        $this->verify_nonce( $this->zone_ajax_nonce_action ); 
    553         $this->verify_access(); 
    554          
    555         $zone_id = $this->_get_post_var( 'zone_id', 0, 'absint' ); 
    556         $post_id = $this->_get_post_var( 'post_id', 0, 'absint' ); 
    557          
     557        $this->verify_access( '', $zone_id ); 
     558 
    558559        // Validate 
    559560        if( ! $zone_id || ! $post_id ) 
     
    574575 
    575576    function ajax_reorder_posts() { 
     577        $zone_id = $this->_get_post_var( 'zone_id', 0, 'absint' ); 
     578        $post_ids = (array) $this->_get_post_var( 'posts', array(), 'absint' ); 
     579 
    576580        // Verify nonce 
    577581        $this->verify_nonce( $this->zone_ajax_nonce_action ); 
    578         $this->verify_access(); 
    579          
    580         $zone_id = $this->_get_post_var( 'zone_id', 0, 'absint' ); 
    581         $post_ids = (array) $this->_get_post_var( 'posts', array(), 'absint' ); 
    582          
     582        $this->verify_access( '', $zone_id ); 
     583 
    583584        // validate 
    584585        if( ! $zone_id || empty( $post_ids ) ) 
     
    626627            $exclude = (array) $this->_get_request_var( 'exclude', array(), 'absint' ); 
    627628             
    628             $args = array( 
     629            $args = apply_filters( 'zoninator_search_args', array( 
    629630                's' => $q, 
    630631                'post__not_in' => $exclude, 
     
    632633                'showposts' => $limit, 
    633634                'post_type' => $post_types, 
    634                 'post_status' => 'publish', 
     635                'post_status' => array( 'publish', 'future' ), 
    635636                'order' => 'DESC', 
    636637                'orderby' => 'post_date', 
    637638                'suppress_filters' => true, 
    638             ); 
     639            ) ); 
    639640             
    640641            $query = new WP_Query( $args ); 
     
    650651                    'date' => get_the_time( get_option( 'date_format' ), $post ), 
    651652                    'post_type' => $post->post_type, 
     653                    'post_status' => $post->post_status, 
    652654                ); 
    653655            } 
     
    659661 
    660662    function ajax_update_lock() { 
     663        $zone_id = $this->_get_post_var( 'zone_id', 0, 'absint' ); 
     664 
    661665        $this->verify_nonce( $this->zone_ajax_nonce_action ); 
    662         $this->verify_access(); 
    663          
    664         $zone_id = $this->_get_post_var( 'zone_id', 0, 'absint' ); 
    665          
     666        $this->verify_access( '', $zone_id ); 
     667 
    666668        if( ! $zone_id ) 
    667669            exit; 
     
    786788            // TODO: remove_object_terms -- but need remove object terms function :( 
    787789        } 
     790 
     791        clean_term_cache( $this->get_zone_id( $zone ), $this->zone_taxonomy ); // flush cache for our zone term and related APC caches 
    788792    } 
    789793     
     
    803807                delete_metadata( 'post', $post_id, $meta_key ); 
    804808        } 
     809 
     810        clean_term_cache( $this->get_zone_id( $zone ), $this->zone_taxonomy ); // flush cache for our zone term and related APC caches 
    805811    } 
    806812 
     
    825831            'order' => 'ASC', 
    826832            'posts_per_page' => -1, 
    827             'showposts' => -1, 
    828833            'post_type' => $this->get_supported_post_types(), 
     834            'ignore_sticky_posts' => '1', // don't want sticky posts messing up our order 
    829835        ); 
     836 
     837        // Default to published posts on the front-end 
     838        if ( ! is_admin() ) 
     839            $defaults['post_status'] = array( 'publish' ); 
     840 
     841        if ( is_admin() ) // skip APC in the admin 
     842            $defaults['suppress_filters'] = true;  
     843 
    830844        $args = wp_parse_args( $args, $defaults ); 
    831845         
     
    10761090    } 
    10771091     
    1078     function verify_access( $action = '' ) { 
     1092    function verify_access( $action = '', $zone_id = null ) { 
    10791093        // TODO: should check if zone locked 
    10801094         
     
    10931107        } 
    10941108         
    1095         if( ! call_user_func( array( $this, $verify_function ) ) ) 
     1109        if( ! call_user_func( array( $this, $verify_function ), $zone_id ) ) 
    10961110            $this->_unauthorized_access(); 
    10971111    } 
     
    11721186    } 
    11731187     
    1174     function _current_user_can_edit_zones() { 
    1175         return current_user_can( $this->_get_edit_zones_cap() ); 
     1188    function _current_user_can_edit_zones( $zone_id ) { 
     1189        $has_cap = current_user_can( $this->_get_edit_zones_cap() ); 
     1190        return apply_filters( 'zoninator_current_user_can_edit_zone', $has_cap, $zone_id ); 
    11761191    } 
    11771192     
     
    11811196     
    11821197    function _get_add_zones_cap() { 
    1183         return apply_filters( 'zoninator_add_zone_cap', 'manage_options' ); 
     1198        return apply_filters( 'zoninator_add_zone_cap', 'edit_others_posts' ); 
    11841199    } 
    11851200     
    11861201    function _get_edit_zones_cap() { 
    1187         return apply_filters( 'zoninator_edit_zone_cap', 'manage_options' ); 
     1202        return apply_filters( 'zoninator_edit_zone_cap', 'edit_others_posts' ); 
    11881203    } 
    11891204     
    11901205    function _get_manage_zones_cap() { 
    1191         return apply_filters( 'zoninator_manage_zone_cap', 'edit_published_posts' ); 
     1206        return apply_filters( 'zoninator_manage_zone_cap', 'edit_others_posts' ); 
    11921207    } 
    11931208     
Note: See TracChangeset for help on using the changeset viewer.