From 15eec33f91649414c6fde44a08f89e6365d2de78 Mon Sep 17 00:00:00 2001 From: Jake Dallimore Date: Fri, 27 May 2022 13:51:38 +0800 Subject: [PATCH] MDL-68843 enrol_lti: add deleted activity warning to published tools Adds a warning to the 'name' column of the tables, letting teachers know that the activity exposed by the method has been deleted and what their options are. --- .../table/published_resources_table.php | 35 +++++++++++++++++- enrol/lti/classes/manage_table.php | 35 +++++++++++++++++- enrol/lti/lang/en/enrol_lti.php | 3 ++ enrol/lti/lib.php | 3 +- enrol/lti/pix/enrolinstancewarning.png | Bin 0 -> 339 bytes enrol/lti/pix/enrolinstancewarning.svg | 2 + 6 files changed, 73 insertions(+), 5 deletions(-) create mode 100644 enrol/lti/pix/enrolinstancewarning.png create mode 100644 enrol/lti/pix/enrolinstancewarning.svg 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 0000000000000000000000000000000000000000..edb89e473ea64b0ef85a779f2229c83e26607281 GIT binary patch literal 339 zcmV-Z0j&OsP)Au7Z)wjsz?+Giu;NZy?!0{0Gz0c)++T7Lof1aJTV5t#s7oO9>8u78sR zecwNM?*{-c3Bl2O|6Wzq&jN6$91Y)$F>H)s0Jj+{n0c_)>J34j=Vhe)Ktw`B0w4?U zLMe6H5QxY}WLGD05YgJp0e<+0AdhO#djxUl*%<*)siyUAA~F%tF{p9dw%=XX0o(7M zHUt1J0FF`P>wLNp6p`zyvLw#AGk`H=HHdNU#l~9GG>^ + \ No newline at end of file