Working : Fix : Image Management + Document Management
This commit is contained in:
@@ -25,7 +25,6 @@ namespace Thelia\Action;
|
||||
|
||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||
|
||||
use Symfony\Component\HttpFoundation\File\File;
|
||||
use Thelia\Core\Event\DocumentCreateOrUpdateEvent;
|
||||
use Thelia\Core\Event\DocumentDeleteEvent;
|
||||
use Thelia\Core\Event\DocumentEvent;
|
||||
@@ -163,6 +162,7 @@ class Document extends BaseCachedFile implements EventSubscriberInterface
|
||||
$model = $event->getModelDocument();
|
||||
|
||||
$nbModifiedLines = $model->save();
|
||||
|
||||
$event->setModelDocument($model);
|
||||
|
||||
if (!$nbModifiedLines) {
|
||||
@@ -202,6 +202,10 @@ class Document extends BaseCachedFile implements EventSubscriberInterface
|
||||
)
|
||||
);
|
||||
|
||||
if (null !== $event->getUploadedFile()) {
|
||||
$event->getModelDocument()->setTitle($event->getUploadedFile()->getClientOriginalName());
|
||||
}
|
||||
|
||||
$fileManager = new FileManager($this->container);
|
||||
// Copy and save file
|
||||
if ($event->getUploadedFile()) {
|
||||
|
||||
@@ -181,9 +181,8 @@ class FileController extends BaseAdminController
|
||||
return new Response('', 404);
|
||||
}
|
||||
|
||||
$defaultTitle = $parentModel->getTitle();
|
||||
$documentModel->setParentId($parentId);
|
||||
$documentModel->setTitle($defaultTitle);
|
||||
$documentModel->setTitle($fileBeingUploaded->getClientOriginalName());
|
||||
|
||||
$documentCreateOrUpdateEvent = new DocumentCreateOrUpdateEvent(
|
||||
$parentType,
|
||||
@@ -292,12 +291,13 @@ class FileController extends BaseAdminController
|
||||
try {
|
||||
$fileManager = new FileManager($this->container);
|
||||
$image = $fileManager->getImageModelQuery($parentType)->findPk($imageId);
|
||||
$redirectUrl = $fileManager->getRedirectionUrl($parentType, $image->getParentId());
|
||||
$redirectUrl = $fileManager->getRedirectionUrl($parentType, $image->getParentId(), FileManager::FILE_TYPE_IMAGES);
|
||||
|
||||
return $this->render('image-edit', array(
|
||||
'imageId' => $imageId,
|
||||
'imageType' => $parentType,
|
||||
'redirectUrl' => $redirectUrl
|
||||
'redirectUrl' => $redirectUrl,
|
||||
'formId' => $fileManager->getFormId($parentType, FileManager::FILE_TYPE_IMAGES)
|
||||
));
|
||||
} catch (\Exception $e) {
|
||||
$this->pageNotFound();
|
||||
@@ -320,12 +320,13 @@ class FileController extends BaseAdminController
|
||||
try {
|
||||
$fileManager = new FileManager($this->container);
|
||||
$document = $fileManager->getDocumentModelQuery($parentType)->findPk($documentId);
|
||||
$redirectUrl = $fileManager->getRedirectionUrl($parentType, $document->getParentId());
|
||||
$redirectUrl = $fileManager->getRedirectionUrl($parentType, $document->getParentId(), FileManager::FILE_TYPE_DOCUMENTS);
|
||||
|
||||
return $this->render('document-edit', array(
|
||||
'documentId' => $documentId,
|
||||
'documentType' => $parentType,
|
||||
'redirectUrl' => $redirectUrl
|
||||
'redirectUrl' => $redirectUrl,
|
||||
'formId' => $fileManager->getFormId($parentType, FileManager::FILE_TYPE_DOCUMENTS)
|
||||
));
|
||||
} catch (\Exception $e) {
|
||||
$this->pageNotFound();
|
||||
@@ -399,9 +400,13 @@ class FileController extends BaseAdminController
|
||||
->setGeneralError($message);
|
||||
}
|
||||
|
||||
$redirectUrl = $fileManager->getRedirectionUrl($parentType, $image->getParentId(), FileManager::FILE_TYPE_IMAGES);
|
||||
|
||||
return $this->render('image-edit', array(
|
||||
'imageId' => $imageId,
|
||||
'imageType' => $parentType
|
||||
'imageType' => $parentType,
|
||||
'redirectUrl' => $redirectUrl,
|
||||
'formId' => $fileManager->getFormId($parentType, FileManager::FILE_TYPE_IMAGES)
|
||||
));
|
||||
}
|
||||
|
||||
@@ -415,14 +420,14 @@ class FileController extends BaseAdminController
|
||||
*/
|
||||
public function updateDocumentAction($documentId, $parentType)
|
||||
{
|
||||
if (null !== $response = $this->checkAuth('admin.image.update')) {
|
||||
if (null !== $response = $this->checkAuth('admin.document.update')) {
|
||||
return $response;
|
||||
}
|
||||
|
||||
$message = false;
|
||||
|
||||
$fileManager = new FileManager($this->container);
|
||||
$documentModification = $fileManager->getImageForm($parentType, $this->getRequest());
|
||||
$documentModification = $fileManager->getDocumentForm($parentType, $this->getRequest());
|
||||
|
||||
try {
|
||||
$document = $fileManager->getDocumentModelQuery($parentType)->findPk($documentId);
|
||||
@@ -433,8 +438,8 @@ class FileController extends BaseAdminController
|
||||
|
||||
$form = $this->validateForm($documentModification);
|
||||
|
||||
$event = $this->createImageEventInstance($parentType, $document, $form->getData());
|
||||
$event->setOldModelImage($oldDocument);
|
||||
$event = $this->createDocumentEventInstance($parentType, $document, $form->getData());
|
||||
$event->setOldModelDocument($oldDocument);
|
||||
|
||||
$files = $this->getRequest()->files;
|
||||
$fileForm = $files->get($documentModification->getName());
|
||||
@@ -444,7 +449,7 @@ class FileController extends BaseAdminController
|
||||
|
||||
$this->dispatch(TheliaEvents::DOCUMENT_UPDATE, $event);
|
||||
|
||||
$documentUpdated = $event->getModelImage();
|
||||
$documentUpdated = $event->getModelDocument();
|
||||
|
||||
$this->adminLogAppend(sprintf('Document with Ref %s (ID %d) modified', $documentUpdated->getTitle(), $documentUpdated->getId()));
|
||||
|
||||
@@ -472,9 +477,13 @@ class FileController extends BaseAdminController
|
||||
->setGeneralError($message);
|
||||
}
|
||||
|
||||
$redirectUrl = $fileManager->getRedirectionUrl($parentType, $document->getParentId(), FileManager::FILE_TYPE_DOCUMENTS);
|
||||
|
||||
return $this->render('document-edit', array(
|
||||
'documentId' => $documentId,
|
||||
'documentType' => $parentType
|
||||
'documentType' => $parentType,
|
||||
'redirectUrl' => $redirectUrl,
|
||||
'formId' => $fileManager->getFormId($parentType, FileManager::FILE_TYPE_DOCUMENTS)
|
||||
));
|
||||
}
|
||||
|
||||
@@ -640,7 +649,7 @@ class FileController extends BaseAdminController
|
||||
* @param CategoryDocument|ProductDocument|ContentDocument|FolderDocument $model Document model
|
||||
* @param array $data Post data
|
||||
*
|
||||
* @return ImageCreateOrUpdateEvent
|
||||
* @return DocumentCreateOrUpdateEvent
|
||||
*/
|
||||
protected function createDocumentEventInstance($parentType, $model, $data)
|
||||
{
|
||||
|
||||
@@ -56,7 +56,7 @@ class DocumentDeleteEvent extends ActionEvent
|
||||
*/
|
||||
public function __construct($documentToDelete, $documentType)
|
||||
{
|
||||
$this->imageToDelete = $documentToDelete;
|
||||
$this->documentToDelete = $documentToDelete;
|
||||
$this->documentType = $documentType;
|
||||
}
|
||||
|
||||
@@ -93,7 +93,7 @@ class DocumentDeleteEvent extends ActionEvent
|
||||
*/
|
||||
public function setDocumentToDelete($documentToDelete)
|
||||
{
|
||||
$this->imageToDelete = $documentToDelete;
|
||||
$this->documentToDelete = $documentToDelete;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
@@ -443,6 +443,48 @@ class FileManager
|
||||
return $model;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get form service id from type
|
||||
*
|
||||
* @param string $parentType
|
||||
*
|
||||
* @return string
|
||||
*
|
||||
* @todo refactor make all documents using propel inheritance and factorise image behaviour into one single clean action
|
||||
*/
|
||||
public function getFormId($parentType, $fileType)
|
||||
{
|
||||
switch ($fileType) {
|
||||
case self::FILE_TYPE_IMAGES:
|
||||
$type = 'image';
|
||||
break;
|
||||
case self::FILE_TYPE_DOCUMENTS:
|
||||
$type = 'document';
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
switch ($parentType) {
|
||||
case self::TYPE_PRODUCT:
|
||||
$formId = 'thelia.admin.product.' . $type . '.modification';
|
||||
break;
|
||||
case self::TYPE_CATEGORY:
|
||||
$formId = 'thelia.admin.category.' . $type . '.modification';
|
||||
break;
|
||||
case self::TYPE_CONTENT:
|
||||
$formId = 'thelia.admin.content.' . $type . '.modification';
|
||||
break;
|
||||
case self::TYPE_FOLDER:
|
||||
$formId = 'thelia.admin.folder.' . $type . '.modification';
|
||||
break;
|
||||
default:
|
||||
$formId = false;
|
||||
}
|
||||
|
||||
return $formId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get image parent model from type
|
||||
*
|
||||
@@ -577,24 +619,30 @@ class FileManager
|
||||
/**
|
||||
* Deduce image redirecting URL from parent type
|
||||
*
|
||||
* @param string $parentType Parent type
|
||||
* @param string $parentType Parent type ex : self::TYPE_PRODUCT
|
||||
* @param int $parentId Parent id
|
||||
* @param string $fileType File type ex : self::FILE_TYPE_DOCUMENTS
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getRedirectionUrl($parentType, $parentId)
|
||||
public function getRedirectionUrl($parentType, $parentId, $fileType)
|
||||
{
|
||||
if (!in_array($fileType, self::$availableFileType)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
switch ($parentType) {
|
||||
case self::TYPE_PRODUCT:
|
||||
$uri = '/admin/products/update?product_id=' . $parentId . '¤t_tab=images';
|
||||
$uri = '/admin/products/update?product_id=' . $parentId . '¤t_tab=' . $fileType;
|
||||
break;
|
||||
case self::TYPE_CATEGORY:
|
||||
$uri = '/admin/categories/update?category_id=' . $parentId . '¤t_tab=images';
|
||||
$uri = '/admin/categories/update?category_id=' . $parentId . '¤t_tab=' . $fileType;
|
||||
break;
|
||||
case self::TYPE_CONTENT:
|
||||
$uri = '/admin/content/update/' . $parentId . '¤t_tab=images';
|
||||
$uri = '/admin/content/update/' . $parentId . '?current_tab=' . $fileType;
|
||||
break;
|
||||
case self::TYPE_FOLDER:
|
||||
$uri = '/admin/folders/update/' . $parentId . '¤t_tab=images';
|
||||
$uri = '/admin/folders/update/' . $parentId . '?current_tab=' . $fileType;
|
||||
break;
|
||||
default:
|
||||
$uri = false;
|
||||
|
||||
Reference in New Issue
Block a user