+ All Categories
Home > Documents > Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca .

Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca .

Date post: 01-May-2015
Category:
Upload: prudenzio-contini
View: 218 times
Download: 3 times
Share this document with a friend
120
Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca www.tecnoteca.it www.tecnoteca.com
Transcript
Page 1: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

Introduzione a ZOPE e PLONE

a cura di Mauro Di Cecca

www.tecnoteca.it www.tecnoteca.com

Page 2: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

1. La storia di ZOPE

Nel 1996 l’azienda americana Digital Creation realizza uno strumento di sviluppo per il web chiamato Bobo che distribuisce come prodotto open source.

Nel 1997 realizza Principia, una potente e stabile piattaforma di sviluppo per applicazioni web, basata su Bobo, e la distribuisce come prodotto proprietario.

Nonostante l’alta qualità, Principia non riesce a trovare una giusta collocazione nel mercato già saturo degli Application Server.

Nel 1998 la Digital Creation decide di cercare capitale di rischio e l’esperto convocato consiglia la svolta strategica: riunire Bobo, Principia e i moduli del database in un unico prodotto da distribuire con codice aperto.

Nasce ZOPE che è l’acronimo di Z Object Publishing Environment.

A 6 anni di distanza si può giudicare vincente la scelta della Digital Creation.

© Tecnoteca srl 2004

Page 3: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

2. ZOPE: cos’è

• Zope (Z Objects Publishing Enviroment) è prodotto che aiuta nella creazione, nella gestione e nel servizio di complessi siti dinamici.Si utilizza ed amministra da un qualsiasi browser web attraverso una interfaccia omogenea.

• Più tecnicamente, è un framework per costruire applicazioni web. Applicazioni che utilizzano l'interfaccia web per presentare la loro interfaccia utente.

• Faremo quindi spesso riferimento a Zope come ad un web application server.

© Tecnoteca srl 2004

Page 4: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

3. Cosa fornisce ZOPE: i moduli

I principali moduli componenti di ZOPE che interagiscono fra di loro per fornire i servizi descritti sono i seguenti:

server web

database di oggetti

interfaccia di amministrazione

Integrazione con database relazionali

linguaggi di scripting

© Tecnoteca srl 2004

Page 5: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

4. L’architettura di ZOPE

L'architettura di Zope è contenuta in un unico blocco modulare nel quale è possibile sostituire ognuno degli elementi con un altro equivalente.

In questo modo non si è legati ad un particolare prodotto o produttore.

Attraverso il sistema ZEO, Zope è in grado inoltre di distribuire il carico di lavoro su più server.

© Tecnoteca srl 2004

Page 6: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

5. I servizi principali

Zope fornisce 3 servizi principali per lo sviluppo di applicazioni web:

potente gestione della collaborazione

gestione ed organizzazione dei contenuti

gestione ed organizzazione delle componenti web

© Tecnoteca srl 2004

Page 7: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

6. Caratteristiche Object Oriented

Zope è implementato principalmente in linguaggio Python, da cui ne eredita il completo orientamento agli oggetti.

Un oggetto di Zope ha in genere uno dei seguenti ruoli:. contenuto. presentazione. logica

La 'URL' è quindi un percorso in un insieme di contenitori, la cui struttura gerarchica viene mappata automaticamente sulla base dell'id dell'oggetto.

Il tutto viene gestiti internamente dallo ZODB (Zope Object DataBase), un database transazionale ad alto livello.

© Tecnoteca srl 2004

Page 8: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

7. Vantaggi nell’utilizzo di ZOPE

© Tecnoteca srl 2004

I vantaggi nell’utilizzo di Zope sono:

• gestione dinamica dei contenuti

• funzioni di ricerca avanzate

• integrazione con db esterni

• workflow

• editing remoto via browser

• ambiente integrato

• riutilizzo del codice

• versioning

• exporting e backup

• localizzazione

• vasta comunità di sviluppatori

• gestione integrata della sicurezza

Page 9: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

8. Caratteristiche principali

Le caratteristiche principali di Zope sono:

• utilizzo su piattaforme diverse

• organizzazione in gerarchie di oggetti

• database object oriented interno

• web/ftp server interno

• prodotti sviluppati già pronti

© Tecnoteca srl 2004

Page 10: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

9. Installazione

© Tecnoteca srl 2004

Zope, è un progetto OpenSource, ed è scaricabile dal sito http://www.zope.org.

Una volta scaricato, nel caso di versione per windows, lo si installa con il classico 'doppio-click'.

Per quanto riguarda la versione Linux, la procedura è leggermente più elaborata.

La versione stabile attuale, rilasciata il 2004-02-11, è la 2.7.0.

Page 11: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

10. attivazione

Di default Zope si mette in ascolto sulla porta 8080 (servizio http) e sulla porta 8021 (servizio ftp).

E' comunque possibile far servire Zope da altri webservers (Microsoft IIS, Apache e altri).

Per farlo partire basta cliccare sull'icona messa sulla barra di start di Windows.

© Tecnoteca srl 2004

Page 12: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

11. utenti e folders

I 2 utenti iniziali sono admin e access.

I folders più importanti sono:

products (riservato ai prodotti aggiuntivi)

extensions (riservato agli script python)

import (riservato ai file .zexp per l’importazione)

var

© Tecnoteca srl 2004

Page 13: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

12. L’interfaccia utente

Per accedere alla ZMI (Zope Management Interface) è

sufficiente aprire il sito con suffisso '/manage', oppure

tramite il link Zope Management Interface presente nella

pagina di default una volta installato Zope.

Vediamo brevemente le componenti di default costituenti

la ZMI iniziale.

© Tecnoteca srl 2004

Page 14: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

13. ZMI - Il pannello di controllo

Come dice il nome stesso, nel pannello di controllo è possibile gestire il sistema di base.

Le sezioni maggiormente utilizzate sono le seguenti:

• Database Management:da dove è possibile monitorare l'attività del sito, gestire/ripulire la cache e sopratutto minimizzare l'occupazione del database.

• Product Management:dove vengono visualizzati tutti i prodotti e/o le componenti presenti ed installate nel sistema.

© Tecnoteca srl 2004

Page 15: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

14. ZMI – Lo User Folder (act_users)

Nello User Folder vengono descritti gli utenti che sono stati definiti, ed è possibile aggiungerne di altri, o modificare quelli esistenti.

Aggiunta di nuovi utenti

Modifica utenti

Assegnazione dei ruoli

© Tecnoteca srl 2004

Page 16: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

15. ZMI – methods e page templates

© Tecnoteca srl 2004

Methods:

index_html standard_error_message standard_html_header standard_html_footer

Page templates:

standard_template.pt

Page 17: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

16. ZMI – altri oggetti

© Tecnoteca srl 2004

Altri interessanti oggetti presenti sono:

error_log

session Data Manager

temp_folder

Page 18: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

17. ESEMPIO: Aggiunta di nuovi contenuti

In alto a destra è presente un drop-down menu contenente tutti i prodotti installati e di default che possono essere aggiunti nel sistema.

Basta semplicemente scegliere l'oggetto che si desidera aggiungere ed inserirlo.

Una volta inserito si può personalizzarlo e aggiungergli proprietà.

Ogni oggetto inserito diventa una URL del sito.

La navigazione avviene in maniera del tutto analoga alla navigazione a folder di Windows®.

© Tecnoteca srl 2004

Page 19: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

