Rank automático quando adicionado em um grupo

3 participantes

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

Tópico resolvido Rank automático quando adicionado em um grupo

Mensagem por Aluuadoo 10.11.21 17:38

Detalhes da questão


Endereço do fórum: https://policiadme.forumeiros.com/
Versão do fórum: AwesomeBB

Descrição


Olá! Venho procurando deixar meu fórum cada vez mais prático de ser usado pelos moderadores/administradores e vi que uma função em específico pode ser otimizada, que no caso é a de adicionar membros em ranks. Procurei saber se há alguma forma de automatizar essa função, para quando o membro é adicionado no grupo e por consequência o perfil do mesmo ganha o rank, e de todas as formas que testei não consegui resultado.

O tópico que usei de referência para tentar adicionar a função no fórum foi esse: https://ajuda.forumeiros.com/t100282-como-setar-um-rank-altomaticamente-com-o-grupo
e todos os outros linkados no mesmo, ditos como tópicos que poderiam resolver a solução.

Que no caso foi adicionar o código abaixo em um novo JavaScript:

Código:

O que fiz foi repetir o código para 6 ranks que queria adicionar essa "automação"

E outra coisa, caso a minha questão acima tenha solução, os "ranks automáticos" terão ordem assim como, por exemplo, os ícones do Font Awesome nos grupos? Onde a ordem do grupo é levada em consideração para definir qual ícone irá aparecer no prefixo do nick do membro?

No mais, obrigado pela atenção o/
Aluuadoo

Aluuadoo
Nível 3

Masculino
Membro desde : 20/08/2018
Mensagens : 24
Pontos ativos : 42

https://testelusca.forumeiros.com/

Ir para o topo Ir para baixo

Ajudeiro

Tópico resolvido Re: Rank automático quando adicionado em um grupo

Mensagem por Mpezin 11.11.21 15:29

Oi, Aluado! Como vai? Espero que tudo bem..  Para aplicar a função desejada, crie uma página JavaScript com investimento em todas as páginas.
Código:
/**
 * Automatic rank.
 *
 * @author  Luiz Felipe F. (luuuiiiz.)
 * @version  1.0.0
 * @license  MIT
 */
 
(function ($) {
  'use strict';
 
  var ranks = [
    {
      color: '#000000',
      rank: {
        name: 'Corregedor',
        className: 'rank cor'
      }
    },
    {
      color: '#660000',
      rank: {
        name: 'GATE',
        className: 'rank gate'
      }
    }
  ];
 
  var exceptions = [
  ];
 
  /**
  * Iterate over the rank array.
  *
  * @param  {string} color
  * @param  {object<jQuery>} $originalRank
  * @return {void}
  */
  function iterate(color, $originalRank) {
    var $except = $originalRank.attr('class');
    var $is_except = false;
 
    $.each(exceptions, function(index, exception) {
   
      if($except == exception) {
        $is_except = true;
        return;
      }
    });
 
    if($is_except) return;
 
    $.each(ranks, function () {   
      var $dummy = $('<span>')
        .css('color', this.color);
 
      // If the color is not the same, pass to the next iteration:
      if ($dummy.css('color') !== color) {
        return;
      }
 
      // Create the rank element:
      var $newRank = $('<div>', {
        'class': 'lf-custom-rank',
      })
        .text(this.rank.name)
        .addClass(this.rank.className);
 
      $originalRank.replaceWith($newRank);
    });
  }
 
  $(function () {
    // Topics:
    $('.post .postprofile').each(function () {
      var $this = $(this);
      var $user = $this.find('.postprofile-name > a[href] > span[style]');
 
      if (!$user.length) {
        $this.css('border-left-color', '#f0f0f0');
        return;
      }
   
      iterate($user.css('color'), $this.find('.postprofile-rank .rank'));
   
      $this.css('border-left-color', $user.css('color'));
    });
 
    // Profile:
    if (!/^\/u\d+$/.test(location.pathname)) {
      return;
    }
 
    var $profile = $('#profile-advanced-right');
    var $user = $profile.find('.module > .h3 > span[style]');
 
      if (!$user.length) {
        return;
      }
 
    iterate($user.css('color'), $profile.find('.mod-login-rank > br + .rank'));
  });
})(jQuery);
Explicação da configuração
Código:
{
      color: '#000000', // Cor do grupo*
      rank: {
        name: 'Corregedor', // Nome do rank para o grupo que usa a cor "#000000"*
        className: 'rank cor' // Nome da classe do rank  (igual está na folha de estilo)
      }
    },

