Skip to content

Commit

Permalink
Show tooltips (rdfs:comment or skos:definition) for custom properties.
Browse files Browse the repository at this point in the history
…Fixes #824
  • Loading branch information
osma committed Jun 12, 2020
1 parent a9877c8 commit 6c66deb
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 6 deletions.
8 changes: 7 additions & 1 deletion model/Concept.php
Original file line number Diff line number Diff line change
Expand Up @@ -514,6 +514,12 @@ public function getProperties()
$propres = new EasyRdf\Resource($prop, $this->graph);
$proplabel = $propres->label($this->getEnvLang()) ? $propres->label($this->getEnvLang()) : $propres->label();

$prophelp = $propres->getLiteral('rdfs:comment|skos:definition', $this->getEnvLang());
if ($prophelp === null) {
// try again without language restriction
$prophelp = $propres->getLiteral('rdfs:comment|skos:definition');
}

// check if the property is one of the well-known properties for which we have a gettext translation
// if it is then we can skip the additional lookups in the default graph
$propkey = (substr($prop, 0, 5) == 'dc11:') ?
Expand Down Expand Up @@ -554,7 +560,7 @@ public function getProperties()
$superprop = EasyRdf\RdfNamespace::shorten($superprop) ? EasyRdf\RdfNamespace::shorten($superprop) : $superprop;
}
$sort_by_notation = $this->vocab->getConfig()->sortByNotation();
$propobj = new ConceptProperty($prop, $proplabel, $superprop, $sort_by_notation);
$propobj = new ConceptProperty($prop, $proplabel, $prophelp, $superprop, $sort_by_notation);

if ($propobj->getLabel() !== null) {
// only display properties for which we have a label
Expand Down
21 changes: 17 additions & 4 deletions model/ConceptProperty.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,11 @@ class ConceptProperty
* @param string $prop property type eg. 'rdf:type'.
* @param string $label
*/
public function __construct($prop, $label, $super=null, $sort_by_notation=false)
public function __construct($prop, $label, $help=null, $super=null, $sort_by_notation=false)
{
$this->prop = $prop;
$this->label = $label;
$this->help = $help;
$this->values = array();
$this->is_sorted = true;
$this->super = $super;
Expand All @@ -47,7 +48,7 @@ public function getLabel()
}

// if not, see if there was a label for the property in the graph
if ($this->label) {
if ($this->label !== null) {
return $this->label;
}

Expand All @@ -56,14 +57,26 @@ public function getLabel()
}

/**
* Returns a gettext translation for the property tooltip.
* Returns text for the property tooltip.
* @return string
*/
public function getDescription()
{
$helpprop = $this->prop . "_help";

return gettext($helpprop); // can't use string constant, it'd be picked up by xgettext
// see if we have a translation with the help text
$help = gettext($helpprop);
if ($help != $helpprop) {
return $help;
}

// if not, see if there was a comment/definition for the property in the graph
if ($this->help !== null) {
return $this->help;
}

// when nothing is found, don't show the help text at all
return null;
}

/**
Expand Down
6 changes: 6 additions & 0 deletions model/sparql/GenericSparql.php
Original file line number Diff line number Diff line change
Expand Up @@ -374,6 +374,8 @@ private function generateConceptInfoQuery($uris, $arrayClass, $vocabs) {
?sp ?uri ?op .
?uri ?p ?o .
?p rdfs:label ?proplabel .
?p rdfs:comment ?propcomm .
?p skos:definition ?propdef .
?p rdfs:subPropertyOf ?pp .
?pp rdfs:label ?plabel .
?o a ?ot .
Expand Down Expand Up @@ -422,6 +424,10 @@ private function generateConceptInfoQuery($uris, $arrayClass, $vocabs) {
OPTIONAL {
{ ?p rdfs:label ?proplabel . }
UNION
{ ?p rdfs:comment ?propcomm . }
UNION
{ ?p skos:definition ?propdef . }
UNION
{ ?p rdfs:subPropertyOf ?pp . }
}
OPTIONAL {
Expand Down
2 changes: 1 addition & 1 deletion view/concept-shared.twig
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@
{% if property.getSubPropertyOf != 'skos:hiddenLabel' %}
<div class="row{% if property.type == 'dc:isReplacedBy' %} replaced-by{% endif%}">
<div class="property-label">
<span class="versal{% if property.type == 'rdf:type' %}-bold{% endif %}{% if not (property.type in property.description and '_help' in property.description) %} property-click" title="{{ property.description }}"{% else %}"{% endif %}>{{ property.label|upper }}</span>
<span class="versal{% if property.type == 'rdf:type' %}-bold{% endif %}{% if property.description %} property-click" title="{{ property.description }}"{% else %}"{% endif %}>{{ property.label|upper }}</span>
</div>
<div class="property-value-column"><div class="property-value-wrapper">
{% if request.vocab.config.hasMultiLingualProperty(property.type) %}
Expand Down

0 comments on commit 6c66deb

Please sign in to comment.