Sammlung
This commit is contained in:
59
Sammlung/P3/Dokumentation.html
Normal file
59
Sammlung/P3/Dokumentation.html
Normal file
@ -0,0 +1,59 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="generator" content="pandoc">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
|
||||
<title></title>
|
||||
<style type="text/css">code{white-space: pre;}</style>
|
||||
<!--[if lt IE 9]>
|
||||
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
|
||||
<![endif]-->
|
||||
</head>
|
||||
<body>
|
||||
<h1 id="dokumentation-praktikum-2">Dokumentation: Praktikum 2</h1>
|
||||
<h2 id="allgemeine-beschreibung-der-lösung">Allgemeine Beschreibung der Lösung</h2>
|
||||
<p>Das Praktikum 2 ist in <em>Python</em> geschrieben und nutzt das Framework <em>CherryPy</em>, mit welchem eine Website zur Verwendung erzeugt wird.</p>
|
||||
<p>Dieser Server läuft mit einer Datenbank, welche Informationen via des Python-Moduls <em>json</em> in Dateien abspeichern und auslesen kann.</p>
|
||||
<p>Die Website wird durch ein Template erzeugt, welches durch die Template-Engine <em>mako</em> umgesetzt wird, wodurch Daten aus der Datenbank ausgeben werden können.</p>
|
||||
<h2 id="beschreibung-der-komponenten">Beschreibung der Komponenten</h2>
|
||||
<h3 id="zweck">Zweck</h3>
|
||||
<p>Die Website stellt den Inhalt einer Absolventenfeier dar. Es besteht die Möglichkeit sich für diese anzumelden, mit der Option sich auch wieder abzumelden. Dieser Prozess wird durch ein Passwort geschützt, welches der Benutzer selber wählen kann. Die Daten die eingeben wurden, können jederzeit geändert werden, es muss jedoch das Passwort eingeben werden.</p>
|
||||
<h3 id="aufbau">Aufbau</h3>
|
||||
<p><strong>server.py</strong></p>
|
||||
<p>Die <em>server.py</em> hat die Aufgabe die Website bereitzustellen und nutzt hierfür das <em>CherryPy-Framework</em>, sowie die folgenden Module.</p>
|
||||
<p><strong>application.py</strong></p>
|
||||
<p>Die <em>application.py</em> leitet Anfragen, die durch die Website, welche durch das <em>CherryPy-Framework</em> erzeugt wurde, an die anderen Module weiter.</p>
|
||||
<p><strong>datenbank.py</strong></p>
|
||||
<p>Die <em>datenbank.py</em> stellt den Speicher des Systems dar. Sie dient als Schnittstelle, um Daten abzuspeichern, verändern, oder zu löschen.</p>
|
||||
<p><strong>anzeigen.py</strong></p>
|
||||
<p>Die <em>anzeigen.py</em> generiert die Templates, welche benötigt werden, um die Informationen auf der Website anzuzeigen. Um dies zu ermöglichen wird die <em>mako-Engine</em> verwendet.</p>
|
||||
<h3 id="zusammenwirken-der-komponenten">Zusammenwirken der Komponenten</h3>
|
||||
<p>Durch die <em>server.py</em> werden die Anfragen durch das <em>CherryPy-Framework</em> erkannt und weitergeleitet an die <em>application.py</em> Die <em>application.py</em> verarbeitet die Anfragen und gibt Anweisungen an die <em>datenbank.py</em> und <em>anzeigen.py</em> was mit diesen geschehen soll. Im folgenden werden diese Anweisungen dann von der <em>datenbank.py</em> und <em>anzeigen.py</em> ausgeführt.</p>
|
||||
<h3 id="datenablage">Datenablage</h3>
|
||||
<p>Die Daten, die von der <em>datenbank.py</em> verarbeitet werden, liegen in dem Verzeichnis "/data/" und liegen im ".json" Format vor. Als Dateiname wird die jeweilige ID (abhängig von der Reihenfolge der Anmeldung) des Benutzers mit der Endung ".json" verwendet. In der "letztes.json" wird immer die zuletzt verwendete ID gespeichert, damit das System weiß, bis zu welcher ID Daten vorliegen.</p>
|
||||
<h3 id="api">API</h3>
|
||||
<p><strong>index</strong></p>
|
||||
<p>Stellt die Startseite der Absolventenfeier dar. Diese enthält eine Tabelle mit Anmeldungen und bietet die Möglichkeit diese zu bearbeiten.</p>
|
||||
<p><strong>ausschuss_app</strong></p>
|
||||
<p>Zeigt dem Prüfungsausschuss eine sortierte Liste mit Anmeldungen und bietet die Möglichkeit ein Abschlussthema zu bearbeiten.</p>
|
||||
<p><strong>hinzufuegen_app</strong></p>
|
||||
<p>Zugriff auf die <em>Bearbeiten-Funktion</em>, jedoch ohne einlesen vorhandener Daten. Wird genutzt um einen neuen Eintrag zu erstellen.</p>
|
||||
<p><strong>passwort_app</strong></p>
|
||||
<p>Passwort-Abfrage für die übergebene ID.</p>
|
||||
<p><strong>passwort_loeschen_app</strong></p>
|
||||
<p>Passwort-Abfrage zum Löschen der übergebenen ID.</p>
|
||||
<p><strong>bearbeiten_app</strong></p>
|
||||
<p>Möglichkeit Einträge in <em>inhalt_alle</em> zu verändern.</p>
|
||||
<p><strong>bearbeiten_ausschuss_app</strong></p>
|
||||
<p>Möglichkeit <em>Abschlussarbeit</em> in <em>inhalt_alle</em> hinzuzufügen, oder zu ändern.</p>
|
||||
<p><strong>speichern_app</strong></p>
|
||||
<p>Speichert übergebene Einträge in <em>inhalt_alle</em>. Danach wird Inhalt in .json gespeichert.</p>
|
||||
<p><strong>speichern_ausschuss_app</strong></p>
|
||||
<p>Speichert übergebenen Eintrag <em>Abschlussarbeit</em> in <em>inhalt_alle</em>. Danach wird Inhalt in .json gespeichert.</p>
|
||||
<p><strong>loeschen_app</strong></p>
|
||||
<p>Löscht übergebene ID, sofern das übergebene Passwort, mit dem in <em>inhalt_alle</em> gespeicherten.</p>
|
||||
<p><strong>fehler_app</strong></p>
|
||||
<p>Lässt Fehlermeldungen ausgeben.</p>
|
||||
</body>
|
||||
</html>
|
122
Sammlung/P3/Dokumentation.txt
Normal file
122
Sammlung/P3/Dokumentation.txt
Normal file
@ -0,0 +1,122 @@
|
||||
#Dokumentation: Praktikum 2#
|
||||
|
||||
##Allgemeine Beschreibung der Lösung
|
||||
|
||||
Das Praktikum 2 ist in *Python* geschrieben und nutzt das Framework *CherryPy*, mit welchem eine Website zur
|
||||
Verwendung erzeugt wird.
|
||||
|
||||
Dieser Server läuft mit einer Datenbank, welche Informationen via des Python-Moduls *json* in Dateien abspeichern
|
||||
und auslesen kann.
|
||||
|
||||
Die Website wird durch ein Template erzeugt, welches durch die Template-Engine *mako* umgesetzt wird, wodurch
|
||||
Daten aus der Datenbank ausgeben werden können.
|
||||
|
||||
|
||||
##Beschreibung der Komponenten
|
||||
|
||||
###Zweck
|
||||
|
||||
Die Website stellt den Inhalt einer Absolventenfeier dar. Es besteht die Möglichkeit sich für diese anzumelden,
|
||||
mit der Option sich auch wieder abzumelden. Dieser Prozess wird durch ein Passwort geschützt, welches der Benutzer
|
||||
selber wählen kann. Die Daten die eingeben wurden, können jederzeit geändert werden, es muss jedoch das Passwort
|
||||
eingeben werden.
|
||||
|
||||
###Aufbau
|
||||
|
||||
**server.py**
|
||||
|
||||
Die *server.py* hat die Aufgabe die Website bereitzustellen und nutzt hierfür das *CherryPy-Framework*, sowie die folgenden Module.
|
||||
|
||||
|
||||
|
||||
**application.py**
|
||||
|
||||
Die *application.py* leitet Anfragen, die durch die Website, welche durch das *CherryPy-Framework* erzeugt wurde,
|
||||
an die anderen Module weiter.
|
||||
|
||||
|
||||
|
||||
**datenbank.py**
|
||||
|
||||
Die *datenbank.py* stellt den Speicher des Systems dar. Sie dient als Schnittstelle, um Daten abzuspeichern, verändern, oder zu löschen.
|
||||
|
||||
|
||||
|
||||
**anzeigen.py**
|
||||
|
||||
Die *anzeigen.py* generiert die Templates, welche benötigt werden, um die Informationen auf der Website anzuzeigen.
|
||||
Um dies zu ermöglichen wird die *mako-Engine* verwendet.
|
||||
|
||||
|
||||
|
||||
###Zusammenwirken der Komponenten
|
||||
|
||||
Durch die *server.py* werden die Anfragen durch das *CherryPy-Framework* erkannt und weitergeleitet an die *application.py*
|
||||
Die *application.py* verarbeitet die Anfragen und gibt Anweisungen an die *datenbank.py* und *anzeigen.py* was mit diesen geschehen soll.
|
||||
Im folgenden werden diese Anweisungen dann von der *datenbank.py* und *anzeigen.py* ausgeführt.
|
||||
|
||||
|
||||
|
||||
###Datenablage
|
||||
|
||||
Die Daten, die von der *datenbank.py* verarbeitet werden, liegen in dem Verzeichnis "/data/" und liegen im ".json" Format vor.
|
||||
Als Dateiname wird die jeweilige ID (abhängig von der Reihenfolge der Anmeldung) des Benutzers mit der Endung ".json" verwendet.
|
||||
In der "letztes.json" wird immer die zuletzt verwendete ID gespeichert, damit das System weiß, bis zu welcher ID Daten vorliegen.
|
||||
|
||||
|
||||
|
||||
###API
|
||||
|
||||
**index**
|
||||
|
||||
Stellt die Startseite der Absolventenfeier dar. Diese enthält eine Tabelle mit Anmeldungen und bietet die Möglichkeit diese zu bearbeiten.
|
||||
|
||||
|
||||
**ausschuss_app**
|
||||
|
||||
Zeigt dem Prüfungsausschuss eine sortierte Liste mit Anmeldungen und bietet die Möglichkeit ein Abschlussthema zu bearbeiten.
|
||||
|
||||
|
||||
**hinzufuegen_app**
|
||||
|
||||
Zugriff auf die *Bearbeiten-Funktion*, jedoch ohne einlesen vorhandener Daten. Wird genutzt um einen neuen Eintrag zu erstellen.
|
||||
|
||||
|
||||
**passwort_app**
|
||||
|
||||
Passwort-Abfrage für die übergebene ID.
|
||||
|
||||
|
||||
**passwort_loeschen_app**
|
||||
|
||||
Passwort-Abfrage zum Löschen der übergebenen ID.
|
||||
|
||||
|
||||
**bearbeiten_app**
|
||||
|
||||
Möglichkeit Einträge in *inhalt_alle* zu verändern.
|
||||
|
||||
|
||||
**bearbeiten_ausschuss_app**
|
||||
|
||||
Möglichkeit *Abschlussarbeit* in *inhalt_alle* hinzuzufügen, oder zu ändern.
|
||||
|
||||
|
||||
**speichern_app**
|
||||
|
||||
Speichert übergebene Einträge in *inhalt_alle*. Danach wird Inhalt in .json gespeichert.
|
||||
|
||||
|
||||
**speichern_ausschuss_app**
|
||||
|
||||
Speichert übergebenen Eintrag *Abschlussarbeit* in *inhalt_alle*. Danach wird Inhalt in .json gespeichert.
|
||||
|
||||
|
||||
**loeschen_app**
|
||||
|
||||
Löscht übergebene ID, sofern das übergebene Passwort, mit dem in *inhalt_alle* gespeicherten.
|
||||
|
||||
|
||||
**fehler_app**
|
||||
|
||||
Lässt Fehlermeldungen ausgeben.
|
BIN
Sammlung/P3/P2.zip
Normal file
BIN
Sammlung/P3/P2.zip
Normal file
Binary file not shown.
0
Sammlung/P3/app/__init__.py
Normal file
0
Sammlung/P3/app/__init__.py
Normal file
BIN
Sammlung/P3/app/__pycache__/__init__.cpython-33.pyc
Normal file
BIN
Sammlung/P3/app/__pycache__/__init__.cpython-33.pyc
Normal file
Binary file not shown.
BIN
Sammlung/P3/app/__pycache__/__init__.cpython-35.pyc
Normal file
BIN
Sammlung/P3/app/__pycache__/__init__.cpython-35.pyc
Normal file
Binary file not shown.
BIN
Sammlung/P3/app/__pycache__/anzeigen.cpython-33.pyc
Normal file
BIN
Sammlung/P3/app/__pycache__/anzeigen.cpython-33.pyc
Normal file
Binary file not shown.
BIN
Sammlung/P3/app/__pycache__/anzeigen.cpython-35.pyc
Normal file
BIN
Sammlung/P3/app/__pycache__/anzeigen.cpython-35.pyc
Normal file
Binary file not shown.
BIN
Sammlung/P3/app/__pycache__/application.cpython-33.pyc
Normal file
BIN
Sammlung/P3/app/__pycache__/application.cpython-33.pyc
Normal file
Binary file not shown.
BIN
Sammlung/P3/app/__pycache__/application.cpython-35.pyc
Normal file
BIN
Sammlung/P3/app/__pycache__/application.cpython-35.pyc
Normal file
Binary file not shown.
BIN
Sammlung/P3/app/__pycache__/datenbank.cpython-33.pyc
Normal file
BIN
Sammlung/P3/app/__pycache__/datenbank.cpython-33.pyc
Normal file
Binary file not shown.
BIN
Sammlung/P3/app/__pycache__/datenbank.cpython-35.pyc
Normal file
BIN
Sammlung/P3/app/__pycache__/datenbank.cpython-35.pyc
Normal file
Binary file not shown.
BIN
Sammlung/P3/app/__pycache__/mako.cpython-33.pyc
Normal file
BIN
Sammlung/P3/app/__pycache__/mako.cpython-33.pyc
Normal file
Binary file not shown.
42
Sammlung/P3/app/anzeigen.py
Normal file
42
Sammlung/P3/app/anzeigen.py
Normal file
@ -0,0 +1,42 @@
|
||||
# coding: utf-8
|
||||
|
||||
import os.path
|
||||
|
||||
from mako.template import Template
|
||||
from mako.lookup import TemplateLookup
|
||||
|
||||
class anzeigen_az(object):
|
||||
def __init__(self):
|
||||
self.path_s = 'template'
|
||||
self.lookup_o = TemplateLookup(directories=['/'])
|
||||
|
||||
def erzeugen_az(self, template_praktikum, inhalt_person):
|
||||
template_praktikum = Template(filename=os.path.join(self.path_s, template_praktikum), output_encoding='utf-8', lookup=self.lookup_o)
|
||||
return template_praktikum.render(inhalt_alle = inhalt_person)
|
||||
|
||||
def erzeugen_anzeigen_az(self, inhalt_person):
|
||||
return self.erzeugen_az('anzeigen.html', inhalt_person)
|
||||
|
||||
def erzeugen_anzeigen_ausschuss_az(self, inhalt_person):
|
||||
return self.erzeugen_az('ausschuss.html', inhalt_person)
|
||||
|
||||
def erzeugen_bearbeiten_az(self, id, inhalt_person):
|
||||
inhalt_person['id'] = id
|
||||
return self.erzeugen_az('bearbeiten.html', inhalt_person)
|
||||
|
||||
def erzeugen_bearbeiten_ausschuss_az(self, id, inhalt_person):
|
||||
inhalt_person['id'] = id
|
||||
return self.erzeugen_az('bearbeiten_ausschuss.html', inhalt_person)
|
||||
|
||||
def passwort_az(self, id, inhalt_person):
|
||||
inhalt_person['id'] = id
|
||||
return self.erzeugen_az('passwort.html', inhalt_person)
|
||||
|
||||
def passwort_loeschen_az(self, id, inhalt_person):
|
||||
inhalt_person['id'] = id
|
||||
return self.erzeugen_az('passwort_loeschen.html', inhalt_person)
|
||||
|
||||
def weiterleiten_az(self, id, inhalt_person):
|
||||
inhalt_person['id'] = id
|
||||
return self.erzeugen_az('weiterleiten.js', inhalt_person)
|
||||
#EOF
|
178
Sammlung/P3/app/application.py
Normal file
178
Sammlung/P3/app/application.py
Normal file
@ -0,0 +1,178 @@
|
||||
# coding: utf-8
|
||||
# id ->
|
||||
# id_s -> einlesen aus datei
|
||||
|
||||
import cherrypy
|
||||
from app import datenbank
|
||||
from app import anzeigen
|
||||
from collections import OrderedDict
|
||||
|
||||
class programm(object):
|
||||
def __init__(self):
|
||||
self.datenbank_py = datenbank.datenbank_db()
|
||||
self.anzeigen_py = anzeigen.anzeigen_az()
|
||||
|
||||
def index(self):
|
||||
return self.erzeugen_anzeigen_app()
|
||||
|
||||
index.exposed = True
|
||||
|
||||
def ausschuss_app(self):
|
||||
return self.erzeugen_anzeigen_ausschuss_app()
|
||||
|
||||
ausschuss_app.exposed = True
|
||||
|
||||
def hinzufuegen_app(self):
|
||||
return self.erzeugen_bearbeiten_app()
|
||||
|
||||
hinzufuegen_app.exposed = True
|
||||
|
||||
def passwort_app(self, id):
|
||||
return self.erzeugen_passwort_app(id)
|
||||
|
||||
passwort_app.exposed = True
|
||||
|
||||
def passwort_loeschen_app(self, id):
|
||||
return self.erzeugen_passwort_loeschen_app(id)
|
||||
|
||||
passwort_loeschen_app.exposed = True
|
||||
|
||||
def bearbeiten_app(self, id_s, pw):
|
||||
print(id_s,pw)
|
||||
self.datenbank_py.aktuell_db(id_s)
|
||||
inhalt_alle = self.datenbank_py.lesen_json_db(id_s)
|
||||
if pw == inhalt_alle['Passwort']:
|
||||
return self.erzeugen_bearbeiten_app(id_s)
|
||||
elif pw == "" or pw != inhalt_alle['Passwort']:
|
||||
print("Falsches Passwort"+ pw)
|
||||
return self.erzeugen_anzeigen_app()
|
||||
|
||||
bearbeiten_app.exposed = True
|
||||
|
||||
def bearbeiten_ausschuss_app(self, id_s, pw):
|
||||
self.datenbank_py.aktuell_db(id_s)
|
||||
inhalt_alle = self.datenbank_py.lesen_json_db(id_s)
|
||||
if pw == "ausschuss":
|
||||
return self.erzeugen_bearbeiten_ausschuss_app(id_s)
|
||||
elif pw == "" or pw != "ausschuss":
|
||||
print("Falsches Passwort"+ pw)
|
||||
return self.erzeugen_anzeigen_ausschuss_app()
|
||||
|
||||
bearbeiten_ausschuss_app.exposed = True
|
||||
|
||||
|
||||
|
||||
# ** damit die übergebene Variable beliebig groß sein kannst, ansonsten würde py nur "Vorname" kennen
|
||||
def speichern_app(self, **inhalt_person):
|
||||
id_s = inhalt_person["id_s"]
|
||||
inhalt_alle = {
|
||||
'Vorname': inhalt_person["Vorname_s"],
|
||||
'Nachname': inhalt_person["Nachname_s"],
|
||||
'Gaeste': inhalt_person["Gaeste_s"],
|
||||
'Studiengang': inhalt_person["Studiengang_s"],
|
||||
'Betreuer': inhalt_person["Betreuer_s"],
|
||||
'Passwort': inhalt_person["Passwort_s"],
|
||||
'Matrikelnummer': inhalt_person["Matrikelnummer_s"],
|
||||
'Abschlussarbeit': ''
|
||||
}
|
||||
if id_s != "None":
|
||||
self.datenbank_py.update_json_db(id_s, inhalt_alle)
|
||||
else:
|
||||
id_s = self.datenbank_py.erzeugen_json_db(inhalt_alle)
|
||||
raise cherrypy.HTTPRedirect("/")
|
||||
|
||||
speichern_app.exposed = True
|
||||
|
||||
def speichern_ausschuss_app(self, **inhalt_person):
|
||||
id_s = inhalt_person["id_s"]
|
||||
inhalt_alle = {
|
||||
'Vorname': inhalt_person["Vorname_s"],
|
||||
'Nachname': inhalt_person["Nachname_s"],
|
||||
'Gaeste': inhalt_person["Gaeste_s"],
|
||||
'Studiengang': inhalt_person["Studiengang_s"],
|
||||
'Betreuer': inhalt_person["Betreuer_s"],
|
||||
'Passwort': inhalt_person["Passwort_s"],
|
||||
'Matrikelnummer': inhalt_person["Matrikelnummer_s"],
|
||||
'Abschlussarbeit': inhalt_person["Abschlussarbeit_s"]
|
||||
}
|
||||
if id_s != "None":
|
||||
self.datenbank_py.update_json_db(id_s, inhalt_alle)
|
||||
else:
|
||||
id_s = self.datenbank_py.erzeugen_json_db(inhalt_alle)
|
||||
raise cherrypy.HTTPRedirect("/")
|
||||
|
||||
speichern_ausschuss_app.exposed = True
|
||||
|
||||
def loeschen_app(self, id_s, pw):
|
||||
inhalt_alle = self.datenbank_py.lesen_json_db(id_s)
|
||||
if pw == inhalt_alle['Passwort']:
|
||||
self.datenbank_py.loesche_json_db(id_s)
|
||||
return self.erzeugen_anzeigen_app()
|
||||
elif pw =="" or pw!= inhalt_alle['Passwort']:
|
||||
return self.erzeugen_anzeigen_app()
|
||||
|
||||
loeschen_app.exposed = True
|
||||
|
||||
def weiterleiten_app(self, id_s,pw):
|
||||
inhalt_alle = self.datenbank_py.erzeugen_weiterleiten_app(id_s)
|
||||
return self.erzeugen_weiterleiten_app(id_s)
|
||||
|
||||
weiterleiten_app.exposed = True
|
||||
|
||||
def fehler_app(self, *arguments, **kwargs):
|
||||
msg_s = "Fehler: " + \
|
||||
str(arguments) + \
|
||||
' ' + \
|
||||
str(kwargs)
|
||||
raise cherrypy.HTTPError(404, msg_s)
|
||||
|
||||
fehler_app.exposed = True
|
||||
|
||||
def erzeugen_anzeigen_app(self):
|
||||
inhalt_alle = self.datenbank_py.lesen_json_db()
|
||||
return self.anzeigen_py.erzeugen_anzeigen_az(inhalt_alle)
|
||||
|
||||
def erzeugen_anzeigen_ausschuss_app(self):
|
||||
inhalt_alle = self.datenbank_py.lesen_json_db()
|
||||
##OrderedDict(sorted(inhalt_alle, key=lambda t: t[0]))
|
||||
return self.anzeigen_py.erzeugen_anzeigen_ausschuss_az(inhalt_alle)
|
||||
|
||||
def erzeugen_bearbeiten_app(self, id = None):
|
||||
if id != None:
|
||||
inhalt_alle = self.datenbank_py.lesen_json_db(id)
|
||||
else:
|
||||
inhalt_alle = self.datenbank_py.inhalt_db()
|
||||
return self.anzeigen_py.erzeugen_bearbeiten_az(id, inhalt_alle)
|
||||
|
||||
def erzeugen_bearbeiten_ausschuss_app(self, id = None):
|
||||
if id != None:
|
||||
inhalt_alle = self.datenbank_py.lesen_json_db(id)
|
||||
else:
|
||||
inhalt_alle = self.datenbank_py.inhalt_db()
|
||||
return self.anzeigen_py.erzeugen_bearbeiten_ausschuss_az(id, inhalt_alle)
|
||||
|
||||
def erzeugen_passwort_app(self, id):
|
||||
inhalt_alle = self.datenbank_py.lesen_json_db(id)
|
||||
return self.anzeigen_py.passwort_az(id, inhalt_alle)
|
||||
|
||||
def erzeugen_passwort_loeschen_app(self, id):
|
||||
inhalt_alle = self.datenbank_py.lesen_json_db(id)
|
||||
return self.anzeigen_py.passwort_loeschen_az(id, inhalt_alle)
|
||||
|
||||
def erzeugen_weiterleiten_app(self, id):
|
||||
inhalt_alle = self.datenbank_py.lesen_json_db(id)
|
||||
return self.anzeigen_py.weiterleiten_az(id, inhalt_alle)
|
||||
|
||||
def betreuer_app(self, inhalt_alle):
|
||||
for id in inhalt_alle:
|
||||
inhalt_betreuer[id] = inhalt_alle[id]['Betreuer']
|
||||
endfor
|
||||
return self.inhalt_betreuer
|
||||
|
||||
##def sortieren_app(self, inhalt_alle):
|
||||
## for var in inhalt_alle:
|
||||
## dict[var] = inhalt_alle[var]
|
||||
## endfor
|
||||
## s_dict = OrderedDict(sorted(dict.items(), key=lambda t: t[1]))
|
||||
## return s_dict
|
||||
#EOF
|
91
Sammlung/P3/app/datenbank.py
Normal file
91
Sammlung/P3/app/datenbank.py
Normal file
@ -0,0 +1,91 @@
|
||||
# coding: utf-8
|
||||
|
||||
import os
|
||||
import os.path
|
||||
import codecs
|
||||
import json
|
||||
|
||||
class datenbank_db(object):
|
||||
def __init__(self):
|
||||
self.inhalt_alle = {}
|
||||
self.inhalt_betreuer = {}
|
||||
self.lesen_inhalt_db()
|
||||
|
||||
def erzeugen_json_db(self, inhalt_person):
|
||||
id = self.naechste_db()
|
||||
datei = codecs.open(os.path.join('data', id+'.json'), 'w', 'utf-8')
|
||||
datei.write(json.dumps(inhalt_person, indent=3, ensure_ascii=True))
|
||||
datei.close()
|
||||
self.inhalt_alle[id] = inhalt_person
|
||||
return id
|
||||
|
||||
def lesen_json_db(self, id = None):
|
||||
inhalt_alle = None
|
||||
if id == None:
|
||||
inhalt_alle = self.inhalt_alle
|
||||
else:
|
||||
if id in self.inhalt_alle:
|
||||
inhalt_alle = self.inhalt_alle[id]
|
||||
return inhalt_alle
|
||||
|
||||
def update_json_db(self, id, inhalt_person):
|
||||
status_b = False
|
||||
if id in self.inhalt_alle:
|
||||
datei = codecs.open(os.path.join('data', id+'.json'), 'w', 'utf-8')
|
||||
datei.write(json.dumps(inhalt_person, indent=3, ensure_ascii=True))
|
||||
datei.close
|
||||
self.inhalt_alle[id] = inhalt_person
|
||||
status_b = True
|
||||
return status_b
|
||||
|
||||
def loesche_json_db(self, id):
|
||||
status_b = False
|
||||
if id in self.inhalt_alle:
|
||||
os.remove(os.path.join('data', id+'.json'))
|
||||
del self.inhalt_alle[id]
|
||||
status_b = True
|
||||
return status_b
|
||||
|
||||
def inhalt_db(self):
|
||||
return {
|
||||
'Vorname': '',
|
||||
'Nachname': '',
|
||||
'Gaeste': '',
|
||||
'Studiengang': '',
|
||||
'Betreuer': '',
|
||||
'Passwort': '',
|
||||
'Matrikelnummer': '',
|
||||
'Abschlussarbeit': ''
|
||||
}
|
||||
|
||||
def lesen_inhalt_db(self):
|
||||
ordner = os.listdir('data')
|
||||
for dateiname in ordner:
|
||||
if dateiname.endswith('.json') and dateiname != 'letztes.json' and dateiname != 'aktuell.json':
|
||||
datei = codecs.open(os.path.join('data', dateiname), 'rU', 'utf-8')
|
||||
dateiinhalt = datei.read()
|
||||
id = dateiname[:-5]
|
||||
self.inhalt_alle[id] = json.loads(dateiinhalt)
|
||||
|
||||
def naechste_db(self):
|
||||
datei = open(os.path.join('data', 'letztes.json'), 'r+')
|
||||
letztes = datei.read()
|
||||
letztes = str(int(letztes)+1)
|
||||
datei.seek(0)
|
||||
datei.write(letztes)
|
||||
datei.close()
|
||||
return letztes
|
||||
|
||||
def aktuell_db(self,id):
|
||||
datei = open(os.path.join('data', 'aktuell.json'), 'r+')
|
||||
datei.seek(0)
|
||||
datei.write(id)
|
||||
datei.close()
|
||||
|
||||
|
||||
def lesen_aktuell_db(self,id):
|
||||
datei = open(os.path.join('data', 'aktuell.json'), 'r+')
|
||||
aktuell_id = datei.read()
|
||||
datei.close()
|
||||
return aktuell_id
|
||||
# EOF
|
10
Sammlung/P3/data/1.json
Normal file
10
Sammlung/P3/data/1.json
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
"Abschlussarbeit": "Test",
|
||||
"Nachname": "sadasdasda",
|
||||
"Matrikelnummer": "12345",
|
||||
"Passwort": "12345",
|
||||
"Studiengang": "sasdasd",
|
||||
"Vorname": "aasdasdas",
|
||||
"Betreuer": "sadasfas",
|
||||
"Gaeste": "3"
|
||||
}
|
10
Sammlung/P3/data/2.json
Normal file
10
Sammlung/P3/data/2.json
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
"Matrikelnummer": "12345",
|
||||
"Nachname": "asasfegsg",
|
||||
"Vorname": "asdsa",
|
||||
"Studiengang": "afasgag",
|
||||
"Gaeste": "3",
|
||||
"Abschlussarbeit": "",
|
||||
"Passwort": "12345",
|
||||
"Betreuer": "sdgsdh"
|
||||
}
|
10
Sammlung/P3/data/3.json
Normal file
10
Sammlung/P3/data/3.json
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
"Passwort": "12345",
|
||||
"Betreuer": "PBetreuer",
|
||||
"Nachname": "XNachname",
|
||||
"Matrikelnummer": "54306",
|
||||
"Gaeste": "5",
|
||||
"Studiengang": "Informatik",
|
||||
"Vorname": "AVorname",
|
||||
"Abschlussarbeit": ""
|
||||
}
|
10
Sammlung/P3/data/6.json
Normal file
10
Sammlung/P3/data/6.json
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
"Passwort": "12345",
|
||||
"Betreuer": "RBetreuer",
|
||||
"Nachname": "GNachname",
|
||||
"Matrikelnummer": "97634",
|
||||
"Gaeste": "7",
|
||||
"Studiengang": "Physik",
|
||||
"Vorname": "UVorname",
|
||||
"Abschlussarbeit": "test2"
|
||||
}
|
1
Sammlung/P3/data/aktuell.json
Normal file
1
Sammlung/P3/data/aktuell.json
Normal file
@ -0,0 +1 @@
|
||||
3ndefined
|
1
Sammlung/P3/data/letztes.json
Normal file
1
Sammlung/P3/data/letztes.json
Normal file
@ -0,0 +1 @@
|
||||
6
|
9190
Sammlung/P3/javascript/jquery-2.1.1.js
vendored
Normal file
9190
Sammlung/P3/javascript/jquery-2.1.1.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
40
Sammlung/P3/server.py
Normal file
40
Sammlung/P3/server.py
Normal file
@ -0,0 +1,40 @@
|
||||
#coding: utf-8
|
||||
|
||||
import os
|
||||
import cherrypy
|
||||
|
||||
from app import application
|
||||
|
||||
#--------------------------------------
|
||||
def main():
|
||||
#--------------------------------------
|
||||
# Get current directory
|
||||
try:
|
||||
current_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
except:
|
||||
current_dir = os.path.dirname(os.path.abspath(sys.executable))
|
||||
# disable autoreload and timeout_monitor
|
||||
cherrypy.engine.autoreload.unsubscribe()
|
||||
cherrypy.engine.timeout_monitor.unsubscribe()
|
||||
# Static content config
|
||||
static_config = {
|
||||
'/': {
|
||||
'tools.staticdir.root': current_dir,
|
||||
'tools.staticdir.on': True,
|
||||
'tools.staticdir.dir': '',
|
||||
}
|
||||
}
|
||||
|
||||
# Mount static content handler
|
||||
root_o = cherrypy.tree.mount(application.programm(), '/', static_config)
|
||||
# suppress traceback-info
|
||||
cherrypy.config.update({'request.show_tracebacks': True})
|
||||
cherrypy.config.update({'server.socket_port' : 8080})
|
||||
# Start server
|
||||
cherrypy.engine.start()
|
||||
cherrypy.engine.block()
|
||||
#--------------------------------------
|
||||
if __name__ == '__main__':
|
||||
#--------------------------------------
|
||||
main()
|
||||
# EOF
|
89
Sammlung/P3/template/anzeigen.html
Normal file
89
Sammlung/P3/template/anzeigen.html
Normal file
@ -0,0 +1,89 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>
|
||||
Absolventenfeier Main
|
||||
</title>
|
||||
<meta charset="UTF-8" />
|
||||
<script src="//code.jquery.com/jquery-latest.min.js"></script>
|
||||
<script type="text/javascript" src="/javascript/index.js"></script>
|
||||
<style type="text/css">
|
||||
@import url("/template/template.css");
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1 id="idSiteHeader" class="clSiteHeader">
|
||||
Absolventenfeier
|
||||
</h1>
|
||||
<div id="idContent" class="clContent">
|
||||
<h2 id="idContentHeader" class="clContentHeader">
|
||||
Übersicht
|
||||
</h2>
|
||||
<div id="idContentArea" class="clContentArea">
|
||||
|
||||
<table id="idList">
|
||||
<tr>
|
||||
<th>Vorname</th>
|
||||
<th>Nachname</th>
|
||||
<th>Anzahl der Begleitpersonen</th>
|
||||
<th>Studiengang</th>
|
||||
<th>Betreuer</th>
|
||||
<th>Matrikelnr</th>
|
||||
|
||||
% for var in inhalt_alle:
|
||||
<tr id=${var}>
|
||||
<td>${inhalt_alle[var]['Vorname']}</td>
|
||||
<td>${inhalt_alle[var]['Nachname']}</td>
|
||||
<td>${inhalt_alle[var]['Gaeste']}</td>
|
||||
<td>${inhalt_alle[var]['Studiengang']}</td>
|
||||
<td>${inhalt_alle[var]['Betreuer']}</td>
|
||||
<td>${inhalt_alle[var]['Matrikelnummer']}</td>
|
||||
</tr>
|
||||
|
||||
% endfor
|
||||
</table>
|
||||
<script type="text/javascript">
|
||||
|
||||
$('#idList tr').click(function(){
|
||||
var cid = $(this).attr('id');
|
||||
##alert(cid);
|
||||
myFunction(cid);
|
||||
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
<script>
|
||||
function myFunction(cid) {
|
||||
|
||||
var person = prompt("Bitte geben Sie ihr Passwort ein:", "");
|
||||
var y = new String("")+person;
|
||||
##alert(person+ cid+ y);
|
||||
var formString = '<form method="post" action="/bearbeiten_app">';
|
||||
formString += '<input type="hidden" value="';
|
||||
formString += cid;
|
||||
formString += '" id="id_s" name="id_s" />';
|
||||
formString += '<input type="hidden" value='
|
||||
formString += y
|
||||
formString +=' pw="pw" name="pw" />';
|
||||
##alert (formString);
|
||||
var formElement = $(formString);
|
||||
$("body").append(formElement);
|
||||
$(formElement).submit();
|
||||
}
|
||||
</script>
|
||||
|
||||
</div>
|
||||
<div id="idButtonArea" class="clButtonArea">
|
||||
|
||||
<a href="/hinzufuegen_app" class="clButton">Neuer Teilnehmer</a>
|
||||
<a href="/ausschuss_app" class="clButton">Prüfungsausschuss</a>
|
||||
<a href="./Dokumentation.html" class="clButton">Dokumentation</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
92
Sammlung/P3/template/ausschuss.html
Normal file
92
Sammlung/P3/template/ausschuss.html
Normal file
@ -0,0 +1,92 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>
|
||||
Absolventenfeier Main
|
||||
</title>
|
||||
<meta charset="UTF-8" />
|
||||
<script src="//code.jquery.com/jquery-latest.min.js"></script>
|
||||
<script type="text/javascript" src="/javascript/index.js"></script>
|
||||
<style type="text/css">
|
||||
@import url("/template/template.css");
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1 id="idSiteHeader" class="clSiteHeader">
|
||||
Absolventenfeier
|
||||
</h1>
|
||||
<div id="idContent" class="clContent">
|
||||
<h2 id="idContentHeader" class="clContentHeader">
|
||||
Prüfungsausschuss
|
||||
</h2>
|
||||
<div id="idContentArea" class="clContentArea">
|
||||
|
||||
<table id="idList">
|
||||
<tr>
|
||||
<th>Vorname</th>
|
||||
<th>Nachname</th>
|
||||
<th>Anzahl der Begleitpersonen</th>
|
||||
<th>Studiengang</th>
|
||||
<th>Betreuer</th>
|
||||
<th>Matrikelnr</th>
|
||||
<th>Abschlussarbeit</th>
|
||||
|
||||
% for var in inhalt_alle:
|
||||
<tr>
|
||||
<td id=${var}>${inhalt_alle[var]['Vorname']}</td>
|
||||
<td id=${var}>${inhalt_alle[var]['Nachname']}</td>
|
||||
<td id=${var}>${inhalt_alle[var]['Gaeste']}</td>
|
||||
<td id=${var}>${inhalt_alle[var]['Studiengang']}</td>
|
||||
<td id=${var}>${inhalt_alle[var]['Betreuer']}</td>
|
||||
<td id=${var}>${inhalt_alle[var]['Matrikelnummer']}</td>
|
||||
<td id=${var}>${inhalt_alle[var]['Abschlussarbeit']}</td>
|
||||
</tr>
|
||||
|
||||
% endfor
|
||||
</table>
|
||||
<script type="text/javascript">
|
||||
|
||||
$('#idList tr td').click(function(){
|
||||
var cid = $(this).attr('id');
|
||||
##alert(cid);
|
||||
myFunction(cid);
|
||||
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
<script>
|
||||
function myFunction(cid) {
|
||||
var person = prompt("Sie können jetzt die Abschlussarbeit eintragen");
|
||||
var y = new String("")+person;
|
||||
##alert(person+ cid+ y);
|
||||
var formString = '<form method="post" action="/bearbeiten_ausschuss_app">';
|
||||
formString += '<input type="hidden" value="';
|
||||
formString += cid;
|
||||
formString += '" id="id_s" name="id_s" />';
|
||||
formString += '<input type="hidden" value='
|
||||
formString += y
|
||||
formString +=' pw="pw" name="pw" />';
|
||||
##alert (formString);
|
||||
var formElement = $(formString);
|
||||
$("body").append(formElement);
|
||||
$(formElement).submit();
|
||||
}
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
</div>
|
||||
<div id="idButtonArea" class="clButtonArea">
|
||||
|
||||
<a href="/hinzufuegen_app" class="clButton">Neuer Teilnehmer</a>
|
||||
<a href="/ausschuss_app" class="clButton">Prüfungsausschuss</a>
|
||||
<a href="./Dokumentation.html" class="clButton">Dokumentation</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
59
Sammlung/P3/template/bearbeiten.html
Normal file
59
Sammlung/P3/template/bearbeiten.html
Normal file
@ -0,0 +1,59 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>
|
||||
Registrierung
|
||||
</title>
|
||||
<meta charset="UTF-8" />
|
||||
<style type="text/css">
|
||||
@import url("/template/template.css");
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1 id="idSiteHeader" class="clSiteHeader">
|
||||
Ihre Daten
|
||||
</h1>
|
||||
<form id="idForm" class="clContent" action="/speichern_app" method="POST">
|
||||
<h2 id="idContentHeader" class="clContentHeader">
|
||||
Das Formular ausfüllen/korrigieren und auf "speichern" klicken:
|
||||
</h2>
|
||||
<div id="idContentArea" class="clContentArea">
|
||||
|
||||
<input type="hidden" value="${inhalt_alle['id']}" id="id_s" name="id_s" />
|
||||
|
||||
<div class="clFormRow">
|
||||
<label for="Vorname_s">Vorname</label>
|
||||
<input type="text" value="${inhalt_alle['Vorname']}" id="Vorname_s" name="Vorname_s" />
|
||||
</div>
|
||||
<div class="clFormRow">
|
||||
<label for="Nachname_s">Nachname</label>
|
||||
<input type="text" value="${inhalt_alle['Nachname']}" id="Nachname_s" name="Nachname_s" />
|
||||
</div>
|
||||
<div class="clFormRow">
|
||||
<label for="Gaeste_s">Anzahl der Begleitpersonen</label>
|
||||
<input type="text" value="${inhalt_alle['Gaeste']}" id="Gaeste_s" name="Gaeste_s" />
|
||||
</div>
|
||||
<div class="clFormRow">
|
||||
<label for="Studiengang_s">Studiengang</label>
|
||||
<input type="text" value="${inhalt_alle['Studiengang']}" id="Studiengang_s" name="Studiengang_s" />
|
||||
</div>
|
||||
<div class="clFormRow">
|
||||
<label for="Betreuer_s">Betreuer</label>
|
||||
<input type="text" value="${inhalt_alle['Betreuer']}" id="Betreuer_s" name="Betreuer_s" />
|
||||
</div>
|
||||
<div class="clFormRow">
|
||||
<label for="Passwort_s">Kennwort</label>
|
||||
<input type="text" value="${inhalt_alle['Passwort']}" id="Passwort_s" name="Passwort_s" />
|
||||
</div>
|
||||
<div class="clFormRow">
|
||||
<label for="Matrikelnummer_s">Matrikelnummer</label>
|
||||
<input type="text" value="${inhalt_alle['Matrikelnummer']}" id="Matrikelnummer_s" name="Matrikelnummer_s" />
|
||||
</div>
|
||||
</div>
|
||||
<div id="idButtonArea" class="clButtonArea">
|
||||
<a href="/index" title="Zurück zur Startseite">Zurück</a>
|
||||
<input type="submit" value="Speichern" />
|
||||
</div>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
62
Sammlung/P3/template/bearbeiten_ausschuss.html
Normal file
62
Sammlung/P3/template/bearbeiten_ausschuss.html
Normal file
@ -0,0 +1,62 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>
|
||||
Registrierung
|
||||
</title>
|
||||
<meta charset="UTF-8" />
|
||||
<style type="text/css">
|
||||
@import url("/template/template.css");
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1 id="idSiteHeader" class="clSiteHeader">
|
||||
Ihre Daten
|
||||
</h1>
|
||||
<form id="idForm" class="clContent" action="/speichern_ausschuss_app" method="POST">
|
||||
<h2 id="idContentHeader" class="clContentHeader">
|
||||
Das Formular ausfüllen/korrigieren und auf "speichern" klicken:
|
||||
</h2>
|
||||
<div id="idContentArea" class="clContentArea">
|
||||
|
||||
<input type="hidden" value="${inhalt_alle['id']}" id="id_s" name="id_s" />
|
||||
<div class="clFormRow">
|
||||
<label for="Vorname_s">Vorname</label>
|
||||
<input type="text" value="${inhalt_alle['Vorname']}" id="Vorname_s" name="Vorname_s" />
|
||||
</div>
|
||||
<div class="clFormRow">
|
||||
<label for="Nachname_s">Nachname</label>
|
||||
<input type="text" value="${inhalt_alle['Nachname']}" id="Nachname_s" name="Nachname_s" />
|
||||
</div>
|
||||
<div class="clFormRow">
|
||||
<label for="Gaeste_s">Anzahl der Begleitpersonen</label>
|
||||
<input type="text" value="${inhalt_alle['Gaeste']}" id="Gaeste_s" name="Gaeste_s" />
|
||||
</div>
|
||||
<div class="clFormRow">
|
||||
<label for="Studiengang_s">Studiengang</label>
|
||||
<input type="text" value="${inhalt_alle['Studiengang']}" id="Studiengang_s" name="Studiengang_s" />
|
||||
</div>
|
||||
<div class="clFormRow">
|
||||
<label for="Betreuer_s">Betreuer</label>
|
||||
<input type="text" value="${inhalt_alle['Betreuer']}" id="Betreuer_s" name="Betreuer_s" />
|
||||
</div>
|
||||
<div class="clFormRow">
|
||||
<label for="Kennwort_s">Kennwort</label>
|
||||
<input type="password" value="${inhalt_alle['Passwort']}" id="Passwort_s" name="Passwort_s" />
|
||||
</div>
|
||||
<div class="clFormRow">
|
||||
<label for="Matrikelnummer_s">Matrikelnummer</label>
|
||||
<input type="text" value="${inhalt_alle['Matrikelnummer']}" id="Matrikelnummer_s" name="Matrikelnummer_s" />
|
||||
</div>
|
||||
<div class="clFormRow">
|
||||
<label for="Abschlussarbeit_s">Abschlussarbeit</label>
|
||||
<input type="text" value="${inhalt_alle['Abschlussarbeit']}" id="Abschlussarbeit_s" name="Abschlussarbeit_s" />
|
||||
</div>
|
||||
</div>
|
||||
<div id="idButtonArea" class="clButtonArea">
|
||||
<a href="/index" title="Zurück zur Startseite">Zurück</a>
|
||||
<input type="submit" value="Speichern" />
|
||||
</div>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
36
Sammlung/P3/template/passwort.html
Normal file
36
Sammlung/P3/template/passwort.html
Normal file
@ -0,0 +1,36 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>
|
||||
Registrierung
|
||||
</title>
|
||||
<meta charset="UTF-8" />
|
||||
<style type="text/css">
|
||||
@import url("/template/template.css");
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1 id="idSiteHeader" class="clSiteHeader">
|
||||
Passwort
|
||||
</h1>
|
||||
<form id="idForm" class="clContent" action="/bearbeiten_app" method="POST">
|
||||
<h2 id="idContentHeader" class="clContentHeader">
|
||||
Sie müssen zuerst ihr Passwort eingeben:
|
||||
</h2>
|
||||
<div id="idContentArea" class="clContentArea">
|
||||
|
||||
<input type="hidden" value="${inhalt_alle['id']}" id="id_s" name="id_s" />
|
||||
|
||||
<div class="clFormRow">
|
||||
<label for="pw">Passwort</label>
|
||||
<input type="text" value="" id="pw" name="pw" />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div id="idButtonArea" class="clButtonArea">
|
||||
<a href="/index" title="Zurück zur Startseite">Zurück</a>
|
||||
<input type="submit" value="Bestätigen" />
|
||||
</div>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
38
Sammlung/P3/template/passwort_loeschen.html
Normal file
38
Sammlung/P3/template/passwort_loeschen.html
Normal file
@ -0,0 +1,38 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>
|
||||
Registrierung
|
||||
</title>
|
||||
<meta charset="UTF-8" />
|
||||
<style type="text/css">
|
||||
@import url("/template/template.css");
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1 id="idSiteHeader" class="clSiteHeader">
|
||||
Passwortabfrage
|
||||
</h1>
|
||||
<form id="idForm" class="clContent" action="/loeschen_app" method="POST">
|
||||
<h2 id="idContentHeader" class="clContentHeader">
|
||||
Sie löschen mit diesem Schritt Ihre Daten aus der Datenbank!
|
||||
|
||||
</h2>
|
||||
|
||||
<div id="idContentArea" class="clContentArea">
|
||||
|
||||
<input type="hidden" value="${inhalt_alle['id']}" id="id_s" name="id_s" />
|
||||
|
||||
<div class="clFormRow">
|
||||
<label for="pw">Passwort</label>
|
||||
<input type="text" value="" id="pw" name="pw" />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div id="idButtonArea" class="clButtonArea">
|
||||
<a href="/index" title="Zurück zur Startseite">Zurück</a>
|
||||
<input type="submit" value="Löschen" />
|
||||
</div>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
148
Sammlung/P3/template/template.css
Normal file
148
Sammlung/P3/template/template.css
Normal file
@ -0,0 +1,148 @@
|
||||
/* template.css */
|
||||
|
||||
/* allgemeine Vorgaben */
|
||||
body {
|
||||
font-family: "Open Sans", sans-serif;
|
||||
font-size: 12pt;
|
||||
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* Basislayout */
|
||||
|
||||
.clSiteHeader {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 100px;
|
||||
line-height: 100px;
|
||||
margin: 0;
|
||||
padding: 5px;
|
||||
font-size: 40pt;
|
||||
text-align: center;
|
||||
text-shadow:black 3px 2px;
|
||||
font-family: cursive, fantasy;
|
||||
color: #920B19;
|
||||
background-color: #B6B6B7;
|
||||
}
|
||||
|
||||
.clContent {
|
||||
position: absolute;
|
||||
top: 110px; /* height, padding, border, margin von idSiteHeader beachten */
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
margin: 0;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
/* Elemente im Content-Bereich */
|
||||
|
||||
.clContentHeader {
|
||||
position: absolute;
|
||||
top: 20px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
margin: 0;
|
||||
padding: 5px;
|
||||
font-size: 18pt;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.clContentArea {
|
||||
position: absolute;
|
||||
top: 80px; /* height, padding, border, margin von idContentHeader beachten */
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 40px; /* height, padding, border, margin von idButtonArea beachten */
|
||||
margin: 10px 0;
|
||||
margin-left: 10px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.clButtonArea {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
/*float: left; width: 10px:*/
|
||||
bottom: 0;
|
||||
height: 80px;
|
||||
line-height: 80px;
|
||||
margin: 0;
|
||||
padding: 5px;
|
||||
text-align: center;
|
||||
background-color: #B6B6B7;
|
||||
}
|
||||
|
||||
/* Links und Submit-Schalter im Buttonbereich gestalten */
|
||||
|
||||
.clButtonArea a, input[type="submit"] {
|
||||
margin: 0 5px;
|
||||
padding: 3px 6px;
|
||||
font-size: 14pt;
|
||||
text-decoration: none;
|
||||
border: 2px solid;
|
||||
color: black;
|
||||
background-color: buttonface;
|
||||
}
|
||||
|
||||
/* unterschiedliche Kennzeichnungen je nach Bedienung vermeiden */
|
||||
|
||||
.clButtonArea a:hover, a:visited, a:active {
|
||||
color: black;
|
||||
}
|
||||
|
||||
/* Gestaltung von Tabellen */
|
||||
|
||||
#idList {
|
||||
table-layout: fixed;
|
||||
width: auto;
|
||||
border: 2px solid;
|
||||
border-collapse: collapse;
|
||||
margin:auto;
|
||||
}
|
||||
|
||||
#idList th {
|
||||
text-align: center;
|
||||
padding-left: 5px;
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
|
||||
#idList th, #idList td {
|
||||
padding: 3px;
|
||||
border: 2px solid;
|
||||
}
|
||||
|
||||
/* Gestaltung von Formularen */
|
||||
|
||||
/* das Formular nochmals zusätzlich gestalten */
|
||||
#idForm .clContentArea {
|
||||
width: 500px;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.clFormRow {
|
||||
position: relative; /* damit das Element in jedem Fall "positioniert" ist und damit als Bezugspunkt geeignet ist */
|
||||
height: 30px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.clFormRow label {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 240px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.clFormRow input {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 250px;
|
||||
width: 250px;
|
||||
}
|
||||
/* EOF */
|
14
Sammlung/P3/template/weiterleiten.js
Normal file
14
Sammlung/P3/template/weiterleiten.js
Normal file
@ -0,0 +1,14 @@
|
||||
<script>
|
||||
function redirect(){
|
||||
|
||||
href="/hinzufuegen_app";
|
||||
}
|
||||
|
||||
function main(){
|
||||
window.setTimeout(redirect, 2000);
|
||||
}
|
||||
|
||||
|
||||
$(document).ready(main);
|
||||
|
||||
</script>
|
Reference in New Issue
Block a user