jAPS – Plugin jpcalendar

Do It The jAPS Way

Eugenio Santoboni

Revisore 
AgileTec s.r.l.

William Ghelfi

Revisore 
Tzente s.r.l.

Rinaldo Bonazzo

Redattore della versione italiana in formato DocBook 4.5 
AgileTec s.r.l.

Giovanni Cocco

Revisione pre rilascio, update 2.0.8, update 2.0.10 
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".

The copyright holders make no representation about the suitability of this Document for any purpose. It is provided «as is» without expressed or implied warranty. If you modify this Document in any way, identify your resulting Document as a variant of this Document.

2011-02-22

Diario delle Revisioni
Revisione 0.92011-02-22MEM

Revisione per jAPS 2.2.0 version eversione plugin 1.3.

Revisione 0.82010-02-24GC

Revisione per jAPS versione 2.0.10, e versione plugin 1.2.

Revisione 0.72009-10-13GC

Revisione per jAPS versione 2.0.8, e versione plugin 1.1.

Revisione 0.62009-09-14GC

Revisione pre rilascio.

Revisione 0.52009-07-06RB

Cambio struttura capitoli

Revisione 0.42009-07-01RB

Aggiunto tabella riassuntiva caratteristiche plugin come richiesto da standard. Modificato impaginazione script db

Revisione 0.32009-06-22RB

Cambio PROJECT_NAME in mioportale utilizzo del tag filename

Revisione 0.22009-06-22RB

Seconda Versione docbook

Estratto

Lo scopo di questo documento è quello di fornire una descrizione completa della struttura del Plugin “jpcalendar”.


Lista delle Tabelle

2.1. Riassunto delle caratteristiche

Capitolo 1. Scopo del documento

Introduzione

Lo scopo di questo documento è quello di fornire una descrizione completa della struttura del Plugin “jpcalendar”.

A chi è destinato

Questo documento è destinato a chi intende conoscere le funzionalità del jAPSPlugin “jpcalendar”, e sta prendendo in considerazione la eventuale integrazione in un Ambiente di Produzione già funzionante o nel proprio Ambiente di Sviluppo (Progetto in IDE Eclipse).

Il documento è indirizzato sia a Sistemisti (responsabili di installazioni di Applicazioni su base jAPS2) che a Java Developers (con una conoscenza base del Framework jAPS2).

Prerequisiti

Per poter utilizzare efficacemente le informazioni contenute in questo documento, occorre un po' di esperienza su alcune tecnologie del web base: la piattaforma Java, gli strumenti di sviluppo Eclipse, il servlet engine Apache Tomcat, il database PostgreSQL, e del Framework jAPS2.

Riferimenti

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 .

È inoltre possibile consultare la documentazione presente in:

jAPS 2.0 entando Project - Sito per gli sviluppatori

Capitolo 2. Caratteristiche del Plugin

Caratteristiche del Plugin

Il Plugin jpcalendar visualizza un calendario mensile. I giorni del mese vengono visualizzati con i seguenti criteri:

  • la data odierna viene visualizzata in formato bold

  • i giorni senza eventi sono visualizzati in formato normale

  • i giorni con eventi sono visualizzati in formato sottolineato

    Questi giorni puntano alla pagina preposta alla visualizzazione degli eventi delle giornata selezionata.

data odierna

Se la data odierna ha degli eventi essa verrà visualizzata in formato bold e sottolineato

Tabella 2.1. Riassunto delle caratteristiche

CodiceNomeTipoVersione del PluginVersione di jAPS 2.0 entando
jpcalendarCalendarPurePlugin1.32.2.0 -
jpcalendarCalendarPurePlugin1.22.0.8 - 2.0.10
jpcalendarCalendarPurePlugin1.12.0.8

Capitolo 3. Installazione e Integrazione Plugin

Caratteristiche tecniche

Il plugin ha la caratteristica di PurePlugin, la sua installazione non modifica nessuna funzionalità presente nel sistema. Il modulo presenta una serie di interfacce per il Front-End, erogabili attraverso la Showlet External Framework. Tali interfacce non contengono nessun elemento di presentazione per consentirne la vestizione in una qualunque istanza specifica di jAPS 2.0 entando.

