zur Übersicht nächste Seite

Programmfenster für Web-Seiten (Teil 2)

Die Ausführungen der vorherigen Seite (Teil 1) werden hier weitergeführt. Diese funktionieren bei Debian 10 Gnome 
und Devuan 2 Gnome und Debian 9 Gnome, 
nicht aber bei Debian 8 (da hier der Rückgabewert des Farbauswahlfensters anders ist).

In dem Ordner ~/Bla/Web soll zuerst noch die Startdatei für das Projekt
index.htm
erzeugt werden. Es wird ein Standard-Info über html-Dateien an den Anfang gesetzt und 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 "<"\!"DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> Startseite für das Projekt</title> </head> <body> <p style="text-align:center">Mein Name<br>Meine Straße<br>Mein Wohnort<br><br></p></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 "page*.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 "page*.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=$( printf \#%02X%02X%02X $(echo $szCol | sed 's/rgb(//g' | sed 's/)//g' | sed 's/,/ /g') )
echo "<"\!"DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> Projekt page$aNEU </title> </head> <body style="background-color:$szFb"> <p style="text-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 style="text-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 "page*.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=$( printf \#%02X%02X%02X $(echo $szCol | sed 's/rgb(//g' | sed 's/)//g' | sed 's/,/ /g') )
echo "<"\!"DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> Projekt page$aNEU </title> </head> <body style="background-color:$szFb"> <p style="text-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 style="text-align:center"><a href="seiten/page$aNEU.htm"><b>Projekt page$aNEU</b></a> <br></p>")
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 style="text-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 style="text-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 style="text-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 style="text-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
Mit Rechtsklick auf die Datei scWEB.sh wählt man wieder Eigenschaften. Dann vergibt man einen Namen, hier etwa
WEB-Projekt
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

Datenschutzerklärung
Impressum