Archive for dezembro, 2011

Upload com ExtJs 4 e PHP


09 dez

Hoje criaremos, utilizando ExtJs 4 e PHP, um sistema de upload de imagens.

Primeiro faça o download da biblioteca no site do ExtJs: http://www.sencha.com/products/extjs/download/

Faremos três arquivos nesse post: fileUpload.html, fileUpload.js e fileUpload.php.

Vamos criar o fileUpload.html.

XHTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
< !DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0" />
<title>File Upload com ExtJs 4 e PHP</title>
<!-- Carregando biblioteca ExtJs -->
<link rel="stylesheet" type="text/css" href="/extjs/resources/css/ext-all.css" />
<script type="text/javascript" src="/extjs/bootstrap.js"></script>
<!-- -->
</head>
<body>
<div id="fu-form" style="padding:25px;"></div>
</body>
</html>

Agora vamos criar o fileUpload.js que é onde toda a ação do ExtJs 4 acontece.  

JavaScript
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Ext.onReady(function(){
    Ext.create('Ext.form.Panel', {                
        width: 450,
        bodyPadding: 10,
        frame: true,
        renderTo: "fu-form",
        items:[{
            xtype: 'filefield',
            name: 'file',
            fieldLabel: 'Arquivo',
            labelWidth: 50,
            msgTarget: 'side',
            allowBlank: false,
            anchor: '100%',
            buttonText: 'Selecione um arquivo...'
        }],
        buttons: [{
            text: 'Upload',
            handler: function(){
                var form = this.up('form').getForm();
                if(form.isValid()){
                    form.submit({
                        url: 'fileUpload-action.php',
                        waitMsg: 'Carregando o seu arquivo...',
                        failure: function(frm, act){
                            Ext.Msg.alert('Erro', act.result.description);
                        },
                        success: function(frm, act){                                                                                    
                            Ext.create('Ext.window.Window', {
                                title: 'Detalhes do Upload',
                                width: 440,
                                height: 400,
                                bodyPadding: 10,
                                layout: 'fit',
                                html: '<img src="'+act.result.image.stored+'" width="400" height="300" /><p>Nome: '+act.result.image.name+'</p><p>Tamanho: '+parseInt(act.result.image.size)+' Kb</p><p>Tipo: '+act.result.image.type+'</p>'                                                                                                                                
                            }).show();
                        }                                
                    });    
                }
            }
        }]
    });
});

E referenciá-lo no arquivo html.  

XHTML
1
<script type="text/javascript" src="/fileUpload.js"></script>

Agora o vamos configurar o arquivo php para validar o tipo de arquivo e realizar a ação do upload.

Iremos permitir somente o upload de aquivos .gif, .jpeg e .png para evitar que arquivos maliciosos entrem no servidor.

PHP
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
26
< ?php
if(in_array($_FILES["file"]["type"], array("image/gif", "image/jpeg", "image/png"))){
    if(move_uploaded_file($_FILES["file"]["tmp_name"], "uploads/".$_FILES["file"]["name"])){
        echo '{
                success: true,
                image: {
                    name: "'.$_FILES["file"]["name"].'",
                    type: "'.$_FILES["file"]["type"].'",
                    size: "'.($_FILES["file"]["size"] / 1024).'",
                    tmp_stored: "'.$_FILES["file"]["tmp_name"].'",
                    stored: "uploads/'.$_FILES["file"]["name"].'"
                }
        }';
    }else{
        echo '{
            success: false,
            description: "Upload não concluído, verifique as permissões na pasta."
        }';
    }
}else{
    echo '{
            success: false,
            description: "Tipo de arquivo inválido."
    }';
}
?>

Utilizamos alguns recursos diferentes, se ficou com alguma dúvida vai aí os links com explicações mais detalhadas:

http://www.w3schools.com/php/func_array_in_array.asp

http://www.w3schools.com/php/php_file_upload.asp

http://www.w3schools.com/jsref/jsref_parseInt.asp

http://docs.sencha.com/ext-js/4-0

 

 

Normalize.css – Páginas HTML com o mesmo estilo independente do browser


07 dez

Normalize.css

Normalize.css é um arquivo CSS personalizável que faz com que os navegadores processem todos os elementos de forma mais consistente e em harmonia com os padrões modernos. Eles pesquisaram as diferenças entre os estilos de navegadores padrão, a fim de normalizar precisamente apenas os estilos que precisam.

O que ele faz?

  • Preserva padrões úteis , ao contrário de muitos CSS que redefinem.
  • Normaliza estilos para uma ampla gama de elementos.
  • Corrige erros e inconsistências comuns de navegadores.
  • Melhora a usabilidade com melhorias sutis.
  • Explica que o código faz com comentários detalhados.

Como usá-lo

Basta incluir na sua página o estilo css abaixo:

XHTML
1
<link rel="stylesheet" type="text/css" href="https://raw.github.com/necolas/normalize.css/master/normalize.css"/>

Para um maior desempenho é mais interessante fazer o download do Normalize.css para o seu servidor.

Veja uma demonstração do uso. (Use navegadores diferentes para ver o normalize agindo)

Para mais informações acesse o site do desenvolvedor http://necolas.github.com/normalize.css/.

 

 

Janela (dialog) jQuery UI com Google Map API


06 dez

Neste post irei mostrar como é possível criar uma janela usando jQuery UI para inserir um mapa do Google Maps.

Para mais informações sobre o Google Maps JavaScript V3 API, consulte a documentção ou comente abaixo.

Primeiramente deve ser adicionado na sua página HTML o include da biblioteca de mapas do Google:

XHTML
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>[/crayon ]
Em seguida crie um novo bloco de javascript on de iremos configurar a criação de uma janela Dialog do jQuery UI e o mapa do Google.
Confira o código comentado abaixo:
[crayon-4f4560f69aada lang="javascript"]
var mapa;
$(function(){
var div = $('
');
div.dialog({
autoOpen:true,
//Iniciar com a janela aberta.
width:$('body').width()/2,
//A Largura da janela é a metade da largura da página
height:$('body').height()/2,
//A Altura da janela é a metade da altura da página
title:'Google Maps',
//Título da janela
});
var latlng = new google.maps.LatLng(-23.56316, -46.65389); //Posição global inicial (Latitude e Longitude)
//Criando um objeto Map (Mapa) do Google Maps
//O parâmetro é o elemento HTML onde o mapa será exibido, o é um objeto JSON com as opções personalizadas.
mapa = new google.maps.Map($('#janela')[0], {
zoom: 16, //Zoom inicial do mapa
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP //Tipo do mapa
});
//Criar um marcador de posição
new google.maps.Marker({
map: mapa, //Variável do objeto que contém o mapa que o marcador será adicionado
position: latlng //Posição global do marcador (Latitude e Longitude)
});
});

Confira um demo do resultado final da janela em jQuery UI com Google Maps.

JotaQuery

O mundo do Javascript