Пример #1
0
 /**
  * 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 .= '<form action="' . $actionUrl . '" method="post" name="adminForm" id="adminForm">' . PHP_EOL;
     $html .= "\t" . '<input type="hidden" name="option" value="' . $input->getCmd('option') . '" />' . PHP_EOL;
     $html .= "\t" . '<input type="hidden" name="view" value="' . F0FInflector::pluralize($input->getCmd('view')) . '" />' . PHP_EOL;
     $html .= "\t" . '<input type="hidden" name="task" value="" />' . PHP_EOL;
     $html .= "\t" . '<input type="hidden" name="layout" value="' . $input->getCmd('layout', '') . '" />' . PHP_EOL;
     $html .= "\t" . '<input type="hidden" name="boxchecked" value="" />' . PHP_EOL;
     $html .= "\t" . '<input type="hidden" name="hidemainmenu" value="" />' . PHP_EOL;
     $html .= "\t" . '<input type="hidden" name="filter_order" value="' . $filter_order . '" />' . PHP_EOL;
     $html .= "\t" . '<input type="hidden" name="filter_order_Dir" value="' . $filter_order_Dir . '" />' . PHP_EOL;
     $html .= "\t" . '<input type="hidden" name="' . JFactory::getSession()->getFormToken() . '" value="1" />' . PHP_EOL;
     // Start the table output
     $html .= "\t\t" . '<table class="adminlist" id="adminList">' . PHP_EOL;
     // Get form parameters
     $show_header = $form->getAttribute('show_header', 1);
     $show_filters = $form->getAttribute('show_filters', 1);
     $show_pagination = $form->getAttribute('show_pagination', 1);
     $norows_placeholder = $form->getAttribute('norows_placeholder', '');
     // Open the table header region if required
     if ($show_header || $show_filters) {
         $html .= "\t\t\t<thead>" . PHP_EOL;
     }
     // Pre-render the header and filter rows
     if ($show_header || $show_filters) {
         $header_html = '';
         $filter_html = '';
         foreach ($headerFields as $header) {
             // Make sure we have a header field. Under Joomla! 2.5 we cannot
             // render filter-only fields.
             $tmpHeader = $header->header;
             if (empty($tmpHeader)) {
                 continue;
             }
             $tdwidth = $header->tdwidth;
             if (!empty($tdwidth)) {
                 $tdwidth = 'width="' . $tdwidth . '"';
             } else {
                 $tdwidth = '';
             }
             $header_html .= "\t\t\t\t\t<th {$tdwidth}>" . PHP_EOL;
             $header_html .= "\t\t\t\t\t\t" . $tmpHeader;
             $header_html .= "\t\t\t\t\t</th>" . PHP_EOL;
             $filter = $header->filter;
             $buttons = $header->buttons;
             $options = $header->options;
             $filter_html .= "\t\t\t\t\t<td>" . PHP_EOL;
             if (!empty($filter)) {
                 $filter_html .= "\t\t\t\t\t\t{$filter}" . PHP_EOL;
                 if (!empty($buttons)) {
                     $filter_html .= "\t\t\t\t\t\t<nobr>{$buttons}</nobr>" . PHP_EOL;
                 }
             } elseif (!empty($options)) {
                 $label = $header->label;
                 $emptyOption = JHtml::_('select.option', '', '- ' . JText::_($label) . ' -');
                 array_unshift($options, $emptyOption);
                 $attribs = array('onchange' => 'document.adminForm.submit();');
                 $filter = JHtml::_('select.genericlist', $options, $header->name, $attribs, 'value', 'text', $header->value, false, true);
                 $filter_html .= "\t\t\t\t\t\t{$filter}" . PHP_EOL;
             }
             $filter_html .= "\t\t\t\t\t</td>" . PHP_EOL;
         }
     }
     // Render header if enabled
     if ($show_header) {
         $html .= "\t\t\t\t<tr>" . PHP_EOL;
         $html .= $header_html;
         $html .= "\t\t\t\t</tr>" . PHP_EOL;
     }
     // Render filter row if enabled
     if ($show_filters) {
         $html .= "\t\t\t\t<tr>";
         $html .= $filter_html;
         $html .= "\t\t\t\t</tr>";
     }
     // Close the table header region if required
     if ($show_header || $show_filters) {
         $html .= "\t\t\t</thead>" . PHP_EOL;
     }
     // Loop through rows and fields, or show placeholder for no rows
     $html .= "\t\t\t<tbody>" . PHP_EOL;
     $fields = $form->getFieldset('items');
     $num_columns = count($fields);
     $items = $form->getModel()->getItemList();
     if ($count = count($items)) {
         $m = 1;
         foreach ($items as $i => $item) {
             $table_item = $form->getModel()->getTable();
             $table_item->reset();
             $table_item->bind($item);
             $form->bind($item);
             $m = 1 - $m;
             $class = 'row' . $m;
             $html .= "\t\t\t\t<tr class=\"{$class}\">" . PHP_EOL;
             $fields = $form->getFieldset('items');
             foreach ($fields as $field) {
                 $field->rowid = $i;
                 $field->item = $table_item;
                 $labelClass = $field->labelClass ? $field->labelClass : $field->labelclass;
                 // Joomla! 2.5/3.x use different case for the same name
                 $class = $labelClass ? 'class ="' . $labelClass . '"' : '';
                 $html .= "\t\t\t\t\t<td {$class}>" . $field->getRepeatable() . '</td>' . PHP_EOL;
             }
             $html .= "\t\t\t\t</tr>" . PHP_EOL;
         }
     } elseif ($norows_placeholder) {
         $html .= "\t\t\t\t<tr><td colspan=\"{$num_columns}\">";
         $html .= JText::_($norows_placeholder);
         $html .= "</td></tr>\n";
     }
     $html .= "\t\t\t</tbody>" . PHP_EOL;
     // Render the pagination bar, if enabled
     if ($show_pagination) {
         $pagination = $form->getModel()->getPagination();
         $html .= "\t\t\t<tfoot>" . PHP_EOL;
         $html .= "\t\t\t\t<tr><td colspan=\"{$num_columns}\">";
         if ($pagination->total > 0) {
             $html .= $pagination->getListFooter();
         }
         $html .= "</td></tr>\n";
         $html .= "\t\t\t</tfoot>" . PHP_EOL;
     }
     // End the table output
     $html .= "\t\t" . '</table>' . PHP_EOL;
     // End the form
     $html .= '</form>' . PHP_EOL;
     return $html;
 }
Пример #2
0
 /**
  * Get the filter value for this header field
  *
  * @return  mixed  The filter value
  */
 protected function getValue()
 {
     $model = $this->form->getModel();
     return $model->getState($this->filterSource);
 }