...

Introduzione a Zope e Plone

by user

on
Category: Documents
15

views

Report

Comments

Transcript

Introduzione a Zope e Plone
Introduzione a ZOPE e PLONE
a cura di Mauro Di Cecca
www.tecnoteca.it
www.tecnoteca.com
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
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
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
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
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
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
7. Vantaggi nell’utilizzo di ZOPE
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
© Tecnoteca srl 2004
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
9. Installazione
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 'doppioclick'.
Per quanto riguarda la versione Linux, la
procedura è leggermente più elaborata.
La versione stabile attuale, rilasciata il 2004-0211, è la 2.7.0.
© Tecnoteca srl 2004
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
11. utenti e folders
I 2 utenti iniziali sono admin e access.
I folders più importanti sono:
 products (riservato
aggiuntivi)
ai
prodotti
 extensions (riservato agli script
python)
 import (riservato ai file .zexp per
l’importazione)
 var
© Tecnoteca srl 2004
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
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
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
15. ZMI – methods e page templates
Methods:
 index_html
 standard_error_message
 standard_html_header
 standard_html_footer
Page templates:
 standard_template.pt
© Tecnoteca srl 2004
16. ZMI – altri oggetti
Altri interessanti oggetti presenti
sono:
error_log
session Data Manager
temp_folder
© Tecnoteca srl 2004
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
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
19. Sicurezza
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
© Tecnoteca srl 2004
20. Autenticazione e autorizzazione
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.
© Tecnoteca srl 2004
21. Gestione della sicurezza
La gestione della sicurezza di Zope si basa su tre concetti
fondamentali:
 ruoli
 permessi
 politiche di sicurezza
© Tecnoteca srl 2004
22. I database di ZOPE
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.
© Tecnoteca srl 2004
23. Gli oggetti base di ZOPE
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
© Tecnoteca srl 2004
24. Installazione di nuovi prodotti
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
© Tecnoteca srl 2004
25. I linguaggi di scripting
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.
© Tecnoteca srl 2004
26. Il DTML
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 webdesigners.
Zope mette a disposizione due oggetti DTML:
• Documenti DTML (oggetti contenuto)
• Metodi DTML (oggetti presentazione)
© Tecnoteca srl 2004
27. Cenni ai “tag” DTML
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>
© Tecnoteca srl 2004
28. Lo ZPT (Zope Page Templates)
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) .
© Tecnoteca srl 2004
29. TAL, il linguaggio per le ZPT
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:define
tal:attributes
tal:replace
tal:content
tal:repeat
tal:condition
© Tecnoteca srl 2004
30. CMS (Content management System)
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.
© Tecnoteca srl 2004
31. Perché usare un CMS su web?
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
© Tecnoteca srl 2004
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
33. PLONE
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.
© Tecnoteca srl 2004
34. Combinazione ZOPE/PLONE
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
© Tecnoteca srl 2004
35. Installazione di PLONE
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
© Tecnoteca srl 2004
36. Attivazione
L'aggiunta di un sito Plone avviene tramite la ZMI di Zope.
© Tecnoteca srl 2004
37. La pagina iniziale
Logo
Ridimensionamento testo
Barra di ricerca
Portal tabs
breadcrumbs
Stato e preferenze
Main content
Left_slots
Right_slots
Footer
© Tecnoteca srl 2004
38. Accesso al sito
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.
© Tecnoteca srl 2004
39. Aggiunta/Modifica contenuti
Dopo la registrazione è possibile inserire documenti e oggetti nella home
dell’utente.
© Tecnoteca srl 2004
40. Il controllo del Workflow
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
© Tecnoteca srl 2004
41. Ruoli degli utenti
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
© Tecnoteca srl 2004
42. Le “content tabs”
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)
© Tecnoteca srl 2004
43. Cenni alla barra di stato
La barra di stato è composta da:
 utente (user)
 cartella personale (my folder)
 preferenze personali (my preferences)
 ripristina (undo)
 esci (exit)
 configurazione di Plone (Plone setup)
