batch readme
This commit is contained in:
parent
84252d2223
commit
4e49e87940
11
Herunterladen.bat
Normal file
11
Herunterladen.bat
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
@echo off
|
||||||
|
echo ---------------------------------------------------------------I
|
||||||
|
echo Herunterladen des aktuellen Repositories I
|
||||||
|
echo ---------------------------------------------------------------I
|
||||||
|
git pull
|
||||||
|
echo ---------------------------------------------------------------I
|
||||||
|
echo Herunterladen beendet I
|
||||||
|
echo ---------------------------------------------------------------I
|
||||||
|
echo.
|
||||||
|
echo.
|
||||||
|
pause
|
42
Hochladen.bat
Normal file
42
Hochladen.bat
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
@echo off
|
||||||
|
echo ---------------------------------------------------------------I
|
||||||
|
echo Herunterladen des aktuellen Repositories I
|
||||||
|
echo ---------------------------------------------------------------I
|
||||||
|
git pull
|
||||||
|
echo ---------------------------------------------------------------I
|
||||||
|
echo Herunterladen beendet I
|
||||||
|
echo ---------------------------------------------------------------I
|
||||||
|
echo.
|
||||||
|
echo.
|
||||||
|
echo ---------------------------------------------------------------I
|
||||||
|
echo Einlesen der aktualisierten Dateien I
|
||||||
|
echo ---------------------------------------------------------------I
|
||||||
|
git add .
|
||||||
|
echo ---------------------------------------------------------------I
|
||||||
|
echo Einlesen beendet I
|
||||||
|
echo ---------------------------------------------------------------I
|
||||||
|
echo.
|
||||||
|
echo.
|
||||||
|
echo ---------------------------------------------------------------I
|
||||||
|
echo Eingabe der Bezeichnung des Commits
|
||||||
|
set /p eingabe=Wie soll der Commit heissen?:
|
||||||
|
echo ---------------------------------------------------------------I
|
||||||
|
echo.
|
||||||
|
echo.
|
||||||
|
echo ---------------------------------------------------------------I
|
||||||
|
echo Commit I
|
||||||
|
echo ---------------------------------------------------------------I
|
||||||
|
git commit -m "%eingabe%"
|
||||||
|
echo ---------------------------------------------------------------I
|
||||||
|
echo Commit beendet I
|
||||||
|
echo ---------------------------------------------------------------I
|
||||||
|
echo.
|
||||||
|
echo.
|
||||||
|
echo ---------------------------------------------------------------I
|
||||||
|
echo Hochladen der Veraenderungen I
|
||||||
|
echo ---------------------------------------------------------------I
|
||||||
|
git push
|
||||||
|
echo ---------------------------------------------------------------I
|
||||||
|
echo Hochladen beendet I
|
||||||
|
echo ---------------------------------------------------------------I
|
||||||
|
pause
|
BIN
Praktikum1/Aufgabe A.pdf
Normal file
BIN
Praktikum1/Aufgabe A.pdf
Normal file
Binary file not shown.
1
Praktikum1/webteams/app/__init__.py
Normal file
1
Praktikum1/webteams/app/__init__.py
Normal file
@ -0,0 +1 @@
|
|||||||
|
# kennzeichnet ein Verzeichnis als Python-Package
|
109
Praktikum1/webteams/app/application.py
Normal file
109
Praktikum1/webteams/app/application.py
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
import cherrypy
|
||||||
|
from .database import Database_cl
|
||||||
|
from .view import View_cl
|
||||||
|
|
||||||
|
#----------------------------------------------------------
|
||||||
|
class Application_cl(object):
|
||||||
|
#----------------------------------------------------------
|
||||||
|
|
||||||
|
#-------------------------------------------------------
|
||||||
|
def __init__(self):
|
||||||
|
#-------------------------------------------------------
|
||||||
|
# spezielle Initialisierung können hier eingetragen werden
|
||||||
|
self.db_o = Database_cl()
|
||||||
|
self.view_o = View_cl()
|
||||||
|
@cherrypy.expose
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------------
|
||||||
|
def index(self):
|
||||||
|
#-------------------------------------------------------
|
||||||
|
return self.createList_p()
|
||||||
|
@cherrypy.expose
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------------
|
||||||
|
def add(self):
|
||||||
|
#-------------------------------------------------------
|
||||||
|
return self.createForm_p()
|
||||||
|
@cherrypy.expose
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------------
|
||||||
|
def edit(self, id):
|
||||||
|
#-------------------------------------------------------
|
||||||
|
return self.createForm_p(id)
|
||||||
|
@cherrypy.expose
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------------
|
||||||
|
def save(self, **data_opl):
|
||||||
|
#-------------------------------------------------------
|
||||||
|
# Sichern der Daten: aufgrund der Formularbearbeitung muss
|
||||||
|
# eine vollständige HTML-Seite zurückgeliefert werden!
|
||||||
|
# data_opl: Dictionary mit den gelieferten key-value-Paaren
|
||||||
|
# hier müsste man prüfen, ob die Daten korrekt vorliegen!
|
||||||
|
# HIER müssen Sie die Semesterzahl(en) ergänzen
|
||||||
|
id_s = data_opl["id_s"]
|
||||||
|
data_a = [ data_opl["name1_s"]
|
||||||
|
, data_opl["vorname1_s"]
|
||||||
|
, data_opl["matrnr1_s"]
|
||||||
|
, data_opl["name2_s"]
|
||||||
|
, data_opl["vorname2_s"]
|
||||||
|
, data_opl["matrnr2_s"]
|
||||||
|
]
|
||||||
|
|
||||||
|
if id_s != "None":
|
||||||
|
# Update-Operation
|
||||||
|
self.db_o.update_px(id_s, data_a)
|
||||||
|
else:
|
||||||
|
# Create-Operation
|
||||||
|
id_s = self.db_o.create_px(data_a)
|
||||||
|
|
||||||
|
return self.createForm_p(id_s)
|
||||||
|
@cherrypy.expose
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------------
|
||||||
|
def delete(self, id):
|
||||||
|
#-------------------------------------------------------
|
||||||
|
# Eintrag löschen, dann Liste neu anzeigen
|
||||||
|
self.db_o.delete_px(id) return self.createList_p()
|
||||||
|
@cherrypy.expose
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------------
|
||||||
|
def default(self, *arguments, **kwargs):
|
||||||
|
#-------------------------------------------------------
|
||||||
|
msg_s = "unbekannte Anforderung: " + \
|
||||||
|
str(arguments) + \
|
||||||
|
''+ \
|
||||||
|
str(kwargs)
|
||||||
|
raise cherrypy.HTTPError(404, msg_s)
|
||||||
|
default.exposed= True
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------------
|
||||||
|
def createList_p(self):
|
||||||
|
#-------------------------------------------------------
|
||||||
|
data_o = self.db_o.read_px()
|
||||||
|
# mit diesen Daten Markup erzeugen
|
||||||
|
|
||||||
|
return self.view_o.createList_px(data_o)
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------------
|
||||||
|
def createForm_p(self, id_spl = None):
|
||||||
|
#-------------------------------------------------------
|
||||||
|
if id_spl != None:
|
||||||
|
data_o = self.db_o.read_px(id_spl)
|
||||||
|
else:
|
||||||
|
data_o = self.db_o.getDefault_px()
|
||||||
|
|
||||||
|
# mit diesen Daten Markup erzeugen
|
||||||
|
return self.view_o.createForm_px(id_spl, data_o)
|
||||||
|
|
||||||
|
|
||||||
|
# EOF
|
116
Praktikum1/webteams/app/database.py
Normal file
116
Praktikum1/webteams/app/database.py
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
import os
|
||||||
|
import os.path
|
||||||
|
import codecs
|
||||||
|
import json
|
||||||
|
|
||||||
|
#----------------------------------------------------------
|
||||||
|
class Database_cl(object):
|
||||||
|
#----------------------------------------------------------
|
||||||
|
# da es hier nur darum geht, die Daten dauerhaft zu speichern,
|
||||||
|
# wird ein sehr einfacher Ansatz verwendet:
|
||||||
|
# - es können Daten zu genau 15 Teams gespeichert werden
|
||||||
|
# - je Team werden 2 Teilnehmer mit Namen, Vornamen und Matrikelnummer
|
||||||
|
# berücksichtigt
|
||||||
|
# - die Daten werden als eine JSON-Datei abgelegt
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------------
|
||||||
|
def __init__(self):
|
||||||
|
#-------------------------------------------------------
|
||||||
|
self.data_o = None
|
||||||
|
self.readData_p()
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------------
|
||||||
|
def create_px(self, data_opl):
|
||||||
|
#-------------------------------------------------------
|
||||||
|
# Überprüfung der Daten müsste ergänzt werden!
|
||||||
|
# 'freien' Platz suchen,
|
||||||
|
# falls vorhanden: belegen und Nummer des Platzes als Id zurückgeben
|
||||||
|
|
||||||
|
id_s = None
|
||||||
|
for loop_i in range(0,15):
|
||||||
|
if self.data_o[str(loop_i)][0] == '':
|
||||||
|
id_s = str(loop_i)
|
||||||
|
self.data_o[id_s] = data_opl
|
||||||
|
self.saveData_p()
|
||||||
|
break
|
||||||
|
|
||||||
|
return id_s
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------------
|
||||||
|
def read_px(self, id_spl = None):
|
||||||
|
#-------------------------------------------------------
|
||||||
|
# hier zur Vereinfachung:
|
||||||
|
# Aufruf ohne id: alle Einträge liefern
|
||||||
|
|
||||||
|
data_o = None
|
||||||
|
if id_spl == None:
|
||||||
|
data_o = self.data_o
|
||||||
|
else:
|
||||||
|
if id_spl in self.data_o:
|
||||||
|
data_o = self.data_o[id_spl]
|
||||||
|
|
||||||
|
return data_o
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------------
|
||||||
|
def update_px(self, id_spl, data_opl):
|
||||||
|
#-------------------------------------------------------
|
||||||
|
# Überprüfung der Daten müsste ergänzt werden!
|
||||||
|
status_b = False
|
||||||
|
if id_spl in self.data_o:
|
||||||
|
self.data_o[id_spl] = data_opl
|
||||||
|
self.saveData_p()
|
||||||
|
status_b = True
|
||||||
|
|
||||||
|
return status_b
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------------
|
||||||
|
def delete_px(self, id_spl):
|
||||||
|
#-------------------------------------------------------
|
||||||
|
status_b = False
|
||||||
|
if id_spl in self.data_o:
|
||||||
|
pass
|
||||||
|
# hier müssen Sie den Code ergänzen
|
||||||
|
# Löschen als Zurücksetzen auf die Default-Werte implementieren
|
||||||
|
# Ihre Ergänzung
|
||||||
|
|
||||||
|
return status_b
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------------
|
||||||
|
def getDefault_px(self):
|
||||||
|
#-------------------------------------------------------
|
||||||
|
return ['', '', '', '', '', ''] # HIER müssen Sie eine Ergänzung vornehmen
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------------
|
||||||
|
def readData_p(self):
|
||||||
|
#-------------------------------------------------------
|
||||||
|
try:
|
||||||
|
fp_o = codecs.open(os.path.join('data', 'webteams.json'), 'r', 'utf-8')
|
||||||
|
except:
|
||||||
|
# Datei neu anlegen self.data_o = {}
|
||||||
|
for loop_i in range(0,15):
|
||||||
|
self.data_o[str(loop_i)] = ['', '', '', '', '', ''] # HIER müssen Sie eine Ergänzung vornehmen
|
||||||
|
self.saveData_p()
|
||||||
|
else:
|
||||||
|
with fp_o:
|
||||||
|
self.data_o = json.load(fp_o)
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------------
|
||||||
|
def saveData_p(self):
|
||||||
|
#-------------------------------------------------------
|
||||||
|
with codecs.open(os.path.join('data', 'webteams.json'), 'w', 'utf-8') as fp_o:
|
||||||
|
json.dump(self.data_o, fp_o)
|
||||||
|
|
||||||
|
|
||||||
|
# EOF
|
83
Praktikum1/webteams/app/view.py
Normal file
83
Praktikum1/webteams/app/view.py
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
# sehr einfache Erzeugung des Markups für vollständige Seiten
|
||||||
|
# jeweils 3 Abschnitte:
|
||||||
|
# - begin
|
||||||
|
# - content
|
||||||
|
# - end
|
||||||
|
|
||||||
|
# bei der Liste wird der content-Abschnitt wiederholt
|
||||||
|
# beim Formular nicht
|
||||||
|
|
||||||
|
import codecs
|
||||||
|
import os.path
|
||||||
|
import string
|
||||||
|
|
||||||
|
#----------------------------------------------------------
|
||||||
|
class View_cl(object):
|
||||||
|
#----------------------------------------------------------
|
||||||
|
|
||||||
|
#-------------------------------------------------------
|
||||||
|
def __init__(self):
|
||||||
|
#-------------------------------------------------------
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------------
|
||||||
|
def createList_px(self, data_opl):
|
||||||
|
#-------------------------------------------------------
|
||||||
|
# hier müsste noch eine Fehlerbehandlung ergänzt werden !
|
||||||
|
markup_s = ''
|
||||||
|
markup_s += self.readFile_p('list0.tpl')
|
||||||
|
markupV_s = self.readFile_p('list1.tpl')
|
||||||
|
lineT_o = string.Template(markupV_s)
|
||||||
|
|
||||||
|
# mehrfach nutzen, um die einzelnen Zeilen der Tabelle zu erzeugen
|
||||||
|
for loop_i in range(0,15):
|
||||||
|
data_a = data_opl[str(loop_i)]
|
||||||
|
markup_s += lineT_o.safe_substitute (name1_s=data_a[0] # HIER müssen Sie eine Ergänzung vornehmen
|
||||||
|
, vorname1_s=data_a[1]
|
||||||
|
, matrnr1_s=data_a[2]
|
||||||
|
, name2_s=data_a[3]
|
||||||
|
, vorname2_s=data_a[4]
|
||||||
|
, matrnr2_s=data_a[5]
|
||||||
|
, id_s=str(loop_i)
|
||||||
|
)
|
||||||
|
|
||||||
|
markup_s += self.readFile_p('list2.tpl')
|
||||||
|
|
||||||
|
return markup_s
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------------
|
||||||
|
def createForm_px(self, id_spl, data_opl):
|
||||||
|
#-------------------------------------------------------
|
||||||
|
# hier müsste noch eine Fehlerbehandlung ergänzt werden !
|
||||||
|
markup_s = ''
|
||||||
|
markup_s += self.readFile_p('form0.tpl')
|
||||||
|
markupV_s = self.readFile_p('form1.tpl')
|
||||||
|
lineT_o = string.Template(markupV_s)
|
||||||
|
markup_s += lineT_o.safe_substitute (name1_s=data_opl[0] # HIER müssen Sie eine Ergänzung vornehmen
|
||||||
|
, vorname1_s=data_opl[1]
|
||||||
|
, matrnr1_s=data_opl[2]
|
||||||
|
, name2_s=data_opl[3]
|
||||||
|
, vorname2_s=data_opl[4]
|
||||||
|
, matrnr2_s=data_opl[5]
|
||||||
|
, id_s=id_spl
|
||||||
|
)
|
||||||
|
markup_s += self.readFile_p('form2.tpl')
|
||||||
|
|
||||||
|
return markup_s
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------------
|
||||||
|
def readFile_p(self, fileName_spl):
|
||||||
|
#-------------------------------------------------------
|
||||||
|
content_s = ''
|
||||||
|
with codecs.open(os.path.join('template', fileName_spl), 'r', 'utf-8') as fp_o:
|
||||||
|
content_s = fp_o.read()
|
||||||
|
|
||||||
|
return content_s
|
||||||
|
|
||||||
|
|
||||||
|
# EOF
|
11
Praktikum1/webteams/content/webteams.js
Normal file
11
Praktikum1/webteams/content/webteams.js
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
function confirmDelete_p (event_opl) {
|
||||||
|
if ((event_opl.target.tagName.toLowerCase() == 'a') && (event_opl.target.className == "clDelete")) {
|
||||||
|
// Klick auf Link zum Löschen
|
||||||
|
// Ihre Ergänzung
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
window.onload = function () {
|
||||||
|
let body_o = document.getElementsByTagName('body')[0];
|
||||||
|
body_o.addEventListener('click', confirmDelete_p, false);
|
||||||
|
}
|
45
Praktikum1/webteams/server.py
Normal file
45
Praktikum1/webteams/server.py
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
#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': './content'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Mount static content handler
|
||||||
|
root_o = cherrypy.tree.mount(application.Application_cl(), '/', static_config)
|
||||||
|
|
||||||
|
# suppress traceback-info
|
||||||
|
cherrypy.config.update({'request.show_tracebacks': False})
|
||||||
|
|
||||||
|
# Start server
|
||||||
|
cherrypy.engine.start()
|
||||||
|
cherrypy.engine.block()
|
||||||
|
|
||||||
|
#--------------------------------------
|
||||||
|
if __name__ == '__main__':
|
||||||
|
#--------------------------------------
|
||||||
|
main()
|
||||||
|
|
||||||
|
# EOF
|
12
Praktikum1/webteams/template/form0.tpl
Normal file
12
Praktikum1/webteams/template/form0.tpl
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Web-Teams</title>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<style>
|
||||||
|
@import "/webteams.css";
|
||||||
|
</style>
|
||||||
|
<script type="text/javascript" src="/webteams.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<form id="idWTForm" action="/save" method="POST">
|
14
Praktikum1/webteams/template/form1.tpl
Normal file
14
Praktikum1/webteams/template/form1.tpl
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<input type="hidden" value="$id_s" id="id_s" name="id_s" />
|
||||||
|
<div>
|
||||||
|
<label for="name1_s">1. Name</label>
|
||||||
|
<input type="text" value="$name1_s" id="name1_s" name="name1_s" required />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label for="vorname1_s">1. Vorname</label>
|
||||||
|
<input type="text" value="$vorname1_s" id="vorname1_s" name="vorname1_s" required />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label for="matrnr1_s">1. Matrikelnummer</label>
|
||||||
|
<input type="text" value="$matrnr1_s" id="matrnr1_s" name="matrnr1_s" required />
|
||||||
|
</div>
|
||||||
|
<!-- Ihre Ergänzung -->
|
6
Praktikum1/webteams/template/form2.tpl
Normal file
6
Praktikum1/webteams/template/form2.tpl
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<div>
|
||||||
|
<input type="submit" value="Speichern" /><!-- Ihre Ergänzung -->
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
17
Praktikum1/webteams/template/list0.tpl
Normal file
17
Praktikum1/webteams/template/list0.tpl
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Web-Teams</title>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<style>
|
||||||
|
@import "/webteams.css";
|
||||||
|
</style>
|
||||||
|
<script type="text/javascript" src="/webteams.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<table> <!-- HIER müssen Sie eine Ergänzung vornehmen -->
|
||||||
|
<tr>
|
||||||
|
<th>Name (1)</th><th>Vorname (1)</th><th>Matr.-Nr. (1)</th>
|
||||||
|
<th>Name (2)</th><th>Vorname (2)</th><th>Matr.-Nr. (2)</th>
|
||||||
|
<th>Aktion</th>
|
||||||
|
</tr>
|
5
Praktikum1/webteams/template/list1.tpl
Normal file
5
Praktikum1/webteams/template/list1.tpl
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<tr> <!-- HIER müssen Sie eine Ergänzung vornehmen -->
|
||||||
|
<td>$name1_s</td><td>$vorname1_s</td><td>$matrnr1_s</td>
|
||||||
|
<td>$name2_s</td><td>$vorname2_s</td><td>$matrnr2_s</td>
|
||||||
|
<td><a href="/edit/$id_s">bearbeiten</a> <a href="/delete/$id_s">löschen</a></td>
|
||||||
|
</tr>
|
6
Praktikum1/webteams/template/list2.tpl
Normal file
6
Praktikum1/webteams/template/list2.tpl
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
</table>
|
||||||
|
<div>
|
||||||
|
<a href="/add">erfassen</a>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
12
Praktikum1/webteams/template/listaufz0.tpl
Normal file
12
Praktikum1/webteams/template/listaufz0.tpl
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Web-Teams</title>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<style>
|
||||||
|
@import "/webteams.css";
|
||||||
|
</style>
|
||||||
|
<script type="text/javascript" src="/webteams.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<ul>
|
7
Praktikum1/webteams/template/listaufz1.tpl
Normal file
7
Praktikum1/webteams/template/listaufz1.tpl
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<!-- Sie müssen Ergänzungen vornehmen -->
|
||||||
|
<li>Gruppe $nr: <a href="/edit/$id_s">bearbeiten</a> <a href="/delete/$id_s">löschen</a>
|
||||||
|
<ul>
|
||||||
|
<li>$name1_s, $vorname1_s, $matrnr1_s</li>
|
||||||
|
<li>$name2_s, $vorname2_s, $matrnr2_s</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
6
Praktikum1/webteams/template/listaufz2.tpl
Normal file
6
Praktikum1/webteams/template/listaufz2.tpl
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
</ul>
|
||||||
|
<div>
|
||||||
|
<a href="/add">erfassen</a>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
45
README.md
Normal file
45
README.md
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
# WEB
|
||||||
|
|
||||||
|
|
||||||
|
----------
|
||||||
|
### Tutorial: Einfach
|
||||||
|
#### Einrichtung
|
||||||
|
1. Git
|
||||||
|
- Herunterladen von [Git](https://git-scm.com/download/win)
|
||||||
|
- Git installieren (Kontextmenüeinträge auch installieren)
|
||||||
|
2. GitConfig
|
||||||
|
- Herunterladen der [GitConfig.bat](http://kai.truenoobs.de/GitConfig.bat)
|
||||||
|
- GitConfig.bat ausführen
|
||||||
|
3. Repository herunterladen
|
||||||
|
- In das Verzeichnis navigieren, wo das Repository herunterladen werden soll
|
||||||
|
- Rechtsklick in den Ordner --> ``Git Bash here``
|
||||||
|
- ``git clone https://git.truenoobs.de/Hochschule/WEB.git`` eingeben und mit Enter bestätigen
|
||||||
|
4. Updates herunterladen
|
||||||
|
- im VSY-Verzeichnis ``Herunterladen.bat`` ausführen
|
||||||
|
5. Updates hochladen
|
||||||
|
- im VSY-Verzeichnis ``Hochladen.bat`` ausführen
|
||||||
|
|
||||||
|
|
||||||
|
### Tutorial: Fortgeschritten
|
||||||
|
#### Projekt in den Client "klonen"
|
||||||
|
1. Wunschordner im Explorer öffnen (bsp: ``C://Users/$username/Documents/GitLab/``)
|
||||||
|
2. Rechtsklick in Ordner -> "Git Bash"
|
||||||
|
3. ``git clone https://git.truenoobs.de/$username/$projektname``
|
||||||
|
4. (``cd $projektname`` eingeben und mit Enter bestätigen)
|
||||||
|
|
||||||
|
|
||||||
|
#### Veränderungen runterladen
|
||||||
|
1. Wunschordner im Explorer öffnen (bsp: ``C://Users/$username/Documents/GitLab/$projektname``)
|
||||||
|
2. Rechtsklick in Ordner -> "Git Bash"
|
||||||
|
3. ``git pull``
|
||||||
|
|
||||||
|
|
||||||
|
#### Veränderungen hochladen
|
||||||
|
1. Wunschordner im Explorer öffnen (bsp: ``C://Users/$username/Documents/GitLab/$projektname``)
|
||||||
|
2. Rechtsklick in Ordner -> "Git Bash"
|
||||||
|
3. ``git add .`` (Änderungen erkennen)
|
||||||
|
4. ``git commit -m "$beschreibung_der_Veränderung"`` (Änderungen bestätigen)
|
||||||
|
5. ``git push`` (Änderungen hochladen)
|
||||||
|
|
||||||
|
#### Hinweis
|
||||||
|
- Möglichst regelmäßig ``git pull`` ausführen, speziell, wenn man anfängt, an dem Projekt weiter zu arbeiten! Passiert das nicht, kann sich der Inhalt des Repositories ändern, sodass die lokalen Daten nicht mehr aktuell sind.
|
Loading…
x
Reference in New Issue
Block a user