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

© 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

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

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

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 ai prodotti aggiuntivi)

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

© Tecnoteca srl 2004

Methods:

index_html

standard_error_message

standard_html_header

standard_html_footer

Page templates:

standard_template.pt

16. ZMI – altri oggetti

© Tecnoteca srl 2004

Altri interessanti oggetti presenti sono:

error_log

session Data Manager

temp_folder

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

© 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

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.

21. Gestione della sicurezza

© Tecnoteca srl 2004

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

ruoli

permessi

politiche di sicurezza

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.

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

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

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.

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)

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>

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

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:define

tal:attributes

tal:replace

tal:content

tal:repeat

tal:condition

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.

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

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

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

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

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

36. Attivazione

© Tecnoteca srl 2004

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

37. La pagina iniziale

© Tecnoteca srl 2004

Logo

Ridimensionamento testo

Barra di ricerca

Footer

Stato e preferenze

Portal tabs

breadcrumbs

Left_slots

Right_slots

Main content

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.

39. Aggiunta/Modifica contenuti

© Tecnoteca srl 2004

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

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

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

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)

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:

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

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.

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

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

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.

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 oggetti

che possono essere

aggiunti al suo interno,

qualora selezionato il campo precedente.

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.

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.

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

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.

© Tecnoteca srl 2004

Riavviare Zope

Andare nel tool portal_quickinstaller

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:

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

© 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…

© 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

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.

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

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

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

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

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

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_styles

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

© 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

© 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:

© Tecnoteca srl 2004

Modificare il tipo di oggetto che lo slot deve gestire.

67. PLONE_PORTLETS: ..esempio pag.2

Sostituire la direttiva

portal_type='News Item'

con

portal_type='MyNews'

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

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

68. PLONE_PORTLETS: ..esempio pag.3

Cambiare il nome da

portlet_news

a

portlet_mynews (per esempio)

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

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

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

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

© 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 nuovi

attributi da assegnare agli utenti.

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

Portal_membership

© 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:

Creare almeno un nuovo gruppo.

(Meglio se di nome ‘group1’. Indifferente i ruoli che vengono assegnati)

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.

Selezionando uno stato (es. Published)

possiamo andare a modificarlo.

transitions

states

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

Possibili triggers che possono

attivare l’attivazione

Permessi che l’utente deve avere

per attivare la transizione

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

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

© Tecnoteca srl 2004

81. WORKFLOW: …esempio pag.3

Le transizioni definite sono quelle visualizzate

Come prima cosa rinominiamo publish e

submit in togroup1 e togroup2

Quindi selezioniamo retract per

modificarlo.

A noi ne servono 3.

Quindi una la eliminiamo (reject), e le altre

le andiamo a modificare.

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

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

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

Per fare ciò basta semplicemente andare nella tab “Workflow” del nostro tool ed

associare al tipo “MyNews” il workflow che abbiamo appena definito.

Il nostro nuovo workflow è completato.

Ora dobbiamo definire quale oggetto (tipo) deve seguirlo.

© Tecnoteca srl 2004

86. RIASSUNTO

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

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 nostro

nuovo slot visualizzi solo le news che sono nello stato uguale al gruppo a cui

appartiene l’utente autenticato.

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

Sono stati definiti due nuovi gruppi, group1 e group2.

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

© 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 news

sarà in grado di visualizzarla.

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.

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

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

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

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

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.

94. Python: struttura

© Tecnoteca srl 2004

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

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'

96. Creazione nuovi prodotti

© Tecnoteca srl 2004

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

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

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.

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:

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.

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

...

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.

100. Sviluppo con Archetypes: gli step

© Tecnoteca srl 2004

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

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

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

© Tecnoteca srl 2004

2 . definizione degli attributi della classe (tipo)

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.

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

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

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.

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

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.

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”

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>

111. Personalizzazione: il “portal_top”

© Tecnoteca srl 2004

File: global_logo

macro: portal_logo

File: global_search_box

macro: quick_search

File: global_sections

macro: portal_tabs

File: global_personalbar

macro: personal_bar

File: global_pathbar

macro: path_bar

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_fetcher

macro: left_column

Alcuni richiami di macro

per il particolare contesto

File: portlet_fetcher

macro: right_column

113. Personalizzazione: il “footer”

© Tecnoteca srl 2004

File: footer

macro: portal_footer

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

File: colophon

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

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.

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.

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

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.

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

117. Documentazione e risorse disponibili pag.1

© Tecnoteca srl 2004

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

118. Documentazione e risorse disponibili pag.2

© Tecnoteca srl 2004

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)

119. Bibliografia

© Tecnoteca srl 2004

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

1. ZOPE: la storia - da software proprietario a free softwa

Administrator

2003-04-01T09:22:19

tt_notebook