Code

split - second flush
[gosa.git] / gosa-plugins / goto / personal / environment / class_environment.inc
index fe0be1d0189676b5814ecc3a5a10bf11e00b7fde..b72ced3ce70b2584673ccef8f447eb45cba48c2d 100644 (file)
@@ -2,10 +2,7 @@
 
 class environment extends plugin
 {
-  /* CLI vars */
-  var $cli_summary          = "Manage server basic objects";
-  var $cli_description      = "Some longer text\nfor help";
-  var $cli_parameters       = array("eins" => "Eins ist toll", "zwei" => "Zwei ist noch besser");
+  var $plIcon = "plugins/goto/images/plugin.png";
 
   /* attribute list for save action */
   var $ignore_account       = FALSE;
@@ -18,7 +15,7 @@ class environment extends plugin
 
   var $is_group             = false;
   var $view_logged = FALSE;
-  
+
   /* Attribute definition
    */
 
@@ -150,7 +147,7 @@ class environment extends plugin
       unset($this->attrs['gotoLogonScript']['count']);
       foreach($this->attrs['gotoLogonScript'] as $device){
         $tmp = $tmp2 = array();
-        $tmp = split("\|",$device);
+        $tmp = explode("|",$device);
         $tmp2['LogonName']        = $tmp[0]; 
         $tmp2['LogonPriority']    = $tmp[2]; 
         if(preg_match("/O/i",$tmp[1])){
@@ -174,7 +171,7 @@ class environment extends plugin
       unset($this->attrs['gotoShare']['count']);
       foreach($this->attrs['gotoShare'] as $share){
         $tmp = $tmp2 = array();
-        $tmp = split("\|",$share);
+        $tmp = explode("|",$share);
         $tmp2['server']      =$tmp[0];
         $tmp2['name']        =$tmp[1];
 
@@ -220,12 +217,12 @@ class environment extends plugin
                                     "1280x768"  =>  "1280x768",
                                     "1280x1024" =>  "1280x1024");
 
-    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);
-        $lines = split("\n",$str);
+        $lines = preg_split("/\n/",$str);
         foreach($lines as $line){
           $line = trim($line);
           if(!empty($line)){
@@ -241,28 +238,55 @@ class environment extends plugin
     $this->gotoProfileServers= $config->getShareServerList() ;
     $this->gotoShareSelections= $config->getShareList(true);
     $this->gotoAvailableShares= $config->getShareList(false);  
+  
+    /* Ensure that a currently selected server will stay selected, even if the list of profile servers
+        is empty due to insufficient permissions.
+     */
+    if(count($this->gotoProfileServers) && !empty($this->gotoProfileServer)){
 
+      /* The currently selected profile server is outdated/no longer available */
+      if(!isset($this->gotoProfileServers[$this->gotoProfileServer])){
+
+      }else{
+        $c = $this->gotoProfileServers[$this->gotoProfileServer];
+        if(!preg_match("/r/",$c['ACL'])){
+
+          /* We are not allowed to read to currently selected server.
+             But to ensure that the selection will be kept after saving the account, we 
+              override the current ACL tag.
+           */          
+          $this->gotoProfileServers[$this->gotoProfileServer]['ACL'] .= "r";
+        }
+      }
+    }
     $this->update_kiosk_profiles();
-  
-    $this->gotoKioskProfile= preg_replace("/^.*\//i","",$this->gotoKioskProfile);
   }
 
 
   function update_kiosk_profiles()
   { 
+    $this->gotoKioskProfile_Server = preg_replace("/^.*:\/\/([^\/]*).*$/","\\1",$this->gotoKioskProfile);
+    $this->gotoKioskProfile_Profile= preg_replace("/^.*\//","",$this->gotoKioskProfile);
+
     $tmp1  = array("none" => array(_("disabled")));
     $tmp2  = array("none" => _("disabled"));
+    $tmp3  = array();
     $ldap = $this->config->get_ldap_link();
     $ldap->cd($this->config->current['BASE']);
     $ldap->search("(&(objectClass=goEnvironmentServer)(gotoKioskProfile=*)(cn=*))",array("cn","gotoKioskProfile"));
     $cnt = 0;
+    $ui = get_userinfo();
     while($attrs = $ldap->fetch()){
+      $acl = $ui->get_permissions($attrs['dn'],"server/goKioskService","");
       for($i = 0 ; $i < $attrs['gotoKioskProfile']['count'] ; $i ++){
-        $name = preg_replace("/^.*kiosk\//","",$attrs['gotoKioskProfile'][$i]);
-        $tmp1[$attrs['cn'][0]][] = $name;
+        if(preg_match("/r/",$acl) || $this->gotoKioskProfile_Server == $attrs['cn'][0]){
+          $name = preg_replace("/^.*\//","",$attrs['gotoKioskProfile'][$i]);
+          $tmp1[$attrs['cn'][0]][] = $name;
+          $tmp3[$attrs['cn'][0]][$name] = $attrs['gotoKioskProfile'][$i];
+          $tmp2[$attrs['cn'][0]]= $attrs['cn'][0];
+          $cnt ++;
+        }
       }
-      $tmp2[$attrs['cn'][0]]= $attrs['cn'][0];
-      $cnt ++;
     }
 
     if($cnt && $this->config->search("environment","kioskpath",array('menu','tabs'))){
@@ -271,23 +295,21 @@ class environment extends plugin
 
     $this->gotoKioskProfiles['BY_SERVER'] = $tmp1;
     $this->gotoKioskProfiles['SERVERS']   = $tmp2;
+    $this->gotoKioskProfiles['MAP']       = $tmp3;
   
-    $this->gotoKioskProfile_Server = preg_replace("/^.*:\/\/([^\/]*).*$/","\\1",$this->gotoKioskProfile);
-    $this->gotoKioskProfile_Profile= preg_replace("/^.*\//","",$this->gotoKioskProfile);
-
     $error = false;
-    if(!in_array($this->gotoKioskProfile_Server, $this->gotoKioskProfiles['SERVERS'])){
-      $this->gotoKioskProfile_Server = key($this->gotoKioskProfiles['SERVERS']);
+    if(!isset($this->gotoKioskProfiles['SERVERS'][$this->gotoKioskProfile_Server])){
       $error = true;
-    }
-    if(!in_array($this->gotoKioskProfile_Profile, $this->gotoKioskProfiles['BY_SERVER'][$this->gotoKioskProfile_Server])){
-      $this->gotoKioskProfile_Profile = $this->gotoKioskProfiles['BY_SERVER'][$this->gotoKioskProfile_Server][0];
+    }elseif(!in_array($this->gotoKioskProfile_Profile, $this->gotoKioskProfiles['BY_SERVER'][$this->gotoKioskProfile_Server])){
       $error = true;
     }
     if($error && !empty($this->gotoKioskProfile)){
+      msg_dialog::display(_("Warning"), sprintf(_("Kiosk profile '%s' located on server '%s' is not available anymore. Kiosk profile will be disabled!"), $this->gotoKioskProfile_Profile, $this->gotoKioskProfile_Server), WARNING_DIALOG);
+      $this->gotoKioskProfile_Server ="none";
+      $this->gotoKioskProfile_Profile="";
+    }elseif(empty($this->gotoKioskProfile)){
       $this->gotoKioskProfile_Server ="none";
       $this->gotoKioskProfile_Profile="";
-      msg_dialog::display(_("Warning"), sprintf(_("Kiosk profile '%s' located on server '%s' is not available anymore. Kiosk profile will be disabled!"), $this->gotoKioskProfile_Profile, $this->gotoKioskProfile_Server), WARNING_DIALOG);
     }
   }
 
@@ -325,7 +347,10 @@ class environment extends plugin
 
     /* Check profile server */
     if($this->acl_is_writeable("gotoProfileServer",$WriteOnly)){
+
       if(!empty($this->gotoProfileServer) && !isset($this->gotoProfileServers[$this->gotoProfileServer])){
+
+
         if(count($this->gotoProfileServers)){
 
           /* Get First Profile */
@@ -405,8 +430,8 @@ class environment extends plugin
       }
       /* Group Dialog with enabled environment options */
       if ($this->is_account){
-        $display= $this->show_enable_header(_("Remove environment extension"),
-            _("Environment extension enabled. You can disable it by clicking below."));
+        $display= $this->show_enable_header(msgPool::removeFeaturesButton(_("Environment")),
+            msgPool::featuresEnabled(_("Environment")));
       } else {
 
         /* Environment is disabled 
@@ -414,14 +439,16 @@ class environment extends plugin
            environment extensions
          */
         if((isset($this->parent->by_object['group']))||(isset($this->attrs['objectClass']))&&((in_array("posixAccount",$this->attrs['objectClass'])))){
-          // 4. There is a PosixAccount
-          $display= $this->show_enable_header(_("Add environment extension"),
-              _("Environment extension disabled. You can enable it by clicking below."));
+          $display= $this->show_enable_header(msgPool::addFeaturesButton(_("Environment")),
+              msgPool::featuresDisabled(_("Environment")));
+          return $display;
+        }elseif((isset($this->parent->by_object['ogroup']))){
+          $display= $this->show_enable_header(msgPool::addFeaturesButton(_("Environment")),
+              msgPool::featuresDisabled(_("Environment")));
           return $display;
         }else{
-          // 4. There is no PosixAccount
-          $display= $this->show_enable_header(_("Add environment extension"),
-              _("Environment extension disabled. You have to setup a posix account before you can enable this feature."));
+          $display= $this->show_enable_header(msgPool::addFeaturesButton(_("Environment")),
+              msgPool::featuresDisabled(_("Environment"), _("POSIX")), TRUE);
           return $display;
         }
       }
@@ -443,19 +470,17 @@ class environment extends plugin
 
         // 3. Account enabled . Editing from adminmenu
         if ($this->is_account){
-          $display= $this->show_disable_header(_("Remove environment extension"),
-              _("Environment extension enabled. You can disable it by clicking below."));
+          $display= $this->show_enable_header(msgPool::removeFeaturesButton(_("Environment")),
+              msgPool::featuresEnabled(_("Environment")));
         } else {
 
           if($this->parent->by_object['posixAccount']->is_account==true){
-            // 4. There is a PosixAccount
-            $display= $this->show_disable_header(_("Add environment extension"),
-                _("Environment extension disabled. You can enable it by clicking below."));
+            $display= $this->show_enable_header(msgPool::addFeaturesButton(_("Environment")),
+                msgPool::featuresDisabled(_("Environment")));
             return $display;
           }else{
-            // 4. There is a PosixAccount
-            $display= $this->show_disable_header(_("Add environment extension"),
-                _("Environment extension disabled. You have to setup a posix account before you can enable this feature."),TRUE,TRUE);
+            $display= $this->show_enable_header(msgPool::addFeaturesButton(_("Environment")),
+                msgPool::featuresDisabled(_("Environment"), _("POSIX")), TRUE);
             return $display;
           }
         }
@@ -538,7 +563,6 @@ class environment extends plugin
     if(!is_array($this->gotoProfileServers)){
       $this->gotoProfileServers =array();
     }
-    $smarty->assign("gotoProfileServerKeys",array_flip($this->gotoProfileServers));
 
     /* Handle kiosk profiles*/
     $smarty->assign("kiosk_servers" , $this->gotoKioskProfiles['SERVERS']);
@@ -556,7 +580,7 @@ class environment extends plugin
     if(isset($_POST['LogonSave'])){
 
       if(!$this->acl_is_writeable("gotoLogonScript")){
-        msg_dialog::display(_("Permission error"), _("You have no permission to modify logon scripts!"), ERROR_DIALOG);
+        msg_dialog::display(_("Permission error"), msgPool::permModify(_("Logon scripts")), ERROR_DIALOG);
         unset($this->dialog);
         $this->dialog=FALSE;
         $this->is_dialog=false;
@@ -646,11 +670,11 @@ class environment extends plugin
 
       /* We assign a share to this user, if we don't know where to mount the share */
       if(!isset($_POST['gotoShareSelection']) || get_post('gotoShareSelection') == ""){
-        msg_dialog::display(_("Error"), _("Please select a valid share!"), ERROR_DIALOG);
+        msg_dialog::display(_("Error"), msgPool::invalid(_("Share")), ERROR_DIALOG);
       }elseif((!isset($_POST['gotoShareMountPoint']))||(empty($_POST['gotoShareMountPoint']))||(preg_match("/[\|]/i",$_POST['gotoShareMountPoint']))){
-        msg_dialog::display(_("Error"), _("Please specify a valid mount point!"), ERROR_DIALOG);
+        msg_dialog::display(_("Error"), msgPool::invalid(_("Mount point")), ERROR_DIALOG);
       }elseif(preg_match('/ /', $_POST['gotoShareMountPoint'])){
-        msg_dialog::display(_("Error"), _("You cannot use spaces in the mount path!"), ERROR_DIALOG);
+        msg_dialog::display(_("Error"), msgPool::invalid(_("Mount point"), "/[^\s]/"), ERROR_DIALOG);
       }elseif(!(
             preg_match("/^\//",$_POST['gotoShareMountPoint'])  ||
             preg_match("/^~/",$_POST['gotoShareMountPoint']) ||
@@ -661,7 +685,7 @@ class environment extends plugin
             preg_match("/^%/",$_POST['gotoShareMountPoint'])
             )
           ){
-        msg_dialog::display(_("Error"), _("Please specify a valid mount point!"), ERROR_DIALOG);
+        msg_dialog::display(_("Error"), msgPool::invalid(_("Mount point")), ERROR_DIALOG);
       }else{
         $a_share = $this->gotoAvailableShares[$_POST['gotoShareSelection']];
         $s_mount = $_POST['gotoShareMountPoint'];
@@ -717,7 +741,7 @@ class environment extends plugin
 
 
     $tmp = array();
-    if($this->acl_is_readable("gotoShares")){
+    if($this->acl_is_readable("gotoShare")){
       $tmp = $this->printOutAssignedShares();
     }
 
@@ -751,7 +775,8 @@ class environment extends plugin
 
         /* Create pwd reset images */
         if($this->gotoShares[$key]['PwdHash'] != ""){
-          $img.= "<input type='image' name='gotoShareResetPwd_".base64_encode($key)." 'src='images/list_reset_password.png' alt='"._("Reset password hash")."' 
+          $img.= "<input type='image' name='gotoShareResetPwd_".base64_encode($key)." 
+            'src='plugins/goto/images/list_reset_password.png' alt='"._("Reset password hash")."' 
             title='"._("Reset password hash")."'>";
         }
         $field1 = array("string" => "<font style=\"color:#C0C0C0\">".$value."</font>" , "attach" => "style='".$color."'");
@@ -760,11 +785,12 @@ class environment extends plugin
 
         /* Create pwd reset img && delete image */
         if($this->gotoShares[$key]['PwdHash'] != ""){
-          $img.= "<input type='image' name='gotoShareResetPwd_".base64_encode($key)." 'src='images/list_reset_password.png' alt='"._("Reset password hash")."' 
+          $img.= "<input type='image' name='gotoShareResetPwd_".base64_encode($key)." 
+            'src='plugins/goto/images/list_reset_password.png' alt='"._("Reset password hash")."' 
             title='"._("Reset password hash")."'>";
           $img.= "&nbsp;";
         }
-        $img.= "<input type='image' name='gotoShareDel_".base64_encode($key)." 'src='images/edittrash.png' alt='"._("Delete")."' 
+        $img.= "<input type='image' name='gotoShareDel_".base64_encode($key)." 'src='images/lists/trash.png' alt='".msgPool::delButton()."' 
           title='"._("Delete share entry")."'>";
         $field1 = array("string" => $value , "attach" => "style='".$color."'");
         $field2 = array("string" => $img   , "attach" => "style='border-right:0px;'");
@@ -970,7 +996,6 @@ class environment extends plugin
     }
 
     $smarty->assign("gotoPrinter",$this->printOutPrinterDevices());
-    $smarty->assign("gotoPrinterKeys",array_flip($this->printOutPrinterDevices()));
 
     /* General behavior */
     if(is_object($this->dialog)){
@@ -1029,7 +1054,9 @@ class environment extends plugin
       new log("remove","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error());
     }
 
-    show_ldap_error($ldap->get_error(), sprintf(_("Removing of user/environment account with dn '%s' failed."),$this->dn));
+    if (!$ldap->success()){
+      msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class()));
+    }
 
     /* Optionally execute a command after we're done */
     $this->handle_post_events("remove",array("uid" => $this->uid));
@@ -1111,14 +1138,14 @@ class environment extends plugin
     $this->detect_grouptype();
 
     if(preg_match("/[^0-9]/",$this->gotoProfileQuota)) {
-      $message[]=_("Please set a valid profile quota size.");
+      $message[] = msgPool::invalid(_("Profile quota"),$this->gotoProfileQuota,"/[0-9]/") ;
     } 
     if(!isset($this->attrs['objectClass'])){
       $this->attrs['objectClass']=array();
     } 
     if(!$this->is_group){
       if((!((in_array("posixAccount",$this->attrs['objectClass']))||($this->parent->by_object['posixAccount']->is_account==true)))&&(!$this->is_group)){
-        $message[]=(_("You need to setup a valid posix extension in order to enable evironment features."));  
+        $message[]= msgPool::featuresDisabled(_("environment"),_("POSIX"));  
       }
     }
     return ($message);
@@ -1132,11 +1159,7 @@ class environment extends plugin
      */ 
     /* only save changed variables ....*/
     if ($this->gotoKioskProfile_Server != "none"){
-      if(preg_match("/https/i",$_SERVER['HTTP_REFERER'])){
-        $method="https://".$this->gotoKioskProfile_Server."/kiosk/".$this->gotoKioskProfile_Profile;
-      }else{
-        $method="http://".$this->gotoKioskProfile_Server."/kiosk/".$this->gotoKioskProfile_Profile;
-      }
+      $method = $this->gotoKioskProfiles['MAP'][$this->gotoKioskProfile_Server][$this->gotoKioskProfile_Profile];
       $this->gotoKioskProfile= $method;
     }else{
       $this->gotoKioskProfile= array();
@@ -1177,6 +1200,7 @@ class environment extends plugin
       }
 
       /* Remove old entries */
+      $ldap->cd($this->config->current['BASE']);;
       $ldap->search("(&(objectClass=gotoPrinter)(goto".$s_suffix."Printer=".$this->$useVar."))",array("*"));
       while($attr = $ldap->fetch()){
         $printerObj = NULL;
@@ -1186,6 +1210,7 @@ class environment extends plugin
         $printerObj->by_object['printgeneric']->save();
       }
 
+      $ldap->cd($this->config->current['BASE']);;
       $ldap->search("(&(objectClass=gotoPrinter)(goto".$s_suffix."AdminPrinter=".$this->$useVar."))",array("*"));
       while($attr = $ldap->fetch()){
         $printerObj = NULL;
@@ -1215,7 +1240,7 @@ class environment extends plugin
     /* Prepare HotPlug devices */
     $this->attrs['gotoHotplugDeviceDN'] = array();
     foreach($this->gotoHotplugDevices as $name => $device){
-      $this->attrs['gotoHotplugDeviceDN'][]= $device['dn'];
+      $this->attrs['gotoHotplugDeviceDN'][]= LDAP::fix($device['dn']);
     }
 
     /* Prepare LogonScripts */
@@ -1286,7 +1311,9 @@ class environment extends plugin
       new log("create",$cat."/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error());
     }
 
-    show_ldap_error($ldap->get_error(), sprintf(_("Saving of user/environment account with dn '%s' failed."),$this->dn));
+    if (!$ldap->success()){
+      msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class()));
+    }
     $this->handle_post_events($mode,array("uid"=>$this->uid));
   }
 
@@ -1329,22 +1356,20 @@ class environment extends plugin
   function printOutPrinterDevices()
   {
     $a_return = array();
-    
-    if($this->acl_is_readable("gotoPrinter")){
 
-      if(is_array($this->gotoPrinter)){
-        foreach($this->gotoPrinter as $printer){
-          if($printer['mode'] == "admin"){
-            $a_return[$printer['cn'][0]]= $printer['cn'][0]." - "._("Administrator");
-          }else{
-            $a_return[$printer['cn'][0]]= $printer['cn'][0]; 
-          }
-          if ($printer['cn'][0] == $this->gosaDefaultPrinter){
-            $a_return[$printer['cn'][0]].=" - "._("Default printer");
-          }
+    if(is_array($this->gotoPrinter)){
+      foreach($this->gotoPrinter as $printer){
+        if($printer['mode'] == 'admin'){
+          $a_return[$printer['cn'][0]]= $printer['cn'][0]." - "._("Administrator");
+        }else{
+          $a_return[$printer['cn'][0]]= $printer['cn'][0]; 
+        }
+        if ($printer['cn'][0] == $this->gosaDefaultPrinter){
+          $a_return[$printer['cn'][0]].=" - "._("Default printer");
         }
       }
     }
+               asort($a_return);
     return($a_return);
   }
 
@@ -1403,7 +1428,7 @@ class environment extends plugin
       unset($this->multi_attrs_all['gotoShare']['count']);
       foreach($this->multi_attrs_all['gotoShare'] as $share){
         $tmp = $tmp2 = array();
-        $tmp = split("\|",$share);
+        $tmp = explode("|",$share);
         $tmp2['server']      =$tmp[0];
         $tmp2['name']        =$tmp[1];
 
@@ -1434,7 +1459,7 @@ class environment extends plugin
       unset($this->multi_attrs['gotoShare']['count']);
       foreach($this->multi_attrs['gotoShare'] as $share){
         $tmp = $tmp2 = array();
-        $tmp = split("\|",$share);
+        $tmp = explode("|",$share);
         $tmp2['server']      =$tmp[0];
         $tmp2['name']        =$tmp[1];
 
@@ -1466,7 +1491,7 @@ class environment extends plugin
       unset($this->multi_attrs_all['gotoLogonScript']['count']);
       foreach($this->multi_attrs_all['gotoLogonScript'] as $device){
         $tmp = $tmp2 = array();
-        $tmp = split("\|",$device);
+        $tmp = explode("|",$device);
         $tmp2['LogonName']        = $tmp[0];
         $tmp2['LogonPriority']    = $tmp[2];
         if(preg_match("/O/i",$tmp[1])){
@@ -1491,7 +1516,7 @@ class environment extends plugin
       unset($this->multi_attrs['gotoLogonScript']['count']);
       foreach($this->multi_attrs['gotoLogonScript'] as $device){
         $tmp = $tmp2 = array();
-        $tmp = split("\|",$device);
+        $tmp = explode("|",$device);
         $tmp2['LogonName']        = $tmp[0];
         $tmp2['LogonPriority']    = $tmp[2];
         if(preg_match("/O/i",$tmp[1])){
@@ -1683,7 +1708,7 @@ class environment extends plugin
     $this->detect_grouptype();
 
     if(preg_match("/[^0-9]/",$this->gotoProfileQuota) && in_array("gotoProfileQuota",$this->multi_boxes)) {
-      $message[]=_("Please set a valid profile quota size.");
+      $message[] = msgPool::invalid(_("Profile quota"),$this->gotoProfileQuota,"/[0-9]/") ;
     }
     return($message);
   }
@@ -1751,19 +1776,15 @@ class environment extends plugin
 
           "plProvidedAcls"  => array(
 
-            "gotoProfileFlagL"    => _("Resolution changeable during session") ,
-            "gotoProfileFlagC"    => _("Cache profile localy") ,
-
-            "gotoProfileQuota"    => _("Profile quota") ,
             "gotoProfileServer"   => _("Profile server") ,
-
-            "gotoXResolution"     => _("Resolution") ,
-            "gotoKioskProfile"    => _("Kiosk profile") ,
-
-            "gosaDefaultPrinter"  => _("Default printer") ,
-            "gotoLogonScript"     => _("Logon script") ,
+            "gotoProfileQuota"    => _("Profile quota") ,
+            "gotoProfileFlagC"    => _("Cache profile localy") ,
+            "gotoShare"           => _("Shares"),
             "gotoHotplugDevice"   => _("Hotplug devices"),
-            "gotoShare"           => _("Shares"))
+            "gotoKioskProfile"    => _("Kiosk profile") ,
+            "gotoProfileFlagL"    => _("Resolution changeable during session") ,
+            "gotoXResolution"     => _("Resolution") ,
+            "gotoLogonScript"     => _("Logon script"))
             ));
   }
 }