/**
  * Get Datepicker Settings
  *
  * @param \In2code\Powermail\Domain\Model\Field $field
  * @return string
  */
 protected function getDatepickerSettings(\In2code\Powermail\Domain\Model\Field $field = NULL)
 {
     if ($field === NULL) {
         return 'datetime';
     }
     return $field->getDatepickerSettings();
 }
 /**
  * Get Datepicker Settings
  *
  * @param Field $field
  * @return string
  */
 protected function getDatepickerSettings(Field $field = null)
 {
     if ($field === null) {
         return 'datetime';
     }
     return $field->getDatepickerSettings();
 }
 /**
  * Test for render()
  *
  * @param string $validation
  * @param string $expectedResult
  * @param bool $nativeValidationEnabled
  * @return void
  * @dataProvider renderReturnsStringDataProvider
  * @test
  */
 public function renderReturnsString($validation, $expectedResult, $nativeValidationEnabled)
 {
     $this->abstractValidationViewHelperMock->_set('settings', ['validation' => ['native' => $nativeValidationEnabled ? '1' : '0']]);
     $field = new Field();
     $field->setValidation($validation);
     $result = $this->abstractValidationViewHelperMock->_callRef('render', $field);
     $this->assertSame($expectedResult, $result);
 }
Ejemplo n.º 4
0
 /**
  * Get Answer from given field out of Mail object
  *
  * @param \In2code\Powermail\Domain\Model\Field $field
  * @param \In2code\Powermail\Domain\Model\Mail $mail
  * @return \string Answer value
  */
 protected function getAnswerFromField($field, $mail)
 {
     foreach ($mail->getAnswers() as $answer) {
         if ($answer->getField()->getUid() == $field->getUid()) {
             return $answer->getValue();
         }
     }
     return '';
 }
 /**
  * Test for render()
  *
  * @param array $settings
  * @param array $fieldProperties
  * @param array $additionalAttributes
  * @param array $expectedResult
  * @return void
  * @dataProvider renderReturnsArrayDataProvider
  * @test
  */
 public function renderReturnsArray($settings, $fieldProperties, $additionalAttributes, $expectedResult)
 {
     $field = new Field();
     foreach ($fieldProperties as $propertyName => $propertyValue) {
         $field->_setProperty($propertyName, $propertyValue);
     }
     $this->abstractValidationViewHelperMock->_set('settings', $settings);
     $result = $this->abstractValidationViewHelperMock->_callRef('render', $field, $additionalAttributes);
     $this->assertSame($expectedResult, $result);
 }
Ejemplo n.º 6
0
 /**
  * Array for multiple upload
  *
  * @param \In2code\Powermail\Domain\Model\Field $field
  * @param \array $additionalAttributes To add further attributes
  * @return array
  */
 public function render(\In2code\Powermail\Domain\Model\Field $field, $additionalAttributes = array())
 {
     if ($field->getMultiselectForField()) {
         $additionalAttributes['multiple'] = 'multiple';
     }
     if (!empty($this->settings['misc']['file']['extension'])) {
         $additionalAttributes['accept'] = $this->getDottedListOfExtensions($this->settings['misc']['file']['extension']);
     }
     return $additionalAttributes;
 }
 /**
  * Parses variables again
  *
  * @param \In2code\Powermail\Domain\Model\Field $field
  * @return string
  */
 public function render(Field $field)
 {
     if (!$this->isNativeValidationEnabled()) {
         return 'text';
     }
     if (array_key_exists($field->getValidation(), $this->html5InputTypes)) {
         return $this->html5InputTypes[$field->getValidation()];
     }
     return 'text';
 }
 /**
  * Set different attributes
  *
  * @param \array $dataArray
  * @param \In2code\Powermail\Domain\Model\Field $field
  * @param \mixed $iteration
  * @return void
  */
 protected function addAttributes(&$dataArray, $field)
 {
     if ($field->getMaxlength() > 0) {
         $dataArray['maxlength'] = $field->getMaxlength();
     }
     if ($field->getDisabled()) {
         $dataArray['disabled'] = 'disabled';
     }
     if ($field->getReadonly()) {
         $dataArray['readonly'] = 'readonly';
     }
 }
