Code

Fixed missing images problem in group headpage
[gosa.git] / plugins / admin / fai / class_faiPackage.inc
index 918dab1d892bb07e7dd88ef41fd5cd2ae4684f81..f58acfd12264cbfdf21dfea1378b8087e8f09aee 100644 (file)
@@ -37,6 +37,7 @@ class faiPackage extends plugin
   var $FAIdebianRelease          = ""; // The selected release
   var $FAIdebianSection          = ""; // selected section
   var $FAIdebianMirror           = ""; // selected mirror
+  var $mirror                    = ""; // selected mirror
 
   var $servers          = array();  // All available servers
   var $releases         = array();  // All possible releases 
@@ -69,6 +70,7 @@ class faiPackage extends plugin
       foreach($this->attrs['FAIpackage'] as $pkg){
         $this->usedPackages[$pkg] = $pkg;
       }
+      ksort($this->usedPackages);
     }else{
       $this->usedPackages = array();
     }  
@@ -86,6 +88,9 @@ class faiPackage extends plugin
     }
     $this->confDir = CONFIG_DIR."/fai/";
     $this->FAIpackage = array();
+
+    /* Extract mirror location */
+    $this->mirror= preg_replace("!^[^/]+//([^/]+).*$!", '$1', $this->FAIdebianMirror);
   }
 
   function execute()
@@ -94,14 +99,33 @@ class faiPackage extends plugin
     $smarty= get_smarty();
     $display= "";
 
+    $this->genMirror();
+
+    /* Check if we exist already - no need to ask for revisions, etc. then */
+    if ($this->dn != "new"){
+        $this->newDialogShown= true;
+    }
+
     if((!$this->is_account)&&(!$this->newDialogShown)){
       
       if($this->dialog==NULL){
-        $this->genMirror();
         $this->dialog = new faiPackageNew($this->config, $this->dn,$this->mirrors,$this->servers,$this->sections,$this->releases);
         $this->is_dialog =true;
       }
-  
+
+      /* alert possible missconfigurations */ 
+      if((count($this->releases)==0)||(count($this->servers)==0)||(count($this->sections)==0)){
+        print_red(_("There is no useable package list defined."));
+      }
+
+      /* Assign posible changes, for mirror combinations */
+      $this->dialog->save_object();
+      $this->dialog->releases = $this->releases;
+      $this->dialog->servers  = $this->servers;
+      $this->dialog->sections = $this->sections;
+      $this->dialog->mirrors  = $this->mirrors;
+
+      /* Assign Repository settings*/ 
       if(isset($_POST['SaveObjectNew'])){
         $this->FAIdebianRelease = $this->dialog->FAIdebianRelease;
         $this->FAIdebianSection = $this->dialog->FAIdebianSection;
@@ -112,23 +136,23 @@ class faiPackage extends plugin
         $this->newDialogShown = true;
       }
 
+      /* Draw dialog */
       if($this->dialog){
         $display=$this->dialog->execute();
         return($display); 
       }
     }
-    $disableRelease   = false;
-    $disableMirror    = false;
-    $disableOptions   = false;
-    $disableSection   = false;
 
     /* Assign variables */
     foreach($this->attributes as $attrs){
       $smarty->assign($attrs,$this->$attrs);
     }
-
-    $this->genMirror();
-
+  
+    /* Set mirror if changed */
+    if((isset($_POST['FAIdebianMirrorS']))&&(!empty($_POST['FAIdebianMirrorS']))){
+      $this->FAIdebianMirror = $_POST['FAIdebianMirrorS'];
+    }
+  
     /* check servers matching release and section settings */
     $availableServer = array();
     foreach($this->mirrors as $mir){
@@ -144,24 +168,28 @@ class faiPackage extends plugin
         }
       }
     }
-    if($this->list==NULL){
-      $this->list=$this->genPkgs();
-    }
+    /* Generate package list */
+    $this->list=$this->genPkgs();
 
+    /* + was pressed to open the package dialog */
     if(isset($_POST['Addpkg'])){
       $this->dialog = new faiPackageEntry($this->config, $this->dn,$this->list,$this->usedPackages);
       $this->is_dialog =true;
     }
+
+    /* Delte selected package */ 
     if(isset($_POST['Delpkg'])){
       unset($this->usedPackages[$_POST['usedPackages']]);
     }
+
+    /* Abort package selection dialog */ 
     if(isset($_POST['CancelSubObject'])){
       $this->dialog = false;
       $this->is_dialog=false;
     }
 
+    /* attach new packages */
     if(isset($_POST['SaveSubObject'])) {
       $this->dialog->save_object();
       if(count($this->dialog->check())){
@@ -173,33 +201,44 @@ class faiPackage extends plugin
         $this->usedPackages = $use;
         $this->dialog = false;
         $this->is_dialog=false;
+        ksort($this->usedPackages);
       }
     }
 
+    /* Configuration dialog open*/
     if(isset($_POST['Conpkg'])){
       $this->dialog = new faiPackageConfiguration($this->config, $this->dn,"none");
       $this->is_dialog =true;
     }
    
+    /* Save Configuration */
     if(isset($_POST['SaveObjectConfig'])){
       $this->dialog = false;
       $this->is_dialog=false;
     }
-     
+
+    /* cancel configuration */     
     if(isset($_POST['CancelObjectConfig'])){
       $this->dialog = false;
       $this->is_dialog=false;
     }
+
+    /* Display dialog */ 
     if($this->is_dialog){
       return $this->dialog->execute();
     }
 
+    /* Assign section to smarty */
     $strsec = "";
     foreach($this->FAIdebianSection as $sec){
        $strsec .= $sec." ";
     }
 
+    $smarty->assign("OptionsACL","");
+    if(empty($this->FAIdebianMirror)){
+      $smarty->assign("OptionsACL"," disabled ");
+    }
+
     $smarty->assign("mirrors" ,$availableServer);
     $smarty->assign("mirror"  ,$this->FAIdebianMirror);
     $smarty->assign("releases",$this->releases);
@@ -328,10 +367,12 @@ class faiPackage extends plugin
       $this->buffer=array();
       $a_ret = array();
       foreach($this->FAIdebianSection as $sec){
-        $strID= "/etc/gosa/fai/".$this->FAIdebianMirror."/".$this->FAIdebianRelease."/".$sec;
+        $strID= "/etc/gosa/fai/".preg_replace("#^[^/]+//([^/]+).*$#","\\1",$this->FAIdebianMirror)."/".$this->FAIdebianRelease."/".$sec;
         
         if(!is_file($strID)){
-          print_red(sprintf(_("Package file don't exists '%s'."),$strID));
+          print_red(sprintf(_("Package file '%s' does not exist."),$strID));
+          $this->FAIdebianMirror="";
+          unset($this->buffer);
           return(array());
         }
         $fp = fopen($strID,"r");
@@ -351,7 +392,7 @@ class faiPackage extends plugin
       ksort($a_ret);
       return($a_ret);
     }else{
-      return $this->buffer[$strID];
+      return $this->buffer;
     }
   }