public function renderFieldset(\stdClass &$fieldset, Form &$form, DataModel $model, $formType, $showHeader = true, &$innerHtml = null)
{
$html = '';
$fields = $form->getFieldset($fieldset->name);
if (isset($fieldset->class)) {
$class = 'class="' . $fieldset->class . '"';
} else {
$class = '';
}
if (isset($innerHtml[$fieldset->name])) {
$innerclass = isset($fieldset->innerclass) ? ' class="' . $fieldset->innerclass . '"' : '';
$html .= "\t" . '<div id="' . $fieldset->name . '" ' . $class . '>' . "\n";
$html .= "\t\t" . '<div' . $innerclass . '>' . "\n";
} else {
$html .= "\t" . '<div id="' . $fieldset->name . '" ' . $class . '>' . "\n";
}
$isTabbedFieldset = $this->isTabFieldset($fieldset);
if (isset($fieldset->label) && !empty($fieldset->label) && !$isTabbedFieldset) {
$html .= "\t\t" . '<h3>' . \JText::_($fieldset->label) . '</h3>' . "\n";
}
// Add an external view template, if specified
$sourceTemplate = isset($fieldset->source) ? $fieldset->source : null;
$sourceView = isset($fieldset->source_view) ? $fieldset->source_view : null;
$sourceViewType = isset($fieldset->source_view_type) ? $fieldset->source_view_type : 'html';
$sourceComponent = isset($fieldset->source_component) ? $fieldset->source_component : null;
if (!empty($sourceTemplate)) {
$sourceContainer = empty($sourceComponent) ? $this->container : Container::getInstance($sourceComponent);
if (empty($sourceView)) {
$viewObject = new View($sourceContainer, array('name' => 'FAKE_FORM_VIEW'));
} else {
$viewObject = $sourceContainer->factory->view($sourceView, $sourceViewType);
}
$viewObject->populateFromModel($model);
$html .= $viewObject->loadAnyTemplate($sourceTemplate, array('model' => $model, 'form' => $form, 'fieldset' => $fieldset, 'formType' => $formType, 'innerHtml' => $innerHtml));
}
// Add the fieldset fields
if (!empty($fields)) {
foreach ($fields as $field) {
// TODO see \JFormField::renderField
$groupClass = $form->getFieldAttribute($field->fieldname, 'groupclass', '', $field->group);
// Auto-generate label and description if needed
// Field label
$title = $form->getFieldAttribute($field->fieldname, 'label', '', $field->group);
$emptylabel = $form->getFieldAttribute($field->fieldname, 'emptylabel', false, $field->group);
$label_placement = $form->getFieldAttribute($field->fieldname, 'label_placement', null, $field->group);
if (empty($title) && !$emptylabel) {
$model->getName();
$title = strtoupper($this->container->componentName . '_' . $model->getName() . '_' . $field->id . '_LABEL');
}
if (empty($label_placement)) {
$label_placement = !empty($title) ? 'left' : 'none';
}
// Field description
$description = $form->getFieldAttribute($field->fieldname, 'description', '', $field->group);
$prependText = $form->getFieldAttribute($field->fieldname, 'prepend_text', '', $field->group);
$appendText = $form->getFieldAttribute($field->fieldname, 'append_text', '', $field->group);
if (!empty($prependText)) {
$prependText = \JText::_($prependText);
}
if (!empty($appendText)) {
$appendText = \JText::_($appendText);
}
$inputField = '';
if ($formType == 'read') {
$inputField = $field->static;
}
if ($formType == 'edit') {
$inputField = $field->input;
}
if ($prependText || $appendText) {
$wrapperClass = $prependText ? 'input-prepend' : '';
$wrapperClass .= $appendText ? 'input-append' : '';
}
$renderedLabel = !empty($title) ? $this->renderFieldsetLabel($field, $form, $title) : '';
$renderedLabel = $label_placement == 'empty' ? '' : $renderedLabel;
switch ($label_placement) {
case 'left':
case 'empty':
$html .= "\t\t\t" . '<div class="control-group ' . $groupClass . '">' . "\n";
$html .= "\t\t\t" . $renderedLabel;
$html .= "\t\t\t\t" . '<div class="controls">' . "\n";
break;
case 'top':
$html .= "\t\t\t" . '<div class="' . $groupClass . '">' . "\n";
$html .= "\t\t\t" . $renderedLabel . "<br/>\n";
break;
}
if ($prependText || $appendText) {
$html .= "\t\t\t\t<div class=\"{$wrapperClass}\">\n";
}
if ($prependText) {
$html .= "\t\t\t\t\t<span class=\"add-on\">{$prependText}</span>\n";
}
$html .= "\t\t\t\t\t" . $inputField . "\n";
if ($appendText) {
$html .= "\t\t\t\t\t<span class=\"add-on\">{$appendText}</span>\n";
}
if ($prependText || $appendText) {
$html .= "\t\t\t\t</div>\n";
}
if (!empty($description)) {
$html .= "\t\t\t\t" . '<span class="help-block">';
$html .= \JText::_($description) . '</span>' . "\n";
}
switch ($label_placement) {
case 'left':
case 'empty':
$html .= "\t\t\t\t" . '</div>' . "\n";
$html .= "\t\t\t" . '</div>' . "\n";
break;
case 'top':
$html .= "\t\t\t" . '</div>' . "\n";
break;
case 'bottom':
$html .= "\t\t\t" . '<br/>' . "\n";
$html .= "\t\t\t" . $renderedLabel . "\n";
$html .= "\t\t\t" . '</div>' . "\n";
}
}
}
if (isset($innerHtml[$fieldset->name])) {
$html .= "\t\t" . '</div>' . "\n";
$html .= implode('', $innerHtml[$fieldset->name]) . "\n";
$html .= "\t" . '</div>' . "\n";
} else {
$html .= "\t" . '</div>' . "\n";
}
return $html;
}