Ejemplo n.º 9
0
 /**
  * Prefill string for fields
  *
  * @param \In2code\Powermail\Domain\Model\Field $field
  * @param string $class Any string for errorclass
  * @return string
  */
 public function render(\In2code\Powermail\Domain\Model\Field $field, $class = 'error')
 {
     $validationResults = $this->controllerContext->getRequest()->getOriginalRequestMappingResults();
     $errors = $validationResults->getFlattenedErrors();
     foreach ($errors as $error) {
         foreach ((array) $error as $singleError) {
             if ($field->getMarker() === $singleError->getCode()) {
                 return $class;
             }
         }
     }
     return '';
 }
 /**
  * Prefill string for fields
  *
  * @param Field $field
  * @param string $class Any string for errorclass
  * @return string
  */
 public function render(Field $field, $class = 'error')
 {
     $validationResults = $this->controllerContext->getRequest()->getOriginalRequestMappingResults();
     $errors = $validationResults->getFlattenedErrors();
     foreach ($errors as $error) {
         /** @var \TYPO3\CMS\Extbase\Error\Error $singleError */
         foreach ((array) $error as $singleError) {
             if ($field->getMarker() === $singleError->getCode()) {
                 return $class;
             }
         }
     }
     return '';
 }
 /**
  * Returns Data Attribute Array for Container Field (powermail fieldwrap) in FE
  *
  * @param \In2code\Powermail\Domain\Model\Field $field
  * @param \array $additionalAttributes To add further attributes
  * @return \array for data attributes
  */
 public function render(\In2code\Powermail\Domain\Model\Field $field = NULL)
 {
     if ($field && $field->getDependency() && $field->getDependencyField()) {
         return 'data-depends-on="' . $field->getDependencyField()->getMarker() . '" data-depends-on-operator="' . $field->getDependencyOperator() . '" data-depends-on-value="' . $field->getDependencyValue() . '" data-depends-on-action="' . $field->getDependencyAction() . '" data-depends-on-reset="' . $field->getDependencyResetField() . '"';
     }
     return '';
 }
 /**
  * Set mandatory attributes
  *
  * @param array &$additionalAttributes
  * @param Field $field
  * @return void
  */
 protected function addMandatoryAttributes(&$additionalAttributes, Field $field = null)
 {
     if ($field !== null && $field->getMandatory()) {
         if ($this->isNativeValidationEnabled()) {
             $additionalAttributes['required'] = 'required';
         } else {
             if ($this->isClientValidationEnabled()) {
                 $additionalAttributes['data-parsley-required'] = 'true';
             }
         }
         if ($this->isClientValidationEnabled()) {
             $additionalAttributes['data-parsley-required-message'] = LocalizationUtility::translate('validationerror_mandatory');
             $additionalAttributes['data-parsley-trigger'] = 'change';
         }
     }
 }
Ejemplo n.º 13
0
 /**
  * Test for render()
  *
  * @param array $settings
  * @param array $fieldProperties
  * @param array $additionalAttributes
  * @param mixed $iteration
  * @param array $expectedResult
  * @return void
  * @dataProvider renderReturnsArrayDataProvider
  * @test
  */
 public function renderReturnsArray($settings, $fieldProperties, $additionalAttributes, $iteration, $expectedResult)
 {
     $field = new Field();
     foreach ($fieldProperties as $propertyName => $propertyValue) {
         $field->_setProperty($propertyName, $propertyValue);
     }
     $this->abstractValidationViewHelperMock->_set('settings', $settings);
     $this->abstractValidationViewHelperMock->_set('extensionName', 'powermail');
     $controllerContext = new ControllerContext();
     $request = new Request();
     $request->setControllerExtensionName('powermail');
     $controllerContext->setRequest($request);
     $this->abstractValidationViewHelperMock->_set('controllerContext', $controllerContext);
     $result = $this->abstractValidationViewHelperMock->_callRef('render', $field, $additionalAttributes, $iteration);
     $this->assertSame($expectedResult, $result);
 }
 /**
  * Returns Data Attribute Array for JS validation with parsley.js
  *
  * @param Field $field
  * @param array $additionalAttributes To add further attributes
  * @param mixed $iteration Iterationarray for Multi Fields (Radio, Check, ...)
  * @return array for data attributes
  */
 public function render(Field $field, $additionalAttributes = array(), $iteration = null)
 {
     if ($field->getType() !== 'captcha') {
         return $additionalAttributes;
     }
     $dataArray = parent::render($field, $additionalAttributes, $iteration);
     if ($this->isNativeValidationEnabled()) {
         $dataArray['required'] = 'required';
     } elseif ($this->isClientValidationEnabled()) {
         $dataArray['data-parsley-required'] = 'true';
     }
     if ($this->isClientValidationEnabled()) {
         $dataArray['data-parsley-errors-container'] = '.powermail_field_error_container_' . $field->getMarker();
         $dataArray['data-parsley-class-handler'] = '.powermail_fieldwrap_' . $field->getUid() . ' > div';
         $dataArray['data-parsley-required-message'] = LocalizationUtility::translate('validationerror_mandatory');
     }
     return $dataArray;
 }
 /**
  * Test for isValid()
  *
  * @param string $value
  * @param bool $expectedResult
  * @return void
  * @dataProvider validateIsValidReturnsBoolDataProvider
  * @test
  */
 public function validateIsValidReturnsBool($value, $expectedResult)
 {
     $mail = new Mail();
     $field = new Field();
     $field->setType(1);
     $answer1 = new Answer();
     $answer1->setValueType(3);
     $answer1->setValue($value);
     $answer1->setField($field);
     $objectStorage = new ObjectStorage();
     $objectStorage->attach($answer1);
     $mail->setAnswers($objectStorage);
     if ($expectedResult === false) {
         $this->generalValidatorMock->expects($this->once())->method('setErrorAndMessage');
     } else {
         $this->generalValidatorMock->expects($this->never())->method('setErrorAndMessage');
     }
     $this->generalValidatorMock->_callRef('isValid', $mail);
 }
 /**
  * Test for getFromTypoScriptContentObject()
  *
  * @param array $settings
  * @param string $marker
  * @param string $expectedResult
  * @dataProvider getFromTypoScriptContentObjectReturnsStringDataProvider
  * @test
  */
 public function getFromTypoScriptContentObjectReturnsString(array $settings, $marker, $expectedResult)
 {
     $this->initializeTsfe();
     $this->abstractValidationViewHelperMock->_set('settings', $settings);
     $field = new Field();
     $field->setMarker($marker);
     $this->abstractValidationViewHelperMock->_set('field', $field);
     $this->abstractValidationViewHelperMock->_set('marker', $marker);
     $this->abstractValidationViewHelperMock->_set('contentObjectRenderer', new ContentObjectRenderer());
     $this->assertSame($expectedResult, $this->abstractValidationViewHelperMock->_callRef('getFromTypoScriptContentObject'));
 }
