Probleme tri Gestion Media

DudyDudy Member
Bonsoir
j'ai un petit problème dans la partie admin Gestion des Medias

j'ai créer un dossier Press et des sous- dossiers numérotée
exemple:
Press
01-press-2008
02-press-2009
03-press-2010
04-press-2011
05-press-2012
mais dans la liste déroulante le résultat est différent, les dossiers sont tous mélangé
Press
02-press-2009
01-press-2008
03-press-2010
05-press-2012
04-press-2011
vu que j'ai pas mal de photos je me perd un peu.

je ne sais pas sur quel critère est développé le tri des dossiers, j'ai ouvert le fichier core/admin/medias.php, mais je n'aimerais pas trop toucher
ça serait gentil un conseil de votre part
Merci beaucoup

Réponses

  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour
    Quelle version de Pluxml utilises-tu ?

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Ciao Stéphane
    La 5.2 tout dernière
    Merci pour ta réponse
  • Bonjour
    je suis désolé mais je n'arrive pas a trouver une solution à ça, je crois que aussi Stephane à abandonné
    en tout cas merci
  • FrédéricFrédéric Member
    septembre 2013 modifié
    Tout simplement car e trie ne se fait pas en numérique mais alphabétique.
    Une solution, renomme tes dossiers comme suit:
    a-press-2008
    b-press-2009
    c-press-2010
    d-press-2011
    e-press-2012
  • je-evrardje-evrard Member
    septembre 2013 modifié
    Avec ça ça l'air de marcher dans core/lib/class.plx.medias.php (ajout de array_multisort($this->aDirs, SORT_REGULAR );)
    Avant
    [== PHP ==]
    public function contentFolder() {
    
    		$str  = "\n".'<select class="folder" id="folder" size="1" name="folder">'."\n";
    		$selected = (empty($this->dir)?'selected="selected" ':'');
    		$str .= '<option '.$selected.'value=".">|. ('.L_PLXMEDIAS_ROOT.') &nbsp; </option>'."\n";
    		# Dir non vide
    		if(!empty($this->aDirs)) {
    			foreach($this->aDirs as $k => $v) {
    				$prefixe = '|&nbsp;&nbsp;';
    				$i = 0;
    				while($i < $v['level']) {
    					$prefixe .= '&nbsp;&nbsp;';
    					$i++;
    				}
    				$selected = ($v['path']==$this->dir?'selected="selected" ':'');
    				$str .= '<option class="level_'.$v['level'].'" '.$selected.'value="'.$v['path'].'">'.$prefixe.$v['name'].'</option>'."\n";
    			}
    		}
    		$str  .= '</select>'."\n";
    		# On retourne la chaine
    		return $str;
    	}
    

    a remplacer par
    [== PHP ==]
    public function contentFolder() {
    
    		$str  = "\n".'<select class="folder" id="folder" size="1" name="folder">'."\n";
    		$selected = (empty($this->dir)?'selected="selected" ':'');
    		$str .= '<option '.$selected.'value=".">|. ('.L_PLXMEDIAS_ROOT.') &nbsp; </option>'."\n";
    		# Dir non vide
    		if(!empty($this->aDirs)) {
    			array_multisort($this->aDirs, SORT_REGULAR );
    			foreach($this->aDirs as $k => $v) {
    				$prefixe = '|&nbsp;&nbsp;';
    				$i = 0;
    				while($i < $v['level']) {
    					$prefixe .= '&nbsp;&nbsp;';
    					$i++;
    				}
    				$selected = ($v['path']==$this->dir?'selected="selected" ':'');
    				$str .= '<option class="level_'.$v['level'].'" '.$selected.'value="'.$v['path'].'">'.$prefixe.$v['name'].'</option>'."\n";
    			}
    		}
    		$str  .= '</select>'."\n";
    		# On retourne la chaine
    		return $str;
    	}
    
  • StéphaneStéphane Member, Former PluXml Project Manager
    Dudy a écrit:
    ... je crois que aussi Stephane à abandonné
    en tout cas merci
    ??????????

    je viens de tester sous windows et linux avec le nom de tes dossiers. tout est bien trié.
    ce bug d'affichage était présent avec la précédente version. ça a été corrigé avec la 5.2
    vérifie que ta version de PluXml est bien à jour nottament le fichier core/lib/class.plx.medias.php fix #4

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • je-evrardje-evrard Member
    septembre 2013 modifié
    Stéphane je en 5.2 en ça marchait pas au niveau du tri mais c'est le premier zip depuis la 5.2 je vais mettre à jour avec le dernier zip.
  • Stéphane a écrit:
    Dudy a écrit:
    ... je crois que aussi Stephane à abandonné
    en tout cas merci
    ??????????

    je viens de tester sous windows et linux avec le nom de tes dossiers. tout est bien trié.
    ce bug d'affichage était présent avec la précédente version. ça a été corrigé avec la 5.2
    vérifie que ta version de PluXml est bien à jour nottament le fichier core/lib/class.plx.medias.php fix #4

    merci a tous pour vos conseils
    mais j'ai tout bien contrôle la version est la dernière 5.2
    Version
    Dossiers
    Class
    moi je suis sur mac
    merci
  • DudyDudy Member
    septembre 2013 modifié
    @je-evrard merci je vais essayer
  • Frédéric a écrit:
    Tout simplement car e trie ne se fait pas en numérique mais alphabétique.
    Une solution, renomme tes dossiers comme suit:
    a-press-2008
    b-press-2009
    c-press-2010
    d-press-2011
    e-press-2012

    merci mais je préfère les chiffrés parce que sinon arrivé a Z je mets quoi apres?? :)
  • DudyDudy Member
    septembre 2013 modifié
    @je-evrard je essayé ça marche bien avec ton script pour les dossiers, mais pas pour les sous-dossier :)
  • StéphaneStéphane Member, Former PluXml Project Manager
    hum je n'avais pas vu que tes dossiers étaient eux memes dans un dossier. je vais refaire des tests...

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • je-evrardje-evrard Member
    septembre 2013 modifié
    Tu ajoutes cette fonction dans class.plx.medias.php
    [== PHP ==]
    
    
    private function ksortRecursive(array $array){
        
    	array_multisort($array, SORT_REGULAR );
    	foreach ($array as $key => $nestedArray) {
            if (is_array($nestedArray) && !empty($nestedArray)) {
                $array[$key] = $this->ksortRecursive($nestedArray);
            }
        }
    	//array_multisort($array, SORT_REGULAR );
        return $array;
      }
    

    Puis remplace contentFolder()
    
    
    [== Indéfini ==]
    public function contentFolder() {
    
    		$str  = "\n".'<select class="folder" id="folder" size="1" name="folder">'."\n";
    		$selected = (empty($this->dir)?'selected="selected" ':'');
    		$str .= '<option '.$selected.'value=".">|. ('.L_PLXMEDIAS_ROOT.') &nbsp; </option>'."\n";
    		# Dir non vide
    		if(!empty($this->aDirs)) {
    			//ksort($this->aDirs);
    			$this->aDirs = $this->ksortRecursive($this->aDirs);
    		
    			foreach($this->aDirs as $k => $v) {
    				$prefixe = '|&nbsp;&nbsp;';
    				$i = 0;
    				while($i < $v['level']) {
    					$prefixe .= '&nbsp;&nbsp;';
    					$i++;
    				}
    				$selected = ($v['path']==$this->dir?'selected="selected" ':'');
    				$str .= '<option class="level_'.$v['level'].'" '.$selected.'value="'.$v['path'].'">'.$prefixe.$v['name'].'</option>'."\n";
    			}
    		}
    		$str  .= '</select>'."\n";
    		# On retourne la chaine
    		return $str;
    	}
    
    

    Ca va mieux pour les sous dossiers
  • DudyDudy Member
    septembre 2013 modifié
    @je-evrard
    merci ça marche mais le problème que il me mets tous les sous-dossiers ensemble
    sous-dossier
    les trois derniers font partie du dossier photos-2013
  • Hum effectivement je vais voir pour modifier la fonction.
  • Je suis désolé de vous prendre tous ce temps, sont des petit détails qui peuvent rendre Pluxml plus performant, et moi en php j'ai que les bases :D
  • StéphaneStéphane Member, Former PluXml Project Manager
    Aucun souci Dudy. S'il y a un problème à nous de les régler.

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • je-evrardje-evrard Member
    septembre 2013 modifié
    Juste une parenthèse à propos du gestionnaire de médias.

    J'ai créé un hook AdminMediasTop pour rajouter de l'html dans la page médias (medias.php). Ca ça marche.

    Mais je voudrais supprimer tout le contenu inclus entre les hook 'AdminMediasTop' et 'AdminMediasFoot'
    [== PHP ==]
    <?php eval($plxAdmin->plxPlugins->callHook('AdminMediasTop')) # Hook Plugins ?>
    
    html...à supprimer
    
    eval($plxAdmin->plxPlugins->callHook('AdminMediasFoot'));
    

    Il y a t'il une méthode ?
  • StéphaneStéphane Member, Former PluXml Project Manager
    @je-evrard: essaye avec un ob_start() à la fin du hook AdminMediasTop, un ob_end_clean() au début du hook AdminMediasFoot pour détruire les données du tampon de sortie

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • je-evrardje-evrard Member
    septembre 2013 modifié
    Mon dieu stef ça marche je n'y avais pas pensé. En fait je vais faire une nouvelle version de spxtynimce en incluant le filemanger dans la partie média de pluxml (en option bien sur).

    Merci de ta lumière !
  • Petite parenthèse
    Actuellement je travail avec ckEditor si je installe spxtynimce, au niveaux des URL je ne vais pas avoir de problème pour toutes les photos et documents présent déjà dans le média/images?
    Ce Plugins est fantastique bravo pour le travail fait
    Merci
  • je-evrardje-evrard Member
    septembre 2013 modifié
    Normallement aucun soucis. Tu peux toujours faire une sauvegarde de tes medias et tester.
  • StéphaneStéphane Member, Former PluXml Project Manager
    @Dudy: je viens de refaire des tests avec des sous dossiers en reprenant ton exemple et tout est bien trié. Je ne sais donc pas quoi te répondre. Arrives-tu à reproduire le problème sur un hébergement où je pourrais accéder au code de tes fichiers pour constater et debugger ?

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • StéphaneStéphane Member, Former PluXml Project Manager
    Ayé je viens de réussir à reoroduire le problème. Le tri est cassé quand il y a un sous-dossier dans un des dossiers telque 01-press-2007. Plus qu'à corriger tout ça maintenant. C'est bien un bug

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Bonjour Stephane
    voici ICI une copie de Pluxml avec les dossiers st sous dossiers comme mon cas
    Admin
    admin
    merci
Connectez-vous ou Inscrivez-vous pour répondre.