Añadir campo en formulario de crear cursos

Añadir campo en formulario de crear cursos

de Diego León -
Número de respuestas: 12
Hola, me gustaría añadir un campo en el formulario para crear cursos,image088.jpg
por ejemplo, insertar un campo llamado duración a continuación del campo Nombre corto.
¿Alguien puede decirme que debo modificar, o que es lo que debo hacer?
Además debo extraer información de la base de datos de moodle, este campo que se crea, ¿se insertará también en la tabla de cursos de moodle?

Gracias, un saludo.
Promedio de valoraciones: -
En respuesta a Diego León

Re: Añadir campo en formulario de crear cursos

de José Rama -
Debes modificar el archivo course/edit.php y edit_form.php ( qu es lo que s muestra), por supuesto debers odificar la bae de datos y asigar u valor por defecto cuando el curso sea uo antiguo y bo tenga esa informacion.
Pero para eso puedes usar ek campo de periodo de vigencia de la matricula:


"http://docs.moodle.org/es/course/edit#Per.C3.ADodo_de_vigencia_de_la_matr.C3.ADcula

Período de vigencia de la matrícula

Esta opción especifica el número de días de que un estudiante dispone para matricularse en este curso.

Si se elige la opción, los estudiantes quedarán desmatricularse una vez haya transcurrido el período. Esto resulta muy útil para desarrollar cursos sin un principio o final especificados.

Si no se selecciona la opción, el estudiante permanecerá matriculado hasta que se le dé de baja manualmente, o hasta que la función de eliminar a estudiantes no activos entre en funcionamiento.

En respuesta a José Rama

Re: Añadir campo en formulario de crear cursos

de Diego León -
¿De que manera hay que modificar estos archivos? He estado ojeándolos y no tengo muy claro como añadir este nuevo campo, ¿hay algún manual de como hacer esto?
Gracias.
En respuesta a Diego León

Re: Añadir campo en formulario de crear cursos

de Raul Garcia Canet -
Hola Diego,

En las versiones de Moodle actuales, añadir campos a un fomulario es bastante sencillo, ya que hay fucniones que lo hacen de maravilla. Por ejemplo
En el fichero edit_form.php

// Esta linea añade un Elemento de tipo "text" (cuadro de texto" y establece sus propiedades como la longitud y el tamaño del texto interno.

$mform->addElement('text','idnumber', get_string('idnumbercourse'),'maxlength="100" size="10"');

Los parámetos de la función son:


'text': Tipo del campo;

'idnumber' : Nombre que le damos

get_string('idnumbercourse'): Recoge del fichero de idioma correspondiente (moodle.php), la cadena correspondiente al título.
El resto ya te los sabes

// Esta linea añade el icono del "?" que proporciona ayuda acerca del cuadro de texto que acabamo de crear

$mform->setHelpButton('idnumber', array('courseidnumber', get_string('idnumbercourse')), true);

// Esta linea establece el tipo del dato. En este caso, en la propia función "setType" dice:
PARAM_RAW means no cleaning whatsoever, it is used mostly for data from the
html editor. Data from the editor is later cleaned before display using
format_text() function. PARAM_RAW can also be used for data that is validated
by some other way or printed by p() or s().
$mform->setType('idnumber', PARAM_RAW);

Puedes consultar estas y otras funciones de la API de moodle en:
http://xref.moodle.org/nav.html?index.html

Por otro lado, en el fichero edit.php, debes recoger ese valor y añadirlo al objeto que contiene los datos que se usarán para crear el curso. En este caso, es el objeto $data.
Fíjate en el fichero, hacia la línea 97, el código

//Si el curso no existe, lo crea con los valores almacenados en $data.
if (empty($course)) {
if (!$course = create_course($data)) {
print_error('coursenotcreated');
}

Por tanto, para que se almacene tu nuevo dato, deberías hacer "antes" de este código, algo como:

$data->codigo=$editform->nombredelcampo

"codigo" hace refencia al nombre del campo de la Base de Datos dónde almacenaremos el valor.

Espero que esto, al menos, te guíe hasta buen puerto.
Animo,
Hasta pronto,
Salu2
J. Raul (juagarc4) guay
En respuesta a Raul Garcia Canet

Re: Añadir campo en formulario de crear cursos

de Diego León -
Hola Juan Raul, he conseguido insertar el campo en el formulario, pero cuando escribo en la caja de texto y marco para guardar los cambios, no se guardan los cambios cuando vuelvo a entrar en la configuración del curso, ni se me crea el valor duration en la base de datos de moodle, por otra parte creo el archivo de ayuda en la carpeta help, pero me sigue diciendo que no encuentra el archivo.

Estas son las líneas que he añadido:
Archivo edit_from.php
$mform->addElement('text','idduration', get_string('iddurationcourse'),'maxlength="100" size="10"');
$mform->setHelpButton('idduration', array('courseidduration', get_string('iddurationcourse')), true);
$mform->setType('idduration', PARAM_RAW);

Archivo edit.php
$data->courseidduration=$editform->iddurationcourse;

Podrías ayudarme, muchísimas gracias.
En respuesta a Diego León

Re: Añadir campo en formulario de crear cursos

de Raul Garcia Canet -
Hola Diego,
Supongo que el campo está creado en la tabla de cursos de la base de datos.

Por cierto, esta línea:

$data->courseidduration=$editform->iddurationcourse;

deberia ser:

$data->courseidduration=$editform->idduration;

Respecto al fichero de ayuda, échale un vistazo a la función setHelpButton a ver qué parámetros debe recibir.

Hasta pronto,
Salu2
En respuesta a Raul Garcia Canet

Re: Añadir campo en formulario de crear cursos

de Diego León -
Hola Juan Raul, ya he conseguido insertar correctamente el nuevo campo, ahora lo que me queda es enlazarlo con la base de datos de moodle en la tabla de cursos.

Gracias, un saludo
En respuesta a Diego León

Re: Añadir campo en formulario de crear cursos

de Raul Garcia Canet -
Hola Diego,
Ahora mismo acabo de hacer la prueba con el código que te indiqué. Ha funcionado correctamente y el dato deDuración se ha insertado adecuadamente en la Base de Datos.

Recuerda que en la tabla mdl_courses debes de crear un campo del timpo que necesites y que se llame igual que el nombre que le has puesto en:

$mform->addElement('text','idduration', get_string('iddurationcourse'),'maxlength="100" size="10"');

O sea, en este caso, 'idduration'.
Así te debería funcionar sin problemas.

Hasta pronto,
Salu2
En respuesta a Raul Garcia Canet

Re: Añadir campo en formulario de crear cursos

de Rodrigo Puma -

Hola Juan Raul,

Estoy realizando los pasos que muy gentilmente as compartido y aun no logro insertar los datos en mi base, podrias por favor darme una mano, muchas gracias.!!


Rodrigo

En respuesta a Rodrigo Puma

Re: Añadir campo en formulario de crear cursos

de Claudia Leon Perez -

Me encuentro desarrollando un nuevo bloque y necesito saber como guardar en la base de datos si un checkbox ha sido seleccionado para luego pedir su valor