Diferenciar Moderadores, Moderadores del Chat y Administradores en el Chatbox
Tabla de contenidos
El siguiente código elimina la arroba de los moderadores del chat, tanto en los mensajes como en la lista de usuarios conectados. Al mismo tiempo, añade las siguientes clases a los usuarios dependiendo de sus permisos:
- Moderador:
.chat-user-mod
- Moderador del chat: (los antiguos «arrobas»)
.chat-user-chatmod
- Administradores:
.chat-user-admin
- Usuario:
.chat-user-normal
Instalación
Coloca el siguiente JS y actívalo solo en las zonas donde tu chat aparezca.let script = document.createElement('script');
script.textContent = `(${(function() {
let getClassFromUser = function(user) {
let output = [],
chatlevel = user.hasOwnProperty('chatLevel') ? 'chatLevel' : 'chat_level',
userlevel = user.hasOwnProperty('userLevel') ? 'userLevel' : 'user_level';
if(user[chatlevel] == 2)
output.push('chat-user-chatmod');
switch(user[userlevel]) {
case '0':
output.push('chat-user-normal');
break;
case '1':
output.push('chat-user-admin');
break;
case '2':
output.push('chat-user-mod');
break;
}
return output;
},
removeAtSymbol = function(cont) {
if(cont.nodeType == 3) cont.remove();
},
previousMethod = Chatbox.prototype.refresh;
Chatbox.prototype.refresh = function(data) {
previousMethod.call(this, data);
/* Userlist modifications */
$('#chatbox_members li span[data-user]').each(function() {
let $this = $(this),
userid = $this.attr('data-user'),
user = data.users.find(elm => elm.id == userid);
console.log(getClassFromUser(user).join(' '));
$this.parent().addClass(getClassFromUser(user).join(' '));
removeAtSymbol($this.parent()[0].childNodes[0]);
});
/* chat messages modifications */
$('#chatbox .user span[data-user]').filter(function() {
return $(this).attr('data-user') > 0;
}).each(function() {
let $this = $(this),
userid = $this.attr('data-user'),
user = data.messages.find(elm => elm.userId == userid);
$this.closest('.user').addClass(getClassFromUser(user).join(' '));
removeAtSymbol($this.parent()[0].childNodes[0]);
});
};
chatbox.init();
}).toString()})();`;
$(function() {
$('object[data^="/chatbox/index.forum"], iframe[src^="/chatbox/index.forum"]').each(function() {
this.addEventListener('load', function() {
this.contentDocument.getElementsByTagName('head')[0].appendChild(script.cloneNode(true));
});
});
});
Ahora podéis, por ejemplo, ponerle el símbolo #
a los administradores con el siguiente CSS:
.chat-user-admin::before {
content: '# ';
}
O una imagen a los moderadores así:
.chat-user-mod::before {
content: '';
background: transparent url('url a la imagen') no-repeat 0 0;
width: 20px;
height: 20px;
}
Nota
Recordad que debido a limitaciones de Foroactivo no es posible aplicar modificaciones con JS al chat que se encuentra en la ruta/chatbox/index.forum
. Este código solo funcionará con los chats que incrustes desde el foro.