restructure: rename termin to kapitel, flatten folder structure

- rename slide files: YYYY-MM-DD-termin-N-topic.md → NN-topic.md
- flatten folders: courses/X/slides/ → slides/X/
- replace "Termin" with "Kapitel" in all content
- add klausur extraction script (make klausur)
- update Makefile, generate-index.sh, dev-server.sh
- add README.md with full documentation
This commit is contained in:
2026-01-25 11:26:15 +01:00
parent b951341376
commit a8343c9937
128 changed files with 1464 additions and 3484 deletions

View File

@@ -77,13 +77,13 @@ cat > "$BUILD_DIR/index.html" << HEADER
font-size: 0.875rem;
margin-top: 0.25rem;
}
.termine {
.kapitel {
margin-top: 1.5rem;
display: flex;
flex-direction: column;
gap: 0.75rem;
}
.termin-card {
.kapitel-card {
position: relative;
background: #fff;
border-radius: 12px;
@@ -94,31 +94,31 @@ cat > "$BUILD_DIR/index.html" << HEADER
align-items: center;
gap: 1rem;
}
.termin-card:hover {
.kapitel-card:hover {
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0,0,0,0.12);
}
.termin-link {
.kapitel-link {
display: block;
padding: 1.25rem 1.5rem;
text-decoration: none;
color: inherit;
grid-column: 1;
}
.termin-label {
.kapitel-label {
font-size: 0.7rem;
font-weight: 600;
color: $ACCENT_COLOR;
text-transform: uppercase;
letter-spacing: 0.05em;
}
.termin-title {
.kapitel-title {
font-size: 1.05rem;
font-weight: 500;
color: #1d1d1f;
margin: 0.15rem 0;
}
.termin-date {
.kapitel-date {
font-size: 0.8rem;
color: #86868b;
}
@@ -151,7 +151,7 @@ cat > "$BUILD_DIR/index.html" << HEADER
}
.btn-pdf:hover { background: #e8e8ed; }
/* Make entire card clickable via overlay */
.termin-link::after {
.kapitel-link::after {
content: '';
position: absolute;
inset: 0;
@@ -184,10 +184,10 @@ cat > "$BUILD_DIR/index.html" << HEADER
color: #86868b;
}
@media (max-width: 600px) {
.termin-card {
.kapitel-card {
grid-template-columns: 1fr;
}
.termin-link {
.kapitel-link {
padding-bottom: 0.75rem;
}
.btn-slides, .btn-pdf {
@@ -205,14 +205,13 @@ cat > "$BUILD_DIR/index.html" << HEADER
<div class="termine">
HEADER
# Generate links for each termin (sorted)
for html in $(ls "$BUILD_DIR"/2*.html 2>/dev/null | sort); do
# Generate links for each kapitel (sorted)
for html in $(ls "$BUILD_DIR"/[0-9][0-9]-*.html 2>/dev/null | sort); do
filename=$(basename "$html")
# Extract components from filename
date=$(echo "$filename" | grep -oE '^[0-9]{4}-[0-9x]{2}-[0-9x]{2}')
termin_num=$(echo "$filename" | grep -oE 'termin-[0-9]+' | grep -oE '[0-9]+')
topic_raw=$(echo "$filename" | sed -E 's/^[0-9]{4}-[0-9x]{2}-[0-9x]{2}-termin-[0-9]+-//' | sed 's/\.html$//')
# Extract components from filename (format: NN-topic.html)
kapitel_num=$(echo "$filename" | grep -oE '^[0-9]+' | sed 's/^0*//')
topic_raw=$(echo "$filename" | sed -E 's/^[0-9]+-//' | sed 's/\.html$//')
# Look up nice topic name or fallback
topic="${TOPIC_MAP[$topic_raw]}"
@@ -220,18 +219,11 @@ for html in $(ls "$BUILD_DIR"/2*.html 2>/dev/null | sort); do
topic=$(echo "$topic_raw" | sed 's/-/ /g' | sed 's/.*/\u&/')
fi
# Format date
if [[ "$date" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]] && [[ ! "$date" =~ xx ]]; then
formatted_date=$(date -d "$date" "+%d. %B %Y" 2>/dev/null || echo "$date")
# Handle kapitel number
if [[ "$kapitel_num" == "0" ]] || [[ -z "$kapitel_num" ]]; then
kapitel_label="Einführung"
else
formatted_date="Termin folgt"
fi
# Handle termin number
if [[ "$termin_num" == "0" ]]; then
termin_label="Einführung"
else
termin_label="Termin $termin_num"
kapitel_label="Kapitel $kapitel_num"
fi
pdf_filename="${filename%.html}.pdf"
@@ -243,11 +235,10 @@ for html in $(ls "$BUILD_DIR"/2*.html 2>/dev/null | sort); do
fi
cat >> "$BUILD_DIR/index.html" << LINK
<div class="termin-card">
<a href="$filename" class="termin-link">
<div class="termin-label">$termin_label</div>
<div class="termin-title">$topic</div>
<div class="termin-date">$formatted_date</div>
<div class="kapitel-card">
<a href="$filename" class="kapitel-link">
<div class="kapitel-label">$kapitel_label</div>
<div class="kapitel-title">$topic</div>
</a>
<a href="$filename" class="btn btn-slides">Folien</a>
$pdf_link