/**
  * 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);
 }
Example #2
0
 /**
  * Initialize the form elements
  *
  * @access protected
  * @author Bertrand Chevrier, <*****@*****.**>
  * @return mixed
  */
 protected function initElements()
 {
     parent::initElements();
     $elements = $this->form->getElements();
     $this->form->setElements(array());
     $currentLangElt = tao_helpers_form_FormFactory::getElement('current_lang', 'Textbox');
     $currentLangElt->setDescription(__('Current language'));
     $currentLangElt->setAttributes(array('readonly' => 'true'));
     $currentLangElt->setValue(\common_session_SessionManager::getSession()->getDataLanguage());
     //API lang /data lang
     $this->form->addElement($currentLangElt);
     $dataLangElement = tao_helpers_form_FormFactory::getElement('translate_lang', 'Combobox');
     $dataLangElement->setDescription(__('Translate to'));
     $dataLangElement->setOptions(tao_helpers_I18n::getAvailableLangsByUsage(new core_kernel_classes_Resource(INSTANCE_LANGUAGE_USAGE_DATA)));
     $dataLangElement->setEmptyOption(__('Select a language'));
     $dataLangElement->addValidator(tao_helpers_form_FormFactory::getValidator('NotEmpty'));
     $this->form->addElement($dataLangElement);
     $this->form->createGroup('translation_info', __('Translation parameters'), array('current_lang', 'translate_lang'));
     $dataGroup = array();
     foreach ($elements as $element) {
         if ($element instanceof tao_helpers_form_elements_Hidden || $element->getName() == 'uri' || $element->getName() == 'classUri') {
             $this->form->addElement($element);
         } else {
             $propertyUri = tao_helpers_Uri::decode($element->getName());
             $property = new core_kernel_classes_Property($propertyUri);
             //translate only language dependent properties or Labels
             //supported widget are: Textbox, TextArea, HtmlArea
             //@todo support other widgets
             if ($property->isLgDependent() && ($element instanceof tao_helpers_form_elements_Textbox || $element instanceof tao_helpers_form_elements_TextArea || $element instanceof tao_helpers_form_elements_HtmlArea) || $propertyUri == RDFS_LABEL) {
                 $translatedElt = clone $element;
                 $viewElt = tao_helpers_form_FormFactory::getElement('view_' . $element->getName(), 'Label');
                 $viewElt->setDescription($element->getDescription());
                 $viewElt->setValue($element->getValue());
                 $viewElt->setAttribute('no-format', true);
                 if ($element instanceof tao_helpers_form_elements_HtmlArea) {
                     $viewElt->setAttribute('htmlentities', false);
                 }
                 $this->form->addElement($viewElt);
                 $dataGroup[] = $viewElt->getName();
                 $translatedElt->setDescription(' ');
                 $translatedElt->setValue('');
                 if ($propertyUri == RDFS_LABEL) {
                     $translatedElt->setForcedValid();
                 }
                 $this->form->addElement($translatedElt);
                 $dataGroup[] = $translatedElt->getName();
             }
         }
     }
     $this->form->createGroup('translation_form', __('Translate'), $dataGroup);
 }
Example #3
0
 /**
  * Render the  form to translate a Resource instance
  * @return void
  * @requiresRight id WRITE
  */
 public function translateInstance()
 {
     $instance = $this->getCurrentInstance();
     $formContainer = new tao_actions_form_Translate($this->getCurrentClass(), $instance);
     $myForm = $formContainer->getForm();
     if ($this->hasRequestParameter('target_lang')) {
         $targetLang = $this->getRequestParameter('target_lang');
         if (in_array($targetLang, tao_helpers_I18n::getAvailableLangsByUsage(new core_kernel_classes_Resource(INSTANCE_LANGUAGE_USAGE_DATA)))) {
             $langElt = $myForm->getElement('translate_lang');
             $langElt->setValue($targetLang);
             $langElt->setAttribute('readonly', 'true');
             $trData = $this->getClassService()->getTranslatedProperties($instance, $targetLang);
             foreach ($trData as $key => $value) {
                 $element = $myForm->getElement(tao_helpers_Uri::encode($key));
                 if (!is_null($element)) {
                     $element->setValue($value);
                 }
             }
         }
     }
     if ($myForm->isSubmited()) {
         if ($myForm->isValid()) {
             $values = $myForm->getValues();
             if (isset($values['translate_lang'])) {
                 $datalang = common_session_SessionManager::getSession()->getDataLanguage();
                 $lang = $values['translate_lang'];
                 $translated = 0;
                 foreach ($values as $key => $value) {
                     if (preg_match("/^http/", $key)) {
                         $value = trim($value);
                         $property = new core_kernel_classes_Property($key);
                         if (empty($value)) {
                             if ($datalang != $lang && $lang != '') {
                                 $instance->removePropertyValueByLg($property, $lang);
                             }
                         } else {
                             if ($instance->editPropertyValueByLg($property, $value, $lang)) {
                                 $translated++;
                             }
                         }
                     }
                 }
                 if ($translated > 0) {
                     $this->setData('message', __('Translation saved'));
                 }
             }
         }
     }
     $this->setData('myForm', $myForm->render());
     $this->setData('formTitle', __('Translate'));
     $this->setView('form.tpl', 'tao');
 }