[SPIP] ~v3.0.20-->v3.0.25
[lhc/web/clavette_www.git] / www / ecrire / plugins / afficher_liste.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2016 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
8 * *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
12
13 if (!defined('_ECRIRE_INC_VERSION')) return;
14 include_spip('inc/charsets');
15
16 /**
17 * Afficher une liste de plugins dans l'interface
18 * http://doc.spip.org/@affiche_liste_plugins
19 *
20 * @param string $url_page
21 * @param array $liste_plugins
22 * @param array $liste_plugins_checked
23 * @param array $liste_plugins_actifs
24 * @param string $dir_plugins
25 * @param string $afficher_un
26 * @return string
27 */
28 function plugins_afficher_liste_dist($url_page,$liste_plugins, $liste_plugins_checked, $liste_plugins_actifs, $dir_plugins=_DIR_PLUGINS,$afficher_un = 'afficher_plugin'){
29 $get_infos = charger_fonction('get_infos','plugins');
30 $ligne_plug = charger_fonction($afficher_un,'plugins');
31
32 $all_infos = $get_infos($liste_plugins, false, $dir_plugins);
33
34 $all_infos = pipeline('filtrer_liste_plugins',
35 array(
36 'args'=>array(
37 'liste_plugins'=>$liste_plugins,
38 'liste_plugins_checked'=>$liste_plugins_checked,
39 'liste_plugins_actifs'=>$liste_plugins_actifs,
40 'dir_plugins'=>$dir_plugins),
41 'data'=>$all_infos
42 )
43 );
44
45 $liste_plugins = array_flip($liste_plugins);
46 foreach($liste_plugins as $chemin => $v) {
47 // des plugins ont pu etre enleves de la liste par le pipeline. On en tient compte.
48 if (isset($all_infos[$chemin])){
49 $liste_plugins[$chemin] = strtoupper(trim(typo(translitteration(unicode2charset(html2unicode($all_infos[$chemin]['nom']))))));
50 }
51 else {
52 unset($liste_plugins[$chemin]);
53 }
54 }
55 asort($liste_plugins);
56 $exposed = urldecode(_request('plugin'));
57
58 $block_par_lettre = false;//count($liste_plugins)>10;
59 $fast_liste_plugins_actifs = array();
60 $fast_liste_plugins_checked = array();
61 if (is_array($liste_plugins_actifs))
62 $fast_liste_plugins_actifs = array_flip($liste_plugins_actifs);
63 if (is_array($liste_plugins_checked))
64 $fast_liste_plugins_checked = array_flip($liste_plugins_checked);
65
66 $res = '';
67 $block = '';
68 $initiale = '';
69 $block_actif = false;
70 foreach($liste_plugins as $plug => $nom){
71 if (($i=substr($nom,0,1))!==$initiale){
72 $res .= $block_par_lettre ? affiche_block_initiale($initiale,$block,$block_actif): $block;
73 $initiale = $i;
74 $block = '';
75 $block_actif = false;
76 }
77 // le rep suivant
78 $actif = isset($fast_liste_plugins_actifs[$plug]);
79 $checked = isset($fast_liste_plugins_checked[$plug]);
80 $block_actif = $block_actif | $actif;
81 $expose = ($exposed AND ($exposed==$plug OR $exposed==$dir_plugins . $plug OR $exposed==substr($dir_plugins,strlen(_DIR_RACINE)) . $plug));
82 $block .= $ligne_plug($url_page, $plug, $checked, $actif, $expose, "item", $dir_plugins)."\n";
83 }
84 $res .= $block_par_lettre ? affiche_block_initiale($initiale,$block,$block_actif): $block;
85 $class = basename($dir_plugins);
86 return $res ? "<ul class='liste-items plugins $class'>$res</ul>" : "";
87 }
88
89
90 // http://doc.spip.org/@affiche_block_initiale
91 function affiche_block_initiale($initiale,$block,$block_actif){
92 if (strlen($block)){
93 return "<li class='item'>"
94 . bouton_block_depliable($initiale,$block_actif?true:false)
95 . debut_block_depliable($block_actif)
96 . "<ul>$block</ul>"
97 . fin_block()
98 . "</li>";
99 }
100 return "";
101 }
102
103 ?>