Buscar en este blog

viernes, 18 de septiembre de 2009

AJAX con mootools. Envio de formulario

Con las mootools es muy fácil usar ajax sin necesidad de manejar el objeto XmlHttpRequest y complicarse con las compatibilidades de los navegadores.

Este ejemplo es el envio de un formulario, tan sencillo como formulario.send();

Ahí va el código:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Insert title here</title>
<script type="text/javascript" src="js/mootools/mootools-1.2.1-core-yc.js"></script>
<style>

/* los colores son muy mejorables */

.formulario {
display: block;
border: 0.1em solid green;
background-color: #777070;
color: #ffffff;
font-size: 0.7em;

}
.formulario label {
display: block;
}
.formulario input {
display: block;
background-color: #efdddd;
color: #f60962;
}
.formulario input[type=submit] {
background-color: #000000;
color: #f60962;
font-weight: bolder;
}
.codigo {
width: 10em;
}
.descripcion {
width: 20em;
}
.cantidad {
width: 5em;
}
.precio {
width: 5em;
}
.dto {
width: 5em;
}
.tax {
width: 5em;
}
.importe {
width: 5em;
}

</style>
</head>
<body>

<form action="controller.do" id="formulario" name="formulario" method="post" class="formulario">
<label>Código</label>
<input type="text" id="codigo" name="codigo" maxlength="16" class="codigo" />
<label>Decripción</label>
<input type="text" id="descripcion" name="descripcion" maxlength="120" class="descripcion" />
<label>Cantidad</label>
<input type="text" id="cantidad" name="cantidad" maxlength="9" class="cantidad" />
<label>Precio</label>
<input type="text" id="precio" name="precio" maxlength="11" class="precio" />
<label>Dto</label>
<input type="text" id="dto" name="dto" maxlength="5" class="dto" />
<label>Tax</label>
<input type="text" id="tasa" name="tasa" maxlength="5" class="tax" />
<label>Importe</label>
<input type="text" id="importe" name="importe" maxlength="15" class="importe" />
<input type="submit" id="guardar" name="guardar" value="Guardar" title="Guardar"/>
</form>
<div id="resultado"></div>
<script type="text/javascript">

window.addEvent('domready', function() {
addEventToForm('formulario','resultado');
});
function addEventToForm(_id_form, _id_result) {

$(_id_form).addEvent('submit', function(e) {
//Prevents the default submit event from loading a new page.
e.stop();

this.set('send', {onComplete: function(response) {

$(_id_result).set('html', response);
}});
//Send the form.
this.send();
});
}

</script>
</body>
</html>


El código de controller.do tan solo es...

<?php
print_r($_REQUEST);
?>

martes, 15 de septiembre de 2009

HTML div organizar contenido

Como todavía me encuentro muchas webs y aplicaciones web con <TABLE><TR><TD>
continúo con el tema de usar div en lugar de table.

Con el siguiente ejemplo podemos organizar una página web o documento html
con divs, centrando el contenido y estableciendo un diseño proporcional,
que se adaptaría a cualquier resolución de pantalla y dispositivo.

No usamos ningún <table> ni <tr> ni <td> ni ..




Ahora el código html y css

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<title>div html</title>
<!--
/* lo ideal sería tener la hoja de estilos en otro fichero
* pero para el ejemplo lo metemos dentro del documento html
*/
<link rel = "stylesheet" type = "text/css" media="screen" href="media/css/all/estilos.css"/>
-->
<style type="text/css" media="all">
body {
/* para centrar el contenido */
background-color:#ffffff;
text-align:center;
margin:0 auto;
}
#container {
/* # la almoadilla aplica el estilo a los tag html con ese id */
margin: 0 auto;
text-align:left;
/*width:780px; /* para 800 x 600 */
width: 100%;
}
#cabecera {
background-color: blue; /* mejor definir color notación #333ccc */
color: white;
}
#menu {
background-color: orange;
float: right;
width: 20%;
}
#contenido {
background-color: #eadcdc;
float: left;
width: 75%;
}
#pie {
clear: both;
background-color: #333ccc;
color: #ffffff;
}
</style>
</head>
<body>
<div id="container">
<div id="cabecera">
cabecera
</div>
<div id="menu">
menu
<ul>
<li>item menu</li>
<li>item menu</li>
<li>item menu</li>
<li>item menu</li>
<li>item menu</li>
<li>item menu</li>
<li>item menu</li>
<li>item menu</li>
</ul>
</div>
<div id="contenido">
contenido
<h2>La Ñ con utf-8</h2>
<p>
Podemos usar cualquier caracter de nuestro queridisimo lenguaje
con la codificación UTF-8
Ñ ñ á é í ó ú Á É Í Ó Ú ç Ç
</p>
<h2>Titulo dentro del contenido</h2>
<p>
Texto dentro del contenido, texto dentro del contenido
Ah los diseñadores gráficos usan el siguiente texto como borrador
</p>
<h2>Lorem ipsum dolor sit amet</h2>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>

