En un contundente gesto de solidaridad, el gremio de Guincheros y Maquinistas de Grúas Móviles, bajo la conducción de Roberto Coria, expresó su total apoyo al gremio de Aeronavegantes en su conflicto con el gobierno. Los Guincheros apoyan la lucha de aeronaúticos y manifestaron su rechazo a lo que consideran una' persecución de los trabajadores y sus organizaciones sindicales' por parte de las autoridades,denunciando que las políticas actuales buscan debilitar la lucha de los trabajadores organizados.
1800 ? ' warning' : '');
});
}
function cargarComentarios() {
var xhr = new XMLHttpRequest();
xhr.open('GET', baseUrl + 'ajax-comentarios.php?accion=listar&id_noticia=' + idNoticia, true);
xhr.onload = function () {
document.getElementById('comments-loading').style.display = 'none';
try {
var data = JSON.parse(xhr.responseText);
if (data.ok) {
document.getElementById('comments-count').textContent = data.total;
if (data.comentarios.length === 0) {
document.getElementById('comments-empty').style.display = 'block';
document.getElementById('comments-list').style.display = 'none';
} else {
document.getElementById('comments-empty').style.display = 'none';
document.getElementById('comments-list').style.display = 'block';
renderComentarios(data.comentarios);
}
}
} catch (e) { console.error('Error parsing comments', e); }
};
xhr.send();
}
function renderComentarios(comentarios) {
var html = '';
for (var i = 0; i < comentarios.length; i++) {
html += renderComentario(comentarios[i]);
}
document.getElementById('comments-list').innerHTML = html;
}
function renderComentario(c) {
var html = '
';
return html;
}
// Publicar comentario principal
window.publicarComentario = function (idPadre) {
var textarea = idPadre ? document.querySelector('#reply-form-' + idPadre + ' textarea') : document.getElementById('comentario-texto');
var texto = textarea ? textarea.value.trim() : '';
if (!texto) { mostrarToast('Escribí un comentario', 'error'); return; }
var btn = idPadre ? document.querySelector('#reply-form-' + idPadre + ' .btn-publicar-reply') : document.getElementById('btn-publicar');
btn.disabled = true;
btn.textContent = 'Publicando...';
var formData = new FormData();
formData.append('accion', 'publicar');
formData.append('id_noticia', idNoticia);
formData.append('comentario', texto);
if (idPadre) formData.append('id_padre', idPadre);
var xhr = new XMLHttpRequest();
xhr.open('POST', baseUrl + 'ajax-comentarios.php', true);
xhr.onload = function () {
btn.disabled = false;
btn.textContent = idPadre ? 'Responder' : 'Publicar';
try {
var data = JSON.parse(xhr.responseText);
if (data.ok) {
mostrarToast('Comentario publicado', 'success');
if (!idPadre && textarea) textarea.value = '';
var counter = document.getElementById('char-count');
if (counter) counter.textContent = '0 / 2000';
cargarComentarios();
} else {
mostrarToast(data.error || 'Error al publicar', 'error');
}
} catch (e) { mostrarToast('Error de conexión', 'error'); }
};
xhr.onerror = function () {
btn.disabled = false;
btn.textContent = idPadre ? 'Responder' : 'Publicar';
mostrarToast('Error de conexión', 'error');
};
xhr.send(formData);
};
// Responder
window.responderA = function (idComentario) {
// Cerrar otros reply forms
var existentes = document.querySelectorAll('.reply-form-inline');
for (var k = 0; k < existentes.length; k++) existentes[k].remove();
var container = document.getElementById('reply-form-' + idComentario);
if (!container) return;
container.innerHTML = '
';
container.querySelector('textarea').focus();
};
// Like / Dislike
var reaccionando = false;
window.reaccionar = function (idComentario, tipo) {
if (reaccionando) return;
var btn = event.currentTarget;
reaccionando = true;
var formData = new FormData();
formData.append('accion', tipo);
formData.append('id_comentario', idComentario);
var xhr = new XMLHttpRequest();
xhr.open('POST', baseUrl + 'ajax-comentarios.php', true);
xhr.onload = function () {
reaccionando = false;
try {
var data = JSON.parse(xhr.responseText);
if (data.ok) {
var elLikes = document.getElementById('likes-' + idComentario);
var elDislikes = document.getElementById('dislikes-' + idComentario);
if (elLikes) elLikes.textContent = data.likes;
if (elDislikes) elDislikes.textContent = data.dislikes;
// Cambiar color
var container = btn.closest('.comment-actions');
var btnLike = container.querySelector('button[onclick*="\'like\'"]');
var btnDislike = container.querySelector('button[onclick*="\'dislike\'"]');
if (data.revertido) {
btnLike.classList.remove('active-like');
btnDislike.classList.remove('active-dislike');
} else {
if (tipo === 'like') {
btnLike.classList.add('active-like');
btnDislike.classList.remove('active-dislike');
} else {
btnDislike.classList.add('active-dislike');
btnLike.classList.remove('active-like');
}
}
} else {
mostrarToast(data.error || 'Error', 'error');
}
} catch (e) { }
};
xhr.onerror = function () {
reaccionando = false;
};
xhr.send(formData);
};
// Denunciar
var idDenunciaPendiente = null;
window.denunciar = function (idComentario) {
idDenunciaPendiente = idComentario;
document.getElementById('modal-denunciar').classList.add('active');
};
window.cerrarModalDenuncia = function () {
document.getElementById('modal-denunciar').classList.remove('active');
idDenunciaPendiente = null;
};
document.getElementById('btn-confirmar-denuncia').onclick = function () {
if (!idDenunciaPendiente) return;
var idComentario = idDenunciaPendiente;
cerrarModalDenuncia();
var formData = new FormData();
formData.append('accion', 'denunciar');
formData.append('id_comentario', idComentario);
var xhr = new XMLHttpRequest();
xhr.open('POST', baseUrl + 'ajax-comentarios.php', true);
xhr.onload = function () {
try {
var data = JSON.parse(xhr.responseText);
mostrarToast(data.ok ? (data.mensaje || 'Denunciado') : (data.error || 'Error'), data.ok ? 'success' : 'error');
} catch (e) { }
};
xhr.send(formData);
};
document.getElementById('modal-denunciar').onclick = function (e) {
if (e.target === this) cerrarModalDenuncia();
};
// Toast
function mostrarToast(msg, tipo) {
var existing = document.querySelector('.comment-toast');
if (existing) existing.remove();
var toast = document.createElement('div');
toast.className = 'comment-toast ' + (tipo || '');
toast.textContent = msg;
document.body.appendChild(toast);
setTimeout(function () { toast.remove(); }, 3500);
}
function escapeHtml(text) {
if (!text) return '';
var d = document.createElement('div');
d.textContent = text;
return d.innerHTML;
}
})();