Document: Fix sorting in dropdown directories list - refs #3620

pull/3893/head
Yannick Warnier 4 years ago
parent b7282bed8f
commit 080c2b07cd
  1. 51
      main/inc/lib/document.lib.php

@ -5068,6 +5068,7 @@ class DocumentManager
while ($obj = Database::fetch_object($res)) {
$folder_titles[$obj->path] = $obj->title;
}
natcasesort($folder_titles);
}
if (empty($form)) {
@ -5090,6 +5091,7 @@ class DocumentManager
$parent_select->addOption(get_lang('Documents'), '/');
if (is_array($folders)) {
$foldersSortedByTitles = [];
foreach ($folders as $folder_id => &$folder) {
$selected = ($document_id == $folder_id) ? ' selected="selected"' : '';
$path_parts = explode('/', $folder);
@ -5101,14 +5103,25 @@ class DocumentManager
$label = ' — '.$folder_titles[$folder];
}
$label = Security::remove_XSS($label);
$parent_select->addOption($label, $folder_id);
if ($selected != '') {
$parent_select->setSelected($folder_id);
$foldersSortedByTitles[$folder_titles[$folder]] = [
'id' => $folder_id,
'selected' => $selected,
'label' => $label
];
}
foreach ($folder_titles as $title) {
$parent_select->addOption(
$foldersSortedByTitles[$title]['label'],
$foldersSortedByTitles[$title]['id']
);
if ($foldersSortedByTitles[$title]['selected'] != '') {
$parent_select->setSelected($foldersSortedByTitles[$title]['id']);
}
}
}
} else {
if (!empty($folders)) {
$foldersSortedByTitles = [];
foreach ($folders as $folder_id => &$folder) {
$selected = ($document_id == $folder_id) ? ' selected="selected"' : '';
$label = $folder_titles[$folder];
@ -5119,9 +5132,19 @@ class DocumentManager
$label = cut($label, 80);
$label = str_repeat('   ', count($path_parts) - 2).' — '.$label;
}
$parent_select->addOption($label, $folder_id);
if ($selected != '') {
$parent_select->setSelected($folder_id);
$foldersSortedByTitles[$folder_titles[$folder]] = [
'id' => $folder_id,
'selected' => $selected,
'label' => $label
];
}
foreach ($folder_titles as $title) {
$parent_select->addOption(
$foldersSortedByTitles[$title]['label'],
$foldersSortedByTitles[$title]['id']
);
if ($foldersSortedByTitles[$title]['selected'] != '') {
$parent_select->setSelected($foldersSortedByTitles[$title]['id']);
}
}
}
@ -7100,20 +7123,20 @@ class DocumentManager
$return = '<ul class="lp_resource">';
}
$return .= '<li
class="doc_folder'.$folder_class_hidden.'"
id="doc_id_'.$resource['id'].'"
style="margin-left:'.($num * 18).'px;"
$return .= '<li
class="doc_folder'.$folder_class_hidden.'"
id="doc_id_'.$resource['id'].'"
style="margin-left:'.($num * 18).'px;"
>';
$image = Display::returnIconPath('nolines_plus.gif');
if (empty($path)) {
$image = Display::returnIconPath('nolines_minus.gif');
}
$return .= '<img
style="cursor: pointer;"
src="'.$image.'"
align="absmiddle"
$return .= '<img
style="cursor: pointer;"
src="'.$image.'"
align="absmiddle"
id="img_'.$resource['id'].'" '.$onclick.'
>';

Loading…
Cancel
Save