18. ZMI - funzioni di copia/incolla - import/export – ecc.

Le funzioni di base che si possono applicare agli oggetti visualizzati nella ZMI sono:

Rinomina Taglia Copia Incolla Cancella seleziona tutto import/export

© Tecnoteca srl 2004

Page 20: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

19. Sicurezza

© Tecnoteca srl 2004

La sicurezza di solito comprende due concetti fondamentali: l'autenticazione e l'autorizzazione dell'utente.

Esse consistono rispettivamente nel riconoscimento dell'utente e nella determinazione di che cosa l'utente possa fare all'interno del sistema

Si noti che Zope fa una netta distinzione fra utilizzare e gestire una risorsa (o applicazione).

Possiamo suddividere l'aspetto sicurezza sui seguenti punti:

- autenticazione e autorizzazione- gestione della sicurezza

Page 21: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

20. Autenticazione e autorizzazione

© Tecnoteca srl 2004

L'account degli utenti viene gestito tramite particolari folders, chiamati User Folders

Quando viene richiesto l'accesso ad una risorsa protetta il sistema chiede all'utente di autenticarsi.

Una volta autenticato, il processo di assegnazione dei permessi è suddiviso in 2 livelli intermedi:

- ruoli (roles)

- permessi (permissions)

I 2 livelli sono collegati dalle politiche di sicurezza (security policies), che definiscono chi può fare cosa.

Page 22: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

21. Gestione della sicurezza

© Tecnoteca srl 2004

La gestione della sicurezza di Zope si basa su tre concetti fondamentali:

ruoli

permessi

politiche di sicurezza

Page 23: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

22. I database di ZOPE

© Tecnoteca srl 2004

Oltre ad essere un web ed ftp server, Zope è anche un database server.

Il database integrato di Zope è lo Z Gadfly, seppur piuttosto limitato.

Per gestioni complesse è preferibile utilizzare database esterni come ad esempio MySQL.

A prescindere dal database scelto, la metodologia di utilizzo è sempre la stessa.

Page 24: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

23. Gli oggetti base di ZOPE

© Tecnoteca srl 2004

Abbiamo già visto alcuni degli oggetti di Zope: il Folder, il DTMLDocument, lo Z Gadfly Database connection, lo Z SQL method e il Page Template. Altri principali oggetti che possono essere aggiunti sono:

DTML Method

External Method

Script (Python)

File

Image

Mail Host

Virtual Host Monster

Page 25: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

24. Installazione di nuovi prodotti

© Tecnoteca srl 2004

Nuovi prodotti utilizzabili possono essere scaricati direttamente dal sito di Zope, forniti dalla vasta comunità di sviluppatori.

In particolare all’indirizzo http://www.zope.org/Products è possibile effettuare ricerche di prodotti per tipologia (es. e-commerce, esempi, patches etc.).

Una volta scaricato il prodotto che ci interessa è sufficiente:

• scompattarlo

• copiare il folder nella directory Products di ZOPE

• riavviare

• aggiungerlo tramite la ZMI nel punto desiderato del sito

Page 26: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

25. I linguaggi di scripting

© Tecnoteca srl 2004

I principali linguaggi di scripting utilizzati da Zope sono:

• DTML (Document Template Markup Language)• ZPT (Zope Page Templates)

Sono linguaggi server-side, eseguiti quindi dal server Zope e i risultati della loro esecuzione sono inviati al browser web.

Tramite questi 2 linguaggi è possibile generare pagine in maniera dinamica. Vengono infatti inseriti particolari 'tags' nel codice HTML, convertiti poi in HTML puro da inviare al browser web.

Entrambi i linguaggi, benché diversi nella sintassi, svolgono lo stesso ruolo. A parte minime differenze, la scelta di adottarne uno piuttosto che un altro è dovuta spessa a scelte personali.

Page 27: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

26. Il DTML

© Tecnoteca srl 2004

Il DTML è il linguaggio originale per la presentazione dinamica in Zope.

Può diventare fortemente dipendente dalla logica, limitando di fatto la ricerca della separazione della logica dalla presentazione.

Può risultare semplice per i programmatori, ma piuttosto ostico per i web-designers.

Zope mette a disposizione due oggetti DTML:

• Documenti DTML (oggetti contenuto)• Metodi DTML (oggetti presentazione)

Page 28: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

27. Cenni ai “tag” DTML

© Tecnoteca srl 2004

Esistono due tipi di “tag” DTML:

• “Tag” singolo (racchiuso fra due parentesi angolari)

<dtml-var qualche_oggetto>

• A blocchi (con due tag di apertura e chiusura blocco)

<dtml-in oggetto_sequenza> <!-- comandi sui valori della sequenza --></dtml-in>

Page 29: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

28. Lo ZPT (Zope Page Templates)

© Tecnoteca srl 2004

Lo ZPT è un altro tool di generazione dinamica delle pagine web, pensato

per consentire la collaborazione fra programmatori e designers.

E' successivo al DTML e ne duplica alcune funzioni, ma con scopi

leggermente differenti.

I Page Templates usano il linguaggio TAL (Template Attribute Language) .

Page 30: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

29. TAL, il linguaggio per le ZPT

© Tecnoteca srl 2004

Tal definisce particolati attributi per i tag.

Un esempio può essere:

<title tal:content=”here/title”>titolo della pagina</title>

Le istruzioni TAL più comuni sono:

tal:definetal:attributestal:replacetal:contenttal:repeattal:condition

Page 31: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

30. CMS (Content management System)

© Tecnoteca srl 2004

I CMS sono soluzioni fortemente orientate alla gestione dinamica dei contenuti. Grazie all'uso di interfacce amichevoli, i sistemi di Content Management permettono agli utenti autorizzati, indipendentemente dalla locazione geografica e dalle competenze informatiche, di contribuire alla definizione, impaginazione e amministrazione dei contenuti del sito.

Un sistema di Content Management consente di tenere separate le tre componenti di un sito web: la grafica, i contenuti, il codice di programmazione.

L’obiettivo è rendere semplice la creazione, la pubblicazione ed il recupero di contenuti per qualsiasi richiesta.

Page 32: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

31. Perché usare un CMS su web?

© Tecnoteca srl 2004

La maniera forse più semplice per rispondere a questa domanda è di confrontarlo con un sistema classico di sviluppo web: Macromedia Dreamweaver®.

Facilità nell’apprendimento e delega dei compiti

Maggior consistenza ed uniformità nello stile

Granularità nel controllo del flusso informativo

Versioning

Page 33: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

32. L’ambiente di sviluppo CMF (Content Management Framework)

Il CMF è una applicazione che contiene una serie di strumenti (tools) di ZOPE.

Questi strumenti formano un ambiente che fornisce molti dei servizi chiave che servono ad un sistema di amministrazione di contenuti (CMS)

Il CMF fornisce strumenti base come:

• Controllo di flusso

• Personalizzazione

• Catalogazione

© Tecnoteca srl 2004

Page 34: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

33. PLONE

© Tecnoteca srl 2004

PLONE è un sistema di amministrazione di contenuti (CMS)

É dotato all’origine di un controllo di:

• Flusso dei lavori

• Sicurezza e ruoli preconfigurati

• Una serie di tipi di contenuto

• Supporto multilingue

Si basa su un ambiente di sviluppo CMF.

Page 35: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

34. Combinazione ZOPE/PLONE

© Tecnoteca srl 2004

