Skip to content
Extraits de code Groupes Projets
Valider bcb62083 rédigé par esj's avatar esj
Parcourir les fichiers

Introduction de {{{#FORMULAIRE_CONFIGURER_PLUGIN}}}, suite du chantier visant...

Introduction de {{{#FORMULAIRE_CONFIGURER_PLUGIN}}}, suite du chantier visant à remplacer CFG (cf [15726] et [15753]).

Cette balise admet au moins un argument, savoir le nom du plugin (donc le nom du sous-répertoire de DIR_PLUGINS) qu'il faut configurer. Ce répertoire doit contenir un sous-répertoire nommé {{{formulaires}}} contenant au moins un squelette. Le nom de celui-ci est donné soit par le 2e argument de la balise s'il est présent, soit est pris conventionnelle égal à {{{configurer_}}}{{préfixe_du_plugin}}}. Le contexte (calculé par une fonction {{{_charger}}}) est égal à la table des métas associée à ce plugins. Le traitement des saisies (fonction {{{_traiter}}}) consiste à écrire dans cette table des metas les valeurs (chaîne vide si abstentes) que {{{$_POST}}} indique pour tous les noms trouvés dans le formulaire, à l'aide d'une RegExp (pas totalement fiable) repérant les attributs {{{name}}} dans le formulaire. Ces deux fonctions sont donc communes à tous les formulaires de configuration de tous les plugins voulant les utiliser. Il n'y a pas de fonction {{{_verifier}}}, faute de savoir que vérifier pour chacun (interface à définir pour arranger ça).

Pour fonctionner correctement, les formulaires référencés (implicitement ou non) par cette balise doivent utiliser {{{#ACTION_FORMULAIRE}}} avec comme deuxième argument le nom du plugin. Voir un exemple dans le [http://zone.spip.org/trac/spip-zone/changeset/38755 plugin Association 2].
parent 7729c962
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -56,6 +56,7 @@ ecrire/action/tourner.php -text ...@@ -56,6 +56,7 @@ ecrire/action/tourner.php -text
ecrire/action/virtualiser.php -text ecrire/action/virtualiser.php -text
ecrire/auth/sha256.inc.php -text ecrire/auth/sha256.inc.php -text
ecrire/balise/formulaire_.php -text ecrire/balise/formulaire_.php -text
ecrire/balise/formulaire_configurer_plugin.php -text
ecrire/balise/index.php -text ecrire/balise/index.php -text
ecrire/balise/logo_.php -text ecrire/balise/logo_.php -text
ecrire/balise/url_.php -text ecrire/balise/url_.php -text
...@@ -449,6 +450,7 @@ prive/formulaires/configurer_identite.html -text ...@@ -449,6 +450,7 @@ prive/formulaires/configurer_identite.html -text
prive/formulaires/configurer_identite.php -text prive/formulaires/configurer_identite.php -text
prive/formulaires/configurer_langage.html -text prive/formulaires/configurer_langage.html -text
prive/formulaires/configurer_langage.php -text prive/formulaires/configurer_langage.php -text
prive/formulaires/configurer_plugin.php -text
prive/formulaires/configurer_preferences.html -text prive/formulaires/configurer_preferences.html -text
prive/formulaires/configurer_preferences.php -text prive/formulaires/configurer_preferences.php -text
prive/formulaires/editer_article.html -text prive/formulaires/editer_article.html -text
......
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2010 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) return;
// Comme l'emplacement du squelette est calculable
// (nom du plugin en premier argument, nom eventuel du skel en 2e)
// on ne peut rien dire sur l'existence du squelette lors de la compil
function balise_FORMULAIRE_CONFIGURER_PLUGIN_dist($p) {
return calculer_balise_dynamique($p, $p->nom_champ, array());
}
// A l'execution on dispose des arguments, en particulier le premier
// le nom du repertoire ou doit se trouver le squelette.
// Si 2e arg n'est pas la pour donner son nom, c'est "configurer_$prefixe".
// Pour le calcul du contexte, c'est comme la balise #FORMULAIRE_.
function balise_FORMULAIRE_CONFIGURER_PLUGIN_dyn($plugin='', $form='') {
$get_infos = charger_fonction('get_infos','plugins');
$infos = !$plugin ? array() : $get_infos($plugin);
if (!isset($infos['prefix'])) return ''; // plugin in{connu|actif}
if (!$form) $form = 'configurer_' . $infos['prefix'];
include_spip("balise/formulaire_");
return array(_DIR_PLUGINS . $plugin . '/formulaires/' . $form,
3600,
balise_FORMULAIRE__contexte("configurer_plugin", func_get_args()));
}
?>
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2010 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) return;
function formulaires_configurer_plugin_charger_dist($plugin, $form='') {
$get_infos = charger_fonction('get_infos','plugins');
$infos = $get_infos($plugin);
if (!isset($infos['prefix'])) return array('erreur' => "$plugin ?");
$meta = isset($infos['meta']) ? $infos['meta']
: ($infos['prefix'] . '_metas');
return $GLOBALS[$meta];
}
#function formulaires_configurer_plugin_verifier_dist(){
# spip_log("formulaires_configurer_plugin_verifier_dist $plugin, $form");
# return array();
#}
// version amelioree de la RegExp de cfg_formulaire.
define('_EXTRAIRE_SAISIES',
'#<(?:(select|textarea)|input type=["\'](text|password|checkbox|radio|hidden|file)["\']) name=["\'](\w+)(\[\w*\])?["\'](?: class=["\']([^\'"]*)["\'])?( multiple=)?[^>]*?>#ims');
function formulaires_configurer_plugin_traiter_dist($plugin, $form=''){
$get_infos = charger_fonction('get_infos','plugins');
$infos = $get_infos($plugin);
if (!isset($infos['prefix'])) return array('erreur' => "$plugin ?");
$prefix = $infos['prefix'];
$meta = isset($infos['meta']) ? $infos['meta'] : ($prefix . '_metas');
if (!$form) $form = 'configurer_' . $prefix;
$f = find_in_path($form.'.' . _EXTENSION_SQUELETTES, 'formulaires/');
$formulaire = $f ? file_get_contents($f) : '';
if (preg_match_all(_EXTRAIRE_SAISIES, $formulaire, $r, PREG_SET_ORDER)) {
foreach($r as $regs) {
$k = $regs[3];
$v = _request($k);
ecrire_meta($k, $v, 'oui', $meta);
}
}
return array('redirect' => generer_url_ecrire($prefix));
}
?>
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter