protected function preFilter($filterChain) { if (null == ($messageContent = RequiredAttributesValidViewUtil::resolveValidView($this->moduleClassName, $this->viewClassName))) { return true; } $messageView = new ViewIsMissingRequiredAttributesView($messageContent); $view = new ViewIsMissingRequiredAttributesPageView($messageView); echo $view->render(); Yii::app()->end(0, false); }
protected function renderInlineEditContent() { if (null != ($messageContent = RequiredAttributesValidViewUtil::resolveValidView('NotesModule', $this->getInlineEditViewClassName()))) { $message = Zurmo::t('NotesModule', 'The NotesModulePluralLabel form cannot be displayed.', LabelUtil::getTranslationParamsForAllModules()); $message .= '<br/>' . $messageContent . '<br/><br/>'; return $message; } $note = new Note(); $note->activityItems->add($this->params["relationModel"]); $inlineViewClassName = $this->getInlineEditViewClassName(); $urlParameters = array('redirectUrl' => $this->getPortletDetailsUrl()); //After save, the url to go to. $uniquePageId = get_called_class(); $inlineView = new $inlineViewClassName($note, 'default', 'notes', 'inlineCreateSave', $urlParameters, $uniquePageId); return $inlineView->render(); }
public function testResolveToSetAsMissingRequiredAttributesByModelClassName() { RequiredAttributesValidViewUtil::resolveToSetAsMissingRequiredAttributesByModelClassName('Contact', 'lastName'); $booleanTest = RequiredAttributesValidViewUtil::isViewMissingRequiredAttributes('ContactsModule', 'ContactEditAndDetailsView'); $this->assertFalse($booleanTest); RequiredAttributesValidViewUtil::resolveToSetAsMissingRequiredAttributesByModelClassName('Contact', 'dummyEmailShouldNotAppearInAnyView'); $booleanTest = RequiredAttributesValidViewUtil::isViewMissingRequiredAttributes('ContactsModule', 'ContactEditAndDetailsView'); $this->assertTrue($booleanTest); RequiredAttributesValidViewUtil::resolveToRemoveAttributeAsMissingRequiredAttribute('Contact', 'dummyEmailShouldNotAppearInAnyView'); $booleanTest = RequiredAttributesValidViewUtil::isViewMissingRequiredAttributes('ContactsModule', 'ContactEditAndDetailsView'); $this->assertFalse($booleanTest); }
/** * @depends testRequiredAttributesAreMissingFromLayout */ public function testMakingAlreadyPlacedNonrequiredStandardAttributeRequiredAndThenMakingItUnrequired() { $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super'); $content = $this->runControllerWithNoExceptionsAndGetContent('accounts/default/create'); $this->assertNotContains('There are required fields missing from the following layout', $content); //Now make industry required. $attributeForm = AttributesFormFactory::createAttributeFormByAttributeName(new Account(), 'industry'); $this->assertFalse($attributeForm->isRequired); $attributeForm->isRequired = true; $modelAttributesAdapterClassName = $attributeForm::getModelAttributeAdapterNameForSavingAttributeFormData(); $adapter = new $modelAttributesAdapterClassName(new Account()); try { $adapter->setAttributeMetadataFromForm($attributeForm); } catch (FailedDatabaseSchemaChangeException $e) { echo $e->getMessage(); $this->fail(); } RequiredAttributesValidViewUtil::resolveToSetAsMissingRequiredAttributesByModelClassName('Account', 'industry'); RedBeanModelsCache::forgetAll(); $content = $this->runControllerWithNoExceptionsAndGetContent('accounts/default/create'); $this->assertNotContains('There are required fields missing from the following layout', $content); //Now make industry unrequired. $attributeForm = AttributesFormFactory::createAttributeFormByAttributeName(new Account(), 'industry'); $this->assertTrue($attributeForm->isRequired); $attributeForm->isRequired = false; $modelAttributesAdapterClassName = $attributeForm::getModelAttributeAdapterNameForSavingAttributeFormData(); $adapter = new $modelAttributesAdapterClassName(new Account()); try { $adapter->setAttributeMetadataFromForm($attributeForm); } catch (FailedDatabaseSchemaChangeException $e) { echo $e->getMessage(); $this->fail(); } RequiredAttributesValidViewUtil::resolveToRemoveAttributeAsMissingRequiredAttribute('Account', 'industry'); RedBeanModelsCache::forgetAll(); //Confirm industry is truly unrequired. $attributeForm = AttributesFormFactory::createAttributeFormByAttributeName(new Account(), 'industry'); $this->assertFalse($attributeForm->isRequired); //Now the layout should not show an error message. $content = $this->runControllerWithNoExceptionsAndGetContent('accounts/default/create'); $this->assertNotContains('There are required fields missing from the following layout', $content); }
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(); }