Orientamento agli oggetti

Database

Ricerca integrata

Multipiattaforma

Copie personalizzate degli script

Workflow

Scalabilità

Efficace ed elegante ambiente per la navigazione

Facilità nella creazione di documenti strutturati anche complessi

Page 36: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

35. Installazione di PLONE

© Tecnoteca srl 2004

PLONE è liberamente scaricabile da http://plone.org/downloads/

Nel caso di installazione su Windows possiamo evidenziare 2 metodi:

• codice eseguibile

• codice sorgente

Lanciando l’installazione da eseguibile, verranno installate, fra le altre, le seguenti componenti base:

• Zope

• CMF

• Python

Page 37: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

36. Attivazione

© Tecnoteca srl 2004

L'aggiunta di un sito Plone avviene tramite la ZMI di Zope.

Page 38: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

37. La pagina iniziale

© Tecnoteca srl 2004

LogoRidimensionamento testo

Barra di ricerca

Footer

Stato e preferenze

Portal tabs

breadcrumbs

Left_slots Right_slots

Main content

Page 39: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

38. Accesso al sito

© Tecnoteca srl 2004

Le classi di utenti che possono accedere al sito sono le seguenti:

• Anonymous

• Utente Registrato (Member)

Per poter modificare i contenuti, un utente deve registrarsi.

Page 40: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

39. Aggiunta/Modifica contenuti

© Tecnoteca srl 2004

Dopo la registrazione è possibile inserire documenti e oggetti nella home dell’utente.

Page 41: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

40. Il controllo del Workflow

© Tecnoteca srl 2004

Ogni oggetto può assumere diversi stati durante il suo ciclo di vita.

Lo stato di un oggetto determina se sia accessibile o meno dai vari tipi di utente definiti da Plone.

Il Workflow di Plone include 4 stati di default

Visibile

In Revisione

Pubblicato

Privato

Page 42: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

41. Ruoli degli utenti

© Tecnoteca srl 2004

Plone usa i ruoli per definire cosa possono fare e vedere i diversi utenti.La sicurezza viene tenuta quindi sotto controllo in ogni momento

I ruoli definiti in una installazione di default di Plone includono:

Anonimo (Anonymous)

Collaboratore (Member)

Possessore (Owner)

Revisore (Reviewer)

Manager

Page 43: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

42. Le “content tabs”

© Tecnoteca srl 2004

Le content tabs sono metodi/azioni definite nel contesto in cui ci troviamo.

Ogni oggetto ha le proprie tabs di default, altre se ne possono aggiungere. Alcune sono “hidden”, ma comunque accessibili in funzione dei privilegi dell’utente.

Le principali tabs (azioni) sono:

contenuti (contents)

visualizza (view)

modifica (edit)

visualizza contenuti (folder listing)

proprietà (properties)

stato (state)

Page 44: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

43. Cenni alla barra di stato

© Tecnoteca srl 2004

utente (user)

cartella personale (my folder)

preferenze personali (my preferences)

ripristina (undo)

esci (exit)

configurazione di Plone (Plone setup) (accessibile solo al Manager)

La barra di stato è composta da:

Page 45: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

44. Gli “stili”

© Tecnoteca srl 2004

Quello che vediamo appena creiamo un nuovo sito Plone è lo stile di default, ma Plone permette una elevata configurazione per quanto riguarda l'aspetto che vogliamo dare al nostro portale.Per andare ad agire sull’aspetto, il nostro punto di partenza si trova in:

portal_skins/plone_styles

I 3 file fondamentali sono:

base_properties

plone.css

ploneCustom.css

Nessuno è tuttavia modificabile...

Page 46: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

45. Il folder “custom”

© Tecnoteca srl 2004

Ogni metodo, definizione, file generico di sistema può essere adattato alle nostre esigenze mettendolo in un particolare folder:

portal_skins/custom

Ogni file (oggetto) presente in custom ha una priorità maggiore del file originale da cui deriva

In questo modo possiamo personalizzare i nostri file/metodi senza andare a modificare l'originale.

Page 47: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

46. Il logo del portale

© Tecnoteca srl 2004

Sostituire il logo in alto a destra di plone risulta a questo punto estremamente facile.

Se non abbiamo modificato il nome del logo come definito nel file base_properties, ci basta andare in custom ed inserire, una nuova immagine, con il nostro nuovo logo, che chiameremo...

Qualora invece avessimo già “customizzato” il file base_properties, modificandogli il logoName, dobbiamo assegnare all'immagine che carichiamo l'id uguale al valore di logoName.

logo.jpg

Page 48: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

47. Aggiunta di contenuti nel portale

© Tecnoteca srl 2004

Proviamo ad aggiungere un “Folder” nella root del nostro portale.

Aggiungiamo quindi qualche documento, immagine etc…

Cliccando sul folder che abbiamo creato in precedenzaotteniamo la lista di quanto vi è contenuto.

Ma perchè viene attivata proprio questo tipo di visualizzazione?E se lo volessi cambiare?

Per fare qesto dobbiamo introdurre un altro importante“oggetto contenitore” di Plone: portal_types

Page 49: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

48. Il folder “portal_types”

© Tecnoteca srl 2004

Nel portal_types sono contenute le definizioni per tutti gli oggetti attualmente definiti in Plone.

E' inoltre possibile creare un nuovo tipo semplicemente copiandone uno già presente (cambiandogli il nome, ovviamente...) modificando poi sue proprietà in funzione di ciò che vogliamo fargli fare.

Altri possono aggiungersi qualora si installi nuovi prodotti.

Page 50: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

49. Modifica delle proprietà di un “tipo”

© Tecnoteca srl 2004

Scegliendo, per esempio, il tipo “Large Plone Folder”, ci appare la pagina delle sue proprietà.

Fra i vari campi, quelli che più ci possono interessare sono i seguenti

Icon: icona di default dell’oggetto.

Initial view name: azione di default per la visualizzazione iniziale)dell’oggetto.

Implicitly addable: se può essere o no aggiunto nel portale.

Filter content types

Allowed content types:eventuali oggettiche possono essereaggiunti al suo interno,qualora selezionato il campo precedente.

Page 51: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

50. Modifica delle “azioni”

© Tecnoteca srl 2004

cliccando sul tab “actions” entriamo della gestione delle azioni, intese come tipo di visualizzazione, definite per il particolare tipo (oggetto).

Ogni azione può venire modificata agendo sui rispettivi campi, ma si possono anche aggiungere nuove azioni personalizzate.

Page 52: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

51. Le “portal tabs”

© Tecnoteca srl 2004

La definizione delle azioni generali definite sul nostro portale si trovano nel folder portal_actions

Volendo far sì che il tab “notizie” sia visibile solo ad utenti autenticati, basta inserire nel campo Condition il valore python:member

Qui possiamo modificare le azioni definite per le portal tabs, ad esempio, ed aggiungerne di nuove.

Tutte le entry nel cui campo Category è presente il valore portal_tabs, corrispondono alle tabs generali del nostro portale.

Page 53: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

52. Gli “slots”

© Tecnoteca srl 2004

Per ogni oggetto può essere definita una qualsiasi combinazione e disposizione degli slots.

Sono presenti due proprietà 'speciali' assegnabili agli oggetti:

left_slotsright_slots

Sono proprietà speciali in quanto “ereditate” in visualizzazione.

