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('"', '"', $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 = ' '; } $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('"', '"', $defaultValue); $out .= "<input type=\"{$inputType}\" {$attr} value=\"{$defaultValue}\"/>"; break; } return $out; }