es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo mostrar opciones de la barra de navegación a usuarios específicos en Moodle LMS?

A continuación se muestra mi código para mostrar una opción adicional en el panel de navegación del cuentaregresiva del LMS de Moodle.

function local_report_extend_navigation(global_navigation $navigation)
{
    $main_node = $navigation->add(get_string('pluginname', 'local_report'), '/local/report/');
    $main_node->nodetype = 1;
    $main_node->collapse = false;
    $main_node->force_open = true;
    $main_node->isexpandable = false;
    $main_node->showinflatnavigation = true;
    // $main_node->icon = new pix_icon('i/settings', get_string('pluginname', 'local_report'));
    $main_node->icon = new pix_icon('i/files', get_string('pluginname', 'local_report'));
}

El resultado es:
Este es el panel de navegación. Quiero mostrar la opción “Reports” solo para los administradores, profesores y gestores

¿Alguien puede decirme cómo hacer esto?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para mostrar la opción Informes en el cajón de navegación solo para administradores, profesores y gerentes, puedes modificar el código de la siguiente manera:

    function local_report_extend_navigation(global_navigation $navigation)
    {
        global $USER;
    
        if (isloggedin()) {
            $roles = get_user_roles(context_system::instance(), $USER->id);
            foreach ($roles as $role) {
                if ($role->shortname == 'manager' || $role->shortname == 'teacher' || $role->shortname == 'admin') {
                    $main_node = $navigation->add(get_string('pluginname', 'local_report'), '/local/report/');
                    $main_node->nodetype = 1;
                    $main_node->collapse = false;
                    $main_node->force_open = true;
                    $main_node->isexpandable = false;
                    $main_node->showinflatnavigation = true; 
                    $main_node->icon = new pix_icon('i/files', get_string('pluginname', 'local_report'));
                    break;
                }
            }
        }
    }
    

    Este código agrega la opción de Informes al cajón de navegación solo si el usuario actual tiene uno de los roles: gerente, profesor o administrador. El código utiliza la función get_user_roles() para obtener los roles del usuario actual y luego verifica si alguno de estos roles coincide con los roles requeridos. Si se encuentra una coincidencia, se agrega la opción de Informes al cajón de navegación utilizando el mismo código que antes.

    Nota: Asegúrate de reemplazar local_report con el nombre de tu complemento en el código.

Comments are closed.