(accessibile solo al Manager)
© Tecnoteca srl 2004
44. Gli “stili”
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...
© Tecnoteca srl 2004
45. Il folder “custom”
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.
© Tecnoteca srl 2004
46. Il logo del portale
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...
logo.jpg
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.
© Tecnoteca srl 2004
47. Aggiunta di contenuti nel portale
Proviamo ad aggiungere un “Folder” nella root del nostro portale.
Aggiungiamo quindi qualche documento, immagine etc…
Cliccando sul folder che abbiamo creato in precedenza
otteniamo 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
© Tecnoteca srl 2004
48. Il folder “portal_types”
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.
© Tecnoteca srl 2004
49. Modifica delle proprietà di un “tipo”
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 oggetti
che possono essere
aggiunti al suo interno,
qualora selezionato il campo precedente.
© Tecnoteca srl 2004
50. Modifica delle “azioni”
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.
© Tecnoteca srl 2004
51. Le “portal tabs”
La definizione delle
azioni generali definite
sul nostro portale si
trovano nel folder
portal_actions
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.
Volendo far sì che il tab “notizie” sia visibile solo ad utenti autenticati, basta inserire
nel campo Condition il valore python:member
© Tecnoteca srl 2004
52. Gli “slots”
Per ogni oggetto può essere definita una
qualsiasi combinazione e disposizione degli
slots.
Sono presenti due proprietà 'speciali'
assegnabili agli oggetti:
left_slots
right_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.
© Tecnoteca srl 2004
53. PRODOTTI: Struttura
I Prodotti installabili in Plone hanno la seguente struttura di directory e files:
• 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.
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.
© Tecnoteca srl 2004
54. PRODOTTI: Installazione
Dopo aver messo la cartella del prodotto nella ben nota directory “Products” del
filesystem, i passi da compiere sono i seguenti:
1. Riavviare Zope
2. Andare nel tool portal_quickinstaller
3. Selezionare il prodotto e premere install
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)
© Tecnoteca srl 2004
55. IL TOOL portal_properties
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.
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.
© Tecnoteca srl 2004
56. PORTAL_PROPERTIES: site_properties
In questa property sheet è possibile agire su alcune proprietà quali:
 formato della data
 linguaggio di default
 editor esterni per i contenuti
 nomi ammissibili per le pagine
iniziali
 tipi che devono essere
considerati folderish.
 Altri…
© 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…
© Tecnoteca srl 2004
58. PORTAL_PROPERTIES: navigation_properties e form_properties
In questa property sheet vengono definite le proprietà di navigazione e di validazione
delle form relative agli oggetti di default di Plone.
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.
© Tecnoteca srl 2004
59. Le validazioni per le form
E’ importante che nella form sia presente una variabile “hidden” del tipo:
<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.
© Tecnoteca srl 2004
60. IL TOOL portal_skins
Lo possiamo considerare come il tool principale del nostro portale.
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.
© Tecnoteca srl 2004
61. PORTAL_SKINS: plone_content
In plone_content sono contenute le icone relative ai mime-types definiti in Plone.
Può essere utilizzato in combinazione con i 2 tools:
 mimetypes_registry
 portal_transforms
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.
NOTA: In realtà questo non è un oggetto di default di Plone, ma viene aggiunto
all’installazione di portal_transforms.
© Tecnoteca srl 2004
62. PORTAL_SKINS: nel dettaglio pag.1
Entriamo nel dettaglio dei contenuti del portal_skins
 cmf_legacy
Script python derivati dal prodotto CMFDefault.
 plone_3rdParty
Considerato deprecated, anche se qui vanno ad
aggiungersi Prodotti sviluppati dal progetto Collective.
 plone_content
Qui sono presenti le pagine di visualizzazione/modifica
per gli oggetti di default di Plone, quali Document,
Folder, Image, News, etc.
 plone_ecmascript
In questo folder sono presenti i files javascript utilizzati
da Plone.
© Tecnoteca srl 2004
63. PORTAL_SKINS: …nel dettaglio pag.2
 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.).
 plone_forms
Contiene tutte le form di default di Plone che non fanno
riferimento ad alcuna azione di modifica degli oggetti di
contesto.
 plone_images
