Modifications pour le document Upload

Modifié par Florent Charton le 2025/07/04 23:28

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
XWiki.JavaScriptExtension[0]
Code
... ... @@ -1,23 +1,56 @@
1 -require(['jquery', 'imageSelector', 'l10n!imageSelector', 'resource'], function($, imageSelector, translations, resource) {
2 - $("#upload form input.button").on('click', function(event) {
3 - event.preventDefault();
4 - var imageSelectorElement = $('.image-selector');
5 - imageSelectorElement.addClass('loading');
6 - imageSelector.createLoader($("#fileUploadField").prop('files')[0], {
7 - onSuccess: function(entityReference) {
8 - imageSelector.updateSelectedImageReferences([XWiki.Model.serialize(entityReference)]);
9 - imageSelectorElement.removeClass('loading');
10 - new XWiki.widgets.Notification(translations.get('modal.fileUpload.success'), 'done');
11 - },
12 - onError: function() {
13 - new XWiki.widgets.Notification(translations.get('modal.fileUpload.fail'), 'error');
14 - imageSelectorElement.removeClass('loading');
15 - },
16 - onAbort: function() {
17 - new XWiki.widgets.Notification(translations.get('modal.fileUpload.abort'), 'error');
18 - imageSelectorElement.removeClass('loading');
19 - }
1 +require(['jquery', 'imageSelector', 'l10n!imageSelector', 'resource'],
2 + function ($, imageSelector, translations, resource) {
3 + function init(element) {
4 + const uploadButton = element.find(".upload form input.button");
5 +
6 + uploadButton.prop("disabled", true);
7 +
8 + element.on('change', function () {
9 + if ($(this).find("input[type='file']").prop('files').length > 0) {
10 + uploadButton.prop("disabled", false);
11 + } else {
12 + uploadButton.prop("disabled", true);
13 + }
14 + });
15 +
16 + uploadButton.on('click', function (event) {
17 + event.preventDefault();
18 +
19 + const buttonElement = $(this);
20 +
21 + const uploadedFile = element.find("input[type='file']").prop('files')[0];
22 +
23 + const beforeUploadEvent = $.Event("xwiki:actions:beforeUpload");
24 + $(document).trigger(beforeUploadEvent, {
25 + file: uploadedFile,
26 + documentReference: imageSelector.getDocumentReference(element)
27 + });
28 +
29 + if (!beforeUploadEvent.isDefaultPrevented()) {
30 + element.addClass('loading');
31 + imageSelector.createLoader(uploadedFile, {
32 + onSuccess: function (entityReference) {
33 + imageSelector.updateSelectedImageReferences([XWiki.Model.serialize(entityReference)], buttonElement);
34 + element.removeClass('loading');
35 + new XWiki.widgets.Notification(translations.get('modal.fileUpload.success'), 'done');
36 + },
37 + onError: function () {
38 + new XWiki.widgets.Notification(translations.get('modal.fileUpload.fail'), 'error');
39 + element.removeClass('loading');
40 + },
41 + onAbort: function () {
42 + new XWiki.widgets.Notification(translations.get('modal.fileUpload.abort'), 'error');
43 + element.removeClass('loading');
44 + }
45 + }, element);
46 + }
47 + });
48 + }
49 +
50 + init($(document).find('.image-selector'));
51 +
52 + $(document).on('xwiki:dom:updated', (event, data) => {
53 + data.elements.forEach(element => init($(element)));
20 20   });
21 21   });
22 -});
23 23  
XWiki.UIExtensionClass[0]
Cached
... ... @@ -1,0 +1,1 @@
1 +Non
Asynchronous rendering
... ... @@ -1,0 +1,1 @@
1 +Non