mirror of
https://github.com/moodle/moodle.git
synced 2025-04-19 07:25:30 +02:00
MDL-60065 calendar: Control navigation on mini
This commit is contained in:
parent
b9ff690eb6
commit
fee025ecbb
2
calendar/amd/build/repository.min.js
vendored
2
calendar/amd/build/repository.min.js
vendored
@ -1 +1 @@
|
||||
define(["jquery","core/ajax"],function(a,b){var c=function(a){var c={methodname:"core_calendar_delete_calendar_events",args:{events:[{eventid:a,repeat:1}]}};return b.call([c])[0]},d=function(a){var c={methodname:"core_calendar_get_calendar_event_by_id",args:{eventid:a}};return b.call([c])[0]},e=function(a){var c={methodname:"core_calendar_submit_create_update_form",args:{formdata:a}};return b.call([c])[0]},f=function(a,c,d){var e={methodname:"core_calendar_get_calendar_monthly_view",args:{year:a,month:c,courseid:d}};return b.call([e])[0]},g=function(a,c){var d={methodname:"core_calendar_update_event_start_day",args:{eventid:a,daytimestamp:c}};return b.call([d])[0]};return{getEventById:d,deleteEvent:c,updateEventStartDay:g,submitCreateUpdateForm:e,getCalendarMonthData:f}});
|
||||
define(["jquery","core/ajax"],function(a,b){var c=function(a){var c={methodname:"core_calendar_delete_calendar_events",args:{events:[{eventid:a,repeat:1}]}};return b.call([c])[0]},d=function(a){var c={methodname:"core_calendar_get_calendar_event_by_id",args:{eventid:a}};return b.call([c])[0]},e=function(a){var c={methodname:"core_calendar_submit_create_update_form",args:{formdata:a}};return b.call([c])[0]},f=function(a,c,d,e){var f={methodname:"core_calendar_get_calendar_monthly_view",args:{year:a,month:c,courseid:d,includenavigation:e}};return b.call([f])[0]},g=function(a,c){var d={methodname:"core_calendar_update_event_start_day",args:{eventid:a,daytimestamp:c}};return b.call([d])[0]};return{getEventById:d,deleteEvent:c,updateEventStartDay:g,submitCreateUpdateForm:e,getCalendarMonthData:f}});
|
2
calendar/amd/build/view_manager.min.js
vendored
2
calendar/amd/build/view_manager.min.js
vendored
@ -1 +1 @@
|
||||
define(["jquery","core/templates","core/notification","core_calendar/repository","core_calendar/events"],function(a,b,c,d,e){var f={ROOT:"[data-region='calendar']",CALENDAR_NAV_LINK:".calendarwrapper .arrow_link",CALENDAR_MONTH_WRAPPER:".calendarwrapper",LOADING_ICON_CONTAINER:'[data-region="overlay-icon-container"]'},g=function(b){b=a(b),b.on("click",f.CALENDAR_NAV_LINK,function(c){var d=a(b).find(f.CALENDAR_MONTH_WRAPPER).data("courseid"),e=a(c.currentTarget);i(b,e.attr("href"),e.data("year"),e.data("month"),d),c.preventDefault()})},h=function(g,h,i,j){return k(g),d.getCalendarMonthData(h,i,j).then(function(a){return b.render(g.attr("data-template"),a)}).then(function(a,c){return b.replaceNode(g.find(f.CALENDAR_MONTH_WRAPPER),a,c)}).then(function(){a("body").trigger(e.viewUpdated)}).always(function(){return l(g)}).fail(c.exception)},i=function(b,c,d,f,g){return h(b,d,f,g).then(function(){return c.length&&"#"!==c&&window.history.pushState({},"",c),arguments}).then(function(){return a("body").trigger(e.monthChanged,[d,f,g]),arguments})},j=function(a,b){var c=a.find(f.CALENDAR_MONTH_WRAPPER).data("year"),d=a.find(f.CALENDAR_MONTH_WRAPPER).data("month");return b||(b=a.find(f.CALENDAR_MONTH_WRAPPER).data("courseid")),h(a,c,d,b)},k=function(a){var b=a.find(f.LOADING_ICON_CONTAINER);b.removeClass("hidden")},l=function(a){var b=a.find(f.LOADING_ICON_CONTAINER);b.addClass("hidden")};return{init:function(a){g(a)},reloadCurrentMonth:j,changeMonth:i,refreshMonthContent:h}});
|
||||
define(["jquery","core/templates","core/notification","core_calendar/repository","core_calendar/events"],function(a,b,c,d,e){var f={ROOT:"[data-region='calendar']",CALENDAR_NAV_LINK:".calendarwrapper .arrow_link",CALENDAR_MONTH_WRAPPER:".calendarwrapper",LOADING_ICON_CONTAINER:'[data-region="overlay-icon-container"]'},g=function(b){b=a(b),b.on("click",f.CALENDAR_NAV_LINK,function(c){var d=a(b).find(f.CALENDAR_MONTH_WRAPPER).data("courseid"),e=a(c.currentTarget);i(b,e.attr("href"),e.data("year"),e.data("month"),d),c.preventDefault()})},h=function(g,h,i,j){k(g);var m=g.data("includenavigation");return d.getCalendarMonthData(h,i,j,m).then(function(a){return b.render(g.attr("data-template"),a)}).then(function(a,c){return b.replaceNode(g.find(f.CALENDAR_MONTH_WRAPPER),a,c)}).then(function(){a("body").trigger(e.viewUpdated)}).always(function(){return l(g)}).fail(c.exception)},i=function(b,c,d,f,g){return h(b,d,f,g).then(function(){return c.length&&"#"!==c&&window.history.pushState({},"",c),arguments}).then(function(){return a("body").trigger(e.monthChanged,[d,f,g]),arguments})},j=function(a,b){var c=a.find(f.CALENDAR_MONTH_WRAPPER).data("year"),d=a.find(f.CALENDAR_MONTH_WRAPPER).data("month");return b||(b=a.find(f.CALENDAR_MONTH_WRAPPER).data("courseid")),h(a,c,d,b)},k=function(a){var b=a.find(f.LOADING_ICON_CONTAINER);b.removeClass("hidden")},l=function(a){var b=a.find(f.LOADING_ICON_CONTAINER);b.addClass("hidden")};return{init:function(a){g(a)},reloadCurrentMonth:j,changeMonth:i,refreshMonthContent:h}});
|
@ -90,15 +90,17 @@ define(['jquery', 'core/ajax'], function($, Ajax) {
|
||||
* @param {Number} year Year
|
||||
* @param {Number} month Month
|
||||
* @param {Number} courseid The course id.
|
||||
* @param {Bool} includenavigation Whether to include navigation.
|
||||
* @return {promise} Resolved with the month view data.
|
||||
*/
|
||||
var getCalendarMonthData = function(year, month, courseid) {
|
||||
var getCalendarMonthData = function(year, month, courseid, includenavigation) {
|
||||
var request = {
|
||||
methodname: 'core_calendar_get_calendar_monthly_view',
|
||||
args: {
|
||||
year: year,
|
||||
month: month,
|
||||
courseid: courseid,
|
||||
includenavigation: includenavigation,
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -60,7 +60,8 @@ define(['jquery', 'core/templates', 'core/notification', 'core_calendar/reposito
|
||||
var refreshMonthContent = function(root, year, month, courseid) {
|
||||
startLoading(root);
|
||||
|
||||
return CalendarRepository.getCalendarMonthData(year, month, courseid)
|
||||
var includenavigation = root.data('includenavigation');
|
||||
return CalendarRepository.getCalendarMonthData(year, month, courseid, includenavigation)
|
||||
.then(function(context) {
|
||||
return Templates.render(root.attr('data-template'), context);
|
||||
})
|
||||
|
15
calendar/classes/external/month_exporter.php
vendored
15
calendar/classes/external/month_exporter.php
vendored
@ -54,6 +54,10 @@ class month_exporter extends exporter {
|
||||
*/
|
||||
protected $url;
|
||||
|
||||
/**
|
||||
*/
|
||||
protected $includenavigation = true;
|
||||
|
||||
/**
|
||||
* Constructor for month_exporter.
|
||||
*
|
||||
@ -123,6 +127,10 @@ class month_exporter extends exporter {
|
||||
// calendar format.
|
||||
'type' => PARAM_RAW,
|
||||
],
|
||||
'includenavigation' => [
|
||||
'type' => PARAM_BOOL,
|
||||
'default' => true,
|
||||
],
|
||||
'previousperiod' => [
|
||||
'type' => date_exporter::read_properties_definition(),
|
||||
],
|
||||
@ -189,6 +197,7 @@ class month_exporter extends exporter {
|
||||
'nextperiodlink' => $nextperiodlink->out(false),
|
||||
'larrow' => $output->larrow(),
|
||||
'rarrow' => $output->rarrow(),
|
||||
'includenavigation' => $this->includenavigation,
|
||||
];
|
||||
}
|
||||
|
||||
@ -339,4 +348,10 @@ class month_exporter extends exporter {
|
||||
|
||||
return $type->timestamp_to_date_array($time);
|
||||
}
|
||||
|
||||
public function set_includenavigation($include) {
|
||||
$this->includenavigation = $include;
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
|
@ -882,9 +882,10 @@ class core_calendar_external extends external_api {
|
||||
* @param int $year The year to be shown
|
||||
* @param int $month The month to be shown
|
||||
* @param int $courseid The course to be included
|
||||
* @param bool $includenavigation Whether to include navigation
|
||||
* @return array
|
||||
*/
|
||||
public static function get_calendar_monthly_view($year, $month, $courseid) {
|
||||
public static function get_calendar_monthly_view($year, $month, $courseid, $includenavigation) {
|
||||
global $CFG, $DB, $USER, $PAGE;
|
||||
require_once($CFG->dirroot."/calendar/lib.php");
|
||||
|
||||
@ -893,6 +894,7 @@ class core_calendar_external extends external_api {
|
||||
'year' => $year,
|
||||
'month' => $month,
|
||||
'courseid' => $courseid,
|
||||
'includenavigation' => $includenavigation,
|
||||
]);
|
||||
|
||||
if ($courseid != SITEID && !empty($courseid)) {
|
||||
@ -914,7 +916,7 @@ class core_calendar_external extends external_api {
|
||||
$calendar = new calendar_information(0, 0, 0, $time);
|
||||
$calendar->prepare_for_view($course, $courses);
|
||||
|
||||
list($data, $template) = calendar_get_view($calendar, 'month');
|
||||
list($data, $template) = calendar_get_view($calendar, 'month', $params['includenavigation']);
|
||||
|
||||
return $data;
|
||||
}
|
||||
@ -930,6 +932,13 @@ class core_calendar_external extends external_api {
|
||||
'year' => new external_value(PARAM_INT, 'Month to be viewed', VALUE_REQUIRED),
|
||||
'month' => new external_value(PARAM_INT, 'Year to be viewed', VALUE_REQUIRED),
|
||||
'courseid' => new external_value(PARAM_INT, 'Course being viewed', VALUE_DEFAULT, SITEID, NULL_ALLOWED),
|
||||
'includenavigation' => new external_value(
|
||||
PARAM_BOOL,
|
||||
'Whether to show course navigation',
|
||||
VALUE_DEFAULT,
|
||||
true,
|
||||
NULL_ALLOWED
|
||||
),
|
||||
]
|
||||
);
|
||||
}
|
||||
|
@ -3354,10 +3354,11 @@ function calendar_get_legacy_events($tstart, $tend, $users, $groups, $courses, $
|
||||
* Get the calendar view output.
|
||||
*
|
||||
* @param \calendar_information $calendar The calendar being represented
|
||||
* @param string $view The type of calendar to have displayed
|
||||
* @param string $view The type of calendar to have displayed
|
||||
* @param bool $includenavigation Whether to include navigation
|
||||
* @return array[array, string]
|
||||
*/
|
||||
function calendar_get_view(\calendar_information $calendar, $view) {
|
||||
function calendar_get_view(\calendar_information $calendar, $view, $includenavigation = true) {
|
||||
global $PAGE, $CFG;
|
||||
|
||||
$renderer = $PAGE->get_renderer('core_calendar');
|
||||
@ -3440,6 +3441,9 @@ function calendar_get_view(\calendar_information $calendar, $view) {
|
||||
];
|
||||
|
||||
$month = new \core_calendar\external\month_exporter($calendar, $type, $related);
|
||||
|
||||
$month->set_includenavigation($includenavigation);
|
||||
|
||||
$data = $month->export($renderer);
|
||||
|
||||
return [$data, $template];
|
||||
|
@ -32,7 +32,7 @@
|
||||
}
|
||||
}}
|
||||
<div{{!
|
||||
}} id="calendar-month-{{date.year}}-{{date.month}}-{{uniqid}}" {{!
|
||||
}} id="calendar-month-{{date.year}}-{{date.month}}-{{uniqid}}" {{!
|
||||
}} data-template="core_calendar/month_mini" {{!
|
||||
}}>
|
||||
{{> core_calendar/month_mini}}
|
||||
|
@ -41,29 +41,36 @@
|
||||
{{> core/overlay_loading}}
|
||||
<table class="minicalendar calendartable">
|
||||
<caption class="calendar-controls">
|
||||
<a{{!
|
||||
}} href="#"{{!
|
||||
}} class="arrow_link previous"{{!
|
||||
}} title="{{#str}}monthprev, calendar{{/str}}"{{!
|
||||
}} data-year="{{previousperiod.year}}"{{!
|
||||
}} data-month="{{previousperiod.mon}}"{{!
|
||||
}}>
|
||||
<span class="arrow">{{{larrow}}}</span>
|
||||
</a>
|
||||
<span class="hide"> | </span>
|
||||
<span class="current">
|
||||
<a href="{{{url}}}" title="{{#str}}monththis, calendar{{/str}}">{{periodname}}</a>
|
||||
</span>
|
||||
<span class="hide"> | </span>
|
||||
<a{{!
|
||||
}} href="#"{{!
|
||||
}} class="arrow_link next"{{!
|
||||
}} title="{{#str}}monthprev, calendar{{/str}}"{{!
|
||||
}} data-year="{{nextperiod.year}}"{{!
|
||||
}} data-month="{{nextperiod.mon}}"{{!
|
||||
}}>
|
||||
<span class="arrow">{{{rarrow}}}</span>
|
||||
</a>
|
||||
{{#includenavigation}}
|
||||
<a{{!
|
||||
}} href="#"{{!
|
||||
}} class="arrow_link previous"{{!
|
||||
}} title="{{#str}}monthprev, calendar{{/str}}"{{!
|
||||
}} data-year="{{previousperiod.year}}"{{!
|
||||
}} data-month="{{previousperiod.mon}}"{{!
|
||||
}}>
|
||||
<span class="arrow">{{{larrow}}}</span>
|
||||
</a>
|
||||
<span class="hide"> | </span>
|
||||
<span class="current">
|
||||
<a href="{{{url}}}" title="{{#str}}monththis, calendar{{/str}}">{{periodname}}</a>
|
||||
</span>
|
||||
<span class="hide"> | </span>
|
||||
<a{{!
|
||||
}} href="#"{{!
|
||||
}} class="arrow_link next"{{!
|
||||
}} title="{{#str}}monthprev, calendar{{/str}}"{{!
|
||||
}} data-year="{{nextperiod.year}}"{{!
|
||||
}} data-month="{{nextperiod.mon}}"{{!
|
||||
}}>
|
||||
<span class="arrow">{{{rarrow}}}</span>
|
||||
</a>
|
||||
{{/includenavigation}}
|
||||
{{^includenavigation}}
|
||||
<h3>
|
||||
<a href="{{{url}}}" title="{{#str}}monththis, calendar{{/str}}">{{periodname}}</a>
|
||||
</h3>
|
||||
{{/includenavigation}}
|
||||
</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
|
Loading…
x
Reference in New Issue
Block a user