Browse Source

Amélioration de la boite d'infos de la rubrique plugin et aussi ajout de la coloration du préfixe dans la boite d'infos du plugin

master
Eric Lupinacci 3 years ago
parent
commit
7f50915ad6
  1. 62
      contrib_pipelines.php
  2. 61
      inc/contrib_plugin.php
  3. 3
      lang/contrib_fr.php
  4. 2
      paquet.xml
  5. 2
      prive/objets/infos/rubrique.html
  6. 5
      prive/squelettes/inclure/inc-bouton_voir_rubrique_plugin.html
  7. 1
      prive/style_prive_plugin_contrib.html

62
contrib_pipelines.php

@ -53,3 +53,65 @@ function contrib_affiche_droite($flux) {
return $flux;
}
/**
* Insertion dans le pipeline boite_infos (SPIP).
* - Fiche objet d'un plugin :
* - Rajouter un lien privé vers la rubrique associée si elle existe.
* - Enrichir le préfixe avec la couleur de la catégorie du plugin.
*
* @pipeline boite_infos
*
* @param $flux array Le contexte du pipeline
*
* @return $flux array Le contexte du pipeline modifié
*/
function contrib_boite_infos($flux) {
if (isset($flux['args']['type'])) {
// Initialisation du type d'objet concerné.
$objet = $flux['args']['type'];
if (
($objet_exec = trouver_objet_exec($objet))
and !$objet_exec['edition']
and ($objet == 'plugin')
and ($id_plugin = intval($flux['args']['id']))
) {
// Page d'un plugin.
// Ajout du bouton "voir la rubrique..."
// -- On recherche le préfixe du plugin
include_spip('inc/svp_plugin');
$prefixe = plugin_lire($id_plugin, 'prefixe');
// -- Inclure le bouton "voir la rubrique" si elle existe
$contexte = array(
'id_plugin' => $id_plugin,
'prefixe' => $prefixe,
);
if ($bouton = recuperer_fond('prive/squelettes/inclure/inc-bouton_voir_rubrique_plugin', $contexte)) {
$flux['data'] .= $bouton;
}
// Coloration du préfixe du plugin
// -- on recherche la catégorie du plugin
include_spip('inc/contrib_plugin');
$categorie = plugin_lire_categorie($prefixe, 'racine');
if ($categorie) {
// -- on ajoute au span une class décrivant la couleur de la catégorie
$cherche = "/(<p[^>]*class=(?:'|\")prefixe[^>]*>\s*)(<span>)/is";
if (preg_match($cherche, $flux['data'], $m)) {
$flux['data'] = preg_replace(
$cherche,
'$1' . "<span class=\"couleur_${categorie}\">",
$flux['data'],
1
);
}
}
}
}
return $flux;
}

61
inc/contrib_plugin.php

@ -0,0 +1,61 @@
<?php
/**
* Ce fichier contient des compléments de l'API de gestion de l'objet plugin.
*
* @package SPIP\SVP\PLUGIN\API
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Renvoie, pour un plugin donné, la catégorie affectée ou la chaine vide si aucune affectation n'a encore été faite.
* Il est possible de retourner uniquement la catégorie parent.
*
* @param int|string $plugin La valeur du préfixe ou de l'id du plugin.
* @param string $niveau Indique si l'on veut la catégorie complète ou uniquement l'identifiant
* de la racine ou de la feuille. Prend les valeurs `''` par défaut, `racine` ou `feuille`.
*
* @return string Identifiant de la catégorie ou de la catégorie racine uniquement.
*/
function plugin_lire_categorie($plugin, $niveau = '') {
// Initialisation à vide de la catégorie pour repérer les plugins non affectés.
$categorie = '';
// On détermine le préfixe du plugin qui est utilisé dans la table des affectations :
// -- si c'est le préfixe on le passe en majuscules pour être cohérent avec le stockage en base.
// -- sinon on lit le préfixe à partir de l'id du plugin.
if ($id_plugin = intval($plugin)) {
include_spip('inc/svp_plugin');
$prefixe = plugin_lire($id_plugin, 'prefixe');
} else {
$prefixe = strtoupper($plugin);
}
// On récupère l'id du groupe pour la typologie catégorie.
include_spip('inc/config');
$id_groupe = lire_config('svptype/typologies/categorie/id_groupe', 0);
// Cibler la catégorie par le préfixe du plugin et l'id du groupe représentant la typologie.
$from = array(
'spip_mots as m',
'spip_plugins_typologies as pt'
);
$where = array(
'pt.prefixe=' . sql_quote($prefixe),
'pt.id_groupe=' . $id_groupe,
'pt.id_mot=m.id_mot'
);
if (
$categorie = sql_getfetsel('m.identifiant', $from, $where)
and $niveau
) {
// On extrait la catégorie racine. Si elle existe, la catégorie d'un plugin est toujours
// sous la forme xxx/yyy: on extrait xxx.
$types_plugin = explode('/', $categorie);
$categorie = $niveau == 'racine' ? $types_plugin[0] : $types_plugin[1];
}
return $categorie;
}

