Erster echter Arbeitsbereich aus dem Konzept. Kanban mit offen / in Arbeit / Review / erledigt, dazu Prioritaet, Frist, Verantwortlicher und Zuordnung zu einem Creator-Bereich. Kern ist die Datentrennung, und die sitzt AUSSCHLIESSLICH im Server -- in jeder einzelnen Abfrage, an einer Stelle definiert (sichtbar()): admin sieht alles creator sieht seinen Bereich und was ihm zugewiesen ist scout sieht nur, was ihm zugewiesen ist Geprueft mit vier Testkonten: - Chef sieht 4, Luna 2, Mika 1, Sam 1 Aufgaben - Luna auf Mikas Aufgabe: 404 (nicht 403 -- sonst liesse sich durch Ausprobieren herausfinden, welche Nummern es gibt) - Luna legt Aufgabe mit creator_id=Mika an: wird still auf ihren eigenen Bereich umgebogen, Mika sieht sie nicht - Anfrage mit fremdem Origin: 403 - ohne Anmeldung: 401, ungueltiger Status/leerer Titel: 400 - Scout bekommt in der Personenliste nur sich selbst - Dashboard-Zahlen je Rolle korrekt eingegrenzt Weitere Punkte: - Texte werden im Browser nur ueber textContent gesetzt, nie innerHTML -- ein Aufgabentitel darf keine Auszeichnung einschleusen - ueberfaellig = Frist vorbei UND nicht erledigt; die Kachel faerbt sich nur, wenn wirklich etwas ansteht - erledigt_am wird gesetzt bzw. wieder geleert, wenn eine Aufgabe zurueckgeholt wird - Erledigtes verschwindet nicht, wie im Konzept gefordert
87 lines
3.3 KiB
HTML
87 lines
3.3 KiB
HTML
<!doctype html>
|
|
<html lang="de">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
|
<title>Aufgaben · Creator Workspace</title>
|
|
<meta name="robots" content="noindex, nofollow" />
|
|
<meta name="theme-color" content="#05070d" />
|
|
<link rel="icon" href="assets/img/favicon.png" />
|
|
<link rel="stylesheet" href="assets/css/gate.css" />
|
|
<link rel="stylesheet" href="assets/css/start.css" />
|
|
<link rel="stylesheet" href="assets/css/aufgaben.css" />
|
|
</head>
|
|
|
|
<body class="start">
|
|
|
|
<header class="kopfleiste">
|
|
<p class="marke"><a class="zurueck" href="start.html">Creator Workspace</a> · Aufgaben</p>
|
|
<div class="kopfleiste__rechts">
|
|
<span class="wer" id="wer">…</span>
|
|
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
|
</div>
|
|
</header>
|
|
|
|
<main class="inhalt inhalt--breit">
|
|
|
|
<section class="kopf-zeile">
|
|
<div>
|
|
<p class="marke">Aufgaben</p>
|
|
<h1 class="titel">Offen. In Arbeit. Review. Erledigt.</h1>
|
|
</div>
|
|
<button type="button" class="knopf knopf--klein" id="neu-oeffnen">Neue Aufgabe</button>
|
|
</section>
|
|
|
|
<!-- Formular zum Anlegen. Standardmäßig zu, damit das Brett im Vordergrund
|
|
steht und die Seite nicht mit einem Formular begrüßt. -->
|
|
<form class="neu" id="neu" hidden>
|
|
<div class="neu__zeile">
|
|
<label class="feld-schild" for="f-titel">Titel</label>
|
|
<input id="f-titel" name="titel" maxlength="160" placeholder="Was ist zu tun?" required />
|
|
</div>
|
|
<div class="neu__zeile">
|
|
<label class="feld-schild" for="f-text">Beschreibung <span class="leise">(optional)</span></label>
|
|
<textarea id="f-text" name="beschreibung" rows="3" maxlength="4000"
|
|
placeholder="Worum geht es genau?"></textarea>
|
|
</div>
|
|
<div class="neu__raster">
|
|
<div>
|
|
<label class="feld-schild" for="f-prio">Priorität</label>
|
|
<select id="f-prio" name="prioritaet">
|
|
<option value="hoch">hoch</option>
|
|
<option value="mittel" selected>mittel</option>
|
|
<option value="niedrig">niedrig</option>
|
|
</select>
|
|
</div>
|
|
<div>
|
|
<label class="feld-schild" for="f-frist">Frist <span class="leise">(optional)</span></label>
|
|
<input id="f-frist" name="frist" type="date" />
|
|
</div>
|
|
<div id="feld-creator" hidden>
|
|
<label class="feld-schild" for="f-creator">Bereich von</label>
|
|
<select id="f-creator" name="creator_id"><option value="">—</option></select>
|
|
</div>
|
|
<div id="feld-verant" hidden>
|
|
<label class="feld-schild" for="f-verant">Verantwortlich</label>
|
|
<select id="f-verant" name="verantwortlich_id"><option value="">—</option></select>
|
|
</div>
|
|
</div>
|
|
<p class="fehler" id="neu-fehler" role="alert" aria-live="polite"></p>
|
|
<div class="neu__knoepfe">
|
|
<button type="submit" class="knopf knopf--klein" id="neu-speichern">Anlegen</button>
|
|
<button type="button" class="abmelden" id="neu-abbrechen">Abbrechen</button>
|
|
</div>
|
|
</form>
|
|
|
|
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
|
|
|
|
<div class="brett" id="brett" aria-busy="true">
|
|
<p class="leise" id="laedt">Aufgaben werden geladen …</p>
|
|
</div>
|
|
|
|
</main>
|
|
|
|
<script src="assets/js/aufgaben.js" defer></script>
|
|
</body>
|
|
</html>
|