</div>
<div id="pie">
pie
</div>
</div>
</body>
</html>

Fundamental es separar el contenido del diseño.
Por un lado nuestro contenido organizado con html o mejor con xhtml
y por otro lado el diseño.

Copia todo el html, guardalo en un fichero html o xhtml y abrelo con un navegador.

Todo el contenido dentro del tag <style> debería pasar a un fichero estilos.css
pero lo puedes dejar así para hacer pruebas.

También ejemplos visuales de divs con distintos css en la propiedad de display

Y cómo no la w3c con su guía de referencia rápida de css y xhtml:
Guía de Referencia CSS 2.1
Guía de Referencia XHTML

miércoles, 9 de septiembre de 2009

CSS. HTML. Para todos los dispositivos

Hace poco se cumplieron 20 años de la web, World Wide Web, y Tim Berners-Lee criticaba los dominios .tel y .mobi. No es de extrañar ya que realmente con el mismo contenido html o xhtml podemos crear estilos para los distintos dispositivos o Media types. Echar un vistazo a las guias de las w3c sobre estos Media types

El tema es sencillo, si hemos separado bien el contenido de la apariencia, el html del css.

Dentro de <html><head> podemos definir hojas de estilo, css, para cada dispositivo cliente que pueda solicitar una url de nuestra web.

Se trata de añadir con el valor del atributo media las diferentes hojas de estilo, css, que hayamos generado, mejor que sea el diseñador gráfico si sabe que existe algo más que flash.



<!-- para monitores de ordenador, computadora -->
<link rel = "stylesheet" type = "text/css" media="screen" href="css/screen/general.css"/>

<!-- para imprimir -->
<link rel = "stylesheet" type = "text/css" media="print" href="css/print/general.css"/>

<!-- para pequeñas pantallas, como móviles, pda, ... -->
<link rel = "stylesheet" type = "text/css" media="handheld" href="css/handheld/general.css"/>

<!-- incluso para ciegos -->
<link rel = "stylesheet" type = "text/css" media="braille" href="css/braille/general.css"/>
<link rel = "stylesheet" type = "text/css" media="embossed" href="css/embossed/general.css"/>

<!-- sintetizadores de voz -->
<link rel = "stylesheet" type = "text/css" media="speech" href="css/speech/general.css"/>

<!-- Para nuestro querido terminal o consola, cuando navegamos con lynx -->
<link rel = "stylesheet" type = "text/css" media="tty" href="css/tty/general.css"/>


<!-- Los tipicos pantalla, impresión y teléfono móvil o pda
<link rel = "stylesheet" type = "text/css" media="screen" href="css/screen/menu.css"/>
<link rel = "stylesheet" type = "text/css" media="print" href="css/print/menu.css"/>
<link rel = "stylesheet" type = "text/css" media="handheld" href="css/handheld/menu.css"/>



No te olvides echar un vistazo a la w3c, hay una guía muy interesante sobre css (en español) que puede resolver muchas dudas y por su puesto los Media types en inglés.

viernes, 28 de agosto de 2009

Javascript. MooTools.

Hay muchos frameworks para javascript, yo he apostado por MooTools , aunque Prototype es de los más utlizados.

