/**
  * Initialize the form elements
  *
  * @access protected
  * @author Bertrand Chevrier, <*****@*****.**>
  * @return mixed
  */
 protected function initElements()
 {
     $chainingElt = tao_helpers_form_FormFactory::getElement('chaining', 'Radiobox');
     $chainingElt->setDescription(__('Filtering mode'));
     $chainingElt->setOptions(array('or' => __('Exclusive (OR)'), 'and' => __('Inclusive (AND)')));
     $chainingElt->setValue('or');
     $this->form->addElement($chainingElt);
     $recursiveElt = tao_helpers_form_FormFactory::getElement('recursive', 'Radiobox');
     $recursiveElt->setDescription(__('Recursive'));
     $recursiveElt->setOptions(array('0' => __('Current class only'), '10' => __('Current class + Subclasses')));
     $recursiveElt->setValue('current');
     $this->form->addElement($recursiveElt);
     $langElt = tao_helpers_form_FormFactory::getElement('lang', 'Combobox');
     $langElt->setDescription(__('Language'));
     $languages = array_merge(array('  '), tao_helpers_I18n::getAvailableLangsByUsage(new core_kernel_classes_Resource(INSTANCE_LANGUAGE_USAGE_DATA)));
     $langElt->setOptions($languages);
     $langElt->setValue(0);
     $this->form->addElement($langElt);
     $this->form->createGroup('params', __('Options'), array('chaining', 'recursive', 'lang'));
     $filters = array();
     $descElt = tao_helpers_form_FormFactory::getElement('desc', 'Label');
     $descElt->setValue(__('Use the * character to replace any string'));
     $this->form->addElement($descElt);
     $filters[] = 'desc';
     $defaultProperties = tao_helpers_form_GenerisFormFactory::getDefaultProperties();
     $classProperties = tao_helpers_form_GenerisFormFactory::getClassProperties($this->clazz, $this->getTopClazz());
     $properties = array_merge($defaultProperties, $classProperties);
     isset($this->options['recursive']) ? $recursive = $this->options['recursive'] : ($recursive = false);
     if ($recursive) {
         foreach ($this->clazz->getSubClasses(true) as $subClass) {
             $properties = array_merge($subClass->getProperties(false), $properties);
         }
     }
     foreach ($properties as $property) {
         $element = tao_helpers_form_GenerisFormFactory::elementMap($property);
         if (!is_null($element) && !$element instanceof tao_helpers_form_elements_Authoring && !$element instanceof tao_helpers_form_elements_Hiddenbox && !$element instanceof tao_helpers_form_elements_Hidden) {
             if ($element instanceof tao_helpers_form_elements_MultipleElement) {
                 $newElement = tao_helpers_form_FormFactory::getElement($element->getName(), 'Checkbox');
                 $newElement->setDescription($element->getDescription());
                 $newElement->setOptions($element->getOptions());
                 $element = $newElement;
             }
             if ($element instanceof tao_helpers_form_elements_Htmlarea) {
                 $newElement = tao_helpers_form_FormFactory::getElement($element->getName(), 'Textarea');
                 $newElement->setDescription($element->getDescription());
                 $element = $newElement;
             }
             $this->form->addElement($element);
             $filters[] = $element->getName();
         }
     }
     $this->form->createGroup('filters', __('Filters'), $filters);
 }
 /**
  * Short description of method initElements
  *
  * @access public
  * @author Bertrand Chevrier, <*****@*****.**>
  * @return mixed
  */
 public function initElements()
 {
     $property = $this->getPropertyInstance();
     isset($this->options['index']) ? $index = $this->options['index'] : ($index = 1);
     $propertyProperties = array_merge(tao_helpers_form_GenerisFormFactory::getDefaultProperties(), array(new core_kernel_classes_Property(PROPERTY_IS_LG_DEPENDENT), new core_kernel_classes_Property(PROPERTY_WIDGET), new core_kernel_classes_Property(RDFS_RANGE)));
     $elementNames = array();
     foreach ($propertyProperties as $propertyProperty) {
         //map properties widgets to form elements
         $element = tao_helpers_form_GenerisFormFactory::elementMap($propertyProperty);
         if (!is_null($element)) {
             //take property values to populate the form
             $values = $property->getPropertyValuesCollection($propertyProperty);
             foreach ($values->getIterator() as $value) {
                 if (!is_null($value)) {
                     if ($value instanceof core_kernel_classes_Resource) {
                         $element->setValue($value->getUri());
                     }
                     if ($value instanceof core_kernel_classes_Literal) {
                         $element->setValue((string) $value);
                     }
                 }
             }
             $element->setName("property_{$index}_{$element->getName()}");
             $element->addClass('property');
             if ($propertyProperty->getUri() == RDFS_LABEL) {
                 $element->addValidator(tao_helpers_form_FormFactory::getValidator('NotEmpty'));
             }
             $this->form->addElement($element);
             $elementNames[] = $element->getName();
         }
     }
     $encodedUri = tao_helpers_Uri::encode($property->getUri());
     $modeElt = tao_helpers_form_FormFactory::getElement("{$index}_uri", 'Hidden');
     $modeElt->setValue($encodedUri);
     $modeElt->addClass('property');
     $this->form->addElement($modeElt);
     $elementNames[] = $modeElt->getName();
     if (count($elementNames) > 0) {
         $groupTitle = $this->getGroupTitle($property);
         $this->form->createGroup("property_{$encodedUri}", $groupTitle, $elementNames);
     }
 }
