/**
  * (non-PHPdoc)
  * @see tao_helpers_form_FormContainer::initElements()
  */
 public function initElements()
 {
     $fileName = '';
     $instances = array();
     if (isset($this->data['instance'])) {
         $instance = $this->data['instance'];
         if ($instance instanceof core_kernel_classes_Resource) {
             $instances[$instance->getUri()] = $instance->getLabel();
         }
     } elseif (isset($this->data['class'])) {
         $class = $this->data['class'];
         if ($class instanceof core_kernel_classes_Class) {
             foreach ($class->getInstances() as $instance) {
                 $instances[$instance->getUri()] = $instance->getLabel();
             }
         }
     } else {
         throw new common_Exception('No class nor instance specified for export');
     }
     $instances = tao_helpers_Uri::encodeArray($instances, tao_helpers_Uri::ENCODE_ARRAY_KEYS);
     $descElt = tao_helpers_form_FormFactory::getElement('desc', 'Label');
     $descElt->setValue(__('Enables you to export a published delivery'));
     $this->form->addElement($descElt);
     $instanceElt = tao_helpers_form_FormFactory::getElement('exportInstance', 'Radiobox');
     $instanceElt->setDescription(__('Items'));
     $instanceElt->setAttribute('checkAll', true);
     $instanceElt->setOptions($instances);
     $instanceElt->setValue(current(array_keys($instances)));
     $this->form->addElement($instanceElt);
     $this->form->createGroup('options', __('Export Options'), array('desc', 'filename', 'exportInstance'));
 }
 /**
  * Renders the auhtoring for simple tests
  */
 public function index()
 {
     $test = $this->getCurrentInstance();
     $itemSequence = array();
     $itemUris = array();
     $counter = 1;
     foreach ($this->service->getTestItems($test) as $item) {
         $itemUris[] = $item->getUri();
         $itemSequence[$counter] = array('uri' => tao_helpers_Uri::encode($item->getUri()), 'label' => $item->getLabel());
         $counter++;
     }
     // data for item sequence, terrible solution
     // @todo implement an ajax request for labels or pass from tree to sequence
     $allItems = array();
     foreach ($this->service->getAllItems() as $itemUri => $itemLabel) {
         $allItems['item_' . tao_helpers_Uri::encode($itemUri)] = $itemLabel;
     }
     $this->setData('uri', $test->getUri());
     $this->setData('allItems', json_encode($allItems));
     $this->setData('itemSequence', $itemSequence);
     // data for generis tree form
     $this->setData('relatedItems', json_encode(tao_helpers_Uri::encodeArray($itemUris)));
     $openNodes = tao_models_classes_GenerisTreeFactory::getNodesToOpen($itemUris, new core_kernel_classes_Class(TAO_ITEM_CLASS));
     $this->setData('itemRootNode', TAO_ITEM_CLASS);
     $this->setData('itemOpenNodes', $openNodes);
     $this->setData('saveUrl', _url('saveItems', 'Authoring', 'taoWfTest'));
     $this->setView('authoring.tpl');
 }
 /**
  * @deprecated
  * @see taoTests_models_classes_TestModel::getAuthoring()
  */
 public function getAuthoring(core_kernel_classes_Resource $test)
 {
     $ext = common_ext_ExtensionsManager::singleton()->getExtensionById('taoWfTest');
     $testService = taoTests_models_classes_TestsService::singleton();
     $itemSequence = array();
     $itemUris = array();
     $i = 1;
     foreach ($testService->getTestItems($test) as $item) {
         $itemUris[] = $item->getUri();
         $itemSequence[$i] = array('uri' => tao_helpers_Uri::encode($item->getUri()), 'label' => $item->getLabel());
         $i++;
     }
     // data for item sequence, terrible solution
     // @todo implement an ajax request for labels or pass from tree to sequence
     $allItems = array();
     foreach ($testService->getAllItems() as $itemUri => $itemLabel) {
         $allItems['item_' . tao_helpers_Uri::encode($itemUri)] = $itemLabel;
     }
     $widget = new Renderer($ext->getConstant('DIR_VIEWS') . 'templates' . DIRECTORY_SEPARATOR . 'authoring.tpl');
     $widget->setData('uri', $test->getUri());
     $widget->setData('allItems', json_encode($allItems));
     $widget->setData('itemSequence', $itemSequence);
     // data for generis tree form
     $widget->setData('relatedItems', json_encode(tao_helpers_Uri::encodeArray($itemUris)));
     $openNodes = tao_models_classes_GenerisTreeFactory::getNodesToOpen($itemUris, new core_kernel_classes_Class(TAO_ITEM_CLASS));
     $widget->setData('itemRootNode', TAO_ITEM_CLASS);
     $widget->setData('itemOpenNodes', $openNodes);
     $widget->setData('saveUrl', _url('saveItems', 'Authoring', 'taoWfTest'));
     return $widget->render();
 }
 /**
  * Render the creator base view
  */
 public function index()
 {
     $labels = array();
     $testUri = $this->getRequestParameter('uri');
     $testModel = new taoQtiTest_models_classes_TestModel();
     $items = $testModel->getItems(new core_kernel_classes_Resource(tao_helpers_Uri::decode($testUri)));
     foreach ($items as $item) {
         $labels[$item->getUri()] = $item->getLabel();
     }
     $this->setData('labels', json_encode(tao_helpers_Uri::encodeArray($labels, tao_helpers_Uri::ENCODE_ARRAY_KEYS)));
     $this->setData('loadUrl', _url('getTest', null, null, array('uri' => $testUri)));
     $this->setData('saveUrl', _url('saveTest', null, null, array('uri' => $testUri)));
     $this->setData('itemsUrl', _url('get', 'Items'));
     $this->setData('identifierUrl', _url('getIdentifier', null, null, array('uri' => $testUri)));
     $this->setView('creator.tpl');
 }
