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);
 }
Ejemplo n.º 5
0
 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();
 }