#!/bin/ksh
#
# www-index
#
# Erstellen eines HTML-Seite (index.html) mit einer Übersicht von Bilddateien.
# Eine Datei "README" wird am Anfang der Seite eingefügt.
# Die (Vorschau)-Bilder werden im Unterverzeichnis ".index" angelegt,
# der Index im akutellen Verzeichnis.
#
# Beispiel:
#   www-index            indiziert akutelles Verzeichnis.
#   www-index *.ps       indiziert alle PostScript-Files
#   www-index *.ps *.tif indiziert alle PostScript-Files und TIF-Files
#   www-index *.eps      indiziert alle EPS-Files
#
#
# 12.05.1999, Winfried.Beer@dlr.de; feel free to use it
#


indexdir=.index
#index=$indexdir/index.html
index=index.html
iconsurl="http://www.pa.op.dlr.de/icons"

debug=yes

if [ ! -d $indexdir ]; then
  mkdir $indexdir
fi
pwd=`pwd`

# -- Test, ob index.html ueberschrieben werden darf (Stichwort in erste Zeile).
#    (Grund: Nicht versehentlich handgemachte index.html ueberschreiben.)
if [ -r $index ]; then
  head -1 $index | grep www-index >/dev/null 
  if [ ! $? = 0 ]; then
     echo "Error: I don't dare to change your old $index."
     echo "If you're sure, remove it by hand and start `basename $0` again."
     exit 1 
  fi
  #mv $index .index.html.bak
fi



if [ "$*" = "" ]; then
  files=`/bin/ls | grep -v '^README$' | grep -v '^index.html$'` 
else
  #files=`/bin/ls -d $* | grep -v '^README$'`
  files=`echo " $* " | sed -e 's/ README / /'`
fi

#dirs=`find . -follow -type d | sed -e 's%^./%%' | grep -v $idir/ | grep -v '^\.' | grep -v '/\.' | sort`


# -------------------------------------------

# --- HTML-Kopf
indextitle="Index of "`echo $pwd | sed -e 's%/home/http/docs%%'`
#indextitle="Index of "`echo $pwd`
cat >$index <<EOF
<html><!-- www-index -->
<head>
<title>$indextitle</title>
</head>
<body bgcolor=#cccccc text=#000000>
<h1>$indextitle</h1>
EOF


# --- README-Datei am Anfang
if [ -r "README" ]; then
  echo "<pre>" >>$index
  cat README >>$index
  echo "</pre><hr>" >>$index
fi


# --- Directories am Anfang

# - uebergeordnetes Verzeichnis
echo "<a href=\"..\">" >> $index
echo "<img align=absbottom border=0 src=\"$iconsurl/back.gif\">" >> $index
echo "&nbsp;Parent Directory</a>" >> $index
echo "<br>" >> $index

i=0
for file in $files ; do
  if [ -d "$file" ]; then # --- Directory ---
    i=`expr $i + 1`
    echo "working with directory $file"
    echo "<a href=\"$file\">" >> $index
    echo "<img align=absbottom border=0 src=\"$iconsurl/folder.gif\">" >> $index
    echo "&nbsp;$file</a>" >> $index
    echo "<br>" >> $index
  fi
done
echo "<hr>" >>$index


