WordPress.org

Plugin Directory

Changeset 630742


Ignore:
Timestamp:
11/27/12 14:56:22 (17 months ago)
Author:
scribu
Message:

deploy from git

Location:
posts-to-posts/trunk
Files:
2 added
9 edited

Legend:

Unmodified
Added
Removed
  • posts-to-posts/trunk/admin/box-factory.php

    r629142 r630742  
    55class P2P_Box_Factory extends P2P_Factory { 
    66 
     7    protected $key = 'admin_box'; 
     8 
    79    function __construct() { 
    8         add_action( 'p2p_registered_connection_type', array( $this, 'filter_ctypes' ), 10, 2 ); 
     10        parent::__construct(); 
    911 
    10         add_action( 'add_meta_boxes', array( $this, 'add_meta_boxes' ) ); 
     12        add_action( 'add_meta_boxes', array( $this, 'add_items' ) ); 
    1113        add_action( 'save_post', array( $this, 'save_post' ), 10, 2 ); 
    1214        add_action( 'wp_ajax_p2p_box', array( $this, 'wp_ajax_p2p_box' ) ); 
    1315    } 
    1416 
    15     function filter_ctypes( $ctype, $args ) { 
    16         if ( isset( $args['admin_box'] ) ) { 
    17             $box_args = _p2p_pluck( $args, 'admin_box' ); 
    18             if ( !is_array( $box_args ) ) 
    19                 $box_args = array( 'show' => $box_args ); 
    20         } else { 
    21             $box_args = array(); 
    22         } 
     17    function expand_arg( $args ) { 
     18        $box_args = parent::expand_arg( $args ); 
    2319 
    2420        foreach ( array( 'can_create_post' ) as $key ) { 
     
    2925 
    3026        $box_args = wp_parse_args( $box_args, array( 
    31             'show' => 'any', 
    3227            'context' => 'side', 
    3328            'priority' => 'default', 
     
    3530        ) ); 
    3631 
    37         $this->register( $ctype->name, $box_args ); 
    38  
    39         return $args; 
     32        return $box_args; 
    4033    } 
    4134 
    42     function add_meta_boxes( $post_type ) { 
     35    function add_items( $post_type ) { 
    4336        $this->filter( 'post', $post_type ); 
    4437    } 
  • posts-to-posts/trunk/admin/column-factory.php

    r629142 r630742  
    33class P2P_Column_Factory extends P2P_Factory { 
    44 
     5    protected $key = 'admin_column'; 
     6 
    57    function __construct() { 
    6         add_action( 'p2p_registered_connection_type', array( $this, 'filter_ctypes' ), 10, 2 ); 
     8        parent::__construct(); 
    79 
    8         add_action( 'admin_print_styles', array( $this, 'add_columns' ) ); 
    9     } 
    10  
    11     function filter_ctypes( $ctype, $args ) { 
    12         if ( isset( $args['admin_column'] ) ) { 
    13             $column_args = _p2p_pluck( $args, 'admin_column' ); 
    14             if ( !is_array( $column_args ) ) 
    15                 $column_args = array( 'show' => $column_args ); 
    16         } else { 
    17             $column_args = array(); 
    18         } 
    19  
    20         $column_args = wp_parse_args( $column_args, array( 
    21             'show' => false, 
    22         ) ); 
    23  
    24         $this->register( $ctype->name, $column_args ); 
    25  
    26         return $args; 
    27     } 
    28  
    29     function add_columns() { 
    30         $screen = get_current_screen(); 
    31  
    32         $screen_map = array( 
    33             'edit' => 'post', 
    34             'users' => 'user' 
    35         ); 
    36  
    37         if ( !isset( $screen_map[ $screen->base ] ) ) 
    38             return; 
    39  
    40         $object_type = $screen_map[ $screen->base ]; 
    41  
    42         $this->filter( $object_type, $screen->post_type ); 
     10        add_action( 'load-edit.php', array( $this, 'add_items' ) ); 
     11        add_action( 'load-users.php', array( $this, 'add_items' ) ); 
    4312    } 
    4413 
     
    4716        $column = new $class( $directed ); 
    4817 
    49         $column->styles(); 
     18        add_action( 'admin_print_styles', array( $column, 'styles' ) ); 
    5019    } 
    5120} 
  • posts-to-posts/trunk/admin/column.php

    r629142 r630742  
    77    protected $connected = array(); 
    88 
    9     function __construct( $directed, $items ) { 
     9    function __construct( $directed ) { 
    1010        $this->ctype = $directed; 
     11 
    1112        $this->column_id = sprintf( 'p2p-%s-%s', 
    1213            $this->ctype->get_direction(), 
    1314            $this->ctype->name 
    1415        ); 
     16 
     17        $screen = get_current_screen(); 
     18 
     19        add_filter( "manage_{$screen->id}_columns", array( $this, 'add_column' ) ); 
     20    } 
     21 
     22    function add_column( $columns ) { 
     23        $this->prepare_items(); 
     24 
     25        $columns[ $this->column_id ] = $this->ctype->get( 'current', 'title' ); 
     26 
     27        return $columns; 
     28    } 
     29 
     30    protected abstract function get_items(); 
     31 
     32    protected function prepare_items() { 
     33        $items = $this->get_items(); 
    1534 
    1635        $extra_qv = array( 
     
    2241 
    2342        $this->connected = p2p_triage_connected( $connected->items ); 
    24  
    25         $screen = get_current_screen(); 
    26  
    27         add_filter( "manage_{$screen->id}_columns", array( $this, 'add_column' ) ); 
    28     } 
    29  
    30     function add_column( $columns ) { 
    31  
    32         $columns[ $this->column_id ] = $this->ctype->get( 'current', 'title' ); 
    33  
    34         return $columns; 
    3543    } 
    3644 
     
    6977 
    7078    function __construct( $directed ) { 
    71         global $wp_query; 
    72  
    73         $this->ctype = $directed; 
    74  
    75         $extra_qv = array( 'p2p:context' => 'admin_column' ); 
    76  
    77         parent::__construct( $directed, $wp_query->posts ); 
     79        parent::__construct( $directed ); 
    7880 
    7981        $screen = get_current_screen(); 
    8082 
    8183        add_action( "manage_{$screen->post_type}_posts_custom_column", array( $this, 'display_column' ), 10, 2 ); 
     84    } 
     85 
     86    protected function get_items() { 
     87        global $wp_query; 
     88 
     89        return $wp_query->posts; 
    8290    } 
    8391 
     
    102110 
    103111    function __construct( $directed ) { 
     112        parent::__construct( $directed ); 
     113 
     114        add_action( 'pre_user_query', array( __CLASS__, 'user_query' ), 9 ); 
     115 
     116        add_filter( 'manage_users_custom_column', array( $this, 'display_column' ), 10, 3 ); 
     117    } 
     118 
     119    protected function get_items() { 
    104120        global $wp_list_table; 
    105121 
    106         parent::__construct( $directed, $wp_list_table->items ); 
     122        return $wp_list_table->items; 
     123    } 
    107124 
    108         add_filter( 'manage_users_custom_column', array( $this, 'display_column' ), 10, 3 ); 
     125    // Add the query vars to the global user query (on the user admin screen) 
     126    static function user_query( $query ) { 
     127        if ( isset( $query->_p2p_capture ) ) 
     128            return; 
     129 
     130        // Don't overwrite existing P2P query 
     131        if ( isset( $query->query_vars['connected_type'] ) ) 
     132            return; 
     133 
     134        _p2p_append( $query->query_vars, wp_array_slice_assoc( $_GET, 
     135            P2P_URL_Query::get_custom_qv() ) ); 
    109136    } 
    110137 
  • posts-to-posts/trunk/admin/factory.php

    r629142 r630742  
    33abstract class P2P_Factory { 
    44 
     5    protected $key; 
     6 
    57    protected $queue = array(); 
    68 
    7     function register( $p2p_type, $args ) { 
    8         if ( isset( $this->queue[$p2p_type] ) ) 
     9    function __construct() { 
     10        add_action( 'p2p_registered_connection_type', array( $this, 'check_ctype' ), 10, 2 ); 
     11    } 
     12 
     13    // Check if a newly registered connection type needs an item to be produced. 
     14    function check_ctype( $ctype, $args ) { 
     15        $sub_args = $this->expand_arg( $args ); 
     16 
     17        if ( !$sub_args['show'] ) 
    918            return false; 
    1019 
    11         $args = (object) $args; 
    12  
    13         if ( !$args->show ) 
    14             return false; 
    15  
    16         $this->queue[$p2p_type] = $args; 
    17  
    18         return true; 
     20        $this->queue[ $ctype->name ] = (object) $sub_args; 
    1921    } 
    2022 
     23    // Collect sub-args from main connection type args and set defaults 
     24    protected function expand_arg( $args ) { 
     25        if ( isset( $args[ $this->key ] ) ) { 
     26            $sub_args = $args[ $this->key ]; 
     27 
     28            if ( !is_array( $sub_args ) ) { 
     29                $sub_args = array( 'show' => $sub_args ); 
     30            } 
     31        } else { 
     32            $sub_args = array( 'show' => false ); 
     33        } 
     34 
     35        $sub_args = wp_parse_args( $sub_args, array( 
     36            'show' => 'any', 
     37        ) ); 
     38 
     39        return $sub_args; 
     40    } 
     41 
     42    // Begin processing item queue for a particular screen. 
     43    function add_items() { 
     44        $screen = get_current_screen(); 
     45 
     46        $screen_map = array( 
     47            'edit' => 'post', 
     48            'users' => 'user' 
     49        ); 
     50 
     51        if ( !isset( $screen_map[ $screen->base ] ) ) 
     52            return; 
     53 
     54        $object_type = $screen_map[ $screen->base ]; 
     55 
     56        $this->filter( $object_type, $screen->post_type ); 
     57    } 
     58 
     59    // Filter item queue based on object type. 
    2160    function filter( $object_type, $post_type ) { 
    2261        foreach ( $this->queue as $p2p_type => $args ) { 
     
    3675        } 
    3776    } 
     77 
     78    // Produce an item and add it to the screen. 
     79    abstract function add_item( $directed, $object_type, $post_type, $title ); 
    3880 
    3981    protected static function get_title( $directions, $ctype ) { 
     
    58100        return $ctype->_directions_for_admin( $direction, $show_ui ); 
    59101    } 
    60  
    61     abstract function add_item( $directed, $object_type, $post_type, $title ); 
    62102} 
    63103 
  • posts-to-posts/trunk/core/api.php

    r629142 r630742  
    7777            $args['admin_box']['context'] = _p2p_pluck( $args, 'context' ); 
    7878    } 
     79 
     80    if ( !isset( $args['admin_box'] ) ) 
     81        $args['admin_box'] = 'any'; 
    7982 
    8083    $ctype = P2P_Connection_Type_Factory::register( $args ); 
  • posts-to-posts/trunk/core/type-factory.php

    r629142 r630742  
    88        $defaults = array( 
    99            'name' => false, 
    10             'from_object' => 'post', 
    11             'to_object' => 'post', 
    1210            'from' => 'post', 
    1311            'to' => 'post', 
  • posts-to-posts/trunk/core/url-query.php

    r629142 r630742  
    99    static function init() { 
    1010        add_filter( 'query_vars', array( __CLASS__, 'query_vars' ) ); 
    11  
    12         if ( is_admin() ) 
    13             add_action( 'pre_user_query', array( __CLASS__, 'user_query' ), 9 ); 
    1411    } 
    1512 
     
    1815        return array_merge( $public_qv, self::get_custom_qv() ); 
    1916    } 
    20  
    21     // Add the query vars to the global user query (on the user admin screen) 
    22     static function user_query( $query ) { 
    23         if ( !function_exists( 'get_current_screen' ) ) 
    24             return; 
    25  
    26         $current_screen = get_current_screen(); 
    27  
    28         if ( $current_screen && 'users' != $current_screen->id ) 
    29             return; 
    30  
    31         if ( isset( $query->_p2p_capture ) ) 
    32             return; 
    33  
    34         // Don't overwrite existing P2P query 
    35         if ( isset( $query->query_vars['connected_type'] ) ) 
    36             return; 
    37  
    38         _p2p_append( $query->query_vars, wp_array_slice_assoc( $_GET, 
    39             self::get_custom_qv() ) ); 
    40     } 
    4117} 
    4218 
  • posts-to-posts/trunk/posts-to-posts.php

    r629249 r630742  
    33Plugin Name: Posts 2 Posts 
    44Description: Create many-to-many relationships between all types of posts. 
    5 Version: 1.4.3 
     5Version: 1.5-alpha 
    66Author: scribu 
    77Author URI: http://scribu.net/ 
     
    3737            'box-factory', 'box', 'fields', 
    3838            'column-factory', 'column', 
     39            'dropdown-factory', 'dropdown', 
    3940            'tools' 
    4041        ) ); 
  • posts-to-posts/trunk/readme.txt

    r629274 r630742  
    5353 
    5454== Changelog == 
     55 
     56= 1.5 = 
     57* added admin dropdowns 
    5558 
    5659= 1.4.3 = 
Note: See TracChangeset for help on using the changeset viewer.