X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-plugins%2Ffai%2Fadmin%2Ffai%2Fclass_faiPackage.inc;h=acabf1c97d4f7d0483052399abc211bddfcf027c;hb=8cd748822ec15f04dd8a97616de7c6ee2c7826e1;hp=88fb15dc02268bb1c8cf4c00004457a2dd5380e3;hpb=c8f24c8399d96b407833e1d56c8ac2fd66cdc5c9;p=gosa.git diff --git a/gosa-plugins/fai/admin/fai/class_faiPackage.inc b/gosa-plugins/fai/admin/fai/class_faiPackage.inc index 88fb15dc0..acabf1c97 100644 --- a/gosa-plugins/fai/admin/fai/class_faiPackage.inc +++ b/gosa-plugins/fai/admin/fai/class_faiPackage.inc @@ -47,6 +47,8 @@ class faiPackage extends plugin var $base; var $FAIpackage ; + var $packageSelect ; + var $FAIinstallMethods = array( "install", "ninstall", "remove", "dselect-upgrade", "taskinst", "taskrm", "hold", "clean", "aptitude", "aptitude-r", @@ -148,6 +150,16 @@ class faiPackage extends plugin /* Generate package list */ $this->list= $this->genPkgs(TRUE); + + // Prepare lists + $this->packageList = new sortableListing(); + $this->packageList->setDeleteable(false); + $this->packageList->setEditable(false); + $this->packageList->setWidth("100%"); + $this->packageList->setHeight("200px"); + $this->packageList->setColspecs(array('20px','*','*','100px','60px')); + $this->packageList->setHeader(array(_("Status"),_("Name"),_("Description"),_("Version"))); + $this->packageList->setDefaultSortColumn(1); } @@ -175,7 +187,7 @@ class faiPackage extends plugin $release = $this->parent->parent->fai_release; $tmp= preg_replace('/[,]*'.preg_quote(get_ou('faiBaseRDN'), '/').'.*$/i', '', $release); $tmp= preg_replace('/ou=/', '', $tmp); - $rev= array_reverse(split(',', $tmp)); + $rev= array_reverse(explode(',', $tmp)); $this->FAIdebianRelease= "/"; foreach ($rev as $part){ $this->FAIdebianRelease.= "/$part"; @@ -271,12 +283,46 @@ class faiPackage extends plugin } } - /* + was pressed to open the package dialog */ - if(isset($_POST['Addpkg']) && - $this->acl_is_writeable("FAIpackage") && - !preg_match("/freeze/",$this->FAIstate)){ - $this->dialog = new faiPackageEntry($this->config, $this->FAIdebianRelease,$this->usedPackages); - $this->is_dialog =true; + // Open the packageSelect dialog to allow adding packages out of a list. + if(isset($_POST['Addpkg']) && $this->acl_is_writeable("FAIpackage") && !preg_match("/freeze/",$this->FAIstate)){ + $this->packageSelect = new packageSelect($this->config, get_userinfo()); + session::set('packageSelect_Release',$this->FAIdebianRelease); + $this->dialog =true; + } + + // Close packageSelect dialog. + if(isset($_POST['packageSelect_cancel'])){ + $this->packageSelect = FALSE; + $this->dialog =FALSE; + } + + // Close packageSelect dialog and add the selected packages. + if(isset($_POST['packageSelect_save']) && $this->packageSelect instanceOf packageSelect){ + if(!preg_match("/freeze/i", $this->FAIstate)){ + $use = $this->packageSelect->save(); + + foreach($use as $pkg){ + $item = array(); + for($i =0; $i < $pkg['count']; $i++){ + $item[$pkg[$i]] = $pkg[$pkg[$i]][0]; + } + $this->usedPackages[$item['PACKAGE']] = $item['PACKAGE']; + } + + ksort($this->usedPackages); + + /* Generate package list */ + $this->list= $this->genPkgs(TRUE); + } + $this->packageSelect = FALSE; + $this->dialog =FALSE; + } + + // Display package add dialog + if($this->packageSelect instanceOf packageSelect){ + + session::set('filterBlacklist', array('PACKAGE' => $this->usedPackages)); + return $this->packageSelect->execute(); } @@ -289,7 +335,7 @@ class faiPackage extends plugin ******/ if(!preg_match('/freeze/i', $this->FAIstate) && preg_match("/^removal_package_/",$name)){ - $id = @base64_decode(preg_replace("/^removal_package_(.*)_[xy]*$/","\\1",$name)); + $id = @postDecode(preg_replace("/^removal_package_(.*)$/","\\1",$name)); if(isset($this->usedPackages[$id])){ $pkg = $this->usedPackages[$id]; if (preg_match('/\-$/', $pkg)){ @@ -306,7 +352,7 @@ class faiPackage extends plugin * Delete Pkgs ******/ if(!preg_match('/freeze/i', $this->FAIstate) && preg_match("/^remove_package_/",$name)){ - $id = @base64_decode(preg_replace("/^remove_package_(.*)_[xy]*$/","\\1",$name)); + $id = @postDecode(preg_replace("/^remove_package_(.*)$/","\\1",$name)); if(isset($this->usedPackages[$id])){ unset($this->usedPackages[$id]); } @@ -317,7 +363,7 @@ class faiPackage extends plugin * Configure Pkgs ******/ if(!preg_match('/freeze/i', $this->FAIstate) && preg_match("/^configure_package_/",$name)){ - $pkg = @base64_decode(preg_replace("/^configure_package_(.*)_[xy]*$/","\\1",$name)); + $pkg = @postDecode(preg_replace("/^configure_package_(.*)$/","\\1",$name)); if(isset($this->usedPackages[$pkg])){ @@ -339,30 +385,6 @@ class faiPackage extends plugin $this->is_dialog=false; } - /* attach new packages */ - if(isset($_POST['SaveSubObject'])) { - if(!preg_match("/freeze/i", $this->FAIstate)){ - $this->dialog->save_object(); - if(count($this->dialog->check())){ - foreach($this->dialog->check() as $msgs){ - msg_dialog::display(_("Error"), $msgs, ERROR_DIALOG); - } - }else{ - $use = $this->dialog->save(); - $this->usedPackages = $use; - $this->dialog = false; - $this->is_dialog=false; - ksort($this->usedPackages); - - /* Generate package list */ - $this->list= $this->genPkgs(TRUE); - } - }else{ - $this->dialog = false; - $this->is_dialog=false; - } - } - /* Save Configuration */ if(isset($_POST['SaveObjectConfig'])){ if(!preg_match("/^freeze/", $this->FAIstate)){ @@ -389,65 +411,61 @@ class faiPackage extends plugin * Display UI / HTML / smarty ******/ - /* Create divlist to display a list of all currently used packages + /* Create list to display a list of all currently used packages */ - $divlist = new divSelectBox("faiPackages"); - - ksort($this->usedPackages); + $data = $lData = array(); if(is_array($this->usedPackages)){ - foreach($this->usedPackages as $usedName => $name){ - - $actions = ""; + foreach($this->usedPackages as $usedName => $name){ - /* Append message if package is configured */ - $configured = " "; - if(isset($this->ConfiguredPackages[$usedName])){ - $configured = ""._("Configured").""; - } + /* Append message if package is configured */ + $configured = image('images/empty.png'); + if(isset($this->ConfiguredPackages[$usedName])){ + $configured = image('plugins/fai/images/package_configure.png','',_("Configured")); + } - /* Adapt used name if we're marked for removal */ - $removal = " "; - if (preg_match('/\-$/', $name)){ - $removal = ""._("Package marked for removal").""; - } + /* Adapt used name if we're marked for removal */ + $removal = image('images/empty.png'); + if (preg_match('/\-$/', $name)){ + $removal = image('plugins/fai/images/removal_mark.png','',_("Package marked for removal")); + } - /* Get Version */ - $version = " "; - if(isset($this->list[$usedName]['VERSION'])){ - $version = $this->list[$usedName]['VERSION']; - } - - /* Get description */ - $description = " "; - if(isset($this->list[$usedName]['DESCRIPTION'])){ - $description = base64_decode($this->list[$usedName]['DESCRIPTION']); - } - - if(!preg_match('/^freeze/', $this->FAIstate) && $this->acl_is_writeable("FAIpackage")){ - $actions = ""; - } + /* Get Version */ + $version = ""; + if(isset($this->list[$usedName]['VERSION'])){ + $version = $this->list[$usedName]['VERSION']; + } - if(isset($this->list[$usedName]['TEMPLATE']) && - !preg_match('/^freeze/', $this->FAIstate) && $this->acl_is_writeable("FAIdebconfInfo")){ - $actions.= " "; - } - if(!preg_match('/^freeze/', $this->FAIstate) && $this->acl_is_writeable("FAIpackage")){ - $actions.= " "; - } + /* Get description */ + $description = ""; + if(isset($this->list[$usedName]['DESCRIPTION'])){ + $description = base64_decode($this->list[$usedName]['DESCRIPTION']); + } - $field1 = array("string" => $configured." ".$removal,"attach" => "style='width:40px;'"); - $field2 = array("string" => $usedName ,"attach" => "style='width:200px;'"); - $field3 = array("string" => $version); - $field4 = array("string" => $description); - $field5 = array("string" => $actions ,"attach" => "style='width:60px; border-right:0px;'"); - $divlist->AddEntry(array($field1,$field2,$field3,$field4,$field5)); - } + $actions= image('plugins/fai/images/removal_mark.png', + 'removal_package_'.postEncode($usedName), + _("Mark package for removal")); + + if(isset($this->list[$usedName]['TEMPLATE']) && + !preg_match('/^freeze/', $this->FAIstate) && $this->acl_is_writeable("FAIdebconfInfo")){ + $actions.= image('plugins/fai/images/package_configure.png', + 'configure_package_'.postEncode($usedName), + _("Configure this package")); + } + if(!preg_match('/^freeze/', $this->FAIstate) && $this->acl_is_writeable("FAIpackage")){ + $actions.= image('images/lists/trash.png', + 'remove_package_'.postEncode($usedName), + _("Remove this package")); + } + $data[$usedName] = $usedName; + $lData[$usedName] = array('data'=> + array( + $configured." ".$removal, + $usedName ,$version,htmlentities($description), $actions)); + } } + $this->packageList->setAcl($this->getacl("FAIpackage",preg_match('/^freeze/', $this->FAIstate))); + $this->packageList->setListData($data,$lData); + $this->packageList->update(); /* Assign variables */ foreach($this->attributes as $attrs){ @@ -467,7 +485,7 @@ class faiPackage extends plugin } $smarty->assign("freeze", preg_match("/freeze/",$this->FAIstate)); - $smarty->assign("divlist",$divlist->DrawList()); + $smarty->assign("listing",$this->packageList->render()); $smarty->assign("release" ,$this->FAIdebianRelease); $smarty->assign("sections",$this->sections); $smarty->assign("section" ,$strsec); @@ -573,7 +591,7 @@ class faiPackage extends plugin $current_release = $this->parent->parent->fai_release; $tmp= preg_replace('/,'.preg_quote(get_ou('faiBaseRDN'), '/').'.*$/i', '', $current_release); $tmp= preg_replace('/ou=/', '', $tmp); - $rev= array_reverse(split(',', $tmp)); + $rev= array_reverse(explode(',', $tmp)); $this->FAIdebianRelease= ""; foreach ($rev as $part){ $this->FAIdebianRelease.= "/$part"; @@ -752,9 +770,9 @@ class faiPackage extends plugin if(isset($attrs['FAIrepository'])){ for($i =0 ; $i < $attrs['FAIrepository']['count']; $i++){ $obj = $attrs['FAIrepository'][$i]; - $tmp = split("\|",$obj); + $tmp = explode("|",$obj); if(count($tmp)==4){ - foreach(split(",",$tmp[3]) as $sec){ + foreach(explode(",",$tmp[3]) as $sec){ if(!empty($sec)){ $ret[$tmp[2]][] = $sec; }