3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
6 * Copyright (c) 2001-2019 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
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 \***************************************************************************/
14 * Gestion des boutons de l'interface privée
16 * @package SPIP\Core\Boutons
19 if (!defined('_ECRIRE_INC_VERSION')) {
24 * Classe définissant un bouton dans la barre du haut de l'interface
25 * privée ou dans un de ses sous menus
28 /** @var string L'icone à mettre dans le bouton */
31 /** @var string Le nom de l'entrée d'i18n associé */
34 /** @var null|string L'URL de la page (null => ?exec=nom) */
37 /** @var null|string|array Arguments supplementaires de l'URL */
38 public $urlArg = null;
40 /** @var null|string URL du javascript */
43 /** @var null|string Pour ouvrir dans une fenetre a part */
44 public $target = null;
46 /** @var null|mixed Sous-barre de boutons / onglets */
47 public $sousmenu = null;
52 * @param string $icone
53 * L'icone à mettre dans le bouton
54 * @param string $libelle
55 * Le nom de l'entrée i18n associé
56 * @param null|string $url
58 * @param null|string|array $urlArg
59 * Arguments supplémentaires de l'URL
60 * @param null|string $url2
62 * @param null|mixed $target
63 * Pour ouvrir une fenêtre à part
65 public function __construct($icone, $libelle, $url = null, $urlArg = null, $url2 = null, $target = null) {
66 $this->icone
= $icone;
67 $this->libelle
= $libelle;
69 $this->urlArg
= $urlArg;
71 $this->target
= $target;
77 * Définir la liste des onglets dans une page de l'interface privée.
79 * On passe la main au pipeline "ajouter_onglets".
81 * @see plugin_ongletbouton() qui crée la fonction `onglets_plugins()`
82 * @pipeline_appel ajouter_onglets
84 * @param string $script
87 function definir_barre_onglets($script) {
90 $liste_onglets = array();
92 // ajouter les onglets issus des plugin via paquet.xml
93 if (function_exists('onglets_plugins')) {
94 $liste_onglets = onglets_plugins();
98 foreach ($liste_onglets as $id => $infos) {
99 if (($parent = $infos['parent'])
100 && $parent == $script
101 && autoriser('onglet', "_$id")
103 $onglets[$id] = new Bouton(
104 isset($infos['icone']) ?
find_in_theme($infos['icone']) : '', // icone
105 $infos['titre'], // titre
106 (isset($infos['action']) and $infos['action'])
107 ?
generer_url_ecrire($infos['action'],
108 (isset($infos['parametres']) and $infos['parametres']) ?
$infos['parametres'] : '')
114 return pipeline('ajouter_onglets', array('data' => $onglets, 'args' => $script));
120 * Création de la barre d'onglets
122 * @uses definir_barre_onglets()
124 * @uses debut_onglet()
127 * @param string $rubrique
128 * @param string $ongletCourant
129 * @param string $class
132 function barre_onglets($rubrique, $ongletCourant, $class = "barre_onglet") {
133 include_spip('inc/presentation');
137 foreach (definir_barre_onglets($rubrique) as $exec => $onglet) {
138 $url = $onglet->url ?
$onglet->url
: generer_url_ecrire($exec);
139 $res .= onglet(_T($onglet->libelle
), $url, $exec, $ongletCourant, $onglet->icone
);
142 return !$res ?
'' : (debut_onglet($class) . $res . fin_onglet());