Пример #1
0
 static function DrawInput($fieldName, $inputType, $defaultValue = '', $possibleValues = NULL, $attributes = NULL, $noSubmit = FALSE)
 {
     $out = '';
     if ($attributes === NULL) {
         $attributes = array();
     }
     //		$defaultValue = str_replace(DEFAULT_CURRENCY_HTML,DEFAULT_CURRENCY,$defaultValue);
     //		$defaultValue = str_replace(DEFAULT_CURRENCY,DEFAULT_CURRENCY_HTML,$defaultValue);
     //		if (!isset($attributes['id'])) $attributes['id'] = $fieldName;
     //		if(!isset($attributes['name']) && !$noSubmit) $attributes['name'] = $fieldName;
     $attributes['name'] = $fieldName;
     if (isset($attributes['class'])) {
         $attributes['class'] .= ' inputtype inputtype-' . $inputType;
     } else {
         $attributes['class'] = 'inputtype inputtype-' . $inputType;
     }
     $defaultValue = utopia::jsonTryDecode($defaultValue);
     $attr = BuildAttrString($attributes);
     if (isset(self::$customInputs[$inputType])) {
         return call_user_func_array(self::$customInputs[$inputType], array($fieldName, $inputType, $defaultValue, $possibleValues, $attributes, $noSubmit));
     }
     switch ($inputType) {
         case itNONE:
             $out .= $defaultValue;
             break;
         case itBUTTON:
             if (isset($attributes['class'])) {
                 $attributes['class'] .= ' btn';
             } else {
                 $attributes['class'] = 'btn';
             }
             $attributes['class'] .= ' btn-' . $inputType;
             $attributes['class'] = str_replace('inputtype ', '', $attributes['class']);
             $attr = BuildAttrString($attributes);
             $out .= '<button' . $attr . '>' . $defaultValue . '</button>';
             break;
         case itSUBMIT:
             if (isset($attributes['class'])) {
                 $attributes['class'] .= ' btn';
             } else {
                 $attributes['class'] = 'btn';
             }
             $attributes['class'] .= ' btn-' . $inputType;
             $attributes['class'] = str_replace('inputtype ', '', $attributes['class']);
             $attr = BuildAttrString($attributes);
             $out .= '<input' . $attr . ' type="submit" value="' . $defaultValue . '"/>';
             break;
         case itRESET:
             if (isset($attributes['class'])) {
                 $attributes['class'] .= ' btn';
             } else {
                 $attributes['class'] = 'btn';
             }
             $attributes['class'] .= ' btn-' . $inputType;
             $attributes['class'] = str_replace('inputtype ', '', $attributes['class']);
             $attr = BuildAttrString($attributes);
             $out .= '<input' . $attr . ' type="reset" value="' . $defaultValue . '"/>';
             break;
         case itCHECKBOX:
             if (is_array($possibleValues)) {
                 $at = array();
                 if (isset($attributes['styles'])) {
                     $at['styles'] = $attributes['styles'];
                 }
                 $at = BuildAttrString($at);
                 if (!preg_match('/^usql\\-/', $fieldName)) {
                     $attributes['name'] = $attributes['name'] . '[]';
                     $attr = BuildAttrString($attributes);
                 }
                 $out .= '<span' . $at . ' class="inputtype inputtype-checkboxlist">';
                 foreach ($possibleValues as $key => $val) {
                     $checked = (string) $key === $defaultValue || is_array($defaultValue) && in_array($key, $defaultValue) ? ' checked="checked"' : '';
                     $val = htmlentities($val, ENT_COMPAT, CHARSET_ENCODING);
                     $out .= "<label><input{$attr} type=\"checkbox\"{$checked} value=\"{$key}\"/>{$val}</label>";
                 }
                 $out .= '</span>';
             } else {
                 $checked = $defaultValue == 1 ? ' checked="checked"' : '';
                 $out .= "<input{$attr} type=\"checkbox\"{$checked} value=\"1\"/>";
             }
             break;
         case itOPTION:
             if (!is_array($possibleValues)) {
                 ErrorLog('Option field specified but no possible values found');
                 return '';
             }
             $count = 0;
             $defaultExists = false;
             foreach ($possibleValues as $key => $val) {
                 $count++;
                 $attributes['id'] = "{$fieldName}-{$count}";
                 $attr = BuildAttrString($attributes);
                 $checked = $key == $defaultValue || is_array($defaultValue) && in_array($key, $defaultValue) ? ' checked="checked"' : '';
                 if ($checked != '') {
                     $defaultExists = true;
                 }
                 $out .= "<input type=\"radio\" {$attr} value=\"{$key}\"{$checked}/>{$val}<br/>";
             }
             if (!$defaultExists && $defaultValue != '') {
                 $out .= "<input type=\"radio\" {$attr} value=\"{$val}\" checked=\"true\">{$defaultValue}";
             }
             break;
         case itPASSWORD:
         case itPLAINPASSWORD:
             $out .= "<input type=\"password\" {$attr} value=\"\"/>";
             break;
         case itTEXT:
             $defaultValue = str_replace('"', '&quot;', $defaultValue);
             $out .= "<input type=\"text\" {$attr} value=\"{$defaultValue}\"/>";
             break;
         case itTEXTAREA:
             //sanitise value.
             if (!utopia::SanitiseValue($defaultValue, 'string') && !utopia::SanitiseValue($defaultValue, 'NULL')) {
                 $defaultValue = 'Value has been sanitised: ' . var_export($defaultValue, true);
             }
             $defaultValue = htmlentities($defaultValue, ENT_COMPAT, CHARSET_ENCODING);
             $out .= "<textarea {$attr}>{$defaultValue}</textarea>";
             break;
         case itCOMBO:
             if (empty($possibleValues)) {
                 $possibleValues = array();
             }
             $out .= "<select {$attr}>";
             if (!isset($possibleValues[''])) {
                 // blank value does not exist.
                 if (isset($attributes['placeholder']) && $attributes['placeholder'] && !isset($possibleValues[$attributes['placeholder']])) {
                     $blankVal = $attributes['placeholder'];
                 } else {
                     $blankVal = '&nbsp;';
                 }
                 $possibleValues = array('' => $blankVal) + $possibleValues;
             } else {
                 // blank value exists, ensure it is at the top.
                 $v = $possibleValues[''];
                 unset($possibleValues['']);
                 $possibleValues = array('' => $v) + $possibleValues;
             }
             $defaultExists = false;
             if (is_array($possibleValues)) {
                 foreach ($possibleValues as $key => $val) {
                     if ($val === false) {
                         continue;
                     }
                     $selected = '';
                     if ($defaultValue !== '' && (is_array($defaultValue) && in_array($key, $defaultValue) || (string) $key === (string) $defaultValue)) {
                         $defaultExists = true;
                         $selected = ' selected="selected"';
                     }
                     $valOutput = $key !== $val ? " value=\"{$key}\"" : '';
                     $out .= "<option{$valOutput}{$selected}>{$val}</option>";
                 }
             }
             if (!$defaultExists && $defaultValue) {
                 $out .= "<optgroup label=\"No longer available\"><option selected=\"selected\">{$defaultValue}</option></optgroup>";
             }
             $out .= "</select>";
             break;
         case itLISTBOX:
             if (!is_array($possibleValues)) {
                 ErrorLog('Listbox field specified but no possible values found');
                 return '';
             }
             $out .= "<select size=5 {$attr}><option value=\"\"></option>";
             foreach ($possibleValues as $name => $val) {
                 if (empty($val)) {
                     continue;
                 }
                 $selected = $val == $defaultValue || is_array($defaultValue) && in_array($val, $defaultValue) ? ' selected="selected"' : '';
                 $out .= "<option value=\"{$val}\"{$selected}>{$name}</option>";
             }
             $out .= "</select>";
             break;
         case itFILE:
             //$defaultValue = htmlentities($defaultValue,ENT_QUOTES,CHARSET_ENCODING);
             //$defaultValue = htmlentities($defaultValue);
             $out .= "<input type=\"file\" {$attr}/>";
             break;
         case itDATE:
             //$formattedVal = ($defaultValue === SQL_FORMAT_EMPTY_TIMESTAMP) || ($defaultValue === SQL_FORMAT_EMPTY_DATE) || ($defaultValue === NULL) || ($defaultValue === '') ? '' : $defaultValue;//date('d/m/Y',strptime($defaultValue,'d/m/Y'));
             $formattedVal = $defaultValue;
             $out .= "<input type=\"text\" {$attr} value=\"{$formattedVal}\"/>";
             break;
         default:
             $defaultValue = str_replace('"', '&quot;', $defaultValue);
             $out .= "<input type=\"{$inputType}\" {$attr} value=\"{$defaultValue}\"/>";
             break;
     }
     return $out;
 }