balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

input.php (3115B)


      1 <?php
      2 /**
      3  * The abstract input field which is used for all <input> fields.
      4  *
      5  * @package Meta Box
      6  */
      7 
      8 /**
      9  * Abstract input field class.
     10  */
     11 abstract class RWMB_Input_Field extends RWMB_Field {
     12 	/**
     13 	 * Enqueue scripts and styles.
     14 	 */
     15 	public static function admin_enqueue_scripts() {
     16 		wp_enqueue_style( 'rwmb-input', RWMB_CSS_URL . 'input.css', '', RWMB_VER );
     17 	}
     18 
     19 	/**
     20 	 * Get field HTML.
     21 	 *
     22 	 * @param mixed $meta  Meta value.
     23 	 * @param array $field Field parameters.
     24 	 * @return string
     25 	 */
     26 	public static function html( $meta, $field ) {
     27 		$output = '';
     28 
     29 		if ( $field['prepend'] || $field['append'] ) {
     30 			$output = '<div class="rwmb-input-group">';
     31 		}
     32 
     33 		if ( $field['prepend'] ) {
     34 			$output .= '<span class="rwmb-input-group-text">' . $field['prepend'] . '</span>';
     35 		}
     36 
     37 		$attributes = self::call( 'get_attributes', $field, $meta );
     38 		$output    .= sprintf( '<input %s>%s', self::render_attributes( $attributes ), self::datalist( $field ) );
     39 
     40 		if ( $field['append'] ) {
     41 			$output .= '<span class="rwmb-input-group-text">' . $field['append']. '</span>';
     42 		}
     43 
     44 		if ( $field['prepend'] || $field['append'] ) {
     45 			$output .= '</div>';
     46 		}
     47 
     48 		return $output;
     49 	}
     50 
     51 	/**
     52 	 * Normalize parameters for field.
     53 	 *
     54 	 * @param array $field Field parameters.
     55 	 * @return array
     56 	 */
     57 	public static function normalize( $field ) {
     58 		$field = parent::normalize( $field );
     59 		$field = wp_parse_args(
     60 			$field,
     61 			array(
     62 				'autocomplete' => false,
     63 				'datalist'     => false,
     64 				'readonly'     => false,
     65 				'maxlength'    => false,
     66 				'pattern'      => false,
     67 				'prepend'      => '',
     68 				'append'       => '',
     69 			)
     70 		);
     71 		if ( $field['datalist'] ) {
     72 			$field['datalist'] = wp_parse_args(
     73 				$field['datalist'],
     74 				array(
     75 					'id'      => $field['id'] . '_list',
     76 					'options' => array(),
     77 				)
     78 			);
     79 		}
     80 		return $field;
     81 	}
     82 
     83 	/**
     84 	 * Get the attributes for a field.
     85 	 *
     86 	 * @param array $field Field parameters.
     87 	 * @param mixed $value Meta value.
     88 	 * @return array
     89 	 */
     90 	public static function get_attributes( $field, $value = null ) {
     91 		$attributes = parent::get_attributes( $field, $value );
     92 		$attributes = wp_parse_args(
     93 			$attributes,
     94 			array(
     95 				'autocomplete' => $field['autocomplete'],
     96 				'list'         => $field['datalist'] ? $field['datalist']['id'] : false,
     97 				'readonly'     => $field['readonly'],
     98 				'maxlength'    => $field['maxlength'],
     99 				'pattern'      => $field['pattern'],
    100 				'value'        => $value,
    101 				'placeholder'  => $field['placeholder'],
    102 				'type'         => $field['type'],
    103 			)
    104 		);
    105 		if ( isset( $field['size'] ) ) {
    106 			$attributes['size'] = $field['size'];
    107 		}
    108 
    109 		return $attributes;
    110 	}
    111 
    112 	/**
    113 	 * Create datalist, if any.
    114 	 *
    115 	 * @param array $field Field parameters.
    116 	 * @return string
    117 	 */
    118 	protected static function datalist( $field ) {
    119 		if ( empty( $field['datalist'] ) ) {
    120 			return '';
    121 		}
    122 
    123 		$datalist = $field['datalist'];
    124 		$html     = sprintf( '<datalist id="%s">', $datalist['id'] );
    125 		foreach ( $datalist['options'] as $option ) {
    126 			$html .= sprintf( '<option value="%s"></option>', $option );
    127 		}
    128 		$html .= '</datalist>';
    129 		return $html;
    130 	}
    131 }