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

1 comentario:

Santiago dijo...

Hola Frapell. Para el código, tendrías que meterlo entre tags <pre>, así de paso vas a solucionar el problema de la indentación que no se muestra en el código python.
Lo que podés hacer también, es exportarlo como HTML desde kate, así te hace el coloreado de sintaxis.

Saludos!