Files
2026-06-24 16:21:44 -03:00

111 lines
5.4 KiB
PHP

<!doctype html>
<html lang="es">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Reportar falla</title>
@vite(['resources/css/app.css', 'resources/js/app.js'])
</head>
<body class="bg-light">
<main class="container py-5" style="max-width: 760px;">
<div class="card shadow-sm border-0">
<div class="card-body p-4 p-md-5">
<h1 class="h3 mb-3">Reportar falla</h1>
<p class="text-muted mb-4">Describí brevemente el problema que encontraste. El reporte se guarda para su revisión.</p>
@if(session('bug_success'))
<div class="alert alert-success" role="alert">
{{ session('bug_success') }}
</div>
@endif
@if($errors->any())
<div class="alert alert-danger" role="alert">
<ul class="mb-0 ps-3">
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<form action="/reportar-falla" method="POST" enctype="multipart/form-data" class="row g-3">
@csrf
<input type="hidden" name="origen" value="{{ old('origen', $origen ?? '') }}">
<input type="hidden" name="captura_pantalla" id="captura_pantalla_input">
<div class="col-12">
<label for="titulo" class="form-label">Título</label>
<input type="text" id="titulo" name="titulo" class="form-control" value="{{ old('titulo') }}" maxlength="255" required>
</div>
<div class="col-12">
<label for="descripcion" class="form-label">Descripción</label>
<textarea id="descripcion" name="descripcion" class="form-control" rows="6" maxlength="4500" placeholder="Describa paso por paso lo que ocurrió, nos ayudará a resolver el problema." required>{{ old('descripcion') }}</textarea>
</div>
<div class="col-12" id="captura-preview-container" style="display:none;">
<label class="form-label">Captura de pantalla adjunta automáticamente</label>
<div class="border rounded p-2 bg-white d-flex align-items-start gap-3">
<img id="captura-preview" src="" alt="Captura de pantalla" class="img-fluid rounded" style="max-height: 180px; object-fit: contain; border: 1px solid #dee2e6;">
<button type="button" id="captura-quitar" class="btn btn-sm btn-outline-secondary">Quitar captura</button>
</div>
</div>
<div class="col-12">
<label for="foto" class="form-label">Foto adicional <span class="text-muted">(opcional)</span></label>
<input type="file" id="foto" name="foto" class="form-control @error('foto') is-invalid @enderror" accept="image/jpeg,image/png,image/webp">
@error('foto')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
<div class="form-text">Podés adjuntar una captura o foto adicional del problema.</div>
</div>
@if(($origen ?? '') !== '')
<div class="col-12">
<label class="form-label">Página desde donde se reportó</label>
<input type="text" class="form-control" value="{{ $origen }}" readonly>
</div>
@endif
<div class="col-12 d-flex justify-content-between gap-2 flex-wrap">
<a href="{{ ($origen ?? '') !== '' ? $origen : '/' }}" class="btn btn-outline-secondary">Volver</a>
<button type="submit" class="btn btn-danger">Enviar reporte</button>
</div>
</form>
</div>
</div>
</main>
<script>
(function () {
const captura = sessionStorage.getItem('bug_captura');
if (!captura) return;
const input = document.getElementById('captura_pantalla_input');
const preview = document.getElementById('captura-preview');
const container = document.getElementById('captura-preview-container');
const quitar = document.getElementById('captura-quitar');
if (input) input.value = captura;
if (preview) preview.src = captura;
if (container) container.style.display = '';
if (quitar) {
quitar.addEventListener('click', function () {
sessionStorage.removeItem('bug_captura');
if (input) input.value = '';
if (container) container.style.display = 'none';
});
}
// Limpiar sessionStorage al enviar el formulario.
const form = document.querySelector('form[action="/reportar-falla"]');
if (form) {
form.addEventListener('submit', function () {
sessionStorage.removeItem('bug_captura');
});
}
})();
</script>
</body>
</html>