- Deshabilita la paginación para mostrar todos los atributos por defecto. - Corrige un error de renderizado en 'atributos-valores.tpl' añadiendo etiquetas de cierre faltantes. - Cambia el orden de los atributos a 'atributoId' en 'atributo.class.php'. - Corrige un bug en 'atributoValor.class.php' descomentando una condición. - Asegura que las acciones AJAX (añadir, editar, eliminar) refresquen la lista correctamente sin paginación.
116 lines
3.7 KiB
JavaScript
Executable File
116 lines
3.7 KiB
JavaScript
Executable File
// JavaScript de login para el sistema
|
|
|
|
// Esperar a que las librerías estén cargadas
|
|
document.observe('dom:loaded', function() {
|
|
|
|
var LoginCheck = {
|
|
check: function() {
|
|
var form = $('loginForm');
|
|
var email = $F('email');
|
|
var password = $F('password');
|
|
|
|
// Validación básica
|
|
if (!email || !password) {
|
|
$('errorLoginDiv').innerHTML = 'Por favor ingrese email y contraseña';
|
|
return false;
|
|
}
|
|
|
|
// Deshabilitar botón durante proceso
|
|
var submitButton = form.querySelector('input[type="submit"]');
|
|
if (submitButton) {
|
|
submitButton.disabled = true;
|
|
submitButton.value = 'Procesando...';
|
|
}
|
|
|
|
// Enviar por AJAX
|
|
new Ajax.Request(WEB_ROOT + '/ajax/login.php', {
|
|
method: 'post',
|
|
parameters: {
|
|
email: email,
|
|
password: password
|
|
},
|
|
onSuccess: function(transport) {
|
|
var response = transport.responseText;
|
|
|
|
// Restaurar botón
|
|
if (submitButton) {
|
|
submitButton.disabled = false;
|
|
submitButton.value = 'Iniciar Sesión';
|
|
}
|
|
|
|
if (response.indexOf('ok[#]') !== -1) {
|
|
// Login exitoso
|
|
$('errorLoginDiv').innerHTML = '';
|
|
window.location.href = WEB_ROOT + '/homepage';
|
|
} else {
|
|
// Login fallido
|
|
$('errorLoginDiv').innerHTML = 'Email o contraseña incorrectos';
|
|
}
|
|
},
|
|
onFailure: function() {
|
|
// Error de conexión
|
|
if (submitButton) {
|
|
submitButton.disabled = false;
|
|
submitButton.value = 'Iniciar Sesión';
|
|
}
|
|
$('errorLoginDiv').innerHTML = 'Error de conexión. Intente nuevamente.';
|
|
}
|
|
});
|
|
}
|
|
};
|
|
|
|
// Función para validación en tiempo real
|
|
var LoginValidation = {
|
|
validateEmail: function(email) {
|
|
var regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
return regex.test(email);
|
|
},
|
|
|
|
validatePassword: function(password) {
|
|
return password.length >= 4; // Mínimo 4 caracteres
|
|
}
|
|
};
|
|
|
|
// Inicializar formulario cuando el DOM esté listo
|
|
document.observe('dom:loaded', function() {
|
|
var form = $('loginForm');
|
|
if (form) {
|
|
// Validar email al cambiar
|
|
var emailField = $('email');
|
|
if (emailField) {
|
|
emailField.observe('blur', function() {
|
|
var email = this.value;
|
|
var errorDiv = $('errorLoginDiv');
|
|
|
|
if (email && !LoginValidation.validateEmail(email)) {
|
|
errorDiv.innerHTML = 'Por favor ingrese un email válido';
|
|
} else {
|
|
errorDiv.innerHTML = '';
|
|
}
|
|
});
|
|
}
|
|
|
|
// Validar contraseña al cambiar
|
|
var passwordField = $('password');
|
|
if (passwordField) {
|
|
passwordField.observe('blur', function() {
|
|
var password = this.value;
|
|
var errorDiv = $('errorLoginDiv');
|
|
|
|
if (password && !LoginValidation.validatePassword(password)) {
|
|
errorDiv.innerHTML = 'La contraseña debe tener al menos 4 caracteres';
|
|
} else {
|
|
errorDiv.innerHTML = '';
|
|
}
|
|
});
|
|
}
|
|
|
|
// Manejar envío del formulario
|
|
form.observe('submit', function(e) {
|
|
e.stop();
|
|
LoginCheck.check();
|
|
});
|
|
}
|
|
});
|
|
|
|
}); |