Descrizione del Pacchetto

Il pacchetto è composto dai seguenti componenti:

Readme
Contiene una breve descrizione del Plugin e la licenza
doc
Nella directory doc è presente la documentazione del Plugin
src/sql
La directory src/sql contiene gli script SQL da eseguire nel database del proprio portale
src/java
La directory src/java contiene le sorgenti java complete e i test jUnit del Plugin
src/webapp
Nella directory src/webapp sono presenti i file da integrare nel proprio portale

Integrazione in Ambiente di Produzione

Le successive attività sono da eseguire nell'applicazione a freddo, successivamente all'arresto del container.

Per eseguire l'installazione in una applicazione Web, da adesso in poi, chiameremo il nostro nuovo portale col nome di mioportale , in produzione basata sulla versione di jAPS 2.0 entando dichiarata compatibile con il plugin, i passi da eseguire sono i seguenti:

  • Copiare il contenuto della directory src/webapp/WEB-INF/lib del pacchetto dato in dotazione, all'interno della directory mioportale/WebContent/WEB-INF/lib/ in produzione.

  • Copiare il contenuto della directory src/webapp/WEB-INF/plugins del pacchetto dato in dotazione, all'interno della directory mioportale/WebContent/WEB-INF/plugins/ in produzione. Creare la directory plugins se non è presente.

  • Dopo aver modificato i parametri CONTENT_TYPE_ID, NOME_ATTRIBUTO_DATA_INIZIO e NOME_ATTRIBUTO_DATA_FINE, secondo le necessità, ed aver verificato il valore del campo version (deve essere uguale al valore di configVersion dei systemParams, lo script è stato scritto assumendo come versione production), eseguire le query contenute nel file portScript.sql (contenuto nella directory src/sql del pacchetto dato in dotazione) nel proprio db port, in una configurazione standard il database a nome mioportalePort.

Installazione in Ambiente di Sviluppo

Per eseguire l'installazione in un progetto Eclipse basato sulla versione di jAPS 2.0 entando dichiarata compatibile con il plugin, i passi da eseguire sono i seguenti (da adesso in poi, chiameremo il nostro nuovo progetto col nome di mioprogetto) :

  • Copiare il contenuto della directory src/webapp/WEB-INF/plugins del pacchetto dato in dotazione, all'interno della directory mioprogetto/WebContent/WEB-INF/plugins/.

  • Dopo aver modificato i parametri CONTENT_TYPE_ID, NOME_ATTRIBUTO_DATA_INIZIO e NOME_ATTRIBUTO_DATA_FINE, secondo le necessità, ed aver verificato il valore del campo version (deve essere uguale al valore di configVersion dei systemParams, lo script è stato scritto assumendo come versione production), eseguire le query contenute nel file portScript.sql (contenuto nella directory src/sql del pacchetto dato in dotazione) nel proprio db port, in una configurazione standard il database a nome mioprogettoPort.

  • Eseguire i task contenuti nel file portTestScript.sql (contenuto nella directory src/sql del pacchetto dato in dotazione) nel proprio db port di test , in una configurazione standard il database a nome mioprogettotestPort.

  • Copiare il contenuto della directory src/java/main/com/agiletec/plugins/ nella directory mioprogetto/src/com/agiletec/plugins/ del proprio progetto, (creare la directory plugins se non esiste).

  • Copiare il contenuto della directory src/java/test/test/com/agiletec/plugins/ nella directory mioprogetto/src/test/com/agiletec/plugins/ del proprio progetto, (creare la directory plugins se non esiste).

Capitolo 4. Configurazione e personalizzazione

Configurazione

Nei prossimi paragrafi vedremmo i passi di configurazione del plugin.

Passi di configurazione

Configurare opportunamente un contentType (DB nomePortalePort, tabella sysconfig, item 'contentTypes') contenente 2 attributi di tipo Date, per la data di inizio e per quella di fine.

