Code

Systems Workstation Startup
[gosa.git] / plugins / admin / systems / class_servDNSeditZoneEntries.inc
index e6dfc96dd19dfa9d894f8782b5e0b594436c4a89..50812871960c60f872fcc874222198b83a7f53d2 100644 (file)
@@ -2,14 +2,9 @@
 
 class servDNSeditZoneEntries extends plugin
 {
-  /* CLI vars */
-  var $cli_summary= "Manage server basic objects";
-  var $cli_description= "Some longer text\nfor help";
-  var $cli_parameters= array("eins" => "Eins ist toll", "zwei" => "Zwei ist noch besser");
-
   /* attribute list for save action */
   var $ignore_account     = TRUE;
-  var $attributes         = array();
+  var $attributes         = array("cn");
   var $objectclasses      = array("whatever");
 
   var $Devices            = array();
@@ -20,6 +15,7 @@ class servDNSeditZoneEntries extends plugin
   var $RecordTypes        = array();  // Possible record type.
 
   var $disableDialog      = false; // Dialog will be disabled, if this zone is new 
+  var $cn;
 
   function servDNSeditZoneEntries ($config,$dn, $zoneObject)
   {
@@ -28,7 +24,7 @@ class servDNSeditZoneEntries extends plugin
     /* Initialise class
      */
     $this->RecordTypes  = getDnsRecordTypes();
-    $this->dn           = "zoneName=".$zoneObject['InitialzoneName'].",".$dn; 
+    $this->dn           = "zoneName=".getNameFromMix($zoneObject['InitialzoneName']).",".$dn; 
     $this->zoneName     = $zoneObject['InitialzoneName'];
     $this->reverseName  = $zoneObject['InitialReverseZone'];
 
@@ -46,8 +42,11 @@ class servDNSeditZoneEntries extends plugin
       $this->Devices[$attrs['relativeDomainName'][0]]['OrigCn'] = $attrs['relativeDomainName'][0];
     }
 
-    if(!count($this->Devices)){
-      $this->disableDialog = true;
+    $ldap->cat($this->dn,array("objectClass"));
+
+    $this->disableDialog = true;
+    if(count($this->Devices)|| $ldap->count()){
+      $this->disableDialog = false;
     }
   }
 
@@ -69,13 +68,13 @@ class servDNSeditZoneEntries extends plugin
 
       /* Add new host entry
        */
-      if((preg_match("/^UserRecord_/",$name)) && ($once)){
+      if((preg_match("/^UserRecord_?/",$name)) && ($once)){
         $once = false;
         $entry = getDNSHostEntries($this->config,"",true);     
         $entry['exists']    = true;
         $entry['zoneName']  = $this->zoneName; 
         $entry['RECORDS'][] = array("type" => "aRecord" , "value"=>"");
-        $this->Devices['New Entry'] = $entry;
+        $this->Devices[_("New entry")] = $entry;
       }
 
       if(count($tmp2) != 2) continue;
@@ -192,8 +191,14 @@ class servDNSeditZoneEntries extends plugin
     $ldap->cd($this->config->current['BASE']);
 
     $names = array();
+
     foreach($this->Devices as $DevName => $device){
 
+      /* skip checking empty attributes */
+      if(count($this->Devices[$DevName]['RECORDS']) == 0){
+        return;
+      }
+
       /* Checking entry name
        */
       if((!is_uid($DevName)) | (empty($DevName))){
@@ -203,13 +208,13 @@ class servDNSeditZoneEntries extends plugin
       /* Renaming check for existing devices 
        */
       if(isset($device['OrigCn'])  && ($DevName != $device['OrigCn'] )){
-        $ldap->cd($this->config->current['BASE']);
+        $ldap->cd($this->dn);
         $ldap->search("(relativeDomainName=".$DevName.")",array("relativeDomainName"));
         if($ldap->count()){
           $message[] = sprintf(_("Can not rename '%s' to '%s',the destination name already exists."),$device['OrigCn'],$DevName);
         }
       }elseif(!isset($device['OrigCn'])){
-        $ldap->cd($this->config->current['BASE']);
+        $ldap->cd($this->dn);
         $ldap->search("(relativeDomainName=".$DevName.")",array("relativeDomainName"));
         if($ldap->count()){
           $message[] = sprintf(_("Can not create '%s',the destination name already exists."),$DevName);
@@ -226,6 +231,8 @@ class servDNSeditZoneEntries extends plugin
 
       /* Names should be written in lowercase
        */
+
+
       if(strtolower($DevName) != $DevName){
         $message[] = sprintf(_("The host name '%s' should be written in lowercase."), $DevName);
       }
@@ -272,6 +279,7 @@ class servDNSeditZoneEntries extends plugin
 
     $todo = array(); 
 
+
     /* Create todolist
      */
     foreach($this->Devices as $name => $dev){
@@ -383,7 +391,7 @@ class servDNSeditZoneEntries extends plugin
           <input type='text'  value='".$record['value']."' name='ValueSelection_".$name."' style='width:250px;'>
         </td>
         <td style='width:50px;text-align:right;'>
-          <input type='image' name='AddRecord_".$name."'   src='images/crossref.png' alt='"._("Add")."' title='"._("Add")."'>
+          <input type='image' name='AddRecord_".$name."'   src='images/list_new.png' alt='"._("Add")."' title='"._("Add")."'>
           <input type='image' name='RemoveRecord_".$name."' src='images/edittrash.png'      alt='"._("Remove")."' title='"._("Remove")."'>
         </td>
       </tr>";