Escolher fóruns para funcionamento de código js

2 participantes

Ir para baixo

Tópico resolvido Escolher fóruns para funcionamento de código js

Mensagem por Don Corleone 20.07.18 17:47

Detalhes da questão


Endereço do fórum: http://somosmugiwara.forumeiros.com
Versão do fórum: ModernBB

Descrição


Neste tópico aqui: https://ajuda.forumeiros.com/t112470-mensagens-de-moderacao#794861
o @Pedxz fez um código que é do meu interesse, porém necessito saber se eu poderia escolher em quais fóruns o código seria funcional?

Tipo no f5 seria alguns botões, no f3 seriam outros botões. Deixo o código abaixo.

[code]
       /*globals jQuery, FA, _userdata*/
       
       /**
        * Change the topic icon with AJAX and JavaScript.
        *
        * @author Luiz
        * @version 1.2
        * @licence MIT
        */
       
       (function ($) {
         'use strict';
       
         var config = [
           { name: 'Solved', id  : 4, background: '#8b5', onlyForMod: true },
           { name: 'In Progress', id  : 1, background: '#ebb537' },
           { name: 'Important', id: 5, background: '#e3493b', onlyForAdmin: true }
         ];
       
         window.FA = window.FA || {};
         FA.Topic = FA.Topic || {};
       
         var MarkIcon;
         FA.Topic.MarkIcon = MarkIcon = function (config) {
           var self = this;
       
           self.userConfig = config;
           self.defaults = {
             name: undefined,
             id: undefined,
             background: undefined,
             onlyForMod: false,
             onlyForAdmin: false
           };
         
           self.config = $.extend({}, self.defaults, self.userConfig);
       
           $.each(self.config, function (key, value) {
             if (key === undefined) {
               throw new Error ('[Topic Icons] The ' key ' key was not specified in the script config.');
             }
       
             if (value === undefined) {
               throw new Error ('[Topic Icons] The ' value ' value was not specified in the settings.');
             }
           });
         };
       
         MarkIcon.prototype.init = function () {
           var self = this;
       
           var $post = $('.post:first');
           var $link = $post.find('a[href$="mode=editpost"]');
       
           if (!$link.length) {
             return false;
           }
       
           if (this.config.onlyForMod
Don Corleone
Don Corleone
Super Membro

Membro desde : 06/08/2012
Mensagens : 1259
Pontos : 2032

http://somosmugiwara.forumeiros.com https://www.facebook.com/kadandajr https://twitter.com/SomosMugiwara

Ir para o topo Ir para baixo

Tópico resolvido Re: Escolher fóruns para funcionamento de código js

Mensagem por RafaelS. 21.07.18 1:07

Olá Connor.

Isso é possível. Nos indique quais fóruns receberão quais ícones.
avatar
RafaelS.
Membro Entusiasta

Membro desde : 26/04/2014
Mensagens : 5746
Pontos : 7156

http://techmais.forumeiros.com/

Ir para o topo Ir para baixo

Tópico resolvido Re: Escolher fóruns para funcionamento de código js

Mensagem por Don Corleone 21.07.18 1:43

O código que mandei acima, gostaria que funcionasse apenas no fórum 9. Porém gostaria de adicionar outros fóruns com outros botões também. Para o fórum 7, seriam outros botões e para o fórum 76 outros botões.
Don Corleone
Don Corleone
Super Membro

Membro desde : 06/08/2012
Mensagens : 1259
Pontos : 2032

http://somosmugiwara.forumeiros.com https://www.facebook.com/kadandajr https://twitter.com/SomosMugiwara

Ir para o topo Ir para baixo

Tópico resolvido Re: Escolher fóruns para funcionamento de código js

Mensagem por RafaelS. 21.07.18 2:51

Olá!

É impressionante, eu realmente consegui o que pediu.
Veja:

Código:
/*globals jQuery, FA, _userdata*/
        
        /**
         * Change the topic icon with AJAX and JavaScript.
         *
         * @author Luiz
 *
 * Modified by RafaelS. to add buttons to specific forums
 * https://ajuda.forumeiros.com/u54277
 *
         * @version 1.2
         * @licence MIT
         */
        
        (function ($) {
          'use strict';
        
          var config = [
            { name: 'Solved', id  : 4, background: '#8b5', onlyForMod: true, forum: 9 },
            { name: 'In Progress', id  : 1, background: '#ebb537', forum: 7},
            { name: 'Important', id: 5, background: '#e3493b', onlyForAdmin: true, forum: 76 }
          ];
        
          window.FA = window.FA || {};
          FA.Topic = FA.Topic || {};
        
          var MarkIcon;
          FA.Topic.MarkIcon = MarkIcon = function (config) {
            var self = this;
        
            self.userConfig = config;
            self.defaults = {
              name: undefined,
              id: undefined,
              background: undefined,
              onlyForMod: false,
              onlyForAdmin: false,
              forum: undefined,
            };
          
            self.config = $.extend({}, self.defaults, self.userConfig);
        
            $.each(self.config, function (key, value) {
              if (key === undefined) {
                throw new Error ('[Topic Icons] The ' + key + ' key was not specified in the script config.');
              }
        
              if (value === undefined) {
                throw new Error ('[Topic Icons] The ' + value + ' value was not specified in the settings.');
              }
            });
          };
        
          MarkIcon.prototype.init = function () {
            var self = this;
        
            var $post = $('.post:first');
            var $link = $post.find('a[href$="mode=editpost"]');
        
            if (!$link.length) {
              return false;
            }
        
            if (this.config.onlyForMod && (_userdata.user_level !== 1 && _userdata.user_level !== 2)) {
              return false;
            }
        
            if (this.config.onlyForAdmin && _userdata.user_level !== 1) {
              return false;
            }
            var atual = $('.sub-header-path a:last').attr("href");
            console.log("Forum detection by RafaelS.");
            if (atual.indexOf("f"+this.config.forum) < 0) {
              console.log("O ícone "+this-config.name+" não está disponível no fórum: "+ atual);
              return false;
            }
        
            self.messageLink = $link.attr('href');
        
            self.$button = $('<button>', {
              'class'  : 'fa-mark-icon-button',
              'data-id': self.config.id,
              'text'  : self.config.name
            });
        
            self.$button
              .css('background-color', self.config.background)
              .on('click', function (event) {
                event.preventDefault();
        
                self.runAjax();
              })
              .insertBefore($post)
            ;
        
            self.appendStyles();
          };
        
          MarkIcon.prototype.runAjax = function () {
            var self = this;
        
            self.changeText('<i class="fa fa-refresh fa-spin"></i> Marking...');
        
            $.get(self.messageLink)
              .done(function (context) {
                var $form = $('form[action="/post"]', context);
        
                var encode  = document.charset.toLowerCase() === 'utf-8' ? window.encodeURIComponent : window.escape;
        
                var formData = $form.serializeArray();
        
                var data = {};
                $.each(formData, function () {
                  var obj = this;
        
                  data[obj.name] = obj.value;
                });
        
                data.post_icon = self.config.id;
                data.post = 1;
        
                var encoded = $.map(data, function (value, key) {
                  return key + '=' + encode(value);
                }).join('&');
        
                $.post(self.messageLink, encoded)
                  .done(self.changeText('<i class="fa fa-check"></i> Marked!'))
                  .fail(self.error)
                ;
              })
              .fail(self.error)
            ;
          };
        
          MarkIcon.prototype.changeText = function (text) {
            var self = this;
        
            self.runAjax = function () {
              return false;
            };
        
            self.$button
              .html(text)
              .prop('disabled', true)
            ;
          };
        
          MarkIcon.prototype.error = function () {
            alert([
              '[Topic Icons] AJAX Error.',
              'Refresh the page and try again.'
            ].join('\n'));
          };
        
          MarkIcon.prototype.appendStyles = function () {
            $('<style>', {
              'text': [
                '.fa-mark-icon-button {',
                '  padding: 8px 8px 8px 8px;',
                '  border: none;',
                '  color: #fff;',
                '  margin: 10px 0 10px 6px;',
                '  box-shadow: inset 0 0 0 3px rgba(0, 0, 0, 0.08);',
                '  border-radius: 3px;',
                '}'
              ].join('\n')
            }).appendTo('head');
          };
        
          $(function () {
            $.each(config, function () {
              var self = this;
        
              (new FA.Topic.MarkIcon(self)).init();
            });
          });
        }(jQuery));

Cada botão tem o atributo fórum no qual ele estará disponível. Só modificar para que fique do seu jeito.

Abraços. Feliz
avatar
RafaelS.
Membro Entusiasta

Membro desde : 26/04/2014
Mensagens : 5746
Pontos : 7156

http://techmais.forumeiros.com/

Ir para o topo Ir para baixo

Tópico resolvido Re: Escolher fóruns para funcionamento de código js

Mensagem por Don Corleone 21.07.18 3:12

Ficou perfeito meu caro, realmente funcionou legal.
Muito obrigado.

Ps: Surgiu um problema naquele código que lhe pedi, do botão de voto, vou abrir outro tópico.
Don Corleone
Don Corleone
Super Membro

Membro desde : 06/08/2012
Mensagens : 1259
Pontos : 2032

http://somosmugiwara.forumeiros.com https://www.facebook.com/kadandajr https://twitter.com/SomosMugiwara

Ir para o topo Ir para baixo

Tópico resolvido Re: Escolher fóruns para funcionamento de código js

Mensagem por RafaelS. 21.07.18 3:13

Esteja à vontade. Feliz

Tópico resolvido


Movido para "Questões resolvidas".
avatar
RafaelS.
Membro Entusiasta

Membro desde : 26/04/2014
Mensagens : 5746
Pontos : 7156

http://techmais.forumeiros.com/

Ir para o topo Ir para baixo

Ir para o topo


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