예제 #1
0
 /**
  * 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;
 }
예제 #2
0
 /**
  * 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;
 }