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+
}

Model/ResourceModel/Document.php

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,35 @@
77

88
namespace Opengento\Document\Model\ResourceModel;
99

10+
use Magento\Framework\Model\ResourceModel\Db\Context;
1011
use Magento\Framework\Model\ResourceModel\Db\VersionControl\AbstractDb;
12+
use Magento\Framework\Model\ResourceModel\Db\VersionControl\RelationComposite;
13+
use Magento\Framework\Model\ResourceModel\Db\VersionControl\Snapshot;
14+
use Magento\Framework\Validator\ValidatorInterface;
1115

1216
class Document extends AbstractDb
1317
{
18+
/**
19+
* @var ValidatorInterface
20+
*/
21+
private $validator;
22+
23+
public function __construct(
24+
Context $context,
25+
Snapshot $entitySnapshot,
26+
RelationComposite $entityRelationComposite,
27+
ValidatorInterface $validator,
28+
?string $connectionName = null
29+
) {
30+
$this->validator = $validator;
31+
parent::__construct($context, $entitySnapshot, $entityRelationComposite, $connectionName);
32+
}
33+
34+
public function getValidationRulesBeforeSave(): ValidatorInterface
35+
{
36+
return $this->validator;
37+
}
38+
1439
protected function _construct(): void
1540
{
1641
$this->_init('opengento_document', 'entity_id');

Model/ResourceModel/DocumentType.php

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,35 @@
77

88
namespace Opengento\Document\Model\ResourceModel;
99

10+
use Magento\Framework\Model\ResourceModel\Db\Context;
1011
use Magento\Framework\Model\ResourceModel\Db\VersionControl\AbstractDb;
12+
use Magento\Framework\Model\ResourceModel\Db\VersionControl\RelationComposite;
13+
use Magento\Framework\Model\ResourceModel\Db\VersionControl\Snapshot;
14+
use Magento\Framework\Validator\ValidatorInterface;
1115

1216
class DocumentType extends AbstractDb
1317
{
18+
/**
19+
* @var ValidatorInterface
20+
*/
21+
private $validator;
22+
23+
public function __construct(
24+
Context $context,
25+
Snapshot $entitySnapshot,
26+
RelationComposite $entityRelationComposite,
27+
ValidatorInterface $validator,
28+
?string $connectionName = null
29+
) {
30+
$this->validator = $validator;
31+
parent::__construct($context, $entitySnapshot, $entityRelationComposite, $connectionName);
32+
}
33+
34+
public function getValidationRulesBeforeSave(): ValidatorInterface
35+
{
36+
return $this->validator;
37+
}
38+
1439
protected function _construct(): void
1540
{
1641
$this->_init('opengento_document_type', 'entity_id');

Model/Validator.php

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
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;
9+
10+
use Magento\Framework\Validator\AbstractValidator;
11+
use Magento\Framework\Validator\ValidatorInterface;
12+
13+
final class Validator extends AbstractValidator
14+
{
15+
/**
16+
* @var ValidatorInterface[]
17+
*/
18+
private $validators;
19+
20+
public function __construct(
21+
array $validators
22+
) {
23+
$this->validators = $validators;
24+
}
25+
26+
public function isValid($value): bool
27+
{
28+
$this->_clearMessages();
29+
30+
foreach ($this->validators as $validator) {
31+
if (!$validator->isValid($value)) {
32+
$this->_addMessages($validator->getMessages());
33+
}
34+
}
35+
36+
return !$this->hasMessages();
37+
}
38+
}

Model/Validator/Code.php

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
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\Validator;
9+
10+
use Magento\Framework\Translate\AdapterInterface;
11+
use Magento\Framework\Validator\Regex;
12+
use Magento\Framework\Validator\ValidatorInterface;
13+
14+
final class Code implements ValidatorInterface
15+
{
16+
/**
17+
* @var Regex
18+
*/
19+
private $regex;
20+
21+
public function __construct(
22+
Regex $regex
23+
) {
24+
$this->regex = $regex;
25+
}
26+
27+
public function isValid($value): bool
28+
{
29+
return $this->regex->isValid($value);
30+
}
31+
32+
public function getMessages(): array
33+
{
34+
return $this->regex->getMessages();
35+
}
36+
37+
public function setTranslator($translator = null): ValidatorInterface
38+
{
39+
return $this->regex->setTranslator($translator);
40+
}
41+
42+
public function getTranslator(): ?AdapterInterface
43+
{
44+
return $this->regex->getTranslator();
45+
}
46+
47+
public function hasTranslator(): bool
48+
{
49+
return $this->regex->hasTranslator();
50+
}
51+
}

0 commit comments

Comments
 (0)