La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca www.tecnoteca.it www.tecnoteca.com.

Presentazioni simili


Presentazione sul tema: "Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca www.tecnoteca.it www.tecnoteca.com."— Transcript della presentazione:

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

2 1. La storia di ZOPE Nel 1996 lazienda 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 lalta 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 lesperto 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 è lacronimo di Z Object Publishing Environment. A 6 anni di distanza si può giudicare vincente la scelta della Digital Creation. © Tecnoteca srl 2004

3 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

4 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

5 4. Larchitettura 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

6 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

7 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

8 7. Vantaggi nellutilizzo di ZOPE © Tecnoteca srl 2004 I vantaggi nellutilizzo 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

9 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

10 9. Installazione © Tecnoteca srl 2004 Zope, è un progetto OpenSource, ed è scaricabile dal sito 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 , è la

11 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

12 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 limportazione) var © Tecnoteca srl 2004

13 12. Linterfaccia 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.Zope Management Interface Vediamo brevemente le componenti di default costituenti la ZMI iniziale. © Tecnoteca srl 2004

14 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

15 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

16 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

17 16. ZMI – altri oggetti © Tecnoteca srl 2004 Altri interessanti oggetti presenti sono: error_log session Data Manager temp_folder

18 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

19 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

20 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

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

22 21. Gestione della sicurezza © Tecnoteca srl 2004 La gestione della sicurezza di Zope si basa su tre concetti fondamentali: ruoli permessi politiche di sicurezza

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

24 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

25 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 allindirizzo è possibile effettuare ricerche di prodotti per tipologia (es. e-commerce, esempi, patches etc.).http://www.zope.org/Products 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

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

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

28 27. Cenni ai tag DTML © Tecnoteca srl 2004 Esistono due tipi di tag DTML: Tag singolo (racchiuso fra due parentesi angolari) A blocchi (con due tag di apertura e chiusura blocco)

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

30 29. TAL, il linguaggio per le ZPT © Tecnoteca srl 2004 Tal definisce particolati attributi per i tag. Un esempio può essere: titolo della pagina Le istruzioni TAL più comuni sono: tal:define tal:attributes tal:replace tal:content tal:repeat tal:condition

31 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. Lobiettivo è rendere semplice la creazione, la pubblicazione ed il recupero di contenuti per qualsiasi richiesta.

32 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à nellapprendimento e delega dei compiti Maggior consistenza ed uniformità nello stile Granularità nel controllo del flusso informativo Versioning

33 32. Lambiente 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

34 33. PLONE © Tecnoteca srl 2004 PLONE è un sistema di amministrazione di contenuti (CMS) É dotato allorigine 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.

35 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

36 35. Installazione di PLONE © Tecnoteca srl 2004 PLONE è liberamente scaricabile da Nel caso di installazione su Windows possiamo evidenziare 2 metodi: codice eseguibile codice sorgente Lanciando linstallazione da eseguibile, verranno installate, fra le altre, le seguenti componenti base: Zope CMF Python

37 36. Attivazione © Tecnoteca srl 2004 L'aggiunta di un sito Plone avviene tramite la ZMI di Zope.

38 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

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

40 39. Aggiunta/Modifica contenuti © Tecnoteca srl 2004 Dopo la registrazione è possibile inserire documenti e oggetti nella home dellutente.

41 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

42 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

43 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 dellutente. Le principali tabs (azioni) sono: contenuti (contents) visualizza (view) modifica (edit) visualizza contenuti (folder listing) proprietà (properties) stato (state)

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

45 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 sullaspetto, 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...

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

47 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

48 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

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

50 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 delloggetto. Initial view name:azione di default per la visualizzazione iniziale) delloggetto. 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.

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

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

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

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

