Modifications pour le document FileUploader
Modifié par Florent Charton le 2024/08/08 18:44
Depuis la version 1.1
modifié par superadmin
sur 2022/06/20 08:49
sur 2022/06/20 08:49
Commentaire de modification :
Install extension [org.xwiki.contrib:application-ckeditor-ui/1.63.1]
À la version 2.1
modifié par Florent Charton
sur 2024/08/08 18:44
sur 2024/08/08 18:44
Commentaire de modification :
Install extension [org.xwiki.platform:xwiki-platform-ckeditor-ui/15.10.11]
Résumé
-
Propriétés de la Page (2 modifications, 0 ajouts, 0 suppressions)
Détails
- Propriétés de la Page
-
- Auteur du document
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. superadmin1 +xwiki:XWiki.fcharton - Contenu
-
... ... @@ -42,6 +42,8 @@ 42 42 #set ($fileName = $xwiki.fileupload.getFileName('upload')) 43 43 #if ("$!fileName" != '') 44 44 #if ($services.csrf.isTokenValid($request.form_token)) 45 + ## Note: This is not useful anymore and files are expected to have their definitive name on upload. 46 + ## Kept for legacy. 45 45 #if ($fileName.startsWith('__fileCreatedFromDataURI__.')) 46 46 ## We need to generate a new name so that we don't overwrite existing attachments. 47 47 #set ($extension = $stringtool.substringAfter($fileName, '.')) ... ... @@ -65,11 +65,34 @@ 65 65 #set ($document = $xwiki.getDocument($request.document)) 66 66 #end 67 67 #set ($reference = $document.documentReference) 68 - #set ($attachment = $services.temporaryAttachments.uploadTemporaryAttachment($reference, 'upload')) 70 + #try('uploadTemporaryAttachmentException') 71 + #if ("$!request.filename" != '') 72 + ## If the filename is explicitly provided, no need to recompute it. 73 + #set ($fileName = $request.filename) 74 + #else 75 + #set ($fileName = $request.getPart('upload').getSubmittedFileName()) 76 + ## Note: this is not useful anymore and files are expected to have their definitive name on upload. 77 + ## Kept for legacy. 78 + #if ($fileName.startsWith('__fileCreatedFromDataURI__.')) 79 + ## We need to generate a new name so that we don't overwrite existing attachments. 80 + #set ($extension = $stringtool.substringAfter($fileName, '.')) 81 + #set ($fileName = "${datetool.date.time}-${mathtool.random(100, 1000)}.$extension") 82 + #end 83 + #end 84 + #set ($attachment = $services.temporaryAttachments.uploadTemporaryAttachment($reference, 'upload', $fileName)) 85 + #end 69 69 #if ($attachment) 70 70 #sendSuccess($document, $attachment.filename) 88 + #elseif ("$!uploadTemporaryAttachmentException" != '') 89 + ## The exception is wrapped in an org.apache.velocity.exception.MethodInvocationException 90 + #set ($validationException = $uploadTemporaryAttachmentException.cause) 91 + #if ($validationException.translationKey) 92 + #sendError(400 "$services.localization.render($validationException.translationKey, $validationException.translationParameters)") 93 + #else 94 + #sendError(400 "$services.localization.render('ckeditor.upload.error.emptyReturn')") 95 + #end 71 71 #else 72 - #sendError(400 "$services.localization.render('ckeditor.upload.error.empty return')")97 + #sendError(400 "$services.localization.render('ckeditor.upload.error.emptyReturn')") 73 73 #end 74 74 #else 75 75 #sendError(403 "$services.localization.render('ckeditor.upload.error.csrf')") ... ... @@ -122,10 +122,24 @@ 122 122 123 123 {{velocity wiki="false"}} 124 124 #if ($xcontext.action == 'get') 125 - #if ($request.getHeader('X-XWiki-Temporary-Attachment-Support') == 'true') 126 - #handleTemporaryUploadRequest 150 + ## We fallback on the old mechanism also in case of editing a translation to avoid any problem. 151 + ## See: XWIKI-20034 152 + #set ($document = $tdoc) 153 + #if ("$!request.document" != '') 154 + #set ($document = $xwiki.getDocument($request.document)) 155 + #end 156 + ## Special handling if we're editing a translation that does not exist yet: in such case we cannot rely on $document.isTranslation because the context $tdoc 157 + ## automatically fallback on the default locale in view mode, and we're getting this through a /get/ request. 158 + ## See: XWIKI-20537 159 + #set ($isNewTranslation = false) 160 + #if ($document.locale == "" && $services.localization.currentLocale != $services.localization.defaultLocale) 161 + #set ($docRefWithLocale = $services.model.createDocumentReference($document.documentReference, $services.localization.currentLocale)) 162 + #set ($isNewTranslation = $xwiki.getDocument($docRefWithLocale).isNew()) 163 + #end 164 + #if ($request.getHeader('X-XWiki-Temporary-Attachment-Support') == 'true' && !$document.isTranslation() && !$isNewTranslation) 165 + #handleTemporaryUploadRequest() 127 127 #else 128 - #handleUploadRequest 167 + #handleUploadRequest() 129 129 #end 130 130 #end 131 131 {{/velocity}}