Gli slots, essendo proprietà (attributi) assegnabili ad un oggetto, possiamo vederli e/o modificarli cliccando sulla tag “Properties” presente nella ZMI della root del nostro portale Plone.

Page 54: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

© Tecnoteca srl 2004

I Prodotti installabili in Plone hanno la seguente struttura di directory e files:

53. PRODOTTI: Struttura

Il nome del folder principale è in genere lo stesso del prodotto che si intende installare.

Spesso tuttavia vengono installati più tipi, e il nome della directory è un nome di insieme.

Solo i files presenti nella direcory skins non poi customizzabili tramite la ZMI.

• Nella directory principale ci sono i codici delle classi (tipi) che verranno installate.

• Nella directory “extension” è presente il codice di installazione utilizzato da Plone.

• Nella directory presente sotto “skins” sono contenuti tutti gli scripts, le pagine di presentazione e le icone del prodotto.

Page 55: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

© Tecnoteca srl 2004

1. Riavviare Zope

2. Andare nel tool portal_quickinstaller

3. Selezionare il prodotto e premere install

54. PRODOTTI: Installazione

Il contenuto della directory skins è visualizzabile tramite il tool portal_skins, nella entry corrispondente al nome del prodotto installato.

E’ ovviamente possibile effettuare la customizzazione dei files qui presenti.(non è necessario riavviare Zope o reinstallare il prodotto)

Dopo aver messo la cartella del prodotto nella ben nota directory “Products” del filesystem, i passi da compiere sono i seguenti:

Page 56: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

© Tecnoteca srl 2004

L'azione definita per questo tool è la reconfig_form, che non è altro che l’azione richiamata in Plone setup per le configurazioni generali del portale.

55. IL TOOL portal_properties

In portal_properties sono presenti 4 oggetti (property sheets) utilizzati per le configurazioni globali del portale.

site_properties navtree_properties navigation_properties form_properties

Diamo una breve descrizione di ciascuno di questi oggetti.

Page 57: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

© Tecnoteca srl 2004

In questa property sheet è possibile agire su alcune proprietà quali:

56. PORTAL_PROPERTIES: site_properties

formato della data

linguaggio di default

editor esterni per i contenuti

nomi ammissibili per le pagine iniziali

tipi che devono essere considerati folderish.

Altri…

Page 58: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

© Tecnoteca srl 2004

57. PORTAL_PROPERTIES: navtree_properties

In questa property sheet è possibile agire su alcune proprietà quali:

gestione della visualizzazione per lo slot di navigazione.

criteri di sort di default per la visualizzazione dei contenuti

Oggetti da non visualizzare

bachSize di default

Altri…

Page 59: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

© Tecnoteca srl 2004

In questa property sheet vengono definite le proprietà di navigazione e di validazione delle form relative agli oggetti di default di Plone.

58. PORTAL_PROPERTIES: navigation_properties e form_properties

Sono definiti i passaggi che portano dall'inserimento dei valori nella form di modifica fino all’eventuale visualizzazione per i vari tipi di default di Plone.

I passaggi si attuano attraverso una catena di validazioni sui valori inseriti, permettendo di compiere azioni automatiche sulla base della correttezza dei parametri inseriti nella form.

Page 60: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

© Tecnoteca srl 2004

E’ importante che nella form sia presente una variabile “hidden” del tipo:

59. Le validazioni per le form

<input type="hidden" name="form.submitted" value="1" />

Le form “agiscono” su loro stesse.

Il check della variabile “form.submitted” fa scattare, se presente, la catena della validazione.

Se non presente significa che la pagina è stata richiamata non come conseguenza di un “submit”.

Gli stati e le variabili vengono passata attraverso la catena tramite il REQUEST.

Lo stato della catena è contenuto nell'oggetto “state”, ed in genere vale “failure” o “success”.

La gestione ed il controllo della catena di validazioni è gestita dal tool portal_form_controller.

Page 61: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

© Tecnoteca srl 2004

Lo possiamo considerare come il tool principale del nostro portale.

60. IL TOOL portal_skins

Quello che troviamo al suo interno, inizialmente, è quanto si trova nella directory skins di CMFPlone sul filesystem.

Qui troveremo anche tutti i successivi prodotti che andremo ad installare con il tool portal_installer.

Andando sulla tab Properties della ZMI all’interno di questo tool, è possibile definire l’ordine di preferenza di dove Plone cerca gli stili da applicare al nostro portale.

Analizziamo ora i folders principali contenuti in questo tool.

Page 62: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

© Tecnoteca srl 2004

In plone_content sono contenute le icone relative ai mime-types definiti in Plone.

61. PORTAL_SKINS: plone_content

Può essere utilizzato in combinazione con i 2 tools:

definizione di tutti i mime-types. Altri possono essere aggiunti. Ad ogni entry può corrispondere una icona definita in mimetypes-icons.

è un motore di trasformazione dei contenuti basato sui mime-types.Permette di trasformare 'run-time' un contenuto da un mime-type ad un altro.

mimetypes_registry

portal_transforms

NOTA: In realtà questo non è un oggetto di default di Plone, ma viene aggiunto all’installazione di portal_transforms.

Page 63: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

Qui sono presenti le pagine di visualizzazione/modifica per gli oggetti di default di Plone, quali Document, Folder, Image, News, etc.

62. PORTAL_SKINS: nel dettaglio pag.1

Script python derivati dal prodotto CMFDefault.

Considerato deprecated, anche se qui vanno ad aggiungersi Prodotti sviluppati dal progetto Collective.

In questo folder sono presenti i files javascript utilizzati da Plone.

cmf_legacy

plone_3rdParty

plone_content

plone_ecmascript

© Tecnoteca srl 2004

Entriamo nel dettaglio dei contenuti del portal_skins

Page 64: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

Qui sono contenuti tutti i file necessari per la gestione del pannello di Controllo di Plone.

63. PORTAL_SKINS: …nel dettaglio pag.2

Contiene tutte le form di default di Plone che non fanno riferimento ad alcuna azione di modifica degli oggetti di contesto.

Contiene semplicemente tutte le immagini di default utilizzate da Plone

plone_forms

plone_images

plone_prefs

© Tecnoteca srl 2004

plone_form_script

Script python (metodi) richiamati dalle form utilizzate per l'aggiunta di contenuti (edit form), e script di validazione dei contenuti di tali form per i tipi di default di Plone (Documents, Events, etc.).

Page 65: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

64. PORTAL_SKINS: …nel dettaglio pag.3

Proprietà per utilizzare il layout di Plone senza l’ausilio di tabelle.

Insieme di modelli di pagina per il controllo della struttura di Plone.Possiamo vederli come un insieme di macro.

Collezione di scripts (metodi) generali utilizzati da plone.

plone_tableless

plone_templates

plone_scripts

© Tecnoteca srl 2004

plone_stylesGli stili di presentazione di Plone (già visti la settimana scorsa)

Page 66: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

© Tecnoteca srl 2004

Nelle versioni precedenti erano conosciuti come “plone_slots”.

65. PORTAL_SKINS: plone_portlets

Ogni file è la definizione di uno slot visualizzabile ai due lati della pagina.

Il codice di uno slot è contenuto all’interno di una definizione di macro del tipo:

<div metal:define-macro="portlet“> …</div>

Il codice da inserire negli attributi left_slots o right_slots per richiamarlo è:

here/portlet_name/macros/portlet

Page 67: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

© Tecnoteca srl 2004

