> #!/bin/sh

# Dieses verantwortungslose Script bastelt fuer faule Saecke wie mich
# mal eben ne Webseite aus nem Haufen haesslicher Fotos.
# Benutzung: einfach im Verzeichnis mit den Bildern starten.
# Viel Spass, Wuffel

#echo -e "\nEditier mich:\n" $0
#exit 23

################### Beginn Configsektion ########################

# WICHTIG!
# Welcher Kommentar kommt in die jpgs?
# Wenn du da nix anderes reinschreibst, steht mein Name in deinen Bildern!
# Bitte Schablone beachten, der Text darf nicht unendlich lang sein.
# export MUSTER='#################################################################'
#export EXIFTEXT=' '
export EXIFTEXT='Wolfgang Nowak Germany 26123 Oldenburg Donarstr.2 exiftag@i21k.de'
#export EXIFTEXT='Mr. Strange '




# Sollen die Vorschaubildchen immer neu berechnet werden?
OVERWRITE=0

# border Width von Frames festlegen
BW=0

# Die Farben für den Vorschauframe
COLORSET='text="#000000" bgcolor="#a00000"'

# Die Farbe für den "back"-Button
BACKBUTTON='text="#a0a000" bgcolor="#b00000"'

# Der Names des Unterverzeichnisses fuer die Vorschaubildchen

MKBDIR=.mkb3
[ -d $MKBDIR ] || mkdir $MKBDIR
# chmod 755 $MKBDIR || { echo -e '\n Permissionproblem, stopping now \n'; exit 23 }

################### Ende Configsektion ########################



# alte index.html mal besser mit Zeitstempel wegbunkern
[ -e index.html ] && cp index.html index.html.`date +%Y%m%d%H%M`

# Ne geistreiche Namensgebung für die Seite, entweder via Kommandozeile oder aus dem Verzeichnisnamen
# Bei -f sollen alte Vorschaubilder geloescht werden
# In $2 sollte der "Name" drin sein, sosnt aber auch in $1, falls kein -f erwünscht ist

if [ -n "$1" ] ; then {
if [ "$1" = "-f" ] ; then {
OVERWRITE=1
rm -f $MKBDIR/mini*png $MKBDIR/mini*jpg $MKBDIR/mini*PNG $MKBDIR/mini*JPG
[ -n "$2" ] && name="$2"
}
elif [ "$1" = "-h" ] ; then {
echo -e "Makes html-picturepages. -h=this help -- -f=force overwrite thumpnailpictures -- any other text becomes the title of the page\n"
exit 0
}

else {
name="$@"
}
fi
}
else {
name=`pwd |sed "s:^.*/::g"`
}

fi


# mkb3.css fertigbasteln

cat <<EOF > $MKBDIR/mkb3.css

body {
background-color: #a00000;
color: #000000;
}

a:link {
border-width:0px;
color: #000000;
line-height:150%;
text-decoration:none;
}

a:focus {
border-width:0px;
color: #a00000;
line-height:150%;
text-decoration:none;
}

a:hover {
border-width:0px;
color: #000000;
line-height:150%;
text-decoration:none;
}

a:visited {
border-width:0px;
color: #300000;
line-height:150%;
text-decoration:none;
}

a:active {
border-width:0px;
color: #000000;
line-height:150%;
text-decoration:none;
}




table {
border-collapse:collapse;
border-width:3px;
border-style:groove;
border-color:#a00000;
background-color: #906050;
color: #000000;
font-size:small;
font-weight:bold;
font-stretch:narrower;
line-height:150%;
table-layout:fixed;
}

img {
border-collapse:collapse;
border-width:3px;
border-style:groove;
border-color:#a00000;
text-decoration:none;

}


EOF

#######################################

# ein 2. css basteln für den Topframe
cat <<EOF > $MKBDIR/mkb3top.css

body {
background-color: #a00000;
color: #000000;
}

