Cambiar Diseño Visualizar

Buenos dias,

Supongo que a mas de uno de vosotros le habra pasado, el caso es cuando se tiene una tabla en la bbdd con bastantes campos de diversos tipos.

Cuando le doy a visualizar, el resultado me muestra filas con un width muy alto ademas de que son muy largas. Esto provoca que sean mas dificiles de tratar.

¿Alguien ha intantado cambiar el estilo de esta pantalla?

Estari bien poder definir en algun sitio que campos queremos mostrar, ya que en muchos casos nos bastaria saber ver el nombre, tambien se podria configurar el tamaño de la celda, esto es que si la celda acepta 20 caracteres pues que corte el texto donde sea preciso añadiendole los ...

Saludos

Comentarios

  • Modificaciones son posibles pero debes meterte en el core del framework y esto se hace complicado para algunas personas ya que debes conocer muchas cosas del framework sin embargo no es imposible.
    Los formularios StandardForm tienen un comportamiento definido y hacerlo cambiar a veces cuesta trabajo, por eso siempre la recomendación es que esos formularios son esencialmente para tablas pequeñas, con pocas relaciones y mejor si no existen.
    Si lo que deseas es no mostrar cierto y determinado campo existe un metodo que se llama $this->not_browser($campo); esto hace que no se muestre en esa vista, en el manual esta reseñado esa información.
  • edited 4:59
    Hola a todos,

    Ya he descubierto ese metodo, de hecho estube modificando la vista visualizar, para ello utilize ese metodo.

    Ademas tambien me he creado un metodo, para indicar la longitud de cada campo, una funcion muy parecida a not_browse y asi limito los textos a x caracteres, cortando el mensaje y añadiendole los 3 puntos al final.

    Tambien he cambiado diversos aspectos del diseño, como por ejemplo ponerle un celda encima de la accion modificar y eliminar. Originalmente no llebava ningun titulo y le he puesto el titulo Acciones.

    Tambien he cambiado el numero de registros para la paginacion y he creado un ancho de la tabla fijo, integrandolo asi en la cabecera y menu.

    Otro dia subire las funciones por si alguien desea utilizarlo.

    Saludos
  • Puedes compartir esas modificaciones y se pueden incorporar al framework fácilmente, tu nos dice si puedes...

    Éxito...
  • edited 4:59
    Buenas,

    En el fichero standard_form.php añado la sigueinte funcion
      /**
       * Indica el tamño maximo de los caracteres de un campo en la vista visualizar
       * 
       *  @param array
       */
    	protected function set_size_browse($datos){
    		foreach($datos as $what => $size){
    			$this->form['components'][$what]['attributes']['sizeBrowse'] = $size;
    		}
    	}
    

    En el fichero browse.php añado la siguiente funcion
    /**
    	 * Devuelve el texdto recortado 
    	 *
    	 * @param string $string
    	 * @param int $charlimit
    	 * @return string
    	 */	
     	static function cut_string($string, $charlimit){
     		if($string == '' OR $string == 'null'){
    			return $string;
    		}
     		if(substr($string,$charlimit-1,1) != ' '){
    			$string = substr($string,'0',$charlimit);
    			$array = explode(' ',$string);
    			array_pop($array);
    			$new_string = implode(' ',$array);
    			return $new_string.' ...';
    		}else{
    			return substr($string,'0',$charlimit-1).' ...';
    		}
    	}
    

    Para añadir el titulo Acciones a la tabla modifico el fichero browse.php añadiendo en la line 279
    Generator::forms_print("<td align='center'colspan='2' valign='bottom'><table><tr><td align='center'>Acciones</td></tr></table></td>");
    

    Por ultimo en el fichero browse.php tenemos que modificar unas lineas para hacer la llamada a la funcion cut_string, para ello modificamos la linea 323 y añadimos:
    if($component['attributes']['sizeBrowse']){
       $cadena .= self::cut_string($row[$name],$component['attributes']['sizeBrowse']);
    }else{
        $cadena .= $row[$name];
    }
    $cadena .= "</td>";
    Generator::forms_print($cadena);
    

    Una vez modificados estos ficheros desde nuestro standform podemos modificar el tamaño de los campos, para ello pasamos un array con el nombre del campo a modificar y el tamaño
    $this->set_size_browse(array("nombre" => "50","actividad" => "50"));	
    

    Os adjunto una imagen para mayor claridad

    Saludos
  • Hola.. Yo lo que quiero es que al entar en un strandarForm por primera vez en la sesión, me aparezca directamente le vista 'browse'... ¿Donde puedo poner esto?



    Muchas gracias de antemano..... y un saludo a todos.
  • edited 4:59
    Hola

    Lo que puedes hacer es crearte una regla de enrutamiento en el fichero de configuracion route.ini

    en este casao la regla seria
    backend/* =	backend/*/browse
    
    backend es el nombre de mi aplicacion, se deberia cambiar por el nombre que le tengas puesto tu.

    Saludos
  • ...
    Por ultimo en el fichero browse.php tenemos que modificar unas lineas para hacer la llamada a la funcion cut_string, para ello modificamos la linea 323 y añadimos:
    if($component['attributes']['sizeBrowse']){
       $cadena .= self::cut_string($row[$name],$component['attributes']['sizeBrowse']);
    }else{
        $cadena .= $row[$name];
    }
    $cadena .= "</td>";
    Generator::forms_print($cadena);
    

    Una vez modificados estos ficheros desde nuestro standform podemos modificar el tamaño de los campos, para ello pasamos un array con el nombre del campo a modificar y el tamaño
    $this->set_size_browse(array("nombre" => "50","actividad" => "50"));	
    
    ....
    Me puedes dar que linea queda por arriba y por abajo de esa validación que agregaste ya que la linea 323 no concuerda luego de hacer ciertas modificaciones...
  • edited 4:59
    Ahi tienes un bloque de codigo mas amplio, perdon por el descuido de no darme cuenta de las lineas.

    Las lineas de abajo puede que no coincidan ya que incorpore otra funcionalidad para que los campos con nombre localidades_id me carge 3 combos dinamicos por ajax en los standForm.

    Saludos
    if(($component['type']!='hidden')&&(!$component['notBrowse'])){
    							if($component['format']=='money'){
    								$row[$name] = "\$ ".number_format($row[$name], 0, '.', ',');
    							}
    							if($component['type']!='image'){
    									$cadena = "<td align='center' style='border-left:1px solid #D1D1D1;font-size:12px;'
    	                            onmouseover='$(\"nTr$nTr\").className=\"$hoverColor\"'
    	                            onmouseout='$(\"nTr$nTr\").className=\"$color\"'
    	                            >";
    							
    							                           
    							if($component['attributes']['sizeBrowse']){
    								if($component['caption'] == 'Localidades'){
    	                            	$cadena .= self::cut_string(self::getNombreLocalidad($row[$name]),$component['attributes']['sizeBrowse']);
    	                            }else{
    									$cadena .= self::cut_string($row[$name],$component['attributes']['sizeBrowse']);
    	                            }
                                }
                                $cadena .= "</td>";
                                Generator::forms_print($cadena);
    							} else {
    								if(isset($component["dir"])){
    
  • edited 4:59
    Buenos Dias,

    Cuando se me ocurre alguna nueva idea, no me importa que se añada al framework al contrario si lo posteo es para eso, pero por favor si lo que se va a subir se modifica con respecto a lo mio me gustaria que por lo menos se me avisase para realizar los cambios oportunos.

    Es de muy mal gusto actualizarse el framework y perder toda una mañana intentando buscar porque falla, y descubrir que es porque han modificado una cosa que implante yo mismo.

    ¿Como hay que pasarle los paramentros a la nueva funcion set_size_browse?

    Saludos
  • Si entiendo, bueno incorpore la modificacion que sugieres pero un poco mas standard y adecuado a lo que se viene trabajando en Kumbia y son los parámetros con nombres...
    $this->set_size_browser("nombre: 8", "apellido: 10");
    

    Para mejorar mejor el sistema de incorporar nuevas funcionalidades seria bueno que sean reportados por el Trac[1] de Kumbia, por esta via es mucho mas sencillo para ti como para nosotros hacer un seguimiento a tus funcionalidades.

    Me gusta la idea de los combos dinamicos, si puedes hacerme llegar un ejemplo funcional a mi correo para verlo y bueno si es posible incorporarlo al framework.

    Gracias!

    [1]->http://tools.assembla.com/kumbia/newticket
  • edited 4:59
    Hola,

    Claro que me gustaria que se añadiera al framework por eso no hay problema, siemplemente me molesto que no me dijeras nada y perdiera toda la mañana buscando los fallos.

    Lo de los combos anidados lo tengo hecho en plan parche, lo tengo para que me muestre 3 combos, pais region y localidad, terminare unos problemas de javascript, que no se porque de repente me ha dejado de funcionar, y ahora no puedo ni modificar ni eliminar ni añadir registros y cuando termine preparo un ejemplo y te lo envio al correo.

    Saludos
  • Bueno si estas bajando info del svn deberías ver los log de los cambios ya que mucho (en su mayoría) describimos el cambio que se hace...

    <!-- m --><a class="postlink" href="http://tools.assembla.com/kumbia/changeset/694">http://tools.assembla.com/kumbia/changeset/694</a><!-- m -->

    En cuanto a los problemas de JS muy extraño porque no se han tocado esos archivos como para generar problema, sin embargo muéstrame el error de JS que te genera para detectar mas rápido el problema
  • edited 4:59
    Hola a todos amigos tengo una duda :

    la funcion $this->not_browser($campo) en que parte debe de ir?? es decir en un controller? en un modelo? o en una vista?
    Si sabemos que cuando generammos un formulario no tenemos vista solo alumno.php en MODELS y
    alumno_controller.php en CONTROLLERS para mi caso
    quisiera saber donde es que le pongo esa funcion porque no me la reconoce en ninguna de las dos... ayudenme porfa
Sign In or Register to comment.