WordPress.org

Plugin Directory

Changeset 1697585


Ignore:
Timestamp:
07/17/17 15:42:22 (5 weeks ago)
Author:
bastho
Message:

Initial work on quick/bulk edit

Location:
event-post/trunk
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • event-post/trunk/eventpost.php

    r1695061 r1697585  
    4242 
    4343    public $map_interactions; 
     44    public $quick_edit_fields; 
    4445 
    4546    public $Shortcodes; 
     
    8788 
    8889        add_action('widgets_init', array(&$this, 'register_widgets'),1,1); 
     90 
     91        // Quick edit 
     92        add_action( 'bulk_edit_custom_box', array( &$this, 'bulk_edit' ), 10, 2 ); 
     93        add_action( 'quick_edit_custom_box', array( &$this, 'quick_edit' ), 10, 2 ); 
     94        add_action( 'admin_print_scripts-edit.php', array(&$this, 'scripts_edit') ); 
     95        add_action( 'wp_ajax_inline-save', array(&$this, 'inline_save'), 1 ); 
     96    add_action( 'wp_ajax_eventpost_save_bulk', array(&$this, 'save_bulkdatas') ); 
    8997 
    9098        $inc_path = plugin_dir_path(__FILE__).'inc/'; 
     
    179187            'MouseWheelZoom'=>__('Mouse Wheel Zoom', 'event-post'), 
    180188            'DragZoom'=>__('Drag Zoom', 'event-post'), 
     189        ); 
     190 
     191        $this->quick_edit_fields = apply_filters('eventpost_quick_edit_fields', array( 
     192                'event'=>array( 
     193                        $this->META_START=>__('Begin:', 'event-post'), 
     194                        $this->META_END=>__('End:', 'event-post'), 
     195                        $this->META_COLOR=>__('Color:', 'event-post'), 
     196                    ), 
     197                'location'=>array( 
     198                        $this->META_ADD=>__('Address:', 'event-post'), 
     199                        $this->META_LAT=>__('Latitude:', 'event-post'), 
     200                        $this->META_LONG=>__('Longitude:', 'event-post'), 
     201                    ), 
     202                ) 
     203        ); 
     204        $this->bulk_edit_fields = apply_filters('eventpost_bulk_edit_fields', array( 
     205                'event'=>array( 
     206                        $this->META_COLOR=>__('Color:', 'event-post'), 
     207                    ), 
     208                ) 
    181209        ); 
    182210 
     
    532560            'defaulttile' => $this->settings['tile'] 
    533561        )); 
     562    } 
     563    function scripts_edit() { 
     564        // load only when editing a supported post type 
     565        $current_post_type = isset($_GET['post_type']) ? $_GET['post_type'] : 'post'; 
     566        if ( in_array( $current_post_type, $this->settings['posttypes'] ) ) { 
     567            wp_enqueue_script( 'eventpost-inline-edit', plugins_url( 'js/inline-edit.js', __FILE__ ), array( 'jquery', 'inline-edit-post' ), '', true ); 
     568            wp_localize_script('eventpost-inline-edit', 'eventpost_inline_edit', array( 
     569                'quick'=>$this->quick_edit_fields, 
     570                'bulk'=>$this->bulk_edit_fields 
     571            )); 
     572        } 
    534573    } 
    535574 
     
    15531592 
    15541593    /** 
     1594    * 
     1595    * @param string $column_name 
     1596    * @param boolean $bulk 
     1597    */ 
     1598   function quick_edit( $column_name, $post_type, $bulk=false) { 
     1599 
     1600    if ($bulk) { 
     1601            static $eventpostprintNonceBulk = TRUE; 
     1602            if ($eventpostprintNonceBulk) { 
     1603                $eventpostprintNonceBulk = FALSE; 
     1604            } 
     1605            $fields = $this->bulk_edit_fields; 
     1606            echo '<input type="hidden" name="eventpost-bulk-editor" id="eventpost-bulk-editor" value="eventpost-bulk-editor">'; 
     1607        } 
     1608        else { 
     1609            static $eventpostprintNonce = TRUE; 
     1610            if ($eventpostprintNonce) { 
     1611                $eventpostprintNonce = FALSE; 
     1612            } 
     1613            $fields = $this->quick_edit_fields; 
     1614        } 
     1615        wp_nonce_field(plugin_basename(__FILE__), 'eventpost_nonce'); 
     1616        if(isset($fields[$column_name])): ?> 
     1617        <fieldset class="inline-edit-col-left inline-edit-<?php echo $column_name; ?>"> 
     1618            <div class="inline-edit-group"> 
     1619            <?php foreach ($fields[$column_name] as $fieldname=>$fieldlabel): ?> 
     1620                <fieldset class="inline-edit-col inline-edit-<?php echo $fieldname; ?>"> 
     1621                  <div class="inline-edit-col column-<?php echo $fieldname; ?>"> 
     1622                    <label class="inline-edit-group"> 
     1623                        <span class="title"><?php echo $fieldlabel; ?></span> 
     1624                        <span class="input-text-wrap"><input name="<?php echo $fieldname; ?>" class="" id="eventpost-inline-<?php echo $fieldname; ?>" value="" type="text"></span> 
     1625                    </label> 
     1626                  </div> 
     1627                </fieldset> 
     1628        <?php endforeach; ?> 
     1629            </div> 
     1630        </fieldset> 
     1631    <?php endif; 
     1632    } 
     1633 
     1634    /** 
     1635     * 
     1636     * @param type $column_name 
     1637     * @param type $post_type 
     1638     */ 
     1639    function bulk_edit($column_name, $post_type){ 
     1640            $this->quick_edit($column_name, $post_type, true); 
     1641    } 
     1642 
     1643    /** 
     1644     * 
     1645     */ 
     1646    function inline_save(){ 
     1647        $post_id = filter_input(INPUT_POST, 'post_ID', FILTER_SANITIZE_NUMBER_INT); 
     1648        $this->save_postdata($post_id); 
     1649    } 
     1650    /** 
    15551651     * When the post is saved, saves our custom data 
    15561652     * @param int $post_id 
     
    15971693        delete_post_meta($post_id, $this->META_LONG); 
    15981694    } 
     1695 
     1696        $post_ids = (!empty($_POST['post_ids']) ) ? $_POST['post_ids'] : array(); 
     1697    } 
     1698 
     1699    function save_bulkdatas() { 
     1700        $current_post_type = isset($_GET['post_type']) ? $_GET['post_type'] : 'post'; 
     1701        if (in_array($current_post_type, $this->settings['posttypes'])) { 
     1702            $post_ids = (!empty($_POST['post_ids']) ) ? $_POST['post_ids'] : array(); 
     1703            if (!empty($post_ids) && is_array($post_ids)) { 
     1704                foreach ($this->bulk_edit_fields as $sets) { 
     1705                    foreach ($sets as $fieldname => $fieldlabel) { 
     1706                        if ((false !== $value = filter_input(INPUT_POST, $fieldname))) { 
     1707                            foreach ($post_ids as $post_id) { 
     1708                                update_post_meta($post_id, $fieldname, $value); 
     1709                            } 
     1710                        } 
     1711                    } 
     1712                } 
     1713            } 
     1714            wp_send_json(true); 
     1715            exit; 
     1716        } 
     1717        wp_send_json(false); 
    15991718    } 
    16001719 
     
    18761995                        . '</a> '; 
    18771996            } 
     1997            $this->column_edit_hidden_fields($post_id, 'location'); 
    18781998        } 
    18791999        if ($column_name == 'event') { 
    18802000            echo $this->print_date($post_id, false); 
     2001            $this->column_edit_hidden_fields($post_id, 'event'); 
    18812002        } 
    18822003        do_action('eventpost_columns_content', $column_name, $post_id); 
     2004    } 
     2005 
     2006    function column_edit_hidden_fields($post_id, $set){ 
     2007        $event = $this->retreive($post_id); 
     2008        echo '<div class="hidden">'; 
     2009        foreach($this->quick_edit_fields[$set] as $fieldname=>$fieldlabel){ 
     2010            echo'<span class="inline-edit-value '.$fieldname.'">'.esc_attr($event->$fieldname).'</span>'; 
     2011        } 
     2012        echo '</div>'; 
    18832013    } 
    18842014 
Note: See TracChangeset for help on using the changeset viewer.