diff --git a/lam/lib/account.inc b/lam/lib/account.inc
index d7e28c26..eeba7499 100644
--- a/lam/lib/account.inc
+++ b/lam/lib/account.inc
@@ -673,4 +673,25 @@ function cleanLDAPResult($entries) {
return $entries;
}
+/**
+ * Transforms a DN into a more user friendly format.
+ * E.g. "dc=company,dc=de" is transformed to "company > de".
+ *
+ * @param String $dn DN
+ * @return String transformed DN
+ */
+function getAbstractDN($dn) {
+ if ($dn == '') {
+ return '';
+ }
+ $parts = explode(',', $dn);
+ for ($i = 0; $i < sizeof($parts); $i++) {
+ $subparts = explode('=', $parts[$i]);
+ if (sizeof($subparts) == 2) {
+ $parts[$i] = $subparts[1];
+ }
+ }
+ return implode(' > ', $parts);
+}
+
?>
diff --git a/lam/lib/lists.inc b/lam/lib/lists.inc
index a172e6dc..a49baf41 100644
--- a/lam/lib/lists.inc
+++ b/lam/lib/lists.inc
@@ -635,9 +635,9 @@ class lamList {
echo ("\n");
}
diff --git a/lam/lib/modules.inc b/lam/lib/modules.inc
index a8c3c5d3..73006cd9 100644
--- a/lam/lib/modules.inc
+++ b/lam/lib/modules.inc
@@ -1542,14 +1542,14 @@ class accountContainer {
// loop through all suffixes
$rootsuffix = $_SESSION['config']->get_Suffix($this->type);
foreach ($_SESSION['ldap']->search_units($rootsuffix) as $suffix) {
- echo "\n";
+ echo ">" . getAbstractDN($suffix) . "\n";
}
if (!($this->dn == '') && !in_array($this->dn, $_SESSION['ldap']->search_units($rootsuffix))) {
- echo "\n";;
+ echo '\n";;
}
echo "\n";
echo ' ';
diff --git a/lam/lib/modules/asteriskExtension.inc b/lam/lib/modules/asteriskExtension.inc
index 767011b8..949dd808 100644
--- a/lam/lib/modules/asteriskExtension.inc
+++ b/lam/lib/modules/asteriskExtension.inc
@@ -244,12 +244,10 @@ class asteriskExtension extends baseModule {
array('kind' => 'text', 'text' => _("Extension owners") . '*'),
array('kind' => 'input', 'name' => 'form_subpage_' . get_class($this) . '_user_open', 'type' => 'submit', 'value' => _('Change')),
array('kind' => 'help', 'value' => 'member'));
- for ($i = 0; $i < sizeof($this->attributes['member']); $i++) {
- }
$memberPart = array();
if (isset($this->attributes['member'])) {
for ($i = 0; $i < sizeof($this->attributes['member']); $i++) {
- $memberPart[] = array(array('kind' => 'text', 'text' => $this->attributes['member'][$i]));
+ $memberPart[] = array(array('kind' => 'text', 'text' => getAbstractDN($this->attributes['member'][$i])));
}
}
$return[] = array(
@@ -280,10 +278,13 @@ class asteriskExtension extends baseModule {
for ($i = 0; $i < sizeof($entries); $i++) {
$dn = $entries[$i]['dn'];
if (isset($dn) && (!isset($this->attributes['member']) || !in_array($dn, $this->attributes['member']))) {
- $users_dn[] = $dn;
+ $users_dn[] = array($dn, getAbstractDN($dn));
}
}
$members = $this->attributes['member'];
+ for ($i = 0; $i < sizeof($members); $i++) {
+ $members[$i] = array($members[$i], getAbstractDN($members[$i]));
+ }
$return[] = array(array('kind' => 'table', 'value' => array(
array(
array('kind' => 'table', 'value' => array(
@@ -306,7 +307,7 @@ class asteriskExtension extends baseModule {
array('kind' => 'fieldset', 'legend' => _("Extension owners"), 'value' => array(
array(
array('kind' => 'fieldset', 'td' => array ('valign' => 'top'), 'legend' => _("Selected users"), 'value' => array (
- array(array('kind' => 'select', 'name' => 'removeusers', 'size' => '15', 'multiple' => true, 'options' => $members)))
+ array(array('kind' => 'select', 'name' => 'removeusers', 'size' => '15', 'multiple' => true, 'options' => $members, 'descriptiveOptions' => true)))
),
array('kind' => 'table', 'value' => array(
array(array('kind' => 'input', 'type' => 'submit', 'name' => 'addusers_button', 'value' => '<=', 'td' => array('align' => 'center'))),
@@ -314,7 +315,7 @@ class asteriskExtension extends baseModule {
array(array('kind' => 'help', 'value' => 'member', 'td' => array('align' => 'center')))
)),
array('kind' => 'fieldset', 'td' => array('valign' => 'top'), 'legend' => _("Available users"), 'value' => array(
- array(array('kind' => 'select', 'name' => 'addusers', 'size' => '15', 'multiple' => true, 'options' => $users_dn)))
+ array(array('kind' => 'select', 'name' => 'addusers', 'size' => '15', 'multiple' => true, 'options' => $users_dn, 'descriptiveOptions' => true)))
)
)
))
diff --git a/lam/lib/modules/inetOrgPerson.inc b/lam/lib/modules/inetOrgPerson.inc
index 7818b37c..44f5142e 100644
--- a/lam/lib/modules/inetOrgPerson.inc
+++ b/lam/lib/modules/inetOrgPerson.inc
@@ -1061,6 +1061,9 @@ class inetOrgPerson extends baseModule implements passwordService {
$dnUsers = array_keys($dnUsers);
usort($dnUsers, array($_SESSION['ldap'], 'cmp_array'));
array_unshift($dnUsers, '-');
+ for ($i = 0; $i < sizeof($dnUsers); $i++) {
+ $dnUsers[$i] = array($dnUsers[$i], getAbstractDN($dnUsers[$i]));
+ }
$optionsSelected = array();
if (isset($this->attributes['manager'][0])) {
$optionsSelected[] = $this->attributes['manager'][0];
@@ -1070,7 +1073,7 @@ class inetOrgPerson extends baseModule implements passwordService {
}
$return[] = array(
array('kind' => 'text', 'text' => _('Manager')),
- array('kind' => 'select', 'name' => 'manager', 'size' => '1',
+ array('kind' => 'select', 'name' => 'manager', 'size' => '1', 'descriptiveOptions' => true,
'options' => $dnUsers, 'options_selected' => $optionsSelected),
array('kind' => 'help', 'value' => 'manager'));
}