Mostrar etiquetas elementos del addGroup

Mostrar etiquetas elementos del addGroup

de Alejandro Michavila Pallarés -
Número de respuestas: 13
Hola,

Estoy empezando a desarrollar un módulo y estoy centrado en el "mod_form.php".

Tengo 5 checkbox y 5 multi-select en un grupo, y me muestra todo como quiero, excepto las etiquetas de los checkbox y del multi-select.

Os copio el código:

// Defining "hours" select
$select1 = &$mform->createElement('select', 'hours1', get_string('hours', 'prueba'), $time);
$select2 = &$mform->createElement('select', 'hours2', get_string('hours', 'prueba'), $time);
$select3 = &$mform->createElement('select', 'hours3', get_string('hours', 'prueba'), $time);
$select4 = &$mform->createElement('select', 'hours4', get_string('hours', 'prueba'), $time);
$select5 = &$mform->createElement('select', 'hours5', get_string('hours', 'prueba'), $time);

// Setting "hours" multi-select
$select1->setMultiple(true);
$select2->setMultiple(true);
$select3->setMultiple(true);
$select4->setMultiple(true);
$select5->setMultiple(true);

// Defining "days and hours" array
$days = array();
$days[] = &$mform->createElement('checkbox', 'monday', get_string('monday', 'prueba'));
$days[] = &$select1;
$days[] = &$mform->createElement('checkbox', 'tuesday', get_string('tuesday', 'prueba'));
$days[] = &$select2;
$days[] = &$mform->createElement('checkbox', 'wednesday', get_string('wednesday', 'prueba'));
$days[] = &$select3;
$days[] = &$mform->createElement('checkbox', 'thursday', get_string('thursday', 'prueba'));
$days[] = &$select4;
$days[] = &$mform->createElement('checkbox', 'friday', get_string('friday', 'prueba'));
$days[] = &$select5;

// Adding "monday to friday days and hours" group
$mform->addGroup($days, 'days', get_string('daysandhours', 'prueba'), ' ', true);

¿Sabéis por qué puede ser?, o si realmente no permite mostrar las etiquetas de los elementos del grupo. He buscado por el foro y en la documentación, pero no he encontrado nada.

Gracias de antemano, un saludo.

Promedio de valoraciones: -
En respuesta a Alejandro Michavila Pallarés

Re: Mostrar etiquetas elementos del addGroup

de Xavier Paz -
No acabo de comprender bien el problema ¿podrías poner una imagen de como queda la cosa con este código y de como debería quedar?
En respuesta a Xavier Paz

Re: Mostrar etiquetas elementos del addGroup

de Alejandro Michavila Pallarés -
Si te das cuenta las casillas de selección (checkbox) y las opciones de selección (multi-select), aparecen sin ninguna etiqueta y debería tener.

Si las añado al formulario como elemento simple si que soy capaz de verlas, pero con un grupo como este caso no.
En respuesta a Alejandro Michavila Pallarés

Re: Mostrar etiquetas elementos del addGroup

de Alejandro Michavila Pallarés -
Si a la función

createElement('checkbox', 'monday', get_string('monday', 'prueba'));

Le paso un cuarto parámetro de la forma

createElement('checkbox', 'monday', null, get_string('monday', 'prueba'));

Si me pinta la etiqueta "Lunes".
En respuesta a Alejandro Michavila Pallarés

Re: Mostrar etiquetas elementos del addGroup

de Alejandro Michavila Pallarés -
Ya consigo ver las etiquetas, pero me queda un poco descolocado como se puede ver en la imagen adjunta, ¿cómo podría organizarlo mejor?, ¿qué define el quinto parámetro de "addGroup"?.

Muchas gracias.
Adjunto Pantallazo-CursoPrueba_Editando_prueba_-_Mozilla_Firefox.png
En respuesta a Alejandro Michavila Pallarés

Re: Mostrar etiquetas elementos del addGroup

