bugs en updater_select

edited agosto 2007 in Bugs y Problemas
El helper utiliza por defecto selección multiple y hay casos en que este comportamiento no es deseado, también se observa que se invoca a una funcion selectedItem, la cual no la he conseguido en ningun lado (su nombre es bastante explicativo) y ocasiona un error de funcionamiento en el javascript.

Este es el codigo actual del helper
/**

 * Crea un select multiple que actualiza un container

 * usando una accion ajax que cambia dependiendo del id

 * selecionado en el select

 * @param string $id

 * @return code

 */

function updater_select($id){

	$opts = get_params(func_get_args());

	if(func_num_args()==1){

		$opts['id'] = $id;

	}

	if(!$opts['id']) $opts['id'] = $opts[0];

	if(!$opts['container']) $opts['container'] = $opts['update'];

	$code = "

	<select multiple onchange='AJAX.viewRequest({

		action: \"{$opts['action']}/\"+selectedItem($(\"{$opts['id']}\")).value,

		container: \"{$opts['container']}\"

	})' ";

	unset($opts['container']);

	unset($opts['update']);

	unset($opts['action']);

	foreach($opts as $k => $v){

		if(!is_numeric($k)){

			$code.=" $k='$v' ";

		}

	}

	$code.=">\n";

	return $code;

}

Propongo sustituir el helper por el siguiente:
function updater_select($id){
	$opts = get_params(func_get_args());
	if(func_num_args()==1){
		$opts['id'] = $id;
	}
	if(!$opts['id']) $opts['id'] = $opts[0];
	if(!$opts['container']) $opts['container'] = $opts['update'];
	$code = "
	<select onchange='AJAX.viewRequest({
		action: \"{$opts['action']}/\"+$(\"{$opts['id']}\").value,
		container: \"{$opts['container']}\"
	})' ";
	unset($opts['container']);
	unset($opts['update']);
	unset($opts['action']);
	foreach($opts as $k => $v){
		if(!is_numeric($k)){
			$code.=" $k='$v' ";
		}
	}
	$code.=">\n";
	return $code;
}

Esta es una solucion momentanea, ya que cuando se utiliza seleccion multiple en la lista desplegable, no se pasan a la accion todos los elementos seleccionados, si no el ultimo elemento seleccionado.

Se aceptan sugerencias.

Saludos.

Comentarios

Sign In or Register to comment.