131 lines
5.7 KiB
PHP
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'; ?>
|