feat: sync DB prefs, update history tab, configurable dashboard shortcuts
- auth store fetchMe(): sync theme/sidebar_position/lang from DB to localStorage+stores on login/refresh - profilePage setters: PATCH /api/auth/preferences on every preference change - updatesPage: add history tab (GET /api/updates/history) with job list, click to view output - dashboardPage: load shortcuts from settings API, fall back to defaults if none configured - settingsPage: new Raccourcis tab to add/remove/configure dashboard shortcuts (saved as JSON) - settings.go: expose dashboard_shortcuts in publicSettings for GET/PUT access - pages.css: add .history-table, .shortcut-row styles Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
780e5ec81d
commit
21e1e0ed1e
6 changed files with 230 additions and 10 deletions
|
|
@ -68,6 +68,9 @@
|
|||
<button class="tab-btn" :class="{ active: tab === 'general' }" @click="tab = 'general'">Général</button>
|
||||
<button class="tab-btn" :class="{ active: tab === 'ssh' }" @click="tab = 'ssh'">SSH</button>
|
||||
<button class="tab-btn" :class="{ active: tab === 'proxmox' }" @click="tab = 'proxmox'">Proxmox API</button>
|
||||
<button class="tab-btn" :class="{ active: tab === 'shortcuts' }" @click="tab = 'shortcuts'">
|
||||
<i class="lnid-link-1"></i> Raccourcis
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<!-- Général -->
|
||||
|
|
@ -128,8 +131,52 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Raccourcis dashboard -->
|
||||
<div class="tab-panel" x-show="tab === 'shortcuts'">
|
||||
<p class="form-hint" style="margin-bottom:1rem">
|
||||
Ces raccourcis apparaissent dans le widget "Raccourcis" du dashboard.
|
||||
Laisser vide pour utiliser les raccourcis par défaut.
|
||||
</p>
|
||||
<div class="shortcuts-editor">
|
||||
<template x-for="(s, idx) in shortcuts" :key="idx">
|
||||
<div class="shortcut-row">
|
||||
<select class="neu-input shortcut-icon-sel" x-model="s.icon">
|
||||
<option value="lnid-link-1">Lien</option>
|
||||
<option value="lnid-server-1">Serveur</option>
|
||||
<option value="lnid-terminal">Terminal</option>
|
||||
<option value="lnid-arrow-upward">Mises à jour</option>
|
||||
<option value="lnid-gear-1">Paramètres</option>
|
||||
<option value="lnid-dashboard-square-1">Dashboard</option>
|
||||
<option value="lnid-puzzle">Module</option>
|
||||
<option value="lnid-folder-1">Fichiers</option>
|
||||
<option value="lnid-check-circle-1">Succès</option>
|
||||
</select>
|
||||
<input class="neu-input shortcut-label" type="text" x-model="s.label" placeholder="Label" />
|
||||
<input class="neu-input shortcut-href" type="text" x-model="s.href" placeholder="/page.html" />
|
||||
<button class="neu-btn neu-btn--sm neu-btn--danger neu-btn--icon-sm"
|
||||
@click="removeShortcut(idx)" title="Supprimer">
|
||||
<i class="lnid-cross"></i>
|
||||
</button>
|
||||
</div>
|
||||
</template>
|
||||
<button class="neu-btn" @click="addShortcut()">
|
||||
<i class="lnid-plus"></i> Ajouter un raccourci
|
||||
</button>
|
||||
</div>
|
||||
<div class="save-bar" style="margin-top:1rem">
|
||||
<div class="save-feedback">
|
||||
<span class="save-success" x-show="saved"><i class="lnid-check-circle-1"></i> Raccourcis sauvegardés</span>
|
||||
<span class="save-error" x-show="error" x-text="error"></span>
|
||||
</div>
|
||||
<button class="neu-btn neu-btn--primary" @click="saveShortcuts()" :disabled="saving">
|
||||
<span x-show="!saving"><i class="lnid-check-circle-1"></i> Sauvegarder</span>
|
||||
<span x-show="saving"><span class="spinner-sm"></span></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Save actions -->
|
||||
<div class="save-bar">
|
||||
<div class="save-bar" x-show="tab !== 'shortcuts'">
|
||||
<div class="save-feedback">
|
||||
<span class="save-success" x-show="saved">
|
||||
<i class="lnid-check-circle-1"></i> Paramètres sauvegardés
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue