bloque Vista general de cursos - Moodle 2.9

bloque Vista general de cursos - Moodle 2.9

de Verónica V. -
Número de respuestas: 7

Hola a todos, les escribo en esta oportunidad para preguntarles cómo ordenar los cursos que se listan en dicho bloque (block_course_overview) por número de id. Probé hacerlo desde Apariencia/Navegación opción Ordenar mis cursos (navsortmycoursessort) pero no funciona.

Aguardo respuestas.
Desde ya muchas gracias.
Saludos cordiales.
Verónica.

Promedio de valoraciones: -
En respuesta a Verónica V.

Re: bloque Vista general de cursos - Moodle 2.9

de Francisco Gutierrez -

Hola Verónica.

En realidad ese es un ajuste que está a nivel de preferencias de usuario tal como se describe aquí: https://docs.moodle.org/29/en/Course_overview_block  

Aparentemente la ordenación por defecto es por id de forma descendente, supongo que estás intentando que sea ascendente.  En ese caso creo que habría que tocar código en blocks/course_overview/locallib.php alrededor de la línea 68 en Moodle 2.9.6

Saludos

Francisco

En respuesta a Francisco Gutierrez

Re: bloque Vista general de cursos - Moodle 2.9

de Verónica V. -

Hola Francisco, muchas gracias por tu respuesta.

El orden de los cursos, que me aparece, no es por id (ni ascendente ni descendente) y tampoco alfabéticamente (nombre largo o nombre corto). Es un verdadero desorden sonrisa.

Ese código que mencionás ya lo había visto, pero el orden se encuentra codificado a través de un número, ¿vos tenés alguna idea cuál es el número que representa al orden por id descendente?

Gracias nuevamente.
Saludos cordiales.
Verónica.

En respuesta a Verónica V.

Re: bloque Vista general de cursos - Moodle 2.9

de Eder dos Santos -

Verónica,

Envíanos el código que encontraste, así nos facilitas un poco la detección en nuestro IDE y depuramos.

Salu2

En respuesta a Eder dos Santos

Re: bloque Vista general de cursos - Moodle 2.9

de Verónica V. -

Hola Eder, la función es la siguiente:

/**
 * Sets user course sorting preference in course_overview block
 *
 * @param array $sortorder list of course ids
 */

function block_course_overview_update_myorder($sortorder) {
    $value = implode(',', $sortorder);
    if (core_text::strlen($value) > 1333) {
        // The value won't fit into the user preference. Remove courses in the end of the list (mostly likely user won't even notice).
        $value = preg_replace('/,[\d]*$/', '', core_text::substr($value, 0, 1334));
    }
    set_user_preference('course_overview_course_sortorder', $value);
}

Estuve jugando un poco y comenté todas las líneas menos la última y en vez de $value coloqué números diferentes. Ningún resultado triste

Saludos.
Verónica.

En respuesta a Verónica V.

Re: bloque Vista general de cursos - Moodle 2.9

de Eder dos Santos -

Verónica,

Por lo que veo este es el método de la librería, pero seguro el render o la página invocan a dicho método ya pasando el parámetro. Me explico?

De todos modos, mañana me pongo a mirar el código del bloque.

PD: Que IDE utilizas? Tienes algunas opciones de traza de código con algunos IDE (como por ejemplo Netbeans), que en esos casos son muy útiles.

Salu2

En respuesta a Verónica V.

Re: bloque Vista general de cursos - Moodle 2.9

de Eder dos Santos -

Verónica,

Verifica en la librería localib.php el método block_course_overview_get_sorted_courses. Allí se obtiene el listado de cursos:

$courses = enrol_get_my_courses('id, shortname, fullname, modinfo, sectioncache', 'fullname ASC, shortname ASC');

El último parámetro es claramente el conjunto de criterios ORDER BY.

Salu2.

En respuesta a Eder dos Santos

Re: bloque Vista general de cursos - Moodle 2.9

de Verónica V. -

¡Muchas gracias Eder!

La línea 

$courses = enrol_get_my_courses(); 

la modifiqué por

$courses = enrol_get_my_courses(NULL, 'id DESC'); 

y funcionó como lo necesitaba.

Esperemos que en versiones posteriores esta opción se pueda modificar desde Moodle y no en el código.

Saludos cordiales.
Verónica.