Skip to content
Snippets Groups Projects

Show current timezone beside time fields.

+ 30
2
@@ -260,16 +260,23 @@ function _scheduler_entity_form_alter(&$form, FormStateInterface $form_state, $f
$descriptions['format'] = t('Enter a date and time.');
}
$logged_in_user_id = \Drupal::currentUser()->id();
$user_edit_url = "/user/$logged_in_user_id/edit";
if (!$publishing_required) {
$descriptions['blank'] = t('Leave the date blank for no scheduled publishing.');
$descriptions['blank'] = t('Leave the date blank for no scheduled publishing. To configure your timezone, <a href="@url" target="_blank">edit your user profile</a>', [
'@url' => $user_edit_url,
]);
}
$form['publish_on']['#access'] = $publishing_enabled && $publishing_displayed;
$form['publish_on']['widget'][0]['value']['#required'] = $publishing_required;
$form['publish_on']['widget'][0]['value']['#description'] = Xss::filter(implode(' ', $descriptions));
$form['#after_build'][] = "scheduler_append_timezone_to_fields";
if (!$unpublishing_required) {
$descriptions['blank'] = t('Leave the date blank for no scheduled unpublishing.');
$descriptions['blank'] = t('Leave the date blank for no scheduled publishing. To configure your timezone, <a href="@url" target="_blank">edit your user profile</a>', [
'@url' => $user_edit_url,
]);
}
else {
unset($descriptions['blank']);
@@ -346,6 +353,27 @@ function _scheduler_entity_form_alter(&$form, FormStateInterface $form_state, $f
}
}
/**
* Add timezone after 'publish on' and 'unpublish on' field in node forms.
*
* @see _scheduler_entity_form_alter()
*/
function scheduler_append_timezone_to_fields($form, &$form_state) {
$user_timezone = \Drupal::currentUser()->getTimezone();
$date = new DateTime('', new DateTimeZone($user_timezone));
$abbr_timezone = $date->format('T');
$user_timezone_arr = explode('/', $user_timezone);
$user_timezone_str = $user_timezone_arr[1] ?? '';
$processed_user_timezone = str_replace('_', ' ', $user_timezone_str);
if ($form['publish_on']) {
$form['publish_on']['widget'][0]['value']['time']['#suffix'] = '<div class="timezone_suffix">' . $abbr_timezone . ' (' . $processed_user_timezone . ')</div>';
}
if ($form['unpublish_on']) {
$form['unpublish_on']['widget'][0]['value']['time']['#suffix'] = '<div class="timezone_suffix">' . $abbr_timezone . ' (' . $processed_user_timezone . ')</div>';
}
return $form;
}
/**
* Form alter handling for entity type forms.
*/
Loading