Skip to content

Commit bec3e45

Browse files
committed
fix save files & validation & i18n
1 parent 5eec9bd commit bec3e45

File tree

17 files changed

+291
-32
lines changed

17 files changed

+291
-32
lines changed

Controller/Adminhtml/Index/MassDelete.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public function execute()
6464
} catch (LocalizedException $e) {
6565
$this->messageManager->addErrorMessage($e->getMessage());
6666
} catch (Exception $e) {
67-
$this->messageManager->addExceptionMessage($e, $e->getMessage());
67+
$this->messageManager->addExceptionMessage($e, new Phrase('An error occurred on the server.'));
6868
}
6969

7070
return $resultRedirect;

Controller/Adminhtml/Index/Save.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public function execute()
6868
try {
6969
$entityId = $this->saveHandler->execute($this->getRequest(), $this->resolveDocument())->getId();
7070
$this->dataPersistor->clear('document_post_data');
71-
$this->messageManager->addSuccessMessage('The document has been successfully saved.');
71+
$this->messageManager->addSuccessMessage(new Phrase('The document has been successfully saved.'));
7272
} catch (CouldNotSaveException $e) {
7373
$this->messageManager->addErrorMessage($e->getPrevious()->getMessage());
7474
$this->saveHandler->rollback($this->getRequest());
@@ -84,7 +84,7 @@ public function execute()
8484
$resultRedirect = $this->resultRedirectFactory->create();
8585
$resultRedirect->setPath('*/*/');
8686

87-
if ($this->getRequest()->getParam('back')) {
87+
if ($this->dataPersistor->get('document_post_data') || $this->getRequest()->getParam('back')) {
8888
$resultRedirect->setPath('*/*/edit', ['id' => $entityId]);
8989
}
9090

Controller/Adminhtml/Index/Save/FileHandler.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,10 @@ private function processFile(DocumentTypeInterface $documentType, RequestInterfa
9494
$data = [];
9595
$fileUploader = $request->getParam('file_uploader');
9696

97-
if (isset($fileUploader[0]['path'], $fileUploader[0]['file'])) {
97+
if (!$fileUploader) {
98+
$data['file_name'] = null;
99+
$data['file_path'] = null;
100+
} elseif (isset($fileUploader[0]['path'], $fileUploader[0]['file'])) {
98101
$fileSrcPath = $fileUploader[0]['path'] . $fileUploader[0]['file'];
99102

100103
$this->validator->validate($fileSrcPath, $documentType->getFileAllowedExtensions());
@@ -120,7 +123,9 @@ private function processImage(DocumentTypeInterface $documentType, RequestInterf
120123
$data = [];
121124
$imageUploader = $request->getParam('image_uploader');
122125

123-
if (isset($imageUploader[0]['path'], $imageUploader[0]['file'])) {
126+
if (!$imageUploader) {
127+
$data['image_file_name'] = null;
128+
} elseif (isset($imageUploader[0]['path'], $imageUploader[0]['file'])) {
124129
$imageSrcPath = $imageUploader[0]['path'] . $imageUploader[0]['file'];
125130

126131
$destImagePath = $this->fileHelper->getImageDestPath($documentType, $imageSrcPath);

Controller/Adminhtml/Type/MassDelete.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public function execute()
7272
} catch (LocalizedException $e) {
7373
$this->messageManager->addErrorMessage($e->getMessage());
7474
} catch (Exception $e) {
75-
$this->messageManager->addExceptionMessage($e, $e->getMessage());
75+
$this->messageManager->addExceptionMessage($e, new Phrase('An error occurred on the server.'));
7676
}
7777

7878
return $resultRedirect;

Controller/Adminhtml/Type/Save.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public function execute()
6868
try {
6969
$entityId = $this->saveHandler->execute($this->getRequest(), $this->resolveDocumentType())->getId();
7070
$this->dataPersistor->clear('document_type_post_data');
71-
$this->messageManager->addSuccessMessage('The document type has been successfully saved.');
71+
$this->messageManager->addSuccessMessage(new Phrase('The document type has been successfully saved.'));
7272
} catch (CouldNotSaveException $e) {
7373
$this->messageManager->addErrorMessage($e->getPrevious()->getMessage());
7474
} catch (LocalizedException $e) {
@@ -81,7 +81,7 @@ public function execute()
8181
$resultRedirect = $this->resultRedirectFactory->create();
8282
$resultRedirect->setPath('*/*/');
8383

84-
if ($this->getRequest()->getParam('back')) {
84+
if ($this->dataPersistor->get('document_type_post_data') || $this->getRequest()->getParam('back')) {
8585
$resultRedirect->setPath('*/*/edit', ['id' => $entityId]);
8686
}
8787

Controller/Adminhtml/Type/Save/FileHandler.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,16 @@ public function execute(RequestInterface $request, DocumentTypeInterface $docume
4343
$this->rollbackData = [];
4444
$imageUploader = $request->getParam('image_uploader');
4545

46-
if (isset($imageUploader[0]['path'], $imageUploader[0]['file'])) {
46+
if (!$imageUploader) {
47+
$data['default_image_file_name'] = null;
48+
} elseif (isset($imageUploader[0]['path'], $imageUploader[0]['file'])) {
4749
$imageSrcPath = $imageUploader[0]['path'] . $imageUploader[0]['file'];
4850
$destImagePath = $this->fileHelper->getImageDestPath($documentType, $imageSrcPath);
4951
$this->rollbackData['destImagePath'] = $destImagePath;
5052
$this->fileHelper->moveFile($imageSrcPath, $destImagePath);
5153
$data['default_image_file_name'] = $this->fileHelper->getRelativeFilePath($destImagePath);
54+
}
55+
if ($data) {
5256
$documentType = $this->hydratorPool->getHydrator(DocumentTypeInterface::class)->hydrate($documentType, $data);
5357
}
5458

Model/Document.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public function getIdentities(): array
2929
{
3030
return [
3131
self::CACHE_TAG . '_' . $this->getId(),
32+
self::CACHE_TAG . '_' . $this->getCode(),
3233
DocumentType::CACHE_TAG . '_' . $this->getTypeId(),
3334
];
3435
}

Model/Document/Validator/Code.php

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?php
2+
/**
3+
* Copyright © OpenGento, All rights reserved.
4+
* See LICENSE bundled with this library for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Opengento\Document\Model\Document\Validator;
9+
10+
use Magento\Framework\Phrase;
11+
use Magento\Framework\Validator\AbstractValidator;
12+
use Opengento\Document\Api\Data\DocumentInterface;
13+
use Opengento\Document\Model\Validator\Code as CodeValidator;
14+
15+
final class Code extends AbstractValidator
16+
{
17+
/**
18+
* @var CodeValidator
19+
*/
20+
private $codeValidator;
21+
22+
public function __construct(
23+
CodeValidator $codeValidator
24+
) {
25+
$this->codeValidator = $codeValidator;
26+
}
27+
28+
public function isValid($value): bool
29+
{
30+
$this->_clearMessages();
31+
32+
if ($value instanceof DocumentInterface) {
33+
if (!$this->codeValidator->isValid($value->getCode())) {
34+
$this->_addMessages($this->codeValidator->getMessages());
35+
}
36+
} else {
37+
$this->_addMessages([new Phrase('The entity must implements "%1".', [DocumentInterface::class])]);
38+
}
39+
40+
return !$this->hasMessages();
41+
}
42+
}

Model/DocumentType.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ protected function _construct(): void
2828

2929
public function getIdentities(): array
3030
{
31-
return [self::CACHE_TAG . '_' . $this->getId()];
31+
return [self::CACHE_TAG . '_' . $this->getId(), self::CACHE_TAG . '_' . $this->getCode()];
3232
}
3333

3434
public function getId(): ?int

Model/DocumentType/Validator/Code.php

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?php
2+
/**
3+
* Copyright © OpenGento, All rights reserved.
4+
* See LICENSE bundled with this library for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Opengento\Document\Model\DocumentType\Validator;
9+
10+
use Magento\Framework\Phrase;
11+
use Magento\Framework\Validator\AbstractValidator;
12+
use Opengento\Document\Api\Data\DocumentTypeInterface;
13+
use Opengento\Document\Model\Validator\Code as CodeValidator;
14+
15+
final class Code extends AbstractValidator
16+
{
17+
/**
18+
* @var CodeValidator
19+
*/
20+
private $codeValidator;
21+
22+
public function __construct(
23+
CodeValidator $codeValidator
24+
) {
25+
$this->codeValidator = $codeValidator;
26+
}
27+
28+
public function isValid($value): bool
29+
{
30+
$this->_clearMessages();
31+
32+
if ($value instanceof DocumentTypeInterface) {
33+
if (!$this->codeValidator->isValid($value->getCode())) {
34+
$this->_addMessages($this->codeValidator->getMessages());
35+
}
36+
} else {
37+
$this->_addMessages([new Phrase('The entity must implements "%1".', [DocumentTypeInterface::class])]);
38+
}
39+
40+
return !$this->hasMessages();
41+
}
42+
}

0 commit comments

Comments
 (0)