show classes+variables as single line input fields, added autocomplete

This commit is contained in:
Roland Gruber 2016-02-13 13:50:14 +00:00
parent db4bfd306b
commit a02441f0ab
1 changed files with 38 additions and 37 deletions

View File

@ -3,7 +3,7 @@
$Id$ $Id$
This code is not yet part of LDAP Account Manager (http://www.ldap-account-manager.org/) This code is not yet part of LDAP Account Manager (http://www.ldap-account-manager.org/)
Copyright (C) 2012 - 2015 Roland Gruber Copyright (C) 2012 - 2016 Roland Gruber
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
@ -36,6 +36,11 @@ $Id$
*/ */
class puppetClient extends baseModule { class puppetClient extends baseModule {
/** cache for classes */
private $classCache = null;
/** cache for variables */
private $variablesCache = null;
/** /**
* Creates a new authorizedServiceObject object. * Creates a new authorizedServiceObject object.
* *
@ -224,6 +229,7 @@ class puppetClient extends baseModule {
$return->addElement(new htmlAccountPageButton('puppetClient', 'attributes', 'addObjectClass', _('Add Puppet extension'))); $return->addElement(new htmlAccountPageButton('puppetClient', 'attributes', 'addObjectClass', _('Add Puppet extension')));
return $return; return $return;
} }
$this->initCache();
// environment // environment
$autocompleteEnvironment = array(); $autocompleteEnvironment = array();
if (isset($this->moduleSettings['puppetClient_environments'])) { if (isset($this->moduleSettings['puppetClient_environments'])) {
@ -264,17 +270,9 @@ class puppetClient extends baseModule {
} }
$return->addElement(new htmlTableExtendedSelect('parentnode', $possibleParentNodes, array($parentnode), _('Parent node'), 'parentnode'), true); $return->addElement(new htmlTableExtendedSelect('parentnode', $possibleParentNodes, array($parentnode), _('Parent node'), 'parentnode'), true);
// classes // classes
$puppetclass = ''; $this->addMultiValueInputTextField($return, 'puppetclass', _('Classes'), false, null, false, $this->classCache);
if (isset($this->attributes['puppetclass'])) {
$puppetclass = implode("\r\n", $this->attributes['puppetclass']);
}
$return->addElement(new htmlTableExtendedInputTextarea('puppetclass', $puppetclass, 60, 5, _('Classes'), 'puppetclass'), true);
// variables // variables
$puppetvar = ''; $this->addMultiValueInputTextField($return, 'puppetvar', _('Variables'), false, null, false, $this->variablesCache);
if (isset($this->attributes['puppetvar'])) {
$puppetvar = implode("\r\n", $this->attributes['puppetvar']);
}
$return->addElement(new htmlTableExtendedInputTextarea('puppetvar', $puppetvar, 60, 5, _('Variables'), 'puppetvar'), true);
$return->addElement(new htmlSpacer(null, '10px'),true); $return->addElement(new htmlSpacer(null, '10px'),true);
$remButton = new htmlAccountPageButton('puppetClient', 'attributes', 'remObjectClass', _('Remove Puppet extension')); $remButton = new htmlAccountPageButton('puppetClient', 'attributes', 'remObjectClass', _('Remove Puppet extension'));
@ -326,33 +324,9 @@ class puppetClient extends baseModule {
$this->attributes['parentnode'][0] = $_POST['parentnode']; $this->attributes['parentnode'][0] = $_POST['parentnode'];
} }
// classes // classes
$puppetclass = explode("\r\n", $_POST['puppetclass']); $this->processMultiValueInputTextField('puppetclass', $errors, 'ascii');
for ($i = 0; $i < sizeof($puppetclass); $i++) {
if (trim($puppetclass[$i]) == '') {
unset($puppetclass[$i]);
continue;
}
if (!get_preg($puppetclass[$i], 'ascii')) {
$error = $this->messages['puppetclass'][0];
$error[] = htmlspecialchars($puppetclass[$i]);
$errors[] = $error;
}
}
$this->attributes['puppetclass'] = array_values(array_unique($puppetclass));
// variables // variables
$puppetvar = explode("\r\n", $_POST['puppetvar']); $this->processMultiValueInputTextField('puppetvar', $errors, 'ascii');
for ($i = 0; $i < sizeof($puppetvar); $i++) {
if (trim($puppetvar[$i]) == '') {
unset($puppetvar[$i]);
continue;
}
if (!get_preg($puppetvar[$i], 'ascii')) {
$error = $this->messages['puppetvar'][0];
$error[] = htmlspecialchars($puppetvar[$i]);
$errors[] = $error;
}
}
$this->attributes['puppetvar'] = array_values(array_unique($puppetvar));
return $errors; return $errors;
} }
@ -500,6 +474,33 @@ class puppetClient extends baseModule {
return $possibleParentNodes; return $possibleParentNodes;
} }
/**
* Loads cached data from LDAP such as classes etc.
*/
private function initCache() {
if ($this->classCache != null) {
return;
}
$attrs = array('puppetclass', 'puppetvar');
$classes = array();
$variables = array();
$result = searchLDAPByFilter('(objectClass=puppetClient)', $attrs, array($this->get_scope()));
foreach ($result as $attributes) {
if (isset($attributes['puppetclass'])) {
foreach ($attributes['puppetclass'] as $val) {
$classes[] = $val;
}
}
if (isset($attributes['puppetvar'])) {
foreach ($attributes['puppetvar'] as $val) {
$variables[] = $val;
}
}
}
$this->classCache = array_values(array_unique($classes));
$this->variablesCache = array_values(array_unique($variables));
}
} }
?> ?>