Favoritos 3 – RTF

agosto 11, 2010

Fazer o quê!?
As vezes é necessário….

http://www.phprtf.com/

0

Java – Filme

agosto 5, 2010

Muito bom!

Eu vi em http://www.cervejageek.com.br/

0

Validação de data para flash

julho 19, 2010

Estou compartilhando uma função que escrevi agora há pouco para validar datas em flash. O detalhe é que, por enquanto, o ano deve ter 4 dígitos. Por exemplo: 02/10/2010. Segue:

1
2
3
4
5
6
7
8
9
10
11
12
13
trace(validateDate('02/10/2010', "/"));
 
function validateDate(s, delimitador: String):Boolean {
	var d:Array = s.split(delimitador);
 
	if (d.length!=3) return false;
	for (var i:Number = 0; i<d.length; i++) d[i] = parseInt(d[i]);
 
	d[1] = d[1]-1;	
	var dt:Date = new Date(d[2], d[1], d[0]);
 
	return ((dt.getFullYear()==d[2]) && (dt.getMonth()==d[1]) && (dt.getDate()==d[0]));
}
0

Validação de Email para flash

julho 14, 2010

Melhor função de validação de email que achei:

1
2
3
4
5
function validateEmailAddress(emailString:String):Boolean {
	var myRegEx:RegExp = /(\w|[_.\-])+@((\w|-)+\.)+\w{2,4}+/;
	var myResult:Object = myRegEx.exec(emailString);
	return (myResult!=null);
}

* fonte: http://www.developphp.com/Flash_tutorials/show_tutorial.php?tid=532

0

Funcão trim() para flash

julho 14, 2010

Essa foi a melhor função que achei para trim em flash retirada daqui!

1
2
3
function trim( s:String ):String {
  return s.replace( /^([\s|\t|\n]+)?(.*)([\s|\t|\n]+)?$/gm, "$2" );
}
0

Link em Favoritos 2 – Splitter online de imagens

julho 14, 2010

Achei bem interessante!

http://www.htmlkit.com/services/is/

0

Scroll em AS3 para Flash

junho 26, 2010

Montei uma classe em AS3 para montar scroll bar vertical em MovieClips de flash. Ela tem basicamente 6 propriedades e 1 método:

Propriedades obrigatórias:
1. setScrollerMovieClip(mc:MovieClip) que define o movieclip objeto do scroll, geralmente o texto ou a imagem a ser deslizado (obrigatório);
2. setScrollBar(mc:MovieClip) é a barra de scroll (obrigatório);
3. setScrollTracker(mc:MovieClip) é o item central de arrasto da barra de scroll (obrigatório);

Propriedades não obrigatórias:
1. setScrollTrackerResize(b:Boolean) define se o item central de arrasto será redimensionado;
2. setScrollMarginLeft(n:Number) define o espaço entre o objeto do scroll e a barra de scroll;
3. setArrowTop(mc:MovieClip) define a seta superior da barra
4. setArrowBotton(mc:MovieClip) define a seta inferior da barra

Método:
init() inicia o scroll

Construtor:
Scroll(stage) deve receber stage como argumento!

Exemplo1:

Código do exemplo1:

1
2
3
4
5
6
7
8
9
10
import mnsolucoes.Scroll;
 
var sc:Scroll = new Scroll(stage);
sc.setScrollerMovieClip(mcTexto)
	.setScrollBar(mcBar)
	.setScrollTracker(mcTrack)
	.setScrollTrackerResize(false)
	.setScrollMarginLeft(15);
 
sc.init();

Exemplo 2 (só para brincar):

1
2
3
4
5
6
7
8
9
10
11
import mnsolucoes.Scroll;
 
var sc:Scroll = new Scroll(stage);
sc.setScrollerMovieClip(mcTexto)
	.setScrollBar(mcBar)
	.setScrollTracker(mcTrack)
	.setArrowTop(mcArrowBotton)
	.setArrowBotton(mcArrowTop)
	.setScrollMarginLeft(15);
 