Ejemplo n.º 17
0
 /**
  * Test for setValue()
  *
  * @param mixed $value
  * @param mixed $expectedResult
  * @param string $fieldType
  * @param string $datepickerSettings
  * @return void
  * @dataProvider setValueReturnVoidDataProvider
  * @test
  */
 public function setValueReturnVoid($value, $expectedResult, $fieldType = null, $datepickerSettings = null)
 {
     $this->generalValidatorMock->_setProperty('valueType', 0);
     if ($fieldType || $datepickerSettings) {
         $field = new Field();
         if ($fieldType) {
             $field->setType($fieldType);
         }
         if ($datepickerSettings) {
             $formats = array('date' => 'Y-m-d', 'datetime' => 'Y-m-d H:i', 'time' => 'H:i');
             $this->generalValidatorMock->_setProperty('translateFormat', $formats[$datepickerSettings]);
             $this->generalValidatorMock->_setProperty('valueType', 2);
             $field->setDatepickerSettings($datepickerSettings);
         }
         $this->generalValidatorMock->_callRef('setField', $field);
     }
     $this->generalValidatorMock->_callRef('setValue', $value);
     $this->assertSame($expectedResult, $this->generalValidatorMock->_getProperty('value'));
 }
Ejemplo n.º 18
0
 /**
  * Set Error
  *
  * @param \In2code\Powermail\Domain\Model\Field $field
  * @param string $label
  * @return void
  */
 protected function setErrorAndMessage(\In2code\Powermail\Domain\Model\Field $field, $label)
 {
     $this->setIsValid(FALSE);
     $this->addError($label, $field->getMarker());
 }
 /**
  * Create relative filename for captcha image
  *
  * @param Field $field
  * @return CalculatingCaptchaService
  */
 public function setPathAndFilename(Field $field)
 {
     $this->pathAndFilename = $this->imagePath . sprintf($this->imageFilenamePrefix, $field->getUid());
     return $this;
 }
 /**
  * hasFormAnUploadFieldReturnBool Test
  *
  * @return void
  * @test
  */
 public function hasFormAnUploadFieldReturnBool()
 {
     $fieldObjectStorage = new ObjectStorage();
     $field = new Field();
     $field->setType('captcha');
     $fieldObjectStorage->attach($field);
     $field2 = new Field();
     $field2->setType('file');
     $fieldObjectStorage->attach($field2);
     $pagesObjectStorage = new ObjectStorage();
     $page = new Page();
     $page->setFields($fieldObjectStorage);
     $pagesObjectStorage->attach($page);
     $form = new Form();
     $form->setPages($pagesObjectStorage);
     $this->assertTrue(BasicFileUtility::hasFormAnUploadField($form));
     $field2->setType('textarea');
     $this->assertFalse(BasicFileUtility::hasFormAnUploadField($form));
 }
 /**
  * Get mirror value from POST params
  *
  * @param Field $field
  * @return string
  */
 protected function getMirroredValueOfPasswordField(Field $field)
 {
     $piVars = GeneralUtility::_GP($this->variablesPrefix);
     $mirroredValue = $piVars['field'][$field->getMarker() . '_mirror'];
     return $mirroredValue;
 }
