diff --git a/gosa-plugins/systems/admin/systems/class_systemManagement.inc b/gosa-plugins/systems/admin/systems/class_systemManagement.inc
index 51e8ba4249a8f8942c64835ebea173b6bb234189..844e9f629ef24a9ed2fa44844db9291c63700453 100644 (file)
if($this->systab instanceOf ArpNewDeviceTabs &&
isset($_POST['edit_finish']) &&
- $this->systab->by_object['ArpNewDevice']->gotoIntegration ){
+ isset($_POST['gotoIntegration'])){
+ $this->systab->save_object();
- /* Check tabs, will feed message array */
- $message = $this->systab->check();
- if(count($message)){
- msg_dialog::displayChecks($message);
- }else{
- $s_action = "SelectedSystemType";
- $this->systab->save();
- $this->systab = null;
- unset($_POST['edit_finish']);
+ if($this->systab->by_object['ArpNewDevice']->gotoIntegration){
+
+ /* Check tabs, will feed message array */
+ $message = $this->systab->check();
+ if(count($message)){
+ msg_dialog::displayChecks($message);
+ }else{
+ $s_action = "SelectedSystemType";
+ $this->systab->save();
+ $this->systab = null;
+ unset($_POST['edit_finish']);
+ }
}
}
/* We are allowed to create the requested system type */
if(preg_match("/c/",$tabacl)){
- $this->systab= new $tabclass($this->config, $this->config->data['TABS'][$class], $this->dn,$selected_system);
+ $this->systab= new $tabclass($this->config, $this->config->data['TABS'][$class], $this->dn, $selected_system);
$this->systab->set_acl_base($this->DivListSystem->selectedBase);
- $this->systab->by_object[$tabname]->base = $this->DivListSystem->selectedBase;
- $this->systab->base = $this->DivListSystem->selectedBase;
+ if($selected_group != "none"){
+ $this->systab->base = preg_replace("/^[^,]+,".get_ou('ogroupRDN')."/", "", $selected_group);
+ $this->systab->by_object[$tabname]->base = $this->systab->base;
+ } else {
+ $this->systab->by_object[$tabname]->base = $this->DivListSystem->selectedBase;
+ $this->systab->base = $this->DivListSystem->selectedBase;
+ }
/* This will be used when the object is saved, to set FAIstate to 'install'
and to preset maybe other attributes.
target opsi -> Remove source.
target gosa -> Activate system.
*/
- if($this->systab instanceOf opsi_tabs && $this->systab->was_activated){
+ if($this->systab instanceOf opsi_tabs){
$ldap = $this->config->get_ldap_link();
$ldap->cd($this->config->current['BASE']);
$ldap->rmdir ($this->systab->dn);
$res = array_merge($res,get_list($filter,$sys_categories, get_ou('systemIncomingRDN').$base,$sys_attrs, GL_SIZELIMIT));
/* Append opsi systems, the opsi extension have to installed.
- (Only, if we are allowed to view opsi hosts)
+ (Only, if we are allowed to view opsi hosts and if we're on the ldap root)
*/
- if($this->opsi instanceof opsi && $this->opsi->enabled() && $this->DivListSystem->ShowOpsiHosts){
+ if($this->DivListSystem->selectedBase == $this->config->current['BASE'] &&
+ $this->opsi instanceof opsi &&
+ $this->opsi->enabled() &&
+ $this->DivListSystem->ShowOpsiHosts){
$o_acl = $this->ui->get_permissions($base,"opsi/opsiGeneric","");
if(preg_match("/r/",$o_acl)){
$opsi_clients = $this->opsi->get_hosts_for_system_management();
If there is a samba host, then merge it with the opsi host,
to avoid duplicate entries.
*/
+ $oRex = preg_replace("/\*/",".*",$this->DivListSystem->Regex);
foreach($opsi_clients as $entry){
- if(isset($opsi_map[$entry['cn'][0]])){
+ if(isset($opsi_map[$entry['cn'][0]]) || !preg_match("/".($oRex)."/", $entry['cn'][0])){
continue;
}
$terminal = $entry;