Code

Removed old style list
[gosa.git] / gosa-plugins / goto / admin / systems / goto / class_workstationStartup.inc
index ae047a7e9b609968c22ce4d680606c5634669105..f902a92e0608c4a8a6f759164175b8cf81f13f1b 100644 (file)
@@ -128,7 +128,7 @@ class workstartup extends plugin
        */
       $this->FAIclass =array();
       if(isset($this->attrs['FAIclass'][0])){
-        $tmp = split(" ",$this->attrs['FAIclass'][0]);
+        $tmp = explode(" ",$this->attrs['FAIclass'][0]);
         $tmp2 =array();  
 
         foreach($tmp as $class){
@@ -160,7 +160,7 @@ class workstartup extends plugin
       unset($this->attrs['gotoShare']['count']);
       foreach($this->attrs['gotoShare'] as $share){
         $tmp = $tmp2 = array();
-        $tmp = split("\|",$share);
+        $tmp = explode("|",$share);
         $tmp2['server']      =$tmp[0];
         $tmp2['name']        =$tmp[1];
         $tmp2['mountPoint']  =$tmp[2];
@@ -211,8 +211,8 @@ class workstartup extends plugin
             break;
 
           case 'FAIclass':
-            $str = split(":",$attrs[$name][0]);
-            $this->InheritedFAIclass    = split("\ ",trim($str[0]));
+            $str = explode(":",$attrs[$name][0]);
+            $this->InheritedFAIclass    = explode(" ",trim($str[0]));
             $this->InheritedFAIrelease  = trim($str[1]);
             break;
 
@@ -251,6 +251,16 @@ class workstartup extends plugin
         $this->update_fai_cache();
       }
     }
+
+
+    // Prepare lists
+    $this->ldapList = new sortableListing(array(),array(), TRUE);
+    $this->ldapList->setDeleteable(true);
+    $this->ldapList->setEditable(false);
+    $this->ldapList->setWidth("100%");
+    $this->ldapList->setHeight("100px");
+    $this->ldapList->setHeader(array(_("LDAP server")));
+    $this->ldapList->setDefaultSortColumn(0);
   }
 
   
@@ -281,8 +291,7 @@ class workstartup extends plugin
 
     /* Do we represent a valid terminal? */
     if (!$this->is_account && $this->parent === NULL){
-      $display= "<img alt=\"\" src=\"images/small-error.png\" align=middle>&nbsp;<b>".
-        msgPool::noValidExtension(_("workstation"))."</b>";
+      $display= image("images/small-error.png")."<b>".msgPool::noValidExtension(_("workstation"))."</b>";
       return ($display);
     }
 
@@ -342,7 +351,7 @@ class workstartup extends plugin
           }
 
           if(($sort_type)&&(!$sort)){
-            $value = base64_decode(preg_replace("/_.*$/i","",preg_replace("/".$sort_type."/i","",$name)));
+            $value = postDecode(preg_replace("/_.*$/i","",preg_replace("/".$sort_type."/i","",$name)));
             $sort = true;
 
             $last = -1;
@@ -389,7 +398,7 @@ class workstartup extends plugin
           }
 
           if(preg_match("/fai_remove/i",$name)){
-            $value = base64_decode(preg_replace("/_.*$/i","",preg_replace("/fai_remove_/i","",$name)));
+            $value = postDecode(preg_replace("/fai_remove_/i","",$name));
             unset($this->FAIclass[$value]);
           }
         }
@@ -454,10 +463,7 @@ class workstartup extends plugin
     $smarty->assign("gotoShareKeys",array_flip($this->printOutAssignedShares()));
     $smarty->assign("gotoBootKernels",$this->gotoBootKernels);
 
-    /* Create divSelectBox for ldap server selection
-     */
-    $SelectBoxLdapServer = new divSelectBox("LdapServer");
-    $SelectBoxLdapServer->SetHeight(130);
+    $this->ldapList->setAcl($this->getacl('gotoLdapServer'));
 
     /* Add new ldap server to the list */
     if($this->acl_is_writeable("gotoLdapServer") && 
@@ -473,65 +479,38 @@ class workstartup extends plugin
     }
     
     /* Move ldap servers up and down */
