MDL-86095 mod_book: Let screenreader know print book opens in new window

This commit is contained in:
Rajneel Totaram
2025-08-06 18:16:00 +12:00
parent 34968cacf5
commit 9d2d5ea984
+32 -10
View File
@@ -22,8 +22,6 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die;
/**
* Adds module specific settings to the settings block
*
@@ -31,21 +29,45 @@ defined('MOODLE_INTERNAL') || die;
* @param navigation_node $node The node to add module settings to
*/
function booktool_print_extend_settings_navigation(settings_navigation $settings, navigation_node $node) {
global $OUTPUT;
$params = $settings->get_page()->url->params();
if (empty($params['id']) or empty($params['chapterid'])) {
if (empty($params['id']) || empty($params['chapterid'])) {
return;
}
if (has_capability('booktool/print:print', $settings->get_page()->cm->context)) {
$url1 = new moodle_url('/mod/book/tool/print/index.php', array('id'=>$params['id']));
$url2 = new moodle_url('/mod/book/tool/print/index.php', array('id'=>$params['id'], 'chapterid'=>$params['chapterid']));
$url1 = new moodle_url('/mod/book/tool/print/index.php', ['id' => $params['id']]);
$url2 = new moodle_url('/mod/book/tool/print/index.php', ['id' => $params['id'], 'chapterid' => $params['chapterid']]);
$action = new action_link($url1, get_string('printbook', 'booktool_print'), new popup_action('click', $url1));
$booknode = $node->add(get_string('printbook', 'booktool_print'), $action, navigation_node::TYPE_SETTING, null, 'printbook',
new pix_icon('book', '', 'booktool_print', array('class' => 'icon')));
$newwindowtext = html_writer::span(' (' . get_string('opensinnewwindow') . ')', 'visually-hidden');
$externalicon = $OUTPUT->pix_icon('i/externallink', '', attributes: [
'title' => get_string('opensinnewwindow'),
'class' => 'ms-1',
]);
$booknode = $node->add(
// Add both an icon and visualy hidden text to indicate link opens in a new window
// because Clean theme strips out the icon html.
get_string('printbook', 'booktool_print') . $externalicon . $newwindowtext,
$action,
navigation_node::TYPE_SETTING,
null,
'printbook',
new pix_icon('book', '', 'booktool_print', ['class' => 'icon'])
);
$booknode->set_force_into_more_menu(true);
$action = new action_link($url2, get_string('printchapter', 'booktool_print'), new popup_action('click', $url2));
$chapternode = $node->add(get_string('printchapter', 'booktool_print'), $action, navigation_node::TYPE_SETTING, null,
'printchapter', new pix_icon('chapter', '', 'booktool_print', array('class' => 'icon')));
$chapternode = $node->add(
// Add both an icon and visualy hidden text to indicate link opens in a new window
// because Clean theme strips out the icon html.
get_string('printchapter', 'booktool_print') . $externalicon . $newwindowtext,
$action,
navigation_node::TYPE_SETTING,
null,
'printchapter',
new pix_icon('chapter', '', 'booktool_print', ['class' => 'icon'])
);
$chapternode->set_force_into_more_menu(true);
}
}
@@ -60,5 +82,5 @@ function booktool_print_extend_settings_navigation(settings_navigation $settings
* @return array
*/
function booktool_print_get_view_actions() {
return array('print');
return ['print'];
}