3
lang/contrib_fr.php

@ -23,7 +23,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'dashboard_menu' => 'Dashboard SPIP-Contrib',
// L
'icone_voir_plugin' => 'Voir le plugin',
'icone_voir_plugin' => 'Voir le plugin',
'icone_voir_rubrique_plugin' => 'Voir la rubrique de documentation',
// L
'type_article_label' => 'Type d\'article',

2
paquet.xml

@ -18,6 +18,7 @@
<necessite nom="article_accueil" compatibilite="[1.1.6;]" />
<necessite nom="cextras" compatibilite="[3.11.8;]" />
<necessite nom="autorite" compatibilite="[0.10.23;]" />
<necessite nom="svp" compatibilite="[2.1.3;]" />
<necessite nom="svptype" compatibilite="[0.2.0;]" />
<necessite nom="couleur_objet" compatibilite="[0.4.3;]" />
@ -25,6 +26,7 @@
<pipeline nom="autoriser" inclure="contrib_autorisations.php" />
<pipeline nom="formulaire_charger" inclure="contrib_pipelines.php" />
<pipeline nom="affiche_droite" inclure="contrib_pipelines.php" />
<pipeline nom="boite_infos" inclure="contrib_pipelines.php" />
<menu nom="contrib" titre="contrib:dashboard_menu" parent="menu_administration" icone="images/dashboard-16.png" action="dashboard" />
</paquet>

2
prive/objets/infos/rubrique.html

@ -10,7 +10,7 @@
[(#SET{categorie_secteur, #ID_RUBRIQUE|rubrique_lire_categorie_secteur})]
[<div class="numero">
(#PROFONDEUR|=={2}|?{<:svp:label_prefixe:>, <:svptype:categorie_identifiant_label:>})&nbsp;:
<p class="plugin">[<span class="[couleur_(#GET{categorie_secteur})]">(#PROFONDEUR|=={2}|?{#PREFIXE, #CATEGORIE})</span>]</p>
<p class="prefixe">[<span class="[couleur_(#GET{categorie_secteur})]">(#PROFONDEUR|=={2}|?{#PREFIXE, #CATEGORIE})</span>]</p>
</div>]
]

5
prive/squelettes/inclure/inc-bouton_voir_rubrique_plugin.html

@ -0,0 +1,5 @@
<BOUCLE_rubrique_plugin(RUBRIQUES) {prefixe}>
[(#ID_RUBRIQUE|generer_url_entite{rubrique}
|icone_horizontale{<:contrib:icone_voir_rubrique_plugin:>, rubrique_plugin-24})
]
</BOUCLE_rubrique_plugin>

1
prive/style_prive_plugin_contrib.html

@ -21,7 +21,6 @@
#SET{right,#ENV{ltr}|choixsiegal{left,right,left}}
/* Boite d'infos d'une rubrique */
#navigation .infos .numero p.plugin { font-size: 1.4em; text-transform: lowercase; }
#navigation .infos .numero.admin { border-bottom: 0;}
#navigation .infos .liste-items.auteurs { border-top: 0;}
#navigation .infos .liste-items.auteurs .item.auteur { border-top: 0;}

Loading…
Cancel
Save