Esempio n. 5
0
 public function testMapping()
 {
     $csv_column = array('login', 'password', 'title', 'last-name', 'firstname', 'gender', 'mail', 'token', 'abelabel');
     $properties = tao_helpers_Uri::encodeArray(array(RDFS_LABEL => 'Label', PROPERTY_USER_FIRSTNAME => 'First Name', PROPERTY_USER_LASTNAME => 'Last Name', PROPERTY_USER_LOGIN => 'Login', PROPERTY_USER_PASSWORD => 'Password', PROPERTY_USER_MAIL => 'Mail', PROPERTY_USER_UILG => 'Interface Language', PasswordRecoveryService::PROPERTY_PASSWORD_RECOVERY_TOKEN => 'Password recovery token'), tao_helpers_Uri::ENCODE_ARRAY_KEYS);
     $data = array();
     $options = array('class_properties' => $properties, 'ranged_properties' => array(), 'csv_column' => $csv_column, tao_helpers_data_CsvFile::FIRST_ROW_COLUMN_NAMES => true);
     $formContainer = new tao_models_classes_import_CSVMappingForm($data, $options);
     $form = $formContainer->getForm();
     $this->assertEquals('csv_select', $form->getElement('http_2_www_0_w3_0_org_1_2000_1_01_1_rdf-schema_3_label')->getEvaluatedValue());
     $this->assertEquals('4_O', $form->getElement('http_2_www_0_tao_0_lu_1_Ontologies_1_generis_0_rdf_3_userFirstName')->getEvaluatedValue());
     $this->assertEquals('3_O', $form->getElement('http_2_www_0_tao_0_lu_1_Ontologies_1_generis_0_rdf_3_userLastName')->getEvaluatedValue());
     $this->assertEquals('0_O', $form->getElement('http_2_www_0_tao_0_lu_1_Ontologies_1_generis_0_rdf_3_login')->getEvaluatedValue());
     $this->assertEquals('1_O', $form->getElement('http_2_www_0_tao_0_lu_1_Ontologies_1_generis_0_rdf_3_password')->getEvaluatedValue());
     $this->assertEquals('6_O', $form->getElement('http_2_www_0_tao_0_lu_1_Ontologies_1_generis_0_rdf_3_userMail')->getEvaluatedValue());
     $this->assertEquals('csv_select', $form->getElement('http_2_www_0_tao_0_lu_1_Ontologies_1_generis_0_rdf_3_userUILg')->getEvaluatedValue());
     $this->assertEquals('csv_select', $form->getElement('http_2_www_0_tao_0_lu_1_Ontologies_1_generis_0_rdf_3_passwordRecoveryToken')->getEvaluatedValue());
 }
 /**
  * Render the tree and the list to select and order the test related items 
  * @return void
  */
 public function selectItems()
 {
     $this->setData('uri', $this->getRequestParameter('uri'));
     $this->setData('classUri', $this->getRequestParameter('classUri'));
     $test = $this->getCurrentInstance();
     $allItems = array();
     foreach ($this->service->getAllItems() as $itemUri => $itemLabel) {
         $allItems['item_' . tao_helpers_Uri::encode($itemUri)] = $itemLabel;
     }
     $this->setData('allItems', json_encode($allItems));
     $relatedItems = tao_helpers_Uri::encodeArray($this->service->getTestItems($test, true), tao_helpers_Uri::ENCODE_ARRAY_VALUES);
     $this->setData('relatedItems', json_encode($relatedItems));
     $itemSequence = array();
     foreach ($relatedItems as $index => $itemUri) {
         $item = new core_kernel_classes_Resource($itemUri);
         $itemSequence[$index] = array('uri' => tao_helpers_Uri::encode($itemUri), 'label' => $item->getLabel());
     }
     $this->setData('itemSequence', $itemSequence);
     $this->setView('items.tpl');
 }
