2012-08-27 15 views
7

Sto lavorando a un componente aggiuntivo Plone che richiede un modulo di modifica alternativo per la Dexterity. Devo essere in grado di visualizzare solo una parte del modulo di modifica in una sovrapposizione AJAX (usando l'interfaccia utente di JQuery, non gli strumenti di JQuery, quindi sembra più ragionevole fare questo lato server piuttosto che filtrare in JavaScript) **.Modello di modulo di modifica della destrezza personalizzato in Plone?

La documentazione da Dexterity Developer's Guide sembra indicare che posso avere un modello personalizzato utilizzando le macro. Manca però qualcosa in questa sezione, forse un contesto critico per chi non usa grok per unire le viste, ma forse qualcos'altro. La creazione di una vista solo modello non riesce (non è possibile trovare i nomi dalla classe vista, ovviamente), e il tentativo di associare un modello personalizzato in ZCML alla classe di visualizzazione o alla sottoclasse di entrambi fallisce (il modello viene ignorato a favore del modello di riserva).

I miei obiettivi:

  1. Avere una modifica per questo è avvolto in un modello nudo che comprende essenzialmente solo il contenuto all'interno del div #content.
  2. Non voglio solo un rendering z3c.form non disposto, ho bisogno di un template minimale per avvolgerlo anche - non solo i gestori di viewlet Plone e il furntiture.

cosa non funziona:

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

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

Lo ZCML equivalente (che definisce l'indice con la magia runtime), inoltre, non lavorare qui.

Come posso inserire un modello personalizzato in un modulo di modifica?

** Sto lavorando sulla compatibilità Solgema.fullcalendar con il tipo basato su Destrezza di plone.app.event. Solgema.fullcalendar utilizza l'interfaccia utente di jQuery per i popup, non gli helper di overlay plone.app.jquerytools; per coerenza, ha senso avere questa vista minimale e non tentare di imitare il meccanismo di filtro in JavaScript delle normali sovrapposizioni di Plone.

+0

In retrospettiva, sarebbe stata una domanda più facile rispondere se avessi fornito un esempio di codice di ciò che hai provato che pensavi dovesse funzionare ma non lo fosse. –

+1

Concordato, aggiunto esempio di codice a OP e risposta (in attesa di revisione). – sdupton

risposta

9

z3c.form cerca il modello come l'attributo template, quindi è necessario assegnare il modello personalizzato all'attributo template del modulo di modifica sottoclasse, piuttosto che index (che è dove il modello ZCML attributo lo mette).

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

class MyEditForm(DefaultEditForm): 
    template = ViewPageTemplateFile('my_edit_template.pt') 
Problemi correlati