/** * @test */ public function canHandleSingleItemArraysOfAnnotations() { $annotations = array(''); $expected = TRUE; $result = AnnotationUtility::parseAnnotation($annotations); $this->assertEquals($expected, $result); }
/** * @param string $class * @param string $table * @return Form */ public function generateFormInstanceFromClassName($class, $table) { $labelFields = AnnotationUtility::getAnnotationValueFromClass($class, 'Flux\\Label', FALSE); $iconAnnotation = AnnotationUtility::getAnnotationValueFromClass($class, 'Flux\\Icon'); $extensionName = $this->getExtensionNameFromModelClassName($class); $values = AnnotationUtility::getAnnotationValueFromClass($class, 'Flux\\Form\\Field', FALSE); $sheets = AnnotationUtility::getAnnotationValueFromClass($class, 'Flux\\Form\\Sheet', FALSE); $labels = TRUE === is_array($labelFields) ? array_keys($labelFields) : array(key($values)); foreach ($labels as $index => $labelField) { $labels[$index] = GeneralUtility::camelCaseToLowerCaseUnderscored($labelField); } $icon = TRUE === isset($iconAnnotation['config']['path']) ? $iconAnnotation['config']['path'] : 'ext_icon.png'; $hasVisibilityToggle = (bool) AnnotationUtility::getAnnotationValueFromClass($class, 'Flux\\Control\\Hide'); $hasDeleteToggle = (bool) AnnotationUtility::getAnnotationValueFromClass($class, 'Flux\\Control\\Delete'); $hasStartTimeToggle = (bool) AnnotationUtility::getAnnotationValueFromClass($class, 'Flux\\Control\\StartTime'); $hasEndTimeToggle = (bool) AnnotationUtility::getAnnotationValueFromClass($class, 'Flux\\Control\\EndTime'); $hasFrontendGroupToggle = (bool) AnnotationUtility::getAnnotationValueFromClass($class, 'Flux\\Control\\FrontendUserGroup'); $form = Form::create(); $form->setName($table); $form->setExtensionName($extensionName); $form->setOption('labels', $labels); $form->setOption('delete', $hasDeleteToggle); $form->setOption('hide', $hasVisibilityToggle); $form->setOption('start', $hasStartTimeToggle); $form->setOption('end', $hasEndTimeToggle); $form->setOption(Form::OPTION_ICON, $icon); $form->setOption('frontendUserGroup', $hasFrontendGroupToggle); $fields = array(); foreach ($sheets as $propertyName => $sheetAnnotation) { $sheetName = $sheetAnnotation['type']; if (FALSE === isset($fields[$sheetName])) { $fields[$sheetName] = array(); } array_push($fields[$sheetName], $propertyName); } foreach ($fields as $sheetName => $propertyNames) { $form->remove($sheetName); $sheet = $form->createContainer('Sheet', $sheetName); foreach ($propertyNames as $propertyName) { $settings = $values[$propertyName]; $propertyName = GeneralUtility::camelCaseToLowerCaseUnderscored($propertyName); if (TRUE === isset($settings['type'])) { $fieldType = implode('/', array_map('ucfirst', explode('.', $settings['type']))); $field = $sheet->createField($fieldType, $propertyName); foreach ($settings['config'] as $settingName => $settingValue) { ObjectAccess::setProperty($field, $settingName, $settingValue); } } } } return $form; }
/** * @param string $class * @param string $table * @return Form */ public function generateFormInstanceFromClassName($class, $table) { $labelFields = AnnotationUtility::getAnnotationValueFromClass($class, 'Flux\\Label', NULL); $extensionName = $this->getExtensionNameFromModelClassName($class); $values = AnnotationUtility::getAnnotationValueFromClass($class, 'Flux\\Form\\Field', NULL); $sheets = AnnotationUtility::getAnnotationValueFromClass($class, 'Flux\\Form\\Sheet', NULL); $labels = TRUE === is_array($labelFields) ? array_keys($labelFields) : array(key($values)); $hasVisibilityToggle = AnnotationUtility::getAnnotationValueFromClass($class, 'Flux\\Control\\Hide'); $hasDeleteToggle = AnnotationUtility::getAnnotationValueFromClass($class, 'Flux\\Control\\Delete'); $hasStartTimeToggle = AnnotationUtility::getAnnotationValueFromClass($class, 'Flux\\Control\\StartTime'); $hasEndTimeToggle = AnnotationUtility::getAnnotationValueFromClass($class, 'Flux\\Control\\EndTime'); $hasFrontendGroupToggle = AnnotationUtility::getAnnotationValueFromClass($class, 'Flux\\Control\\FrontendUserGroup'); $form = Form::create(); $form->setName($table); $form->setExtensionName($extensionName); $form->setOption('labels', $labels); $form->setOption('delete', $hasDeleteToggle); $form->setOption('hide', $hasVisibilityToggle); $form->setOption('start', $hasStartTimeToggle); $form->setOption('end', $hasEndTimeToggle); $form->setOption('frontendUserGroup', $hasFrontendGroupToggle); $fields = array(); foreach ($sheets as $propertyName => $sheetAnnotation) { $sheetName = $sheetAnnotation['type']; if (FALSE === isset($fields[$sheetName])) { $fields[$sheetName] = array(); } array_push($fields[$sheetName], $propertyName); } foreach ($fields as $sheetName => $propertyNames) { $form->remove($sheetName); $sheets[$sheetName] = $form->createContainer('Sheet', $sheetName); foreach ($propertyNames as $propertyName) { $settings = $values[$propertyName]; if (TRUE === isset($settings['type'])) { $field = AbstractFormField::create($settings); $sheets[$sheetName]->add($field); } } } return $form; }