diff --git a/include/ajax.forms.php b/include/ajax.forms.php index 520e8584a80b6107d4b63af9f7bd5b309694ac54..84b64179a4796ac0030e08366bfbbb07be7147e0 100644 --- a/include/ajax.forms.php +++ b/include/ajax.forms.php @@ -149,22 +149,32 @@ class DynamicFormsAjaxAPI extends AjaxController { Http::response(403, 'Login required'); $list = DynamicList::lookup($list_id); + if (!$list) + Http::response(404, 'No such list item'); + + $list = CustomListHandler::forList($list); if (!$list || !($item = $list->getItem( (int) $item_id))) Http::response(404, 'No such list item'); $item_form = $list->getListItemBasicForm($_POST, $item); if ($valid = $item_form->isValid()) { - // Update basic information - $basic = $item_form->getClean(); - $item->extra = $basic['extra']; - $item->value = $basic['value']; - if ($_item = DynamicListItem::lookup(array( - 'list_id' => $list->getId(), 'value'=>$item->value))) + 'list_id' => $list->getId(), 'value'=>$item->getValue())) + ) { if ($_item && $_item->id != $item->id) $item_form->getField('value')->addError( __('Value already in use')); + } + if ($item_form->isValid()) { + // Update basic information + $basic = $item_form->getClean(); + $item->update([ + 'name' => $basic['name'], + 'value' => $basic['value'], + 'extra' => $basic['extra'], + ]); + } } // Context