Ajoute géolocalisation des sites, duplication d'actifs et intégration GLPI

- Coordonnées GPS sur les sites (formulaire + carte Leaflet en direct sur
  la fiche et sur la liste des sites d'une organisation).
- Duplication d'un actif depuis la liste.
- Intégration GLPI en lecture seule : panneau "Tickets" sur le tableau de
  bord de l'organisation (tickets non clos, priorité, catégorie, extrait),
  organisations liées à leur entité GLPI via glpi_entity_id.
- Corrige la mise en cache des permissions Spatie lors du seed (silencée
  par WithoutModelEvents) et rend le seeder admin idempotent.
- Ajoute busy_timeout/WAL à la config SQLite pour éviter les erreurs de
  verrou sous écritures concurrentes.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
mrKamoo
2026-08-18 08:45:49 +02:00
co-authored by Claude Sonnet 5
parent 2d12d3c2b2
commit 01233928cc
15 changed files with 617 additions and 17 deletions
@@ -25,6 +25,22 @@ new class extends Component
session()->flash('status', "\"{$asset->name}\" supprimé.");
}
public function duplicate(int $assetId): void
{
$asset = $this->organization->flexibleAssets()->findOrFail($assetId);
$copy = $this->organization->flexibleAssets()->create([
'flexible_asset_type_id' => $asset->flexible_asset_type_id,
'name' => "{$asset->name} (copie)",
'data' => $asset->data,
'created_by' => auth()->id(),
]);
session()->flash('status', "\"{$asset->name}\" dupliqué.");
$this->redirectRoute('organizations.assets.edit', [$this->organization, $this->type, $copy], navigate: true);
}
public function with(): array
{
$listFields = $this->type->fields()->where('show_in_list', true)->get();
@@ -94,6 +110,11 @@ new class extends Component
@endforeach
<td class="px-4 py-3 text-right whitespace-nowrap">
<a href="{{ route('organizations.assets.edit', [$organization, $type, $asset]) }}" class="text-slate-500 hover:text-slate-900">Modifier</a>
<button type="button"
wire:click="duplicate({{ $asset->id }})"
class="ml-3 text-slate-500 hover:text-slate-900">
Dupliquer
</button>
<button type="button"
wire:click="delete({{ $asset->id }})"
wire:confirm="Supprimer cet actif ? Cette action est irréversible."