zur Übersicht

nächste Seite


Programmfenster für Web-Seiten (Teil 2)

Die Ausführungen der vorherigen Seite (Teil 1) werden hier weitergeführt.

In dem Ordner ~/Bla/Web soll zuerst noch die Startdatei für das Projekt
index.htm
erzeugt werden. Es wird die Angabe des Zeichensatzes notiert und man kann auch eine Identität hinterlegen, denn bei Veröffentlichung einer Internet-Präsenz sind auch rechtliche Vorgaben zu beachten und man muß sich über das Impressum informieren.

echo "<html> <head> <meta charset="utf-8"> <title> Startseite für das Projekt</title> </head> <body> <p align="center">Mein Name<br>Meine Straße<br>Mein Wohnort<br><br></body> </html>" > ~/Bla/Web/index.htm

Es sollen natürlich weitere Webseiten hinzugefügt werden. Dazu wird die Anzahl der htm-Dateien in dem Ordner ~/Bla/Web/seiten bestimmt

szANZ=$(find ~/Bla/Web/seiten/ -maxdepth 1 -type f -name "*.htm" | wc -l); echo $szANZ
1

Die Anzahl der htm-Dateien, sowie plus 1 für die nächste neue Datei, sowie plus 2 für die übernächste Datei wird dann in dreistellige Zahlen verwandelt

aALT=$(echo "scale=3; $szANZ/1000" | bc -ql | sed 's|\.||g'); echo $aALT
001

aNEU=$(echo "scale=3; ($szANZ+1)/1000" | bc -ql | sed 's|\.||g'); echo $aNEU
002

aNEUU=$(echo "scale=3; ($szANZ+2)/1000" | bc -ql | sed 's|\.||g'); echo $aNEUU
003

Sofern das Projekt ganz neu beginnt und noch keine htm-Datei vorhanden ist, also szANZ den Wert 0 hat, soll xmessage eine Info ausgeben daß es nötig ist eine neue htm-Datei zu erzeugen. Außerdem soll xmessage eine Info ausgeben welche Datei gerade bearbeitet wird. Dazu müssen die folgenden Zeilen vor dem Aufruf von xmessage eingefügt werden: 

szANZ=$(find ~/Bla/Web/seiten/ -maxdepth 1 -type f -name "*.htm" | wc -l)

aALT=$(echo "scale=3; $szANZ/1000" | bc -ql | sed 's|\.||g')

aNEU=$(echo "scale=3; ($szANZ+1)/1000" | bc -ql | sed 's|\.||g')

aNEUU=$(echo "scale=3; ($szANZ+2)/1000" | bc -ql | sed 's|\.||g')

if [ $szANZ -eq 0 ]; then
xMES=$(echo "Erst eine neue Seite erstellen")
else
xMES=$(echo "Text oder Bild in page$aALT.htm einfuegen")

fi

Dann wird xmessage angepasst und durch eine weitere Schaltfläche ergänzt:
neue Seite

xmessage -fn '-*-*-*-r-*--25-0-0-0-p-*-iso8859-1' -title "Web-Seiten-Projekt" -center -buttons "Text links,Text mittig,Bild links,Bild mittig,neue Seite,Fertig" "$xMES"

Damit wird der Rückgabewert von 
neue Seite
zu 105 und von 
Fertig
zu 106, das muß geändert werden. Dann müssen auch alle Zeichenfolgen page001 durch page$aALT ersetzt werden.

In der while-Schleife nach den Zeilen mit 
xmessage....
wird folgender Text eingefügt, der eine neue Datei erstellt mit einer Hintergrundfarbe (zenity Color-Fenster mit Übersetzung auf Hex-Code) und Angabe des Zeichensatzes und eines Links zu index.htm - und eines Links zur kommenden Seite, die noch nicht existiert - sowie einem Eintrag in der index.htm

if [ $szR -eq 105 ]; then
szCol=$(zenity --color-selection --show-palette 2> /dev/null)
szFb=${szCol:: -10}${szCol:5: -6}${szCol:9: -2}
echo "<html> <head> <meta charset="utf-8"> <title> Projekt page$aNEU </title> </head> <body bgcolor="$szFb"> <p align="left"><a href="../index.htm"><b>Übersicht</b></a> <br> <a href="page$aNEUU.htm"><b>Weiter zu page$aNEUU</b></a></p> </body> </html>" > ~/Bla/Web/seiten/page$aNEU.htm
niD=$(echo "<p align="center"><a href="seiten/page$aNEU.htm"><b>Projekt page$aNEU</b></a> <br>")
niDD=$(cat ~/Bla/Web/index.htm | sed "s|</body>|$niD&|g")
echo $niDD > ~/Bla/Web/index.htm