de Xavier Paz -
Yo creo que en este caso sería mejor uno o varios menús desplegables para las horas, o dos textbox para establecer un rango de horas (desde y hasta) ¿cuál es exactamente la intención de esta parte del interfaz? ¿para que sirve?

He encontrado esto entre la documentación de moodle, donde se describe parte de la biblioteca de funciones para formularios... http://70.86.170.226/en/Development:lib/formslib.php_Form_Definition
En respuesta a Xavier Paz

Re: Mostrar etiquetas elementos del addGroup

de Alejandro Michavila Pallarés -
Creo que ya lo tengo más o menos. Se trata de seleccionar una o varias horas al día, de uno o varios días de la semana.
Adjunto Pantallazo-CursoPrueba_Editando_prueba_-_Mozilla_Firefox.png
En respuesta a Alejandro Michavila Pallarés

Re: Mostrar etiquetas elementos del addGroup

de Alejandro Michavila Pallarés -
He creado los botones de ayuda, pero cuando pulso me muestra el mesaje que adjunto en la imagen. ¿Puede ser un bug?. http://tracker.moodle.org/browse/MDL-17087
Adjunto Pantallazo-Ayuda_-_Mozilla_Firefox.png
En respuesta a Alejandro Michavila Pallarés

Re: Mostrar etiquetas elementos del addGroup

de Xavier Paz -
Ahora mismo no recuerdo si hay una función de moodle para generar automáticamente las rutas de los ficheros de ayuda, o si hay que ponerlos en algún sitio especial.
En respuesta a Xavier Paz

Re: Mostrar etiquetas elementos del addGroup

de Alejandro Michavila Pallarés -
Hola Xavier,

Finalmente he cambiado los multi-select por los checkboxes para mi formulario, pero tengo un problema a la hora de encajar la primera fila de texto con los checkboxes.

La primera fila es un elemento "static" y el resto son grupos de "checkboxes", ¿cómo puedo hacer para alinear los nombres con los checkboxes?.

Gracias de antemano, un saludo.
Adjunto Formulario.png
En respuesta a Alejandro Michavila Pallarés

Re: Mostrar etiquetas elementos del addGroup

de Alejandro Michavila Pallarés -
Xavier he visto que el formulario quiz tiene el texto alineado con su checkboxes (mira la imágen).

