Je rêve d'un truc :
- Dans la page "média", avoir un sous-répertoire "plugins" à côté de "documents" et "images"
- Pouvoir uploader un plugin zippé dans ce répertoire
- aller dans Spxplugindownloader dans le dépôt "local" et retrouver mon zip automatiquement (pas de xml à générer au préalable), et pouvoir toutes les actions classiques (installation, réinstallation, upgrade, désinstallation, etc.).
Dans le principe, les zip pourraient rester dans le répertoire "medias/plugins", c'est ce qui servirait à Spxplugindownloader à construire son dépôt local à la volée.
Mon objectif final, c'est de pouvoir mettre un plugin perso ou téléchargé préalablement sur mon poste sur mon site sans avoir à passer par le FTP et la ligne de commande... De cette manière, Spxplugindownloader pourrait gérer l'ensemble des cas de figure
Est-ce qu'il y a une chance que ça apparaisse dans une prochaine version ? {)
Le dépôt de Bronco n'apparait pas dans la liste des dépôts. C'est normal ???
Je viens de le mettre mais il y a une erreur 404 pour l'xml du depot:
[== Indéfini ==]
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /repository.xml was not found on this server.</p>
<p>Additionally, a 404 Not Found
error was encountered while trying to use an ErrorDocument to handle the request.</p>
</body></html>
Tu pourras le voir dans plugins/cache/repository.bronco.xml (le repository.bronco.version semble fonctionner)
alors que l'url semble correct dans le navigateur et dans mon store.
En gros la racine de ton site avec dans le title page non trouvée. C'est assez étonnant.
Pour le tester de ton coté c'est assez simple.
Tu édites le fichier plugins/cache/repository-stores.xml
Dans ta branche, tu peux modifier l'url repositoryurl avec la nouvelle (version aussi tu peu) et tu supprimes repository.bronco.version et repository.bronco.xml
Tu vas ensuite dans le plugin qui va regénérer tes fichiers xml + version dans le cache dont tu peux voir la structure.
Après il peut s'agir d'un problème avec curl aussi, mais je n'ai pas trouvé pour le moment.
J'obtiens la même chose en effet et je n'arrive pas à fixer le fichier de sortie de curl pour voir ce qui se passe.
De plus, si on utilise le dépôt de jéjé, les plugins de Bronco apparaissent bien dans la liste des plugins disponibles mais leur téléchargement échoue systématiquement (à mon avis, ce doit être lié au problème de redirection du dépôt).
Je viens de m'apercevoir également que les mises à jour de plugins ne sont pas prises en compte : quand on clique sur le bouton "mettre à jour", on a un message nous disant que tout s'est bien passé mais le bouton reste sur "mettre à jour" et les fichiers du plugins ne sont pas modifiés.
Je viens de m'apercevoir également que les mises à jour de plugins ne sont pas prises en compte : quand on clique sur le bouton "mettre à jour", on a un message nous disant que tout s'est bien passé mais le bouton reste sur "mettre à jour" et les fichiers du plugins ne sont pas modifiés.
J'ai pareil, spxtinyMce ne passe pas en 2.6... 8.(
J'ai testé avec un de mes plugins (DebugToolBarForPluxml) et avec un des tiens (spxtynimce - version 2.5) que j'ai pris au hasard des plugins à mettre à jour.
C'est fixé pour tynimce. Un problème de structure de zip et mon depot pas a jour (j'avais laissé le zip en 2.5).
Il faudrait un truc pour automatiser tout ça, pour éviter les erreurs. Je pense a un depot de zip avec mise a jour auto du fcihier xml (a la bronco un peu). Pour le futur peut-être.
Oui j'ai vu. C'est a cause de la fonction rename qui ne marche pas quand le plugin est installé. (ce n'est pas mon cas puisque ma structure n'utilise pas la fonction rename).
[list=*]
[*]on télécharge le dezip du plugin dans le répertoire plugins[/*]
[*]on renomme le plugin courant si il existe par le nom.tmp[/*]
[*]on renomme le dossier dézippé par le nom du plugin[/*]
[*]si ça marche on detruit le dossier nom.tmp[/*]
[*]si ça marche pas on renomme le nom.tmp par le nom du plugin pour que tout soit comme avant[/*]
[/list]
Ce qui donne le code :
[== Indéfini ==]
# téléchargement du fichier distant
$zipfile = PLX_PLUGINS.$plugName.'.zip';
if(!spxplugindownloader::downloadRemoteFile($file, $zipfile)) {
plxMsg::Error($plxPlugin->getLang('L_ERR_DOWNLOAD'));
header('Location: plugin.php?p=spxplugindownloader&groupe='.$groupe);
exit;
}
# dezippage de l'archive
require_once(PLX_PLUGINS."spxplugindownloader/dUnzip2.inc.php");
$zip = new dUnzip2($zipfile); // New Class : arg = fichier à dézipper
$zip->unzipAll(PLX_PLUGINS, "", true, 0755); // Unzip All : args = dossier de destination
# on renomme le dossier extrait
# ici on renomme le plugin courant
if (file_exists(realpath(PLX_PLUGINS.$plugName))) {
rename(PLX_PLUGINS.$plugName , PLX_PLUGINS.$plugName.".tmp");
}
# ici on renomme le plugin zipper (ça marche puique on a renommé l'ancien)
rename(PLX_PLUGINS.$plugName.'-'.str_replace('.zip', '', basename($file)), PLX_PLUGINS.$plugName);
# on supprimer le fichier .zip
unlink($zipfile);
# on teste si le dézippage semble ok par la présence du fichier infos.xml du plugin
if(!is_file(PLX_PLUGINS.$plugName.'/infos.xml')){
plxMsg::Error($plxPlugin->getLang('L_ERR_INSTALL'));
# on arrive pas a lire le fichier info on renomme le plugin tmp par l'ancien nom
rename(PLX_PLUGINS.$plugName.".tmp", PLX_PLUGINS.$plugName);
}else{
# ici on est ok on regarde si on a un plugin tmp
if (file_exists(realpath(PLX_PLUGINS.$plugName.".tmp"))) {
# on le detruit avec une fonction du plugin (la meme que pluxml classe plugin)
spxplugindownloader::deleteDir (realpath(PLX_PLUGINS.$plugName.".tmp"));
}
if ($depot=="spx"){
$hitname = $_POST['buttonhit'][$plugName];
file_get_contents('http://www.secretsitebox.fr/spx/hitcounter.php?file='.$hitname.'&url=true');
}
plxMsg::Info($plxPlugin->getLang('L_INSTALL_OK'));
}
Rajout de la fonction de destruction des dossiers dans le plugin.
[== Indéfini ==]
/**
* Méthode récursive qui supprime tous les dossiers et les fichiers d'un répertoire
*
* @param deldir répertoire de suppression
* @return boolean résultat de la suppression
* @author Stephane F
**/
public static function deleteDir($deldir) { #fonction récursive
if(is_dir($deldir) AND !is_link($deldir)) {
if($dh = opendir($deldir)) {
while(FALSE !== ($file = readdir($dh))) {
if($file != '.' AND $file != '..') {
spxplugindownloader::deleteDir(($deldir!='' ? $deldir.'/' : '').$file);
}
}
closedir($dh);
}
return rmdir($deldir);
}
return unlink($deldir);
}
Salut,
Je ne crois pas avoir vu d'appel aux fonctions deactivate (pour le plugin qui va se faire supprimer) et activate (pour le nouveau plugin), si et seulement si le plugin à migrer était activé bien entendu. Il me semble que c'est pourtant nécessaire si la nouvelle version du plugin embarque une nouvelle fonctionnalité (je me suis déjà fait avoir tout seul).
A+
Gari.
Merci de la bonne nouvelle Jerry. Pour bronco c'est un autre problème dont personnellement je n'ai pas trouvé l'origine. Bronco si tu est d'accord tu peux m'envoyer tes zips de plugins que je mettrais chez moi en attendant de trouver la solution.
Mise à jour imminente pour ce petit soucis de rename.
## Version spx 2.2 (20/03/2015) ##
MOD: traduction
BUG: changement sur la façon d'installer et de mettre à jour (copie le plugin en plugin.tmp)
BUG: position du menu
si on veut que le résultat s'affiche dans le fichier curlerrorlog.txt dans le dossier du plugin spxplugindownloader (qu'il faudra renommer en spxdownloader par la suite quand tu auras achevé le traitement des thèmes. J'ai vu que tu as commencé...).
Salut les gars, je débarque un peu après quelques jours épiques (et colégram, allez ^^)
Je lis les messages, j'installe et je teste.
Je vous tiens au courant ;-)
Salut ! Profite bien de la balade et profite de l'instant présent ;-)
Bon, après test en local chez moi:
le zip du repo fonctionne dans le navigateur,
si je fais un curl dpuis une page de test, le zip se télécharge normalement.
Par contre, dès que je teste depuis la page de plugins, j'ai une erreur L_ERR_INSTALL. (ligne 199 d'admin-plugin.php)
Après avoir jeté un oeil sur ton code, je remarque que ce n'est pas une erreur L_ERR_DOWNLOAD (ligne 175): si le fichier n'était pas accessible, ne serais-ce pas ici que l'erreur apparaîtrait ?
D'ailleurs, une fois supprimé le return true inhibant la fonction is_RemoteFileExists (ligne 111 du script du plugin) je n'obtiens pas d'erreur...
Quid ?!
Au passage, j'en profite pour dire que c'est du très beau boulot: on a vraiment le plaisir de la navigation sur un market et pas le soucis de l'install des plugins... vraiment que du tout bon :-) GG
Réponses
Je rêve d'un truc :
- Dans la page "média", avoir un sous-répertoire "plugins" à côté de "documents" et "images"
- Pouvoir uploader un plugin zippé dans ce répertoire
- aller dans Spxplugindownloader dans le dépôt "local" et retrouver mon zip automatiquement (pas de xml à générer au préalable), et pouvoir toutes les actions classiques (installation, réinstallation, upgrade, désinstallation, etc.).
Dans le principe, les zip pourraient rester dans le répertoire "medias/plugins", c'est ce qui servirait à Spxplugindownloader à construire son dépôt local à la volée.
Mon objectif final, c'est de pouvoir mettre un plugin perso ou téléchargé préalablement sur mon poste sur mon site sans avoir à passer par le FTP et la ligne de commande... De cette manière, Spxplugindownloader pourrait gérer l'ensemble des cas de figure
Est-ce qu'il y a une chance que ça apparaisse dans une prochaine version ? {)
Je viens de le mettre mais il y a une erreur 404 pour l'xml du depot:
Tu pourras le voir dans plugins/cache/repository.bronco.xml (le repository.bronco.version semble fonctionner)
alors que l'url semble correct dans le navigateur et dans mon store.
Je n'ai pas encore l'explication (une redirection ?)
si je trouve je vous dis. Si tu a l'url direct bronco que je teste si c'est la redirection ou pas. Merci.
Gari. Merci pour les remarques, j'en tiens compte bien sur. Ca aide a avancer.
Dis-moi si ça fonctionne
J'ai testé en changeant l'url vers le repository de stef et ça marche. Il semble que ce soit de ton coté.
Si je trouve la raison je te dis.
je ne comprends pas de quoi ça pourrait venir... oO
ça le fait aussi pour le fichier version ou pas ?!
Je n'ai pas testé les zip mais les infos s'affichent nickel (jolis logo d'ailleurs).
J'ai cherché mais pas trouvé encore le soucis au niveau des repository xml et version.
Si quelqu'un a une idée ?
a+
jéjé
Et avec http://warriordudimanche.net/vrac/repository.xml c'est pareil ?
J'ai testé ton lien (impec dans le navigateur) mais avec curl j'obtiens ceci :
En gros la racine de ton site avec dans le title page non trouvée. C'est assez étonnant.
Pour le tester de ton coté c'est assez simple.
Tu édites le fichier plugins/cache/repository-stores.xml
Dans ta branche, tu peux modifier l'url repositoryurl avec la nouvelle (version aussi tu peu) et tu supprimes repository.bronco.version et repository.bronco.xml
Tu vas ensuite dans le plugin qui va regénérer tes fichiers xml + version dans le cache dont tu peux voir la structure.
Après il peut s'agir d'un problème avec curl aussi, mais je n'ai pas trouvé pour le moment.
a+
jéjé
De plus, si on utilise le dépôt de jéjé, les plugins de Bronco apparaissent bien dans la liste des plugins disponibles mais leur téléchargement échoue systématiquement (à mon avis, ce doit être lié au problème de redirection du dépôt).
Tu peux me dire quel plugins tu as testé ? On galère mais c'est pour la bonne cause héhé.
J'ai pareil, spxtinyMce ne passe pas en 2.6... 8.(
Il faudrait un truc pour automatiser tout ça, pour éviter les erreurs. Je pense a un depot de zip avec mise a jour auto du fcihier xml (a la bronco un peu). Pour le futur peut-être.
J'ai peut-etre une solution possible...
[list=*]
[*]on télécharge le dezip du plugin dans le répertoire plugins[/*]
[*]on renomme le plugin courant si il existe par le nom.tmp[/*]
[*]on renomme le dossier dézippé par le nom du plugin[/*]
[*]si ça marche on detruit le dossier nom.tmp[/*]
[*]si ça marche pas on renomme le nom.tmp par le nom du plugin pour que tout soit comme avant[/*]
[/list]
Ce qui donne le code :
Rajout de la fonction de destruction des dossiers dans le plugin.
Ca semble marcher pas mal. Quand pensez-vous ?
a+
jeje
Je ne crois pas avoir vu d'appel aux fonctions deactivate (pour le plugin qui va se faire supprimer) et activate (pour le nouveau plugin), si et seulement si le plugin à migrer était activé bien entendu. Il me semble que c'est pourtant nécessaire si la nouvelle version du plugin embarque une nouvelle fonctionnalité (je me suis déjà fait avoir tout seul).
A+
Gari.
Mise à jour imminente pour ce petit soucis de rename.
A plus
Jeje
MOD: traduction
BUG: changement sur la façon d'installer et de mettre à jour (copie le plugin en plugin.tmp)
BUG: position du menu
Ok je teste ça et je rajoute. Ca va nous servir pour les logs.
Oui, j'ai commencé les thèmes dans la meme logique que les plugins, j'ai caché le menu pour le moment et j'ai ecore du boulot.
Pour la suite je vais intégrer un moteur de recherche par dépot et/ou par plugins.
a+
jéjé
Je lis les messages, j'installe et je teste.
Je vous tiens au courant ;-)
Bon, après test en local chez moi:
le zip du repo fonctionne dans le navigateur,
si je fais un curl dpuis une page de test, le zip se télécharge normalement.
Par contre, dès que je teste depuis la page de plugins, j'ai une erreur L_ERR_INSTALL. (ligne 199 d'admin-plugin.php)
Après avoir jeté un oeil sur ton code, je remarque que ce n'est pas une erreur L_ERR_DOWNLOAD (ligne 175): si le fichier n'était pas accessible, ne serais-ce pas ici que l'erreur apparaîtrait ?
D'ailleurs, une fois supprimé le return true inhibant la fonction is_RemoteFileExists (ligne 111 du script du plugin) je n'obtiens pas d'erreur...
Quid ?!
Au passage, j'en profite pour dire que c'est du très beau boulot: on a vraiment le plaisir de la navigation sur un market et pas le soucis de l'install des plugins... vraiment que du tout bon :-) GG