Bueno, depsués de ver que aun no hay solución me di unos 15 minutos para crear un pequeño script que automatiza el marcar como leido a todo xD
Que hay que hacer?:
1. Tener Firefox
2. Instalar el complemento GreasyMonkey (
https://addons.mozilla.org/es/firefox/addon/greasemonkey/ )
3. Crear un nuevo user-script
4. Pegar mi código:
// ==UserScript==
// @name Elhacker.net - Mark all as read
// @namespace elh-maar
// @description Habilita el botón para marcar todos los temas como leidos en la sección de temas no leidos.
// @include http://foro.elhacker.net/unreadreplies.html
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
// @version 1
// @grant none
// ==/UserScript==
$(document).ready(function(){
/* Existe el botón para marcar como leidos? */
if($('img[alt="Marcar TODOS los mensajes como leídos"]').length){
/* Establece el evento del botón */
$('img[alt="Marcar TODOS los mensajes como leídos"]')
.closest('a')
.click(function(evento){
/* Previene la redirección con problemas */
evento.preventDefault();
try{
/* Crea la ventana de informaciones */
$('<div />')
.css({
position : 'fixed',
width : '400px',
height : '59px',
top : '50%',
left : '50%',
marginLeft : '-200px',
marginTop : '-50px',
backgroundColor : '#FFFFFF',
color : '#333333',
fontFamily : 'Arial',
fontSize : '17px',
border : '1px solid #666666',
borderRadius : '5px',
boxShadow : '9px 12px 10px -10px #000000',
textAlign : 'center',
paddingTop : '41px'
})
.addClass('ehn_maar_mensaje')
.text('Preparando ...')
.appendTo($('body'));
/* Parsea los datos convirtiendolos en objetos */
data = {
'accionUrl' : $(this).attr('href').split('topics=')[0] + 'topics=',
'sesc' : ';sesc=' + $(this).attr('href').split(';sesc=')[1],
'ids' : $(this).attr('href').split('-'),
'totalIds' : 0
};
/* Limpia los ids */
if(data.ids){
for(_llave in data.ids){
/* Remueve la basura del costado izquierdo del id */
if(data.ids[_llave].indexOf('=') > -1)
data.ids[_llave] = data.ids[_llave].split('=')[1];
/* Remueve la basura del costado derecho del id */
if(data.ids[_llave].indexOf(';') > -1)
data.ids[_llave] = data.ids[_llave].split(';')[1];
}
data.totalIds = data.ids.length;
/* Envía los ids al servidor de 5 en 5 */
for(var loop1 = 1; loop1 <= data.totalIds; loop1 = loop1 + 5){
/* Hay ids? */
if(data.ids.length){
/* candidatos de ids a enviar */
idsEnviar = new Array();
for(var loop2 = 1; loop2 <= 5; loop2++)
/* Aun hay ids? */
if(data.ids.length)
/* Completa el stack */
idsEnviar.push(data.ids.pop());
else /* No hay mas ids */
break;
/* Hay ids candidatos a enviar? */
if(idsEnviar.length){
$('.ehn_maar_mensaje').text('Marcando del ' + loop1 + ' al ' + (loop1 + (idsEnviar.length - 1)) + ', de ' + data.totalIds + ' ...');
/* Envía la solicitud al servidor */
$.ajax({
url : data.accionUrl + idsEnviar.join('-') + data.sesc,
type : 'get',
cache : false,
async : false
});
}
}else{
/* No hay mas ids */
break;
}
}
$('.ehn_maar_mensaje').text('Finalizado! Redireccionando ...');
document.location.reload();
}else{
/* No hay ids */
alert('No hay mensajes para marcar como leido');
}
}catch(e){
/* Problema con el código? */
alert('Error: ' + e.message);
}
});
}
});
Después cierran todas las ventanas del greasymonkey y lo dejan activado.
Ahora cada ves que entren a la sección de temas no leidos (
http://foro.elhacker.net/unreadreplies.html ) y le den click al botón de marcar como leidos a todos aparecerá un recuadro que dice "marcando x de 45 ..." y lo que hace es lo siguiente:
Como el problema del servidor es procesar las urls largas tomé todos los ids que van por url y los agrupé y hago que se envíen de 5 en 5 y listo
, cuando termina dice "Redireccionando ..." y verás que tus temas no leidos desaparecieron:
Saludos.