Modificare opportunamente la seguente query in relazione al contentType inserito (vedi punto precedente) ed eseguirla nel DB nomeportalePort oppure editare direttamente la configurazione sul db

			
				INSERT INTO sysconfig (version, item, descr, config) 
				VALUES ('production', 'jpcalendar_Config', 'Configurazione Calendario', 
				'<calendarConfig>
				<contentType code="<CONTENT_TYPE_ID>" />
				<dateAttributes>
				<start name="<NOME_ATTRIBUTO_DATA_INIZIO>" />
				<end name="<NOME_ATTRIBUTO_DATA_FINE>" />
				</dateAttributes>
				</calendarConfig>');
			
			

Esempio 4.1. Esempio di configurazione

Supponiamo di avere all'interno del nostro portale il seguente contentType

			
<contenttype typecode="EVN" typedescr="Evento" viewpage="newsview" 
    listmodel="12" defaultmodel="2">
    <attributes>
    <attribute name="DataInizio" attributetype="Date" indexingtype="text" 
        searcheable="true" required="true" />
    <attribute name="DataFine" attributetype="Date" indexingtype="text" 
        searcheable="true" required="true" />
    <attribute name="Luogo" attributetype="Longtext" indexingtype="text" 
        searcheable="true"/>
    <attribute name="Oggetto" attributetype="Hypertext" indexingtype="text" 
        searcheable="true"/>
    <attribute name="CorpoTesto" attributetype="Hypertext" 
        indexingtype="text" searcheable="true"/>
    <attribute name="Immagine" attributetype="Image"/>
    <list name="ListaLinkCorrelati" attributetype="Monolist" 
        nestedtype="Link"/>
    <list name="ListaAllegati" attributetype="Monolist" 
        nestedtype="Attach"/>
    </attributes>
</contenttype>
			
			

La query sarà dunque:

			
INSERT INTO sysconfig (version, item, descr, config) 
VALUES ('production', 'jpcalendar_Config', 'Configurazione Calendario',
'<calendarConfig>
    <contentType code="EVN" />
    <dateAttributes>
        <start name="DataInizio" />
        <end name="DataFine" />
    </dateAttributes>
</calendarConfig>');
			


Nella tabella showletcatalog del database nomeportalePort, creare i record delle showlet.

			
INSERT INTO showletcatalog(
    code, titles, parameters, plugincode,
    parenttypecode, defaultconfig, locked)
VALUES ('jpcalendar_calendar', '<?xml version="1.0" encoding="UTF-8"?>
<properties>
    <property key="en">Calendar</property>
    <property key="it">Calendario</property>
</properties>', NULL, 'jpcalendar', NULL, NULL, 1);
INSERT INTO showletcatalog(
    code, titles, parameters, plugincode,
    parenttypecode, defaultconfig, locked)
VALUES ('jpcalendar_dailyEvents', '<?xml version="1.0" encoding="UTF-8"?>
    <properties>
        <property key="en">Events of the Day</property>
        <property key="it">Eventi del giorno</property>
    </properties>', NULL, 'jpcalendar', NULL, NULL, 1);
			

Configurazione delle pagine

Per il funzionamento del plugin jpcalendar è necessario creare una pagina contentente la showlet jpcalendar_calendar e un altra pagina contenente la showlet jpcalendar_dailyEvents. La showlet jpcalendar_calendar deve essere opportunamente modificata:

Esempio 4.2. Esempio di modifica della showlet jpcalendar_calendar.jsp

nel file originale jpcalendar_calendar.jsp, modificare la riga

			
<c:if test="${giorno.hasEvents}">
    <a href="<wp:url page="codice_pagina_eventi_del_giorno" >...
			

In:

			
				<c:if test="${giorno.hasEvents}"><a href="<wp:url page="listaEventi" >
			
			


La pagina listaEventi dovrà avere al suo interno la showlet Events of the Day (jpcalendar_dailyEvents.jsp). Vanno inoltre eventualmente personalizzate le etichette presenti nelle jsp, utilizzate coi tag “wp:i18n”.

Nella riga

				<wp:content contentId="${content}" modelId="XX"/>
				

della pagina Events of the Day è necessario configurare l'opportuno modelId (XX) per una lista di eventi.