diff --git a/Controller/UploadController.php b/Controller/UploadController.php index 4a14530317e85c885e24e94ca64cbd2ed4069e32..5c669752e554c638d38ffde8eb3767e59affc2e3 100644 --- a/Controller/UploadController.php +++ b/Controller/UploadController.php @@ -75,30 +75,34 @@ class UploadController extends Controller $token = $this->csrfProvider->generateCsrfToken(self::CSRF_INTENTION); - $location = $this->router->generate( - 'file_upload_put', - [ - 'id' => $file->getId(), - 'token' => $token - ], - RouterInterface::ABSOLUTE_URL - ); + $parameters = [ + 'id' => $file->getId(), + 'token' => $token + ]; + + $delete_url = $this->router->generate('file_upload_delete', $parameters); return $this->createResponse( Response::HTTP_CREATED, 'New file created', - [ 'id' => $file->getId(), 'url' => $location ], - [ 'Location' => $location ] + [ + 'id' => $file->getId(), + 'put_url' => $this->router->generate('file_upload_put_content', $parameters), + 'delete_type' => 'DELETE', + 'delete_url' => $delete_url + ], + // On a pas de get pour l'instant, le DELETE et ce qui y ressemble le plus + [ 'Location' => $delete_url ] ); } /** - * @Route("/{id}", name="file_upload_put") + * @Route("/{id}/content", name="file_upload_put_content") * @Method("PUT") * @param Request $request * @param UploadedFile $file */ - public function putAction(Request $request, UploadedFile $file) + public function putContentAction(Request $request, UploadedFile $file) { $this->validateToken($request); @@ -150,7 +154,7 @@ class UploadController extends Controller 'name' => $file->getOriginalFilename(), 'type' => $file->getMimeType(), 'size' => $file->getSize(), - 'url' => $this->router->generate('file_upload_get', $parameters), + 'url' => $this->router->generate('file_upload_get_content', $parameters), 'delete_type' => 'DELETE', 'delete_url' => $this->router->generate('file_upload_delete', $parameters), ] @@ -160,12 +164,12 @@ class UploadController extends Controller } /** - * @Route("/{id}", name="file_upload_get") + * @Route("/{id}/content", name="file_upload_get_content") * @Method("GET") * @param Request $request * @param UploadedFile $file */ - public function getAction(Request $request, UploadedFile $file) + public function getContentAction(Request $request, UploadedFile $file) { $this->validateToken($request); diff --git a/Resources/js/widget/file_upload.js b/Resources/js/widget/file_upload.js index 19d428eafb697ddd9971a918fc9608e1f2c34bd0..3d402ef958961648683b7fc53ff95e7bd7185c76 100644 --- a/Resources/js/widget/file_upload.js +++ b/Resources/js/widget/file_upload.js @@ -106,7 +106,9 @@ { file: { name: file.name, size: file.size, type: file.type, lastModified: file.lastModified } }, function(response) { if(response.status == 201) { - data.url = response.url; + data.url = response.put_url; + data.delete_url = response.delete_url; + data.delete_type = response.delete_type; data.jqXHR = $this.fileupload('send', data); } else { file.error = response.message || ('Error #' + response.status); @@ -132,8 +134,8 @@ } )).bind({ fileuploadfailed: function (e, data) { - if(data.url) { - $.ajax(data.url, { type: 'DELETE' }); + if(data.delete_url) { + $.ajax(data.delete_url, { type: data.delete_type }); } }, fileuploadadded: updateButtonVisibility, diff --git a/Resources/views/Form/file_upload.html.twig b/Resources/views/Form/file_upload.html.twig index 8bec7d57a101b3c3b00ea480dd46d4125bc100ab..15323aa6d0c9601cf9422703b390d928e1e7f7d0 100644 --- a/Resources/views/Form/file_upload.html.twig +++ b/Resources/views/Form/file_upload.html.twig @@ -36,7 +36,7 @@ <button class="btn btn-xs btn-danger delete" title="{% trans %}button.delete{% endtrans %}" {%- if disabled or read_only %} disabled="disabled"{% endif -%}> {{- irstea_icon('trash') -}} </button> <span class="name"> - <a{% if file %} href="{{ path('file_upload_get', {id: file.id, token: csrfToken}) }}"{% endif %}>{{ file.originalFilename|default }}</a> + <a{% if file %} href="{{ path('file_upload_get_content', {id: file.id, token: csrfToken}) }}"{% endif %}>{{ file.originalFilename|default }}</a> </span> (<span class="size"> {{- file.size|default -}} </span>)