Ejemplo n.º 22
0
 /**
  * Test for getSenderNameFromArguments()
  *
  * @param array $values
  * @param string $fallback
  * @param string $defaultMailFromAddress
  * @param string $expectedResult
  * @return void
  * @dataProvider getSenderNameFromArgumentsReturnsStringDataProvider
  * @test
  */
 public function getSenderNameFromArgumentsReturnsString($values, $fallback, $defaultMailFromAddress, $expectedResult)
 {
     $GLOBALS['TYPO3_CONF_VARS']['MAIL']['defaultMailFromName'] = $defaultMailFromAddress;
     $mail = new Mail();
     if (is_array($values)) {
         foreach ($values as $value) {
             $answer = new Answer();
             $answer->_setProperty('translateFormat', 'Y-m-d');
             $answer->_setProperty('valueType', is_array($values) ? 2 : 0);
             $field = new Field();
             $field->setType('input');
             $field->setSenderName(true);
             $answer->_setProperty('value', $value);
             $answer->setValueType(is_array($value) ? 1 : 0);
             $answer->setField($field);
             $mail->addAnswer($answer);
         }
     }
     $result = $this->generalValidatorMock->_callRef('getSenderNameFromArguments', $mail, $fallback);
     $this->assertSame($expectedResult, $result);
 }
 /**
  * Set different validation attributes
  *
  * @param array &$additionalAttributes
  * @param Field $field
  * @return void
  */
 protected function addValidationAttributes(&$additionalAttributes, $field)
 {
     if ($field->getType() !== 'input' && $field->getType() !== 'textarea') {
         return;
     }
     switch ($field->getValidation()) {
         /**
          * EMAIL (+html5)
          *
          * html5 example: <input type="email" />
          * javascript example: <input type="text" data-parsley-type="email" />
          */
         case 1:
             if ($this->isClientValidationEnabled() && !$this->isNativeValidationEnabled()) {
                 $additionalAttributes['data-parsley-type'] = 'email';
             }
             break;
             /**
              * URL (+html5)
              *
              * html5 example: <input type="url" />
              * javascript example: <input type="text" data-parsley-type="url" />
              */
         /**
          * URL (+html5)
          *
          * html5 example: <input type="url" />
          * javascript example: <input type="text" data-parsley-type="url" />
          */
         case 2:
             if ($this->isClientValidationEnabled() && !$this->isNativeValidationEnabled()) {
                 $additionalAttributes['data-parsley-type'] = 'url';
             }
             break;
             /**
              * PHONE (+html5)
              *        01234567890
              *        0123 4567890
              *        0123 456 789
              *        (0123) 45678 - 90
              *        0012 345 678 9012
              *        0012 (0)345 / 67890 - 12
              *        +123456789012
              *        +12 345 678 9012
              *        +12 3456 7890123
              *        +49 (0) 123 3456789
              *        +49 (0)123 / 34567 - 89
              *
              * html5 example:
              *        <input type="text"
              *            pattern="/^(\+\d{1,4}|0+\d{1,5}|\(\d{1,5})[\d\s\/\(\)-]*\d+$/" />
              * javascript example:
              *        <input ... data-parsley-pattern=
              *            "/^(\+\d{1,4}|0+\d{1,5}|\(\d{1,5})[\d\s\/\(\)-]*\d+$/" />
              */
         /**
          * PHONE (+html5)
          *        01234567890
          *        0123 4567890
          *        0123 456 789
          *        (0123) 45678 - 90
          *        0012 345 678 9012
          *        0012 (0)345 / 67890 - 12
          *        +123456789012
          *        +12 345 678 9012
          *        +12 3456 7890123
          *        +49 (0) 123 3456789
          *        +49 (0)123 / 34567 - 89
          *
          * html5 example:
          *        <input type="text"
          *            pattern="/^(\+\d{1,4}|0+\d{1,5}|\(\d{1,5})[\d\s\/\(\)-]*\d+$/" />
          * javascript example:
          *        <input ... data-parsley-pattern=
          *            "/^(\+\d{1,4}|0+\d{1,5}|\(\d{1,5})[\d\s\/\(\)-]*\d+$/" />
          */
         case 3:
             $pattern = '^(\\+\\d{1,4}|0+\\d{1,5}|\\(\\d{1,5})[\\d\\s\\/\\(\\)-]*\\d+$';
             if ($this->isNativeValidationEnabled()) {
                 $additionalAttributes['pattern'] = $pattern;
             } else {
                 if ($this->isClientValidationEnabled()) {
                     $additionalAttributes['data-parsley-pattern'] = $pattern;
                 }
             }
             break;
             /**
              * NUMBER/INTEGER (+html5)
              *
              * html5 example: <input type="number" />
              * javascript example: <input type="text" data-parsley-type="integer" />
              */
         /**
          * NUMBER/INTEGER (+html5)
          *
          * html5 example: <input type="number" />
          * javascript example: <input type="text" data-parsley-type="integer" />
          */
         case 4:
             if ($this->isClientValidationEnabled() && !$this->isNativeValidationEnabled()) {
                 $additionalAttributes['data-parsley-type'] = 'integer';
             }
             break;
             /**
              * LETTERS (+html5)
              *
              * html5 example: <input type="text" pattern="[a-zA-Z]." />
              * javascript example: <input type="text" data-parsley-pattern="[a-zA-Z]." />
              */
         /**
          * LETTERS (+html5)
          *
          * html5 example: <input type="text" pattern="[a-zA-Z]." />
          * javascript example: <input type="text" data-parsley-pattern="[a-zA-Z]." />
          */
         case 5:
             if ($this->isNativeValidationEnabled()) {
                 $additionalAttributes['pattern'] = '[A-Za-z]+';
             } else {
                 if ($this->isClientValidationEnabled()) {
                     $additionalAttributes['data-parsley-pattern'] = '[a-zA-Z]+';
                 }
             }
             break;
             /**
              * MIN NUMBER (+html5)
              *
              * Note: Field validation_configuration for editors viewable
              * html5 example: <input type="text" min="6" />
              * javascript example: <input type="text" data-parsley-min="6" />
              */
         /**
          * MIN NUMBER (+html5)
          *
          * Note: Field validation_configuration for editors viewable
          * html5 example: <input type="text" min="6" />
          * javascript example: <input type="text" data-parsley-min="6" />
          */
         case 6:
             if ($this->isNativeValidationEnabled()) {
                 $additionalAttributes['min'] = $field->getValidationConfiguration();
             } else {
                 if ($this->isClientValidationEnabled()) {
                     $additionalAttributes['data-parsley-min'] = $field->getValidationConfiguration();
                 }
             }
             break;
             /**
              * MAX NUMBER (+html5)
              *
              * Note: Field validation_configuration for editors viewable
              * html5 example: <input type="text" max="12" />
              * javascript example: <input type="text" data-parsley-max="12" />
              */
         /**
          * MAX NUMBER (+html5)
          *
          * Note: Field validation_configuration for editors viewable
          * html5 example: <input type="text" max="12" />
          * javascript example: <input type="text" data-parsley-max="12" />
          */
         case 7:
             if ($this->isNativeValidationEnabled()) {
                 $additionalAttributes['max'] = $field->getValidationConfiguration();
             } else {
                 if ($this->isClientValidationEnabled()) {
                     $additionalAttributes['data-parsley-max'] = $field->getValidationConfiguration();
                 }
             }
             break;
             /**
              * RANGE (+html5)
              *
              * Note: Field validation_configuration for editors viewable
              * html5 example: <input type="range" min="1" max="10" />
              * javascript example:
              *        <input type="text" data-parsley-type="range" min="1" max="10" />
              */
         /**
          * RANGE (+html5)
          *
          * Note: Field validation_configuration for editors viewable
          * html5 example: <input type="range" min="1" max="10" />
          * javascript example:
          *        <input type="text" data-parsley-type="range" min="1" max="10" />
          */
         case 8:
             $values = GeneralUtility::trimExplode(',', $field->getValidationConfiguration(), true);
             if ((int) $values[0] <= 0) {
                 break;
             }
             if (!isset($values[1])) {
                 $values[1] = $values[0];
                 $values[0] = 1;
             }
             if ($this->isNativeValidationEnabled()) {
                 $additionalAttributes['min'] = (int) $values[0];
                 $additionalAttributes['max'] = (int) $values[1];
             } else {
                 if ($this->isClientValidationEnabled()) {
                     $additionalAttributes['data-parsley-min'] = (int) $values[0];
                     $additionalAttributes['data-parsley-max'] = (int) $values[1];
                 }
             }
             break;
             /**
              * LENGTH
              *
              * Note: Field validation_configuration for editors viewable
              * javascript example:
              *        <input type="text" data-parsley-length="[6, 10]" />
              */
         /**
          * LENGTH
          *
          * Note: Field validation_configuration for editors viewable
          * javascript example:
          *        <input type="text" data-parsley-length="[6, 10]" />
          */
         case 9:
             $values = GeneralUtility::trimExplode(',', $field->getValidationConfiguration(), true);
             if ((int) $values[0] <= 0) {
                 break;
             }
             if (!isset($values[1])) {
                 $values[1] = (int) $values[0];
                 $values[0] = 1;
             }
             if ($this->isClientValidationEnabled()) {
                 $additionalAttributes['data-parsley-length'] = '[' . implode(', ', $values) . ']';
             }
             break;
             /**
              * PATTERN (+html5)
              *
              * Note: Field validation_configuration for editors viewable
              * html5 example: <input type="text" pattern="https?://.+" />
              * javascript example:
              *        <input type="text" data-parsley-pattern="https?://.+" />
              */
         /**
          * PATTERN (+html5)
          *
          * Note: Field validation_configuration for editors viewable
          * html5 example: <input type="text" pattern="https?://.+" />
          * javascript example:
          *        <input type="text" data-parsley-pattern="https?://.+" />
          */
         case 10:
             if ($this->isNativeValidationEnabled()) {
                 $additionalAttributes['pattern'] = $field->getValidationConfiguration();
             } else {
                 if ($this->isClientValidationEnabled()) {
                     $additionalAttributes['data-parsley-pattern'] = $field->getValidationConfiguration();
                 }
             }
             break;
             /**
              * Custom Validation Attribute
              *
              * If CustomValidation was added via Page TSConfig
              *        tx_powermail.flexForm.validation.addFieldOptions.100 = New Validation
              *
              * <input type="text" data-parsley-custom100="1" />
              */
         /**
          * Custom Validation Attribute
          *
          * If CustomValidation was added via Page TSConfig
          *        tx_powermail.flexForm.validation.addFieldOptions.100 = New Validation
          *
          * <input type="text" data-parsley-custom100="1" />
          */
         default:
             if ($field->getValidation() && $this->isClientValidationEnabled()) {
                 $value = 1;
                 if ($field->getValidationConfiguration()) {
                     $value = $field->getValidationConfiguration();
                 }
                 $additionalAttributes['data-parsley-custom' . $field->getValidation()] = $value;
             }
     }
     // set errormessage if javascript validation active
     if ($field->getValidation() && $this->isClientValidationEnabled()) {
         $additionalAttributes['data-parsley-error-message'] = LocalizationUtility::translate('validationerror_validation.' . $field->getValidation());
     }
 }
 /**
  * Set different remote validation attributes
  *
  * @param \array $dataArray
  * @param \In2code\Powermail\Domain\Model\Field $field
  * @return void
  */
 protected function addRemoteValidationAttributes(&$dataArray, $field)
 {
     if ($field->getValidation()) {
         $uriBuilder = $this->controllerContext->getUriBuilder();
         $uri = $uriBuilder->setCreateAbsoluteUri(TRUE)->setArguments(array('L' => $this->getLanguageUid(), 'tx_powermail_pi1' => array('mail' => array('form' => $field->getPages()->getForms()->getUid())), 'eID' => 'powermailEidValidator'))->build();
         $dataArray['data-parsley-remote'] = $uri;
         $dataArray['data-parsley-trigger'] = 'change';
         $dataArray['data-parsley-error-message'] = LocalizationUtility::translate('validationerror_validation.' . $field->getValidation(), $this->extensionName);
     }
 }
