File "Live_Date_Preview.php"
Full Path: /home/romayxjt/public_html/wp-content/plugins/the-events-calendar/common/src/Tribe/Admin/Live_Date_Preview.php
File size: 1.87 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* Facilitiates live date previews in the Events > Settings > Display admin screen.
*/
class Tribe__Admin__Live_Date_Preview {
protected $target_fields = [
'dateWithYearFormat',
'dateWithoutYearFormat',
'monthAndYearFormat',
'weekDayFormat',
];
/**
* Static Singleton Holder
*
* @var self
*/
protected static $instance;
/**
* Static Singleton Factory Method
*
* @return self
*/
public static function instance() {
return self::$instance ? self::$instance : self::$instance = new self;
}
/**
* Adds live date previews to the display settings tab (nothing is setup unless
* the user is actually on that tab).
*/
public function __construct() {
add_action( 'tribe_settings_after_do_tabs', [ $this, 'listen' ] );
}
/**
* If the user looking at the Display settings tab, adds live date preview facilities.
*/
public function listen() {
// We are only interested in the "Display" tab
if ( 'display-date-time-tab' !== tribe( 'settings' )->get_current_tab() ) {
return;
}
/**
* Add or remove fields which should have live date/time preview facilities.
*
* @var array $target_fields
*/
$this->target_fields = (array) apply_filters( 'tribe_settings_date_preview_fields', $this->target_fields );
add_filter( 'tribe_field_div_end', [ $this, 'setup_date_previews' ], 10, 2 );
// We are still before `admin_enqueue_scripts` making it safe to use `tribe_asset`
tec_asset( Tribe__Main::instance(), 'tribe-date-live-refresh', 'admin-date-preview.js', [ 'jquery' ], 'admin_enqueue_scripts' );
}
public function setup_date_previews( $html, $field ) {
// Not one of the fields we're interested in? Return without modification
if ( ! in_array( $field->id, $this->target_fields ) ) {
return $html;
}
$preview = esc_html( date_i18n( $field->value ) );
return " <code class='live-date-preview'> $preview </code> $html";
}
}