* @copyright Copyright © Christoffer Niska 2011-
* @license http://www.opensource.org/licenses/bsd-license.php New BSD License
* @package bootstrap.widgets.input
*/
Yii::import('bootstrap.widgets.input.TbInput');
/**
* Bootstrap horizontal form input widget.
* @since 0.9.8
*/
class TbInputHorizontal extends TbInput
{
/**
* Runs the widget.
*/
public function run()
{
echo CHtml::openTag('div', array('class' => 'control-group ' . $this->getContainerCssClass()));
parent::run();
echo '';
}
/**
* Returns the label for this block.
* @return string the label
*/
protected function getLabel()
{
if (isset($this->labelOptions['class']))
$this->labelOptions['class'] .= ' control-label';
else
$this->labelOptions['class'] = 'control-label';
return parent::getLabel();
}
/**
* Renders a checkbox.
* @return string the rendered content
*/
protected function checkBox()
{
$attribute = $this->attribute;
echo '
';
echo '';
echo $this->form->checkBox($this->model, $attribute, $this->htmlOptions) . PHP_EOL;
echo $this->model->getAttributeLabel($attribute);
echo $this->getError() . $this->getHint();
echo '
';
}
/**
* Renders a toogle button
* @return string the rendered content
*/
protected function toggleButton()
{
// widget configuration is set on htmlOptions['options']
$options = array(
'model' => $this->model,
'attribute' => $this->attribute
);
if (isset($this->htmlOptions['options']))
{
$options = CMap::mergeArray($options, $this->htmlOptions['options']);
unset($this->htmlOptions['options']);
}
$options['htmlOptions'] = $this->htmlOptions;
echo $this->getLabel();
echo '';
$this->widget('bootstrap.widgets.TbToggleButton', $options);
echo $this->getError() . $this->getHint();
echo '
';
}
/**
* Renders a list of checkboxes.
* @return string the rendered content
*/
protected function checkBoxList()
{
echo $this->getLabel();
echo '';
echo $this->form->checkBoxList($this->model, $this->attribute, $this->data, $this->htmlOptions);
echo $this->getError() . $this->getHint();
echo '
';
}
/**
* Renders a list of inline checkboxes.
* @return string the rendered content
*/
protected function checkBoxListInline()
{
$this->htmlOptions['inline'] = true;
$this->checkBoxList();
}
/**
* Renders a drop down list (select).
* @return string the rendered content
*/
protected function dropDownList()
{
echo $this->getLabel();
echo '';
echo $this->form->dropDownList($this->model, $this->attribute, $this->data, $this->htmlOptions);
echo $this->getError() . $this->getHint();
echo '
';
}
/**
* Renders a file field.
* @return string the rendered content
*/
protected function fileField()
{
echo $this->getLabel();
echo '';
echo $this->form->fileField($this->model, $this->attribute, $this->htmlOptions);
echo $this->getError() . $this->getHint();
echo '
';
}
/**
* Renders a password field.
* @return string the rendered content
*/
protected function passwordField()
{
echo $this->getLabel();
echo '';
echo $this->getPrepend();
echo $this->form->passwordField($this->model, $this->attribute, $this->htmlOptions);
echo $this->getAppend();
echo $this->getError() . $this->getHint();
echo '
';
}
/**
* Renders a radio button.
* @return string the rendered content
*/
protected function radioButton()
{
$attribute = $this->attribute;
echo '';
echo '';
echo $this->form->radioButton($this->model, $attribute, $this->htmlOptions) . PHP_EOL;
echo $this->model->getAttributeLabel($attribute);
echo $this->getError() . $this->getHint();
echo '
';
}
/**
* Renders a list of radio buttons.
* @return string the rendered content
*/
protected function radioButtonList()
{
echo $this->getLabel();
echo '';
echo $this->form->radioButtonList($this->model, $this->attribute, $this->data, $this->htmlOptions);
echo $this->getError() . $this->getHint();
echo '
';
}
/**
* Renders a list of inline radio buttons.
* @return string the rendered content
*/
protected function radioButtonListInline()
{
$this->htmlOptions['inline'] = true;
$this->radioButtonList();
}
/**
* Renders a list of radio buttons using Button Groups.
* @return string the rendered content
*/
protected function radioButtonGroupsList()
{
if (isset($this->htmlOptions['for']) && !empty($this->htmlOptions['for'])) {
$label_for = $this->htmlOptions['for'];
unset($this->htmlOptions['for']);
} else if (isset($this->data) && !empty($this->data)) {
$label_for = CHtml::getIdByName(get_class($this->model) . '[' . $this->attribute . '][' . key($this->data) . ']');
}
if (isset($label_for)) {
$this->labelOptions = array('for' => $label_for);
}
$this->htmlOptions['class'] = 'pull-left';
echo $this->getLabel();
echo '';
echo $this->form->radioButtonGroupsList($this->model, $this->attribute, $this->data, $this->htmlOptions);
echo $this->getError().$this->getHint();
echo '
';
}
/**
* Renders a textarea.
* @return string the rendered content
*/
protected function textArea()
{
echo $this->getLabel();
echo '';
echo $this->form->textArea($this->model, $this->attribute, $this->htmlOptions);
echo $this->getError() . $this->getHint();
echo '
';
}
/**
* Renders a text field.
* @return string the rendered content
*/
protected function textField()
{
echo $this->getLabel();
echo '';
echo $this->getPrepend();
echo $this->form->textField($this->model, $this->attribute, $this->htmlOptions);
echo $this->getAppend();
echo $this->getError() . $this->getHint();
echo '
';
}
/**
* Renders a CAPTCHA.
* @return string the rendered content
*/
protected function captcha()
{
echo $this->getLabel();
echo '';
echo '
' . $this->widget('CCaptcha', $this->captchaOptions, true) . '
';
echo $this->form->textField($this->model, $this->attribute, $this->htmlOptions);
echo $this->getError() . $this->getHint();
echo '
';
}
/**
* Renders an uneditable field.
* @return string the rendered content
*/
protected function uneditableField()
{
echo $this->getLabel();
echo '';
echo CHtml::tag('span', $this->htmlOptions, $this->model->{$this->attribute});
echo $this->getError() . $this->getHint();
echo '
';
}
/**
* Renders a datepicker field.
* @return string the rendered content
* @author antonio ramirez
*/
protected function datepickerField()
{
if (isset($this->htmlOptions['options']))
{
$options = $this->htmlOptions['options'];
unset($this->htmlOptions['options']);
}
if (isset($this->htmlOptions['events']))
{
$events = $this->htmlOptions['events'];
unset($this->htmlOptions['events']);
}
echo $this->getLabel();
echo '';
echo $this->getPrepend();
$this->widget('bootstrap.widgets.TbDatePicker', array(
'model' => $this->model,
'attribute' => $this->attribute,
'options' => isset($options) ? $options : array(),
'events' => isset($events) ? $events : array(),
'htmlOptions' => $this->htmlOptions,
));
echo $this->getAppend();
echo $this->getError() . $this->getHint();
echo '
';
}
/**
* Renders a colorpicker field.
* @return string the rendered content
* @author antonio ramirez
*/
protected function colorpickerField()
{
$format = 'hex';
if (isset($this->htmlOptions['format']))
{
$format = $this->htmlOptions['format'];
unset($this->htmlOptions['format']);
}
if (isset($this->htmlOptions['events']))
{
$events = $this->htmlOptions['events'];
unset($this->htmlOptions['events']);
}
echo $this->getLabel();
echo '';
echo $this->getPrepend();
$this->widget('bootstrap.widgets.TbColorPicker', array(
'model' => $this->model,
'attribute' => $this->attribute,
'format' => $format,
'events' => isset($events) ? $events : array(),
'htmlOptions' => $this->htmlOptions,
));
echo $this->getAppend();
echo $this->getError() . $this->getHint();
echo '
';
}
/**
* Renders a redactor.
* @return string the rendered content
*/
protected function redactorJs()
{
if (isset($this->htmlOptions['options']))
{
$options = $this->htmlOptions['options'];
unset($this->htmlOptions['options']);
}
if (isset($this->htmlOptions['width']))
{
$width = $this->htmlOptions['width'];
unset($this->htmlOptions['width']);
}
if (isset($this->htmlOptions['height']))
{
$height = $this->htmlOptions['height'];
unset($this->htmlOptions['height']);
}
echo $this->getLabel();
echo '';
$this->widget('bootstrap.widgets.TbRedactorJs', array(
'model' => $this->model,
'attribute' => $this->attribute,
'editorOptions' => isset($options) ? $options : array(),
'width' => isset($width) ? $width : '100%',
'height' => isset($height) ? $height : '400px',
'htmlOptions' => $this->htmlOptions
));
echo $this->getError() . $this->getHint();
echo '
';
}
/**
* Renders a Markdown Editor.
* @return string the rendered content
*/
protected function markdownEditorJs()
{
if (isset($this->htmlOptions['width']))
{
$width = $this->htmlOptions['width'];
unset($this->htmlOptions['width']);
}
if (isset($this->htmlOptions['height']))
{
$height = $this->htmlOptions['height'];
unset($this->htmlOptions['height']);
}
echo $this->getLabel();
echo '';
echo '
';
echo '
';
$this->widget('bootstrap.widgets.TbMarkdownEditorJs', array(
'model' => $this->model,
'attribute' => $this->attribute,
'width' => isset($width) ? $width : '100%',
'height' => isset($height) ? $height : '400px',
'htmlOptions' => $this->htmlOptions
));
echo $this->getError() . $this->getHint();
echo '
';
echo '
'; // wmd-panel
echo '
'; // controls
}
/**
* Renders Bootstrap wysihtml5 editor.
* @return mixed|void
*/
protected function html5Editor()
{
if (isset($this->htmlOptions['options']))
{
$options = $this->htmlOptions['options'];
unset($this->htmlOptions['options']);
}
if (isset($this->htmlOptions['width']))
{
$width = $this->htmlOptions['width'];
unset($this->htmlOptions['width']);
}
if (isset($this->htmlOptions['height']))
{
$height = $this->htmlOptions['height'];
unset($this->htmlOptions['height']);
}
echo $this->getLabel();
echo '';
$this->widget('bootstrap.widgets.TbHtml5Editor', array(
'model' => $this->model,
'attribute' => $this->attribute,
'editorOptions' => isset($options) ? $options : array(),
'width' => isset($width) ? $width : '100%',
'height' => isset($height) ? $height : '400px',
'htmlOptions' => $this->htmlOptions
));
echo $this->getError() . $this->getHint();
echo '
';
}
/**
* Renders a ckEditor.
* @return string the rendered content
* @author antonio ramirez
*/
protected function ckEditor()
{
if (isset($this->htmlOptions['options']))
{
$options = $this->htmlOptions['options'];
unset($this->htmlOptions['options']);
}
echo $this->getLabel();
echo '';
$this->widget('bootstrap.widgets.TbCKEditor', array(
'model' => $this->model,
'attribute' => $this->attribute,
'editorOptions' => isset($options) ? $options : array(),
'htmlOptions' => $this->htmlOptions
));
echo $this->getError() . $this->getHint();
echo '
';
}
/**
* Renders a daterange field.
* @return string the rendered content
* @author antonio ramirez
*/
protected function dateRangeField()
{
if (isset($this->htmlOptions['options']))
{
$options = $this->htmlOptions['options'];
unset($this->htmlOptions['options']);
}
if (isset($options['callback']))
{
$callback = $options['callback'];
unset($options['callback']);
}
echo $this->getLabel();
echo '';
echo $this->getPrepend();
$this->widget('bootstrap.widgets.TbDateRangePicker', array(
'model' => $this->model,
'attribute' => $this->attribute,
'options' => isset($options) ? $options : array(),
'callback' => isset($callback) ? $callback : array(),
'htmlOptions' => $this->htmlOptions,
));
echo $this->getError() . $this->getHint();
echo '
';
}
/**
* Renders a timepicker field.
* @return string the rendered content
* @author Sergii Gamaiunov
*/
protected function timepickerField()
{
if (isset($this->htmlOptions['options']))
{
$options = $this->htmlOptions['options'];
unset($this->htmlOptions['options']);
}
if (isset($this->htmlOptions['events']))
{
$events = $this->htmlOptions['events'];
unset($this->htmlOptions['events']);
}
echo $this->getLabel();
echo '';
echo $this->getPrepend();
$this->widget('bootstrap.widgets.TbTimePicker', array(
'model' => $this->model,
'attribute' => $this->attribute,
'options' => isset($options) ? $options : array(),
'events' => isset($events) ? $events : array(),
'htmlOptions' => $this->htmlOptions,
'form' => $this->form
));
echo $this->getAppend();
echo $this->getError() . $this->getHint();
echo '
';
}
/**
* Renders a select2Field
* @return mixed|void
*/
protected function select2Field()
{
if (isset($this->htmlOptions['options']))
{
$options = $this->htmlOptions['options'];
unset($this->htmlOptions['options']);
}
if (isset($this->htmlOptions['events']))
{
$events = $this->htmlOptions['events'];
unset($this->htmlOptions['events']);
}
if (isset($this->htmlOptions['data']))
{
$data = $this->htmlOptions['data'];
unset($this->htmlOptions['data']);
}
if (isset($this->htmlOptions['asDropDownList']))
{
$asDropDownList = $this->htmlOptions['asDropDownList'];
unset($this->htmlOptions['asDropDownList']);
}
echo $this->getLabel();
echo '';
echo $this->getPrepend();
$this->widget('bootstrap.widgets.TbSelect2', array(
'model' => $this->model,
'attribute' => $this->attribute,
'options' => isset($options) ? $options : array(),
'events' => isset($events) ? $events : array(),
'data' => isset($data) ? $data : array(),
'asDropDownList' => isset($asDropDownList) ? $asDropDownList : true,
'htmlOptions' => $this->htmlOptions,
'form' => $this->form
));
echo $this->getAppend();
echo $this->getError() . $this->getHint();
echo '
';
}
}