diff options
Diffstat (limited to '')
-rwxr-xr-x | prog/skovikanje/komentar.sh | 102 |
1 files changed, 75 insertions, 27 deletions
diff --git a/prog/skovikanje/komentar.sh b/prog/skovikanje/komentar.sh index a007822..8640a19 100755 --- a/prog/skovikanje/komentar.sh +++ b/prog/skovikanje/komentar.sh @@ -1,13 +1,26 @@ #!/bin/bash set -xeuo pipefail function besedilo () { # <tip -- html> <datoteka> <zaupanje - 0 za html escaping, 1 brez html escapinga> <nesting level> + vrstica=1 seznam=1 + naredilodstavek=0 echo "<div class=besedilo>" tail -n+2 $2 | while read -r l do + if grep "^$" <<<"$l" > /dev/null + then + echo "<p>" + naredilodstavek=1 + continue + fi navadno=1 - if grep ^!http <<<"$l" > /dev/null && grep -v \' <<<"$l" > /dev/null + if grep ^! <<<"$l" > /dev/null && grep -v \' <<<"$l" > /dev/null then + if [ ! $vrstica -eq 1 ] + then + [ $naredilodstavek -eq 0 ] && echo "<br>" + fi + naredilodstavek=0 echo "<img style=max-width:100% src='`sed -e s/!// <<<"$l"`' />" navadno=0 fi @@ -18,18 +31,19 @@ function besedilo () { # <tip -- html> <datoteka> <zaupanje - 0 za html escaping seznam=2 navadno=0 fi - zelena=0 - if grep '^>' <<<"$l" > /dev/null + dodajnakonec="" + dodajnazayetek="" + if grep '^>[^>]' <<<"$l" > /dev/null then - echo "<span style=color:green>" - zelena=1 + dodajnazayetek="<span style=color:green>" + dodajnakonec="</span>" fi [ $seznam -eq 1 ] && echo "</ul>" if [ $navadno -eq 1 ] then if [ $3 -eq 0 ] then - tekst=`sed -e 's/</</g' <<<"$l"` + tekst=`sed -e 's/</\</g' <<<"$l"` else tekst=$l fi @@ -39,7 +53,7 @@ function besedilo () { # <tip -- html> <datoteka> <zaupanje - 0 za html escaping fi if [ $4 -gt 0 ] then - for you in `grep -Eo ">>[A-Za-z0-9+-]{8}" <<<"$l"` + for you in `grep -Eo ">>[A-Za-z0-9+-]{4}" <<<"$l"` do stil="border:1px solid green" if [ $(($4%2)) -eq 0 ] @@ -48,59 +62,86 @@ function besedilo () { # <tip -- html> <datoteka> <zaupanje - 0 za html escaping fi koment=`komentar $1 $(cut -d\> -f3 <<<$you) $(($4-1))` echo "<details class=komentar style='$stil'><summary>`head -n1 <<<$koment`</summary>`tail -n+2 <<<$koment`</details>" - + naredilodstavek=1 done fi - sed -e 's,\(http[s]*://[A-Za-z0-9._~:/?#@!$&()*+,;=-]*\),<a href="\1">\1</a>,g' <<<"$tekst" - echo "<br>" - fi - if [ $zelena -eq 1 ] - then - echo "</span>" + if [ ! $vrstica -eq 1 ] + then + [ $naredilodstavek -eq 0 ] && echo "<br>" + fi + naredilodstavek=0 + echo $dodajnazayetek + urlregex="[A-Za-z0-9._~%:/?#@!$&()*+,;=-]" + sed -Ee "s,http([s]*)://([w.]*)($urlregex*),<a class=raw href='http\1://\2\3'>\3</a>,g" <<<"$tekst" + echo "$dodajnakonec" fi + vrstica=$(($vrstica+1)) done echo "</div>" } function komentar () { # tip id nesting-level - stat komentarji/$2 > /dev/null || { echo komentar ne $3 ne obstaja.; return; } - echo -n "<a onclick=citiraj('$2')><code>$2</code></a> <b class=avtor>$(head -n1 komentarji/$2 | cut -f2 | cut -d@ -f1 | sed -e 's/</</g')</b> " - echo "dne <span class=datum>`date --date @$(stat --format %W komentarji/$2)`</span> <a href=//z.4a.si/skovikanje/komentar.php?koga=$2 target=_blank>uredi</a> <a href=/skovikanje/skovik/$(head -n1 komentarji/$2 | cut -f1).html>na</a>" + stat komentarji/$2 > /dev/null || { echo komentar $2 ne obstaja.; return; } + echo -n "<i><a href=# onclick=citiraj('$2')><code>$2</code></a> <b class=avtor>$(head -n1 komentarji/$2 | cut -f2 | cut -d@ -f1 | sed -e 's/</</g')</b> " + echo "dne <span class=datum>`date --date @$(stat --format %W komentarji/$2)`</span> <a href=//z.4a.si/skovikanje/komentar.php?koga=$2 target=_blank>uredi</a> <a href=/skovikanje/skovik/$(head -n1 komentarji/$2 | cut -f1).html>na</a></i>" besedilo $1 komentarji/$2 0 $3 } if [ $1 = komentar ] then komentar $2 $3 5 fi +function hsc () { + sed -e 's/</\</g' -e "s/'/\'/g" -e 's/"/\"/g' +} if [ $1 = objava ] then + metadesc=`tail -n+2 objave/$3 | head -n3 | hsc` + if [ `wc -l < objave/$3` -gt 4 ] + then + metadesc="$metadesc ..." + fi + naslov=`head -n1 objave/$3 | cut -f1 | hsc` + spisal=`head -n1 objave/$3 | cut -f2` + if [ $2 = rss ] + then + echo "<guid isPermaLink='false'>$3</guid><title>$naslov</title><description>$metadesc</description><pubDate>`date --rfc-email --date $spisal`</pubDate><link>$RSS_BASEURL$3.html</link>" + exit + fi echo "<meta name=referrer content=unsafe-url />" if [ $4 -eq 1 ] then - echo "<title>`head -n1 objave/$3 | cut -f1`</title>" + echo "<title>$naslov :: skovikanje</title>" + echo "<meta property=og:title content='$naslov :: skovik' />" + echo "<meta property=og:description content='$metadesc' />" + if grep "^!" objave/$3 > /dev/null + then + echo "<meta property=og:image content='`grep "^!" objave/$3 | head -n1 | sed 's/!//'`' />" + fi echo "<h2><a href=..><<< nazaj</a></h2>" + fi - echo "<script>function citiraj(slug) {odgovor.hidden=false;besedilo.value+='>>'+slug+'\n';} </script>" - echo "<h1 class=naslov>`head -n1 objave/$3 | cut -f1`</h1>" - echo "<p>spisal <span class=spisal>`head -n1 objave/$3 | cut -f2`</span>" + echo "<script>function citiraj(slug) {odgovordetails.open=true;odgovor.hidden=false;besedilo.value+='>>'+slug+'\n';}</script>" + echo "<h1 class=naslov>$naslov</h1>" + echo "<p><b><i><u>spisal <span class=spisal>$spisal</span>" if [ ! `head -n1 objave/$3 | cut -f2` = `date --iso-8601 --date @$(stat --format %Y objave/$3)` ] then echo "| nazadnje spremenil <span class=spremenil>`date --iso-8601 --date @$(stat --format %Y objave/$3)`</span>" fi - echo "</p>" + echo "</u></i></b></p>" if [ $4 -eq 1 ] then besedilo $2 objave/$3 1 5 echo "<hr><h2>komentarji</h2>" - komentiraj="<input id=komentiraj hidden type=button onclick='document.getElementById("odgovor").hidden=false' value=komentiraj />" + komentiraj="<input id=komentiraj1 hidden type=button onclick='document.getElementById("odgovor").hidden=false' value=komentiraj />" echo $komentiraj for file in `ls --reverse --sort=time --time=birth komentarji` do grep "^$3 " komentarji/$file > /dev/null && { echo "<div class=komentar style='border:1px solid red'>"; komentar $1 $file 5; echo "</div>"; } done - echo "<div id=odgovor>`curl --fail-with-body http://z.4a.si/skovikanje/komentar.php?action=//z.4a.si./skovikanje/komentar.php%3Fna=$3%26tip=objava%26ref=REPLACEME | sed s/REPLACEME/HTTP_REFERER/`</div>" - echo $komentiraj - echo "<script>odgovor.style='background:gray;position:fixed;right:0;bottom:0';odgovor.hidden=true;komentiraj.hidden=false;</script>" + echo "<div id=odgovor><details open id=odgovordetails><summary>pokaži/skrij</summary>`curl --fail-with-body http://z.4a.si/skovikanje/komentar.php?action=//z.4a.si/skovikanje/komentar.php%3Fna=$3%26tip=objava%26ref=REPLACEME | sed s/REPLACEME/HTTP_REFERER/`</details></div>" + sed s/komentiraj1/komentiraj2/ <<<$komentiraj + echo "<script>odgovor.style='background:gray;position:fixed;right:0;bottom:0';odgovor.hidden=true;komentiraj1.hidden=false;komentiraj2.hidden=false</script>" + echo "<br><br><br><br>" else besedilo $2 <(head -n4 objave/$3) 1 5 komentarjev=0 @@ -108,6 +149,13 @@ then do grep "^$3 " komentarji/$file > /dev/null && komentarjev=$(($komentarjev+1)) done - echo "<h4><a href=skovik/$3.html>Klikni sem za ogled celotnega besedila, komentiranje in branje komentarjev ($komentarjev).</a></h4>" + vey="" + tripiyje="" + if [ `wc -l < objave/$3` -gt 5 ] + then + vey=" ogled celotnega besedila," + tripiyje="..." + fi + echo "$tripiyje<h4><a href=skovik/$3.html>Klikni sem za$vey komentiranje in branje komentarjev ($komentarjev).</a></h4>" fi fi |