Linux Day 2007 - Plone e Zope 3: dietro le quinte

16
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 quinte La nuova versione di Plone include nuove funzionalità e nuovi prodotti. L’introduzione di Zope 3 permette di portare plone al livello dei migliori framework applicativi. Un’overview sul cms, sulle sue estensioni e sulla comunità. Massimo Azzolini Zope 3 Zope 3 separa nettamente i contenuti dalla logica applicativa e dalla presentazione Zope 3 è la prima versione di Zope completamente basata su una architettura a componenti Cosa è stato introdotto interfacce adattatori le “view„ nuovo modello degli eventi configurazioni in file zcml Cosa è stato introdotto, ancora i18n, testing, (demo) schema, utilities, ...

Transcript of Linux Day 2007 - Plone e Zope 3: dietro le quinte

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...