lo que muestra un ef_popup

Hola

En un formulario tengo un campo tipo ef_popup que, al retornar muestra una descripción y el valor del campo es otro.

Como hago para obtener esa descripción al momento de grabar el formulario?

Emilio


vincular_actas_rdi.png

vincular_actas_rdi.png

Hola Emilio,

el popup del lado cliente te retorna dos cosas, la clave (que mandas al servidor) y la descripcion que es lo que se muestra.
Eso suponiendo que tenes bien configurada la operacion de seleccion en popup y no estas devolviendo dos veces el mismo valor para ambos campos.

La descripcion normalmente no te llega, si el valor de la clave con el cual podes obtener la misma.
Fijate que en la configuracion del ef_popup tenes que especificar un metodo para cargar la descripcion a partir de la clave, cosa que cuando pasa por el conf del formulario y obtiene la clave pueda recuperar el valor a mostrar.

Podrias usar manualmente ese mismo metodo si es que necesitas recuperar la descripcion en el evt de modificacion.

Saludos

Hola Richard

Haciendo abuso de tu amabilidad podras armarme el codigo necesario para esto?

El formulario que tiene el ef_popup tiene un campo oculto llamado “campo_archivo” y el popup maneja el campo id_rdi.
En el primero tengo que cargar la descripcion que devuelve el popup, al momento de hacer click en el boton de modificar de manera que la descripcion viaje hacia el servidor y se almace.

Desde ya muchas gracias y disculpá .

Emilio


vincular_acta_rdi.png

vincular_acta_rdi.png

Hola Emilio,

una que se me ocurre es usar el listener del evt procesar de ese campo. Por ej:


{$this->objeto_js}.evt__id_rdi__procesar = function(es_inicial) {
   if (! es_inicial && this.ef('id_rdi').tiene_estado()) {
           //Recupero la descripcion
          var desc = this.ef('id_rdi').get_estado_con_formato();
           document.getElementById('campo_archivo').value = desc;
   }
}

Otra forma es redefiniendo la function popup_callback que es la que se usa para disparar la interaccion del ef_popup


function popup_callback(indice, clave, desc)
{
	//---Evita error en firefox 1.5 porque la ventana hija se ha cerrado y este proceso se empieza a disparar desde alli
	if (popup_elementos[indice] != 'undefined') {
		setTimeout('popup_elementos["'+indice+'"].set_estado("'+clave+'", "'+desc+'")', 1);
                document.getElementById('campo_archivo').value = desc;
	}
}

Con alguna de esas dos te deberia llegar en el hidden la descripcion, sino la que te queda es recuperarla en el evt de modificacion del form.



function evt__formX__modificacion ($datos)
{
   $nombre_archivo = '';
   if (isset($datos['id_rdi']) && ! is_null($datos['id_rdi'])) {
              $nombre_archivo = co_rdi::get_nombre_archivo($datos['id_rdi']);
   }
}

En rigor deberias guardar unicamente el campo id_rdi, ya que al recuperarlo te deberia venir con el nombre original (creo).

Saludos

Hola Richard

Gracias por las alternativas.

La última no va. Si bien el registro existe, en la tabla que lo almacena, no tiene la información de id y nombre de archivo en nuxeo. Hay un momento en el cual voy a nuxeo, traigo esa información y la grabo.

Tengo un problema con las otras dos y tal vez sea un malentendido.
Un ef_oculto es lo mismo que un campo hidden(en terminologia hmtl)?

		//---------------- CREANDO OBJETO js_form_41000505_form_documentos --------------  
		window.js_form_41000505_form_documentos = new ei_formulario([ 'guarani',41000505 ], 'js_form_41000505_form_documentos', new Array(253, 500), 'form_41000505_form_documentos', {'nombre_archivo': [ ] ,'id': [ ] ,'archivo_rdi': [ ]}, new Object(), new Object());
		js_form_41000505_form_documentos.agregar_ef(new ef_upload('ef_form_41000505_form_documentosnombre_archivo', 'Documento Digital', [false, false, false], false), 'nombre_archivo');
		js_form_41000505_form_documentos.agregar_ef(new ef_popup('ef_form_41000505_form_documentosid', 'Documento RDI', [false, false, false], false, 0), 'id');

		//---- Validacion general ----------------------------------
		
		js_form_41000505_form_documentos.evt__validar_datos = function()
		{
                    
                    var archivo = this.ef('id').get_estado_con_formato();
                    this.ef('archivo_rdi').set_estado(archivo);
                    //var archivo = ef_form_606000092_form_acta_rdiid_rdi_desc.value;
                    //ef_form_606000092_form_acta_rdiarchivo.value = archivo;
                    return true;
		}
		
		//---- Procesamiento de EFs --------------------------------
		
                js_form_41000505_form_documentos.evt__id__procesar = function(es_inicial) {
                   if (! es_inicial && this.ef('id').tiene_estado()) {
                           //Recupero la descripcion
                          var desc = this.ef('id').get_estado_con_formato();
                           document.getElementById('archivo_rdi').value = desc;
                   }
                }                
		
		js_form_41000505_form_documentos.set_evento_implicito(new evento_ei('modificacion', true, ''  ,'', true));
		toba.agregar_objeto(window.js_form_41000505_form_documentos);

Hola Emilio,

El ef_oculto no viaja al cliente, no te va a servir para este caso. Lo que haría es usar un ef_editable y redefinir el layout para que no sea visible.

Saludos, Florencia.

Hola

Funcionó con todo lo anterior.

Gracias

Emilio

Hola Emilio,

ya vi que lo resolviste igual me quedaron algunas dudas:

No se si termino de entenderte, en nuxeo no se estaria almacenando el nombre original del archivo entonces?.. el id de nuxeo ya lo tenes del popup o no?.

Tengo un problema con las otras dos y tal vez sea un malentendido. Un ef_oculto es lo mismo que un campo hidden(en terminologia hmtl)?
No... como te decia Florencia, el ef_oculto permanece en el server ya que suele servir para mantener algun campo puntual entre pedidos de pagina y no deberia ser modificado. Con eso te ahorras de mantenerlo en sesion explicitamente y de enviarlo al cliente.

El hidden en html sirve al mismo proposito si se quiere… pero podes llegar a manipularlo tal como hace el ef_popup (editable + hidden) para transportar la clave de lo que seleccionaste.
Igual lo mio (si mal no recuerdo) era mas al hueso, directamente le seteabas la descripcion al otro campo y el id de nuxeo viajaba como parte del popup.

Saludos

Hola Richard

medio tarde pero:

No se si termino de entenderte, en nuxeo no se estaria almacenando el nombre original del archivo entonces?... el id de nuxeo ya lo tenes del popup o no?.

Cuando entro a la operacion en G3 y selecciono un objeto(acta o resolucion), no está en la base (G3) el id de nuxeo.
Llamo al popup, busco el documento respaldatorio y lo devuelvo al form principal. En este momento no está en la base (g3) el id de nuxeo con lo cual no puedo usar un metodo que me devuelva el nombre.
cuando lo grabo, va a la base y si lo edito nuevamente, me muestra el nombre del archivo.

Se entendió?
Emilio