Das nachfolgende 
if [ $szR -eq 101 ]
muß dann geändert werden zu
elif [ $szR -eq 101 ] 

Es hat sich gezeigt, daß das Drücken auf Abbrechen beim Datei-Auswahlfenster einen Fehler beim Kopieren-Befehl cp erzeugt. Der Rückgabewert beim Abbrechen $? ist dann gleich 1. Daher ist an dieser Stelle im Script noch eine Ergänzung notwendig.

if [ $? -eq 1 ]; then
exit
else
cp "$szB" ~/Bla/Web/bilder
und .... die weiteren Kommandos
fi

Und auch bei dem Farb-Auswahlfenster ist eine ähnliche Ergänzung vorteilhaft.

Wenn noch keine erste Webseite erzeugt wurde, so führt das Klicken auf Schaltflächen mit Texteinfügung oder Bildeinfügung zu einem Durcheinander der Zählung (vielleicht passiert dieses Klicken doch aus Versehen). Daher wird auch hier eine Sicherheits-Abfrage hinzugefügt
if [ $szANZ -eq 0 ]; then
continue
fi

Mit continue springt man wieder an den Anfang der Schleife.
Nun kann man das Script neu schreiben (alten Text löschen) 

nano ~/Bla/scWEB.sh

Eingabe in den Editor: 

#!/bin/bash

szR=101

while [ $szR -ne 106 ]

do

szANZ=$(find ~/Bla/Web/seiten/ -maxdepth 1 -type f -name "*.htm" | wc -l)

aALT=$(echo "scale=3; $szANZ/1000" | bc -ql | sed 's|\.||g')

aNEU=$(echo "scale=3; ($szANZ+1)/1000" | bc -ql | sed 's|\.||g')

aNEUU=$(echo "scale=3; ($szANZ+2)/1000" | bc -ql | sed 's|\.||g')

if [ $szANZ -eq 0 ]; then
xMES=$(echo "Erst eine neue Seite erstellen")
else
xMES=$(echo "Text oder Bild in page$aALT.htm einfuegen")
fi

xmessage -fn '-*-*-*-r-*--25-0-0-0-p-*-iso8859-1' -title "Web-Seiten-Projekt" -center -buttons "Text links,Text mittig,Bild links,Bild mittig,neue Seite,Fertig" "$xMES"
szR=$?

if [ $szR -eq 105 ]; then
szCol=$(zenity --color-selection --show-palette 2> /dev/null)
if [ $? -eq 1 ]; then
exit
else
szFb=${szCol:: -10}${szCol:5: -6}${szCol:9: -2}
echo "<html> <head> <meta charset="utf-8"> <title> Projekt page$aNEU </title> </head> <body bgcolor="$szFb"> <p align="left"><a href="../index.htm"><b>Übersicht</b></a><br> <a href="page$aNEUU.htm"><b>Weiter zu page$aNEUU</b></a> </p> </body> </html>" > ~/Bla/Web/seiten/page$aNEU.htm
niD=$(echo "<p align="center"><a href="seiten/page$aNEU.htm"><b>Projekt page$aNEU</b></a> <br>")
niDD=$(cat ~/Bla/Web/index.htm | sed "s|</body>|$niD&|g")
echo $niDD > ~/Bla/Web/index.htm
fi

elif [ $szR -eq 101 ]; then
if [ $szANZ -eq 0 ]; then
continue
fi
szTR=$(zenity --entry --ok-label "Einfügen" --title "Texteingabe" --text " Das Zeichen | \n darf nicht vorkommen" --entry-text "gewünschter Text" 2> /dev/null)
nTT=$(cat ~/Bla/Web/seiten/page$aALT.htm | sed "s|</body>|<p align="left">$szTR</p>&|g" | sed 's|ü|\&uuml;|g' | sed 's|ä|\&auml;|g' | sed 's|ö|\&ouml;|g' | sed 's|Ü|\&Uuml;|g' | sed 's|Ä|\&Auml;|g' | sed 's|Ö|\&Ouml;|g' | sed 's|ß|\&szlig;|g')
echo $nTT > ~/Bla/Web/seiten/page$aALT.htm

