====== Release Notes ======
===== Geoweb Framework =====
===== Regole di versioning =====
Il versioning dei rilasci di Geoweb segue il pattern
\\
\\
**MAJOR . MINOR . FIX**
\\
\\
dove l'incremento di: \\
**MAJOR** porta ingenti cambiamenti all'architettura del software,
\\
**MINOR** porta una serie di nuove funzionalità,
\\
**FIX** porta bug fix e piccole changes retro compatibili.
\\
\\
Le versioni **4.X.Y** con **X DISPARI** si considerano sperimentali, mentre con **Y PARI** sono prossime alla release.
Matrice compatibilità Geoweb / MapGuide :
^ versione Geoweb ^ versione MapGuide ^ ecc.
| 4.8.x | 3.1.1.9378 | ... |
| 4.7.x | 3.1.1.9378 | ... |
| 4.6.x | 3.1.1.9378 | ... |
| 4.5.x | 3.1 | ... |
| 4.4.x | 3.1 | ... |
| 4.3.x | 3.0 | ... |
| 4.2.14 | 2.1 | ... |
| 4.1 | 2.1 | ... |
| 4.0 | 2.1 | ... |
===== Versione 4.8.2 =====
rev a092e24a33d417e8ce7d24f7f9be8e0f83764a7c
date 2026/04/01
=== BUGFIX ===
* Generazione Report - risolto errore: Error creating bean with name 'scopedTarget.sessionObject': Scope 'session' is not active for the current thread (issue #1779)
* ContentHanlderWidget valutazioni ACL/DACL errate. Problemi individuati:
* non veniva controllato userHasPermissionToRead per contentClass
* venivano ciclati tutti i valori d'ambito contentClass anche se è sufficiente avere i permessi su almeno uno degli ambiti attivi per il progetto (anche qui manca userHasPermissionToRead)
* nel check DACL contentClass c'era impropriamente il check su userHasPermissionToInsert
* nel check DACL contentClass mancava il check su userHasPermissionToRead
* i controlli sui valori d'ambito di contentTypeClass erano difatti inutili: venivano eseguiti inutilmente senza sovrascrivere mai i vari flag
* nel check DACL contentTypeClass veniva usata impropriamente contentClass
* nel check DACL contentTypeClass c'era impropriamente il check su userHasPermissionToInsert
(issue #1771)
* ContentHanlderWidget mitigata lentezza che ritardava il caricamento del dettaglio di classe (evitata selezione record multipla) (issue #1772)
* Exportable Report - risolto errore NullPointerException su download template risorse che si verifica SOLO in ambiente containerizzato (issue #1777)
* PropertySet e JSON in gwFilter risolte problematiche con key non full lowercase (issue #1770)
* Fix azione download massivo fascicolo che sovrascriveva il nome dei file con il titolo del contenuto (issue #1693)
* Trigger applicativi di classe: clientMessage non valutato su beforeDelete() afterDelete() (issue #1768)
* PropertySet export risolto errore assenza label su header colonna export (.xlsx, .csv) con attributo del propertySetCodeField popolato da vista (issue #1767)
* Extrattore SQL prevenzione errore uk cod_extraction_model duplicati (adesso viene usata seq_fb) (issue #1766)
* Gestiti gli errori su riapertura stesso progetto, dopo cambio utente, per progetti che nel loro xml hanno espressioni #{gw_activeUser} and ${gw_activeUser} (issue #1765)
* neutralizzata spring circular dependency fra GwClassListService fra GwGroovyScriptEngineService (issue #1763)
* scheda layout2D risolto errore su azione 'applica filtri lista in mappa..' quando in lista c'è un almeno filtro con operator 'is null' o 'is not null' (issue #1762)
* PropertySetWidget errore su import csv update quando ci sono dati parziali (issue #1759)
* gwWidget errore .gwGetValue() detailContainer._detailMode='visualize' concheckRequiredServerSide true (issue #1758)
* gwWidget risolti errori widget .gwGetValue() con valuetostore con char ' in dettaglio visualizzazione (checkbox, combobox, dbComboBox, dbimageComboBox, dbSuggestBox, dbWindoList, ExternalTable) (issue #1758)
* Documentale: errore nel conteggio delle cartelle figlie su Documentale tale per cui la cartella risulta sempre non vuota (issue #1756)
* aggiustati tooltip dojo su button toolbar dettalio e liste (issue #1754)
* PropertySet export xlsx per consultazione adesso mette la label della Property come header (e non jsonKey) (issue #1752)
* Content Handler Rest: gestione visualizzazione e salvataggio nome utente Geoweb che modifica o carica il file e data; (issue #1744)
* QueryBuilder propertySet con oracle errore Caused by: oracle.jdbc.OracleDatabaseException: ORA-01722: numero non valido (issue #1751)
* gwClassDetail multiple widget date e widget time risolti errori con valore number in ms (issue #1749)
* gwClassDetail multiple tutti i widget non visualizzavano il valore comune (issue #1748)
* gwClassDetail multiple widget checkbox non visualizza same value true e non risponde ai comandi multiple (issue #1747)
* importCsv con importType2 e json PropertySetWidget non aggiornava in caso di property_code camelCase (issue #1746)
* propertySet widget aggiunta normalizzazione valori date in ingresso (da stringa vuota "" a null) su database oracle. riscritto querybuilder oracle per ignorare date malformate (issue #1743)
* Aggiunta autenticazione NTLM per Sharepoint e miglioramenti alla classe GwSharepointSession per gestire bene la chiusura degli oggetti response (issue #1742)
* widget dbWindowList errore order by in base alla query base (issue #1741)
* widget linkListNam aggiunto alias a1 su query clause tabella associazione per risolvere errore campo ambiguo in base ad implementazione (issue #1736)
* widget attachmentRest / widget attachments errore gestione path nullo (issue #1735)
* GwClassFilter con attributi JSON su ORACLE 19 evitato errore ORA-40561: percorso non valido nella clausola di percorso nidificato di JSON_TABLE (issue #1733)
* widget restDocument in gwClassList evitate voci di menu ripetute su click ravvicinati (issue #1732)
* GeowUsersTrigger username aggiunti nullcheck e toLowerCase() (Keycloak compatibility) (issue #1731)
* gw-pec postgres/mssqlserver Error attempting to get column 'pec_attachs_blob' from result set. Allineati anche implmentazioni oracle e mssqlserver dei metodi sended() error() che impostano pec_stato e pec_esito (issue #1727)
* scheda gwDynamicTimeline evitate ripetizioni informazioni nei tooltip con certe configurazioni (issue 1720)
* gwClassList - parametri filters/staticFilters: conversione automatica da elementi singoli ad array (issue #1719)
* gw-bim-visualizer errori creating beans mapper (sqlServer invece che sqlserver) (issue #1714)
* scheda gwOrgChart export pdf non funziona (solo con compressed true) (issue #1713)
* scheda gwOrgChart risolto errore export png (issue #1712)
* import csv doc risolto errore su apertura documentazione: JRFontNotFoundException: Font "DejaVu Sans" is not available to the JVM (issue #1711)
* GwClassListService.updateTransactionHandling() NullPointerException (issue #1709)
* vecchia classificazione risoltin errori POST not allowed su chiamate POST (issue #1708)
* leafItemHierarchicalFilterMenu con filteringCriteria ComboBox non visualizza le label (issue #1706)
=== NEW FEATURES ===
* Nuova GwAction 'Posta in sostituzione del bottone Nuovo (in Lista) (DACL CHECK)' componenti che la valutano:
* gwClassList
* widget LinkList
* widget ChildList
* widget ExternalTable
* dialog con lista generica ExternalTable
* albero gw-tree-collection (issue #1778)
* DACL adesso risolvono con null (SQL/SpEl exp friendly) tutte le espressioni irrisolte #{} ${} per campi locali e variabili in sessione (in aggiunta alle variabili d'ambiente) (issue #1776)
* leafItemListFilters nuovo parametro attributeToOrderBy, String, optional, default null. Name dell'attributo da usare per filtrare. In sua assenza continua ad essere usato attributeToFilter (issue #1775)
* leafItemListFilters nuovo parametro onRootClickGwActionName. String, optional. Name della gwAction, presente nella Class con nome className, che verrà eseguita al click sul nodo root al posto dell'apertura di lista standard (non parzializzata). (Permessi statici valutati) (issue #1774)
* leafItemListFilters nuovo parametro onClickGwActionName. String, optional. Name della gwAction, presente nella Class con nome className, che verrà eseguita al click sui nodi parzializzati al posto dell'apertura della lista prefiltrata standard. (Permessi statici valutati) (issue #1773)
* aggiunto valutatore SpEL – Spring Expression Language in formatHashGraphsExpression(..) usato in:
* projet xml
* dashboard set xml
* DACL
* activeMap delle gwMap
* defaultvalue widget
* queryClause LinkList/LinkListNam
(issue #1769)
* Nuove funzionalità configurabili per azione download massivo fascicolo: l'azione JS accetta ora i parametri
* actionParams (che a loro volta contengono:
boolean autoFileName = true;
boolean includeXls = true;
boolean includeAttachments = true;
boolean useBuildingLevel = true;
boolean useArchiveLevel = true;
boolean useCategoryLevel = true;
boolean useSubcategoryLevel = true;
boolean useCodContentLevel = true;
int codContentLevelLabelType = 1; //1--> file_name, 2--> cod_content, 3 --> name_content, 4---> computed_name
int fileNameLabelType = 1; //1--> file_name, 2--> cod_content, 3 --> name_content, 4---> computed_name)
* oldBehaviour (default true) (issue #1693)
* Sviluppate api di publish eventi intra modulo (con RabbitMQ) (issue #1602)
* Nuova azione selezionati in lista (posto nella toolbar) check selection, che si abilita/disabilita automaticamente in base alla selezione (issue #1755)
* PropertySetWidget server side validation - aggiunta validazione tipo di dato date e migliorata quella per il tipo string (issue #1739)
* gwAttribute aggiunta proprietà isHiddenInList per gestire facilmente la visibilità in gwClassList (issue #1734)
* gwClassList widget Image performance client side: abilitare cache del browser (issue #1730)
* gwClassList widget Image performance server side: evitato calcolo thumbnail al fine di limitare l'eccesivo uso di risorse (issue #1729)
* configuration.properties nuova key workflow.databaseSchemaUpdate per disabilitare creazione tabelle act_ in avvio (issue #1724)
* Autenticazione mista: fase 1 inserito un nuovo campo del modello dati degli utenti "Credenziali SSO" per gestire l'autenticazione mista.
* se "Credenziali SSO" non ha la spunta (is_external_sso = 0) --> comportamento di default. L'utente è gestito da Geoweb (che lo inserisce in keyCloak)
* se "Credenziali SSO" ha la spunta (is_external_sso = 1) --> l'utenza è gestita da un sso esterno --> Geoweb non lo inserisce in keyCloak (issue #1722)
* nuovo modulo gw-pec (stesso versionamento framework)
com.geowebframework
gw-pec
${com.geowebframework.version}
(issue #1710)
* menu Dashboardset adesso è possibile configurarlo in tutte le posizioni (issue #1705)
* widget linkListNam aggiunto parametro hideNewIgnorePermissions per classe target (issue #1703)
* api js gwChangeElementsInSessionWthExternalTable() aggiungere parametro applyOnRowClick per scelta ambito con solo un click sulla riga (issue #1689)
* gwClassList button tre puntini '...' (moreActions)
* colonna spostata in fondo a tutte
* i puntini diventano verticali e viene rimossa la freccia dropDown (issue #1684)
=== NEW COMPONENTS ===
* Nuovo widget Image Rest (issue #1480)
===== Versione 4.8.1 =====
rev 741507515193f42e361a71540c05813fc185d8c1
date 2025/12/01
=== BUGFIX ===
* importCSV() non notificava errori bloccanti sul formato del file csv (issue #1656)
=== NEW FEATURES ===
* widget AttachmentRest aggiunto parametro countField che, se presente, è usato per aggiornare il numero di allegati string (issue #1692)
* widget AttachmentRestWidget/Attachments aggiunti nuovi parametri (boolean, default false) per nascondere (a prescindere dai permessi): hideCreateFolder, hideSearch, hideCopyTo, hideMoveTo, hideRenameFolder (issue #1668)
* widget contentHandlerRest e DocumentRest nuovo parametro allowUpdateWithNewName, boolean default true. Quando a false nega l'update con nuovo nome. Check clientside e serverside. (issue #1667)
* widget PropertySet property 'string' nuovi parametri maxLength (check client+server side) e regex (check clientside) (issue #1657)
* widget PropertySet nuovi parametri:
* checkUnknownPropertiesServerSide boolean, optional, default true.
Quando posto a true abilita il controllo quando si utilizzano i metodi insertClassRecord()/updateClassRecord() sulla coerenza delle key con la definizione del PropertySet, e lancia eccezione in caso di discrepanze (vedi anche avoidExceptionOnFailedPropertyCheckServerSide sotto). Non viene fatto un check sulla coerenza del tipo di valore
* avoidExceptionOnUnknownPropertiesServerSide boolean, optional, default true.
Valutato solo quando checkUnknownPropertiesServerSide è true. Quando posto a true, nell'utilizzo dei metodi insertClassRecord()/updateClassRecord(), evita di sollevare una eccezione in caso di mancata aderenza alla definizione del PropertySet, ma si limita a rimuovere le key non riconosciute (issue #1658)
=== NEW COMPONENTS ===
* widget Content Hydra - nuovo widget di gestione documentale che gestisce più copie per uno stesso contenuto e permette di interfacciarsi con servizi documentali esterni (ad esempio servizi di firma o di editing online).
=== DEPRECATED ===
=== REFACTORS ===
===== Versione 4.8.0 =====
rev 3c061df4340a788140b6d837fd5df6f4287c820c
date 2025/10/17
=== BUGFIX ===
* widget con isDefaultOrderBy false non ordinabili in lista di classe (issue #1633)
=== NEW FEATURES ===
* widget codeEditor nuovo parametro beautify che indenta automaticamente file json,html,js (issue #1635)
* widget aggiunta proprietà isOrderable in xml di widget. Se assente viene valutato isDefaultOrderBy (issue #1633)
* PropertySetWidget aggiunto nuovo parametro checkRequiredServerSide, boolean, default true. Aggiunge validazione lato server per le json key required (issue #1649)
* aggiunta possibilità di impostare in avvio le variabili d'ambiente contenute in system-variables.properties (issue #1646)
* gw-bim-visualizer - Il plugin sostituisce il vecchio plugin gw-3d-visualizer, e permette di visualizzare i modelli BIM in formato IFC, GLTF e GLB. Il plugin è stato aggiornato per supportare le ultime versioni delle librerie Three.js e per migliorare le prestazioni e la compatibilità con i modelli BIM più recenti. (issue #1570)
* gw-mongo-collection - Il plugin permette di gestire le collezioni MongoDB all'interno del framework Geoweb. Fornisce un'interfaccia per la lettura di documenti nelle collezioni MongoDB come lista Geoweb. (issue #1574)
=== NEW COMPONENTS ===
* Il plugin gw-bim-visualizer è stato introdotto come plugin unico per la gestione dei modelli 3D e nuvole di punti
=== DEPRECATED ===
* Il plugin gw-3d-visualizer è stato deprecato e sostituito da gw-bim-visualizer
* Il plugin gw-lite-visualizer è stato deprecato e sostituito da gw-bim-visualizer
===== Versione 4.7.10 =====
rev de79e2255e30f41dbee2618b630652ecfde725f5
date 2025/10/07
=== BUGFIX ===
* Estrattore SQL - fix preview rotta (da 4.7.4) (issue #1644)
* OracleJSONTypeHandler errore setNonNullParameter() con CLOB in Oracle (issue #1643)
* GwNotificationSettings aggiunto nullcheck su String getParameterByName(String parameterName) (issue #1642)
* widget externatable risolti malfunzionamenti hideNewIgnorePermissions hideDeleteIgnorePermissions (issue #1639)
* widget dbComboBox errore quando non ha valore impostato (solo con datatype INTEGER/NUMBER) (issue #1637)
* NullPointerException com.geowebframework.dataservice.QueryBuilderService.integratePopulateQueryTableMap (issue #1634)
* export di file con attributi JSON risolto bug per cui metteva troppe colonne nel file esportato (xlsx,csv,shp) anche quelle delle key derivanti da record esterni al filtro (issue 1632)
* widget dbImageBombobox escape char accentati ùéàò.. (issue #1628)
* widget attachments/scheda gwAttachmentsSheet risolto errore nella presentazione dei record quando sono più di 20 (issue #1626)
* widget contentHandlerRest DOC fix errori post issue #1548 (issue #1624)
* gw-upload-manager: Modificato il metodo che recupera le entità nelle funzioni di sincronizzazione da clientcad (issue #1623)
* openGwClassFilterFloatingPane() errore javascript (issue #1622)
* queryBuilder risolto errore ORACLE ORA-22901: impossibile confrontare gli attributi VARRAY o LOB di un tipo oggetto (issue #1621)
=== NEW FEATURES ===
* CMS: Nuove funzionalità di backend per consultare file e immagini senza attributi valutando permessi su classe e progetto (issue #1638)
* configuration.properties aggiunto nuovo parametro gwa.role.disabled, default false (issue #1641)
* Nuova funzione di backend per recuperare le informazioni utili alla rappresentaizone della toolbat in contesti no gw-metadata (issue #1636)
* Estrattore SQL adeguamento logiche parzializzazione risorse di prodotto/predefinite e custom/utente (issue #1625)
* DACL introdotto supporto in filtri custom a variabili di ambiente GWENV_* e codModule del configuration.properties (issue #1616)
===== Versione 4.7.9 =====
rev ef65c5f4fb0f7ab2dc2e353ad5d916e82d8c8014
date 2025/09/11
=== BUGFIX ===
* Aggiustata visualizzazione dei layer con sfondo planimetrico (issue #1314)
* widget gwGallery - report pdf - fix ordinamento (issue #1607)
* Download report dossier pdf: aggiunto check mimeType contenuto e allegati e inserito check null su valori selezionati su azione gwPdfDossierDownload() (issue #1606)
* gwClassFilter propertySetWidget adesso popola le property al cambiamento di valore del detentore del codice della famiglia solo quando anche il relativo operator è '=' oppure 'in' (issue #1619)
* scheda layout2D messa a tutto schermo fa vedere menu navigazione funzioni intra framework (issue #1620)
* gwClassFilter windowChoice quando operatore è 'IS NULL' o 'IS NOT NULL' non disabilitava il button che apre la window (issue #1618)
* gwClassFilter con propertySetWidget cambiava ordine relativo anche degli altri widget (issue #1617)
* widget codeEditor non salva il value quando da valorizzato si passa a stringa vuota (issue #1614)
* export xlsx per consultazione: adesso viene sempre la jsonKey come intestazione di colonna per gli attributi variabili (issue #1613)
=== NEW FEATURES ===
* Nuova api js gwPdfDossierDownload() che esegue download in formato pdf dei documenti che sono associati al fabbricato e di cui si va stampare il dossier unico. Vengono inseriti anche eventuali allegati se presenti. (issue #1556)
* widget gwGallery nuovo button che lancia procedura di creazione PDF a partire da una galleria di immagini (issue #1550)
===== Versione 4.7.8 =====
rev 4ce335defdefd75b49956f2482a6713194e634d1
date 2025/09/01
=== NEW FEATURES ===
* deploy automatico da database delle risorse MapGuide personalizzate per cliente (serve nuova tabella gwd_gw_custom_package) (issue #1598)
===== Versione 4.7.7 =====
rev 1bbf64a091b4ef5eeb38018e826e76069b175c9a
date 2025/08/22
=== BUGFIX ===
* scheda Layout2D - layer dinamici - adesso la folder del gruppo è sensibile a flag expandInLegend di MapGuide Maestro (issue #1612)
* evitati errori in avvio quando cms.api.enabled=false o mancante (issue #1611)
* creato servizio estensibile (GwPlatformsService) per disaccoppiare alcuni utilizzatori (come gw-dossier-content-navigation-dashboard) del servizio GwKeycloackPlatformsService da Keycloak (issue #1610)
* gwClassFilter risolto ERRORE: la funzione lower(timestamp without time zone) non esiste (issue #1604)
* api js openGwClassDetailDialog() non viene applicata initialsValuesMap (issue #1603)
===== Versione 4.7.6 =====
rev 1bbf64a091b4ef5eeb38018e826e76069b175c9a
date 2025/07/30
=== BUGFIX ===
* widget geometry in gwClassList adesso esegue zoom anche al click nella cella (e non apre il gwClassDetail) (issue #1559)
=== NEW FEATURES ===
* aggiunto supporto al tipo di dato JSON nei flussi di import/export .csv, .xlsx, .shp (issue #1557)
* ri-deploy automatico MapGuide resources in caso di riavvio Container MapGuide (issue #1597)
===== Versione 4.7.5 =====
rev 1bbf64a091b4ef5eeb38018e826e76069b175c9a
date 2025/07/30
=== BUGFIX ===
* schede gwMap/layout2D, usare detalLayout 'mapEditing' anche per insert nuovo in mappa (issue #1596)
* Export xlsx aggiunto check caratteri speciali su sheetName (derivanti da label classe) (issue #1595)
* groovy garantita propagazione eccezioni lanciate in trigger di classe (widget LinkListNam, e metodi classService.deleteClassRecords(..), classService.deleteClassRecordsFromGroovy(..)) (issue #1594)
* export shape segnalato errore in caso di export di classe non geometrica (issue #1593)
* Scheda gwCalendar - comando Stampa Rapida spaginata con navigazione intra-framework (issue #1590)
* PropertySetWidget property type date valori salvati con timezone (issue #1587)
* PropertySetWidget valori di default delle property non persistiti nel json per i tipi: boolean domain externalclass (issue #1586)
* Solo database Oracle - OracleTemporaryTableService errore gestione IN/NOT IN con più di 1000 record (issue #1582)
* risolta segnalazione SAST - Regular expression with non-literal value (issue #1513)
* risolta segnalazione SAST - Use of cryptographically weak pseudo-random number generator (PRNG) (issue #1512)
* risolta segnalazione SAST - XML injection (aka Blind XPath injection) (issue #1511)
* risolta segnalazione SAST - Incorrect regular expression - ReDoS (Regular Expression Denial of Service) (issue #1510)
* risolta segnalazione SAST - Cleartext transmission of sensitive information (issue #1509)
* risolta segnalazione SAST - Cross Site Scripting (XSS) (issue #1508)
=== NEW FEATURES ===
* client-desktop - Rimossi i client dal repository del framework. Sono stati creati dei repository divisi per ogni client (issue #1569)
* GwMassFileDeletionController è il nuovo controller da richiamare per eliminare tutti i file di una classe che ha un content handler/content handler rest e per cui i nomi non coincidono con il file attuale; lo scopo è ripulire il DMS da file legati a record non più esistenti o che sono statisovrascritti da nuovi file (issue #1561)
===== Versione 4.7.4 =====
rev 77cc0fe0987425e03ee010533747df45bedf2403
date 2025/06/19
=== BUGFIX ===
* toDoList: risolto errore nella visualizzaizone dei dati in lista (issue #1572)
* gwClassDetail - multiple
* adesso supporta completamente (sia da API js che da valutazione tag GwClassSettingsdell'xml di progetto): hideCloseButton, hideCreateButton, hideCreateAndCloseButton, hideSaveButton, hideSaveAndCloseButton
* adesso, oltre che API js, valuta anche il tag GwClassSettings dell'xml di progetto, per: hideDefaultButtons (issue #1571)
* api js editGeometryOnMap() - gwMap ambitata - drawingId ClassCastException: class java.lang.String cannot be cast to class java.lang.Integer (issue #1568)
* widget gwGallery CMIS/REST risolto errore con showMetadata true (issue #1565)
* gw-tree-collection - risolto problema download collezione che contiene revisioni che hanno stesso filename (issue #1563)
* export shape - api js standardListSelectedAllAttributeExportToShp() risolto errore missing required parameter 'optionsEncoded' in formdata (issue #1562)
* gwDashboardSet supporto alla property gwa.schema del configuration.properties (issue #1559)
* widget imgPathGallery, solo dataSource FS (filesystem) risolti errori su eliminazione file (issue #1555)
* widget imgPathGallery/imgPathGalleryRest malfunzionamenti navigazione area thumb al click previous (issue #1554)
* GeoExplorer widgetGeometry in gwClassList sotto scheda gwMap, al click oltre lo zoom in mappa toglieva il filtro alla lista (issue #1549)
* widget dbWindowList risolto errore order automatico con presenza di char aggiuntivi ',' nella selezione dei filed della query, per esempio: SELECT to_char(start_date,'DD/MM/YYYY') AS start_date,... (issue #1522)
* produzione automatica report lista librerie dependencies.txt (in gw-webapp-template\target) (issue #1547)
* widget ContentHandler/ContentHandlerRest risolti errori con più gwClassDetail aperti o piu widget nello stesso gwClassDetail (issue #1548)
* gwIndicatorsSheet: risolto errore di apertura scheda 400 (issue #1546)
* widget linkList / linkListNam columnNamesToHide true adesso nasconde, e non rimuove, i widget nella lista. Questo migliora gli automatismi della gwClassFilter (issue #1545)
* widget su gwClassDetail readonly con valori con " si vedonano troncati (issue #1544)
* contentHandler/contentHandlerRest: corretto comportamento in modalità readonly - ora è possibile fare l'anteprima del contenuto (issue #1543)
* ImportCSV - ripristinato il comportamento per cui nei servizi viene utilizzato il nome originale del file csv importato e non quello rinominato da geoweb (issue #1540)
* restDocument - in caso di cancellazione di oggetto che non esiste o che non viene trovato, il widget non va in errore
ma logga un messaggio (WARN) (issue #1539)
* attachment/attachmentRest - in caso di percorso non risolto non va più in errore ma mostra un messaggio e il widget
viene disabilitato (issue #1538)
* imgPathGalleryRest - aggiunta chiusura degli stream per immagini diverse da JPEG/JPG (issue #1536)
* IndirectLocalizationWidget - Modificato il comportamento con cui vengono recuperati gli elementi2D (issue #1527)
* impostati log level da info a debug: EventMemoScheduler, Furniture, Workflow, Gantt, Scenario, Workshif, BimData2D (issue #1531)
* api js openGwHtmlReportFloatingPane() supporto a parametri floatingPane: floatingPaneId, modal, useCookies, dimensions (issue #1530)
* gw-scheduler errore su eliminazione definizone schedulazione: la relazione "gw_sched_def.gw_sched_def" non esiste (issue #1529)
* widget externaltable la lista dialog di selezione non si aggiorna su aggiunta/eliminazione/modifica record (issue #1528)
* scheda gwMap/layout2D risolti errori valutazione parametro boundary (issue #1525)
* vecchia classificazione risolto errore per mancato escape + su valore filtro su mongo db (issue #1524)
* sessioni documentali che estendono GwDocSessionImpl: corretta gestione della chiusura degli oggetti CloseableHttpResponse; in alcuni casi tali oggetti rimanevano aperti portando problemi di connessione (issue #1523)
* gwClassFilter evitato errore (non bloccante, visualizzato su dialog) all' apertura del dialog di filtro concomitante al ripistino dei filtri classification (issue #1521)
* widget LinkListNam errore su associazione, senza trigger groovy su mssqlserver (regressione issue #1472) (issue #1520)
* scheda gwMap/layout2D errore su applica filtro lista in mappa quando nel filtro statico su Maestro ci sono char ' (issue #1519)
* scheda gwMap/layout2D (plan) problematiche ai background Layer su applica filtro lista in mappa (issue #1518)
* gwClassList sotto gwMap risolta problematica su selezione in mappa del filtro applicato alla lista che forzava un filtro statico di cod_building alla lista (introdotto con issue #1428) Adesso il filtro su cod_building e cod_storey viene applicato solo se la selezione in mappa viene fatta dalla planimetria del piano (issue #1517)
* Classificatore: corretta la visualizzazione del form "Famiglia Nuovo", risolvendo il problema di spaginamento durante l'input dei campi utente. Rimossa inoltre l'obbligatorietà dell'icona. (issue #1516)
* widget date con handleTime true, non era possibile annullare il valore da UI (regressione issue #1035) (issue #1507)
* leafItemHierarchicalFilterMenu parametri hideNewIgnorePermissions hideDeleteIgnorePermissions non erano ereditati dal tag gwClassListSettings dell'xml di progetto (issue #1506)
* gwClassDetail errore non sistematico mancato salvataggio campi required modificati (issue #1504)
* Fix errore su anteprima per Content Handler forma DOC (issue #1503)
* risolte variate problematiche di sicurezza rilevate dalla analisi SAST (issue #1502)
* Modalità alto contrasto - propagazione del setting sui tab già aperti e confinamento impostazione alle platform stessa installazione (issue #1501)
* ToDoList: corretta mancata gestione attibuto hiddenActionsNamesList (issue #1500)
* terzo livello di dominio: adeguato backoffice a pagine di accesso (issue #1498)
* widget ImgPathGalleryRest risolto errore che impediva la visualizzaizone in gwClassDetail in visualizzazione (issue #1495)
* importCSV() con type 3 e 4 su advancedDelete1000Item() tabella temporanea non trovata (issue #1493)
* GeowEventManagementServiceAsync: aggiornata data salvata nell'evento con il fuso orario recuperato dalle variabili d'ambiente (issue #1490)
* widget LinkListNam migliorata velocità associazione/disassociazione, che poteva causare errori di timeout (issue #1487)
* CmisFactory: eliminati log che mostravano in chiaro tutte le informazioni di connessione, compresi utenti e pessword (issue #1491)
* Gestione Utenti (geow_users): aggiunta eliminazione delle associazioni ai ruoli organizzativi nel trigger di eliminazione utente (issues #1489)
* scheda layout2D - dialog 'Stampa' rimane in primo piano dopo aver creato la report pdf (issue #1488)
* widget externalTable aggiunto nullcheck per mancanza tag dentro tag in xml di progetto (issue #1486)
* widget ImgPathGalleryRestWidget risolto errore nullcheck caption su visualizzatore js gwGallery (issue #1482)
* gwClassDetail multiple editing ripristinata comparsa button di editing (regressione issue #1452 di 4.7.3) (issue #1459)
* gwClassDetail multiple editing nascosto button editing anche in caso di ctrlParam disabled true (oltre che con readonly true) (issue #1458)
* fix contentHandler: Aggiunto il lancio della code ifcToGltf nel caso di inserimento di un nuovo record (issue #1475)
* widget LinkListNam gestite operazioni associazione/disassociazione in un'unica transazione al fine di evitare errori di timeout (issue #1472)
* widget attachmentRest e attachment- migliorata gestione errori in caso di caricamento del file (o dei files) fallito (issue #1469)
* widget document in lista risolto errore bloccante che occorreva con il valore non selezionato (introdotto con issue #1430) (issue #1467)
* fix filtri per ruoli: migliorato il controllo che aggiunge l'operatore OR a partire dall'eventuale secondo filtro (issue #1468)
=== NEW FEATURES ===
* ObjectSelector: selettore degli oggetti adesso mostra la description dell'oggetto corrente sempre (e non più una concatenazione [codice]+' - '+[descr] apparte le funzioni di tipo 2) (issue #1560)
* gwMap/gwLayout2D aggiunto supporto coordinateSystem mappa/widget geometry anche a formati non standard 'EPSG: 3857' invece che 'EPSG:3857' o '3857'. Aggiunti log di warn (#1558)
* LabelValueJsonWidget - nuovo type 'file' per il download da documentale (issue #1533)
* LabelValueJsonWidget - aggiunta possibilità di nascondere una specifica coppia label-value: parametro hide 1 o true (issue #1542)
* ImportCSV: in caso di errore generico di importazione ora viene mostrato un dialog (al posto del toaster) (issue #1541)
* filtro windowChoice nuovo parametro xml isSingleSelection, boolean, default false. Quando posto a true limita la selezione ad un solo elemento (issue #1537)
* gwClassFilter supporto per il tipo di dato JSON (issue #1496)
* filtro di tipo windowChoice, aggiunto parametro in xml isSingleSelection (boolean, default false). Quando a true permette la selezione di un solo elemento (issue #1537)
* nuovo plugin gw-commons-react per api progetti react (issue #1497)
* nuova api js openGwClassListInsideContentPane() (issue #1494)
* Gestione multischema: la funzione insertClassRecord() ora utilizza lo schema della classe, se impostato, per la generazione dei valori di chiave (sequence seq_fb) (issue #1485)
* widget TextArea aggiunto parametro placeHolder (issue #1477)
* widget LinkListNam nuova property afterSelectionScriptName (String, optional) per l'esecuzione di un groovy finale di associazione. Il groovy viene eseguito nella medesima transazione delle associazioni/disassociazioni (rollback in caso di exception). Variabili disponibili: services, all session variables, scriptName, log, parameters/parameterMap (con dentro: attributeGwid, projectName, associationClassKeyColumnValue, associatedList, removedList, startClass, associationClass, targetClass, associationRelation, targetRelation) (issue #1473)
* nuova api js export da gwClassList (csv xlsx) openExportWizardFromGwClassList() (issue #1471)
* eliminati byte array dalle classi che si occupano di caricare i file sui gestori documentali nella nuova API CMS REST (tutte le classi che estendono GwDocSessionImpl (issue #1470)
* Documentatore: miglioramenti generali, aggiornamento libreria marked.js, definizione nuovi standard per i path delle immagini e dei riferimenti interni (issue #1464)
* openDialog/openFloatingPane adesso viene visualizzato sempre un loading message non solo con href GET (issue #1466)
=== NEW COMPONENTS ===
* nuovo widget PropertySetWidget (issue #1327)
* nuovo widget LabelValueJsonWidget (issue #1484)
* nuovo plugin gw-commons-react (issue #1492)
* nuovo widget codeEditor, simile alla textarea, ma specializzato per visualizzare codice. Supporta tutti i linguaggi e molte stilizzazioni (issue #1465)
===== Versione 4.7.3 =====
rev 90d85db6dc508465f24e1d8c5cf5633a6189bfd4
date 2024/12/23
=== BUGFIX ===
* DAR (DirectAccessResourceService): l'url viene costruito a partire dal parametro info.link_web nel configuration.properties (issue #1463)
* notifiche: corretta importazione errata delle risorse statiche all'interno dei file JSP di progetto (issue #1462)
* migliorata gestione errori nell'inserimento eventi su ElasticSearch (issue #1450)
* scheda gwCalendar errore su distruzione contenuto in seguito ad openTab() con stesso id e forceRefreshTab true (issue #1461)
* gwLayout2D - plugin MapEditing - griglia snapping - eliminato check su risoluzione corrente mappa (issue #1460)
* navigazione intra-framework nascoste gwaFunction/App di documentazione con type 4 (issue #1459)
* scheda gwCalendar ordinati i calendari nello stesso ordine imposto dal parametro calendarCodes (issue #1456)
* gwClassDetail (solo con itemId=='newItem') le azioni di dettaglio erano eseguite troppo presto e non vedevano i valori impostati tramite l'api js initialsValuesMap (issue #1452)
* widget dbComboBox (con field di tipo integer + valueToStore della query integer) su gwClassDetail non viene sempre visualizzato correttamente il valueToShow appena salvato/creato (issue #1451)
* scheda gwCalendar attenuata opacità colori calendario per evitare label eventi inleggibili in quanto troppo sbiadite (issue #1449)
* gwClassFilter (aperto da dialog lista scelta oggetto in sessione) - risolto spaginamento che si verificava cambiando tab ('Semplificato'/'Incrementale') issue #1448
* gestito apice singolo ' in label attributo che causava errori su filtri classi ed altri componenti (issue #1447)
* risolto errore javascript filterContainer.computeIsModified is not a function con useCompressed true (issue #1446)
* widget linkListNam, dialog di associazione, ora le liste si aggiornano anche agli eventi di eliminazione sulla classe di destinazione (issue #1440)
* componenti lista + alcuni widget (es: htmlTemplate con behaviorType 0) risolti errori su alcuni formatter integrando sempre ctrlParamStoreData con attribute gwid (issue #1439)
* widget classificazione - edit famiglie - risolto errore alla prima apertura (issue #1347)
* risolto problematica che imponeva la stilizzazione dinamica su classe gwd_symbol (issue #1435)
* api js openGenericReport() fixato comportamento per cui se invocata senza uso del parametro format causava download dei file .pdf con name undefined (issue #1430)
* widget con valueToStore/valueToShow implementata api .gwGetValue() che funziona anche con dettaglio readonly (_detailMode=='visualize') (issue #1427)
* gwClassDetail ora i tooltip delle classi relazionate gestiscono i caratteri speciali à,è,é,ò,ù,ì (issue #1412)
* apertura gwProject - adesso il codSolution viene prioritariamente recuperato dalla proprietà gw.solution.code del configuration.properties o dalla variabile d'ambiente rimappata (issue #1425)
* gwMap su zoom geometria gwClassList esterna alla mappa, forzare sempre il filtro della lista sotto mappa (issue #1424)
* scheda gwMap - tab editing - risolti malfunzionamenti grid snapping (PointGridSnappingControlCommand) (issue #1422)
* Corretta l'errore malicious String in fase di login da Client (issue #1421)
* scheda gwMap reso fisso il boundary di selezione del click singolo in mappa, per evitare malfunzionamenti che c'erano a certe scale (issue #1420)
* gwMap risolti errori nelle function showGeometrySelectionOnMap() editGeometryOnMap() in caso di wktGeom troppo grande (issue #1418)
* Corretta validazione parametri in sessione nei servizi api json (issue #1419)
* ToDoList - corretto errore nel calcolo dell'altezza dello spazio dedicato all'applicazione react (issue #1416)
* widget LinkList - onRowClickGwActionName gwClassListSettings xml di progetto adesso il check sull'azione viene fatto sulla clase target (e non source) (issue #1415)
* gwAction con parametro isAvailableForNew true in gwClassDetail dava errore al click (issue #1413)
* navigazione intra-framwork + pagine di accesso problematiche sezione 'stesso gruppo' (issue #1411)
* leafItemListFilters risolto errore su apertura lista filtrata (cast parametro listedAttributesNames) (issue #1410)
* risolto errore su azione importcsv asincrono e aggiunti ulteriori log al servizio importCsv (issue #1409)
=== NEW FEATURES ===
* widget mainActionWidget in assenza dei campi configurati usare label, tooltip ed icona della gwAction (issue #1445)
* ProjectsDocController copiato da webadmin su webclient per erogare documentazione prodotti (doc metadati progetto) (issue #1444)
* gwWindowManager - open(), aggiunto supporto al riconoscimento delle finestre delle app di geoweb già aperte, al fine erogare le DAR dei link pregenerati evitando se possibile di ricaricare l'intera pagina (issue #1441)
* gwWindowManager aggiunta funzionalità di broadcast di messaggi fra le varie finestre, che permette di eseguire codice senza avere un riferimento diretto della finestra (issue #1441)
* js api gwAddIconImage() esteso supporto per widget dojo senza property iconClass in alcuni casi (Es: dijit/layout/ContentPane) (issue #1438)
* widget linkListNam, aggiunto supporto a criteri di ordinamento impostabili negli xml dei widget in lista (issue #1434)
* widget htmlTemplate con behaviorType 0, nuove proprietà disponibili in espressioni ${}: itemId, gwClassName, keyColumn, nameColumn, geomColumn (issue #1433)
* widget switchWidget, numberBox - adesso supportano il flag dell'xml isEditableInRelatedGwClassList (issue #1432)
* navigazione intra-framework adesso compare in ogni sezione un messaggio notificante che non ci sono altre app nella sezione (issue #1431)
* UserSettingsMenu - aggiunto comando per abilitare la 'Modalità Contrasto Elevato'
##################################################################
# U S E R S E T T I N G S M A N A G E M E N T
##################################################################
...
userSettings.management.changeLanguage.disabled=false
#hide the change contrast UI when true. default false (from 4.7.3, issue #1347)
userSettings.management.changeContrast.disabled=false (issue #1347)
* esteso supporto accessibiltà: widget Image aggiunto ora navigabile da tastiera (issue #1347)
* esteso supporto accessibiltà: aggiunti tag per gli SR label progetto, 1st level menu, 2nd level menu, 3rd level menu (issue #1347)
* nuovo componente preview file .xlsx. Nuove api js:
* openGwXlsxViewerFloatingPane()
* openGwXlsxViewerTab() (issue #1417)
* nuovo mapping request exportByGroovyExecution per esecuzione groovy che producono file da scaricare (issue #1414)
* notifiche: aggiunto nuovo parametro di configurazione nel configuration.properties: notifications.management.hide.timer. Questo parametro permette di gestire la durata del timer che mostra la snackbarcon la possibilità di annullare le azioni "Nascondi" o "Nascondi tutte". Il valore di default (che vale anche se il parametro non è presente nel configuration) è 10000 ms (issue #1442)
* notifiche: il titolo delle notifiche da scadenzario viene recuperato - se c'è - dalla tabella geow_event_type (issue #1454)
* Documentatore: report scheda prodotto_
* nuovo layout non più basato sulle soluzioni ma sulla piattaforma
* riorganizzazione dei titoli in base alla modalità "scheda prodotto" o "manuale" (issue #1381)
=== NEW COMPONENTS ===
* nuovo 3rd level menu con type gwDashboardSet, che permette al Solution Mangager di personalizzare il set di risorse (dashboard) per Funzione (App). Il nuovo leafItem non ha parametri, ma necessita di nuove tabelle e relativi metadati. Rilasciate App dedicate per il SM e l'utente GW_ADMIN.
(issue #1428)
=== REFACTORS ===
* il plugin gw-tree-collection, prima su git repo separato e che aveva il suo proprio versionamento (last 2.5.1), è stato riportato dentro il repository di geowebframework, e da ora in avanti ne seguirà il versionamento. (issue #1453)
===== Versione 4.7.2 =====
rev 345732fd75155f0297cb5315e44cf09e3dd03676
date 2024/10/24
=== BUGFIX ===
* navigazione intra-frameowork: risolta problematice dei favorite button per i raggruppamenti di funzioni:
* adesso l'impostazione viene propagata a tutte le function/progetti gia aperti
* adesso possono essere clickati senza selezionare la sezione
* se non è possibile ripristinare il default su 'stesso oggetto' (perchè la function corrente non ce lo ha) viene considerato come favorite la sezione di default 'all'(issue #1408)
* navigazione intra-frameowork: risolta problematica per la quale una funzione/progetto non visualizzava fra le recenti le funzioni/progetti aperti successivamente. Contestualemnte incrementato il numero delle recenti a 5 (esclusa la corrente), e l'ordine di visualizzazione: adesso dalla più recente descrescendo (issue #1407)
* incrementata velocità di apertura gwaFunction/gwProject (issue #1404)
* Dashboard ToDoList - corretta errata visualizzaizone lista geoweb (issue #1405)
* ReportController - aggiunto parametro di ordinamento quando si va chiamare il metodo selectAllRecordsFromCache; come parametro di ordinamento si sceglie la chiave univoca della classe classificata (issue #1325 pt2)
* Estrattore SQL - salvataggio wizard - migliorato recupero ultimo cod_extraction_model rendendolo indipendente dal codice del dataset (issue #1402)
* Estrattore SQL - salvataggio wizard - aggiunto supporto a oracle e sqlserver (issue #1401)
* widget externalTable error 404 not found su cancellazione record da dialog (issue #1400)
* Notifiche : corretto posizionamento del badge delle notifiche (issue #1399)
* Widget approvazioni corretto calcolo errato dell'altezza del dialog (issue #1397)
* gwClassDetail multiple dava errore con vari tipi di azione che controllano le DACL (issue #1387)
* gwClassDeatail multiple adesso compare correttamente anche senza esplicatere il terzo parametro queryParameter (issue #1386)
* widget linkList risolto errore gwClassDetail dovuto ad apice singolo ' in label classe target (issue #1377)
* scheda gwMap/gwLayout2D alla prima apertura dopo f5 non si vedono i tooltip dei MapCommand (issue #1376)
* mainActionWidget cambiato stile su hover: stesso colore testo, stesso colore sfondo, ma attenuato, e comparsa border grigio neutro (issue #1375)
* actionWidget/mainActionWidget adessso fa il corretto escape dei valori contenuti negli altri campi (passati al momento dell'azione e che possono contenere codice html) (issue #1374)
* ripristinata l'azione di importazione di oggetti da BIM tramite query apposite costruite dall'utente (issue #1373)
* risolto errore su dettaglio widget galleria fotografica: all'apertura di più dettagli contemporanemante, solo il primo viene visualizzato in modo corretto mentre gli altri vanno in errore a causa dell'id duplicato del pulsante delle info (issue #1370)
* widget html aggiungere supporto ad initialsValuesMap api js openGwClassDetail (issue #1369)
* risolti errori del tipo: GwScopeService Error creating bean with name 'scopedTarget.sessionObject' su groovy eseguito da gwTaskScheduler (issue #1368)
* gwClassList con molte azioni in toolbar non visualizzava numero eventuali record filtrati (issue #1365)
* ambienti containerizzati: estesa gestione codifica UTF-8 (issue #1364)
* ambienti containerizzati: gwAction con caratteri speciali non erano correttamente codificate in UTF-8 (issue #896)
* gwClassDetail risolto problema di charset che si verificava salvando certi char (accentati à, é, ò, ...) su alcuni widget (Normal, TextBox, TextArea) in ambienti containerizzati, e che causava la visualizzazione di un ? al loro posto (issue #1363)
* Report generiche venivano visualizzate vuote e senza errori lato server (introdotto con issue #1171 in 4.7.1) (issue #1361)
* gwUserSettings - adesso vengono visualizzate le descrizioni dei gruppi invece che il codice/nome sia nel dialog cambio gruppo che nel tooltip (issue #1360)
* webadmin callEmptyMetadataCache dava errore NoClassDefFoundError StreamConstraintsException, risolto aggiornando lib jackson-* a 2.17.2 (problematica introdotta dalla 4.7.1 con introduzione jasperreports 6.21.2) (issue #1359)
* widget action/mainActionWidget adesso nella gwAction le DACL con filtri CUSTOM che si riferiscono a campi del record sono correttamente valutate (issue #1356)
* gwClassList - columnToggler - nascosti dal menu colonne non visibili de facto (issue #1355)
* link cambio password adesso funziona anche dall' indice dei progetti anche quando userSettings.management.changePassword.url non è popolata (e quindi viene usato il default /changePassword.html) oppure quando è popolato un url non relativo (issue #1350)
* crypto.randomUUID() ora funziona anche in contesti non HTTPS (issue #1348)
* accessibilità framework - risolto errore introdotto in issue #1331 su pagine scelta gruppo ed indice proegetti, che poteva avvenire in base alle impostazioni di locale del server dojo/parser::parse() error Error: string.substitute could not find key "loadingState" in template (issue #1347)
* ImportCSV - risolto problema di lettura del file di importazione che si verificava in caso di file con tanti record (problema introdotto dalla issue #1328 dato che lo stream del file di importazione viene letto due volte: una per elaborare l'importazione e una per scriverlo nella tabella del db) (issue #1357)
* ImportCSV - la form di caricamento del file di importazione viene ora disabilitata dopo aver iniziato la procedura di importazione (issue #1358)
=== NEW FEATURES ===
* spring-security.xml necessario aggiungere nuovo intercept-url permittAll (sotto compressed/dojox/**)
* configuration.properties: aggiunto parametro per impostare il tempo di validità dei file scaricati dal browser
##################################################################
# B R O W S E R C A C H E
##################################################################
#cache expressed in days, default 3650, -1 to disable
cache.max-age.days=365
(issue #1404)
* Aggiunta nuovi API per il download della Report Accessi Geoweb se integrato con keyCloak (issue #1403)
* componenti ad albero - aggiunto parametro autoClickFirstNodeWhenIsFirstMenu (boolean, optional, default false) che, quando il componente è il primo menu (coordinate 0 0 0), apre in automatico la risorsa dell' elemento first/root. Componenti interessati:
* leafItemHierarchicalFilterMenu
* gwTaskHierarchicalFilterMenu
* leafItemGwTreeCollectionMenu
* leafItemMCMenu
* leafItemGHFMCMenu (issue #875)
* dbImageComboBox in lista recuperare columnAliasStore direttamente (issue #1398)
* gwClassList rimosso vincolo tale per cui, quando si usa la property listedAttributesNames (api js apertura gwClassList), gli attributi specificati dovevano essere sempre aggiunti in lista (issue #1396)
* widget html nuovo parametro onClickGwActionName, che esegue al click l'azione definita nella gwClass (issue #1395)
* Dashboard ToDoList: filtro statico da xml di progetto a groovy (issue #1394)
* Widget Approvazioni - introdotto refresh del tab nel caso di dashboard ToDoList (issue #1393)
* api js openGwClassListTab() aggiunta possibilità di espicitare tabWidgetId (issue #1392)
* Approvazioni: uando la dahsboard generica ToDoList è necessario rendere disponibile il meotdo per la gestione del tempo di altenza (issue #1391)
* nuova js api publishGwClassUpdateWhenLinkListNamChanges() che serve per aggiornare liste e dettagli di una classe differente da quelle coinvolte nelle modifiche effettuate da un widget linkListNam (issue #1388)
* gwClassDetail multiple edit permessa presenza dei widget InstructionsAreaWidget e Label (issue #1385)
* GwClassListService aggiunti metodi countClassRecords*(...) nuovi metodi esposti (groovy):
* public Integer countClassRecords(String gwClassName)
* public Integer countClassRecords(String gwClassName, List