From 048f5525a62f5ffd1079034fb8927af3a9e23ff1 Mon Sep 17 00:00:00 2001 From: Marc Sladek Date: Thu, 1 Jan 2026 15:35:01 +0100 Subject: [PATCH 1/6] [prepare-major] update to major version 7.0-SNAPSHOT --- component/pom.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/component/pom.xml b/component/pom.xml index 034d7450..0b9a7a84 100644 --- a/component/pom.xml +++ b/component/pom.xml @@ -24,48 +24,48 @@ com.celements celements - 6.6 + 7.0-SNAPSHOT 4.0.0 celements-structuredDataEditor - 6.5-SNAPSHOT + 7.0-SNAPSHOT Celements structured data editor com.celements celements-model - 6.6 + 7.0-SNAPSHOT provided com.celements celements-core - 6.14 + 7.0-SNAPSHOT provided com.celements celements-search - 6.3 + 7.0-SNAPSHOT provided com.celements celements-tag - 6.5 + 7.0-SNAPSHOT provided com.celements celements-layout - 6.4 + 7.0-SNAPSHOT test com.celements celements-spring-security - 6.0 + 7.0-SNAPSHOT test From de25f4e850497147083e3f6a68584669ae6a7c5d Mon Sep 17 00:00:00 2001 From: Marc Sladek Date: Thu, 1 Jan 2026 16:55:05 +0100 Subject: [PATCH 2/6] fix babel-maven-plugin --- web-module/pom.xml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/web-module/pom.xml b/web-module/pom.xml index f3bbcf1e..bea9f464 100644 --- a/web-module/pom.xml +++ b/web-module/pom.xml @@ -59,7 +59,16 @@ com.jarslab.maven - babel-maven-plugin + babel-maven-plugin + + + js-transpile + + ${project.basedir}/babel-jslib/babel.min.js + ${project.basedir}/target/${project.build.finalName}/resources/ + + + From 1d7bf913344b646d620135175cd655c192703067 Mon Sep 17 00:00:00 2001 From: Marc Sladek Date: Thu, 1 Jan 2026 16:58:43 +0100 Subject: [PATCH 3/6] [prepare-major] update to major version 7.0-SNAPSHOT --- web-module/pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/web-module/pom.xml b/web-module/pom.xml index bea9f464..1b98dea6 100644 --- a/web-module/pom.xml +++ b/web-module/pom.xml @@ -26,13 +26,13 @@ com.celements celementsweb - 6.2 + 7.0-SNAPSHOT 4.0.0 structuredDataEditor-web war Celements Structured Data Editor Web-Module - 6.9-SNAPSHOT + 7.0-SNAPSHOT @@ -51,7 +51,7 @@ com.celements celements-structuredDataEditor - 6.5-SNAPSHOT + 7.0-SNAPSHOT From abcd0c218c73a8c205d3e4a488c322fdeecd89ca Mon Sep 17 00:00:00 2001 From: Marc Sladek Date: Thu, 1 Jan 2026 19:15:40 +0100 Subject: [PATCH 4/6] add scheduler --- component/pom.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/component/pom.xml b/component/pom.xml index 0b9a7a84..a39bab2d 100644 --- a/component/pom.xml +++ b/component/pom.xml @@ -55,6 +55,12 @@ 7.0-SNAPSHOT provided + + com.celements + celements-scheduler + 7.0-SNAPSHOT + provided + com.celements From 7c68883fd10749a692187286dbdda8c204a12b8b Mon Sep 17 00:00:00 2001 From: Marc Sladek Date: Wed, 14 Jan 2026 16:44:41 +0100 Subject: [PATCH 5/6] fix border color --- .../structEditJS/dateTime/celements-date-time-field.css | 2 +- .../src/main/webapp/resources/structEditRes/structEdit.css | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/web-module/src/main/webapp/resources/structEditJS/dateTime/celements-date-time-field.css b/web-module/src/main/webapp/resources/structEditJS/dateTime/celements-date-time-field.css index 3d4b5c4f..0fee1b79 100644 --- a/web-module/src/main/webapp/resources/structEditJS/dateTime/celements-date-time-field.css +++ b/web-module/src/main/webapp/resources/structEditJS/dateTime/celements-date-time-field.css @@ -1,6 +1,6 @@ input { box-sizing: border-box; - border: 1px solid #9fb0cd; + border: 1px solid #ccc; box-shadow: none; border-radius: 0px; padding: 0px 3px; diff --git a/web-module/src/main/webapp/resources/structEditRes/structEdit.css b/web-module/src/main/webapp/resources/structEditRes/structEdit.css index fb0c60de..3be5b325 100644 --- a/web-module/src/main/webapp/resources/structEditRes/structEdit.css +++ b/web-module/src/main/webapp/resources/structEditRes/structEdit.css @@ -69,7 +69,7 @@ ul.struct_object > li.cel-data-removing { } .struct_table.border ul.struct_table_data li.struct_table_row { - border-color: #888; + border-color: #ccc; border-top: 1px solid; border-right: 1px solid; border-left: 1px solid; @@ -114,7 +114,7 @@ ul.struct_object > li.cel-data-removing { .struct_table.border ul.struct_table_data .struct_table_cell.edit, .struct_table.border ul.struct_table_data .struct_table_cell.delete { - border-color: #888; + border-color: #ccc; border-left: 1px solid; } @@ -220,7 +220,7 @@ ul.struct_object > li.cel-data-removing { .select2-container .cel_button .view_cel_buttonLink { float: none; width: 170px; - border: 1px solid #9fb0cd; + border: 1px solid #ccc; margin-right: 5px; margin-bottom: 5px; padding: 3px; From 764c4bb5351fc0b59074fada5af76bb0c4c0dd83 Mon Sep 17 00:00:00 2001 From: Marc Sladek Date: Tue, 27 Jan 2026 17:01:44 +0100 Subject: [PATCH 6/6] unify request value resolution --- .../struct/DefaultStructDataService.java | 4 +- .../autocomplete/DefaultAutocomplete.java | 5 ++- .../celements/struct/table/TableConfig.java | 3 +- .../DefaultStructuredDataEditorService.java | 40 ++++++++++++++----- 4 files changed, 36 insertions(+), 16 deletions(-) diff --git a/component/src/main/java/com/celements/struct/DefaultStructDataService.java b/component/src/main/java/com/celements/struct/DefaultStructDataService.java index 83fa93da..acfd0686 100644 --- a/component/src/main/java/com/celements/struct/DefaultStructDataService.java +++ b/component/src/main/java/com/celements/struct/DefaultStructDataService.java @@ -19,8 +19,6 @@ */ package com.celements.struct; -import static java.util.stream.Collectors.*; - import java.util.List; import java.util.Optional; @@ -88,7 +86,7 @@ public Optional loadTableConfig(XWikiDocument cellDoc) { .map(tableConverter).findFirst(); tableCfg.ifPresent(cfg -> { List columns = XWikiObjectFetcher.on(cellDoc).filter(columnClass).stream() - .map(columnConverter).collect(toList()); + .map(columnConverter).toList(); cfg.setColumns(columns); }); LOGGER.info("loadTableConfig: for '{}' got '{}'", cellDoc, tableCfg); diff --git a/component/src/main/java/com/celements/struct/edit/autocomplete/DefaultAutocomplete.java b/component/src/main/java/com/celements/struct/edit/autocomplete/DefaultAutocomplete.java index 036ba7e6..38358bd4 100644 --- a/component/src/main/java/com/celements/struct/edit/autocomplete/DefaultAutocomplete.java +++ b/component/src/main/java/com/celements/struct/edit/autocomplete/DefaultAutocomplete.java @@ -168,11 +168,14 @@ public Optional getSelectedValue(DocumentReference cellDocRef */ protected Stream>> getValueSuppliers(XWikiDocument cellDoc) { return Stream.of( - () -> getValueFromRequest(cellDoc), () -> getValueOnDoc(cellDoc), () -> getDefaultValue(cellDoc)); } + /** + * @deprecated incorporated in {@link #getValueOnDoc(XWikiDocument)} + */ + @Deprecated(since = "7.0") protected final Optional getValueFromRequest(XWikiDocument cellDoc) { Optional ret = context.getDocument() .flatMap(onDoc -> structEditService.getAttributeName(cellDoc, onDoc)) diff --git a/component/src/main/java/com/celements/struct/table/TableConfig.java b/component/src/main/java/com/celements/struct/table/TableConfig.java index b945fceb..8fecaa51 100644 --- a/component/src/main/java/com/celements/struct/table/TableConfig.java +++ b/component/src/main/java/com/celements/struct/table/TableConfig.java @@ -19,7 +19,6 @@ */ package com.celements.struct.table; -import static com.google.common.base.MoreObjects.*; import static java.util.Comparator.*; import static java.util.stream.Collectors.*; @@ -89,7 +88,7 @@ public Integer getResultLimit() { } public void setResultLimit(Integer resultLimit) { - this.resultLimit = firstNonNull(resultLimit, -1); + this.resultLimit = (resultLimit != null) && (resultLimit > 0) ? resultLimit : -1; } public String getCssId() { diff --git a/component/src/main/java/com/celements/structEditor/DefaultStructuredDataEditorService.java b/component/src/main/java/com/celements/structEditor/DefaultStructuredDataEditorService.java index b3cbd83c..2513558c 100644 --- a/component/src/main/java/com/celements/structEditor/DefaultStructuredDataEditorService.java +++ b/component/src/main/java/com/celements/structEditor/DefaultStructuredDataEditorService.java @@ -52,7 +52,7 @@ import org.xwiki.model.reference.ClassReference; import org.xwiki.velocity.XWikiVelocityException; -import com.celements.cells.div.CellRenderStrategy; +import com.celements.cells.AbstractRenderStrategy; import com.celements.model.access.IModelAccessFacade; import com.celements.model.classes.ClassDefinition; import com.celements.model.classes.ClassIdentity; @@ -158,16 +158,17 @@ private Optional tryDetermineObjNb(XWikiDocument cellDoc, XWikiDocument */ private int getCreateObjNb(XWikiDocument cellDoc) { ClassReference classRef = getCellClassRef(cellDoc).orElseThrow(IllegalStateException::new); - Map objNbs = getCreateObjNbExecutionCache() - .computeIfAbsent(classRef, ref -> new HashMap<>()); + Map objNbs = getCreateObjNbExecutionCache(classRef); String keyValueId = fetchKeyValues(cellDoc, Sets.union(LABELS_AND, LABELS_OR)) .mapKeyValue((key, val) -> key + ":" + val.orElse("")) .joining(","); return objNbs.computeIfAbsent(keyValueId, key -> -(1 + objNbs.size())); } - private Map> getCreateObjNbExecutionCache() { - return exec.getContext().computeIfAbsent("struct_create_obj_nbs", HashMap::new); + private Map getCreateObjNbExecutionCache(ClassReference classRef) { + Map> objNbCache = exec.getContext() + .computeIfAbsent("struct_create_obj_nbs", HashMap::new); + return objNbCache.computeIfAbsent(classRef, ref -> new HashMap<>()); } @Override @@ -197,8 +198,7 @@ private Optional getOptionTagValue(XWikiDocument cellDoc) { @Override public Optional getDateFormatFromField(XWikiDocument cellDoc) { Optional field = getCellPropertyClass(cellDoc); - if (field.isPresent() && (field.get() instanceof DateClass)) { - DateClass dateField = (DateClass) field.get(); + if (field.isPresent() && (field.get() instanceof DateClass dateField)) { return Optional.ofNullable(dateField.getDateFormat()); } return Optional.empty(); @@ -300,11 +300,31 @@ public List getCellListValue(XWikiDocument cellDoc, XWikiDocument onDoc) .orElseGet(List::of); return values.stream() .map(elem -> (elem != null) ? elem.toString() : "") - .collect(toList()); + .toList(); } @Override public Optional getCellValue(XWikiDocument cellDoc, XWikiDocument onDoc) { + List requestValues = getValuesFromRequest(cellDoc, onDoc); + if (requestValues.isEmpty()) { + return getCellValueOnDoc(cellDoc, onDoc); + } else if (requestValues.size() == 1) { + return Optional.of(requestValues.get(0)); + } else { + return Optional.of(requestValues); + } + } + + private List getValuesFromRequest(XWikiDocument cellDoc, XWikiDocument onDoc) { + return getAttributeName(cellDoc, onDoc) + .flatMap(name -> context.request() + .flatMap(r -> Optional.ofNullable(r.getParameterValues(name)))) + .map(Stream::of).orElse(Stream.empty()) + .filter(Objects::nonNull) + .toList(); + } + + private Optional getCellValueOnDoc(XWikiDocument cellDoc, XWikiDocument onDoc) { Optional fieldName = getCellFieldName(cellDoc); Object value = null; if (fieldName.isPresent()) { @@ -396,8 +416,8 @@ public static String buildNumberRequestKey(ClassReference classRef, } private Optional getNumberFromExecutionContext() { - return Stream.of("objNb", CellRenderStrategy.EXEC_CTX_KEY_OBJ_NB, - CellRenderStrategy.EXEC_CTX_KEY_GLOBAL_OBJ_NB) + return Stream.of("objNb", AbstractRenderStrategy.EXEC_CTX_KEY_OBJ_NB, + AbstractRenderStrategy.EXEC_CTX_KEY_GLOBAL_OBJ_NB) .map(exec.getContext()::getProperty) .map(Objects::toString) .map(Ints::tryParse)