Pihole
This commit is contained in:
134
modules/pihole/partials/dashboard.php
Normal file
134
modules/pihole/partials/dashboard.php
Normal file
@@ -0,0 +1,134 @@
|
||||
<?php
|
||||
$settings = modules()->settings('pihole');
|
||||
$instances = module_fn('pihole', 'instances');
|
||||
$hasConfig = !empty($instances);
|
||||
$refreshSeconds = (int)($settings['dashboard_refresh_sec'] ?? 1);
|
||||
if ($refreshSeconds < 0) {
|
||||
$refreshSeconds = 1;
|
||||
}
|
||||
?>
|
||||
<div class="pihole-content pihole-page" data-pihole-page="dashboard" data-refresh-seconds="<?= e((string)$refreshSeconds) ?>">
|
||||
|
||||
<section class="window-app-card pihole-card">
|
||||
<div class="pihole-section-header">
|
||||
<strong>Hosts</strong>
|
||||
<a class="window-app-nav-button pihole-link-button" href="/apps/pihole/index.php?view=instances">Instanzen verwalten</a>
|
||||
</div>
|
||||
<?php if (!$instances): ?>
|
||||
<div class="muted" style="margin-top:.75rem;">Keine Pi-hole Instanzen vorhanden. Bitte zuerst hinzufuegen.</div>
|
||||
<div style="margin-top:.75rem;"><a class="window-app-nav-button pihole-primary-action" href="/apps/pihole/index.php?view=instances">+ Neue Instanz</a></div>
|
||||
<?php else: ?>
|
||||
<div class="pihole-list" style="margin-top:1rem;">
|
||||
<?php foreach ($instances as $instance): ?>
|
||||
<div class="pihole-list-row">
|
||||
<div>
|
||||
<strong><?= e((string)($instance['name'] ?? $instance['id'] ?? '')) ?></strong>
|
||||
<div class="muted"><?= e((string)($instance['url'] ?? '')) ?></div>
|
||||
</div>
|
||||
<?php if (!empty($instance['is_primary'])): ?>
|
||||
<span class="pihole-status">Primaer</span>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</section>
|
||||
|
||||
<?php if (!$hasConfig): ?>
|
||||
<?php return; ?>
|
||||
<?php else: ?>
|
||||
<div class="pihole-grid">
|
||||
<div class="window-app-card pihole-stat">
|
||||
<div class="muted">DNS Queries (heute)</div>
|
||||
<div class="pihole-stat-value" data-summary-dns>–</div>
|
||||
</div>
|
||||
<div class="window-app-card pihole-stat">
|
||||
<div class="muted">Ads geblockt</div>
|
||||
<div class="pihole-stat-value" data-summary-blocked>–</div>
|
||||
<div class="pihole-stat-sub" data-summary-percent>–</div>
|
||||
</div>
|
||||
<div class="window-app-card pihole-stat">
|
||||
<div class="muted">Unique Clients</div>
|
||||
<div class="pihole-stat-value" data-summary-clients>–</div>
|
||||
</div>
|
||||
<div class="window-app-card pihole-stat">
|
||||
<div class="muted">Status</div>
|
||||
<div class="pihole-stat-value" data-summary-status>–</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section class="window-app-card pihole-card">
|
||||
<div class="pihole-section-header">
|
||||
<strong>Blocker steuern (alle Instanzen)</strong>
|
||||
<span class="muted" data-summary-last-refresh>Letztes Update: –</span>
|
||||
</div>
|
||||
<div class="pihole-actions" data-global-actions>
|
||||
<button class="cta-button" data-action="enable" data-instance="all">Aktivieren</button>
|
||||
<button class="nav-link" data-action="disable" data-minutes="5" data-instance="all">5 Min</button>
|
||||
<button class="nav-link" data-action="disable" data-minutes="10" data-instance="all">10 Min</button>
|
||||
<button class="nav-link" data-action="disable" data-minutes="20" data-instance="all">20 Min</button>
|
||||
<button class="nav-link" data-action="disable" data-minutes="30" data-instance="all">30 Min</button>
|
||||
<button class="nav-link" data-action="disable" data-minutes="60" data-instance="all">60 Min</button>
|
||||
<div class="pihole-inline">
|
||||
<input type="number" min="1" max="1440" placeholder="Minuten" data-custom-minutes="all">
|
||||
<button class="nav-link" data-action="disable-custom" data-instance="all">Custom</button>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="window-app-card pihole-card">
|
||||
<div class="pihole-section-header">
|
||||
<strong>Instanzen</strong>
|
||||
<span class="muted">Einzeln steuerbar & getrennte Updates</span>
|
||||
</div>
|
||||
<div class="pihole-instance-grid" data-instance-cards></div>
|
||||
</section>
|
||||
|
||||
<section class="window-app-card pihole-card">
|
||||
<div class="pihole-section-header">
|
||||
<strong>Usage (Aggregiert)</strong>
|
||||
<span class="muted">Query-Typen und Weiterleitungen</span>
|
||||
</div>
|
||||
<div class="pihole-split" style="margin-top:1rem;">
|
||||
<div>
|
||||
<div class="muted">Query-Typen</div>
|
||||
<div class="pihole-list" data-query-types></div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="muted">Forward Destinations</div>
|
||||
<div class="pihole-list" data-forward-destinations></div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
|
||||
<template id="pihole-instance-template">
|
||||
<div class="window-app-card pihole-instance" data-instance="">
|
||||
<div class="pihole-instance-header">
|
||||
<div>
|
||||
<strong data-instance-name></strong>
|
||||
<div class="muted" data-instance-url></div>
|
||||
</div>
|
||||
<div class="pihole-status" data-instance-status>–</div>
|
||||
</div>
|
||||
<div class="pihole-instance-stats">
|
||||
<div><span class="muted">DNS heute</span><div class="pihole-instance-value" data-instance-dns>–</div></div>
|
||||
<div><span class="muted">Ads geblockt</span><div class="pihole-instance-value" data-instance-ads>–</div></div>
|
||||
<div><span class="muted">% Blocked</span><div class="pihole-instance-value" data-instance-percent>–</div></div>
|
||||
</div>
|
||||
<div class="pihole-actions" data-instance-actions>
|
||||
<button class="cta-button" data-action="enable" data-instance="">Aktivieren</button>
|
||||
<button class="nav-link" data-action="disable" data-minutes="5" data-instance="">5 Min</button>
|
||||
<button class="nav-link" data-action="disable" data-minutes="10" data-instance="">10 Min</button>
|
||||
<button class="nav-link" data-action="disable" data-minutes="30" data-instance="">30 Min</button>
|
||||
<div class="pihole-inline">
|
||||
<input type="number" min="1" max="1440" placeholder="Minuten" data-custom-minutes="">
|
||||
<button class="nav-link" data-action="disable-custom" data-instance="">Custom</button>
|
||||
</div>
|
||||
<button class="nav-link" data-action="update" data-instance="">Pi-hole Update</button>
|
||||
</div>
|
||||
<div class="pihole-update" data-instance-update></div>
|
||||
<div class="pihole-error" data-instance-errors></div>
|
||||
</div>
|
||||
</template>
|
||||
Reference in New Issue
Block a user