1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
<?php
class CMB2_Type_Text_Datetime_Timestamp extends CMB2_Type_Picker_Base {
public function render( $args = array() ) {
$field = $this->field;
$value = $field->escaped_value();
if ( empty( $value ) ) {
$value = $field->get_default();
}
$args = wp_parse_args( $this->args, array(
'value' => $value,
'desc' => $this->_desc(),
'datepicker' => array(),
'timepicker' => array(),
) );
if ( empty( $args['value'] ) ) {
$args['value'] = $value;
$tz_offset = $field->field_timezone_offset();
if ( ! empty( $tz_offset ) ) {
$args['value'] -= $tz_offset;
}
}
$has_good_value = ! empty( $args['value'] ) && ! is_array( $args['value'] );
$date_input = parent::render( $this->date_args( $args, $has_good_value ) );
$time_input = parent::render( $this->time_args( $args, $has_good_value ) );
return $this->rendered( $date_input . "\n" . $time_input );
}
public function date_args( $args, $has_good_value ) {
$date_args = wp_parse_args( $args['datepicker'], array(
'class' => 'cmb2-text-small cmb2-datepicker',
'name' => $this->_name( '[date]' ),
'id' => $this->_id( '_date' ),
'value' => $has_good_value ? $this->field->get_timestamp_format( 'date_format', $args['value'] ) : '',
'desc' => '',
) );
$date_args['rendered'] = true;
return $this->parse_picker_options( 'date', $date_args );
}
public function time_args( $args, $has_good_value ) {
$time_args = wp_parse_args( $args['timepicker'], array(
'class' => 'cmb2-timepicker text-time',
'name' => $this->_name( '[time]' ),
'id' => $this->_id( '_time' ),
'value' => $has_good_value ? $this->field->get_timestamp_format( 'time_format', $args['value'] ) : '',
'desc' => $args['desc'],
'js_dependencies' => array( 'jquery-ui-core', 'jquery-ui-datepicker', 'jquery-ui-datetimepicker' ),
) );
$time_args['rendered'] = true;
return $this->parse_picker_options( 'time', $time_args );
}
}