Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Existe un módulo para manejar calendario
Ir a página 1, 2  Siguiente
 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Módulos
Mensaje Jue May 29, 2008 9:36 am
danimera
Perlero Adicto
Perlero Adicto
Registrado: 23 Jun 2005
Mensajes: 239
Ubicación: Colombia
Existe un módulo para manejar calendario Responder citando

Hola, estoy desarrollando una aplicación de bitácora fotografía cronológica, y estoy en el punto en el cual debo hacer la parte de foto calendario así como ésta de Filckr http://www.flickr.com/explore/interesting/2006/08/

Pero no sé si exista un módulo que haga algo así, o que lo pueda usar, pues la idea es que se subirán imágenes y se le asignará un día de calendario y debe aparecer la miniatura en el calendario según la fecha asignada y bla bla bla...

¿DÓNDE PODRÍA ENCONTRAR ALGO QUE ME FACILITARA ESTE TRABAJO?
Mensaje Jue May 29, 2008 9:47 am
monoswim
Vive para Perl en Español
Vive para Perl en Español
Registrado: 18 Nov 2003
Mensajes: 716
Ubicación: Buenos Aires
Responder citando

¿Buscaste en el CPAN?

http://search.cpan.org/search?query=calendar&mode=all

Seguramente alguno te sirva.

Saludos
Mensaje Jue May 29, 2008 10:42 am
danimera
Perlero Adicto
Perlero Adicto
Registrado: 23 Jun 2005
Mensajes: 239
Ubicación: Colombia
Responder citando

Hola, monoswim, hace rato no verte por acá... raro, pues busqué en CPAN y no vi nada. ¿Será que escribí mal? ¿? Le echaré un vistazo... pero me gustaría una ayuda más rápida, quizás de uso pero si no, pues ni modos
Mensaje Vie May 30, 2008 6:46 am
monoswim
Vive para Perl en Español
Vive para Perl en Español
Registrado: 18 Nov 2003
Mensajes: 716
Ubicación: Buenos Aires
Responder citando

Hey, danimera, no me había dado cuenta que eras tu el que escribía... ¡ Hola Smile !

http://www.terrence.com/perl/calendar/calendar.cgi

Checkea ese, tal vez te sirva, tienes el fuente y todo...

Espero que te sirva.

Saludos
Mensaje Vie May 30, 2008 7:05 am
monoswim
Vive para Perl en Español
Vive para Perl en Español
Registrado: 18 Nov 2003
Mensajes: 716
Ubicación: Buenos Aires
Responder citando

http://www.hotscripts.com/CGI_and_Perl/Scripts_and_Programs/Calendars/index.html

Saludos
Mensaje Sab May 31, 2008 5:16 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4092
Ubicación: Valladolid, España
Responder citando

Con el módulo HTML::CalendarMonth lo tienes hecho.

Un ejemplo. Esto lo he hecho hace unas semanas: http://bocyl.jcyl.es/sumariomovil

Perl:
use HTML::CalendarMonth;

my $mes  = 6;
my $anno = 2008;

my $calendario = HTML::CalendarMonth->new(
    month       => $mes,
    year        => $anno,
    locale      => 'es',
    week_begin  => 2,
    border      => 0,
    cellpadding => 5,
    cellspacing => 0,
);

print $calendario->as_HTML();


Ultima edición por explorer el Mie Jul 02, 2008 6:47 am, editado 1 vez
Mensaje Lun Jun 02, 2008 9:16 am
danimera
Perlero Adicto
Perlero Adicto
Registrado: 23 Jun 2005
Mensajes: 239
Ubicación: Colombia
Responder citando

Este módulo, explorer, ¿me permite darle también la propiedad de imagen de fondo a la celda? si es así... es lo que necesito, pero también necesito que al darle click en ese día me lance un lightbox una ventana con la imagen ampliada... ¿se dejará implementar eso?

Porque la opción de monoswim es interesante mas creo que me demoraría unas horitas más mientras analizo su funcionamiento...

Igual las dos son útiles al 100%.
Mensaje Lun Jun 02, 2008 9:17 am
danimera
Perlero Adicto
Perlero Adicto
Registrado: 23 Jun 2005
Mensajes: 239
Ubicación: Colombia
Responder citando

