Do It The jAPS Way
Copyright © 2011 Tzente s.r.l.
Legal Notice
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the Appendix entitled "GNU Free Documentation License".
2011-03-03
| Diario delle Revisioni | ||
|---|---|---|
| Revisione 0.3 | 2011-03-03 | MEM |
|
Revisione per il rilascio di jAPS 2.2.0 | ||
| Revisione 0.2 | 2010-03-19 | MEM |
Revisione per il rilascio di jAPS 2.0.10 | ||
| Revisione 0.1 | 2009-07-09 | AD |
Prima bozza | ||
| Revisione 0.2 | 2009-08-03 | AF |
Revisione, pubblicazione seconda bozza | ||
| Revisione 0.3 | 2010-01-21 | ES |
Seconda Revisione | ||
Estratto
I Contenuti in jAPS si differenziano per struttura e sono organizzati in Tipi di Contenuto ciascuno dei quali esprime quali e quante informazioni avranno.
Per poter costituire i Tipi di Contenuto è necessario avere a disposizione diversi tipi di informazione gestibili dal sistema nelle loro forme base.
Entrano così in gioco i Tipi di Attributo di Contenuto ognuno con il compito di rappresentare l'informazione in una precisa forma.
Lista degli Esempi
- 2.1. attribute, esempio sintassi base
- 2.2. name, sintassi XML di esempio
- 2.3. attributetype, sintassi XML di esempio
- 2.4. required, sintassi XML di esempio
- 2.5. searcheable, sintassi XML di esempio
- 2.6. indexingtype, sintassi XML di esempio
- 3.1. Tipo Attach
- 3.2. Tipo Boolean
- 3.3. Tipo Checkbox
- 3.4. Tipo Date
- 3.5. Tipo Enumerator, base
- 3.6. Tipo Enumerato, separatore personalizzato
- 3.7. Tipo Enumerator, con extractorBean
- 3.8. Tipo Hypertext
- 3.9. Tipo Image
- 3.10. Tipo Link
- 3.11. Tipo Longtext
- 3.12. Tipo Monotext
- 3.13. Tipo Number
- 3.14. Tipo Text
- 3.15. Tipo Text, con minLength e maxLength
- 3.16. Tipo Text, con regexp
- 3.17. Tipo ThreeState
- 4.1. Tipo List, lista di attributi semplici
- 4.2. Tipo List, sintassi Monolist
- 4.3. Composite, sintassi base
- 4.4. Tipo Monolist di Composite, scheda persona con padre
Questo documento illustrerà i Tipi di Attributo di Contenuto nel dettaglio delle caratteristiche e delle configurazioni guidando nella scelta e nell'utilizzo.
La lettura è consigliata a chi sta effettuando lo studio dell'informazione per un nuovo portale e si sta preparando alla definizione i Tipi di Contenuto.
Inoltre potrà essere utile per modificare la configurazione esistente.
Ulteriori informazioni possono essere richieste attraverso la mailing list ufficiale Google Group "japs-platform".
Per mandare un messaggio ai membri della lista, invia una mail a <japs-platform@googlegroups.com>.
È inoltre possibile consultare la documentazione presente in:
Lo studio dell'organizzazione dell'informazione e del contenuto è una parte importante dello sviluppo di un portale web ed è fondamentale comprendere che un portale funziona se i suoi contenuti sono ben organizzati.
Organizzare i contenuti in jAPS significa mettere insieme i tipi di informazione necessari per costruire la struttura dei Tipi di Contenuto.
I Tipi di Attributo di Contenuto rappresentano l'informazione nella sua minima forma; mettendoli insieme si strutturano le informazioni nel portale.
Dopo aver effettuato lo studio sull'informazione e pensato a quali Tipi e ciò che dovranno rappresentare, si procede a tradurre queste necessità in XML per jAPS.
I Tipi di Attributo di Contenuto sono elementi contenuti nel XML della configurazione dei Tipi di Contenuto, nel database Port, mappata nel campo "config" del record con item "contenttypes" della tabella "sysconfig".
Di seguito si farà sempre riferimento a tale XML.
La configurazione di ogni elemento Tipo di Attributo prevede che siano specificati degli attributi che ne determinano le proprietà.
Gli attributi comuni sono:
-
name -
required -
searcheable -
indexingtype
Esempio 2.1. attribute, esempio sintassi base
<attribute name="" required="" searcheable="" indexingtype="">
E' il nome dell'attributo, si utilizza per identificare l'informazione.
Il name deve sempre iniziare con la prima lettera maiuscola e non può contenere spazi e caratteri speciali.
Name è obbligatorio e il suo valore è arbitrario.
Esempio 2.2. name, sintassi XML di esempio
<attribute name="Titolo".......... <attribute name="Autore".......... <attribute name="DataPubblicazione"..........
Dichiara la natura dell'attributo.
Il suo valore deve essere uno a scelta tra quelli fra i Tipi di Attributo di Contenuto presenti nel sistema.
Esempio 2.3. attributetype, sintassi XML di esempio
<attribute name="Titolo" attributetype="Text" /> <attribute name="Autore" attributetype="Monotext" /> <attribute name="Data" attributetype="Date" />
Dichiara se l'attributo è obbligatorio, ovvero è un campo che deve essere sempre riempito.
Viene utilizzato per le informazioni caratteristiche, senza le quali il Tipo di Contenuto non avrebbe senso.
Impedisce di avere Contenuti incompiuti e frammentari.
Può assumere due valori: true o false. Quando required non è presente nella configurazione l'attributo è considerato come non obbligatorio prendendo il valore di false come valore predefinito.
Esempio 2.4. required, sintassi XML di esempio
Se stabilissimo che le informazioni necessarie per formare un contenuto Notizia sono il titolo, la data del fatto e il testo dell'articolo dovremmo dichiararle come obbligatorie.
<!-- attributo obbligatorio --> <attribute name="Titolo" attributetype="Text" required="true" /> <!-- attributo non obbligatorio --> <attribute name="Autore" attributetype="Monotext" /> <!-- attributo obbligatorio --> <attribute name="Data" attributetype="Date" required="true" />
Dichiara se l'attributo può essere utilizzato per ordinare o filtrare liste di contenuti.
Questa proprietà consente di poter aggiungere filtri basati su quel Tipo di Attributo durante la pubblicazione di liste di contenuti o per l'utilizzo con il tag wp:contentList.
I valori possibili sono: true o false. Il valore predefinito è false.
Esempio 2.5. searcheable, sintassi XML di esempio
La creazione dei filtri può avvenire ed avere senso solo quando i valori dell'informazione sono ordinabili.
<attribute name="Titolo" attributetype="Text" searcheable="true" <attribute name="Data" attributetype="Date" searcheable="true" <attribute name="Fotografia" attributetype="Image"
Ha senso ordinare in modo crescente i titoli, poiché ha senso creare un insieme ordinato alfabeticamente di stringhe, lo stesso vale per le informazioni di tipo numerico ordinate in modo crescente e decrescente.
Dichiara se l'informazione deve essere indicizzata dal motore di ricerca.
Gli attributi indicizzati dal motore di ricerca saranno utilizzati come chiavi di ricerca per trovare i contenuti.
I valori possibili sono: text e unstored. Il valore di default è unstored.
Altri valori dipendono dall'implementazione dell'indicizzazione. Attualmente il motore di ricerca indicizza solo i tipi testuali.
Esempio 2.6. indexingtype, sintassi XML di esempio
<attribute name="Titolo" attributetype="Text" indixingtype="text" ... <attribute name="Data" attributetype="Date" indixingtype="text" ... <attribute name="Fotografia" attributetype="Image" ...
Titolo e Data saranno indicizzati, Fotografia sarà escluso dall'indicizzazione.
Sommario
Rappresenta l'informazione sotto forma di file, che sarà allegato al Contenuto.
è composto da un URL corrispondente al file desiderato e da un testo che può indicare il titolo o la descrizione.
In fase di redazione sarà possibile selezionare un allegato già presente nell'Archivio delle Risorse o inserirne uno nuovo.
Rappresenta l'informazione in forma booleana, esprime il concetto di vero o falso.
Nell'interfaccia per la compilazione del Contenuto verranno visualizzati due radio button che consentiranno la selezione dei valori "si/no".
Esempio 3.2. Tipo Boolean
<attribute name="Importante" attributetype="Boolean" /> <attribute name="EventoPermanente" attributetype="Boolean" />
Rappresenta l'informazione in forma booleana, vero o falso.
Può essere utilizzato alternativamente al Boolean.
Nell'interfaccia per la compilazione del Contenuto verrà visualizzato un checkbox che consentirà di "attivare" e "disattivare".
Esempio 3.3. Tipo Checkbox
<attribute name="Importante" attributetype="Checkbox" /> <attribute name="EventoPermanente" attributetype="Checkbox" />
l'informazione in forma di data.
Molto utilizzata quando si deve collocare nel tempo un'informazione.
Spesso utilizzata per specificare data di fine pubblicazione utile per filtrare i contenuti nelle liste automatiche
Esempio 3.4. Tipo Date
<attribute name="DataEvento" attributetype="Date" searcheable="true" />
<attribute name="DataFinePubblicazione" attributetype="Date" searcheable="true" />
Rappresenta un'informazione testuale la cui scelta è obbligata fra un insieme predefinito.
Nel CMS la selezione avviene tramite una select.
E' di tipo monolingua, ovvero esiste un valore unico per tutte le lingue.
Supporta gli attributi standard, ed ha due attributi aggiuntivi:
-
separator I valori vanno elencati separati gli uni dagli altri da un separatore. Il valore predefinito è la virgola
",".-
extractorBean Quando specificato indica il nome del bean estrattore degli items che verranno aggiunti alla lista specificata staticamente. L'estrattore è definito nella configurazione di Spring Framework.
Un caso di utilizzo una lista di Nazioni.
Esempio 3.5. Tipo Enumerator, base
<attribute name="Country" attributetype="Enumerator"> <![CDATA[Italy,France,Germany,U.K.,Switzerland,Belgium,Netherland]]> </attribute>
Esempio 3.6. Tipo Enumerato, separatore personalizzato
<attribute name="Country" separator="-" attributetype="Enumerator"> <![CDATA[Italy-France-Germany-U.K.-Switzerland-Belgium-Netherland]]> </attribute>
Esempio 3.7. Tipo Enumerator, con extractorBean
<attribute name="Country" extractorBean="MyItems" attributetype="Enumerator"> <![CDATA[Italy,France,Germany,U.K.,Switzerland,Belgium,Netherland]]> </attribute>
Rappresenta l'informazione in forma di ipertesto in grado di contenere tag html.
Per farne un buon uso, è consigliato l'utilizzo dei soli tag che forniscono esclusivamente significato e non costituiscono elementi grafici. Ad esempio: p,b,em ed a che semplicemente aggiungono semantica al testo.
Nei rispettivi Contenuti verrà visualizzato una textarea per l'inserimento dell'ipertesto per ciascuna lingua presente. Quando l'editor FCKEditor è attivo sarà possibile inserire velocemente link esterni, alle pagine ed ai contenuti esistenti.
Rappresenta l'informazione sotto forma di immagine.
Durante la compilazione del Contenuto sarà possibile accedere all'Archivio delle Immagini e scegliere l'immagine desiderata.
Sarà necessario specificare la descrizione di corredo all'immagine.
Solitamente gli attributi di tipo Image non vengono indicizzati e non vengono resi disponibili per nei filtri per le liste automatiche.
un collegamento ipertestuale.
Viene utilizzato quando è necessario specificare un link, durante la compilazione del Contenuto; sarà possibile inserire tre tipi di link: esterno, a pagina e a contenuto.
Con il link esterno si indica un URL che sta al di fuori del portale jAPS.
Il link a pagina si riferisce ad una pagina del portale.
Mentre il link a contenuto fa rifermento ad un singolo contenuto presente.
Esempio 3.10. Tipo Link
<attribute name="IndirizzoWebAziendale" attributetype="Link" /> <attribute name="Homepage" attributetype="Link" />
Rappresenta l'informazione in forma di semplice testo.
multilingua e si utilizza per piccole descrizioni o testi che sono più lunghi di un titolo.
Supporta maxLength, minLength e regexp. Vedere l'attributo Text (la sezione chiamata «Text»)
Rappresenta l'informazione in forma testuale.
stretto parente di Text con l'unica differenza di essere monolingua.
Si utilizza per quelle informazioni che hanno un valore ed un senso unico in tutte le lingue.
Anche questo supporta maxLength, minLength e regexp. Vedere Text (la sezione chiamata «Text»).
Rappresenta l'informazione in forma numerica.
monolingua, ovvero un valore unico per tutte le lingue.
Si utilizza quando l'informazione deve essere espressa con un solo numero. Si pensi al numero di pratica, al codice utente oppure al numero di chilometri di distanza.
Esempio 3.13. Tipo Number
<attribute name="NumPratica" attributetype="Number" required="true" /> <attribute name="CodiceUtente" attributetype="Number" /> <attribute name="KmDalCentro" attributetype="Number" />
Rappresenta l'informazione sotto forma di testo multilingua.
Sarà possibile inserire un valore in ciascuna lingua configurata.
Viene utilizzato per i più diversi scopi come titoli, nomi, luoghi.
Esempio 3.14. Tipo Text
<attribute name="Titolo" attributetype="Text" /> <attribute name="LuogoEvento" attributetype="Text" />
Oltre a supportare required, indexingtype e searcheable, proprietà comuni a tutti i Tipi di Attributi, ha altre tre possibili configurazioni:
- Lunghezza Minima
- Esprime la lunghezza minima del testo (in caratteri). un attributo dell'elemento
<attribute>. - Lunghezza Massima
- Esprime la lunghezza massima del testo (in caratteri). un attributo dell'elemento
<attribute> - Validazione Espressione Regolare
- Esprime un modello al quale il testo deve aderire. Tale configurazione va inserita come elemento figlio di
<attribute>.
Esempio 3.15. Tipo Text, con minLength e maxLength
<attribute name="Abstract" attributetype="Text" minLength="10" maxLength="100" />
Esempio 3.16. Tipo Text, con regexp
<attribute name="EMail" attributetype="Text"> <regexp><![CDATA[[.+@\w.*]]></regexp> </attribute>
Rappresenta un'informazione che può assumere i valori si,no e non specificato/nessuno.
Si utilizza come il Boolean con l'unica differenza che è contemplato anche il terzo valore non specificato/nessuno.
Nella compilazione di un Contenuto di quel genere si potrà scegliere quando non si è in possesso l'informazione corretta.
Un esempio pratico è la possibilità di introdurre animali in un dato luogo, esempio in un albero:
Esempio 3.17. Tipo ThreeState
<attribute name="PermessoAnimali" attributetype="ThreeState" required="true" />
Fino ad ora abbiamo trattato quei Tipi che potevano rappresentare un solo tipo di informazione per volta.
Ma come si procede quando si presenta la necessità di avere un'informazione che ha senso compiuto perché formata da più tipi semplici?
Potrebbe essere accettabile dal punto di vista funzionale inserire i Tipi di Attributo Semplice uno di seguito all'altro. Si riuscirebbe comunque a completare il Contenuto con le informazioni richieste e ad utilizzarle per la visualizzazione nel portale.
Tuttavia non è corretto dal punto di vista formale, poiché gli elementi che compongono quel tipo di informazione rimarrebbero slegati e non contestualizzati.
Per soddisfare questa esigenza sono presenti i Tipi di Attributo Composti, che mettono insieme più Tipi di Attributo di Contenuto Semplici.
Questo tipo di attributo rappresenta un'insieme di liste indipendenti di Attributi elementari Omogenei, ciascuna associata ad una delle lingue di sistema definite.
La conseguenza immediata di questa caratteristica è che questo tipo di lista può gestire solo Attributi elementari di tipo Monolingua.
In ciascuna Lista componente l'attributo List, è possibile definire un numero variabile di elementi;
dopo aver definito il Tipo di Attributo elemento che la lista gestirà, sarà possibile decidere arbitrariamente per ciascun
Contenuto quanti elementi saranno presenti in ciascuna lista associata a ognina delle lingue di sistema.
Per la realizzazione delle configurazione XML si utilizza l'elemento <list>.
<list> supporta le proprietà standard name e required e attributetype.
Per attributetype si deve specificare List.
Non sono supportati invece le proprietà indexingtype e searcheable.
presente una proprietà per specificare il tipo degli elementi della lista chiamata nestedtype.
Per nestedtype si deve mettere un Tipo di Attributo monolingua.
Esempio 4.1. Tipo List, lista di attributi semplici
<list name="Allegati" attributetype="List" nestedtype="Monotext" />
Questo attributo rappresenta una lista comune per tutte le lingue di sistema.
Questo tipo di lista può gestire sia Attributi elementari di tipo Monolingua che Multilingua.
Si utilizza in tutti quei casi che è richiesta una lista unica per tutte le lingue.
Supporta le stesse proprietà di List, fare riferimento a la sezione chiamata «List»
Esempio 4.2. Tipo List, sintassi Monolist
<list name="Documenti" attributetype="Monolist" nestedtype="Attach" /> <list name="LinkUtili" attributetype="Monolist" nestedtype="Link" />
un agglomerato di attributi semplici.
Il suo compito è quello di descrivere una lista di informazioni, ciascuna composta da più attributi semplici.
Come per le altre liste, per la realizzazione della configurazione XML si utilizza l'elemento <list>.
La particolarità è che all'interno di <list> si dovranno posizionare elementi figli di tipo <attribute>.
Le proprietà dei Tipi di Attributo figli rimangono immutate.
Esempio 4.3. Composite, sintassi base
<list name="" attributetype="Monolist" nestedtype="Composite"> <attribute name="" attributetype="" required="" indexingtype="" /> [...] <attribute /> </list>
Esempio 4.4. Tipo Monolist di Composite, scheda persona con padre
Si immagini di dover descrivere sotto forma di informazione alcuni dati del "padre" di una persona. La persona è descritta nel Tipo di Contenuto "Persona" che avrà un attributo Padre composto da due attributi semplici: Nome ed Età. Rispettivamente di tipo Monotext e Number.
Si procede dichiarando Padre come Tipo di Attributo Composito ed innestando gli attributi Nome ed Età.
<list name="Padre" attributetype="Monolist" nestedtype="Composite"> <attribute name="Nome" attributetype="Monotext" required="true" /> <attribute name="Eta" attributetype="Number" required="true" /> </list>
Dichiarati Nome ed Eta obbligatori il sistema interpreterà come corretta l'informazione Padre quando entrambi saranno presenti oltre che quando gli elementi figli saranno espressi correttamente (nel tipo Number non possiamo inserire lettere).
