Ignore:
Timestamp:
Aug 23, 2013, 11:04:18 AM (8 years ago)
Author:
marcimat@…
Message:

La liste des éléments SPIP des plugins (ie. balises > onglet plugins) est triée par répertoire de plugin.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _galaxie_/code.spip.net/autodoc/trunk/src/autodoc/Plugin/Core/TwigZora.php

    r74902 r74904  
    131131             *
    132132             * @param array $context
    133              *     Contexte du template
     133             *     Contexte du template (transmis automatiquement par twig)
    134134             * @return bool
    135135             *     true si c'est un SPIP.
     
    162162             *     )
    163163             *
    164              * @param Collection $collection|null
     164             * @param Collection|null $collection
    165165             *     Liste d'éléments de phpDocumentor
    166166             * @param string $tri
     
    241241            ),
    242242            /**
     243             * Liste les différents plugins contenus dans une collection
     244             *
     245             * @param array $context
     246             *     Contexte du template (transmis automatiquement par twig)
     247             * @param Collection|null $collection
     248             * @return Collection nom du répertoire => description du répertoire
     249            **/
     250            'lister_plugins' => new \Twig_SimpleFilter('lister_plugins',
     251                function ($context, $collection) {
     252                    if (!is_object($collection)) {
     253                        return new Collection();
     254                    }
     255                    $selection = new Collection();
     256                    foreach ($collection as $element) {
     257                        $path = $element->getPath();
     258                        $path = explode('/', $path, 3);
     259                        $start = array_shift($path);
     260                        if (in_array($start , array('plugins-dist', 'plugins'))) {
     261                            $plugin = array_shift($path);
     262                            if (!$selection->get($plugin)) {
     263                                $fqsens = $context['project']->getIndexes()->get('elements');
     264                                // identifiant unique de répertoire, pour retrouver sa description
     265                                $fqsen = './' . $start . '/' . $plugin . '/';
     266                                $selection->set($plugin, $fqsens->get($fqsen));
     267                            }
     268                        }
     269
     270                    }
     271                    return $selection;
     272                }, array('needs_context' => true)
     273            ),
     274            /**
     275             * Retrouve le nom du répertoire contenant un plugin
     276             *
     277             * Si un path est inclu dans plugins-dist ou plugins,
     278             * on considère que le répertoire suivant est un nom
     279             * de répertoire de plugin.
     280             *
     281             * @example
     282             *     file|repertoire_de_plugin
     283             *
     284             * @param Object $element
     285             *     Élément de phpDocumentor
     286             * @return string
     287             *     Nom du répertoire, sinon vide.
     288             */
     289            'repertoire_de_plugin' => new \Twig_SimpleFilter('selectionner_fichiers_dans',
     290                function ($element) {
     291                    if ($path = $element->getPath()) {
     292                        $path = explode('/', $path, 3);
     293                        $start = array_shift($chemin);
     294                        if (in_array($start , array('plugins-dist', 'plugins'))) {
     295                            return array_shift($path);
     296                        }
     297                    }
     298                    return '';
     299                }
     300            ),
     301            /**
    243302             * Sélectionne les fonctions d'une collection de fonctions
    244303             * dont les fichiers ont un chemin commençant par l'argument transmis
     
    247306             *     elements|selectionner_fichiers_dans('plugins-dist')
    248307             *
    249              * @param Collection $collection|null
     308             * @param Collection|null $collection
    250309             *     Liste d'éléments de phpDocumentor
    251310             * @param string $debut
     
    279338             *     elements|selectionner_fichiers_hors('plugins-dist')
    280339             *
    281              * @param Collection $collection|null
     340             * @param Collection|null $collection
    282341             *     Liste d'éléments de phpDocumentor
    283342             * @param string $debut
Note: See TracChangeset for help on using the changeset viewer.