Por cierto, explorer, eso es lo que estoy haciendo, es lo mismo así como ese sumario, es una bitácora, solo que tanto texto lleva una foto, es todo...
Mensaje Jue Jun 26, 2008 4:44 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4092
Ubicación: Valladolid, España
Responder citando

Bueno, el módulo te permite crear el calendario. Y luego, con un poco de trabajo (y mucho estudio) puedes modificar el contenido:
Perl:
    my $calendario = HTML::CalendarMonth->new(
        month       => $mes,
        year        => $anno,
        locale      => 'es',
        week_begin  => 2,
        border      => 0,
        cellpadding => 5,
        cellspacing => 0,
    );

    # Color de domingo
    $calendario->col(6)->attr(class => 'domingo');
    #$calendario->item(($calendario->dayheaders())[0])->attr(class => 'festivo');

    # Reemplazar los titulares de los días
    my @DIAS = qw( D L M X J V S );
    my @dias = $calendario->dayheaders();

    for my $i ( 0 .. 6 ) {
        $calendario->item($dias[$i])->attr(class => 'sobrepub');
        $calendario->item($dias[$i])->replace_content($DIAS[$i]);
    }


Fíjate: creamos el calendario, y luego cambio el aspecto de la columna 6, la de los domingos. Lo que hace esa línea es agregar el atributo class a todos los <td> de esa columna, con el valor del estilo 'domingo'.

Y el siguiente párrafo hace un cambio de los contenidos de las celdas de la primera fila, la que muestran los nombres de los días:

* En @dias guardamos esas celdas, como objetos
* Luego un bucle, en que para cada una de esas celdas ($dias[$i]), las buscamos dentro del calendario (item()) y les agregamos un atributo (attr()) consistente en una clase de estilos, igual que antes hemos hecho con los domingos
* Luego, reemplazamos todo el contenido de la celda, con uno nuevo.
Mensaje Jue Jun 26, 2008 8:26 pm
danimera
Perlero Adicto
Perlero Adicto
Registrado: 23 Jun 2005
Mensajes: 239
Ubicación: Colombia
Responder citando

Mira que me pareció interesante lo que me muestras ya que me he estado matando y lo único que he logrado es colocar en una celda una imagen de fondo con esta línea
Perl:
$calendario->item(16,21,05)->attr(background => 'http://www.zephiroclub.net/WebAPP/images/avatars/avatar_angel.png');


También logré cambiar el ancho de una celda
Perl:
$calendario->item(5,16,21)->attr(width  => 80);

Pero para este caso me gustaría saber cómo puedo cambiar el tamaño de todas las celdas del calendario...?¿?

Además veo muy útil lo de ponerle estilos. Me gustó mucho eso.
Mensaje Vie Jun 27, 2008 7:01 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4092
Ubicación: Valladolid, España
Responder citando

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.
Mensaje Vie Jun 27, 2008 9:36 am
danimera
Perlero Adicto
Perlero Adicto
Registrado: 23 Jun 2005
Mensajes: 239
Ubicación: Colombia
Responder citando

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í,
Perl:
item(@dias)->attr(background => @fondos)
Mensaje Vie Jun 27, 2008 9:57 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4092
Ubicación: Valladolid, España
Responder citando

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:

css:
TD { width: 30px; }


Yo creo que la mejor opción es hacer un bucle por los días que quieres modificar (no probado):
Perl:
foreach my $dia ( @dias ) {
    $calendario->item($dia)->attr(background => $fondos{$dia});
}

habiendo convertido el array @fondos en un hash, para que cada fondo corresponda con su día.
Mensaje Vie Jun 27, 2008 10:15 am
danimera
Perlero Adicto
Perlero Adicto
Registrado: 23 Jun 2005
Mensajes: 239
Ubicación: Colombia
Responder citando

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
Perl:
$calendario->item(5,6,7)->attr(background => 'fondo1.gif','fondo2.gif','fondo3.gf');
me funciona bien ^^ pero la idea es pasarles la lista solamente.
Mensaje Lun Jun 30, 2008 3:53 pm
danimera
Perlero Adicto
Perlero Adicto
Registrado: 23 Jun 2005
Mensajes: 239
Ubicación: Colombia
Responder citando

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.
Publicar nuevo tema   Responder al tema    Foros de discusión -> Módulos Todas las horas son GMT - 6 Horas
Ir a página 1, 2  Siguiente
Página 1 de 2



Powered by phpBB © 2001, 2005 phpBB Group