/** * Displays all preoperties and values for a resource, denoted by parameter */ public function propertiesAction() { $this->_addLastModifiedHeader(); $store = $this->_owApp->erfurt->getStore(); $graph = $this->_owApp->selectedModel; $resource = $this->_owApp->selectedResource; $navigation = $this->_owApp->navigation; $translate = $this->_owApp->translate; // add export formats to resource menu $resourceMenu = OntoWiki_Menu_Registry::getInstance()->getMenu('resource'); $menu = new OntoWiki_Menu(); $menu->setEntry('Resource', $resourceMenu); $event = new Erfurt_Event('onCreateMenu'); $event->menu = $resourceMenu; $event->resource = $this->_owApp->selectedResource; $event->model = $this->_owApp->selectedModel; $event->trigger(); $event = new Erfurt_Event('onPropertiesAction'); $event->uri = (string) $resource; $event->graph = $this->_owApp->selectedModel->getModelUri(); $event->trigger(); // Give plugins a chance to add entries to the menu $this->view->placeholder('main.window.menu')->set($menu->toArray(false, true)); $title = $resource->getTitle($this->_config->languages->locale) ? $resource->getTitle($this->_config->languages->locale) : OntoWiki_Utils::contractNamespace((string) $resource); $windowTitle = sprintf($translate->_('Properties of %1$s'), $title); $this->view->placeholder('main.window.title')->set($windowTitle); if (!empty($resource)) { $event = new Erfurt_Event('onPreTabsContentAction'); $event->uri = (string) $resource; $result = $event->trigger(); if ($result) { $this->view->preTabsContent = $result; } $event = new Erfurt_Event('onPrePropertiesContentAction'); $event->uri = (string) $resource; $result = $event->trigger(); if ($result) { $this->view->prePropertiesContent = $result; } $model = new OntoWiki_Model_Resource($store, $graph, (string) $resource); $values = $model->getValues(); $predicates = $model->getPredicates(); // new trigger onPropertiesActionData to work with data (reorder with plugin) $event = new Erfurt_Event('onPropertiesActionData'); $event->uri = (string) $resource; $event->predicates = $predicates; $event->values = $values; $result = $event->trigger(); if ($result) { $predicates = $event->predicates; $values = $event->values; } $titleHelper = new OntoWiki_Model_TitleHelper($graph); // add graphs $graphs = array_keys($predicates); $titleHelper->addResources($graphs); // set RDFa widgets update info for editable graphs and other graph info $graphInfo = array(); $editableFlags = array(); foreach ($graphs as $g) { $graphInfo[$g] = $titleHelper->getTitle($g, $this->_config->languages->locale); if ($this->_erfurt->getAc()->isModelAllowed('edit', $g)) { $editableFlags[$g] = true; $this->view->placeholder('update')->append(array('sourceGraph' => $g, 'queryEndpoint' => $this->_config->urlBase . 'sparql/', 'updateEndpoint' => $this->_config->urlBase . 'update/')); } else { $editableFlags[$g] = false; } } $this->view->graphs = $graphInfo; $this->view->editableFlags = $editableFlags; $this->view->values = $values; $this->view->predicates = $predicates; $this->view->resourceUri = (string) $resource; $this->view->graphUri = $graph->getModelIri(); $this->view->graphBaseUri = $graph->getBaseIri(); $this->view->editable = false; // use $this->editableFlags[$graph] now // prepare namespaces $namespacePrefixes = $graph->getNamespacePrefixes(); $graphBase = $graph->getBaseUri(); if (!array_key_exists(OntoWiki_Utils::DEFAULT_BASE, $namespacePrefixes)) { $namespacePrefixes[OntoWiki_Utils::DEFAULT_BASE] = $graphBase; } $this->view->namespacePrefixes = $namespacePrefixes; } $toolbar = $this->_owApp->toolbar; // show only if not forwarded and if model is writeable // TODO: why is isEditable not false here? if ($this->_request->getParam('action') == 'properties' && $graph->isEditable() && $this->_owApp->erfurt->getAc()->isModelAllowed('edit', $this->_owApp->selectedModel)) { // TODO: check acl $toolbar->appendButton(OntoWiki_Toolbar::EDIT, array('name' => 'Edit Properties', 'title' => 'SHIFT + ALT + e')); $toolbar->appendButton(OntoWiki_Toolbar::EDITADD, array('name' => 'Clone', 'class' => 'clone-resource', 'title' => 'SHIFT + ALT + l')); // ->appendButton(OntoWiki_Toolbar::EDITADD, array('name' => 'Add Property', 'class' => 'property-add')); $params = array('name' => 'Delete', 'url' => $this->_config->urlBase . 'resource/delete/?r=' . urlencode((string) $resource)); $toolbar->appendButton(OntoWiki_Toolbar::SEPARATOR); $toolbar->appendButton(OntoWiki_Toolbar::DELETE, $params); $toolbar->prependButton(OntoWiki_Toolbar::SEPARATOR); $toolbar->prependButton(OntoWiki_Toolbar::ADD, array('name' => 'Add Property', '+class' => 'property-add', 'title' => 'SHIFT + ALT + a')); $toolbar->prependButton(OntoWiki_Toolbar::SEPARATOR); $toolbar->prependButton(OntoWiki_Toolbar::CANCEL, array('+class' => 'hidden', 'title' => 'SHIFT + ALT + c')); $toolbar->prependButton(OntoWiki_Toolbar::SAVE, array('+class' => 'hidden', 'title' => 'SHIFT + ALT + s')); } // let plug-ins add buttons $toolbarEvent = new Erfurt_Event('onCreateToolbar'); $toolbarEvent->resource = (string) $resource; $toolbarEvent->graph = (string) $graph; $toolbarEvent->toolbar = $toolbar; $eventResult = $toolbarEvent->trigger(); if ($eventResult instanceof OntoWiki_Toolbar) { $toolbar = $eventResult; } // add toolbar $this->view->placeholder('main.window.toolbar')->set($toolbar); //show modules $this->addModuleContext('main.window.properties'); }
public function infoAction() { OntoWiki::getInstance()->getNavigation()->disableNavigation(); $this->_owApp->selectedResource = new OntoWiki_Resource($this->_request->getParam('m'), $this->_owApp->selectedModel); $store = $this->_owApp->erfurt->getStore(); $graph = $this->_owApp->selectedModel; $resource = $this->_owApp->selectedResource; //$navigation = $this->_owApp->navigation; $translate = $this->_owApp->translate; $event = new Erfurt_Event('onPropertiesAction'); $event->uri = (string) $resource; $event->graph = (string) $resource; $event->trigger(); $windowTitle = $translate->_('Model info'); $this->view->placeholder('main.window.title')->set($windowTitle); $title = $resource->getTitle($this->_owApp->getConfig()->languages->locale); $this->view->modelTitle = $title ? $title : OntoWiki_Utils::contractNamespace((string) $resource); $resourcesUrl = new OntoWiki_Url(array('route' => 'instances'), array()); $resourcesUrl->init = true; $this->view->resourcesUrl = (string) $resourcesUrl; if (!empty($resource)) { $model = new OntoWiki_Model_Resource($store, $graph, (string) $resource); $values = $model->getValues(); $predicates = $model->getPredicates(); $titleHelper = new OntoWiki_Model_TitleHelper($graph); $graphs = array_keys($predicates); $titleHelper->addResources($graphs); $graphInfo = array(); $editableFlags = array(); foreach ($graphs as $g) { $graphInfo[$g] = $titleHelper->getTitle($g, $this->_config->languages->locale); $editableFlags[$g] = false; } $this->view->graphs = $graphInfo; $this->view->resourceIri = (string) $resource; $this->view->graphIri = $graph->getModelIri(); $this->view->values = $values; $this->view->predicates = $predicates; $this->view->graphBaseIri = $graph->getBaseIri(); $this->view->namespacePrefixes = $graph->getNamespacePrefixes(); $this->view->editableFlags = $editableFlags; if (!is_array($this->view->namespacePrefixes)) { $this->view->namespacePrefixes = array(); } if (!array_key_exists(OntoWiki_Utils::DEFAULT_BASE, $this->view->namespacePrefixes)) { $this->view->namespacePrefixes[OntoWiki_Utils::DEFAULT_BASE] = $graph->getBaseIri(); } $infoUris = $this->_config->descriptionHelper->properties; //echo (string)$resource; if (count($values) > 0) { $query = 'ASK FROM <' . (string) $resource . '>' . ' WHERE {' . ' <' . (string) $resource . '> a <http://xmlns.com/foaf/0.1/PersonalProfileDocument>' . ' }'; $q = Erfurt_Sparql_SimpleQuery::initWithString($query); if ($this->_owApp->extensionManager->isExtensionActive('foafprofileviewer') && $store->sparqlAsk($q) === true) { $this->view->showFoafLink = true; $this->view->foafLink = $this->_config->urlBase . 'foafprofileviewer/display'; } } $this->view->infoPredicates = array(); foreach ($infoUris as $infoUri) { if (isset($predicates[(string) $graph]) && array_key_exists($infoUri, $predicates[(string) $graph])) { $this->view->infoPredicates[$infoUri] = $predicates[(string) $graph][$infoUri]; } } } $this->addModuleContext('main.window.modelinfo'); }