Sistema de prefixo restrito aos administradores e moderadores

2 participantes

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

Tópico resolvido Sistema de prefixo restrito aos administradores e moderadores

Mensagem por virus 13.09.17 18:38

Detalhes da questão


Endereço do fórum: http://beta.masterforum.biz/
Versão do fórum: ModernBB

Descrição


Como faço para este código funcionar em uma determinada parte de usuários por exemplo apenas um determinado grupo. Admins, Moderadores ou membros..?


Código:
/*globals jQuery*/
/**
 * @name Sistema de Prefixos.
 * @version 1.0
 * @author Luiz
 * @see {@link http://ajuda.forumeiros.com/}
 * @licence MIT
 */
(function ($) {
  'use strict';
 
  var config = {
    prefixes: [
      'Dúvida', 'Pedido', 'Em Curso',
      'Jogos', 'Recusado', 'Resolvido',
      'Negado'
    ],
 
    lang: {
      all: 'Sem Prefixo'
    },
 
    engine: {
      /**
      * @name Inicializador.
      * @desc Usado para iniciar o script.
      * @param {object} input - Corresponde ao seletor do input-alvo do script.
      */
      init: function (input) {
        var self = this;
       
        var $input = $(input);
        var $dummy = $('<option>', { 'class': 'fa-prefix-item' });
       
        if (!/^\/post$/g.test(location.pathname) && $input) {
          return false;
        }
   
        var $select = $('<select>', {
          'class': 'fa-prefix-select'
        });
 
        $dummy
          .clone()
            .text(config.lang.all)
            .attr('value', '')
            .attr('selected', true)
            .appendTo($select)
        ;
   
        $.each(config.prefixes, function (index, prefix) {
          $dummy
            .clone()
              .text('[' + prefix + ']')
              .attr('value', '[' + prefix + ']')
              .attr('id', 'fa-prefix-item-' + index)
              .appendTo($select)
          ;
        });
   
        $select
          .insertAfter($input)
          .on('change', function () {
            var $this = $(this);
            var value = $this.val();
   
            self.prefix(value, $this.prev());
          })
        ;
      },
     
      /**
      * @name Prefixador.
      * @desc Usada para colocar o prefixo no input.
      * @param {string} value - Corresponde ao prefixo que será colocado.
      * @param {object} input - Corresponde ao seletor do input que será prefixado.
      */
      prefix: function (value, input) {
        var $input = $(input);
 
        if (/^\[.*\]/g.test($input.val())) {
          $input.val($.trim($input.val().replace(/^\[.*\]/, '')));
        }
 
        $input.val($.trim(value + ' ' + $input.val()));
       
      }
    }
  };
 
  $(function () {
    var $input = $('input[name="subject"]');
    config.engine.init($input);
  });
}(jQuery));
virus

virus
Membro

Membro desde : 03/03/2013
Mensagens : 695
Pontos : 910

Ir para o topo Ir para baixo

Membro Entusiasta

Tópico resolvido Re: Sistema de prefixo restrito aos administradores e moderadores

Mensagem por Luiz 13.09.17 18:54

Na verdade isso é meio desnecessário, por que a função do script é somente facilitar a inserção de um prefixo no título do tópico. Desse modo, qualquer um pode, manualmente, sendo usuário, moderador ou administrador, colocar o prefixo lá. Com ou sem o script, ressalto.

---

Caso o senhor desejar prosseguir mesmo assim, qual o nível de autorização mínimo para visualizar o seletor de prefixos? Membro, moderador ou administrador?

o/
Luiz

Luiz
Membro Entusiasta
Membro Entusiasta

Membro desde : 23/04/2016
Mensagens : 6645
Pontos : 7451

https://luizfelipe.dev

Ir para o topo Ir para baixo

Tópico resolvido Re: Sistema de prefixo restrito aos administradores e moderadores

Mensagem por virus 13.09.17 18:59

Só para ranks com direitos no caso:
Administradores, Gerentes, Moderadores e Designers

virus

virus
Membro

Membro desde : 03/03/2013
Mensagens : 695
Pontos : 910

Ir para o topo Ir para baixo

Membro Entusiasta

Tópico resolvido Re: Sistema de prefixo restrito aos administradores e moderadores

Mensagem por Luiz 13.09.17 19:04

Não é possível distinguir por ranks, somente por níveis de usuários.
Posso considerar como moderador?

o/
Luiz

Luiz
Membro Entusiasta
Membro Entusiasta

Membro desde : 23/04/2016
Mensagens : 6645
Pontos : 7451

https://luizfelipe.dev

Ir para o topo Ir para baixo

Tópico resolvido Re: Sistema de prefixo restrito aos administradores e moderadores

Mensagem por virus 13.09.17 19:09

Ah, sim.
Depende também na parte de Membro, moderador ou administrador...
Se colocar apenas para moderadores funcionará também para o admin?