55 © Tecnoteca srl Riavviare Zope 2.Andare nel tool portal_quickinstaller 3.Selezionare il prodotto e premere install 54. PRODOTTI: Installazione Il contenuto della directory skins è visualizzabile tramite il tool portal_skins, nella entry corrispondente al nome del prodotto installato. E ovviamente possibile effettuare la customizzazione dei files qui presenti. (non è necessario riavviare Zope o reinstallare il prodotto) Dopo aver messo la cartella del prodotto nella ben nota directory Products del filesystem, i passi da compiere sono i seguenti:

56 © Tecnoteca srl 2004 L'azione definita per questo tool è la reconfig_form, che non è altro che lazione 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.

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

58 © Tecnoteca srl 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…

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

60 © Tecnoteca srl 2004 E importante che nella form sia presente una variabile hidden del tipo: 59. Le validazioni per le form 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.

61 © 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 allinterno di questo tool, è possibile definire lordine di preferenza di dove Plone cerca gli stili da applicare al nostro portale. Analizziamo ora i folders principali contenuti in questo tool.

62 © 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 allinstallazione di portal_transforms.

63 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

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

65 64. PORTAL_SKINS: …nel dettaglio pag.3 Proprietà per utilizzare il layout di Plone senza lausilio 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)

66 © 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 allinterno di una definizione di macro del tipo: … Il codice da inserire negli attributi left_slots o right_slots per richiamarlo è: here/portlet_name/macros/portlet

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

68 © Tecnoteca srl 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' 2.Qualora volessimo far apparire un titolo diverso per questo slot: Sostituire la direttiva News con My News

69 © Tecnoteca srl 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) 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.

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

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

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

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

74 © Tecnoteca srl 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.

75 © Tecnoteca srl 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.

76 © Tecnoteca srl 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.

77 © Tecnoteca srl 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

78 © Tecnoteca srl 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

79 © Tecnoteca srl 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 lattivazione Permessi che lutente deve avere per attivare la transizione Ruolo necessario per attivare la transizione Metodo applicato per la transizione

80 © Tecnoteca srl 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.

81 © Tecnoteca srl 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 tabTransitions. Per fare questo bisogna selezionare la tag Contents del tool e premere il pulsante Add Workflow.

82 © Tecnoteca srl 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.

83 © Tecnoteca srl WORKFLOW: …esempio pag.4 Le modifiche sulla transizione retract sono riportate in figura.

84 © Tecnoteca srl 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.

85 © Tecnoteca srl WORKFLOW: …esempio pag.6 A questo punto possiamo andare sulla tab States del tool. Rinominiamo gli stati pending e published in group1 egroup2. 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 statoprivate e definiamogli come possibili le transizionitogroup1 e togroup2.

86 © Tecnoteca srl 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 statogroup1 per to_group1 egroup2 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.

87 © Tecnoteca srl RIASSUNTO Nel corso di questa presentazione sono stati portati avanti i seguenti esempi: 2.E stato definito un nuovo slot chiamato portlet_mynews per gestire le MyNews, ed è stato aggiunto al portale. Ora, per concludere, dobbiamo mettere tutto assieme e fare in modo che il nostro nuovo slot visualizzi solo le news che sono nello stato uguale al gruppo a cui appartiene lutente autenticato. 1.E stato definito un nuovo tipo di News Item, e lo abbiamo chiamato MyNews. 3.Sono stati definiti due nuovi gruppi, group1 e group2. 4.E stato definito un nuovo workflow, my_workflow, (private, group1 e group2) e 3 transizioni (retract, togroup1 e togroup2).

88 © Tecnoteca srl 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.

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

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

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

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

95 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

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

97 96. Creazione nuovi prodotti © Tecnoteca srl Scrivere da zero l'intero codice del prodotto (operazione che richiede una buona conoscenza del sistema) 2.Scrivere il codice partendo da scheletri predefiniti di prodotti vuoti (operazione che richiede una conoscenza leggermente inferiore rispetto al metodo precedente). 3.Utilizzare tools di sviluppo che facilitano l'intera operazione e che facciano una parte del lavoro per noi. Creare nuovi prodotti è una delle caratteristiche di estensibilità di Plone/Zope. Può essere fatto in diversi modi. Il mondo Plone ci fornisce strumenti per sviluppare secondo il punto 3. Tale strumento si chiama Archetypes.

