Ejemplo n.º 1
0
 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);
 }
Ejemplo n.º 2
0
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;
}