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
» Avatar no topico
Hoje à(s) 07:15 pm por xDominiC_.

» ChatBox estilo FDF
Hoje à(s) 06:49 pm por Luiz

» Logo com descrição/título
Hoje à(s) 05:32 pm por Luiz

» Configurar topici't
Hoje à(s) 05:32 pm por Luiz

» Pretendo favorecer o usuários registados e fazer com que os visitantes se registam.
Hoje à(s) 05:31 pm por Luiz

» Configuração da segurança
Hoje à(s) 04:02 pm por Gaaratsu

» Ícones flutuantes
Hoje à(s) 03:36 pm por Gaaratsu

Perdi minha senha!
Você precisa recuperar sua senha?
Clique aqui
Os membros mais ativos da semana
Luiz
 
Ketholy123
 
iScroll
 
Fou-Lu
 
Matt Shultz
 
Shek
 
Harleen
 
ranzatti
 
APOllO
 
zHugh
 

Quem está conectado
206 usuários online :: 12 usuários cadastrados, 1 Invisível e 193 Visitantes :: 2 Motores de busca

ALF007, DustyRhodes, Fraise, Guzonaro, iScroll, João Victor Aguiar, Ketholy123, Lost154, Luiz, Pedxz, soldado, xDominiC_.

[ 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 : 4490
Pontos Ativos : 5785

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