# --- ... und nun die Dateien
i=1
for file in $files ; do
  if [ ! -d "$file" ]; then # --- Datei ---
    echo "working with file $file"

    # -- Ermittlung der Dateinamen
    base=$file
    suff=`echo $base | grep '^.*\..*$' | sed -e 's/^.*\(\.[^\.]*\)$/\1/'`
    base=`echo $base | sed -e 's/\.[^\.]*$//'`
    base=`echo $base | sed -e 's%/%_%g'`

    picsgeom="150x100"
    picmgeom="800x600"
    #piclgeom="1024x768"
    piclgeom="1120x864"

    # komprimiert mit gzip?
    suffcpr=""
    zcat="cat"
    if [ "$suff" = ".gz" ]; then
      suffcpr=$suff
      zcat="gunzip -c"
      suff=`echo $base | grep '^.*\..*$' | sed -e 's/^.*\(\.[^\.]*\)$/\1/'`
      base=`echo $base | sed -e 's/\.[^\.]*$//'`
    fi

    #echo $base, $suff, $suffcpr

    picjpgs=$base"-s.jpg"
    picjpgm=$base"-m.jpg"
    picjpgl=$base"-l.jpg"

    picgifs=$base"-s.gif"
    picgifm=$base"-m.gif"
    picgifl=$base"-l.gif"

    info=`echo $file | perl -n -e '
      chomp($_); 
      ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks)=stat($_);
      ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =localtime($mtime);
      $str=substr "                    ",length($_);
      $sizeext="KB";
      $s=$size/1024;
      if ($s > 900) {$s=$s/1024; $sizeext="MB";}
      printf "%.1f %-2s\n", $s,$sizeext;'`
#      printf "%s %02d-%02d-%04d %02d:%02d %7.1f KB\n", $str, $mday,$mon,1900+$year,$hour,$min, $size/1024;'`


    if [ "$suff" = ".tif" -o "$suff" = ".gif" \
      -o  "$suff" = ".jpg" ]; then
    #--- Rasterpic -----------------------------------------

      info="$info, "`identify -verbose $file 2>&- | grep '^ *geometry: ' | sed -e 's/^ *geometry: *//'`

      # Bild erzeugen; Test auf Groesse (gif vs jpg)
      convert -geom $picmgeom $file $indexdir/$picjpgm
      convert -geom $picmgeom $file $indexdir/$picgifm
      picjpglen=`ls -l $indexdir/$picjpgm | awk '{print $5}'`
      picgiflen=`ls -l $indexdir/$picgifm | awk '{print $5}'`
      if [ $picjpglen -gt $picgiflen ]; then
	rm $indexdir/$picjpgm
        pics=$picgifs
        picm=$picgifm
        picl=$picgifl
      else
	rm $indexdir/$picgifm
        pics=$picjpgs
        picm=$picjpgm
        picl=$picjpgl
      fi
	
      # andere Bildgroessen erzeugen
      convert -geom $picsgeom $file $indexdir/$pics
      #convert -geom $piclgeom $file $indexdir/$picl
      convert -geom $piclgeom -crop 0x0+2+2 $file $indexdir/$picl #WB-l

      echo "<a href=\"$file\">" >> $index
      echo "<img align=absbottom border=0 src=\"$iconsurl/image2.gif\">" >> $index
      echo "&nbsp;$file</a> ($info)" >> $index
      echo "<br><img src=\"$iconsurl/blank.gif\">&nbsp;" >>$index
#      echo "<a href=\"$indexdir/$picm\"><img src=\"$indexdir/$pics\" border=0 alt=\"$base\"></a>" >> $index
      echo "<a href=\"$indexdir/$picm\"><img src=\"$indexdir/$pics\" border=0></a>" >> $index


    elif [ "$suff" = ".eps" -o "$suff" = ".epsi" ]; then 
    #--- EPS -----------------------------------------------
      
      # Bild erzeugen; Test auf Groesse (gif vs jpg)
      converteps -geom $picmgeom $file $indexdir/$picjpgm
      converteps -geom $picmgeom $file $indexdir/$picgifm
      picjpglen=`ls -l $indexdir/$picjpgm | awk '{print $5}'`
      picgiflen=`ls -l $indexdir/$picgifm | awk '{print $5}'`
      if [ $picjpglen -gt $picgiflen ]; then
	rm $indexdir/$picjpgm
        pics=$picgifs
        picm=$picgifm
        picl=$picgifl
      else
	rm $indexdir/$picgifm
        pics=$picjpgs
        picm=$picjpgm
        picl=$picjpgl
      fi
	
      # andere Bildgroessen erzeugen
      converteps -geom $picsgeom $file $indexdir/$pics
      #converteps -geom $piclgeom $file $indexdir/$picl
      converteps -geom $piclgeom -crop 0x0+2+2 $file $indexdir/$picl #WB-l

      echo "<a href=\"$file\">" >> $index
      echo "<img align=absbottom border=0 src=\"$iconsurl/image3.gif\">" >> $index
      echo "&nbsp;$file</a> ($info)" >> $index
      echo "<br><img src=\"$iconsurl/blank.gif\">&nbsp;" >>$index
