Help pour modifier un squelette d'un plugin existant

Je suis en train de créer un nouveau plugins,
cependant j’ai besoin de modifier un squelette du plugin saisies « saisies-vue/fichier.html »
donc, sans encore avoir créer mon plugins, j’ai créé et modifié le fichier dans mes squelettes/saisies-vues/fichier.html.

comment cela se passe si je le crée dans un plugins ? comment faire pour soit pris en compte à la place de celui de saisies-vues ?

merci

necessite et utilise dans paquet.xml changent l’ordre du path et rendent tes squelettes du plugin prioritaires.

hello,
donc afin que mon plugins utilise mon squelette « fichiers.html »
( ./v0.0.1/formidable_imagecrop/saisies-vues/fichiers.html )
en lieu et place de celui du plugins cvtupload
( ./v1.23.3/saisies-vues/fichiers.html )

il suffirait de déclarer dans mon paquet.xml

<necessite nom=cvtupload compatibilite=[1.23.3] />
<utilise nom=cvtupload compatibilite=[1.23.3] />

je ne comprends pas trop bien le mécanisme ??

présentement sans encore avoir créer un plugins particulier ,

j’ai modifié avec skeleditor le fichier original

saisies-vues/fichiers.html et qui a été mis à jour dans squelettes/saisies-vues/fichiers.html

et donc je souhaiterais créer un plugins « xxxxx » et que ce soit mon « fichiers.html » de mon plugins qui soit utilisé à la place de celui du plugins cvtupload.

merci encore

https://programmer.spip.net/Gestion-des-dependances :

Usages de utilise et necessite

  1. utilise et necessite permettent de surcharger les fichiers du plugin qu’ils indiquent (en étant prioritaire dans le chemin).

Et dans : https://plugins.spip.net/redaction-du-paquet-xml.html :
Ces balises permettent d’établir des dépendances entre plugins : <necessite> exprime une dépendance forte, le plugin ne pouvant être activé sans le plugin nécessité, alors que <utilise> exprime uniquement une dépendance faible, le plugin pouvant être activé sans le plugin utilisé. La balise <utilise> a un impact en matière de priorité : si le plugin A utilise le plugin B, les fichiers de A seront prioritaires sur ceux de B [1] et A passera après B dans les pipelines [2].
[1] Les squelettes de A pourront par exemple surcharger ceux de B.

[2] Dès lors, deux plugins ne peuvent pas s’utiliser mutuellement, car cela provoquera une erreur dans le calcul des priorités.

merci RealET,
donc si j’ai bien compris, si dans mon paquet j’indique

<necessite nom="cvtupload" compatibilite="[1.23.3]" />
<utilise nom=cvtupload compatibilite=[1.23.3] />

cela entrainera de fait que

mon fichier de squelette « plugins/monplugin/auto/vX.Y.Z/saisies-vues/fichiers.html »
sera pris en charge au lieu de
plugins/cvtupload/auto/v1.23.31/saisies-vues/fichiers.html

vu que ce n’est pas un pipeline

oui (en principe).

Remarque : il faut passer par la page de gestion des plugins pour que le path soit recalculé en conséquence de la modification du paquet.xml

merci, voilà ça gaze … super

pour l’instant j’ai une page a ma façon,
cad je charge directement dans ma page les scripts js dont j’ai besoin

<html>
  <head>
    <title>background</title>
    <meta charset="utf-8">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script src="./javascript/jquery.cropit.js"></script>

c’est « quelque peut cavalier » (pour ne pas dire crad), je crois avoir lu qu’il fallait passer par HEAD ?
un petit guide à ce propos serait attentivement lu … :wink:

https://programmer.spip.net/insert_head
https://programmer.spip.net/Utiliser-les-pipelines

Au passage, ça pourrait être bien de faire bénéficier toute la communauté de ces améliorations :wink:

oui, j’en ai bien l’intention
mon plugin permet (tra) de pouvoir redimensionner/recadrer les images déposées par des formulaires à partir d’un clic sur le lien direct de l’image (faut etre admin/admin retreint).
Je me répète un peu, mais je génére des cartes (adherents, piscine, etc) depuis de formulaires qui sont déposés par les visteurs,
Malgré des précisions sur le style de photos attendues (et en étant cool) c’est moins de 1% de documents corrects…
et donc
Capture-20220829180340-624x501
Capture-20220829180119-643x946
avec ce plugin on peut facilement recadrer, mettre à l’echelle, tourner la photo déposée par le demandeur …

Dans un deuxieme temps je proposerai une doc ( sans doute un plugin ) qui permet de creer des pages spécifiques pour la gestion de ce genre d’application

1 « J'aime »

RealET hop là

je viens de rajouter a mon plugin le pipeline pour insérer dans les headers les css et javascript

<?php
/**
 * Utilisations de pipelines par formidable_imagecrop
 *
 * @plugin     formidable_imagecrop
 * @copyright  2022
 * @author     Lebardix
 * @licence    GNU/GPL
 * @package    SPIP\formidable_imagecrop\Pipelines
 */

if (!defined('_ECRIRE_INC_VERSION')) return;
	
include_spip('inc/formidable_imagecrop');

/**
 * Ajouter la CSS dans le head du site public
 * @param string $flux
 * @param bool $prive
 * @return string
 */
function formidable_imagecrop_insert_head_css($flux, $prive = false) {
	if (!$prive) {
		$css = timestamp(find_in_path('css/formidable_imagecrop.css'));

		$flux .= "\n<link rel='stylesheet' href='$css' type='text/css' media='all' />\n";
	}
	return $flux;
}
function formidable_imagecrop_insert_head_js($flux, $prive = false) {
	if (!$prive) {
		$javascript = timestamp(find_in_path('javascript/jquery.cropit.js'));

		$flux .= "\n<link rel='stylesheet' href='$javascript' type='text/javascript' />\n";
	}
	return $flux;
}
?>

Ça semble fonctionner (je retrouve bien dans le head de la page mes css et le js de cropit

mais j’ai l’erreur suivante affichée en haut des pages privées, sans trouver de trace dans les logs …

Erreur dans les plugins : /srv/data/web/vhosts/agora.plandecuques.fr/htdocs/plugins/auto/formidable_imagecrop/formulaire_imagecrop_pipelines.php

ai-je loupé quelque chose ?

merci

en simplifiant c’est OK… plus de message sur les pages privées …

function formidable_imagecrop_insert_head_css($flux) {
		$css = timestamp(find_in_path('css/formidable_imagecrop.css'));
		$flux .= "\n<link rel='stylesheet' href='$css' type='text/css' media='all' />\n";
	return $flux;
}
function formidable_imagecrop_insert_head_js($flux) {
		$javascript = timestamp(find_in_path('javascript/jquery.cropit.js'));
		$flux .= "\n<link rel='stylesheet' href='$javascript' type='text/javascript' />\n";
	return $flux;
}

un petit help pour le depot perso sur git.spip.net
voir creer un depot perso sur git.spip.net - #2 par Jack31

bon … dépose manuelle en attendant mieux