<?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>Alexandre Marinho &#187; zope</title>
	<atom:link href="http://alexandre.cuboestudioweb.com/tag/zope/feed/" rel="self" type="application/rss+xml" />
	<link>http://alexandre.cuboestudioweb.com</link>
	<description>Tecnologia, Programação, Gadgets, etc...</description>
	<lastBuildDate>Fri, 18 Jun 2010 12:49:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Templates em PHP, só se for com PHPTAL</title>
		<link>http://alexandre.cuboestudioweb.com/2009/07/templates-em-php-so-se-for-com-phptal/</link>
		<comments>http://alexandre.cuboestudioweb.com/2009/07/templates-em-php-so-se-for-com-phptal/#comments</comments>
		<pubDate>Sun, 19 Jul 2009 18:05:21 +0000</pubDate>
		<dc:creator>alexandre</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[zope]]></category>

		<guid isPermaLink="false">http://alexandre.cuboestudioweb.com/?p=91</guid>
		<description><![CDATA[Para os desenvolvedores PHP segue uma dica de uma ferramenta de templates muito legal! O PHPTAL é um motor de geração de templates para PHP5 que implementa a sintaxe ZPT (Zope Page Templates) ex.: &#60;div class="item" tal:repeat="item itemsArray"&#62; &#60;span tal:condition="item/hasDate" &#8230; <a href="http://alexandre.cuboestudioweb.com/2009/07/templates-em-php-so-se-for-com-phptal/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Para os desenvolvedores PHP segue uma dica de uma ferramenta de templates muito legal!</p>
<p>O <a href="http://phptal.org/" target="_blank">PHPTAL</a> é um motor de geração de templates para PHP5 que implementa a sintaxe ZPT (Zope Page Templates) ex.:</p>
<pre><code><span>&lt;div<span> class</span><span>=</span><span>"item"</span><span> tal:repeat</span><span>=</span><span>"item itemsArray"</span>&gt;</span>
    <span>&lt;span<span> tal:condition</span><span>=</span><span>"item/hasDate"</span><span> tal:replace</span><span>=</span><span>"item/getDate"</span>/&gt;</span>
    <span>&lt;a<span> href</span><span>=</span><span>"${item/getUrl}"</span><span> tal:content</span><span>=</span><span>"item/getTitle"</span>/&gt;</span>
  <span>&lt;p<span> tal:content</span><span>=</span><span>"value/getContent"</span>/&gt;</span>
<span>&lt;/div&gt;
</span></code></pre>
<p>Enquanto a maioria dos desenvolvedores continua a usar tags ASP/JSP/PHP como principal linguagem para seus templates, a comunidade Zope teve a ótima idéia chamada TAL. A idéia era mover a ações para dentro de atributos XHML ao invés de usar outras tags e elementos.</p>
<p>Essa é grande vantagem da sintaxe do ZPT, sua simplicidade, não existem novas tags para aprender, e sim novos atributos que podem ser adicionados a qualquer tag XHTML e que atribuem comportamentos específicos. Esses novos atributos possibilitam ações como: condição, definição, repetição, inclusão de attributos, substituição de conteúdo, entre outros.</p>
<p>No exemplo disponível no site do projeto podemos ver o equivalente ao código acima:</p>
<pre><code><span><span>&lt;?php</span> <span>foreach </span><span>(</span><var>$values</var> <span>as</span> <var>$value</var><span>):</span> <span>?&gt;</span></span>
<span>&lt;div<span> class</span><span>=</span><span>"item"</span>&gt;</span>
  <span>&lt;div<span> class</span><span>=</span><span>"title"</span>&gt;</span>
    <span><span>&lt;?php</span> <span>if </span><span>(</span><var>$value</var><span>-&gt;</span><span>hasDate</span><span>()):</span> <span>?&gt;</span></span><span><span>&lt;?=</span><var>$value</var><span>-&gt;</span><span>getDate</span><span>()</span><span>?&gt;</span></span><span><span>&lt;?php</span> <span>endif</span><span>;</span> <span>?&gt;</span></span>
    <span>&lt;a<span> href</span><span>=</span><span>"<span><span>&lt;?=</span> <var>$value</var><span>-&gt;</span><span>getUrl</span><span>()</span> <span>?&gt;</span></span>"</span>&gt;</span><span><span>&lt;?=</span>
		<span>htmlentities</span><span>(</span><var>$value</var><span>-&gt;</span><span>getTitle</span><span>())</span>
	<span>?&gt;</span></span><span>&lt;/a&gt;</span>
  <span>&lt;/div&gt;</span>
  <span>&lt;div<span> class</span><span>=</span><span>"content"</span>&gt;</span>
    <span><span>&lt;?=</span> <span>htmlentities</span><span>(</span><var>$value</var><span>-&gt;</span><span>getContent</span><span>())</span> <span>?&gt;</span></span>
  <span>&lt;/div&gt;</span>
<span>&lt;/div&gt;</span>
<span><span>&lt;?php</span> <span>endforeach</span><span>;</span> <span>?&gt;</span></span></code></pre>
<p>Nota-se a economia de código fonte que o PHPTAL oferece.</p>
<p>Outra grande vantagem so PHPTAL é que, o tamplates são compilados para código fonte PHP5. Funcionando semelhante a idéia de bytecode em python, onde o código fonte em PHPTAL é compilado para PHP na primeira vez em que for executado, sendo o mesmo somente gerado novamente se o código fonte for alterado.</p>
<p>Abaixo a lista funcionalidades do PHPTAL</p>
<ul>
<li>separação da lógica e apresentação,</li>
<li>avisa se você esquecer de fechar uma tag ou se tem erros no template</li>
<li>templates limpos e legíveis,</li>
<li>fácil integração com editores HTML WYSIWYG,</li>
<li>abstração de dados usando um sistema similar a XPath,</li>
<li>interessante sistema de macros HTML,</li>
<li>sistema de internacionalização integrado (usando gettext),</li>
<li>habilidade de substituir expressões XPath por expressões PHP,</li>
<li>quase nenhuma perda de velocidade (templates são compilados, grandes expressões podem ser substituídas por código PHP,</li>
<li>compatível com aceleradores PHP,</li>
<li>mais de quatro anos de suporte da comunidade ZPT,</li>
<li>código extensível.</li>
</ul>
<p>Bom, segue ai a dica para quem quiser um motor de templates interessante e fácil de aprender.<br />
Mais detalhes no site do projeto: http://phptal.org</p>
<p>Até a próxima.</p>
]]></content:encoded>
			<wfw:commentRss>http://alexandre.cuboestudioweb.com/2009/07/templates-em-php-so-se-for-com-phptal/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Alagoas Digital</title>
		<link>http://alexandre.cuboestudioweb.com/2009/04/alagoas-digital/</link>
		<comments>http://alexandre.cuboestudioweb.com/2009/04/alagoas-digital/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 11:35:30 +0000</pubDate>
		<dc:creator>alexandre</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[eventos]]></category>
		<category><![CDATA[pzp]]></category>
		<category><![CDATA[alagoas digital]]></category>
		<category><![CDATA[archgenxml]]></category>
		<category><![CDATA[plone]]></category>
		<category><![CDATA[zope]]></category>

		<guid isPermaLink="false">http://alexandre.cuboestudioweb.com/?p=58</guid>
		<description><![CDATA[Semana que vem tem início o Alagoas Digital, um evento de grande porte de tecnologia no Estado de Alagoas. Num esforço conjunto do ITEC com várias secretarias do estado alagoano, o evento reunirá grandes nomes como Silvio Meira e Henrique &#8230; <a href="http://alexandre.cuboestudioweb.com/2009/04/alagoas-digital/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Semana que vem tem início o Alagoas Digital, um evento de grande porte de tecnologia no Estado de Alagoas. Num esforço conjunto do <a href="http://www.itec.al.gov.br">ITEC</a> com várias secretarias do estado alagoano, o evento reunirá grandes nomes como Silvio Meira e Henrique Miorelli.</p>
<p>Nos dias 6 e 7 de abril, estarei ministrando, ao lado de Carlos Jean, um mini-curso sobre Desenvolvimento Web em ambinete Zope/Plone. Será um mini-curso básico onde mostraremos entre outras coisas o uso do ArchGenXML para criação rápida de produtos Plone.</p>
<p>Mais informações sobre o Alagoas Digital acesse: <a href="http://www.alagoasdigital.com.br" target="_blank">http://www.alagoasdigital.com.br</a></p>
<p><a href="http://alexandre.cuboestudioweb.com/wp-content/uploads/2009/04/mailgooglecom.jpeg"><img class="size-medium wp-image-60 alignnone" title="Alagoas Digital" src="http://alexandre.cuboestudioweb.com/wp-content/uploads/2009/04/mailgooglecom-300x100.jpg" alt="Alagoas Digital" width="300" height="100" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://alexandre.cuboestudioweb.com/2009/04/alagoas-digital/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utilizando iw.fss no Plone 2.5</title>
		<link>http://alexandre.cuboestudioweb.com/2008/12/utilizando-iwfss-no-plone-25/</link>
		<comments>http://alexandre.cuboestudioweb.com/2008/12/utilizando-iwfss-no-plone-25/#comments</comments>
		<pubDate>Sat, 13 Dec 2008 21:34:58 +0000</pubDate>
		<dc:creator>alexandre</dc:creator>
				<category><![CDATA[pzp]]></category>
		<category><![CDATA[plone]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[zope]]></category>

		<guid isPermaLink="false">http://alexandre.cuboestudioweb.com/?p=11</guid>
		<description><![CDATA[Uma das grandes vantagens do Zope/Plone é o seu banco de dados ZODB, porém existem situações onde é necessário armazenar grandes quantidades de arquivos, ou arquivos muito grandes. Isso pode acarretar no crescimento desnecessário do Data.fs. Uma das soluções existentes &#8230; <a href="http://alexandre.cuboestudioweb.com/2008/12/utilizando-iwfss-no-plone-25/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Uma das grandes vantagens do Zope/Plone é o seu banco de dados ZODB, porém existem situações onde é necessário armazenar grandes quantidades de arquivos, ou arquivos muito grandes. Isso pode acarretar no crescimento desnecessário do Data.fs. Uma das soluções existentes é a utilização do produto <a href="http://plone.org/products/filesystemstorage" target="_blank">FileSystemStorage</a>. O que ele faz é, disponibilizar um novo tipo storage para Archetypes, onde os valores dos campos como arquivos e imagens são armazenados no sistema de arquivos.</p>
<p>Primeiro precisamos baixar uma versão compatível com o Plone 2.5, segundo a página do produto a versão mais atual (2.7.1) só é suportada pela versão 3 do Plone. Sendo assim vamos precisar da versão 2.7.0, disponível <a href="http://pypi.python.org/pypi/iw.fss/2.7.0">aqui</a>.</p>
<p><strong>Instalação:</strong></p>
<p>Existem 3 maneiras de instalar o FSS.</p>
<p>1¬™) EGG</p>
<p>Baixe <a href="http://pypi.python.org/packages/2.4/i/iw.fss/iw.fss-2.7.0-py2.4.egg">este egg</a>, e utilize o easy_install para instalar.<br />
<code> </code></p>
<pre># easy_install iw.fss-2.7.0-py2.4.egg</pre>
<p>2¬™)Instalando do SVN</p>
<p>Não encontrei o tar.gz da versão 2.7.0, sendo assim, baixei do repositório.<br />
<code> </code></p>
<pre># svn export http://svn.plone.org/svn/collective/iw.fss/tags/2.7.0/ iw.fss
# cd iw.fss
# python setup.py install</pre>
<p>3¬™) Copiando para lib/pyton</p>
<p>Segue os mesmos passos acima, porém, ao invés de excutar o último comando, copiamos a pasta iw para a lib/python da sua instância.<br />
<code> </code></p>
<pre># svn export http://svn.plone.org/svn/collective/iw.fss/tags/2.7.0/ iw.fss
# cd iw.fss
# cp iw $INSTANCE_HOME/lib/python</pre>
<p><strong>Configuração</strong></p>
<p>Podemos notar que o FSS já adota os padrões do zope 3, ou seja, não é simplesmente extrair seu conteúdo na pasta Products e pronto. Para que ele seja carregado necessitamos criar algums arquivos zcml.</p>
<p>$INSTANCE_HOME/etc/package-includes/iw.fss-meta.zcml, com a linha:</p>
<p><code> </code></p>
<pre>&lt;include package="iw.fss" file="meta.zcml"/&gt;</pre>
<p>$INSTANCE_HOME/etc/package-includes/iw.fss-configure.zcml, com a linha:</p>
<p><code> </code></p>
<pre>&lt;include package="iw.fss" /&gt;</pre>
<p>OBS.: No Plone 2.5 pode acontecer de não existir a pasta package-include em $INSTANCE_HOME/etc, se for este o caso será necessário copiar o conteúdo de $ZOPE_HOME/lib/python/Products/Five/skel para $INSTANCE_HOME/etc.</p>
<p>Agora abra o arquivo $INSTANCE_HOME/lib/python/iw/fss/etc/plone-filesystemstorage.conf e defina as variáveis abaixo:<br />
<code> </code></p>
<pre>storage-path $$INSTANCE_HOME/var/fss_files
backup-path $$INSTANCE_HOME/var/fss_backup
storage-strategy flat</pre>
<p>storage-path e backup-path são, respectivamente, os caminhos de onde ficarão os arquivos e os backups. Já storage-strategy é tipo de estratégia utilizada para armezar os arquivos, por enquanto vamos deixar a estratégia padrão &#8216;flat&#8217;.</p>
<p>Verifique se o FSS está diponível para instalação. Caso sim, você fez tudo corretamente. Seguindo&#8230;</p>
<p><strong>Alterando o storage para arquivos e imagens</strong></p>
<p>Até agora o que fizemos foi instalar e configurar o FSS, mas só isso não basta. Para que os arquivos e as imagens dos content-types padrão do Plone (News Item, File e Image) passem a utilizá-lo precisamos de mais um passo. Adcione a seguinte linha em algum dos arquivos em $INSTANCE_HOME/etc/package-includes:<br />
<code> </code></p>
<pre>&lt;include package="iw.fss" file="atct.zcml" /&gt;</pre>
<p>Agora reinicie o zope e adicione uma nova imagem ou arquivo e verifique na pasta que você definiu como storage e note que agora existe um arquivo lá.</p>
<p><strong>Definindo tipos em produtos personalizados</strong></p>
<p>Muitas vezes somente os tipos padrão do plone não suficientes, e temos que criar nossos próprios tipos. Para utilizar o FSS em nossos produtos personalizados fazemos o seguinte:</p>
<pre><code>
from iw.fss.FileSystemStorage import FileSystemStorage
...
my_schema = Schema((
    FileField('file',
              ...
              storage=FileSystemStorage(),
              widget=FileWidget(...)
              ),
    ...
    ))
 ...
</code></pre>
<p>Bem simples, faça o mesmo na definição do seu tipo e o arquivo será salvo no sistema de arquivos. Para quem usa o Plone 3, os passos são parecidos, porém pode-se utilizar o buildout para facilitar ainda mais o processo.</p>
<p>Esse foi o meu primeiro(de muitos) tutorial, espero que gostem. t+</p>
]]></content:encoded>
			<wfw:commentRss>http://alexandre.cuboestudioweb.com/2008/12/utilizando-iwfss-no-plone-25/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
