finale 1.2.2

This commit is contained in:
2026-06-07 17:27:00 +02:00
parent cf0ca170ce
commit f9c1268466
12 changed files with 402 additions and 9 deletions
+23 -2
View File
@@ -131,8 +131,29 @@ $currentFolder = $folders->firstWhere('type', $folder);
</table>
</div>
</div>
<div class="card-footer">
{{ $messages->withQueryString()->links('vendor.pagination.simple-bootstrap-4') }}
<div class="card-footer d-flex justify-content-between align-items-center">
<div>
<form method="GET" class="form-inline" id="perPageForm">
<label class="mr-2 small">Righe per pagina:</label>
<select name="perPage" class="form-control form-control-sm" onchange="this.form.submit()" style="width: auto;">
@foreach([10, 20, 25, 50, 100] as $p)
<option value="{{ $p }}" {{ (int) request('perPage', 20) === $p ? 'selected' : '' }}>{{ $p }}</option>
@endforeach
</select>
@foreach(request()->except(['perPage', 'page']) as $key => $value)
@if(is_array($value))
@foreach($value as $v)
<input type="hidden" name="{{ $key }}[]" value="{{ $v }}">
@endforeach
@else
<input type="hidden" name="{{ $key }}" value="{{ $value }}">
@endif
@endforeach
</form>
</div>
<div>
{{ $messages->links('vendor.pagination.simple-bootstrap-4') }}
</div>
</div>
</div>
@endsection
+55
View File
@@ -0,0 +1,55 @@
@extends('layouts.adminlte')
@section('title', 'Importa Eventi')
@section('page_title', 'Importa Eventi da ICS')
@section('content')
<div class="row">
<div class="col-md-8">
<div class="card">
<div class="card-header">
<h3 class="card-title"><i class="fas fa-upload mr-2"></i>Carica file ICS</h3>
</div>
<div class="card-body">
<form action="{{ route('eventi.import.store') }}" method="POST" enctype="multipart/form-data">
@csrf
<div class="form-group">
<label for="file">Seleziona file ICS *</label>
<input type="file" name="file" id="file" class="form-control" accept=".ics" required>
<small class="form-text text-muted">
Il file deve essere in formato ICS (iCalendar).
</small>
</div>
<button type="submit" class="btn btn-primary">
<i class="fas fa-upload mr-1"></i> Importa
</button>
<a href="/eventi" class="btn btn-secondary ml-2">
Annulla
</a>
</form>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card">
<div class="card-header">
<h3 class="card-title"><i class="fas fa-info-circle mr-2"></i>Informazioni</h3>
</div>
<div class="card-body">
<h6>Campi importati:</h6>
<ul>
<li><code>SUMMARY</code> Nome evento (obbligatorio)</li>
<li><code>DESCRIPTION</code> Descrizione</li>
<li><code>DTSTART</code> Data/Ora inizio</li>
<li><code>DTEND</code> Durata</li>
<li><code>LOCATION</code> Luogo</li>
<li><code>UID</code> ID esterno (per evitare duplicati)</li>
</ul>
<p class="text-muted small mt-2">
<i class="fas fa-info-circle mr-1"></i>
Gli eventi con UID già presente nel sistema verranno saltati automaticamente.
</p>
</div>
</div>
</div>
</div>
@endsection
+26 -2
View File
@@ -34,6 +34,9 @@ $canDeleteEventi = Auth::user()->canDelete('eventi');
</div>
@endif
@if($canWriteEventi)
<a href="/eventi/import" class="btn btn-sm btn-warning mr-2">
<i class="fas fa-file-import mr-1"></i> Importa ICS
</a>
<a href="/eventi/create" class="btn btn-xs btn-success">
<i class="fas fa-plus mr-1"></i> Nuovo Evento
</a>
@@ -247,8 +250,29 @@ $canDeleteEventi = Auth::user()->canDelete('eventi');
</tbody>
</table>
</div>
<div class="card-footer">
{{ $eventi->withQueryString()->links() }}
<div class="card-footer d-flex justify-content-between align-items-center">
<div>
<form method="GET" class="form-inline" id="perPageForm">
<label class="mr-2 small">Righe per pagina:</label>
<select name="perPage" class="form-control form-control-sm" onchange="this.form.submit()" style="width: auto;">
@foreach([10, 20, 25, 50, 100] as $p)
<option value="{{ $p }}" {{ (int) request('perPage', 20) === $p ? 'selected' : '' }}>{{ $p }}</option>
@endforeach
</select>
@foreach(request()->except(['perPage', 'page']) as $key => $value)
@if(is_array($value))
@foreach($value as $v)
<input type="hidden" name="{{ $key }}[]" value="{{ $v }}">
@endforeach
@else
<input type="hidden" name="{{ $key }}" value="{{ $value }}">
@endif
@endforeach
</form>
</div>
<div>
{{ $eventi->links() }}
</div>
</div>
</div>
+64
View File
@@ -0,0 +1,64 @@
@extends('layouts.adminlte')
@section('title', 'Importa Gruppi')
@section('page_title', 'Importa Gruppi da CSV')
@section('content')
<div class="row">
<div class="col-md-8">
<div class="card">
<div class="card-header">
<h3 class="card-title"><i class="fas fa-upload mr-2"></i>Carica file CSV</h3>
</div>
<div class="card-body">
<form action="{{ route('gruppi.import.store') }}" method="POST" enctype="multipart/form-data">
@csrf
<div class="form-group">
<label for="file">Seleziona file CSV *</label>
<input type="file" name="file" id="file" class="form-control" accept=".csv,.txt" required>
<small class="form-text text-muted">
Il file deve essere in formato CSV con separatore virgola.
</small>
</div>
<button type="submit" class="btn btn-primary">
<i class="fas fa-upload mr-1"></i> Importa
</button>
<a href="{{ route('gruppi.index') }}" class="btn btn-secondary ml-2">
Annulla
</a>
</form>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card">
<div class="card-header bg-info">
<h3 class="card-title text-white"><i class="fas fa-download mr-2"></i>Template</h3>
</div>
<div class="card-body">
<p>Scarica il template CSV per l'importazione:</p>
<a href="{{ route('gruppi.template') }}" class="btn btn-success btn-block">
<i class="fas fa-file-csv mr-1"></i> Scarica Template
</a>
</div>
</div>
<div class="card mt-3">
<div class="card-header">
<h3 class="card-title"><i class="fas fa-info-circle mr-2"></i>Formato CSV</h3>
</div>
<div class="card-body">
<h6>Campi:</h6>
<ul>
<li><code>nome</code> (obbligatorio)</li>
<li><code>descrizione</code></li>
<li><code>parent_id</code> (ID del gruppo padre)</li>
<li><code>diocesi_id</code> (ID della diocesi)</li>
<li><code>indirizzo_incontro</code></li>
<li><code>cap_incontro</code></li>
<li><code>città_incontro</code></li>
<li><code>sigla_provincia_incontro</code> (2 lettere)</li>
</ul>
</div>
</div>
</div>
</div>
@endsection
+3
View File
@@ -55,6 +55,9 @@ $visibleColumnsJson = json_encode($visibleColumns);
<i class="fas fa-save mr-1"></i> Salva Vista
</button>
@if($canWriteGruppi)
<a href="{{ route('gruppi.import') }}" class="btn btn-warning btn-sm mr-1">
<i class="fas fa-file-import mr-1"></i> Importa
</a>
<a href="{{ route('gruppi.create') }}" class="btn btn-success btn-sm">
<i class="fas fa-plus"></i> Nuovo Gruppo
</a>
+23 -2
View File
@@ -220,8 +220,29 @@ $canDeleteIndividui = Auth::user()->canDelete('individui');
@endif
</div>
@if($individui->count() > 0)
<div class="card-footer">
{{ $individui->links() }}
<div class="card-footer d-flex justify-content-between align-items-center">
<div>
<form method="GET" class="form-inline" id="perPageForm">
<label class="mr-2 small">Righe per pagina:</label>
<select name="perPage" class="form-control form-control-sm" onchange="this.form.submit()" style="width: auto;">
@foreach([10, 20, 25, 50, 100] as $p)
<option value="{{ $p }}" {{ (int) request('perPage', 20) === $p ? 'selected' : '' }}>{{ $p }}</option>
@endforeach
</select>
@foreach(request()->except(['perPage', 'page']) as $key => $value)
@if(is_array($value))
@foreach($value as $v)
<input type="hidden" name="{{ $key }}[]" value="{{ $v }}">
@endforeach
@else
<input type="hidden" name="{{ $key }}" value="{{ $value }}">
@endif
@endforeach
</form>
</div>
<div>
{{ $individui->links() }}
</div>
</div>
@endif
</div>