From c95fec8ab44da9151962474127711f3363981f7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come@opensides.be> Date: Tue, 17 Sep 2019 12:08:50 +0200 Subject: [PATCH] :sparkles: feat(ACL) Sort classes correctly in ACL role edition dialog issue #6028 --- include/class_acl.inc | 24 ------------------- include/class_pluglist.inc | 4 ++++ .../admin/aclrole/class_aclEditionDialog.inc | 2 -- 3 files changed, 4 insertions(+), 26 deletions(-) diff --git a/include/class_acl.inc b/include/class_acl.inc index 1fc26706d..67fb4925c 100644 --- a/include/class_acl.inc +++ b/include/class_acl.inc @@ -46,30 +46,6 @@ class acl ]; } - /*! - * \brief Function sort an array by elements priority - * - * \param Array $list Array to be sorted - */ - static function sort_by_priority ($list) - { - uksort($list, - function ($a, $b) - { - $infos_a = pluglist::pluginInfos(preg_replace('|^[^/]*/|', '', $a)); - $infos_b = pluglist::pluginInfos(preg_replace('|^[^/]*/|', '', $b)); - $pa = (isset($infos_a['plPriority']) ? $infos_a['plPriority'] : 0); - $pb = (isset($infos_b['plPriority']) ? $infos_b['plPriority'] : 0); - if ($pa == $pb) { - return 0; - } - return ($pa < $pb ? -1 : 1); - } - ); - - return $list; - } - /*! * \brief Explode a role * diff --git a/include/class_pluglist.inc b/include/class_pluglist.inc index 986c8b9fe..99b917fad 100644 --- a/include/class_pluglist.inc +++ b/include/class_pluglist.inc @@ -161,6 +161,10 @@ class pluglist if (isset($infos['plFilter'])) { $infos['plFilterObject'] = ldapFilter::parse($infos['plFilter']); } + if (isset($infos['plObjectType']) && !isset($infos['plPriority']) && !is_numeric(key($infos['plObjectType']))) { + /* Set main tab priority to 0 */ + $infos['plPriority'] = 0; + } $infos['plForeignRefs'] = []; $infos['INDEX'] = $index; $this->info[$cname] = $infos; diff --git a/plugins/admin/aclrole/class_aclEditionDialog.inc b/plugins/admin/aclrole/class_aclEditionDialog.inc index aad8aa9e9..454508826 100644 --- a/plugins/admin/aclrole/class_aclEditionDialog.inc +++ b/plugins/admin/aclrole/class_aclEditionDialog.inc @@ -272,7 +272,6 @@ class ACLEditionDialog extends GenericDialog $cols = 3; $tmp = session::get('plist'); $plist = $tmp->info; - asort($plist); /* Add select all/none buttons */ $style = 'style="width:100px;"'; @@ -305,7 +304,6 @@ class ACLEditionDialog extends GenericDialog $display .= '<input '.$style.' type="button" name="set_true_all_write" onClick="acl_set_all(\'[^0]_w$\',true);" value="W+"/>'; $display .= '<input '.$style.' type="button" name="set_false_all_write" onClick="acl_set_all(\'[^0]_w$\',false);" value="W-"/>'; - $list = acl::sort_by_priority($list); foreach ($list as $key => $name) { /* Create sub acl if it does not exist */ if (!isset($this->aclContents[$key])) { -- GitLab