private function _exportFieldLayout(FieldLayoutModel $fieldLayout) { if ($fieldLayout->getTabs()) { $tabDefs = array(); foreach ($fieldLayout->getTabs() as $tab) { $tabDefs[$tab->name] = array(); foreach ($tab->getFields() as $field) { $tabDefs[$tab->name][$field->getField()->handle] = $field->required; } } return array('tabs' => $tabDefs); } else { $fieldDefs = array(); foreach ($fieldLayout->getFields() as $field) { $fieldDefs[$field->getField()->handle] = $field->required; } return array('fields' => $fieldDefs); } }
/** * @param FieldLayoutModel $fieldLayout * @return array */ public function getFieldLayoutDefinition(FieldLayoutModel $fieldLayout) { if ($fieldLayout->getTabs()) { $tabDefinitions = array(); foreach ($fieldLayout->getTabs() as $tab) { $tabDefinitions[$tab->name] = $this->getFieldLayoutFieldsDefinition($tab->getFields()); } return array('tabs' => $tabDefinitions); } return array('fields' => $this->getFieldLayoutFieldsDefinition($fieldLayout->getFields())); }
/** * Saves a field layout. * * @param FieldLayoutModel $layout * @param bool $saveTabs Whether to save tab records. * @return bool */ public function saveLayout(FieldLayoutModel $layout, $saveTabs = true) { // First save the layout $layoutRecord = new FieldLayoutRecord(); $layoutRecord->type = $layout->type; $layoutRecord->save(false); $layout->id = $layoutRecord->id; if ($saveTabs) { foreach ($layout->getTabs() as $tab) { $tabRecord = new FieldLayoutTabRecord(); $tabRecord->layoutId = $layout->id; $tabRecord->name = $tab->name; $tabRecord->sortOrder = $tab->sortOrder; $tabRecord->save(false); $tab->id = $tabRecord->id; foreach ($tab->getFields() as $field) { $fieldRecord = new FieldLayoutFieldRecord(); $fieldRecord->layoutId = $layout->id; $fieldRecord->tabId = $tab->id; $fieldRecord->fieldId = $field->fieldId; $fieldRecord->required = $field->required; $fieldRecord->sortOrder = $field->sortOrder; $fieldRecord->save(false); $field->id = $fieldRecord->id; } } } else { foreach ($layout->getFields() as $field) { $fieldRecord = new FieldLayoutFieldRecord(); $fieldRecord->layoutId = $layout->id; $fieldRecord->fieldId = $field->fieldId; $fieldRecord->required = $field->required; $fieldRecord->sortOrder = $field->sortOrder; $fieldRecord->save(false); $field->id = $fieldRecord->id; } } return true; }
/** * Saves a field layout. * * @param FieldLayoutModel $layout * * @return bool */ public function saveLayout(FieldLayoutModel $layout) { // First save the layout $layoutRecord = new FieldLayoutRecord(); $layoutRecord->type = $layout->type; $layoutRecord->save(false); $layout->id = $layoutRecord->id; foreach ($layout->getTabs() as $tab) { $tabRecord = new FieldLayoutTabRecord(); $tabRecord->layoutId = $layout->id; $tabRecord->name = $tab->name; $tabRecord->sortOrder = $tab->sortOrder; $tabRecord->save(false); $tab->id = $tabRecord->id; foreach ($tab->getFields() as $field) { $fieldRecord = new FieldLayoutFieldRecord(); $fieldRecord->layoutId = $layout->id; $fieldRecord->tabId = $tab->id; $fieldRecord->fieldId = $field->fieldId; $fieldRecord->required = $field->required; $fieldRecord->sortOrder = $field->sortOrder; $fieldRecord->save(false); $field->id = $fieldRecord->id; } } // Fire an 'onSaveFieldLayout' event $this->onSaveFieldLayout(new Event($this, array('layout' => $layout))); return true; }