MDL-80499 datafield_date: specify UTC time when editing field content.

This commit is contained in:
Paul Holden
2024-01-10 19:23:11 +00:00
parent d5d0774fec
commit f1d798a1e0
3 changed files with 30 additions and 6 deletions
+6 -3
View File
@@ -2049,16 +2049,19 @@ class html_writer {
* @param int $currenttime A default timestamp in GMT
* @param int $step minute spacing
* @param array $attributes - html select element attributes
* @return HTML fragment
* @param float|int|string $timezone the timezone to use to calculate the time
* {@link https://moodledev.io/docs/apis/subsystems/time#timezone}
* @return string HTML fragment
*/
public static function select_time($type, $name, $currenttime = 0, $step = 5, array $attributes = null) {
public static function select_time($type, $name, $currenttime = 0, $step = 5, array $attributes = null, $timezone = 99) {
global $OUTPUT;
if (!$currenttime) {
$currenttime = time();
}
$calendartype = \core_calendar\type_factory::get_calendar_instance();
$currentdate = $calendartype->timestamp_to_date_array($currenttime);
$currentdate = $calendartype->timestamp_to_date_array($currenttime, $timezone);
$userdatetype = $type;
$timeunits = array();
+4
View File
@@ -1,6 +1,10 @@
This files describes API changes in core libraries and APIs,
information provided here is intended especially for developers.
=== 4.3.3 ===
* The `html_writer::select_time` method has a `$timezone` parameter to use when formatting the time parameter
=== 4.3.2 ===
* The current page language is available in new `core/config` language property for Javascript modules
+20 -3
View File
@@ -80,9 +80,26 @@ class data_field_date extends data_field_base {
}
$str = '<div title="'.s($this->field->description).'" class="mod-data-input form-inline">';
$dayselector = html_writer::select_time('days', 'field_'.$this->field->id.'_day', $content);
$monthselector = html_writer::select_time('months', 'field_'.$this->field->id.'_month', $content);
$yearselector = html_writer::select_time('years', 'field_'.$this->field->id.'_year', $content);
$dayselector = html_writer::select_time(
type: 'days',
name: "field_{$this->field->id}_day",
currenttime: $content,
timezone: 0,
);
$monthselector = html_writer::select_time(
type: 'months',
name: "field_{$this->field->id}_month",
currenttime: $content,
timezone: 0,
);
$yearselector = html_writer::select_time(
type: 'years',
name: "field_{$this->field->id}_year",
currenttime: $content,
timezone: 0,
);
$str .= $dayselector . $monthselector . $yearselector;
$str .= '</div>';