X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;ds=sidebyside;f=gosa-plugins%2Fgoto%2Fadmin%2Fsystems%2Fgoto%2Fclass_workstationService.inc;h=1aae67b27c6a00f7cc8951f782b65ac444fdfb4f;hb=c09fe434d6b34caa356e3790e15d05cb9c32bb8d;hp=f0a883ce6c9ca784053c8f2a2ae9e35987998616;hpb=38fa986fac140f784bcc40447888a40d56321786;p=gosa.git diff --git a/gosa-plugins/goto/admin/systems/goto/class_workstationService.inc b/gosa-plugins/goto/admin/systems/goto/class_workstationService.inc index f0a883ce6..1aae67b27 100644 --- a/gosa-plugins/goto/admin/systems/goto/class_workstationService.inc +++ b/gosa-plugins/goto/admin/systems/goto/class_workstationService.inc @@ -3,6 +3,7 @@ class workservice extends plugin { var $gotoScannerEnable; + /* Generic terminal attributes */ var $gotoXMonitor= ""; var $gotoXDriver= ""; @@ -26,7 +27,6 @@ class workservice extends plugin var $base= ""; var $cn= ""; var $orig_dn= ""; - var $XMethods= array(); var $XDrivers= array(); var $XResolutions = array(); var $MouseTypes= array(); @@ -36,8 +36,7 @@ class workservice extends plugin /* attribute list for save action */ - var $attributes= array("gotoXMonitor", - "gotoXDriver", "gotoXResolution", "gotoXColordepth", + var $attributes= array("gotoXMonitor", "gotoXDriver", "gotoXResolution", "gotoXColordepth", "gotoXHsync", "gotoXVsync", "gotoScannerEnable", "gotoScannerClients", "gotoScannerBackend", "gotoXKbModel", "gotoXKbLayout", "gotoXKbVariant", @@ -62,8 +61,8 @@ class workservice extends plugin "1400x1050" => "1400x1050", "1600x1200" => "1600x1200"); - if(isset($this->config->data['MAIN']['RESOLUTION_HOOK'])){ - $file = $this->config->data['MAIN']['RESOLUTION_HOOK']; + if($this->config->get_cfg_value("resolutions") != ""){ + $file = $this->config->get_cfg_value("resolutions"); if(is_readable($file)){ $str = file_get_contents($file); @@ -76,7 +75,7 @@ class workservice extends plugin } //natcasesort($this->gotoXResolutions); }else{ - print_red(sprintf(_("You have specified an external resolution hook which can't be read, please check the permission of the file '%s'."),$file)); + msg_dialog::display(_("Configuration error"), msgPool::cannotReadFile($file), WARNING_DIALOG); } } @@ -107,7 +106,7 @@ class workservice extends plugin "/dev/input/mice" => "/dev/input/mice"); /* Additional values will be extracted from CONFIG_DIR./keyboardLayouts */ - $this->XKbLayouts= array ("de"=> "de","intl" =>"intl","us" =>"us"); + $this->XKbLayouts = array("de"=> "de","en" =>"en", "es" => "es", "us" =>"us", "fr" => "fr"); $this->XKbVariants= array ("nodeadkeys"=>"nodeadkeys", "basic"=>"basic"); /* try to read additional keyboard layouts @@ -128,22 +127,11 @@ class workservice extends plugin } } - /* Initialize methods */ - $this->XMethods["indirect"]= _("show chooser"); - $this->XMethods["query"]= _("direct"); - #$this->XMethods["squery"]= _("direct via ssh"); - #$this->XMethods["nquery"]= _("direct via nx"); - $this->XMethods["load"]= _("load balanced"); - #$this->XMethods["sload"]= _("load balanced via ssh"); - #$this->XMethods["nload"]= _("load balanced via nx"); - $this->XMethods["rdp"]= _("Windows RDP"); - $this->XMethods["citrix"]= _("ICA client"); - $this->orig_dn= $this->dn; /* Load phone hardware list */ - $tmp = get_sub_list("(objectClass=goFonHardware)","",array(get_ou("phoneou")), + $tmp = get_sub_list("(objectClass=goFonHardware)","",array(get_ou("phoneRDN")), $this->config->current['BASE'],array("cn","description"), GL_NO_ACL_CHECK); foreach($tmp as $attrs){ $cn= $attrs['cn'][0]; @@ -161,13 +149,13 @@ class workservice extends plugin */ $deps_a = array( get_people_ou(), - get_ou("ogroupou"), - get_ou("serverou"), - get_ou("terminalou"), - get_ou("workstationou"), - get_ou("printerou"), - get_ou("componentou"), - get_ou("phoneou")); + get_ou("ogroupRDN"), + get_ou("serverRDN"), + get_ou("terminalRDN"), + get_ou("workstationRDN"), + get_ou("printerRDN"), + get_ou("componentRDN"), + get_ou("phoneRDN")); $tmp = get_sub_list("(goFonHardware=*)","",$deps_a,$this->config->current['BASE'], array('cn','dn','goFonHardware'),GL_NO_ACL_CHECK); @@ -273,7 +261,7 @@ class workservice extends plugin } /* Arrays */ - foreach(array("XMethods", "XDrivers", "XResolutions", "XColordepths", + foreach(array("XDrivers", "XResolutions", "XColordepths", "XKbModels", "XKbVariants", "MouseTypes", "MousePorts") as $val){ $smarty->assign("$val", $this->$val); @@ -359,7 +347,7 @@ class workservice extends plugin { plugin::save_object(); - if((isset($_POST['gotoXDriver'])) && $this->acl_is_writeable("AutoSync")) { + if((isset($_POST['workservicePosted'])) && $this->acl_is_writeable("AutoSync")) { if(isset($_POST['AutoSync'])){ $this->AutoSync = true; }else{ @@ -384,13 +372,15 @@ class workservice extends plugin $val= preg_replace ("/\s/", "", $this->gotoXVsync); if($this->acl_is_writeable("gotoXVsync")){ - if (!preg_match ("/^\d+(\.\d+)?([-]\d+(\.\d+)?)?$/", $val)){ - $message[]= _("Please specify a valid VSync range."); + if(empty($val)){ + $message[]= msgPool::required(_("VSync")); + }elseif (!preg_match ("/^\d+(\.\d+)?([-]\d+(\.\d+)?)?$/", $val)){ + $message[]= msgPool::invalid(_("VSync")); } else{ list($v1,$v2)= preg_split ("/[-+]/", $val); if ($v2 != ""){ if ($v1 > $v2){ - $message[]= _("Please specify a valid VSync range."); + $message[]= msgPool::invalid(_("VSync")); } } } @@ -399,13 +389,15 @@ class workservice extends plugin /* Check hsync for correct usage */ $val= preg_replace ("/\s/", "", $this->gotoXHsync); if($this->acl_is_writeable("gotoXHsync")){ - if (!preg_match ("/^\d+(\.\d+)?([-]\d+(\.\d+)?)?$/", $val)){ - $message[]= _("Please specify a valid HSync range."); + if(empty($val)){ + $message[]= msgPool::required(_("HSync")); + }elseif (!preg_match ("/^\d+(\.\d+)?([-]\d+(\.\d+)?)?$/", $val)){ + $message[]= msgPool::invalid(_("HSync")); } else{ list($v1,$v2)= preg_split ("/[-+]/", $val); if ($v2 != ""){ if ($v1 > $v2){ - $message[]= _("Please specify a valid HSync range."); + $message[]= msgPool::invalid(_("HSync")); } } } @@ -447,10 +439,20 @@ class workservice extends plugin $ldap= $this->config->get_ldap_link(); $ldap->cd($this->dn); $this->cleanup(); + + $ldap->modify ($this->attrs); new log("modify","workstation/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); - show_ldap_error($ldap->get_error(), sprintf(_("Saving of system workstation/service with dn '%s' failed."),$this->dn)); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } $this->handle_post_events("modify"); + + /* Send goto reload event to gosaSupportDaemon */ + if(count($this->attrs)){ + $this->send_goto_reload(); + } + } @@ -467,7 +469,7 @@ class workservice extends plugin } } else { $drivers = array("ati", "atimisc", "chips", "cirrus", "cyrix", "fbdev", "fglrx", - "i128", "i740", "i810", "imstt", "mga", "neomagic", "newport", "nsc", "nv", "nvidia", + "i128", "i740", "i810", "intel", "imstt", "mga", "neomagic", "newport", "nsc", "nv", "nvidia", "r128", "radeon", "rendition", "s3", "s3virge", "savage", "siliconmotion", "sis", "tdfx", "tga", "trident", "tseng", "vesa", "vga", "vmware"); } @@ -492,8 +494,8 @@ class workservice extends plugin "gotoXDriver" => _("Gfx driver"), "gotoXResolution" => _("Gfx resolution"), "gotoXColordepth" => _("Gfx color depth"), - "gotoXHsync" => _("Hsync"), - "gotoXVsync" => _("Vsync"), + "gotoXHsync" => _("HSync"), + "gotoXVsync" => _("VSync"), "AutoSync" => _("Use DDC"), "gotoScannerEnable" => _("Scanner enabled"), "gotoXKbModel" => _("Keyboard model"), @@ -504,6 +506,69 @@ class workservice extends plugin "goFonHardware" => _("Telephone hardware")) )); } + + + /*! \brief Send goto_reload event to support daemon + */ + function send_goto_reload() + { + if(count($this->attrs) && class_available("DaemonEvent")){ + $events = DaemonEvent::get_event_types(SYSTEM_EVENT | HIDDEN_EVENT); + $o_queue = new gosaSupportDaemon(); + if(isset($events['TRIGGERED']['DaemonEvent_goto_reload'])){ + $evt = $events['TRIGGERED']['DaemonEvent_goto_reload']; + $macs = array(); + + /* Get list of macAddresses + */ + if(isset($this->parent->by_object['ogroup'])){ + + /* If we are an object group, add all member macs + */ + $p = $this->parent->by_object['ogroup']; + foreach($p->memberList as $dn => $obj){ + if(preg_match("/".normalizePreg(get_ou("systemIncomingRDN"))."/",$dn)) continue; + if(isset($p->objcache[$dn]['macAddress']) && !empty($p->objcache[$dn]['macAddress'])){ + $macs[] = $p->objcache[$dn]['macAddress']; + } + } + }elseif(isset($this->parent->by_object['workgeneric']->netConfigDNS->macAddress)){ + + /* We are a workstation. Add current mac. + */ + $mac = $this->parent->by_object['workgeneric']->netConfigDNS->macAddress; + if(!empty($mac) && !preg_match("/".normalizePreg(get_ou("systemIncomingRDN"))."/",$this->orig_dn)){ + $macs[] = $mac; + } + } + + /* Trigger event for all member objects + */ + if(count($macs)){ + $tmp = new $evt['CLASS_NAME']($this->config); + $tmp->set_type(TRIGGERED_EVENT); + $target = $o_queue->get_host().":".$o_queue->get_port(); + $tmp->add_targets(array($target)); + $tmp->set_macs($macs); + if(!$o_queue->append($tmp,TRUE)){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($o_queue->get_error()),ERROR_DIALOG); + } + } + } + } + } + + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + + if(preg_match("/\+/",$this->gotoXHsync)){ + $this->AutoSync = true; + $this->gotoXHsync = preg_replace("/\+/","-",$this->gotoXHsync); + $this->gotoXVsync = preg_replace("/\+/","-",$this->gotoXVsync); + } + } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: