NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name KoreuScript
// @namespace Benissou/KoreuScript
// @version 0.10.15
// @author Benissou
// @description Amélioration du site Koreus.com
// @homepage https://www.koreus.com/modules/newbb/topic165924.html
// @icon https://k.img.mu/qTOXTs.png
// @updateURL https://openuserjs.org/meta/Benissou/KoreuScript.meta.js
// @include http://www.koreus.com/*
// @include https://www.koreus.com/*
// @include http://appli.koreus.com/*
// @include https://appli.koreus.com/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js
// @require https://raw.githubusercontent.com/bryanwoods/autolink-js/1.0.2/autolink-min.js
// @connect appli.koreus.com
// @grant GM.deleteValue
// @grant GM.setValue
// @grant GM_getValue
// @grant GM_addStyle
// @grant GM_setValue
// @grant GM_xmlhttpRequest
// @copyright 2016+, Benissou
// @license MIT
// ==/UserScript==
// ==OpenUserJS==
// @author Benissou
// @collaborator Boboss
// ==/OpenUserJS==
(function () {
'use strict'
if (window.location.host === 'appli.koreus.com') {
return improveAppli() // Amélioration de l'Appli Koreus
}
GM_addStyle('\
.checkboxks {display: none;}\
.checkboxks+label { position: relative; padding-left: 55px; cursor: pointer; }\
.checkboxks+label::before, .checkboxks+label::after { content: ""; position: absolute; border: 1px solid #777; transition: background-color .2s; }\
.checkboxks+label::before { left: 0; top: -3px; width: 45px; height: 20px; background: #DDDDDD; border-radius: 15px; }\
.checkboxks+label::after { left: 5px; top: 2px; width: 10px; height: 10px; background: #461B1B; border-radius: 50%; }\
.checkboxks:checked+label::before {background: #34495E;}\
.checkboxks:checked+label::after { background: #39D2B4; left: 30px; }\
.checkboxks+label .ui { position: absolute; left: 30px; font-size: 14px; font-weight: bold; transition: all .2s; }\
.checkboxks:checked+label .ui {left: 6px;}\
.checkboxks+label .ui::after { content: "✖"; left: 28px; }\
.checkboxks:checked+label .ui::after { content: "✓"; color: #39D2B4; }\
')
// Initialise les variable permanentes
const themeStyle = GM_getValue('ThemeSave') === undefined ? false : GM_getValue('ThemeSave')
let checkMessage = GM_getValue('CheckMSave') === undefined ? false : GM_getValue('CheckMSave')
let checkPageDown = GM_getValue('CheckPSave') === undefined ? false : GM_getValue('CheckPSave')
let checkRepRapid = GM_getValue('RepRapidSave') === undefined ? false : GM_getValue('RepRapidSave')
let checkEmoji = GM_getValue('CheckEmojiSave') === undefined ? false : GM_getValue('CheckEmojiSave')
let voteColor = GM_getValue('VoteColorSave') === undefined ? false : GM_getValue('VoteColorSave')
let realVote = GM_getValue('RealVoteSave') === undefined ? true : GM_getValue('RealVoteSave')
let commentsBelowVideo = GM_getValue('commentsBelowVideo') === undefined ? true : GM_getValue('commentsBelowVideo')
// ===================
// Change le Theme =================
switch (themeStyle) {
case 'Look':
GM_addStyle('td#leftcolumn div.blockTitle{color:#306;background:linear-gradient(#fbe38b,#fecc53);padding:4px 3px}td#usermenu{padding:0}td#leftcolumn div.blockContent{padding:0}td#usermenu a{transition:background .3s;padding:2px 0 2px 6px;border-right:0;border-color:#ccc}td#leftcolumn div.blockContent{font-size:10px}td#mainmenu{padding:0}td#mainmenu a{transition:background .3s;padding:2px 0 2px 6px;border-right:0}td#mainmenu a.menuMain{border-right:0;padding-left:6px}td#mainmenu a.menuTop{border-right:0;border-bottom:1px solid #ccc;padding-left:6px}td#mainmenu a.menuSub{border-right:0;background-color:#E0DFE7;border-left:10px solid #ccc;border-color:#ccc;padding-left:8px}td#usermenu a:hover{background-color:#FFF;box-shadow:0 0 5px 3px rgba(0,0,0,0.2)}td#mainmenu a.menuSub:hover,a.menuTop:hover,a.menuMain:hover{background-color:#FFF;box-shadow:0 0 5px 3px rgba(0,0,0,0.2)}td#leftcolumn div.blockContent ul{padding:0;margin:0}td#leftcolumn div.blockContent li{margin:0;transition:background .3s;padding:2px 0 2px 6px;border-bottom:1px solid #ccc;list-style:none}td#leftcolumn div.blockContent li:hover{background-color:#FFF;box-shadow:0 0 5px 3px rgba(0,0,0,0.2)}td#centercolumn div#content table.outer tbody tr.odd td{vertical-align:middle}td#centercolumn div#content table.outer tbody tr.even td{vertical-align:middle}table.index_category tbody .head{background:linear-gradient(#BEBEE4,#9A9ACE);font-weight:700;box-shadow:0 2px 6px 0 rgba(0,0,0,0.15);height:25px}table.index_category td{padding:3px;vertical-align:middle}.item{margin-left:10px}.itemFoot{margin-left:10px}td[width="4%"],td[valign="middle"]{vertical-align:middle}table.index_category{margin-top:0;margin-bottom:0}td#centercolumn div#content div#cat_1{background-color:#fff}div[style="margin-left: auto; margin-right: auto;text-align:center; width:500px"]{margin-left:auto!important;margin-right:20px!important;text-align:right!important;width:500px!important}select{background-color:#FFF;border-top-left-radius:4px;box-shadow:0 2px 6px 0 rgba(0,0,0,0.15);z-index:1;border:0!important;cursor:pointer}div.dropdown .menu,div.dropdown .userbar{padding-left:0;text-align:center}table.outer > tbody > tr > th > div{padding-left:10px}#mainoption option{box-shadow:0 1px 6px 0 rgba(0,0,0,0.15);padding:5px}table.outer{border:0}table.outer > tbody > tr:nth-child(4){box-shadow:0 6px 4px 0 rgba(0,0,0,0.15)}table.outer > tbody > tr:nth-child(1) > th{padding-right:10px}div#content{margin-left:10px}#forumoption option{box-shadow:0 1px 6px 0 rgba(0,0,0,0.15);padding:3px 5px}#content > div:nth-child(5){padding-left:20px}#content div.dropdown #topicoption{margin-left:20px}#content > div:nth-child(13){padding-left:20px}table.outer > tbody > tr:nth-child(4){border-bottom-right-radius:15px;border-bottom-left-radius:15px}table.outer > tbody > tr{border-bottom-right-radius:0;border-bottom-left-radius:0}table.outer > tbody > tr:nth-child(4) > td:nth-child(1){border-bottom-left-radius:15px}table.outer > tbody > tr:nth-child(4) > td:nth-child(2){border-bottom-right-radius:15px;padding-right:10px}table.outer > tbody > tr:nth-child(1) > th:nth-child(1){border-top-left-radius:15px}table.outer > tbody > tr:nth-child(1) > th:nth-child(3){border-top-right-radius:15px}td#centercolumn div#content table.outer tbody tr.odd td{border-bottom-right-radius:0;border-bottom-left-radius:0}td#centercolumn div#content table.outer tbody tr.odd{border-bottom-right-radius:0;border-bottom-left-radius:0;box-shadow:none}span.itemPoster{padding:5px 1px 4px 5px;margin-right:5px;background-color:#E0DFE7;border-top-left-radius:10px;border-top-right-radius:10px}div.item{border-left:1px solid #c8c8c8;border-right:1px solid #c8c8c8;border-top-left-radius:10px;border-top-right-radius:10px;border-bottom-width:1px;border-bottom-color:#E0DFE7}div.itemHead{border-top-left-radius:10px;border-top-right-radius:10px;border-top-width:1px}div.item > div > h1{padding-left:10px}div.itemFoot{border-bottom-left-radius:10px;border-bottom-right-radius:10px;border-bottom-width:1px;box-shadow:0 6px 4px 0 rgba(0,0,0,0.15);background-color:#fff}div.itemFoot > span{padding-right:10px}#centercolumn{padding-right:10px}div.item > p{padding-left:10px}div.item > p > a > img{background-color:#9A9ACE;display:inline-block;border:0;border-radius:4px;padding:5px;transition:.3s}div.item > p > a > img:hover{box-shadow:0 0 2px 1px rgba(0,0,0,0.5);background-color:#fff}div#content{padding:0}#subject_pre,#messageColor,#messageFont,#messageSize,#newbb_form,select[name="add"],#$dates_msg,#limit{box-shadow:0 1px 6px 0 rgba(0,0,0,0.15);padding:2px 5px;border-top-left-radius:0}input[type="text"],textarea{box-shadow:0 2px 6px 0 rgba(0,0,0,0.15);z-index:1;border:0!important;min-height:21px}input[type="checkbox"]{box-shadow:0 2px 6px 0 rgba(0,0,0,0.15);z-index:1;border:0!important;cursor:pointer}input[type="submit"],input[type="button"],input[type="reset"]{min-height:21px;box-shadow:0 2px 6px 0 rgba(0,0,0,0.15);z-index:1;border:0!important;color:#306;background-color:#FFF;cursor:pointer}input[type="submit"]:hover,input[type="button"]:hover,input[type="reset"]:hover{box-shadow:0 2px 2px 0 rgba(0,0,0,0.5);background:none;background-color:#FFF}input[value="Recherche"],[value="Rechercher"],[value="Valider"],[value="Ok !"],[value="Ok"]{background:linear-gradient(#fbe38b,#fecc53);font-weight:700;cursor:pointer}input#contents_submit:hover,input[value="Recherche"]:hover,input[value="Rechercher"]:hover,input[value="Valider"]:hover,input[value="Ok !"]:hover,input[value="Ok"]:hover{background:linear-gradient(#fbe38b,#fecc53)}input#move,input#lu,input#nlu,input#del,input[value="?"],input[name="sa"],input[value="Citation"],input[value="Réponse Rapide"],input[value="Vider"],input[value="Prévisualiser"],input[value="Soumettre"],input[value="Ajouter"]{background:none;background-color:#FFF;margin-bottom:2px;cursor:pointer}td#centercolumn div form input[name="sa"]{background:linear-gradient(#fbe38b,#fecc53);font-weight:700;font-size:12px}input#reply{background:linear-gradient(#fbe38b,#fecc53);margin-bottom:2px;cursor:pointer;font-weight:700}')
$('img[src="//koreus.cdn.li/static/images/logo.jpg"]').attr('src', '//k.img.mu/GYD7KO.png').removeAttr('height').removeAttr('width')
break
case 'Dark':
GM_addStyle('body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#efefef;background-color:#353535!important}.navbar-default{background-color:#2C2C2C!important;border-color:#000}.navbar-default .navbar-nav > li > a:focus,.navbar-default .navbar-nav > li > a:hover{color:#fff;background-color:transparent}.navbar-default .navbar-nav > li > a,.navbar-default .navbar-text{color:#fff}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#2C2C2C;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu > li > a{clear:both;font-weight:400;color:#fff}.dropdown-menu > li > a:hover{background-color:#acaaba;color:#555}.dropdown-menu > .active > a,.dropdown-menu > .active > a:hover,.dropdown-menu > .active > a:focus{color:#fff;text-decoration:none;outline:0;background-color:#fecc53;color:#000}.container{background:transparent!important;border:0!important}li{margin-left:2px;list-style-type:none!important;color:#FFF}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#252525;border:1px solid #000;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.panel{margin-bottom:20px;background-color:transparent;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.btn-default{color:#000;background-color:#fecc53!important;border-color:#121212}.btn-default:hover{color:#fff;background-color:#9A9ACE!important;border-color:#121212}.pagination > li > a,.pagination > li > span{position:relative;float:left;padding:12px;line-height:1.42857143;text-decoration:none;color:#fff;background-color:#252525;border:1px solid #121212;margin-left:-1px}.pagination > li > a:hover{position:relative;float:left;padding:12px;line-height:1.42857143;text-decoration:none;color:#000;background-color:#fecc53;border:1px solid #121212;margin-left:-1px}.pagination > .active > a,.pagination > .active > span,.pagination > .active > a:hover,.pagination > .active > span:hover,.pagination > .active > a:focus,.pagination > .active > span:focus{z-index:2;color:#fff;background-color:#9A9ACE;border-color:#306;cursor:default}table{width:100%;font-size:12px;background-color:#303030!important;font-family:Verdana,Arial,Helvetica,sans-serif;color:#ccc}td#centercolumn{font-size:12px;background-color:#303030!important}td#leftcolumn div.blockTitle{color:#000;background:#fecc53;padding:4px 3px;text-transform:uppercase}td#leftcolumn{width:170px;border-right:0 solid #fecc53;font-size:12px;color:#306;background-color:#303030}td#usermenu{padding:0;background:#2C2C2C;color:#B8B8B8}td#leftcolumn div.blockContent{background:#2C2C2C;color:#B8B8B8;box-shadow:inset 0 0 5px 0 #000;padding:2px}a{color:#ddd}a:hover{color:#fecc53}td#usermenu a{transition:background .3s;padding:2px 0 2px 6px;border:0;border-color:#000}td#mainmenu{padding:0!important}td#mainmenu a{transition:background .3s;padding:2px 0 2px 6px;border:0;margin:2px;box-shadow:inset 0 0 5px 0 #000;text-transform:uppercase}td#mainmenu a:hover{transition:background .3s;box-shadow:inset 0 0 20px 0 #000;background-color:rgba(255,255,255,0.1)}td#mainmenu a.menuMain{padding:5px;border:0}td#mainmenu a.menuTop{background-color:rgba(0,0,0,0.1);padding:5px;border-right:0;border:0;padding-left:6px}td#mainmenu a.menuSub{border:0;background-color:rgba(0,0,0,0.3);border-left:10px solid #fecc53;padding:5px;margin:5px;box-shadow:inset 0 0 5px 0 #000}td#leftcolumn div.blockContent{border:2px solid #fecc53}td#leftcolumn div.blockContent ul{padding:0;margin:0}td#leftcolumn div.blockContent li{transition:background .3s;padding:5px;border:0;margin:2px;box-shadow:inset 0 0 5px 0 #000}td#leftcolumn div.blockContent li:hover{transition:background .3s;box-shadow:inset 0 0 50px 0 #000;background-color:rgba(255,255,255,0.1)}td#centercolumn div#content table.outer tbody tr.odd td{vertical-align:middle}td#centercolumn div#content table.outer tbody tr.even td{vertical-align:middle}table.index_category tbody .head{background:#404040;font-weight:700;box-shadow:inset 0 0 20px 0 rgba(0,0,0,0.15);height:40px}table.index_category td{padding:3px;vertical-align:middle}tr .even{box-shadow:inset 0 0 0 0 rgba(0,0,0,0.5);border:solid 1px #252525}tr .odd{box-shadow:inset 0 0 0 0 rgba(0,0,0,0.5);border:solid 1px #252525}.item{margin-left:10px}.itemHead{box-shadow:0 0 5px 0 rgba(0,0,0,0.5)}.itemFoot{margin-left:10px;box-shadow:0 0 5px 0 rgba(0,0,0,0.5)}td[width="4%"],td[valign="middle"]{vertical-align:middle}table.index_category{margin-top:0;margin-bottom:0}td#centercolumn div#content div#cat_1{background-color:#fff}div[style="margin-left: auto; margin-right: auto;text-align:center; width:500px"]{margin-left:auto!important;margin-right:20px!important;text-align:right!important;width:500px!important}select{background-color:#252525;color:#fff;box-shadow:0 0 6px 0 rgba(0,0,0,0.15);z-index:1;border:0!important;cursor:pointer}div.dropdown .menu,div.dropdown .userbar{padding-left:0;text-align:center}table.outer > tbody > tr > th > div{padding-left:10px}#mainoption option{box-shadow:0 0 6px 0 rgba(0,0,0,0.15);padding:5px}table.outer{border:0}table.outer > tbody > tr:nth-child(4){box-shadow:0 6px 4px 0 rgba(0,0,0,0.15)}table.outer > tbody > tr:nth-child(1) > th{padding-right:10px}#forumoption option{box-shadow:0 1px 6px 0 rgba(0,0,0,0.15);padding:3px 5px}#content > div:nth-child(5){padding-left:20px}#content div.dropdown #topicoption{margin-left:20px}#content > div:nth-child(13){padding-left:20px}tr.even td{background-color:#343434;padding:5px}tr.odd td{background-color:#292929;padding:5px}div.xoopsQuote{background:#121212;border:1px solid #323232;font-family:Verdana,Arial,Helvetica,sans-serif;padding:0 6px 6px;font-size:12px;color:#AAA}td#rightcolumn{width:170px;border-left:1px solid #ccc;font-size:12px;background-color:TRANSPARENT}td#centerCcolumn div.blockContent{border:1px solid #000;padding:3px;margin-right:0;margin-left:0;margin-bottom:2px;line-height:120%;color:#000}h1,h1 a{margin-top:0;margin-bottom:0;font-weight:700;color:#fecc53;background-color:transparent;font-size:18px;text-decoration:none}td#centercolumn th{background-color:#252525;font-weight:700;color:#fecc53;vertical-align:middle;padding:10px}.even{background-color:transparent;padding:15px}.comUserStat{font-size:10px;color:#fff;font-weight:700;border:0 solid #111;background-color:transparent;margin:0;padding:2px}span.itemPoster{padding:5px 1px 4px 5px;margin-right:5px;color:#fecc53;background:transparent}div.item{border:1px solid #000;border-bottom-width:0;background:#252525;padding:10px;box-shadow:inset 0 0 5px #000}div.itemHead{border:1px solid #000;background:#404040;padding:10px}div.itemInfo{border:1px solid #000;border-top-width:0;background:#505050}.itemTitle,.itemTitle a{font-weight:700;color:#fff;background-color:transparent;font-size:14px;text-decoration:none}.itemTitle a:hover{color:#fff!important;background-color:transparent!important}.itemText{margin-top:5px;margin-bottom:5px;line-height:1.5em;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:12px;color:#fff}.itemText a{color:#fecc53}.itemText a:hover{color:#9A9ACE!important;background:transparent!important}div.item > div > h1{padding-left:10px}div.itemFoot{border:1px solid #000;border-top-width:0;background:#404040}div.itemFoot > span{padding-right:10px}td#centerCcolumn legend.blockTitle{padding:3px;color:#fecc53;font-weight:700;margin-top:0;margin-right:0;margin-left:0}td#rightcolumn div.blockTitle{padding:5px;color:#fff;font-weight:700;background:#9A9ACE;text-align:center}td#rightcolumn{width:170px;border-left:0 solid #ccc;font-size:12px;background-color:TRANSPARENT}td#rightcolumn div.blockContent{padding:0;line-height:120%;background-color:#9A9ACE}#centercolumn{padding-right:10px}div.item > p{padding-left:10px}div.item > p > a > img{background-color:transparent;display:inline-block;border:0;box-shadow:inset 0 0 10px 0 #000;padding:2px;transition:.3s}div.item > p > a > img:hover{background-color:#fecc53}h2,h2 a{margin-top:0;margin-bottom:0;font-weight:700;color:#fecc53;background-color:transparent;font-size:16px;text-decoration:none}.foot{background-color:#181818;padding:5px;font-weight:700}.footer{background-color:#181818;padding:5px;font-weight:700}.footer a{background-color:transparent;padding:5px;font-weight:700}.small{color:#bbb}.small a{color:#fff}.odd{background-color:#252525;padding:0;padding-left:5px}.head{background-color:#161616;padding:5px;font-weight:700}div#content{padding:0}fieldset{border:solid 1px #111}#subject_pre,#messageColor,#messageFont,#messageSize,#newbb_form,select[name="add"],#$dates_msg,#limit{box-shadow:0 1px 6px 0 rgba(0,0,0,0.15);padding:2px 5px;border-top-left-radius:0}input[type="text"],textarea{box-shadow:0 0 6px 0 rgba(0,0,0,0.15);z-index:1;border:0!important;min-height:20px;background-color:#111;color:#aaa}input[type="checkbox"]{box-shadow:0 2px 6px 0 rgba(0,0,0,0.15);z-index:1;border:0!important;cursor:pointer}input[type="submit"],input[type="button"],input[type="reset"]{min-height:21px;box-shadow:0 2px 6px 0 rgba(0,0,0,0.15);z-index:1;border:0!important;color:#fecc53;background-color:#111!important;cursor:pointer}input[type="submit"]:hover,input[type="button"]:hover,input[type="reset"]:hover{box-shadow:inset 0 0 5px 0 rgba(0,0,0,0.5);background:none;background-color:#222!important}input[value="Recherche"],[value="Rechercher"],[value="Valider"],[value="Ok !"],[value="Ok"]{background:linear-gradient(#fbe38b,#fecc53);color:#222!important;font-weight:700;cursor:pointer}input#contents_submit:hover,input[value="Recherche"]:hover,input[value="Rechercher"]:hover,input[value="Valider"]:hover,input[value="Ok !"]:hover,input[value="Ok"]:hover{background:linear-gradient(#fbe38b,#fecc53)}input#move,input#lu,input#nlu,input#del,input[value="?"],input[name="sa"],input[value="Citation"],input[value="Réponse Rapide"],input[value="Vider"],input[value="Prévisualiser"],input[value="Soumettre"],input[value="Ajouter"]{background:none;color:#fecc53;background-color:#111!important;margin-bottom:2px;cursor:pointer}td#centercolumn div form input[name="sa"]{background:linear-gradient(#fbe38b,#fecc53);font-weight:700;font-size:12px}input#reply{background:linear-gradient(#fbe38b,#fecc53);margin-bottom:2px;cursor:pointer;font-weight:700}')
$('img[src="//koreus.cdn.li/static/images/logo.jpg"]').attr('src', '//k.img.mu/GYD7KO.png').removeAttr('height').removeAttr('width')
break
default:
}
// ==============================
// Corrige des bugs =================
// Fix: Messagerie, champs destinataire limité à 50 caractères
// https://www.koreus.com/modules/newbb/topic187711.html
$('input[name="to_userid"]').removeAttr('maxlength').attr('size', 50)
// Fix: Intégration d'un tweet supprimé laisse un espace vide
// https://www.koreus.com/modules/newbb/topic198288.html
GM_addStyle('blockquote.twitter-tweet-error { background: url("https://k.img.mu/ekaAqx.png") no-repeat; height: 80px; margin: unset;}')
// Fix: Twitter widget height
if (window.location.pathname.startsWith('/video/')) {
window.addEventListener('load', () => {
if (document.getElementById('twitter-widget-0')) {
// When loaded in a new tab, offsetHeight is 0
const twitterWidgetHeight = document.getElementById('twitter-widget-0').offsetHeight || 600
if (document.getElementById('videoDiv')) {
document.getElementById('videoDiv').style['padding-bottom'] = 'unset'
document.getElementById('videoDiv').style.height = `${twitterWidgetHeight + 15}px`
} else {
console.warn('Koreuscript - fix twitter widget height: cannot find #videoDiv')
}
}
})
}
// ==============================
// Ajoute le menu ==================
$('#leftcolumn').prepend('<div id="ks-options" class="blockContent"><button id="ks-options-button" type="button" style="width:100%">▼ KoreuScript Options</button></div>')
$('#ks-options').append('<div id="menu-script" style="display:none;padding-bottom:5px;">\
<div id="Theme" style="padding:5px">\
Thème : \
<select name="theme" style="width: 60%;float: right;" >\
<option value="Defaut">Aucun</option>\
<option value="Look">Koreus Look</option>\
<option value="Dark">Koreus Dark</option>\
</select> \
</div>\
<p style="padding-left:5px"><input name="ReponseCheck" id="Check_R_ID" class="checkboxks" type="checkbox"><label name="ReponseCheck" for="Check_R_ID"><span class="ui"></span>Lien Message</label></p>\
<p style="padding-left:5px"><input name="PageCheck" class="checkboxks" id="Check_P_ID" type="checkbox"><label name="PageCheck" for="Check_P_ID"><span class="ui"></span>Défilement</label></p>\
<p style="padding-left:5px"><input name="RapideStyleCheck" class="checkboxks" id="Check_RR_ID" type="checkbox"><label name="RapideStyleCheck" for="Check_RR_ID"><span class="ui"></span>Editeur Rapide</label></p>\
<p style="padding-left:5px"><input name="EmojiCheck" class="checkboxks" id="Check_Emoji_ID" type="checkbox"><label name="EmojiCheck" for="Check_Emoji_ID"><span class="ui"></span>Emoji</label></p>\
<p style="padding-left:5px"><input name="VoteColor" class="checkboxks" id="Check_VoteColor_ID" type="checkbox"><label name="VoteColor" for="Check_VoteColor_ID"><span class="ui"></span>Couleur Vote</label></p>\
<p style="padding-left:5px"><input name="RealVote" class="checkboxks" id="Check_RealVote_ID" type="checkbox"><label name="RealVote" for="Check_RealVote_ID"><span class="ui"></span>Score Vote Réel</label></p>\
<p style="padding-left:5px"><input name="CommentsBelowVideo" class="checkboxks" id="comments-below-video" type="checkbox"><label name="CommentsBelowVideo" for="comments-below-video"><span class="ui"></span>Commentaires sous vidéo</label></p>\
</div>')
// ==============================
// Ouverture/Fermeture du menu
function toogleMenu () {
const elem = document.getElementById('menu-script')
if (elem.style.display !== 'none') {
$('#ks-options-button').html('▼ KoreuScript Options')
elem.style.display = 'none'
} else {
$('#ks-options-button').html('▲ KoreuScript Options')
elem.style.display = 'block'
}
}
if (document.getElementById('ks-options-button')) {
document.getElementById('ks-options-button').addEventListener('click', toogleMenu)
}
// =======================
// Change les variables permanentes
$('select[name="theme"]').val(themeStyle)
$('#Check_R_ID').prop('checked', checkMessage)
$('#Check_P_ID').prop('checked', checkPageDown)
$('#Check_RR_ID').prop('checked', checkRepRapid)
$('#Check_Emoji_ID').prop('checked', checkEmoji)
$('#Check_VoteColor_ID').prop('checked', voteColor)
$('#Check_RealVote_ID').prop('checked', realVote)
$('#comments-below-video').prop('checked', commentsBelowVideo)
$('select[name="theme"]').change(function () {
GM_setValue('ThemeSave', this.value)
location.reload()
})
$('#Check_R_ID').change(() => {
checkMessage = !checkMessage
GM_setValue('CheckMSave', checkMessage)
})
$('#Check_P_ID').change(() => {
checkPageDown = !checkPageDown
GM_setValue('CheckPSave', checkPageDown)
location.reload()
})
$('#Check_RR_ID').change(() => {
checkRepRapid = !checkRepRapid
GM_setValue('RepRapidSave', checkRepRapid)
location.reload()
})
$('#Check_Emoji_ID').change(() => {
checkEmoji = !checkEmoji
GM_setValue('CheckEmojiSave', checkEmoji)
location.reload()
})
$('#Check_VoteColor_ID').change(() => {
voteColor = !voteColor
GM_setValue('VoteColorSave', voteColor)
location.reload()
})
$('#Check_RealVote_ID').change(() => {
realVote = !realVote
GM_setValue('RealVoteSave', realVote)
location.reload()
})
$('#comments-below-video').change(() => {
commentsBelowVideo = !commentsBelowVideo
GM_setValue('commentsBelowVideo', commentsBelowVideo)
location.reload()
})
// ==========================
// Ajoute le lien du message si l'option est cochée
if (checkMessage) {
const url = new URL(window.location.href)
const urlParams = new Map(url.searchParams)
if (url.pathname === '/modules/news/comment_reply.php') {
const comItemId = urlParams.get('comItemId')
const comId = urlParams.get('comId')
document.getElementById('com_text').value += '[url=https://www.koreus.com/modules/news/article' + comItemId + '.html#comment' + comId + ']Message[/url]'
} else if (url.pathname === '/modules/newbb/reply.php') {
const topicId = urlParams.get('topicId')
const postId = urlParams.get('postId')
const pageId = urlParams.get('start')
document.getElementById('message').value += '[url=https://www.koreus.com/modules/newbb/topic' + topicId + ((pageId > 0) ? '-' + pageId : '') + '.html#forumpost' + postId + ']Message[/url]'
}
}
// =====================================
// Ajoute les boutons de défilement si l'option est cochée
if (checkPageDown) {
$('body').prepend('<div align="right" style="position:fixed; top:0; right:0;background-color:#9a9ace"><span id="ScrollUp" style="float:right;cursor: pointer;margin-left:2px;">▲</span><span id="ScrollDown" style="float:right;cursor: pointer;">▼</span></div>')
document.getElementById('ScrollDown').addEventListener('click', () => {
$('html, body').animate({
scrollTop: $(document).height(),
}, 'slow')
})
document.getElementById('ScrollUp').addEventListener('click', () => {
$('html, body').animate({
scrollTop: 0,
}, 'slow')
})
}
// =======================================
// Ajoute l'éditeur si l'option est cochée ==================
if (checkRepRapid) {
if (window.location.href.indexOf('newbb/topic') > -1) {
$('<img onmouseover="style.cursor="hand"" src="//media.koreus.com/images/url.gif" alt="url" onclick="xoopsCodeUrl("message", "Entrez l\'URL du lien que vous voulez ajouter :", "Entrez le titre du site web :");" style="">\
<img onclick="javascript:xoopsCodeQuote("message", "Entrez le texte que vous voulez citer.");" onmouseover="style.cursor="hand"" src="//media.koreus.com/images/quote.gif" alt="quote" style="">\
<img onclick="javascript:xoopsCodeImg("message", "Entrez l\'URL de l\'image que vous voulez ajouter.", "Maintenant, entrez la position de l\'image.", "\'R\' ou \'r\' pour droite, \'L\' ou \'l\' pour gauche, ou laisser vide.", "ERREUR ! Entrez la position de l\'image.");" onmouseover="style.cursor="hand"" src="//media.koreus.com/images/imgsrc.gif" alt="imgsrc" style="">\
<img onmouseover="style.cursor="hand"" src="//media.koreus.com/images/video3.gif" alt="url" onclick="xoopsCodeVideo("message", "Entrez l\'URL (Permalien) de la vidéo", "Entrez le titre du site web :");" style=""><br>\
<select id="messageSize" onchange="setVisible("xoopsHiddenText");setElementSize("xoopsHiddenText",this.options[this.selectedIndex].value);">\
<option value="SIZE">TAILLE</option>\
<option value="xx-small">xx-small</option>\
<option value="x-small">x-small</option>\
<option value="small">small</option>\
<option value="medium">medium</option>\
<option value="large">large</option>\
<option value="x-large">x-large</option>\
<option value="xx-large">xx-large</option>\
</select><br>\
<img onmouseover="style.cursor="hand"" src="//media.koreus.com/images/bold.gif" alt="bold" style="">\
<img onmouseover="style.cursor="hand"" src="//media.koreus.com/images/italic.gif" alt="italic">\
<img onmouseover="style.cursor="hand"" src="//media.koreus.com/images/underline.gif" alt="underline">\
<img src="//media.koreus.com/images/linethrough.gif" alt="linethrough" onmouseover="style.cursor="hand""><br>').insertBefore('#message')
}
}
// =======================
// Ajoute les emoji si l'option est cochée
if (checkEmoji) {
const emojis = [
'😀', '😁', '😂', '😃', '😄', '😅', '😆', '😇', '😈', '😉', '😊', '😋', '😍', '😎', '😏', '😐', '😑', '😒',
'😓', '😔', '😕', '😖', '😘', '😙', '😛', '😜', '😝', '😞', '😟', '😠', '😡', '😢', '😤', '😥', '😦', '😧',
'😨', '😩', '😫', '😬', '😭', '😮', '😰', '😱', '😲', '😳', '😴', '😵', '😶', '😷', '🙁', '🙂', '🙃', '🙄',
]
const emojiObjects = emojis.map((emoji) => emoji.codePointAt(0).toString(16)).map((emojiHexaCode) => ({
htmlImg: `<img class="emojione" alt="&#x${emojiHexaCode};" src="https://cdn.jsdelivr.net/emojione/assets/4.0/png/64/${emojiHexaCode}.png"/>`,
editor: `&#x${emojiHexaCode};`,
}))
const smileyUrls = [
// from https://www.developpez.net/forums/misc.php
'https://k.img.mu/jV5loi.gif', // :D
'https://k.img.mu/hxs0Wi.gif', // :)
'https://k.img.mu/qoeVWQ.gif', // :(
'https://k.img.mu/VKB7AE.gif', // 8O
'https://k.img.mu/qoMze9.gif', // :?
'https://k.img.mu/6jVA2U.gif', // 8-)
'https://k.img.mu/R4CMKu.gif', // :lol:
'https://k.img.mu/lVeoSj.gif', // :P
'https://k.img.mu/tkbRPL.gif', // :oops:
'https://k.img.mu/kaNAPP.gif', // :roll:
'https://k.img.mu/Q9PwYc.gif', // ;)
'https://k.img.mu/J1BJ8d.gif', // :mrgreen:
'https://k.img.mu/AMD9KG.gif', // :aie:
'https://k.img.mu/oHMHSq.gif', // :mouarf:
'https://k.img.mu/QoQpnW.gif', // :calim2:
'https://k.img.mu/75D9kF.gif', // :ptdr:
'https://k.img.mu/cq9Ceq.gif', // :weird:
'https://k.img.mu/cPpkqP.gif', // :-o
'https://k.img.mu/FNUGPN.gif', // :x
'https://k.img.mu/dp9DZH.gif', // :cry:
'https://k.img.mu/b56nbP.gif', // :evil:
'https://k.img.mu/Bg2GnX.gif', // :twisted:
'https://k.img.mu/5QfJzC.gif', // :!:
'https://k.img.mu/upaPUj.gif', // :question:
'https://k.img.mu/6JDGXd.gif', // :idea:
'https://k.img.mu/ZscyfJ.gif', // :arrow:
'https://k.img.mu/HTNEvB.gif', // :|
]
function insertSmileys (textAreaId) {
$('<br /><div id="emoji" style="width:440px" />').insertAfter(`#${textAreaId}`)
$('#emoji').append('<div id="emoji-list"></div>')
const isSceditor = Array.from(document.getElementsByTagName('script')).some((elem) => elem.getAttribute('src')?.includes('/sceditor'))
if (isSceditor) {
$('#emoji-list').append(emojiObjects.map((emoji) => `<a onclick="sceditor.instance(document.getElementById('${textAreaId}')).insert('${emoji.editor}');" style="cursor: pointer;">${emoji.htmlImg}</a>`).join(''))
$('#emoji-list').append('<br/>')
$('#emoji-list').append(smileyUrls.map((url) => `<a onclick="sceditor.instance(document.getElementById('${textAreaId}')).insert('[img]${url}[/img]');" style="cursor: pointer;"><img src="${url}"/></a>`).join(''))
} else {
$('#emoji-list').append(emojiObjects.map((emoji) => `<a onclick="document.getElementById('${textAreaId}').value+='${emoji.editor}';" style="cursor: pointer;">${emoji.htmlImg}</a>`).join(''))
$('#emoji-list').append('<br/>')
$('#emoji-list').append(smileyUrls.map((url) => `<a onclick="document.getElementById('${textAreaId}').value+='[img]${url}[/img]';" style="cursor: pointer;"><img src="${url}"/></a>`).join(''))
}
}
if (window.location.href.includes('/comment_new.php') || window.location.href.includes('/comment_reply.php')) {
insertSmileys('com_text')
} else if (window.location.href.includes('modules/newbb/')) {
insertSmileys('message')
}
}
// =======================
GM_addStyle('#leftcolumn.fixed{\
position:fixed;\
top:0;\
z-index: 999;\
}')
GM_addStyle('#centercolumn.fixed{\
position:relative;\
padding-left:200px;\
}')
// Check si sur Forum ou Article
let bMessage = false
let textbox = ''
if (document.getElementById('com_text')) {
bMessage = true
textbox = 'com_text'
} else if (document.getElementById('message')) {
bMessage = true
textbox = 'message'
}
// ==========================
// Si un forumlaire est sur la page
if (bMessage) {
const imageElements = document.getElementsByTagName('img')
let imageElementBold
let imageElementItalic
let imageElementUnderline
let imageElementLinethrough
for (const imageElement of imageElements) {
if (imageElement.alt === 'bold') {
imageElementBold = imageElement
}
if (imageElement.alt === 'italic') {
imageElementItalic = imageElement
}
if (imageElement.alt === 'underline') {
imageElementUnderline = imageElement
}
if (imageElement.alt === 'linethrough') {
imageElementLinethrough = imageElement
}
}
// ajoute les fonctions sur les boutons
if (imageElementBold != null && imageElementItalic != null && imageElementUnderline != null && imageElementLinethrough != null) {
imageElementBold.removeAttribute('onclick')
imageElementBold.addEventListener('click', () => {
AddQuote('[b]', '[/b]')
})
imageElementItalic.removeAttribute('onclick')
imageElementItalic.addEventListener('click', () => {
AddQuote('[i]', '[/i]')
})
imageElementUnderline.removeAttribute('onclick')
imageElementUnderline.addEventListener('click', () => {
AddQuote('[u]', '[/u]')
})
imageElementLinethrough.removeAttribute('onclick')
imageElementLinethrough.addEventListener('click', () => {
AddQuote('[d]', '[/d]')
})
}
// supprime la textbox et le bouton ajouter
if (document.getElementById('com_textAddtext') != null) {
document.getElementById('com_textAddtext').remove()
}
if (document.getElementById('messageAddtext') != null) {
document.getElementById('messageAddtext').remove()
}
for (const i in document.getElementsByTagName('input')) {
if (document.getElementsByTagName('input')[i].value === 'Ajouter') {
document.getElementsByTagName('input')[i].remove()
break
}
}
// Ajoute les fonctions aux menus (select)
$('select').change(function () {
// Articles
if (this.id === 'com_textSize') {
AddQuote('[size=' + $(this).val() + ']', '[/size]')
}
if (this.id === 'com_textFont') {
AddQuote('[font=' + $(this).val() + ']', '[/font]')
}
if (this.id === 'com_textColor') {
this.style.backgroundColor = '#' + $(this).val()
AddQuote('[color=' + $(this).val() + ']', '[/color]')
}
// Forum
if (this.id === 'messageSize') {
AddQuote('[size=' + $(this).val() + ']', '[/size]')
}
if (this.id === 'messageFont') {
AddQuote('[font=' + $(this).val() + ']', '[/font]')
}
if (this.id === 'messageColor') {
AddQuote('[color=' + $(this).val() + ']', '[/color]')
}
})
}
// ==========================
// fonction de remplacement
function AddQuote (pre, post) {
const elem = document.getElementById(textbox)
const start = elem.selectionStart
const end = elem.selectionEnd
const len = elem.value.length
const selTxt = elem.value.substring(start, end)
elem.value = elem.value.substring(0, start) + pre + selTxt + post + elem.value.substring(end, len)
}
// =====================
// VoteLive ##############################################
GM_addStyle('.voteWindow {position:absolute;z-index: 1000;right:10px;width:250px;margin-top:4px;padding:5px;background:#9A9ACE; visibility: hidden;}')
function HideVote () {
const fenetres = document.getElementsByClassName('voteWindow')
for (let i = 0; i < fenetres.length; i++) {
fenetres[i].style.visibility = 'hidden'
}
}
// Récupère tous les boutons vote up et ajoute une fonction hover qui appel la fonction ShowVote et HideVote
for (const arrowElement of [...document.getElementsByClassName('arrow-up'), ...document.getElementsByClassName('arrow-up2')]) {
const pid = arrowElement.getAttribute('id').replace('up', '')
const voteElem = arrowElement.parentNode.querySelector(`#vote${pid}`)
voteElem.style.cursor = 'pointer'
if (voteColor) {
const title = voteElem.getAttribute('title')
const score = parseInt(voteElem.textContent)
let pourcent
if (title.includes('%')) {
pourcent = parseInt(title.slice(title.indexOf('(') + 1, title.indexOf('%')))
} else if (score === 0 && title === '1 vote') {
pourcent = 0
} else if (score === 1 && title === '1 vote') {
pourcent = 100
}
if (pourcent < 50) {
voteElem.style.color = '#FF5252'
}
if (pourcent > 50) {
voteElem.style.color = '#00E676'
}
if (pourcent === 50) {
voteElem.style.color = '#F1D402'
}
}
voteElem.addEventListener('click', function () {
const pid = this.getAttribute('id').replace('vote', '')
if (this.parentNode.querySelector('#votewin' + pid).style.visibility === 'visible') HideVote()
else this.parentNode.querySelector('#votewin' + pid).style.visibility = 'visible'
})
arrowElement.innerHTML += "<div class='voteWindow' id='votewin" + pid + "'>Plus possible de savoir qui a voté<br><br>" +
"Koreus a retiré l'outils Up & Down<br><br>Il a annoncé que <a href='/modules/newbb/topic146759-640.html#forumpost2546978'>la fonctionnalité reviendra sous une autre forme</a></div>"
arrowElement.querySelector('#votewin' + pid).addEventListener('mouseleave', HideVote)
}
// Real Vote Score ###########################################################
// Boboss
if (realVote) {
const arrowElems = [...document.getElementsByClassName('arrow-up'), ...document.getElementsByClassName('arrow-up2')]
for (const arrowElem of arrowElems) {
const voteId = arrowElem.getAttribute('id').substr(2)
const vote = arrowElem.parentNode.querySelector('#vote' + voteId)
const voteScore = parseInt(vote.textContent)
const title = vote.getAttribute('title')
const totalVote = title.split(' ')[0]
let pourcentPositif
if (title.includes('%')) {
pourcentPositif = parseInt(title.slice(title.indexOf('(') + 1, title.indexOf('%')))
} else if (voteScore === 1 && title === '1 vote') {
pourcentPositif = 100
} else if (voteScore === 0 && title === '1 vote') {
pourcentPositif = 0
} else if (voteScore === 0 && title === '0 vote') {
continue
} else {
console.error('Should never be here: ' + title)
continue
}
vote.innerText = Math.round(totalVote * ((pourcentPositif - 50) * 2) / 100)
}
}
// Comments below video ######################################################
// Boboss
try {
if (commentsBelowVideo && window.location.pathname.startsWith('/video/')) {
function getParentElements (doc, selectors) {
let element = doc.querySelector(selectors)
const parentElements = []
while (element) {
parentElements.unshift(element)
element = element.parentNode
}
return parentElements
}
function hide (doc, selectors) {
doc.querySelectorAll(selectors).forEach((e) => { e.hidden = true })
}
function show (doc, selectors) {
getParentElements(doc, selectors).filter((e) => e.hidden === true).forEach((e) => { e.hidden = false })
doc.querySelectorAll(selectors + ' *').forEach((e) => { e.hidden = false })
}
function resizeIframe (iframe) {
iframe.height = iframe.contentWindow.document.body.offsetHeight + 'px'
}
function iframeAutoResize (iframe) {
let watcher
function watch () {
cancelAnimationFrame(watcher)
if (iframe.height !== iframe.contentWindow.document.body.scrollHeight + 'px') {
resizeIframe(iframe)
}
watcher = requestAnimationFrame(watch)
}
watcher = window.requestAnimationFrame(watch)
}
let addCommmentsBelowVideoCalled = false
function addCommmentsBelowVideo () {
addCommmentsBelowVideoCalled = true
const urlIframe = document.querySelector('a.btn-primary').getAttribute('href')
if (urlIframe) {
const iframeArticle = document.createElement('iframe')
iframeArticle.setAttribute('id', 'iframeArticle')
iframeArticle.setAttribute('class', 'col-md-12 col-lg-12')
iframeArticle.setAttribute('src', urlIframe)
iframeArticle.setAttribute('scrolling', 'no')
iframeArticle.setAttribute('frameborder', '0')
iframeArticle.style.width = '1138px' // can be better !
document.querySelector('div.row').appendChild(iframeArticle)
iframeArticle.addEventListener('load', () => {
const iframeDocument = iframeArticle.contentWindow.document
// hide all
hide(iframeDocument, 'body *')
// unhide comments
show(iframeDocument, '#centercolumn > div:nth-of-type(5)')
// open all links within iframe in a new page
iframeDocument.querySelectorAll('a').forEach((e) => { e.setAttribute('target', '_blank') })
// manage iframe size
resizeIframe(iframeArticle)
iframeAutoResize(iframeArticle)
})
}
}
if (document.visibilityState === 'visible') {
addCommmentsBelowVideo()
} else {
// better rendering when loaded in a new tab
document.addEventListener('visibilitychange', () => {
if (document.visibilityState === 'visible' && !addCommmentsBelowVideoCalled) {
addCommmentsBelowVideo()
}
})
}
}
} catch (error) {
console.error('[Koreuscript] Error while applying commentsUnderVideo: ' + error)
}
// User Blacklist ##############################################
// Contributor -Flo-
// https://www.koreus.com/modules/newbb/topic165924-140.html#forumpost2539971
GM_addStyle('.blBlock span { margin-left: 20px; }')
GM_addStyle('.blBlock { font-weight: normal; }')
GM_addStyle('.blBlock:hover { color: black; }')
GM_addStyle('.blOptions span { font-weight: bold; cursor: pointer; }')
GM_addStyle('.shutup { cursor: pointer; }')
function blacklist (userId) {
GM.setValue('blacklisted.' + userId, true).then(() => { applyBlacklists(true) })
}
function unblacklist (userId) {
GM.deleteValue('blacklisted.' + userId).then(() => { applyBlacklists(true) })
}
function hideBlacklisted (postid, userid) {
const postdd = postid.nextElementSibling.getElementsByClassName('dropdown')[0]
const userName = postdd.getElementsByTagName('option')[0].innerText
postid.nextElementSibling.style.display = 'none'
postid.innerHTML = '<div class="blBlock">🤐 <span class="blOptions">Message masqué (' + userName + ' est blacklisté)<span class="blShow">Afficher le message</span><span class="blUnbl">Réautoriser ce membre</span></span></div>'
const blOptions = postid.getElementsByClassName('blOptions')[0]
blOptions.style.visibility = 'hidden'
postid.addEventListener('click', () => {
if (blOptions.style.visibility === 'hidden') {
blOptions.style.visibility = 'visible'
} else {
blOptions.style.visibility = 'hidden'
}
})
const blShow = postid.getElementsByClassName('blShow')[0]
const blUnbl = postid.getElementsByClassName('blUnbl')[0]
blShow.addEventListener('click', () => {
postid.nextElementSibling.style.display = 'table'
})
blUnbl.addEventListener('click', () => {
unblacklist(userid)
})
}
function applyBlacklists (refine) {
const posts = document.querySelectorAll('a[id^="forumpost"]')
for (const post of posts) {
(function () {
try {
const postNext = post.nextElementSibling
const postdd = postNext.querySelector('.dropdown')
const userId = postdd.getElementsByTagName('option')[1].getAttribute('value').match(/membre(\d+)\.html$/)[1]
postNext.style.display = 'table'
post.innerHTML = ''
if (!refine) {
postdd.innerHTML += '<span class="shutup">🤐</span>'
const shutup = postNext.querySelector('.shutup')
shutup.style.visibility = 'hidden'
postdd.addEventListener('mouseover', () => {
shutup.style.visibility = 'visible'
})
postdd.addEventListener('mouseout', () => {
shutup.style.visibility = 'hidden'
})
shutup.addEventListener('click', () => {
blacklist(userId)
})
}
if (GM_getValue('blacklisted.' + userId)) {
hideBlacklisted(post, userId)
}
} catch (err) {
console.error('[Koreuscript] Error while applying Blacklists: ' + err)
}
}())
}
}
if (window.location.href.includes('modules/newbb/topic')) {
applyBlacklists(false)
}
// Amélioration de l'Appli Koreus
function improveAppli () {
// Tchat d'équipe
if (window.location.pathname === '/user/games/discussion.php') {
improveMessage()
const inputTextElement = $('form div.col-md-10')
inputTextElement.addClass('col-md-9').removeClass('col-md-10')
$(`<div class="col-md-1"><input id="btn-config-notif-tchat" class="btn btn-block btn-info" title="${GM_getValue('NotificationTchat') ? 'Désactiver les notifications' : 'Activer les notifications'}" type="button" value="${GM_getValue('NotificationTchat') ? '🔈' : '🔇'}"></div>`).insertAfter($('form div.col-md-2'))
$('#btn-config-notif-tchat').click(toggleNotificationTchat)
// Create an observer instance linked to the callback function
const observer = new MutationObserver((mutationsList) => {
for (const mutation of mutationsList) {
if (mutation.type === 'childList' && mutation.addedNodes[0]) {
const currentPseudo = $('a.nav-link[href="/user"]')[0] ? $('a.nav-link[href="/user"]')[0].innerText : undefined
const message = mutation.addedNodes[0].innerText.substr(11) // substr to remove time
if (message.split(':')[0] !== currentPseudo && !document.hasFocus() && GM_getValue('NotificationTchat')) {
new Notification('Team Egg', { body: message, icon: '/user/img/eggs/gif/oeuf0s.gif' }) // eslint-disable-line no-new
}
improveMessage()
}
}
})
// Start observing the target node for configured mutations
observer.observe(document.getElementById('messages'), { childList: true })
}
function improveMessage () {
$('div#messages p').each(function () {
if (!this.dataset.improved) {
this.dataset.improved = true
// Transforme les liens dans la discussion en vrais liens cliquables
this.innerHTML = this.innerHTML.autoLink({ target: '_blank' })
// Affichage en couleurs des scores
const m = this.innerHTML.match(/(.*<\/b>:\s+)(\d+)\s(\d+)\s(\d+)(\s?.*)/)
if (m) {
this.innerHTML = `${m[1]}<b><span class="text-team1">${m[2]}</span> <span class="text-team2">${m[3]}</span> <span class="text-team3">${m[4]}</span></b>${m[5]}`
}
}
})
}
function toggleNotificationTchat () {
Notification.requestPermission()
const newConfigNotifTchat = !GM_getValue('NotificationTchat')
GM_setValue('NotificationTchat', newConfigNotifTchat)
$('#btn-config-notif-tchat').val(newConfigNotifTchat ? '🔈' : '🔇')
$('#btn-config-notif-tchat').attr('title', GM_getValue('NotificationTchat') ? 'Désactiver les notifications' : 'Activer les notifications')
$('#btn-config-notif-tchat').blur()
}
}
})()