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
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
Commentaire de modification : Install extension [org.xwiki.platform:xwiki-platform-ckeditor-ui/15.10.11]

Résumé

Détails

Propriétés de la Page
Auteur du document
... ... @@ -1,1 +1,1 @@
1 -XWiki.superadmin
1 +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.emptyreturn')")
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}}