| 1 |
<?php
// ============================================================
// SIDE - ARC 1.0
// Archivo: editar.php
// ============================================================
require_once 'conexion.php';
require_once 'helpers.php';
requerir_admin();
// --- Validar ID ---
if (!isset($_GET['id']) || !is_numeric($_GET['id'])) {
header('Location: /apps/side-arc/cuadro_clasificacion.php');
exit;
}
$id = (int) $_GET['id'];
// --- Cargar registro actual ---
$stmt = mysqli_prepare($conexion,
"SELECT * FROM descripcion_isadg WHERE id = ? LIMIT 1");
mysqli_stmt_bind_param($stmt, 'i', $id);
mysqli_stmt_execute($stmt);
$res = mysqli_stmt_get_result($stmt);
$registro = mysqli_fetch_assoc($res);
mysqli_free_result($res);
mysqli_stmt_close($stmt);
if (!$registro) {
header('Location: /apps/side-arc/cuadro_clasificacion.php');
exit;
}
// --- Obtener nivel del padre ---
$nivel_padre = null;
$padre = null;
if ($registro['parent_id'] !== null) {
$stmt2 = mysqli_prepare($conexion,
"SELECT id, titulo, nivel_descripcion
FROM descripcion_isadg WHERE id = ? LIMIT 1");
mysqli_stmt_bind_param($stmt2, 'i', $registro['parent_id']);
mysqli_stmt_execute($stmt2);
$res2 = mysqli_stmt_get_result($stmt2);
$padre = mysqli_fetch_assoc($res2);
mysqli_free_result($res2);
mysqli_stmt_close($stmt2);
if ($padre) {
$nivel_padre = $padre['nivel_descripcion'];
}
}
// --- Calcular niveles permitidos ---
$niveles_permitidos = niveles_permitidos_bajo($nivel_padre);
// Si el nivel actual no está en la lista, añadirlo
if (!in_array($registro['nivel_descripcion'], $niveles_permitidos, true)) {
array_unshift($niveles_permitidos, $registro['nivel_descripcion']);
}
// --- Recuperar errores de sesión ---
$mensaje_error = '';
if (isset($_SESSION['form_error'])) {
$mensaje_error = $_SESSION['form_error'];
unset($_SESSION['form_error']);
}
$d = isset($_SESSION['form_data']) ? $_SESSION['form_data'] : $registro;
unset($_SESSION['form_data']);
// Token CSRF
if (empty($_SESSION['csrf_token'])) {
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}
$titulo_pagina = 'Editar: ' . h($registro['titulo']);
require_once 'header.php';
?>
<div class="form-pagina__encabezado">
<div style="display:flex; justify-content:space-between; align-items:center;">
<h1 class="form-pagina__titulo">Editar Registro Archivístico</h1>
<div style="display:flex; gap:0.5rem; margin-left:1rem; white-space:nowrap; align-items:center;">
<a href="/apps/side-arc/ficha.php?id=<?= $id ?>" class="btn btn--cancelar"
style="padding:0.55rem 1.25rem; font-size:0.92rem;">
Cancelar
</a>
<button type="submit" form="form-editar" class="btn btn--primario"
style="padding:0.55rem 1.25rem; font-size:0.92rem;">
✓ Guardar Cambios
</button>
<a href="/apps/side-arc/eliminar.php?id=<?= $id ?>"
class="btn btn--peligro"
style="padding:0.55rem 1.25rem; font-size:0.92rem;"
onclick="return confirm('¿Confirma la eliminación de este registro?')">
Eliminar
</a>
</div>
</div>
<p class="form-pagina__contexto" style="margin-top:0.8rem;">
<span class="badge-nivel"><?= h($registro['nivel_descripcion']) ?></span>
<strong><?= h($registro['titulo']) ?></strong>
<?php if ($padre): ?>
—
<span class="badge-nivel"><?= htmlspecialchars($nivel_padre) ?></span>
<a href="/apps/side-arc/ficha.php?id=<?= $padre['id'] ?>"><?= h($padre['titulo']) ?></a>
<?php endif; ?>
</p>
</div>
<?php if (!empty($mensaje_error)): ?>
<div class="alerta alerta--error"><?= h($mensaje_error) ?></div>
<?php endif; ?>
<form id="form-editar" action="/apps/side-arc/procesar_edicion.php"
method="POST"
class="form-isadg"
novalidate>
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<input type="hidden" name="id" value="<?= $id ?>">
<!-- ==================================================
SECCIÓN 1: IDENTIFICACIÓN
================================================== -->
<fieldset class="form-seccion">
<legend class="form-seccion__titulo">Área de Identificación</legend>
<!-- Fila 1: Nivel / Código -->
<div class="form-grid form-grid--2" style="margin-bottom:1rem;">
<div class="form-grupo">
<label for="nivel_descripcion" class="form-label form-label--req">Nivel de descripción</label>
<select id="nivel_descripcion" name="nivel_descripcion"
class="form-input form-select" required>
<?php foreach ($niveles_permitidos as $nivel): ?>
<option value="<?= h($nivel) ?>"
<?= ($d['nivel_descripcion'] === $nivel) ? 'selected' : '' ?>>
<?= h($nivel) ?>
</option>
<?php endforeach; ?>
</select>
</div>
<div class="form-grupo">
<label for="codigo_referencia" class="form-label form-label--req">Código de referencia</label>
<input type="text" id="codigo_referencia" name="codigo_referencia"
class="form-input"
value="<?= h($d['codigo_referencia'] ?? '') ?>"
maxlength="100" required>
</div>
</div>
<!-- Fila 2: Título (full) -->
<div class="form-grid form-grid--1" style="margin-bottom:1rem;">
<div class="form-grupo">
<label for="titulo" class="form-label form-label--req">Título</label>
<input type="text" id="titulo" name="titulo"
class="form-input"
value="<?= h($d['titulo'] ?? '') ?>"
maxlength="255" required>
</div>
</div>
<!-- Fila 3: Fecha(s) / Año inicial / Año final -->
<div class="form-grid form-grid--2" style="margin-bottom:1rem;">
<div class="form-grupo">
<label for="fechas" class="form-label">Fecha(s)</label>
<input type="text" id="fechas" name="fechas"
class="form-input"
value="<?= h($d['fechas'] ?? '') ?>"
maxlength="255" placeholder="Ej: 1990-2005 / ca. 1980">
</div>
<div class="form-grupo">
<label for="fecha_inicial_filtro" class="form-label">Año inicial</label>
<input type="number" id="fecha_inicial_filtro" name="fecha_inicial_filtro"
class="form-input"
value="<?= h($d['fecha_inicial_filtro'] ?? '') ?>"
min="1000" max="2999" placeholder="Ej: 1990">
</div>
<div class="form-grupo">
<label for="fecha_final_filtro" class="form-label">Año final</label>
<input type="number" id="fecha_final_filtro" name="fecha_final_filtro"
class="form-input"
value="<?= h($d['fecha_final_filtro'] ?? '') ?>"
min="1000" max="2999" placeholder="Ej: 2005">
</div>
</div>
<!-- Fila 4: Volumen y soporte (full) -->
<div class="form-grid form-grid--1">
<div class="form-grupo">
<label for="volumen_soporte" class="form-label">Volumen y soporte</label>
<textarea id="volumen_soporte" name="volumen_soporte"
class="form-input form-textarea"
rows="2"><?= h($d['volumen_soporte'] ?? '') ?></textarea>
</div>
</div>
</fieldset>
<!-- ==================================================
SECCIÓN 2: CONTEXTO
================================================== -->
<fieldset class="form-seccion">
<legend class="form-seccion__titulo">
Área de Contexto
</legend>
<div class="form-grid form-grid--1">
<div class="form-grupo">
<label for="nombre_productor" class="form-label">Nombre del productor</label>
<input type="text" id="nombre_productor" name="nombre_productor"
class="form-input"
value="<?= h($d['nombre_productor'] ?? '') ?>"
maxlength="255">
</div>
<div class="form-grupo form-grupo--full">
<label for="historia_institucional" class="form-label">
Historia institucional / Reseña biográfica
</label>
<textarea id="historia_institucional" name="historia_institucional"
class="form-input form-textarea"
rows="4"><?= h($d['historia_institucional'] ?? '') ?></textarea>
</div>
</div>
</fieldset>
<!-- ==================================================
SECCIÓN 3: CONTENIDO Y ESTRUCTURA
================================================== -->
<fieldset class="form-seccion">
<legend class="form-seccion__titulo">Área de Contenido y Estructura</legend>
<div class="form-grid form-grid--1" style="margin-bottom:1rem;">
<div class="form-grupo">
<label for="alcance_contenido" class="form-label">Alcance y contenido</label>
<textarea id="alcance_contenido" name="alcance_contenido"
class="form-input form-textarea"
rows="5"><?= h($d['alcance_contenido'] ?? '') ?></textarea>
</div>
</div>
<div class="form-grid form-grid--2">
<div class="form-grupo">
<label for="valoracion_eliminacion" class="form-label">
Valoración, selección y eliminación
</label>
<textarea id="valoracion_eliminacion" name="valoracion_eliminacion"
class="form-input form-textarea"
rows="3"><?= h($d['valoracion_eliminacion'] ?? '') ?></textarea>
</div>
<div class="form-grupo">
<label for="organizacion" class="form-label">Organización</label>
<textarea id="organizacion" name="organizacion"
class="form-input form-textarea"
rows="3"><?= h($d['organizacion'] ?? '') ?></textarea>
</div>
</div>
</fieldset>
<!-- ==================================================
SECCIÓN 4: CONDICIONES DE ACCESO
================================================== -->
<fieldset class="form-seccion">
<legend class="form-seccion__titulo">
Área de Condiciones de Acceso y Utilización
</legend>
<div class="form-grid form-grid--2">
<div class="form-grupo">
<label for="condiciones_acceso" class="form-label">Condiciones de acceso</label>
<textarea id="condiciones_acceso" name="condiciones_acceso"
class="form-input form-textarea"
rows="3"><?= h($d['condiciones_acceso'] ?? '') ?></textarea>
</div>
<div class="form-grupo">
<label for="condiciones_reproduccion" class="form-label">
Condiciones de reproducción
</label>
<textarea id="condiciones_reproduccion" name="condiciones_reproduccion"
class="form-input form-textarea"
rows="3"><?= h($d['condiciones_reproduccion'] ?? '') ?></textarea>
</div>
<div class="form-grupo">
<label for="caracteristicas_fisicas" class="form-label">
Características físicas y requisitos técnicos
</label>
<textarea id="caracteristicas_fisicas" name="caracteristicas_fisicas"
class="form-input form-textarea"
rows="3"><?= h($d['caracteristicas_fisicas'] ?? '') ?></textarea>
</div>
<div class="form-grupo">
<label for="lengua_escritura" class="form-label">Lengua / escritura(s)</label>
<input type="text" id="lengua_escritura" name="lengua_escritura"
class="form-input"
value="<?= h($d['lengua_escritura'] ?? '') ?>"
maxlength="255">
</div>
</div>
</fieldset>
<!-- ==================================================
SECCIÓN 5: DOCUMENTACIÓN ASOCIADA
================================================== -->
<fieldset class="form-seccion">
<legend class="form-seccion__titulo">
Área de Documentación Asociada
</legend>
<div class="form-grid form-grid--1">
<div class="form-grupo">
<label for="unidades_relacionadas" class="form-label">
Unidades de descripción relacionadas
</label>
<textarea id="unidades_relacionadas" name="unidades_relacionadas"
class="form-input form-textarea"
rows="3"><?= h($d['unidades_relacionadas'] ?? '') ?></textarea>
</div>
</div>
</fieldset>
<!-- ==================================================
SECCIÓN 6: NOTAS
================================================== -->
<fieldset class="form-seccion">
<legend class="form-seccion__titulo">
Área de Notas
</legend>
<div class="form-grid form-grid--1">
<div class="form-grupo">
<label for="notas" class="form-label">Notas</label>
<textarea id="notas" name="notas"
class="form-input form-textarea"
rows="3"><?= h($d['notas'] ?? '') ?></textarea>
</div>
</div>
</fieldset>
<!-- ==================================================
SECCIÓN 7: CONTROL DE LA DESCRIPCIÓN
================================================== -->
<fieldset class="form-seccion">
<legend class="form-seccion__titulo">
Área de Control de la Descripción
</legend>
<div class="form-grid form-grid--2">
<div class="form-grupo">
<label for="fecha_ingreso_registro" class="form-label">
Fecha de ingreso del registro
</label>
<input type="date" id="fecha_ingreso_registro"
name="fecha_ingreso_registro"
class="form-input"
value="<?= h($d['fecha_ingreso_registro'] ?? '') ?>">
</div>
<div class="form-grupo">
<label for="fechas_descripciones" class="form-label">
Fecha(s) de la(s) descripción(es)
</label>
<input type="text" id="fechas_descripciones"
name="fechas_descripciones"
class="form-input"
value="<?= h($d['fechas_descripciones'] ?? '') ?>"
maxlength="255">
</div>
<div class="form-grupo">
<label for="estado" class="form-label">Estado</label>
<select id="estado" name="estado" class="form-input form-select">
<option value="">— Seleccione —</option>
<?php foreach (['Borrador','Revisión','Actualizado'] as $est): ?>
<option value="<?= $est ?>"
<?= (($d['estado'] ?? '') === $est) ? 'selected' : '' ?>>
<?= $est ?>
</option>
<?php endforeach; ?>
</select>
</div>
<div class="form-grupo form-grupo--full">
<label for="nota_archivero" class="form-label">Nota del archivero</label>
<textarea id="nota_archivero" name="nota_archivero"
class="form-input form-textarea"
rows="3"><?= h($d['nota_archivero'] ?? '') ?></textarea>
</div>
<div class="form-grupo">
<label for="nombre_descriptor" class="form-label">Nombre del descriptor</label>
<input type="text" id="nombre_descriptor" name="nombre_descriptor"
class="form-input"
value="<?= h($d['nombre_descriptor'] ?? '') ?>"
maxlength="255">
</div>
<div class="form-grupo">
<label for="fecha_creacion_revision" class="form-label">
Fecha de creación, revisión y eliminación
</label>
<input type="text" id="fecha_creacion_revision"
name="fecha_creacion_revision"
class="form-input"
value="<?= h($d['fecha_creacion_revision'] ?? '') ?>"
maxlength="255">
</div>
<div class="form-grupo">
<label for="reglas_normas" class="form-label">Reglas o normas</label>
<input type="text" id="reglas_normas" name="reglas_normas"
class="form-input"
value="<?= h($d['reglas_normas'] ?? '') ?>"
maxlength="255">
</div>
</div>
</fieldset>
<!-- ==================================================
SECCIÓN 8: PUNTOS DE ACCESO
================================================== -->
<fieldset class="form-seccion">
<legend class="form-seccion__titulo">
Puntos de Acceso e Indexación
</legend>
<div class="form-grid form-grid--2">
<div class="form-grupo">
<label for="pa_nombre" class="form-label">
PA – Nombre (personal o corporativo)
</label>
<input type="text" id="pa_nombre" name="pa_nombre"
class="form-input"
value="<?= h($d['pa_nombre'] ?? '') ?>"
maxlength="255">
</div>
<div class="form-grupo">
<label for="pa_geografico" class="form-label">
PA – Nombre geográfico o toponímico
</label>
<input type="text" id="pa_geografico" name="pa_geografico"
class="form-input"
value="<?= h($d['pa_geografico'] ?? '') ?>"
maxlength="255">
</div>
<div class="form-grupo">
<label for="pam_materia" class="form-label">
PAM – Encabezamiento de materia
</label>
<input type="text" id="pam_materia" name="pam_materia"
class="form-input"
value="<?= h($d['pam_materia'] ?? '') ?>"
maxlength="255">
</div>
</div>
</fieldset>
</form>
</div>
<?php
mysqli_close($conexion);
require_once 'footer.php';
?>
|