Esempio n. 7
0
 /**
  * overriden
  *
  * @access public
  * @author Joel Bout, <*****@*****.**>
  * @return mixed
  */
 public function initElements()
 {
     $fileName = '';
     $instances = array();
     if (isset($this->data['instance'])) {
         $resource = $this->data['instance'];
     } elseif (isset($this->data['class'])) {
         $resource = $this->data['class'];
     } else {
         throw new common_Exception('No class nor instance specified for export');
     }
     $fileName = strtolower(tao_helpers_Display::textCleaner($resource->getLabel(), '*'));
     $hiddenElt = tao_helpers_form_FormFactory::getElement('resource', 'Hidden');
     $hiddenElt->setValue($resource->getUri());
     $this->form->addElement($hiddenElt);
     $nameElt = tao_helpers_form_FormFactory::getElement('filename', 'Textbox');
     $nameElt->setDescription(__('File name'));
     $nameElt->addValidator(tao_helpers_form_FormFactory::getValidator('NotEmpty'));
     $nameElt->setValue($fileName);
     $nameElt->setUnit(".rdf");
     $this->form->addElement($nameElt);
     $instances = tao_helpers_Uri::encodeArray($instances, tao_helpers_Uri::ENCODE_ARRAY_KEYS);
     $this->form->createGroup('options', __('Export Metadata as RDF/XML file'), array('rdf_desc', 'filename', 'rdftpl'));
 }
 /**
  * Function returns extended delivery data (e.g. groups, number of executions etc.)
  * @param \core_kernel_classes_Resource $delivery
  * @return void
  */
 private function getFullDeliveryData(\core_kernel_classes_Resource $delivery)
 {
     $result = array();
     if (\taoDelivery_models_classes_execution_ServiceProxy::singleton()->implementsMonitoring()) {
         $execs = \taoDelivery_models_classes_execution_ServiceProxy::singleton()->getExecutionsByDelivery($delivery);
         $result['executions'] = count($execs);
     }
     $result['published'] = $this->service->getCompilationDate($delivery);
     //groups
     $groups = array_keys($this->getServiceManager()->get('taoDeliverySchedule/DeliveryGroupsService')->getGroups($delivery));
     $result['groups'] = \tao_helpers_Uri::encodeArray($groups);
     //Test takers
     $result = $result + DeliveryTestTakersService::singleton()->getDeliveryTestTakers($delivery);
     //Max. number of executions
     $deliveryMaxexecProperty = new \core_kernel_classes_Property(TAO_DELIVERY_MAXEXEC_PROP);
     $result['maxexec'] = (string) $delivery->getOnePropertyValue($deliveryMaxexecProperty);
     //Result server
     $resultServerProp = new \core_kernel_classes_Property(TAO_DELIVERY_RESULTSERVER_PROP);
     $result['resultserver'] = $delivery->getOnePropertyValue($resultServerProp)->getUri();
     $result['resultserver'] = \tao_helpers_Uri::encode($result['resultserver']);
     $result['repeatedDeliveries'] = $this->getServiceManager()->get(RepeatedDeliveryService::CONFIG_ID)->getRepeatedDeliveriesData($delivery);
     return $result;
 }
