<?php
/**
* Temporary fix for Events Manager calendar month display issue
* GTranslate / multilingual safe
*/
add_action( 'wp_footer', 'mf_fix_em_calendar_month_display', 999);
function mf_fix_em_calendar_month_display() {
?>
<script>
var added = false;
(function($) {
function getLocalizedMonthYear(year, month) {
try {
var locale = document.documentElement.lang || navigator.language || 'nl-NL';
var date = new Date(year, month - 1, 1);
return new Intl.DateTimeFormat(locale, {
month: 'short',
year: 'numeric'
}).format(date);
} catch (e) {
return year + '-' + month;
}
}
function forceFixCalendarMonth() {
try {
$('.em-calendar').each(function() {
var $cal = $(this);
var month = parseInt($cal.attr('data-month'), 10);
var year = parseInt($cal.attr('data-year'), 10);
if (!month || !year) return;
var monthPadded = (month < 10 ? '0' + month : month);
var correctValue = year + '-' + monthPadded;
var correctDisplay = getLocalizedMonthYear(year, month);
var $input = $cal.find('.em-month-picker');
if (!$input.length) return;
// Update input value & attribute
$input.val(correctValue);
$input.attr('data-month-value', correctDisplay);
// Sync Flatpickr if present
if ($input[0] && $input[0]._flatpickr) {
$input[0]._flatpickr.setDate(correctValue + '-01', false, "Y-m-d");
$input[0]._flatpickr.redraw();
}
// Visible month label
var $monthDiv = $cal.find('.month');
var $monthDisplay = $monthDiv.find('.month-display-text');
if ($monthDisplay.length === 0 ) {
$monthDiv.find('form').prepend( '<input type="text" class="em-month-picker flatpickr-input select-toggle active" value="'+correctDisplay.toUpperCase()+'" data-month-value="'+correctValue+'" style="width: 132.917px !important;" readonly="readonly">' );
//$monthDiv.find('form').prepend( '' + correctDisplay + '' );
// Hide original input
$input.css({
position: 'absolute',
opacity: 0,
width: 0,
height: 0
});
} else {
//$monthDisplay.text(correctDisplay);
}
});
} catch (e) {
console.log( "test " + e );
}
}
$(document).ready(function() {
//setTimeout(forceFixCalendarMonth, 150);
setTimeout(forceFixCalendarMonth, 600);
//setTimeout(forceFixCalendarMonth, 1200);
});
//Events Manager AJAX reloads
$(document).on('em_calendar_load em_calendar_loaded', forceFixCalendarMonth);
})(jQuery);
</script>
<?php
}
Comments
0 B
|👍
/👎