Aufgaben: erledigte trotzdem bearbeiten + Nachträge anlegen
Drei Frontend-Guards raus, die verhindert haben, dass man an
erledigten Aufgaben noch etwas machen kann:
- TaskList: der Reply-/Subtask-Input war für erledigte Aufgaben
komplett ausgeblendet. Jetzt sichtbar mit angepasstem Placeholder
("Nachtrag zu erledigter Aufgabe…" / "Antwort zu erledigter
Anfrage…").
- ContractDetail: der Subtask-Input war für erledigte Aufgaben aus.
Jetzt sichtbar – man muss die Aufgabe nicht mehr als offen
markieren, nur um einen Nachtrag anzuhängen.
- ContractDetail: der Edit-Button war für erledigte Aufgaben aus.
Jetzt immer verfügbar (Löschen war eh schon da).
Backend hatte keine Restriktion, es waren rein UI-Gate.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -1147,8 +1147,11 @@ function ContractTaskItem({
|
|||||||
)}
|
)}
|
||||||
|
|
||||||
{/* Add Subtask */}
|
{/* Add Subtask */}
|
||||||
{/* Subtask/Antwort hinzufügen: Mitarbeiter mit Berechtigung ODER Kundenportal */}
|
{/* Subtask/Antwort hinzufügen: Mitarbeiter mit Berechtigung ODER Kundenportal.
|
||||||
{!isCompleted && ((canEdit && !isCustomerPortal) || isCustomerPortal) && (
|
2026-07-04: bewusst OHNE isCompleted-Guard – man soll auch
|
||||||
|
zu erledigten Aufgaben Nachträge anlegen können, ohne die
|
||||||
|
Aufgabe erst wieder auf offen zu setzen. */}
|
||||||
|
{((canEdit && !isCustomerPortal) || isCustomerPortal) && (
|
||||||
<div className="mt-2 ml-2">
|
<div className="mt-2 ml-2">
|
||||||
{showSubtaskInput ? (
|
{showSubtaskInput ? (
|
||||||
<form onSubmit={handleAddSubtask} className="flex items-center gap-2">
|
<form onSubmit={handleAddSubtask} className="flex items-center gap-2">
|
||||||
@@ -1181,15 +1184,14 @@ function ContractTaskItem({
|
|||||||
</div>
|
</div>
|
||||||
{canEdit && !isCustomerPortal && (
|
{canEdit && !isCustomerPortal && (
|
||||||
<div className="flex gap-1 opacity-0 group-hover:opacity-100">
|
<div className="flex gap-1 opacity-0 group-hover:opacity-100">
|
||||||
{!isCompleted && (
|
{/* 2026-07-04: Edit auch bei erledigten Aufgaben verfügbar. */}
|
||||||
<button
|
<button
|
||||||
onClick={onEdit}
|
onClick={onEdit}
|
||||||
className="text-gray-400 hover:text-blue-600 p-1"
|
className="text-gray-400 hover:text-blue-600 p-1"
|
||||||
title="Bearbeiten"
|
title="Bearbeiten"
|
||||||
>
|
>
|
||||||
<Edit className="w-4 h-4" />
|
<Edit className="w-4 h-4" />
|
||||||
</button>
|
</button>
|
||||||
)}
|
|
||||||
<button
|
<button
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
if (confirm('Aufgabe wirklich löschen?')) {
|
if (confirm('Aufgabe wirklich löschen?')) {
|
||||||
|
|||||||
@@ -350,11 +350,15 @@ export default function TaskList() {
|
|||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{/* Reply Input - nur anzeigen wenn Task noch offen */}
|
{/* Reply/Subtask-Input – 2026-07-04: auch bei erledigten
|
||||||
{!isTaskCompleted && (canEditSubtasks || isCustomerPortal) && (
|
Aufgaben verfügbar, damit man nicht erst öffnen muss um
|
||||||
|
eine Nachfrage / Nachtrag anzulegen. */}
|
||||||
|
{(canEditSubtasks || isCustomerPortal) && (
|
||||||
<div className="flex gap-2 ml-6">
|
<div className="flex gap-2 ml-6">
|
||||||
<Input
|
<Input
|
||||||
placeholder={isCustomerPortal ? 'Antwort schreiben...' : 'Neue Unteraufgabe...'}
|
placeholder={isCustomerPortal
|
||||||
|
? (isTaskCompleted ? 'Antwort zu erledigter Anfrage…' : 'Antwort schreiben...')
|
||||||
|
: (isTaskCompleted ? 'Nachtrag zu erledigter Aufgabe…' : 'Neue Unteraufgabe...')}
|
||||||
value={replyInputs[task.id] || ''}
|
value={replyInputs[task.id] || ''}
|
||||||
onChange={(e) => setReplyInputs(prev => ({ ...prev, [task.id]: e.target.value }))}
|
onChange={(e) => setReplyInputs(prev => ({ ...prev, [task.id]: e.target.value }))}
|
||||||
onKeyDown={(e) => {
|
onKeyDown={(e) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user