• Publicidad

Existe un módulo para manejar calendario

Aquí encontrarás todo lo que sea específicamente acerca de módulos de Perl. Ya sea que estás compartiendo tu módulo, un manual o simplemente tienes una duda acerca de alguno.

Notapor explorer » 2008-06-27 08:01 @376

Creo recordar que sí que hay un método de la clase HTML::CalendarMonth que devuelve todas las celdas del calendario. Y para cada una de ellas puedes darles un estilo que sea el ancho en píxeles que quieres.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Publicidad

Notapor danimera » 2008-06-27 10:36 @483

El método days() me devuelve todos los días de un calendario, para cambiar el tamaño de celdas use un foreach.

¿De pronto no sabes una forma más rápida de poner por ejemplo en los días

@dias(05, 08, 22, 24) estos @fondos(fondo1, fondo2, fondo3, fondo4)

sin usar un ciclo?

Usando algo así,
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
item(@dias)->attr(background => @fondos)
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Notapor explorer » 2008-06-27 10:57 @498

Pues no, no lo sé.

Hay una posibilidad para evitar hacer un bucle (que tampoco es muy costoso hacerlo), que se me ocurre.

Si, en toda la página, no hay más celdas de tabla que las de ese calendario, entonces te vale con definir un estilo CSS para la marca TD. Por ejemplo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using css Syntax Highlighting
TD { width: 30px; }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Yo creo que la mejor opción es hacer un bucle por los días que quieres modificar (no probado):
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
foreach my $dia ( @dias ) {
    $calendario->item($dia)->attr(background => $fondos{$dia});
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

habiendo convertido el array @fondos en un hash, para que cada fondo corresponda con su día.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor danimera » 2008-06-27 11:15 @510

Pues si, utilicé tu sugerencia y me funcionó bien... con un bucle, pero creo que debe haber una forma para lograrlo ya que si hago eso
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$calendario->item(5,6,7)->attr(background => 'fondo1.gif','fondo2.gif','fondo3.gf');
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
me funciona bien ^^ pero la idea es pasarles la lista solamente.
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Notapor danimera » 2008-06-30 16:53 @745

Explorer, ¿cómo puedo hacer que el número del día sea un vinculo, es que ahora necesito que cuando dé click en el número del día me abra una ventana lightbox para mostrar la foto? Ya solo me falta eso por ahora.
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Notapor explorer » 2008-06-30 17:55 @788

Con la función replace_content() cambias el contenido de la celda.

Yo suelo usar las facilidades que da CGI.pm para hacer todo el código HTML que necesito.

Código: Seleccionar todo
    # Creación de los enlaces a los sumarios de cada día
    foreach my $dia ( keys %dias_publicados ) {
        my $enlace = $cgi->url(-path_info => 1) . "?d=$dia;m=$mes;a=$anno";
        $calendario->item($dia)->attr(onmouseover =>  q(javascript:this.className='sobrepub'));
        $calendario->item($dia)->attr(onmouseout  =>  q(javascript:this.className='fuerapub'));
        $calendario->item($dia)->attr(onclick     => qq(javascript:parent.location='$enlace'));
        $calendario->item($dia)->replace_content($cgi->a({-href => $enlace, -class => 'pub'}, $dia));
    }

En %dias_publicados tengo los días en los que me interesa poner un enlace. Los recorro (sin importar el orden) y para cada uno creo el $enlace que les corresponde.
Para cada celda del calendario les pongo tres atributos, que son eventos del ratón para facilitar la interacción con el usuario.
Y finalmente, cambiamos el contenido de la celda con un $enlace (a()), y de contenido, el número del $dia del mes.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor danimera » 2008-06-30 19:36 @858

Explorer, cuando utilizo algo parecido a tu ejemplo, dentro de las celdas en vez de hacerme el link me muestra
<a rel="lightbox" href="http://localhost/bitacora/riocauca/index.pl?d=;m=05;a=2008">19</a> en vez de ponerme en link dentro del número del día...

No sé si me hice entender, lo quiero decir es que en vez de hacer el vínculo, me muestra, por decir, el código HTML dentro la celda.
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Notapor explorer » 2008-07-01 02:01 @126

El módulo HTML::CalendarMonth usa el método as_HTML() del módulo HTML::Element, que dice que su misión es la de 'escapar' todos los caracteres extraños, que eso incluye a los caracteres que usas como código HTML: '<', '>', '&', etc.

La solución es decirle que NO haga eso, que no escape el contenido que le hemos pasado a HTML::CalendarMonth.

Yo lo resolví haciendo un my $html = $calendario->as_HTML( q{|} );. Lo que hago es pedirle que me genere el calendario en html, pero que solo 'escape' el carácter '|', que, además, no uso en ningún sitio, pero estoy obligado a darle al menos algo a la función para que no escape todos los caracteres extraños.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor danimera » 2008-07-01 09:21 @431

Huy, gracias explorer, ya no te molesto más; por ahora, ok.
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Anterior

Volver a Módulos

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados