feat: Ajout de deux events à l'API JS #4860

Merged
b_b merged 2 commits from dev/events into master 5 months ago
b_b commented 6 months ago
Owner

bigup.fileAdded & bigup.fileSubmitted

C'est surtout le second qui peut être utile, car à ce moment on peut accéder à l'objet file ainsi que bigup pour retirer un fichier de l'upload après une vérification perso. Exemple :

fileSubmitted: function(event, file){
	$.ajax({
		url: '#URL_PAGE{geol_upload_limit}',
		async: false,
		type: 'GET',
		data: ({id_article: '#ENV{id_article}'}),
		dataType: 'html',
		success: function(msg){
			if (parseInt(msg) >= 1) {
				file.bigup.presenter_erreur(file.emplacement, _T('bigup:erreur_probleme_survenu'));
				file.bigup.enlever_fichier(file.emplacement);
			}
		}
	});
},

Ici la vérification est faite en appelant une page qui vérifie que l'user n'a pas dépasser son quota d'upload pour l'objet en cours d'édition.

À noter que ça n'est pas possible de le faire depuis l'event ready (j'en parle dans le commentaire suivant), en suchargeant la méthode accepter_fichier() de bigup car son appel ici 607a4f0a7e/javascript/bigup.js (L332) est "incompatible" avec le fait de faire un test sur un post ajax vu qu'on n'est pas dans un test en mode async/await.

bigup.fileAdded & bigup.fileSubmitted C'est surtout le second qui peut être utile, car à ce moment on peut accéder à l'objet file ainsi que bigup pour retirer un fichier de l'upload après une vérification perso. Exemple : ```js fileSubmitted: function(event, file){ $.ajax({ url: '#URL_PAGE{geol_upload_limit}', async: false, type: 'GET', data: ({id_article: '#ENV{id_article}'}), dataType: 'html', success: function(msg){ if (parseInt(msg) >= 1) { file.bigup.presenter_erreur(file.emplacement, _T('bigup:erreur_probleme_survenu')); file.bigup.enlever_fichier(file.emplacement); } } }); }, ``` Ici la vérification est faite en appelant une page qui vérifie que l'user n'a pas dépasser son quota d'upload pour l'objet en cours d'édition. À noter que ça n'est pas possible de le faire depuis l'event ready (j'en parle dans le commentaire suivant), en suchargeant la méthode `accepter_fichier()` de bigup car son appel ici https://git.spip.net/spip/bigup/src/commit/607a4f0a7e4d8c4d264e90d4393d37b327b88d67/javascript/bigup.js#L332 est "incompatible" avec le fait de faire un test sur un post ajax vu qu'on n'est pas dans un test en mode async/await.
b_b added 1 commit 6 months ago
9206683559 feat: Ajout de deux events à l'API JS
Poster
Owner

J'ai une autre modif à proposer pour compléter l'event ready cf :

diff --git a/javascript/bigup.js b/javascript/bigup.js
index ab47be5..15ff58d 100644
--- a/javascript/bigup.js
+++ b/javascript/bigup.js
@@ -300,7 +300,7 @@ Bigup.prototype = {
 			me.ajouter_bouton_enlever(this);
 		});
 
-		this.input.trigger('bigup.ready', []);
+		this.input.trigger('bigup.ready', [me]);
 	},
 
 	/**

Cela permet depuis cet event de définir la fonction initFileFn() de Flow cf :

initFileFn Optional function to initialize the fileObject. To the function it will be passed a FlowFile and a FlowChunk arguments.

Exemple :

ready: function(event, obj){
	obj.flow.opts.initFileFn = function(file) {
		// gogogo
	}
},

Ça vous tente ? Je l'envoie dans la même PR ?

J'ai une autre modif à proposer pour compléter l'event ready cf : ```diff diff --git a/javascript/bigup.js b/javascript/bigup.js index ab47be5..15ff58d 100644 --- a/javascript/bigup.js +++ b/javascript/bigup.js @@ -300,7 +300,7 @@ Bigup.prototype = { me.ajouter_bouton_enlever(this); }); - this.input.trigger('bigup.ready', []); + this.input.trigger('bigup.ready', [me]); }, /** ``` Cela permet depuis cet event de définir la fonction `initFileFn()` de Flow cf : > `initFileFn` Optional function to initialize the fileObject. To the function it will be passed a FlowFile and a FlowChunk arguments. Exemple : ```js ready: function(event, obj){ obj.flow.opts.initFileFn = function(file) { // gogogo } }, ``` Ça vous tente ? Je l'envoie dans la même PR ?

Tout ce qui peut augmenter l'extensibilité est bon à prendre à priori :)

Tout ce qui peut augmenter l'extensibilité est bon à prendre à priori :)
marcimat approved these changes 5 months ago
Collaborator

C'est top @b_b !

C'est top @b_b !
Poster
Owner

@cerdic comme c'est toi qui l'a introduit, un avis à propos de la modification de l'event ready ?

@cerdic comme c'est toi qui l'a introduit, un avis à propos de la modification de l'event ready ?
Owner

@b_b ça me parait bien en effet et ça casse rien

@b_b ça me parait bien en effet et ça casse rien
Poster
Owner

Merci pour le retour, j'ajoute ça à la PR => et hop c'est dans la boite :)

Merci pour le retour, j'ajoute ça à la PR => et hop c'est dans la boite :)
b_b added 1 commit 5 months ago
3f32e0bb89 feat: API JS, compléter l'event ready
Owner

Ça vous tente ? Je l'envoie dans la même PR ?

ah oui! ça ouvre plein de possibilités :)

> Ça vous tente ? Je l'envoie dans la même PR ? ah oui! ça ouvre plein de possibilités :)
cy.altern approved these changes 5 months ago
b_b merged commit 3f32e0bb89 into master 5 months ago
b_b deleted branch dev/events 5 months ago
Poster
Owner

Donc, maintenant la question qui pourrait fâcher : est-ce que je peux reporter ça dans la branche 1.0 pour SPIP 3.2 (et donc pourquoi pas dans les autres) ?

Donc, maintenant la question qui pourrait fâcher : est-ce que je peux reporter ça dans la branche 1.0 pour SPIP 3.2 (et donc pourquoi pas dans les autres) ?
Owner

Donc, maintenant la question qui pourrait fâcher : est-ce que je peux reporter ça dans la branche 1.0 pour SPIP 3.2 (et donc pourquoi pas dans les autres) ?

à priori ça ne devrait rien casser de l'existant alors pourquoi pas ?
...de toute façon en 3.2 bigup n'est pas plugin-dist alors le nombre de sites concernés devrait être limité

> Donc, maintenant la question qui pourrait fâcher : est-ce que je peux reporter ça dans la branche 1.0 pour SPIP 3.2 (et donc pourquoi pas dans les autres) ? à priori ça ne devrait rien casser de l'existant alors pourquoi pas ? ...de toute façon en 3.2 bigup n'est pas plugin-dist alors le nombre de sites concernés devrait être limité
b_b referenced this issue from a commit 5 months ago

Le plugin pour 3.2 est censément plus "autonome", il ne fait pas partie de la dist, là le choix n'est pas en fonction de ce qu'on maintient de SPIP. Donc ouais si tu veux ajouter toutes ces extensions dans cette branche aussi, ça me semble tout bon.

Le plugin pour 3.2 est censément plus "autonome", il ne fait pas partie de la dist, là le choix n'est pas en fonction de ce qu'on maintient de SPIP. Donc ouais si tu veux ajouter toutes ces extensions dans cette branche aussi, ça me semble tout bon.
rastapopoulos approved these changes 5 months ago
Poster
Owner

Merci pour les retours, j'envoie ça dans la branche 1.0, la question demeure pour les autres branches...

Merci pour les retours, j'envoie ça dans la branche 1.0, la question demeure pour les autres branches...
Poster
Owner

Et voilà, j'ai reporté la complète dans la branche 1.0 9920ffb030

Et voilà, j'ai reporté la complète dans la branche 1.0 https://git.spip.net/spip/bigup/commit/9920ffb03007d1de8ce8b6195c031855587d6d23
marcimat referenced this issue from a commit 4 months ago
Owner

J’ai reporté donc sur les branches pour SPIP 4.1 et 4.0

J’ai reporté donc sur les branches pour SPIP 4.1 et 4.0

Reviewers

marcimat approved these changes 5 months ago
cy.altern approved these changes 5 months ago
rastapopoulos approved these changes 5 months ago
The pull request has been merged as 3f32e0bb89.
Sign in to join this conversation.
No Milestone
No Assignees
6 Participants
Notifications
Due Date

No due date set.

Dependencies

This pull request currently doesn't have any dependencies.

Loading…
There is no content yet.