Erweitere die Verwaltung von Identitäten: Füge Unterstützung für URL-Felder hinzu, aktualisiere die Benutzeroberfläche zur Bearbeitung von Feldern und verbessere die Darstellung in Tabellenform.
This commit is contained in:
@@ -9,7 +9,7 @@ CREATE TABLE identities (
|
|||||||
CREATE TABLE identity_fields (
|
CREATE TABLE identity_fields (
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
identity_id INT NOT NULL,
|
identity_id INT NOT NULL,
|
||||||
typ ENUM('single','multi','file') NULL,
|
typ ENUM('single','multi','file','url') NULL,
|
||||||
field_key VARCHAR(50) NOT NULL,
|
field_key VARCHAR(50) NOT NULL,
|
||||||
field_value TEXT NOT NULL,
|
field_value TEXT NOT NULL,
|
||||||
FOREIGN KEY (identity_id)
|
FOREIGN KEY (identity_id)
|
||||||
|
|||||||
124
www/admin.php
124
www/admin.php
@@ -234,6 +234,7 @@ if ($action === 'identity_edit') {
|
|||||||
|
|
||||||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||||
|
|
||||||
|
// Identität umbenennen
|
||||||
if (isset($_POST['rename'])) {
|
if (isset($_POST['rename'])) {
|
||||||
$sql->set(
|
$sql->set(
|
||||||
"UPDATE identities SET name = ? WHERE id = ?",
|
"UPDATE identities SET name = ? WHERE id = ?",
|
||||||
@@ -242,14 +243,46 @@ if ($action === 'identity_edit') {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Neues Feld
|
||||||
if (isset($_POST['add_field'])) {
|
if (isset($_POST['add_field'])) {
|
||||||
$sql->set(
|
$sql->set(
|
||||||
"INSERT INTO identity_fields (identity_id, field_key, field_value)
|
"INSERT INTO identity_fields (identity_id, field_key, field_value, typ)
|
||||||
VALUES (?, ?, ?)",
|
VALUES (?, ?, ?, ?)",
|
||||||
"iss",
|
"isss",
|
||||||
[$id, trim($_POST['key']), trim($_POST['value'])]
|
[
|
||||||
|
$id,
|
||||||
|
trim($_POST['key']),
|
||||||
|
trim($_POST['value']),
|
||||||
|
$_POST['typ'] ?? 'single'
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Feld aktualisieren
|
||||||
|
if (isset($_POST['update_field'])) {
|
||||||
|
$sql->set(
|
||||||
|
"UPDATE identity_fields
|
||||||
|
SET field_key = ?, field_value = ?, typ = ?
|
||||||
|
WHERE id = ? AND identity_id = ?",
|
||||||
|
"sssii",
|
||||||
|
[
|
||||||
|
trim($_POST['key']),
|
||||||
|
trim($_POST['value']),
|
||||||
|
$_POST['typ'] ?? 'single',
|
||||||
|
(int)$_POST['field_id'],
|
||||||
|
$id
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Feld löschen
|
||||||
|
if (isset($_POST['delete_field'])) {
|
||||||
|
$sql->set(
|
||||||
|
"DELETE FROM identity_fields
|
||||||
|
WHERE id = ? AND identity_id = ?",
|
||||||
|
"ii",
|
||||||
|
[(int)$_POST['field_id'], $id]
|
||||||
);
|
);
|
||||||
//TODO typ
|
|
||||||
}
|
}
|
||||||
|
|
||||||
header("Location: admin.php?action=identity_edit&id=$id");
|
header("Location: admin.php?action=identity_edit&id=$id");
|
||||||
@@ -257,14 +290,19 @@ if ($action === 'identity_edit') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$fields = $sql->get(
|
$fields = $sql->get(
|
||||||
"SELECT * FROM identity_fields WHERE identity_id = ?",
|
"SELECT * FROM identity_fields WHERE identity_id = ? ORDER BY id ASC",
|
||||||
"i",
|
"i",
|
||||||
[$id]
|
[$id]
|
||||||
);
|
);
|
||||||
?>
|
?>
|
||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html><head><meta charset="utf-8"><title>Identität bearbeiten</title></head>
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Identität bearbeiten</title>
|
||||||
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
<h1><?= htmlspecialchars($identity['name']) ?></h1>
|
<h1><?= htmlspecialchars($identity['name']) ?></h1>
|
||||||
|
|
||||||
<form method="post">
|
<form method="post">
|
||||||
@@ -273,23 +311,72 @@ if ($action === 'identity_edit') {
|
|||||||
</form>
|
</form>
|
||||||
|
|
||||||
<h2>Felder</h2>
|
<h2>Felder</h2>
|
||||||
<ul>
|
|
||||||
<?php foreach ($fields as $f): ?>
|
|
||||||
<li>
|
|
||||||
<strong><?= htmlspecialchars($f['field_key']) ?>:</strong>
|
|
||||||
<?= htmlspecialchars($f['field_value']) ?>
|
|
||||||
</li>
|
|
||||||
<?php endforeach; ?>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
|
<table border="1" cellpadding="6" cellspacing="0">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Key</th>
|
||||||
|
<th>Wert</th>
|
||||||
|
<th>Typ</th>
|
||||||
|
<th>Aktion</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
|
||||||
|
<?php foreach ($fields as $f): ?>
|
||||||
|
<tr>
|
||||||
|
<form method="post">
|
||||||
|
<td>
|
||||||
|
<input name="key"
|
||||||
|
value="<?= htmlspecialchars($f['field_key']) ?>">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<?php if ($f['typ'] === 'multi'): ?>
|
||||||
|
<textarea name="value" rows="3" style="width:100%"><?= htmlspecialchars($f['field_value']) ?></textarea>
|
||||||
|
<?php else: ?>
|
||||||
|
<input name="value"
|
||||||
|
value="<?= htmlspecialchars($f['field_value']) ?>"
|
||||||
|
style="width:100%">
|
||||||
|
<?php endif; ?>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<select name="typ">
|
||||||
|
<option value="single" <?= $f['typ']==='single'?'selected':'' ?>>einzeilig</option>
|
||||||
|
<option value="multi" <?= $f['typ']==='multi'?'selected':'' ?>>mehrzeilig</option>
|
||||||
|
<option value="file" <?= $f['typ']==='file'?'selected':'' ?>>Datei</option>
|
||||||
|
<option value="url" <?= $f['typ']==='url'?'selected':'' ?>>URL</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="hidden" name="field_id" value="<?= (int)$f['id'] ?>">
|
||||||
|
<button name="update_field">💾</button>
|
||||||
|
<button name="delete_field"
|
||||||
|
onclick="return confirm('Feld wirklich löschen?')">🗑</button>
|
||||||
|
</td>
|
||||||
|
</form>
|
||||||
|
</tr>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<h3>Neues Feld</h3>
|
||||||
<form method="post">
|
<form method="post">
|
||||||
<input name="key" placeholder="Feldname" required>
|
<input name="key" placeholder="Feldname" required>
|
||||||
<input name="value" placeholder="Wert" required>
|
<input name="value" placeholder="Wert">
|
||||||
|
<select name="typ">
|
||||||
|
<option value="single">einzeilig</option>
|
||||||
|
<option value="multi">mehrzeilig</option>
|
||||||
|
<option value="file">Datei</option>
|
||||||
|
<option value="url">URL</option>
|
||||||
|
</select>
|
||||||
<button name="add_field">➕ Feld hinzufügen</button>
|
<button name="add_field">➕ Feld hinzufügen</button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<p><a href="admin.php">← zurück</a></p>
|
<p><a href="admin.php">← zurück</a></p>
|
||||||
</body></html>
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
<?php
|
<?php
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
@@ -427,8 +514,6 @@ $identities = $sql->get("SELECT * FROM identities ORDER BY id DESC");
|
|||||||
|
|
||||||
<h1>Admin Dashboard</h1>
|
<h1>Admin Dashboard</h1>
|
||||||
|
|
||||||
<p><a href="admin.php?action=identity_create">➕ Identität anlegen</a></p>
|
|
||||||
|
|
||||||
<h2>Alle UUIDs</h2>
|
<h2>Alle UUIDs</h2>
|
||||||
<?php if (!empty($tokens)): ?>
|
<?php if (!empty($tokens)): ?>
|
||||||
<table border="1" cellpadding="5" cellspacing="0">
|
<table border="1" cellpadding="5" cellspacing="0">
|
||||||
@@ -458,6 +543,7 @@ $identities = $sql->get("SELECT * FROM identities ORDER BY id DESC");
|
|||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<h2>Identitäten</h2>
|
<h2>Identitäten</h2>
|
||||||
|
<p><a href="admin.php?action=identity_create">➕ Identität anlegen</a></p>
|
||||||
<ul>
|
<ul>
|
||||||
<?php foreach ($identities as $i): ?>
|
<?php foreach ($identities as $i): ?>
|
||||||
<li>
|
<li>
|
||||||
|
|||||||
Reference in New Issue
Block a user