-    if(!$this->gotoLdap_inherit && $this->acl_is_writeable("gotoLdapServer")){
-      foreach($_POST as $name => $value){
-        if(preg_match("/sort_ldap_up_/",$name)){
-          $id = preg_replace("/^sort_ldap_up_([0-9]*)_(x|y)$/","\\1",$name);
-          $from =  $id;  
-          $to   =  $id -1;
-          $tmp = $this->array_switch_item($this->gotoLdapServers,$from,$to);
-          if($tmp){
-            $this->gotoLdapServers = $tmp;
-          }
-          break;
-        }
-        if(preg_match("/sort_ldap_down_/",$name)){
-          $id = preg_replace("/^sort_ldap_down_([0-9]*)_(x|y)$/","\\1",$name);
-          $from =  $id;  
-          $to   =  $id +1;
-          $tmp = $this->array_switch_item($this->gotoLdapServers,$from,$to);
-          if($tmp){
-            $this->gotoLdapServers = $tmp;
-          }
-          break;
-        }
-        if(preg_match("/gotoLdapRemove_/",$name)){
-          $id = preg_replace("/^gotoLdapRemove_([0-9]*)_(x|y)$/","\\1",$name);
-          $value = $this->gotoLdapServers[$id];
-          $this->gotoLdapServers = array_remove_entries(array($value),$this->gotoLdapServers);
-          break;
-        }
-      } 
+    $this->ldapList->save_object();
+    $action = $this->ldapList->getAction();
+    if($action['action'] == 'reorder'){
+        $this->gotoLdapServers = array_values($this->ldapList->getMaintainedData());
+    }
+    if($action['action'] == 'delete'){
+        $id = $this->ldapList->getKey($action['targets'][0]);
+        $value = $this->gotoLdapServers[$id];
+        $this->gotoLdapServers = array_remove_entries(array($value),$this->gotoLdapServers);
     }
-  
-    /* Add Entries */
-    if($this->acl_is_readable("gotoLdapServer")){
 
-      foreach($this->gotoLdapServers as $key => $server){
+    /* Add Entries */
+    $data = $lData = array();
+    foreach($this->gotoLdapServers as $key => $server){
+        $data[$key]=$server;
 
         /* Announce missing entries */
         if(!in_array($server,$this->gotoLdapServerList)){
-          $server = $server."&nbsp;<font style='color:red'>(missing)</font>";
+            $server = $server."&nbsp;<font style='color:red'>(missing)</font>";
         }
 
         /* Convert old style entry */
         if (!preg_match('%:ldaps?://%', $server)){
-          $server= "ldap://".preg_replace('/^([^:]+):/', '\1/', $server);
-
-        /* Beautify new style entries */
-      } else {
-        $server= preg_replace("/^[^:]+:/", "", $server);
-      }
-
-      $SelectBoxLdapServer->AddEntry(
-          array(array("string" => $server),
-            array("string" => 
-              "<input class='center' type='image' src='images/lists/sort-up.png' name='sort_ldap_up_".$key."'>&nbsp;".
-              "<input class='center' type='image' src='images/lists/sort-down.png' name='sort_ldap_down_".$key."'>&nbsp;".
-              "<input class='center' type='image' src='images/lists/trash.png' name='gotoLdapRemove_".$key."'>",
-              "attach" => "style='text-align:right;width:40px;border-right:0px;'")));
-      }    
-    }    
+            $server= "ldap://".preg_replace('/^([^:]+):/', '\1/', $server);
+        } else {
+            $server= preg_replace("/^[^:]+:/", "", $server);
+            $lData[$key] = array('data'=>array($server));
+        }    
+    }
+    $this->ldapList->setListData($data,$lData);
+    $this->ldapList->update();
+    $smarty->assign("usePrototype", "true");
 
     if($this->gotoLdap_inherit){
       $smarty->assign("gotoLdapServerACL_inherit", preg_replace("/w/","",$this->getacl("gotoLdapServer")));;
@@ -555,7 +534,7 @@ class workstartup extends plugin
         $list[$key] = $entry;
       }
     }
-    $smarty->assign("gotoLdapServers",    $SelectBoxLdapServer->DrawList());
+    $smarty->assign("gotoLdapServers",    $this->ldapList->render());
     $smarty->assign("gotoLdapServerList", $list);
     $smarty->assign("gotoLdap_inherit",   $this->gotoLdap_inherit);
     $smarty->assign("JS",  session::get('js'));
@@ -577,7 +556,7 @@ class workstartup extends plugin
     $smarty->assign("si_active",$this->si_active);
 
     $div = new divSelectBox("WSFAIscriptClasses");
