/** * @see parent::getFormHtmlElement() */ function getFormHtmlElement($object, $params, $value, $className) { $field = CMbString::htmlSpecialChars($this->fieldName); $value = CMbString::htmlSpecialChars($value); $class = CMbString::htmlSpecialChars("{$className} {$this->prop}"); $form = CMbArray::extract($params, "form"); $extra = CMbArray::makeXmlAttributes($params); return "<input type=\"tel\" name=\"{$field}\" value=\"{$value}\" class=\"{$class} styled-element\" {$extra} />"; }
/** * @see parent::getFormHtmlElement() */ function getFormHtmlElement($object, $params, $value, $className) { $field = CMbString::htmlSpecialChars($this->fieldName); $form = CMbArray::extract($params, "form"); $extra = CMbArray::makeXmlAttributes($params); $readonly = CMbArray::extract($params, "readonly"); $default_color = $this->default ? $this->default : "ffffff"; $reset_value = $this->notNull ? $default_color : ""; $bg_reset = $reset_value ? "#{$reset_value}" : "transparent"; $value = !$value && ($this->notNull || $this->default) ? $default_color : $value; $sHtml = "\n <input type=\"text\" class=\"color_picker\" name=\"{$field}\" value=\"{$value}\" {$extra} />\n <button type=\"button\" onclick=\"var elem = \$(this).previous('input'); \$V(elem, '{$reset_value}', true); elem.setStyle({backgroundColor: '{$bg_reset}'});\" class='cancel notext'></button>\n "; if ($form && !$readonly) { $js_params = "{}"; if (!$this->notNull) { $js_params = "{required:false}"; } $sHtml .= "<script type=\"text/javascript\">\n Main.add(function(){\n var _e = getForm('" . $form . "').elements['" . $field . "'];\n new jscolor.color(_e, {$js_params});\n })\n </script>"; } return $sHtml; }
/** * @see parent::getFormHtmlElement() */ function getFormHtmlElement($object, $params, $value, $className) { $form = CMbArray::extract($params, "form"); // needs to be extracted $field = CMbString::htmlSpecialChars($this->fieldName); $extra = CMbArray::makeXmlAttributes($params); $sHtml = '<input type="password" name="' . $field . '" class="' . CMbString::htmlSpecialChars(trim($className . ' ' . $this->prop)) . ' styled-element" '; if ($this->revealable) { $sHtml .= ' value="' . CMbString::htmlSpecialChars($value) . '" '; } $sHtml .= $extra . ' />'; if ($this->revealable) { $sHtml .= '<button class="lookup notext" type="button" onclick="var i=$(this).previous(\'input\');i.type=(i.type==\'password\')?\'text\':\'password\'"></button>'; } if ($this->randomizable) { $random_call = "getRandomPassword('{$object->_class}', '{$field}');"; $title = CAppUI::tr("common-action-Get random password"); $sHtml .= '<button class="change notext" type="button" onclick="' . $random_call . '" title="' . $title . '"></button>'; } $sHtml .= '<span id="' . $field . '_message"></span>'; return $sHtml; }
/** * @see parent::getFormHtmlElement() */ function getFormHtmlElement($object, $params, $value, $className) { $sHtml = ""; $field = CMbString::htmlSpecialChars($this->fieldName); $typeEnum = CMbArray::extract($params, "typeEnum", $this->typeEnum ? $this->typeEnum : "radio"); $separator = CMbArray::extract($params, "separator"); $disabled = CMbArray::extract($params, "disabled"); $readonly = CMbArray::extract($params, "readonly"); $default = CMbArray::extract($params, "default", $this->default); $form = CMbArray::extract($params, "form"); // needs to be extracted $className = CMbString::htmlSpecialChars(trim("{$className} {$this->prop}")); $extra = CMbArray::makeXmlAttributes($params); // Empty label if ($emptyLabel = CMbArray::extract($params, "emptyLabel")) { $emptyLabel = "— " . CAppUI::tr($emptyLabel); } switch ($typeEnum) { case "radio": // Attributes for all inputs $attributes = array("type" => "radio", "name" => $field); if (null === $value) { $value = "{$default}"; } for ($i = 1; $i >= 0; $i--) { $attributes["value"] = "{$i}"; $attributes["checked"] = $value === "{$i}" ? "checked" : null; $attributes["disabled"] = $disabled === "{$i}" || $readonly ? "disabled" : null; $attributes["class"] = $className; $xmlAttributes = CMbArray::makeXmlAttributes($attributes); $sHtml .= "\n<input {$xmlAttributes} {$extra} />"; $sTr = CAppUI::tr("bool.{$i}"); $sHtml .= "\n<label for=\"{$field}_{$i}\">{$sTr}</label> "; if ($separator && $i != 0) { $sHtml .= "\n{$separator}"; } } return $sHtml; case "checkbox": $disabled = $readonly ? "disabled=\"1\"" : $disabled; if (null === $value) { $value = "{$default}"; } if ($value !== null && $value == 1) { $checked = " checked=\"checked\""; } else { $checked = ""; $value = "0"; } $sHtml = '<input type="checkbox" name="__' . $field . '" onclick="$V(this.form.' . $field . ', $V(this)?1:0);" ' . $checked . ' ' . $disabled . ' />'; $sHtml .= '<input type="hidden" name="' . $field . '" ' . $extra . ' value="' . $value . '" />'; return $sHtml; case "select": $disabled = $readonly ? "disabled=\"1\"" : $disabled; $sHtml = "<select name=\"{$field}\" class=\"{$className}\" {$disabled} {$extra}>"; if ($emptyLabel) { if ($value === null) { $sHtml .= "\n<option value=\"\" selected=\"selected\">{$emptyLabel}</option>"; } else { $sHtml .= "\n<option value=\"\">{$emptyLabel}</option>"; } } foreach ($this->_locales as $key => $item) { if ($value !== null && $value === "{$key}" || $value === null && "{$key}" === "{$this->default}" && !$emptyLabel) { $selected = " selected=\"selected\""; } else { $selected = ""; } $sHtml .= "\n<option value=\"{$key}\" {$selected}>{$item}</option>"; } $sHtml .= "\n</select>"; return $sHtml; } }
public function testMakeXmlAttributesHasRightReturn() { $array = array("key" => "val"); $this->assertEquals('', $this->stub->makeXmlAttributes(array())); $this->assertEquals("key=\"val\" ", $this->stub->makeXmlAttributes($array)); }
/** * @see parent::getFormHtmlElement() */ function getFormHtmlElement($object, $params, $value, $className) { $field = CMbString::htmlSpecialChars($this->fieldName); $locales = $this->_locales; $typeEnum = CMbArray::extract($params, "typeEnum", $this->typeEnum ? $this->typeEnum : "checkbox"); $separator = CMbArray::extract($params, "separator", $this->vertical ? "<br />" : null); $cycle = CMbArray::extract($params, "cycle", 1); $alphabet = CMbArray::extract($params, "alphabet", false); $size = CMbArray::extract($params, "size", 0); $onchange = CMbArray::get($params, "onchange"); $form = CMbArray::extract($params, "form"); // needs to be extracted $readonly = CMbArray::extract($params, "readonly") == 1; $extra = CMbArray::makeXmlAttributes($params); $className = CMbString::htmlSpecialChars(trim("{$className} {$this->prop}")); if ($alphabet) { asort($locales); } $uid = uniqid(); $value_array = $this->getListValues($value); switch ($typeEnum) { case "select": if ($readonly) { $readonly = "readonly"; } $sHtml = "<script type=\"text/javascript\">\n Main.add(function(){\n var select = \$\$('select[data-select_set={$uid}]')[0],\n element = select.previous(),\n tokenField = new TokenField(element, {" . ($onchange ? "onChange: function(){ {$onchange} }.bind(element)" : "") . "});\n\n select.observe('change', function(event){\n tokenField.setValues(\$A(select.options).filter(function(o){return o.selected}).pluck('value'));\n\n element.fire('ui:change');\n });\n });\n </script>"; $sHtml .= "<input type=\"hidden\" name=\"{$field}\" value=\"{$value}\" class=\"{$className}\" {$extra} />\n"; $sHtml .= "<select class=\"{$className}\" multiple=\"multiple\" size=\"{$size}\" data-select_set=\"{$uid}\" {$extra} {$readonly}>"; foreach ($locales as $key => $item) { if (!empty($value_array) && in_array($key, $value_array)) { $selected = " selected=\"selected\""; } else { $selected = ""; } $sHtml .= "\n<option value=\"{$key}\" {$selected}>{$item}</option>"; } $sHtml .= "\n</select>"; break; default: case "checkbox": $sHtml = "<span id=\"set-container-{$uid}\">\n"; $sHtml .= "<input type=\"hidden\" name=\"{$field}\" value=\"{$value}\" class=\"{$className}\" {$extra} />\n"; $sHtml .= "<script type=\"text/javascript\">\n Main.add(function(){\n var cont = \$('set-container-{$uid}'),\n element = cont.down('input[type=hidden]'),\n tokenField = new TokenField(element, {" . ($onchange ? "onChange: function(){ {$onchange} }.bind(element)" : "") . "});\n\n cont.select('input[type=checkbox]').invoke('observe', 'click', function(event){\n var elt = Event.element(event);\n tokenField.toggle(elt.value, elt.checked);\n\n element.fire('ui:change');\n });\n });\n </script>"; $compteur = 0; if ($readonly) { $readonly = "disabled"; } foreach ($locales as $key => $item) { $selected = ""; if (!empty($value_array) && in_array($key, $value_array)) { $selected = " checked=\"checked\""; } $sHtml .= "\n<label>\n <input type=\"checkbox\" name=\"_{$field}_{$key}\" value=\"{$key}\" class=\"set-checkbox token{$uid}\" {$selected} {$readonly} />\n {$item}\n </label> "; $compteur++; $modulo = $compteur % $cycle; if ($separator != null && $modulo == 0 && $compteur < count($locales)) { $sHtml .= $separator; } } $sHtml .= "</span>\n"; } return $sHtml; }
/** * @see parent::getFormHtmlElement() */ function getFormHtmlElement($object, $params, $value, $className) { $field = CMbString::htmlSpecialChars($this->fieldName); $typeEnum = CMbArray::extract($params, "typeEnum", $this->typeEnum ? $this->typeEnum : "select"); $columns = CMbArray::extract($params, "columns", $this->columns ? $this->columns : 1); $separator = CMbArray::extract($params, "separator"); $cycle = CMbArray::extract($params, "cycle", 1); $alphabet = CMbArray::extract($params, "alphabet", false); $form = CMbArray::extract($params, "form"); // needs to be extracted // Empty label if ($emptyLabel = CMbArray::extract($params, "emptyLabel")) { $emptyLabel = CAppUI::tr($emptyLabel); } // Extra info por HTML generation $extra = CMbArray::makeXmlAttributes($params); $locales = $this->_locales; $className = CMbString::htmlSpecialChars(trim("{$className} {$this->prop}")); $html = ""; // Alpha sorting if ($alphabet) { asort($locales); } // Turn readonly to disabled $readonly = CMbArray::extract($params, "readonly"); $disabled = $readonly ? "disabled=\"1\"" : ""; switch ($typeEnum) { default: case "select": $html .= "<select name=\"{$field}\" class=\"{$className}\" {$disabled} {$extra}>"; // Empty option label if ($emptyLabel) { $emptyLabel = "— {$emptyLabel}"; if ($value === null) { $html .= "\n<option value=\"\" selected=\"selected\">{$emptyLabel}</option>"; } else { $html .= "\n<option value=\"\">{$emptyLabel}</option>"; } } // All other options foreach ($locales as $key => $item) { $selected = ""; if ($value !== null && $value === "{$key}" || $value === null && "{$key}" === "{$this->default}" && !$emptyLabel) { $selected = " selected=\"selected\""; } $html .= "\n<option value=\"{$key}\" {$selected}>{$item}</option>"; } $html .= "\n</select>"; return $html; case "radio": $compteur = 0; // Empty radio label if ($emptyLabel) { if ($value === null) { $html .= "\n<input type=\"radio\" name=\"{$field}\" value=\"\" checked=\"checked\" />"; } else { $html .= "\n<input type=\"radio\" name=\"{$field}\" value=\"\" />"; } $html .= "<label for=\"{$field}_\">{$emptyLabel}</label> "; } // All other radios foreach ($locales as $key => $item) { $selected = ""; if ($value !== null && $value === "{$key}" || $value === null && "{$key}" === "{$this->default}") { $selected = " checked=\"checked\""; } $html .= "\n<input type=\"radio\" name=\"{$field}\" value=\"{$key}\" {$selected} class=\"{$className}\" {$disabled} {$extra} />\n <label for=\"{$field}_{$key}\">{$item}</label> "; $compteur++; $modulo = $compteur % $cycle; if ($separator != null && $modulo == 0 && $compteur < count($locales)) { $html .= $separator; } if ($this->vertical) { $html .= "<br />\n"; } } return $html; } }
/** * @param array $params Template params: * - options : array of objects with IDs * - choose : string alternative for Choose default option * - size : interger for size of text input * @see classes/CMbFieldSpec#getFormHtmlElement($object, $params, $value, $className) * * @return string */ function getFormHtmlElement($object, $params, $value, $className) { if ($options = CMbArray::extract($params, "options")) { $field = CMbString::htmlSpecialChars($this->fieldName); $className = CMbString::htmlSpecialChars(trim("{$className} {$this->prop}")); $extra = CMbArray::makeXmlAttributes($params); $choose = CMbArray::extract($params, "choose", "Choose"); $choose = CAppUI::tr($choose); $html = "\n<select name=\"{$field}\" class=\"{$className}\" {$extra}>"; $html .= "\n<option value=\"\">— {$choose}</option>"; foreach ($options as $_option) { $selected = $value == $_option->_id ? "selected=\"selected\"" : ""; $html .= "\n<option value=\"{$_option->_id}\" {$selected}>{$_option->_view}</option>"; } $html .= "\n</select>"; return $html; } CMbArray::defaultValue($params, "size", 25); return $this->getFormElementText($object, $params, $value, $className); }
/** * Get an HTML form datetime input corresponding to the bound object value * * @param object $object Object holding the field * @param array $params Extra parameters * @param string $value The actual value * @param string $className Extra CSS class name * @param string $format Optional datetime format * * @return string HTML form datetime string */ function getFormElementDateTime($object, $params, $value, $className, $format = "%d/%m/%Y %H:%M") { if ($object->_locked) { $params["readonly"] = "readonly"; } $class = CMbString::htmlSpecialChars(trim("{$className} {$this->prop}")); $field = CMbString::htmlSpecialChars($this->fieldName); // Format the date $date = ""; if ($value && $value != '0000-00-00' && $value != '00:00:00' && $value != '0000-00-00 00:00:00') { $date = $this instanceof CDateSpec && $this->progressive ? $this->getValue($object, null, $params) : CMbDT::format($value, $format); } $form = CMbArray::extract($params, "form"); $register = CMbArray::extract($params, "register"); $style = CMbArray::extract($params, "style"); $tabindex = CMbArray::extract($params, "tabindex"); $readonly = CMbArray::get($params, "readonly"); $extra = CMbArray::makeXmlAttributes($params); $html = array(); $html[] = '<input name="' . $field . '_da" type="text" value="' . $date . '" class="' . $class . ' styled-element" readonly="readonly" ' . (isset($tabindex) ? 'tabindex="' . $tabindex . '" ' : '') . ' style="' . $style . '" />'; $html[] = '<input name="' . $field . '" type="hidden" value="' . $value . '" class="' . $class . '" ' . $extra . ' data-visual-element="' . $field . '_da" />'; if ($form && !$readonly && ($register || $this instanceof CTimeSpec)) { $register = $this instanceof CDateSpec && $this->progressive ? 'regProgressiveField' : 'regField'; $html[] = '<script type="text/javascript"> Main.add(function(){Calendar.' . $register . '(getForm("' . $form . '").elements["' . $field . '"])}) </script>'; } return implode("\n", $html); }