diff --git a/lam/templates/lists/listgroups.php b/lam/templates/lists/listgroups.php
new file mode 100644
index 00000000..967ab24e
--- /dev/null
+++ b/lam/templates/lists/listgroups.php
@@ -0,0 +1,148 @@
+
listgroups\n";
+echo "\n";
+echo "\n";
+echo "\n";
+
+// generate attribute-description table
+$attr_array; // list of LDAP attributes to show
+$desc_array; // list of descriptions for the attributes
+$attr_string = $_SESSION["config"]->get_grouplistAttributes();
+$temp_array = explode(";", $attr_string);
+$hash_table = $_SESSION["ldap"]->attributeGroupArray();
+for ($i = 0; $i < sizeof($temp_array); $i++) {
+// if value is predifined, look up description in hash_table
+if (substr($temp_array[$i],0,1) == "#") {
+ $attr = substr($temp_array[$i],1);
+ $attr_array[$i] = $attr;
+ $desc_array[] = $hash_table[$attr];
+}
+// if not predefined, the attribute is seperated by a ":" from description
+else {
+ $attr = explode(":", $temp_array[$i]);
+ $attr_array[$i] = $attr[0];
+ $desc_array[$i] = $attr[1];
+}
+}
+
+// Groups have the attribute "posixGroup"
+$filter = "(objectClass=posixGroup)";
+$attrs = $attr_array;
+$sr = @ldap_search($_SESSION["ldap"]->server(),
+ $_SESSION["config"]->get_GroupSuffix(),
+ $filter, $attrs);
+if ($sr) {
+ $info = ldap_get_entries($_SESSION["ldap"]->server, $sr);
+ ldap_free_result($sr);
+ if ($info["count"] == 0) echo ("
" . _("No Grous found!") . "
");
+}
+else echo ("
" . _("LDAP Search failed! Please check your preferences.
No Groups found!") . "
");
+
+echo ("\n");
+echo "