index.php
- Pfad:
src/View/backup-restore/index.php - Namespace: -
- Zeilen: 123 | Größe: 3,944 Bytes
- Geändert: 2025-12-20 17:47:29 | Gescannt: 2025-12-31 10:22:15
Code Hygiene Score: 100
- Dependencies: 100 (25%)
- LOC: 100 (20%)
- Methods: 100 (20%)
- Secrets: 100 (15%)
- Classes: 100 (10%)
- Magic Numbers: 100 (10%)
Keine Issues gefunden.
Versionen 2
-
v2
2025-12-20 17:45 | claude-code-hook | modified
Claude Code Pre-Hook Backup vor Edit-Operation -
v1
2025-12-20 17:45 | claude-code-hook | modified
Claude Code Pre-Hook Backup vor Edit-Operation
Code
<?php
ob_start();
// Helper functions
$shortenPath = function (string $path): string {
$maxLength = 50;
if (strlen($path) <= $maxLength) {
return $path;
}
$filename = basename($path);
$dir = dirname($path);
$available = $maxLength - strlen($filename) - 4;
if ($available > 10) {
return substr($dir, 0, $available) . '/.../' . $filename;
}
return '...' . substr($path, -($maxLength - 3));
};
$formatBytes = function (int $bytes): string {
if ($bytes >= 1048576) {
return number_format($bytes / 1048576, 1) . ' MB';
}
if ($bytes >= 1024) {
return number_format($bytes / 1024, 1) . ' KB';
}
return $bytes . ' B';
};
?>
<h1>File Backup</h1>
<div class="stats-grid">
<div class="stat-card">
<span class="stat-card__value"><?= $stats['total'] ?? 0 ?></span>
<span class="stat-card__label">Backups</span>
</div>
<div class="stat-card stat-card--info">
<span class="stat-card__value"><?= $stats['files'] ?? 0 ?></span>
<span class="stat-card__label">Dateien</span>
</div>
<div class="stat-card stat-card--warning">
<span class="stat-card__value"><?= $stats['modified'] ?? 0 ?></span>
<span class="stat-card__label">Geändert</span>
</div>
<div class="stat-card stat-card--success">
<span class="stat-card__value"><?= $stats['recent'] ?? 0 ?></span>
<span class="stat-card__label">Letzte 24h</span>
</div>
</div>
<h2>Backup-Historie</h2>
<div class="filters">
<input type="search" id="backup-search" class="form-input" placeholder="Dateipfad durchsuchen...">
<select id="filter-change-type" class="form-select--inline">
<option value="">Alle Typen</option>
<option value="created">Erstellt</option>
<option value="modified">Geändert</option>
</select>
</div>
<table id="backup-table" data-sortable>
<thead>
<tr>
<th data-sort="id">ID</th>
<th data-sort="file_path">Dateipfad</th>
<th data-sort="version">Version</th>
<th data-sort="change_type">Typ</th>
<th data-sort="file_size">Größe</th>
<th data-sort="changed_at">Datum</th>
</tr>
</thead>
<tbody>
<?php if (!empty($backups)): ?>
<?php foreach ($backups as $backup): ?>
<tr>
<td><a href="/backup-restore/<?= $backup['id'] ?>"><?= $backup['id'] ?></a></td>
<td title="<?= htmlspecialchars($backup['file_path']) ?>">
<a href="/backup-restore/<?= $backup['id'] ?>"><?= htmlspecialchars($shortenPath($backup['file_path'])) ?></a>
</td>
<td><?= $backup['version'] ?></td>
<td><span class="badge badge--<?= $backup['change_type'] ?>"><?= $backup['change_type'] ?></span></td>
<td><?= $formatBytes($backup['file_size']) ?></td>
<td><?= substr($backup['changed_at'], 0, 16) ?></td>
</tr>
<?php endforeach; ?>
<?php else: ?>
<tr><td colspan="6" class="empty-state empty-state--small">Keine Backups vorhanden</td></tr>
<?php endif; ?>
</tbody>
</table>
<p class="links-bar">
<a href="/docs/modul/file-backup-hook">Dokumentation</a>
</p>
<script type="module">
import { init } from '/js/components/data-table.js';
const dataTable = init({
clock: { now_epoch_ms_utc: () => Date.now() },
logger: console,
ui: {
showMessage: (msg) => { console.log(msg.type + ': ' + msg.text); },
disableFeature: (key) => { console.warn('Feature disabled: ' + key); },
offerRetry: () => Promise.resolve(false)
},
runId: crypto.randomUUID()
});
dataTable.create('backup-table', {
searchInput: 'backup-search',
pageSize: 20,
filters: {
'filter-change-type': 3
}
});
</script>
<?php $content = ob_get_clean(); ?>
<?php require VIEW_PATH . '/layout.php'; ?>