34849-vm/configuracion.php
2026-02-05 05:37:35 +00:00

131 lines
5.7 KiB
PHP

<?php
$pageTitle = "Configuración del Kanban";
require_once 'layout_header.php';
require_once 'db/config.php';
// Asegurarse de que el usuario sea administrador
if ($_SESSION['user_role'] !== 'Administrador' && $_SESSION['user_role'] !== 'admin') {
echo "<div class='alert alert-danger'>Acceso denegado.</div>";
require_once 'layout_footer.php';
exit();
}
$conn = db();
// --- Gestión de Columnas ---
// Obtener todas las columnas del Kanban para la tabla de gestión
$query_manage_columns = "SELECT * FROM kanban_columns ORDER BY orden ASC";
$stmt_manage_columns = $conn->query($query_manage_columns);
$management_columns = $stmt_manage_columns->fetchAll(PDO::FETCH_ASSOC);
// --- Visibilidad de Columnas ---
// Obtener la configuración actual de visibilidad
$query_config = "SELECT * FROM configuracion WHERE id = 1";
$result_config = $conn->query($query_config);
$config = $result_config->fetch(PDO::FETCH_ASSOC);
$visible_columns = $config ? json_decode($config['kanban_columns'], true) : [];
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['save_visibility'])) {
$new_visible_columns = $_POST['columns'] ?? [];
$json_columns = json_encode($new_visible_columns);
// Usar INSERT ... ON DUPLICATE KEY UPDATE para seguridad
$update_query = "INSERT INTO configuracion (id, kanban_columns) VALUES (1, :kanban_columns)
ON DUPLICATE KEY UPDATE kanban_columns = :kanban_columns";
$stmt = $conn->prepare($update_query);
$stmt->bindParam(':kanban_columns', $json_columns);
if ($stmt->execute()) {
echo "<div class='alert alert-success'>Configuración de visibilidad guardada.</div>";
$visible_columns = $new_visible_columns; // Actualizar para mostrar el cambio inmediatamente
} else {
echo "<div class='alert alert-danger'>Error al guardar la configuración de visibilidad.</div>";
}
}
// Obtener todas las columnas de kanban_columns para el formulario de visibilidad
$all_db_columns_query = "SELECT nombre FROM kanban_columns ORDER BY orden ASC";
$stmt_all_db_columns = $conn->query($all_db_columns_query);
$available_columns_for_visibility = $stmt_all_db_columns->fetchAll(PDO::FETCH_COLUMN);
?>
<div class="container mt-5">
<!-- Sección para Gestionar Columnas (Añadir, Editar, Eliminar) -->
<div class="card mb-5">
<div class="card-header">
<h3>Gestionar Columnas del Kanban</h3>
</div>
<div class="card-body">
<p>Aquí puedes añadir, editar y eliminar las columnas que se usarán en el tablero Kanban.</p>
<a href="add_column.php" class="btn btn-success mb-3">
<i class="fas fa-plus"></i> Añadir Nueva Columna
</a>
<table class="table table-bordered table-striped">
<thead class="table-dark">
<tr>
<th>Nombre de la Columna</th>
<th style="width: 150px;">Acciones</th>
</tr>
</thead>
<tbody>
<?php if (empty($management_columns)): ?>
<tr>
<td colspan="2" class="text-center">No hay columnas definidas.</td>
</tr>
<?php else: ?>
<?php foreach ($management_columns as $column): ?>
<tr>
<td><?php echo htmlspecialchars($column['nombre']); ?></td>
<td>
<a href="edit_column.php?id=<?php echo $column['id']; ?>" class="btn btn-primary btn-sm">
<i class="fas fa-edit"></i> Editar
</a>
<a href="delete_column.php?id=<?php echo $column['id']; ?>" class="btn btn-danger btn-sm" onclick="return confirm('¿Estás seguro de que quieres eliminar esta columna?');">
<i class="fas fa-trash"></i> Eliminar
</a>
</td>
</tr>
<?php endforeach; ?>
<?php endif; ?>
</tbody>
</table>
</div>
</div>
<!-- Sección para Configurar Visibilidad de Columnas -->
<div class="card">
<div class="card-header">
<h3>Configurar Visibilidad de Columnas</h3>
</div>
<div class="card-body">
<p>Selecciona las columnas que deseas que sean visibles en el tablero Kanban.</p>
<form method="POST">
<input type="hidden" name="save_visibility" value="1">
<div class="row">
<?php foreach ($available_columns_for_visibility as $column_name): ?>
<div class="col-md-3">
<div class="form-check">
<input class="form-check-input" type="checkbox" name="columns[]" value="<?php echo htmlspecialchars($column_name); ?>" id="col_<?php echo htmlspecialchars($column_name); ?>" <?php echo in_array($column_name, $visible_columns) ? 'checked' : ''; ?>>
<label class="form-check-label" for="col_<?php echo htmlspecialchars($column_name); ?>">
<?php echo htmlspecialchars($column_name); ?>
</label>
</div>
</div>
<?php endforeach; ?>
</div>
<button type="submit" class="btn btn-primary mt-3">Guardar Visibilidad</button>
</form>
</div>
</div>
</div>
<?php require_once 'layout_footer.php'; ?>