Leaving programmed a post for today just to test programmed posts.
This commit is contained in:
parent
5a1fb097c5
commit
49cedaa5fc
@ -2,6 +2,7 @@
|
||||
<title>Comercios de Burguillos.</title>
|
||||
<description>
|
||||
<p>Aquí puedes encontrar información acerca de los comercios de Burguillos.</p>
|
||||
<p>¿Quieres que tu comercio aparezca aquí? Contacta con <a href="mailto:contact@owlcode.tech">contact@owlcode.tech</a></p>
|
||||
</description>
|
||||
<priority>2</priority>
|
||||
<menu_text>Comercios</menu_text>
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
<p>Esta página es software libre, puedes tomar cualquier parte del código de la página para tu propia web o programa mientras cumplas con la licencia AGPLv3 or later, puedes encontrar su código aquí.</p>
|
||||
</description>
|
||||
<priority>3</priority>
|
||||
<priority>999</priority>
|
||||
<menu_text>Esta página</menu_text>
|
||||
<slug>esta-pagina</slug>
|
||||
</category>
|
||||
|
10
content/categories/talleres.xml
Normal file
10
content/categories/talleres.xml
Normal file
@ -0,0 +1,10 @@
|
||||
<category>
|
||||
<title>Talleres en Burguillos.</title>
|
||||
<description>
|
||||
<p>Aquí puedes encontrar información acerca de los talleres y actividades disponibles en Burguillos.</p>
|
||||
<p>¿Quieres que tu taller o actividad aparezca aquí? Contacta con <a href="mailto:contact@owlcode.tech">contact@owlcode.tech</a></p>
|
||||
</description>
|
||||
<priority>3</priority>
|
||||
<menu_text>Talleres</menu_text>
|
||||
<slug>talleres</slug>
|
||||
</category>
|
25
content/posts/0000008-taller-de-macrame.xml
Normal file
25
content/posts/0000008-taller-de-macrame.xml
Normal file
@ -0,0 +1,25 @@
|
||||
<post>
|
||||
<author>Burguillos.info</author>
|
||||
<date>2022-11-14T12:00+00:00</date>
|
||||
<title>Últimas plazas para Taller de Macrame.</title>
|
||||
<ogdesc>Últimas plazas para Taller de Macrame.</ogdesc>
|
||||
<category>talleres</category>
|
||||
<img src="/img/poster-macrame-preview.png"/>
|
||||
<slug>ultimas-plazas-taller-de-macrame</slug>
|
||||
<content>
|
||||
<img alt="Poster del taller" src="/img/poster-macrame.png"/>
|
||||
|
||||
<p>Ultima hora, nos hemos enterado de un taller de Macramé planeado para el 26 de Noviembre de 10:00 a 18:00 en la Mercería la Gallina Costurera localizada en Avenida Pepe Luna.</p>
|
||||
<p>El taller está organizado por Maka Guijo y costará 45€ por persona.</p>
|
||||
|
||||
<p>Los materiales vienen incluidos con el precio de la plaza.</p>
|
||||
|
||||
<p>Si os preguntáis.-¿Qué es el Macramé?.- No os angustieis que yo os lo cuento.</p>
|
||||
<p>Según Wikipedia, el Macramé es la técnica de crear tejidos mediante el uso de nudos decorativos.</p>
|
||||
|
||||
<p>Usando Macramé puedes crear regalos preciosos para tus familiares o amigos; o incluso quedarte tú con tu obra para exponerla, en el cartel se puede apreciar algunas de las cosas que se pueden realizar mediante el uso de Macramé.</p>
|
||||
|
||||
<p>Si quieres pasar un buen rato y divertirte con este peculiar estilo de artesanía no dudes en contactar con <a href="tel:+34611489981">611 489 981</a>, no esperes hasta el último momento ya que las plazas son limitadas.</p>
|
||||
|
||||
</content>
|
||||
</post>
|
@ -12,6 +12,7 @@ use Const::Fast;
|
||||
use Mojo::DOM;
|
||||
use Path::Tiny;
|
||||
use DateTime::Format::ISO8601;
|
||||
use DateTime;
|
||||
use SVG;
|
||||
use Capture::Tiny qw/capture/;
|
||||
|
||||
@ -25,8 +26,6 @@ const my $SVG_HEIGHT => 627;
|
||||
const my $SVG_EMBEDDED_IMAGE_MAX_WIDTH => 1000;
|
||||
const my $SVG_EMBEDDED_IMAGE_MAX_HEIGHT => 200;
|
||||
|
||||
my $iso8601 = DateTime::Format::ISO8601->new;
|
||||
|
||||
my $cached_posts_by_category;
|
||||
my $cached_posts_by_slug;
|
||||
|
||||
@ -34,9 +33,30 @@ sub new {
|
||||
return bless {}, shift;
|
||||
}
|
||||
|
||||
sub _ReturnCacheFilter {
|
||||
my $self = shift;
|
||||
my %posts_by_category_filtered;
|
||||
my %posts_by_slug_filtered;
|
||||
my $iso8601 = DateTime::Format::ISO8601->new;
|
||||
my $current_date = DateTime->now;
|
||||
for my $category ( keys %$cached_posts_by_category ) {
|
||||
for my $post ( @{ $cached_posts_by_category->{$category} } ) {
|
||||
my $date_post = $iso8601->parse_datetime( $post->{date} );
|
||||
if ( $date_post > $current_date ) {
|
||||
next;
|
||||
}
|
||||
$posts_by_slug_filtered{ $post->{slug} } = $post;
|
||||
$posts_by_category_filtered{ $post->{category} } //= [];
|
||||
push @{ $posts_by_category_filtered{ $post->{category} } }, $post;
|
||||
}
|
||||
}
|
||||
return (\%posts_by_category_filtered, \%posts_by_slug_filtered);
|
||||
}
|
||||
|
||||
sub Retrieve {
|
||||
my $self = shift;
|
||||
if ( defined $cached_posts_by_category && defined $cached_posts_by_slug ) {
|
||||
return ( $cached_posts_by_category, $cached_posts_by_slug );
|
||||
return $self->_ReturnCacheFilter;
|
||||
}
|
||||
$cached_posts_by_category = {};
|
||||
$cached_posts_by_slug = {};
|
||||
@ -59,10 +79,11 @@ sub Retrieve {
|
||||
my $content = $dom->at(':root > content')->content
|
||||
or die "Missing content at $post_file.";
|
||||
my $image_element = $dom->at(':root > img');
|
||||
my $image;
|
||||
if (defined $image_element) {
|
||||
$image = $image_element->attr->{src};
|
||||
}
|
||||
my $image;
|
||||
|
||||
if ( defined $image_element ) {
|
||||
$image = $image_element->attr->{src};
|
||||
}
|
||||
|
||||
my $post = {
|
||||
title => $title,
|
||||
@ -79,7 +100,7 @@ sub Retrieve {
|
||||
$cached_posts_by_slug->{$slug} = $post;
|
||||
push @$category_posts, $post;
|
||||
}
|
||||
return ( $cached_posts_by_category, $cached_posts_by_slug );
|
||||
return $self->_ReturnCacheFilter;
|
||||
}
|
||||
|
||||
sub PostPreviewOg {
|
||||
@ -137,20 +158,20 @@ sub _AttachImageSVG {
|
||||
my ( $width, $height ) = $stdout =~ /^"(\d+)x(\d+)"$/;
|
||||
if ( $height > $SVG_EMBEDDED_IMAGE_MAX_HEIGHT ) {
|
||||
$width /= $height / $SVG_EMBEDDED_IMAGE_MAX_HEIGHT;
|
||||
$width = int($width);
|
||||
$width = int($width);
|
||||
$height = $SVG_EMBEDDED_IMAGE_MAX_HEIGHT;
|
||||
}
|
||||
|
||||
if ( $width > $SVG_EMBEDDED_IMAGE_MAX_WIDTH ) {
|
||||
$height /= $width / $SVG_EMBEDDED_IMAGE_MAX_WIDTH;
|
||||
$height = int($height);
|
||||
$width = $SVG_EMBEDDED_IMAGE_MAX_WIDTH;
|
||||
$height = int($height);
|
||||
$width = $SVG_EMBEDDED_IMAGE_MAX_WIDTH;
|
||||
}
|
||||
|
||||
my $x = int(($SVG_WIDTH/2) - ($width / 2));
|
||||
my $y = 90;
|
||||
my $x = int( ( $SVG_WIDTH / 2 ) - ( $width / 2 ) );
|
||||
my $y = 90;
|
||||
my ($output) = capture {
|
||||
system qw/file --mime-type/, $image;
|
||||
system qw/file --mime-type/, $image;
|
||||
};
|
||||
my ($format) = $output =~ /(\S+)$/;
|
||||
$svg->image(
|
||||
@ -158,8 +179,7 @@ sub _AttachImageSVG {
|
||||
y => $y,
|
||||
width => $width,
|
||||
height => $height,
|
||||
-href => "data:$format;base64,"
|
||||
. encode_base64( $image->slurp )
|
||||
-href => "data:$format;base64," . encode_base64( $image->slurp )
|
||||
);
|
||||
return $y + $height + 50;
|
||||
}
|
||||
|
BIN
public/img/poster-macrame-preview.png
Normal file
BIN
public/img/poster-macrame-preview.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 716 KiB |
BIN
public/img/poster-macrame.png
Normal file
BIN
public/img/poster-macrame.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.8 MiB |
Loading…
Reference in New Issue
Block a user