Ejemplo n.º 25
0
 /**
  * Get mirror value from POST params
  *
  * @param \In2code\Powermail\Domain\Model\Field $field
  * @return string
  */
 protected function getMirroredValueOfPasswordField(\In2code\Powermail\Domain\Model\Field $field)
 {
     $piVars = GeneralUtility::_GP('tx_powermail_pi1');
     $mirroredValue = $piVars['field'][$field->getMarker() . '_mirror'];
     return $mirroredValue;
 }
Ejemplo n.º 26
0
 /**
  * Get value for multi fieldtypes (checkbox, radio)
  *
  * @param \In2code\Powermail\Domain\Model\Field $field
  * @param \In2code\Powermail\Domain\Model\Mail $mail To prefill in Edit Action
  * @param \int $cycle Cycle Number (1,2,3...) - if filled checkbox or radiobutton
  * @return string
  */
 protected function getMultiValue(\In2code\Powermail\Domain\Model\Field $field, \In2code\Powermail\Domain\Model\Mail $mail = NULL, $cycle = 0)
 {
     $marker = $field->getMarker();
     $uid = $field->getUid();
     $selected = 0;
     $index = $cycle - 1;
     $options = $field->getModifiedSettings();
     // edit view
     if ($mail !== NULL && $mail->getAnswers()) {
         foreach ($mail->getAnswers() as $answer) {
             if ($answer->getField() === $field) {
                 $values = $answer->getValue();
                 foreach ((array) $values as $value) {
                     if ($value === $options[$index]['value'] || $value === $options[$index]['label']) {
                         $selected = 1;
                     }
                 }
             }
         }
     }
     // if GET/POST with marker (&tx_powermail_pi1[field][marker][index]=value)
     if (isset($this->piVars['field'][$marker]) && is_array($this->piVars['field'][$marker])) {
         foreach (array_keys($this->piVars['field'][$marker]) as $key) {
             if ($this->piVars['field'][$marker][$key] === $options[$index]['value'] || $this->piVars['field'][$marker][$key] === $options[$index]['label']) {
                 $selected = 1;
             }
         }
     } elseif (isset($this->piVars['field'][$marker])) {
         if ($this->piVars['field'][$marker] == $options[$index]['value'] || $this->piVars['field'][$marker] == $options[$index]['label']) {
             $selected = 1;
         }
     } elseif (isset($this->piVars[$marker]) && is_array($this->piVars[$marker])) {
         foreach (array_keys($this->piVars[$marker]) as $key) {
             if ($this->piVars[$marker][$key] === $options[$index]['value'] || $this->piVars[$marker][$key] === $options[$index]['label']) {
                 $selected = 1;
             }
         }
     } elseif (isset($this->piVars[$marker])) {
         if ($this->piVars[$marker] == $options[$index]['value'] || $this->piVars[$marker] == $options[$index]['label']) {
             $selected = 1;
         }
     } elseif (isset($this->piVars['field'][$uid])) {
         if (is_array($this->piVars['field'][$uid])) {
             foreach ($this->piVars['field'][$uid] as $key => $value) {
                 $value = NULL;
                 if ($this->piVars['field'][$uid][$key] == $options[$index]['value'] || $this->piVars['field'][$uid][$key] == $options[$index]['label']) {
                     $selected = 1;
                 }
             }
         } else {
             if ($this->piVars['field'][$uid] == $options[$index]['value'] || $this->piVars['field'][$uid] == $options[$index]['label']) {
                 $selected = 1;
             }
         }
     } elseif (isset($this->piVars['uid' . $uid])) {
         if ($this->piVars['uid' . $uid] == $options[$index]['value'] || $this->piVars['uid' . $uid] == $options[$index]['label']) {
             $selected = 1;
         }
     } elseif ($field->getFeuserValue() && intval($GLOBALS['TSFE']->fe_user->user['uid']) !== 0) {
         // if fe_user is logged in
         if ($GLOBALS['TSFE']->fe_user->user[$field->getFeuserValue()] == $options[$index]['value'] || $GLOBALS['TSFE']->fe_user->user[$field->getFeuserValue()] == $options[$index]['label']) {
             $selected = 1;
         }
     } elseif ($options[$index]['selected']) {
         $selected = 1;
     } elseif (isset($this->settings['prefill.'][$marker]) || isset($this->settings['prefill.'][$marker . '.'])) {
         if (isset($this->settings['prefill.'][$marker . '.']) && is_array($this->settings['prefill.'][$marker . '.'])) {
             $data = \TYPO3\CMS\Extbase\Reflection\ObjectAccess::getGettableProperties($field);
             $this->cObj->start($data);
             if (isset($this->settings['prefill.'][$marker . '.']['0'])) {
                 /**
                  * plugin.tx_powermail.settings.setup.prefill.marker.0 = TEXT
                  * plugin.tx_powermail.settings.setup.prefill.marker.0.value = red
                  */
                 foreach (array_keys($this->settings['prefill.'][$marker . '.']) as $key) {
                     if (stristr($key, '.')) {
                         continue;
                     }
                     $prefill = $this->cObj->cObjGetSingle($this->settings['prefill.'][$marker . '.'][$key], $this->settings['prefill.'][$marker . '.'][$key . '.']);
                     if ($prefill == $options[$index]['value'] || $prefill == $options[$index]['label']) {
                         $selected = 1;
                     }
                 }
             } else {
                 /**
                  * plugin.tx_powermail.settings.setup.prefill.marker = TEXT
                  * plugin.tx_powermail.settings.setup.prefill.marker.value = red
                  */
                 $prefill = $this->cObj->cObjGetSingle($this->settings['prefill.'][$marker], $this->settings['prefill.'][$marker . '.']);
                 if ($prefill == $options[$index]['value'] || $prefill == $options[$index]['label']) {
                     $selected = 1;
                 }
             }
         } else {
             /**
              * plugin.tx_powermail.settings.setup.prefill.marker = red
              */
             if ($this->settings['prefill.'][$marker] == $options[$index]['value'] || $this->settings['prefill.'][$marker] == $options[$index]['label']) {
                 $selected = 1;
             }
         }
     }
     return $selected;
 }
 /**
  * Set Error
  *
  * @param Field $field
  * @param string $label
  * @return void
  */
 public function setErrorAndMessage(Field $field, $label)
 {
     $this->setValidState(false);
     $this->addError($label, $field->getMarker());
 }
 /**
  * setPathAndFilename Test
  *
  * @test
  */
 public function setPathAndFilenameReturnVoid()
 {
     $field = new Field();
     $field->_setProperty('uid', 123);
     $this->generalValidatorMock->_set('imagePath', 'typo3temp/');
     $this->generalValidatorMock->_set('imageFilenamePrefix', 'abc%ddef.png');
     $this->generalValidatorMock->_call('setPathAndFilename', $field);
     $this->assertSame('typo3temp/abc123def.png', $this->generalValidatorMock->_get('pathAndFilename'));
 }
