2012-05-01 9 views
6

He estado trabajando en una aplicación de plone basada en la destreza. He creado un par de tipos nuevos. Esto es lo que hice para activar los comentarios en un tipo de contenido destreza específica denominada "activity_report":No se pueden activar las discusiones en los tipos de Destreza Plone (carpeta)

En el Panel de Control de Plone

En la sección Discusión He activado la siguiente:

  • habilitar globalmente los comentarios
  • habilitar los comentarios anónimos

En el Tipos Sección Elegí el tipo de "Informe de actividad" del menú desplegable y habilité la opción "Permitir comentarios".

En el sistema de archivos

En el activityreport.xml archivo IVR:

<property name="allow_discussion">True</property> 

he reiniciado la instancia e incluso volver a instalar el producto, pero no puedo activar la sección de comentarios en el tipo de destreza

Vale la pena mencionar que un tipo estándar (por ejemplo, Página) puede tener activado el módulo de discusión.

¿Hay algo que me falta?

+1

Creo que mi problema también está relacionado con el hecho de que mi tipo de contenido es de carpeta. ¿Cómo permito la discusión en un tipo de carpeta? – jcuot

Respuesta

3

plone.app.discussion actualmente deshabilita los comentarios para todos los contenedores (consulte https://dev.plone.org/ticket/11245 para la discusión).

que utiliza un parche mono como la siguiente en un proyecto a un cortocircuito en el proceso normal y asegúrese de que al comentar estaba habilitada para mi folderish tipo de contenido:

from Acquisition import aq_inner 
from Products.highcountrynews.content.interfaces import IHCNNewsArticle 
from plone.app.discussion.conversation import Conversation 
old_enabled = Conversation.enabled 
def enabled(self): 
    parent = aq_inner(self.__parent__) 
    if parent.portal_type == 'my_portal_type': 
     return True 
    return old_enabled(self) 
Conversation.enabled = enabled 

donde 'my_portal_type' es, por supuesto , el tipo de portal por el que desea habilitar los comentarios.

+1

Gracias David! Esta parece la solución que adoptaré. También estoy considerando convertir los tipos en documentos simples. En mi caso, la única ventaja de usar tipos de carpetas habría sido mantener juntos documentos relacionados en el contenedor. – jcuot

2

La respuesta de David no es precisa. La clase que se monkeypatched es plone.app.discussion.browser.conversation.ConversationView:

from Acquisition import aq_inner 
from plone.app.discussion.browser.conversation import ConversationView 
old_enabled = ConversationView.enabled 

def enabled(self): 
    parent = aq_inner(self.__parent__) 
    if parent.portal_type == 'My_type': 
     return True 
    return old_enabled(self) 

Funciona para Plone 4.2 como mínimo. Sin embargo, gracias David por la pista.

2

Como ya indicaron David y Victor, puede anular el método de habilitación de la clase de conversación. Yo recomiendo usar el enfoque siguiente, que es un poco más limpio que el mono parchear las clases de conversación:

https://github.com/plone/plone.app.discussion/blob/master/docs/source/howtos/howto_override_enable_conversation.txt

También he añadido soporte para tipos de destreza para plone.app.discusión recientemente, por lo que tan pronto como hay una nueva versión que no se necesita para personalizar la clase de conversación por más tiempo:

https://github.com/plone/plone.app.discussion/commit/0e587a7d8536125acdd3bd385e880b60d6aec28e

Tenga en cuenta que este método es compatible con Al comentar sobre objetos folderish. No hay soporte para habilitar/deshabilitar el comentario de objetos DENTRO de un objeto de carpeta aún.

En caso de que quieren ser capaces de encender/apagar comentando con un campo de comportamiento/widgets:

https://github.com/plone/plone.app.dexterity/commit/0573df4f265a39da9efae44e605e3815729457d7

Se espera que esto hacerlo en la próxima versión plone.app.dexterity también.

+0

Buena solución ya que todos los cambios están fuera de cualquier paquete de huevos de Plone. El "howto_override_enable_conversation.txt" en su mayoría funcionó para mí. Antes de "si context.allow_discussion no es None", tuve que verificar si el atributo existe en contexto (o agregué un try, catch block). –

+0

@RyanAnderson ¿te importaría cambiar el howto y hacer una solicitud de extracción para que pueda actualizar los documentos? – tisto

1

Solucioné en configure.zcml:

<interface interface="Products.CMFPlone.interfaces.INonStructuralFolder" /> 

<class class="Products.PloneHelpCenter.types.Definition.HelpCenterDefinition"> 
    <implements interface="Products.CMFPlone.interfaces.INonStructuralFolder" /> 
</class> 

ACTUALIZACIÓN: esto no es una buena idea. Tuve problemas con el menú Agregar faltante para cada tipo de contenido con esta corrección.

Cuestiones relacionadas