WordPress.org

Plugin Directory

Changeset 519687


Ignore:
Timestamp:
03/16/12 04:50:40 (2 years ago)
Author:
jkudish
Message:

update todo

File:
1 edited

Legend:

Unmodified
Added
Removed
  • custom-metadata/trunk/custom_metadata.php

    r490782 r519687  
    3939/* 
    4040TODO: 
    41 - Additional Field types (multi-select, multi-checkboxes, taxonomy checkbox) 
     41- Additional Field types (multi-select, multi-checkboxes) 
    4242- Group description field 
    4343- Multiple display in the same order as saved 
     
    6161 
    6262    var $errors = array(); 
     63 
    6364    var $metadata = array(); 
     65 
    6466    var $_non_post_types = array( 'user', 'comment'); 
     67 
    6568    // Object types that come "built-in" with WordPress 
    6669    var $_builtin_object_types = array( 'post', 'page', 'user', 'comment' ); 
     70 
    6771    // Column filter names 
    6872    var $_column_types = array( 'posts', 'pages', 'users', 'comments' ); 
     73 
    6974    // field types 
    70     var $_field_types = array( 'text', 'textarea', 'password', 'checkbox', 'radio', 'select', 'upload', 'wysiwyg', 'datepicker', 'taxonomy_select', 'taxonomy_radio' ); 
     75    var $_field_types = array( 'text', 'textarea', 'password', 'checkbox', 'radio', 'select', 'upload', 'wysiwyg', 'datepicker', 'taxonomy_select', 'taxonomy_radio',  'taxonomy_checkbox' ); 
     76 
    7177    // field types that are cloneable 
    7278    var $_cloneable_field_types = array( 'text', 'textarea', 'upload', 'password'); 
     79 
     80    // taxonomy types 
     81    var $_taxonomy_fields = array( 'taxonomy_select', 'taxonomy_radio', 'taxonomy_checkbox' ); 
     82 
     83    // filed types that are saved as multiples but not cloneable 
     84    var $_multiple_not_cloneable = array( 'taxonomy_checkbox' ); 
     85 
     86    // fields that always save as an array 
     87    var $_always_multiple_fields = array( 'taxonomy_checkbox' ); 
     88 
    7389    // Object types whose columns are generated through apply_filters instead of do_action 
    7490    var $_column_filter_object_types = array( 'user' ); 
     91 
    7592    // Whitelisted pages that get stylesheets and scripts 
    7693    var $_pages_whitelist = array( 'edit.php', 'post.php', 'post-new.php', 'users.php', 'profile.php', 'user-edit.php', 'edit-comments.php', 'comment.php'); 
     94 
    7795    // the default args used for the wp_editor function 
    7896    var $default_editor_args = array(); 
     
    87105        $this->_field_types = apply_filters( 'custom_metadata_manager_field_types', $this->_field_types); 
    88106        $this->_cloneable_field_types = apply_filters( 'custom_metadata_manager_cloneable_field_types', $this->_cloneable_field_types); 
     107        $this->_taxonomy_fields = apply_filters( 'custom_metadata_manager_cloneable_field_types', $this->_taxonomy_fields); 
    89108        $this->_column_filter_object_types = apply_filters( 'custom_metadata_manager_column_filter_object_types', $this->_column_filter_object_types); 
    90109        $this->_pages_whitelist = apply_filters( 'custom_metadata_manager_pages_whitelist', $this->_pages_whitelist); 
     
    789808 
    790809        // save the taxonomy as a taxonomy [as well as a custom field] 
    791         if (($field->field_type == 'taxonomy_select' || $field->field_type == 'taxonomy_radio') && !in_array( $object_type, $this->_non_post_types ))   { 
     810        if ( in_array($field->field_type, $this->_taxonomy_fields) && !in_array( $object_type, $this->_non_post_types ) )   { 
    792811            wp_set_object_terms($object_id, $value, $field->taxonomy); 
    793812        } 
     
    868887            } 
    869888 
    870             if (isset($field->multiple) && $field->multiple) $field_id = $field_slug.'[]'; 
     889            if ( (isset($field->multiple) && $field->multiple) || in_array($field->field_type, $this->_always_multiple_fields) ) $field_id = $field_slug.'[]'; 
    871890            else $field_id = $field_slug; 
     891 
     892            $cloneable = (isset($field->multiple) && $field->multiple); 
    872893 
    873894            $readonly_str = ($field->readonly) ? 'readonly="readonly" ' : ''; 
     
    884905                foreach( $value as $v ) :   ?> 
    885906 
    886                 <div class="<?php echo $field_slug ?> cloneable" id="<?php echo $field_slug ?>-<?php echo $count;?>"> 
     907                <div class="<?php echo $field_slug ?><?php echo ( $cloneable ) ? ' cloneable' : ''; ?>" id="<?php echo $field_slug ?>-<?php echo $count;?>"> 
    887908 
    888909                    <?php switch ($field->field_type) : 
    889910                            case 'text': ?> 
    890                             <input type="text" id="<?php echo $field_slug; ?>" name="<?php echo $field_id; ?>" value="<?php echo esc_attr( $v ); ?>" <?php echo $readonly_str ?>/> 
     911                            <input type="text" id="<?php echo $field_slug; ?>" name="<?php echo $field_id; ?>" value="<?php echo esc_attr($v); ?>" <?php echo $readonly_str ?>/> 
    891912                        <?php break; ?> 
    892913 
     
    900921 
    901922                        <?php case 'checkbox': ?> 
    902                             <?php $checked = $v ? ' checked="checked"' : ''; ?> 
    903                             <input type="checkbox" id="<?php echo $field_slug; ?>" name="<?php echo $field_id; ?>" <?php echo $checked; ?> /> 
     923                            <input type="checkbox" id="<?php echo $field_slug; ?>" name="<?php echo $field_id; ?>" <?php checked($checked = $v ); ?> /> 
    904924                        <?php break; ?> 
    905925 
     
    907927                            <?php foreach( $field->values as $value_slug => $value_label ) : ?> 
    908928                                <?php 
    909                                 $checked = ( $v == $value_slug ) ? ' checked="checked"' : ''; 
    910929                                $value_id = sprintf( '%s_%s', $field_slug, $value_slug ); 
    911930                                ?> 
    912931                                <label for="<?php echo $value_id; ?>" class="selectit"> 
    913                                     <input type="radio" id="<?php echo $value_id; ?>" name="<?php echo $field_id; ?>" id="<?php echo $value_id; ?>" value="<?php echo $value_slug ?>" <?php echo $checked; ?> /> 
     932                                    <input type="radio" id="<?php echo $value_id; ?>" name="<?php echo $field_id; ?>" id="<?php echo $value_id; ?>" value="<?php echo $value_slug ?>" <?php checked($checked = $v ); ?> /> 
    914933                                    <?php echo $value_label; ?> 
    915934                                </label> 
     
    921940                                <?php foreach( $field->values as $value_slug => $value_label ) : ?> 
    922941                                    <?php 
    923                                     $selected = ( $v == $value_slug ) ? ' selected="selected"' : ''; 
    924942                                    $value_id = $field_slug . $value_slug; 
    925943                                    ?> 
    926                                     <option value="<?php echo $value_slug ?>" <?php echo $selected; ?>> 
     944                                    <option value="<?php echo $value_slug ?>" <?php selected($v == $value_slug); ?>> 
    927945                                        <?php echo $value_label; ?> 
    928946                                    </option> 
     
    932950 
    933951                        <?php case 'datepicker': ?> 
    934                             <input type="text" name="<?php echo $field_id; ?>" value="<?php echo @date('m/d/Y', $v); ?>" <?php echo $readonly_str ?>/> 
     952                            <input type="text" name="<?php echo $field_id; ?>" value="<?php echo (isset($v)) ? date('m/d/Y', $v) : ''; ?>" <?php echo $readonly_str ?>/> 
    935953                        <?php break; ?> 
    936954 
     
    951969                            <?php 
    952970                            $terms = get_terms( $field->taxonomy, array('hide_empty' => false)); 
    953                             foreach ( $terms as $term ) { ?> 
    954                                 <option value="<?php echo $term->slug ?>"<?php if ($term->slug == $v) echo ' selected' ?>><?php echo $term->name ?></option> 
    955                             <?php } 
    956                             ?> 
     971                            foreach ( $terms as $term ) : ?> 
     972                                <option value="<?php echo $term->slug ?>"<?php selected($term->slug == $v) ?>><?php echo $term->name ?></option> 
     973                            <?php endforeach; ?> 
    957974                            </select> 
    958975                        <?php break; ?> 
     
    960977                        <?php case 'taxonomy_radio': 
    961978                            $terms = get_terms( $field->taxonomy, array('hide_empty' => false) ); 
    962                             foreach ( $terms as $term ) { ?> 
     979                            foreach ( $terms as $term ) : ?> 
    963980                                <label for="<?php echo $term->slug; ?>" class="selectit"> 
    964                                     <input type="radio" name="<?php echo $field_id ?>" value="<?php echo $term->slug ?>" id="<?php echo $term->slug ?>"<?php if ($term->slug == $v) echo ' checked' ?>> 
     981                                    <input type="radio" name="<?php echo $field_id ?>" value="<?php echo $term->slug ?>" id="<?php echo $term->slug ?>"<?php checked($term->slug == $v) ?>> 
    965982                                    <?php echo $term->name ?> 
    966983                                </label> 
    967                         <?php } ?> 
     984                        <?php endforeach; ?> 
    968985                        <?php break; ?> 
    969986 
    970987                    <?php endswitch; ?> 
    971988 
    972                     <?php if ($count > 1) : ?> 
     989                    <?php if ( $cloneable && $count > 1) : ?> 
    973990                        <a href="#" class="del-multiple hide-if-no-js" style="color:red;">Delete</a> 
    974991                    <?php endif; $count++ ?> 
     
    977994 
    978995            <?php endforeach; ?> 
    979         <?php if (isset($field->multiple) && $field->multiple) : ?> 
     996 
     997            <?php if ($field->field_type == 'taxonomy_checkbox') : 
     998                $terms = get_terms( $field->taxonomy, array('hide_empty' => false) ); 
     999                foreach ( $terms as $term ) : ?> 
     1000                    <label for="<?php echo $term->slug; ?>" class="selectit"> 
     1001                        <input type="checkbox" name="<?php echo $field_id ?>" value="<?php echo $term->slug ?>" id="<?php echo $term->slug ?>"<?php checked(in_array($term->slug, $value)) ?>> 
     1002                        <?php echo $term->name ?> 
     1003                    </label> 
     1004                <?php endforeach; ?> 
     1005            <?php endif; ?> 
     1006 
     1007        <?php if ($cloneable) : ?> 
    9801008            <p><a href="#" class="add-multiple hide-if-no-js" id="add-<?php echo $field_slug ?>">+ Add New</a></p> 
    981         <?php endif;?> 
     1009        <?php endif ?> 
    9821010 
    9831011        <?php $this->_display_field_description( $field_slug, $field, $object_type, $object_id, $value ); ?> 
Note: See TracChangeset for help on using the changeset viewer.