diff --git a/lib/metadata/metadatautil.inc.php b/lib/metadata/metadatautil.inc.php index 32c7bad..ddb1e9f 100644 --- a/lib/metadata/metadatautil.inc.php +++ b/lib/metadata/metadatautil.inc.php @@ -105,6 +105,14 @@ class KTMetadataUtil { } $GLOBALS['default']->log->debug('KTMetadataUtil::_getNextForBehaviour, final values are ' . print_r($aValues, true)); + + // now we need to clean this up: remove no-value entries. + $temp = $aValues; + foreach ($temp as $k => $v) { + if (empty($v)) { + unset($aValues[$k]); + } + } return $aValues; } // }}} @@ -560,12 +568,12 @@ class KTMetadataUtil { $aFields = DBUtil::getResultArrayKey($aQuery, 'field_id'); $GLOBALS['default']->log->debug(" actual fields are " . print_r($aNextFields, true)); foreach ($aNextFields as $iFieldId) { - if (!in_array($iFieldId, $aFields)) { + /*if (!in_array($iFieldId, $aFields)) { $GLOBALS['default']->log->debug(" field $iFieldId is not included, failing"); $oChildField =& DocumentField::get($iFieldId); $sChildFieldName = $oChildField->getName(); return PEAR::raiseError("Child field $sChildFieldName of parent field $sParentFieldName has no selectable values in behaviour $sBehaviourHumanName ($sBehaviourName)"); - } + }*/ } } $GLOBALS['default']->log->debug("Got through: passed!"); diff --git a/lib/widgets/fieldsetDisplay.inc.php b/lib/widgets/fieldsetDisplay.inc.php index 163b299..bf73c82 100644 --- a/lib/widgets/fieldsetDisplay.inc.php +++ b/lib/widgets/fieldsetDisplay.inc.php @@ -54,7 +54,7 @@ require_once(KT_LIB_DIR . "/widgets/fieldWidgets.php"); /* it may be useful to move this to a factory, eventually? */ -function getWidgetForMetadataField($field, $current_value, $page, $errors = null, $vocab = null) { +function getWidgetForMetadataField($field, $current_value, $page, $errors = null, $vocab = null, $aOptions = null) { // all fields have these elements. $fieldLabel = $field->getName(); $fieldDescription = $field->getDescription(); @@ -62,7 +62,7 @@ function getWidgetForMetadataField($field, $current_value, $page, $errors = null $fieldErrors = $errors; // array of strings $fieldName = 'metadata_' . $field->getID(); $fieldOptions = array(); - $fieldRequired = $field->getIsMandatory(); + $fieldRequired = $field->getIsMandatory() || KTUtil::arrayGet($aOptions, 'required', false); if ($fieldRequired == 1) { $fieldRequired = true; } diff --git a/presentation/lookAndFeel/knowledgeTree/ajaxConditional.php b/presentation/lookAndFeel/knowledgeTree/ajaxConditional.php index 3357ab1..bcfb3e8 100644 --- a/presentation/lookAndFeel/knowledgeTree/ajaxConditional.php +++ b/presentation/lookAndFeel/knowledgeTree/ajaxConditional.php @@ -84,7 +84,7 @@ class AjaxConditionalDispatcher extends KTStandardDispatcher { $vocab = array(); $vocab[''] = 'Unset'; foreach ($aFieldInfo['values'] as $md_v) { $vocab[$md_v->getName()] = $md_v->getName(); } - $oWidget = getWidgetForMetadataField($aFieldInfo['field'], null, $main, null, $vocab) ; + $oWidget = getWidgetForMetadataField($aFieldInfo['field'], null, $main, null, $vocab, array('required' => true)) ; $sWidgets .= $oWidget->render(); }