In questo esempio vedremo come 'customizzare' uno slot ed usarlo, in seguito, per gestire tipi diversi di news.

66. PLONE_PORTLETS: esempio pag.1

Come prima cosa creiamo un nuovo oggetto basato sul tipo News Item, e diamogli un nome a nostra scelta (es. MyNews).

Creato il nuovo tipo, andiamo in plone_portlets, scegliamo portlet_news e premiamo il pulsante 'custom'.

A questo punto ci troviamo nel file customizzato in modalità edit.

Quello che vogliamo è fargli gestire solo le news relative al nuovo tipo che abbiamo creato all'inizio.

Per fare questo, ci mancano alcuni di passi:

Page 68: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

© Tecnoteca srl 2004

1. Modificare il tipo di oggetto che lo slot deve gestire.

67. PLONE_PORTLETS: ..esempio pag.2

Sostituire la direttivaportal_type='News Item'

conportal_type='MyNews'

2. Qualora volessimo far apparire un titolo diverso per questo slot:

Sostituire la direttiva<h5 i18n:translate="box_news">News</h5>

con<h5 i18n:translate="box_news">My News</h5>

Page 69: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

© Tecnoteca srl 2004

3. Cambiare il nome del portlet che abbiamo appena creato e modificato.

68. PLONE_PORTLETS: ..esempio pag.3

Cambiare il nome daportlet_news

aportlet_mynews (per esempio)

4. Infine, dobbiamo fare in modo che questo nuovo slot venga gestito da Plone.

Andiamo nella home del nostro portale (sempre nella ZMI) e premiamo sul tab “Properties”.Nell'attributo left_slots aggiungiamo la linea:

here/portlet_mynews/macros/portlet

Lasciando il suo nome originale comporterebbe che nello slot delle news verrebbero visualizzate solo le news definite con il nuovo tipo.

Page 70: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

© Tecnoteca srl 2004

La gestione degli utenti di Plone viene attuata tramite i seguenti Folders e Tools:

69. GESTIONE DEGLI UTENTI

Ogni utente iscritto presenta in Members un folder con id uguale al suo username.Tale folder è la sua home.

acl_users è gestito dal prodotto “Group User Folder” (GRUF).Qui possono venire assegnati ruoli e configurati gruppi degli utenti iscritti.

Folder Member

Folder acl_users

Tool portal_memberdata

Tool portal_membership

Page 71: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

© Tecnoteca srl 2004

Di default qualunque utente può accedere al sito e diventare un Member.

70. GESTIONE DEGLI UTENTI: Note sul folder “Members”

Questo può essere fatto andando in “Security” sulla ZMI della home del nostro portale e modificare “add portal members” deselezionando l'acquire e selezionandolo solo per il Manager.

Come risultato si ottiene che ad un Anonymous non apparirà più l'opzione di join.

Si può voler eliminare questa modalità.

Page 72: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

© Tecnoteca srl 2004

Il folder acl_users di Plone è gestito diversamente da quanto visto per Zope.Abbiamo delle estensioni fornite dal prodotto “Group User Folder” (GRUF).

71. GESTIONE DEGLI UTENTI: Note sul folder “acl_users”

Un gruppo è diverso da un ruolo. I ruoli devono sempre e comunque venire definiti tramite la tab “Security” nella ZMI.

L'aggiunta di nuovi utenti risulta facilitata, compresa la loro assegnazione a particolari gruppi essi stessi definiti in questo folder.

Page 73: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

© Tecnoteca srl 2004

Portal_memberdata

72. GESTIONE DEGLI UTENTI: i tools “portal_memberdata” e “portal_membership”

Questo tool fornisce i meccanismi di autenticazione per gli utenti.

Qui è possibile definire nuoviattributi da assegnare agli utenti.

E' inoltre possibile gestire ed “aggiungere” nuove actions alla barra dei tools per gli utenti e ad altro.

Portal_membership

Page 74: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

© Tecnoteca srl 2004

73. GESTIONE DEGLI UTENTI: esempio

Prima di continuare con i prossimi argomenti, facciamo un esempio pratico perquanto riguarda la gestione degli utenti.

Dovremo:

1. Creare almeno un nuovo gruppo.(Meglio se di nome ‘group1’. Indifferente i ruoli che vengono assegnati)

2. Creare almeno un utente per ognuno dei gruppi definiti al punto 1

Per fare tutto ciò dobbiamo ovviamente andare in acl_users.

Nota: una volta terminato, assicuriamoci che gli utenti definiti al punto 2 possanoaccedere al nostro sito.

Page 75: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

© Tecnoteca srl 2004

74. GESTIONE DEL WORKFLOW

Il tool portal_workflow ci permette di agire sui possibili stati e transizioni dei contenuti del nostro portale.

Di default sono definiti 2 distinti workflows:

• plone_workflow

• folder_workflow

Ad ogni oggetto (tipo) presente nel nostro portale è associato un workflow.

Tramite questo tool possiamo modificare i workflows esistenti, oppure di crearne di nostri ed associarli ai tipi che ci interessa.

Page 76: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

© Tecnoteca srl 2004

75. WORKFLOW: continua…

Selezionando la tag “Contents” del tool, ci appariranno i workflows già definiti.

Una volta selezionato il workflow che vogliamo modificare, possiamo agire sui suoicontenuti.Questi contenuti sono:

Scripts (metodi)states (stati)transitions (transizioni)variables (variabili)worklists (“liste di lavoro”)

Quelli che a noi interessano maggiormente sono: states e transitions.

Page 77: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

© Tecnoteca srl 2004

76. WORKFLOW: “states”

Selezionando la tag “States” ci appariranno gli stati già definiti per questo workflow.

Come prima cosa possiamo subito vederecome sia possibile definire lo stato iniziale incui verrà a trovarsi un oggetto appena creato.

Selezionando uno stato (es. Published) possiamo andare a modificarlo.

transitionsstates

Page 78: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

© Tecnoteca srl 2004

77. WORKFLOW: “transitions” pag.1

Selezionando la tag “Transitions” ci apparirannole transizioni già definite per questo workflow.

Questa è forse la parte più interessante.

Da qui possiamo capire e modificare il flussodelle transizioni fra i vari stati.

transition

Stato di destinazione della transizione

Trigger che fa scattare la transizione

Page 79: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

© Tecnoteca srl 2004

78. WORKFLOW: “transitions” pag.2

Selezionando una transizione (es. Publish), entriamo nella pagina di configurazionedella transizione stessa.

Scelta dello stato di destinazioneper la transizione.

Possibili triggers che possonoattivare l’attivazione

Permessi che l’utente deve avereper attivare la transizione

Ruolo necessario per attivare la transizione

Metodo applicato per la transizione

Page 80: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

© Tecnoteca srl 2004

79. WORKFLOW: esempio pag.1

Quello che ci proponiamo in questo esempio è di creare un workflow personalizzatoper gestire i tipi MyNews nello slot portlet_mynews sulla base dei gruppi che abbiamodefinito in precedenza.

Dovremo definire 2 nuovi stati:group1 e group2(chiameremo questi stati con lo stessonome dei 2 gruppi che abbiamo definito inun esempio precedente.)

Dovremo definire 2 nuove transizioni:togroup1 e togroup2

Faremo inoltre in modo che solo il proprietario dell'oggetto (Owner) possaagire sulle transizioni.

Page 81: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

© Tecnoteca srl 2004

