priority = 50;
$this->enabled = true;
}
/**
* Echoes any HTML to show before the view template
*
* @param string $view The current view
* @param string $task The current task
* @param F0FInput $input The input array (request parameters)
* @param array $config The view configuration array
*
* @return void
*/
public function preRender($view, $task, $input, $config = array())
{
$format = $input->getCmd('format', 'html');
if (empty($format))
{
$format = 'html';
}
if ($format != 'html')
{
return;
}
$platform = F0FPlatform::getInstance();
if ($platform->isCli())
{
return;
}
if (version_compare(JVERSION, '3.0.0', 'lt'))
{
JHtml::_('behavior.framework');
}
else
{
if (version_compare(JVERSION, '3.3.0', 'ge'))
{
JHtml::_('behavior.core');
}
else
{
JHtml::_('behavior.framework', true);
}
JHtml::_('jquery.framework');
}
// Wrap output in various classes
$version = new JVersion;
$versionParts = explode('.', $version->RELEASE);
$minorVersion = str_replace('.', '', $version->RELEASE);
$majorVersion = array_shift($versionParts);
if ($platform->isBackend())
{
$area = $platform->isBackend() ? 'admin' : 'site';
$option = $input->getCmd('option', '');
$view = $input->getCmd('view', '');
$layout = $input->getCmd('layout', '');
$task = $input->getCmd('task', '');
$classes = array(
'joomla-version-' . $majorVersion,
'joomla-version-' . $minorVersion,
$area,
$option,
'view-' . $view,
'layout-' . $layout,
'task-' . $task,
);
}
elseif ($platform->isFrontend())
{
// @TODO: Remove the frontend Joomla! version classes in FOF 3
$classes = array(
'joomla-version-' . $majorVersion,
'joomla-version-' . $minorVersion,
);
}
echo '
\n";
// Render submenu and toolbar (only if asked to)
if ($input->getBool('render_toolbar', true))
{
$this->renderButtons($view, $task, $input, $config);
$this->renderLinkbar($view, $task, $input, $config);
}
}
/**
* Echoes any HTML to show after the view template
*
* @param string $view The current view
* @param string $task The current task
* @param F0FInput $input The input array (request parameters)
* @param array $config The view configuration array
*
* @return void
*/
public function postRender($view, $task, $input, $config = array())
{
$format = $input->getCmd('format', 'html');
if (empty($format))
{
$format = 'html';
}
if ($format != 'html')
{
return;
}
// Closing tag only if we're not in CLI
if (F0FPlatform::getInstance()->isCli())
{
return;
}
echo "
\n"; // Closes akeeba-renderjoomla div
}
/**
* Renders a F0FForm for a Browse view and returns the corresponding HTML
*
* @param F0FForm &$form The form to render
* @param F0FModel $model The model providing our data
* @param F0FInput $input The input object
*
* @return string The HTML rendering of the form
*/
protected function renderFormBrowse(F0FForm &$form, F0FModel $model, F0FInput $input)
{
JHtml::_('behavior.multiselect');
// Getting all header row elements
$headerFields = $form->getHeaderset();
// Start the form
$html = '';
$filter_order = $form->getView()->getLists()->order;
$filter_order_Dir = $form->getView()->getLists()->order_Dir;
$actionUrl = F0FPlatform::getInstance()->isBackend() ? 'index.php' : JUri::root().'index.php';
if (F0FPlatform::getInstance()->isFrontend() && ($input->getCmd('Itemid', 0) != 0))
{
$itemid = $input->getCmd('Itemid', 0);
$uri = new JUri($actionUrl);
if ($itemid)
{
$uri->setVar('Itemid', $itemid);
}
$actionUrl = JRoute::_($uri->toString());
}
$html .= '' . PHP_EOL;
return $html;
}
/**
* Renders a F0FForm for a Read view and returns the corresponding HTML
*
* @param F0FForm &$form The form to render
* @param F0FModel $model The model providing our data
* @param F0FInput $input The input object
*
* @return string The HTML rendering of the form
*/
protected function renderFormRead(F0FForm &$form, F0FModel $model, F0FInput $input)
{
$html = $this->renderFormRaw($form, $model, $input, 'read');
return $html;
}
/**
* Renders a F0FForm for an Edit view and returns the corresponding HTML
*
* @param F0FForm &$form The form to render
* @param F0FModel $model The model providing our data
* @param F0FInput $input The input object
*
* @return string The HTML rendering of the form
*/
protected function renderFormEdit(F0FForm &$form, F0FModel $model, F0FInput $input)
{
// Get the key for this model's table
$key = $model->getTable()->getKeyName();
$keyValue = $model->getId();
JHTML::_('behavior.tooltip');
$html = '';
$validate = strtolower($form->getAttribute('validate'));
$class = '';
if (in_array($validate, array('true', 'yes', '1', 'on')))
{
JHtml::_('behavior.formvalidation');
$class = 'form-validate ';
$this->loadValidationScript($form);
}
// Check form enctype. Use enctype="multipart/form-data" to upload binary files in your form.
$template_form_enctype = $form->getAttribute('enctype');
if (!empty($template_form_enctype))
{
$enctype = ' enctype="' . $form->getAttribute('enctype') . '" ';
}
else
{
$enctype = '';
}
// Check form name. Use name="yourformname" to modify the name of your form.
$formname = $form->getAttribute('name');
if (empty($formname))
{
$formname = 'adminForm';
}
// Check form ID. Use id="yourformname" to modify the id of your form.
$formid = $form->getAttribute('name');
if (empty($formid))
{
$formid = 'adminForm';
}
// Check if we have a custom task
$customTask = $form->getAttribute('customTask');
if (empty($customTask))
{
$customTask = '';
}
// Get the form action URL
$actionUrl = F0FPlatform::getInstance()->isBackend() ? 'index.php' : JUri::root().'index.php';
if (F0FPlatform::getInstance()->isFrontend() && ($input->getCmd('Itemid', 0) != 0))
{
$itemid = $input->getCmd('Itemid', 0);
$uri = new JUri($actionUrl);
if ($itemid)
{
$uri->setVar('Itemid', $itemid);
}
$actionUrl = JRoute::_($uri->toString());
}
$html .= '';
return $html;
}
/**
* Renders a raw F0FForm and returns the corresponding HTML
*
* @param F0FForm &$form The form to render
* @param F0FModel $model The model providing our data
* @param F0FInput $input The input object
* @param string $formType The form type e.g. 'edit' or 'read'
*
* @return string The HTML rendering of the form
*/
protected function renderFormRaw(F0FForm &$form, F0FModel $model, F0FInput $input, $formType)
{
$html = '';
foreach ($form->getFieldsets() as $fieldset)
{
$html .= $this->renderFieldset($fieldset, $form, $model, $input, $formType, false);
}
return $html;
}
/**
* Renders a raw fieldset of a F0FForm and returns the corresponding HTML
*
* @param stdClass &$fieldset The fieldset to render
* @param F0FForm &$form The form to render
* @param F0FModel $model The model providing our data
* @param F0FInput $input The input object
* @param string $formType The form type e.g. 'edit' or 'read'
* @param boolean $showHeader Should I render the fieldset's header?
*
* @return string The HTML rendering of the fieldset
*/
protected function renderFieldset(stdClass &$fieldset, F0FForm &$form, F0FModel $model, F0FInput $input, $formType, $showHeader = true)
{
$html = '';
$fields = $form->getFieldset($fieldset->name);
if (isset($fieldset->class))
{
$class = 'class="' . $fieldset->class . '"';
}
else
{
$class = '';
}
$element = empty($fields) ? 'div' : 'fieldset';
$html .= "\t" . '<' . $element . ' id="' . $fieldset->name . '" ' . $class . '>' . PHP_EOL;
$isTabbedFieldset = $this->isTabFieldset($fieldset);
if (isset($fieldset->label) && !empty($fieldset->label) && !$isTabbedFieldset)
{
$html .= "\t\t" . '
' . JText::_($fieldset->label) . '
' . PHP_EOL;
}
foreach ($fields as $field)
{
$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);
if (empty($title) && !$emptylabel)
{
$model->getName();
$title = strtoupper($input->get('option') . '_' . $model->getName() . '_' . $field->id . '_LABEL');
}
// Field description
$description = $form->getFieldAttribute($field->fieldname, 'description', '', $field->group);
/**
* The following code is backwards incompatible. Most forms don't require a description in their form
* fields. Having to use emptydescription="1" on each one of them is an overkill. Removed.
*/
/*
$emptydescription = $form->getFieldAttribute($field->fieldname, 'emptydescription', false, $field->group);
if (empty($description) && !$emptydescription)
{
$description = strtoupper($input->get('option') . '_' . $model->getName() . '_' . $field->id . '_DESC');
}
*/
if ($formType == 'read')
{
$inputField = $field->static;
}
elseif ($formType == 'edit')
{
$inputField = $field->input;
}
if (empty($title))
{
$html .= "\t\t\t" . $inputField . PHP_EOL;
if (!empty($description) && $formType == 'edit')
{
$html .= "\t\t\t\t" . '';
$html .= JText::_($description) . '' . PHP_EOL;
}
}
else
{
$html .= "\t\t\t" . '