Skip to content
Snippets Groups Projects
Commit d0c52248 authored by Stefan Galinski's avatar Stefan Galinski :video_game:
Browse files

[TASK] More fixes related to the file handling

parent d1883a5c
No related branches found
No related tags found
No related merge requests found
......@@ -155,32 +155,31 @@ class JoblistController extends ActionController {
$uniqueFolderName = $this->request->getArgument('folderName');
} else {
$uniqueFolderName = uniqid('sgjobs-', TRUE);
$resourceFactory = $this->objectManager->get(ResourceFactory::class);
$storage = $resourceFactory->getStorageObject(1);
$storage->createFolder('/JobApplication/' . $uniqueFolderName);
}
$resourceFactory = $this->objectManager->get(ResourceFactory::class);
$storage = $resourceFactory->getStorageObject(1);
$storage->createFolder('/JobApplication/' . $uniqueFolderName . '/coverLetter');
$storage->createFolder('/JobApplication/' . $uniqueFolderName . '/cv');
$storage->createFolder('/JobApplication/' . $uniqueFolderName . '/certificate');
$this->request->setArgument('folderName', $uniqueFolderName);
$propertyMappingConfiguration = $this->arguments->getArgument('applyData')->getPropertyMappingConfiguration();
$typeConverter = $this->objectManager->get(UploadedFileReferenceConverter::class);
$typeConverter->setAllowedFileExtensions($this->settings['allowedFileExtensions']);
$typeConverter->setUploadFolder('1:/JobApplication/' . $uniqueFolderName . '/coverLetter');
$propertyMappingConfiguration->forProperty('coverLetter')->setTypeConverter($typeConverter);
$typeConverter = $this->objectManager->get(UploadedFileReferenceConverter::class);
$typeConverter->setAllowedFileExtensions($this->settings['allowedFileExtensions']);
$typeConverter->setUploadFolder('1:/JobApplication/' . $uniqueFolderName . '/cv');
$propertyMappingConfiguration->forProperty('cv')->setTypeConverter($typeConverter);
$typeConverter = $this->objectManager->get(UploadedFileReferenceConverter::class);
$typeConverter->setAllowedFileExtensions($this->settings['allowedFileExtensions']);
$typeConverter->setUploadFolder('1:/JobApplication/' . $uniqueFolderName . '/certificate');
$propertyMappingConfiguration->forProperty('certificate')->setTypeConverter($typeConverter);
$this->request->setArgument('folderName', $uniqueFolderName);
$typeConverter1 = $this->objectManager->get(UploadedFileReferenceConverter::class);
$typeConverter1->setAllowedFileExtensions($this->settings['allowedFileExtensions']);
$typeConverter1->setUploadFolder('1:/JobApplication/' . $uniqueFolderName . '/');
$typeConverter1->setTargetUploadFileName('coverLetter');
$propertyMappingConfiguration->forProperty('coverLetter')->setTypeConverter($typeConverter1);
$typeConverter2 = $this->objectManager->get(UploadedFileReferenceConverter::class);
$typeConverter2->setAllowedFileExtensions($this->settings['allowedFileExtensions']);
$typeConverter2->setUploadFolder('1:/JobApplication/' . $uniqueFolderName . '/');
$typeConverter2->setTargetUploadFileName('cv');
$propertyMappingConfiguration->forProperty('cv')->setTypeConverter($typeConverter2);
$typeConverter3 = $this->objectManager->get(UploadedFileReferenceConverter::class);
$typeConverter3->setAllowedFileExtensions($this->settings['allowedFileExtensions']);
$typeConverter3->setUploadFolder('1:/JobApplication/' . $uniqueFolderName . '/');
$typeConverter3->setTargetUploadFileName('certificate');
$propertyMappingConfiguration->forProperty('certificate')->setTypeConverter($typeConverter3);
}
/**
......
......@@ -105,6 +105,26 @@ class UploadedFileReferenceConverter extends AbstractTypeConverter {
*/
protected $convertedResources = [];
/**
* @var string
*/
protected $targetUploadFileName = '';
/**
* @return string
*/
public function getTargetUploadFileName(): string {
return $this->targetUploadFileName;
}
/**
* @param string $targetUploadFileName
* @return void
*/
public function setTargetUploadFileName($targetUploadFileName) {
$this->targetUploadFileName = $targetUploadFileName;
}
/**
* @return string
*/
......@@ -239,8 +259,8 @@ class UploadedFileReferenceConverter extends AbstractTypeConverter {
}
$allowedFileExtensions = $this->getAllowedFileExtensions();
$filePathInfo = PathUtility::pathinfo($uploadInfo['name']);
if ($allowedFileExtensions !== NULL) {
$filePathInfo = PathUtility::pathinfo($uploadInfo['name']);
if (!GeneralUtility::inList($allowedFileExtensions, strtolower($filePathInfo['extension']))) {
throw new TypeConverterException('File extension is not allowed!', 1399312430);
}
......@@ -250,6 +270,7 @@ class UploadedFileReferenceConverter extends AbstractTypeConverter {
$conflictMode = $this->getUploadConflictMode();
$uploadFolder = $this->resourceFactory->retrieveFileOrFolderObject($uploadFolderId);
$uploadedFile = $uploadFolder->addUploadedFile($uploadInfo, $conflictMode);
$uploadedFile->rename($this->getTargetUploadFileName() . '.' . $filePathInfo['extension']);
$resourcePointer = isset($uploadInfo['submittedFile']['resourcePointer']) &&
strpos($uploadInfo['submittedFile']['resourcePointer'], 'file:') === FALSE
......
......@@ -4,6 +4,8 @@
<f:section name="main">
<f:form action="apply" controller="Joblist" method="post" name="applyData" object="{applyData}" enctype="multipart/form-data">
<f:form.hidden name="folderName" value="{folderName}" />
<f:if condition="{internalError}">
<div class="errormessage">
<f:translate key="frontend.apply.error.general" />: {internalError}
......@@ -177,15 +179,15 @@
<p>
<label for="apply-cover-letter">
<f:translate key="frontend.apply.cover_letter" />
<f:translate key="frontend.apply.allowed_file_extensions" />{allowedFileExtensions}
(<f:translate key="frontend.apply.allowed_file_extensions" /> {allowedFileExtensions})
</label>
<h:form.upload property="coverLetter" id="apply-cover-letter" additionalAttributes="{accept: '{allowedMimeTypes}'}" />
<f:for each="{uploadedFiles.coverLetter}" as="file">
<f:if condition="{applyData.coverLetter.name}">
<div class="sg-jobs-uploaded-file">
<span class="filename">{file.name}</span>
<a href="#" class="remove-file">(remove)</a>
<span class="filename">{applyData.coverLetter.name}</span> vorhanden
</div>
</f:for>
</f:if>
<f:form.validationResults for="applyData.coverLetter">
<f:for each="{validationResults.errors}" as="error">
......@@ -199,15 +201,16 @@
<p>
<label for="apply-cv">
<f:translate key="frontend.apply.cv" />
<f:translate key="frontend.apply.allowed_file_extensions" />{allowedFileExtensions}
(<f:translate key="frontend.apply.allowed_file_extensions" /> {allowedFileExtensions})
</label>
<h:form.upload property="cv" id="apply-cv" additionalAttributes="{accept: '{allowedMimeTypes}'}" />
<f:for each="{uploadedFiles.cv}" as="file">
<f:if condition="{applyData.cv.name}">
<div class="sg-jobs-uploaded-file">
<span class="filename">{file.name}</span>
<a href="#" class="remove-file">(remove)</a>
<span class="filename">{applyData.cv.name}</span> vorhanden
</div>
</f:for>
</f:if>
<f:form.validationResults for="applyData.cv">
<f:for each="{validationResults.errors}" as="error">
<div class="sg-jobs-validation-error">
......@@ -220,15 +223,16 @@
<p>
<label for="apply-certificate">
<f:translate key="frontend.apply.certificate" />
<f:translate key="frontend.apply.allowed_file_extensions" />{allowedFileExtensions}
(<f:translate key="frontend.apply.allowed_file_extensions" /> {allowedFileExtensions})
</label>
<h:form.upload property="certificate" id="apply-certificate" additionalAttributes="{accept: '{allowedMimeTypes}'}" />
<f:for each="{uploadedFiles.certificate}" as="file">
<f:if condition="{applyData.certificate.name}">
<div class="sg-jobs-uploaded-file">
<span class="filename">{file.name}</span>
<a href="#" class="remove-file">(remove)</a>
<span class="filename">{applyData.certificate.name}</span> vorhanden
</div>
</f:for>
</f:if>
<f:form.validationResults for="applyData.certificate">
<f:for each="{validationResults.errors}" as="error">
<div class="sg-jobs-validation-error">
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment