#!/usr/bin/env bash
# plik receptury: mkalbum
# mkalbum - utworzenie albumu w formacie HTML ze zbioru plików zdjęć.
# ver. 0.2
#
# Album stanowi katalog z plikami stron HTML.
# Katalog ten zostanie utworzony jako podaktalog katalogu bieżącego.
#
# Strona albumu jest dokumentem HTML odpowiedzialnym za wyświetlenie zdjęcia.
# Dołącza do niego tytuł oraz odsyłacze do pierwszego,
# poprzedniego, następnego oraz ostatniego zdjęcia.
#
# ERROUT
ERROUT()
{
    printf "%b" "$@"
} >&2

#
# USAGE
USAGE()
{
    ERROUT "użycie: %s <nowy_katalog>\n" $(basename $0)
}

# EMIT(thisph, startph, prevph, nextph, lastph)
EMIT()
{
  THISPH="../$1"
  STRTPH="${2%.*}.html"
  PREVPH="${3%.*}.html"
  NEXTPH="${4%.*}.html"
  LASTPH="${5%.*}.html"
  if [ -z "$3" ]
  then
      PREVLINE='<TD> Poprzednie </TD>'
  else
      PREVLINE='<TD> <A HREF="'$PREVPH'"> Poprzednie </A> </TD>'
  fi
  if [ -z "$4" ]
  then
      NEXTLINE='<TD> Następne </TD>'
  else
      NEXTLINE='<TD> <A HREF="'$NEXTPH'"> Następne </A> </TD>'
  fi
cat <<EOF
<HTML>
<HEAD><TITLE>$THISPH</TITLE></HEAD>
<BODY>
  <H2>$THISPH</H2>
<TABLE WIDTH="40%">
  <TR>
  <TD> <A HREF="$STRTPH"> Pierwsze </A> </TD>
  $PREVLINE
  $NEXTLINE
  <TD> <A HREF="$LASTPH"> Ostatnie </A> </TD>
  </TR>
</TABLE>
  <IMG SRC="$THISPH" alt="$THISPH"
   BORDER="1" VSPACE="4" HSPACE="4"
   WIDTH="800" HEIGHT="600"/>
</BODY>
</HTML>
EOF
}

if (( $# != 1 ))
then
    USAGE
    exit -1
fi
ALBUM="$1"
if [ -d "${ALBUM}" ]
then
    ERROUT "Katalog [%s] już istnieje.\n" ${ALBUM}
    USAGE
    exit -2
else
    mkdir "$ALBUM"
fi
cd "$ALBUM"

PREV=""
FIRST=""
LAST="last"

while read PHOTO
do
    # przygotowanie do wygenerowania strony
    if [ -z "${CURRENT}" ]
    then
        CURRENT="$PHOTO"
        FIRST="$PHOTO"
        continue
    fi

    PHILE=$(basename "${CURRENT}")
    EMIT "$CURRENT" "$FIRST" "$PREV" "$PHOTO" "$LAST" > "${PHILE%.*}.html"

    # przygotowanie kolejnej iteracji
    PREV="$CURRENT"
    CURRENT="$PHOTO"

done

PHILE=$(basename ${CURRENT})
EMIT "$CURRENT" "$FIRST" "$PREV"   ""   "$LAST" > "${PHILE%.*}.html"

# utworzenie dowiązania symbolicznego do ostatniego zdjęcia
ln -s "${PHILE%.*}.html" ./last.html

# utworzenie dowiązania symbolicznego dla pliku indeksu
ln -s "${FIRST%.*}.html" ./index.html

