Code

Backport from trunk
[gosa.git] / gosa-plugins / goto / personal / environment / class_environment.inc
index 0060589ccb171c36352511dd3903f6b9149d12cb..9c7fccefae5762a32e3b32960a267f8b11d09f4a 100644 (file)
@@ -6,8 +6,8 @@ class environment extends plugin
 
   /* attribute list for save action */
   var $ignore_account       = FALSE;
-  var $plHeadline           = "Environment";
-  var $plDescription        = "This does something";
+  var $plHeadline           = "Desktop";
+  var $plDescription        = "Manage desktop settings";
   var $dialog               = false;    // Indicates that we are currently editing in an seperate dialog
   
   var $in_dialog            = false;
@@ -64,11 +64,11 @@ class environment extends plugin
   /* general settings */
   // Sets the attributes which will kept on page reload, which will be saved, ...
 
-  var $CopyPasteVars      = array("gotoHotplugDevices","gotoAvailableShares","gotoShareSelections","gotoPrinterSel","gotoProfileFlagL","gotoXResolutions","gotoProfileFlagC","gotoProfileServers","useProfile","is_group","in_dialog","OrigCn","gotoKioskProfile_Server","gotoKioskProfile_Profile");
+  var $CopyPasteVars      = array("gotoHotplugDevices","gotoAvailableShares","gotoShareSelections","gotoPrinterSel","gotoProfileFlagL","gotoXResolutions","gotoProfileFlagC","gotoProfileServers","useProfile","is_group","in_dialog","OrigCn","gotoKioskProfile_Server","gotoKioskProfile_Profile", "gotoLogonScripts","gotoLogonScript","gotoShare","gotoShares");
 
   var $attributes         = array("uid","gotoProfileServer","gotoProfileFlags","gotoHotplugDeviceDN",
       "gotoXResolution","gotoProfileQuota",
-      "gotoLogonScript",
+      "gotoLogonScript","gotoLogonScripts","gotoHotplugDevices",
       "gotoPrinter", "gosaDefaultPrinter",
       "gotoShare",
       "gotoKioskProfile");
@@ -80,6 +80,8 @@ class environment extends plugin
   var $multiple_support =TRUE;
 
   var $use_gotoPrinter;
+  var $shareList = NULL;
+
 
   function environment (&$config, $dn= NULL)
   {
@@ -217,8 +219,8 @@ class environment extends plugin
                                     "1280x768"  =>  "1280x768",
                                     "1280x1024" =>  "1280x1024");
 
-    if($this->config->get_cfg_value("resolutions") != ""){
-      $file = $this->config->get_cfg_value("resolutions");
+    if($this->config->get_cfg_value("environment","resolutions") != ""){
+      $file = $this->config->get_cfg_value("environment","resolutions");
 
       if(is_readable($file)){
         $str = file_get_contents($file);
@@ -260,6 +262,16 @@ class environment extends plugin
       }
     }
     $this->update_kiosk_profiles();
+
+    // Prepare lists
+    $this->shareList = new sortableListing();
+    $this->shareList->setDeleteable(false);
+    $this->shareList->setEditable(false);
+    $this->shareList->setWidth("100%");
+    $this->shareList->setHeight("120px");
+    $this->shareList->setHeader(array(_("Server"),_("Share name"),_("Mount point"), 
+            _("User"), _("Type"), _("Action")));
+    $this->shareList->setDefaultSortColumn(1);
   }
 
 
@@ -289,7 +301,8 @@ class environment extends plugin
       }
     }
 