He estado mirando el código:
 //-------------------------------------------------------------------------------
 144 $mform->addElement('header', 'reviewoptionshdr', get_string('reviewoptionsheading', 'quiz'));
 145 $mform->setHelpButton('reviewoptionshdr', array('reviewoptions', get_string('reviewoptionsheading','quiz'), 'quiz'));
 146 $mform->setAdvanced('reviewoptionshdr', $CFG->quiz_fix_review);
 147
 148 $immediatelyoptionsgrp=array();
 149 $immediatelyoptionsgrp[] = &$mform->createElement('checkbox', 'responsesimmediately', '', get_string('responses', 'quiz'));
 150 $immediatelyoptionsgrp[] = &$mform->createElement('checkbox', 'answersimmediately', '', get_string('answers', 'quiz'));
 151 $immediatelyoptionsgrp[] = &$mform->createElement('checkbox', 'feedbackimmediately', '', get_string('feedback', 'quiz'));
 152 $immediatelyoptionsgrp[] = &$mform->createElement('checkbox', 'generalfeedbackimmediately', '', get_string('generalfeedback', 'quiz'));
 153 $immediatelyoptionsgrp[] = &$mform->createElement('checkbox', 'scoreimmediately', '', get_string('scores', 'quiz'));
 154 $immediatelyoptionsgrp[] = &$mform->createElement('checkbox', 'overallfeedbackimmediately', '', get_string('overallfeedback', 'quiz'));
 155 $mform->addGroup($immediatelyoptionsgrp, 'immediatelyoptionsgrp', get_string("reviewimmediately", "quiz"), null, false);
 156 $mform->setDefault('responsesimmediately', $CFG->quiz_review & QUIZ_REVIEW_RESPONSES & QUIZ_REVIEW_IMMEDIATELY);
 157 $mform->setDefault('answersimmediately', $CFG->quiz_review & QUIZ_REVIEW_ANSWERS & QUIZ_REVIEW_IMMEDIATELY);
 158 $mform->setDefault('feedbackimmediately', $CFG->quiz_review & QUIZ_REVIEW_FEEDBACK & QUIZ_REVIEW_IMMEDIATELY);
 159 $mform->setDefault('generalfeedbackimmediately', $CFG->quiz_review & QUIZ_REVIEW_GENERALFEEDBACK & QUIZ_REVIEW_IMMEDIATELY);
 160 $mform->setDefault('scoreimmediately', $CFG->quiz_review & QUIZ_REVIEW_SCORES & QUIZ_REVIEW_IMMEDIATELY);
 161 $mform->setDefault('overallfeedbackimmediately', $CFG->quiz_review & QUIZ_REVIEW_OVERALLFEEDBACK & QUIZ_REVIEW_IMMEDIATELY);
 162
 163 $openoptionsgrp=array();
 164 $openoptionsgrp[] = &$mform->createElement('checkbox', 'responsesopen', '', get_string('responses', 'quiz'));
 165 $openoptionsgrp[] = &$mform->createElement('checkbox', 'answersopen', '', get_string('answers', 'quiz'));
 166 $openoptionsgrp[] = &$mform->createElement('checkbox', 'feedbackopen', '', get_string('feedback', 'quiz'));
 167 $openoptionsgrp[] = &$mform->createElement('checkbox', 'generalfeedbackopen', '', get_string('generalfeedback', 'quiz'));
 168 $openoptionsgrp[] = &$mform->createElement('checkbox', 'scoreopen', '', get_string('scores', 'quiz'));
 169 $openoptionsgrp[] = &$mform->createElement('checkbox', 'overallfeedbackopen', '', get_string('overallfeedback', 'quiz'));
 170 $mform->addGroup($openoptionsgrp, 'openoptionsgrp', get_string("reviewopen", "quiz"), array(' '), false);
 171 $mform->setDefault('responsesopen', $CFG->quiz_review & QUIZ_REVIEW_RESPONSES & QUIZ_REVIEW_OPEN);
 172 $mform->setDefault('answersopen', $CFG->quiz_review & QUIZ_REVIEW_ANSWERS & QUIZ_REVIEW_OPEN);
 173 $mform->setDefault('feedbackopen', $CFG->quiz_review & QUIZ_REVIEW_FEEDBACK & QUIZ_REVIEW_OPEN);
 174 $mform->setDefault('generalfeedbackopen', $CFG->quiz_review & QUIZ_REVIEW_GENERALFEEDBACK & QUIZ_REVIEW_OPEN);
 175 $mform->setDefault('scoreopen', $CFG->quiz_review & QUIZ_REVIEW_SCORES & QUIZ_REVIEW_OPEN);
 176 $mform->setDefault('overallfeedbackopen', $CFG->quiz_review & QUIZ_REVIEW_OVERALLFEEDBACK & QUIZ_REVIEW_OPEN);
 177
 178
 179 $closedoptionsgrp=array();
 180 $closedoptionsgrp[] = &$mform->createElement('checkbox', 'responsesclosed', '', get_string('responses', 'quiz'));
 181 $closedoptionsgrp[] = &$mform->createElement('checkbox', 'answersclosed', '', get_string('answers', 'quiz'));
 182 $closedoptionsgrp[] = &$mform->createElement('checkbox', 'feedbackclosed', '', get_string('feedback', 'quiz'));
 183 $closedoptionsgrp[] = &$mform->createElement('checkbox', 'generalfeedbackclosed', '', get_string('generalfeedback', 'quiz'));
 184 $closedoptionsgrp[] = &$mform->createElement('checkbox', 'scoreclosed', '', get_string('scores', 'quiz'));
 185 $closedoptionsgrp[] = &$mform->createElement('checkbox', 'overallfeedbackclosed', '', get_string('overallfeedback', 'quiz'));
 186 $mform->addGroup($closedoptionsgrp, 'closedoptionsgrp', get_string("reviewclosed", "quiz"), array(' '), false);
 187 $mform->setDefault('responsesclosed', $CFG->quiz_review & QUIZ_REVIEW_RESPONSES & QUIZ_REVIEW_CLOSED);
 188 $mform->setDefault('answersclosed', $CFG->quiz_review & QUIZ_REVIEW_ANSWERS & QUIZ_REVIEW_CLOSED);
 189 $mform->setDefault('feedbackclosed', $CFG->quiz_review & QUIZ_REVIEW_FEEDBACK & QUIZ_REVIEW_CLOSED);
 190 $mform->setDefault('generalfeedbackclosed', $CFG->quiz_review & QUIZ_REVIEW_GENERALFEEDBACK & QUIZ_REVIEW_CLOSED);
 191 $mform->setDefault('scoreclosed', $CFG->quiz_review & QUIZ_REVIEW_SCORES & QUIZ_REVIEW_CLOSED);
 192 $mform->setDefault('overallfeedbackclosed', $CFG->quiz_review & QUIZ_REVIEW_OVERALLFEEDBACK & QUIZ_REVIEW_CLOSED);
 193
 194 //-------------------------------------------------------------------------------

