100 lines
3.7 KiB
PHP
100 lines
3.7 KiB
PHP
<?php
|
|
$pageTitle = "Editar Columna del Kanban";
|
|
require_once 'layout_header.php';
|
|
require_once 'db/config.php';
|
|
|
|
// 1. Validar rol de administrador
|
|
if (!isset($_SESSION['user_role']) || ($_SESSION['user_role'] !== 'Administrador' && $_SESSION['user_role'] !== 'admin')) {
|
|
echo "<div class='alert alert-danger'>Acceso denegado.</div>";
|
|
require_once 'layout_footer.php';
|
|
exit();
|
|
}
|
|
|
|
// 2. Validar el ID de la columna
|
|
if (!isset($_GET['id']) || !filter_var($_GET['id'], FILTER_VALIDATE_INT)) {
|
|
header('Location: configuracion.php');
|
|
exit;
|
|
}
|
|
$column_id = $_GET['id'];
|
|
|
|
$message = '';
|
|
$column_name = '';
|
|
|
|
try {
|
|
$pdo = db();
|
|
|
|
// 3. Si se envía el formulario (POST), actualizar la base de datos
|
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|
$new_name = trim($_POST['nombre'] ?? '');
|
|
|
|
if (empty($new_name)) {
|
|
$message = "<div class='alert alert-warning'>El nombre no puede estar vacío.</div>";
|
|
// Volver a cargar el nombre actual para mostrarlo en el formulario
|
|
$stmt = $pdo->prepare('SELECT nombre FROM kanban_columns WHERE id = ?');
|
|
$stmt->execute([$column_id]);
|
|
$column_name = $stmt->fetchColumn();
|
|
} else {
|
|
$stmt = $pdo->prepare('UPDATE kanban_columns SET nombre = ? WHERE id = ?');
|
|
if ($stmt->execute([$new_name, $column_id])) {
|
|
$_SESSION['success_message'] = "Columna actualizada correctamente.";
|
|
header('Location: configuracion.php');
|
|
exit;
|
|
} else {
|
|
$message = "<div class='alert alert-danger'>Error al actualizar la columna.</div>";
|
|
$column_name = $new_name; // Mantener el valor que el usuario intentó guardar
|
|
}
|
|
}
|
|
} else {
|
|
// 4. Si se carga la página (GET), obtener el nombre actual de la columna
|
|
$stmt = $pdo->prepare('SELECT nombre FROM kanban_columns WHERE id = ?');
|
|
$stmt->execute([$column_id]);
|
|
$column_name = $stmt->fetchColumn();
|
|
|
|
if ($column_name === false) {
|
|
echo "<div class='alert alert-danger'>La columna no existe o no se pudo encontrar.</div>";
|
|
require_once 'layout_footer.php';
|
|
exit;
|
|
}
|
|
}
|
|
|
|
} catch (PDOException $e) {
|
|
// Manejo de errores de la base de datos
|
|
$message = "<div class='alert alert-danger'>Error de base de datos: " . $e->getMessage() . "</div>";
|
|
// Desactivar el formulario si hay un error grave
|
|
$column_name = false;
|
|
}
|
|
|
|
?>
|
|
|
|
<div class="container mt-5">
|
|
<div class="card mx-auto" style="max-width: 500px;">
|
|
<div class="card-header">
|
|
<h3>Editar Columna</h3>
|
|
</div>
|
|
<div class="card-body">
|
|
|
|
<?php echo $message; ?>
|
|
|
|
<?php if ($column_name !== false): ?>
|
|
<form method="POST" action="edit_column.php?id=<?php echo $column_id; ?>">
|
|
<div class="mb-3">
|
|
<label for="nombre" class="form-label">Nombre de la Columna</label>
|
|
<input type="text" class="form-control" id="nombre" name="nombre" value="<?php echo htmlspecialchars($column_name); ?>" required>
|
|
</div>
|
|
<button type="submit" class="btn btn-primary">
|
|
<i class="fas fa-save"></i> Actualizar
|
|
</button>
|
|
<a href="configuracion.php" class="btn btn-secondary">
|
|
<i class="fas fa-times"></i> Cancelar
|
|
</a>
|
|
</form>
|
|
<?php else: ?>
|
|
<p>No se puede mostrar el formulario de edición debido a un error.</p>
|
|
<a href="configuracion.php" class="btn btn-primary">Volver a Configuración</a>
|
|
<?php endif; ?>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<?php require_once 'layout_footer.php'; ?>
|