Bom estou começando agora no plone 3... o primeiro passo é reproduzir
o skin que ja utilizamos aqui no plone 2.5 para plone 3.

Utilizei a versao 3.0 do DIYPloneStyle para gerar o "esqueleto" do skin. 

Seguindo esses tutoriais:
http://plone.org/documentation/tutorial/customizing-main-template-viewlets/overriding-a-viewlet

http://plone.org/documentation/how-to/override-the-portlets-in-plone-3.0

E olhando o codigo em plone/app/portlets/portlets, fiz o seguinte:

1 - Dentro da pasta browser criei o modulo tempo.py (removi os imports
para ficar menor)

class ITempoPortlet(IPortletDataProvider):
    """Um portlet para exibicao do tempo
    """

class Assignment(base.Assignment):
    implements(ITempoPortlet)

    title = _(u'Tempo')

class Renderer(base.Renderer):

    _template = ViewPageTemplateFile('tempo.pt')
    
    @property
    def available(self):
        return len(self._data())
    
    def published_tempo_items(self):
        return self._data()
    
    @ram.cache(render_cachekey)
    def render(self):
        return xhtml_compress(self._template())
    
    @memoize
    def _data(self):
        //aqui esta retornando uma consulta ao catálogo

class AddForm(base.NullAddForm):

    def create(self):
        return Assignment()

2 - Adicionei o seguinte no configure.zcml
<plone:portlet
        name="portlets.Tempo"
        interface=".tempo.ITempoPortlet"
        assignment=".tempo.Assignment"
        renderer=".tempo.Renderer"
        addview=".tempo.AddForm"
        />

3 - Criei o arquivo tempo.pt dentro da pasta browser.

4 - Em profiles/default adicionei o arquivo portlets.xml

<?xml version="1.0" encoding="utf-8"?>
<portlets>
        <portlet addview="portlets.Tempo" title="Tempo" 
                description="A portlet which can render a listing of recent 
news">
                <for interface="plone.app.portlets.interfaces.IColumn" />
                <for interface="plone.app.portlets.interfaces.IDashboard" />
        </portlet>
</portlets>


Ao iniciar o plone o portlet tempo é exibido na lista de portlets,
porém ao adiciona-lo na página ele nao aparece. Inicialmente aparecia
uma mensagem dizendo q havia ocorrido um problema de renderização, mas
depois passou simplemente a nao carregar.

Deve estar faltando alguma coisa simples, porém estou por fora do
sistema de portlets do plone 3. Alguêm pode me ajudar?

--
Alexandre Marinho
Consultor Pleno - ITEC/AL

Responder a