Пример #1
0
 /**
  * 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;
 }