lunes, 11 de mayo de 2009

Customizando una portal tool

Cuando se trabaja en sitios Plone, a menudo se trabaja desde la interfaz ZMI (Zope Management Interface). Por consiguiente, a veces es necesario cambiar el funcionamiento de alguna de estas 'tools' que fueron provistas por algun producto.
Yo voy a mostrarlo tomando como ejemplo la tool provista por el producto que integra Plone con Salesforce, Product.salesforcebaseconnector.
Aqui como:

1) Agregar un archivo toolset.xml a nuestro profile/default (o el profile que esten usando) con lo siguiente

<?xml version="1.0"?>
<tool-setup>
<required tool_id="portal_salesforcebaseconnector"
class="salesforce.patch.salesforcebaseconnector.SalesforcePatched"/>
</tool-setup>
2) En un archivo python (salesforcebaseconnector) lo siguiente:

from Products.salesforcebaseconnector.salesforcebaseconnector import SalesforceBaseConnector
from Products.PageTemplates.PageTemplateFile import PageTemplateFile

from AccessControl import ClassSecurityInfo
from Products.CMFCore.permissions import ManagePortal


class SalesforcePatched(SalesforceBaseConnector):

def __init__(self):
super(SalesforcePatched, self).__init__()

security = ClassSecurityInfo()
security.declareProtected(ManagePortal, 'manage_config')

manage_config = PageTemplateFile('www/manageAuthConfigCustom', globals() )

3) Por ultimo en la carpeta www, un manageAuthConfigCustom.zpt con el template customizado

4) Instalar el producto y la tool se reeinstalara (cuidado aca, si habia datos que la tool mantenia, como en este caso el login a salesforce, todo eso se pierde, y hay que volver a cargarlos)

En realidad, en la clase SalesforcePatched piso un par de metodos de SalesforceBaseConnector, que no vienen al caso ahora.

Espero que a alguien le sirva esto.

Cheers

EDIT: Gracias Santiago por el comentario para poder meter codigo xml en el post y para colorear, aguante Kate :D