name = 'date_time_picker';
$this->title = __( 'Date and Time Picker' );
$this->domain = 'acf-date_time_picker';
$this->defaults = array(
'value' => ''
, 'label' => __( 'Choose Time', $this->domain )
, 'time_format' => 'hh:mm'
, 'show_date' => true
, 'date_format' => 'mm/dd/yy'
, 'show_week_number' => false
, 'picker' => 'slider'
);
$this->settings = array(
'path' => plugin_dir_path( __FILE__)
, 'dir' => plugin_dir_url( __FILE__)
, 'version' => '2.0.0.beta'
);
}
/*--------------------------------------------------------------------------------------
*
* create_options
* - this function is called from core/field_meta_box.php to create extra options
* for your field
*
* @params
* - $key (int) - the $_POST obejct key required to save the options to the field
* - $field (array) - the field object
*
* @author Elliot Condon
* @since 2.2.0
*
*-------------------------------------------------------------------------------------*/
function create_options( $key, $field ) {
$field = array_merge( $this->defaults, $field );
?>
|
|
parent->create_field( array(
'type' => 'radio'
, 'name' => 'fields['.$key.'][show_date]'
, 'value' => $field['show_date']
, 'layout' => 'horizontal'
, 'choices' => array(
'true' => __( 'Date and Time Picker', $this->domain )
, 'false' => __( 'Time Picker', $this->domain )
)
) );
?>
|
|
domain ); ?> formatDate
|
parent->create_field( array(
'type' => 'text'
, 'name' => 'fields[' . $key . '][date_format]'
, 'value' => $field['date_format']
) );
?>
|
|
formatting time", $this->domain ), "http://trentrichardson.com/examples/timepicker/#tp-formatting" );?>
|
parent->create_field( array(
'type' => 'text'
, 'name' => 'fields[' . $key . '][time_format]'
, 'value' => $field['time_format']
) );
?>
|
|
|
parent->create_field( array(
'type' => 'radio'
, 'name' => 'fields['.$key.'][show_week_number]'
, 'value' => $field['show_week_number']
, 'layout' => 'horizontal'
, 'choices' => array(
'true' => __( 'Yes', $this->domain )
, 'false' => __( 'No', $this->domain )
)
) );
?>
|
|
|
parent->create_field( array(
'type' => 'radio'
, 'name' => 'fields['.$key.'][picker]'
, 'value' => $field['picker']
, 'layout' => 'horizontal'
, 'choices' => array(
'slider' => __( 'Slider', $this->domain )
, 'select' => __( 'Select', $this->domain )
)
) );
?>
|
defaults, $field );
extract( $field, EXTR_SKIP ); //Declare each item in $field as its own variable i.e.: $name, $value, $label, $time_format, $date_format and $show_week_number
if ( $show_date != 'true' ) {
echo '';
} else {
echo '';
}
}
/*--------------------------------------------------------------------------------------
*
* admin_print_scripts / admin_print_styles
* - this function is called in the admin_print_scripts / admin_print_styles where
* your field is created. Use this function to register css and javascript to assist
* your create_field() function.
*
* @author Elliot Condon
* @since 3.0.0
*
*-------------------------------------------------------------------------------------*/
function admin_print_scripts() {
global $wp_locale;
$has_locale = false;
$js_locale = $this->get_js_locale(get_locale());
wp_enqueue_script( 'jquery-ui-timepicker', $this->settings['dir'] . 'js/jquery-ui-timepicker-addon.js', array(
'jquery-ui-datepicker',
'jquery-ui-slider'
), $this->settings['version'], true );
if ( file_exists( dirname( __FILE__ ) . '/js/localization/jquery-ui-timepicker-' . $js_locale . '.js' ) ) {
wp_enqueue_script( 'timepicker-localization', $this->settings['dir'] . 'js/localization/jquery-ui-timepicker-' . $js_locale . '.js', array(
'jquery-ui-timepicker'
), $this->settings['version'], true );
wp_enqueue_script( 'timepicker', $this->settings['dir'] . 'js/timepicker.js', array(
'timepicker-localization'
), $this->settings['version'], true );
$has_locale = true;
} else {
wp_enqueue_script( 'timepicker', $this->settings['dir'] . 'js/timepicker.js', array(
'jquery-ui-timepicker'
), $this->settings['version'], true );
}
if ( ! $has_locale && $js_locale != 'en' ) {
$timepicker_locale = array(
'closeText' => __( 'Done', $this->domain )
, 'currentText' => __( 'Today', $this->domain )
, 'prevText' => __( 'Prev', $this->domain )
, 'nextText' => __( 'Next', $this->domain )
, 'monthStatus' => __( 'Show a different month', $this->domain )
, 'weekHeader' => __( 'Wk', $this->domain )
, 'timeText' => __( "Time", $this->domain )
, 'hourText' => __( "Hour", $this->domain )
, 'minuteText' => __( "Minute", $this->domain )
, 'secondText' => __( "Second", $this->domain )
, 'millisecText' => __( "Millisecond", $this->domain )
, 'timezoneText' => __( "Time Zone", $this->domain )
, 'isRTL' => $wp_locale->is_rtl()
);
}
$timepicker_wp_locale = array(
'monthNames' => $this->strip_array_indices( $wp_locale->month )
, 'monthNamesShort' => $this->strip_array_indices( $wp_locale->month_abbrev )
, 'dayNames' => $this->strip_array_indices( $wp_locale->weekday )
, 'dayNamesShort' => $this->strip_array_indices( $wp_locale->weekday_abbrev )
, 'dayNamesMin' => $this->strip_array_indices( $wp_locale->weekday_initial )
, 'showMonthAfterYear' => false
, 'showWeek' => false
, 'firstDay' => get_option( 'start_of_week' )
);
$l10n = ( isset( $timepicker_locale ) ) ? array_merge( $timepicker_wp_locale, $timepicker_locale ) : $timepicker_wp_locale;
wp_localize_script( 'timepicker', 'timepicker_objectL10n', $l10n );
}
/**
* helper function, see: http://www.renegadetechconsulting.com/tutorials/jquery-datepicker-and-wordpress-i18n
* @param array $ArrayToStrip
* @return array
*/
function strip_array_indices( $ArrayToStrip ) {
foreach ( $ArrayToStrip as $objArrayItem ) {
$NewArray[] = $objArrayItem;
}
return $NewArray;
}
function get_js_locale($locale) {
$tmp_locale = ( '' == $locale ) ? 'en' : strtolower($locale);
if (strpos($tmp_locale,'_') !== false) {
return substr( $tmp_locale, 3, 2 );
} else {
return $tmp_locale;
}
}
function admin_print_styles() {
wp_enqueue_style( 'jquery-style', $this->settings['dir'] . 'css/jquery-ui.css' );
wp_enqueue_style( 'timepicker', $this->settings['dir'] . 'css/jquery-ui-timepicker-addon.css', array(
'jquery-style'
), $this->settings['version'] );
}
}