sc.init();

Para quem quiser a classe e os exemplos usados no post estão disponíveis clicando aqui para download!

* A função de efeito de deslizamento e de redimencionamento do tracker eu retirei daqui: http://www.fuoridalcerchio.net/wordpress/2008/03/04/as3scrollbar/

** Por ser a primeira versão está sem controle de erros por enquanto!

0

Magento – Adicionando CPF ao cadastro do cliente (parte 3)

junho 18, 2010

Nessa parte do estudo, vou colocar a máscara em nosso campo CPF. Para isso, vou adicionar a biblioteca jQuery que pode ser baixada aqui http://code.jquery.com/jquery-1.4.2.min.js. O arquivo jquery.js, no meu caso, foi colocado em js/olamundo/jquery.js.

Existirá um conflito entre o prototype usado pelo Magento e o jQuery. A solução encontrada por mim é usar o noConflict do jQuery.

Primeiramente, vamos colocar o jquery.js no cabeçalho das páginas. Para isso, edite o arquivo app/design/frontend/base/default/layout/page.xml e acrescente depois de cookies.js:

1
2
<action method="addJs"><script>olamundo/jquery-1.4.2.min.js</script></action>
<action method="addJs"><script>olamundo/jquery.semconflito.js</script></action>

Crie um arquivo chamado jquery.semconflito.js em js/olamundo com a seguinte instrução:

1
$jq = jQuery.noConflict();

Agora quando o jQuery for ser usado, no lugar de $ usa-se $jq. Continuando… para colocar a máscara vou usar o plugin para jQuery chamado Masked Input. No meu caso, baixei ele e instalei em js/olamundo/jquery.maskedinput.js.

Com isso, basta editar o arquivo /template/customer/widget/olamundo_cpf.phtml para incluir o plugin e acrescentar o código para validação: $(‘cpf’).addClassName(‘validar_cpf’);

E o arquivo olamundo_cpf.phtml ficará assim:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<label for="<?php echo $this->getFieldId('cpf')?>" class="required"><em>*</em><?php echo $this->__('CPF') ?></label>
<div class="input-box">
    <input type="text" id="cpf" name="cpf" value="<?php echo $this->htmlEscape($this->getCpf()) ?>" title="<?php echo $this->__('CPF') ?>" class="input-text required-entry" <?php echo $this->getFieldParams() ?> />
</div>
 
<script type="text/javascript" src="<?php echo $this->getJsUrl('olamundo/cpf_cnpj.js'); ?>"></script>
<script type="text/javascript" src="<?php echo $this->getJsUrl('olamundo/jquery.maskedinput.js'); ?>"></script>
<script type="text/javascript">
 
	$jq("#cpf").mask("999.999.999-99", {placeholder:"_"});
	$('cpf').addClassName('validar_cpf');
 
	Validation.add('validar_cpf',
    		'O CPF  informado \xE9 invalido',
    		function(v){
		return isCpfCnpj(v);
	});	
 
</script>

O resultado final será esse aqui:

0

Magento – Adicionando CPF ao cadastro do cliente (parte 2)

junho 17, 2010

Nessa continuação do estudo passado, vou colocar a validação do campo CPF no cadastro do cliente, para isso, será necessário abrir o arquivo que foi criado no outro post em /template/customer/widget/olamundo_cpf.phtml que deverá estar assim:

1
2
3
4
<label for="<?php echo $this->getFieldId('cpf')?>" class="required"><em>*</em><?php echo $this->__('CPF') ?></label>
<div class="input-box">
    <input type="text" id="cpf" name="cpf" value="<?php echo $this->htmlEscape($this->getCpf()) ?>" title="<?php echo $this->__('CPF') ?>" class="input-text required-entry" <?php echo $this->getFieldParams() ?> />
</div>

O interessante é o sistema de validação usado no magento que vem da biblioteca prototype. Que é informado no atributo “class” do “input”, conforme vemos acima:

class=”input-text required-entry”