示例#3
0
 /**
  * Initialize the form elements
  *
  * @access protected
  * @author Bertrand Chevrier, <*****@*****.**>
  * @return mixed
  */
 protected function initElements()
 {
     $clazz = $this->getClazz();
     $instance = $this->getInstance();
     $guiOrderProperty = new core_kernel_classes_Property(TAO_GUIORDER_PROP);
     //get the list of properties to set in the form
     $propertyCandidates = tao_helpers_form_GenerisFormFactory::getDefaultProperties();
     $classProperties = tao_helpers_form_GenerisFormFactory::getClassProperties($clazz, $this->getTopClazz());
     $propertyCandidates = array_merge($propertyCandidates, $classProperties);
     $additionalProperties = isset($this->options['additionalProperties']) && is_array($this->options['additionalProperties']) ? $this->options['additionalProperties'] : array();
     if (!empty($additionalProperties)) {
         $propertyCandidates = array_merge($propertyCandidates, $additionalProperties);
     }
     $excludedProperties = isset($this->options['excludedProperties']) && is_array($this->options['excludedProperties']) ? $this->options['excludedProperties'] : array();
     $editedProperties = array();
     foreach ($propertyCandidates as $property) {
         if (!isset($editedProperties[$property->getUri()]) && !in_array($property->getUri(), $excludedProperties)) {
             $editedProperties[$property->getUri()] = $property;
         }
     }
     $finalElements = array();
     foreach ($editedProperties as $property) {
         $property->feed();
         $widget = $property->getWidget();
         if ($widget == null || $widget instanceof core_kernel_classes_Literal) {
             continue;
         }
         //map properties widgets to form elments
         $element = tao_helpers_form_GenerisFormFactory::elementMap($property);
         if (!is_null($element)) {
             //take instance values to populate the form
             if (!is_null($instance)) {
                 $values = $instance->getPropertyValuesCollection($property);
                 foreach ($values->getIterator() as $value) {
                     if (!is_null($value)) {
                         if ($value instanceof core_kernel_classes_Resource) {
                             if ($element instanceof tao_helpers_form_elements_Readonly) {
                                 $element->setValue($value->getLabel());
                             } else {
                                 $element->setValue($value->getUri());
                             }
                         }
                         if ($value instanceof core_kernel_classes_Literal) {
                             $element->setValue((string) $value);
                         }
                     }
                 }
             }
             // don't show empty labels
             if ($element instanceof tao_helpers_form_elements_Label && strlen($element->getRawValue()) == 0) {
                 continue;
             }
             //set file element validator:
             if ($element instanceof tao_helpers_form_elements_AsyncFile) {
             }
             if ($property->getUri() == RDFS_LABEL) {
                 // Label will not be a TAO Property. However, it should
                 // be always first.
                 array_splice($finalElements, 0, 0, array(array($element, 1)));
             } else {
                 if (count($guiOrderPropertyValues = $property->getPropertyValues($guiOrderProperty))) {
                     // get position of this property if it has one.
                     $position = intval($guiOrderPropertyValues[0]);
                     // insert the element at the right place.
                     $i = 0;
                     while ($i < count($finalElements) && ($position >= $finalElements[$i][1] && $finalElements[$i][1] !== null)) {
                         $i++;
                     }
                     array_splice($finalElements, $i, 0, array(array($element, $position)));
                 } else {
                     // Unordered properties will go at the end of the form.
                     $finalElements[] = array($element, null);
                 }
             }
         }
     }
     // Add elements related to class properties to the form.
     foreach ($finalElements as $element) {
         $this->form->addElement($element[0]);
     }
     //add an hidden elt for the class uri
     $classUriElt = tao_helpers_form_FormFactory::getElement('classUri', 'Hidden');
     $classUriElt->setValue(tao_helpers_Uri::encode($clazz->getUri()));
     $this->form->addElement($classUriElt);
     if (!is_null($instance)) {
         //add an hidden elt for the instance Uri
         $instanceUriElt = tao_helpers_form_FormFactory::getElement('uri', 'Hidden');
         $instanceUriElt->setValue(tao_helpers_Uri::encode($instance->getUri()));
         $this->form->addElement($instanceUriElt);
         $hiddenId = tao_helpers_form_FormFactory::getElement('id', 'Hidden');
         $hiddenId->setValue($instance->getUri());
         $this->form->addElement($hiddenId);
     }
 }
