Détail du message 46404.4

Message numéro 4 dans le sujet Format des fichiers supportés par VirtualProduct.

  • 46404.4

    09/11/2011 12:08


    Gaël Port
    Titre : Développeur RBS Change
    Rang : Expert
    Alors le changement d'icône, c'est faisable mais ça demande un peu de code, ce n'est pas immédiat.

    Il y a trois choses à faire :

    1) ajouter l'icône : pour cela, dans un module spécifique, placer l'icône dans le dossier webapp/changeicons/small et exécuter la commande init-webapp.


    2) déclarer le style associé : dans le fichier backoffice.css du module spécifique, ajouter la déclaration suivante (en ayant remplacé les trois portions entre chevrons) :
    treechildren::-moz-tree-image(modules_media_media modules_media_<votreType>),treechildren::-moz-tree-image(modules_media_securemedia modules_media_<votreType>){
    	list-style-image: url(/changeicons/small/<votreIcône>.png) !important;
    }

    3) la dernière partie est un poil plus compliquée : il vous faudra surcharger (par exemple par remplacement de classe via l'AOP) la méthode addTreeAttributes du service media_MediaService pour gérer votre cas particulier en settant pour les médias correspondant à votre cas la valeur suivante :
    $nodeAttributes['actualtype'] = 'modules_media_<votreType>';
    Exemple complet de classe (mon module spécifique étant nommé "abc") :
    <?php
    /**
     * abc_aop_media_MediaService
     * @package modules.abc
     */
    class abc_aop_media_MediaService extends media_MediaService
    {
    	/**
    	 * @var media_MediaService
    	 */
    	private static $instance;
    
    	/**
    	 * @return media_MediaService
    	 */
    	public static function getInstance()
    	{
    		if (self::$instance === null)
    		{
    			self::$instance = self::getServiceClassInstance(get_class());
    		}
    		return self::$instance;
    	}
    	
    	/**
    	 * @param media_persistentdocument_media $document
    	 * @param string $moduleName
    	 * @param string $treeType
    	 * @param array<string, string> $nodeAttributes
    	 */
    	public function addTreeAttributes($document, $moduleName, $treeType, &$nodeAttributes)
    	{
    		parent::addTreeAttributes($document, $moduleName, $treeType, $nodeAttributes);
    		
    		$infos = $document->getInfo();
    		if ($infos['extension'] == 'epub')
    		{
    			$nodeAttributes['actualtype'] = 'modules_media_epub';
    		}
    	}
    }
    Et le fichier aop.xml à placer dans le dossier config du projet pour activer le remplacement de la classe :
    <?xml version="1.0" encoding="utf-8"?>
    <aop>
    	<replace pointcut="media_MediaService" class="abc_aop_media_MediaService" />
    </aop>

    Édité par Gaël Port 09/11/2011 12:08

 
1363 membres
Aucun membre connecté