Existe vários tipos de validação pré-definidas conforme pode-se ver nesse link. Se usarmos por exemplo “validate-greater-than-zero”:

1
2
3
4
<label for="<?php echo $this->getFieldId('cpf')?>" class="required"><em>*</em><?php echo $this->__('CPF') ?></label>
<div class="input-box">
    <input type="text" id="cpf" name="cpf" value="<?php echo $this->htmlEscape($this->getCpf()) ?>" title="<?php echo $this->__('CPF') ?>" class="input-text required-entry validate-greater-than-zero" <?php echo $this->getFieldParams() ?> />
</div>

Então o campo CPF, além de não poder ficar em branco, deverá conter um valor numérico maior que “zero”:

Mas para validar o CPF teremos que criar uma validação própria. Para isso eu vou usar o código de validação criado por Márcio d’Ávila chamado cpf_cnpj.js e que pode ser encontrado em http://www.mhavila.com.br/topicos/web/cpf_cnpj.html.

No meu caso, criei uma pasta em js/ chamada olamundo e copiei o arquivo que, então, ficará disponível em js/olamundo/cpf_cnpj.js. Aí, basta editar o olamundo_cpf.phtml para incluir o arquivo:

1
2
3
4
5
6
<label for="<?php echo $this->getFieldId('cpf')?>" class="required"><em>*</em><?php echo $this->__('CPF') ?></label>
<div class="input-box">
    <input type="text" id="cpf" name="cpf" value="<?php echo $this->htmlEscape($this->getCpf()) ?>" title="<?php echo $this->__('CPF') ?>" class="input-text required-entry validate-greater-than-zero" <?php echo $this->getFieldParams() ?> />
</div>
 
<script type="text/javascript" src="<?php echo $this->getJsUrl('olamundo/cpf_cnpj.js'); ?>"></script>

Claro que ainda precisamos adicionar o código à validação prototype. Para isso usei o estudo em http://blog.juliovedovatto.com/programacao-adicionando-validacao-de-cpf-no-magento/, de modo que o código de olamundo_cpf.phtml ficará assim:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<label for="<?php echo $this->getFieldId('cpf')?>" class="required"><em>*</em><?php echo $this->__('CPF') ?></label>
<div class="input-box">
    <input type="text" id="cpf" name="cpf" value="<?php echo $this->htmlEscape($this->getCpf()) ?>" title="<?php echo $this->__('CPF') ?>" class="input-text required-entry" <?php echo $this->getFieldParams() ?> />
</div>
 
<script type="text/javascript" src="<?php echo $this->getJsUrl('olamundo/cpf_cnpj.js'); ?>"></script>
<script type="text/javascript">
	$('cpf').addClassName('validar_cpf');
 
	Validation.add('validar_cpf',
    		'O CPF  informado \xE9 invalido',
    		function(v){
		return isCpfCnpj(v);
	});	
 
</script>

Isso gera o seguinte resultado:

0

Magento – Adicionando CPF ao cadastro do cliente (parte 1)

junho 16, 2010

Esse é mais um post do meu estudo sobre o Magento (1.4.0.1). Aqui a idéia é acrescentar o atributo CPF ao cadastro do cliente. Para isso:

Primeiro passo:

Criar a estrutura de pastas Olamundo/Customer dentro de app/code/local. Por exemplo:

A pasta Olamundo/Customer/etc conterá o arquivo de configuração xml para o website e a pasta Olamundo/Customer/Blocks/Widget conterá a classe de configuração do campo CPF no frontend do website. Os arquivos serão criados nos próximos passos!

Segundo passo:

Avise o magento sobre o novo módulo, criando o arquivo “Olamundo_All.xml” em app/etc/modules com a seguinte estrutura:

1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="UTF-8"?>
<config>
  <modules>
    <Olamundo_Customer>
      <active>true</active>
      <codePool>local</codePool>
    </Olamundo_Customer>
  </modules>
</config>

Terceiro passo:

