X-Git-Url: http://git.cyclocoop.org/?p=velocampus%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fplugins%2Fauto%2Fcfg%2Fcfg%2Fclasses%2Fcfg_id.php;fp=www%2Fplugins%2Fauto%2Fcfg%2Fcfg%2Fclasses%2Fcfg_id.php;h=315274d4df7c551ec35fc06fae6e205741416cdb;hp=0000000000000000000000000000000000000000;hb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed;hpb=aaf970bf4cdaf76689ecc10609048e18d073820c diff --git a/www/plugins/auto/cfg/cfg/classes/cfg_id.php b/www/plugins/auto/cfg/cfg/classes/cfg_id.php new file mode 100644 index 0000000..315274d --- /dev/null +++ b/www/plugins/auto/cfg/cfg/classes/cfg_id.php @@ -0,0 +1,81 @@ +champs[$nom]['id'] = count($cfg->champs_id); + $cfg->champs_id[] = $nom; + + // Cas des champs multi, si des champs (Y) + // sont declares id par la classe cfg_id, + // + // on les ajoute dans le chemin pour retrouver les donnees + // #CONFIG{.../y1/y2/y3/...} + // + if (_request('_cfg_affiche')) { + $cfg->param['cfg_id'] = implode('/', array_map('_request', $cfg->champs_id)); + } + + return true; +} + +/** + * + * @param string $nom + * @param Object $cfg + * @return string + */ +function cfg_pre_traiter_cfg_id($nom, &$cfg){ + + // lorsque c'est un champ de type multi que l'on modifie + // et si l'identifiant a change, il faut soit le copier, soit de deplacer + // + // pour ca, on compare le hidden name='cfg_id' aux champs editables + // qui ont la classe css 'cfg_id' + if ($cfg->champs_id) { + $new_id = implode('/', array_map('_request', $cfg->champs_id)); + if ($new_id != $cfg->param['cfg_id']){ + // si c'est un deplacement, on efface + if (!_request('_cfg_copier')) { + // et ne pas perdre les valeurs suite a l'effacement dans ce cas precis + $vals = $cfg->val; + $cfg->effacer(); + $cfg->val = $vals; + } + $cfg->param['cfg_id'] = $new_id; + // recreer un depot avec le nouvel identifiant + // (sinon les requetes ne creent pas les bons 'where') + include_spip('inc/cfg_config'); + $cfg->depot = new cfg_depot($cfg->param['depot'], $cfg->params); + // recharger le formulaire avec le nouvel identifiant (sinon les parametres + // de formulaires qui contienent + // #ENV{cfg_id} ou #ENV{id} ne sont pas a jour) + $cfg->formulaire(); + } + } + + return true; +} + +?>