Mootools pesa poco y nos ofrece multitud de objetos y funciones.

¿ Todavía sigues escribiendo todo el javascript ?
Eso me pasaba a mí pero con los framework he logrado mejorar mi productividad, lograr código en casi cualquier navegador, desde Firefox, Opera, ... incluso en el IExplorer

Nos cuesta adaptarnos a un nuevo API, bueno a cualquier cambio por lo general, pero si querías hacer siempre tu 3 x 4 mejor nos deberíamos haber metido en otra profesión que no fuera la informática... ya que esto no para de cambiar y hay que estarse reciclando y actualizando constantemente.

La documentación está bastante bien, cuando te acostumbras a ella. También hay demos de la propia MooTools pero googleando encuentras efectos muy chulos hechos por otra gente:



Dile adios al document.getElementById(..)


Voy preparando otra entrada para desarollo con Javascript no intrusivo usando mootools con los Element y Selecctor...

martes, 4 de agosto de 2009

Linux. Ubuntu. Network-Manager Wireless

El Network-Manager en gnome está genial para los que no les gusta la consola, ni el ifup eth0, ifdown eth0.
Aunque a los que nos ponemos a tocar el /etc/network/interfaces hacemos que el Network-Manager se pierda un poco.

También he detectado que el Ubuntu Desktop Edition instala todo bastante bien, pero los que cacharreamos un poco al final usamos la "alternate installer” o el "Ubuntu Server" para cosas como LVM, RAID o cosillas así y al final el Network-Manager se pierde.

Para el tema Wireless WIFI , recomiendo echeis un vistazo a la wiki de ubuntu WirelessTroubleShootingGuide en inglés pero hasta yo lo entiendo.

Y si habeis instalado Ubuntu desde el "alternate installer” para el tema wireless debeis instalar compat-wireless (linux-backports-modules)



# For Ubuntu 8.10 Intrepid users:
sudo apt-get install linux-backports-modules-intrepid

# For Ubuntu 9.04 Jaunty users:
sudo apt-get install linux-backports-modules-jaunty


Ver toda la información en linuxwireless.org también esta la información para cualquier distribución de linux.

viernes, 1 de mayo de 2009

PHP. módulo de un "long". Calcular dígito control de IBAN.

Calculando el DC dígito de control de un número de cuenta IBAN me he encontrado un problema con el módulo o resto.
Al manejar un número que sobrepasa el integer, "no se exacta la barrera, pero supongamos que a partir de 2147483647 deja de ser nuestro integer de toda la vida", manual PHP. Enteros y al calcular el modulo de 97 de ese número long perdía la precisión y devolvía un resto incorrecto.

Hay varias soluciones a esta situación, yo opté por usar bcmod function bcmod ya que en PHP hay funciones para casi todo y sino en www.phpclasses.org podremos encontrar alguna clase que nos facilite el desarrollo.

Supongo que también se debe a la "anarquía" de PHP que no obliga a declarar el tipo de dato de la variable, aunque cada vez empiezo a encontrar más código en el que se hacen casting a las variables.

En el mundo java un int es un int, un String es un String y un long es un long y todo el día haciendo casting pero siempre tienes claro que hay en una variable.


$foo = (array)$foo;
$foo = (b)$foo;
$foo = (binary)$foo;
$foo = (bool)$foo;
$foo = (boolean)$foo;
$foo = (double)$foo;
$foo = (float)$foo;
$foo = (int)$foo;
$foo = (integer)$foo;
$foo = (object)$foo;
$foo = (real)$foo;
$foo = (string)$foo;

type-casting-php


En esta función que cálcula el dígito de control de un iban, recopilada de www.desarrolloweb.com me encontré con el problema devolviendome mal el resto el operador % y solucionandolo cuando apliqué la función bmod en lugar del operador % de siempre.

Al usar % me devolvía mal el resto cuando le pasaba un long 9999999999999999
//$modulo97 = $ibanConDC_ % 97;
Al usar bcmod todo a la perfección
$modulo97 = bcmod($ibanConDC_, 97);

