275 lines
13 KiB
PHP
275 lines
13 KiB
PHP
<?php
|
|
include __DIR__ . '/../partials/sidebar_configuracion.php';
|
|
?>
|
|
|
|
<!DOCTYPE html>
|
|
<html lang="es">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<title>Dashboard | Configuración</title>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
|
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
|
|
<style>
|
|
body {
|
|
font-family: 'Segoe UI', sans-serif;
|
|
background-color: #f4f6f9;
|
|
}
|
|
.sidebar {
|
|
width: 220px;
|
|
height: 100vh;
|
|
background-color: #343a40;
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
padding-top: 56px; /* Alineado con la altura de la navbar */
|
|
z-index: 1040; /* Asegura que esté por encima del contenido */
|
|
}
|
|
.sidebar .nav-link {
|
|
font-weight: bold;
|
|
color: white;
|
|
transition: all 0.3s ease;
|
|
}
|
|
.sidebar .nav-link:hover,
|
|
.sidebar .nav-link.active {
|
|
background-color: #495057;
|
|
color: #fff;
|
|
}
|
|
.content {
|
|
margin-top: 56px; /* Ajusta debajo de navbar */
|
|
padding: 40px 20px;
|
|
position: relative;
|
|
z-index: 1;
|
|
background-color: #f4f6f9; /* Asegura fondo uniforme */
|
|
transition: margin-left 0.3s ease;
|
|
}
|
|
.navbar {
|
|
position: fixed;
|
|
top: 0;
|
|
width: 100%;
|
|
z-index: 1050;
|
|
}
|
|
/* A partir de dispositivos medianos (>=768px), deja espacio lateral */
|
|
@media (min-width: 768px) {
|
|
.content {
|
|
margin-left: 250px; /* Ancho del sidebar */
|
|
}
|
|
}
|
|
|
|
/* En móviles, sin margen lateral */
|
|
@media (max-width: 767.98px) {
|
|
.content {
|
|
margin-left: 0;
|
|
}
|
|
.sidebar .nav-link {
|
|
font-weight: normal;
|
|
color: #343a40;
|
|
background-color: transparent;
|
|
}
|
|
.sidebar .nav-link:hover,
|
|
.sidebar .nav-link.active {
|
|
background-color: #e9ecef;
|
|
color: #212529;
|
|
}
|
|
}
|
|
.card {
|
|
border-radius: 12px;
|
|
}
|
|
label {font-weight: bold;}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
|
|
<div class="content">
|
|
<h4 class="mb-4">✏️ Editar Información</h4>
|
|
<div class="card shadow-sm p-4 mb-4 bg-white">
|
|
<form id="form-edicion" method="POST" action="/IMPORTADORES/configuracion/guardar">
|
|
<div class="row mb-2">
|
|
<label class="col-md-2 col-form-label">Clave:</label>
|
|
<div class="col-md-3">
|
|
<input type="text" name="clave" maxlength="8"
|
|
pattern="[A-Z0-9]{8}" title="Debe contener 8 caracteres"
|
|
class="form-control" value="<?= htmlspecialchars($datos['clave'] ?? '') ?>"
|
|
onfocus="this.value=''" onblur="if(this.value=='') this.value='<?= htmlspecialchars($datos['clave'] ?? '') ?>'">
|
|
</div>
|
|
|
|
<div class="col-md-1"></div>
|
|
|
|
<label class="col-md-2 col-form-label">Tipo de identificador:</label>
|
|
<div class="col-md-4">
|
|
<input type="number" name="tipo_identificador"
|
|
class="form-control" value="<?= htmlspecialchars($datos['tipo_identificador'] ?? '') ?>"
|
|
onfocus="this.value=''" onblur="if(this.value=='') this.value='<?= htmlspecialchars($datos['tipo_identificador'] ?? '') ?>'">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row mb-3">
|
|
<label class="col-md-2 col-form-label">Nombre:</label>
|
|
<div class="col-md-10">
|
|
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['nombre'] ?? '') ?>" readonly>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row mb-3">
|
|
<label class="col-md-2 col-form-label">RFC:</label>
|
|
<div class="col-md-3">
|
|
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['rfc'] ?? '') ?>" readonly>
|
|
</div>
|
|
|
|
<div class="col-md-1"></div>
|
|
|
|
<label class="col-md-1 col-form-label">CURP:</label>
|
|
<div class="col-md-5">
|
|
<input type="text" name="curp" maxlength="18"
|
|
pattern="[A-Z]{4}\d{6}[MH](AS|BC|BS|CC|CL|CM|CS|CH|DF|DG|GT|GR|HG|JC|MC|MN|MS|NT|NL|OC|PL|QT|QR|SP|SL|SR|TC|TS|TL|VZ|YN|ZS)[A-Z]{3}[A-Z0-9]{2}"
|
|
title="CURP no válido. Ejemplo: ABCD001122HCHLRS08"
|
|
class="form-control" value="<?= htmlspecialchars($datos['curp'] ?? '') ?>"
|
|
onfocus="this.value=''" onblur="if(this.value=='') this.value='<?= htmlspecialchars($datos['curp'] ?? '') ?>'">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row mb-3">
|
|
<label class="col-md-2 col-form-label">Calle:</label>
|
|
<div class="col-md-10">
|
|
<input type="text" name="calle" class="form-control" value="<?= htmlspecialchars($datos['calle'] ?? '') ?>"
|
|
onfocus="this.value=''" onblur="if(this.value=='') this.value='<?= htmlspecialchars($datos['calle'] ?? '') ?>'">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row mb-3">
|
|
<label class="col-md-2 col-form-label">Núm. Exterior:</label>
|
|
<div class="col-md-2">
|
|
<input type="number" name="num_exterior" class="form-control" value="<?= htmlspecialchars($datos['num_exterior'] ?? '') ?>"
|
|
onfocus="this.value=''" onblur="if(this.value=='') this.value='<?= htmlspecialchars($datos['num_exterior'] ?? '') ?>'">
|
|
</div>
|
|
|
|
<div class="col-md-4"></div>
|
|
|
|
<label class="col-md-2 col-form-label">Núm. Interior:</label>
|
|
<div class="col-md-2">
|
|
<input type="text" name="num_interior" class="form-control" value="<?= htmlspecialchars($datos['num_interior'] ?? '') ?>"
|
|
onfocus="this.value=''" onblur="if(this.value=='') this.value='<?= htmlspecialchars($datos['num_interior'] ?? '') ?>'">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row mb-3">
|
|
<label class="col-md-2 col-form-label">Ciudad / Localidad:</label>
|
|
<div class="col-md-3">
|
|
<input type="text" name="ciudad" class="form-control" value="<?= htmlspecialchars($datos['ciudad'] ?? '') ?>"
|
|
onfocus="this.value=''" onblur="if(this.value=='') this.value='<?= htmlspecialchars($datos['ciudad'] ?? '') ?>'">
|
|
</div>
|
|
|
|
<div class="col-md-1"></div>
|
|
|
|
<label class="col-md-1 col-form-label">Colonia:</label>
|
|
<div class="col-md-5">
|
|
<input type="text" name="colonia" class="form-control" value="<?= htmlspecialchars($datos['colonia'] ?? '') ?>"
|
|
onfocus="this.value=''" onblur="if(this.value=='') this.value='<?= htmlspecialchars($datos['colonia'] ?? '') ?>'">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row mb-3">
|
|
<label class="col-md-2 col-form-label">País:</label>
|
|
<div class="col-md-3">
|
|
<input type="text" name="pais" class="form-control" value="<?= htmlspecialchars($datos['pais'] ?? '') ?>"
|
|
onfocus="this.value=''" onblur="if(this.value=='') this.value='<?= htmlspecialchars($datos['pais'] ?? '') ?>'">
|
|
</div>
|
|
|
|
<div class="col-md-3"></div>
|
|
|
|
<label class="col-md-2 col-form-label">Código Postal:</label>
|
|
<div class="col-md-2">
|
|
<input type="number" name="codigo_postal" class="form-control" value="<?= htmlspecialchars($datos['codigo_postal'] ?? '') ?>"
|
|
onfocus="this.value=''" onblur="if(this.value=='') this.value='<?= htmlspecialchars($datos['codigo_postal'] ?? '') ?>'">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row mb-3">
|
|
<label class="col-md-2 col-form-label">Municipio:</label>
|
|
<div class="col-md-4">
|
|
<input type="text" name="municipio" class="form-control" value="<?= htmlspecialchars($datos['municipio'] ?? '') ?>"
|
|
onfocus="this.value=''" onblur="if(this.value=='') this.value='<?= htmlspecialchars($datos['municipio'] ?? '') ?>'">
|
|
</div>
|
|
|
|
<div class="col-md-1"></div>
|
|
|
|
<label class="col-md-1 col-form-label">Estado:</label>
|
|
<div class="col-md-4">
|
|
<input type="text" name="estado" class="form-control" value="<?= htmlspecialchars($datos['estado'] ?? '') ?>"
|
|
onfocus="this.value=''" onblur="if(this.value=='') this.value='<?= htmlspecialchars($datos['estado'] ?? '') ?>'">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row mb-3">
|
|
<label class="col-md-2 col-form-label">Teléfono:</label>
|
|
<div class="col-md-5">
|
|
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['telefono'] ?? '') ?>" readonly>
|
|
</div>
|
|
|
|
<div class="col-md-1"></div>
|
|
|
|
<label class="col-md-1 col-form-label">Fax:</label>
|
|
<div class="col-md-3">
|
|
<input type="text" name="fax" maxlength="12"
|
|
pattern="\d{3} \d{3} \d{4}" title="Formato válido: 123 456 7890"
|
|
class="form-control" value="<?= htmlspecialchars($datos['fax'] ?? '') ?>"
|
|
onfocus="this.value=''" onblur="if(this.value=='') this.value='<?= htmlspecialchars($datos['fax'] ?? '') ?>'">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row mb-3">
|
|
<label class="col-md-2 col-form-label">Correo:</label>
|
|
<div class="col-md-10">
|
|
<input type="email" class="form-control" value="<?= htmlspecialchars($datos['correo'] ?? '') ?>" readonly>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row mb-3">
|
|
<label class="col-md-2 col-form-label">Observaciones:</label>
|
|
<div class="col-md-10">
|
|
<?php $valor_obs = htmlspecialchars($datos['observaciones'] ?? ''); ?>
|
|
<textarea name="observaciones" class="form-control" rows="3"
|
|
onfocus="if(this.value === '<?= $valor_obs ?>') this.value=''"
|
|
onblur="if(this.value === '') this.value='<?= $valor_obs ?>'"><?= $valor_obs ?></textarea>
|
|
</div>
|
|
</div>
|
|
<div style="display: flex; justify-content: right;">
|
|
<button type="submit" class="btn btn-primary">💾 Guardar Cambios</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
document.getElementById('form-edicion').addEventListener('submit', function (event) {
|
|
const clave = document.querySelector('[name="clave"]').value.trim();
|
|
const curp = document.querySelector('[name="curp"]').value.trim();
|
|
const fax = document.querySelector('[name="fax"]').value.trim();
|
|
|
|
let errores = [];
|
|
|
|
// Validación Clave: 8 caracteres, letras y números, mayúsculas
|
|
if (!/^[A-Z0-9]{8}$/.test(clave)) {
|
|
errores.push("La clave debe tener exactamente 8 caracteres, solo letras mayúsculas y números.");
|
|
}
|
|
|
|
// Validación CURP
|
|
if (!/^[A-Z]{4}[0-9]{6}[HM](AS|BC|BS|CC|CL|CM|CS|CH|DF|DG|GT|GR|HG|JC|MC|MN|MS|NT|NL|OC|PL|QT|QR|SP|SL|SR|TC|TS|TL|VZ|YN|ZS)[A-Z]{3}[A-Z0-9]{2}$/.test(curp)) {
|
|
errores.push("La CURP no tiene el formato correcto.");
|
|
}
|
|
|
|
// Validación Fax: 123 456 7890
|
|
if (!/^\d{3} \d{3} \d{4}$/.test(fax)) {
|
|
errores.push("El número de fax debe tener el formato: 123 456 7890.");
|
|
}
|
|
|
|
// Si hay errores, evita que se envíe el formulario y muestra alertas
|
|
if (errores.length > 0) {
|
|
event.preventDefault();
|
|
alert(errores.join("\n"));
|
|
}
|
|
});
|
|
</script>
|
|
|
|
</body>
|
|
</html>
|