X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fadmin%2Fsystems%2Fclass_printGeneric.inc;h=a8843d920550ae492647e4e60614122cd63d7649;hb=38e36135b451936d249b671857b133a7d55b7360;hp=3b88fc2250e6aec86c7eccf7ebe9a180ff9138ee;hpb=0795a0579c9acf458d2f7f9186343734d7caea9e;p=gosa.git diff --git a/plugins/admin/systems/class_printGeneric.inc b/plugins/admin/systems/class_printGeneric.inc index 3b88fc225..a8843d920 100644 --- a/plugins/admin/systems/class_printGeneric.inc +++ b/plugins/admin/systems/class_printGeneric.inc @@ -32,6 +32,8 @@ class printgeneric extends plugin var $AdminMemberKeys =array(); var $is_terminalBased = false; + + var $PPDdialogToSave = NULL; var $member =array(); var $strings = ""; @@ -57,6 +59,9 @@ class printgeneric extends plugin $this->base= preg_replace ("/^[^,]+,[^,]+,[^,]+,/", "", $this->dn); } + if(isset($this->gotoPrinterPPD)){ + $this->gotoPrinterPPD = preg_replace("/^http.*ppd\//i","",$this->gotoPrinterPPD); + } /* In case of gotoWorkstation this tab is calles from workstation plugin * in case of gotoTerminal it is called from a terminal tab @@ -115,7 +120,9 @@ class printgeneric extends plugin /* $this->members contains all members */ $this->member[$type]=array(); - unset($this->attrs[$attr]['count']); + if (isset($this->attrs[$attr]['count'])) { + unset($this->attrs[$attr]['count']); + } if(isset($this->attrs[$attr])){ foreach($this->attrs[$attr] as $mem){ @@ -156,6 +163,9 @@ class printgeneric extends plugin function execute() { + /* Call parent execute */ + plugin::execute(); + $smarty= get_smarty(); $display=""; /* Template management. @@ -245,22 +255,34 @@ class printgeneric extends plugin } if(isset($_POST['EditDriver'])){ - $this->dialog = new printerPPDDialog($this->config, $this->dn,$this->gotoPrinterPPD); + if($this->PPDdialogToSave){ + $this->dialog = $this->PPDdialogToSave; + }else{ + $this->dialog = new printerPPDDialog($this->config, $this->dn,$this->gotoPrinterPPD); + } } if(isset($_POST['PrinterCancel'])){ unset($this->dialog); $this->dialog= NULL; } + + if(isset($_POST['RemoveDriver'])){ + $this->gotoPrinterPPD = array(); + $this->PPDdialogToSave = NULL; + } if(isset($_POST['SavePPD'])){ + $this->dialog->save_object(); if(count($this->dialog->check())){ foreach($this->dialog->check() as $msg){ print_red($msg); } }else{ $this->gotoPrinterPPD = array(); + $this->gotoPrinterPPD = $this->dialog->save(); + $this->PPDdialogToSave = $this->dialog; unset($this->dialog); $this->dialog=NULL; } @@ -272,6 +294,8 @@ class printgeneric extends plugin $this->dialog=NULL; } + + if((isset($_POST['DelUser']))&&(isset($_POST['UserMember']))){ if(isset($this->member['AddUser'][$_POST['UserMember']])){ unset($this->member['AddUser'][$_POST['UserMember']]); @@ -291,7 +315,7 @@ class printgeneric extends plugin } if((isset($_POST['DelAdmin']))&&(isset($_POST['AdminMember']))){ - if(isset($this->member['AddAdmingroup'][$_POST['AdminMember']])){ + if(isset($this->member['AddAdminGroup'][$_POST['AdminMember']])){ unset($this->member['AddAdminGroup'][$_POST['AdminMember']]); } } @@ -322,6 +346,7 @@ class printgeneric extends plugin } if($this->dialog != NULL){ + $this->dialog->save_object(); $display = $this->dialog->execute(); return $display; } @@ -331,13 +356,23 @@ class printgeneric extends plugin require_once ("class_ppdManager.inc"); - $ppdManager= new ppdManager('/var/spool/ppd/'); - if(!empty($this->gotoPrinterPPD)){ - $smarty->assign("driverInfo", $ppdManager->loadDescription($this->gotoPrinterPPD)); + + if((isset($_SESSION['config']->data['MAIN']['PPD_PATH']))&&(is_dir($_SESSION['config']->data['MAIN']['PPD_PATH']))){ + $ppdManager= new ppdManager($_SESSION['config']->data['MAIN']['PPD_PATH']); + if(!empty($this->gotoPrinterPPD)){ + if((!file_exists($_SESSION['config']->data['MAIN']['PPD_PATH'].$this->gotoPrinterPPD))){ + $smarty->assign("driverInfo", "".sprintf(_("Your currently selected PPD file '%s' doesn't exist."),$this->gotoPrinterPPD)).""; + }else{ + $smarty->assign("driverInfo", $ppdManager->loadDescription($_SESSION['config']->data['MAIN']['PPD_PATH'].$this->gotoPrinterPPD)); + } + }else{ + $smarty->assign("driverInfo", _("not defined")); + } }else{ - $smarty->assign("driverInfo", _("Undefined")); + $smarty->assign("driverInfo",_("can't get ppd informations.")); } + $list=$this->generateList(); $userlist = array_merge($list['AddUser'],$list['AddGroup']); $adminlist = array_merge($list['AddAdminUser'],$list['AddAdminGroup']); @@ -437,7 +472,10 @@ class printgeneric extends plugin if (!$this->is_account){ return; } - + + if($this->PPDdialogToSave){ + $this->PPDdialogToSave->save_ppd(); + } $dn= $this->dn; plugin::save(); $ldap= $this->config->get_ldap_link(); @@ -478,6 +516,16 @@ class printgeneric extends plugin $this->attrs= $attrs; } + if(preg_match("/https/i",$_SERVER['HTTP_REFERER'])){ + $method="https://"; + }else{ + $method="http://"; + } + + if(!is_array($this->attrs['gotoPrinterPPD'])) { + $this->attrs['gotoPrinterPPD'] = $this->attrs['gotoPrinterPPD']; + $this->attrs['gotoPrinterPPD'] = $method.str_replace("//","/",$_SERVER['SERVER_NAME']."/ppd/".$this->attrs['gotoPrinterPPD']); + } /* Append printer user */