formulaire_admin

Ce pipeline permet de modifier, compléter la liste des boutons d’administration (les boutons calcul, recalcul, statistiques, etc.) qui s’affichent dans l’espace public pour les internautes authentifiés et qui sont administrateurs & rédacteurs.
Il est appelé sur toutes les pages de l’espace public.

Il reçoit un tableau $flux avec 2 clés :
- args : contient l’environnement. C’est un tableau dont une des clés est contexte.
- data : c’est le html qu’il est possible de modifier. Ce html contient un marqueur <!--extra-->' qui indique un endroit possible pour ajouter de nouveaux boutons. La valeur initiale de ce html est définie par le squelette formulaires/administration.html qu’il est possible de surcharger dans un squelette.

Exemples

Ajout d’un bouton
Le plugin DD (Debug) ajoute un bouton Inclure et masque le bouton Statistique

function dd_formulaire_admin($flux) {
	// on modifie un peu les boutons d'admin
 
	// var_mode=inclure
	if (autoriser('boutonvarmodeinclure')) {
		$btn = recuperer_fond('prive/bouton/varmodeinclure');
		$flux['data'] = preg_replace('#(<!--extra-->)#is', $btn.'$1', $flux['data']);
	}
 
	// masquer les stats
	$flux['data'] .= '<style type="text/css">#statistiques {display: none;} </style>';
 
	return $flux;
}

Afficher le formulaire en fonction du statut de l’internaute

function prefixe_plugin_formulaire_admin($flux) {
	$webmaster = session_get('webmestre');
	// si ce n'est pas un Webmestre, on n'affiche rien
	if ($webmaster == 'non') {
		$flux['data'] = '';
	}
	return $flux;
}

Modifier le formulaire en fonction du contexte

Le plugin statsobjets ajoute un bouton vers les statistiques de cet objet, sauf si c’est un article puisqu’alors ce bouton est déjà fourni par spip. Code un peu simplifié :

function statsobjets_formulaire_admin($flux) {
  if (
    isset($flux['args']['contexte']['objet'])
    and $objet = $flux['args']['contexte']['objet']
    and isset($flux['args']['contexte']['id_objet'])
    and $id_objet = $flux['args']['contexte']['id_objet']
  ) {
    if (
      $objet != 'article'
      and $l = admin_statsobjets($objet, $id_objet)
    ) {
      $btn = recuperer_fond('prive/bouton/statistiques', array(
        'visites' => $l[0],
        'popularite' => $l[1],
        'statistiques' => $l[2],
      ));
      $flux['data'] = preg_replace('%(<!--extra-->)%is', $btn . '$1', $flux['data']);
    }
  }
 
  return $flux;
}

Auteur peetdu Publié le : Mis à jour : 31/12/20