[SPXPLUGINDOWNLOADER] : télécharger les plugins des dépôts

1235

Réponses

  • Vraiment utile mais c'est un peu un comble que ces plxToolbar et plxEditor ne soient pas pris-en-compte :-( non?

    PS: La description du plugin 'Ajax rating' (ecyseo) est celle de 'auth'
  • je-evrardje-evrard Membre
    août 2015 modifié
    Bonjour andrea,
    Andrea a écrit:
    Pas moyen d'ajouter ceux de "Gari" ici ?
    http://forum.pluxml.org/search.php?acti … r_id=19285
    Tels que cssNoCache, plnExtendedJurisdiction, plnCalendrier, plnPrivatePages , plnStaticPages et etc ;-) Merci (sans savoir ce qu'en pense lui meme!)

    Je ne demande que ça ! Libre a l'auteur de venir rejoindre la liste des dépots en suivant la doc et en me contactant par la suite afin que je puisse le rajouter dans la liste : Documentation ici.
    Andrea a écrit:
    Vraiment utile mais c'est un peu un comble que ces plxToolbar et plxEditor ne soient pas pris-en-compte :-( non?
    PS: La description du plugin 'Ajax rating' (ecyseo) est celle de 'auth'

    Chaque auteur est responsable de sa propre liste : plxToolbar et plxEditor ne sont pas dans la liste de pluxopolis effectivement surement a cause de ckeditor.

    a+

    jéjé
  • Ok et donc eventuellement rien n'empeche a l'insu de l'auteur ;-) de creer "nous-meme" les 2 fichiers de reference, je veux dire techniquement?
  • Ce qui pourrait etre bien pour le futur c'est un lien vers le sujet dans le forum, a defaut d'une page a propos du plugin en question (a la place, ou en plus du site de l'auteur), non?

    C'est que dans certains cas le site ne parle pas du tout de PluXml ou n'existe plus...

    Reste que c'est deja beaucoup comme ca ;-) merci encore!
  • je-evrardje-evrard Membre
    août 2015 modifié
    Andrea a écrit:
    Ok et donc eventuellement rien n'empeche a l'insu de l'auteur ;-) de creer "nous-meme" les 2 fichiers de reference, je veux dire techniquement?

    Oui techniquement pas de soucis.
    Andrea a écrit:
    Ce qui pourrait etre bien pour le futur c'est un lien vers le sujet dans le forum, a defaut d'une page a propos du plugin en question (a la place, ou en plus du site de l'auteur), non?

    Je note merci pour l'idée.
  • Super plugin, essayé et adopté ! Merci !
  • Une vraie merveille ce plugin :P
  • je-evrardje-evrard Membre
    septembre 2015 modifié
    Jormun a écrit:
    j'ai du faire une connerie dans mon dépot (cf http://forum.pluxml.org/viewtopic.php?pid=45033#p45033 ) tu pourrais m'aider stp ? je vois pas ce qui va pas sad

    Dans la déclaration de ton plugin le lien pointe vers la version SimpleStat61.zip alors que tu sembles etre en version 7.
    [== Indéfini ==]
    <plugin>
    <title>
    <![CDATA[ SimpleStat ]]>
    </title>
    <author>
    <![CDATA[ Jormun (fork plnStatistiques @Gari) ]]>
    </author>
    <version>7</version>
    <date>04/09/2015</date>
    <site/>
    <description>
    <![CDATA[ Gestion des statistiques de visites du site. ]]>
    </description>
    <name>SimpleStat</name>
    <file>http://brunchparisien.fr/depot/SimpleStat61.zip</file>
    <icon>http://brunchparisien.fr/depot/SimpleStat.png</icon>
    </plugin>
    
    
    A+

    jeje
  • @je-evrard : Dans une discussion récente où l'on parle de ton plugin, j'ai constaté la présence d'un bug d'affichage sur l'onglet d'Ecyséo.

    La colonne description fait 1729 pixels de large à cause de la longueur du texte descriptif de "cryptMyPluxml" qui ne fait aucun retour à la ligne.

    Est-ce que tu constates aussi cela ou ce n'est que chez moi ?
  • Salut,

    @kowalsky

    Je n'ai pas ce soucis, tu peux faire une copie d'écran que je visualise le soucis ? Merci

    a+

    jéjé
  • kowalskykowalsky Membre
    octobre 2015 modifié
    @je-evrard : j'ai trouvé l'origine du bug d'affichage qui est reproductible. Cela impacte ton plugin mais celui-ci n'en est pas à l'origine. :)

    Le bug d'affichage n'est pas présent sur un PluXml en version 5.4 stable, mais seulement avec la dernière version Github de PluXml. (Forcément, je fais tourner un PluXml en dev pour m'amuser et c'est celui là que j'ai consulté lors de la discussion sur la vérification des versions des plugins) :D

    Il y a un bout de CSS en ligne 338 du fichier /core/admin/theme/theme.css qui interdit le retour à la ligne sur espace dans les tableaux html suite à une modification du 28/08 dernier.
    [== CSS ==]
    td {
        white-space: nowrap;
    }
    

    Résultat tout le texte dans la colonne <td class="description"> est considéré comme un mot unique sans espace et déborde sur une seule ligne au lieu de retourner sagement à la ligne comme en version stable :P

    Contournement possible, rajouter une règle CSS plus stricte en "Contenu fichier CSS administrateur" du plugin :
    [== CSS ==]
    td.description {
        white-space: normal;
    }
    

    (édit2 : ou utiliser la class "wrap", rajoutée dernièrement par Stéphane -> <td class="description wrap">)

    Mais je pense que le mieux à faire est de voir avec Stephane pour modifier le code modifié le 28/08.

    @stephane : à la lecture du code initial et de la modification faite, il vaudrait mieux utiliser une classe "nowrap" (ou autre si déjà utilisée) à la ligne 206 de core/admin/index.php pour remplacer <td style="white-space:nowrap"> afin d'éviter d'appliquer dans /core/admin/theme/theme.css la valeur "white-space:nowrap" à l'ensemble des tableaux.
    [== PHP ==]
    echo '<td class="nowrap">....</td>';
    
    [== CSS ==]
    td.nowrap {
        white-space: nowrap;
    }
    

    édit1 : @stephane : dans tes derniers commits d'octobre, tu rajoutes du "wrap" partout :) Ne serait-il pas mieux de faire l'inverse en laissant le comportement normal par défaut ?
  • Bonjour,

    Utilises text-overflow. Rajoutes un width si besoin.
    [== CSS ==]
    td {
        white-space: nowrap;
        text-overflow: ellipsis;
    }
    

    A lire pour en savoir plus: Alsacreations

    A++
  • @kowalsky : non merci j'ai remonté le souci du nowrap et avec le wrap ça passe nickel sur mon petit écran.
    Il manque encore du nowrap dans les plugins pour les descirptions longues.
  • @bazooka07 :
    bazooka07 a écrit:
    Utilises text-overflow.

    Cela créé un autre problème : on aura alors un tableau qui conserve ses dimensions, mais dont le contenu sera tronqué lorsque les descriptions sont longues :)

    @draky : pas sûr de comprendre ta réponse. Quel est l’intérêt de bloquer le retour à la ligne par défaut dans tous les tableaux pour ensuite rajouter une classe supplémentaire pour autoriser le retour à la ligne et qu'il faudra rajouter partout puisque ce n'est pas le comportement normalement attendu ?
  • Ok, j'ai dû mal te comprendre.
    Le bon comportement est le retour à la ligne, non ?
    Dans la 5.4 ce n'est pas le cas, dans la version GitHub c'est bon maintenant le retour à la ligne est ok pour les commentaires et les titres de billet dans la liste dans l'admin.
  • kowalskykowalsky Membre
    octobre 2015 modifié
    @draky : on ne parle pas tout à fait de la même chose, tu fais référence au bug 116. Puisqu'il n'y a aucune valeur définissant la largeur de chacune des colonnes en CSS, la colonne "Catégorie" prend pour largeur celle du contenu. Le contenu le plus large étant celui du titre de la colonne, la colonne en prend donc cette largeur.

    L'introduction de la classe "wrap" fait suite à deux évènements successifs :
    1. ajout de la règle CSS td {white-space: nowrap;} le 28/08
    2. suppression de la césure du titre d'un article début septembre

    Résultat, la colonne "titre" qui avant (en version 5.4 stable) était limitée par la césure, et qui de plus retournait bien à la ligne lors d'un redimensionnement, a vu son comportement modifié en prenant comme largeur celle du contenu. D'où la présence d'un ascenseur horizontal pour afficher l'intégralité du tableau lorsque le titre de l'article est long.

    Suite à cela, la solution de Stéphane a été de créer la classe "wrap" pour annuler ce comportement en présence d'un titre long.

    Or, on reboucle maintenant sur ce que je signale : cette classe "wrap" sert à remettre en place le comportement par défaut dans un tableau pour pallier au nowrap qui l'a altéré ;)
  • Ok je comprends :)
  • Accessoirement, tout cela n'a pas résolu ton problème de largeur de la colonne "catégorie" : il y a un nowrap qui se balade dans une div en ligne 154 de core/admin/index.php ]:D
    <th>
    	<div style="white-space:nowrap">
    	<?php plxUtils::printSelect('sel_cat', $aFilterCat, $_SESSION['sel_cat']) ?>
    	<input class="<?php echo $_SESSION['sel_cat']!='all'?' select':'' ?>" type="submit" name="submit" value="<?php echo L_ARTICLES_FILTER_BUTTON ?>" />
    	</div>
    </th>
    
    
  • Ha oui mais comme je n'ai pas de catégorie avec un nom à rallonge, ça ne se voit pas :p
    Tu peux remonter le bug sur GH ceci dit ;)
    Le 116 est de moi si je me souviens bien.
  • Le plugin est compatible 5.5. Pour info
  • Jaseur BorealJaseur Boreal Membre
    juin 2016 modifié
    Bonjour,

    Il y a quelques temps que je n'avais plus activé pluxml en local depuis de vieilles versions.

    Avec la version PluXml 5.5 installée en local sur EasyPHP DEVSERVER 16.1.1 - Apache 2.4.18 x86 - PHP 5.6.19 x86

    j'ai un message d'erreur concernant l'extension curl , qui est donc maintenant activée dans Php.ini.


    Le plugin plxMyPluginDownloader est installé, mais ce message d'erreur concernant CURL apparait.

    "Fatal error: Call to undefined function curl_init() in C:\www\PluXml\plugins\plxMyPluginDownloader\plxMyPluginDownloader.php on line 94"

    Avez-vous une solution pour qu'il fonctionne correctement.

    Merci
  • Salut,

    Des index ne sont pas définis dans le fichier admin-plugins.php ce qui lève des warnings. Voici une version corrigée :
    [== PHP ==]
    <?php if(!defined('PLX_ROOT')) exit; ?>
    
    <?php
    
    # dossier local pour le cache
    $cache_dir = PLX_PLUGINS.'cache/';
    
    
    # info url liste des dépots
    $repositorystores_url = 'http://www.secretsitebox.fr/spx/repository/'; # avec un slash à la fin
    $repositorystores_xmlfile = 'repository-stores.xml';
    $repositorystores_version = 'repository-stores.version';
    
    # infos sur le repository
    //$repository_url = 'https://raw.githubusercontent.com/je-evrard/repository/master/'; # avec un slash à la fin
    $repository_url = 'http://www.secretsitebox.fr/spx/repository/'; # avec un slash à la fin
    $repository_xmlfile = 'repository.xml';
    $repository_version = 'repository.version';
    
    # Control du token du formulaire
    plxToken::validateFormToken($_POST);
    
    # vérification de la présence du dossier cache
    if(!is_dir(PLX_PLUGINS.'/cache')) {
    	mkdir(PLX_PLUGINS.'/cache',0755,true);
    }
    
    $groupe='';
    $color='';
    
    # 1) recupération du n° de version du repository-stores distant
    if(!$remote_version_stores = spxplugindownloader::getRemoteFileContent($repositorystores_url.$repositorystores_version))
    	echo $plxPlugin->getLang('L_ERR_REPOSITORYSTORES');
    else { # traitement dépots stores */
    	$remote_version_stores = intval (trim ($remote_version_stores));
    	//echo ("remote store = ".$remote_version_stores."\n<br>");
    
    	# 2) recupération du n° de version du repository-stores mis en cache
    	$version_stores = '';
    	if(is_file($cache_dir.$repositorystores_version))
    		$version_stores = file_get_contents($cache_dir.$repositorystores_version);
    	plxUtils::write($remote_version_stores, $cache_dir.$repositorystores_version);
    	
    	//echo ("version_stores = ".$version_stores."\n<br>");
    	
    	# 3) on récupère le fichier distant repository.xlm s'il n'existe pas en cache ou si nouveau n° de version
    	if($version_stores=='' OR $version_stores!=$remote_version_stores or !is_file($cache_dir.$repositorystores_xmlfile)) {
    		// echo ("chargement du magasin des depots \n<br>");
    		spxplugindownloader::downloadRemoteFile($repositorystores_url.$repositorystores_xmlfile, $cache_dir.$repositorystores_xmlfile);
    	}
    	
    	# 4) lecture des dépots
    	# lecture du fichier xml contenant les infos sur les magasins de repository
    	if (!$astores = spxplugindownloader::getStoresRepository($cache_dir.$repositorystores_xmlfile)){
    		echo ("<tr><td>".$plxPlugin->getLang('L_ERR_REPOSITORYSTORES')."</td></tr>");
    		exit;
    	}
    	
    	//echo ("lecture du depot ".$cache_dir.$repositorystores_xmlfile." \n<br>");
    	
    	# 5) lecture des plugins des dépots
    	foreach($astores as $storeName => $store) {
    		
    		$repositoryurl = $store["repositoryurl"];
    		$repository_version = $store["repositoryversionurl"];
    	
    		# 5.1) recupération du n° de version du repository distant
    		
    		//$remote_version = spxplugindownloader::getRemoteFileContent($repository_version);
    		$remote_version = spxplugindownloader::downloadRemoteFile2($repository_version);
    		//echo ("remote_version2:: ".$remote_version." url".$repository_version."\n<br>");
    		
    		$remote_version = intval (trim ($remote_version));
    		
    		$astores[$storeName]["remote_version"] = $remote_version;
    		
    		//echo ("remote version = ".$astores[$storeName]["remote_version"]."\n<br>");	
    		# 5.2) recupération du n° de version du repository mis en cache
    		$version = '';
    		if(is_file($cache_dir."repository.".$storeName.".version")){
    			$version = file_get_contents($cache_dir."repository.".$storeName.".version");
    			
    		}
    		plxUtils::write($remote_version, $cache_dir."repository.".$storeName.".version");
    	
    		//echo ("version = ".$version."\n<br>");	
    		$astores[$storeName]["version"] = $version;
    		//echo ("version-".$version."-\n<br>");
    		//echo ("remote_version-".$remote_version."-\n<br>");
    		# 5.3) on récupère le fichier distant repository.xml s'il n'existe pas en cache ou si nouveau n° de version
    		
    		if($version=='' OR $version!=$remote_version or !is_file($cache_dir."repository.".$storeName.".version")) {
    				// spxplugindownloader::downloadRemoteFile($repositoryurl, $cache_dir."repository.".$storeName.".xml");
    				// echo ("chargement des xml du depot ".$storeName);
    				$checkcontent = spxplugindownloader::downloadRemoteFile2($repositoryurl);
    				if(!$checkcontent) {
    					plxMsg::Error($plxPlugin->getLang('L_ERR_DOWNLOAD'));
    					header('Location: plugin.php?p=spxplugindownloader&groupe='.$groupe);
    					exit;
    				}else{
    					file_put_contents($cache_dir."repository.".$storeName.".xml",$checkcontent);
    				}
    				
    				
    		}
    		
    		# 5.4) lecture des plugins du depot
    		$repo = spxplugindownloader::getRepository($cache_dir."repository.".$storeName.".xml");
    		
    		
    		if (intval($version)>0){
    			// $storeName;
    			foreach($repo as $pluginsName => $plugin) {
    				$repo[$pluginsName]["repository"]=$storeName;;
    			}
    			# add to store
    			$astores[$storeName]["plugins"] = $repo;
    		}else{
    			$astores[$storeName]["plugins"]= false;
    		
    		}
    		
    	
    	}
    	
    	# 6) on récupère la liste des plugins dans le dossier plugins
    	$aPlugins = array();
    	$dirs = plxGlob::getInstance(PLX_PLUGINS, true);
    	if(sizeof($dirs->aFiles)>0) {
    		foreach($dirs->aFiles as $plugName) {
    			if(!isset($aPlugins[$plugName]) AND $plugInstance=$plxAdmin->plxPlugins->getInstance($plugName)) {
    				$plugInstance->getInfos();
    				$aPlugins[$plugName] = $plugInstance;
    			}
    		}
    	}
    	
    	# 7) on essaye d'associer les plugins du site a un depot existant via un nouveau tableau plugin 2
    	$aPlugins2 =array();
    	
    	foreach($aPlugins as $pluginName => $plugin) {
    		# info du plugin installé
    		$aPlugins2[$pluginName]["name"]=$pluginName;
    		$aPlugins2[$pluginName]["version"] = $plugin->getInfo('version');
    		$aPlugins2[$pluginName]["title"] = $plugin->getInfo('title');
    		$aPlugins2[$pluginName]["author"] = $plugin->getInfo('author');
    		$aPlugins2[$pluginName]["date"] = $plugin->getInfo('date');
    		$aPlugins2[$pluginName]["site"] = $plugin->getInfo('site');
    		$aPlugins2[$pluginName]["description"] = $plugin->getInfo('description');
    		$aPlugins2[$pluginName]["repository"] = false;
    		//$aPlugins2[$pluginName]["title"]=$plugin["title"];
    		foreach($astores as $storeName => $store) {
    			if (isset($store['plugins'][$pluginName]) && $store["plugins"][$pluginName]["name"]==$pluginName){
    				# info sup du store en surcharge
    				$aPlugins2[$pluginName]["repository"]=$storeName;
    				$aPlugins2[$pluginName]["repository_plugin"]=$store["plugins"][$pluginName];
    				break;
    			}
    		}
    	}
    	
    	if (isset($_GET['groupe'])){
    		$groupe = $_GET['groupe'];
    	}
    	if ($groupe=='') $groupe='myplugin';
    	//echo ("groupe=".$groupe);
    	
    	/*
    	if(isset($aPlugins[$plugName]))
    			$update = version_compare($aPlugins[$plugName]->getInfo('version'), $plug['version'], "<");
    
    		$new = !is_dir(PLX_PLUGINS.$plugName);
    	*/
    	
    	
    if(!empty($_POST)) {
    	
    		
    	foreach($_POST['button'] as $plugName => $dummy) {
    		$depot = $_POST["buttonrepository"][$plugName];
    		$file = $astores[$depot]["plugins"][$plugName]["file"];
    		
    		//echo ("plugin = ".$plugName." depot=".$depot);
    		//echo ("file = ".$file."\n</br>");
    	
    	
    		# on teste si le fichier distant est dispo
    		if(!spxplugindownloader::is_RemoteFileExists($file)) {
    			plxMsg::Error($plxPlugin->getLang('L_ERR_REMOTE_FILE'."remotefileexistpas"));
    			header('Location: plugin.php?p=spxplugindownloader&groupe='.$groupe);
    			exit;
    		}
    		
    		# téléchargement du fichier distant with bronco method
    		$zipfile = PLX_PLUGINS.$plugName.'.zip';
    		$checkcontent = spxplugindownloader::downloadRemoteFile2($file);
    		if(!$checkcontent) {
    			plxMsg::Error($plxPlugin->getLang('L_ERR_DOWNLOAD'));
    			header('Location: plugin.php?p=spxplugindownloader&groupe='.$groupe);
    			exit;
    		}else{
    			file_put_contents($zipfile,$checkcontent);
    		}
    			
    		/*
    		if(!spxplugindownloader::downloadRemoteFile($file, $zipfile)) {
    			plxMsg::Error($plxPlugin->getLang('L_ERR_DOWNLOAD'));
    			header('Location: plugin.php?p=spxplugindownloader&groupe='.$groupe);
    			exit;
    		}
    		*/
    		
    
    		# rename old plugin
    		if (file_exists(realpath(PLX_PLUGINS.$plugName))) {
    			rename(PLX_PLUGINS.$plugName , PLX_PLUGINS.$plugName.".tmp");
    		}
    		
    		# 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
    		# does not work for xx.1.0.zip/xx/ structure
    		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'));
    			rename(PLX_PLUGINS.$plugName.".tmp", PLX_PLUGINS.$plugName);
    		}else{
    			if (file_exists(realpath(PLX_PLUGINS.$plugName.".tmp"))) {
    				echo ("file exist=".realpath(PLX_PLUGINS.$plugName.".tmp"));
    				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'));
    		}
    		
    		# Redirection
    		header('Location: plugin.php?p=spxplugindownloader&groupe='.$groupe);
    		exit;
    		
    	}
    }
    	
    	
    ?>
    
    	<div id="contentplugindownloader"  >
    		
    		
    		<div id="brdmenu" class="inbox">
    			<ul>
    				<li id="plugins" class="isactive"><a href="plugin.php?p=spxplugindownloader&amp;page=plugins">Plugins</a></li>
    				<!--<li id="themes"><a href="plugin.php?p=spxplugindownloader&amp;page=themes">Themes</a></li>-->
    				
    			</ul>
    		</div>
    		
    		
    		<div class="separate2xxx"></div>
    		<div id="incmenutop">
    			<ul>
    				
    				<?php
    				$selected=''; 
    				if ($groupe=="myplugin"){
    						$selected='class="selected"'; 
    				}
    				echo ('<li><a '.$selected.' href="plugin.php?p=spxplugindownloader&amp;groupe=myplugin" title="link" target="">Mes plugins</a></li>');
    				?>
    				
    				
    				
    				<?php
    				foreach($astores as $storeName => $store) {
    					$selected=''; 
    					if ($storeName == $groupe){
    							$selected='class="selected"'; 
    					}
    					if ($store["plugins"]){
    						$storeicon = '<img src="'.$store["icon"].'" width="20px" height="20px">'.$store["title"];
    						echo '<li><a '.$selected.' href="plugin.php?p=spxplugindownloader&amp;groupe='.$storeName.'" title="'.$store["title"].'" target="">'.$storeicon.'</a></li>';
    					}
    				
    				}
    				?>
    			  
    			  
    			</ul>
    		</div>
    
    		<div class="clear"></div>
    		
    		
    		<form action="plugin.php?p=spxplugindownloader&groupe=<?php echo $groupe ?>" method="post" id="form_plugindownloader">
    		<p><?php echo plxToken::getTokenPostMethod() ?></p>
    			<table class="mypdler"  cellspacing="0">
    		
    		
    		
    		
    				<?php
    				# construction des plugins
    				if ($groupe=='myplugin'){
    					$repo=array();
    					foreach($aPlugins2 as $plugName => $plug) {
    						$update=false;
    						
    						
    						
    						echo '<tr>';
    						echo '<td class="icon"><img src="'.PLX_PLUGINS.$plugName.'/icon.png" width="48px" height="auto" alt="" /></td>';
    						echo '<td class="description'.$color.'">';
    							echo '<strong>'.plxUtils::strCheck($plug['title']).'</strong>';
    							echo ' - '.$plxPlugin->getLang('L_VERSION').' <strong>'.plxUtils::strCheck($plug['version']).'</strong>';
    							if($plug['date']!='')
    								echo ' ('.plxUtils::strCheck($plug['date']).')';
    							echo '<br />';
    							echo plxUtils::strCheck($plug['description']).'<br />';
    							echo $plxPlugin->getLang('L_AUTHOR').' : '.plxUtils::strCheck($plug['author']);
    							if($plug['site']!='')
    								echo ' - <a href="'.plxUtils::strCheck($plug['site']).'">'.plxUtils::strCheck($plug['site']).'</a>';
    						echo '</td>';
    						if ($plug['repository']) {
    							$update = version_compare($plug['version'], $plug["repository_plugin"]['version'], "<");
    							if($update)
    								echo '<td class="action"><input type="submit" class="medium red btsk update" name="button['.$plugName.']" value="'.$plxPlugin->getLang('L_UPDATE').'" /></td>';
    							
    							else
    								echo '<td class="action"><input type="submit" class="medium green btsk" name="button['.$plugName.']" value="'.$plxPlugin->getLang('L_INSTALL').'" /></td>';
    
    						}else{
    							echo ('<td class="action">'.$plxPlugin->getLang('L_NOREPOSITORYEXIST').'</td>');
    						}
    						
    						echo '<input type="hidden" name="buttonhit['.$plugName.']" value="'.$plugName.'.'.plxUtils::strCheck($plug['version']).'" />';
    						echo '<input type="hidden" name="buttonrepository['.$plugName.']" value="'.plxUtils::strCheck($plug['repository']).'" />';
    						echo '<input type="hidden" name="buttonrepositoryurl['.$plugName.']" value="'.plxUtils::strCheck($plug['repository']).'" />';
    						echo "</tr>";
    						
    					}
    					
    					
    					
    					
    				}else{
    					//echo ("du store je prend ".$groupe);
    					$repo= $astores[$groupe]["plugins"];
    				
    					foreach($repo as $plugName => $plug) {
    						$update=false;
    						if(isset($aPlugins[$plugName]))
    							$update = version_compare($aPlugins[$plugName]->getInfo('version'), $plug['version'], "<");
    
    						$new = !is_dir(PLX_PLUGINS.$plugName);
    
    						if($update) $color = ' new-red';
    
    						echo '<tr>';
    						echo '<td class="icon"><img src="'.$plug['icon'].'" width="48px" height="auto" alt="" /></td>';
    						echo '<td class="description'.$color.'">';
    							echo '<strong>'.plxUtils::strCheck($plug['title']).'</strong>';
    							echo ' - '.$plxPlugin->getLang('L_VERSION').' <strong>'.plxUtils::strCheck($plug['version']).'</strong>';
    							if($plug['date']!='')
    								echo ' ('.plxUtils::strCheck($plug['date']).')';
    							echo '<br />';
    							echo plxUtils::strCheck($plug['description']).'<br />';
    							echo $plxPlugin->getLang('L_AUTHOR').' : '.plxUtils::strCheck($plug['author']);
    							if($plug['site']!='')
    								echo ' - <a href="'.plxUtils::strCheck($plug['site']).'">'.plxUtils::strCheck($plug['site']).'</a>';
    						echo '</td>';
    
    						if($update)
    							echo '<td class="action"><input type="submit" class="medium red btsk update" name="button['.$plugName.']" value="'.$plxPlugin->getLang('L_UPDATE').'" /></td>';
    						elseif($new)
    							echo '<td class="action"><input type="submit" class="medium blue btsk add" name="button['.$plugName.']" value="'.$plxPlugin->getLang('L_DOWNLOAD').'" /></td>';
    						else
    							echo '<td class="action"><input type="submit" class="medium green btsk" name="button['.$plugName.']" value="'.$plxPlugin->getLang('L_INSTALL').'" /></td>';
    
    						echo '<input type="hidden" name="buttonhit['.$plugName.']" value="'.$plugName.'.'.plxUtils::strCheck($plug['version']).'" />';
    						echo '<input type="hidden" name="buttonrepository['.$plugName.']" value="'.$groupe.'" />';
    						echo "</tr>";
    					}
    		
    				}
    		
    		
    		
    		
    		
    		
    		
    		
    		
    		
    		
    		
    		
    		?>
    	
    			</table>
    		</form>
    	
    	
    	
    	
    	
    	
    	
    	
    	
    	
    	
    	</div>
    
    
    
    <?php } # fin traitement dépots stores ?>
    
    
    
    
    <?php 
    /*
    echo ("<pre>");
    		print_r($astores);
    		echo ("</pre>");*/
    		
    		
    
    	
    /*	
    echo ("<pre>");
    		print_r($aPlugins);
    		echo ("</pre>");
    		
    
    	
    echo ("<pre>");
    		print_r($repo);
    		echo ("</pre>");
    		
    */
    /*
    echo ("<pre>");
    		print_r($aPlugins2);
    		echo ("</pre>");*/
    
     ?>
    
  • Merci Jerry. je regarde ça dès que possible. Je suis en vacances dans deux jours héhé.
  • Bonjour,

    J'ai du désactiver le depot de Rockyhorror (The Poulpe.net) temporairement. Le depot version renvoie un erreur 522.

    Cordialement,

    jéjé
  • Bonjour , :)
    je-evrard a écrit:
    Le plugin est compatible 5.5. Pour info
    kowalsky a écrit:
    @je-evrard : Dans une discussion récente où l'on parle de ton plugin, j'ai constaté la présence d'un bug d'affichage sur l'onglet d'Ecyséo.

    La colonne description fait 1729 pixels de large à cause de la longueur du texte descriptif de "cryptMyPluxml" qui ne fait aucun retour à la ligne.

    Est-ce que tu constates aussi cela ou ce n'est que chez moi ?

    J'obtiens aussi ce bug d'affichage sur la dernière version stable de pluxml, du git.

    Mais je ne sais pas ou chercher le problème ... Dans core/admin/index.php ou bien le plugin en lui même. peut être que vous répondrez pendant que je fouine dans les fichiers, sinon j'éditerais mon message si je trouve la solution :)

    Un grand merci pour ce plugin 5.gif
  • Hello,

    Je corrige le problème des mon retour de vacances.

    A plus les amis

    Jeje
  • Jaseur BorealJaseur Boreal Membre
    août 2016 modifié
    [h] "Fatal error: Call to undefined function curl_init(), Problèmes avec CURL, PLUXML, PHP 5,6, Windows 8, windows 10, spxplugindownloader, serveur local [/h]


    Sur un serveur local EasyPHP avec Apache 2.4.18 x86 - PHP 5.6.19 x86, Tout semblait bien fonctionner.
    La mise à jour de windows 10 a chamboulé de nombreux fonctionnements dans mon nid douillet : Impossible de télécharger les mises à jour de plugins avec spxplugindownloader

    Avec la version PluXml 5.5 installée en local j'ai un message d'erreur concernant l'extension curl, malgré qu'elle est activée correctement dans Php.ini.

    En regardant de nombreux forums cela semble être un problème assez courant, avec une variété de solutions de contournement, dont beaucoup ne remédient pas réellement à la question.


    J'ai trouvé la vraie bonne solution après quelques temps à chercher pourquoi mon pluxml local refusait de faire fonctionner spxplugindownloader l'excellent Téléchargeur de plugins créé par Jérome Evrard - http://www.secretsitebox.fr
    Ce plugin permet de simplifier les mises à jour sur les dépots (pluxopolis, spx, best of)


    Voici ma solution.


    Énoncé du problème :

    Apache est configuré pour démarrer en tant que service
    L'extension CURL est activée dans le fichier php.ini
    [== PHP.ini ==]
     extension = c: \ php \ ext \ php_curl.dll
    

    Vous avez arrêté et redémarré Apache
    Mais CURL ne fonctionne pas


    Solution du problème

    1. Assurez-vous que votre système windows est configuré avec la variable d'environnement PATH qui contient bien le répertoire dans lequel PHP est installé.

    2. Arrêtez le serveur Apache et redémarrez le une fois de plus. Avec de la chance CURL va commencer à travailler.



    Explications

    Supposons que PHP est installé dans c: \ php

    - Lorsque Windows démarre le service Apache, la variable d'environnement PATH est définie dans le "système".
    - Windows utilise son chemin pour découvrir les DLL nécessaires au programme.
    - L'extension CURL (de php_curl.dll, situé dans c: \ php \ ext) dépend d'un certain nombre de DLLs dont: libeay32.dll, ssleay32.dll et (depuis 5.5.17) libssh2.dll
    - PHP fourni les DLLs qui sont situées dans c: \ php
    - Si Apache ne peut pas charger les DLL c'est en raison de dépendances non satisfaites alors il reste silencieux.

    Par conséquent, si vous avez tenté de configurer votre php.ini pour charger l'extension php curl , mais que vous n'avez pas inclus c:\php dans votre chemin variable d'environnement , alors la php_curl.dll ne sera pas chargée et les fonctions de CURL ne seront pas activées, car elles ne seront pas réellement trouvées au bon endroit.


    Lorsque CURL est pas chargé, vous pourriez obtenir
    Fatal error: Call to undefined function curl_init ()

    Cette erreur apparait aussi souvent dans Word Press, jommla, etc ...



    Il vous faut mettre à jour votre système PATH sur Windows 8, windows 10 pour inclure PHP

    Dans le cas où vous ne savez pas comment faire cela, ce qui semble très peu probable si vous avez réussi à installer Apache et PHP et tenté d'activer CURL ... suivez ces étapes pour ajouter le nom du répertoire où PHP est installé à la variable d' environnement système PATH .

    - Allez dans le panneau de configuration de Windows 10
    - Choisissez > Systèmes
    - Choisissez > paramètres système avancés
    - Choisissez > variable d'environnement
    - Dans la partie "variables système" sélectionnez la variable Path et choisissez "modifier"...
    - Assurez vous que la valeur de la Variable: PATH contient le bon chemin d' accès à votre version de PHP. par exemple c:\php;

    Exemple pour easyphp ajouter cette ligne dans la variable PATH 'L'exemple s'adapte pour WAMP , UWAMP , etc selon la configuration de votre serveur local.)
    [== exemple chemin à ajouter dans la variable PATH  ==]
    C:\EasyPHP-Devserver-16.1\eds-binaries\php\php5619vc11x86x160801075255\
    


    Validez / Sauvegardez la modification, redémarrez le système windows et votre serveur local ... tout fonctionne , et enfin vous pouvez télécharger les plugins et les mises à jour des plugins depuis votre serveur local.

    D'après les explications en anglais lues sur http://herbmiller.me/2014/11/21/problems-php-5-5-18-curl-windows-8-wordpress-bleeding-edge/

    Autres liens :
    http://php.net/manual/en/book.curl.php
    https://bugs.php.net/bug.php?id=68047
  • Bonjour à tous,

    Suite à une discussion sur le sujet [topic=5739]Pluxml 5.6[/topic], je souhaiterais vous faire part de quelques remarques concernant cet excellent plugin :
    1. Serait-il possible d'ajouter la version 5.5 à la liste des Pluxml compatible (j'ai moi-même hésité à le tester ne sachant pas s'il l'était... or, il l'est) :D
    2. J'ai relevé pas mal de "Notice" php du fait que 2 plugins que j'utilise n'ont pas de dépôts. Je pense les corriger mais tant qu'à faire, je souhaiterais que cela profite à tout le monde. D'où ma question : est-il possible de contribuer à ce projet ? Si oui, existe-t-il un dépôt GitHub, Framagit ou autre ?

    Ce plugin comble vraiment un manque du gestionnaire de plugin de base de PluXml : la centralisation des plugins tout en conservant leur décentralisation :P Bref, merci à je-evrard pour ce beau boulot :D
  • JuanJuan Membre
    octobre 2016 modifié
    J'ai trouvé une petite erreur dans un des dépôts.

    Dans repository.bronco.xml, le plugin WDDWebLinks n'est pas renseigné complètement (ce qui génère un "Notice" php") :
    <plugin>
    <name>WDDWebLinks</name>
    <file>http://repo.warriordudimanche.net/ZIPFILES/WDDWebLinks.zip</file>;
    <icon>http://repo.warriordudimanche.net/REPO/WDDWebLinks/WDDWebLinks.png</icon>;
    </plugin>

    Il manque donc les balises <title>, <author>, <version>, <date>, <site> et <description>.
  • Bonjour,

    Je regarde ça dès que possible. Pas de soucis et merci.

    A+

    jeje
Connectez-vous ou Inscrivez-vous pour répondre.