Working : Fix : Image Management + Document Management

This commit is contained in:
gmorel
2013-09-24 18:41:28 +02:00
parent 71888e68aa
commit 7f3367f590
15 changed files with 372 additions and 179 deletions

View File

@@ -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()) {

View File

@@ -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)
{

View File

@@ -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;
}

View File

@@ -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 . '&current_tab=images';
$uri = '/admin/products/update?product_id=' . $parentId . '&current_tab=' . $fileType;
break;
case self::TYPE_CATEGORY:
$uri = '/admin/categories/update?category_id=' . $parentId . '&current_tab=images';
$uri = '/admin/categories/update?category_id=' . $parentId . '&current_tab=' . $fileType;
break;
case self::TYPE_CONTENT:
$uri = '/admin/content/update/' . $parentId . '&current_tab=images';
$uri = '/admin/content/update/' . $parentId . '?current_tab=' . $fileType;
break;
case self::TYPE_FOLDER:
$uri = '/admin/folders/update/' . $parentId . '&current_tab=images';
$uri = '/admin/folders/update/' . $parentId . '?current_tab=' . $fileType;
break;
default:
$uri = false;