/** * Prepare the group and element models for form view preview * * @return array */ public function preview() { $pluginManager = FabrikWorker::getPluginManager(); $xpath = new DOMXpath($this->doc); $groups = $xpath->query('/contenttype/group'); $return = array(); $i = 1; foreach ($groups as $group) { $groupData = array(); $groupData = FabrikContentTypHelper::domNodeAttributesToArray($group, $groupData); $groupData['params'] = FabrikContentTypHelper::nodeParams($group); $groupModel = JModelLegacy::getInstance('Group', 'FabrikFEModel'); $groupTable = FabTable::getInstance('Group', 'FabrikTable'); $groupTable->bind($groupData); $groupModel->setGroup($groupTable); $elements = $xpath->query('/contenttype/group[' . $i . ']/element'); $elementModels = array(); foreach ($elements as $element) { $elementData = FabrikContentTypHelper::domNodeAttributesToArray($element); $elementData['params'] = FabrikContentTypHelper::nodeParams($element); $elementModel = clone $pluginManager->loadPlugIn($elementData['plugin'], 'element'); $elementModel->element = $elementModel->getDefaultProperties($elementData); $elementModel->element->name = $elementData['name']; $elementModel->element->label = $elementData['label']; if ($elementModel->element->hidden) { $elementModel->element->hidden = false; $elementModel->getparams()->set('containerclass', 'faux-shown'); } $elementModel->editable = true; $elementModels[] = $elementModel; } $groupModel->elements = $elementModels; $return[] = $groupModel; $i++; } return $return; }