示例#4
0
 /**
  * Initialize the form elements
  *
  * @access protected
  * @author Bertrand Chevrier, <*****@*****.**>
  * @return mixed
  */
 protected function initElements()
 {
     $property = new core_kernel_classes_Property($this->instance->getUri());
     isset($this->options['index']) ? $index = $this->options['index'] : ($index = 1);
     $propertyProperties = array_merge(tao_helpers_form_GenerisFormFactory::getDefaultProperties(), array(new core_kernel_classes_Property(PROPERTY_IS_LG_DEPENDENT), new core_kernel_classes_Property(TAO_GUIORDER_PROP)));
     $elementNames = array();
     foreach ($propertyProperties as $propertyProperty) {
         //map properties widgets to form elements
         $element = tao_helpers_form_GenerisFormFactory::elementMap($propertyProperty);
         if (!is_null($element)) {
             //take property values to populate the form
             $values = $property->getPropertyValuesCollection($propertyProperty);
             foreach ($values->getIterator() as $value) {
                 if (!is_null($value)) {
                     if ($value instanceof core_kernel_classes_Resource) {
                         $element->setValue($value->getUri());
                     }
                     if ($value instanceof core_kernel_classes_Literal) {
                         $element->setValue((string) $value);
                     }
                 }
             }
             $element->setName("{$index}_{$element->getName()}");
             $element->addClass('property');
             if ($propertyProperty->getUri() == TAO_GUIORDER_PROP) {
                 $element->addValidator(tao_helpers_form_FormFactory::getValidator('Integer'));
             }
             if ($propertyProperty->getUri() == RDFS_LABEL) {
                 $element->addValidator(tao_helpers_form_FormFactory::getValidator('NotEmpty'));
             }
             $this->form->addElement($element);
             $elementNames[] = $element->getName();
         }
     }
     //build the type list from the "widget/range to type" map
     $typeElt = tao_helpers_form_FormFactory::getElement("{$index}_type", 'Combobox');
     $typeElt->setDescription(__('Type'));
     $typeElt->addAttribute('class', 'property-type property');
     $typeElt->setEmptyOption(' --- ' . __('select') . ' --- ');
     $options = array();
     $checkRange = false;
     foreach (tao_helpers_form_GenerisFormFactory::getPropertyMap() as $typeKey => $map) {
         $options[$typeKey] = $map['title'];
         $widget = $property->getWidget();
         if ($widget instanceof core_kernel_classes_Resource) {
             if ($widget->getUri() == $map['widget']) {
                 $typeElt->setValue($typeKey);
                 $checkRange = is_null($map['range']);
             }
         }
     }
     $typeElt->setOptions($options);
     $this->form->addElement($typeElt);
     $elementNames[] = $typeElt->getName();
     //list drop down
     $listService = tao_models_classes_ListService::singleton();
     $listElt = tao_helpers_form_FormFactory::getElement("{$index}_range", 'Combobox');
     $listElt->setDescription(__('List values'));
     $listElt->addAttribute('class', 'property-listvalues property');
     $listElt->setEmptyOption(' --- ' . __('select') . ' --- ');
     $listOptions = array();
     foreach ($listService->getLists() as $list) {
         $listOptions[tao_helpers_Uri::encode($list->getUri())] = $list->getLabel();
         $range = $property->getRange();
         if (!is_null($range)) {
             if ($range->getUri() == $list->getUri()) {
                 $listElt->setValue($list->getUri());
             }
         }
     }
     $listOptions['new'] = ' + ' . __('Add / Edit lists');
     $listElt->setOptions($listOptions);
     if ($checkRange) {
         $listElt->addValidator(tao_helpers_form_FormFactory::getValidator('NotEmpty'));
     }
     $this->form->addElement($listElt);
     $elementNames[] = $listElt->getName();
     //index part
     $indexes = $property->getPropertyValues(new \core_kernel_classes_Property(INDEX_PROPERTY));
     foreach ($indexes as $i => $indexUri) {
         $indexProperty = new \oat\tao\model\search\Index($indexUri);
         $indexFormContainer = new tao_actions_form_IndexProperty($this->getClazz(), $indexProperty, array('property' => $property->getUri(), 'propertyindex' => $index, 'index' => $i));
         /** @var tao_helpers_form_Form $indexForm */
         $indexForm = $indexFormContainer->getForm();
         foreach ($indexForm->getElements() as $element) {
             $this->form->addElement($element);
             $elementNames[] = $element->getName();
         }
     }
     //add this element only when the property is defined (type)
     if (!is_null($property->getRange())) {
         $addIndexElt = tao_helpers_form_FormFactory::getElement("index_{$index}_add", 'Free');
         $addIndexElt->setValue("<a href='#' class='btn-info index-adder small index'><span class='icon-add'></span> " . __('Add index') . "</a><div class='clearfix'></div>");
         $this->form->addElement($addIndexElt);
         $elementNames[] = $addIndexElt;
     } else {
         $addIndexElt = tao_helpers_form_FormFactory::getElement("index_{$index}_p", 'Free');
         $addIndexElt->setValue("<p class='index' >" . __('Choose a type for your property first') . "</p>");
         $this->form->addElement($addIndexElt);
         $elementNames[] = $addIndexElt;
     }
     //add an hidden elt for the property uri
     $encodedUri = tao_helpers_Uri::encode($property->getUri());
     $propUriElt = tao_helpers_form_FormFactory::getElement("{$index}_uri", 'Hidden');
     $propUriElt->addAttribute('class', 'property-uri property');
     $propUriElt->setValue($encodedUri);
     $this->form->addElement($propUriElt);
     $elementNames[] = $propUriElt;
     if (count($elementNames) > 0) {
         $groupTitle = $this->getGroupTitle($property);
         $this->form->createGroup("property_{$encodedUri}", $groupTitle, $elementNames);
     }
 }