#      echo "<a href=\"$indexdir/$picm\"><img src=\"$indexdir/$pics\" border=0 alt=\"$base\"></a>" >> $index
      echo "<a href=\"$indexdir/$picm\"><img src=\"$indexdir/$pics\" border=0></a>" >> $index


    elif [ "$suff" = ".ps" ]; then 
    #--- PostScript -------------------------------------

      # Bilder etwas groesser
      picsgeom="200x200"
      #picmgeom="800x600"
      #piclgeom="1000x700"

      # bei PostScript immer gif
      pics="$picgifs.%03d"
      picm="$picgifm.%03d"
      picl="$picgifl.%03d"
	
      # Bilder erzeugen
      converteps -geom $picmgeom $file $indexdir/$picm
      if [ -r $indexdir/$picm ]; then
	mv $indexdir/$picm $indexdir/$picgifm.000
      fi
      converteps -geom $picsgeom $file $indexdir/$pics
      if [ -r $indexdir/$pics ]; then
	mv $indexdir/$pics $indexdir/$picgifs.000
      fi
      #converteps -geom $piclgeom $file $indexdir/$picl
      converteps -geom $piclgeom -crop 0x0+2+2 $file $indexdir/$picl #WB-l
      if [ -r $indexdir/$picl ]; then
	mv $indexdir/$picl $indexdir/$picgifl.000
      fi

      echo "<a href=\"$file\">" >> $index
      echo "<img align=absbottom border=0 src=\"$iconsurl/ps.gif\">" >> $index
      echo "&nbsp;$file</a> ($info)" >> $index
      #echo "<br><img src=\"$iconsurl/blank.gif\">&nbsp;" >>$index
      echo "<br>" >>$index
      for f in $indexdir/$picgifs.* ; do
        ko=`echo $f | grep '^.*\..*$' | sed -e 's/^.*\.\([^\.]*\)$/\1/'`
        k=`echo $ko | awk '{printf "%03d\n", $1+1}'` # Bilder ab eins nummerieren
	if [ "$debug" = "yes"  ]; then
	  echo "mv $indexdir/$base-s.gif.$ko $indexdir/$base-$k-s.gif"
	  echo "mv $indexdir/$base-m.gif.$ko $indexdir/$base-$k-m.gif"
	  echo "mv $indexdir/$base-l.gif.$ko $indexdir/$base-$k-l.gif"
	fi
	mv $indexdir/$base-s.gif.$ko $indexdir/$base-$k-s.gif
	mv $indexdir/$base-m.gif.$ko $indexdir/$base-$k-m.gif
	mv $indexdir/$base-l.gif.$ko $indexdir/$base-$k-l.gif
#        echo "<a href=\"$indexdir/$base-$k-m.gif\"><img src=\"$indexdir/$base-$k-s.gif\" border=0 alt=\"$base $k\"></a>" >> $index
        echo "<a href=\"$indexdir/$base-$k-m.gif\"><img src=\"$indexdir/$base-$k-s.gif\" border=0></a>" >> $index
      done


    elif [ "$suff" = ".pdf" ]; then 
    #--- PDF --------------------------------------------
      echo "<a href=\"$file\">" >> $index
      echo "<img align=absbottom border=0 src=\"$iconsurl/pdf.gif\">" >> $index
      echo "&nbsp;$file</a> ($info)" >> $index

    else
    #--- unknown type --------------------------------------
      echo "<a href=\"$file\">" >> $index
      echo "<img align=absbottom border=0 src=\"$iconsurl/unknown.gif\">" >> $index
      echo "&nbsp;$file</a> ($info)" >> $index
    fi


  # -- Ende Eintrag im Index
  echo "<br>" >>$index

  fi
done


# --- HTML-Schluss
cat >>$index <<EOF
</body>
</html>
EOF


exit