80. WORKFLOW: …esempio pag.2

La prima cosa da fare è di creare un nuovo workflow.

Verrà data facoltà di scegliere fra un insieme di workflows predefiniti.

Scegliamone uno (es. default_workflow [classic]) ed assegnamogli un id.

Una volta premuto il pulsante “Add” vediamo che il nuovo workflow è stato aggiunto alla lista.

Selezioniamolo ed andiamo nella tab “Transitions”.

Per fare questo bisogna selezionare la tag “Contents” del tool e premere il pulsante “Add Workflow”.

Page 82: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

© Tecnoteca srl 2004

81. WORKFLOW: …esempio pag.3

Le transizioni definite sono quelle visualizzate

Come prima cosa rinominiamo publish esubmit in togroup1 e togroup2

Quindi selezioniamo retract permodificarlo.

A noi ne servono 3.Quindi una la eliminiamo (reject), e le altrele andiamo a modificare.

Page 83: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

© Tecnoteca srl 2004

82. WORKFLOW: …esempio pag.4

Le modifiche sulla transizione “retract” sono riportate in figura.

Page 84: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

© Tecnoteca srl 2004

83. WORKFLOW: …esempio pag.5

Selezionare quindi le altre due transizioni (togroup1 e togroup2) ed apportare lemodifiche come in figura.

Ovviamente, ovunque sia scritto group1 deve essere cambiato con group2 nel caso si stia modificando la transizione togroup2.

Page 85: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

© Tecnoteca srl 2004

84. WORKFLOW: …esempio pag.6

A questo punto possiamo andare sulla tab “States” del tool.

Rinominiamo gli stati “pending” e “published” in “group1” e “group2”.

Gli stati “group1” e “group2” dovrebbero essere già a posto. Al limite si può editarli per modificargli il titolo e renderlo uguale all'id.

Selezioniamo lo stato “private” e definiamogli come possibili le transizioni “togroup1” e “togroup2”.

Page 86: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

© Tecnoteca srl 2004

85. WORKFLOW: …esempio pag.7

A questo punto mancherebbe un'ultima cosa:Le due transizioni “togroup1” e “togroup2” non hanno definito lo “stato didestinazione”.

Dobbiamo quindi editare le due transizioni e selezionare come stato di destinazione lo stato “group1” per “to_group1” e “group2” per “to_group2”.

Per fare ciò basta semplicemente andare nella tab “Workflow” del nostro tool edassociare al tipo “MyNews” il workflow che abbiamo appena definito.

Il nostro nuovo workflow è completato.Ora dobbiamo definire quale oggetto (tipo) deve seguirlo.

Page 87: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

© Tecnoteca srl 2004

86. RIASSUNTO

Nel corso di questa presentazione sono stati portati avanti i seguenti esempi:

2. E’ stato definito un nuovo slot chiamato portlet_mynews per gestire le MyNews, ed è stato aggiunto al portale.

Ora, per concludere, dobbiamo mettere tutto assieme e fare in modo che il nostronuovo slot visualizzi solo le news che sono nello stato uguale al gruppo a cuiappartiene l’utente autenticato.

1. E’ stato definito un nuovo tipo di News Item, e lo abbiamo chiamato MyNews.

3. Sono stati definiti due nuovi gruppi, group1 e group2.

4. E’ stato definito un nuovo workflow, my_workflow, (private, group1 e group2) e 3 transizioni (retract, togroup1 e togroup2).

Page 88: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

© Tecnoteca srl 2004

87. CONCLUSIONE ESEMPI

Andare in custom ed aprire il file “portlet_mynews”

tal:define="groupid member/getGroupsWithoutPrefix | python:['']; results python:request.get('news', here.portal_catalog.searchResults(

portal_type='MyNews‘ ,

sort_on='Date‘ ,sort_order='reverse‘ ,review_state=groupid)[:5]);

Aggiungere le linee evidenziate in grassetto:

Ora solo gli utenti che apparterranno al gruppo corrispondente allo stato della newssarà in grado di visualizzarla.

Page 89: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

88. Cache Management

© Tecnoteca srl 2004

Sono presenti 2 oggetti per gestire la cache del portale, ed entrambi sono oggetti presenti di default in Zope:

HTTPCache (immagini e/o documenti) RAMCache (risultati di chiamate a metodi)

Ci sono alcuni parametri per configurare opportunamente la cache, come il tempo di persistenza degli oggetti nella cache, il tempo di refresh, etc.

Importante è la checkbox:Cache anonymous connections only?

Permette di limitare la possibilità che vengano inseriti nella cache dati privati che possono essere poi resi accessibili ad utenti Anonymous.

Gli oggetti che possono essere inseriti nella cache hanno poi un tab che ne permette la configurazione.

Proseguiamo il nostro viaggio alla scoperta di Plone.

Page 90: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

89. Il Calendario

© Tecnoteca srl 2004

Nel tool portal_calendar vengono definiti gli oggetti che devono essere visualizzati.

Di default solo gli oggetti di tipo “Event”vengono evidenziati nelle relative giornatesullo slot del calendario.

Qui possiamo definire anche altrioggetti perchè vengano visualizzati.L'importante è che questi oggettiabbiano definiti i 2 attributistart e end.

Page 91: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

90. Gestione degli indici dei contesti del portale

© Tecnoteca srl 2004

Un importante tool di plone è il portal_catalog.

Gestisce tutte le indicizzazioni degli oggetti nel nostro portale.Agendo sulle tab della ZMI possiamo evidenziare le seguenti:

- catalog: lista degli oggetti indicizzati.Qui è possibile effettuare un refresh, o cliccando sull'oggetto,vedere tutte le informazioni a lui relative.

- indexes: (indici utilizzati per la catalogazione)Qui è possibile effettuare il refresh, e anche aggiungere nuoviindici da essere utilizzati per la catalogazione.

- metadata: (quali dati vengono catalogati)Qui possiamo aggiungere nuovi metadata da catalogare.

- advanced:Spesso può risultare utile effettuare un Update catalog perrimuovere oggetti invalidi.

Page 92: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

91. Il Portal_factory tool

© Tecnoteca srl 2004

Viene utilizzato per gestire le aggiunte di contenuti che non hanno portato a termine l'inserimento.

In pratica, quando viene richiesto di inserire un nuovo contenuto, Plone definisce un id di default, ma se non lo completiamo non viene inserito nello ZODB.

Possiamo specificare quale oggetto viene gestito da questo tool andando sulla tab.

L'oggetto non viene inserito nello ZODB, ma possiamo comunque eventualmente completare il suo inserimento andando sulla url:

http://myportal/myfolder/portal_factory/TYPE_NAME/OBJECT_ID

Page 93: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

92. Il Portal_syndication tool

© Tecnoteca srl 2004

Questo tool abilita la possibilità di rendere disponibili informazioni contenute nel nostro sito ad altri siti.

Una volta abilitata la syndication, nel nostro portaleappare una nuova tag per gli oggetti di tipo folder.

Qui possiamo abilitare il particolare folder per fornirele informazioni contenute.(in genere lo si fa per folders contenenti news.).

Da qualsiasi altro sito possono quindi venire richiamate le informazioni aggiungendo il suffisso “/RSS”.

http://nostro_portale/nostro_folder/RSS

Page 94: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

93. Cenni a Python

© Tecnoteca srl 2004

Python è un linguaggio interpretato orientato agli oggetti.

