Fórum dos Fóruns

Fórum dos Fóruns Forumeiros

Welcome FdF Bem-vindo ao fórum de suporte Forumeiros  Muito feliz


Para aproveitar tudo o que o nosso fórum lhe oferece, agradecemos que se identifique, se já é nosso membro, ou que se junte à nossa comunidade, fazendo o seu registo.
Conectar-se

Esqueci minha senha

Últimos assuntos
» Informações dos ultimos assuntos
Hoje à(s) 01:34 pm por Luiz

» Personalizar Likes
Hoje à(s) 01:32 pm por Luiz

» Problema na página personalizada de login
Hoje à(s) 01:27 pm por Luiz

» Instalação do Topicit
Hoje à(s) 01:27 pm por Luiz

» Barra Alerta
Hoje à(s) 01:27 pm por Luiz

» Mensagens de Aviso Bugadas
Hoje à(s) 01:26 pm por Luiz

» Slide no index
Hoje à(s) 01:24 pm por iScroll

Instale agora o aplicativo Topic'it e acesse o suporte de Forumeiros pelo celular.
Perdi minha senha!
Você precisa recuperar sua senha?
Clique aqui
Quem está conectado
245 usuários online :: 9 usuários cadastrados, Nenhum Invisível e 236 Visitantes :: 2 Motores de busca

asmplay, Carlos Rodrigues, EDU2010, Holkis, iPrompt, iScroll, Kyo Panda, Luiz, virus

[ Ver toda a lista ]


O recorde de usuários online foi de 3131 em 24/12/09, 01:05 pm

[TUTORIAL] Abas no chat

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

[TUTORIAL] Abas no chat

Mensagem por Kyo Panda em 02/05/17, 09:46 am

Abas no chat
Com este tutorial será possível adicionar abas ao chat do Forumeiros.

Abas no chat
TUTORIAIS, DICAS E ASTÚCIAS

Instalação do javascript

As páginas javascript ativas em seu fórum possibilita inserir scripts e jquery para personalizar seu fórum, contudo é importante saber que qualquer script encontrado na internet acabam por não surgir efeito nos fóruns.

Painel de Controle Seta Branca Módulos Seta Branca HTML e Javascript Seta Branca Gestão das páginas Javascript Seta Branca Criar um novo javascript

(clique na imagem para aumentar)
Seta Título Correspondente ao nome da página JavaScript/jQuery que será criada.
Seta Localização São destinados os devidos locais para onde você aplicará os efeitos do JavaScript nos fóruns. No nosso caso, aplicaremos Em todas as páginas.
Seta Código JavaScript Campo destinado para receber os códigos JavaScript e jQuery.
Seta Habilitar o gerenciamento dos códigos JavaScript Ao selecionar a opção sim, estará ativando a função páginas Javascript no seu fórum. Se selecionar não, as páginas serão desabilitadas no fórum.

Em seguida, basta adicionar este código:

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: true,      // 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: {
        'All': 'All',
        'General': 'General',
        'Games': 'Games',
        'Animes': 'Animes',
      },
     
      /**
      * Spanish
      */
      es: {
        'All': 'Todos',
        'General': 'General',
        'Games': 'Juegos',
        'Animes': 'Animes',
      },
     
      /**
      * Portuguese
      */
      pt: {
        'All': 'Todos',
        'General': 'Geral',
        'Games': 'Jogos',
        'Animes': 'Animes',
      },
  };
 
  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: 3px 3px 0 0;',
      '  cursor: pointer;',
      '  font-family: Arial, sans-serif;',
      '  color: #fff;',
      '  border-bottom: none;',
      '}',
      '',
      '#chatbox_tabs li.active {',
      '  background-color: #fff;',
      '  color: #333;',
      '}',
  ].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));

Configurações::

Procure pelos códigos citados abaixo dentro do script para alterar as configurações:

Código:
      /**
      * Settings for the 'all' tab
      */
      all: {
        enable: true,      // If it is active or not
        label: 'All',      // Its label
      },

Define se exibirá ou não a aba "Todos".

  • enable: Defina como true para ativar e false para desativar.
  • label: O nome da aba "Todos".


Código:
      /**
      * List of tabs labels
      */
      tabs: [
        'General',
        'Games',
        'Animes',
      ],

Define as abas do chat. Cada nome de aba precisa estar entre apóstrofos (') e seguido de vírgula (,).

Código:
      /**
      * The default active tab
      */
      default: 'General',

Define qual a aba que está ativa quando o usuário abre o chat.

Código:
      /**
      * Choose the types of messages you want to disable.
      */
      hide: {
        connect: true,      // Member connect
        disconnect: true,  // Member disconnect
        timeout: true,      // Member disconnect by timeout
      },

Define tipos de mensagens que serão ocultados no chat. Para cada item, defina true para ocultar e false para mostrar.

  • connect: Mensagens de conexão de usuário.
  • disconnect: Mensagens de desconexão de usuário.
  • timeout: Mensagens de desconexão por tempo de inatividade.


Código:
  /**
    * Internationalization settings
    */
  var i18n = {     
      /**
      * English
      */
      en: {
        'All': 'All',
        'General': 'General',
        'Games': 'Games',
        'Animes': 'Animes',
      },
     
      /**
      * Spanish
      */
      es: {
        'All': 'Todos',
        'General': 'General',
        'Games': 'Juegos',
        'Animes': 'Animes',
      },
     
      /**
      * Portuguese
      */
      pt: {
        'All': 'Todos',
        'General': 'Geral',
        'Games': 'Jogos',
        'Animes': 'Animes',
      },
  };

Permite que as abas do seu chat sejam traduzidas em diversos idiomas. Mais idiomas podem ser adicionados à lista. O script utilizará as configurações de idioma definidas pelo usuário no seu perfil.

Logo após a aplicação, será possível visualizar o resultado.

Resultado do tutorial:


avatar

Kyo Panda
Moderadeiro
Moderadeiro

Masculino
Inscrito dia : 08/01/2012
Mensagens : 4272
Pontos Ativos : 5564

Ver perfil do usuário http://ajuda.forumeiros.com

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum