Valider 5426750e rédigé par cerdic's avatar cerdic
Parcourir les fichiers

En test : Peuplement automatise du menu de configuration

- Tous les prive/squelettes/contenu/page-configurer_xxx
sont recenses, et les pages qui ne sont pas deja dans la navigation sont ajoutees au menu configuration avec :
titre = <:configurer:configurer_xxx_titre:>
icone = images/configurer_xxx-16.png
autorisation : autoriser(bouton,configurer_xxx)

- Tous les formulaires/configurer_xxx
sont recenses, et ceux qui ne sont pas deja dans un page-configurer_xxx ou linkes directement via exec=configurer&cfg=... sont ajoutes au menu configuration avec :
titre = <:configurer:configurer_xxx_titre:>
icone = images/configurer_xxx-16.png
autorisation : autoriser(bouton,configurer_xxx)

le squelette prive/squelettes/contenu/page-configurer.html permet de generer un exec automatique pour un formulaires/configurer_xxx, en l'appelant via
ecrire/?exec=configurer&cfg=xxx
(on garde l'argument cfg en clin d'oeil)

La fonctionnalite introduit de fait pleins d'entrees dans le menu configuration/ qui vont disparaitres au fur et a mesure de la migration des pages de configuration de l'espace prive en squelettes
Pour eleminer un bouton disgracieux du menu configuration, il suffit de definir son autorisation a false, ce qui interdira aussi l'appel du formulaire correspondant via exec=configurer

Il faudra voir a l'usage si la fonctionnalite n'est pas trop genante en generant trop systematiquement une entree dans le menu configuration.
parent fb092024
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+1 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -777,6 +777,7 @@ prive/rss/signatures.html -text
prive/spip_pass.html -text
prive/spip_style.css -text
prive/squelettes/body.html -text
prive/squelettes/contenu/page-configurer.html -text
prive/squelettes/contenu/page-configurer_identite.html -text
prive/squelettes/contenu/page-configurer_langage.html -text
prive/squelettes/contenu/page-configurer_preferences.html -text
+63 −3
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -272,10 +272,70 @@ function effacer_config($cfg){
}


function lister_configurer(){
function lister_configurer($exclure = array()){
	// lister les pages de config deja dans les menus
	$deja = array();
	foreach($exclure as $id=>$b) {
		if ($b['url']!==$id AND !isset($exclure[$b['url']])) {
			if(strncmp($b['url'],'configurer_',11)==0)
				$deja[$b['url']] = $b;
			elseif($b['url']=='configurer' AND preg_match(',cfg=([a-z0-9_]+),i',$b['args'],$match)) {
				$deja["configurer_".$match[1]] = $b;
			}
		}
	}
	$exclure = $exclure + $deja;

	$icone_defaut = "images/configuration-16.png";
	$liste = array();
	$skels = array();
	$forms = array();

	// trouver toutes les page-configurer_xxx de l'espace prive
	$pages = find_all_in_path("prive/squelettes/contenu/", "page-configurer_.*[.]"._EXTENSION_SQUELETTES);
	return $pages;
	// et construire un tableau des entrees qui ne sont pas dans $deja
	$pages = find_all_in_path("prive/squelettes/contenu/", "page-configurer_.*[.]"._EXTENSION_SQUELETTES.'$');
	
	foreach($pages as $page) {
		$configurer = substr(basename($page,"."._EXTENSION_SQUELETTES),5);
		if (!isset($exclure[$configurer]))
			$liste[$configurer] = array(
					'parent' => 'bando_configuration',
					'url' => $configurer,
					'titre' => _T("configurer:{$configurer}_titre"),
					'icone' => find_in_theme($i="images/{$configurer}-16.png")?$i:$icone_defaut,
			);
		$skels[$configurer] = $page;
	}

	// analyser la liste des $skels pour voir les #FORMULAIRE_CONFIGURER_ inclus
	foreach($skels as $file) {
		lire_fichier($file, $skel);
		if (preg_match_all(",#FORMULAIRE_(CONFIGURER_[A-Z0-9_]*),", $skel, $matches,PREG_SET_ORDER)) {
			$matches = array_map('end',$matches);
			$matches = array_map('strtolower',$matches);
			$forms = array_merge($forms,$matches);
		}
	}

	// trouver tous les formulaires/configurer_
	// et construire un tableau des entrees
	$pages = find_all_in_path("formulaires/", "configurer_.*[.]"._EXTENSION_SQUELETTES.'$');
	foreach($pages as $page) {
		$configurer = basename($page,"."._EXTENSION_SQUELETTES);
		if (!isset($forms[$configurer])
		  AND !isset($liste[$configurer])
			AND !isset($exclure[$configurer]))
			$liste[$configurer] = array(
					'parent' => 'bando_configuration',
					'url' => 'configurer',
					'args' => 'cfg='.substr($configurer,11),
					'titre' => _T("configurer:{$configurer}_titre"),
					'icone' => find_in_theme($i="images/{$configurer}-16.png")?$i:$icone_defaut,
			);
	}


	return $liste;
}

// http://doc.spip.org/@liste_metas
+6 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -380,6 +380,12 @@ function ecrire_plugin_actifs($plugin,$pipe_recherche=false,$operation='raz') {
				$liste_onglets = array_merge($liste_onglets,$info['onglet']);
			}
		}

		// ajouter les boutons automatiques de configuration
		include_spip('inc/bandeau');
		include_spip('inc/config');
		// on passe la liste des boutons existants pour eviter double entree
		$liste_boutons = $liste_boutons+lister_configurer(boutons_core('bouton')+boutons_core('onglet')+$liste_boutons);
	}

	// generer les fichier
@@ -450,7 +456,6 @@ function ecrire_plugin_actifs($plugin,$pipe_recherche=false,$operation='raz') {
		// construire tableaux de pipelines et matrices et boutons
		// $GLOBALS['spip_pipeline']
		// $GLOBALS['spip_matrice']
		$liste_boutons = array();
		foreach($ordre as $p){
			$dir_type = $plugin_valides[$p]['dir_type'];
			$root_dir_type = str_replace('_DIR_','_ROOT_',$dir_type);
+5 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
#SET{configurer,#VAL{configurer_}|concat{#ENV{cfg}}
[(#AUTORISER{bouton,#GET{configurer}}|interdire_acces)]
<div class="ajax">
	#FORMULAIRE_{#GET{configurer}}
</div>
 No newline at end of file
+1 −1

Fichier modifié.

Contient uniquement des modifications d'espaces.