E' possibile estenderlo facilmente con moduli scritti in C, C++.

E' particolarmente potente e chiaro, e presenta un numero di moduli in continua crescita.

Benchè estremamente ricco di componenti, il 95% del suo utilizzo, per i nostri scopi, può essere riassunto in pochi punti e concetti.

Page 95: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

94. Python: struttura

© Tecnoteca srl 2004

A parte i moduli standard, moduli aggiuntivi possono essere caricati tramitela direttiva:

import modulename

(analogo alla direttiva #include <...> del C)

es.import string,_mysql

Il raggruppamento delle dichiarazioni avviene tramite l'indentazione

for i in range(10):print i

Page 96: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

95. Python: i tipi

© Tecnoteca srl 2004

A parte i più comuni tipi, es. int, double, etc, i due tipi più utilizzati sono le lists e i dictionaries.

- Lists (liste):E' forse il tipo di dato più versatile utilizzabile in Python. Può essere definito come una lista di oggetti separati da virgola, racchiusi fra parentesi quadre. Può contenere oggetti relativi a tipi diversi.

>>> MyList = []>>> MyList.append('a string')>>> MyList.append(13.7)>>> MyList['a string', 13.7]

- Dictionaries (dizionari):I dizionari possiamo vederli come tabelle hash. É definito come coppie di chiave:valore separate da virgola. Ogni stringa o numero può essere una chiave, che deve comunque essere unica all'interno dello stesso dictionary.

>>> MyDict = {}>>> MyDict['first'] = 'Mauro'>>> MyDict['last'] = 'Di Cecca'>>> MyDict{'last': 'Di Cecca', 'first': 'Mauro'}>>> MyDict.keys()['last', 'first']>>> MyDict['first']'Mauro'

Page 97: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

96. Creazione nuovi prodotti

© Tecnoteca srl 2004

1. Scrivere da zero l'intero codice del prodotto (operazione che richiede una buona conoscenza del sistema)

2. Scrivere il codice partendo da “scheletri” predefiniti di prodotti vuoti (operazione che richiede una conoscenza leggermente inferiore rispetto al metodo precedente).

3. Utilizzare tools di sviluppo che facilitano l'intera operazione e che facciano una parte del lavoro per noi.

Creare nuovi prodotti è una delle caratteristiche di estensibilità di Plone/Zope.

Può essere fatto in diversi modi.

Il mondo Plone ci fornisce strumenti per sviluppare secondo il punto 3.

Tale strumento si chiama Archetypes.

Page 98: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

97. Archetypes

© Tecnoteca srl 2004

Archetypes è l'evoluzione di un prodotto nato con il nome di CMFTypes.

Semplifica la creazione di nuovi tipi di contesto (content types).

Rende facile sia la creazione che la gestione di nuovi tipi.

Nella sua forma più semplice è sufficiente:

1. definire la classe dell'oggetto (tipo) che vogliamo creare,2. definire gli attributi (proprietà),3. definire le funzioni di classe.

Una volta fatto ciò, basta aggiungere tale nuovo tipo come si fa per un qualsiasi altrotipo di Plone.

Archetypes utilizzerà tali informazioni per generare automaticamente le pagine divisualizzazione (view) e le form (edit) per la modifica dei contenuti.

Page 99: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

98. Sviluppo con Archetypes: UML

© Tecnoteca srl 2004

L'approccio che forse rende meglio le potenzialità fornite da questo tool e quello basato sullo sviluppo in ambiente UML (Unified Modelling Language).

In un ambiente di sviluppo UML noi possiamo definire le nostre classi (che diverranno poi i tipi di Plone), e all'interno di tali classi definire gli attributi e le operazioni.

Il codice delle operazioni può essere direttamente inserito nel corpo dell'attributo.

Alcuni possibili tools di sviluppo UML sono:

ObjectDomain http://www.objectdomain.org ArgoUML http://argouml.tigris.org Poseidon http://www.gentleware.com ...

Page 100: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

99. Sviluppo con Archetypes: ArchGenXML.py

© Tecnoteca srl 2004

E' una utility richiamabile da linea di comando che effettua il parsing di progetti in formato XMI o XSD (XMLSchema) ottenuti dall'esportazione di modelli UML e che genera prodotti utilizzabili nel framework di Archetypes.

Genera quindi tutto il codice Python del prodotto.

Quello che ci resta da scrivere è essenzialmente il codice TAL per le pagine di visualizzazione/modifica personalizzate.

Page 101: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

100. Sviluppo con Archetypes: gli step

© Tecnoteca srl 2004

Progetto UML

File XMIProdotto Plone

Esportazione in formato XMI

parsing del file XMIper generare il prodotto Plone

Aggiunta e modificadelle pagine di presentazione

Copia del prodottonella directory Productdi Zope

Page 102: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

101. Creazione nuovo prodotto: esempio pag.1

© Tecnoteca srl 2004

Facciamo ora l'esempio di creare un nuovo tipo, Movie, a partire dalla sua definizione con un modello UML.

1 . creazione di una nuova classe di nome MovieQui possono essere definite direttive quali moduli da importare, icona di default del tipo, ed altre.

Se selezionata, non viene generato alcun tipo di contesto per Plone.

Page 103: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

102. Creazione nuovo prodotto: ...esempio pag.2

© Tecnoteca srl 2004

2 . definizione degli attributi della classe (tipo)

Page 104: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

103. Creazione nuovo prodotto: ...esempio pag.3

© Tecnoteca srl 2004

3. definizione delle operazioni

Operations con Tagged Values“view” generano una azione (content_action)definita dal file il cui nome è inserito nel campo Value

Per ogni azione possono venire definiti il testo del relativo content_tag e i permessi.

NOTA: Con le ultime release del parser, è necessario associare uno stereotype “action” o “view” ad ogni Operation per cui si vuole generate una azione con relativo “tab” relativo al contesto.

Page 105: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

104. Creazione nuovo prodotto: ...esempio pag.4

© Tecnoteca srl 2004

L'oggetto si presenterà in questo modo:

Effettuata l'esportazione su un file che chiameremo, per esempio, movie.xml, dobbiamo solo applicargliil comando ArchGenXML.py

python ArchGenXML.py -a yes -o movie movie.xml

A questo punto copiamo la directory movie nella directory Products di Zope e riavviamo.

Page 106: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

105. Creazione nuovo prodotto: ...esempio pag.5

© Tecnoteca srl 2004

Il nuovo prodotto a questo punto è disponibile per essere installato in plone (portal_quickinstaller).

Una volta installato, lo possiamoimmediatamente utilizzare ed aggiungere nel nostro contesto.

La pagina di inserimento è generata automaticamentesulla base degli attributi inseriti nella definizione di classe nel progetto UML.

Page 107: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

106. Personalizzazione del sito

© Tecnoteca srl 2004

Una volta definiti i tipi che vogliamo essere disponibili nel nostro portale, ed i suoi contenuti, ci chiediamo:

“Ok, e ora come faccio a riconfigurare l'aspetto del mio sito?”

La definizione dei colori l'abbiamo già vista nel file base_properties presente in portal_skins/plone_styles.

La definizione degli stili l'avevamo già vista nel file plone.css (e ploneCustom.css) presente nella stessa directory.

Quello che ci manca è di capire dove e come andare ad agire per reimpostare l'aspetto del portale.

Page 108: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

107. Personalizzazione: il file “main_template”

© Tecnoteca srl 2004

Questo file si trova in /portal_skins/plone_templates.

La sua struttura è la seguente:

<”definizioni proprie di plone”><head> <macro dell'header></head><body> <macro per la parte superiore della pagina (portal-top)> <macro per le gli slots e il main> <macro del footer></body>

Ma prima di analizzare questo file, diamo qualche nozione sul concetto di macro per il linguaggio ZPT (TAL).

Page 109: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

108. Personalizzazione: “le macro” definizione ed uso

© Tecnoteca srl 2004

La definizione di una macro può essere fatta in un qualsiasi file TAL. Per richiamarla basta definire il nome della macro ed il file in cui è stata definita.

Es. definisco la macro 'mostrapippo' nel file 'pluto.pt'

<p metal:define-macro=”mostrapippo”>Pippo

</p>

Per richiamarla da un qualsiasi altro template mi basta includere la seguente direttiva:

<p metal:use-macro=”here/pluto/macros/mostrapippo” />

E' evidente come sia anche possibile utilizzare macro che facciano uso di variabili definite nel contesto.

Page 110: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

109. Personalizzazione: gli “slot”delle macro

© Tecnoteca srl 2004

Alcune parti delle macro possono essere personalizzate sovrascrivendo valori. Per fare ciò si utilizzano gli “slots”.

Es. aggiungo una definizione di slot nella macro:

<p metal:define-macro=“mostrapippo”>Pippo<span metal:define-slot=”topolinia”></span>

</p>

Per utilizzarla basta includere la seguente direttiva:

<p metal:use-macro=”here/pluto/macros/mostrapippo”><span metal:fill-slot=”topolinia”>basettoni</span>

</p>

Detto ciò, torniamo ad analizzare il file “main_template”

Page 111: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

110. Personalizzazione: l'”header”

© Tecnoteca srl 2004

Quello che il main_template definisce come header non è da considerarsi come la parte superiore del nostro portale, ma piuttosto come un insieme di definizioni e di richiami a contenuti generali utilizzati nella pagina.

L'header, racchiuso nelle direttive <head> e </head>, viene richiamato facendo uso degli slots definiti nel file header.pt.

<head metal:use-macro=”here/header/macros/html_header”>...fill_slot.........fill_slot...

</head>

Page 112: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

111. Personalizzazione: il “portal_top”

© Tecnoteca srl 2004

File: global_logomacro: portal_logo

File: global_search_boxmacro: quick_search

File: global_sectionsmacro: portal_tabs

File: global_personalbarmacro: personal_bar

File: global_pathbarmacro: path_bar

Page 113: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

112. Personalizzazione: il “portal_columns”

© Tecnoteca srl 2004

Si noti che qualora venga utilizzato il file ploneColumns.css al posto del file plone.css, non si è più in presenza di una tabella ma la struttura viene completamente definita per mezzo di specifiche css.

File: portlets_fetchermacro: left_column

Alcuni richiami di macroper il particolare contesto

File: portlet_fetchermacro: right_column

Page 114: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

113. Personalizzazione: il “footer”

© Tecnoteca srl 2004

File: footermacro: portal_footer

Abbiamo raggruppato queste due macro nella stessa sezione semplicemente per una questione di coerenza.

File: colophonmacro: colophon

È evidente come possano essere raggruppate facendo in modo che nella macro portal_footer venga richiamata la macro colophon, in modo da avere tutto nello stesso punto.

Page 115: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

114. Personalizzazione: stili diversi in contesti diversi

© Tecnoteca srl 2004

Possiamo voler utilizzare stili ed impostazioni di visualizzazione per il nostro portale che variano a seconda del contesto in cui ci si trova in un dato momento.

Un altro possibile metodo è quello di creare i nostri file di template nella directory nomeprodotto_public del prodotto che abbiamo creato ed installato con archetypes.

Questo è facilmente ottenibile semplicemente copiando nel contesto (folder) che ci interessa il file main_template (ma anche header e footer se necessario) che abbiamo modificato.

In questo modo ogni contesto posizionato al di sotto del percedente farà uso degli stili definiti nel primo file main_template che trova risalendo l'albero.

Un altro metodo ancora è quello di definire uno stile “ad-hoc” (es. myplone.css) ed includerlo con la direttiva <style> tramite il modello main_template.

Page 116: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

115. Personalizzazione: utilizzo di editor HTML

© Tecnoteca srl 2004

Possiamo ora chiederci se sia possibile utilizzare strumenti di creazione di pagine web esterni per modellare il portale quali DreamWeaver®, o altri.

1. è possibile agire sul file main_template per modificare il layout. Generalmente definendo tabelle ed inserendo nelle varie celle ciò che desideriamo.

La risposta è SI, pur con le dovute limitazioni.

Vediamo in dettaglio una delle limitazioni principali.

2. Non è possibile visualizzare un'anteprima completa della pagina. Questo perchè molti degli oggetti vengono visualizzati in base al contesto in cui ci si trova. Un'anteprima da DreamWeaver non può accedere alle macro di Plone.

Bisogna però tenere presente che la potenzialità di Plone è nella sua gestione dei contenuti. Un modello di pagina viene definito una volta per tutte (magari anche più di un modello), ma poi raramente si va ad intervenire con continue modifiche.

Page 117: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

116. Plone e l’accessibilità

© Tecnoteca srl 2004

Plone aderisce agli standard web del Consorzio W3C

Rispetta la sintassi XHTML

Si basa su un CSS valido

E’ conforme alle Linee Guida WCAG 1.0 sviluppate dal Consorzio W3C/WAI

Presenta un layout senza tabelle

Utilizza fogli di stile per Stampa, Presentazione e Portatili (cellulari e palm)

E’ supportato da tutti i browser

Page 118: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

117. Documentazione e risorse disponibili pag.1

© Tecnoteca srl 2004

www.zope.orgil sito della comunità internazionale di ZOPE

www.zope.itil sito della comunità italiana di ZOPE

zdp.zope.org/Zope Documentation Project

www.zopemag.comuna autorevole newsletter su ZOPE

www.zope.org/Resources/ZopePoweredelenco di siti realizzati in Zope

www.python.orgPython

Page 119: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

118. Documentazione e risorse disponibili pag.2

© Tecnoteca srl 2004

www.plone.orgil sito della comunità internazionale di Plone

http://zope.it/Members/lallo/plone/pbithtml/index_htmlPlone Book in versione italiana

http://plone.org/about/siteselenco di siti realizzati in Plone

http://sourceforge.net/projects/ploneil progetto Plone presso SourceForge(tm)

Page 120: Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca  .

119. Bibliografia

© Tecnoteca srl 2004

ZOPEPelletier Michel; Latteier Amos - McGraw-Hill Libri Italia, 2002

Zope Developer's HandbookJohn D. Rowell - Sams 2002

Zope BibleScott Robertson, Michael Bernstein - John Wiley e Sons 2002

Zope: Web Application Development and Content ManagementSteve Spicklemire, Kevin Friedly, Jerry Spicklemire, Kim Brand - New Riders Publishing 2001

The Book of ZopeBeehive - No Starch Press 2001

Zope Web Application Construction KitMartina Brockmann, Sebastian Luhnsdorf, mar Pratt, Mark Pratt, Katrin Kirchner - Sams 2001

The Zope BookAmos Latteier, Michel Pelletier - New Riders Publishing 2001


Recommended