function getWidget() { // very simple, general purpose passthrough. Chances are this is sufficient, // just override the template being used. $bHasErrors = false; require_once KT_LIB_DIR . '/documentmanagement/MDTree.inc'; $fieldTree = new MDTree(); $fieldTree->buildForField($this->iFieldId); $fieldTree->setActiveItem($this->value); return $fieldTree->_evilTreeRenderer($fieldTree, $this->sName); }
function getWidgetForMetadataField($field, $current_value, $page, $errors = null, $vocab = null, $aOptions = null) { // all fields have these elements. $fieldLabel = $field->getName(); $fieldDescription = $field->getDescription(); $fieldValue = $current_value; $fieldErrors = $errors; // array of strings $fieldName = 'metadata_' . $field->getID(); $fieldOptions = array(); $fieldRequired = $field->getIsMandatory() || KTUtil::arrayGet($aOptions, 'required', false); if ($fieldRequired == 1) { $fieldRequired = true; } if ($errors === null) { $fieldErrors = array(); } else { $fieldErrors = $errors; } // now we need to break, based on a few aspects of the oField (DocumentField) if ($field->getHasLookup()) { // could either be normal, or a tree. // ignore trees (for now). if (!$field->getHasLookupTree()) { // FIXME we need to somehow handle both value-value and id-value here // extract the lookup. if ($vocab === null) { // allow override $lookups = MetaData::getEnabledByDocumentField($field); $fieldOptions['vocab'] = array(); // FIXME handle lookups $fieldOptions['vocab'][''] = _kt('Select a value'); foreach ($lookups as $md) { $fieldOptions['vocab'][$md->getName()] = $md->getName(); } } else { $fieldOptions['vocab'] = $vocab; } $oField = new KTLookupWidget($fieldLabel, $fieldDescription, $fieldName, $fieldValue, $page, $fieldRequired, null, $fieldErrors, $fieldOptions); } else { // FIXME vocab's are _not_ supported for tree-inputs. this means conditional-tree-widgets are not unsupported. // for trees, we are currently brutal. $fieldTree = new MDTree(); $fieldTree->buildForField($field->getId()); $fieldTree->setActiveItem($current_value); $fieldOptions['tree'] = $fieldTree->_evilTreeRenderer($fieldTree, $fieldName); $oField = new KTTreeWidget($fieldLabel, $fieldDescription, $fieldName, $fieldValue, $page, $fieldRequired, null, $fieldErrors, $fieldOptions); } } else { $oField = new KTBaseWidget($fieldLabel, $fieldDescription, $fieldName, $fieldValue, $page, $fieldRequired, null, $fieldErrors, $fieldOptions); } return $oField; }