Esempio n. 9
0
 /**
  * load the translated data of an instance regarding the given lang 
  * @return void
  */
 public function getTranslatedData()
 {
     if (!tao_helpers_Request::isAjax()) {
         throw new Exception("wrong request mode");
     }
     $data = array();
     if ($this->hasRequestParameter('lang')) {
         $data = tao_helpers_Uri::encodeArray($this->getClassService()->getTranslatedProperties($this->getCurrentInstance(), $this->getRequestParameter('lang')), tao_helpers_Uri::ENCODE_ARRAY_KEYS);
     }
     echo json_encode($data);
 }
 /**
  * overriden
  *
  * @access public
  * @author Joel Bout, <*****@*****.**>
  * @return mixed
  */
 public function initElements()
 {
     $testService = taoTests_models_classes_TestsService::singleton();
     $testModel = new core_kernel_classes_Resource(INSTANCE_TEST_MODEL_QTI);
     $fileName = '';
     $options = array();
     if (isset($this->data['instance'])) {
         $test = $this->data['instance'];
         if ($test instanceof core_kernel_classes_Resource) {
             if ($testModel->equals($testService->getTestModel($test))) {
                 $fileName = strtolower(tao_helpers_Display::textCleaner($test->getLabel()));
                 $options[$test->getUri()] = $test->getLabel();
             }
         }
     } else {
         if (isset($this->data['class'])) {
             $class = $this->data['class'];
         } else {
             $class = $itemService->getRootClass();
         }
         if ($class instanceof core_kernel_classes_Class) {
             $fileName = strtolower(tao_helpers_Display::textCleaner($class->getLabel(), '*'));
             foreach ($class->getInstances() as $instance) {
                 if ($testModel->equals($testService->getTestModel($instance))) {
                     $options[$instance->getUri()] = $instance->getLabel();
                 }
             }
         }
     }
     $nameElt = tao_helpers_form_FormFactory::getElement('filename', 'Textbox');
     $nameElt->setDescription(__('File name'));
     $nameElt->setValue($fileName);
     $nameElt->setUnit(".zip");
     $nameElt->addValidator(tao_helpers_form_FormFactory::getValidator('NotEmpty'));
     $this->form->addElement($nameElt);
     $instanceElt = tao_helpers_form_FormFactory::getElement('instances', 'Checkbox');
     $instanceElt->setDescription(__('Test'));
     //$instanceElt->setAttribute('checkAll', true);
     $instanceElt->setOptions(tao_helpers_Uri::encodeArray($options, tao_helpers_Uri::ENCODE_ARRAY_KEYS));
     foreach (array_keys($options) as $value) {
         $instanceElt->setValue($value);
     }
     $this->form->addElement($instanceElt);
     $this->form->createGroup('options', __('Export QTI 2.1 Test Package'), array('filename', 'instances'));
 }
 public static function connectorEditor(core_kernel_classes_Resource $connector, core_kernel_classes_Resource $connectorType = null, $formName = '', core_kernel_classes_Resource $activity)
 {
     if (empty($formName)) {
         $formName = 'connectorForm';
     }
     $myForm = null;
     $myForm = tao_helpers_form_FormFactory::getForm($formName, array());
     $myForm->setActions(array(), 'bottom');
     //delete the default 'save' and 'revert' buttons
     //add a hidden input to post the uri of the connector that is being edited
     $elementConnectorUri = tao_helpers_form_FormFactory::getElement('connectorUri', 'Hidden');
     $elementConnectorUri->setValue(tao_helpers_Uri::encode($connector->getUri()));
     $myForm->addElement($elementConnectorUri);
     //add a hidden input to post the uri of the activity of the connector that is being edited
     $elementActivityUri = tao_helpers_form_FormFactory::getElement('activityUri', 'Hidden');
     $elementActivityUri->setValue(tao_helpers_Uri::encode($activity->getUri()));
     $myForm->addElement($elementActivityUri);
     //add label input: authorize connector label editing or not?
     $elementLabel = tao_helpers_form_FormFactory::getElement('label', 'Textbox');
     $elementLabel->setDescription(__('Label'));
     $elementLabel->setValue($connector->getLabel());
     $myForm->addElement($elementLabel);
     //add a drop down select input to allow selecting Type of Connector
     $elementConnectorType = tao_helpers_form_FormFactory::getElement(tao_helpers_Uri::encode(PROPERTY_CONNECTORS_TYPE), 'Combobox');
     $elementConnectorType->setDescription(__('Connector Type'));
     $range = new core_kernel_classes_Class(CLASS_TYPEOFCONNECTORS);
     if ($range != null) {
         $options = array();
         foreach ($range->getInstances(true) as $rangeInstance) {
             $options[tao_helpers_Uri::encode($rangeInstance->getUri())] = $rangeInstance->getLabel();
         }
         $elementConnectorType->setOptions($options);
     }
     //TODO: check if the parent of the current connector is a connector as well: if so, only allow the split type connector, since there will be no use of a sequential one
     //check if the property value "type of connector" of the current connector exists
     if (empty($connectorType)) {
         //get the type of connector of the current connector
         $collection = $connector->getPropertyValuesCollection(new core_kernel_classes_Property(PROPERTY_CONNECTORS_TYPE));
         if ($collection->isEmpty()) {
             //if the type of connector is not set yet, simply return a dropdown menu of available type of connector
             $myForm->addElement($elementConnectorType);
             return $myForm;
         } else {
             foreach ($collection->getIterator() as $value) {
                 if ($value instanceof core_kernel_classes_Resource) {
                     //a connector type has been found!
                     $connectorType = $value;
                     $elementConnectorType->setValue($connectorType->getUri());
                     //no need to use tao_helpers_Uri::encode here: seems like that it would be done sw else
                     $myForm->addElement($elementConnectorType);
                     break;
                     //stop at the first occurence, which should be the unique one (use newly added getOnePropertyValue here instead)
                 }
             }
         }
     }
     //if the type of connector is still not set here,there is a problem
     if (empty($connectorType)) {
         throw new Exception("an empty value of service definition has been found for the call of service that is being edited");
         return $myForm;
     }
     //continue building the form according the the type of connector:
     $elementInputs = array();
     if ($connectorType->getUri() == INSTANCE_TYPEOFCONNECTORS_SEQUENCE) {
         $elementInputs = self::nextActivityElements($connector, 'next');
     } else {
         if ($connectorType->getUri() == INSTANCE_TYPEOFCONNECTORS_CONDITIONAL) {
             $transitionRule = $connector->getOnePropertyValue(new core_kernel_classes_Property(PROPERTY_CONNECTORS_TRANSITIONRULE));
             $elementInputs[] = self::getConditionElement($transitionRule);
             $elementInputs = array_merge($elementInputs, self::nextActivityElements($connector, 'then'));
             $elementInputs = array_merge($elementInputs, self::nextActivityElements($connector, 'else'));
         } else {
             if ($connectorType->getUri() == INSTANCE_TYPEOFCONNECTORS_PARALLEL) {
                 $elementInputs = self::nextActivityElements($connector, 'parallel', false, false, 'Checkbox');
             } else {
                 if ($connectorType->getUri() == INSTANCE_TYPEOFCONNECTORS_JOIN) {
                     $elementInputs = self::nextActivityElements($connector, 'join', true, false, 'Combobox');
                 } else {
                     throw new Exception("the selected type of connector {$connectorType->getLabel()} is not supported");
                 }
             }
         }
     }
     foreach ($elementInputs as $elementInput) {
         $myForm->addElement($elementInput);
     }
     //notification system
     $myForm->addElement(tao_helpers_form_FormFactory::getElement('notify_set', 'Hidden'));
     $notifyMsgProperty = new core_kernel_classes_Property(PROPERTY_CONNECTORS_NOTIFICATION_MESSAGE);
     $notifyMsgElt = tao_helpers_form_GenerisFormFactory::elementMap($notifyMsgProperty);
     $notifyMsgElt->setValue((string) $connector->getOnePropertyValue($notifyMsgProperty));
     $myForm->addElement($notifyMsgElt);
     $notifyProperty = new core_kernel_classes_Property(PROPERTY_CONNECTORS_NOTIFY);
     $notifyElt = tao_helpers_form_GenerisFormFactory::elementMap($notifyProperty);
     $notifyElt->addAttribute('class', 'notify-element');
     $notifyElt->setValues(tao_helpers_Uri::encodeArray($connector->getPropertyValues($notifyProperty)));
     $myForm->addElement($notifyElt);
     $notifyUserProperty = new core_kernel_classes_Property(PROPERTY_CONNECTORS_USER_NOTIFIED);
     $notifyUserElt = tao_helpers_form_GenerisFormFactory::elementMap($notifyUserProperty);
     $notifyUserElt->addAttribute('class', 'notify-user');
     $notifyUserElt->setValues(tao_helpers_Uri::encodeArray($connector->getPropertyValues($notifyUserProperty)));
     $myForm->addElement($notifyUserElt);
     $notifyGroupProperty = new core_kernel_classes_Property(PROPERTY_CONNECTORS_ROLE_NOTIFIED);
     $notifyGroupElt = tao_helpers_form_GenerisFormFactory::elementMap($notifyGroupProperty);
     $notifyGroupElt->addAttribute('class', 'notify-group');
     $notifyGroupElt->setValues(tao_helpers_Uri::encodeArray($connector->getPropertyValues($notifyGroupProperty)));
     $myForm->addElement($notifyGroupElt);
     return $myForm;
 }
 /**
  * Get repeated deliveries data
  * @param \core_kernel_classes_Resource $delivery
  * @return array
  */
 public function getRepeatedDeliveriesData(\core_kernel_classes_Resource $delivery)
 {
     $result = array();
     $repeatedDeliveryClass = new \core_kernel_classes_Class(self::CLASS_URI);
     $repeatedDeliveries = $repeatedDeliveryClass->searchInstances(array(self::PROPERTY_REPETITION_OF => $delivery->getUri()), array('like' => false));
     foreach ($repeatedDeliveries as $repeatedDelivery) {
         $repetitionNumber = (string) $repeatedDelivery->getUniquePropertyValue(new \core_kernel_classes_Property(self::PROPERTY_NUMBER_OF_REPETITION));
         $result[$repetitionNumber] = array();
         //groups
         $groups = array_keys($this->getServiceManager()->get('taoDeliverySchedule/DeliveryGroupsService')->getGroups($repeatedDelivery));
         $result[$repetitionNumber]['groups'] = \tao_helpers_Uri::encodeArray($groups);
         //Test takers
         $result[$repetitionNumber] = array_merge($result[$repetitionNumber], DeliveryTestTakersService::singleton()->getDeliveryTestTakers($repeatedDelivery));
     }
     return $result;
 }