Contiene semplicemente tutte le immagini di default
utilizzate da Plone
 plone_prefs
Qui sono contenuti tutti i file necessari per la gestione
del pannello di Controllo di Plone.
© Tecnoteca srl 2004
64. PORTAL_SKINS: …nel dettaglio pag.3
 plone_scripts
Collezione di scripts (metodi) generali utilizzati da plone.
 plone_styles
Gli stili di presentazione di Plone (già visti la settimana
scorsa)
 plone_tableless
Proprietà per utilizzare il layout di Plone senza l’ausilio
di tabelle.
 plone_templates
Insieme di modelli di pagina per il controllo della
struttura di Plone.
Possiamo vederli come un insieme di macro.
© Tecnoteca srl 2004
65. PORTAL_SKINS: plone_portlets
Nelle versioni precedenti erano conosciuti come “plone_slots”.
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
© Tecnoteca srl 2004
66. PLONE_PORTLETS: esempio pag.1
In questo esempio vedremo come 'customizzare' uno slot ed usarlo, in seguito, per
gestire tipi diversi di news.
 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:
© Tecnoteca srl 2004
67. PLONE_PORTLETS: ..esempio pag.2
1. Modificare il tipo di oggetto che lo slot deve gestire.
Sostituire la direttiva
portal_type='News Item'
con
portal_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>
© Tecnoteca srl 2004
68. PLONE_PORTLETS: ..esempio pag.3
3. Cambiare il nome del portlet che abbiamo appena creato e modificato.
Cambiare il nome da
portlet_news
a
portlet_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.
© Tecnoteca srl 2004
69. GESTIONE DEGLI UTENTI
La gestione degli utenti di Plone viene attuata tramite i seguenti Folders e Tools:
 Folder Member
 Folder acl_users
 Tool portal_memberdata
 Tool portal_membership
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.
© Tecnoteca srl 2004
70. GESTIONE DEGLI UTENTI: Note sul folder “Members”
Di default qualunque utente può accedere al sito e diventare un Member.
Si può voler eliminare questa modalità.
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.
© Tecnoteca srl 2004
71. GESTIONE DEGLI UTENTI: Note sul folder “acl_users”
Il folder acl_users di Plone è gestito diversamente da quanto visto per Zope.
Abbiamo delle estensioni fornite dal prodotto “Group User Folder” (GRUF).
L'aggiunta di nuovi utenti risulta facilitata, compresa la loro assegnazione a
particolari gruppi essi stessi definiti in questo folder.
Un gruppo è diverso da un ruolo.
I ruoli devono sempre e comunque venire definiti tramite la tab “Security” nella ZMI.
© Tecnoteca srl 2004
72. GESTIONE DEGLI UTENTI:
i tools “portal_memberdata” e “portal_membership”
 Portal_memberdata
Qui è possibile definire nuovi
attributi da assegnare agli utenti.
 Portal_membership
