#!/bin/ksh
# Script per a generar les capgaleres per a fitxers HTML o XHTML
# sense haver de posar-les a ma o fer copy-paste
# (c) Arnau Fuentes 2004
#
# TO-DO:
# - afegir la possibilitat de lligar la pagina a un full d'estil CSS
# - afegir opcions d'accessabilitat, HandheldFriendly, PalmComputingPlatform, Favicon i demes pijades
# - afegir enllag al validador w3c


#funcio per a crear el menu principal
menu()
{
clear
echo "Script per crear plantilles per fer pagines HTML i XHTML"
echo ""
echo "1- HTML Transitional"
echo "2- HTML Frameset (pagines amb marcs)"
echo "3- HTML Estricte"
echo "4- XHTML Transitional"
echo "5- XTHML Frameset (pagines amb marcs)"
echo "6- XHTML Estricte"
echo "7- Sortir"
echo ""
echo ""
read DOCTYPE?"Quin tipus de pàgina voleu fer? " 

case $DOCTYPE in
1 ) DOCTYPE="HTML Transitional"
    html-trans;;

2 ) DOCTYPE="HTML Frameset"
    html-frames;;

3 ) DOCTYPE="HTML Estricte"
    html-strict;;

4 ) DOCTYPE="XHTML Transitional"
    xhtml-trans;;

5 ) DOCTYPE="XHTML Frameset"
    xhtml-frames;;

6 ) DOCTYPE="XHTML Estricte"
    xhtml-strict;;

7 ) echo "Adeu..."
    sleep 2
    exit;;
esac   
}

#defineix la capgalera i el tipus de document
html-trans()
{
HEADER='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">'
}

html-frames()
{
HEADER='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
   "http://www.w3.org/TR/html4/frameset.dtd">'
}

html-strict()
{
HEADER='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">'
}

xhtml-trans()
{
HEADER='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'
}

xhtml-frames()
{
HEADER='<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">'
}

xhtml-strict()
{
HEADER='<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'
}
#aqui acaba la definicio de les capgaleres


#demanem les opcions que tindra el fitxer: nom, titol, idioma i charset
opcions()
{
clear
echo "		Heu triat crear un document \"$DOCTYPE\""
echo ""
read FITXER?'Com voleu que es digui el fitxer? (ex:index.html) '  #escull el nom del fitxer
read TITLE?"Quin serà el títol de la pàgina? "   #escull el titol de la pagina
echo "Quin serà l'idioma usat a la pàgina?"   #escull l'idioma del document
echo "1- Català"
echo "2- Castellà"
echo "3- Anglès"
echo ""
read LANG?">"    #ara escull l'idioma per a posar a "lang=$LANG"
case $LANG in
  1) IDIOMA="catala"
     LANG="ca";;
  2) IDIOMA="castella"
     LANG="es";;
  3) IDIOMA="angles"
     LANG="en";;
esac

echo "Quin joc de caracters tindrà la pàgina?"    #escull el charset (utf,iso-8859-*,ascii)"
echo "(per català o castellà es recomana iso-8859-15) "
echo "1- ASCII"
echo "2- Unicode"
echo "3- Europeu Occidental"
echo "4- Europeu Occidental amb suport per a l'euro"
read CHARSET?">"
case $CHARSET in
  1) CHARSET="us-ascii";;

  2) CHARSET="utf-8";;

  3) CHARSET="iso-8859-1";;

  4) CHARSET="iso-8859-15";;

esac
}


#funcio que mostra les caracteristiques del fitxer que volem crear i pregunta si es correcte
pregunta()
{
clear
echo "		Heu triat crear un document \"$DOCTYPE\""
echo ""
echo "El fitxer es dira \"$FITXER\", la pàgina es dirà \"$TITLE\", estarà escrita en \"$IDIOMA\"
i el joc de caràcters serà \"$CHARSET\""
read CREAR?"Es correcte? (s/n)"
case $CREAR in 
  s) creadoc;;

  n) neteja-var;;   #buida les variables i torna a començar

esac
}


#crea el fitxer amb tots els parametres
creadoc()
{
   echo "Creant \"$FITXER\"..."
   touch $FITXER
   sleep 2
   echo "Afegint capçaleres..."
   sleep 2
   echo "$HEADER" >> $FITXER
   printf "<html lang=\"$LANG\" xmlns=\"http://www.w3.org/1999/xhtml\"> \n
    <head> \n 
    <title>$TITLE</title> \n
    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=$CHARSET\" />" >> $FITXER
   echo "Fitxer \"$FITXER\" creat..."
   echo "Ara ja podeu editar-lo amb el vostre editor preferit i posar-hi el contingut."
   sleep 2
   clear
   menu
}


#neteja les variables i torna a demanar les opcions
neteja-var()
{
clear
echo "Netejant variables..."
   FITXER=""
   LANG=""
   CHARSET=""   
   TITLE=""
   IDIOMA=""
   sleep 2
   opcions
}

menu
opcions
pregunta
exit