Arch/templates/admin/filetypes.html

180 lines
9.0 KiB
HTML

{% extends "base.html" %}
{% block title %}Tipos de Archivo - ARCH{% endblock %}
{% block content %}
<div class="container my-5">
<div class="d-flex justify-content-between align-items-center mb-4">
<h1>Tipos de Archivo</h1>
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#addFiletypeModal">
<i class="fas fa-plus"></i> Nuevo Tipo
</button>
</div>
<div class="card">
<div class="card-body">
<div class="table-responsive">
<table class="table table-striped">
<thead>
<tr>
<th>Extensión</th>
<th>Descripción</th>
<th>Tipo MIME</th>
<th>Tamaño Máximo</th>
<th>Acciones</th>
</tr>
</thead>
<tbody>
{% for ext, filetype in filetypes.items() %}
<tr>
<td>{{ ext }}</td>
<td>{{ filetype.descripcion }}</td>
<td>{{ filetype.mime_type }}</td>
<td>{{ (filetype.tamano_maximo / 1024 / 1024)|round(1) }} MB</td>
<td>
<div class="btn-group btn-group-sm" role="group">
<button type="button" class="btn btn-outline-primary"
onclick="editFiletype('{{ ext }}', '{{ filetype.descripcion }}', '{{ filetype.mime_type }}', {{ filetype.tamano_maximo }})"
title="Editar">
<i class="fas fa-edit"></i>
</button>
<button type="button" class="btn btn-outline-danger"
onclick="confirmDeleteFiletype('{{ ext }}', '{{ filetype.descripcion }}')"
title="Eliminar">
<i class="fas fa-trash"></i>
</button>
</div>
</td>
</tr>
{% else %}
<tr>
<td colspan="5" class="text-center">No hay tipos de archivo definidos.</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div>
<!-- Modal para añadir tipo de archivo -->
<div class="modal fade" id="addFiletypeModal" tabindex="-1" aria-labelledby="addFiletypeModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="addFiletypeModalLabel">Nuevo Tipo de Archivo</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<form method="POST" action="{{ url_for('admin.add_filetype') }}">
<div class="modal-body">
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
<div class="mb-3">
<label for="extension" class="form-label">Extensión</label>
<input type="text" class="form-control" id="extension" name="extension" required>
</div>
<div class="mb-3">
<label for="descripcion" class="form-label">Descripción</label>
<input type="text" class="form-control" id="descripcion" name="descripcion" required>
</div>
<div class="mb-3">
<label for="mime_type" class="form-label">Tipo MIME</label>
<input type="text" class="form-control" id="mime_type" name="mime_type" required>
</div>
<div class="mb-3">
<label for="tamano_maximo" class="form-label">Tamaño Máximo (MB)</label>
<input type="number" class="form-control" id="tamano_maximo" name="tamano_maximo" min="1" max="1000" value="20" required>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancelar</button>
<button type="submit" class="btn btn-primary">Guardar</button>
</div>
</form>
</div>
</div>
</div>
<!-- Modal para editar tipo de archivo -->
<div class="modal fade" id="editFiletypeModal" tabindex="-1" aria-labelledby="editFiletypeModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="editFiletypeModalLabel">Editar Tipo de Archivo</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<form id="editFiletypeForm" method="POST" action="">
<div class="modal-body">
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
<div class="mb-3">
<label for="edit_descripcion" class="form-label">Descripción</label>
<input type="text" class="form-control" id="edit_descripcion" name="descripcion" required>
</div>
<div class="mb-3">
<label for="edit_mime_type" class="form-label">Tipo MIME</label>
<input type="text" class="form-control" id="edit_mime_type" name="mime_type" required>
</div>
<div class="mb-3">
<label for="edit_tamano_maximo" class="form-label">Tamaño Máximo (MB)</label>
<input type="number" class="form-control" id="edit_tamano_maximo" name="tamano_maximo" min="1" max="1000" required>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancelar</button>
<button type="submit" class="btn btn-primary">Actualizar</button>
</div>
</form>
</div>
</div>
</div>
<!-- Modal para confirmar eliminación -->
<div class="modal fade" id="deleteFiletypeModal" tabindex="-1" aria-labelledby="deleteFiletypeModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="deleteFiletypeModalLabel">Confirmar Eliminación</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<p>¿Está seguro que desea eliminar el tipo de archivo <strong id="deleteFiletypeName"></strong>?</p>
<p class="text-danger">Esta acción no se puede deshacer y podría afectar a documentos existentes.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancelar</button>
<form id="deleteFiletypeForm" method="POST" action="">
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
<button type="submit" class="btn btn-danger">Eliminar</button>
</form>
</div>
</div>
</div>
</div>
{% block extra_js %}
<script>
function editFiletype(extension, descripcion, mimeType, tamanoMaximo) {
document.getElementById('edit_descripcion').value = descripcion;
document.getElementById('edit_mime_type').value = mimeType;
document.getElementById('edit_tamano_maximo').value = Math.round(tamanoMaximo / 1024 / 1024);
// Change this line to match the correct route name
document.getElementById('editFiletypeForm').action = "/admin/filetypes/" + extension + "/update";
var editModal = new bootstrap.Modal(document.getElementById('editFiletypeModal'));
editModal.show();
}
function confirmDeleteFiletype(extension, descripcion) {
document.getElementById('deleteFiletypeName').textContent = descripcion + ' (.' + extension + ')';
// Also change this to use direct URL instead of url_for
document.getElementById('deleteFiletypeForm').action = "/admin/filetypes/" + extension + "/delete";
var deleteModal = new bootstrap.Modal(document.getElementById('deleteFiletypeModal'));
deleteModal.show();
}
</script>
{% endblock %}
{% endblock %}