Questo tool fornisce i meccanismi di
autenticazione per gli utenti.
E' inoltre possibile gestire ed
“aggiungere” nuove actions alla barra
dei tools per gli utenti e ad altro.
© Tecnoteca srl 2004
73. GESTIONE DEGLI UTENTI: esempio
Prima di continuare con i prossimi argomenti, facciamo un esempio pratico per
quanto 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 possano
accedere al nostro sito.
© 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.
© 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 suoi
contenuti.
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.
© Tecnoteca srl 2004
76. WORKFLOW: “states”
Selezionando la tag “States” ci appariranno gli stati già definiti per questo workflow.
Come prima cosa possiamo subito vedere
come sia possibile definire lo stato iniziale in
cui verrà a trovarsi un oggetto appena creato.
states
transitions
Selezionando uno stato (es. Published)
possiamo andare a modificarlo.
© Tecnoteca srl 2004
77. WORKFLOW: “transitions” pag.1
Selezionando la tag “Transitions” ci appariranno
le transizioni già definite per questo workflow.
Questa è forse la parte più interessante.
Da qui possiamo capire e modificare il flusso
delle transizioni fra i vari stati.
transition
Stato di destinazione della transizione
Trigger che fa scattare la transizione
© Tecnoteca srl 2004
78. WORKFLOW: “transitions” pag.2
Selezionando una transizione (es. Publish), entriamo nella pagina di configurazione
della transizione stessa.
Scelta dello stato di destinazione
per la transizione.
Ruolo necessario
per attivare la
transizione
Possibili triggers che possono
attivare l’attivazione
Permessi che l’utente deve avere
per attivare la transizione
Metodo applicato per la transizione
© Tecnoteca srl 2004
79. WORKFLOW: esempio pag.1
Quello che ci proponiamo in questo esempio è di creare un workflow personalizzato
per gestire i tipi MyNews nello slot portlet_mynews sulla base dei gruppi che abbiamo
definito in precedenza.
Dovremo definire 2 nuovi stati:
group1 e group2
(chiameremo questi stati con lo stesso
nome dei 2 gruppi che abbiamo definito in
un esempio precedente.)
Dovremo definire 2 nuove transizioni:
togroup1 e togroup2
Faremo inoltre in modo che solo il
proprietario dell'oggetto (Owner) possa
agire sulle transizioni.
© Tecnoteca srl 2004
80. WORKFLOW: …esempio pag.2
La prima cosa da fare è di creare un nuovo workflow.
Per fare questo bisogna selezionare la tag “Contents”
del tool e premere il pulsante “Add 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”.
© Tecnoteca srl 2004
81. WORKFLOW: …esempio pag.3
Le transizioni definite sono quelle visualizzate
A noi ne servono 3.
Quindi una la eliminiamo (reject), e le altre
le andiamo a modificare.
Come prima cosa rinominiamo publish e
submit in togroup1 e togroup2
Quindi selezioniamo retract per
modificarlo.
© Tecnoteca srl 2004
82. WORKFLOW: …esempio pag.4
Le modifiche sulla transizione “retract” sono riportate in figura.
© Tecnoteca srl 2004
83. WORKFLOW: …esempio pag.5
Selezionare quindi le altre due transizioni (togroup1 e togroup2) ed apportare le
modifiche come in figura.
Ovviamente, ovunque
sia scritto group1
deve essere cambiato
con group2 nel caso
si stia modificando la
transizione togroup2.
© 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”.
Selezioniamo lo stato
“private” e definiamogli come
possibili le transizioni
“togroup1” e “togroup2”.
Gli stati “group1” e “group2” dovrebbero essere già a posto. Al limite si può editarli
per modificargli il titolo e renderlo uguale all'id.
© 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 di
destinazione”.
Dobbiamo quindi editare le due
transizioni e selezionare come
stato di destinazione lo stato
“group1” per “to_group1” e
“group2” per “to_group2”.
Il nostro nuovo workflow è completato.
Ora dobbiamo definire quale oggetto (tipo) deve seguirlo.
Per fare ciò basta semplicemente andare nella tab “Workflow” del nostro tool ed
associare al tipo “MyNews” il workflow che abbiamo appena definito.
© Tecnoteca srl 2004
86. RIASSUNTO
Nel corso di questa presentazione sono stati portati avanti i seguenti esempi:
1. E’ stato definito un nuovo tipo di News Item, e lo abbiamo chiamato MyNews.
2. E’ stato definito un nuovo slot chiamato portlet_mynews per gestire le MyNews, ed
è stato aggiunto al portale.
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).
Ora, per concludere, dobbiamo mettere tutto assieme e fare in modo che il nostro
nuovo slot visualizzi solo le news che sono nello stato uguale al gruppo a cui
appartiene l’utente autenticato.
© Tecnoteca srl 2004
87. CONCLUSIONE ESEMPI
Andare in custom ed aprire il file “portlet_mynews”
Aggiungere le linee evidenziate in grassetto:
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]);
Ora solo gli utenti che apparterranno al gruppo corrispondente allo stato della news
sarà in grado di visualizzarla.
© Tecnoteca srl 2004
88. Cache Management
Proseguiamo il nostro viaggio alla scoperta di Plone.
Sono presenti 2 oggetti per gestire la cache del portale, ed entrambi sono oggetti
presenti di default in Zope:
 HTTPCache
 RAMCache
