From 2fcbbcf23a67b63a836c87ab897f1959cefec94f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come@opensides.be>
Date: Thu, 22 Nov 2018 11:33:25 +0100
Subject: [PATCH] :ambulance: fix(baseSelector) Add missing tree parts in
 render

This makes sure all tree parts in the base selector has a visible
 parent, even if not clickable.

issue #5921
---
 include/class_baseSelector.inc | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/include/class_baseSelector.inc b/include/class_baseSelector.inc
index 93ad86bcf..7bb765bad 100644
--- a/include/class_baseSelector.inc
+++ b/include/class_baseSelector.inc
@@ -212,6 +212,7 @@ class baseSelector
     $this->tree   .= "<div class='treeList' style='display:none;max-height:".$this->height."px' id='bs_".$this->pid."' onmouseover=\"window.clearTimeout(rtimer);\" onmouseout=\"rtimer= Element.hide.delay(0.25, 'bs_".$this->pid."')\"><a class='treeList$selected' $link>/&nbsp;["._("Root")."]</a><ul class='treeList'>\n";
     $first        = TRUE;
     $last_indent  = 2;
+    $last_base    = '';
 
     foreach ($this->pathMapping as $base => $dummy) {
       // Skip root for tree
@@ -226,6 +227,18 @@ class baseSelector
       if (!$first && ($indent == $last_indent)) {
         $this->tree .= "</li>\n";
       } elseif ($indent > $last_indent) {
+        $parent_base = implode(',', array_slice($elements, 1)).$config->current['BASE'];
+        if (!$first && ($parent_base != $last_base)) {
+          /* Our parent is missing, add it but without link */
+          $this->tree .= "</li>\n";
+          $this->tree .= '<li><a title="'.$parent_base.'">'.
+                        '<img class="center" '.
+                        'src="'.htmlentities($config->department_info[$parent_base]['img'], ENT_COMPAT, 'UTF-8').'" '.
+                        'alt=""/>&nbsp;'.
+                        $this->escape($config->department_info[$parent_base]['name']).
+                        (($config->department_info[$parent_base]['description'] == '') ? '' : '&nbsp;<span class="informal">['.$this->escape($config->department_info[$parent_base]['description']).']</span>').
+                        '</a>';
+        }
         $this->tree .= "<ul>\n";
       } elseif ($indent < $last_indent) {
         for ($i = 0; $i < ($last_indent - $indent); $i++) {
@@ -244,6 +257,7 @@ class baseSelector
                     '</a>';
 
       $last_indent  = $indent;
+      $last_base    = $base;
       $first        = FALSE;
     }
 
-- 
GitLab