segunda-feira, 23 de maio de 2011

Ckeditor no zend framework, php, fckeditor

Olá!
Hoje vou explicar de forma simples como se usa o CKeditor no zend framework.

Para quem não sabe o CKeditor (antigo FCKeditor) é uma classe para editor de texto escrita em diversas linguagens.


Antes de mais nada baixe a classe ai no proprio site deles: http://ckeditor.com/download




Depois de baixar, descompacte e insira ela na sua pasta public...

no meu caso coloquei assim: nomedoprojeto\public_html\js\ckeditor
ou seja, dentro da public, e dentro da js eu inseri a pasta toda do ckeditor.


Precisamos antes de mais nada ir na view que vamos utilizar a classe e inserir o js, a minha view é a de noticias então adicionei na views/scripts/noticias/index.phtml

Eu chamo o js dessa forma:

< ? php

  //chamando ckeditor o js
  $this->headScript()->appendFile($this->baseUrl().'/js/ckeditor/ckeditor.js');
?  >

Percebam que pego o baseUrl + o diretório após o public...

Agora vamos criar um Helper para o CKeditor, vc não sabe o que são os helpers do ZEND?
Resumidamente o Helper é uma classe auxiliar para a view, imagina um caso na qual você precisa executar funções complexas na view como o de organizar a data, vc não faria isso na view certo? E se precisa utilizar 'n' vezes? E logicamente não faria no controller pq é ação expecifica para visão, sendo assim usamos os Helpers, q são classes que chamamos sem precisar carregar na view, basta criar uma pasta 'helpers' dentro da pasta views ao lado da scripts =]

Quer uma explicação mais detalhada? Documentação do ZEND


Então vamos la, criando esse diretório: /view/helpers vamos criar uma página php dentro dela chamada  SetupEditor.php (de o nome que vc quiser)

Dentro desse helper criado vamos adicionar:


class Zend_View_Helper_SetupEditor {

    f u n c t i o n setupEditor( $ textareaId ) {
        return "< script type=\"text/javascript\">
    CKEDITOR .replace ( '" . $textareaId . "' );
        < / script >";
    }
}
 
 
O que estamos fazendo é simples, apenas criando uma
 função que recebe o id do text area e retornamos 
ele com o script do ckeditor, isso poderia ser feito
 na view mas e se você precisa fazer várias vezes, 
não é melhor criar um helper?
 
 
 
Agora vamos voltar a nossa view e adicionar um text 
area: 
 
< textarea name="not_texto" id="not_texto"< 
/ textarea> 


depois de adicionar o textarea vamos apenas utilizar o 
helper com o mesmo nome do textarea assim:

 echo $this->setupEditor( 'not_texto' ); ?>

E PRONTO, vejam que não usei o zend form então no 
controller
eu receberia o dado pelo getParam mais o menos assim:

$request = $this->getRequest();
$noticia = $request->getParam('not_texto');

simples não é?!

Fala sério esse Helper é uma mão na RODAAAA xD
Vejam que não utilizamos a classe php do CKeditor 
mas sim a de JS.
Acho que é mais simples, uma vez q isso é FRONTEND.

Espero ter ajudado.


Baseado no tutorial do site norte americano Harikt

@pv_fusion

 
 

sábado, 14 de maio de 2011

O que é JSON?


Que estamos evoluindo mais rápido que a velocidade dos carros da F1 todo mundo sabe, mas e como acompanhar? Será que tudo que aparece de novo é realmente importante aprender?
A resposta para isso é simples: 'DEPENDE'...
Depende?
Sim, depende do seu segmento...

Mas como nesse caso eu abordo desenvolvimento de aplicações para a WEB então eu ja deixo claro o segmento do JSON... (DESENVOLVIMENTO DE SOFTWARE)...



Mas afinal o que significa JSON?

JSON é um acrônimo para "JavaScript Object Notation", é um formato leve para intercâmbio de dados computacionais. JSON é um subconjunto da notação de objeto de JavaScript, mas seu uso não requer Javascript exclusivamente.

A simplicidade de JSON tem resultado em seu uso difundido, especialmente como uma alternativa para XML em AJAX. Uma das vantagens reivindicadas de JSON sobre XML como um formato para intercâmbio de dados neste contexto, é o fato de ser muito mais fácil escrever um analisador JSON.
Em JavaScript mesmo, JSON pode ser analisado trivialmente usando a função eval(). Isto foi importante para a aceitação de JSON dentro da comunidade AJAX devido a presença deste recurso de JavaScript em todos os navegadores web atuais.

Na prática, os argumentos a respeito da facilidade de desenvolvimento e desempenho do analisador são raramente relevados devido aos interesses de segurança no uso de eval() e a crescente integração de processamento XML nos navegadores web modernos. Por esta razão JSON é tipicamente usado em ambientes onde o tamanho do fluxo de dados entre o cliente e o servidor é de supra importância (daí seu uso por Google, Yahoo, etc., os quais servem milhões de usuários), onde a fonte dos dados pode ser explicitamente confiável, e onde a perda dos recursos de processamento XSLT no lado cliente para manipulação de dados ou geração da interface, não é uma consideração.

Enquanto JSON é frequentemente posicionado "em confronto" com XML, não é incomum ver tanto JSON como XML sendo usados na mesma aplicação. Por exemplo, uma aplicação no lado cliente a qual integra dados do Google Maps com dados atmosféricos através de SOAP, requer suporte para ambos formatos de dados.

Existe um crescente suporte para JSON através do uso de pequenos pacotes de terceiros. A lista de linguagens suportadas incluem ActionScript, C/C++, C#, Delphi, ColdFusion, Java, JavaScript, Objective CAML, Perl, PHP, ASP 3.0, Python, Rebol, Ruby, Lua e Harbour.

Um exemplo de objeto JSON:


{ "Aluno" : [         
 { "nome": "João", "nota": [ 8, 9, 7 ]  },         
{ "nome": "Maria", "nota": [ 8, 10, 7 ] },         
{ "nome": "Pedro", "nota": [ 10, 10, 9 ] }      
] }


Espera ai pv.... esse tal JSON é um array? Basicamente isso amigo! 
Mas com ele conseguimos "conversar" com outras linguagens...  Veja uma comparação de XML e Json 
 
OBJETO JSON 
{"menu": {   
"id": "file",   
"value": "File",  
 "popup": {     
"menuitem": [       
{"value": "New", "onclick": "CreateNewDoc()"},      
 {"value": "Open", "onclick": "OpenDoc()"},       
{"value": "Close", "onclick": "CloseDoc()"}     ]   } }}

Mesmo exemplo só que em XML
< menu id="file" value="File" >
  < popup >
    < menuitem value="New" onclick="CreateNewDoc()" / >
    < menuitem value="Open" onclick="OpenDoc()" / >
     
  < / popup >
< / menu >
Percebeu a limpeza?  Valeu!