elif [ $szR -eq 102 ]; then
if [ $szANZ -eq 0 ]; then
continue
fi
szTR=$(zenity --entry --ok-label "Einfügen" --title "Texteingabe" --text " Das Zeichen | \n darf nicht vorkommen" --entry-text "gewünschter Text" 2> /dev/null)
nTT=$(cat ~/Bla/Web/seiten/page$aALT.htm | sed "s|</body>|<p align="center">$szTR</p>&|g" | sed 's|ü|\&uuml;|g' | sed 's|ä|\&auml;|g' | sed 's|ö|\&ouml;|g' | sed 's|Ü|\&Uuml;|g' | sed 's|Ä|\&Auml;|g' | sed 's|Ö|\&Ouml;|g' | sed 's|ß|\&szlig;|g')
echo $nTT > ~/Bla/Web/seiten/page$aALT.htm

elif [ $szR -eq 103 ]; then
if [ $szANZ -eq 0 ]; then
continue
fi
szB=$(zenity --file-selection --file-filter='*.gif *.jpg' 2> /dev/null)
if [ $? -eq 1 ]; then
exit
else
cp "$szB" ~/Bla/Web/bilder
szBN=$(echo ${szB##*/})
szBREIT=$(convert "$szB" -flatten -format '%w' info: )
szHOCH=$(convert "$szB" -flatten -format '%h' info: )
nT=$(echo "<p align="left"><img border="0" src="../bilder/$szBN" width="$szBREIT" height="$szHOCH"></p>")
nTT=$(cat ~/Bla/Web/seiten/page$aALT.htm | sed "s|</body>|$nT&|g")
echo $nTT > ~/Bla/Web/seiten/page$aALT.htm
fi

elif [ $szR -eq 104 ]; then
if [ $szANZ -eq 0 ]; then
continue
fi
szB=$(zenity --file-selection --file-filter='*.gif *.jpg' 2> /dev/null)
if [ $? -eq 1 ]; then
exit
else
cp "$szB" ~/Bla/Web/bilder
szBN=$(echo ${szB##*/})
szBREIT=$(convert "$szB" -flatten -format '%w' info: )
szHOCH=$(convert "$szB" -flatten -format '%h' info: )
nT=$(echo "<p align="center"><img border="0" src="../bilder/$szBN" width="$szBREIT" height="$szHOCH"></p>")
nTT=$(cat ~/Bla/Web/seiten/page$aALT.htm | sed "s|</body>|$nT&|g")
echo $nTT > ~/Bla/Web/seiten/page$aALT.htm
fi

else
exit

fi

done

Falls man die alte Datei ~/Bla/scWEB.sh komplett gelöscht hat und wieder neu erstellt hat, muß man diese Datei wieder ausführbar machen (hat man nur den alten Text durch den neuen ersetzt, braucht man das natürlich nicht): 

chmod +x ~/Bla/scWEB.sh

Damit man ganz neu anfangen kann gibt man dem Ordner Web einen anderen Namen, vielleicht Web-Datum. Dann erstellt man die Ordnerstruktur von Ordner Web neu mit

mkdir -p ~/Bla/Web/{seiten,bilder}

und erstellt die index.htm neu so wie auf dieser Seite oben.

Nun erzeugt man noch ein kleines Bild für das Programm: 

convert -size 48x48 xc:red \( -size 40x40 xc:yellow \( -size 30x30 -background green -gravity center -fill black -font FreeSerif -pointsize 36 label:W \) -gravity center -composite \) -gravity center -composite ~/Bla/CW.png
Anschließend erstellt man wieder einen Programmstarter indem man einen Rechtsklick auf dem Desktop oder in einem Ordner macht und auswählt 
Neues Dokument 
Neuer_Starter 
Dann vergibt man einen Namen, hier etwa 
WEB-Projekt
Auf das Pin-Symbol macht man anschließend einen Rechtsklick und wählt Eigenschaften. Man füllt die Felder entsprechend aus, wie auf den vorhergehenden Seiten aber jetzt mit  scWEB.sh
Für das Icon wählt man die Datei CW.png aus dem Ordner Bla, dann schließt man das Eigenschaften-Menü. 
Doppelklick auf      ergibt: 

Man muß also eine erste Seite erstellen durch Klicken auf die Schaltfläche
neue Seite
Man wählt eine Hintergrundfarbe aus und gelangt wieder zum xmessage-Fenster. Die Zeichen | und & dürfen bei der Text-Einfügung nicht verwendet werden da es sonst zu einem Konflikt mit sed kommt. Man könnte nachträglich die Webseite mit einem Texteditor, z.B. gedit, öffnen und diese Zeichen einfügen. 
Man kann immer nur die zuletzt erzeugte htm-Datei bearbeiten. Die zuletzt erzeugte htm-Datei hat einen Link zu einer noch nicht erstellten weiteren htm-Datei - evtl. mit gedit öffnen und den Link löschen. Es ist eben nur ein kleines Programm. 

  

  

zur Übersicht

nächste Seite