/** * 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(); }
/** * Generates a form to define the reverse values of a specific property for a resource * This allows to set/remove multiple triples that share the same object * * @param core_kernel_classes_Resource $resource * @param core_kernel_classes_Property $property * @return tao_helpers_form_GenerisTreeForm */ public static function buildReverseTree(core_kernel_classes_Resource $resource, core_kernel_classes_Property $property) { $tree = new self($resource, $property); $domainCollection = $property->getDomain(); if (!$domainCollection->isEmpty()) { $domain = $domainCollection->get(0); $tree->setData('rootNode', $domain->getUri()); $tree->setData('dataUrl', _url('getData', 'GenerisTree', 'tao')); $tree->setData('saveUrl', _url('setReverseValues', 'GenerisTree', 'tao')); $values = array_keys($domain->searchInstances(array($property->getUri() => $resource), array('recursive' => true, 'like' => false))); $tree->setData('values', $values); $openNodeUris = tao_models_classes_GenerisTreeFactory::getNodesToOpen($values, $domain); $tree->setData('openNodes', $openNodeUris); } return $tree; }
/** * Format an RDFS Class to an array to be interpreted by the client tree * This is a closed array format. * * @access public * @author Jerome Bogaerts, <*****@*****.**> * @param Class clazz * @param array options * @return array */ public function toTree(core_kernel_classes_Class $clazz, $options) { $returnValue = array(); // show subclasses yes/no, not implemented $subclasses = isset($options['subclasses']) ? $options['subclasses'] : true; // show instances yes/no $instances = isset($options['instances']) ? $options['instances'] : true; // @todo describe how this option influences the behaviour $highlightUri = isset($options['highlightUri']) ? $options['highlightUri'] : ''; // filter results by label, and don't show them as a tree at all, but a flat list $labelFilter = isset($options['labelFilter']) ? $options['labelFilter'] : ''; // @todo describe how this option influences the behaviour $recursive = isset($options['recursive']) ? $options['recursive'] : false; // cut of the class and only display the children? $chunk = isset($options['chunk']) ? $options['chunk'] : false; // probably which subtrees should be opened $browse = isset($options['browse']) ? $options['browse'] : array(); // limit of instances shown by subclass if no search label is given // if a search string is given, this is the total limit of results, independant of classes $limit = isset($options['limit']) ? $options['limit'] : 0; // offset for limit $offset = isset($options['offset']) ? $options['offset'] : 0; //an array used to filter properties; use the format by core_kernel_classes_Class::searchInstances $propertyFilter = isset($options['propertyFilter']) ? $options['propertyFilter'] : array(); // A unique node URI to be returned from as a tree leaf. $uniqueNode = isset($options['uniqueNode']) ? $options['uniqueNode'] : null; $factory = new tao_models_classes_GenerisTreeFactory(); if (!empty($labelFilter) && $labelFilter != '*') { // The result must be a set of filtered nodes. $props = array(RDFS_LABEL => $labelFilter); $opts = array('like' => true, 'limit' => $limit, 'offset' => $offset, 'recursive' => true); $searchResult = $clazz->searchInstances($props, $opts); $results = array(); foreach ($searchResult as $instance) { $results[] = $factory->buildResourceNode($instance, $clazz); } if ($offset > 0) { $returnValue = $results; } else { if (count($results) > 0) { $returnValue = $factory->buildClassNode($clazz); $returnValue['count'] = $clazz->countInstances($props, $opts); $returnValue['children'] = $results; } } } elseif ($uniqueNode !== null) { $instance = new \core_kernel_classes_Resource($uniqueNode); $results[] = $factory->buildResourceNode($instance, $clazz); $returnValue = $results; } else { // Let's walk the tree with super walker! ~~~ p==[w]õ__ array_walk($browse, function (&$item) { $item = tao_helpers_Uri::decode($item); }); $openNodes = tao_models_classes_GenerisTreeFactory::getNodesToOpen($browse, $clazz); if (!in_array($clazz->getUri(), $openNodes)) { $openNodes[] = $clazz->getUri(); } $tree = $factory->buildTree($clazz, $instances, $openNodes, $limit, $offset, $propertyFilter); $returnValue = $chunk ? $tree['children'] : $tree; } return $returnValue; }