JScript

Programação & Desenvolvimento


Você não está conectado. Conecte-se ou registre-se

Doação de pontos 

2 participantes

Ir para baixo  Mensagem [Página 1 de 1]

1Doação de pontos  Empty Doação de pontos  Ter 22 Out 2013, 9:56 am

Convidado

avatar
Convidado

Doação de pontos  Zpffmpi
Nome do Arquivo: [Tutorial]Doação de pontos
Autor: Daemon
Funcionalidade: PunBB

Olá, neste tutorial iremos aprender a adicionar um botão de doar pontos nos tópicos nas postagens de cada membro.
Primeiro iremos aceder ao painel de controle, iremos em módulos :seta: html & javascript :seta: gestão dos códigos javascript :seta: criar um novo javascript
Em título coloque o que achar melhor
Investimento: Nós tópicos
Código:
Código:
$(document).ready(function(){
 if($('a[name="quickreply"]').length) {
 $('.post').each(function(){
   $(this).find('.user-basic-info').after('
 <input type="submit" value="Doar Pontos" style="margin: 3px;">
 <div class="sceditor-dropdown" style="display: none;position: relative;">

 <form action="/privmsg" method="post" name="post">
  <input name="username[]" type="text" style="display:none" value="Daemon">
 
 <input value="Doação de pontos" name="subject" style="display:none" type="text">
 
<div><label>Doar pontos</label>
  
   <textarea style="display:none" name="message"></textarea>
 
 <input type="text" class="valdoar" placeholder="Insira o valor..." /> </div>
  
  <input name="post" style="margin-top: 5px" type="submit" value="Confirmar" />
 </form>

 </div>
');
    $('.valdoar').keypress(function(event) {
        var num = (window.event) ? event.keyCode : event.which;
        if ((num > 47 && num < 58)) return true;
        else {
            if (num != return false;
            else return true;
        }
    });
    $(this).find('input[type="submit"]').click(function() {
       $(this).parents('.post').find('.sceditor-dropdown').fadeToggle('3000');
    });
     var user = $(this).find('h4.username').text();
    $(this).find('form input[type="submit"]').click(function(){
     var valor = $(this).prev().val();
    $(this).prev().prev().val('[b]Doar para:[/b] '+user+'\n[b]Valor:[/b] '+valor+'');
    });
  });
 }
});


O código enviara uma mensagem privada com o nome do membro e o valor para o adm/mod que você definir, no código procure por "Daemon" e troque pelo nome do membro que irá receber a MP.



Última edição por JScript em Dom 10 Nov 2013, 9:36 am, editado 5 vez(es)

2Doação de pontos  Empty Re: Doação de pontos  Ter 22 Out 2013, 10:50 am

joelson0007

joelson0007
Moderadores
Moderadores

Me parece que a concatenação acontece ao inserir o fragmento do HTML no fórum, ou a div da linha 13 está sobrando?

3Doação de pontos  Empty Re: Doação de pontos  Ter 22 Out 2013, 1:01 pm

JScript

JScript
Administradores
Administradores

@joelson0007
Não está sobrando, repare que na linha 17 a div é fechada.

@Daemon
Eu tenho observado que os códigos que você faz uso de HTML inseridos em run time, não são colocados em uma variável, com isso sempre reporta o seguinte erro:
Doação de pontos  JhskPxH

Bom, alguns os navegadores chegam a ignorar e executam o código, mas o correto é definir uma variável com o conteúdo!

Seu código deveria ser assim:
Código:

$(document).ready(function(){
    if($('a[name="quickreply"]').length) {
        $('.post').each(function(){
            var sHtml = '<input type="submit" value="Doar Pontos" style="margin: 3px;">' +
                '<div class="sceditor-dropdown" style="display: none;position: relative;">' +
                    '<form action="/privmsg" method="post" name="post">' +
                        '<input name="username[]" type="text" style="display:none" value="Daemon">' +
                        '<input value="Doação de pontos" name="subject" style="display:none" type="text">' +
                        '<div>' +
                            '<label>Doar pontos</label>' +
                            '<textarea style="display:none" name="message"></textarea>' +
                            '<input type="text" class="valdoar" placeholder="Insira o valor..." />' +
                        '</div>' +
                        '<input name="post" style="margin-top: 5px" type="submit" value="Confirmar" />' +
                    '</form>' +
                '</div>';
            $(this).find('.user-basic-info').after(sHtml);
            $('.valdoar').keypress(function(event) {
                var num = (window.event) ? event.keyCode : event.which;
                if ((num > 47 && num < 58)) return true;
                else {
                    if (num != 8) return false;
                else return true;
                }
            });
            $(this).find('input[type="submit"]').click(function() {
                $(this).parents('.post').find('.sceditor-dropdown').fadeToggle('3000');
            });
            var user = $(this).find('h4.username').text();
            $(this).find('form input[type="submit"]').click(function(){
                var valor = $(this).prev().val();
                $(this).prev().prev().val('[b]Doar para:[/b] '+user+'\n[b]Valor:[/b] '+valor+'');
            });
        });
    }
});
Nota: Eu não otimizei o código, apenas fiz o que mencionei acima!

Resultado:
Doação de pontos  Zpffmpi

JS

http://autoitbrasil.com

4Doação de pontos  Empty Re: Doação de pontos  Ter 22 Out 2013, 1:20 pm

joelson0007

joelson0007
Moderadores
Moderadores

Eu até achei que era problema na hora da postagem a falta da ' ou que ele tinha postado um fragmento html minificado, mas fiz um teste aqui no post e funcionou beleza

5Doação de pontos  Empty Re: Doação de pontos  Ter 22 Out 2013, 1:35 pm

JScript

JScript
Administradores
Administradores

Sim, mas você removeu o código!!! Ainda bem que eu vi antes disso...

Aqui está com uma velocidade a mais:
Código:

$(document).ready(function () {
    if ($('a[name="quickreply"]').length) {
        var target = $('div.post');
        var len = target.length - 1, oThis;           
      for (var index = len; index >= 0; index--) {           
            oThis = $(target[index]);
            oThis.find('.user-basic-info').after('<input type="submit" value="Doar Pontos" style="margin: 3px;"><div class="sceditor-dropdown" style="display: none;position: relative;"><form action="/privmsg" method="post" name="post"><input name="username[]" type="text" style="display:none" value="Daemon"><input value="Doação de pontos" name="subject" style="display:none" type="text"><div><label>Doar pontos</label><textarea style="display:none" name="message"></textarea><input type="text" class="valdoar" placeholder="Insira o valor..."/></div><input name="post" style="margin-top: 5px" type="submit" value="Confirmar"/></form></div>');
            $('.valdoar').keypress(function (event) {
                var num = (window.event) ? event.keyCode : event.which;
                if ((num > 47 && num < 58)) return true;
                else {
                    if (num != 8) return false;
                    else return true;
                }
            });
            oThis.find('input[type="submit"]').click(function () {
                oThis.parents('.post').find('.sceditor-dropdown').fadeToggle('3000');
            });
            var user = oThis.find('h4.username').text();
            oThis.find('form input[type="submit"]').click(function () {
                var valor = oThis.prev().val();
                oThis.prev().prev().val('[b]Doar para:[/b] ' + user + '\n[b]Valor:[/b] ' + valor + '');
            });
        }
    }
});
Perceba que no lugar do
Código:
$('.post').each(function () {
eu salvei em uma variável
Código:
var target = $('div.post');
, com isso não será requisitado a cada loop e o loop passou a ser
Código:
for (var index = len; index >= 0; index--) {

Sim, com o valor negativo pois por razões que não irei mencionar aqui, torna o loop até 40% mais rápido!!!

JS

http://autoitbrasil.com

Conteúdo patrocinado



Ir para o topo  Mensagem [Página 1 de 1]

Tópicos semelhantes

-

» Pontos Personalizado

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