Precisamos definir o novo campo, em Olamundo/Customer/etc, crie o arquivo config.xml com o seguinte código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0"?>
<config>
  <modules>
    <Olamundo_Customer>
      <version>0.1.0</version>
    </Olamundo_Customer>
  </modules>
 
  <global>
    <fieldsets>
      <customer_account>
        <cpf><create>1</create><update>1</update></cpf> 
      </customer_account>
    </fieldsets>
  </global>
 </config>

Para que esses xml realmente configurem algo, é necessário apagar o cache do magento. Pode apagar todos os arquivos em: var/cache.

Quarto passo:

Devemos criar os atributos na base de dados, para isso, vá no root de seu magento e abra o arquivo index.php, na última linha (depois de Mage::run($mageRunCode, $mageRunType);) acrescente o seguinte código:

1
2
3
4
5
6
7
8
9
10
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
 
$setup->addAttribute('customer', 'cpf' , array(
               'position' => 1,
               'required'=> 1,
               'label' => 'CPF',
               'type' => 'varchar',
               'input'=>'text',
               'apply_to'=>'simple,bundle,grouped,configurable',
));

Dê um reload (F5) no browser para rodar a sua aplicação e executar o código acima, com isso será criada a estrutura de dados suficiente para você trabalhar com o campo CPF.

APÓS, VOCÊ PODE APAGAR O CÓDIGO ACIMA E DEIXAR O INDEX.PHP COMO ESTAVA ANTES!!!

Só por curiosidade! repare que na tabela “eav_attribute”, na última linha, foi criado o registro do atributo CPF que se relaciona com a tabela “eav_entity_attribute” (v. o campo: attribute_id) que, por sua vez, se relaciona com a tabela “customer_eav_attribute”.

Observe também que pela simples criação do registro, o campo já aparece no admin! Vá em Clientes| Gerenciar Clientes| Clique em algum cliente e acesse a aba à esquerda “dados de acesso”:

Quinto passo:

Agora resta colocar o campo no frontend do website. Para isso, primeiramente, vamos criar o widget. Crie o arquivo Cpf.php em Olamundo/Customer/Block/Widget com o seguinte código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
 
class Olamundo_Customer_Block_Widget_Cpf extends Mage_Customer_Block_Widget_Abstract
{
    public function _construct()
    {
        parent::_construct();
        $this->setTemplate('customer/widget/olamundo_cpf.phtml');
    }
 
    public function isEnabled()
    {
        return true;
    }
 
    public function isRequired()
    {
        return 'req' == true;
    }
 
    public function getCustomer()
    {
        return Mage::getSingleton('customer/session')->getCustomer();
    }
}

Sexto passo:

O widget acima faz referência ao arquivo olamundo_cpf.phtml que conterá a visualização do campo e as regras de validação e máscara se for o caso. Vamos criá-lo em /template/customer/widget/, onde no meu caso é: app/design/frontend/base/default.

O código de olamundo_cpf.phtml é:

1
2
3
4
<label for="<?php echo $this->getFieldId('cpf')?>" class="required"><em>*</em><?php echo $this->__('CPF') ?></label>
<div class="input-box">
    <input type="text" id="cpf" name="cpf" value="<?php echo $this->htmlEscape($this->getCpf()) ?>" title="<?php echo $this->__('CPF') ?>" class="input-text required-entry" <?php echo $this->getFieldParams() ?> />
</div>

Sétimo passo:

Agora só falta alterar os arquivos de layout que são 3 para o caso do CPF:

/template/customer/form/register.phtml

/template/customer/form/edit.phtml

/template/checkout/ondepage/billing.phtml

Vamos fazer no register.phtml, o resto é só seguir a mesma lógica! Devemos inserir o seguinte código, pode ser depois do checkbox do newsletter e antes do $_dob:

1
2
<?php $_cpf = $this->getLayout()->createBlock('Olamundo_Customer_Block_Widget_Cpf') ?>
<li><?php echo $_cpf->setRgie($this->getFormData()->getCpf())->toHtml() ?></li>

Com isso, teremos a seguinte visualização:

6