Personal tools
Salva la compilazione dei form in contenuti Plone con uwosh.pfg.d2c

Salva i tuoi form!

Mar 04, 2013

Salva la compilazione dei form in contenuti Plone con uwosh.pfg.d2c

Panoramica sul prodotto Plone uwosh.pfg.d2c, un utile adattatore per PloneFormGen che memorizza in contenuti i form compilati

Il prodotto uwosh.pfg.(d)ata(2)(c)ontent implementa un adattatore per PloneFormGen (un generatore di form per Plone) che salva i dati del form in un'istanza di un determinato tipo di contenuto.

Il prodotto fornisce appunto un tipo di contenuto dinamico e universale per memorizzare i dati sottomessi attraverso un modulo PloneFormGen. Si tratta di una vera e propria copia persistente del modulo compilato dall'utente, che potrai gestire come un qualsiasi oggetto Plone.

I campi del contenuto generato saranno esattamente i campi del modulo che hai configurato!

Inoltre, una volta generato il contenuto a seguito della sottomissione del form, potrai controllare la sua visibilità e il suo accesso applicando su di esso un specifico workflow come per un normale tipo di contenuto.

I campi del modulo diventeranno i campi dell'oggetto creato: potrai quindi modificare il loro valore. Questa funzionalità è realizzata mediante schemaextender, che è stato usato nel prodotto uwosh.pfg.d2c per aggiungere i campi extra del modulo al tipo di contenuto.

Ora vediamo come applicare l'adattatore ai form in tre mosse e come configurare i campi principali che lo caratterizzano.

Uso dell'adattatore

Il prodotto uwosh.pfg.d2c aggiunge un elemento "Save Data to Content Adapter" al menù a discesa "Aggiungi nuovo..." per un form di PloneFormGen.

Una volta abilitato l'adattatore, quando un utente invia un modulo verrà creato un nuovo contenuto con i dati inseriti nel form.

Vediamo in dettaglio come applicare l'adattatore:

  1. aggiungi il form, e con "QuickEdit" inserisci tutti i campi di interesse
  2. aggiungi l'adattatore al form
  3. attiva l'adattatore: scegli "QuickEdit" sul form e, nella lista delle azioni, seleziona l'adattatore appena aggiunto.

Troverai i contenuti generati dopo la compilazione del form nella cartella dell'adattatore.

Campi di configurazione dell'adattatore

Il tipo di contenuto dell'oggetto generato

Il campo "Saved entry content type" si riferisce al portal type dell'oggetto usato per il salvataggio dei dati all'invio dei moduli.

A questo scopo il prodotto fornisce un nuovo tipo di contenuto "FormSaveData2ContentEntry", ma è possibile clonare "FormSaveData2ContentEntry", per usare un proprio tipo personalizzato, in tre modi:

  • tramite l'interfaccia fornita dal prodotto, alla creazione/modifica dell'adattatore, facendo click sul bottone "Add new type"
  • copiando manualmente il tipo "FormSaveData2ContentEntry" nel portal_types tool (via ZMI) e poi rinominarlo in modo appropriato
  • aggiungendo il clone del tipo "FormSaveData2ContentEntry" al types tool via codice genericsetup profile.

Una volta creato, il nostro nuovo tipo di contenuto sarà presente tra le opzioni del save data adapter; è necessario selezionarlo esplicitamente e quindi tornare in modifica dell'adattatore se lo abbiamo creato con gli utimi due metodi; altrimenti verrà applicato il valore di default FormSaveData2ContentEntry.

I campi relativi al titolo

Il campo "Title Field" ti permette di scegliere tra i vari campi del form quale sarà il campo da cui verrà preso il titolo dell'oggetto generato.

Se per il titolo del futuro oggetto non vuoi usare nessuno dei campi del form, puoi utilizzare un'altra funzionalità dell'adattatore: "Dynamic title override", che ti permette di inserire un'espressione TALES valutata al momento della generazione dell'oggetto per determinare dinamicamente il titolo. In questo modo puoi attribuire al contenuto titoli più complessi, come ad esempio il nome del form (risalendo all'oggetto padre) seguito dalla data di creazione.


python:'%s %s' % (here.aq_inner.aq_parent.aq_parent.Title(),here.created().strftime('%d/%m/%Y'))

Come ultimo, il campo dell'adattatore "Nice Ids" ti consente di generare per l'oggetto un nome breve partendo dal titolo del form.

Permessi e sicurezza

La compilazione di un form può essere effettuata anche da un utente anonimo, se tale modulo è pubblico.

Tuttavia, se l'invio del form è seguito dalla creazione dell'oggetto corrispondente, come nel nostro caso, l'anonimo non ha i permessi sufficienti per creare un oggetto e di conseguenza per compilare il form.

Perciò l'adattatore prevede un campo "Avoid Security Checks" per evitare i controlli di sicurezza nella creazione di un oggetto, consentendo quindi anche agli utenti anonimi di completare il form.

Un altro modo per fornire questa possibilità senza evitare i controlli di sicurezza, è modificare il workflow e i permessi del tipo di contenuto generato a favore dell'utente anonimo.

In conclusione

Il prodotto ti fornisce un adattatore per PloneFormGen e un nuovo tipo di contenuto che sarà quello generato una volta sottomesso il form su cui hai applicato l'adattotore. Puoi decidere di utilizzare quel tipo oppure puoi personalizzarlo clonandolo.

Puoi inoltre configurare il punto da cui verrà preso il titolo e permettere anche agli utenti anonimi di usare il tuo form, senza che la creazione del contenuto fallisca per permessi insufficienti.

Personalmente ho trovato molto utile uwosh.pfg.d2c e ringrazio l'autore del prodotto Nathan Van Gheem e i contributori Author T. Kim Nguyen, Lurker Petri Savolainen, che mi hanno fornito molte delle funzionalità di cui avevo bisogno. Se vi sembra che faccia anche al caso vostro, potete appronfondire con altra documentazione.

Anche se il prodotto è legato ad Archetypes, il framework che Plone sta lentamente sostituendo con Dexterity e in futuro è possibile che prodotti come questo non servano più, al momento è ancora un'ottima risorsa!


La foto in testata è di Images_of_Money

Filed under: , , ,
comments powered by Disqus