Commit 18102958633a606b3e9dfc065bd55eab9437b67d
1 parent
623d4f57
KTS-2865
"Conditional metadata fieldsets failing validation" Fixed. Added a proper required field check so non-required unset condiional fields pass the validation. Committed By: Jonathan Byrne Reviewed By: Jalaloedien Abrahams git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@8020 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
2 changed files
with
18 additions
and
1 deletions
plugins/ktcore/KTValidators.php
| @@ -381,7 +381,17 @@ class KTMembershipValidator extends KTValidator { | @@ -381,7 +381,17 @@ class KTMembershipValidator extends KTValidator { | ||
| 381 | implode(', ', $failed))); | 381 | implode(', ', $failed))); |
| 382 | } | 382 | } |
| 383 | } else { | 383 | } else { |
| 384 | - if (!$this->aVocab[$val]) { | 384 | + |
| 385 | + $mandatory=true; | ||
| 386 | + | ||
| 387 | + if (substr($this->sInputVariable, 0, 9) == 'metadata_') | ||
| 388 | + { | ||
| 389 | + $fieldid = substr($this->sInputVariable, 9); | ||
| 390 | + $field = DocumentField::get($fieldid); | ||
| 391 | + $mandatory = $field->getIsMandatory(); | ||
| 392 | + } | ||
| 393 | + | ||
| 394 | + if (!array_key_exists($val, $this->aVocab) && $mandatory) { | ||
| 385 | $errors[$this->sBasename] = KTUtil::arrayGet($this->aOptions, | 395 | $errors[$this->sBasename] = KTUtil::arrayGet($this->aOptions, |
| 386 | 'error_message', sprintf(_kt('"%s"is not a valid selection.'), $val)); | 396 | 'error_message', sprintf(_kt('"%s"is not a valid selection.'), $val)); |
| 387 | } | 397 | } |
plugins/ktcore/folder/addDocument.php
| @@ -285,6 +285,13 @@ class KTFolderAddDocumentAction extends KTFolderAction { | @@ -285,6 +285,13 @@ class KTFolderAddDocumentAction extends KTFolderAction { | ||
| 285 | 285 | ||
| 286 | foreach ($fields as $oField) { | 286 | foreach ($fields as $oField) { |
| 287 | $val = KTUtil::arrayGet($values, 'metadata_' . $oField->getId()); | 287 | $val = KTUtil::arrayGet($values, 'metadata_' . $oField->getId()); |
| 288 | + if ($oFieldset->getIsConditional()) | ||
| 289 | + { | ||
| 290 | + if ($val == _kt('No selection.')) | ||
| 291 | + { | ||
| 292 | + $val = null; | ||
| 293 | + } | ||
| 294 | + } | ||
| 288 | // ALT.METADATA.LAYER.DIE.DIE.DIE | 295 | // ALT.METADATA.LAYER.DIE.DIE.DIE |
| 289 | if (!is_null($val)) { | 296 | if (!is_null($val)) { |
| 290 | $MDPack[] = array( | 297 | $MDPack[] = array( |