Caso a resposta seja sim, pode prosseguir para moderador.
E caso não, se conseguir manter apenas para admins e mods está ok.
virus

virus
Membro

Membro desde : 03/03/2013
Mensagens : 695
Pontos : 910

Ir para o topo Ir para baixo

Membro Entusiasta
  • 0

Tópico resolvido Re: Sistema de prefixo restrito aos administradores e moderadores

Mensagem por Luiz 13.09.17 19:14

Aqui:
Código:
/*globals jQuery, _userdata*/
/**
 * @name Sistema de Prefixos.
 * @version 1.1
 * @author Luiz
 * @see {@link http://ajuda.forumeiros.com/}
 * @licence MIT
 */
(function ($) {
  'use strict';
 
  var config = {
    prefixes: [
      'Dúvida', 'Pedido', 'Em Curso',
      'Jogos', 'Recusado', 'Resolvido',
      'Negado'
    ],
 
    lang: {
      all: 'Sem Prefixo'
    },
 
    engine: {
      /**
      * @name Inicializador.
      * @desc Usado para iniciar o script.
      * @param {object} input - Corresponde ao seletor do input-alvo do script.
      * @param {number} minLevel - Corresponde ao nível de usuário mínimo para que o script funcione. Pode ser:
      *  - 1. Para todos os usuários;
      *  - 2. Para moderadores e administradores;
      *  - 3. Para administradores.
      */
      init: function (input, minLevel) {
        var self = this;

        if (!minLevel <= _userdata.user_level) {
          return false;
        }
       
        var $input = $(input);
        var $dummy = $('<option>', { 'class': 'fa-prefix-item' });
       
        if (!/^\/post$/g.test(location.pathname) && $input) {
          return false;
        }
   
        var $select = $('<select>', {
          'class': 'fa-prefix-select'
        });
 
        $dummy
          .clone()
            .text(config.lang.all)
            .attr('value', '')
            .attr('selected', true)
            .appendTo($select)
        ;
   
        $.each(config.prefixes, function (index, prefix) {
          $dummy
            .clone()
              .text('[' + prefix + ']')
              .attr('value', '[' + prefix + ']')
              .attr('id', 'fa-prefix-item-' + index)
              .appendTo($select)
          ;
        });
   
        $select
          .insertAfter($input)
          .on('change', function () {
            var $this = $(this);
            var value = $this.val();
   
            self.prefix(value, $this.prev());
          })
        ;
      },
     
      /**
      * @name Prefixador.
      * @desc Usada para colocar o prefixo no input.
      * @param {string} value - Corresponde ao prefixo que será colocado.
      * @param {object} input - Corresponde ao seletor do input que será prefixado.
      */
      prefix: function (value, input) {
        var $input = $(input);
 
        if (/^\[.*\]/g.test($input.val())) {
          $input.val($.trim($input.val().replace(/^\[.*\]/, '')));
        }
 
        $input.val($.trim(value + ' ' + $input.val()));
       
      }
    }
  };
 
  $(function () {
    var $input = $('input[name="subject"]');
    config.engine.init($input, 2);
  });
}(jQuery));

Teste com um usuário comum, um moderador e um administrador e veja se funciona. o/
Luiz

Luiz
Membro Entusiasta
Membro Entusiasta

Membro desde : 23/04/2016
Mensagens : 6645
Pontos : 7451

https://luizfelipe.dev

Ir para o topo Ir para baixo

Tópico resolvido Re: Sistema de prefixo restrito aos administradores e moderadores

Mensagem por virus 13.09.17 19:22

Não funcionou. Apenas sumiu em ambas as contas.
virus

virus
Membro

Membro desde : 03/03/2013
Mensagens : 695
Pontos : 910

Ir para o topo Ir para baixo

Membro Entusiasta

Tópico resolvido Re: Sistema de prefixo restrito aos administradores e moderadores

Mensagem por Luiz 13.09.17 19:33

Tente agora:
Código:
/*globals jQuery, _userdata*/
/**
 * @name Sistema de Prefixos.
 * @version 1.2
 * @author Luiz
 * @see {@link http://ajuda.forumeiros.com/}
 * @licence MIT
 */
