diff --git a/forms/TreeDropdownField.php b/forms/TreeDropdownField.php index 935446ac9b4..aca909f1206 100644 --- a/forms/TreeDropdownField.php +++ b/forms/TreeDropdownField.php @@ -215,16 +215,21 @@ public function Field($properties = array()) { Requirements::css(FRAMEWORK_DIR . '/thirdparty/jquery-ui-themes/smoothness/jquery-ui.css'); Requirements::css(FRAMEWORK_DIR . '/css/TreeDropdownField.css'); - + + if($this->showSearch) { + $emptyTitle = _t('DropdownField.CHOOSESEARCH', '(Choose or Search)', 'start value of a dropdown'); + } else { + $emptyTitle = _t('DropdownField.CHOOSE', '(Choose)', 'start value of a dropdown'); + } + $record = $this->Value() ? $this->objectForKey($this->Value()) : null; if($record instanceof ViewableData) { $title = $record->obj($this->labelField)->forTemplate(); } elseif($record) { $title = Convert::raw2xml($record->{$this->labelField}); - } else if($this->showSearch) { - $title = _t('DropdownField.CHOOSESEARCH', '(Choose or Search)', 'start value of a dropdown'); - } else { - $title = _t('DropdownField.CHOOSE', '(Choose)', 'start value of a dropdown'); + } + else { + $title = $emptyTitle; } // TODO Implement for TreeMultiSelectField @@ -237,6 +242,7 @@ public function Field($properties = array()) { $properties, array( 'Title' => $title, + 'EmptyTitle' => $emptyTitle, 'Metadata' => ($metadata) ? Convert::raw2json($metadata) : null, ) ); diff --git a/javascript/TreeDropdownField.js b/javascript/TreeDropdownField.js index 448b9536559..eb5887565a8 100644 --- a/javascript/TreeDropdownField.js +++ b/javascript/TreeDropdownField.js @@ -154,17 +154,21 @@ var updateFn = function() { var val = self.getValue(); if(val) { - + var node = tree.find('*[data-id="' + val + '"]'), title = node.children('a').find("span.jstree_pageicon")?node.children('a').find("span.item").html():null; if(!title) title=(node.length > 0) ? tree.jstree('get_text', node[0]) : null; - + if(title) { self.setTitle(title); self.data('title', title); } if(node) tree.jstree('select_node', node); } + else { + self.setTitle(self.data('empty-title')); + self.removeData('title'); + } }; // Load the tree if its not already present diff --git a/templates/forms/TreeDropdownField.ss b/templates/forms/TreeDropdownField.ss index e5d2345b221..49cc422cc65 100644 --- a/templates/forms/TreeDropdownField.ss +++ b/templates/forms/TreeDropdownField.ss @@ -2,6 +2,7 @@ class="TreeDropdownField <% if $extraClass %> $extraClass<% end_if %><% if $ShowSearch %> searchable<% end_if %>" data-url-tree="$Link('tree')" data-title="$Title.ATT" + data-empty-title="$EmptyTitle.ATT" <% if $Description %>title="$Description.ATT"<% end_if %> <% if $Metadata %>data-metadata="$Metadata.ATT"<% end_if %>>