quinta-feira, 31 de outubro de 2013

Redirecionando o usuário para um subdomínio

No .htacces na pasta pública:

 RewriteEngine on  
 RewriteCond %{HTTP_HOST} ^dominio.com [NC]  
 RewriteRule ^(.*)$ http://www.dominio.com/$1 [R=301,L]  

sexta-feira, 18 de outubro de 2013

Avisar se o usuário esqueceu de gravar o formulário

Primeiro, criamos uma variável:
 var alguem_mexeu_no_meu_queijo = false;  

No evento change de qualquer elemento, alteramos essa variável, para sabermos que o usuário mexeu no formulário:
 $('select, input, textarea').change(function(){  
      alguem_mexeu_no_meu_queijo = true;  
 });  

Depois, no evento beforeunload da janela, precisamos ver se a variável foi alterada.
Se sim, damos o alerta, perguntando se ele quer mesmo sair.
 window.onbeforeunload = function(){  
      if(alguem_mexeu_no_meu_queijo==true)  
      {  
           return 'Alguém mexeu no meu queijo.';  
      }  
 }  


Ah, quando o usuário envia o formulário, precisamos setar a variável como true, para que não apareça o alerta.
Se tu tiver usando o jquery validation, fica assim:
 $('#form').validate({  
           , submitHandler: function(form) {  
                alguem_mexeu_no_meu_queijo = false;  
                form.submit();  
           }  
      });  

quinta-feira, 17 de outubro de 2013

Aumentando o tamanho do array _POST

No .htaccess, assim:
php_value max_input_vars 3000

Claro que o jeito certo é não deixar um formulário com 1000 inputs, que é o valor padrão, mas é mais fácil fazer isso do que revisar mais scripts jurássicos feitos por terceiros e quartos.

sexta-feira, 11 de outubro de 2013

Relógio em javascript

Um pequeno relógio em javascript:

 <form name="crono" style="margin:0px;">  
      <input id="relogio" width="30" />  
      <script language="JavaScript">  
           var data = new Date();  
           function data_inicial(ano,mes,dia,hora,minuto,segundo){  
                data.setFullYear(ano)  
                data.setMonth(mes-1)  
                data.setDate(dia)  
                data.setHours(hora)  
                data.setMinutes(minuto)  
                data.setSeconds(segundo)  
           }  
           function zeros(number) {  
                if (number < 10) {   
                     number = ("0"+number);   
                }  
                return number;  
           }  
           function Relogio() {  
                var formato = zeros(data.getDate())+'/'+zeros(data.getMonth()+1)+'/'+zeros(data.getFullYear())+' '+zeros(data.getHours())+':'+zeros(data.getMinutes())+':'+zeros(data.getSeconds());  
                data.setSeconds(data.getSeconds()+1)  
                document.getElementById('relogio').value = formato;  
                setTimeout("Relogio()",1000);  
           }   
           data_inicial(2013, 09, 12, 15, 09, 05); //comente para começar com a data atual 
           Relogio();  
      </script>  
 </form>  

Utilizando jquery-ui tabs + jquery validation plugin

Quando o plugin encontra um elemento com erro, o elemento automaticamente ganha foco.
Mas quando o elemento está em uma aba que não está habilitada no momento, não acontece nada.

Pra que o elemento ganhe foco e a aba passe a ser a ativa, segue a função:
 $('#formulario').validate({  
           ignore: "",//para validar os elementos que estão nas abas desabilitadas  
           highlight: function(element, errorClass, validClass) {  
                var div = $(element).parents('.ui-tabs-panel').attr('id');//encontra a div em que está o elemento inválido  
                var index = $('#tabs ul li a').index($('a[href="#'+div+'"]')); //encontra o indice nos links  
                $("#tabs").tabs( "option", "active", index ); //seta a aba como ativa  
           }  
      });  


quinta-feira, 3 de outubro de 2013

Quando se usa o editor tinyMCE junto com o jquery.validate, acontece um problema que o usuário precisa clicar duas vezes no botão de salvar, por um motivo que não lembro qual é.

Pra resolver isso, precisa chamar a função triggerSave no clique no botão de enviar, mais ou menos assim:

 $('button.salvar').click(function(){  
     if (tinyMCE) tinyMCE.triggerSave();  
 });