Estendere con Zope 2
difficile
Un nuovo tipo di contenuto
Partiamo con la creazione di un tipo di contenuto totalmente nuovo. Con ArchGenXML se ne può creare facilmente uno di base, che possiamo chiamare AudioEntry, con tutte le caratteristiche che servono. Ma, di nuovo, altre persone hanno già pensato molto su cosa una voce di un weblog dovrebbe contenere e cosa dovrebbe fare. Si introdurrebbe un'altra applicazione per il weblog, che Plone in realtà non necessita e che è in realtà mantenuta interamente da Maurits e dal suo team. In alcune occasioni anche questa opzione torna utile, però...
I tempi passati di Zope 2
La seconda opzione disponibile è estendere Quills con Zope 2: si può creare una classe AudioEntry che erediti dalla WeblogEntry di Quills. Se davvero questa classe offre qualcosa di nuovo, questa potrebbe essere una scelta profittevole. Un buon esempio è RichDocument, che estende lo schema di ATDocument al fine di aggiungere alcuni attributi. La classe eredita da ATDocument e usa quindi le funzioni già definite per quel documento base, aggiungendone alcune che possono essere utili. Per ulteriori informazioni si può consultare il tutorial in inglese di Martin Aspeli Extending ATContentTypes.
Ma come ciò può essere utile per questo caso d'uso, "Estendere Quills"? AudioEntry erediterebbe da WeblogEntry e la estenderebbe con due attributi per i link. Ma non è tutto qui. Per ora un Weblog Quills può solo contenere cartelle e WeblogEntries. Aggiungendo AudioEntry non si ha ancora in mano niente. Certo ci si può lavorare per cercare di raggiungere le funzionalità che si desiderano, ma potrebbe anche essere necessario riscrivere la classe Weblog con la classe AudioWeblog, tipo di operazione che può facilmente sfuggire di mano e risultare in una lunghissima serie di altre operazioni di riscrittura. Inoltre, se qualcuno avesse un'idea simile e introducesse una VideoWeblogEntry, questi due prodotti sarebbero incompatibili.
Certamente ci sono dei casi d'uso, come RichDocument, in cui utilizzare Zope 2 porta a ottimi risultati. Ma in questo caso si vogliono solo aggiungere due link. Ci sarà un via più facile e meno intrusiva per raggiungere questo obiettivo?
