FCKeditor com CakePHP
Hoje vou passar para você alguns truques de como rodar o FCKeditor no CakePHP.
FCKeditor para quem não sabe, é um editor multplataforma que com seus diversos recursos, nos ajuda a resolver os problemas que ocorrem no dia-a-dia. Dentre seus recursos, ele faz: upload,coloca cores, forms, negrito,fonte html, imagem,link… e muuuito mais.
Tudo bem que eu acho que ele tem coisas de mais, por isso é bom dar uma filtrada antes de subir para o servidor, mas isso vamos ver aqui neste post.
Ingredientes:
- FCKeditor 2.6
- CakePHP 1.1.19.6305 ( 1/01/2008)
Estudando por um artigo do Bakery, tive alguns erros, talvez pelo fato do artigo tratar de uma versão anterior ao 2.6, por isso resolvi escrever com ousa-lo e ajuda-los com alguns truques.
Vamos ao bolo. : )
1. Como estamos usando o cakePHP, não vamos precisar de nenhuma outra linguagem, portanto, na pasta editor/filemanager/connectors devemos excluir todas as pastas com o nome diferente de php.
2. No FCKeditor, copie a pasta editor e os arquivos fckeditor.js, fckconfig.js, fckstyles.xml e fcktemplates.xml para a pasta app/webroot/js do Cake.
3. No Cake, edite o arquivo app/webroot/.htaccess e adicione as seguintes linhas:
AddType application/x-javascript .js
AddType text/css .css
Caso você não consiga abrir o arquivo, mude a extensão do mesmo para txt e faz as alterações, depois disso volte-o para a extensão inicial.
O conteúdo deste arquivo deverá ficar semelhante a isso:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
AddType application/x-javascript .js
AddType text/css .css
</IfModule>
4. Configure o arquivo app/views/helpers/fck.php ao seu gosto.
Você pode criar outros ToolbarSets ou mesmo modificar os que existem. Não esqueça de fazer backup heim!
5. Agora precisaremos criar um helper. Crie o seguinte arquivo: app/views/helpers/fck.php
Seu conteúdo deverá conter o código abaixo:
<?php
class FckHelper extends Helper
{
function load($id, $toolbar = ‘Email’) {
foreach (explode(‘/’, $id) as $v) {
$did .= ucfirst($v);
}
return <<<FCK_CODE
<script type=”text/javascript”>
fckLoader_$did = function () {
var bFCKeditor_$did = new FCKeditor(‘$did’);
bFCKeditor_$did.BasePath = ‘js/’;
bFCKeditor_$did.ToolbarSet = ‘$toolbar’;
bFCKeditor_$did.Width = ’500′;
bFCKeditor_$did.Height = ’500′;
bFCKeditor_$did.ReplaceTextarea();
}
fckLoader_$did();
</script>
FCK_CODE;
}
}
?>
Algo que julgo importante é colocar o BasePath como ‘js/’ e não como ‘/js/’.
DICA: Certa vez tive que colocar o BasePath como ‘../js/‘ para funcionar no servidor remoto. Portanto, caso dê algum problema tente este valor.
6. Coloque o código <?php echo $javascript->link('fckeditor'); ?> em todas as páginas que você irá usar o fck. Eu particularmente prefiro por no Layout.
7. Coloque o código var $helpers = array(‘Html’, ‘Form’, ‘Javascript’, ‘Fck’); em seu controller.
8. Crie ua view para este controller e coloque o seguinte código dentro:
<div class=”required”>
<?php echo $form->labelTag( ‘Comment/body’, ‘Body’ );?>
<?php echo $html->textarea(‘Comment/body’, array(‘cols’ => ’60′, ‘rows’ => ’10′));?>
<?php echo $fck->load(‘Comment/body’); ?>
<?php echo $html->tagErrorMsg(‘Comment/body’, ‘Please enter the Body.’);?>
</div>
9. Para finalizar, abra o arquivo app/webroot/ js/editor/filemanager/ browser/default/ connectors/php/ config.php e procure pela linha $Config['Enabled'] e $Config['UserFilesPath'], coloque seus valores da seguinte forma:
$Config['Enabled'] = true;
$Config['UserFilesPath'] = ‘/app/webroot/files/’;
UFFA! Enfim chegamos.
Vou beber uma água e volto mais tarde.
Bom dia ,
eu sou novo no php e no cakephp fiz o q vc colocou no blog para fazer mas mesmo assim o filemanager ta dando erro de xml e quando coloco o basepath do filemanager pra fora do meu projeto ele funciona normalmente queri uma dica sua .
estou trabalhando com cakephp 1.2