<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Lokirj</title>
	<atom:link href="http://www.lokirj.com.br/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.lokirj.com.br</link>
	<description>Meu blog sem máscaras :: Desenvolvimento web e estudos</description>
	<lastBuildDate>Fri, 12 Mar 2010 17:11:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Herança entre models no cakephp</title>
		<link>http://www.lokirj.com.br/cakephp/heranca-entre-models-no-cakephp/</link>
		<comments>http://www.lokirj.com.br/cakephp/heranca-entre-models-no-cakephp/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 17:10:25 +0000</pubDate>
		<dc:creator>Rodrigo Guimarães</dc:creator>
				<category><![CDATA[cakephp]]></category>

		<guid isPermaLink="false">http://www.lokirj.com.br/?p=20</guid>
		<description><![CDATA[Estou trabalhando/desenvolvendo um sistema de CRM (gestão de vendas e relacionamento com cliente) todo feito em cakephp, que é um framework Orientado a objetos que segue o padrão MVC (espero que não esteja me confundindo aqui).
Nesse projeto tenho em minhas models uma class Empresas, cujo atributo classificacao_id define a empresa como um lead, um cliente, [...]]]></description>
			<content:encoded><![CDATA[<p>Estou trabalhando/desenvolvendo um sistema de CRM (gestão de vendas e relacionamento com cliente) todo feito em cakephp, que é um framework Orientado a objetos que segue o padrão MVC (espero que não esteja me confundindo aqui).</p>
<p>Nesse projeto tenho em minhas models uma class Empresas, cujo atributo classificacao_id define a empresa como um lead, um cliente, um fornecedor, etc&#8230;  Até aí tudo lindo. O problema é que cada uma dessas classificações possuem regras de negócio bastante específicas &#8211; por exemplo, um Cliente pode realizar compras, que por sua vez devem compor a meta de vendas, fornecedores devem trabalhar com valores em diferentes moedas, e por aí vai. Devido às inúmeras regras de negócio que iriam surgir meu controller Empresas ia ficar com um tamanho gigantesco, o que poderia dificultar um pouco a manutenção e me criar outros problemas com o passar do tempo.</p>
<p>Logo, para tentar deixar o código mais simples, resolvi aplicar o conceito de herança, onde cada classificação de empresa seria uma classe que herdaria o core da classe Empresa. Dessa forma os métodos dito genéricos, como o CRUD ou alguns relatórios, ficariam na classe pai enquanto que nos filhos eu teria somente os métodos de uso específico de determinada classificação.</p>
<p>Ok, mas como que eu ia fazer isso no cake?</p>
<p>No cakephp toda model, controller e view é filho de uma classe AppAlgumaCoisa que por sua vez é filho de AlgumaCoisa &#8230; Então herança já é natural pro cake.</p>
<p>Mas nem tudo é simples, minha tentativa inicial de fazer um class Cliente extends Empresa não dava certo.  A dica de usar App::Import(&#8216;Model&#8217;, &#8216;Empresa&#8217;); antes da definição da class Cliente veio do pessoal da lista CakePHP-Tuga (não sei o quê é esse Tuga ) e por fim cheguei ao seguinte model:</p>
<pre><strong><span style="color: #003300;"><span style="color: #ff0000;">&lt;?php</span>
</span></strong><span style="color: #003300;">App::Import('Model', 'Empresa');    
class Prospect extends Empresa
{
var $name = 'Prospect';            
}</span><strong><span style="color: #003300;">
<span style="color: #ff0000;">?&gt;</span></span></strong></pre>
<p>O mesmo foi feito para o controller. Apliquei o App::import(&#8216;Controller&#8217;, &#8216;Empresas&#8217;); antes de definir minha class.</p>
<pre><strong><span style="color: #003300;"><span style="color: #ff0000;">&lt;?php</span>
</span></strong><span style="color: #003300;">App::import('Controller', 'Empresas');

class ProspectsController extends EmpresasController
{
function teste()
{
$this-&gt;Empresa-&gt;recursive = -1;
$this-&gt;set('meusprospects', $this-&gt;Empresa-&gt;find('all'));
}
}</span><strong><span style="color: #003300;">
<span style="color: #ff0000;">?&gt;</span></span></strong></pre>
<p>A única dúvida que tenho é que no momento minhas views de prospect estão sendo criadas em empresas/ não que seja ruim, mas com o tempo eu terei tantas views na pasta que fica meio que inviável essa solução. O meu ideal é que as views de Clientes estejam na pasta clientes/ e não em empresas/</p>
<p>Fica aqui então lançado mais um desáfio pra  mim <img src='http://www.lokirj.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   descobrir como alterar a view default de determinado controller.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lokirj.com.br/cakephp/heranca-entre-models-no-cakephp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Editor Xinha com Cakephp</title>
		<link>http://www.lokirj.com.br/cakephp/editor-xinha-com-cakephp/</link>
		<comments>http://www.lokirj.com.br/cakephp/editor-xinha-com-cakephp/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 19:19:07 +0000</pubDate>
		<dc:creator>Rodrigo Guimarães</dc:creator>
				<category><![CDATA[cakephp]]></category>
		<category><![CDATA[helper javascript]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[WYSIWYG]]></category>
		<category><![CDATA[Zinha  editor]]></category>

		<guid isPermaLink="false">http://www.lokirj.com.br/?p=15</guid>
		<description><![CDATA[Pode-se dizer que o Xinha é um plugin em javascript que transforma um textarea em um WYSIWYG , perfeito para uso em sistemas e para dar um tchan em alguns formulários. Antes eu usava o TinyMCE, que também é muito bom (e mais leve), entretanto o Xinha acabou ganhando a preferência &#8211; O imageManager dele [...]]]></description>
			<content:encoded><![CDATA[<p>Pode-se dizer que o Xinha é um plugin em javascript que transforma um textarea em um WYSIWYG , perfeito para uso em sistemas e para dar um tchan em alguns formulários. Antes eu usava o TinyMCE, que também é muito bom (e mais leve), entretanto o Xinha acabou ganhando a preferência &#8211; O imageManager dele é uma mão na roda.</p>
<p>Segue os passos para utilizar o Xinha editor com CakePHP.</p>
<ol>
<li>Baixar do site http://trac.xinha.org/ a última versão do Xinha editor.<br />
Eu usei nos meus testes a 0.96beta2 e não tive problemas, embora seja beta já é madura o suficiente.</li>
<li>Decompactar o pacote na pasta vendors em app<br />
Eu preferi colocar o Xinha na pasta vendor pelo fato de ser um script feito por terceiros, acho que fica mais correto, mas podia te-lo colocado na pasta javascript em webroot.</li>
<li>No controller do seu formulário, faça a chamada do helper <strong>javascript</strong> .<br />
Eu me atrapalhei um pouco aqui, pois não conseguia entender como um item que esta na pasta vendors poderia ser chamado através de um helper com nome diferente.var $helpers = array(&#8216;Form&#8217;, &#8216;Html&#8217;, &#8216;Javascript&#8217;, &#8216;Time&#8217;);</li>
<li>Na view, eu fiz a inclusão do blocos de script usando o helper javascript.</li>
</ol>
<pre>codeBlock('
_editor_url = "/cake/js/xinha/";
_editor_lang = "en";');

echo $javascript-&gt;link('xinha/XinhaCore.js');

echo $javascript-&gt;codeBlock('
xinha_editors = null;
xinha_init    = null;
xinha_config  = null;
xinha_plugins = null;

xinha_init = xinha_init ? xinha_init : function()
{
xinha_editors = xinha_editors ? xinha_editors :
[
\'TemplateEmailHtml\'
];

xinha_plugins = xinha_plugins ? xinha_plugins :
[
\'ImageManager\'
];

if(!Xinha.loadPlugins(xinha_plugins, xinha_init)) return;

xinha_config = xinha_config ? xinha_config() : new Xinha.Config();

//this is the standard toolbar, feel free to remove buttons as you like
xinha_config.toolbar =
[
["fontname","fontsize","bold","italic","underline"],
["separator","justifyleft","justifycenter","justifyright","justifyfull"],
["separator","inserthorizontalrule","createlink","insertimage"],
["linebreak","insertorderedlist","separator","insertunorderedlist"],
["separator","htmlmode"]
];

xinha_config.pageStyleSheets = [ _editor_url + "examples/full_example.css" ];

xinha_editors   = Xinha.makeEditors(xinha_editors, xinha_config, xinha_plugins);

Xinha.startEditors(xinha_editors);
}

Xinha._addEvent(window,\'load\', xinha_init);');

endif;
?&gt;</pre>
<p>Eu tive um pouco de trabalho para botar pra funcionar, ainda não esta no meu ideal, mas já é um começo.</p>
<p>Se alguém souber de uma maneira mais correta de se trabalhar com o Xinha, deixe um comentário com a dica <img src='http://www.lokirj.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.lokirj.com.br/cakephp/editor-xinha-com-cakephp/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Editando arquivos ctp ou thtml no Adobe Dreamweaver CS4</title>
		<link>http://www.lokirj.com.br/cakephp/editando-arquivos-ctp-ou-thtml-no-adobe-dreamweaver-cs4/</link>
		<comments>http://www.lokirj.com.br/cakephp/editando-arquivos-ctp-ou-thtml-no-adobe-dreamweaver-cs4/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 10:11:44 +0000</pubDate>
		<dc:creator>Rodrigo Guimarães</dc:creator>
				<category><![CDATA[cakephp]]></category>
		<category><![CDATA[ctp]]></category>
		<category><![CDATA[dreamweaver]]></category>
		<category><![CDATA[thtml]]></category>

		<guid isPermaLink="false">http://www.lokirj.com.br/?p=7</guid>
		<description><![CDATA[Dica velha, mas não custa repetir.
Eu mesmo sempre me esqueço qual o arquivo xml nas configurações do Dreamweaver devo alterar para adicionar o code e syntax highlighting aos arquivos ctp e thml.
Supondo que você instalou o Dreamweaver CS4 em C:\Arquivos de programas faça o seguintes passos:
Em C:\Arquivos de programas\Adobe\Adobe Dreamweaver CS4\configuration abra o arquivo Extensions.txt [...]]]></description>
			<content:encoded><![CDATA[<p>Dica velha, mas não custa repetir.</p>
<p>Eu mesmo sempre me esqueço <strong>qual o arquivo xml nas configurações do Dreamweaver devo alterar para adicionar o code e syntax highlighting aos arquivos ctp e thml</strong>.</p>
<p>Supondo que você instalou o Dreamweaver CS4 em C:\Arquivos de programas faça o seguintes passos:</p>
<p>Em C:\Arquivos de programas\Adobe\Adobe Dreamweaver CS4\configuration abra o arquivo Extensions.txt e adicione na linha referente a PHP os tipos de arquivo CTP e THTML.</p>
<p>Em C:\Arquivos de programas\Adobe\Adobe Dreamweaver CS4\configuration\DocumentTypes abra o arquivo MMDocumentTypes.xml e localize o nó documenttype com o id=&#8221;PHP_MySQL&#8221;.  Inclua tanto em winfileextension quanto em macfileextension os tipos ctp e thtml. O meu bloco para os dois itens fico da seguinte forma:</p>
<pre><span style="color: #0000ff;">winfileextension="php,php3,php4,php5,ctp,thtml"
macfileextension="php,php3,php4,php5,ctp,thtml"</span></pre>
<p>Essa dica é válida também para a versão CS3 do Dreamweaver. Execute a mesma orientação para poder editar arquivos ctp e thtml no CS3.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lokirj.com.br/cakephp/editando-arquivos-ctp-ou-thtml-no-adobe-dreamweaver-cs4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Criando a option inicial em um campo select</title>
		<link>http://www.lokirj.com.br/cakephp/criando-a-option-inicial-em-um-campo-select/</link>
		<comments>http://www.lokirj.com.br/cakephp/criando-a-option-inicial-em-um-campo-select/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 00:07:28 +0000</pubDate>
		<dc:creator>Rodrigo Guimarães</dc:creator>
				<category><![CDATA[cakephp]]></category>
		<category><![CDATA[helper form]]></category>
		<category><![CDATA[view]]></category>

		<guid isPermaLink="false">http://www.lokirj.com.br/?p=3</guid>
		<description><![CDATA[Já faz algum tempo eu vinha tendo uma dúvida quanto ao uso do helper $form do CakePHP para a criação de selects em meus formulários.
Normalmente eu coloco um option value=&#8221;0&#8243; (ou value=&#8221;" VAZIO MESMO) e algo do tipo &#8220;Selecione:&#8221; escrito entre &#60;option&#62;&#60;/option&#62; e não conseguia de forma alguma descobrir como criar esse option inicial no [...]]]></description>
			<content:encoded><![CDATA[<p>Já faz algum tempo eu vinha tendo uma dúvida quanto ao <strong>uso do helper $form do CakePHP</strong> para a criação de selects em meus formulários.</p>
<p>Normalmente eu coloco um option value=&#8221;0&#8243; (ou value=&#8221;" VAZIO MESMO) e algo do tipo &#8220;Selecione:&#8221; escrito entre &lt;option&gt;&lt;/option&gt; e não conseguia de forma alguma descobrir como criar esse <strong>option inicial no CakePHP.</strong> Sofri um bucado no início para  descobrir como fazer algo simples.</p>
<p>A primeira solução que encontrei quando fiz meu primeiro projeto com CakePHP, em meados de 2007, foi incluir na view onde teria o formulário a linha:</p>
<pre><span style="color: #0000ff;">$html-&gt;tags['selectempty'] = '&lt;option value=""&gt;Selecione...&lt;/option&gt;';</span></pre>
<p>Usei muito essa solução embora não gostasse dela.</p>
<p>Já faz alguns meses que uso outro método, bem mais apropriado, usando o próprio <strong>$form-&gt;input</strong>. Veja:</p>
<pre><span style="color: #0000ff;">echo $form-&gt;input('contact_list_id',  array('options'=&gt;$contactLists,
                                            'empty' =&gt; 'Selecione:'));</span></pre>
<p>O &#8216;empty&#8217; é uma option do array de opções do $form-&gt;input que cria justamente o campo default que normalmente uso em meus selects.</p>
<p>É bom notar que existe inclusive uma option chamada default. Isso pode gerar algumas dúvidas (gerou pra mim de início). A option &#8216;default&#8217; serve para pré-selecionar algum item de um select, tornando ele o valor default.</p>
<p>Fica aqui a dica!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lokirj.com.br/cakephp/criando-a-option-inicial-em-um-campo-select/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
