[RESUELTO] Valores por defecto en pagelet_carrera

Hola!
Necesito poner valores por defecto en las opciones del pagelet_carrera, pude hacerlo con la unidad academica mediante

			$('#form_carrera-unidad_academica').val(1);
				cambio_unidad_academica();

en el onload del pagelet. Funciona bien.
La carrera debe quedar seleccionable, pero la sede y la modalidad deben tener la opcion 1 por defecto, igual que la unidad academica.
Probe lo siguiente y no funciono:

function cambio_carrera()
	 {
		var ua = $('#form_carrera-unidad_academica').val();
		var carrera = $('#form_carrera-carrera').val();
		if (carrera !== no_seleccion) {
			buscar_sedes(ua, carrera);
			set_solo_lectura('form_carrera-sede', false);
                        $('#form_carrera-sede').val(1);
		        cambio_sede();
		} else {
			resetear_sedes();
		}
	}

Tambien probe con “selectedIndex” e intente acceder al array de opciones, pero no pude.
Alguna sugerencia?

Desde ya gracias

Saludos,
Felipe

Hola Felipe,

Si te referís al formulario de selección de carrera, la no selección es la opción por defecto ya que los datos de los combos se traen en cascada, y el evento disparador de la carga de las cascadas es la selección. ¿Por qué razón necesitás valores por defecto? ¿Tenés sede y modalidad únicas? En ese caso, podrías hacer una personalización que “bypasseé” las cascadas y traiga directamente los datos. Si es ese el caso, avisame y te oriento en cómo encararlo.

Saludos,
Fernando

Que tal Fernando? Gracias! Ese es el caso, tengo sede única y modalidad única, también única unidad académica. Cómo decís que lo encare?

Felipe.

Hola Felipe,

Primero, imagino que ya habrás leído este documento, donde se describen los conceptos generales de las personalizaciones y algunos ejemplos.

Para este caso concreto, deberías seguir los siguientes pasos:

  1. Crear una clase “opciones_pers” en la carpeta “modelo” de la personalización. Allí definir respectivas funciones que obtengan las opciones, de manera similar a como hace el sistema. Esto vas a tener que hacerlo porque las consultas existentes en el sistema para estos campos están diseñadas para recibir parámetros de las cascadas. Una observación en este punto: fijate que el método “armar_combo_opciones” tiene un parámetro booleano “$omitir_no_seleccion_opcion_unica”, que de estar en true, ante un set de datos de una sola opción no agrega la no selección.

  2. Personalizar la clase “operaciones/censo/carrera/form_carrera.php”, extendiendo de la clase original y redefiniendo el método “generar_definicion()”. Fijate que los campos “carrera”, “sede” y “modalidad” tienen vacía la propiedad de origen de datos (“form::multi_options => array()”), ya que las opciones se cargan por AJAX en cascada. Deberías reemplazar esas tres líneas por las correspondientes funciones de opciones que previamente definiste.

  3. Personalizar “operaciones/censo/carrera/pagelet_carrera.js”, quitando la parte de “registrar_cascadas”, que ya no tiene razón de ser.

Cualquier duda avisame y lo vemos.

Saludos,
Fernando

Perfecto! Muchas gracias, solucionado.
Una última pregunta, hay forma de ocultar los campos ‘unidad académica’, ‘sede’ y ‘modalidad’?

Saludos!

Si ya tenés implementada esa personalización, y lo que querés es simplemente ocultar visualmente los combos, podés personalizar el archivo “operaciones/censo/carrera/selector_carrera.twig”, enmarcando los control groups a ocultar en un:


<div style="display: none">
   ...
</div>

Ahora, si lo que querés es que ni siquiera vayan al browser, deberías directamente excluirlos del formulario (en su construcción y en el twig), y atrapar la acción de post del formulario para agregar manualmente esos datos por defecto.

Saludos,
Fernando

Perfecto! Solucionado, Gracias!!