wp/wp-content/plugins/option-tree/includes/ot-meta-box-api.php
author ymh <ymh.work@gmail.com>
Wed, 06 Nov 2013 03:21:17 +0000
changeset 0 d970ebf37754
child 5 5e2f62d02dcd
permissions -rw-r--r--
first import
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
<?php if ( ! defined( 'OT_VERSION' ) ) exit( 'No direct script access allowed' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
 * OptionTree Meta Box API
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
 * This class loads all the methods and helpers specific to build a meta box.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
 * @package   OptionTree
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
 * @author    Derek Herman <derek@valendesigns.com>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
 * @copyright Copyright (c) 2013, Derek Herman
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
if ( ! class_exists( 'OT_Meta_Box' ) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
  class OT_Meta_Box {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
  
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
    /* variable to store the meta box array */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
    private $meta_box;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
  
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
    /**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
     * PHP5 constructor method.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
     *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
     * This method adds other methods of the class to specific hooks within WordPress.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
     *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
     * @uses      add_action()
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
     *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
     * @return    void
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
     *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
     * @access    public
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
     * @since     1.0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
     */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
    function __construct( $meta_box ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
      if ( ! is_admin() )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
        return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
        
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
      $this->meta_box = $meta_box;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
      
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
      add_action( 'add_meta_boxes', array( $this, 'add_meta_boxes' ) );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
      
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
      add_action( 'save_post', array( $this, 'save_meta_box' ), 1, 2 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
      
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
    /**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
     * Adds meta box to any post type
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
     *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
     * @uses      add_meta_box()
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
     *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
     * @return    void
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
     *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
     * @access    public
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
     * @since     1.0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
     */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
    function add_meta_boxes() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
      foreach ( (array) $this->meta_box['pages'] as $page ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
        add_meta_box( $this->meta_box['id'], $this->meta_box['title'], array( $this, 'build_meta_box' ), $page, $this->meta_box['context'], $this->meta_box['priority'], $this->meta_box['fields'] );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
      }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
    /**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
     * Meta box view
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
     *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
     * @return    string
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
     *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
     * @access    public
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
     * @since     1.0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
     */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
    function build_meta_box( $post, $metabox ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
      
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
      echo '<div class="ot-metabox-wrapper">';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
           
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
        /* Use nonce for verification */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
        echo '<input type="hidden" name="' . $this->meta_box['id'] . '_nonce" value="' . wp_create_nonce( $this->meta_box['id'] ) . '" />';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
        
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
        /* meta box description */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
        echo isset( $this->meta_box['desc'] ) && ! empty( $this->meta_box['desc'] ) ? '<div class="description" style="padding-top:10px;">' . htmlspecialchars_decode( $this->meta_box['desc'] ) . '</div>' : '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
      
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
        /* loop through meta box fields */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
        foreach ( $this->meta_box['fields'] as $field ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
        
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
          /* get current post meta data */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
          $field_value = get_post_meta( $post->ID, $field['id'], true );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
          
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
          /* set standard value */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
          if ( isset( $field['std'] ) ) {  
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
            $field_value = ot_filter_std_value( $field_value, $field['std'] );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
          }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
          
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
          /* build the arguments array */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
          $_args = array(
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
            'type'              => $field['type'],
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
            'field_id'          => $field['id'],
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
            'field_name'        => $field['id'],
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
            'field_value'       => $field_value,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
            'field_desc'        => isset( $field['desc'] ) ? $field['desc'] : '',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
            'field_std'         => isset( $field['std'] ) ? $field['std'] : '',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
            'field_rows'        => isset( $field['rows'] ) && ! empty( $field['rows'] ) ? $field['rows'] : 10,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
            'field_post_type'   => isset( $field['post_type'] ) && ! empty( $field['post_type'] ) ? $field['post_type'] : 'post',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
            'field_taxonomy'    => isset( $field['taxonomy'] ) && ! empty( $field['taxonomy'] ) ? $field['taxonomy'] : 'category',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
            'field_min_max_step'=> isset( $field['min_max_step'] ) && ! empty( $field['min_max_step'] ) ? $field['min_max_step'] : '0,100,1',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
            'field_class'       => isset( $field['class'] ) ? $field['class'] : '',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
            'field_choices'     => isset( $field['choices'] ) ? $field['choices'] : array(),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
            'field_settings'    => isset( $field['settings'] ) && ! empty( $field['settings'] ) ? $field['settings'] : array(),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
            'post_id'           => $post->ID,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
            'meta'              => true
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
          );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
          
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
          /* only allow simple textarea due to DOM issues with wp_editor() */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
          if ( $_args['type'] == 'textarea' )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
            $_args['type'] = 'textarea-simple';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
          
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
          /* option label */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
          echo '<div class="format-settings">';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
            
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
            /* don't show title with textblocks */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
            if ( $_args['type'] != 'textblock' && ! empty( $field['label'] ) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
              echo '<div class="format-setting-label">';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
                echo '<label for="' . $_args['field_id'] . '" class="label">' . $field['label'] . '</label>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
              echo '</div>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
            }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
      
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
            /* get the option HTML */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
            echo ot_display_by_type( $_args );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
            
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
          echo '</div>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   124
          
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   126
      
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
      echo '</div>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   129
    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   130
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   131
    /**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   132
     * Saves the meta box values
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   133
     *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
     * @return    void
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
     *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   136
     * @access    public
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   137
     * @since     1.0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   138
     */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   139
    function save_meta_box( $post_id, $post_object ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   140
      global $pagenow;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   141
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   142
      /* don't save if $_POST is empty */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   143
      if ( empty( $_POST ) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   144
        return $post_id;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   145
      
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   146
      /* don't save during quick edit */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   147
      if ( $pagenow == 'admin-ajax.php' )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   148
        return $post_id;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   149
        
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   150
      /* don't save during autosave */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   151
      if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   152
        return $post_id;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   153
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   154
      /* don't save if viewing a revision */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   155
      if ( $post_object->post_type == 'revision' || $pagenow == 'revision.php' )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   156
        return $post_id;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   157
  
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   158
      /* verify nonce */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   159
      if ( isset( $_POST[ $this->meta_box['id'] . '_nonce'] ) && ! wp_verify_nonce( $_POST[ $this->meta_box['id'] . '_nonce'], $this->meta_box['id'] ) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   160
        return $post_id;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   161
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   162
      /* check permissions */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   163
      if ( isset( $_POST['post_type'] ) && 'page' == $_POST['post_type'] ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   164
        if ( ! current_user_can( 'edit_page', $post_id ) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   165
          return $post_id;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   166
      } else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   167
        if ( ! current_user_can( 'edit_post', $post_id ) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   168
          return $post_id;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   169
      }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   170
      
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   171
      foreach ( $this->meta_box['fields'] as $field ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   172
        
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   173
        $old = get_post_meta( $post_id, $field['id'], true );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   174
        $new = '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   175
        
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   176
        /* there is data to validate */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   177
        if ( isset( $_POST[$field['id']] ) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   178
        
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   179
          /* slider and list item */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   180
          if ( in_array( $field['type'], array( 'list-item', 'slider' ) ) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   181
              
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   182
            /* required title setting */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   183
            $required_setting = array(
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   184
              array(
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   185
                'id'        => 'title',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   186
                'label'     => __( 'Title', 'option-tree' ),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   187
                'desc'      => '',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   188
                'std'       => '',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   189
                'type'      => 'text',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   190
                'rows'      => '',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   191
                'class'     => 'option-tree-setting-title',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   192
                'post_type' => '',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   193
                'choices'   => array()
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   194
              )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   195
            );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   196
            
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   197
            /* get the settings array */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   198
            $settings = isset( $_POST[$field['id'] . '_settings_array'] ) ? unserialize( ot_decode( $_POST[$field['id'] . '_settings_array'] ) ) : array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   199
            
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   200
            /* settings are empty for some odd ass reason get the defaults */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   201
            if ( empty( $settings ) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   202
              $settings = 'slider' == $field['type'] ? 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   203
              ot_slider_settings( $field['id'] ) : 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   204
              ot_list_item_settings( $field['id'] );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   205
            }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   206
            
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   207
            /* merge the two settings array */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   208
            $settings = array_merge( $required_setting, $settings );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   209
            
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   210
            foreach( $_POST[$field['id']] as $k => $setting_array ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   211
  
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   212
              foreach( $settings as $sub_setting ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   213
                
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   214
                /* verify sub setting has a type & value */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   215
                if ( isset( $sub_setting['type'] ) && isset( $_POST[$field['id']][$k][$sub_setting['id']] ) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   216
                  
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   217
                  $_POST[$field['id']][$k][$sub_setting['id']] = ot_validate_setting( $_POST[$field['id']][$k][$sub_setting['id']], $sub_setting['type'], $sub_setting['id'] );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   218
                  
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   219
                }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   220
                
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   221
              }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   222
            
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   223
            }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   224
            
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   225
            /* set up new data with validated data */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   226
            $new = $_POST[$field['id']];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   227
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   228
          } else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   229
            
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   230
            /* run through validattion */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   231
            $new = ot_validate_setting( $_POST[$field['id']], $field['type'], $field['id'] );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   232
            
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   233
          }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   234
          
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   235
          /* insert CSS */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   236
          if ( $field['type'] == 'css' ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   237
            
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   238
            /* insert CSS into dynamic.css */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   239
            if ( '' !== $new ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   240
              
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   241
              ot_insert_css_with_markers( $field['id'], $new, true );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   242
            
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   243
            /* remove old CSS from dynamic.css */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   244
            } else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   245
            
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   246
              ot_remove_old_css( $field['id'] );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   247
              
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   248
            }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   249
          
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   250
          }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   251
        
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   252
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   253
        
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   254
        if ( $new && $new !== $old ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   255
          update_post_meta( $post_id, $field['id'], $new );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   256
        } else if ( '' == $new && $old ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   257
          delete_post_meta( $post_id, $field['id'], $old );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   258
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   259
      }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   260
  
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   261
    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   262
  
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   263
  }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   264
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   265
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   266
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   267
/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   268
 * This method instantiates the meta box class & builds the UI.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   269
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   270
 * @uses     OT_Meta_Box()
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   271
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   272
 * @param    array    Array of arguments to create a meta box
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   273
 * @return   void
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   274
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   275
 * @access   public
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   276
 * @since    2.0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   277
 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   278
if ( ! function_exists( 'ot_register_meta_box' ) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   279
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   280
  function ot_register_meta_box( $args ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   281
    if ( ! $args )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   282
      return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   283
      
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   284
    $ot_meta_box = new OT_Meta_Box( $args );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   285
  }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   286
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   287
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   288
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   289
/* End of file ot-meta-box-api.php */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   290
/* Location: ./includes/ot-meta-box-api.php */