Code

Added DNS and DHCP enable disable options into setup step 2
[gosa.git] / include / sieve / class_sieveElement_If.inc
index 702ccdb30a8130fcc19f82e02617917665a64575..acdcb94d5d6abd1b101abd8efcfb1010236d3fa7 100644 (file)
@@ -20,11 +20,12 @@ class sieve_if
   function sieve_if($elements,$object_id,$parent)
   {
     $this->parent = $parent;
+    $this->object_id       = $object_id;
   
     /* Possible address parts we can select */
     $this->address_parts = array( 
-        ":all"       => _("Complete adress")." ("._("Default").")",
-        ":domain"    => _("Domian part") ,
+        ":all"       => _("Complete address")." ("._("Default").")",
+        ":domain"    => _("Domain part") ,
         ":localpart" => _("Local part"));
 
     /* comparator type */
@@ -51,10 +52,22 @@ class sieve_if
         "gt"  => _("greater than"),
         "ne"  => _("not equal"));
 
-    $this->object_id       = $object_id;
-    if($elements!=NULL){
-      $this->elements = $elements;
-      $this->_parsed  = $this->_parse($elements['ELEMENTS'],1);
+    /* Skip parsing if this element is new */
+    if($elements != NULL){
+
+      /* Remove comments from tests */  
+      $tmp = array();
+      foreach($elements['ELEMENTS'] as $ele){
+        if($ele['class'] != "comment"){
+          $tmp[] = $ele;
+        }
+      }
+      $elements['ELEMENTS'] = $tmp;
+
+      if($elements!=NULL){
+        $this->elements = $elements;
+        $this->_parsed  = $this->_parse($elements['ELEMENTS'],1);
+      }
     }
   }
 
@@ -85,6 +98,10 @@ class sieve_if
       $parsed = $this->_parsed;
     }
 
+    if($parsed == NULL) {
+        return(array(_("Can't save empty tests.")));
+    }
+
     /* Walk through all elements */
     foreach($parsed as $key => $data){
 
@@ -512,7 +529,9 @@ class sieve_if
       $parsed = $this->_parsed;
     }
 
-    if(!is_array($parsed)) return;
+    if(!is_array($parsed)) {
+      return;
+    }
 
     /* Walk through all elements */
     foreach($parsed as $key => $data){
@@ -585,6 +604,12 @@ class sieve_if
             if(!isset($match_types[$mt])){
               $parsed[$key]['LastError'] = _("Invalid match type given.");
             }
+            if($mt == ":regex"){
+              $this->parent->add_require("regex");
+            }
+            if($mt == ":count"){
+              $this->parent->add_require("comparator-i;ascii-numeric");
+            }
             $parsed[$key]['Match_type'] = $mt;
           }
 
@@ -623,7 +648,11 @@ class sieve_if
 
             $tmp2 = split(",",$vls);
             foreach($tmp2 as $val){
-              $tmp[] = "\"".trim(preg_replace("/\"/","",$val))."\"";
+              $tmp[] = trim($val);
+  
+              if(preg_match("/\"/",$val)){
+                $parsed[$key]['LastError'] = _("Invalid character found in address attribute. Quotes are not allowed here.");
+              }
             }
             $parsed[$key]['Key_List'] = $tmp;
           }
@@ -635,7 +664,10 @@ class sieve_if
 
             $tmp2 = split(",",$vls);
             foreach($tmp2 as $val){
-              $tmp[] = "\"".trim(preg_replace("/\"/","",$val))."\"";
+              $tmp[] = trim($val);
+              if(preg_match("/\"/",$val)){
+                $parsed[$key]['LastError'] = _("Invalid character found in value attribute. Quotes are not allowed here.");
+              }
             }
             $parsed[$key]['Value_List'] = $tmp;
           }
@@ -694,8 +726,9 @@ class sieve_if
           $Match_types = array( ":over" => _("greater than") ,
                                 ":under" => _("lower than"));
 
-          $Units       = array( "M" => _("Megabyte") ,
-                                "K" => _("Kilobyte"));
+          $Units       = array( "M" => _("Megabyte"),
+                                "K" => _("Kilobyte"),
+                                ""  => _("Bytes"));
 
           /* Toggle Inverse ? */
           if(isset($_POST['toggle_inverse_'.$element_id])){
@@ -802,7 +835,7 @@ class sieve_if
     if($this->TYPE == "if"){
       $name .= " - "._("If");
     }elseif($this->TYPE == "elsif"){
-      $name .= " - "._("Else if");
+      $name .= " - "._("Else If");
     }else{
       $name .= " - "._("Else");
     }
@@ -810,12 +843,8 @@ class sieve_if
     $smarty = get_smarty();
     $smarty->assign("ID", $this->object_id);
 
-    /* Only display navigation elements if necessary */
-    if($this->TYPE == "if"){
-      $object_container = $smarty->fetch(get_template_path("templates/object_container.tpl",TRUE,dirname(__FILE__)));
-    }else{
-      $object_container = $smarty->fetch(get_template_path("templates/object_container_clear.tpl",TRUE,dirname(__FILE__)));
-    }
+    /* Get navigation element container */
+    $object_container = $smarty->fetch(get_template_path("templates/object_container.tpl",TRUE,dirname(__FILE__)));
 
     $smarty->assign("Name", $name);
     $smarty->assign("Contents", $this->get_as_html());
@@ -1030,8 +1059,9 @@ class sieve_if
           $Match_types = array( ":over" => _("greater than") , 
                                 ":under" => _("lower than"));
 
-          $Units       = array( "M" => _("Megabyte") , 
-                                "K" => _("Kilobyte")); 
+          $Units       = array( "M" => _("Megabyte"),
+                                "K" => _("Kilobyte"),
+                                ""  => _("Bytes"));
 
           $Match_type   = $data['Match_type'];
           $Value        = preg_replace("/[^0-9]/","",$data['Value_List'][0]);
@@ -1101,7 +1131,7 @@ class sieve_if
           $smarty->assign("DisplayAdd",TRUE);
           $smarty->assign("DisplayDel",FALSE);
           $cont_tmp = $smarty->fetch(get_template_path("templates/object_test_container.tpl",TRUE,dirname(__FILE__)));
-          $cont_tmp = preg_replace("/%%OBJECT_CONTENT%%/",_("Click here to add a new test"),$cont_tmp);
+          $cont_tmp = preg_replace("/%%OBJECT_CONTENT%%/","<b>"._("Click here to add a new test")."</b>",$cont_tmp);
 
           $smarty->assign("Inverse",$Inverse);
           $smarty->assign("Contents",$cont_tmp.$Contents);
@@ -1131,7 +1161,7 @@ class sieve_if
           $smarty->assign("DisplayAdd",TRUE);
           $smarty->assign("DisplayDel",FALSE);
           $cont_tmp = $smarty->fetch(get_template_path("templates/object_test_container.tpl",TRUE,dirname(__FILE__)));
-          $cont_tmp = preg_replace("/%%OBJECT_CONTENT%%/",_("Klick here to add a new test"),$cont_tmp);
+          $cont_tmp = preg_replace("/%%OBJECT_CONTENT%%/",_("Click here to add a new test"),$cont_tmp);
 
           $smarty->assign("Inverse",$Inverse);
           $smarty->assign("Contents",$cont_tmp.$Contents);