Para multiplicar e ir aplicando a todos os grupos, copie o código da explicação e arrume-o de acordo com o desejado. Quando fizer, retorne para dizer se funcionou, estou no aguardo!

Mpezin
Ajudeiro do Fórum dos Fóruns
Mpezin

Mpezin
Ajudeiro
Ajudeiro

Masculino
Membro desde : 28/05/2020
Mensagens : 174
Pontos ativos : 163

https://ajuda.forumeiros.com/

Ir para o topo Ir para baixo

Tópico resolvido Re: Rank automático quando adicionado em um grupo

Mensagem por Aluuadoo 12.11.21 0:43

Olá @Mpezin, obrigado pela resposta.

Infelizmente não deu resultado, não sei se foi algo que eu fiz de errado, muito provavelmente foi, então vou estar deixando as mudança que fiz abaixo:

Código:
/**
 * Automatic rank.
 *
 * @author  Luiz Felipe F. (luuuiiiz.)
 * @version  1.0.0
 * @license  MIT
 */
 
(function ($) {
  'use strict';
 
  var ranks = [
    {
      color: '#760094',
      rank: {
        name: 'Academia Publicitária Militar (APM) ',
        className: 'Academia Publicitária Militar'
      }
    },
    {
      color: '#663300',
      rank: {
        name: 'Centro de Recursos Humanos (CRH)',
        className: 'Centro de Recursos Humanos'
      }
    },
    {
      color: '#36B5E3',
      rank: {
        name: 'Ministério Público (MNP)',
        className: 'Ministro Público'
      }
    },
    {
      color: '#663300',
      rank: {
        name: 'Centro de Recursos Humanos (CRH)',
        className: 'Centro de Recursos Humanos'
      }
    },
    {
      color: '#8A0000',
      rank: {
        name: 'Grupamento de Operações Especiais',
        className: 'Grupamento de Operações Especiais'
      }
    },
    {
      color: '#466E46',
      rank: {
        name: 'ABIN',
        className: 'Agência Brasileira de Inteligência'
      }
    },
  ];
 
  var exceptions = [
  ];
 
  /**
  * Iterate over the rank array.
  *
  * @param  {string} color
  * @param  {object<jQuery>} $originalRank
  * @return {void}
  */
  function iterate(color, $originalRank) {
    var $except = $originalRank.attr('class');
    var $is_except = false;
 
    $.each(exceptions, function(index, exception) {
  
      if($except == exception) {
        $is_except = true;
        return;
      }
    });
 
    if($is_except) return;
 
    $.each(ranks, function () {  
      var $dummy = $('<span>')
        .css('color', this.color);
 
      // If the color is not the same, pass to the next iteration:
      if ($dummy.css('color') !== color) {
        return;
      }
 
      // Create the rank element:
      var $newRank = $('<div>', {
        'class': 'lf-custom-rank',
      })
        .text(this.rank.name)
        .addClass(this.rank.className);
 
      $originalRank.replaceWith($newRank);
    });
  }
 
  $(function () {
    // Topics:
    $('.post .postprofile').each(function () {
      var $this = $(this);
      var $user = $this.find('.postprofile-name > a[href] > span[style]');
 
      if (!$user.length) {
        $this.css('border-left-color', '#f0f0f0');
        return;
      }
  
      iterate($user.css('color'), $this.find('.postprofile-rank .rank'));
  
      $this.css('border-left-color', $user.css('color'));
    });
 
    // Profile:
    if (!/^\/u\d+$/.test(location.pathname)) {
      return;
    }
 
    var $profile = $('#profile-advanced-right');
    var $user = $profile.find('.module > .h3 > span[style]');
 
      if (!$user.length) {
        return;
      }
 
    iterate($user.css('color'), $profile.find('.mod-login-rank > br + .rank'));
  });
})(jQuery);

Além do código, esses são os grupos e ranks do fórum:
Grupos: https://prnt.sc/1z7vhxt
Ranks: https://prnt.sc/1z7vlle

No mais, obrigado pela ajuda o/
Aluuadoo

Aluuadoo
Nível 3

Masculino
Membro desde : 20/08/2018
Mensagens : 24
Pontos ativos : 42

https://testelusca.forumeiros.com/

Ir para o topo Ir para baixo

Ajudeiro

Tópico resolvido Re: Rank automático quando adicionado em um grupo

