Bookmark and Share
Document Actions

Gestire i Tipi di Contenuto Attraverso la ZMI

Up one level
(al più presto disponibile)

Precedentemente avete visto tutti i tipi di contenuto che potete aggiungere, di default, in un sito Plone: pagine, immagini, nuovi elementi, e così via. Ma potete anche creare dei tipi di contenuto personalizzati attraverso la ZMI.

Volete un documento che abbia diversi tab in cima? Volete un documento che possa essere manipolato in modo diverso, che appaia in modo diverso e che richiami perfino qualcosa di completamente diverso? Nessun problema – potete modificare Plone all'occorrenza attraverso il web.

La definizione per creare un tipo di contenuto è solitamente dettata da cosa l'utente ha necessità di aggiungere, modificare e controllare. Si può tentare di iniziare a creare un tipo di contenuto per ogni tipo di oggetto, ma come per tutto ciò che riguarda lo sviluppo, dovete fare attenzione. Potrebbe essere possibile usare un tipo di contenuto invece di due, con solo poche differenze? Conoscere la risposta è questione di esperienza, ma  leggere ie  prossime sezioni vi aiuterà di certo.

Configurazione dei tipi di contenuto

Bene, il vostro sito Plone contiene dei tipi di contenuto, ma il sito Plone come fa a sapere in che modo sono configurati? La risposta è che gli attributi, i metodi, la sicurezza e gli skin di ogni tipo di contenuto sono definiti sul file di sistema in Python e al codice associato. Questa informazione è sufficiente per Plone per capire come usare il prodotto. L'unica eccezione, come avete potuto vedere, è il workflow, che è normalmente definito esternamente dal tipo di contenuto. Alcuni prodotti hanno il loro workflow che è aggiunto al tipo di contenuto per il loro funzionamento.

Ogni tipo di contenuto in Plone ha un'impostazione nello strumento portal_types. Nonostante ogni tipo di contenuto nello strumento portal_types abbia solo un'impostazione, i tipi di contenuto possono avere un illimitato numero di oggetti nel database. La configurazione viene riletta  quando necessario, così se cambiate la configurazione aggiornerete automaticamente tutti gli oggetti di quel tipo nel database.

Per accedere alle informazioni di registrate, andate alla ZMI (nella radice, che è www.mysite.com/manage), e cliccate sullo strumento portal_types. Vi verrà presentata una lista di tutti i tipi registrati in questo sito, come mostra la Figura 5.3. Molti di questi tipi di contenuto vengono riconosciuti come qualcosa che si può aggiungere all'interfaccia Plone tranne alcune eccezioni, come Sito Plone, Cartella Temp, e così via.

portal_types

Figura 5.3. Lo strumento portal_types mostra tutti i tipi di contenuto registrati in un sito Plone

Ognuno di questi oggetti è un istanza di un "factory type", che è il nome di un particolare tipo di configurazione. Cliccate uno qualsiasi di questi oggetti per accedere alle informazioni (Figura 5.4 per un esempio); ad esempio, quando cliccate su Event, ottenete la copia locale delle informazioni su questo tipo di contenuto. Potete modificarlo attraverso il Web per cambiare la sua configurazione. Ecco i campi che vedrete aprendo la configurazione di un tipo di contenuto:

  • Title: titolo del tipo di contenuto

  • Description: descrizione che appare per il tipo di contenuto. È utile se andate nella cartella contenuti e cliccate su Aggiungi senza selezionare un tipo di contenuto da aggiungere; vi apparirà una lista di tutti i tipi di contenuto organizzati per descrizione

  • i18n domain: per l'internazionalizzazione e la localizzazione

  • Icon: ID dell'icona usata per il tipo di contenuto

  • Product Metatype: è il nome della  classe del tipi di contenuto. Questo corrisponde al il tipo di contenuto di Zope

  • Product Name: nome del prodotto nel quale è definita la classe

  • Product factory: metodo chiamato per creare questo contenuto

  • Initial name view: non è usato in Plone

  • Implicity addable: indica se il contenuto può essere aggiunto a Plone. Se è selezionato allora il tipo di contenuto può essere aggiunto se non diversamente specificato

  • Filter content type:se il tipo di contenuto è una cartella, allora abilitare questa opzione per filtrare i tipi di contenuto che possono essere aggiunti dagli utenti a questa cartella

  • Allowed content types: se il tipo di contenuto può contenere altri elementi e l'opzione “filtra tipi di contenuto” è abilitata, solo le tipologie di tipi di contenuto specificate nella lista sono consentiti

  • Allow discussion: questo indica se gli utenti possono aggiungere commenti a questo tipo di contenuto

  • Default view method: indica il template di default

  • Available view methods: lista dei metodi di visualizzazione disponibili nel tipo di contenuto (nel menu Vista nella barra verde di Plone)

  • Fall back to default view: se selezionata permette il ritorno al visualizzazione di default, cioè se una visualizzazione selezionata (un template) non esiste, il sistema torna alla visualizzazione di default invece di restituire la pagina di errore NotFound.

