/**
  * @param \GIB\GradingTool\Domain\Model\Project $project
  * @return array
  */
 public function getProcessedProjectData(\GIB\GradingTool\Domain\Model\Project $project)
 {
     /** @var \TYPO3\Form\Core\Model\FormDefinition $formDefinition */
     $formDefinition = $this->formPersistenceManager->load($this->settings['forms']['projectData']);
     $fieldArray = $this->buildFieldArray($formDefinition['renderables'], $project->getProjectDataArray());
     return $fieldArray;
 }
 /**
  * @param string $persistenceIdentifier the persistence identifier for the form.
  * @param string $factoryClass The fully qualified class name of the factory (which has to implement \TYPO3\Form\Factory\FormFactoryInterface)
  * @param string $presetName name of the preset to use
  * @param array $overrideConfiguration factory specific configuration
  * @return string the rendered form
  */
 public function render($persistenceIdentifier = NULL, $factoryClass = 'TYPO3\\Form\\Factory\\ArrayFormFactory', $presetName = 'default', array $overrideConfiguration = array())
 {
     if (isset($persistenceIdentifier)) {
         $overrideConfiguration = Arrays::arrayMergeRecursiveOverrule($this->formPersistenceManager->load($persistenceIdentifier), $overrideConfiguration);
     }
     $factory = $this->objectManager->get($factoryClass);
     $formDefinition = $factory->build($overrideConfiguration, $presetName);
     $response = new Response($this->controllerContext->getResponse());
     $form = $formDefinition->bind($this->controllerContext->getRequest(), $response);
     return $form->render();
 }
 /**
  * @param JobConfigurationInterface $jobConfiguration
  * @param string $persistenceIdentifier the persistence identifier for the form.
  * @param string $factoryClass The fully qualified class name of the factory (which has to implement \TYPO3\Form\Factory\FormFactoryInterface)
  * @param string $presetName name of the preset to use
  * @param array $overrideConfiguration factory specific configuration
  * @return string the rendered form
  */
 public function render(JobConfigurationInterface $jobConfiguration, $persistenceIdentifier = null, $factoryClass = 'TYPO3\\Form\\Factory\\ArrayFormFactory', $presetName = 'default', array $overrideConfiguration = [])
 {
     if (isset($persistenceIdentifier)) {
         $overrideConfiguration = Arrays::arrayMergeRecursiveOverrule($this->formPersistenceManager->load($persistenceIdentifier), $overrideConfiguration);
     }
     $factory = $this->objectManager->get($factoryClass);
     /** @var FormDefinition $formDefinition */
     $formDefinition = $factory->build($overrideConfiguration, $presetName);
     ObjectAccess::setProperty($formDefinition, 'identifier', 'options', true);
     $this->postProcessFormDefinition($jobConfiguration, $formDefinition);
     $response = new Response($this->controllerContext->getResponse());
     $form = $formDefinition->bind($this->controllerContext->getRequest(), $response);
     $form->getRequest()->setArgumentNamespace('--options');
     return $form->render();
 }
 /**
  * Check if a form has a localized version and deliver it if available
  *
  * @param $formName
  * @param $localeOverride
  * @return string
  */
 public function getFormNameRespectingLocale($formName, $localeOverride = '')
 {
     // if we override the locale anyway (and it isn't english), we return early
     if (!empty($localeOverride) && $localeOverride !== 'en') {
         return $formName . ucfirst($localeOverride);
     }
     $currentLanguage = $this->i18nService->getConfiguration()->getCurrentLocale()->getLanguage();
     /*
      * a localized version has the language iso code as uppercased suffix, e.g. dataSheetFormFr
      * english is the default language and has no suffix, therefore we return the unchanged name if
      * no translation was found
      */
     if ($this->formPersistenceManager->exists($formName . ucfirst($currentLanguage))) {
         $formName = $formName . ucfirst($currentLanguage);
     }
     return $formName;
 }
 /**
  * This takes a form identifier and returns a unique persistence identifier for it.
  * By default this is just similar to the identifier. But if a form with the same persistence identifier already
  * exists a suffix is appended until the persistence identifier is unique.
  *
  * @param string $formIdentifier lowerCamelCased form identifier
  * @return string unique form persistence identifier
  */
 protected function findUniquePersistenceIdentifier($formIdentifier)
 {
     if (!$this->formPersistenceManager->exists($formIdentifier)) {
         return $formIdentifier;
     }
     for ($attempts = 1; $attempts < 100; $attempts++) {
         $formPersistenceIdentifier = sprintf('%s_%d', $formIdentifier, $attempts);
         if (!$this->formPersistenceManager->exists($formPersistenceIdentifier)) {
             return $formPersistenceIdentifier;
         }
     }
     throw new \TYPO3\Flow\Exception(sprintf('Could not find a unique persistence identifier for form identifier "%s" after %d attempts', $formIdentifier, $attempts), 1329842768);
 }
 /**
  * Get score basis data
  *
  * @param Project $project
  * @return array
  */
 public function getScoreData(Project $project = NULL)
 {
     $form = $project instanceof Project ? $project->getSubmissionFormIdentifier() : $this->settings['forms']['submission']['default'];
     $submissionFormDefinition = $this->formPersistenceManager->load($form);
     $scoreData = array();
     foreach ($submissionFormDefinition['renderables'] as $key => $page) {
         // a form page
         foreach ($page['renderables'] as $section) {
             $scoreData[$key]['categoryName'] = $section['label'];
             $scoreData[$key]['goodScore'] = $section['properties']['goodPerformanceReferenceScore'];
             $scoreData[$key]['modestScore'] = $section['properties']['modestPerformanceReferenceScore'];
             $scoreData[$key]['modestScore'] = $section['properties']['modestPerformanceReferenceScore'];
             // todo average score
             $scoreData[$key]['currentAverageScore'] = 0;
         }
     }
     return $scoreData;
 }
 /**
  * @param \GIB\GradingTool\Domain\Model\Project $project
  * @param bool $languageOverlay
  * @return array
  */
 public function getFlatProcessedDataSheet(\GIB\GradingTool\Domain\Model\Project $project, $languageOverlay = FALSE)
 {
     /** @var \TYPO3\Form\Factory\ArrayFormFactory $factory */
     $factory = new \TYPO3\Form\Factory\ArrayFormFactory();
     // todo overlay if needed
     $overrideConfiguration = $this->formPersistenceManager->load($project->getDataSheetFormIdentifier());
     /** @var \TYPO3\Form\Core\Model\FormDefinition $formDefinition */
     $formDefinition = $factory->build($overrideConfiguration);
     $flatDataSheetArray = array();
     foreach ($project->getDataSheetContentArray() as $key => $value) {
         $formElement = $formDefinition->getElementByIdentifier($key);
         if ($formElement instanceof \TYPO3\Form\Core\Model\FormElementInterface) {
             $flatDataSheetArray[$key]['label'] = $formDefinition->getElementByIdentifier($key)->getLabel();
             $flatDataSheetArray[$key]['type'] = $formDefinition->getElementByIdentifier($key)->getType();
             $flatDataSheetArray[$key]['value'] = $value;
         }
     }
     return $flatDataSheetArray;
 }
 /**
  * @param string $formPersistenceIdentifier
  * @param array $formDefinition
  * @return string
  */
 public function saveformAction($formPersistenceIdentifier, array $formDefinition)
 {
     $this->formPersistenceManager->save($formPersistenceIdentifier, $formDefinition);
     return 'success';
 }