Framework: Add IPv6 address Form type
authorBen Klang <ben@alkaloid.net>
Mon, 22 Feb 2010 02:43:13 +0000 (21:43 -0500)
committerBen Klang <ben@alkaloid.net>
Mon, 22 Feb 2010 02:43:13 +0000 (21:43 -0500)
framework/Form/Form/Type.php
framework/Ui/lib/Horde/Ui/VarRenderer/Html.php

index 2253b82..e1b61cf 100644 (file)
@@ -511,6 +511,36 @@ class Horde_Form_Type_ipaddress extends Horde_Form_Type_text {
 
 }
 
+class Horde_Form_Type_ip6address extends Horde_Form_Type_text {
+
+    function isValid(&$var, &$vars, $value, &$message)
+    {
+        $valid = true;
+
+        if (strlen(trim($value)) > 0) {
+            $valid = @inet_pton($value);
+
+            if ($valid === false) {
+                $message = _("Please enter a valid IP address.");
+            }
+        } elseif ($var->isRequired()) {
+            $valid = false;
+            $message = _("This field is required.");
+        }
+
+        return true;
+    }
+
+    /**
+     * Return info about field type.
+     */
+    function about()
+    {
+        return array('name' => _("IPv6 address"));
+    }
+
+}
+
 class Horde_Form_Type_longtext extends Horde_Form_Type_text {
 
     var $_rows;
index 7cf2cb4..869fbbd 100644 (file)
@@ -140,6 +140,18 @@ class Horde_Ui_VarRenderer_Html extends Horde_Ui_VarRenderer
                );
     }
 
+    protected function _renderVarInput_ip6address($form, &$var, &$vars)
+    {
+        $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset);
+        return sprintf('<input type="text" name="%s" id="%s" size="40" value="%s" %s%s />',
+                       $varname,
+                       $varname,
+                       @htmlspecialchars($var->getValue($vars), ENT_QUOTES, $this->_charset),
+                       $var->isDisabled() ? ' disabled="disabled" ' : '',
+                       $this->_getActionScripts($form, $var)
+               );
+    }
+
     protected function _renderVarInput_file($form, &$var, &$vars)
     {
         $varname = @htmlspecialchars($var->getVarName(), ENT_QUOTES, $this->_charset);