public function createConfigurationView($urlBase) { $ontowiki = OntoWiki::getInstance(); $model = $ontowiki->selectedModel; $this->view->scovo = true; $this->view->placeholder('main.window.title')->append('Import CSV Data'); $this->view->actionUrl = $urlBase . 'csvimport/mapping'; $this->view->salt = hash("md5", serialize($this->parsedFile)); OntoWiki_Navigation::disableNavigation(); if ($model->isEditable()) { $toolbar = $ontowiki->toolbar; $toolbar->appendButton(OntoWiki_Toolbar::ADD, array('name' => 'Add Dimension', 'id' => 'btn-add-dimension'))->appendButton(OntoWiki_Toolbar::ADD, array('name' => 'Add Attribute', 'id' => 'btn-attribute', 'class' => ''))->appendButton(OntoWiki_Toolbar::EDIT, array('name' => 'Select Data Range', 'id' => 'btn-datarange', 'class' => ''))->appendButton(OntoWiki_Toolbar::SEPARATOR)->appendButton(OntoWiki_Toolbar::SUBMIT, array('name' => 'Extract Triples', 'id' => 'extract'))->appendButton(OntoWiki_Toolbar::RESET, array('name' => 'Cancel')); $this->view->placeholder('main.window.toolbar')->set($toolbar); $configurationMenu = OntoWiki_Menu_Registry::getInstance()->getMenu('Configurations'); $i = 0; $pattern = '/\'/i'; $replacement = "\\'"; $this->view->configs = array(); if (isset($this->storedConfigurations)) { foreach ($this->storedConfigurations as $configNum => $config) { $this->view->configs[$i] = preg_replace($pattern, $replacement, $config['config']); $configurationMenu->prependEntry('Select ' . $config['label'], 'javascript:useCSVConfiguration(csvConfigs[' . $i . '])'); $i++; } } $menu = new OntoWiki_Menu(); $menu->setEntry('Configurations', $configurationMenu); $event = new Erfurt_Event('onCreateMenu'); $event->menu = $configurationMenu; $this->view->placeholder('main.window.menu')->set($menu->toArray(false, true)); } else { $ontowiki->appendMessage(); } $this->view->table = $this->view->partial('partials/table.phtml', array('data' => $this->parsedFile, 'tableClass' => 'csvimport')); # $this->viewElements = array( # 'table' => array( # 'template' => 'partials/table.phtml', # 'data' => array( # 'data' => $this->parsedFile, # 'tableClass' => 'csvimport' # ) # ) # ); }
/** * 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 editorAction() { if ($this->_owApp->selectedModel === null) { $this->_owApp->appendMessage(new OntoWiki_Message($this->view->_('No model selected.'), OntoWiki_Message::ERROR)); $this->view->errorFlag = true; return; } $this->view->headLink()->appendStylesheet($this->_owApp->extensionManager->getComponentUrl('queries') . 'resources/querieseditor.css'); $this->view->placeholder('main.window.title')->set('SPARQL Query Editor'); $this->view->formActionUrl = $this->_config->urlBase . 'queries/editor'; $this->view->formMethod = 'post'; $this->view->formName = 'sparqlquery'; $this->view->query = $this->_request->getParam('query', ''); $this->view->urlBase = $this->_config->urlBase; $this->view->writeable = $this->_owApp->selectedModel->isEditable(); // set URIs if ($this->_owApp->selectedModel) { $this->view->modelUri = $this->_owApp->selectedModel->getModelIri(); } if ($this->_owApp->selectedResource) { $this->view->resourceUri = $this->_owApp->selectedResource; } // build toolbar $toolbar = $this->_owApp->toolbar; $toolbar->appendButton(OntoWiki_Toolbar::SUBMIT, array('name' => 'Submit Query'))->appendButton(OntoWiki_Toolbar::RESET, array('name' => 'Reset Form')); $this->view->placeholder('main.window.toolbar')->set($toolbar); // build menu if ($this->_owApp->selectedModel) { $insertMenu = new OntoWiki_Menu(); $insertMenu->setEntry('Current Model URI', 'javascript:insertModelUri()'); if ($this->_owApp->selectedResource) { $insertMenu->setEntry('Current Resource URI', 'javascript:insertResourceUri()'); } } $helpMenu = new OntoWiki_Menu(); $helpMenu->setEntry('Specification', 'http://www.w3.org/TR/rdf-sparql-query/')->setEntry('Reference Card', 'http://www.dajobe.org/2005/04-sparql/')->setEntry('Tutorial', 'http://platon.escet.urjc.es/%7Eaxel/sparqltutorial/'); $menu = new OntoWiki_Menu(); if (isset($insertMenu)) { $menu->setEntry('Insert', $insertMenu); } $menu->setEntry('Help', $helpMenu); $this->view->placeholder('main.window.menu')->set($menu->toArray()); $prefixes = $this->_owApp->selectedModel->getNamespacePrefixes(); if (isset($this->_request->queryUri)) { $query = $this->getQuery($this->_request->queryUri); } if (empty($query)) { $query = $this->getParam('query'); } $format = $this->_request->getParam('result_format', 'plain'); if (!empty($query)) { //handle a posted query $store = $this->_erfurt->getStore(); foreach ($prefixes as $prefix => $namespace) { $prefixString = 'PREFIX ' . $prefix . ': <' . $namespace . '>'; // only add prefix if it's not there yet if (strpos($query, $prefixString) === false) { $query = $prefixString . PHP_EOL . $query; } } if ($format == 'list') { $url = new OntoWiki_Url(array('controller' => 'list'), array()); $query = str_replace("\r\n", ' ', $query); $url .= '?init=1&instancesconfig=' . urlencode(json_encode(array('filter' => array(array('mode' => 'query', 'action' => 'add', 'query' => $query))))); //redirect $this->_redirect($url); return; } if (stristr($query, 'select') && !stristr($query, 'limit')) { $query .= PHP_EOL . 'LIMIT 20'; } $this->view->query = $query; $result = null; try { $start = microtime(true); //this switch is for the target selection module if ($this->_request->getParam('target') == 'all') { //query all models $result = $store->sparqlQuery($query, array('result_format' => $format)); } else { //query selected model $result = $this->_owApp->selectedModel->sparqlQuery($query, array('result_format' => $format)); } //this is for the "output to file option if (($format == 'json' || $format == 'xml') && $this->_request->getParam('result_outputfile') == 'true') { $this->_helper->viewRenderer->setNoRender(); $this->_helper->layout()->disableLayout(); $response = $this->getResponse(); switch ($format) { case 'xml': $contentType = 'application/rdf+xml'; $filename = 'query-result.xml'; break; case 'json': $contentType = 'application/json'; $filename = 'query-result.json'; break; } $response->setHeader('Content-Type', $contentType, true); $response->setHeader('Content-Disposition', 'filename="' . $filename . '"'); $response->setBody($result); return; } $this->view->time = (microtime(true) - $start) * 1000; $header = array(); if (is_array($result) && isset($result[0]) && is_array($result[0])) { $header = array_keys($result[0]); } else { if (is_bool($result)) { $result = $result ? 'yes' : 'no'; } else { if (is_int($result)) { $result = (string) $result; } else { if (is_string($result)) { // json $result = $result; } else { $result = 'no result'; } } } } } catch (Exception $e) { $this->view->error = $e->getMessage(); $header = ''; $result = ''; $this->view->time = 0; } $this->view->data = $result; $this->view->header = $header; } //load js for sparql syntax highlighting $this->view->headLink()->appendStylesheet($this->_componentUrlBase . 'resources/codemirror/lib/codemirror.css'); $this->view->headScript()->appendFile($this->_componentUrlBase . 'resources/codemirror/lib/codemirror.js'); $this->view->headScript()->appendFile($this->_componentUrlBase . 'resources/codemirror/addon/edit/matchbrackets.js'); $this->view->headScript()->appendFile($this->_componentUrlBase . 'resources/codemirror/mode/sparql/sparql.js'); $this->view->headStyle()->appendStyle('.CodeMirror { border: 1px solid black; }'); $this->view->headScript()->appendScript('var editor; $(document).ready( function(){ editor = CodeMirror.fromTextArea( document.getElementById("inputfield"), { mode: "application/x-sparql-query", tabMode: "indent", matchBrackets: true, } ); $(".CodeMirror").resizable({ resize: function() { editor.setSize($(this).width(), $(this).height()); } }); } );'); //fill in some placeholders $this->view->prefixes = $prefixes; $this->view->placeholder('sparql.result.format')->set($format); $this->view->placeholder('sparql.query.target')->set($this->_request->getParam('target', 'this')); //load modules $this->addModuleContext('main.window.queryeditor'); if ($this->_privateConfig->general->enabled->saving) { $this->addModuleContext('main.window.savequery'); } }