Feature Complete
This commit is contained in:
parent
08eb4edae5
commit
aa300044f6
@ -1,28 +1,49 @@
|
||||
# Web-Praktikum Gruppe K
|
||||
## Kai Wansart und Felix Hoster
|
||||
### 16.11.2016
|
||||
# Web-Praktikum Gruppe A
|
||||
## Kai Wansart 921862 und Felix Hoster xxxxxx
|
||||
### 15.12.2016
|
||||
|
||||
## Beschreibung der Lösung
|
||||
### Aufgabe der Anwendung:
|
||||
Die Praktikumsaufgabe war, eine Ünterstützung der Betreuung von Praxisphasen mit einer Web-Anwendung zu erstellen. Praxisphasen werden
|
||||
von externen Partnern (Firmen) angeboten, Studenten können diese Angebote nutzen, wenn sie einen Lehrenden als Betreuer
|
||||
finden
|
||||
- Entwickeln und Umsetzen eines Praxisphasenmanagers (PPM).
|
||||
- Schnittstelle für Firmen, Dozenten und Studenten
|
||||
- Verwaltung der Daten, zB. Benutzerverwaltung und Angebotverwaltung
|
||||
|
||||
|
||||
|
||||
#### Übersicht der fachlichen Funktion
|
||||
- Datenpflege Studenten: Eine Liste mit allen erstellten Studenten (Name, Vorname, Matrikelnummer)
|
||||
- Datenpflege Lehrende: Eine Übersicht mit allen Lehrenden (Name, Titel, Lehrgebiet)
|
||||
- Datenpflege Firmenverzeichniss: Eine Liste mit einer kleinen Übersicht über einzelne Firmen (Schwerpunkt, Sitz, Name, Branche, Mitarbeiteranzahl)
|
||||
- Datenpflege Praxisphase: Erhält man eine kurze Übersicht über Angebote für die Studenten (Firmenbetreuer, Beschreibung, Name, Voraussetzung, Firma)
|
||||
- Auswahl Praxisphasen: Dort können die Studenten mit einem Professor sich eine Praxisphase aussuchen
|
||||
- Auswertung Firma: Hier werden die Firmen bewertet, die ein Angebot für die Praxisphase bewertet
|
||||
- Auswertung Praxisphasen nach Studenten: Hier sieht man die Bewertung der Studenten über die einzelnen Angebote
|
||||
- Auswertung Praxisphase nach Betreuern: Hier sieht man die Bewertung der Praxisphasen - Betreuer
|
||||
|
||||
- Datenpflege Studenten:
|
||||
- Ausgabe Studenten im System
|
||||
- Verwaltung bestehender Datensätze
|
||||
- Erstellen neuer Datensätze
|
||||
- Datenpflege Lehrende:
|
||||
- Ausgabe Lehrenden im System
|
||||
- Verwaltung bestehender Datensätze
|
||||
- Erstellen neuer Datensätze
|
||||
- Datenpflege Firmenverzeichnis:
|
||||
- Ausgabe Firmen im System
|
||||
- Verwaltung bestehender Datensätze
|
||||
- Erstellen neuer Datensätze
|
||||
- Datenpflege Praxisphase:
|
||||
- Ausgabe Angebote Praxiphasenplätze im System
|
||||
- Verwaltung bestehender Datensätze
|
||||
- Erstellen neuer Datensätze
|
||||
- Auswahl Praxisphasen:
|
||||
- Schnittstelle für Studenten, um sich in Praxisphasenplatz einzuschreiben, mit Angabe von Zeitraum
|
||||
- Auswertung Firma:
|
||||
- Ausgabe aller Firmen mit den jeweiligen Studenten, die sich bei Ihnen zu einem Praxisphasenplatz eingeschrieben haben
|
||||
- Auswertung Praxisphasen nach Studenten:
|
||||
- Ausgabe aller Studenten mit Informationen, bei welcher Firma sie wann ihre Praxisphase machen / gemacht haben
|
||||
- Auswertung Praxisphase nach Betreuern:
|
||||
- Ausgabe aller Betreuer mit den jeweiligen Studenten, die sie betreuen.
|
||||
|
||||
## Beschreibung des Servers
|
||||
#### Zweck
|
||||
- Firmen die Möglichkeit geben, Studenten Praxisphasenplätze anzubieten
|
||||
- Studenten die Möglichkeit geben, Praxisphasenplätze auszuwählen
|
||||
- Auswertungen anbieten
|
||||
|
||||
#### Aufbau (Bestandteile der Komponente)
|
||||
-
|
||||
|
||||
#### Zusammenwirken mit anderen Komponenten
|
||||
|
||||
|
Binary file not shown.
@ -1,332 +0,0 @@
|
||||
import json
|
||||
import cherrypy
|
||||
from app import database
|
||||
from app import view
|
||||
|
||||
#----------------------------------------------------------
|
||||
class Application_cl(object):
|
||||
#----------------------------------------------------------
|
||||
exposed = True
|
||||
|
||||
#----------------------------------------------------------
|
||||
def __init__(self):
|
||||
#----------------------------------------------------------
|
||||
self.db_o = database.Database_cl()
|
||||
self.view_o = view.View_cl()
|
||||
|
||||
#----------------------------------------------------------
|
||||
def GET(self, cat=None, id=None):
|
||||
#----------------------------------------------------------
|
||||
|
||||
return json.dumps(retVal)
|
||||
|
||||
#----------------------------------------------------------
|
||||
def PUT(self, **data):
|
||||
#----------------------------------------------------------
|
||||
|
||||
return json.dumps(retVal)
|
||||
|
||||
#----------------------------------------------------------
|
||||
def POST(self, cat, id, **data_opl):
|
||||
#----------------------------------------------------------
|
||||
|
||||
return json.dumps(retVal)
|
||||
|
||||
#----------------------------------------------------------
|
||||
def DELETE(self, cat, id):
|
||||
#----------------------------------------------------------
|
||||
|
||||
return json.dumps(retVal)
|
||||
|
||||
#----------------------------------------------------------
|
||||
def default(self, *arguments, **kwargs):
|
||||
#----------------------------------------------------------
|
||||
msg_s = "unbekannte Anforderung: " + \
|
||||
str(arguments) + \
|
||||
' ' + \
|
||||
str(kwargs)
|
||||
raise cherrypy.HTTPError(404, msg_s)
|
||||
|
||||
# /* import cherrypy
|
||||
# from .database import Database_cl
|
||||
# from .view import View_cl
|
||||
# import collections
|
||||
# orderedDict = collections.OrderedDict()
|
||||
# from collections import OrderedDict
|
||||
|
||||
# #----------------------------------------------------------
|
||||
# class Application_cl(object):
|
||||
# #----------------------------------------------------------
|
||||
|
||||
# #-------------------------------------------------------
|
||||
# # Request Processing
|
||||
# #-------------------------------------------------------
|
||||
|
||||
# #-------------------------------------------------------
|
||||
# def __init__(self):
|
||||
# #-------------------------------------------------------
|
||||
# # spezielle Initialisierung können hier eingetragen werden
|
||||
# self.db = Database_cl()
|
||||
# self.view = View_cl()
|
||||
# @cherrypy.expose
|
||||
|
||||
# #-------------------------------------------------------
|
||||
# def index(self):
|
||||
# #-------------------------------------------------------
|
||||
# print("Index\n")
|
||||
# return self.GenerateIndex()
|
||||
# @cherrypy.expose
|
||||
|
||||
# #-------------------------------------------------------
|
||||
# def category(self, cat=None):
|
||||
# #-------------------------------------------------------
|
||||
# print("Category: ", cat, "\n")
|
||||
# if(cat==None):
|
||||
# return self.GenerateIndex()
|
||||
# else:
|
||||
# return self.GenerateList(cat)
|
||||
# @cherrypy.expose
|
||||
|
||||
# #-------------------------------------------------------
|
||||
# def choice(self):
|
||||
# #-------------------------------------------------------
|
||||
# print("Choice \n")
|
||||
# return self.GenerateListChoice()
|
||||
# @cherrypy.expose
|
||||
|
||||
# #-------------------------------------------------------
|
||||
# def eval(self, cat):
|
||||
# #-------------------------------------------------------
|
||||
# print("Eval \n")
|
||||
# self.db.CheckDates()
|
||||
# return self.GenerateListEval(cat)
|
||||
# @cherrypy.expose
|
||||
|
||||
# #-------------------------------------------------------
|
||||
# def detail(self, cat=None, id=None):
|
||||
# #-------------------------------------------------------
|
||||
# if(cat!=None):
|
||||
# if(id!=None):
|
||||
# print("Cat=", cat, " id=", id)
|
||||
# return self.GenerateDetail(cat, id)
|
||||
# else:
|
||||
# print("ID=None Cat=", cat)
|
||||
# return self.GenerateDetail(cat)
|
||||
# else:
|
||||
# return self.GenerateIndex()
|
||||
# @cherrypy.expose
|
||||
|
||||
# #-------------------------------------------------------
|
||||
# def detailchoice(self, id):
|
||||
# #-------------------------------------------------------
|
||||
# print("id=", id)
|
||||
# return self.GenerateDetailChoice(id)
|
||||
|
||||
# @cherrypy.expose
|
||||
|
||||
# #-------------------------------------------------------
|
||||
# def save(self, cat=None, **data):
|
||||
# #-------------------------------------------------------
|
||||
# print("Save: ", cat)
|
||||
# dataTmp = data
|
||||
# return self.GenerateSave(dataTmp, cat)
|
||||
# @cherrypy.expose
|
||||
|
||||
# #-------------------------------------------------------
|
||||
# def saveChoice(self, **data):
|
||||
# #-------------------------------------------------------
|
||||
# print("Save: Choice")
|
||||
# dataTmp = data
|
||||
# return self.GenerateSaveChoice(dataTmp)
|
||||
# @cherrypy.expose
|
||||
|
||||
# #-------------------------------------------------------
|
||||
# def delete(self, cat=None, id=None):
|
||||
# #-------------------------------------------------------
|
||||
# print("Delete",cat,id)
|
||||
# return self.GenerateDelete(cat, id)
|
||||
# @cherrypy.expose
|
||||
|
||||
# #-------------------------------------------------------
|
||||
# def default(self, *arguments, **kwargs):
|
||||
# #-------------------------------------------------------
|
||||
# msg_s = "unbekannte Anforderung: " + \
|
||||
# str(arguments) + \
|
||||
# ''+ \
|
||||
# str(kwargs)
|
||||
# raise cherrypy.HTTPError(404, msg_s)
|
||||
# default.exposed= True
|
||||
|
||||
# #-------------------------------------------------------
|
||||
# # Functions
|
||||
# #-------------------------------------------------------
|
||||
|
||||
# #-------------------------------------------------------
|
||||
# def GenerateIndex(self):
|
||||
# #-------------------------------------------------------
|
||||
# return self.view.CreateIndex()
|
||||
|
||||
# #-------------------------------------------------------
|
||||
# def GenerateList(self, category):
|
||||
# #-------------------------------------------------------
|
||||
# self.db.ReadAll()
|
||||
# data = {}
|
||||
# data['content'] = {}
|
||||
# data['headings'] = {}
|
||||
# data['category'] = category
|
||||
# data['content'] = self.db.data[category]
|
||||
# if(len(data['content']) != 0):
|
||||
# print(len(data['content']))
|
||||
# contentFirst = list(data['content'].keys())[0]
|
||||
# data['headings'] = list(data['content'][contentFirst].keys())
|
||||
# print(data)
|
||||
# return self.view.CreateList(data)
|
||||
|
||||
# #-------------------------------------------------------
|
||||
# def GenerateListChoice(self):
|
||||
# #-------------------------------------------------------
|
||||
# self.db.ReadAll()
|
||||
# data = {}
|
||||
# data['content'] = {}
|
||||
# offerings = self.db.data['Angebote']
|
||||
# for key, value in offerings.items():
|
||||
# for key2, value2 in value.items():
|
||||
# if(key2 == 'Status'):
|
||||
# if(value2 == 'Angebot'):
|
||||
# data['content'][key] = value
|
||||
|
||||
# print(data)
|
||||
# return self.view.CreateListChoice(data)
|
||||
|
||||
# #-------------------------------------------------------
|
||||
# def GenerateDetail(self, category, id=None):
|
||||
# #-------------------------------------------------------
|
||||
# self.db.ReadAll()
|
||||
# data = {}
|
||||
# data['category'] = category
|
||||
# print("Detail",category,id)
|
||||
# if(id != None):
|
||||
# data['id'] = id
|
||||
# data['content'] = self.db.ReadEntry(category, id)
|
||||
# else:
|
||||
# data['id'] = None
|
||||
# data['content'] = self.db.GetDefault(category)
|
||||
# print(data['content'])
|
||||
# if(category == 'Angebote'):
|
||||
# print("Angebote")
|
||||
# data['Firmen'] = self.db.data['Firmen']
|
||||
# print(data, "\n")
|
||||
# return self.view.CreateDetail(data)
|
||||
|
||||
# #-------------------------------------------------------
|
||||
# def GenerateDetailChoice(self, id):
|
||||
# #-------------------------------------------------------
|
||||
# self.db.ReadAll()
|
||||
# data = {}
|
||||
# data['id'] = id
|
||||
# data = self.db.data['Angebote'][id]
|
||||
# data['Studenten'] = self.db.data['Studenten']
|
||||
# data['Lehrender'] = self.db.data['Lehrender']
|
||||
# print(data, "\n")
|
||||
# return self.view.CreateDetailChoice(data)
|
||||
|
||||
# #-------------------------------------------------------
|
||||
# def GenerateListEval(self, cat):
|
||||
# #-------------------------------------------------------
|
||||
# self.db.ReadAll()
|
||||
# data = {}
|
||||
# Studenten = self.db.data['Studenten']
|
||||
# Lehrender = self.db.data['Lehrender']
|
||||
# Firmen = self.db.data['Firmen']
|
||||
# Angebote = self.db.data['Angebote']
|
||||
|
||||
# data['category'] = cat
|
||||
# if(cat == 'Firmen'):
|
||||
# for keyFirma, valueFirma in sorted(Firmen.items()):
|
||||
# data[valueFirma['Name']] = {}
|
||||
# data[valueFirma['Name']]['Name'] = valueFirma['Name']
|
||||
# data[valueFirma['Name']]['Angebote'] = {}
|
||||
# data[valueFirma['Name']]['Angebote']['Angebot'] = {}
|
||||
# data[valueFirma['Name']]['Angebote']['aktuell'] = {}
|
||||
# data[valueFirma['Name']]['Angebote']['abgeschlossen'] = {}
|
||||
# for keyAngebote, valueAngebote in Angebote.items():
|
||||
# if(valueAngebote['Firma'] == valueFirma['Name']):
|
||||
# data[valueFirma['Name']]['Angebote'][valueAngebote['Status']][valueAngebote['Name']] = {}
|
||||
# data[valueFirma['Name']]['Angebote'][valueAngebote['Status']][valueAngebote['Name']]['Name'] = valueAngebote['Name']
|
||||
# if(valueAngebote['Student'] != ''):
|
||||
# data[valueFirma['Name']]['Angebote'][valueAngebote['Status']][valueAngebote['Name']]['Student'] = Studenten[valueAngebote['Student']]['Name']
|
||||
# else:
|
||||
# data[valueFirma['Name']]['Angebote'][valueAngebote['Status']][valueAngebote['Name']]['Student'] = ''
|
||||
# if(valueAngebote['Lehrender'] != ''):
|
||||
# data[valueFirma['Name']]['Angebote'][valueAngebote['Status']][valueAngebote['Name']]['Lehrender'] = Lehrender[valueAngebote['Lehrender']]['Name']
|
||||
# else:
|
||||
# data[valueFirma['Name']]['Angebote'][valueAngebote['Status']][valueAngebote['Name']]['Lehrender'] = ''
|
||||
# data[valueFirma['Name']]['Angebote'][valueAngebote['Status']][valueAngebote['Name']]['ZeitraumVon'] = valueAngebote['ZeitraumVon']
|
||||
# data[valueFirma['Name']]['Angebote'][valueAngebote['Status']][valueAngebote['Name']]['ZeitraumBis'] = valueAngebote['ZeitraumBis']
|
||||
# print(data)
|
||||
# return self.view.CreateListEval(data)
|
||||
# elif(cat == 'Studenten'):
|
||||
# for keyStudent, valueStudent in Studenten.items():
|
||||
# data[valueStudent['Name']] = {}
|
||||
# data[valueStudent['Name']]['Angebote'] = {}
|
||||
# data[valueStudent['Name']]['Angebote']['Angebot'] = {}
|
||||
# data[valueStudent['Name']]['Angebote']['aktuell'] = {}
|
||||
# data[valueStudent['Name']]['Angebote']['abgeschlossen'] = {}
|
||||
# for keyAngebot, valueAngebot in Angebote.items():
|
||||
# if(valueAngebot['Student'] == valueStudent['id']):
|
||||
# data[valueStudent['Name']]['Angebote'][valueAngebot['Status']][keyAngebot] = {}
|
||||
# data[valueStudent['Name']]['Angebote'][valueAngebot['Status']][keyAngebot]['Lehrender'] = Lehrender[valueAngebot['Lehrender']]['Name']
|
||||
# data[valueStudent['Name']]['Angebote'][valueAngebot['Status']][keyAngebot]['Status'] = valueAngebot['Status']
|
||||
# data[valueStudent['Name']]['Angebote'][valueAngebot['Status']][keyAngebot]['Praxisphase'] = valueAngebot['Name']
|
||||
# data[valueStudent['Name']]['Angebote'][valueAngebot['Status']][keyAngebot]['Firma'] = valueAngebot['Firma']
|
||||
# data[valueStudent['Name']]['Angebote'][valueAngebot['Status']][keyAngebot]['ZeitraumVon'] = valueAngebot['ZeitraumVon']
|
||||
# data[valueStudent['Name']]['Angebote'][valueAngebot['Status']][keyAngebot]['ZeitraumBis'] = valueAngebot['ZeitraumBis']
|
||||
# elif(cat == 'Lehrender'):
|
||||
# for keyLehrende, valueLehrende in Lehrender.items():
|
||||
# data[valueLehrende['Name']] = {}
|
||||
# data[valueLehrende['Name']]['Angebote'] = {}
|
||||
# data[valueLehrende['Name']]['Angebote']['Angebot'] = {}
|
||||
# data[valueLehrende['Name']]['Angebote']['aktuell'] = {}
|
||||
# data[valueLehrende['Name']]['Angebote']['abgeschlossen'] = {}
|
||||
# for keyAngebot, valueAngebot in Angebote.items():
|
||||
# if(valueAngebot['Lehrender'] == valueLehrende['id']):
|
||||
# data[valueLehrende['Name']]['Angebote'][valueAngebot['Status']][keyAngebot] = {}
|
||||
# data[valueLehrende['Name']]['Angebote'][valueAngebot['Status']][keyAngebot]['Student'] = Studenten[valueAngebot['Student']]['Name']
|
||||
# data[valueLehrende['Name']]['Angebote'][valueAngebot['Status']][keyAngebot]['Status'] = valueAngebot['Status']
|
||||
# data[valueLehrende['Name']]['Angebote'][valueAngebot['Status']][keyAngebot]['Praxisphase'] = valueAngebot['Name']
|
||||
# data[valueLehrende['Name']]['Angebote'][valueAngebot['Status']][keyAngebot]['Firma'] = valueAngebot['Firma']
|
||||
# data[valueLehrende['Name']]['Angebote'][valueAngebot['Status']][keyAngebot]['ZeitraumVon'] = valueAngebot['ZeitraumVon']
|
||||
# data[valueLehrende['Name']]['Angebote'][valueAngebot['Status']][keyAngebot]['ZeitraumBis'] = valueAngebot['ZeitraumBis']
|
||||
|
||||
# return self.view.CreateListEval(data)
|
||||
|
||||
|
||||
# #-------------------------------------------------------
|
||||
# def GenerateSave(self, dataTmp, category):
|
||||
# #-------------------------------------------------------
|
||||
# if(category == None):
|
||||
# return self.view.CreateIndex()
|
||||
# else:
|
||||
# self.db.Save(dataTmp, category)
|
||||
# return self.GenerateList(category)
|
||||
|
||||
# #-------------------------------------------------------
|
||||
# def GenerateSaveChoice(self, dataTmp):
|
||||
# #-------------------------------------------------------
|
||||
# if(dataTmp['Student'] != ''):
|
||||
# angebote = self.db.CheckOfferings(dataTmp['Student'])
|
||||
# print(angebote)
|
||||
# if(angebote == 0):
|
||||
# print("Save")
|
||||
# self.db.Save(dataTmp, 'Angebote')
|
||||
# return self.GenerateListChoice()
|
||||
|
||||
# #-------------------------------------------------------
|
||||
# def GenerateDelete(self, category, id):
|
||||
# #-------------------------------------------------------
|
||||
# if(category == None or id == None):
|
||||
# return self.view.CreateIndex()
|
||||
# else:
|
||||
# self.db.Delete(category, id)
|
||||
# return self.GenerateList(category)
|
||||
# #EOF
|
@ -16,16 +16,34 @@ class Choice(object):
|
||||
self.db = database.Database()
|
||||
|
||||
#-------------------------------------------------------
|
||||
def GET(self):
|
||||
def GET(self, view, id=None):
|
||||
#-------------------------------------------------------
|
||||
self.db.ReadAll()
|
||||
data = {}
|
||||
data['content'] = {}
|
||||
offerings = self.db.data['Angebote']
|
||||
for key, value in offerings.items():
|
||||
for key2, value2 in value.items():
|
||||
if(key2 == 'Status'):
|
||||
if(value2 == 'Angebot'):
|
||||
data['content'][key] = value
|
||||
if(view == "List"):
|
||||
data['content'] = {}
|
||||
offerings = self.db.data['Angebote']
|
||||
for key, value in offerings.items():
|
||||
for key2, value2 in value.items():
|
||||
if(key2 == 'Status'):
|
||||
if(value2 == 'Angebot'):
|
||||
data['content'][key] = value
|
||||
elif(view == "Detail"):
|
||||
data['id'] = id
|
||||
data = self.db.data['Angebote'][id]
|
||||
data['Studenten'] = self.db.data['Studenten']
|
||||
data['Lehrender'] = self.db.data['Lehrender']
|
||||
print(data)
|
||||
return json.dumps(data)
|
||||
|
||||
#-------------------------------------------------------
|
||||
def POST(self, **data):
|
||||
#-------------------------------------------------------
|
||||
if(data['Student'] != ''):
|
||||
angebote = self.db.CheckOfferings(data['Student'])
|
||||
print(angebote)
|
||||
if(angebote == 0):
|
||||
print("Save")
|
||||
self.db.Save(data, 'Angebote')
|
||||
print(data)
|
||||
return self.GET("List")
|
@ -1,52 +0,0 @@
|
||||
# import os.path
|
||||
# from mako.template import Template
|
||||
# from mako.lookup import TemplateLookup
|
||||
|
||||
# #----------------------------------------------------------
|
||||
# class View_cl(object):
|
||||
# #----------------------------------------------------------
|
||||
|
||||
# #-------------------------------------------------------
|
||||
# def __init__(self):
|
||||
# #-------------------------------------------------------
|
||||
# self.path = 'templates'
|
||||
# self.lookup = TemplateLookup(directories=['/'])
|
||||
|
||||
# #-------------------------------------------------------
|
||||
# def Create(self, template, data):
|
||||
# #-------------------------------------------------------
|
||||
# print("CreateView\n")
|
||||
# template = Template(filename=os.path.join(self.path, template), output_encoding='utf-8', lookup=self.lookup)
|
||||
# return template.render(data = data)
|
||||
|
||||
# #-------------------------------------------------------
|
||||
# def CreateIndex(self):
|
||||
# #-------------------------------------------------------
|
||||
# print("CreateIndex\n")
|
||||
# data = None
|
||||
# return self.Create('index.tpl', data)
|
||||
|
||||
# #-------------------------------------------------------
|
||||
# def CreateList(self, data):
|
||||
# #-------------------------------------------------------
|
||||
# return self.Create('list.tpl', data)
|
||||
|
||||
# #-------------------------------------------------------
|
||||
# def CreateListChoice(self, data):
|
||||
# #-------------------------------------------------------
|
||||
# return self.Create('listChoice.tpl', data)
|
||||
|
||||
# #-------------------------------------------------------
|
||||
# def CreateListEval(self, data):
|
||||
# #-------------------------------------------------------
|
||||
# return self.Create('listEval.tpl', data)
|
||||
|
||||
# #-------------------------------------------------------
|
||||
# def CreateDetail(self, data):
|
||||
# #-------------------------------------------------------
|
||||
# return self.Create('detail.tpl', data)
|
||||
|
||||
# #-------------------------------------------------------
|
||||
# def CreateDetailChoice(self, data):
|
||||
# #-------------------------------------------------------
|
||||
# return self.Create('detailChoice.tpl', data)
|
@ -1,13 +1,13 @@
|
||||
{
|
||||
"ZeitraumBis": "02.02.2003",
|
||||
"Firma": "Apple",
|
||||
"ZeitraumVon": "02.02.2002",
|
||||
"Lehrender": "5",
|
||||
"id": "27",
|
||||
"Status": "abgeschlossen",
|
||||
"Name": "Angebot Apple 2",
|
||||
"ZeitraumVon": "02.02.2002",
|
||||
"Student": "11",
|
||||
"Beschreibung": "Praxisphase Apple",
|
||||
"Lehrender": "5",
|
||||
"Firma": "Apple",
|
||||
"Firmenbetreuer": "Horst",
|
||||
"Voraussetzungen": "Keine",
|
||||
"Name": "Angebot Apple 2"
|
||||
"id": "27",
|
||||
"Beschreibung": "Praxisphase Apple"
|
||||
}
|
13
Praktikum2/ppm2/data/Angebote/28.json
Normal file
13
Praktikum2/ppm2/data/Angebote/28.json
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"ZeitraumBis": "2.2.2001",
|
||||
"Status": "abgeschlossen",
|
||||
"Name": "testa",
|
||||
"ZeitraumVon": "1.1.2000",
|
||||
"Student": "13",
|
||||
"Lehrender": "6",
|
||||
"Firma": "Apple",
|
||||
"Firmenbetreuer": "testa",
|
||||
"Voraussetzungen": "a",
|
||||
"id": "28",
|
||||
"Beschreibung": "testa"
|
||||
}
|
@ -1,13 +1,13 @@
|
||||
{
|
||||
"ZeitraumBis": "",
|
||||
"Firmenbetreuer": "firmenbetreuer",
|
||||
"id": "30",
|
||||
"ZeitraumVon": "",
|
||||
"ZeitraumBis": "02.02.2000",
|
||||
"Status": "abgeschlossen",
|
||||
"Name": "name",
|
||||
"Beschreibung": "beschreibung",
|
||||
"Student": "",
|
||||
"Lehrender": "",
|
||||
"Status": "Angebot",
|
||||
"ZeitraumVon": "01.01.2000",
|
||||
"Student": "12",
|
||||
"Lehrender": "6",
|
||||
"Firma": "IBM",
|
||||
"Firmenbetreuer": "firmenbetreuer",
|
||||
"Voraussetzungen": "voraussetzungen",
|
||||
"Firma": "IBM"
|
||||
"id": "30",
|
||||
"Beschreibung": "beschreibung"
|
||||
}
|
@ -1 +1 @@
|
||||
27
|
||||
28
|
@ -1 +1 @@
|
||||
15
|
||||
17
|
212
Praktikum2/ppm2/doc/PPM2.html
Normal file
212
Praktikum2/ppm2/doc/PPM2.html
Normal file
@ -0,0 +1,212 @@
|
||||
<!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="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
|
||||
<![endif]-->
|
||||
</head>
|
||||
<body>
|
||||
<h1 id="web-praktikum">Web-Praktikum</h1>
|
||||
<h2 id="termin-3">Termin 3</h2>
|
||||
<ul>
|
||||
<li>Gruppe A
|
||||
<ul>
|
||||
<li>Kai Wansart: 921862</li>
|
||||
<li>Felix Hoster: xxxxxx</li>
|
||||
</ul></li>
|
||||
<li>15.12.2016</li>
|
||||
</ul>
|
||||
<h2 id="beschreibung-der-lösung">Beschreibung der Lösung</h2>
|
||||
<h3 id="aufgabe-der-anwendung">Aufgabe der Anwendung</h3>
|
||||
<ul>
|
||||
<li>Entwickeln und Umsetzen eines Praxisphasenmanagers (PPM).</li>
|
||||
<li>Schnittstelle für Firmen, Dozenten und Studenten</li>
|
||||
<li>Verwaltung der Daten, zB. Benutzerverwaltung und Angebotverwaltung</li>
|
||||
</ul>
|
||||
<h3 id="übersicht-der-fachlichen-funktionen">Übersicht der fachlichen Funktionen</h3>
|
||||
<ul>
|
||||
<li>Datenpflege Studenten:
|
||||
<ul>
|
||||
<li>Ausgabe Studenten im System</li>
|
||||
<li>Verwaltung bestehender Datensätze</li>
|
||||
<li>Erstellen neuer Datensätze</li>
|
||||
</ul></li>
|
||||
<li>Datenpflege Lehrende:
|
||||
<ul>
|
||||
<li>Ausgabe Lehrenden im System</li>
|
||||
<li>Verwaltung bestehender Datensätze</li>
|
||||
<li>Erstellen neuer Datensätze</li>
|
||||
</ul></li>
|
||||
<li>Datenpflege Firmenverzeichnis:
|
||||
<ul>
|
||||
<li>Ausgabe Firmen im System</li>
|
||||
<li>Verwaltung bestehender Datensätze</li>
|
||||
<li>Erstellen neuer Datensätze</li>
|
||||
</ul></li>
|
||||
<li>Datenpflege Praxisphase:
|
||||
<ul>
|
||||
<li>Ausgabe Angebote Praxiphasenplätze im System</li>
|
||||
<li>Verwaltung bestehender Datensätze</li>
|
||||
<li>Erstellen neuer Datensätze</li>
|
||||
</ul></li>
|
||||
<li>Auswahl Praxisphasen:
|
||||
<ul>
|
||||
<li>Schnittstelle für Studenten, um sich in Praxisphasenplatz einzuschreiben, mit Angabe von Zeitraum</li>
|
||||
</ul></li>
|
||||
<li>Auswertung Firma:
|
||||
<ul>
|
||||
<li>Ausgabe aller Firmen mit den jeweiligen Studenten, die sich bei Ihnen zu einem Praxisphasenplatz eingeschrieben haben</li>
|
||||
</ul></li>
|
||||
<li>Auswertung Praxisphasen nach Studenten:
|
||||
<ul>
|
||||
<li>Ausgabe aller Studenten mit Informationen, bei welcher Firma sie wann ihre Praxisphase machen / gemacht haben</li>
|
||||
</ul></li>
|
||||
<li>Auswertung Praxisphase nach Betreuern:
|
||||
<ul>
|
||||
<li>Ausgabe aller Betreuer mit den jeweiligen Studenten, die sie betreuen.</li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
<h2 id="beschreibung-des-client">Beschreibung des Client</h2>
|
||||
<ul>
|
||||
<li>Basis: Html Vorlage</li>
|
||||
<li>Dynamischer Inhalt via Javascript:
|
||||
<ul>
|
||||
<li>Lädt Inhalte im JSON Format von Server</li>
|
||||
<li>Rendert Inhalte in Templates</li>
|
||||
<li>Fügt gerenderte Inhalte in HTML (DOM) ein</li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
<h2 id="beschreibung-der-komponenten-des-servers">Beschreibung der Komponenten des Servers</h2>
|
||||
<ul>
|
||||
<li>Server: Object-Dispatching --> Weiterleitung der Anfragen an jeweilige Funktionen
|
||||
<ul>
|
||||
<li>category
|
||||
<ul>
|
||||
<li>Zweck
|
||||
<ul>
|
||||
<li>Alle Kategorien (Studenten, Lehrende, Firmen, Angebote)</li>
|
||||
<li>Rückgabe der Inhalte</li>
|
||||
<li>Verwaltung der Daten</li>
|
||||
</ul></li>
|
||||
<li>Zusammenwirken mit anderen Komponenten
|
||||
<ul>
|
||||
<li>Zugriff auf Datenbank um Daten zu verwalten</li>
|
||||
</ul></li>
|
||||
<li>Aufbau
|
||||
<ul>
|
||||
<li>GET: Rückgabe</li>
|
||||
<li>POST: Eingabe</li>
|
||||
<li>DELETE: Löschen</li>
|
||||
</ul></li>
|
||||
<li>API
|
||||
<ul>
|
||||
<li>GET ( Kategorie, Ansicht, ID)</li>
|
||||
<li>POST ( Kategorie, Daten )</li>
|
||||
<li>DELETE ( Kategorie, ID )</li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
<li>choice
|
||||
<ul>
|
||||
<li>Zweck
|
||||
<ul>
|
||||
<li>Rückgabe der bestehenden Angebote</li>
|
||||
<li>Verwaltung der Daten
|
||||
<ul>
|
||||
<li>Annahme mit Datum</li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
<li>Zusammenwirken mit anderen Komponenten
|
||||
<ul>
|
||||
<li>Zugriff auf Datenbank um Daten zu verwalten</li>
|
||||
</ul></li>
|
||||
<li>Aufbau
|
||||
<ul>
|
||||
<li>GET: Rückgabe</li>
|
||||
<li>POST: Eingabe</li>
|
||||
</ul></li>
|
||||
<li>API
|
||||
<ul>
|
||||
<li>GET ( Ansicht, ID )</li>
|
||||
<li>POST ( Daten )</li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
<li>eval
|
||||
<ul>
|
||||
<li>Zweck
|
||||
<ul>
|
||||
<li>Auswertung</li>
|
||||
<li>Rückgabe der Auswertungen</li>
|
||||
</ul></li>
|
||||
<li>Zusammenwirken mit anderen Komponenten
|
||||
<ul>
|
||||
<li>Zugriff auf Datenbank um Daten zu verwalten</li>
|
||||
</ul></li>
|
||||
<li>Aufbau
|
||||
<ul>
|
||||
<li>GET: Rückgabe und Auswertung</li>
|
||||
</ul></li>
|
||||
<li>API
|
||||
<ul>
|
||||
<li>GET ( Kategorie )</li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
<li>database
|
||||
<ul>
|
||||
<li>Zweck -Verwaltung - auslesen - bearbeiten - speichern - löschen</li>
|
||||
<li>Zusammenwirken mit anderen Komponenten
|
||||
<ul>
|
||||
<li>category, choice, eval greifen auf Datenbank zu</li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
<li>template
|
||||
<ul>
|
||||
<li>Zweck
|
||||
<ul>
|
||||
<li>Einlesen aller Templates</li>
|
||||
<li>Rückgabe aller Templates</li>
|
||||
</ul></li>
|
||||
<li>Aufbau
|
||||
<ul>
|
||||
<li>GET: Rückgabe aller Templates</li>
|
||||
</ul></li>
|
||||
<li>API
|
||||
<ul>
|
||||
<li>GET ()</li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
<h2 id="datenablage">Datenablage</h2>
|
||||
<ul>
|
||||
<li>Die Daten werden mittels JSON abgespeichert und ausgelesen</li>
|
||||
<li>Die Datensätze sind aufgeteilt in die Unterordner:
|
||||
<ul>
|
||||
<li>Angebote</li>
|
||||
<li>Firmen</li>
|
||||
<li>Lehrender</li>
|
||||
<li>Studenten</li>
|
||||
</ul></li>
|
||||
<li>Es wird jeweils abgespeichert, welche ID der zuletzt hinzugefügte Eintrag hat, um den nächsten mit inkrementierter ID abspeichern zu können</li>
|
||||
</ul>
|
||||
<h2 id="konfiguration">Konfiguration</h2>
|
||||
<ul>
|
||||
<li>Python
|
||||
<ul>
|
||||
<li>Erweiterungen:
|
||||
<ul>
|
||||
<li>JSON</li>
|
||||
<li>CherryPy</li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
<li>Webbrowser
|
||||
<ul>
|
||||
<li>Javascript fähig</li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
121
Praktikum2/ppm2/doc/PPM2.md
Normal file
121
Praktikum2/ppm2/doc/PPM2.md
Normal file
@ -0,0 +1,121 @@
|
||||
# Web-Praktikum
|
||||
## Termin 3
|
||||
- Gruppe A
|
||||
- Kai Wansart: 921862
|
||||
- Felix Hoster: xxxxxx
|
||||
- 15.12.2016
|
||||
|
||||
## Beschreibung der Lösung
|
||||
|
||||
### Aufgabe der Anwendung
|
||||
- Entwickeln und Umsetzen eines Praxisphasenmanagers (PPM).
|
||||
- Schnittstelle für Firmen, Dozenten und Studenten
|
||||
- Verwaltung der Daten, zB. Benutzerverwaltung und Angebotverwaltung
|
||||
|
||||
### Übersicht der fachlichen Funktionen
|
||||
- Datenpflege Studenten:
|
||||
- Ausgabe Studenten im System
|
||||
- Verwaltung bestehender Datensätze
|
||||
- Erstellen neuer Datensätze
|
||||
- Datenpflege Lehrende:
|
||||
- Ausgabe Lehrenden im System
|
||||
- Verwaltung bestehender Datensätze
|
||||
- Erstellen neuer Datensätze
|
||||
- Datenpflege Firmenverzeichnis:
|
||||
- Ausgabe Firmen im System
|
||||
- Verwaltung bestehender Datensätze
|
||||
- Erstellen neuer Datensätze
|
||||
- Datenpflege Praxisphase:
|
||||
- Ausgabe Angebote Praxiphasenplätze im System
|
||||
- Verwaltung bestehender Datensätze
|
||||
- Erstellen neuer Datensätze
|
||||
- Auswahl Praxisphasen:
|
||||
- Schnittstelle für Studenten, um sich in Praxisphasenplatz einzuschreiben, mit Angabe von Zeitraum
|
||||
- Auswertung Firma:
|
||||
- Ausgabe aller Firmen mit den jeweiligen Studenten, die sich bei Ihnen zu einem Praxisphasenplatz eingeschrieben haben
|
||||
- Auswertung Praxisphasen nach Studenten:
|
||||
- Ausgabe aller Studenten mit Informationen, bei welcher Firma sie wann ihre Praxisphase machen / gemacht haben
|
||||
- Auswertung Praxisphase nach Betreuern:
|
||||
- Ausgabe aller Betreuer mit den jeweiligen Studenten, die sie betreuen.
|
||||
|
||||
## Beschreibung des Client
|
||||
- Basis: Html Vorlage
|
||||
- Dynamischer Inhalt via Javascript:
|
||||
- Lädt Inhalte im JSON Format von Server
|
||||
- Rendert Inhalte in Templates
|
||||
- Fügt gerenderte Inhalte in HTML (DOM) ein
|
||||
|
||||
## Beschreibung der Komponenten des Servers
|
||||
- Server: Object-Dispatching --> Weiterleitung der Anfragen an jeweilige Funktionen
|
||||
- category
|
||||
- Zweck
|
||||
- Alle Kategorien (Studenten, Lehrende, Firmen, Angebote)
|
||||
- Rückgabe der Inhalte
|
||||
- Verwaltung der Daten
|
||||
- Zusammenwirken mit anderen Komponenten
|
||||
- Zugriff auf Datenbank um Daten zu verwalten
|
||||
- Aufbau
|
||||
- GET: Rückgabe
|
||||
- POST: Eingabe
|
||||
- DELETE: Löschen
|
||||
- API
|
||||
- GET ( Kategorie, Ansicht, ID)
|
||||
- POST ( Kategorie, Daten )
|
||||
- DELETE ( Kategorie, ID )
|
||||
- choice
|
||||
- Zweck
|
||||
- Rückgabe der bestehenden Angebote
|
||||
- Verwaltung der Daten
|
||||
- Annahme mit Datum
|
||||
- Zusammenwirken mit anderen Komponenten
|
||||
- Zugriff auf Datenbank um Daten zu verwalten
|
||||
- Aufbau
|
||||
- GET: Rückgabe
|
||||
- POST: Eingabe
|
||||
- API
|
||||
- GET ( Ansicht, ID )
|
||||
- POST ( Daten )
|
||||
- eval
|
||||
- Zweck
|
||||
- Auswertung
|
||||
- Rückgabe der Auswertungen
|
||||
- Zusammenwirken mit anderen Komponenten
|
||||
- Zugriff auf Datenbank um Daten zu verwalten
|
||||
- Aufbau
|
||||
- GET: Rückgabe und Auswertung
|
||||
- API
|
||||
- GET ( Kategorie )
|
||||
- database
|
||||
- Zweck
|
||||
-Verwaltung
|
||||
- auslesen
|
||||
- bearbeiten
|
||||
- speichern
|
||||
- löschen
|
||||
- Zusammenwirken mit anderen Komponenten
|
||||
- category, choice, eval greifen auf Datenbank zu
|
||||
- template
|
||||
- Zweck
|
||||
- Einlesen aller Templates
|
||||
- Rückgabe aller Templates
|
||||
- Aufbau
|
||||
- GET: Rückgabe aller Templates
|
||||
- API
|
||||
- GET ()
|
||||
|
||||
## Datenablage
|
||||
- Die Daten werden mittels JSON abgespeichert und ausgelesen
|
||||
- Die Datensätze sind aufgeteilt in die Unterordner:
|
||||
- Angebote
|
||||
- Firmen
|
||||
- Lehrender
|
||||
- Studenten
|
||||
- Es wird jeweils abgespeichert, welche ID der zuletzt hinzugefügte Eintrag hat, um den nächsten mit inkrementierter ID abspeichern zu können
|
||||
|
||||
## Konfiguration
|
||||
- Python
|
||||
- Erweiterungen:
|
||||
- JSON
|
||||
- CherryPy
|
||||
- Webbrowser
|
||||
- Javascript fähig
|
@ -60,6 +60,11 @@ class PPM
|
||||
this.LoadContent('/category/?cat=Firmen&view=List', 'list.tpl');
|
||||
break
|
||||
|
||||
case 'categoryAngebote':
|
||||
|
||||
this.LoadContent('/category/?cat=Angebote&view=List', 'list.tpl');
|
||||
break
|
||||
|
||||
case 'choice':
|
||||
|
||||
this.LoadContent('/choice/?view=List', 'listChoice.tpl');
|
||||
@ -80,60 +85,84 @@ class PPM
|
||||
this.LoadContent('/eval/?cat=Firmen', 'listEval.tpl');
|
||||
break
|
||||
|
||||
case 'NewStudenten':
|
||||
case 'newStudenten':
|
||||
|
||||
console.log("NewStudenten");
|
||||
this.LoadContent('/category/?cat=Studenten&view=Detail', 'detail.tpl');
|
||||
break
|
||||
|
||||
case 'NewLehrender':
|
||||
case 'newLehrender':
|
||||
|
||||
console.log("NewLehrender");
|
||||
this.LoadContent('/category/?cat=Lehrenden&view=Detail', 'detail.tpl');
|
||||
this.LoadContent('/category/?cat=Lehrender&view=Detail', 'detail.tpl');
|
||||
break
|
||||
|
||||
case 'NewFirmen':
|
||||
case 'newFirmen':
|
||||
|
||||
console.log("NewFirmen");
|
||||
this.LoadContent('/category/?cat=Firmen&view=Detail', 'detail.tpl');
|
||||
break
|
||||
|
||||
case 'ModifyStudenten':
|
||||
console.log("ModifyStudenten: ", selectedId);
|
||||
case 'newAngebote':
|
||||
|
||||
console.log("NewAngebote");
|
||||
this.LoadContent('/category/?cat=Angebote&view=Detail', 'detail.tpl');
|
||||
break
|
||||
|
||||
case 'modifyStudenten':
|
||||
console.log("modifyStudenten: ", selectedId);
|
||||
this.LoadContent('/category/?cat=Studenten&view=Detail&id='+ selectedId, 'detail.tpl');
|
||||
break
|
||||
|
||||
case 'ModifyLehrender':
|
||||
case 'modifyLehrender':
|
||||
|
||||
console.log("ModifyLehrender", selectedId);
|
||||
console.log("modifyLehrender", selectedId);
|
||||
this.LoadContent('/category/?cat=Lehrender&view=Detail&id='+ selectedId, 'detail.tpl');
|
||||
break
|
||||
|
||||
case 'ModifyFirmen':
|
||||
case 'modifyFirmen':
|
||||
|
||||
console.log("ModifyFirmen", selectedId);
|
||||
console.log("modifyFirmen", selectedId);
|
||||
this.LoadContent('/category/?cat=Firmen&view=Detail&id='+ selectedId, 'detail.tpl');
|
||||
break
|
||||
|
||||
case 'DeleteStudenten':
|
||||
case 'modifyAngebote':
|
||||
|
||||
console.log("DeleteStudenten", selectedId);
|
||||
console.log("modifyAngebote", selectedId);
|
||||
this.LoadContent('/category/?cat=Angebote&view=Detail&id='+ selectedId, 'detail.tpl');
|
||||
break
|
||||
|
||||
case 'choiceAnnehmen':
|
||||
|
||||
console.log("choiceAnnehmen", selectedId);
|
||||
this.LoadContent('/choice/?view=Detail&id='+ selectedId, 'detailChoice.tpl');
|
||||
break
|
||||
|
||||
case 'choiceNeu':
|
||||
|
||||
console.log("choiceNeu");
|
||||
this.LoadContent('/choice/?view=Detail', 'detailChoice.tpl');
|
||||
break
|
||||
|
||||
case 'deleteStudenten':
|
||||
|
||||
console.log("deleteStudenten", selectedId);
|
||||
if (confirm("Soll der Eintrag wirklich geloescht werden?")) {
|
||||
console.log("DELETE");
|
||||
this.DeleteContent('/category/?cat=Studenten&id='+selectedId, 'categoryStudenten');
|
||||
}
|
||||
break
|
||||
|
||||
case 'DeleteLehrender':
|
||||
case 'deleteLehrender':
|
||||
|
||||
console.log("DeleteLehrender", selectedId);
|
||||
console.log("deleteLehrender", selectedId);
|
||||
if (confirm("Soll der Eintrag wirklich geloescht werden?")) {
|
||||
console.log("DELETE");
|
||||
this.DeleteContent('/category/?cat=Lehrender&id='+selectedId, 'categoryLehrender');
|
||||
}
|
||||
break
|
||||
|
||||
case 'DeleteFirmen':
|
||||
case 'deleteFirmen':
|
||||
|
||||
console.log("DeleteFirmen", selectedId);
|
||||
if (confirm("Soll der Eintrag wirklich geloescht werden?")) {
|
||||
@ -142,24 +171,36 @@ class PPM
|
||||
}
|
||||
break
|
||||
|
||||
case 'SaveCategoryStudenten':
|
||||
case 'saveCategoryStudenten':
|
||||
|
||||
var data = $("#idForm").serialize();
|
||||
this.SaveContent('/category/?cat=Studenten&'+data, 'categoryStudenten');
|
||||
break
|
||||
|
||||
case 'SaveCategoryLehrende':
|
||||
case 'saveCategoryLehrende':
|
||||
|
||||
var data = $("#idForm").serialize();
|
||||
this.SaveContent('/category/?cat=Lehrender&'+data, 'categoryLehrender');
|
||||
break
|
||||
|
||||
case 'SaveCategoryFirmen':
|
||||
case 'saveCategoryFirmen':
|
||||
|
||||
var data = $("#idForm").serialize();
|
||||
this.SaveContent('/category/?cat=Firmen&'+data, 'categoryFirmen');
|
||||
break
|
||||
|
||||
case 'saveCategoryAngebote':
|
||||
|
||||
var data = $("#idForm").serialize();
|
||||
this.SaveContent('/category/?cat=Angebote&'+data, 'categoryAngebote');
|
||||
break
|
||||
|
||||
case 'saveChoice':
|
||||
|
||||
var data = $("#idForm").serialize();
|
||||
this.SaveContent('/choice/?'+data, 'choice');
|
||||
break
|
||||
|
||||
default:
|
||||
|
||||
alert ('[PPM] Unbekannte Anfrage: ' + message);
|
||||
|
@ -52,7 +52,7 @@
|
||||
<div id="idButtonArea" class="clButtonArea">
|
||||
<a data-action="index" title="Zurück zur Startseite">Zurück zur Startseite</a>
|
||||
<a data-action="category#context['category']#" title="Zurueck zur übersicht">Zurück zur übersicht</a>
|
||||
<a data-action="SaveCategory#context['category']#" title="Speichern">Speichern</a>
|
||||
<a data-action="saveCategory#context['category']#" title="Speichern">Speichern</a>
|
||||
</div>
|
||||
|
||||
</form>
|
48
Praktikum2/ppm2/templates/detailChoice.tpl
Normal file
48
Praktikum2/ppm2/templates/detailChoice.tpl
Normal file
@ -0,0 +1,48 @@
|
||||
<form id="idForm" class="clContent" method="POST">
|
||||
<h2 id="idContentHeader" class="clContentHeader">
|
||||
Praxisphasenangebots Auswahl
|
||||
</h2>
|
||||
<div id="idContentArea" class="clContentArea">
|
||||
<input type="hidden" value="#context['id']#" id="id" name="id" />
|
||||
<input type="hidden" value="#context['Name']#" id="Name" name="Name" />
|
||||
<input type="hidden" value="#context['Firma']#" id="Firma" name="Firma" />
|
||||
<input type="hidden" value="#context['Beschreibung']#"" id="Beschreibung" name="Beschreibung" />
|
||||
<input type="hidden" value="#context['Voraussetzungen']#" id="Voraussetzungen" name="Voraussetzungen" />
|
||||
<input type="hidden" value="#context['Firmenbetreuer']#" id="Firmenbetreuer" name="Firmenbetreuer" />
|
||||
<input type="hidden" value="aktuell" id="Status" name="Status" />
|
||||
|
||||
<div class="clFormRow">
|
||||
<label for="Student">Student</label>
|
||||
<select name="Student" form="idForm">
|
||||
@for option in context['Studenten']@
|
||||
<option value="#context['Studenten'][option]['id']#">#context['Studenten'][option]['Name']#</option>
|
||||
@endfor@
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="clFormRow">
|
||||
<label for="Lehrender">Lehrender</label>
|
||||
<select name="Lehrender" form="idForm">
|
||||
@for option in context['Lehrender']@
|
||||
<option value="#context['Lehrender'][option]['id']#">#context['Lehrender'][option]['Name']#</option>
|
||||
@endfor@
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="clFormRow">
|
||||
<label for="ZeitraumVon">Zeitraum: Von (D.M.Y)</label>
|
||||
<input type="text" value="" id="ZeitraumVon" name="ZeitraumVon" />
|
||||
</div>
|
||||
|
||||
<div class="clFormRow">
|
||||
<label for="ZeitraumBis">Zeitraum: Bis (D.M.Y)</label>
|
||||
<input type="text" value="" id="ZeitraumBis" name="ZeitraumBis" />
|
||||
</div>
|
||||
|
||||
<div id="idButtonArea" class="clButtonArea">
|
||||
<a data-action="index" title="Zurück zur Startseite">Zurück zur Startseite</a>
|
||||
<a data-action="choice" title="Zurück zur übersicht">Zurück zur übersicht</a>
|
||||
<a data-action="saveChoice" title="Speichern">Speichern</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
@ -4,6 +4,7 @@
|
||||
<li><a class="clNavButton" data-action="categoryStudenten">Datenpflege: Studenten</a></li>
|
||||
<li><a class="clNavButton" data-action="categoryLehrender">Datenpflege: Lehrender</a></li>
|
||||
<li><a class="clNavButton" data-action="categoryFirmen">Datenpflege: Firmenverzeichnis</a></li>
|
||||
<li><a class="clNavButton" data-action="categoryAngebote">Datenpflege: Angebote</a></li>
|
||||
<li><a class="clNavButton" data-action="choice">Auswahl: Praxisphasen</a></li>
|
||||
<li><a class="clNavButton" data-action="evalStudenten">Auswertung: Studenten</a></li>
|
||||
<li><a class="clNavButton" data-action="evalLehrender">Auswertung: Lehrenden</a></li>
|
||||
|
@ -41,7 +41,7 @@
|
||||
|
||||
<div id="idButtonArea" class="clButtonArea">
|
||||
<a class="clButton" data-action="index">Startseite</a>
|
||||
<a class="clButton" data-action="New#context['category']#">Neu</a>
|
||||
<a class="clButton" data-action="Modify#context['category']#">Bearbeiten</a>
|
||||
<a class="clButton" data-action="Delete#context['category']#">Loeschen</a>
|
||||
<a class="clButton" data-action="new#context['category']#">Neu</a>
|
||||
<a class="clButton" data-action="modify#context['category']#">Bearbeiten</a>
|
||||
<a class="clButton" data-action="delete#context['category']#">Loeschen</a>
|
||||
</div>
|
@ -13,7 +13,7 @@
|
||||
</tr>
|
||||
@if context['content']!= 'None'@
|
||||
@for entries in context['content']@
|
||||
<tr id=${entries}>
|
||||
<tr id=#entries#>
|
||||
<td id=#entries#>#context['content'][entries]['Name']#</td>
|
||||
<td id=#entries#>#context['content'][entries]['Firma']#</td>
|
||||
<td id=#entries#>#context['content'][entries]['Beschreibung']#</td>
|
||||
@ -29,5 +29,5 @@
|
||||
|
||||
<div id="idButtonArea" class="clButtonArea">
|
||||
<a class="clButton" data-action="index">Startseite</a>
|
||||
<a class="clButton" id="Annehmen">Annehmen</a>
|
||||
<a class="clButton" data-action="choiceAnnehmen">Annehmen</a>
|
||||
</div>
|
Loading…
x
Reference in New Issue
Block a user