(immagini e/o documenti)
(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.
© Tecnoteca srl 2004
89. Il Calendario
Nel tool portal_calendar vengono definiti gli oggetti che devono essere visualizzati.
Di default solo gli oggetti di tipo “Event”
vengono evidenziati nelle relative giornate
sullo slot del calendario.
Qui possiamo definire anche altri
oggetti perchè vengano visualizzati.
L'importante è che questi oggetti
abbiano definiti i 2 attributi
start e end.
© Tecnoteca srl 2004
90. Gestione degli indici dei contesti del portale
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 nuovi
indici 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 per
rimuovere oggetti invalidi.
© Tecnoteca srl 2004
91. Il Portal_factory tool
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
© Tecnoteca srl 2004
92. Il Portal_syndication tool
Questo tool abilita la possibilità di rendere disponibili informazioni contenute nel
nostro sito ad altri siti.
Una volta abilitata la syndication, nel nostro portale
appare una nuova tag per gli oggetti di tipo folder.
Qui possiamo abilitare il particolare folder per fornire
le 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
© Tecnoteca srl 2004
93. Cenni a Python
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.
© Tecnoteca srl 2004
94. Python: struttura
A parte i moduli standard, moduli aggiuntivi possono essere caricati tramite
la 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
© Tecnoteca srl 2004
95. Python: i tipi
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.
>>>
>>>
>>>
>>>
['a
MyList = []
MyList.append('a string')
MyList.append(13.7)
MyList
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'
© Tecnoteca srl 2004
96. Creazione nuovi prodotti
Creare nuovi prodotti è una delle caratteristiche di estensibilità di Plone/Zope.
Può essere fatto in diversi modi.
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.
Il mondo Plone ci fornisce strumenti per sviluppare secondo il punto 3.
Tale strumento si chiama Archetypes.
© Tecnoteca srl 2004
97. Archetypes
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.
2.
3.
definire la classe dell'oggetto (tipo) che vogliamo creare,
definire gli attributi (proprietà),
definire le funzioni di classe.
Una volta fatto ciò, basta aggiungere tale nuovo tipo come si fa per un qualsiasi altro
tipo di Plone.
Archetypes utilizzerà tali informazioni per generare automaticamente le pagine di
visualizzazione (view) e le form (edit) per la modifica dei contenuti.
© Tecnoteca srl 2004
98. Sviluppo con Archetypes: UML
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
 ArgoUML
 Poseidon
 ...
http://www.objectdomain.org
http://argouml.tigris.org
http://www.gentleware.com
© Tecnoteca srl 2004
99. Sviluppo con Archetypes: ArchGenXML.py
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.
© Tecnoteca srl 2004
100. Sviluppo con Archetypes: gli step
Progetto UML
File XMI
Prodotto Plone
Esportazione
in formato XMI
parsing del file XMI
per generare il
prodotto Plone
Aggiunta e modifica
delle pagine di
presentazione
Copia del prodotto
nella directory Product
di Zope
© Tecnoteca srl 2004
101. Creazione nuovo prodotto: esempio pag.1
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 Movie
Qui 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.
© Tecnoteca srl 2004
102. Creazione nuovo prodotto: ...esempio pag.2
2 . definizione degli attributi della classe (tipo)
© Tecnoteca srl 2004
103. Creazione nuovo prodotto: ...esempio pag.3
3. definizione delle operazioni
Per ogni azione
possono
venire
definiti il testo del
relativo
content_tag e i
permessi.
Operations
con
Tagged Values
“view”
generano
una
azione
(content_action)
definita dal file il
cui nome è inserito
nel campo Value
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.
© Tecnoteca srl 2004
104. Creazione nuovo prodotto: ...esempio pag.4
L'oggetto si presenterà in questo modo:
Effettuata l'esportazione su un file che
chiameremo, per esempio, movie.xml,
dobbiamo solo applicargli
il 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.
© Tecnoteca srl 2004
105. Creazione nuovo prodotto: ...esempio pag.5
Il nuovo prodotto a questo punto è disponibile per
essere installato in plone (portal_quickinstaller).
Una volta installato, lo possiamo
immediatamente utilizzare ed
aggiungere nel nostro contesto.
La pagina di inserimento è generata automaticamente
sulla base degli attributi inseriti nella definizione di
classe nel progetto UML.
© Tecnoteca srl 2004
106. Personalizzazione del sito
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.
© Tecnoteca srl 2004
107. Personalizzazione: il file “main_template”
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).
© Tecnoteca srl 2004
108. Personalizzazione: “le macro” definizione ed uso
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.
© Tecnoteca srl 2004
109. Personalizzazione: gli “slot”delle macro
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”
© Tecnoteca srl 2004
110. Personalizzazione: l'”header”
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>
© Tecnoteca srl 2004
111. Personalizzazione: il “portal_top”
File:
global_search_box
macro: quick_search
File: global_logo
macro: portal_logo
File:
global_sections
macro: portal_tabs
File:
global_pathbar
macro: path_bar
File:
global_personalbar
macro: personal_bar
© Tecnoteca srl 2004
112. Personalizzazione: il “portal_columns”
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_fetcher
macro: left_column
Alcuni richiami di macro
per il particolare contesto
File: portlet_fetcher
macro: right_column
© Tecnoteca srl 2004
113. Personalizzazione: il “footer”
File: footer
macro: portal_footer
File: colophon
macro: colophon
Abbiamo raggruppato queste due macro nella stessa sezione semplicemente
per una questione di coerenza.
È 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.
© Tecnoteca srl 2004
114. Personalizzazione: stili diversi in contesti diversi
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.
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 possibile metodo è quello di creare i nostri file di template nella directory
nomeprodotto_public del prodotto che abbiamo creato ed installato con
archetypes.
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.
© Tecnoteca srl 2004
115. Personalizzazione: utilizzo di editor HTML
Possiamo ora chiederci se sia possibile utilizzare strumenti di creazione di
pagine web esterni per modellare il portale quali DreamWeaver®, o altri.
La risposta è SI, pur con le dovute limitazioni.
Vediamo in dettaglio una delle limitazioni principali.
1.
è possibile agire sul file main_template per modificare il layout.
Generalmente definendo tabelle ed inserendo nelle varie celle ciò che
desideriamo.
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.
© Tecnoteca srl 2004
116. Plone e l’accessibilità
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
© Tecnoteca srl 2004
117. Documentazione e risorse disponibili
pag.1
www.zope.org
il sito della comunità internazionale di ZOPE
www.zope.it
il sito della comunità italiana di ZOPE
zdp.zope.org/
Zope Documentation Project
www.zopemag.com
una autorevole newsletter su ZOPE
www.zope.org/Resources/ZopePowered
elenco di siti realizzati in Zope
www.python.org
Python
© Tecnoteca srl 2004
118. Documentazione e risorse disponibili pag.2
www.plone.org
il sito della comunità internazionale di Plone
http://zope.it/Members/lallo/plone/pbithtml/index_html
Plone Book in versione italiana
http://plone.org/about/sites
elenco di siti realizzati in Plone
http://sourceforge.net/projects/plone
il progetto Plone presso SourceForge(tm)
© Tecnoteca srl 2004
119. Bibliografia
ZOPE
Pelletier Michel; Latteier Amos - McGraw-Hill Libri Italia, 2002
Zope Developer's Handbook
John D. Rowell - Sams 2002
Zope Bible
Scott Robertson, Michael Bernstein - John Wiley e Sons 2002
Zope: Web Application Development and Content Management
Steve Spicklemire, Kevin Friedly, Jerry Spicklemire, Kim Brand - New
Riders Publishing 2001
The Book of Zope
Beehive - No Starch Press 2001
Zope Web Application Construction Kit
Martina Brockmann, Sebastian Luhnsdorf, mar Pratt, Mark Pratt, Katrin
Kirchner - Sams 2001
The Zope Book
Amos Latteier, Michel Pelletier - New Riders Publishing 2001
© Tecnoteca srl 2004
Fly UP