diff --git a/admin/tool/admin_presets/classes/output/presets_list.php b/admin/tool/admin_presets/classes/output/presets_list.php index c1dc56bb990..c071fac13ab 100644 --- a/admin/tool/admin_presets/classes/output/presets_list.php +++ b/admin/tool/admin_presets/classes/output/presets_list.php @@ -89,7 +89,6 @@ class presets_list implements renderable, templatable { $actionsmenu = new \action_menu(); $actionsmenu->set_menu_trigger(get_string('actions')); $actionsmenu->set_owner_selector('preset-actions-' . $preset->id); - $actionsmenu->set_alignment(\action_menu::TL, \action_menu::BL); $loadlink = new \moodle_url('/admin/tool/admin_presets/index.php', ['action' => 'load', 'id' => $preset->id]); $actionsmenu->add(new \action_menu_link_secondary( diff --git a/admin/tool/analytics/classes/output/models_list.php b/admin/tool/analytics/classes/output/models_list.php index be1cb664949..e1b7b9faee7 100644 --- a/admin/tool/analytics/classes/output/models_list.php +++ b/admin/tool/analytics/classes/output/models_list.php @@ -65,7 +65,7 @@ class models_list implements \renderable, \templatable { $newmodelmenu = new \action_menu(); $newmodelmenu->set_menu_trigger(get_string('newmodel', 'tool_analytics'), 'btn btn-secondary'); - $newmodelmenu->set_alignment(\action_menu::TL, \action_menu::BL); + $newmodelmenu->set_menu_left(); $newmodelmenu->add(new \action_menu_link( new \moodle_url('/admin/tool/analytics/createmodel.php'), @@ -191,7 +191,6 @@ class models_list implements \renderable, \templatable { $actionsmenu = new \action_menu(); $actionsmenu->set_menu_trigger(get_string('actions')); $actionsmenu->set_owner_selector('model-actions-' . $model->get_id()); - $actionsmenu->set_alignment(\action_menu::TL, \action_menu::BL); $urlparams = ['id' => $model->get_id(), 'sesskey' => sesskey()]; diff --git a/admin/tool/componentlibrary/docspage.php b/admin/tool/componentlibrary/docspage.php index debbd082885..b9bfe5b47ba 100644 --- a/admin/tool/componentlibrary/docspage.php +++ b/admin/tool/componentlibrary/docspage.php @@ -89,7 +89,6 @@ if (get_config('core', 'allowthemechangeonurl')) { $thememenu = new action_menu($menuthemes); $thememenu->set_menu_trigger($PAGE->theme->name, 'nav-link'); $thememenu->set_owner_selector('change-moodle-theme'); - $thememenu->set_alignment(\action_menu::TL, \action_menu::BL); $PAGE->set_headingmenu($OUTPUT->render($thememenu)); } diff --git a/admin/tool/dataprivacy/classes/output/crud_element.php b/admin/tool/dataprivacy/classes/output/crud_element.php index 738f9b8c85a..07b09f9fdc1 100644 --- a/admin/tool/dataprivacy/classes/output/crud_element.php +++ b/admin/tool/dataprivacy/classes/output/crud_element.php @@ -71,7 +71,6 @@ abstract class crud_element { $actionmenu = new \action_menu(); $actionmenu->set_menu_trigger(get_string('actions')); $actionmenu->set_owner_selector($elementname . '-' . $exported->id . '-actions'); - $actionmenu->set_alignment(\action_menu::TL, \action_menu::BL); $url = new \moodle_url('/admin/tool/dataprivacy/edit' . $elementname . '.php', ['id' => $exported->id]); diff --git a/admin/tool/dataprivacy/classes/output/data_registry_page.php b/admin/tool/dataprivacy/classes/output/data_registry_page.php index 2f12f589ede..e861e80ee2b 100644 --- a/admin/tool/dataprivacy/classes/output/data_registry_page.php +++ b/admin/tool/dataprivacy/classes/output/data_registry_page.php @@ -87,7 +87,6 @@ class data_registry_page implements renderable, templatable { $actionmenu = new \action_menu(); $actionmenu->set_menu_trigger(get_string('edit'), 'btn btn-primary'); $actionmenu->set_owner_selector('dataregistry-actions'); - $actionmenu->set_alignment(\action_menu::TL, \action_menu::BL); $url = new \moodle_url('/admin/tool/dataprivacy/categories.php'); $categories = new \action_menu_link_secondary($url, null, get_string('categories', 'tool_dataprivacy')); diff --git a/admin/tool/dataprivacy/classes/output/data_requests_table.php b/admin/tool/dataprivacy/classes/output/data_requests_table.php index af33f98904d..929ad178f10 100644 --- a/admin/tool/dataprivacy/classes/output/data_requests_table.php +++ b/admin/tool/dataprivacy/classes/output/data_requests_table.php @@ -285,7 +285,6 @@ class data_requests_table extends table_sql { $actionsmenu = new action_menu($actions); $actionsmenu->set_menu_trigger(get_string('actions')); $actionsmenu->set_owner_selector('request-actions-' . $requestid); - $actionsmenu->set_alignment(\action_menu::TL, \action_menu::BL); $actionsmenu->set_constraint('[data-region=data-requests-table] > .no-overflow'); return $OUTPUT->render($actionsmenu); diff --git a/admin/tool/dataprivacy/classes/output/my_data_requests_page.php b/admin/tool/dataprivacy/classes/output/my_data_requests_page.php index b82579f8afb..14d637578d7 100644 --- a/admin/tool/dataprivacy/classes/output/my_data_requests_page.php +++ b/admin/tool/dataprivacy/classes/output/my_data_requests_page.php @@ -153,7 +153,6 @@ class my_data_requests_page implements renderable, templatable { $actionsmenu = new action_menu($actions); $actionsmenu->set_menu_trigger(get_string('actions')); $actionsmenu->set_owner_selector('request-actions-' . $requestid); - $actionsmenu->set_alignment(\action_menu::TL, \action_menu::BL); $item->actions = $actionsmenu->export_for_template($output); } diff --git a/admin/tool/policy/classes/output/page_managedocs_list.php b/admin/tool/policy/classes/output/page_managedocs_list.php index d69680789cf..9123cb8aef1 100644 --- a/admin/tool/policy/classes/output/page_managedocs_list.php +++ b/admin/tool/policy/classes/output/page_managedocs_list.php @@ -182,7 +182,6 @@ class page_managedocs_list implements renderable, templatable { $actionmenu = new action_menu(); $actionmenu->set_menu_trigger(get_string('actions', 'tool_policy')); - $actionmenu->set_alignment(action_menu::TL, action_menu::BL); $actionmenu->prioritise = true; if ($moveup) { $actionmenu->add(new action_menu_link( diff --git a/contentbank/view.php b/contentbank/view.php index 25e036883b4..2f874551774 100644 --- a/contentbank/view.php +++ b/contentbank/view.php @@ -76,7 +76,6 @@ $PAGE->set_pagetype('contentbank'); // Create the cog menu with all the secondary actions, such as delete, rename... $actionmenu = new action_menu(); -$actionmenu->set_alignment(action_menu::TR, action_menu::BR); if ($contenttype->can_manage($content)) { // Add the visibility item to the menu. switch($content->get_visibility()) { diff --git a/course/format/classes/output/local/content/cm/controlmenu.php b/course/format/classes/output/local/content/cm/controlmenu.php index 736c37cd06a..37636dcbe11 100644 --- a/course/format/classes/output/local/content/cm/controlmenu.php +++ b/course/format/classes/output/local/content/cm/controlmenu.php @@ -125,7 +125,6 @@ class controlmenu implements renderable, templatable { // Convert control array into an action_menu. $menu = new action_menu(); - $menu->set_alignment(action_menu::TR, action_menu::BR); $icon = $output->pix_icon('i/menu', get_string('edit')); $menu->set_menu_trigger($icon, 'btn btn-icon d-flex align-items-center justify-content-center'); diff --git a/course/renderer.php b/course/renderer.php index 699eb94764c..124e245023b 100644 --- a/course/renderer.php +++ b/course/renderer.php @@ -253,7 +253,6 @@ class core_course_renderer extends plugin_renderer_base { $menu = new action_menu(); $menu->set_owner_selector($ownerselector); $menu->set_constraint($constraint); - $menu->set_alignment(action_menu::TR, action_menu::BR); $menu->set_menu_trigger(get_string('edit')); foreach ($actions as $action) { diff --git a/customfield/classes/output/management.php b/customfield/classes/output/management.php index c6e74174dea..5bbec0ac988 100644 --- a/customfield/classes/output/management.php +++ b/customfield/classes/output/management.php @@ -100,7 +100,6 @@ class management implements renderable, templatable { } $menu = new \action_menu(); - $menu->set_alignment(\action_menu::BL, \action_menu::BL); $menu->set_menu_trigger(get_string('createnewcustomfield', 'core_customfield')); foreach ($fieldtypes as $type => $fieldname) { diff --git a/grade/edit/tree/lib.php b/grade/edit/tree/lib.php index 7317c8ea624..e4435bce6b9 100644 --- a/grade/edit/tree/lib.php +++ b/grade/edit/tree/lib.php @@ -129,7 +129,6 @@ class grade_edit_tree { $actionsmenu = new action_menu(); $actionsmenu->set_menu_trigger(get_string('edit')); $actionsmenu->set_owner_selector('grade-item-' . $eid); - $actionsmenu->set_alignment(action_menu::TL, action_menu::BL); if (!$is_category_item && ($icon = $this->gtree->get_edit_icon($element, $this->gpr, true))) { $actionsmenu->add($icon); @@ -1090,4 +1089,4 @@ class grade_edit_tree_column_select extends grade_edit_tree_column { return $togglegroup; } -} \ No newline at end of file +} diff --git a/h5p/classes/output/libraries.php b/h5p/classes/output/libraries.php index a3aef637c50..87af31d6561 100644 --- a/h5p/classes/output/libraries.php +++ b/h5p/classes/output/libraries.php @@ -81,7 +81,6 @@ class libraries implements renderable, templatable { // Get the action menu options. $actionmenu = new action_menu(); $actionmenu->set_menu_trigger(get_string('actions', 'core_h5p')); - $actionmenu->set_alignment(action_menu::TL, action_menu::BL); $actionmenu->prioritise = true; $actionmenu->add_primary_action(new action_menu_link( new moodle_url('/h5p/libraries.php', ['deletelibrary' => $version->id]), diff --git a/lib/outputcomponents.php b/lib/outputcomponents.php index 18e5e271e2f..5b5e82e701b 100644 --- a/lib/outputcomponents.php +++ b/lib/outputcomponents.php @@ -4232,6 +4232,12 @@ class action_menu implements renderable, templatable { */ public $prioritise = false; + /** + * Dropdown menu alignment class. + * @var string + */ + public $dropdownalignment = ''; + /** * Constructs the action menu with the given items. * @@ -4258,7 +4264,7 @@ class action_menu implements renderable, templatable { 'aria-labelledby' => 'action-menu-toggle-'.$this->instance, 'role' => 'menu' ); - $this->set_alignment(self::TR, self::BR); + $this->dropdownalignment = 'dropdown-menu-right'; foreach ($actions as $action) { $this->add($action); } @@ -4436,10 +4442,13 @@ class action_menu implements renderable, templatable { /** * Sets the alignment of the dialogue in relation to button used to toggle it. * + * @deprecated since Moodle 4.0 + * * @param int $dialogue One of action_menu::TL, action_menu::TR, action_menu::BL, action_menu::BR. * @param int $button One of action_menu::TL, action_menu::TR, action_menu::BL, action_menu::BR. */ public function set_alignment($dialogue, $button) { + debugging('The method action_menu::set_alignment() is deprecated, use action_menu::set_menu_left()', DEBUG_DEVELOPER); if (isset($this->attributessecondary['data-align'])) { // We've already got one set, lets remove the old class so as to avoid troubles. $class = $this->attributessecondary['class']; @@ -4472,6 +4481,14 @@ class action_menu implements renderable, templatable { } } + /** + * Aligns the left corner of the dropdown. + * + */ + public function set_menu_left() { + $this->dropdownalignment = 'dropdown-menu-left'; + } + /** * Sets a constraint for the dialogue. * @@ -4633,6 +4650,7 @@ class action_menu implements renderable, templatable { $data->primary = $primary; $data->secondary = $secondary; + $data->dropdownalignment = $this->dropdownalignment; return $data; } diff --git a/lib/outputrenderers.php b/lib/outputrenderers.php index 774c048cc15..a4ff3c420b8 100644 --- a/lib/outputrenderers.php +++ b/lib/outputrenderers.php @@ -3469,7 +3469,6 @@ EOD; 'nav-link' ); $am->set_action_label(get_string('usermenu')); - $am->set_alignment(action_menu::TR, action_menu::BR); $am->set_nowrap_on_items(); if ($withlinks) { $navitemcount = count($opts->navitems); diff --git a/lib/templates/action_menu_trigger.mustache b/lib/templates/action_menu_trigger.mustache index 6aa4476ac11..0c3b07f98e9 100644 --- a/lib/templates/action_menu_trigger.mustache +++ b/lib/templates/action_menu_trigger.mustache @@ -33,6 +33,7 @@ ], "secondary": { "classes": "menu align-tr-br", + "dropdownalignment": "dropdown-menu-right", "attributes": [ {"name": "id", "value": "action-menu-0-menu"}, {"name": "data-rel", "value": "menu-content"}, @@ -92,7 +93,7 @@ {{/menutrigger}} {{#secondary}} -