Hallo Zusammen,
heute möchte ich euch zu einem Betatest meines ToDo-Listen Moduls einladen.
Das Modul stellt je Instanz eine ToDo-Liste bereit inkl. Kachel für die Kachel-Visualisierung.
Je Task können folgende Sachen konfiguriert werden:
- Titel
- Infotext
- Priorität (niedrig, normal, hoch)
- Fälligkeit mit Datum und Uhrzeit
- Benachrichtigung mit einstellbarer Vorlaufzeit
- Anzahl (z.B. für eine Einkaufsliste)
Installation:
Im Modul Store exakt nach ToDo-Liste suchen.
Wie immer gilt: Nutzung auf eigenen Gefahr. Die Ki hat hier fleißig mitgeholfen beim Coden. Es wurde nicht jedes Zeichen fünf mal umgedreht und auf Richtigkeit geprüft.
Erstellen, Löschen, Bearbeiten von Tasks sind über das Frontend und Backend möglich.
Nachfolgend einige Beispielscripte zum bearbeiten, erstellt, löschen von Tasks:
Einen Task auslesen:
<?php
$instanceID = 13393; // ID deiner ToDoList-Instanz
$taskId = 15; // ID des gewünschten Tasks
$items = json_decode(TDL_Export($instanceID), true);
if (!is_array($items)) {
echo "Export lieferte kein gültiges JSON\n";
return;
}
$task = null;
foreach ($items as $it) {
if ((int)($it['id'] ?? 0) === $taskId) {
$task = $it;
break;
}
}
if ($task === null) {
echo "Task mit ID {$taskId} nicht gefunden\n";
return;
}
$id = (int)($task['id'] ?? 0);
$done = !empty($task['done']);
$title = (string)($task['title'] ?? '');
$info = (string)($task['info'] ?? '');
$due = (int)($task['due'] ?? 0);
$priority = (string)($task['priority'] ?? 'normal');
$qty = (int)($task['quantity'] ?? 0);
echo "Task gefunden:\n";
echo "ID: {$id}\n";
echo "Status: " . ($done ? "erledigt" : "offen") . "\n";
echo "Titel: {$title}\n";
echo "Info: {$info}\n";
echo "Anzahl: {$qty}\n";
echo "Priorität: {$priority}\n";
echo "Fällig: " . ($due > 0 ? date('d.m.Y H:i:s', $due) : '-') . "\n";
echo "\nRAW TASK:\n";
print_r($task);
Task als erledigt markieren:
<?php
$instanceID = 13393; // ID deiner ToDoList-Instanz
$taskId = 13; // ID des Tasks
IPS_RequestAction($instanceID, 'ToggleDone', json_encode([
'id' => $taskId,
'done' => false
]));
Task erstellen:
<?php
$instanceID = 13393; // ID deiner ToDoList-Instanz im Objektbaum
$payload = [
'title' => 'Milch kaufen',
'info' => '2% Fett, wenn möglich',
'due' => strtotime('today 18:00'), // Unix-Timestamp oder 0 für "keine Fälligkeit"
'priority' => 'normal', // 'low' | 'normal' | 'high'
'quantity' => 3 // 0 oder >0
];
IPS_RequestAction($instanceID, 'AddItem', json_encode($payload));
Task löschen:
<?php
$instanceID = 13393; // ID deiner ToDoList-Instanz
$taskId = 12; // ID des Tasks, den du löschen willst
IPS_RequestAction($instanceID, 'DeleteItem', json_encode([
'id' => $taskId
]));
Task updaten:
<?php
$instanceID = 13393; // ID deiner ToDoList-Instanz
$taskId = 13; // ID des Tasks
$payload = [
'id' => $taskId,
'title' => 'Milch kaufen (Bio)',
'info' => 'Bitte laktosefrei, WICHTIG!!!',
'due' => strtotime('tomorrow 12:00'), // Unix-Timestamp, oder 0
'priority' => 'high', // 'low' | 'normal' | 'high'
'quantity' => 2
];
IPS_RequestAction($instanceID, 'UpdateItem', json_encode($payload));
Alle Tasks auslesen:
<?php
$instanceID = 13393; // ID deiner ToDoList-Instanz
$json = TDL_Export($instanceID);
$items = json_decode($json, true);
if (!is_array($items)) {
echo "Export lieferte kein gültiges JSON!\n";
echo "RAW:\n" . $json . "\n";
return;
}
echo "Gefundene Tasks: " . count($items) . "\n\n";
// Ausgabe als Liste (gut lesbar)
foreach ($items as $it) {
$id = (int)($it['id'] ?? 0);
$done = !empty($it['done']);
$title = (string)($it['title'] ?? '');
$info = (string)($it['info'] ?? '');
$due = (int)($it['due'] ?? 0);
$priority = (string)($it['priority'] ?? 'normal');
$qty = (int)($it['quantity'] ?? 0);
echo "ID: {$id}\n";
echo "Status: " . ($done ? "erledigt" : "offen") . "\n";
echo "Titel: {$title}\n";
echo "Info: {$info}\n";
echo "Anzahl: {$qty}\n";
echo "Priorität: {$priority}\n";
echo "Fällig: " . ($due > 0 ? date('d.m.Y H:i:s', $due) : '-') . "\n";
echo "-----------------------------\n";
}
// Optional: komplette Datenstruktur dumpen
echo "\nRAW ARRAY:\n";
print_r($items);
Wie immer ist Feedback gerne gesehen. Viel Spaß beim testen.
Viele Grüße
Stephan



