mirror of
https://github.com/moodle/moodle.git
synced 2025-01-18 22:08:20 +01:00
821f2a390c
There is a difference in the behaviour of the calendar block when it is on the calendar page and when it is not. On the calendar page, when the user clicks on the date or link next/previous month or day name in the calendar block, it will have the effect of changing the URL, which should not happen. The patch also includes hiding popover after the user clicks the day number. When the user clicks on the date or is focused on the date and then presses enter on the keyboard, the popover does not automatically close. To fix this, I added an event type, "click", to be attached to the hidePopover function and added conditioning to the target element when there was a "click" event. An additional step was added to the Behat calendar for the click event to ease the testing process. For the popover, I set the "animation" to false to avoid the random Behat failure caused by the slow animation.
77 lines
2.6 KiB
PHP
77 lines
2.6 KiB
PHP
<?php
|
|
// This file is part of Moodle - http://moodle.org/
|
|
//
|
|
// Moodle is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// Moodle is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
/**
|
|
* Handles displaying the calendar block.
|
|
*
|
|
* @package block_calendar_month
|
|
* @copyright 2004 Eloy Lafuente (stronk7) {@link http://stronk7.com}
|
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
|
*/
|
|
class block_calendar_month extends block_base {
|
|
|
|
/**
|
|
* Initialise the block.
|
|
*/
|
|
public function init() {
|
|
$this->title = get_string('pluginname', 'block_calendar_month');
|
|
}
|
|
|
|
/**
|
|
* Return the content of this block.
|
|
*
|
|
* @return stdClass the content
|
|
*/
|
|
public function get_content() {
|
|
global $CFG;
|
|
|
|
require_once($CFG->dirroot.'/calendar/lib.php');
|
|
|
|
if ($this->content !== null) {
|
|
return $this->content;
|
|
}
|
|
|
|
$this->content = new stdClass;
|
|
$this->content->footer = '';
|
|
|
|
$renderer = $this->page->get_renderer('core_calendar');
|
|
$this->content->text = $renderer->start_layout();
|
|
|
|
$courseid = $this->page->course->id;
|
|
$categoryid = ($this->page->context->contextlevel === CONTEXT_COURSECAT && !empty($this->page->category)) ?
|
|
$this->page->category->id : null;
|
|
$calendar = \calendar_information::create(time(), $courseid, $categoryid);
|
|
list($data, $template) = calendar_get_view($calendar, 'monthblock', isloggedin());
|
|
|
|
// Add a flag that this is coming from calendar block.
|
|
$data->iscalendarblock = true;
|
|
|
|
$renderer = $this->page->get_renderer('core_calendar');
|
|
$this->content->text .= $renderer->render_from_template($template, $data);
|
|
|
|
$options = [
|
|
'showfullcalendarlink' => true
|
|
];
|
|
list($footerdata, $footertemplate) = calendar_get_footer_options($calendar, $options);
|
|
$this->content->footer .= $renderer->render_from_template($footertemplate, $footerdata);
|
|
$this->content->text .= $renderer->complete_layout();
|
|
|
|
$this->page->requires->js_call_amd('core_calendar/popover');
|
|
|
|
return $this->content;
|
|
}
|
|
}
|