// ==UserScript==
// @name Chouaddon
// @namespace choualbox.com
// @description Addon qui améliore la navigation sur Choualbox
// @author Appineos - http://choualbox.com/blog/appineos (Benji)
// @editor CatShadow - http://choualbox.com/blog/catshadow
// @editor Divi - https://choualbox.com/blog/divi - https://choualbox.com/gZwkw#comid4154429
// @include http://choualbox.com/*
// @include https://choualbox.com/*
// @exclude http://choualbox.com/blog/*
// @exclude https://choualbox.com/blog/*
// @version 4.1.2
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_log
// @require http://code.jquery.com/jquery-2.0.3.min.js
// @updateURL https://github.com/BenjiCB/Chouaddon/raw/master/Chouaddon.user.js
// @downloadURL https://github.com/BenjiCB/Chouaddon/raw/master/Chouaddon.user.js
// ==/UserScript==
regPseudo = /blog\/(.*)/;
mediaBox = [];
regSeries = /([^\t]+?)\.*#[0-9]+.*$/;
try {
if (GM_getValue.toString().indexOf("not supported") != -1) {
this.GM_getValue=function (key,def) {
return localStorage[key] || def;
};
this.GM_setValue=function (key,value) {
localStorage[key]=value;
};
this.GM_deleteValue=function (key) {
return delete localStorage[key];
};
}
}
catch (e) {
console.log(e);
}
this.GM_getBoolValue = function (key, def) {
return (this.GM_getValue(key, def) === true || this.GM_getValue(key, def) == "true");
};
function boucle() {
boxs = document.getElementsByClassName('box_itemboucle');
for (var i in boxs) {
if (isNaN(i)) continue;
if (boxs[i].classList.contains('dejaTraitee')) continue;
box = boxs[i];
//droiteBox = box.getElementsByClassName('droite')[0];
//mediaBox = droiteBox.getElementsByClassName('medias')[0];
//idUnique = box.getElementsByClassName('nbcoms')[0].pathname;
box.classList.add('dejaTraitee');
if (box.classList.contains('mb3')) {
pseudoId = box.getElementsByClassName('b--near-white')[0].getElementsByTagName('a')[0].innerText;
titre = box.getElementsByTagName("h3")[0].getElementsByTagName("a")[0].innerHTML;
} else {
pseudoId = box.getElementsByClassName('truncate')[1].getElementsByTagName('a')[0].innerText;
titre = box.getElementsByClassName('truncate')[0].getElementsByTagName("a")[0].innerHTML;
}
if ((ignoreList.indexOf(pseudoId) == -1)) { //Si la personne n'est pas ignorée
if (!(
(box.getElementsByClassName('boutonsvote')[0].getElementsByClassName('voted').length != 0)
&& (
(GM_getBoolValue('redAutoVote', false)
|| GM_getBoolValue('delAutoVote', false)
)
)
)) {
if (GM_getBoolValue('affLienIgnore', false)) {
lienIgnore = document.createElement('a');
lienIgnore.innerHTML = ' Ignorer ' + pseudoId;
lienIgnore.className = 'ignoreNickname-' + pseudoId;
lienIgnore.style.cursor = "pointer";
lienIgnore.onclick = function () { ajoutIgnoreList(this); };
lienIgnore.style.color = 'rgb(102, 102, 102)';
//mediaBox.appendChild(lienIgnore);
}
if (GM_getBoolValue('series', false) && regSeries.test(titre)) {
titreDec = regSeries.exec(titre);
lienSerie = document.createElement('a');
lienSerie.innerHTML = ' Série ' + titreDec[1];
lienSerie.href = 'http://choualbox.com/recherche?q=' + encodeURIComponent(titreDec[1]);
//mediaBox.appendChild(lienSerie);
}
}
else {
if (GM_getBoolValue('delAutoVote', false)) {
box.parentNode.removeChild(box);
}
else {
console.log(box);
box.style.backgroundColor = '#EFEFEF';
box.style.minHeight = 0;
//box.innerHTML = 'Box déjà votée (' + pseudoId + ') - ' + titre + '';
}
}
}
else {
if (GM_getBoolValue('delIgnBox', false)) {
box.parentNode.removeChild(box);
}
else {
box.style.display = 'none';
//box.innerHTML = 'Box ignorée (' + pseudoId + ') - ' + titre + '';
}
}
}
}
function afficherImagesCommentaires() {
medias = document.getElementsByClassName('media_image');
for (var i in medias) {
if (isNaN(i)) continue;
lien = medias[i].getElementsByTagName('a')[0];
if (lien.getElementsByClassName('gif-overlay').length > 0)
lien.removeChild(lien.getElementsByClassName('gif-overlay')[0]);
image = lien.getElementsByTagName('img')[0];
image.src = lien.href;
image.style.maxWidth = '100%';
}
}
function ajoutIgnoreList(obj) {
id = obj.className;
regPseudo = /ignoreNickname-(.*)/;
if ((regPseudo.test(id)) && (pseudo = regPseudo.exec(id)[1]) && (!ignoreList.hasOwnProperty(pseudo)) && (ignoreList.indexOf(pseudo) == -1)) {
ignoreList = GM_getValue('ignoreList', "").split(", ");
if ("" == GM_getValue('ignoreList', "")) GM_setValue('ignoreList', pseudo);
else {
ignoreList.push(pseudo);
GM_setValue('ignoreList', ignoreList.join(", "));
document.getElementById('ignoreList').value = GM_getValue('ignoreList', "");
}
}
obj.innerHTML = "Ignoré";
}
function toggleSidebar(sidebar) {
if (sidebar != null) {
if (GM_getBoolValue('rmSidebar', false)) {
sidebar.style.display = 'none';
var a = document.getElementById('principal').getElementsByClassName('col-xs-8')[0];
a.className = 'col-xs-12';
a.style.backgroundColor = 'white';
}
else {
sidebar.style.display = 'block';
document.getElementById('principal').getElementsByClassName('col-xs-12')[0].className = 'col-xs-8';
}
}
}
function ajouterOptionMenu(label, nomInterne, type, parent, def) {
option = document.createElement("div");
option.style.marginBottom = "5px";
if (type == "textarea") optionInput = document.createElement(type);
else {
optionInput = document.createElement("input");
optionInput.type = type;
}
if (type == "checkbox"){
optionInput.onclick = function () { optionChange(this); };
optionInput.checked = GM_getBoolValue(nomInterne, def);
}
else {
optionInput.onblur = function () { optionChange(this); };
optionInput.value = GM_getValue(nomInterne, def);
}
optionInput.id = nomInterne;
optionInput.style.height = "auto";
optionInput.style.width = "auto";
optionInput.style.marginRight = "5px";
optionLabel = document.createElement("label");
optionLabel.htmlFor = nomInterne;
optionLabel.innerHTML = label;
optionLabel.style.display = "inline";
optionLabel.style.fontWeight = "normal";
if (type == "textarea") {
option.appendChild(optionLabel);
option.appendChild(document.createElement('br'));
optionInput.style.width = "100%";
option.appendChild(optionInput);
}
else {
option.appendChild(optionInput);
option.appendChild(optionLabel);
if (type == "color") {
optionInput.style.width = "38px";
optionInput.style.height = "26px";
}
}
parent.appendChild(option);
}
function optionChange(optionInput) {
if (optionInput.type == "checkbox") val = optionInput.checked;
else val = optionInput.value;
GM_setValue(optionInput.id, val);
}
gCGW = document.createElement('div');
gCGW.classList.add('dropdown-menu');
gCGW.style.width = "600px";
gCGW.style.padding = "5px";
titregCGW = document.createElement('h1');
titregCGW.innerHTML = "Chouaddon v4.1 - Configuration";
gCGW.appendChild(titregCGW);
ajouterOptionMenu('Réduire les box déjà votées (un lien sera quand même affiché)', 'redAutoVote', "checkbox", gCGW, false);
ajouterOptionMenu('Supprimer les box déjà votées', 'delAutoVote', "checkbox", gCGW, false);
ajouterOptionMenu('Images commentaire en taille réelle', 'affichageImagesCommentaires', "checkbox", gCGW, false);
ajouterOptionMenu('Lien auto de recherche lors d\'une série', 'series', "checkbox", gCGW, false);
ajouterOptionMenu('Lien sur chaque box pour ignorer les box de l\'auteur', 'affLienIgnore', "checkbox", gCGW, false);
ajouterOptionMenu('Utilisateurs ignorés : (Séparés par des virgules, pas de majuscules)', 'ignoreList', "textarea", gCGW, "");
ajouterOptionMenu('Supprimer les boxs ignorées (Réduites sinon)', 'delIgnBox', "checkbox", gCGW, false);
// Menu de config
elementMenu = document.createElement('li');
elementMenu.className = 'with-icon tooltip-bottom';
elementMenu.attributes.style = "position:relative;";
filtreElementMenu = document.createElement('i');
filtreElementMenu.className = 'glyphicon glyphicon-plus';
filtreElementMenu.style.cursor = "pointer";
lienElementMenu = document.createElement('a');
lienElementMenu.style.paddingTop = "15px";
lienElementMenu.style.paddingLeft = "0px";
lienElementMenu.style.paddingRight = "0px";
lienElementMenu.style.paddingBottom = "0px";
lienElementMenu.onclick = function() {
gCGW.style.display = (gCGW.style.display == "none" || gCGW.style.display == "") ? "block" : "none";
filtreElementMenu.className = (gCGW.style.display == "none" || gCGW.style.display == "") ? 'glyphicon glyphicon-plus' : 'glyphicon glyphicon-minus';
};
lienElementMenu.appendChild(filtreElementMenu);
elementMenu.appendChild(lienElementMenu);
elementMenu.appendChild(gCGW);
document.getElementById('coldroite').appendChild(elementMenu);
//Sidebar
elementMenu2 = document.createElement('li');
elementMenu2.className = 'with-icon tooltip-bottom';
elementMenu2.attributes.style = "position:relative;";
sidebarElementMenu = document.createElement('i');
sidebarElementMenu.className = GM_getBoolValue('rmSidebar', false) ? 'glyphicon glyphicon-align-left' : ' glyphicon glyphicon-indent-right';
sidebarElementMenu.style.cursor = "pointer";
lienElementMenu2 = document.createElement('a');
lienElementMenu2.style.paddingTop = "15px";
lienElementMenu2.style.paddingLeft = "0px";
lienElementMenu2.style.paddingRight = "0px";
lienElementMenu2.style.paddingBottom = "0px";
lienElementMenu2.style.marginLeft = '10px';
lienElementMenu2.onclick = function() {
GM_setValue('rmSidebar', !GM_getBoolValue('rmSidebar', false));
sidebarElementMenu.className = GM_getBoolValue('rmSidebar', false) ? 'glyphicon glyphicon-align-left' : ' glyphicon glyphicon-indent-right';
if (document.getElementById('sidebar') != null) { toggleSidebar(document.getElementById('sidebar')); }
if (document.getElementsByClassName('col-xs-4').length > 0) { toggleSidebar(document.getElementsByClassName('col-xs-4')[0]); }
};
lienElementMenu2.appendChild(sidebarElementMenu);
elementMenu2.appendChild(lienElementMenu2);
document.getElementById('coldroite').appendChild(elementMenu2);
document.getElementById("ignoreList").style.resize = "vertical";
document.getElementById("ignoreList").style.maxHeight = "400px";
ignoreList = GM_getValue('ignoreList', "").split(", ");
if (document.getElementsByClassName('box_itemboucle').length > 0) { boucle(); setInterval(boucle, 3000); }
if (document.getElementsByClassName('commentaires').length > 0 && GM_getBoolValue('affichageImagesCommentaires', false)) { afficherImagesCommentaires(); }
if (document.getElementById('sidebar') != null && GM_getBoolValue('rmSidebar', false)) { toggleSidebar(document.getElementById('sidebar')); }
if (document.getElementsByClassName('col-xs-4').length > 0 && GM_getBoolValue('rmSidebar', false)) { toggleSidebar(document.getElementsByClassName('col-xs-4')[0]); }