werc-1.5.0-tweaks

Tweaks for the werc website builder created by the mad architect Uriel
Log | Files | Refs | README

commit 9691a4c56b8d22888235af43d0f1131577616b36
parent 94b175acec237073e6ed4af814bd46692d035969
Author: Nuno Sempere <nuno.semperelh@protonmail.com>
Date:   Mon, 25 Jul 2022 22:03:56 +0000

feat: Add sitemap2, which is a bit more readable

This is a work in progress

To do:
- Hide special directories (like images)
- In cases where a directory only has one element, display that directly

Diffstat:
Atpl/blogroll.tpl | 69+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mtpl/sitemap.tpl | 0
Atpl/sitemap2.tpl | 71+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 140 insertions(+), 0 deletions(-)

diff --git a/tpl/blogroll.tpl b/tpl/blogroll.tpl @@ -0,0 +1,69 @@ +<h1>Site map</h1> + +%{ +tmpfile=/tmp/werc_sitemap_$pid.txt +tmpfilex=/tmp/werc_sitemapx_$pid.txt +saveddf=$dirfilter + +MON2NUM='s/Jan/01/; s/Feb/02/; s/Mar/03/; s/Apr/04/; s/May/05/; s/Jun/06/; s/Jul/07/; s/Aug/08/; s/Sep/09/; s/Oct/10/; s/Nov/11/; s/Dec/12/;' + +fn get_mdate { + t=`{mtime $1} + t=`{date $t(1) | sed -e $MON2NUM -e 's/ ([0-9]) / 0\1 /g'} # Make sure day of the month is two digits. + echo $t(6)^'-'^$t(2)^'-'^$t(3) +} + +fn listDir { + d=$1 + dirfilter=$saveddf + if(test -f $d/_werc/config) + . $d/_werc/config + + if(~ $#perm_redir_to 0) { + echo '<ul class="sitemap-list">' + + for(i in `{ls -dF $d^*/ $d^*.md $d^*.html $d^*.txt >[2]/dev/null | sed $dirfilter}) { + desc=`{get_file_title $i} + u=`{echo $i|sed 's!'$sitedir'!!; '$dirclean's!/index$!/!; '} + if(! ~ $#desc 0 && ! ~ $desc '') + timestamp=`{echo $i | sed 's|sites/nunosempere.com/blog/||;' | sed 's|\(\d\)/.*/|$1|'} + echo $timestamp + // desc=' - '$"desc + echo '<a href="'$u'">' $"desc '</a>' + n=`{echo /$u|sed 's/[\-_]/ /g; s,.*/([^/]+)/?$,\1,'} + echo $base_url^$u >> $tmpfile + echo '<url><loc>'$base_url^$u'</loc><lastmod>'^`{get_mdate $i}^'</lastmod></url>' >> $tmpfilex + if(test -d $i) + @{ listDir $i } + } + echo '</ul>' + } +} + + +fltr_cache listDir $sitedir/ + +if(test -s $tmpfile) { + mv $tmpfile $sitedir/sitemap.txt & +} +if not if(test -f $tmpfile) + rm $tmpfile + +if(test -s $tmpfilex) { + { + echo '<?xml version="1.0" encoding="UTF-8"?> +<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' + + cat $tmpfilex + rm $tmpfilex & + echo '</urlset>' + # TODO Enable automaic search engine update notification. + #hget 'http://google.com/ping?sitemap='^`{url_encode $base_url'/sitemap.gz'} > /dev/null + + } | gzip > $sitedir/sitemap.gz & + #} > $sitedir/sitemap.xml & +} +if not if(test -f $tmpfilex) + rm $tmpfilex + +%} diff --git a/tpl/sitemap.tpl b/tpl/sitemap.tpl diff --git a/tpl/sitemap2.tpl b/tpl/sitemap2.tpl @@ -0,0 +1,71 @@ +<h1>Site map</h1> + +%{ +tmpfile=/tmp/werc_sitemap2_$pid.txt +tmpfilex=/tmp/werc_sitemap2_$pid.txt +saveddf=$dirfilter + +MON2NUM='s/Jan/01/; s/Feb/02/; s/Mar/03/; s/Apr/04/; s/May/05/; s/Jun/06/; s/Jul/07/; s/Aug/08/; s/Sep/09/; s/Oct/10/; s/Nov/11/; s/Dec/12/;' + +fn get_mdate { + t=`{mtime $1} + t=`{date $t(1) | sed -e $MON2NUM -e 's/ ([0-9]) / 0\1 /g'} # Make sure day of the month is two digits. + echo $t(6)^'-'^$t(2)^'-'^$t(3) +} + +fn listDir { + d=$1 + dirfilter=$saveddf + if(test -f $d/_werc/config) + . $d/_werc/config + + if(~ $#perm_redir_to 0) { + echo '<ul class="sitemap-list">' + + for(i in `{ls -dF $d^*/ $d^*.md $d^*.html $d^*.txt >[2]/dev/null | sed $dirfilter}) { + filename=`{get_file_title $i} + url=`{echo $i|sed 's!'$sitedir'!!; '$dirclean's!/index$!/!; '} + dirname=`{echo /$url|sed 's/[\-_]/ /g; s,.*/([^/]+)/?$,\1,'} + if(! ~ $#filename 0 && ! ~ $filename '') { + # filename=' — '$"filename + echo '<li><a href="'$url'">'^$"filename^'</a></li>' + } + if not { + echo '<li><a href="'$url'">'^$"dirname^'</a></li>' + } + echo $base_url^$url >> $tmpfile + echo '<url><loc>'$base_url^$url'</loc><lastmod>'^`{get_mdate $i}^'</lastmod></url>' >> $tmpfilex + if(test -d $i) + @{ listDir $i } + } + echo '</ul>' + } +} + + +fltr_cache listDir $sitedir/ + +if(test -s $tmpfile) { + mv $tmpfile $sitedir/sitemap.txt & +} +if not if(test -f $tmpfile) + rm $tmpfile + +if(test -s $tmpfilex) { + { + echo '<?xml version="1.0" encoding="UTF-8"?> +<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' + + cat $tmpfilex + rm $tmpfilex & + echo '</urlset>' + # TODO Enable automaic search engine update notification. + #hget 'http://google.com/ping?sitemap='^`{url_encode $base_url'/sitemap.gz'} > /dev/null + + } | gzip > $sitedir/sitemap.gz & + #} > $sitedir/sitemap.xml & +} +if not if(test -f $tmpfilex) + rm $tmpfilex + +%}