diff --git a/plugins/personal/environment/class_environment.inc b/plugins/personal/environment/class_environment.inc
index c4fea2011e7c83b57bf3fba79c395c8179eb1277..59be3400076a91950515821d18d0080fc69d1d98 100644 (file)
"gotoLogonScripts","gotoLogonScript",
"gotoPrinter", "gosaDefaultPrinter",
"gotoShares","gotoShare",
- "gotoKioskProfile","gotoKioskProfiles",
- "gotoHotplugDevice");
+ "gotoKioskProfile","gotoKioskProfiles"
+ );
var $objectclasses = array("gotoEnvironment"); // Specifies the objectClass which contains the attributes edited here
var $cn;
var $OrigCn;
$tmp2['name'] = $tmp[0];
$tmp2['description'] = $tmp[1];
$tmp2['id'] = $tmp[2];
+
+ /* Produkt ID */
+ if(!isset($tmp[3])){
+ $tmp[3] = "";
+ }
+ /* Vendor ID */
+ if(!isset($tmp[4])){
+ $tmp[4] = "";
+ }
+
+ $tmp2['produkt'] = $tmp[3];
+ $tmp2['vendor'] = $tmp[4];
+
$this->gotoHotplugDevices[$tmp[0]]=$tmp2;
}
}
$tmp2['name'] =$tmp[1];
$tmp2['mountPoint'] =$tmp[2];
if(isset($tmp[3])){
- $tmp2['OtherStuff'] =$tmp[3];
+ $tmp2['PwdHash'] =$tmp[3];
}else{
- $tmp2['OtherStuff'] ="";
+ $tmp2['PwdHash'] ="";
}
if(isset($tmp[4])){
$tmp2['Username'] =$tmp[4];
$this->dialog=NULL;
$this->is_dialog = false;
}
- $tmp = new kioskManagementDialog($this->config,$this->dn);
- $list = $tmp->getKioskProfiles($this->newKioskProfiles);
-
- $list['none']=_("None");
-
- $list = array_reverse($list);
-
- if(!isset($list[$this->gotoKioskProfile])){
- print_red(sprintf(_("The selected kiosk profile '%s' is no longer available, setting current profile to 'none'."),$this->gotoKioskProfile));
- $this->gotoKioskProfile = 'none';
- }
/* Reassign help class */
$_SESSION['current_class_for_help'] = get_class($this);
$this->dialog->acl = $this->acl;
$this->is_dialog = true;
}
-
+ $tmp = new kioskManagementDialog($this->config,$this->dn);
+ $list = $tmp->getKioskProfiles($this->newKioskProfiles);
+ $list['none']=_("None");
+ $list = array_reverse($list);
$smarty->assign("gotoKioskProfiles",$list);
$smarty->assign("gotoKioskProfileKeys",array_flip($list));
/* 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;
- $this->gotoShares[$a_share['name']."|".$a_share['server']]['OtherStuff']="";
+ $this->gotoShares[$a_share['name']."|".$a_share['server']]['PwdHash']="";
$this->gotoShares[$a_share['name']."|".$a_share['server']]['mountPoint']=$s_mount;
}
}
/* if the Post gotoShareDel is set, someone asked GOsa to delete the selected entry (if there is one selected)
* If there is no defined share selected, we will abort the deletion without any message
*/
- if((isset($_POST['gotoShareDel']))&&(isset($_POST['gotoShare']))){
- unset($this->gotoShares[$_POST['gotoShare']]);
+ $once = true;
+ foreach($_POST as $name => $value){
+ if((preg_match("/^gotoShareDel_/",$name)) && ($once)){
+ $once = false;
+ $key = preg_replace("/^gotoShareDel_/","",$name);
+ $key = preg_replace("/_+[xy]$/","",$key);
+ $key = preg_replace("/_/", ".", $key);
+
+ if(isset($this->gotoShares[$key])) {
+ unset($this->gotoShares[$key]);
+ }
+
+ /* Remove corresponding password entry, too. This is a workaround
+ to get rid of old-style entries. */
+ $key= preg_replace("/\|/", "|!", $key);
+ if(isset($this->gotoShares[$key])) {
+ unset($this->gotoShares[$key]);
+ }
+ }
+ if((preg_match("/^gotoShareResetPwd_/",$name)) && ($once)){
+ $once = false;
+ $key = preg_replace("/^gotoShareResetPwd_/","",$name);
+ $key = preg_replace("/_+[xy]$/","",$key);
+ $key = preg_replace("/_/", ".", $key);
+ $this->gotoShares[$key]['PwdHash'] = "";
+ }
}
- $smarty->assign("gotoShares",$this->printOutAssignedShares());
- $smarty->assign("gotoShareKeys",array_flip($this->printOutAssignedShares()));
+ $divlistShares = new divSelectBox("gotoShares");
+ $divlistShares->SetHeight(100);
+ $tmp = $this->printOutAssignedShares();
+
+ foreach($tmp as $key => $value){
+ $img = "";
+
+ /* Check if entry starts with an ! */
+ if(preg_match("/^!/",$this->gotoShares[$key]['server'])){
+
+ /* 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_".$key." 'src='images/list_reset_password.png' alt='"._("Reset password hash")."'
+ title='"._("Reset password hash")."'>";
+ }
+ $field1 = array("string" => "<font style=\"color:#C0C0C0\">".$value."</font>" );
+ $field2 = array("string" => $img , "attach" => "style='border-right:0px;'");
+ }else{
+
+ /* Create pwd reset img && delete image */
+ if($this->gotoShares[$key]['PwdHash'] != ""){
+ $img.= "<input type='image' name='gotoShareResetPwd_".$key." 'src='images/list_reset_password.png' alt='"._("Reset password hash")."'
+ title='"._("Reset password hash")."'>";
+ $img.= " ";
+ }
+ $img.= "<input type='image' name='gotoShareDel_".$key." 'src='images/edittrash.png' alt='"._("Delete")."'
+ title='"._("Delete share entry")."'>";
+ $field1 = array("string" => $value);
+ $field2 = array("string" => $img , "attach" => "style='border-right:0px;'");
+ }
+ $divlistShares->AddEntry(array($field1,$field2));
+ }
+ $smarty->assign("divlistShares",$divlistShares->DrawList());
/* Hotplug devices will be handled here
* There are 3 possible methods for this feature
/* We have to delete the selected hotplug from the list*/
if((isset($_POST['gotoHotplugDeviceDel']))&&(isset($_POST['gotoHotplugDevice']))){
- unset($this->gotoHotplugDevices[$_POST['gotoHotplugDevice']]);
+ foreach($_POST['gotoHotplugDevice'] as $name){
+ unset($this->gotoHotplugDevices[$name]);
+ }
}
/* There are already defined hotplugs from other users we could use */
if(isset($_POST['gotoHotplugDeviceUse'])){
- $this->dialog = new hotplugDialog($this->config,$this->dn,true);
+ $tmp =array();
+ foreach($this->gotoHotplugDevices as $plugs){
+ $tmp[] = $plugs['name'];
+ }
+ $this->dialog = new hotplugDialog($this->config,$this->dn,true,$tmp);
$this->is_dialog = true;
}
}else{
$this->dialog->save_object();
$a_tmp = $this->dialog->save();
+
if(is_array($a_tmp)){
- $this->gotoHotplugDevices[$a_tmp['name']]= $a_tmp;
+ foreach($a_tmp as $name => $hotplug){
+ $this->gotoHotplugDevices[$name]= $hotplug;
+ }
}
unset($this->dialog);
$this->dialog= NULL;
/* General behavior */
if((isset($this->dialog))&&($this->dialog!=NULL)&&(!empty($this->dialog))){
$this->dialog->save_object();
- return ($this->dialog->execute());
+ $disp =$this->dialog->execute();
+
+ $tmp = new kioskManagementDialog($this->config,$this->dn);
+ $list = $tmp->getKioskProfiles($this->newKioskProfiles);
+ $list['none']=_("None");
+ $list = array_reverse($list);
+ if(!isset($list[$this->gotoKioskProfile])){
+ print_red(sprintf(_("The selected kiosk profile '%s' is no longer available, setting current profile to 'none'."),$this->gotoKioskProfile));
+ $this->gotoKioskProfile = 'none';
+ }
+ return($disp);
}
if($this->acl != "#none#"){
$smarty->assign("useProfileACL","");
/* Als smarty vars are set. Get smarty template and generate output */
$display.= $smarty->fetch(get_template_path('environment.tpl', TRUE,dirname(__FILE__)));
-
return($display);
}
$this->cleanup();
$ldap->modify ($this->attrs);
- show_ldap_error($ldap->get_error(), _("Removing environment information failed"));
+ show_ldap_error($ldap->get_error(), sprintf(_("Removing of user/environment account with dn '%s' failed."),$this->dn));
/* Optionally execute a command after we're done */
$this->handle_post_events("remove");
/* Remove normal entries (User)*/
if(isset($attr['goto'.$s_suffix.'Printer'])) {
+ unset($attr['goto'.$s_suffix.'Printer']['count']);
foreach($attr['goto'.$s_suffix.'Printer'] as $key => $user){
if($this->uid==$user){
unset($attr['goto'.$s_suffix.'Printer'][$key]);
}
- }
+ }
+ $tmp = array();
+ foreach($attr['goto'.$s_suffix.'Printer'] as $user){
+ $tmp[] = $user;
+ }
+ $attr['goto'.$s_suffix.'Printer'] = array();
+ $attr['goto'.$s_suffix.'Printer'] = $tmp;
}
/* Remove administrational entries (Admin)*/
if(isset($attr['goto'.$s_suffix.'AdminPrinter'])){
+ unset($attr['goto'.$s_suffix.'AdminPrinter']['count']);
foreach($attr['goto'.$s_suffix.'AdminPrinter'] as $key => $user){
if($this->uid==$user){
unset($attr['goto'.$s_suffix.'AdminPrinter'][$key]);
}
}
+ $tmp = array();
+ foreach($attr['goto'.$s_suffix.'AdminPrinter'] as $user){
+ $tmp[] = $user;
+ }
+ $attr['goto'.$s_suffix.'AdminPrinter'] = array();
+ $attr['goto'.$s_suffix.'AdminPrinter'] = $tmp;
}
/* Extract useable tags, to be able to save all changes
/* Save changes */
$ldap->cd($attr['dn']);
+ $dn = $attr['dn'];
unset($attr['dn']);
-$ldap->modify ($attr);
-
- if($ldap->get_error()!="Success"){
- print_red(_("Error while writing printer")." : ".$ldap->get_error());
- }
+
+ $ldap->modify ($attr);
+ show_ldap_error($ldap->get_error(),sprintf(_("Saving printer membership with dn %s failed "),$dn));
}
/* All printers are cleaned, (our cn/uid removed)
/* Prepare HotPlug devices */
$this->attrs['gotoHotplugDevice'] = array();
foreach($this->gotoHotplugDevices as $name => $device){
- $this->attrs['gotoHotplugDevice'][] = $device['name']."|".$device['description']."|".$device['id'];
+ $this->attrs['gotoHotplugDevice'][] = $device['name']."|".$device['description']."|".$device['id'].
+ "|".$device['produkt']."|".$device['vendor'];
}
/* Prepare LogonScripts */
/* Prepare Shares */
$this->attrs['gotoShare']=array();
foreach($this->gotoShares as $name => $share){
- $this->attrs['gotoShare'][] =$share['server']."|".$share['name']."|".$share['mountPoint']."|".$share['OtherStuff']."|".$share['Username'];
+ $this->attrs['gotoShare'][] =$share['server']."|".$share['name']."|".$share['mountPoint']."|".$share['PwdHash']."|".$share['Username'];
}
$ldap->cd($this->dn);
$this->cleanup();
$ldap->$mode($this->attrs);
- show_ldap_error($ldap->get_error(), _("Adding environment information failed"));
+ show_ldap_error($ldap->get_error(), sprintf(_("Saving of user/environment account with dn '%s' failed."),$this->dn));
$this->handle_post_events($mode);
}
$a_return = array();
if(is_array($this->gotoShares)){
foreach($this->gotoShares as $share){
- if (!preg_match('/^!/', $share['server'])){
+ 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);
}