-    $div -> SetHeight("110");
+    $div -> SetHeight("100");
   
     if(!$this->si_fai_action_failed && $this->si_active && $this->fai_activated){
 
@@ -598,11 +577,11 @@ class workstartup extends plugin
       $smarty->assign("gotoBootKernels",$this->cache['KERNELS'][$release]);
       $smarty->assign("InheritedFAIrelease",$this->InheritedFAIrelease);
 
-      $str_empty  = " &nbsp;<img src='images/empty.png' alt=\"\" width='7'>"; 
+      $str_empty  = image('images/empty.png');
       if($this->acl_is_writeable("FAIclass")){
-        $str_up     = " &nbsp;<input type='image' src='images/lists/sort-up.png'    name='sort_up_%s'    value='%s'>";
-        $str_down   = " &nbsp;<input type='image' src='images/lists/sort-down.png'  name='sort_down_%s'  value='%s'>";
-        $str_remove = " &nbsp;<input type='image' src='images/lists/trash.png'  name='fai_remove_%s' value='%s'>";
+        $str_up     = image('images/lists/sort-up.png','sort_up_%s');
+        $str_down   = image('images/lists/sort-down.png','sort_down_%s');
+        $str_remove = image('images/lists/trash.png','fai_remove_%s');
       }else{
         $str_up=$str_down=$str_remove=$str_empty;
       }
@@ -664,7 +643,7 @@ class workstartup extends plugin
             $desc ="";
             foreach($this->cache['CLASSES'][$this->FAIrelease][$class] as $types ){
               if(isset($types['Abbr'])){
-                $desc.= "<img src='".$objects[$types['Abbr']]['IMG']."' class='center'> ";
+                $desc.= image($objects[$types['Abbr']]['IMG']);
                 if($types['Type'] == "FAIprofile"){
                   break;
                 }
@@ -678,7 +657,7 @@ class workstartup extends plugin
           $div->AddEntry(array(
                 array("string"=>$class.$marker),
                 array("string"=>$desc),
-                array("string"=>preg_replace("/\%s/",base64_encode($class),$str),"attach"=>"style='width:50px;border-right:none;'")
+                array("string"=>preg_replace("/\%s/",postEncode($class),$str),"attach"=>"style='width:60px;border-right:none;'")
                 ));
         }  
       }// END FAI output generation 
@@ -777,7 +756,7 @@ class workstartup extends plugin
       $ldap= $this->config->get_ldap_link();
 
       /* Strip relevant part from dn, keep trailing ',' */
-      $tmp= preg_replace("/^cn=[^,]+,".get_ou('terminalRDN')."/i", "", $this->dn);
+      $tmp= preg_replace("/^cn=[^,]+,".preg_quote(get_ou('terminalRDN'), '/')."/i", "", $this->dn);
       $tmp= preg_replace("/".$this->config->current['BASE']."$/i", "", $tmp);
 
       /* Walk from top to base and try to load default values for
@@ -876,7 +855,7 @@ class workstartup extends plugin
     /* prepare share settings */
     $tmp = array();
     foreach($this->gotoShares as $name => $settings){
-      $tmp2= split("\|",$name);
+      $tmp2= explode("|",$name);
       $name = $tmp2[0];
       $tmp[] = $settings['server']."|".$name."|".$settings['mountPoint'];
     }
@@ -987,7 +966,8 @@ class workstartup extends plugin
     plugin::PrepareForCopyPaste($source);    
     $source_o = new workstartup ($this->config, $source['dn']);
     foreach(array("FAIclass","gotoModules", "gotoAutoFs", "gotoFilesystem",
-          "gotoKernelParameters","gotoShares") as $attr){
+          "gotoKernelParameters","gotoShares","gotoLdapServers","gotoLdapServerList",
+          "gotoLdap_inherit") as $attr){
       $this->$attr = $source_o->$attr;
     }
   }
@@ -1027,6 +1007,7 @@ class workstartup extends plugin
           "plProvidedAcls"=> array(
             "gotoLdapServer"        => _("Ldap server"),
             "gotoBootKernel"        => _("Boot kernel"),
+            "bootmode"              => _("Boot mode"),
             "gotoKernelParameters"  => _("Kernel parameter"),
 
             "gotoModules"           => _("Kernel modules"),
@@ -1138,19 +1119,19 @@ class workstartup extends plugin
        */
       $lines= $this->GetHookElements();
       foreach ($lines as $hline){
-        $entries= split(";", $hline);
+        $entries= explode(";", $hline);
         $server = $entries['0'];
         $url    = $entries['1'];
         if (!empty($url)){
 
           /* Split releases */
           if (isset($entries[2])){
-            $releases= split(",", $entries[2]);
+            $releases= explode(",", $entries[2]);
 
             foreach ($releases as $release_data){
               $release_c  = preg_replace('/:.*$/', '', $release_data);
-              $sections_c = split(':', preg_replace('/^[^:]+:([^|]+)|.*$/', '\1', $release_data));
-              $classes_c  = split('\|', preg_replace('/^[^|]+\|(.*)$/', '\1', $release_data));
+              $sections_c = explode(':', preg_replace('/^[^:]+:([^|]+)|.*$/', '\1', $release_data));
+              $classes_c  = explode('|', preg_replace('/^[^|]+\|(.*)$/', '\1', $release_data));
 
               if($release_c == $release){
                 $this->cache['SERVERS'][$url][$release_c]=$release_c;
@@ -1310,7 +1291,7 @@ class workstartup extends plugin
       }elseif(empty($res2)){
         msg_dialog::display(_("Configuration error"), _("'repositoryBranchHook' returned no result!"), ERROR_DIALOG);
       }else{
-        $tmp = split("\n",$res);
+        $tmp = preg_split("/\n/",$res);
         foreach($tmp as $line){
           if(empty($line)) continue;
           $ret[]= $line;
@@ -1326,8 +1307,8 @@ class workstartup extends plugin
    */
   function dn_to_release_name($dn)
   {
-    $relevant = preg_replace("/,".preg_quote(get_ou("faiBaseRDN"), '/').".*$/","",$dn);
-    $parts    = array_reverse(split("\,",$relevant));
+    $relevant = preg_replace("/,".preg_quote(get_ou("faiBaseRDN"), '/').".*$/i","",$dn);
+    $parts    = array_reverse(explode(",",$relevant));
     $str ="";
     foreach($parts as $part){
       $str .= preg_replace("/^ou=/","",$part)."/";