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>
|
<title>Comercios de Burguillos.</title>
|
||||||
<description>
|
<description>
|
||||||
<p>Aquí puedes encontrar información acerca de los comercios de Burguillos.</p>
|
<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>
|
</description>
|
||||||
<priority>2</priority>
|
<priority>2</priority>
|
||||||
<menu_text>Comercios</menu_text>
|
<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>
|
<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>
|
</description>
|
||||||
<priority>3</priority>
|
<priority>999</priority>
|
||||||
<menu_text>Esta página</menu_text>
|
<menu_text>Esta página</menu_text>
|
||||||
<slug>esta-pagina</slug>
|
<slug>esta-pagina</slug>
|
||||||
</category>
|
</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 Mojo::DOM;
|
||||||
use Path::Tiny;
|
use Path::Tiny;
|
||||||
use DateTime::Format::ISO8601;
|
use DateTime::Format::ISO8601;
|
||||||
|
use DateTime;
|
||||||
use SVG;
|
use SVG;
|
||||||
use Capture::Tiny qw/capture/;
|
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_WIDTH => 1000;
|
||||||
const my $SVG_EMBEDDED_IMAGE_MAX_HEIGHT => 200;
|
const my $SVG_EMBEDDED_IMAGE_MAX_HEIGHT => 200;
|
||||||
|
|
||||||
my $iso8601 = DateTime::Format::ISO8601->new;
|
|
||||||
|
|
||||||
my $cached_posts_by_category;
|
my $cached_posts_by_category;
|
||||||
my $cached_posts_by_slug;
|
my $cached_posts_by_slug;
|
||||||
|
|
||||||
@ -34,9 +33,30 @@ sub new {
|
|||||||
return bless {}, shift;
|
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 {
|
sub Retrieve {
|
||||||
|
my $self = shift;
|
||||||
if ( defined $cached_posts_by_category && defined $cached_posts_by_slug ) {
|
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_category = {};
|
||||||
$cached_posts_by_slug = {};
|
$cached_posts_by_slug = {};
|
||||||
@ -59,10 +79,11 @@ sub Retrieve {
|
|||||||
my $content = $dom->at(':root > content')->content
|
my $content = $dom->at(':root > content')->content
|
||||||
or die "Missing content at $post_file.";
|
or die "Missing content at $post_file.";
|
||||||
my $image_element = $dom->at(':root > img');
|
my $image_element = $dom->at(':root > img');
|
||||||
my $image;
|
my $image;
|
||||||
if (defined $image_element) {
|
|
||||||
$image = $image_element->attr->{src};
|
if ( defined $image_element ) {
|
||||||
}
|
$image = $image_element->attr->{src};
|
||||||
|
}
|
||||||
|
|
||||||
my $post = {
|
my $post = {
|
||||||
title => $title,
|
title => $title,
|
||||||
@ -79,7 +100,7 @@ sub Retrieve {
|
|||||||
$cached_posts_by_slug->{$slug} = $post;
|
$cached_posts_by_slug->{$slug} = $post;
|
||||||
push @$category_posts, $post;
|
push @$category_posts, $post;
|
||||||
}
|
}
|
||||||
return ( $cached_posts_by_category, $cached_posts_by_slug );
|
return $self->_ReturnCacheFilter;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub PostPreviewOg {
|
sub PostPreviewOg {
|
||||||
@ -137,20 +158,20 @@ sub _AttachImageSVG {
|
|||||||
my ( $width, $height ) = $stdout =~ /^"(\d+)x(\d+)"$/;
|
my ( $width, $height ) = $stdout =~ /^"(\d+)x(\d+)"$/;
|
||||||
if ( $height > $SVG_EMBEDDED_IMAGE_MAX_HEIGHT ) {
|
if ( $height > $SVG_EMBEDDED_IMAGE_MAX_HEIGHT ) {
|
||||||
$width /= $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;
|
$height = $SVG_EMBEDDED_IMAGE_MAX_HEIGHT;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( $width > $SVG_EMBEDDED_IMAGE_MAX_WIDTH ) {
|
if ( $width > $SVG_EMBEDDED_IMAGE_MAX_WIDTH ) {
|
||||||
$height /= $width / $SVG_EMBEDDED_IMAGE_MAX_WIDTH;
|
$height /= $width / $SVG_EMBEDDED_IMAGE_MAX_WIDTH;
|
||||||
$height = int($height);
|
$height = int($height);
|
||||||
$width = $SVG_EMBEDDED_IMAGE_MAX_WIDTH;
|
$width = $SVG_EMBEDDED_IMAGE_MAX_WIDTH;
|
||||||
}
|
}
|
||||||
|
|
||||||
my $x = int(($SVG_WIDTH/2) - ($width / 2));
|
my $x = int( ( $SVG_WIDTH / 2 ) - ( $width / 2 ) );
|
||||||
my $y = 90;
|
my $y = 90;
|
||||||
my ($output) = capture {
|
my ($output) = capture {
|
||||||
system qw/file --mime-type/, $image;
|
system qw/file --mime-type/, $image;
|
||||||
};
|
};
|
||||||
my ($format) = $output =~ /(\S+)$/;
|
my ($format) = $output =~ /(\S+)$/;
|
||||||
$svg->image(
|
$svg->image(
|
||||||
@ -158,8 +179,7 @@ sub _AttachImageSVG {
|
|||||||
y => $y,
|
y => $y,
|
||||||
width => $width,
|
width => $width,
|
||||||
height => $height,
|
height => $height,
|
||||||
-href => "data:$format;base64,"
|
-href => "data:$format;base64," . encode_base64( $image->slurp )
|
||||||
. encode_base64( $image->slurp )
|
|
||||||
);
|
);
|
||||||
return $y + $height + 50;
|
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