From 89ebf650f849894bc0076ca1a50b625b2f9198b2 Mon Sep 17 00:00:00 2001 From: Carsten Rose <carsten.rose@math.uzh.ch> Date: Thu, 25 Jun 2020 18:35:54 +0200 Subject: [PATCH] Fixes #10641. Fehler beim Anlegen mehrerer neuen Tags gleichzeitig --- extension/Classes/Core/Save.php | 1 + extension/Classes/Core/Store/FillStoreForm.php | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/extension/Classes/Core/Save.php b/extension/Classes/Core/Save.php index 5e9cca3c8..4aa8efff8 100644 --- a/extension/Classes/Core/Save.php +++ b/extension/Classes/Core/Save.php @@ -373,6 +373,7 @@ class Save { // Create glue records foreach ($result as $id => $value) { + $this->store->setVar(VAR_TAG_ID, $id, STORE_VAR); $this->store->setVar(VAR_TAG_VALUE, $value, STORE_VAR); diff --git a/extension/Classes/Core/Store/FillStoreForm.php b/extension/Classes/Core/Store/FillStoreForm.php index 144726696..7ded5a153 100644 --- a/extension/Classes/Core/Store/FillStoreForm.php +++ b/extension/Classes/Core/Store/FillStoreForm.php @@ -295,12 +295,19 @@ class FillStoreForm { (isset($formElement[FE_PROCESS_READ_ONLY]) && $formElement[FE_PROCESS_READ_ONLY] != '0')) { if (HelperFormElement::booleParameter($formElement[FE_TYPEAHEAD_TAG] ?? '-')) { + // TypeAhead Tags received as JSON key/value + $cntNew = 0; + // TYPEAHEAD_TAG will be delivered as JSON. Check and sanitize every key/value pair. $arr = json_decode($clientValues[$clientFieldName], true); $arrTmp = array(); foreach ($arr as $row) { $arrKey = $this->doValue($formElement, $formMode, $row['key']); + // New Tags always get '0' >> make them uniq by adding a counter. + if ($arrKey == "0") { + $arrKey = "0-" . ++$cntNew; + } $arrValue = $this->doValue($formElement, $formMode, $row['value']); $arrTmp[$arrKey] = $arrValue; } -- GitLab