/** * Inline edit show the edited element * * @return string */ public function showResults() { $input = $this->app->input; $listModel = $this->formModel->getListModel(); $listId = $listModel->getId(); $listModel->clearCalculations(); $listModel->doCalculations(); $elementId = $input->getInt('elid'); if ($elementId === 0) { return; } $elementModel = $this->formModel->getElement($elementId, true); if (!$elementModel) { return; } $rowId = $input->get('rowid'); $listModel->setId($listId); // If the inline edit stored a element join we need to reset back the table $listModel->clearTable(); $listModel->getTable(); $data = $listModel->getRow($rowId); // For a change in the element which means its no longer shown in the list due to pre-filter. We may want to remove the row from the list as well? if (!is_object($data)) { $data = new stdClass(); } $key = $input->get('element'); $html = ''; $html .= $elementModel->renderListData($data->{$key}, $data); $listRef = 'list_' . $input->get('listref'); $doCalcs = "\nFabrik.blocks['" . $listRef . "'].updateCals(" . json_encode($listModel->getCalculations()) . ")"; $html .= '<script type="text/javascript">'; $html .= $doCalcs; $html .= "</script>\n"; return $html; }
/** * Create the content type * Save it to /administrator/components/com_fabrik/models/content_types * Update form model with content type path * * @param FabrikFEModelForm $formModel * * @return bool */ public function create($formModel) { // We don't want to export the main table, as a new one is created when importing the content type $this->listModel = $formModel->getListModel(); $mainTable = $this->listModel->getTable()->get('db_table_name'); $contentType = $this->doc->createElement('contenttype'); $tables = FabrikContentTypHelper::iniTableXML($this->doc, $mainTable); $label = JFile::makeSafe($formModel->getForm()->get('label')); $name = $this->doc->createElement('name', $label); $contentType->appendChild($name); $contentType->appendChild($this->version()); $groups = $formModel->getGroupsHiarachy(); foreach ($groups as $groupModel) { $groupData = $groupModel->getGroup()->getProperties(); $elements = array(); $elementModels = $groupModel->getMyElements(); foreach ($elementModels as $elementModel) { $elements[] = $elementModel->getElement()->getProperties(); } $contentType->appendChild($this->createFabrikGroupXML($groupData, $elements, $tables, $mainTable)); } $contentType->appendChild($tables); $contentType->appendChild($this->createViewLevelXML()); $contentType->appendChild($this->createGroupXML()); $this->doc->appendChild($contentType); $xml = $this->doc->saveXML(); $path = JPATH_COMPONENT_ADMINISTRATOR . '/models/content_types/' . $label . '.xml'; if (JFile::write($path, $xml)) { $form = $formModel->getForm(); $params = $formModel->getParams(); $params->set('content_type_path', $path); $form->params = $params->toString(); return $form->save($form->getProperties()); } return false; }