Salta al contenuto
prova
Newsletter
Blog

Aggiungere una pagina di configurazioni al nostro portlet

Salve a tutti!

Potete trovare questo articolo e tanti altri anche sul blog di d'vel

Tutto il codice che troverete in questo articolo è preso dal portlet sviluppato dalla nostra azienda “My Workflow Status” (http://www.liferay.com/it/marketplace/-/mp/application/23590323). 

Il portlet è gratuito ed open source e il codice sorgente può essere scaricato direttamente dal nostro repository (https://github.com/3fconsulting/status-workflow-portlet).

Ho scritto questo articolo allo scopo di condividere la mia esperienza di sviluppatore e per spiegare come liferay supporti il programmatore anche nelle più comuni e semplici attività di configurazione del proprio prodotto.

Ok basta con le chiacchere e con la pubblicità :-D cominciamo con l’articolo.

 

 

Liferay Portlet Mode Config

 

Un’interessante aggiunta ai portlet mode definiti nello standard fatta da liferay è quella di aver introdotto il Portlet Mode “Config”.

Tale modalità ci viene in aiuto quando vogliamo creare portlet parametrizzabili e poter rendere dinamico il loro funzionamento in base alle esigenze dell’utilizzatore finale.

 

L’immagine mostra come accedere alle configurazioni del portlet.

 

Come potrete notare la nostra configurazione risulta pienamente integrata in liferay.

 

 

Modifichiamo i file di configurazione

 

Cominciamo con la modifica dei nostri file di configurazione che possiamo trovare nella cartella “docroot/WEB-INF” del portlet.

Aggiungete al file liferay-portlet.xml la seguente riga di codice per comunicare a liferay di attivare la modalità config per il portlet:

<portlet>   

< configuration-action-class > com.liferay.portal.kernel.portlet.DefaultConfigurationAction

</ configuration-action-class >

</portlet>

     

Modificate il file portlet.xml per indicare a liferay dove recuperare la “jsp page” per la gestione delle configurazioni.

 

<portlet>

< init-param >

< name > config-jsp </ name >

      < value > /html/statusworkflow/configuration.jsp </ value >

</ init-param >

</portlet>

 

Le configurazioni sono terminate e possiamo passare al codice.

 

Modifichiamo le nostre jsp

 

Il codice che andremo ad analizzare gestisce le seguenti due configurazioni:

  1. “statusworkflow-color-count-tasks-user-roles-full” configurazione di tipo “String” gestita da un input di tipo “Text”;
  2. “statusworkflow-show-tooltip” configurazione di tipo “Boolean” gestita da un select. 

Prima di creare la pagina delle configurazioni definiamo nella init.jsp il codice per recuperare le preferences del portlet (nella classe PortletPreferences troverete le configurazioni salvate con la configuration.jsp)

 

<%@ taglib uri= "http://liferay.com/tld/ui" prefix= "liferay-ui"%>

<%@ taglib uri= "http://liferay.com/tld/au" prefix= "aui"%>

<%@ page import= "com.liferay.portlet.PortletPreferencesFactoryUtil" %>

<%@ page import= "javax.portlet.PortletPreferences" %>

<%@ page import= "com.liferay.portal.kernel.util.Validator" %>

<%@ page import= "com.liferay.portal.kernel.util.ParamUtil" %>

<%@ page import= "com.liferay.portal.kernel.util.StringUtil" %>

<%

PortletPreferences preferences = null ;

if (renderRequest != null ) {

      preferences = renderRequest.getPreferences();

}

 

String portletResource = ParamUtil.getString(request, "portletResource" );

 

if (Validator.isNotNull(portletResource)) {

      preferences = PortletPreferencesFactoryUtil.getPortletSetup(request, portletResource);

}

%>

 

N.B. Il suddetto codice può essere scritto direttamente nella jsp di configurazione ma, visto che sarà utile anche nella jsp della portlet, è sempre utile definire tutte le nostre operazioni comuni all’interno di un’unica jsp che poi includerete in tutte le altre pagine.

Ora non dovete fare altro che creare il file configuration.jsp nella cartella “docroot/html/statusworkflow”.

Il codice seguente indica come includere la init.jsp e come recuperare e memorizzare in variabili locali le configurazioni.

 

<%@ page import= "com.liferay.portal.kernel.util.GetterUtil" %>

<%@ page import= "com.liferay.portal.kernel.util.StringPool" %>

<%@ include file= "/html/statusworkflow/init.jsp" %>

 

<%

String colorCountTasksUserRolesFull = preferences.getValue("statusworkflow-color-count-tasks-user-roles-full", StringPool.BLANK);

     

boolean showTooltip = GetterUtil.getBoolean(preferences.getValue("statusworkflow-show-tooltip" null ), Boolean.TRUE);

%>

Per salvare le configurazioni bisogna includere nella configuratiuon.jsp:

< liferay-portlet:actionURL var= "configurationURL"

      portletConfiguration= "true" >

</ liferay-portlet:actionURL >

< aui:form method= "post" action= " <%=configurationURL.toString()%> "

      name= "fm" >

<aui:input name="<%=Constants.CMD%>" type="hidden" value="<%=Constants.UPDATE%>" />

< aui:input label= "label-statusworkflow-viewmode-color-count-tasks-user-roles-full" name= "preferences--statusworkflow-color-count-tasks-user-roles-full--"

value = " <%= colorCountTasksUserRolesFull %> " size= "15" maxlength= "15" />

                 

< aui:select label= "label-statusworkflow-show-tooltip"

name = "preferences--statusworkflow-show-tooltip--" >

< aui:option selected= " <%=showTooltip%> " label= "yes" value= " <%=Boolean.TRUE%> " />

< aui:option selected= " <%=!showTooltip%> " label= "no" value= " <%=Boolean.FALSE%> " />

</ aui:select >

 

      <aui:button-row>

            < aui:button type= "submit" />

      </ aui:button-row>

</ aui:form >

  •  Un action url utilizzato dal form per inviare le configurazione al sistema;
  • Il form con:
    • le configurazioni: un campo di testo e un campo di selezione legati alle due variabili recuperate;
    • un pulsante per l’invio del form;
    • la action di update.

A questo punto liferay farà tutto il “lavoro sporco” ovvero salverà nel database le configurazioni per questa specifica istanza del portlet. 

 

N.B. queste non saranno propagate ad altre istanze del portlet né in questa pagina né in altre pagine del portale.

Per recuperare ed utilizzare le configurazioni nella view.jsp (o in altre jsp) includete la init.jsp e recuperate e memorizzate le variabili come fatto precedentemente nella creazione della configuration.jsp.

 

Note sullo sviluppo

Per aggiungere configurazioni al portlet è necessario accertarsi che:

  1. Siano utilizzati i componenti del Form di Alloy UI;
  2. il “name” utilizzato nei nostri componenti del form sia preceduto con preferences-- e finisca con --.

N.B. Liferay salverà il nome della preferenza senza il prefisso e suffisso detto sopra.

 

Consigli per lo sviluppo

Per portlet semplici composte da poche pagine, in cui le configurazioni sono utilizzate in tutte le nostre jsp, potrebbe essere utile includere la memorizzazione delle variabili locali direttamente nella init.jsp. Questo consentirà di ottimizzare il tempo di modifica, aggiunta e creazione di nuove configurazioni.

 

Spero che questo articolo possa esservi d’aiuto per lo sviluppo dei vostri portlet.

 

Rimango a disposizione per chiarire ogni eventuale dubbio.

 

Al prossimo articolo!

Servizio Avvio Tomcat Linux

Per far partire Tomcat su sistemi Linux bisogna fare uno script un po' particolare, perchè Tomcat come processo non restituisce il pid di funzionamento percui bisogna andare a cercare il pid di tomcat tramite parole chiave del processo in esecuzione.

Questo è molto utile per chi vuole avere più di un istanza di Tomcat sul server.

Di seguito il file di avvio e stop del servizio.

#!/bin/bash
#
### BEGIN INIT INFO
# Provides:          Fenalc Copia Conforme
# Required-Start:    $local_fs $remote_fs $network
# Required-Stop:     $local_fs $remote_fs $network
# Should-Start:      $named
# Should-Stop:       $named
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start Fenalc Copia Conforme.
# Description:       Start the FenalcPortal servlet engine.
### END INIT INFO

##VARIABLES
#path del programma

DIR=/HOME_TOMCAT/
#comandi di startup e shutdown
CMDSTART= bin/startup.sh
CMDSTOP= bin/shutdown.sh
#utente di startup
USER=USER_TO_START

#prefisso di comando nel caso ci sia bisogno del sudo
if test $(whoami) = $USER; then
    CMD_PREFIX="";
else
    CMD_PREFIX="sudo -u $USER";
fi

#echo "$(whoami)" >> /root/result.txt
#echo "$USER" >> /root/result.txt
#echo "$CMD_PREFIX $DIR$CMDSTART" >> /root/result.txt


####START SCRIPT

chown -R $USER:$USER $DIR
PID=$(ps aux |grep java | grep $DIR | awk '{print $2}')

echo "$(ps aux |grep java | grep $DIR)"

start() {
        if [ -z "$PID" ]
        then
                $CMD_PREFIX $DIR$CMDSTART
        else
                echo "Questa istanza Tomcat è già in esecuzione!!"
        fi
}

stop() {
        if [ -z "$PID" ]
        then
                echo "Questa istanza Tomcat non è in esecuzione!!"
        else
                $CMD_PREFIX $DIR$CMDSTOP
                sleep 5
        PIDc=$(ps aux |grep java | grep $DIR | awk '{print $2}')
                if [ ! -z "$PIDc" ]
                then
                        kill -9 $PIDc
                fi
        fi
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  status)
        if [ -z "$PID" ]
        then
                echo " Questa istanza Tomcat è in esecuzione"
        else
                echo " Questa istanza Tomcat è in esecuzione"
        fi
        ;;
  restart)
        stop
        sleep 1
        start
        ;;
  *)
        echo "Usage: /PATH_TO_THIS_SCRIPT {start|stop|restart|status}" >&2
        exit 2
esac

exit 0

 

Questo sito utilizza cookie, anche di terze parti, per migliorare la tua esperienza e offrire servizi in linea con le tue preferenze. Chiudendo questo banner, scorrendo questa pagina o cliccando qualunque suo elemento acconsenti all’uso dei cookie.

Puoi comunque continuare a visitare il sito disattivando i cookies dal tuo browser.

Se vuoi saperne di più o negare il consenso a tutti o ad alcuni cookie vai alla sezione Cookie Policy