diff --git a/enrol/lti/classes/local/ltiadvantage/table/published_resources_table.php b/enrol/lti/classes/local/ltiadvantage/table/published_resources_table.php index d375d9163c5..8367b634da2 100644 --- a/enrol/lti/classes/local/ltiadvantage/table/published_resources_table.php +++ b/enrol/lti/classes/local/ltiadvantage/table/published_resources_table.php @@ -92,7 +92,8 @@ class published_resources_table extends \table_sql { * @return string */ public function col_name($tool) { - $name = helper::get_name($tool); + $toolcontext = \context::instance_by_id($tool->contextid, IGNORE_MISSING); + $name = $toolcontext ? helper::get_name($tool) : $this->get_deleted_activity_name_html($tool); return $this->get_display_text($tool, $name); } @@ -215,9 +216,39 @@ class published_resources_table extends \table_sql { */ protected function get_display_text($tool, $text) { if ($tool->status != ENROL_INSTANCE_ENABLED) { - return \html_writer::tag('span', $text, array('class' => 'dimmed_text')); + return \html_writer::tag('div', $text, array('class' => 'dimmed_text')); } return $text; } + + /** + * Get a warning icon, with tooltip, describing enrolment instances sharing activities which have been deleted. + * + * @param \stdClass $tool the tool instance record. + * @return string the HTML for the name column. + */ + protected function get_deleted_activity_name_html(\stdClass $tool): string { + global $OUTPUT; + $icon = \html_writer::tag( + 'a', + $OUTPUT->pix_icon('enrolinstancewarning', get_string('deletedactivityalt' , 'enrol_lti'), 'enrol_lti'), [ + "class" => "btn btn-link p-0", + "role" => "button", + "data-container" => "body", + "data-toggle" => "popover", + "data-placement" => right_to_left() ? "left" : "right", + "data-content" => get_string('deletedactivitydescription', 'enrol_lti'), + "data-html" => "true", + "tabindex" => "0", + "data-trigger" => "focus" + ] + ); + $name = \html_writer::span($icon . get_string('deletedactivity', 'enrol_lti')); + if ($tool->name) { + $name .= \html_writer::empty_tag('br') . \html_writer::empty_tag('br') . $tool->name; + } + + return $name; + } } diff --git a/enrol/lti/classes/manage_table.php b/enrol/lti/classes/manage_table.php index bd9ccc208da..262010103ba 100644 --- a/enrol/lti/classes/manage_table.php +++ b/enrol/lti/classes/manage_table.php @@ -101,7 +101,8 @@ class manage_table extends \table_sql { * @return string */ public function col_name($tool) { - $name = helper::get_name($tool); + $toolcontext = \context::instance_by_id($tool->contextid, IGNORE_MISSING); + $name = $toolcontext ? helper::get_name($tool) : $this->get_deleted_activity_name_html($tool); return $this->get_display_text($tool, $name); } @@ -247,9 +248,39 @@ class manage_table extends \table_sql { */ protected function get_display_text($tool, $text) { if ($tool->status != ENROL_INSTANCE_ENABLED) { - return \html_writer::tag('span', $text, array('class' => 'dimmed_text')); + return \html_writer::tag('div', $text, array('class' => 'dimmed_text')); } return $text; } + + /** + * Get a warning icon, with tooltip, describing enrolment instances sharing activities which have been deleted. + * + * @param \stdClass $tool the tool instance record. + * @return string the HTML for the name column. + */ + protected function get_deleted_activity_name_html(\stdClass $tool): string { + global $OUTPUT; + $icon = \html_writer::tag( + 'a', + $OUTPUT->pix_icon('enrolinstancewarning', get_string('deletedactivityalt' , 'enrol_lti'), 'enrol_lti'), [ + "class" => "btn btn-link p-0", + "role" => "button", + "data-container" => "body", + "data-toggle" => "popover", + "data-placement" => right_to_left() ? "left" : "right", + "data-content" => get_string('deletedactivitydescription', 'enrol_lti'), + "data-html" => "true", + "tabindex" => "0", + "data-trigger" => "focus" + ] + ); + $name = \html_writer::span($icon . get_string('deletedactivity', 'enrol_lti')); + if ($tool->name) { + $name .= \html_writer::empty_tag('br') . \html_writer::empty_tag('br') . $tool->name; + } + + return $name; + } } diff --git a/enrol/lti/lang/en/enrol_lti.php b/enrol/lti/lang/en/enrol_lti.php index 80f89612bcf..5808a0334d5 100644 --- a/enrol/lti/lang/en/enrol_lti.php +++ b/enrol/lti/lang/en/enrol_lti.php @@ -36,6 +36,9 @@ $string['copytoclipboard'] = 'Copy to clipboard'; $string['couldnotestablishproxy'] = 'Could not establish proxy with consumer.'; $string['customproperties'] = 'Custom properties'; $string['deeplinkingurl'] = 'Deep linking URL'; +$string['deletedactivity'] = 'Deleted activity'; +$string['deletedactivityalt'] = 'The activity shared by this instance has been deleted'; +$string['deletedactivitydescription'] = 'The activity shared by this instance has been deleted. You can select another activity to share by editing the instance or, if no longer required, you can simply delete the instance. Deleting the instance will remove any associated user enrolments.'; $string['deploymentadd'] = 'Add a deployment'; $string['deploymentaddnotice'] = 'Deployment added'; $string['deploymentdelete'] = 'Delete deployment'; diff --git a/enrol/lti/lib.php b/enrol/lti/lib.php index 7c8f78e3251..684993a20bf 100644 --- a/enrol/lti/lib.php +++ b/enrol/lti/lib.php @@ -475,6 +475,7 @@ function enrol_lti_extend_navigation_course($navigation, $course, $context) { function enrol_lti_get_fontawesome_icon_map() { return [ 'enrol_lti:managedeployments' => 'fa-sitemap', - 'enrol_lti:platformdetails' => 'fa-pencil-square-o' + 'enrol_lti:platformdetails' => 'fa-pencil-square-o', + 'enrol_lti:enrolinstancewarning' => 'fa-exclamation-circle text-danger', ]; } diff --git a/enrol/lti/pix/enrolinstancewarning.png b/enrol/lti/pix/enrolinstancewarning.png new file mode 100644 index 00000000000..edb89e473ea Binary files /dev/null and b/enrol/lti/pix/enrolinstancewarning.png differ diff --git a/enrol/lti/pix/enrolinstancewarning.svg b/enrol/lti/pix/enrolinstancewarning.svg new file mode 100644 index 00000000000..73a13a90cac --- /dev/null +++ b/enrol/lti/pix/enrolinstancewarning.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file