2011-01-16 13:51:39 -08:00
|
|
|
<?php
|
|
|
|
|
|
|
|
abstract class AphrontFormControl extends AphrontView {
|
|
|
|
|
|
|
|
private $label;
|
|
|
|
private $caption;
|
|
|
|
private $error;
|
|
|
|
private $name;
|
|
|
|
private $value;
|
2011-01-22 21:09:13 -08:00
|
|
|
private $disabled;
|
2011-01-31 18:05:20 -08:00
|
|
|
private $id;
|
2011-02-04 22:45:42 -08:00
|
|
|
private $controlID;
|
|
|
|
private $controlStyle;
|
2011-01-31 18:05:20 -08:00
|
|
|
|
|
|
|
public function setID($id) {
|
|
|
|
$this->id = $id;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getID() {
|
|
|
|
return $this->id;
|
|
|
|
}
|
2011-01-16 13:51:39 -08:00
|
|
|
|
2011-02-04 22:45:42 -08:00
|
|
|
public function setControlID($control_id) {
|
|
|
|
$this->controlID = $control_id;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getControlID() {
|
|
|
|
return $this->controlID;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function setControlStyle($control_style) {
|
|
|
|
$this->controlStyle = $control_style;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getControlStyle() {
|
|
|
|
return $this->controlStyle;
|
|
|
|
}
|
|
|
|
|
2011-01-16 13:51:39 -08:00
|
|
|
public function setLabel($label) {
|
|
|
|
$this->label = $label;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getLabel() {
|
|
|
|
return $this->label;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function setCaption($caption) {
|
|
|
|
$this->caption = $caption;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getCaption() {
|
|
|
|
return $this->caption;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function setError($error) {
|
|
|
|
$this->error = $error;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getError() {
|
|
|
|
return $this->error;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function setName($name) {
|
|
|
|
$this->name = $name;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getName() {
|
|
|
|
return $this->name;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function setValue($value) {
|
|
|
|
$this->value = $value;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getValue() {
|
|
|
|
return $this->value;
|
|
|
|
}
|
|
|
|
|
2011-01-22 21:09:13 -08:00
|
|
|
public function setDisabled($disabled) {
|
|
|
|
$this->disabled = $disabled;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getDisabled() {
|
|
|
|
return $this->disabled;
|
|
|
|
}
|
|
|
|
|
2011-01-16 13:51:39 -08:00
|
|
|
abstract protected function renderInput();
|
|
|
|
abstract protected function getCustomControlClass();
|
|
|
|
|
2011-01-31 11:55:26 -08:00
|
|
|
protected function shouldRender() {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
2011-01-16 13:51:39 -08:00
|
|
|
final public function render() {
|
2011-01-31 11:55:26 -08:00
|
|
|
if (!$this->shouldRender()) {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
2011-01-16 13:51:39 -08:00
|
|
|
$custom_class = $this->getCustomControlClass();
|
|
|
|
|
|
|
|
if (strlen($this->getLabel())) {
|
|
|
|
$label =
|
2011-01-25 17:40:21 -08:00
|
|
|
'<label class="aphront-form-label">'.
|
2011-01-16 13:51:39 -08:00
|
|
|
phutil_escape_html($this->getLabel()).
|
|
|
|
'</label>';
|
|
|
|
} else {
|
|
|
|
$label = null;
|
|
|
|
$custom_class .= ' aphront-form-control-nolabel';
|
|
|
|
}
|
|
|
|
|
|
|
|
$input =
|
|
|
|
'<div class="aphront-form-input">'.
|
|
|
|
$this->renderInput().
|
|
|
|
'</div>';
|
|
|
|
|
|
|
|
if (strlen($this->getError())) {
|
|
|
|
$error = $this->getError();
|
|
|
|
if ($error === true) {
|
2012-08-15 14:15:12 -07:00
|
|
|
$error =
|
|
|
|
'<div class="aphront-form-error aphront-form-required">'.
|
|
|
|
'Required'.
|
|
|
|
'</div>';
|
2011-01-16 13:51:39 -08:00
|
|
|
} else {
|
2012-08-15 14:15:12 -07:00
|
|
|
$error =
|
|
|
|
'<div class="aphront-form-error">'.
|
|
|
|
phutil_escape_html($error).
|
|
|
|
'</div>';
|
2011-01-16 13:51:39 -08:00
|
|
|
}
|
|
|
|
} else {
|
|
|
|
$error = null;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (strlen($this->getCaption())) {
|
|
|
|
$caption =
|
|
|
|
'<div class="aphront-form-caption">'.
|
2011-01-31 11:55:26 -08:00
|
|
|
$this->getCaption().
|
2011-01-16 13:51:39 -08:00
|
|
|
'</div>';
|
|
|
|
} else {
|
|
|
|
$caption = null;
|
|
|
|
}
|
|
|
|
|
2011-02-04 22:45:42 -08:00
|
|
|
return phutil_render_tag(
|
|
|
|
'div',
|
|
|
|
array(
|
|
|
|
'class' => "aphront-form-control {$custom_class}",
|
|
|
|
'id' => $this->controlID,
|
|
|
|
'style' => $this->controlStyle,
|
|
|
|
),
|
|
|
|
$label.
|
2012-08-15 14:15:12 -07:00
|
|
|
$error.
|
2011-02-04 22:45:42 -08:00
|
|
|
$input.
|
|
|
|
$caption.
|
2012-08-15 14:15:12 -07:00
|
|
|
|
|
|
|
// TODO: Remove this once the redesign finishes up.
|
2011-02-04 22:45:42 -08:00
|
|
|
'<div style="clear: both;"></div>');
|
2011-01-16 13:51:39 -08:00
|
|
|
}
|
|
|
|
}
|