Retrocompatibilità
Geoweb 4.4.X
Per le note di versione rispetto a tutti i rilasci di Geoweb si rimanda all'apposita sezione della wiki con le Release Notes.
4.4.14
Widget LinkListNam
Per permettere la totale retrocompatibilità si è deciso di introdurre il nuovo parametro opzionale “applyQueryClauseToAssociated”. Se il parametro è omesso o valorizzato a “false” il comportamenento è quello che ha avuto la linklistnam fino alla versione 4.4.12 di Geoweb mentre se valorizzato a “true” viene applicato il filtro queryClause anche alla lista principale (quella mostrata nel dettaglio) e alla lista dei record associati.
Widget Content-Handler
Per permettere la totale retrocompatibilità si è deciso di introdurre il nuovo parametro opzionale “hideDefaultUploadActionButton”. Se il parametro è omesso o valorizzato a “false” il comportamento è quello che il widget Content Handler aveva fino alla versione 4.4.12 (cioè con le azioni di caricamento file poste nella maschera del widget sia nel caso di newItem che non) altrimenti se valorizzato a “true” le azioni di caricamento poste nella maschera del widget vengono nascoste nel caso in cui non si abbia un newItem, il che richiede l'implementazione di opportune azioni di caricamento tipo quelle descritte nella sezione 4.4.12 - Content Handler. L'implementazione delle azioni consente una gestione dei permessi indipendente dalla classe in cui si trova il widget. Per maggiori dettagli consultare CONTENT_HANDLER
4.4.13
Widget LinkListNam - Risolta dalla 4.4.14
In questa versione è stata introdotta l'applicazione della queryClause alla lista dei record selezionati. Nelle versioni precedenti la linklist nam applica la queryClause solo agli elementi da selezionare con il requisito che il fieldToStore dell'elemento selezionato sia univoco per la classe target. Se il valore del fieldToStore non è univoco, nella lista della linklistNam nel dettaglio e nella lista degli elementi selezionati, il record viene visualizzato più di una volta (anche se nella tabella di associazione viene inserito solo una volta al momento dell'associazione). L'intervento quindi consiste nell'applicare la queryClause anche alle due liste di cui sopra.
Nel caso in cui nella queryClause sia coinvolto il campo di relazione tra classe corrente e classe intermedia e che questo abbia lo stesso nome in entrambe, la query risultate avrebbe un errore di ambiguità rispetto alle colonne coinvolte. Per ovviare al problema, è opportuno specificare la tabella di partenza nella queryClause mediante la notazione a0.mioCampo.
Nel caso di aggiornamento alla versione 4.4.13, effettuare un controllo sui metadati per verificare la correttezza delle queryClause, lanciando la query:
select * from gwm_attributes where ctrl_type=19 and ctrl_param not like '%<queryClausole></queryClausole>%' and ctrl_param like '%<queryClausole>%
'
La query restituirà tutte le linklistNaM presenti aventi queryClause non nulle, permettendo un controllo sui metadati più veloce.
4.4.12
Widget Content-Handler - Risolta dalla 4.4.14
Per la forma DOC nelle versioni precedenti il widget Content-Handler espone l'azione “seleziona File”, che consente la scelta e il successivo caricamento del documento, direttamente nella maschera del widget; dalla versione 4.4.12 il comportamento nel caso di “newItem” non è cambiato: il widget continua ad esporre l'azione “Selezione File” direttamente nella maschera; mentre negli altri casi il widget non espone più l'azione di caricamento nella maschera, bensì il caricamento avviene tramite due nuove azioni di tipo dettaglio posto nella toolbar che consentono il caricamento e l'aggiornamento di un elaborato di tipologia “DOC” e sostituiscono quelle previste all'interno del widget.
Prima di configurare le nuove azioni è importante definire il layout il cui nome dovrà necessariamente contenere la stringa 'NewDoc'.
Azione di Caricamento
Di seguito riportiamo un esempio di configurazione dell'azione di caricamento
var className = 'cde_deliverable'; var options = { attributesOverrisionsMap: { content_handler: { readonly: false, required: true, hidden: false} }, detailLayoutName: 'NewDoc', openingDetailMode: 'tab', title: 'Carica File', autoTitle: false, visualizeIgnorePermissions: true, modal: true, hideTopToolbar: true, dimensions: { w: 550, h: 220 }, hideDefaultButtons: true, extraBottomToolbarButtons: [{ label: closeLabel, iconClass: 'iconClose', functionCode: function( evt, itemId, gwClassName, detailContainerId, targetId ){ onDetailCloseButtonClick(detailContainerId, this); } } ,{ label: 'Carica',//createAndCloseLabel, iconClass: 'iconCreateAndClose', functionCode: function( evt, itemId, gwClassName, detailContainerId, targetId ){ var detailContainerWidget = dijit.registry.byId(detailContainerId); detailContainerWidget._hadToBeClosed = true; var callback = function( params ){ onDetailCloseButtonClick(detailContainerId, this); var gwClassName = 'cde_deliverable'; publishGwClassUpdate(gwClassName); var options2 = {}; // openGwClassDetailFloatingPane(params.itemId, className, options2); //publishGwClassInsert(gwClassName); }; var params = { className: gwClassName, sqlStatement: 'update', detailContainerId: detailContainerId, buttonWidget: this, callback: callback }; sendGwClassDetailForm(params); } }] }; openGwClassDetailFloatingPane(itemId, className, options);
L'azione richiede che siano aggiunte anche delle acl per cui si possa eseguire solo se la forma è di tipo “DOC” (es. cod_class_type=DOC ) e il file non è stato ancora caricato (es. is_uploaded=0). Oltre a queste saranno valutati permessi statici di inserimento nella classe.
Azione di Aggiornamento
Di seguito riportiamo un esempio di configurazione dell'azione di aggiornamento del documento
var className = 'cde_deliverable'; var options = { attributesOverrisionsMap: { content_handler: { readonly: false, required: true, hidden: false} }, detailLayoutName: 'NewDoc', openingDetailMode: 'tab', title: 'Aggiorna File', autoTitle: false, visualizeIgnorePermissions: true, modal: true, hideTopToolbar: true, dimensions: { w: 550, h: 220 }, hideDefaultButtons: true, extraBottomToolbarButtons: [{ label: closeLabel, iconClass: 'iconClose', functionCode: function( evt, itemId, gwClassName, detailContainerId, targetId ){ onDetailCloseButtonClick(detailContainerId, this); } } ,{ label: 'Aggiorna',//createAndCloseLabel, iconClass: 'iconCreateAndClose', functionCode: function( evt, itemId, gwClassName, detailContainerId, targetId ){ var detailContainerWidget = dijit.registry.byId(detailContainerId); detailContainerWidget._hadToBeClosed = true; var callback = function( params ){ onDetailCloseButtonClick(detailContainerId, this); var gwClassName = 'cde_deliverable'; publishGwClassUpdate(gwClassName); var options2 = {}; // openGwClassDetailFloatingPane(params.itemId, className, options2); //publishGwClassInsert(gwClassName); }; var params = { className: gwClassName, sqlStatement: 'update', detailContainerId: detailContainerId, buttonWidget: this, callback: callback }; sendGwClassDetailForm(params); } }] }; openGwClassDetailFloatingPane(itemId, className, options);
L'azione richiede che siano aggiunte anche delle acl per cui si possa eseguire solo se la forma è di tipo “DOC” (es. cod_class_type=DOC ) e solo se il file è stato già caricato (es. is_uploaded=1). Oltre a queste saranno valutati permessi statici di modifica.
4.4.10
Procedure Schedulate
Da questa versione di Geoweb per gwScheduler è stato aggiunto un supporto per ambienti cluster (issue #145). Per ragioni di retrocompatibilità è necessario effettuare le seguenti modifiche:
- nel file configuration.properties abilitare esplicitamente il flag
gwscheduler.clusterMode.enabled=true
- aggiornare la tabella e la classe gw_sched_def aggiungendo il campo lock_end_date ( di tipo: Date) in quanto è stato introdotto un meccanismo di lock che si appoggia ai dati nel DB, gestito tramite il nuovo campo in cui viene salvata la data di scadenza del lock.
4.3.0
Componente LayoutSwitchMenu
Da questa versione di Geoweb, dove è stato cambiato il modello dati delle mappe 2D non è più previsto il supporto per tale componente