Y yo hago lo mismo, excepto que uso el mismo array y no añado setDefaults para añadir mis checkboxes, pero no entiendo por qué aquí se colocan alineados con el texto de arriba y en mi caso no.

¿Puedes hecharme una mano?, me interesa mucho alinear el texto.

Gracias de antemano Xavier, un saludo.


Adjunto FormularioQuiz.png
En respuesta a Alejandro Michavila Pallarés

Re: Mostrar etiquetas elementos del addGroup

de Xavier Paz -
Sin haber revisado el código en detalle, parece que en el caso de la segunda imagen, los textos en negrita son las cabeceras de una tabla, y los checkbox estan metidos en celdas, por esos aparecen alineados en función de la anchura de los textos de cabecera ¿aparece más codigo relacionado a continuación, en las lineas 195 y siguientes?
En respuesta a Xavier Paz

Re: Mostrar etiquetas elementos del addGroup

de Alejandro Michavila Pallarés -
Hola Xavier,

Gracias por contestar, no hay más código relacionado en la linea 195 y posteriores.

Creo que no hay soporte en formslib para tablas, por lo menos eso dice la documentación: "Tableless layout", en:

http://docs.moodle.org/en/Development:lib/formslib.php

Yo no he sido capaz de meter tablas en mi mod_form.

En el código usa la función addGroup que uso yo, que permite alinear un grupo de elementos en una misma linea, pero no hay más, no sé cómo es capaz de alinear el texto de arriba con los checkboxes de abajo.

Un saludo.

En respuesta a Alejandro Michavila Pallarés

Re: Mostrar etiquetas elementos del addGroup

de Alejandro Michavila Pallarés -
Hola Xavier,

Finalmente he conseguido resolver mi problema usando elementos estáticos.

Muchas gracias por tu valiosa ayuda.

Doy por terminado mi formulario y paso a validarlo y a implementar las funciones de la librería "lib.php".

Me han surgido varias dudillas que no he podido encontrar:
  1. Con respecto a la función "add_instance" y el método "insert_records" de lib.php, he comentado mis dudas en este link: http://moodle.org/mod/forum/discuss.php?d=19952#p677483
  2. ¿Dónde debo hacer el cambio de referencia de un "nombre_checkbox = 1" (activado) con el valor que tendrá realmente por ejemplo "comenzar -> 8:00AM", en el formulario antes de llamar a "add_instance" o en la propia función "add_instance"?.
Un saludo.