Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
Linux Day 2007 - Plone e Zope 3: dietro le quinte http://localhost:8088/Plone/linux-day-2007/linux-day-2007-plone-...
1 of 7 3-11-2007 12:56
Linux Day 2007 - Plone e Zope 3: dietro le quinteLa nuova versione di Plone include nuovefunzionalità e nuovi prodotti. L’introduzione di Zope3 permette di portare plone al livello dei miglioriframework applicativi. Un’overview sul cms, sullesue estensioni e sulla comunità.Massimo Azzolini
Zope 3Zope 3 separa nettamente i contenuti dalla logica applicativa e dalla presentazione
Zope 3 e la prima versione di Zope completamente basata su una architettura acomponenti
Cosa e stato introdottointerfacce
adattatori
le “view„
nuovo modello degli eventi
configurazioni in file zcml
Cosa e stato introdotto, ancorai18n,
testing, (demo)
schema,
utilities,
...
Linux Day 2007 - Plone e Zope 3: dietro le quinte http://localhost:8088/Plone/linux-day-2007/linux-day-2007-plone-...
2 of 7 3-11-2007 12:56
Zope 3 - interfacceIl concetto di “interfaccia„ e del tutto simile a quello diinterfaccia in un altro linguaggio ad oggetti:
Zope 3 - Adapter - generaleUn adattatore e un componente che "converte" un oggetto con una certa interfaccia(o un set di interfacce) in qualcos'altro.
Supponiamo di voler incastrare i due solidi di prima nel foro quadrato (ricordi di bambino...)
Zope3 mi permette di scrivere due adattatori da ICubo e ICilindo a IForoQuadrato
Con Zope2 occorreva spesso fornire metodi speciali alle classi del cubo e del cilindro.
class ICilindro(Interface): """ questa interfaccia rappresenta un cilindro """
class ICubo(Interface): """ questa interfaccia rappresenta un cubo """
class IForoQuadrato(Interface): """ questa interfaccia rappresenta un foro di forma quadrata"""
def inserisciOggetto(): """ fa passare un un oggetto nel foro """
Linux Day 2007 - Plone e Zope 3: dietro le quinte http://localhost:8088/Plone/linux-day-2007/linux-day-2007-plone-...
3 of 7 3-11-2007 12:56
Zope 3 - Adapter - cubo2quadrato
Zope 3 - Adapter - cilindro2quadrato
Zope 3 - Adapter - usiamolo!
Zope 3 - ViewLe view sono un tipo particolare di adapter:
adattano il componente che stiamo guardando alle esigenze dell'utente.
estendono il componente con caratteristiche di presentazione fornendo “visioni”differenti delle stesse informazioni
Esempio: Cerchiamo in un sito Plone la frase “ajax” e ...
class Cubo2quadrato(object): implements(IForoQuadrato) adapts(ICubo) def inserisciOggetto(): """ non devo fare nulla: si incastra! """
class Cilindro2quadrato(object): implements(IForoQuadrato) adapts(ICilindro) def inserisciOggetto(): """ questo metodo rende deformabile il cilindro fino a comprimerlo e a farlo passare attraverso il foro """
per ottenere l'oggetto adattato:obj_adattato = IforoQuadrato(obj_da_adattare) """ il sistema si preoccupa di cercare l'adapter giusto """obj_adattato.inserisciOggetto()
Linux Day 2007 - Plone e Zope 3: dietro le quinte http://localhost:8088/Plone/linux-day-2007/linux-day-2007-plone-...
4 of 7 3-11-2007 12:56
Zope 3 - viewSi ottiene un elenco in XHTML...
Zope 3 - view... ma e anche disponibile la versione RSS delle stesse info
Linux Day 2007 - Plone e Zope 3: dietro le quinte http://localhost:8088/Plone/linux-day-2007/linux-day-2007-plone-...
5 of 7 3-11-2007 12:56
Zope 3 - view... ma si puo avere anche una versione google map!
Linux Day 2007 - Plone e Zope 3: dietro le quinte http://localhost:8088/Plone/linux-day-2007/linux-day-2007-plone-...
6 of 7 3-11-2007 12:56
Zope 3 – Il modello degli eventiComponenti possono informare altri componenti che “qualcosa” e successo
Un Evento e un componente che definisce questo “qualcosa”.
Zope 3 – Il modello degli eventiIl meccanismo e semplice
Il componente A notifica che l'evento E e avvenuto:
Il componente B sottoscrive un suo metodo ad essere avvertito quando E accade:
Zope 3 – Zope Configuration Markup LanguageZope3 utilizza un sistema di configurazione basato su XML per la registrazione dei componenti.
Il vantaggio e quello di separare la parte di configurazione dalla parte diimplementazione.
Diventa piu semplice abilitare e disabilitare componenti senza modificare il codicepython.
View, Adapter, Subscribers vengono gestiti in questo modo
OK, ho finito! Avete domande?
notify(EventRaised(obj))
<subscriber handler=".B.manageEvent"/>
@adapter(IObjectManagedByB, IEventRaised) def manageEvent(obj, event): ...
Linux Day 2007 - Plone e Zope 3: dietro le quinte http://localhost:8088/Plone/linux-day-2007/linux-day-2007-plone-...
7 of 7 3-11-2007 12:56
I miei riferimenti:
Massimo Azzolini
e-mail: [email protected] / [email protected]
irc plone: massimo_azzolini
Linux Day 2007 - Plone e Zope 3: L'evoluzione del CMS http://localhost:8088/Plone/linux-day-2007/linux-day-2007-plone-...
1 of 5 3-11-2007 12:54
Linux Day 2007 - Plone e Zope 3: L'evoluzione del CMSLa nuova versione di Plone include nuovefunzionalità e nuovi prodotti. L’introduzione di Zope3 permette di portare plone al livello dei miglioriframework applicativi. Un’overview sul cms, sullesue estensioni e sulla comunità. Imolug partecipaallo sviluppo di bersabea: un tool per crearenetwork in plone.Massimo Azzolini
Prima di partire, facciamo un punto
Di cosa parliamo in quest'oretta?
Focus sulle informazioni – lo strumento e al servizio delle idee, non il viceversa
Parliamo di comunita – open knowledge, open development, open minds...
Parliamo di architetture – flessibili, riusabili, solide
Parliamo di software – Plone3 – Zope3 – KSS
Perche mi interesso a Plone?Mi chiedono che le info siano gestite velocemente
Condivido! Credo che la conoscenza debba muoversi rapida dapersona a persona, da organizzazione a organizzazione
Strumenti adattabili
Poche storie: occorre dotarsi degli strumenti software facilmente riadattabili allo scopo!
Linux Day 2007 - Plone e Zope 3: L'evoluzione del CMS http://localhost:8088/Plone/linux-day-2007/linux-day-2007-plone-...
2 of 5 3-11-2007 12:54
Gli strumenti che ho scelto nel tempo1992 - 1995 - HTML + CGI
C'erano forse alternative?
1996 - oggi - Lotus Domino
Groupware: persone e documenti. Rapid prototyping.
2003 - oggi - Zope e Plone –
Open! Community! CMS moderno e completo
Domani:
Zope3 e Plone3! - la nuova architettura “rocks„!
Parliamo di comunita
Parliamo di comunitaLa comunita Plone sono gli “sprinter„
La comunita Plone sono gli “zopisti„ e i “pythonisti„ (in senso lato)
La comunita Plone sono le aziende: italiane e internazionali
La comunita Plone sono gli utilizzatori finali
Linux Day 2007 - Plone e Zope 3: L'evoluzione del CMS http://localhost:8088/Plone/linux-day-2007/linux-day-2007-plone-...
3 of 5 3-11-2007 12:54
E come si interagisce con la comunita?Direttamente agli eventi regionali
Chat - irc.freenode.net
zope-it, ploneitalia, plone, kss, ...
Mailing list
http://www.nabble.com/Plone-f6741.html (plone-users)
http://www.nabble.com/Plone---Italy-f21728.html (plone-italia)
Conferenze mondiali
La comunita guida lo sviluppoLe esigenze nascono dalla comunita e sono raccolte dal core degli sviluppatori(framework team):
PLIP – PLone Improvement Proposal
La comunita stessa (aziende e clienti) rilascia prodotti.
I migliori possono essere inclusi nella successiva release.
Un paio di esempi?
KSS – Kinetic Style Sheet
CMFEdition – Versioning e staging
CMFPlacefulWorkflow – un workflow per ogni differente oggetto
La release 3.0 - 1/4Versioning
Modifiche in linea con Ajax
Live Search per tutti i tipi di file e contenuti
Rules!
Portlet
Linux Day 2007 - Plone e Zope 3: L'evoluzione del CMS http://localhost:8088/Plone/linux-day-2007/linux-day-2007-plone-...
4 of 5 3-11-2007 12:54
La release 3.0 - 2/4Controllo di Integrita automatico
Working copy
Lock/unlock di un documento
Collaborazione e condivisione ancora piu facile
La release 3.0 - 3/4Ancora migliorato il motore di workflow (Placeful Workflow)
Autenticazione del back-end modulare (LDAP, OpenID)
Collection: AKA Smart Folder
“Modalità presentazione” dei contenuti
Supporto del protocollo Sitemap
La release 3.0 - 4/4Supporto di diversi markup
Markdown
Textile
Structured Text
Restructured Text
Plain Text
Navigazione automatica con prec./succ.
Plone 3.5 – idee dalla roadmap
Linux Day 2007 - Plone e Zope 3: L'evoluzione del CMS http://localhost:8088/Plone/linux-day-2007/linux-day-2007-plone-...
5 of 5 3-11-2007 12:54
Sono solo proposte allo stato attuale!
Better media file handling (Video, audio)
Expanded Document Management capabilities
Composite Pages
Ship Plone with support for the most common auth setups (LDAP, Radius, NTLM)
Improved email framework (incoming email handling)
Non ho finitocontinua...
Linux Day 2007 - Plone e Zope 3: Le estensioni http://localhost:8088/Plone/linux-day-2007/linux-day-2007-plone-...
1 of 4 3-11-2007 12:55
Linux Day 2007 - Plone e Zope 3: Le estensioniPlone 3, come anche i suoi predecessori arriva assieme a 600+ prodotti. Massimo Azzolini
KSS sugli scudiKSS
Kinetic Style Sheet
http://www.kukit.org (Godefroid Chapelle, Bala tz Ree )
Perche ve lo racconto?
E' un approccio assolutamente differente all'uso di tecniche ajax-like
Separa notevolmente la parte di design dalla parte di sviluppo
Al designer, non serve conoscere Javascript ne tantomento ajax
E' estremamente semplice e veloce utilizzare KSS per trasformare un portaletradizionale in uno “web 2.0”
E' comunque accessibile
E' built-in in Plone 3!
KSS – lo spirito del progettoKSS si basa su due capisaldi:
Sintassi CSS-like: tutti i designer di portali la conoscono
Python per la parte server: se sviluppi in Zope/Plone, python lo conosci...
KSS e una libreria javascript che che utilizza AJAX
KSS include e permette l'inclusione di librerie 3rd_party (script.aculo.us, mochikit, ecc.)
KSS, potenzialmente, puo essere utilizzato con un framework differente daZope/Plone
Linux Day 2007 - Plone e Zope 3: Le estensioni http://localhost:8088/Plone/linux-day-2007/linux-day-2007-plone-...
2 of 4 3-11-2007 12:55
KSS: design
KSS - basics: il client
KSS - basics: il server
vedi il quadro globale
.inlineEditable:click { action-server: replaceField; replaceField-fieldname: kssAttr('atfieldname', true); replaceField-macro: kssAttr('macro', true); }
form.inlineForm input[name=kss-save]:click { evt-click-preventdefault: true; action-server: saveField; saveField-fieldname: kssAttr('atfieldname', true); saveField-value: currentForm(); saveField-macro: kssAttr('macro', true); }
def replaceField(self, fieldname, templateId, macro): """ kss commands to replace the field value by the edit widget """ parent_fieldname = "parent-fieldname-%s" % fieldname html = self.renderEditField(fieldname, templateId, macro) html = html.strip() ksscore = self.getCommandSet('core') ksscore.replaceHTML(ksscore.getHtmlIdSelector(parent_fieldname), html) ksscore.focus("#%s .firstToFocus" % parent_fieldname) return self.render()
Linux Day 2007 - Plone e Zope 3: Le estensioni http://localhost:8088/Plone/linux-day-2007/linux-day-2007-plone-...
3 of 4 3-11-2007 12:55
Altri prodottiPlone4Artist: multimedia e calendaring!
PloneGov: prodotti per la P.A.
PloneSurvey: un tool di sondaggi di alto profilo, estendibile. Tradotto recentemente dal Comune di Arezzo.
PloneBooking: prenotazioni on line. Workflow specializzati.
Content Panel: per creare il layout delle sotto aree.
Altri prodottiPlone.relations: relazioni arbitrarie tra persone, contenuti, sistemi. Si può crearedall'organigramma al social network, dai miei preferiti al desktop personalizzato. Manca l'interfaccia... ovviamente
Membrane: tutto si può autenticare! Un dipendente, un dirigente, un lavoratoreesterno, un cittadino, un ufficio... ognuno è “fatto” in modo diverso, non ha solo“accessi” diversi.
Plone Article (e MultiPA): per creare pagine composite in stile giornalistico.
Altri prodottiFileStorage: per salvare tutti i contenuti documentali su un file system e non nel database.
PloneGazette: la newsletter
PloneBoard: il forum
SignupSheet: per le iscrizioni ad eventi/seminari ecc. Include funzionalità diquestionario pre-iscrizione.
def saveField(self, fieldname, value, templateId, macro): """ This method saves the current value to the field. and returns the rendered view macro."""
Linux Day 2007 - Plone e Zope 3: Le estensioni http://localhost:8088/Plone/linux-day-2007/linux-day-2007-plone-...
4 of 4 3-11-2007 12:55
Vari prodotti per le “discussion” sui contenuti
Altri prodottiQuills, EasyBlog e altri: il blog in plone
TagCloud e EasyRating per migliorare l'accesso alle informazioni
Poi e PloneCollectorNG: sistemi di ticketing di diverso livello di personalizzazione
SmartPrintNG: il contenuto Plone esportato in PDF, ODF, DOCX, RTF e WML
Altri prodottiGetPaid: il sistema di commercio elettronico.
Integrazioni con GoogleMap (ne esistono di vari tipi)
PressRoom: per la rassegna stampa
LinguaPlone: per il supporto alle traduzioni.
Ok, ancora un attimo di pazienzacontinua...