Fixed blog entries order, added BrainMinder post

This commit is contained in:
roberto 2025-11-07 17:55:29 +01:00
parent 36034fc188
commit 0288cb23cf
18 changed files with 86 additions and 25 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 221 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

View file

@ -1,3 +1,3 @@
+++
title = "SPOT Blog"
title = "Blog"
+++

View file

@ -16,5 +16,5 @@ Technologies used : PHP, Yii Framework, MariaDB, Bootstrap
- Logic and structure study
- Applications implementation and development
- Support and maintenance
- CMS for the istitutional website
- CMS for the institutional website

View file

@ -0,0 +1,17 @@
+++
tags = ['Software development', 'Web application', 'PWA']
categories= ['Projects']
images = ['images/blog/brainminder.png']
services = ['web-application-development', 'custom-cms']
title = 'BrainMinder - second brain web application'
date = '2025-10-30'
lastmod = '2025-10-30'
+++
**BrainMinder** is a software tool to organize and store knowledge, share it with others, analyze situations, ideas, and problems, and make pondered decisions.
Items are shared with external users via a pre-authorized link and (optionally) an additional password.
<!--more-->
It permits organizing personal knowledge in different types of items that can be created to ones preference. Every item type has some basic fields to collect the information (like title, summary, description) but other fields can be created as preferred.
**BrainMinder** is already usable and very useful but is currently under heavy development and new features are added frequently.

View file