示例#5
0
 /**
  * Initialize the form elements
  *
  * @access protected
  * @author Bertrand Chevrier, <*****@*****.**>
  * @return mixed
  */
 protected function initElements()
 {
     $clazz = $this->getClassInstance();
     //add a group form for the class edition
     $elementNames = array();
     foreach (tao_helpers_form_GenerisFormFactory::getDefaultProperties() as $property) {
         //map properties widgets to form elements
         $element = tao_helpers_form_GenerisFormFactory::elementMap($property);
         if (!is_null($element)) {
             //take property values to populate the form
             $values = $clazz->getPropertyValues($property);
             if (!$property->isMultiple()) {
                 if (count($values) > 1) {
                     $values = array_slice($values, 0, 1);
                 }
             }
             foreach ($values as $value) {
                 if (!is_null($value)) {
                     $element->setValue($value);
                 }
             }
             $element->setName('class_' . $element->getName());
             //set label validator
             if ($property->getUri() == RDFS_LABEL) {
                 $element->addValidators(array(tao_helpers_form_FormFactory::getValidator('NotEmpty')));
                 $ns = substr($clazz->getUri(), 0, strpos($clazz->getUri(), '#'));
                 if ($ns != LOCAL_NAMESPACE) {
                     $readonly = tao_helpers_form_FormFactory::getElement($element->getName(), 'Readonly');
                     $readonly->setDescription($element->getDescription());
                     $readonly->setValue($element->getRawValue());
                     $element = $readonly;
                 }
             }
             $element->addClass('global');
             $this->form->addElement($element);
             $elementNames[] = $element->getName();
         }
     }
     //add an hidden elt for the class uri
     $classUriElt = tao_helpers_form_FormFactory::getElement('classUri', 'Hidden');
     $classUriElt->setValue(tao_helpers_Uri::encode($clazz->getUri()));
     $classUriElt->addClass('global');
     $this->form->addElement($classUriElt);
     $hiddenId = tao_helpers_form_FormFactory::getElement('id', 'Hidden');
     $hiddenId->setValue($clazz->getUri());
     $hiddenId->addClass('global');
     $this->form->addElement($hiddenId);
     $localNamespace = common_ext_NamespaceManager::singleton()->getLocalNamespace()->getUri();
     //class properties edition: add a group form for each property
     $classProperties = tao_helpers_form_GenerisFormFactory::getClassProperties($clazz, $this->getTopClazz());
     $i = 0;
     $systemProperties = $this->getSystemProperties();
     foreach ($classProperties as $classProperty) {
         $i++;
         $useEditor = (bool) preg_match("/^" . preg_quote($localNamespace, '/') . "/", $classProperty->getUri());
         $parentProp = true;
         $domains = $classProperty->getDomain();
         foreach ($domains->getIterator() as $domain) {
             if (array_search($classProperty->getUri(), $systemProperties) !== false || $domain->getUri() == $clazz->getUri()) {
                 $parentProp = false;
                 //@todo use the getPrivileges method once implemented
                 break;
             }
         }
         if ($useEditor) {
             $propData = array();
             if (isset($this->propertyData[$classProperty->getUri()])) {
                 foreach ($this->propertyData[$classProperty->getUri()] as $key => $value) {
                     $propData[$i . '_' . $key] = $value;
                 }
             }
             $propForm = $this->getPropertyForm($classProperty, $i, $parentProp, $propData);
             //and get its elements and groups
             $this->form->setElements(array_merge($this->form->getElements(), $propForm->getElements()));
             $this->form->setGroups(array_merge($this->form->getGroups(), $propForm->getGroups()));
             unset($propForm);
         } else {
             $roElement = tao_helpers_form_FormFactory::getElement('roProperty' . $i, 'Free');
             $roElement->setValue(__('Cannot be edited'));
             $this->form->addElement($roElement);
             $groupTitle = '<span class="property-heading-label">' . _dh($classProperty->getLabel()) . '</span>';
             $this->form->createGroup("ro_property_{$i}", $groupTitle, array('roProperty' . $i));
         }
     }
 }