Mensagem por Mpezin 12.11.21 13:28

Oh, ok.. Fiz umas alterações em seu código, segue:

Código:
/**
 * Automatic rank.
 *
 * @author  Luiz Felipe F. (luuuiiiz.)
 * @version  1.0.0
 * @license  MIT
 */
 
(function ($) {
  'use strict';
 
  var ranks = [
    {
      color: '#760094',
      rank: {
        name: 'Academia Publicitária Militar (APM) ',
        className: 'Academia Publicitária Militar'
      }
    },
    {
      color: '#663300',
      rank: {
        name: 'Centro de Recursos Humanos (CRH)',
        className: 'Centro de Recursos Humanos'
      }
    },
    {
      color: '#36B5E3',
      rank: {
        name: 'Ministério Público (MNP)',
        className: 'Ministro Público'
      }
    },
    {
      color: '#663300',
      rank: {
        name: 'Centro de Recursos Humanos (CRH)',
        className: 'Centro de Recursos Humanos'
      }
    },
    {
      color: '#8A0000',
      rank: {
        name: 'Grupamento de Operações Especiais',
        className: 'Grupamento de Operações Especiais'
      }
    },
    {
      color: '#466E46',
      rank: {
        name: 'ABIN',
        className: 'Agência Brasileira de Inteligência'
      }
    },
  ];
 
  var exceptions = [
  ];
 
  /**
  * Iterate over the rank array.
  *
  * @param  {string} color
  * @param  {object<jQuery>} $originalRank
  * @return {void}
  */
  function iterate(color, $originalRank) {
    var $except = $originalRank.attr('class');
    var $is_except = false;
 
    $.each(exceptions, function(index, exception) {
 
      if($except == exception) {
        $is_except = true;
        return;
      }
    });
 
    if($is_except) return;
 
    $.each(ranks, function () { 
      var $dummy = $('<span>')
        .css('color', this.color);
 
      // If the color is not the same, pass to the next iteration:
      if ($dummy.css('color') !== color) {
        return;
      }
 
      // Create the rank element:
      var $newRank = $('<div>', {
        'class': 'lf-custom-rank',
      })
        .text(this.rank.name)
        .addClass(this.rank.className);
 
      $originalRank.replaceWith($newRank);
    });
  }
 
  $(function () {
    // Topics:
    $('.post .postprofile').each(function () {
      var $this = $(this);
      var $user = $this.find('.postprofile-name > a[href] > span[style]');
 
      if (!$user.length) {
        $this.css('border-left-color', '#f0f0f0');
        return;
      }
 
      iterate($user.css('color'), $this.find('.postprofile-rank .rank'));
 
      $this.css('border-left-color', $user.css('color'));
    });
 
    // Profile:
    if (!/^\/u\d+$/.test(location.pathname)) {
      return;
    }
 
    var $profile = $('#profile-advanced-right');
    var $user = $profile.find('.module > .h3 > span[style]');
 
      if (!$user.length) {
        return;
      }
 
    iterate($user.css('color'), $profile.find('.mod-login-rank > br + .rank'));
  });
})(jQuery);

Além de inserir o código arrumado, confira se o Gerenciamento dos Códigos JavaScript está ativado em seu fórum, segue o passo a passo:

Painel administrativo > Módulos > Gestão dos Códigos JavaScript >"Habilitar o gerenciamento dos códigos JavaScript"

Caso a opção se encontre como "Não", altere para "Sim" e clique em salvar.

Espero retorno,
Mpezin.
Mpezin

Mpezin
Ajudeiro
Ajudeiro

Masculino
Membro desde : 28/05/2020
Mensagens : 174
Pontos ativos : 163

https://ajuda.forumeiros.com/

Ir para o topo Ir para baixo

Ajudeiro

Tópico resolvido Re: Rank automático quando adicionado em um grupo

Mensagem por Musashi 18.11.21 20:54

Tópico resolvido



Tópico arquivado por inatividade por parte do autor, marcado como resolvido por ter solução apropriada à questão.
Musashi

Musashi
Ajudeiro
Ajudeiro

Masculino
Membro desde : 17/02/2021
Mensagens : 400
Pontos ativos : 479

https://lucasthemes.forumeiros.com/

Ir para o topo Ir para baixo

Ver o tópico anterior Ver o tópico seguinte Ir para o topo

- Tópicos semelhantes

Permissões neste sub-fórum
Não podes responder a tópicos