public function testSetAsContainingRequiredAttributes() { $value = ZurmoConfigurationUtil::getByModuleName('ContactsModule', 'DummyView1_layoutMissingRequiredAttributes'); $this->assertNull($value); RequiredAttributesValidViewUtil::setAsContainingRequiredAttributes('ContactsModule', 'DummyView1'); $value = ZurmoConfigurationUtil::getByModuleName('ContactsModule', 'DummyView1_layoutMissingRequiredAttributes'); $this->assertNull($value); }
public function actionLayoutEdit() { assert('!empty($_GET["moduleClassName"])'); assert('!empty($_GET["viewClassName"])'); $viewClassName = $_GET['viewClassName']; $moduleClassName = $_GET['moduleClassName']; $modelClassName = $moduleClassName::getPrimaryModelName(); $editableMetadata = $viewClassName::getMetadata(); $designerRulesType = $viewClassName::getDesignerRulesType(); $designerRulesClassName = $designerRulesType . 'DesignerRules'; $designerRules = new $designerRulesClassName(); $modelAttributesAdapter = DesignerModelToViewUtil::getModelAttributesAdapter($viewClassName, $modelClassName); $derivedAttributesAdapter = new DerivedAttributesAdapter($modelClassName); $attributeCollection = array_merge($modelAttributesAdapter->getAttributes(), $derivedAttributesAdapter->getAttributes()); $attributesLayoutAdapter = AttributesLayoutAdapterUtil::makeAttributesLayoutAdapter($attributeCollection, $designerRules, $editableMetadata); if (isset($_POST['save'])) { $layoutMetadataAdapter = new LayoutMetadataAdapter($viewClassName, $moduleClassName, $editableMetadata, $designerRules, $attributesLayoutAdapter->getPlaceableLayoutAttributes(), $attributesLayoutAdapter->getRequiredDerivedLayoutAttributeTypes()); $savableMetadata = array(); if ($designerRules->canConfigureLayoutPanelsType() && !PanelsDisplayTypeLayoutMetadataUtil::populateSaveableMetadataFromPostData($savableMetadata, $_POST['LayoutPanelsTypeForm'])) { echo CJSON::encode(array('message' => Zurmo::t('DesignerModule', 'Invalid panel configuration type'), 'type' => 'error')); } elseif ($layoutMetadataAdapter->setMetadataFromLayout(ArrayUtil::getArrayValue($_POST, 'layout'), $savableMetadata)) { if ($designerRules->requireAllRequiredFieldsInLayout()) { RequiredAttributesValidViewUtil::setAsContainingRequiredAttributes($moduleClassName, $viewClassName); } echo CJSON::encode(array('message' => $layoutMetadataAdapter->getMessage(), 'type' => 'message')); } else { echo CJSON::encode(array('message' => $layoutMetadataAdapter->getMessage(), 'type' => 'error')); } Yii::app()->end(0, false); } $title = Zurmo::t('DesignerModule', 'Edit Layout') . ': ' . $designerRules->resolveDisplayNameByView($_GET['viewClassName']); $breadcrumbLinks = array($moduleClassName::getModuleLabelByTypeAndLanguage('Plural') . ': ' . Zurmo::t('DesignerModule', 'Layouts') => array('default/moduleLayoutsList', 'moduleClassName' => $_GET['moduleClassName']), $title); $canvasView = new MetadataViewEditView($this->getId(), $this->getModule()->getId(), $_GET['moduleClassName'], $_GET['viewClassName'], $editableMetadata, $designerRules, $attributeCollection, $attributesLayoutAdapter->makeDesignerLayoutAttributes(), $title); $view = new DesignerPageView(ZurmoDefaultAdminViewUtil::makeViewWithBreadcrumbsForCurrentUser($this, $canvasView, $breadcrumbLinks, 'DesignerBreadCrumbView')); echo $view->render(); }