Add password option widget
authorpdontthink <pdontthink@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Fri, 19 Dec 2008 08:33:56 +0000 (08:33 +0000)
committerpdontthink <pdontthink@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Fri, 19 Dec 2008 08:33:56 +0000 (08:33 +0000)
git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@13376 7612ce4b-ef26-0410-bec9-ea0150e637f0

ChangeLog
functions/forms.php
functions/options.php
include/constants.php

index 0e7024b69d4a839de298a114b20fe8592a6519fc..3616289b87444791973339d20931a46f95183137 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -266,6 +266,7 @@ Version 1.5.2 - SVN
   - Allow control over white space wrapping of auto-generated SquirrelMail
     option widgets.
   - Add informational type option widget
+  - Add password type option widget
 
 Version 1.5.1 (branched on 2006-02-12)
 --------------------------------------
index 0be61fb58fd94299d4c3b7877134e3d806244448..e49b8a6979d2243057cb1886f3388c9be6558cf2 100644 (file)
@@ -76,12 +76,17 @@ function addInputField($sType, $aAttribs=array()) {
  * Password input field
  * @param string $sName field name
  * @param string $sValue initial password value
- * @param array $aAttribs (since 1.5.1) extra attributes
- * @return string html formated password field
+ * @param integer $iSize field size (number of characters)
+ * @param integer $iMaxlength maximum number of characters the user may enter
+ * @param array $aAttribs (since 1.5.1) extra attributes - should be given
+ *                        in the form array('attribute_name' => 'attribute_value', ...)
+ * @return string html formated password field 
  */
-function addPwField($sName, $sValue = null, $aAttribs=array()) {
+function addPwField($sName, $sValue = '', $iSize = 0, $iMaxlength = 0, $aAttribs=array()) {
     $aAttribs['name']  = $sName;
-    $aAttribs['value'] = (! is_null($sValue) ? $sValue : '');
+    $aAttribs['value'] = $sValue;
+    if ($iSize) $aAttribs['size'] = (int)$iSize;
+    if ($iMaxlength) $aAttribs['maxlength'] = (int)$iMaxlength;
     // add default css
     if (! isset($aAttribs['class'])) $aAttribs['class'] = 'sqmpwfield';
     return addInputField('password',$aAttribs);
index 1795c226983037c93d83eb316c7beaea4473d32a..fd211eaba85fc856e809b80af6f6ee471f0cb9cb 100644 (file)
@@ -364,6 +364,9 @@ class SquirrelOption {
 
         /* Get the widget for this option type. */
         switch ($this->type) {
+            case SMOPT_TYPE_PASSWORD:
+                $result = $this->createWidget_String(TRUE);
+                break;
             case SMOPT_TYPE_STRING:
                 $result = $this->createWidget_String();
                 break;
@@ -443,9 +446,15 @@ class SquirrelOption {
 
     /**
      * Create string field
+     *
+     * @param boolean $password When TRUE, the text in the input
+     *                          widget will be obscured (OPTIONAL;
+     *                          default = FALSE).
+     *
      * @return string html formated option field
+     *
      */
-    function createWidget_String() {
+    function createWidget_String($password=FALSE) {
         switch ($this->size) {
             case SMOPT_SIZE_TINY:
                 $width = 5;
@@ -465,7 +474,11 @@ class SquirrelOption {
         }
 
 //TODO: might be better to have a separate template file for all widgets, because then the layout of the widget and the "trailing text" can be customized - they are still hard coded here
-        return addInput('new_' . $this->name, $this->value, $width, 0, $this->aExtraAttribs) . ' ' . htmlspecialchars($this->trailing_text);
+        if ($password)
+addPwField($sName, $sValue = null, $aAttribs=array()) {
+            return addPwField('new_' . $this->name, $this->value, $width, 0, $this->aExtraAttribs) . ' ' . htmlspecialchars($this->trailing_text);
+        else
+            return addInput('new_' . $this->name, $this->value, $width, 0, $this->aExtraAttribs) . ' ' . htmlspecialchars($this->trailing_text);
     }
 
     /**
index dbf32478383d0964ca638f136237eb31492bd9e3..249f2432216feff9285837dacff85f3af036d284 100644 (file)
@@ -236,6 +236,7 @@ define('SMOPT_TYPE_BOOLEAN_RADIO', 13);
 define('SMOPT_TYPE_STRLIST_RADIO', 14);
 define('SMOPT_TYPE_SUBMIT', 15);
 define('SMOPT_TYPE_INFO', 16);
+define('SMOPT_TYPE_PASSWORD', 17);
 
 // Define constants for the layout scheme for edit lists
 define('SMOPT_EDIT_LIST_LAYOUT_LIST', 0);