98 97. Archetypes © Tecnoteca srl 2004 Archetypes è l'evoluzione di un prodotto nato con il nome di CMFTypes. Semplifica la creazione di nuovi tipi di contesto (content types). Rende facile sia la creazione che la gestione di nuovi tipi. Nella sua forma più semplice è sufficiente: 1.definire la classe dell'oggetto (tipo) che vogliamo creare, 2.definire gli attributi (proprietà), 3.definire le funzioni di classe. Una volta fatto ciò, basta aggiungere tale nuovo tipo come si fa per un qualsiasi 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.

99 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: ObjectDomainhttp://www.objectdomain.orghttp://www.objectdomain.org ArgoUMLhttp://argouml.tigris.orghttp://argouml.tigris.org Poseidonhttp://www.gentleware.comhttp://www.gentleware.com...

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

101 100. Sviluppo con Archetypes: gli step © Tecnoteca srl 2004 Progetto UML 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

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

103 102. Creazione nuovo prodotto:...esempio pag.2 © Tecnoteca srl definizione degli attributi della classe (tipo)

104 103. Creazione nuovo prodotto:...esempio pag.3 © Tecnoteca srl 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.

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

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

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

108 107. Personalizzazione: il file main_template © Tecnoteca srl 2004 Questo file si trova in /portal_skins/plone_templates. La sua struttura è la seguente: Ma prima di analizzare questo file, diamo qualche nozione sul concetto di macro per il linguaggio ZPT (TAL).

109 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' Pippo Per richiamarla da un qualsiasi altro template mi basta includere la seguente direttiva: E' evidente come sia anche possibile utilizzare macro che facciano uso di variabili definite nel contesto.

110 109. Personalizzazione: gli slotdelle 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: Pippo Per utilizzarla basta includere la seguente direttiva: basettoni Detto ciò, torniamo ad analizzare il file main_template

111 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 e, viene richiamato facendo uso degli slots definiti nel file header.pt....fill_slot fill_slot...

112 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

113 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

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

115 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 tramite il modello main_template.

116 115. Personalizzazione: utilizzo di editor HTML © Tecnoteca srl 2004 Possiamo ora chiederci se sia possibile utilizzare strumenti di creazione di pagine web esterni per modellare il portale quali DreamWeaver ®, o altri. 1.è possibile agire sul file main_template per modificare il layout. Generalmente definendo tabelle ed inserendo nelle varie celle ciò che desideriamo. La risposta è SI, pur con le dovute limitazioni. Vediamo in dettaglio una delle limitazioni principali. 2.Non è possibile visualizzare un'anteprima completa della pagina. Questo perchè molti degli oggetti vengono visualizzati in base al contesto in cui ci si trova. Un'anteprima da DreamWeaver non può accedere alle macro di Plone. Bisogna però tenere presente che la potenzialità di Plone è nella sua gestione dei contenuti. Un modello di pagina viene definito una volta per tutte (magari anche più di un modello), ma poi raramente si va ad intervenire con continue modifiche.

117 116. Plone e laccessibilità © 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

118 117. Documentazione e risorse disponibili pag.1 © Tecnoteca srl il sito della comunità internazionale di ZOPE il sito della comunità italiana di ZOPE zdp.zope.org/ zdp.zope.org/ Zope Documentation Project una autorevole newsletter su ZOPE elenco di siti realizzati in Zope Python

119 118. Documentazione e risorse disponibili pag.2 © Tecnoteca srl il sito della comunità internazionale di Plone Plone Book in versione italiana elenco di siti realizzati in Plone il progetto Plone presso SourceForge(tm)

120 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


Scaricare ppt "Introduzione a ZOPE e PLONE a cura di Mauro Di Cecca www.tecnoteca.it www.tecnoteca.com."

Presentazioni simili


Annunci Google