示例#6
0
 /**
  * Short description of method initElements
  *
  * @access public
  * @author Joel Bout, <*****@*****.**>
  * @return mixed
  */
 public function initElements()
 {
     $guiOrderProperty = new core_kernel_classes_Property(TAO_GUIORDER_PROP);
     //get the list of properties to set in the form
     $defaultProperties = tao_helpers_form_GenerisFormFactory::getDefaultProperties();
     $editedProperties = $defaultProperties;
     $excludedProperties = isset($this->options['excludedProperties']) && is_array($this->options['excludedProperties']) ? $this->options['excludedProperties'] : array();
     $additionalProperties = isset($this->options['additionalProperties']) && is_array($this->options['additionalProperties']) ? $this->options['additionalProperties'] : array();
     $finalElements = array();
     $classProperties = array();
     foreach ($this->classes as $class) {
         $classProperties = array_merge(tao_helpers_form_GenerisFormFactory::getClassProperties($class));
     }
     if (!empty($additionalProperties)) {
         $classProperties = array_merge($classProperties, $additionalProperties);
     }
     foreach ($classProperties as $property) {
         if (!isset($editedProperties[$property->getUri()]) && !in_array($property->getUri(), $excludedProperties)) {
             $editedProperties[$property->getUri()] = $property;
         }
     }
     foreach ($editedProperties as $property) {
         $property->feed();
         $widget = $property->getWidget();
         if ($widget == null || $widget instanceof core_kernel_classes_Literal) {
             continue;
         } else {
             if ($widget instanceof core_kernel_classes_Resource && $widget->getUri() == WIDGET_TREEVIEW) {
                 continue;
             }
         }
         //map properties widgets to form elments
         $element = tao_helpers_form_GenerisFormFactory::elementMap($property);
         if (!is_null($element)) {
             //set label validator
             if ($property->getUri() == RDFS_LABEL) {
                 $element->addValidator(tao_helpers_form_FormFactory::getValidator('NotEmpty'));
             }
             // don't show empty labels
             if ($element instanceof tao_helpers_form_elements_Label && strlen($element->getRawValue()) == 0) {
                 continue;
             }
             //set file element validator:
             if ($element instanceof tao_helpers_form_elements_AsyncFile) {
             }
             if ($property->getUri() == RDFS_LABEL) {
                 // Label will not be a TAO Property. However, it should
                 // be always first.
                 array_splice($finalElements, 0, 0, array(array($element, 1)));
             } else {
                 if (count($guiOrderPropertyValues = $property->getPropertyValues($guiOrderProperty))) {
                     // get position of this property if it has one.
                     $position = intval($guiOrderPropertyValues[0]);
                     // insert the element at the right place.
                     $i = 0;
                     while ($i < count($finalElements) && ($position >= $finalElements[$i][1] && $finalElements[$i][1] !== null)) {
                         $i++;
                     }
                     array_splice($finalElements, $i, 0, array(array($element, $position)));
                 } else {
                     // Unordered properties will go at the end of the form.
                     $finalElements[] = array($element, null);
                 }
             }
         }
     }
     // Add elements related to class properties to the form.
     foreach ($finalElements as $element) {
         $this->form->addElement($element[0]);
     }
     // @todo currently tao cannot handle multiple classes
     /*
     $classUriElt = tao_helpers_form_FormFactory::getElement('classes', 'Hidden');
     $uris = array();
     foreach ($this->classes as $class) {
     	$uris[] = $class->getUri();
     }
     $classUriElt->setValue($uris);
     */
     //add an hidden elt for the class uri
     $classUriElt = tao_helpers_form_FormFactory::getElement('classUri', 'Hidden');
     $classUriElt->setValue(tao_helpers_Uri::encode($class->getUri()));
     $this->form->addElement($classUriElt);
     $this->form->addElement($classUriElt);
 }
 /**
  * Initialize the form elements
  *
  * @access protected
  * @author Bertrand Chevrier, <*****@*****.**>
  * @return mixed
  */
 protected function initElements()
 {
     $property = new core_kernel_classes_Property($this->instance->getUri());
     isset($this->options['index']) ? $index = $this->options['index'] : ($index = 1);
     $propertyProperties = array_merge(tao_helpers_form_GenerisFormFactory::getDefaultProperties(), array(new core_kernel_classes_Property(PROPERTY_IS_LG_DEPENDENT), new core_kernel_classes_Property(TAO_GUIORDER_PROP)));
     $elementNames = array();
     foreach ($propertyProperties as $propertyProperty) {
         //map properties widgets to form elements
         $element = tao_helpers_form_GenerisFormFactory::elementMap($propertyProperty);
         if (!is_null($element)) {
             //take property values to populate the form
             $values = $property->getPropertyValuesCollection($propertyProperty);
             foreach ($values->getIterator() as $value) {
                 if (!is_null($value)) {
                     if ($value instanceof core_kernel_classes_Resource) {
                         $element->setValue($value->getUri());
                     }
                     if ($value instanceof core_kernel_classes_Literal) {
                         $element->setValue((string) $value);
                     }
                 }
             }
             $element->setName("{$index}_{$element->getName()}");
             $element->addClass('property');
             $this->form->addElement($element);
             $elementNames[] = $element->getName();
             if ($propertyProperty->getUri() == TAO_GUIORDER_PROP) {
                 $element->addValidator(tao_helpers_form_FormFactory::getValidator('Integer'));
             }
         }
     }
     //build the type list from the "widget/range to type" map
     $typeElt = tao_helpers_form_FormFactory::getElement("{$index}_type", 'Combobox');
     $typeElt->setDescription(__('Type'));
     $typeElt->addAttribute('class', 'property-type property');
     $typeElt->setEmptyOption(' --- ' . __('select') . ' --- ');
     $options = array();
     $checkRange = false;
     foreach (tao_helpers_form_GenerisFormFactory::getPropertyMap() as $typeKey => $map) {
         $options[$typeKey] = $map['title'];
         $widget = $property->getWidget();
         if ($widget instanceof core_kernel_classes_Resource) {
             if ($widget->getUri() == $map['widget']) {
                 $typeElt->setValue($typeKey);
                 $checkRange = is_null($map['range']);
             }
         }
     }
     $typeElt->setOptions($options);
     $this->form->addElement($typeElt);
     $elementNames[] = $typeElt->getName();
     //list drop down
     $listService = tao_models_classes_ListService::singleton();
     $listElt = tao_helpers_form_FormFactory::getElement("{$index}_range", 'Combobox');
     $listElt->setDescription(__('List values'));
     $listElt->addAttribute('class', 'property-listvalues property');
     $listElt->setEmptyOption(' --- ' . __('select') . ' --- ');
     $listOptions = array();
     foreach ($listService->getLists() as $list) {
         $listOptions[tao_helpers_Uri::encode($list->getUri())] = $list->getLabel();
         $range = $property->getRange();
         if (!is_null($range)) {
             if ($range->getUri() == $list->getUri()) {
                 $listElt->setValue($list->getUri());
             }
         }
     }
     $listOptions['new'] = ' + ' . __('Add / Edit lists');
     $listElt->setOptions($listOptions);
     if ($checkRange) {
         $listElt->addValidator(tao_helpers_form_FormFactory::getValidator('NotEmpty'));
     }
     $this->form->addElement($listElt);
     $elementNames[] = $listElt->getName();
     //add an hidden elt for the property uri
     $encodedUri = tao_helpers_Uri::encode($property->getUri());
     $propUriElt = tao_helpers_form_FormFactory::getElement("{$index}_uri", 'Hidden');
     $propUriElt->addAttribute('class', 'property-uri property');
     $propUriElt->setValue($encodedUri);
     $this->form->addElement($propUriElt);
     $elementNames[] = $propUriElt;
     if (count($elementNames) > 0) {
         $groupTitle = $this->getGroupTitle($property);
         $this->form->createGroup("property_{$encodedUri}", $groupTitle, $elementNames);
     }
 }