diff --git a/calendar/amd/src/calendar_mini.js b/calendar/amd/src/calendar_mini.js index 30f0385c753..e419a255d3e 100644 --- a/calendar/amd/src/calendar_mini.js +++ b/calendar/amd/src/calendar_mini.js @@ -20,7 +20,7 @@ * components by listening for and responding to different events * triggered within the calendar UI. * - * @module core_calendar/calendar + * @module core_calendar/calendar_mini * @package core_calendar * @copyright 2017 Andrew Nicols * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later diff --git a/calendar/classes/external/day_exporter.php b/calendar/classes/external/day_exporter.php index 7e888b84d44..377d2cd6e2c 100644 --- a/calendar/classes/external/day_exporter.php +++ b/calendar/classes/external/day_exporter.php @@ -126,6 +126,10 @@ class day_exporter extends exporter { 'type' => PARAM_URL, 'optional' => true, ], + 'viewdaylinktitle' => [ + 'type' => PARAM_RAW, + 'optional' => true, + ], 'events' => [ 'type' => calendar_event_exporter::read_properties_definition(), 'multiple' => true, @@ -183,6 +187,10 @@ class day_exporter extends exporter { 'viewdaylink' => $this->url->out(false), ]; + if ($viewdaylinktitle = $this->get_view_link_title()) { + $return['viewdaylinktitle'] = $viewdaylinktitle; + } + $cache = $this->related['cache']; $eventexporters = array_map(function($event) use ($cache, $output) { @@ -267,4 +275,22 @@ class day_exporter extends exporter { 'time' => $this->calendar->time, ]); } + + /** + * Get the title for view link. + * + * @return string + */ + protected function get_view_link_title() { + $title = null; + + $userdate = userdate($this->data[0], get_string('strftimedayshort')); + if ($this->data['istoday']) { + $title = get_string('todayplustitle', 'calendar', $userdate); + } else if (count($this->related['events'])) { + $title = get_string('eventsfor', 'calendar', $userdate); + } + + return $title; + } } diff --git a/calendar/renderer.php b/calendar/renderer.php index c84c8fcef0a..7de018fe737 100644 --- a/calendar/renderer.php +++ b/calendar/renderer.php @@ -292,12 +292,16 @@ class core_calendar_renderer extends plugin_renderer_base { $courseurl = new moodle_url($returnurl); $courseurl->remove_params('course'); - if ($label === null) { + if (empty($label)) { $label = get_string('listofcourses'); + $labelclass = 'sr-only'; + } else { + $labelclass = 'mr-1'; } - $select = html_writer::label($label, 'course', false, ['class' => 'mr-1']); - $select .= html_writer::select($courseoptions, 'course', $selected, false, ['class' => 'cal_courses_flt']); + $select = html_writer::label($label, 'course', false, ['class' => $labelclass]); + $select .= html_writer::select($courseoptions, 'course', $selected, false, + ['class' => 'cal_courses_flt', 'id' => 'course']); return $select; } diff --git a/calendar/templates/minicalendar_day_link.mustache b/calendar/templates/minicalendar_day_link.mustache index 072345dad23..3e9c8f15bcd 100644 --- a/calendar/templates/minicalendar_day_link.mustache +++ b/calendar/templates/minicalendar_day_link.mustache @@ -33,10 +33,11 @@ }} data-container="body"{{! }} data-toggle="popover"{{! }} data-html="true"{{! - }} data-trigger="hover"{{! + }} data-trigger="hover focus"{{! }} data-placement="top"{{! }} data-title="{{$title}}{{title}}{{/title}}"{{! }} data-alternate="{{$nocontent}}{{/nocontent}}"{{! + }} aria-label="{{viewdaylinktitle}}"{{! }}>{{$day}}{{day}}{{/day}}