Open jarjar123 opened 11 years ago
Se interessar a alguém, segue solução.
Durante os requests a tela ficaria como na imagem abaixo. Terminado o request a tela volta ao normal.
É só adicionar o seguinte script no final do arquivo onepagecheckout.phtml.
var opcDatafields=document.getElementsByClassName('onepagecheckout_datafields')[0];var opcLock=document.createElement('div');opcLock.setStyle({display:'none',position:'relative',width:'100%',top:'0',left:'0',backgroundColor:'#fff',opacity:'0.7'});opcDatafields.appendChild(opcLock);if(checkout){checkout.setLoadWaiting=function(flag){if(flag){opcLock.setStyle({display:'block',height:opcDatafields.offsetHeight+'px'});var container=$('review-buttons-container');container.addClassName('disabled');container.setStyle({opacity:0.5});this._disableEnableAll(container,true)}else if(this.loadWaiting){opcLock.setStyle({display:'none',height:opcDatafields.offsetHeight+'px'});var container=$('review-buttons-container');container.removeClassName('disabled');container.setStyle({opacity:1});this._disableEnableAll(container,false)}this.loadWaiting=flag}}
Show de bola brother! Vou testar e se ficar maneiro que acredito que ira, incorporo ao projeto! ;)
Enviado via iPhone
Em 02/03/2013, às 12:23, jarjar123 notifications@github.com escreveu:
Se interessar a alguém, segue solução.
Durante os requests a tela ficaria como na imagem abaixo. Terminado o request a tela volta ao normal.
É só adicionar o seguinte script no final do arquivo onepagecheckout.phtml.
var opcDatafields=document.getElementsByClassName('onepagecheckout_datafields')[0];var opcLock=document.createElement('div');opcLock.setStyle({display:'none',position:'relative',width:'100%',top:'0',left:'0',backgroundColor:'#fff',opacity:'0.7'});opcDatafields.appendChild(opcLock);if(checkout){checkout.setLoadWaiting=function(flag){if(flag){opcLock.setStyle({display:'block',height:opcDatafields.offsetHeight+'px'});var container=$('review-buttons-container');container.addClassName('disabled');container.setStyle({opacity:0.5});this._disableEnableAll(container,true)}else if(this.loadWaiting){opcLock.setStyle({display:'none',height:opcDatafields.offsetHeight+'px'});var container=$('review-buttons-container');container.removeClassName('disabled');container.setStyle({opacity:1});this._disableEnableAll(container,false)}this.loadWaiting=flag}}
— Reply to this email directly or view it on GitHub.
Perdoe a má formatação, mas não sei como inserir código nesse formulário. Se for incorporar no projeto, seria mais elegante apenas atualizar o método setLoadWaiting() no arquivo onepagecheckout.js
Sim tranks vlw
Enviado via iPhone
Em 02/03/2013, às 12:53, jarjar123 notifications@github.com escreveu:
Perdoe a má formatação, mas não sei como inserir código nesse formulário. Se for incorporar no projeto, seria mais elegante apenas atualizar o método setLoadWaiting() no arquivo onepagecheckout.js
— Reply to this email directly or view it on GitHub.
Opa pessoal, só para notificar que irei implementar essa função feita pelo amigo jarjar no osc6 e tb importante informar que ela também mudou de nome na atualização que aconteceu da 4.2 e deixa de se chamar disableEnableAll para disableEnableAll. Ou seja, apenas add o na frente dela ;) Vlw jarjar123
Então, como mencionei em outro post, instalei o módulo OSC recentemente, e achei sensacional. É um módulo bem completo, com pouco acoplamento, e agradeço disponibilizarem como OSL.
Segue uma sugestão de melhoria:
Após poucos testes percebi que a tela de checkout pode se tornar extremamente instável com usuários indecisos. Muita gente clica "a varrer" em botões radio. Com apenas 3 cliques seguidos, sem aguardar o carregamento do restante do formulário, a tela entrou em loop. Achei que os requests acumulados terminariam, mas ficou realmente em loop.
Além disso é possível alterar o CEP, e submeter o formulário com uma cotação inferior, antes que a nova cotação seja carregada. Dessa mesma forma é possível também burlar descontos baseados na forma de pagamento.
Enfim a despeito disso gostaria de sugerir o bloqueio do formulário inteiro, cada vez que houver algum request em ajax. Isso evita que o usuário sobrecarregue o servidor, fazendo requests desnecessários.
É isso, caso eu resolva isso, e seja do agrado da equipe, compartilharei a solução.
Boa semana a todos.