riquadro eventi

Figura 5.4. Il riquadro delle informazioni per il tipo di contenuto Eventi (l'ultima parte del riquadro è stata tagliata)


Cambiare icone per un tipo di contenuto

Ora tratteremo alcuni aspetti di questa configurazione un po' più nel dettaglio, mostrandovi qualche esempio.Per vedere come è semplice cambiare le impostazioni del tipo di contenuto, ecco un esempio: come si può cambiare l'icona di un tipo? Diciamo che non vi piace l'icona che appare per identificare un certo tipo di contenuto. È una cosa abbastanza semplice: caricate una nuova immagine e poi fate in modo che il valore dell'icona sia impostato nel form descritto in precedenza.

Nota: le icone funzionano meglio se hanno uno sfondo trasparente e se le dimensioni sono di 16x16 pixel

Per cambiare l'icona di un tipo di contenuto, seguite questi semplici passi:

1. cliccate su portal_skins, poi “custom” e aggiungete una nuova immagine con un ID (ad esempio mynewsitem_icon.gif), come mostra la Figura 5.5

aggiunta immagine

Figura 5.5. Aggiungere una nuova immagine per modificare l'icona di un tipo di contenuto

2. poi nello strumento portal_types, selezionate il tipo di contenuto del quale volete modificare l'icona e impostate come valore dell'icona lo stesso ID dell'immagine che avete caricato (Figura 5.6 mostra il campo che dovete personalizzare).

Per verificare che l'icona sia stata modificata, andate nell'interfaccia Plone e cercate dove potrebbe apparire l'oggetto; per esempio fate una ricerca o guardate nel menu "Aggiungi nuovo elemento" (Figura 5.9 più avanti in questo capitolo come esempio).

campo icona

Figura 5.6. Cambiare il valore del campo Icona del tipo di contenuto.

Esaminare le actions

Le actions in Plone sono le attività che possono essere eseguite su un contenuto. Quando esaminate la configurazione di un tipo di contenuto nello strumento portal_types, vedrete un tab chiamato "actions" per ogni tipo di contenuto. La Figura 5.7 mostra le action che possono essere eseguite. Come appaiono le actions? La Figura 5.8 ti mostra alcune delle action standard per una pagina.

content types

Figura 5.7. Il riquadro ZMI che mostra le actions per la pagina content types.

tipo pagina

Figura 5.8. Alcune delle actions che puoi eseguire nel tipo "Pagina"

Come abbiamo menzionato prima, le actions sono memorizzate negli oggetti tool Molti tool contengono actions, ma in realtà non avete molti modi per trovare un'action. Se volete cambiare una particolare action sul vostro sito Plone, dovete trovare lo strumento che contiene l'action.

I seguenti punti vi aiuteranno a trovare l'action:

  • se state cercando un'action come visualizzare o modificare una parte di contenuto le trovate nello strumento portal_types all'interno del rispettivo tipo di contenuto

  • se state cercando un'action relativa al sito in generale, la trovate nello strumento portal_actions

  • se non riuscite a trovare l'action così facilmente guardate nello strumento relativo, ad esempio le actions "sign-in" e "log on" sono nello strumento portal_membership

  • se non riuscite a trovare l'action che state cercando, dopo aver provato i punti precedenti, andate su portal_actions per vedere la lista di strumenti e guardare in tutti i "gruppi di actions".

Plone ricerca le action per i tipi di contenuto nei seguenti modi:

  • per ogni oggetto, tutte le actions che vengono interrogate

  • per ogni action vengono selezionate le condizioni, i permessi e le proprietà visibili; in caso positivo viene restituita l'action

  • ogni action viene mostrata nell'interfaccia utente, di solito sotto forma di tab in alto nella pagina del tipo o in alto nel sito.

  • L'URL di questa azione è l'URL dell'oggetto con il nome dell'action attuale incollata alla fine.

Una volta trovata l'action, potete personalizzarla quanto volete. Per esempio, se volete aggiungere una nuova action come un tab verde per un documento, dovete cercare il posto corretto (per le actions che devono apparire come tab verdi per il tipo di contenuto, dovrete aggiungerle sotto la categoria object_tabs). Normalmente le actions sono usate come tab in Plone ma possono essere richiamate in modo programmatico, oppure possono essere usate in qualsiasi modo.

Esportare la vostra configurazione

Bene, con solo un paio di clic siete in grado di aggiungere una nuova azione! Ma che succede se fate tante personalizzazioni? Sarete in grado di riprodurre velocemente tutte le vostre modiche su un altro portale? La risposta è sì. Con Plone se modificate le actions definite nello strumento portal_actions o se aggiungete una nuova action, potete esportare tutte le modifiche usando lo strumento portal_setup. Potete esportare una configurazione (meglio conosciuta come profilo), importarla in un altro sito Plone, fare il back up della configurazione quando tutto funziona bene con un paio di clic e creare e comparare configurazioni diverse. Infine, potete anche includere la configurazione esportata in un pacchetto su file system installabile nel vostro sito Plone come un prodotto, come vedremo nei prossimamente. Bello, vero?

Dovete semplicemente andare nello strumento portal_setup nella ZMI del vostro sito Plone. Cliccando il tab Export potete esportare tutti gli step disponibili o solo quelli relativi agli strumenti coinvolti nella vostra personalizzazione. Cliccando il pulsante, vi verrà chiesto di scaricare un file compresso contenente il file XML che descrive la vostra configurazione. Una volta salvato il file tar.gz in locale potete andare su un altro portale Plone e, attraverso il suo strumento portal_setup, importare la vostra configurazione: per farlo cliccate il tab Import, andate alla fine del riquadro, usate il pulsante Sfoglia per caricare il file che avete salvato e poi cliccate su Import.

In questo modo dovreste aver importato correttamente le modifiche.

Generalmente potete esportare tutte le configurazioni “fatte a mano” sulla ZMI usando lo strumento portal_setup, non solo portal_actions! Perciò, se modificate qualche impostazione in portal_skins, portal_properties, portal_workflow e così via, non importa – con Plone, potete salvare, esportare e riprodurre le vostre impostazioni facilmente su un altro sito Plone.

Quindi, come si presenta un profilo? Ecco il codice XML che rappresenta la configurazione di default di Plone per portal_actions:

<?xml version="1.0"?>

<object name="portal_actions" meta_type="Plone Actions Tool"

xmlns:i18n="http://xml.zope.org/namespaces/i18n">

< action-provider name="portal_workflow"/>

< action-provider name="portal_types"/>

< action-provider name="portal_actions" />

<object name="object" meta_type="CMF Action Category">

<property name="title"/>

<object name="folderContents" meta_type="CMF Action" i18n:domain="plone">

<property name="title" i18n:translate="">Contents</property>

<property name="description" i18n:translate=""/>

<property name="url_expr">

string:${globals_view/getCurrentFolderUrl}/folder_contents

</property>

<property name="icon_expr"/>

<property name="available_expr">object/displayContentsTab</property>

<property name="permissions">

<element value="List folder contents"/>

</property>

<property name="visible">True</property>

</object>

...


Creare un nuovo tipo di contenuto da uno già esistente

Potreste aver bisogno di creare un tipo specifico di documento nel vostro sito web per il quale nessuno dei tipi di contenuto di default in Plone è adatto alle vostre necessità. Supponete di voler aggiungere dei comunicati stampa al vostro sito; prima usavate abitualmente un elemento news, ma ora vorreste applicare un diverso workflow per avere un aspetto diverso, ovvero aggiungendo una nota che appaia in automatico quando create un nuovo elemento. Come farlo in modo semplice?

La risposta è che potete riadattare un tipo di contenuto. Con riadattare si intende prendere le informazioni di un tipo di contenuto esistente e crearne delle copie leggermente differenti. Perciò, riadattare un tipo di contenuto può essere un'opzione veloce e semplice in questo caso (o in casi simili!).

Un grosso svantaggio di questo approccio è che non si può realmente cambiare molto a parte le azioni, gli skin e alcune impostazioni relative al tipo. Perciò, prima di procedere su questo percorso, siate consapevoli di essere limitati a questi punti; non potete aggiungere nuovi campi o attributi, ad esempio. Se volete fare di più, guardate come si programma un tipo di  contenuto nei prossimi capitoli.

Diciamo per adesso che vogliate realizzare dei comunicati stampa che siano simili alle notizie ma con alcune differenze:

  • nel menu a tendina il nome è Comunicati Stampa

  • l'icona è differente

  • il workflow è diverso da quello delle "notizie"

  • visualizzazione differente

  • mantiene la stessa struttura dati

  • mantiene il tipo di contenuto delle "notizie"

In questo esempio, mostreremo come prendere le informazione per un elemento notizia, caricarle nello strumento portal_types e poi rinominarlo "Comunicato Stampa". Questo vi permette di riutilizzare tutto il codice e le informazioni esistenti dando una nuove possibilità.

Andate nella ZMI e accedete a portal_types seguendo questi step:

  1. il modo più semplice di riadattare un tipo di contenuto già esistente è copiarlo e incollarlo in portal_types, poi rinominarlo, in questo caso Comunicato Stampa e infine configurarlo.

  2. come cambiare l'icona è già stato discusso in precedenza; caricate semplicemente l'immagine nella directory custom (su portal_skins) e poi modificate le proprietà dell'icona nella pagina portal_types per il nuovo tipo "Comunicato Stampa". Il risultato sarà qualcosa di simile a ciò che viene mostrato nella Figura 5.9

    modifica icona contenuto

    Figura 5.9. Potete facilmente modificare l'icona di un tipo di contenuto; la nuova icona verrà mostrata, per esempio, nel menu "Aggiungi un nuovo elemento".

  3. se andate su portal_workflow potete vedere che ogni tipo di contenuto ha il suo workflow. Siccome questo tipo di contenuto è nuovo, ora potete modificare il workflow solo per i comunicati stampa. Forse i comunicati stampa richiedono un stadio in più di revisione o devono essere pubblicati e spediti ad alcuni utenti. Potete creare un nuovo workflow, e assegnarlo ai comunicati stampa.

  4. aggiungere una nuova visualizzazione significa personalizzare il template della pagina newsitem_view e rinominarlo in modo significativo, come ad esempio pressrelease_view. Se volete modificare quel file per aggiungere alcune informazioni sull'azienda al fondo della pagina scrivi quanto segue:

    <h2>About the Press area</h2>

    <p>This news is made by our press area staff</p>

  5. dopo aver salvato le modifiche al vostro nuovo template, ritornate alle impostazioni per i comunicati stampa in portal_types e andate alla pagina Azioni. Modificate l'azione per visualizzare un comunicato stampa da newsitem_view a pressrelease_view. Ora ogni volta che che vedrete un comunicato stampa, verrà visualizzata quella pagina, come mostrato nella Figura 5.10.

comunicato stampa

Figura 5.10. La visualizzazione del nuovo tipo di contenuto Comunicato Stampa: mostra le note che sono state aggiunte nella configurazione. L'utente non deve aggiungere queste informazioni ogni volta, ma queste verranno mostrate quando l'elemento viene visualizzato.

by Dario Pollino last modified 2010-03-15 13:42
Contributors: Maurizio Delmonte, Davide Moro, Alice Narduzzo, Fabrizio Reale, Enrico Barra, Andrea Cannizzaro, Andrea D'Este, Maurizio Lupo, Giuseppe Masili, Dario Pollino, Matteo Sorba.