Ejemplo n.º 29
0
 /**
  * Validate a single field
  *
  * @param Field $field
  * @param mixed $value
  * @return void
  */
 protected function isValidField(Field $field, $value)
 {
     // Mandatory Check
     if ($field->getMandatory()) {
         if (!$this->validateMandatory($value)) {
             $this->setErrorAndMessage($field, 'mandatory');
         }
     }
     // String Checks
     if (!empty($value) && in_array($field->getType(), $this->validationFieldTypes)) {
         switch ($field->getValidation()) {
             // email
             case 1:
                 if (!$this->validateEmail($value)) {
                     $this->setErrorAndMessage($field, 'validation.' . $field->getValidation());
                 }
                 break;
                 // URL
             // URL
             case 2:
                 if (!$this->validateUrl($value)) {
                     $this->setErrorAndMessage($field, 'validation.' . $field->getValidation());
                 }
                 break;
                 // phone
             // phone
             case 3:
                 if (!$this->validatePhone($value)) {
                     $this->setErrorAndMessage($field, 'validation.' . $field->getValidation());
                 }
                 break;
                 // numbers only
             // numbers only
             case 4:
                 if (!$this->validateNumbersOnly($value)) {
                     $this->setErrorAndMessage($field, 'validation.' . $field->getValidation());
                 }
                 break;
                 // letters only
             // letters only
             case 5:
                 if (!$this->validateLettersOnly($value)) {
                     $this->setErrorAndMessage($field, 'validation.' . $field->getValidation());
                 }
                 break;
                 // min number
             // min number
             case 6:
                 if (!$this->validateMinNumber($value, $field->getValidationConfiguration())) {
                     $this->setErrorAndMessage($field, 'validation.' . $field->getValidation());
                 }
                 break;
                 // max number
             // max number
             case 7:
                 if (!$this->validateMaxNumber($value, $field->getValidationConfiguration())) {
                     $this->setErrorAndMessage($field, 'validation.' . $field->getValidation());
                 }
                 break;
                 // range
             // range
             case 8:
                 if (!$this->validateRange($value, $field->getValidationConfiguration())) {
                     $this->setErrorAndMessage($field, 'validation.' . $field->getValidation());
                 }
                 break;
                 // length
             // length
             case 9:
                 if (!$this->validateLength($value, $field->getValidationConfiguration())) {
                     $this->setErrorAndMessage($field, 'validation.' . $field->getValidation());
                 }
                 break;
                 // pattern
             // pattern
             case 10:
                 if (!$this->validatePattern($value, $field->getValidationConfiguration())) {
                     $this->setErrorAndMessage($field, 'validation.' . $field->getValidation());
                 }
                 break;
                 /**
                  * E.g. Validation was extended with Page TSconfig
                  *        tx_powermail.flexForm.validation.addFieldOptions.100 = New Validation
                  *
                  * Register your Class and Method with TypoScript Setup
                  *        plugin.tx_powermail.settings.setup.validation.customValidation.100 =
                  *            In2code\Powermailextended\Domain\Validator\ZipValidator
                  *
                  * Add method to your class
                  *        validate100($value, $validationConfiguration)
                  *
                  * Define your Errormessage with TypoScript Setup
                  *        plugin.tx_powermail._LOCAL_LANG.default.validationerror_validation.100 =
                  *            Error happens!
                  */
             /**
              * E.g. Validation was extended with Page TSconfig
              *        tx_powermail.flexForm.validation.addFieldOptions.100 = New Validation
              *
              * Register your Class and Method with TypoScript Setup
              *        plugin.tx_powermail.settings.setup.validation.customValidation.100 =
              *            In2code\Powermailextended\Domain\Validator\ZipValidator
              *
              * Add method to your class
              *        validate100($value, $validationConfiguration)
              *
              * Define your Errormessage with TypoScript Setup
              *        plugin.tx_powermail._LOCAL_LANG.default.validationerror_validation.100 =
              *            Error happens!
              */
             default:
                 if ($field->getValidation()) {
                     $validation = $field->getValidation();
                     if (!empty($this->settings['validation.']['customValidation.'][$validation])) {
                         $extendedValidator = $this->objectManager->get($this->settings['validation.']['customValidation.'][$validation]);
                         if (method_exists($extendedValidator, 'validate' . ucfirst($validation))) {
                             if (!$extendedValidator->{'validate' . ucfirst($validation)}($value, $field->getValidationConfiguration())) {
                                 $this->setErrorAndMessage($field, 'validation.' . $validation);
                             }
                         }
                     }
                 }
         }
     }
 }
 /**
  * Test for nameCheck()
  *
  * @param int $spamIndicator
  * @param array $answerProperties
  * @param int $expectedOverallSpamIndicator
  * @return void
  * @dataProvider nameCheckReturnsVoidDataProvider
  * @test
  */
 public function nameCheckReturnsVoid($spamIndicator, $answerProperties, $expectedOverallSpamIndicator)
 {
     $mail = new Mail();
     foreach ($answerProperties as $fieldName => $value) {
         $field = new Field();
         $field->setMarker($fieldName);
         $answer = new Answer();
         $answer->setField($field);
         $answer->_setProperty('value', $value);
         $answer->setValueType(132);
         $mail->addAnswer($answer);
     }
     $this->generalValidatorMock->_callRef('nameCheck', $mail, $spamIndicator);
     $this->assertSame($expectedOverallSpamIndicator, $this->generalValidatorMock->_callRef('getSpamIndicator'));
 }