@ -11,9 +11,9 @@ Client : Web Marketing Trento (Trento - IT)
Design and development of data synchronization procedures between different applications and databases
with a spreadsheet interface with : PHP, MariaDB, Joomla, Virtuemart, CodeIgniter, VueJS.
<!--more-->
I designed and developed a web application based on CodeIgniter framework and integrating [JSpreadsheet](https://jspreadsheet.com/)
which allows interaction with the Virtuemart ecommerce database to be able to edit product data in spreadsheet mode.
<!--more-->
The frontend integrates [VueJS](https://vuejs.org) for a more efficient user interface, and all the calls to the backend are ajax and return the data in JSON format.

View file

@ -1,3 +1,3 @@
+++
title = "SPOT Blog"
title = "Blog"
+++

View file

@ -0,0 +1,19 @@
+++
tags = ['Software development', 'Web application', 'PWA']
categories= ['Projects']
images = ['images/blog/brainminder.png']
services = ['web-application-development', 'custom-cms']
title = 'BrainMinder - second brain web application'
date = '2025-10-30'
lastmod = '2025-10-30'
+++
**BrainMinder** è un software per archiviare e organizzare il proprio archivio di conoscenze, condividerlo con gli altri, analizzare situazioni, idee, e problemi, e prendere decisioni ponderate.
I singoli articoli sono condivisi con gli utenti esterni via un url pre autorizzato e (opzionalmente) con una password aggiuntiva.
<!--more-->
Permette di suddividere il proprio archivio di conoscenze in tipi diversi di articoli che possono essere creati in base alle necessità.
Ogni tipo di articolo ha alcuni tipi di campi predefiniti per raccogliere le informazioni (come titolo, sommario, descrizione) ma altri campi possono essere aggiunti secondo le proprie preferenze.
**BrainMinder** è già utilizzabile e molto utile, ma è attualmente in fase di intenso sviluppo e nuove funzionalità vengono aggiunte frequentemente.

View file

@ -28,7 +28,7 @@
{{ end }}
{{ end }}
<div style="text-align: justify;">
<div style="text-align: justify; margin-bottom: 16px;">
{{ .Content }}
</div>

View file

@ -3,7 +3,6 @@
{{ if isset .article.Params "images"}}
{{ if (fileExists (printf "assets/%s" (index .article.Params.images 0))) -}}
{{ $mainimage := resources.Get (index .article.Params.images 0) }}
{{ $mainimage := $mainimage.Crop "500x200" }}
<a href="{{ .article.Permalink }}"><img class="img-thumbnail img-fluid" src="{{ $mainimage.RelPermalink }}"></a>
{{ end }}
{{ end }}
@ -11,8 +10,8 @@
<div class="col s12 m8 l8 blog-article-summary">
<h4 class="blog-article-title"><a href="{{ .article.Permalink }}">{{.article.Title}}</a></h4>
<p class="blog-article-introduction">
{{ .article.Summary | plainify}}
<a href="{{ .article.Permalink }}">{{ i18n "read_more" }}</a>
<p>{{ .article.Summary | plainify}}</p>
<a class="readmore" href="{{ .article.Permalink }}">{{ i18n "read_more" }}</a>
</p>
{{ partial (printf "partials/widgets/%s.html" .tags) .article }}
</div>

View file

@ -10,8 +10,8 @@
</div>
<div class="col s12 m8 l8 blog-article-summary">
<p class="blog-article-introduction">
{{ .article.Summary | plainify}}
<a href="{{ .article.Permalink }}">{{ i18n "read_more" }}</a>
<p>{{ .article.Summary | plainify}}</p>
<a class="readmore" href="{{ .article.Permalink }}">{{ i18n "read_more" }}</a>
</p>
{{ partial (printf "partials/widgets/%s.html" .tags) .article }}
</div>

View file

@ -8,7 +8,7 @@
{{ $projects := first 4 ((where (.Site.RegularPages.RelatedIndices . "services" ) "Type" "blog").ByLastmod ) }}
{{ $numOfProjects := $projects | len}}
{{ $contentClass := "s12 m9 l9 servicecontent" }}
{{ $contentClass := "s12 m9 l9" }}
{{ if eq $numOfProjects 0 }}
{{ $contentClass = "s12 m12 l12" }}
@ -33,7 +33,7 @@
<div class="container">
<div class="row">
<div class="col {{ $contentClass }}">
<div class="col {{ $contentClass }} servicecontent">
{{ if (fileExists (printf "assets/%s" (index .Params.images 0))) -}}
{{ $mainimage := resources.Get (index .Params.images 0) }}
<p style="text-align: center"><img class="img-fluid" src="{{ $mainimage.RelPermalink }}" width="500"></p>

View file

@ -62,6 +62,14 @@
#home-introduction {
text-align: justify;
box-shadow: 0 10px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19) !important;
border-radius: 8px;
padding: 10px;
font-style: italic;
}
#home-introduction p:first-child {
margin-top: 0;
}
.service {
@ -74,6 +82,30 @@ footer .menu {
border-bottom: 1px solid;
}
.blog-article-summary p {
margin-top: 0;
}
.row.blog-article-item-list img, .articlecontent img, .servicecontent img {
box-shadow: 0 10px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19) !important;
border-radius: 8px;
padding: 10px;
}
.servicesidebar h4 {
margin-bottom: 16px;
}
.servicesidebar .article {
margin-bottom: 16px;
}
.servicesidebar img, .blogsidebar img {
box-shadow: 0 8px 14px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19) !important;
border-radius: 4px;
padding: 4px;
}
.blog-article-title {
margin-bottom: 20px;
text-align: center;
@ -104,6 +136,11 @@ footer .menu {
margin-top: 20px;
}
.articles.home img {
box-shadow: 0 10px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19) !important;
border-radius: 8px;
}
.articles.home .article {
margin-top: 20px;
margin-bottom: 20px;
@ -113,10 +150,6 @@ figure.img-fluid img {
max-width: 100%;
}
#home-introduction {
font-style: italic;
}
/* Min medium */
@media (min-width: 767px) {
.servicesidebar, .blogsidebar {

View file

@ -1,4 +1,4 @@
{{ $projects := first 4 ((where .Site.RegularPages "Type" "blog").ByParam "LastmodDate") }}
{{ $projects := first 4 (((where .Site.RegularPages "Type" "blog").ByParam "Lastmod").Reverse) }}
{{ with $projects }}
<div class="row articles home" >
<h3 class="text-center">{{ i18n "latest_articles" }}</h3>

View file

@ -6,11 +6,10 @@
{{ $articleimage := $articleimage.Resize "200x" }}
<a href="{{ .Permalink }}">
<img class="img-fluid" style="padding: 6px; border: 1px solid #ddd" src="{{ $articleimage.RelPermalink }}"
<img class="img-fluid" src="{{ $articleimage.RelPermalink }}"
width="{{ $articleimage.Width }}" height="{{ $articleimage.Height }}" alt="{{ .Title }}" class="img-fluid"
title="{{ .Title }}">
</a>
{{- end }}
{{- end }}

View file

@ -63,12 +63,6 @@ body {
margin-right: 0;
}
/* Set shorter line heights on headings and interactive elements */
h1, h2, h3, h4,
input, label {
line-height: 1.1;
}
/* Balance text wrapping on headings */
h1, h2,
h3, h4 {