MDL-73774 timeline: Prevent ID duplication

This commit is contained in:
Huong Nguyen 2022-04-21 15:56:57 +07:00
parent 5500d143f4
commit e29cbbc715
4 changed files with 17 additions and 6 deletions

View file

@ -59,6 +59,12 @@ class main implements renderable, templatable {
*/
public $limit;
/** @var int Number of timeline instances displayed. */
protected static $timelineinstances = 0;
/** @var int This timeline instance's ID. */
protected $timelineinstanceid = 0;
/**
* main constructor.
*
@ -70,6 +76,10 @@ class main implements renderable, templatable {
$this->order = $order ? $order : BLOCK_TIMELINE_SORT_BY_DATES;
$this->filter = $filter ? $filter : BLOCK_TIMELINE_FILTER_BY_7_DAYS;
$this->limit = $limit ? $limit : BLOCK_TIMELINE_ACTIVITIES_LIMIT_DEFAULT;
// Increment the timeline instances count on initialisation.
self::$timelineinstances++;
// Assign this instance an ID based on the latest timeline instances count.
$this->timelineinstanceid = self::$timelineinstances;
}
/**
@ -160,6 +170,7 @@ class main implements renderable, templatable {
$filters = $this->get_filters_as_booleans();
$offsets = $this->get_filter_offsets();
$contextvariables = [
'timelineinstanceid' => $this->timelineinstanceid,
'midnight' => usergetmidnight(time()),
'coursepages' => [$formattedcourses],
'urls' => [

View file

@ -23,7 +23,7 @@
{}
}}
<div id="block-timeline-{{uniqid}}" class="block-timeline" data-region="timeline">
<div id="block-timeline-{{uniqid}}-{{timelineinstanceid}}" class="block-timeline" data-region="timeline">
<div class="p-0 px-2">
<div class="row no-gutters">
<div class="mr-2 mb-1">
@ -52,7 +52,7 @@ function(
$,
Main
) {
var root = $('#block-timeline-{{uniqid}}');
var root = $('#block-timeline-{{uniqid}}-{{timelineinstanceid}}');
Main.init(root);
});
{{/js}}

View file

@ -34,7 +34,7 @@
<div id="menusortby" role="menu" class="dropdown-menu dropdown-menu-right list-group hidden" data-show-active-item data-skip-active-class="true">
<a
class="dropdown-item"
href="#view_dates_{{uniqid}}"
href="#view_dates_{{uniqid}}-{{timelineinstanceid}}"
data-toggle="tab"
data-filtername="sortbydates"
{{#sorttimelinedates}}aria-current="true"{{/sorttimelinedates}}
@ -45,7 +45,7 @@
</a>
<a
class="dropdown-item"
href="#view_courses_{{uniqid}}"
href="#view_courses_{{uniqid}}-{{timelineinstanceid}}"
data-toggle="tab"
data-filtername="sortbycourses"
{{#sorttimelinecourses}}aria-current="true"{{/sorttimelinecourses}}

View file

@ -50,7 +50,7 @@
}}
<div data-region="timeline-view">
<div class="tab-content">
<div class="tab-pane {{#sorttimelinedates}}active show{{/sorttimelinedates}} fade" data-limit="{{limit}}" data-region="view-dates" id="view_dates_{{uniqid}}">
<div class="tab-pane {{#sorttimelinedates}}active show{{/sorttimelinedates}} fade" data-limit="{{limit}}" data-region="view-dates" id="view_dates_{{uniqid}}-{{timelineinstanceid}}">
{{> block_timeline/view-dates }}
</div>
<div
@ -63,7 +63,7 @@
data-days-offset="{{daysoffset}}"
data-no-events-url="{{urls.noevents}}"
{{#overdue}}data-filter-overdue="{{overdue}}"{{/overdue}}
id="view_courses_{{uniqid}}"
id="view_courses_{{uniqid}}-{{timelineinstanceid}}"
>
{{> block_timeline/view-courses }}
</div>