La función es muy mejorable, pero siempre hay prisas con los proyectos:

/**
* Gernerar el DC, dígito control de IBAN, y devolver en nuevo IBAN con DC
*
* @link http://www.desarrolloweb.com/articulos/2484.php
* @param string $_iban
* @return $iban_
*/
function generarDCInToIban( $_iban ) {

$ibanConDC_ = -1;

// IBAN sin DC, DC = 00 : BE00999999999999
// IBAN con DC, DC = 89 : BE89999999999999

// Mover los cuatro primeros caracteres del número IBAN a la derecha:
$ibanConDC_ = substr($_iban,4)."".substr($_iban,0,4);


// Convertir las letras a números según la siguiente tabla:
// A=10 G=16 M=22 S=28 Y=34
// B=11 H=17 N=23 T=29 Z=35
// C=12 I=18 O=24 U=30
// D=13 J=19 P=25 V=31
// E=14 K=20 Q=26 W=32
// F=15 L=21 R=27 X=33
$letras_array = array("A","B","C","D","E","F","G","H","I","J","K","L",
"M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");
$numeros_array = array("10","11","12","13","14","15","16","17","18","19","20","21",
"22","23","24","25","26","27","28","29","30","31","32","33","34","35");


$ibanConDC_ = str_replace( $letras_array, $numeros_array, $ibanConDC_);


// Aplicar la operación módulo 97 y restar al número 98, el valor obtenido.
// Si el resultado consta de sólo un dígito, insertar un cero a la izquierda.

//$modulo97 = intval($ibanConDC_) % 97;
//$modulo97 = $ibanConDC_ % 97;
$modulo97 = bcmod($ibanConDC_, 97);

$dc = 98 - $modulo97;

// insertar 0 a la izquierda si fuera menor de dos dígitos
$dc = sprintf("%02d",$dc);

// Sustituimos los dígitos 2 y 4 por el $dc
$ibanConDC_ = substr($_iban,0,2).$dc.substr($_iban,4);


return $ibanConDC_;
}




Esta función solo pasa de un IBAN sin DC dígito de control a un IBAN con dígito de control, si buscais directamente de CCC cuenta bancaria a IBAN, el tema se complica ya que cada pais tiene un prefijo de dos caracteres y cada pais tiene un sistema de CCC cuentas bancarias diferente, pero seguro que googleando lo podeis encontrar, pasarme el código cuando lo localiceis.

Yo os muestro una forma muy sencilla para los IBAN de cuentas bancarias españolas, (seguro que es mejorable se aceptan sugerencias):


/**
* Calcular IBAN
*
* @link https://empresas.bankinter.com/www/es-es/cgi/empresas+fichhtml?nombre=empresas/cmd_exterior/cmd_negocio_internacional/calcula_iban.html
* @param string $_entidad, $_sucursal, $_dc, $_cuenta
* @return $iban_
*/
function calcularIban( $_entidad, $_sucursal, $_dc, $_cuenta ) {

$iban_ = -1;

// CCC : 01280010120123456789
// IBAN : ES7001280010120123456789

$codPais = "ES";
$dc = "00"; // No sabemos el dígito de control del IBAN, ponemos 00

$iban_ = $codPais."".$dc."".$_entidad."".$_sucursal."".$_dc."".$_cuenta;

return $iban_;
}


Con la CCC cuenta bancaria hallamos el IBAN sin DC calcularIban(...)
y con el generarDCInToIban(...) podemos obtener el DC de la cuenta IBAN, modificando la función también nos sirve directamente para validar el IBAN.

Se aceptan sugerencias y mejoras de las funciones.

Si quereis calcular el DC dígito de control de una CCC cuenta bancaría bulma tiene publicada la función en PHP. No os asusteis que también escriben en castellano Cómo calcular el dígito de control de una cuenta corriente

Espero que os sirva de ayuda

martes, 10 de marzo de 2009

Linux. Mac Address

Es bastante sencillo saber cual es nuestra Mac Address.

