Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o tema • Voltar para a ficha do tema
Chatbox em Abas não notifica conexão ou desconexão do usuário
2 participantes
Fórum dos Fóruns :: Ajuda e atendimento ao utilizador :: Questões sobre códigos :: Questões resolvidas sobre códigos Javascript e jQuery
Página 1 de 1
Chatbox em Abas não notifica conexão ou desconexão do usuário
Detalhes da questão
Endereço do fórum: http://etherias.forumeiros.com/
Versão do fórum: phpBB3
Descrição
Estou a utilizar um código que altera o chatbox do meu fórum e permite que ele possua abas. Entretanto, este chat apresenta duas falhas.
A primeira é que quando um usuário se conecta ao chat, ou desconecta, não aparecem mensagens informativas. De modo que ao menos que você esteja prestando atenção nas mudanças que ocorrem em "usuários conectados" você não consegue notar quando um usuário entra ou sai.
As mensagens em questão são:
Usuário foi desconectado em Qui 31 Ago 2017 - 13:32 (tempo limite sem atividade atingido)
Usuário se juntou ao chat de Qui 31 Ago 2017 - 13:34
A segunda é que quando clico no link "Chatbox" para abrir ele por inteiro, o problema em que as mensagens de conexão e desconectar, esse problema some. Porém as abas não aparecem não sendo possível troca-las.
A priori eu gostaria que solucionassem o problema em que a mensagem não aparece, sendo esse a primeira falha. A segunda não é incomodo para mim, mas caso saibam como solucionar, seria de grande ajuda.
@EDIT: Percebi um terceiro problema. Mensagens enviadas no chat expandido, não aparecem no chat normal do fórum.
Codigo que utilizo
- Código:
/*globals jQuery, _userdata*/
/**
* Adds tabs to the chat in which people can choose to talk separately.
*
* @author Kyo Panda
* @see <a href="http://ajuda.forumeiros.com">Fórum dos Fóruns</a>
* @license MIT
*/
(function($) {
'use strict';
/**
* Configuration
*/
var config = {
/**
* Settings for the 'all' tab
*/
all: {
enable: false, // If it is active or not
label: 'All', // Its label
},
/**
* List of tabs labels
*/
tabs: [
'General',
'Games',
'Animes',
],
/**
* The default active tab
*/
default: 'General',
/**
* Choose the types of messages you want to disable.
*/
hide: {
connect: true, // Member connect
disconnect: true, // Member disconnect
timeout: true, // Member disconnect by timeout
},
};
/**
* Internationalization settings
*/
var i18n = {
/**
* English
*/
en: {
'General': 'General',
'Games': 'Games',
'Animes': 'Animes',
},
/**
* Spanish
*/
es: {
'General': 'General',
'Games': 'Juegos',
'Animes': 'Animes',
},
/**
* Portuguese
*/
pt: {
'General': 'Geral',
'Games': 'RPG',
'Animes': 'Dúvidas',
},
};
var lang = {};
var t = function(text, reverse) {
if (reverse) {
for (var key in lang) {
if (lang[key] === text) {
return key;
}
}
return text;
}
return lang[text] ? lang[text] : text;
};
/**
* Style
*/
config.style = [
'#chatbox_header {',
' position: relative;',
'}',
'',
'#chatbox_tabs {',
' position: absolute;',
' bottom: 0;',
' left: 180px;',
' list-style: none;',
' padding: 0 0 0 10px;',
' margin: 0;',
' overflow: hidden;',
'}',
'',
'#chatbox_tabs li {',
' float: left;',
' height: 24px;',
' line-height: 24px;',
' margin-right: 10px;',
' padding: 0 5px;',
' border: 1px #fff solid;',
' border-radius: 5px 5px 0 0;',
' cursor: pointer;',
' font-size: 13px;',
' font-family: verdana;',
' color: #fff;',
' border-bottom: none;',
' text-transform: uppercase;',
' letter-spacing:2px;',
'}',
'',
'#chatbox_tabs li.active {',
' background-color: #fff;',
' color: #333;',
'transition: 0.6s;',
'}',
].join('\n');
/**
* Chatbox override
*/
var insertChatBoxNew = window.insertChatBoxNew;
window.insertChatBox = window.insertChatBoxNew = function() {
insertChatBoxNew.apply(this, arguments);
var chatbox = $('#frame_chatbox').get(0);
if (chatbox.readyState === 'complete') {
return run(event.target.contentWindow);
}
var onload = chatbox.onload;
chatbox.onload = function(event) {
if (onload) {
onload.apply(this, arguments);
}
run(event.target.contentWindow);
};
};
/**
* Script initialization
*/
var run = function(context) {
/**
* Initial variables
*/
lang = window._userdata && i18n[_userdata.user_lang] ?
i18n[_userdata.user_lang] : {}
;
if (
config.all.enable
&& config.tabs.indexOf(config.all.label) === -1
) {
config.tabs.unshift(config.all.label);
}
var tabs = {
html: [],
stored: [],
visible: config.tabs.indexOf(config.default),
regex: new RegExp(
'\\[(' + config.tabs.join('|') + ')\\]', 'gi'
),
tregex: (function() {
var values = [];
values = $.map(config.tabs, function(text) {
return t(text);
});
return new RegExp(
'\\[(' + values.join('|') + ')\\]\\s?', 'gi'
);
}()),
all: function(label) {
return config.all.enable && label === config.all.label;
},
};
if (tabs.visible === -1) {
tabs.visible = 0;
}
$.each(config.tabs, function() {
tabs.html.push('<li>' + t(this) + '</li>');
});
var $message = null;
/**
* Tabs creation
*/
$('<style>', { text: config.style }).appendTo(context.document.head);
var $tabs = $('<ul>', { id: 'chatbox_tabs' })
.html(tabs.html.join(''))
.find('li:nth-child(' + (tabs.visible + 1) + ')')
.addClass('active')
.end()
.on('click', 'li', function() {
var $this = $(this);
if ($this.index() === tabs.visible) {
return;
}
tabs.visible = $this.index();
$tabs.find('.active').removeClass('active');
$this.addClass('active');
context.chatbox.refresh({ messages: tabs.stored });
})
.appendTo($('#chatbox_header', context.document))
;
/**
* Chatbox refresh
*/
var refresh = context.Chatbox.prototype.refresh;
context.Chatbox.prototype.refresh = function(data) {
if (!data.messages || !data.messages.length) {
return refresh.call(this, data);
}
tabs.stored = data.messages;
data = JSON.parse(JSON.stringify(data));
data.messages = $.grep(data.messages, function(message) {
if (config.hide[message.action]) {
return false;
}
return true;
});
var label = config.tabs[tabs.visible];
if (tabs.all(label)) {
$.each(data.messages, function() {
this.msg = this.msg.replace(tabs.regex, function(text, match) {
return '[' + t(match) + ']';
});
});
return refresh.call(this, data);
}
data.messages = $.grep(data.messages, function(message) {
if (
message.action === 'msg'
&& message.msg.indexOf('[' + label + ']') === -1
) {
return false;
}
message.msg = message.msg.replace(tabs.regex, '');
return true;
});
refresh.call(this, data);
};
/**
* Chatbox send
*/
var send = context.Chatbox.prototype.send;
context.Chatbox.prototype.send = function() {
if (!$message) {
$message = $('#message', context.document);
}
var label = config.tabs[tabs.visible];
var value = $message
.val()
.replace(tabs.tregex, function(text, match) {
console.log(match, t(match, true));
return '[' + t(match, true) + ']';
})
;
if (!tabs.all(label)) {
value = '[' + label + '] ' + value;
}
$message.val(value);
send.apply(this, arguments);
};
/**
* Chatbox initial refresh
*/
context.chatbox.refresh(context.chatbox);
}
}(jQuery));
Última edição por zHugh em 05.09.17 15:49, editado 1 vez(es)
Re: Chatbox em Abas não notifica conexão ou desconexão do usuário
Olá!
Vou explicar o motivo que a mensagem não aparece. O código gera uma espécie de Prefixo para as mensagens que são enviadas a partir do usuário. A mensagem de "Conexão e Desconexão" é fixa e não pode ser alterada, por isso ela não aparece.
No caso, você vai localizar no código essa parte que está logo no começo, provavelmente na linha 43 à 47:
Já o terceiro problema eu não entendi. Poderia explicar, por favor?
Até mais.
Vou explicar o motivo que a mensagem não aparece. O código gera uma espécie de Prefixo para as mensagens que são enviadas a partir do usuário. A mensagem de "Conexão e Desconexão" é fixa e não pode ser alterada, por isso ela não aparece.
No caso, você vai localizar no código essa parte que está logo no começo, provavelmente na linha 43 à 47:
- Código:
hide: {
connect: true, // Member connect
disconnect: true, // Member disconnect
timeout: true, // Member disconnect by timeout
},
Já o terceiro problema eu não entendi. Poderia explicar, por favor?
Até mais.
Re: Chatbox em Abas não notifica conexão ou desconexão do usuário
Olá @Shek a troca do true por false resultou.
Em relação ao terceiro problema. Quando uma mensagem é enviada no chatbox "maior" ou seja o http://etherias.forumeiros.com/chatbox/index.forum no meu forum, ela apenas aparece nele. De modo que os membros que estão utilizando o chat normal, aquele que aparece pagina principal do forum, eles não conseguem visualizar as mensagens.
Por exemplo:
Se eu enviar a mensagem "Olá" no chatbox normal, e for visualiza-la no /chatbox. A mensagem irá aparecer da seguinte forma: [general] Olá.
Entretanto, se eu enviar a mensagem "Olá" no /chatbox, e for visualiza-la no chat normal. A mensagem não aparece de forma alguma.
Pelo que eu pude entender dos meus testes, a unica forma se fazer a mensagem aparecer no chatbox normal seria "atribuindo um caminho a ela". Ou seja, para fazer a mensagem aparecer na aba geral, ao invés de simplesmente digitar a mensagem eu precisaria colocar "[General] Olá"
Em relação ao terceiro problema. Quando uma mensagem é enviada no chatbox "maior" ou seja o http://etherias.forumeiros.com/chatbox/index.forum no meu forum, ela apenas aparece nele. De modo que os membros que estão utilizando o chat normal, aquele que aparece pagina principal do forum, eles não conseguem visualizar as mensagens.
Por exemplo:
Se eu enviar a mensagem "Olá" no chatbox normal, e for visualiza-la no /chatbox. A mensagem irá aparecer da seguinte forma: [general] Olá.
Entretanto, se eu enviar a mensagem "Olá" no /chatbox, e for visualiza-la no chat normal. A mensagem não aparece de forma alguma.
Pelo que eu pude entender dos meus testes, a unica forma se fazer a mensagem aparecer no chatbox normal seria "atribuindo um caminho a ela". Ou seja, para fazer a mensagem aparecer na aba geral, ao invés de simplesmente digitar a mensagem eu precisaria colocar "[General] Olá"
Re: Chatbox em Abas não notifica conexão ou desconexão do usuário
A página separada do Chatbox não recebe investimento de script. O único motivo pelo qual o chatbox está divido em abas na página inicial, é porque na página inicial o investimento das páginas script funcionam. Desta forma, será impossível modificar a página externa do Chatbox, e as mensagens enviadas por lá sempre ficam fora do chat da página inicial por causa do script.
Até mais.
Até mais.
Re: Chatbox em Abas não notifica conexão ou desconexão do usuário
Questão marcada como Resolvida ou o Autor solicitou que ela fosse arquivada. Tópico marcado como Resolvido e movido para Questões resolvidas. |
Tópicos semelhantes
» [Dúvida] Mensagem na Home Page/Pop-up de Conexão e nome do fórum nas abas do navegador
» Comandos do chatbox com abas
» Como fazer auto conexão no chatbox?
» Problemas ao usar o chatbox com abas na barra de ferramentas
» Conexão automática ao chatbox
» Comandos do chatbox com abas
» Como fazer auto conexão no chatbox?
» Problemas ao usar o chatbox com abas na barra de ferramentas
» Conexão automática ao chatbox
Fórum dos Fóruns :: Ajuda e atendimento ao utilizador :: Questões sobre códigos :: Questões resolvidas sobre códigos Javascript e jQuery
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos