2012-08-27 9 views
7

Estoy trabajando en un complemento de Plone que requiere un formulario de edición alternativa revisado para el contenido de Destreza. Necesito poder mostrar solo una parte del formulario de edición en una superposición de AJAX (usando la interfaz de usuario de JQuery, no las herramientas de JQuery, por lo que parece más razonable hacer esto en el servidor que filtrar en JavaScript) **.Plantilla de formulario de edición personalizada de Destreza en Plone?

La documentación de Dexterity Developer's Guide parece indicar que puedo tener una plantilla personalizada usando macros. Sin embargo, falta algo de esta sección, tal vez un contexto crítico para las personas que no usan grok para vincular las vistas, pero quizás algo más. La creación de una vista de solo plantilla falla (no puede encontrar nombres de la clase de vista, obviamente) y el intento de vincular una plantilla personalizada en ZCML a la clase de vista de stock o a una subclase de la misma falla (la plantilla se ignora a favor del plantilla de stock).

Mis objetivos:

  1. Tiene una edición para la que está envuelto en una plantilla desnuda que esencialmente sólo incluye el contenido dentro de la div #content.
  2. No quiero simplemente un renderizado z3c.form sin envolver, también necesito una plantilla mínima para envolverlo, simplemente no es el stock de gestores de viewlets de Plone y furntiture.

lo que no funciona:

from plone.dexterity.browser.edit import DefaultEditForm 
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile 

class MyEditForm(DefaultEditForm): 
    index = ViewPageTemplateFile('my_edit_template.pt') 

El equivalente ZCML (que define el índice de magia en tiempo de ejecución) también no funciona aquí.

¿Cómo puedo insertar una plantilla personalizada en un formulario de edición?

** Estoy trabajando en la compatibilidad de Solgema.fullcalendar con el tipo basado en Dexterity de plone.app.event. Solgema.fullcalendar utiliza jQuery UI para ventanas emergentes, no plone.app.jquerytools superposición de ayudantes; para consistencia, tiene sentido tener esta vista mínima y no intentar imitar el mecanismo de filtro en JavaScript de las superposiciones normales de Plone.

+0

En retrospectiva, esta habría sido una pregunta más fácil de responder si hubiera proporcionado una muestra de código de lo que intentó que pensó que debería funcionar pero no lo hizo. –

+1

De acuerdo, se agregó un ejemplo de código a OP y para responder (pendiente de revisión). – sdupton

Respuesta

9

z3c.form busca la plantilla como el atributo template, por lo que necesita para asignar la plantilla personalizada al atributo template de su edición subclase forma, en lugar de index (que es donde la plantilla ZCML atributo pone).

from plone.dexterity.browser.edit import DefaultEditForm 
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile 

class MyEditForm(DefaultEditForm): 
    template = ViewPageTemplateFile('my_edit_template.pt') 
Cuestiones relacionadas