-    if($cnt && $this->config->search("environment","kioskpath",array('menu','tabs'))){
+    $tmp = $this->config->get_cfg_value("environment","kioskPath");
+    if($cnt && !empty($tmp)){
       $this->kiosk_enabled = TRUE;
     }
 
@@ -300,7 +313,7 @@ class environment extends plugin
     $error = false;
     if(!isset($this->gotoKioskProfiles['SERVERS'][$this->gotoKioskProfile_Server])){
       $error = true;
-    }elseif(!in_array($this->gotoKioskProfile_Profile, $this->gotoKioskProfiles['BY_SERVER'][$this->gotoKioskProfile_Server])){
+    }elseif(!in_array_strict($this->gotoKioskProfile_Profile, $this->gotoKioskProfiles['BY_SERVER'][$this->gotoKioskProfile_Server])){
       $error = true;
     }
     if($error && !empty($this->gotoKioskProfile)){
@@ -335,7 +348,7 @@ class environment extends plugin
     /* Log view */
     if($this->is_account && !$this->view_logged){
       $this->view_logged = TRUE;
-      if(isset($this->parent->by_object['user']) || (isset($this->attrs['objectClass']) &&in_array("gosaAccount",$this->attrs['objectClass']))){
+      if(isset($this->parent->by_object['user']) || (isset($this->attrs['objectClass']) &&in_array_strict("gosaAccount",$this->attrs['objectClass']))){
         new log("view","users/".get_class($this),$this->dn);
       }else{
         new log("view","groups/".get_class($this),$this->dn);
@@ -376,7 +389,7 @@ class environment extends plugin
     /* Prepare all variables for smarty */
     foreach($this->attributes as $s_attr){
       /* Set value*/
-      $smarty->assign($s_attr,$this->$s_attr);
+      $smarty->assign($s_attr,set_post($this->$s_attr));
 
       /* Set checkbox state*/
       if(empty($this->$s_attr)){
@@ -429,25 +442,25 @@ class environment extends plugin
       }
       /* Group Dialog with enabled environment options */
       if ($this->is_account){
-        $display= $this->show_enable_header(msgPool::removeFeaturesButton(_("Environment")),
-            msgPool::featuresEnabled(_("Environment")));
+        $display= $this->show_disable_header(msgPool::removeFeaturesButton(_("Desktop")),
+            msgPool::featuresEnabled(_("Desktop")));
       } else {
 
         /* Environment is disabled 
            If theres is no posixAccount enabled, you won't be able to enable 
            environment extensions
          */
-        if((isset($this->parent->by_object['group']))||(isset($this->attrs['objectClass']))&&((in_array("posixAccount",$this->attrs['objectClass'])))){
-          $display= $this->show_enable_header(msgPool::addFeaturesButton(_("Environment")),
-              msgPool::featuresDisabled(_("Environment")));
+        if((isset($this->parent->by_object['group']))||(isset($this->attrs['objectClass']))&&((in_array_strict("posixAccount",$this->attrs['objectClass'])))){
+          $display= $this->show_enable_header(msgPool::addFeaturesButton(_("Desktop")),
+              msgPool::featuresDisabled(_("Desktop")));
           return $display;
         }elseif((isset($this->parent->by_object['ogroup']))){
-          $display= $this->show_enable_header(msgPool::addFeaturesButton(_("Environment")),
-              msgPool::featuresDisabled(_("Environment")));
+          $display= $this->show_enable_header(msgPool::addFeaturesButton(_("Desktop")),
+              msgPool::featuresDisabled(_("Desktop")));
           return $display;
         }else{
-          $display= $this->show_enable_header(msgPool::addFeaturesButton(_("Environment")),
-              msgPool::featuresDisabled(_("Environment"), _("POSIX")), TRUE);
+          $display= $this->show_enable_header(msgPool::addFeaturesButton(_("Desktop")),
+              msgPool::featuresDisabled(_("Desktop"), _("POSIX")), TRUE);
           return $display;
         }
       }
@@ -469,17 +482,17 @@ class environment extends plugin
 
         // 3. Account enabled . Editing from adminmenu
         if ($this->is_account){
-          $display= $this->show_enable_header(msgPool::removeFeaturesButton(_("Environment")),
-              msgPool::featuresEnabled(_("Environment")));
+          $display= $this->show_disable_header(msgPool::removeFeaturesButton(_("Desktop")),
+              msgPool::featuresEnabled(_("Desktop")));
         } else {
 
           if($this->parent->by_object['posixAccount']->is_account==true){
-            $display= $this->show_enable_header(msgPool::addFeaturesButton(_("Environment")),
-                msgPool::featuresDisabled(_("Environment")));
+            $display= $this->show_enable_header(msgPool::addFeaturesButton(_("Desktop")),
+                msgPool::featuresDisabled(_("Desktop")));
             return $display;
           }else{
-            $display= $this->show_enable_header(msgPool::addFeaturesButton(_("Environment")),
-                msgPool::featuresDisabled(_("Environment"), _("POSIX")), TRUE);
+            $display= $this->show_enable_header(msgPool::addFeaturesButton(_("Desktop")),
+                msgPool::featuresDisabled(_("Desktop"), _("POSIX")), TRUE);
             return $display;
           }
         }
@@ -498,7 +511,7 @@ class environment extends plugin
     /* Prepare all variables for smarty */
     foreach($this->attributes as $s_attr){
       /* Set value*/
-      $smarty->assign($s_attr,$this->$s_attr);
+      $smarty->assign($s_attr,set_post($this->$s_attr));
 
       /* Set checkbox state*/
       if(empty($this->$s_attr)){
@@ -557,19 +570,19 @@ class environment extends plugin
     }
 
 
-    $smarty->assign("gotoXResolutions"    , $this->gotoXResolutions);
-    $smarty->assign("gotoXResolutionKeys" , array_flip($this->gotoXResolutions));
+    $smarty->assign("gotoXResolutions"    , set_post($this->gotoXResolutions));
+    $smarty->assign("gotoXResolutionKeys" , set_post(array_flip($this->gotoXResolutions)));
 
-    $smarty->assign("gotoProfileServers",$this->gotoProfileServers);
+    $smarty->assign("gotoProfileServers", set_post($this->gotoProfileServers));
     if(!is_array($this->gotoProfileServers)){
       $this->gotoProfileServers =array();
     }
 
     /* Handle kiosk profiles*/
-    $smarty->assign("kiosk_servers" , $this->gotoKioskProfiles['SERVERS']);
-    $smarty->assign("kiosk_server" ,  $this->gotoKioskProfile_Server);
-    $smarty->assign("kiosk_profiles" , $this->gotoKioskProfiles['BY_SERVER'][$this->gotoKioskProfile_Server]);
-    $smarty->assign("kiosk_profile" ,  $this->gotoKioskProfile_Profile);
+    $smarty->assign("kiosk_servers" , set_post($this->gotoKioskProfiles['SERVERS']));
+    $smarty->assign("kiosk_server" ,  set_post($this->gotoKioskProfile_Server));
+    $smarty->assign("kiosk_profiles", set_post($this->gotoKioskProfiles['BY_SERVER'][$this->gotoKioskProfile_Server]));
+    $smarty->assign("kiosk_profile" , set_post($this->gotoKioskProfile_Profile));
   
 
     /* Logonscript Management
@@ -581,7 +594,7 @@ class environment extends plugin
     if(isset($_POST['LogonSave'])){
 
       if(!$this->acl_is_writeable("gotoLogonScript")){
-        msg_dialog::display(_("Permission error"), msgPool::permModify(_("Logon scripts")), ERROR_DIALOG);
+        msg_dialog::display(_("Permission error"), msgPool::permModify(_("Log on scripts")), ERROR_DIALOG);
         unset($this->dialog);
         $this->dialog=FALSE;
         $this->is_dialog=false;
@@ -636,7 +649,7 @@ class environment extends plugin
        * There must be an entry selected to perform edit request.
        */
       if((isset($_POST['gotoLogonScriptEdit']))&&(isset($_POST['gotoLogonScript']))){
-        $is_entry = $this->gotoLogonScripts[$_POST['gotoLogonScript']];
+        $is_entry = $this->gotoLogonScripts[get_post('gotoLogonScript')];
         $this->is_dialog = true;
         $this->dialog = new logonManagementDialog($this->config,$this->dn,$is_entry);
       }
@@ -644,12 +657,12 @@ class environment extends plugin
 
     /* Append List to smarty*/
     if($this->multiple_support_active){
-      $smarty->assign("gotoLogonScripts",  $this->gotoLogonScripts);
-      $smarty->assign("gotoLogonScriptKeysCnt",count($this->gotoLogonScripts));
+      $smarty->assign("gotoLogonScripts",       set_post($this->gotoLogonScripts));
+      $smarty->assign("gotoLogonScriptKeysCnt", count($this->gotoLogonScripts));
     }else{
       $ls = $this->printOutLogonScripts();
-      $smarty->assign("gotoLogonScripts",  $ls);
-      $smarty->assign("gotoLogonScriptKeys",array_flip($ls));
+      $smarty->assign("gotoLogonScripts",  set_post($ls));
+      $smarty->assign("gotoLogonScriptKeys",set_post(array_flip($ls)));
       $smarty->assign("gotoLogonScriptKeysCnt",count($ls));
     }
 
@@ -658,11 +671,11 @@ class environment extends plugin
      *  and attach this combination to his setup.
      */
 
-    $smarty->assign("gotoShareSelections",    $this->gotoShareSelections);
+    $smarty->assign("gotoShareSelections",    set_post($this->gotoShareSelections));
     if(!is_array($this->gotoShareSelections)){
       $this->gotoShareSelections = array();
     }
-    $smarty->assign("gotoShareSelectionKeys", array_flip($this->gotoShareSelections));
+    $smarty->assign("gotoShareSelectionKeys", set_post(array_flip($this->gotoShareSelections)));
 
     /* if $_POST['gotoShareAdd'] is set, we will try to add a new entry 
      * This entry will be, a combination of mountPoint and sharedefinitions 
@@ -688,9 +701,9 @@ class environment extends plugin
           ){
         msg_dialog::display(_("Error"), msgPool::invalid(_("Mount point")), ERROR_DIALOG);
       }else{
-        $a_share = $this->gotoAvailableShares[$_POST['gotoShareSelection']];
-        $s_mount = $_POST['gotoShareMountPoint'];
-        $s_user  = $_POST['ShareUser'];
+        $a_share = $this->gotoAvailableShares[get_post('gotoShareSelection')];
+        $s_mount = get_post('gotoShareMountPoint');
+        $s_user  = get_post('ShareUser');
         /* Preparing the new assignment */ 
         $this->gotoShares[$a_share['name']."|".$a_share['server']]=$a_share;
         $this->gotoShares[$a_share['name']."|".$a_share['server']]['Username']=$s_user;
@@ -712,8 +725,7 @@ class environment extends plugin
         if((preg_match("/^gotoShareDel_/",$name)) && ($once)){
           $once = false;  
           $key  = preg_replace("/^gotoShareDel_/","",$name);
-          $key  = preg_replace("/_+[xy]$/","",$key);
-          $key  = base64_decode($key);
+          $key  = postDecode($key);
           if(isset($this->gotoShares[$key])) {
             unset($this->gotoShares[$key]);
           }
@@ -728,8 +740,7 @@ class environment extends plugin
         if((preg_match("/^gotoShareResetPwd_/",$name)) && ($once)){
           $once = false;
           $key  = preg_replace("/^gotoShareResetPwd_/","",$name);
-          $key  = preg_replace("/_+[xy]$/","",$key);
-          $key  = base64_decode($key);
+          $key  = postDecode($key);
           $this->gotoShares[$key]['PwdHash'] = "";
           if(preg_match("/^!/",$this->gotoShares[$key]['server'])){
             unset($this->gotoShares[$key]);
@@ -737,30 +748,23 @@ class environment extends plugin
         }
       }
     }
-    $divlistShares = new divSelectBox("gotoShares");
-    $divlistShares->SetHeight(100);
-
-
-    $tmp = array();
-    if($this->acl_is_readable("gotoShare")){
-      $tmp = $this->printOutAssignedShares();
-    }
 
-    
-    foreach($tmp as $key => $value){
+    // Build up share list
+    $data = $lData = array(); 
+    foreach($this->gotoShares as $key => $entry){
       $img = "";
 
-      /* Skip apssword only entries */
-      if( empty($this->gotoShares[$key]['server']) && 
-          empty($this->gotoShares[$key]['name']) &&
-          empty($this->gotoShares[$key]['mountPoint']) &&
-          empty($this->gotoShares[$key]['Username'])){
+      // Skip password only entries
+      if( empty($entry['server']) && empty($entry['name']) &&
+          empty($entry['mountPoint']) && empty($entry['Username'])){
         continue;
       } 
 
+      // While editing mutlipe users at once we've to seperate 
+      //  entries used by all users and those used by only some.
       $color = "";
       if($this->multiple_support_active){
-        if($this->gotoShares[$key]['UsedByAllUsers']){
+        if($entry['UsedByAllUsers']){
           $value .= "&nbsp;(<b>"._("Used by all users")."</b>)";
         }else{
           $color = "color: #999999;";
@@ -768,37 +772,44 @@ class environment extends plugin
         }
       }
 
-      /* Check if entry starts with an ! */
+      // Create password reset image button 
+      if($entry['PwdHash'] != ""){
+          $img.= 
+              image('plugins/goto/images/list_reset_password.png',
+                      'gotoShareResetPwd_'.postEncode($key),
+                      _("Reset password hash"));
+      }
+
+      // Build up list entries - Handle entries starting with '!' here.
+      $data[$key]=$key;
       if(preg_match("/^!/",$this->gotoShares[$key]['server'])){
 
-        /* If we are currently editing groups environment, skip those ! entries */ 
+        // If we are currently editing groups environment, skip those ! entries */ 
         if($this->is_group) continue;
 
-        /* Create pwd reset images */
-        if($this->gotoShares[$key]['PwdHash'] != ""){
-          $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."'");
-        $field2 = array("string" => $img   , "attach" => "style='border-right:0px;'");
+        $lData[$key] = array('data' => array(
+                    $entry['server']."://",
+                    $entry['name'], 
+                    "",
+                    "",
+                    image("plugins/groups/images/select_group.png","",_("Group share")),
+                    $img));
       }else{
 
-        /* Create pwd reset img && delete image */
-        if($this->gotoShares[$key]['PwdHash'] != ""){
-          $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/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;'");
+        $img.= image('images/lists/trash.png',"gotoShareDel_".postEncode($key),msgPool::delButton());
+        $lData[$key] = array('data' => array(
+                    $entry['server']."://",
+                    $entry['name'], 
+                    $entry['mountPoint'], 
+                    $entry['Username'], 
+                    image("plugins/users/images/select_user.png","",_("User share")),
+                    $img));
       }
-      $divlistShares->AddEntry(array($field1,$field2));
     }
-    $smarty->assign("divlistShares",$divlistShares->DrawList());
+    $this->shareList->setListData($data,$lData);
+    $this->shareList->update();
+    $this->shareList->setAcl($this->getacl("gotoShare"));
+    $smarty->assign("shareList",$this->shareList->render());
 
     /* Hotplug devices will be handled here 
      * There are 3 possible methods for this feature
@@ -808,8 +819,8 @@ class environment extends plugin
      */
 
     /* We have to delete the selected hotplug from the list*/
-    if((isset($_POST['gotoHotplugDeviceDel']))&&(isset($_POST['gotoHotplugDevice_post'])) && $this->acl_is_writeable("gotoHotplugDevice")){
-      if($this->acl_is_writeable("gotoHotplugDevice")){
+    if((isset($_POST['gotoHotplugDeviceDel']))&&(isset($_POST['gotoHotplugDevice_post'])) && $this->acl_is_writeable("gotoHotplugDeviceDN")){
+      if($this->acl_is_writeable("gotoHotplugDeviceDN")){
         foreach($_POST['gotoHotplugDevice_post'] as $name){
           unset($this->gotoHotplugDevices[$name]);
         }
@@ -817,7 +828,7 @@ class environment extends plugin
     }
 
     /* There are already defined hotplugs from other users we could use */
-    if(isset($_POST['gotoHotplugDeviceUse']) && $this->acl_is_writeable("gotoHotplugDevice")){
+    if(isset($_POST['gotoHotplugDeviceUse']) && $this->acl_is_writeable("gotoHotplugDeviceDN")){
       $tmp  =array();
       foreach($this->gotoHotplugDevices as $plugs){
         $tmp[] = $plugs['name'];
@@ -864,10 +875,10 @@ class environment extends plugin
     }
 
     if($this->multiple_support_active){
-      $smarty->assign("gotoHotplugDevices",$this->gotoHotplugDevices);
+      $smarty->assign("gotoHotplugDevices", set_post($this->gotoHotplugDevices));
     }else{
-      $smarty->assign("gotoHotplugDevices",$this->printOutHotPlugDevices());
-      $smarty->assign("gotoHotplugDeviceKeys",array_flip($this->printOutHotPlugDevices()));
+      $smarty->assign("gotoHotplugDevices", set_post($this->printOutHotPlugDevices()));
+      $smarty->assign("gotoHotplugDeviceKeys",set_post(array_flip($this->printOutHotPlugDevices())));
     }
 
     /* Printer Assignment will managed below 
@@ -913,6 +924,8 @@ class environment extends plugin
               $type = "AddUser";
             }elseif(isset($this->NewDeletedPrinters[$pname])){
               $type = "AddUser";
+            }elseif($this->dn == "new"){  
+              $type = "AddUser";
             }elseif($printerObj->by_object['printgeneric']->AddMember("AddUser",$this->dn)){
               $type = "AddUser";
             }
@@ -945,7 +958,7 @@ class environment extends plugin
 
 
     if((isset($_POST['gotoPrinterDel']))&&(isset($_POST['gotoPrinterSel']))&&(!empty($_POST['gotoPrinterSel']))){
-      $printer = $_POST['gotoPrinterSel'];
+      $printer = get_post('gotoPrinterSel');
       foreach($printer as $pname){
 
         $printerObj = new printtabs($this->config,$this->config->data['TABS']['PRINTTABS'],$this->gotoPrinter[$pname]['dn'],"printer");
@@ -978,7 +991,7 @@ class environment extends plugin
     }
 
     if((isset($_POST['gotoPrinterEdit']))&&(isset($_POST['gotoPrinterSel']))&&(!empty($_POST['gotoPrinterSel']))){
-      $printers = $_POST['gotoPrinterSel'];
+      $printers = get_post('gotoPrinterSel');
       $this->add_del_printer_member_was_called = true;
       foreach($printers as $printer){
         if($this->gotoPrinter[$printer]['mode']=="user"){
@@ -1001,7 +1014,7 @@ class environment extends plugin
       }
     }
 
-    $smarty->assign("gotoPrinter",$this->printOutPrinterDevices());
+    $smarty->assign("gotoPrinter", set_post($this->printOutPrinterDevices()));
 
     /* General behavior */
     if(is_object($this->dialog)){
@@ -1014,7 +1027,7 @@ class environment extends plugin
     foreach(array("gotoPrinter","kiosk_server","gotoProfileFlagL","gotoXResolution",
                   "useProfile","gotoProfileServer","gotoProfileQuota","gotoProfileFlagC") as $box){
       $ubox ="use_".$box;
-      if(in_array($box,$this->multi_boxes)){
+      if(in_array_strict($box,$this->multi_boxes)){
         $smarty->assign($ubox,TRUE);
       }else{
         $smarty->assign($ubox,FALSE);
@@ -1080,15 +1093,15 @@ class environment extends plugin
       $PACL =  $this->getacl("gotoProfileServer").$this->getacl("gotoProfileQuota");
 
       if(isset($_POST['kiosk_server'])){
-        $tmp = $_POST['kiosk_server'];
+        $tmp = get_post('kiosk_server');
         if(isset($this->gotoKioskProfiles['SERVERS'][$tmp])){
-          $this->gotoKioskProfile_Server = $_POST['kiosk_server'];
+          $this->gotoKioskProfile_Server = get_post('kiosk_server');
         }
       }
       if(isset($_POST['kiosk_profile'])){
-        $tmp = $_POST['kiosk_profile'];
-        if(in_array($tmp,$this->gotoKioskProfiles['BY_SERVER'][$this->gotoKioskProfile_Server])){
-          $this->gotoKioskProfile_Profile = $_POST['kiosk_profile'];
+        $tmp = get_post('kiosk_profile');
+        if(in_array_strict($tmp,$this->gotoKioskProfiles['BY_SERVER'][$this->gotoKioskProfile_Server])){
+          $this->gotoKioskProfile_Profile = get_post('kiosk_profile');
         }
       }
 
@@ -1102,7 +1115,7 @@ class environment extends plugin
 
       if($this->acl_is_writeable("gotoProfileFlagC")){
         if(isset($_POST['gotoProfileFlagC'])){
-          $this->gotoProfileFlagC = $_POST['gotoProfileFlagC'];
+          $this->gotoProfileFlagC = get_post('gotoProfileFlagC');
         }else{
           $this->gotoProfileFlagC = false;
         }
@@ -1110,7 +1123,7 @@ class environment extends plugin
 
       if($this->acl_is_writeable("gotoProfileFlagL")){
         if(isset($_POST['gotoProfileFlagL'])){
-          $this->gotoProfileFlagL = $_POST['gotoProfileFlagL'];
+          $this->gotoProfileFlagL = get_post('gotoProfileFlagL');
         }else{
           $this->gotoProfileFlagL = false;
         }
@@ -1119,12 +1132,12 @@ class environment extends plugin
       plugin::save_object();
       foreach($this->attributes as $s_attr){
         if((!isset($_POST[$s_attr])) || 
-            in_array($s_attr,array("gosaDefaultPrinter","gotoShare","gotoHotplugDevices","gotoPrinter","gotoLogonScripts","uid"))) continue;
+            in_array_strict($s_attr,array("gosaDefaultPrinter","gotoShare","gotoHotplugDevices","gotoPrinter","gotoLogonScripts","uid"))) continue;
         if(!$this->acl_is_writeable($s_attr)){
           continue;
         }else{ 
           if(isset($_POST[$s_attr])){
-            $this->$s_attr = $_POST[$s_attr];
+            $this->$s_attr = get_post($s_attr);
           }else{
             $this->$s_attr = false;
           }
@@ -1149,7 +1162,7 @@ class environment extends plugin
       $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)){
+      if((!((in_array_strict("posixAccount",$this->attrs['objectClass']))||($this->parent->by_object['posixAccount']->is_account==true)))&&(!$this->is_group)){
         $message[]= msgPool::featuresDisabled(_("environment"),_("POSIX"));  
       }
     }
@@ -1322,24 +1335,6 @@ class environment extends plugin
     $this->handle_post_events($mode,array("uid"=>$this->uid));
   }
 
-  /* Generate ListBox frindly output for the defined shares 
-   * Possibly Add or remove an attribute here, 
-   */
-  function printOutAssignedShares()
-  {
-    $a_return = array();
-    if(is_array($this->gotoShares)){
-      foreach($this->gotoShares as $share){
-        if(preg_match("/^!/",$share['server'])){
-          $a_return[$share['name']."|".$share['server']]= preg_replace("/^!/","",$share['server'])."://".$share['name']." - "._("group share"); 
-        }else{
-          $a_return[$share['name']."|".$share['server']]= $share['server']."://".$share['name']." on ".$share['mountPoint']." as ".$share['Username'];
-        }
-      }
-      natcasesort($a_return);
-    }
-    return($a_return);
-  }
 
   /* Generate ListBox frindly output for the definedhotplugs 
    * Possibly Add or remove an attribute here,
@@ -1394,8 +1389,8 @@ class environment extends plugin
   function saveCopyDialog()
   {
     if(isset($_POST['cn'])){
-      $this->cn = $_POST['cn'];
-      $this->uid = $_POST['cn'];
+      $this->cn = get_post('cn');
+      $this->uid = get_post('cn');
     }
   }
 
@@ -1671,7 +1666,7 @@ class environment extends plugin
     $ret['gotoLogonScripts'] = $this->gotoLogonScripts;
     $ret['gotoHotplugDevices'] = $this->gotoHotplugDevices;
   
-    if(in_array("gotoPrinter",$this->multi_boxes)){
+    if(in_array_strict("gotoPrinter",$this->multi_boxes)){
       $ret['gotoPrinter'] = $this->gotoPrinter;
       $ret['gotoPrinterSel'] = $this->gotoPrinterSel;
       $ret['gosaDefaultPrinter'] = $this->gosaDefaultPrinter;
@@ -1680,26 +1675,26 @@ class environment extends plugin
       $ret['add_del_printer_member_was_called'] = TRUE;
     }
   
-    if(in_array("gotoProfileFlagL",$this->multi_boxes)){
+    if(in_array_strict("gotoProfileFlagL",$this->multi_boxes)){
       $ret['gotoProfileFlagL'] = $this->gotoProfileFlagL;
     }
 
-    if(in_array("useProfile",$this->multi_boxes)){
+    if(in_array_strict("useProfile",$this->multi_boxes)){
       $ret['useProfile']=$this->useProfile;
-      if(in_array("gotoProfileServer",$this->multi_boxes)){
+      if(in_array_strict("gotoProfileServer",$this->multi_boxes)){
         $ret['gotoProfileServer']=$this->gotoProfileServer;
       }
-      if(in_array("gotoProfileQuota",$this->multi_boxes)){
+      if(in_array_strict("gotoProfileQuota",$this->multi_boxes)){
         $ret['gotoProfileQuota']=$this->gotoProfileQuota;
       }
-      if(in_array("gotoProfileFlagC",$this->multi_boxes)){
+      if(in_array_strict("gotoProfileFlagC",$this->multi_boxes)){
         $ret['gotoProfileFlagC'] = $this->gotoProfileFlagC;
       }
     }
-    if(in_array("gotoXResolution",$this->multi_boxes)){
+    if(in_array_strict("gotoXResolution",$this->multi_boxes)){
       $ret['gotoXResolution'] = $this->gotoXResolution;
     }
-    if(in_array("kiosk_server",$this->multi_boxes)){
+    if(in_array_strict("kiosk_server",$this->multi_boxes)){
       $ret['gotoKioskProfile_Server'] = $this->gotoKioskProfile_Server;
       $ret['gotoKioskProfile_Profile'] = $this->gotoKioskProfile_Profile;
     }
@@ -1712,7 +1707,7 @@ class environment extends plugin
     $message = plugin::multiple_check();
     $this->detect_grouptype();
 
-    if(preg_match("/[^0-9]/",$this->gotoProfileQuota) && in_array("gotoProfileQuota",$this->multi_boxes)) {
+    if(preg_match("/[^0-9]/",$this->gotoProfileQuota) && in_array_strict("gotoProfileQuota",$this->multi_boxes)) {
       $message[] = msgPool::invalid(_("Profile quota"),$this->gotoProfileQuota,"/[0-9]/") ;
     }
     return($message);
@@ -1730,13 +1725,13 @@ class environment extends plugin
         $this->useProfile = false;
       }
       if(isset($_POST['gotoProfileFlagC'])){
-        $this->gotoProfileFlagC = $_POST['gotoProfileFlagC'];
+        $this->gotoProfileFlagC = get_post('gotoProfileFlagC');
       }else{
         $this->gotoProfileFlagC = false;
       }
 
       if(isset($_POST['gotoProfileFlagL'])){
-        $this->gotoProfileFlagL = $_POST['gotoProfileFlagL'];
+        $this->gotoProfileFlagL = get_post('gotoProfileFlagL');
       }else{
         $this->gotoProfileFlagL = false;
       }
@@ -1749,15 +1744,15 @@ class environment extends plugin
         }
       }
       if(isset($_POST['kiosk_server'])){
-        $tmp = $_POST['kiosk_server'];
+        $tmp = get_post('kiosk_server');
         if(isset($this->gotoKioskProfiles['SERVERS'][$tmp])){
-          $this->gotoKioskProfile_Server = $_POST['kiosk_server'];
+          $this->gotoKioskProfile_Server = get_post('kiosk_server');
         }
       }
       if(isset($_POST['kiosk_profile'])){
-        $tmp = $_POST['kiosk_profile'];
-        if(in_array($tmp,$this->gotoKioskProfiles['BY_SERVER'][$this->gotoKioskProfile_Server])){
-          $this->gotoKioskProfile_Profile = $_POST['kiosk_profile'];
+        $tmp = get_post('kiosk_profile');
+        if(in_array_strict($tmp,$this->gotoKioskProfiles['BY_SERVER'][$this->gotoKioskProfile_Server])){
+          $this->gotoKioskProfile_Profile = get_post('kiosk_profile');
         }
       }
 
@@ -1768,31 +1763,59 @@ class environment extends plugin
 #FIXME these ACLs should work for groups too */ 
   static function plInfo()
   {
-    return (array("plShortName"     => _("Environment"),
-          "plDescription"   => _("Environment settings"),         // Description
-          "plSelfModify"    => TRUE,                              
-          "plDepends"       => array("user", "posixAccount"),     // This plugin depends on 
-          "plPriority"      => 3,                                 // Position in tabs 
-          "plSection"     => array("personal" => _("My account")),
-          "plCategory"    => array("users",
-                                   "groups"),
-          "plOptions"       => array("resolution_hook" => array("type" => "string",
-              "description" => _("Command to extend the list of possible screen resolutions"))),
-
-          "plProvidedAcls"  => array(
-
-            "gotoPrinter"         => _("Printer") ,
-            "gotoProfileServer"   => _("Profile server") ,
-            "gosaDefaultPrinter"  => _("Default printer"),
-            "gotoProfileQuota"    => _("Profile quota") ,
-            "gotoProfileFlagC"    => _("Cache profile localy") ,
-            "gotoShare"          => _("Shares"),
-            "gotoHotplugDeviceDN" => _("Hotplug devices"),
-            "gotoKioskProfile"    => _("Kiosk profile") ,
-            "gotoProfileFlagL"    => _("Resolution changeable during session") ,
-            "gotoXResolution"     => _("Resolution") ,
-            "gotoLogonScript"     => _("Logon script"))
-            ));
+      return (array("plShortName"     => _("Desktop"),
+                  "plDescription"   => _("Desktop settings"),         // Description
+                  "plSelfModify"    => TRUE,                              
+                  "plDepends"       => array("user", "posixAccount"),     // This plugin depends on 
+                  "plPriority"      => 3,                                 // Position in tabs 
+                  "plSection"     => array("personal" => _("My account")),
+                  "plCategory"    => array("users",
+                      "groups","ogroups"),
+                  "plOptions"       => array("resolution_hook" => array("type" => "string",
+                          "description" => _("Command to extend the list of possible screen resolutions"))),
+                  "plRequirements"=> array(
+                      'ldapSchema' => array('gotoEnvironment' => '>=2.7'),
+                      'onFailureDisablePlugin' => array(get_class())
+                      ),
+                  "plProperties" => array(
+
+                      array(
+                          "name"          => "resolutions",
+                          "type"          => "file",
+                          "default"       => "",
+                          "description"   => _("File containing additional resolutions for workstations and thin clients."),
+                          "check"         => "gosaProperty::isReadableFile",
+                          "migrate"       => "",
+                          "group"         => "environment",
+                          "mandatory"     => FALSE
+                          ),
+                      array(
+                          "name"          => "kioskPath",
+                          "type"          => "path",
+                          "default"       => "/var/spool/kiosk",
+                          "description"   => _("Directory to store KDE kiosk profiles."),
+                          "check"         => "gosaProperty::isWriteablePath",
+                          "migrate"       => "",
+                          "group"         => "environment",
+                          "mandatory"     => FALSE
+                          )
+                      ),
+
+
+                  "plProvidedAcls"  => array(
+
+                          "gotoPrinter"         => _("Printer") ,
+                          "gotoProfileServer"   => _("Profile server") ,
+                          "gosaDefaultPrinter"  => _("Default printer"),
+                          "gotoProfileQuota"    => _("Profile quota") ,
+                          "gotoProfileFlagC"    => _("Cache profile locally") ,
+                          "gotoShare"          => _("Shares"),
+                          "gotoHotplugDeviceDN" => _("Hot-plug devices"),
+                          "gotoKioskProfile"    => _("Kiosk profile") ,
+                          "gotoProfileFlagL"    => _("Resolution changeable during session") ,
+                          "gotoXResolution"     => _("Resolution") ,
+                          "gotoLogonScript"     => _("Log on script"))
+                      ));
   }
 }