コード例 #1
0
 public function testGetEffectivePlacedAttributes()
 {
     Yii::app()->user->userModel = User::getByUsername('super');
     $viewClassName = 'ContactEditAndDetailsView';
     $modelClassName = 'Contact';
     $designerRules = DesignerRulesFactory::createDesignerRulesByView($viewClassName);
     $attributesLayoutAdapter = AttributesLayoutAdapterUtil::makeByViewAndModelAndDesignerRules($viewClassName, $modelClassName, $designerRules);
     $this->assertFalse(in_array('industry', $attributesLayoutAdapter->getEffectivePlacedAttributes()));
     $this->assertTrue(in_array('firstName', $attributesLayoutAdapter->getEffectivePlacedAttributes()));
     $this->assertTrue(in_array('lastName', $attributesLayoutAdapter->getEffectivePlacedAttributes()));
     $this->assertTrue(in_array('source', $attributesLayoutAdapter->getEffectivePlacedAttributes()));
 }
コード例 #2
0
 /**
  * @param string $modelClassName
  * @param string $attributeName
  */
 public static function resolveToRemoveAttributeAsMissingRequiredAttribute($modelClassName, $attributeName)
 {
     assert('is_string($modelClassName)');
     assert('is_string($attributeName)');
     $modules = Module::getModuleObjects();
     foreach ($modules as $module) {
         try {
             if ($module::getPrimaryModelName() == $modelClassName) {
                 $viewClassNames = $module::getViewClassNames();
                 foreach ($viewClassNames as $viewClassName) {
                     $classToEvaluate = new ReflectionClass($viewClassName);
                     if (is_subclass_of($viewClassName, 'MetadataView') && !$classToEvaluate->isAbstract() && $viewClassName::getDesignerRulesType() != null) {
                         $designerRules = DesignerRulesFactory::createDesignerRulesByView($viewClassName);
                         if ($designerRules->allowEditInLayoutTool() && $designerRules->requireAllRequiredFieldsInLayout()) {
                             $attributesLayoutAdapter = AttributesLayoutAdapterUtil::makeByViewAndModelAndDesignerRules($viewClassName, $modelClassName, $designerRules);
                             if (!in_array($attributeName, $attributesLayoutAdapter->getEffectivePlacedAttributes())) {
                                 self::removeAttributeAsMissingRequiredAttribute(get_class($module), $viewClassName);
                             }
                         }
                     }
                 }
             }
         } catch (NotSupportedException $e) {
         }
     }
 }
コード例 #3
0
 protected static function assertMetadataIsValid(array $metadata)
 {
     parent::assertMetadataIsValid($metadata);
     $attributeNames = array();
     $derivedTypes = array();
     if (isset($metadata['global']['panels'])) {
         foreach ($metadata["global"]["panels"] as $panel) {
             assert('is_array($panel["rows"])');
             foreach ($panel["rows"] as $row) {
                 $cellCount = 0;
                 assert('is_array($row["cells"])');
                 foreach ($row["cells"] as $cell) {
                     if (is_array($cell['elements'])) {
                         assert('count($cell["elements"]) == 1');
                         $elementInformation = $cell['elements'][0];
                         if ($elementInformation['attributeName'] == 'null') {
                             assert('!in_array($elementInformation["type"], $derivedTypes)');
                             $derivedTypes[] = $elementInformation['type'];
                             $elementclassname = $elementInformation['type'] . 'Element';
                             assert('class_exists($elementclassname)');
                         } elseif ($elementInformation['attributeName'] == null) {
                             assert('$elementInformation["type"] == "Null"');
                             // Not Coding Standard
                         } else {
                             /* Is attribute present more than once on the view? */
                             assert('!in_array($elementInformation["attributeName"], $attributeNames)');
                             $attributeNames[] = $elementInformation['attributeName'];
                             assert('is_string($elementInformation["attributeName"])');
                         }
                     }
                     $cellCount++;
                     $designerRules = DesignerRulesFactory::createDesignerRulesByView(get_called_class());
                     if ($designerRules != null) {
                         assert('$cellCount <= $designerRules->maxCellsPerRow()');
                     }
                 }
             }
         }
     }
     if (isset($metadata['global']['toolbar'])) {
         assert('is_array($metadata["global"]["toolbar"]["elements"])');
         assert('count($metadata["global"]["toolbar"]) == 1');
         $elementTypes = array();
         foreach ($metadata['global']['toolbar']['elements'] as $elementInformation) {
             assert('isset($elementInformation["type"])');
             $elementTypes[] = $elementInformation['type'];
             $elementclassname = $elementInformation['type'] . 'ActionElement';
             assert('class_exists($elementclassname)');
         }
     }
     if (isset($metadata['global']['nonPlaceableAttributeNames'])) {
         assert('is_array($metadata["global"]["nonPlaceableAttributeNames"])');
     }
     assert('!isset($metadata["derivedAttributeTypes"])');
     if (isset($metadata['global']['derivedAttributeTypes'])) {
         assert('is_array($metadata["global"]["derivedAttributeTypes"])');
         foreach ($metadata['global']['derivedAttributeTypes'] as $elementType) {
             $elementclassname = $elementType . 'Element';
             assert('class_exists($elementclassname)');
         }
     }
 }