diff --git a/composer.json b/composer.json index c097e3f37..1a5e41e68 100644 --- a/composer.json +++ b/composer.json @@ -65,8 +65,7 @@ "monolog/monolog": "1.23.*", "newerton/jquery-mousewheel": "dev-master", "pamelafox/lscache": "1.0.5", - "malihu/malihu-custom-scrollbar-plugin": "3.1.5", - "grimmlink/qtip2": "3.0.3" + "malihu/malihu-custom-scrollbar-plugin": "3.1.5" }, "require-dev": { "phpunit/phpunit": "9.5.*", diff --git a/resource/css/jquery.qtip.min.css b/resource/css/jquery.qtip.min.css deleted file mode 100644 index a5f93b5e3..000000000 --- a/resource/css/jquery.qtip.min.css +++ /dev/null @@ -1,2 +0,0 @@ -/* qTip2 v2.2.0 css3 | qtip2.com | Licensed MIT, GPL | Sun Mar 16 2014 17:53:30 */ -.qtip{position:absolute;left:-28000px;top:-28000px;display:none;max-width:280px;min-width:50px;font-size:10.5px;line-height:12px;direction:ltr;box-shadow:none;padding:0}.qtip-content{position:relative;padding:5px 9px;overflow:hidden;text-align:left;word-wrap:break-word}.qtip-titlebar{position:relative;padding:5px 35px 5px 10px;overflow:hidden;border-width:0 0 1px;font-weight:700}.qtip-titlebar+.qtip-content{border-top-width:0!important}.qtip-close{position:absolute;right:-9px;top:-9px;cursor:pointer;outline:medium none;border-width:1px;border-style:solid;border-color:transparent}.qtip-titlebar .qtip-close{right:4px;top:50%;margin-top:-9px}* html .qtip-titlebar .qtip-close{top:16px}.qtip-titlebar .ui-icon,.qtip-icon .ui-icon{display:block;text-indent:-1000em;direction:ltr}.qtip-icon,.qtip-icon .ui-icon{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;text-decoration:none}.qtip-icon .ui-icon{width:18px;height:14px;line-height:14px;text-align:center;text-indent:0;font:400 bold 10px/13px Tahoma,sans-serif;color:inherit;background:transparent none no-repeat -100em -100em}.qtip-focus{}.qtip-hover{}.qtip-default{border-width:1px;border-style:solid;border-color:#F1D031;background-color:#FFFFA3;color:#555}.qtip-default .qtip-titlebar{background-color:#FFEF93}.qtip-default .qtip-icon{border-color:#CCC;background:#F1F1F1;color:#777}.qtip-default .qtip-titlebar .qtip-close{border-color:#AAA;color:#111}.qtip-shadow{-webkit-box-shadow:1px 1px 3px 1px rgba(0,0,0,.15);-moz-box-shadow:1px 1px 3px 1px rgba(0,0,0,.15);box-shadow:1px 1px 3px 1px rgba(0,0,0,.15)}.qtip-rounded,.qtip-tipsy,.qtip-bootstrap{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.qtip-rounded .qtip-titlebar{-moz-border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.qtip-youtube{-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 3px #333;-moz-box-shadow:0 0 3px #333;box-shadow:0 0 3px #333;color:#fff;border-width:0;background:#4A4A4A;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#4A4A4A),color-stop(100%,#000));background-image:-webkit-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-moz-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-ms-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-o-linear-gradient(top,#4A4A4A 0,#000 100%)}.qtip-youtube .qtip-titlebar{background-color:#4A4A4A;background-color:rgba(0,0,0,0)}.qtip-youtube .qtip-content{padding:.75em;font:12px arial,sans-serif;filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#4a4a4a, EndColorStr=#000000);-ms-filter:"progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#4a4a4a, EndColorStr=#000000);"}.qtip-youtube .qtip-icon{border-color:#222}.qtip-youtube .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-jtools{background:#232323;background:rgba(0,0,0,.7);background-image:-webkit-gradient(linear,left top,left bottom,from(#717171),to(#232323));background-image:-moz-linear-gradient(top,#717171,#232323);background-image:-webkit-linear-gradient(top,#717171,#232323);background-image:-ms-linear-gradient(top,#717171,#232323);background-image:-o-linear-gradient(top,#717171,#232323);border:2px solid #ddd;border:2px solid rgba(241,241,241,1);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 12px #333;-moz-box-shadow:0 0 12px #333;box-shadow:0 0 12px #333}.qtip-jtools .qtip-titlebar{background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171, endColorstr=#4A4A4A);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171, endColorstr=#4A4A4A)"}.qtip-jtools .qtip-content{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A, endColorstr=#232323);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A, endColorstr=#232323)"}.qtip-jtools .qtip-titlebar,.qtip-jtools .qtip-content{background:transparent;color:#fff;border:0 dashed transparent}.qtip-jtools .qtip-icon{border-color:#555}.qtip-jtools .qtip-titlebar .ui-state-hover{border-color:#333}.qtip-cluetip{-webkit-box-shadow:4px 4px 5px rgba(0,0,0,.4);-moz-box-shadow:4px 4px 5px rgba(0,0,0,.4);box-shadow:4px 4px 5px rgba(0,0,0,.4);background-color:#D9D9C2;color:#111;border:0 dashed transparent}.qtip-cluetip .qtip-titlebar{background-color:#87876A;color:#fff;border:0 dashed transparent}.qtip-cluetip .qtip-icon{border-color:#808064}.qtip-cluetip .qtip-titlebar .ui-state-hover{border-color:#696952;color:#696952}.qtip-tipsy{background:#000;background:rgba(0,0,0,.87);color:#fff;border:0 solid transparent;font-size:11px;font-family:'Lucida Grande',sans-serif;font-weight:700;line-height:16px;text-shadow:0 1px #000}.qtip-tipsy .qtip-titlebar{padding:6px 35px 0 10px;background-color:transparent}.qtip-tipsy .qtip-content{padding:6px 10px}.qtip-tipsy .qtip-icon{border-color:#222;text-shadow:none}.qtip-tipsy .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-tipped{border:3px solid #959FA9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background-color:#F9F9F9;color:#454545;font-weight:400;font-family:serif}.qtip-tipped .qtip-titlebar{border-bottom-width:0;color:#fff;background:#3A79B8;background-image:-webkit-gradient(linear,left top,left bottom,from(#3A79B8),to(#2E629D));background-image:-webkit-linear-gradient(top,#3A79B8,#2E629D);background-image:-moz-linear-gradient(top,#3A79B8,#2E629D);background-image:-ms-linear-gradient(top,#3A79B8,#2E629D);background-image:-o-linear-gradient(top,#3A79B8,#2E629D);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8, endColorstr=#2E629D);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8, endColorstr=#2E629D)"}.qtip-tipped .qtip-icon{border:2px solid #285589;background:#285589}.qtip-tipped .qtip-icon .ui-icon{background-color:#FBFBFB;color:#555}.qtip-bootstrap{font-size:14px;line-height:20px;color:#333;padding:1px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.qtip-bootstrap .qtip-titlebar{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.qtip-bootstrap .qtip-titlebar .qtip-close{right:11px;top:45%;border-style:none}.qtip-bootstrap .qtip-content{padding:9px 14px}.qtip-bootstrap .qtip-icon{background:transparent}.qtip-bootstrap .qtip-icon .ui-icon{width:auto;height:auto;float:right;font-size:20px;font-weight:700;line-height:18px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.qtip-bootstrap .qtip-icon .ui-icon:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}.qtip:not(.ie9haxors) div.qtip-content,.qtip:not(.ie9haxors) div.qtip-titlebar{filter:none;-ms-filter:none}.qtip .qtip-tip{margin:0 auto;overflow:hidden;z-index:10}x:-o-prefocus,.qtip .qtip-tip{visibility:hidden}.qtip .qtip-tip,.qtip .qtip-tip .qtip-vml,.qtip .qtip-tip canvas{position:absolute;color:#123456;background:transparent;border:0 dashed transparent}.qtip .qtip-tip canvas{top:0;left:0}.qtip .qtip-tip .qtip-vml{behavior:url(#default#VML);display:inline-block;visibility:visible} \ No newline at end of file diff --git a/resource/css/styles.css b/resource/css/styles.css index 323176cf8..c182874ca 100644 --- a/resource/css/styles.css +++ b/resource/css/styles.css @@ -103,9 +103,6 @@ h1, .prefLabel, .prefLabelLang, .notation { font-size: 16px; } -.multiselect span, .multiselect a, .dropdown-toggle, #search-all-button, .qtip-skosmos * { -} - .topbar a.navigation-font, .topbar span { color: var(--dark-color); } @@ -855,31 +852,10 @@ ul.dropdown-menu > li:last-child > input { width: 50px; } -.qtip-skosmos { - background-color: var(--tooltip-bg-color); - border-radius: 0; - border: 3px solid var(--tooltip-border-color); - margin-top: 12px; - margin-left: 9px; - min-width: 400px; -} - -.qtip-skosmos *, .reified-tooltip > p > span { - color: var(--white-color); - font-size: var(--font-size); - font-weight: 400; -} - -.qtip-skosmos a { - color: var(--tooltip-text-color) !important; - width: 100%; -} - .reified-tooltip { display: none; margin-top: 5px; width: 100%; - } .reified-property-value > img { @@ -2270,14 +2246,6 @@ body, .versal, h1, h2, h3, p, .versal-bold { display: none; } - .qtip-skosmos:not(#qtip-0) { - left: 0 !important; - } - - .qtip-skosmos:not(#qtip-0) canvas { - display: none !important; - } - .content { margin: 0 auto; } @@ -2324,14 +2292,6 @@ body, .versal, h1, h2, h3, p, .versal-bold { margin-left: 10px; margin-top: 20px; } - - .qtip-skosmos { - min-width: auto; - left: 0 !important; - } - .qtip-skosmos canvas { - display: none !important; - } } @media (max-width: 530px) { @@ -2758,3 +2718,223 @@ body, .versal, h1, h2, h3, p, .versal-bold { border: 2px dashed #62729f !important; } + +/* + * Skosmos tooltips. + * + * Created to replace https://github.com/qTip2/qTip2/ as that library is not maintained anymore, + * and creates issues when trying to update JQuery versions. + * + * The .skosmos-tooltip{-wrapper} classes are derived from https://dev.to/r3zu3/pure-css-tooltip-1k3j. + * + * The .skosmos-tooltip-html* classes are from https://codepen.io/roydigerhund/pen/gPyzEa/. + */ +.skosmos-tooltip-wrapper { + width: fit-content; +} + +.skosmos-tooltip { + position: relative; +} + +.skosmos-tooltip a { + color: var(--tooltip-text-color) !important; + width: 100%; +} + +.skosmos-tooltip::before { + position: absolute; + content: ' '; + background-color: var(--tooltip-border-color); + border: 3px solid var(--tooltip-border-color); + width: 15px; + height: 15px; + z-index: 500; + opacity: 0; + /* transition: all cubic-bezier(0.17, 0.67, 0.5, 0.71) 100ms; */ + pointer-events: none; +} + +.skosmos-tooltip::after { + content: attr(data-title); + /* https://www.digitalocean.com/community/tutorials/css-line-break-content-property */ + white-space: pre-line; + max-width: 400px; + width: max-content; + display: inline-block; + border-radius: 0; + font-size: var(--font-size); + font-weight: 400; + color: var(--white-color); + background-color: var(--tooltip-bg-color); + border: 3px solid var(--tooltip-border-color); + position: absolute; + z-index: 9002; + opacity: 0; + /* transition: all cubic-bezier(0.17, 0.67, 0.5, 0.71) 100ms; */ + pointer-events: none; + margin: 12px 0 0 9px; + padding: 0.25rem 0.5rem; + text-transform: none; +} + +.skosmos-tooltip:focus { + z-index: 9002 !important; +} + +.skosmos-tooltip:hover::before, .skosmos-tooltip:hover::after { + opacity: 1; +} + +.skosmos-tooltip.t-top::before { + top: 0; + left: 50%; + transform: translate(0, 0) rotate(45deg); +} + +.skosmos-tooltip.t-top::after { + top: 0; + left: 0; + transform: translate(0, 0); +} + +.skosmos-tooltip.t-top:hover::before { + transform: translate(0, calc(-50% - 5px)) rotate(45deg); +} + +.skosmos-tooltip.t-top:hover::after { + transform: translate(0, calc(-100% - 15px)); +} + +.skosmos-tooltip.t-left::before { + top: 25%; + left: 0; + transform: translate(0, 0%) rotate(45deg); +} + +.skosmos-tooltip.t-left::after { + top: 0; + left: 0; +} + +.skosmos-tooltip.t-left:hover::before { + transform: translate(calc(-100% - 5px)) rotate(45deg); +} + +.skosmos-tooltip.t-left:hover::after { + transform: translate(calc(-100% - 10px)); +} + +.skosmos-tooltip.t-right::before { + top: 25%; + right: 0; + transform: translate(0, 0%) rotate(45deg); +} + +.skosmos-tooltip.t-right::after { + top: 0; + right: 0; +} + +.skosmos-tooltip.t-right:hover::before { + transform: translate(calc(100% + 5px)) rotate(45deg); +} + +.skosmos-tooltip.t-right:hover::after { + transform: translate(calc(100% + 10px)); +} + +.skosmos-tooltip.t-bottom::before { + bottom: 0; + left: 50%; + transform: translate(-50%, 0) rotate(45deg); +} + +.skosmos-tooltip.t-bottom::after { + bottom: 0; + left: 50%; + transform: translate(-50%, 0); +} + +.skosmos-tooltip.t-bottom:hover::before { + transform: translate(-50%, calc(100% + 5px)) rotate(45deg); +} + +.skosmos-tooltip.t-bottom:hover::after { + transform: translate(-50%, calc(100% + 10px)); +} + +/* These classes were needed for the reified properties tooltips, as they displayed HTML elements.*/ +/* + * Example use case: + * + *
+ * + *
+ *

First line

+ *

Second line

+ *
+ *
+ */ +/* NOTE: We only display this tooltip at the bottom of the element that triggered it, as the qtip + * as its settings for the reified properties were doing so. + */ +.tooltip-html { + position: relative; + display: inline-block; + cursor: pointer; +} + +.tooltip-html:hover .tooltip-html-content, .tooltip-html:focus .tooltip-html-content { + visibility: visible; + opacity: 1; +} + +.tooltip-html-content { + box-sizing: border-box; + position: absolute; + top: 20px; + left: 0; + display: block; + cursor: text; + width: 350px; + color: var(--white-color); + background-color: var(--tooltip-bg-color); + border: 3px solid var(--tooltip-border-color); + z-index: 9001; + visibility: hidden; + opacity: 0; + padding: 0.25rem 0.5rem; +} + +.tooltip-html-content:focus { + z-index: 9001 !important; +} + +.tooltip-html-content * { + color: var(--white-color); +} + +.tooltip-prop { + font-weight: 500; +} + +/* + * The triangle that appears near the element that triggered it. + */ +.tooltip-html-content:after { + position: absolute; + content: ''; + width: 10px; + height: 10px; + transform: rotate(45deg); + top: -8px; + left: 0; + margin-left: 2px; + color: var(--white-color); + border-top: 6px solid var(--tooltip-border-color); + border-right: 6px solid transparent; + border-bottom: 6px solid transparent; + border-left: 6px solid var(--tooltip-border-color); + z-index: 9002; +} diff --git a/resource/js/docready.js b/resource/js/docready.js index 1188876b5..e01d878a1 100644 --- a/resource/js/docready.js +++ b/resource/js/docready.js @@ -42,11 +42,6 @@ $(function() { // DOCUMENT READY * concept at vertical center of the container. Each concept needs 18px height. */ $(document).ajaxComplete(function(event, xhr, settings) { - $('.property-click').qtip({ - position: { my: 'bottom center', at: 'top center' }, - style: { classes: 'qtip-tipsy qtip-skosmos' } - }); - $('#hierarchy-disabled > #hier-trigger').qtip(qtip_skosmos_hierarchy); if (settings.url.indexOf('groups') !== -1 || settings.url.indexOf('index') !== -1) { $('.sidebar-grey').removeClass(function(index, classes) { var elementClasses = classes.split(' '); @@ -85,16 +80,6 @@ $(function() { // DOCUMENT READY $(".tt-dropdown-menu").mCustomScrollbar({ alwaysShowScrollbar: 1, scrollInertia: 0 }); } - $('.reified-property-value').each(function() { - $(this).qtip({ - content: $(this).next('.reified-tooltip'), - position: { my: 'top left', at: 'top left' }, - style: { classes: 'qtip-skosmos' }, - show: { delay: 100 }, - hide: { fixed: true, delay: 400 } - }); - }); - var active_tab = $('a.active').parent().attr('id'); if (active_tab == 'groups') { $('#sidebar > h4').remove(); @@ -124,11 +109,10 @@ $(function() { // DOCUMENT READY countAndSetOffset(); - function initHierarchyQtip() { + function initHierarchyTooltip() { if (!$('#hierarchy').length) { $('#hierarchy-disabled').attr('id', 'hierarchy'); $('#hier-trigger').attr('title', ''); - $('#hier-trigger').qtip('disable'); } } @@ -322,7 +306,7 @@ $(function() { // DOCUMENT READY success : function(data, responseCode, jqxhr) { if (window.history.pushState) { window.history.pushState({}, null, event.currentTarget.href); } $content.empty().append($('.content', data).html()); - initHierarchyQtip(); + initHierarchyTooltip(); $('#hier-trigger').attr('href', event.currentTarget.href); updateJsonLD(data); updateTitle(data); @@ -452,7 +436,7 @@ $(function() { // DOCUMENT READY req_kind: $.ajaxQ.requestKind.CONTENT, complete: function() { clearTimeout(loading); }, success : function(data) { - initHierarchyQtip(); + initHierarchyTooltip(); $('#hier-trigger').attr('href', event.target.href); updateTitle(data); updateTopbarLang(data); @@ -508,43 +492,6 @@ $(function() { // DOCUMENT READY }); }); - var qtip_skosmos = { - position: { my: 'top center', at: 'bottom center' }, - style: { classes: 'qtip-tipsy qtip-skosmos' }, - show: { - event: 'mouseenter focusin' - }, - hide: { - event: 'mouseleave focusout' - } - }; - - var qtip_skosmos_hierarchy = { - position: { my: 'top left', at: 'bottom center' }, - style: { classes: 'qtip-tipsy qtip-skosmos' } - }; - - $('#navi4').qtip(qtip_skosmos); - - $('.property-click').qtip(qtip_skosmos); - - $('.redirected-vocab-id').qtip(qtip_skosmos); - - $('.reified-property-value').each(function() { - $(this).qtip({ - content: $(this).next('.reified-tooltip'), - position: { my: 'top left', at: 'top left' }, - style: { classes: 'qtip-skosmos' }, - show: { delay: 100 }, - hide: { - fixed: true, - delay: 400 - } - }); - }); - - $('#hierarchy-disabled > #hier-trigger').qtip(qtip_skosmos_hierarchy); - // Setting the language parameters according to the clang parameter or if that's not possible the cookie. var search_lang = (content_lang !== '' && !getUrlParams().anylang && vocab !== '') ? content_lang : readCookie('SKOSMOS_SEARCH_LANG'); diff --git a/view/changes.twig b/view/changes.twig index 55bf1aa4a..f7142c87f 100644 --- a/view/changes.twig +++ b/view/changes.twig @@ -12,7 +12,7 @@ {% endif %}

{% trans "List vocabulary concepts hierarchically" %}

{% if active_tab == 'hierarchy' %}{% set css_class = css_class|merge(['active']) %}{% endif %} - + {% if vocab.config.groupClassURI %} {% set css_class = ['nav-link'] %}

{% trans "List vocabulary concepts and groupings hierarchically" %}

diff --git a/view/concept-shared.twig b/view/concept-shared.twig index 2a5ec14af..0e45332df 100644 --- a/view/concept-shared.twig +++ b/view/concept-shared.twig @@ -64,16 +64,16 @@ {% apply spaceless %} {% if concept.notation %}{{ concept.notation }}{% endif %} {% if concept.hasXlLabel %} - + +
+ {% for key, val in concept.xlLabel.properties %} +

{{ key|trans }}: + {{ val }} +

+ {% endfor %} +
-
- {% for key, val in concept.xlLabel.properties %} -

{{ key|trans }}: - {{ val }} -

- {% endfor %} -
{{ concept.xlLabel }} {% else %} {{ concept.label }} @@ -97,8 +97,8 @@

{% if custom_labels[property.type]['label'][request.lang] %} {{ custom_labels[property.type]['label'][request.lang] }} @@ -125,8 +125,10 @@ {{ propval.label }}{% if propval.exvocab %} ({{ propval.vocabname }}){% endif %} {% else %} {% if propval.isReified %} {# e.g. skos:definition's with resource values #} - {{ {% if propval.notation %}{{ propval.notation }} {% endif %} {{ propval.label(request.contentLang) }} -
{% for key, val in propval.reifiedPropertyValues %}

{{ key }}: {{ val.label(request.contentLang) }}

{% endfor %}
+ + {{ {% if propval.notation %}{{ propval.notation }} {% endif %} {{ propval.label(request.contentLang) }} +
{% for key, val in propval.reifiedPropertyValues %}

{{ key }}: {{ val.label(request.contentLang) }}

{% endfor %}
+
{% else %} {% if propval.notation %}{{ propval.notation }} {% endif %} {{ propval.label(request.contentLang) }} {% endif %} @@ -145,14 +147,16 @@ {% else %} {# Literals (no URI), eg. alternative labels as properties #} {% if propval.lang == request.contentLang or propval.lang == null or not request.contentLang and propval.lang == request.lang %} {% if propval.hasXlProperties %} - {{ -
+ + {{ +
{% for key, val in propval.xlLabel.properties %} -

{{ key|trans }}: +

{{ key|trans }}: {{ val }}

{% endfor %}
+
{% endif %} {%- if propval.containsHtml %}{{ propval.label|raw }}{% else %}{{ propval.label }}{% endif %} @@ -171,7 +175,7 @@ {% set foreignLabels = concept.foreignLabels %} {% if foreignLabels %}
-

{{ 'foreign prefLabels'|trans }}

+

{{ 'foreign prefLabels'|trans }}

    @@ -180,16 +184,18 @@
  • {% if value.hasXlProperties %} - {{ -
    + + {{ +
    {% for key, val in value.xlLabel.properties %} - {% if key != 'rdf:type' and key != 'skosxl:literalForm' %} -

    {{ key|trans }}: - {{ val }} -

    - {% endif %} + {% if key != 'rdf:type' and key != 'skosxl:literalForm' %} +

    {{ key|trans }}: + {{ val }} +

    + {% endif %} {% endfor %} -
    +
    + {% endif %} {% if value.type == "skos:prefLabel" and value.lang in request.vocab.config.languages %} {{ value.label }} @@ -252,7 +258,7 @@