(function ($) {
  'use strict';
 
  var config = {
    prefixes: [
      'Dúvida', 'Pedido', 'Em Curso',
      'Jogos', 'Recusado', 'Resolvido',
      'Negado'
    ],
 
    lang: {
      all: 'Sem Prefixo'
    },
 
    engine: {
      /**
      * @name Inicializador.
      * @desc Usado para iniciar o script.
      * @param {object} input - Corresponde ao seletor do input-alvo do script.
      */
      init: function (input) {
        var self = this;
       
        var $input = $(input);
        var $dummy = $('<option>', { 'class': 'fa-prefix-item' });
       
        if (!/^\/post$/g.test(location.pathname) && $input) {
          return false;
        }
   
        var $select = $('<select>', {
          'class': 'fa-prefix-select'
        });
 
        $dummy
          .clone()
            .text(config.lang.all)
            .attr('value', '')
            .attr('selected', true)
            .appendTo($select)
        ;
   
        $.each(config.prefixes, function (index, prefix) {
          $dummy
            .clone()
              .text('[' + prefix + ']')
              .attr('value', '[' + prefix + ']')
              .attr('id', 'fa-prefix-item-' + index)
              .appendTo($select)
          ;
        });
   
        $select
          .insertAfter($input)
          .on('change', function () {
            var $this = $(this);
            var value = $this.val();
   
            self.prefix(value, $this.prev());
          })
        ;
      },
     
      /**
      * @name Prefixador.
      * @desc Usada para colocar o prefixo no input.
      * @param {string} value - Corresponde ao prefixo que será colocado.
      * @param {object} input - Corresponde ao seletor do input que será prefixado.
      */
      prefix: function (value, input) {
        var $input = $(input);
 
        if (/^\[.*\]/g.test($input.val())) {
          $input.val($.trim($input.val().replace(/^\[.*\]/, '')));
        }
 
        $input.val($.trim(value + ' ' + $input.val()));
       
      }
    }
  };
 
  $(function () {

    if (
      _userdata.user_level !== 1 &&
      _userdata.user_level !== 2
    ) {
      return false;
    }
   
    var $input = $('input[name="subject"]');
    config.engine.init($input);
  });
}(jQuery));

o/
Luiz

Luiz
Membro Entusiasta
Membro Entusiasta

Membro desde : 23/04/2016
Mensagens : 6645
Pontos : 7451

https://luizfelipe.dev

Ir para o topo Ir para baixo

Tópico resolvido Re: Sistema de prefixo restrito aos administradores e moderadores

Mensagem por virus 13.09.17 19:39

Realmente não funcionou nem por aplicação via console.
Sou novato nessa parte de JS, não há possibilidade de adicionar Algo em geral no código como IF E ELSE? mesmo sendo simples.
virus

virus
Membro

Membro desde : 03/03/2013
Mensagens : 695
Pontos : 910

Ir para o topo Ir para baixo

Membro Entusiasta

Tópico resolvido Re: Sistema de prefixo restrito aos administradores e moderadores

Mensagem por Luiz 13.09.17 19:43

O estranho é que eu testei duas vezes (no meu fórum, como administrador; e no fórum dos fóruns, como moderador — ambas funcionaram):
-> http://prntscr.com/gkrzdj
-> http://prntscr.com/gkrzv2

Você investiu o script em todas as páginas?
Luiz

Luiz
Membro Entusiasta
Membro Entusiasta

Membro desde : 23/04/2016
Mensagens : 6645
Pontos : 7451

https://luizfelipe.dev

Ir para o topo Ir para baixo

Tópico resolvido Re: Sistema de prefixo restrito aos administradores e moderadores

Mensagem por virus 13.09.17 19:51

Acabei de testar limpando o historico do navegador *Cookies*
E funcionou apenas para admins e os moderadores não funcionou ;c
virus

virus
Membro

Membro desde : 03/03/2013
Mensagens : 695
Pontos : 910

Ir para o topo Ir para baixo

Membro Entusiasta

Tópico resolvido Re: Sistema de prefixo restrito aos administradores e moderadores

Mensagem por Luiz 13.09.17 19:52

Para que funcione para os moderadores, eles devem ter poder moderativo em ao menos um subfórum, nas configurações de autorizações.
Luiz

Luiz
Membro Entusiasta
Membro Entusiasta

Membro desde : 23/04/2016
Mensagens : 6645
Pontos : 7451

https://luizfelipe.dev

Ir para o topo Ir para baixo

Tópico resolvido Re: Sistema de prefixo restrito aos administradores e moderadores

Mensagem por virus 13.09.17 19:58

Bem pensado, eu notei isso só que esqueci de alterar.
Funcionou pode fechar o tópico.
virus

virus
Membro

Membro desde : 03/03/2013
Mensagens : 695
Pontos : 910

Ir para o topo Ir para baixo

Membro Entusiasta

Tópico resolvido Re: Sistema de prefixo restrito aos administradores e moderadores

Mensagem por Luiz 13.09.17 19:59

Título alterado de '[Dúvida]Sistema de prefixo2' para 'Sistema de prefixo restrito aos administradores e moderadores'.

Questão marcada como Resolvida ou o Autor solicitou que ela fosse arquivada.
Tópico marcado como Resolvido e movido para Questões resolvidas.
Luiz

Luiz
Membro Entusiasta
Membro Entusiasta

Membro desde : 23/04/2016
Mensagens : 6645
Pontos : 7451

https://luizfelipe.dev

Ir para o topo Ir para baixo

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


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