user@localhost:~$ ifconfig
eth1 Link encap:Ethernet direcciónHW 00:18:e4:17:46:b3
inet dirección:192.168.1.48 Difusión:192.168.1.255 Máscara:255.255.255.0
dirección inet6: fe80::218:e8ff:fe17:43b3/64 Alcance:Vínculo
ARRIBA DIFUSIÓN CORRIENDO MULTICAST MTU:1500 Métrica:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:4674 errors:0 dropped:0 overruns:0 carrier:0
colisiones:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:284122 (277.4 KB)
Interrupción:19 Dirección base: 0xcc00

lo Link encap:Bucle local
inet dirección:127.0.0.1 Máscara:255.0.0.0
dirección inet6: ::1/128 Alcance:Anfitrión
ARRIBA LOOPBACK CORRIENDO MTU:16436 Métrica:1
RX packets:42737 errors:0 dropped:0 overruns:0 frame:0
TX packets:42737 errors:0 dropped:0 overruns:0 carrier:0
colisiones:0 txqueuelen:0
RX bytes:2639360 (2.5 MB) TX bytes:2639360 (2.5 MB)


Podemos limitar los resultados con grep

user@localhost:~$ ifconfig | grep HW
eth1 Link encap:Ethernet direcciónHW 00:18:e7:16:45:b3


Para conocer las Mac Address de los equipos conectados

user@localhost:~$ arp
Address HWtype HWaddress Flags Mask Iface
192.168.1.10 ether 00:17:31:238:97:20 C eth1
192.168.1.3 ether 00:0E:50:42:5B:E4 C eth1
192.168.1.22 ether 00:07:E9:D6:8F:1E C eth1
192.168.1.23 ether 00:02:B3:19:8A:96 C eth1
192.168.1.21 ether 00:18:F3:6B:FB:DF C eth1


Para conocer las Mac Adress de todos los equipos de la lan.
Suponiendo que la lan sea 192.168.1.0

Es necesario tener instalado nmap.

user@localhost:~$ sudo apt-get install nmap


Ahora ya podemos ejecutar el commando.

user@localhost:~$ nmap -sN 192.168.1.0-255
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2009-03-10 12:58 CET
Interesting ports on 192.168.1.3:
MAC Address: 00:0E:50:92:5B:E4 (Thomson Telecom Belgium)

All 1680 scanned ports on 192.168.1.10 are open|filtered
MAC Address: 00:15:31:38:97:20 (Asustek Computer)

All 1680 scanned ports on 192.168.1.21 are open|filtered
MAC Address: 00:14:F3:8B:FB:DF (Unknown)

All 1680 scanned ports on 192.168.1.22 are open|filtered
MAC Address: 00:09:E9:D5:8F:1E (Intel)

All 1680 scanned ports on 192.168.1.23 are open|filtered
MAC Address: 00:04:B3:17:8A:96 (Intel)

Nmap finished: 256 IP addresses (6 hosts up) scanned in 25.797 seconds


Con grep limitamos los resultados a los que necesitamos:

user@localhost:~$ nmap -sN 192.168.1.0-255 | grep MAC
MAC Address: 00:0E:50:92:5B:E4 (Thomson Telecom Belgium)
MAC Address: 00:12:31:38:97:20 (Asustek Computer)
MAC Address: 00:14:F3:8B:FB:DF (Unknown)
MAC Address: 00:06:E9:D5:8F:1E (Intel)
MAC Address: 00:04:B3:17:8A:96 (Intel)


Seguro que se pueden afinar mucho más los comandos y existan otros comandos útiles para este tema, se admiten comentarios.

sábado, 7 de marzo de 2009

PHP. JAVA. Sobreescritura de método o función

Hace poco tiempo me di cuenta que llevaba sobreescribiendo los métodos en php sin darme cuenta, aunque lo llevo llamando desde hace años parametros opcionales, pero al final conseguimos lo mismo.

No se si con este ejemplo he logrado explicar el tema:

<?php

public function ladrar( $_ladrido ) {

//$_ladrido = "guau guau guau";

print($_ladrido);

return;
}