a:link { color: #000000; }
a:visited { color: #202020; }

table {
background-color: #a00000;
color: #000000;
font-size:small;
font-weight:bold;
line-height:105%;
}



EOF

##########################



# HTML-Header zusammenloeten, dabei den Seitentitel nicht vergessen
cat <<EOF >index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="n schraddeliges shellscript">
<meta name="author" content="strings /dev/urandom">
<title>$name</title>
<link rel="stylesheet" type="text/css" href="$MKBDIR/mkb3.css">
</head>
<frameset cols="200px,*" frameborder="0" >
<frame src="$MKBDIR/vorschau.html" name="Vorschau">
<frameset rows="20%,*" >
<frame src="$MKBDIR/readmemkb3.html" name="readme">
<frame src="$MKBDIR/leer.html" name="Bild">
<noframes>
Geht nicht?
Klixdu hier: <a href="$MKBDIR/vorschau.html">Top</a>
</noframes>
</frameset>
</frameset>
</html>
EOF

# Ende index.html

# Noch ne index.html - die ist für das mkb3-verzeichnis, damit da keiner
# directory-index missnutzen kann, wird er ein Verzeichnis hoeher geschickt
# HTML-Header zusammenloeten, dabei den Seitentitel nicht vergessen
cat <<EOF >$MKBDIR/index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="n schraddeliges shellscript">
<meta name="author" content="strings /dev/urandom">
<meta http-equiv="Refresh" content="5; URL=../index.html">
<title>$name</title>
<link rel="stylesheet" type="text/css" href="mkb3.css">
</head>
<body>
<h2>Uppsi, falscher Planet!</h2>
</body>
</html>
EOF

# Ende weiterleitende indexhtml im .mkb3-Verzeichnis

# Ein leerer Dummy-Frame als farbiger Platzhalter für die einzelnen Bilder
cat <<EOF >$MKBDIR/leer.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="n schraddeliges shellscript">
<meta name="author" content="strings /dev/urandom">
<title>$name</title>
<link rel="stylesheet" type="text/css" href="mkb3.css">
</head>
<body>
</body>
</html>

EOF

# Ende Dummyframe

# Der Topframe, falls vorhanden, wird der Code einer readme.html
# integriert
cat <<EOF >$MKBDIR/readmemkb3.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="n schraddeliges shellscript">
<meta name="author" content="strings /dev/urandom">
<title>$name</title>
<link rel="stylesheet" type="text/css" href="mkb3top.css">
</head>
<body>

EOF

# [ -e readme.html ] || echo -e "\nBilder nicht zum Verzehr geeignet!\n" >>$MKBDIR/readmemkb3.html
# [ -e readme.html ] && cat readme.html >>$MKBDIR/readmemkb3.html

# Eine eventuelle readme.html fix mit integrieren, sonst statt
# dessen ein bischen Unsinn zusammenschreiben
# und die Umlaute umbauen.
if [ -e readme.html ] ; then
cat readme.html >>$MKBDIR/readmemkb3.html
else cat << EOF |sed "s/ä/\&auml;/g;s/Ä/\&Auml;/g;s/ö/\&ouml;/g;s/Ö/\&Ouml;/g;s/ü/\&uuml;/g;s/Ü/\&uuml;/g;s/ß/\&szlig;/g;">>$MKBDIR/readmemkb3.html
<h2>$name</h2>
<h3>Diese Bilder sind nicht zum Verzehr geeignet!</h3>
<br>
EOF

fi


cat <<EOF >>$MKBDIR/readmemkb3.html

</body>
</html>

EOF

#Ende Topframe


############################################################
# Die Hauptarbeit ist die Vorschau
# Hier wird der linke Frame fuer die Minibilder gebaut
############################################################

cat <<EOF >$MKBDIR/vorschau.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="n schraddeliges shellscript">
<meta name="author" content="strings /dev/urandom">
<title>$name</title>
<link rel="stylesheet" type="text/css" href="mkb3.css">
</head>
<body>
<table width="50%" border=3 summary="pictureoverview" >
<tr><td>
<a href="../../" target="_top">Zur&uuml;ck</a>
</td></tr></table>

<br>
EOF

###################################################
# Der Source dieses Scripts wird mitgeliefert
# Include source in mkb3.html
###################################################
cat <<EOF >$MKBDIR/mkb3.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="n schraddeliges shellscript">
<meta name="author" content="strings /dev/urandom">
<title>$name</title>
</head>
<body style="background-color:#A00000; color:#000020;">

EOF


echo -e '<table border=0 summary="source of this script" ><tr><td style="font-size:0.6em;"> >' >>$MKBDIR/mkb3.html
sed 's/&/\&amp;/g;;s/</\&lt;/g;s/>/\&gt;/g;s/$/<br>/g' $0>>$MKBDIR/mkb3.html ;echo '</td></tr></table></body></html>' >>$MKBDIR/mkb3.html






# Die Tabelle für die Bilder beginnen
cat << EOF >>$MKBDIR/vorschau.html

<table summary="pictures" border=3 width="175px">
<tr>
EOF

# Alle .jpg und alle .png als Miniversion und als mittelgrosse Version ablegen
# und in der Tabelle darstellen und verlinken.

SPALTE=0
for BILD in `ls *jpg *png *PNG *JPG 2>/dev/null | grep -v "^mini"`
do
if [ -e $BILD ] ; then
{

# Kommentare in Schleifen sind boese
# convert gehoert zur imagemagick-Suite.

[ -e $MKBDIR/mini.$BILD ] || {

# wenn wir hier landen, gibt's noch keine Minibilder, also hat wohl noch keine
# Verarbeitung stattgefunden
# Ergo rotieren wir die Bilder in die richtige Richtung, einen
# dicken Dank an Gerd Knorr, dessen exiftran die eigentliche Arbeit hier macht
# Wichtig: PNG kann keine exiftags

exiftran -a -i $BILD
echo $BILD |grep -i "jpg$" && exif -t 0x013b --ifd="EXIF" --set-value="$EXIFTEXT" $BILD
[ -e $BILD.modified.jpeg ] && mv $BILD.modified.jpeg $BILD
convert -size 160x128 $BILD -resize 160x128 +profile "*" $MKBDIR/mini.$BILD
}
[ -e $MKBDIR/mini.640x480.$BILD ] || convert -quality 90 -size 640x480 $BILD -resize 640x480 +profile "*" $MKBDIR/mini.640x480.$BILD




# Die Konvertierung ist jetzt durch, es werden die einzelnen Vorschaubilder
# in den Vorschauframe eingebastelt. Hier gibt es noch deutlichen
# Verbesserungsbedarf
BILDNAME=$(echo $BILD|sed "s:.....................:& :g")
echo '<td >'$BILDNAME'</td></tr><tr><td><a href="'mini.640x480.$BILD.html'" target="Bild"><img src="'mini.$BILD'" alt="'$MKBDIR/mini.640x480.$BILD'" ><br>'Max. 640x480'</a>'>>$MKBDIR/vorschau.html
echo '<br><a href="'$BILD.html'" target="Bild">'Original'</a></td>' >>$MKBDIR/vorschau.html
echo '<tr><td style="background-color:#a00000;"><a href="../../" target="_top">Zur&uuml;ck</a></td></tr>' >>$MKBDIR/vorschau.html




# Die dummy-datei leer.html wird als Muster fuer die Ansichtsseite kopiert
# Jedes Bild bekommt eine eigene .html mit einem Image-Tag
# Das natuerlich nur, wenn die Datei noch nicht existiert, wir wollen rsync ja nicht aergern.

[ -e $MKBDIR/mini.640x480.$BILD.html ] || {
cat <<EOF >$MKBDIR/mini.640x480.$BILD.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="n schraddeliges shellscript">
<meta name="author" content="strings /dev/urandom">
<title>$name</title>
<link rel="stylesheet" type="text/css" href="mkb3.css">
</head>
<body>

EOF

echo -e "<img src=\"mini.640x480.$BILD\" alt=\"*\">\n</body></html>\n" >> $MKBDIR/mini.640x480.$BILD.html
}

[ -e $MKBDIR/$BILD.html ] || {


cat <<EOF >$MKBDIR/$BILD.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="n schraddeliges shellscript">
<meta name="author" content="strings /dev/urandom">
<title>$name</title>
<link rel="stylesheet" type="text/css" href="mkb3.css">
</head>
<body>

EOF

echo -e "<img src=\"../$BILD\" alt=\"*\" >\n</body></html>\n" >> $MKBDIR/$BILD.html

}


# Fuer Wahnsinnige besteht bei [ $SPALTE -eq 1 ] die Option, den
# Vorschauframe mehrspaltig zu mache, das ist aber wirklich ekelig.
# Einfach statt 1 die Zahl der gewuenschten Spalten hinkrakeln und danach
# dann genuesslich die Biotonne auschlecken

let SPALTE=$SPALTE+1

[ $SPALTE -eq 1 ] &&
{ echo '<tr>' >> $MKBDIR/vorschau.html
let SPALTE=0
}
}
fi

done

let SPALTE=0
echo -e '<td width="70%" style="background-color: #407040; color: #000000;">' >>$MKBDIR/vorschau.html
echo "<a target="Bild" href=\"mkb3.html\">Dieses<br>Script<br>erzeugte<br>diese<br>Webseite</a>" >> $MKBDIR/vorschau.html
echo -e '</td></tr></table>\n' >> $MKBDIR/vorschau.html

# Ende Vorschauframe


# Feierabend, Deckel drauf und gut.
echo -e '</body>\n</html>' >>$MKBDIR/vorschau.html