public function ladrar( $_ladrido, $_fuerte=false ) {

if ($_fuerte==true)
$_ladrido = strtoupper($_ladrido);

print($_ladrido);

return;
}
// Con esta función nos bataría para todo
public function ladrar( $_ladrido , $_fuerte=false , $_saltar=false ) {

if ($_fuerte==true)
$_ladrido = strtoupper($_ladrido);

if ($_saltar==true)
saltar();

print($_ladrido);

return;
}
?>

/*** java ***/

public void ladrar( String _ladrido ) {

//String _ladrido = "guau guau guau";

System.out.print(_ladrido);

return;
}

public void ladrar( String _ladrido, boolean _fuerte ) {

if (_fuerte)
_ladrido = _ladrido.toUpperCase()

ladrar(_ladrido);

return;
}

public void ladrar( String _ladrido, boolean _fuerte, boolean _saltar ) {

if (_saltar)
saltar();

ladrar(_ladrido, _fuerte);

return;
}

/*** fin java ***/

PHP. Prepare statement. Dao

Desde hace tiempo estoy implementando en PHP las sentencias SQL al estilo java, PreparedStatement, con mysqli. Así evitamos cualquier inyección de código y trabajamos contra la base de datos como les gusta a los Dba, mediante Bind.



Esto sería parte de un objeto Dao implementación Mysql, fundamental el bean para trabajar con objetos y dar de una vez el salto a la programación POO.


public function buscarPorTitulo( $_titulo ) {

$Noticia_ = new Noticia();
$Noticias_array = array();

$sql = "SELECT ID_NOTICIA, TITULO, FECHA, CSS_STYLE, RUTA_FICHERO_HTML ";
$sql .= "FROM NOTICIAS ";
$sql .= "WHERE TITULO LIKE ? ";

if ($stmt = $this->mysqli->prepare($sql)) {

$stmt->bind_param("s", $_titulo);
/*
Character Description
i corresponding variable has type integer
d corresponding variable has type double
s corresponding variable has type string
b corresponding variable is a blob and will be sent in packets
*/
$result = $stmt->execute();
if (!$result) {
throw new Exception( "Error al consultar BB.DD" );
}


$Noticias_array_ = array();

$_stmt->bind_result(
$idNoticia,
$titulo,
$fecha,
$css_style,
$rutaFicheroHtml
);

$i=0;
while ($_stmt->fetch()) {
$Noticia = new Noticia();
$Noticia->setIdNoticia($idNoticia);
$Noticia->setTitulo($titulo);
$Noticia->setFecha($fecha);
$Noticia->setCssStyle($css_style);
$Noticia->setRutaFicheroHtml($rutaFicheroHtml);
$Noticias_array_[$i] = $Noticia;
$i++;
}

return $Noticias_array_;

$stmt->close();

} else {
throw new Exception( "Error al consultar BB.DD" );
}

return $Noticias_array;

}




public class Noticia {

private $idNoticia=0;
private $titulo="";
private $fecha="0000-00-00";
private $cssStyle="";
private $rutaFicheroHtml="";

public function Noticia( ) {
$this->idNoticia=0;
$this->titulo="";
$this->fecha="0000-00-00";
$this->cssStyle="";
$this->rutaFicheroHtml="";
}

public function setIdNoticia( $_idNoticia ) {
$this->idNoticia=$_idNoticia;
return;
}

public function getIdNoticia( ) {
return $this->idNoticia;
}

public function setTitulo( $_titulo ) {
$this->titulo=$_titulo;
return;
}

public function getTitulo( ) {
return $this->titulo;
}

public function setFecha( $_fecha ) {
$this->fecha=$_fecha;
return;
}

public function getFecha( ) {
return $this->fecha;
}

public function setCssStyle( $_cssStyle ) {
$this->cssStyle=$_cssStyle;
return;
}

public function getCssStyle( ) {
return $this->cssStyle;
}

public function setRutaFicheroHtml( $_rutaFicheroHtml ) {
$this->rutaFicheroHtml=$_rutaFicheroHtml;
return;
}

public function getRutaFicheroHtml( ) {
return $this->rutaFicheroHtml;
}

}