/** baz_gestion_formulaire() affiche le listing des formulaires et permet de les modifier * @return string le code HTML */ function baz_gestion_formulaire() { // la gestion des formulaires est réservée aux identifiés if ($GLOBALS['wiki']->GetUser()) { $res = ''; if (isset($_GET['action_formulaire']) && $_GET['action_formulaire'] == 'modif') { // il y a un formulaire a modifier // recuperation des informations du type de formulaire $ligne = baz_valeurs_formulaire($_GET['idformulaire']); $formulaire = baz_formulaire_des_formulaires('modif_v'); $formulaire->setDefaults($ligne); $res .= $formulaire->toHTML(); } elseif (isset($_GET['action_formulaire']) && $_GET['action_formulaire'] == 'new') { // il y a un nouveau formulaire a saisir $formulaire = baz_formulaire_des_formulaires('new_v'); $res .= $formulaire->toHTML(); } elseif (isset($_GET['action_formulaire']) && $_GET['action_formulaire'] == 'new_v') { // il y a des donnees pour ajouter un nouveau formulaire $requete = 'INSERT INTO ' . BAZ_PREFIXE . 'nature (`bn_id_nature` ,`bn_ce_i18n` ,`bn_label_nature` ,`bn_template` ,`bn_description` ,`bn_condition`, `bn_label_class` ,`bn_type_fiche`)' . ' VALUES (' . baz_nextId(BAZ_PREFIXE . 'nature', 'bn_id_nature', $GLOBALS['wiki']) . ', "fr-FR", "' . addslashes(_convert($_POST['bn_label_nature'], TEMPLATES_DEFAULT_CHARSET, true)) . '", "' . addslashes(_convert($_POST['bn_template'], TEMPLATES_DEFAULT_CHARSET, true)) . '", "' . addslashes(_convert($_POST['bn_description'], TEMPLATES_DEFAULT_CHARSET, true)) . '", "' . addslashes(_convert($_POST['bn_condition'], TEMPLATES_DEFAULT_CHARSET, true)) . '", "' . addslashes(_convert($_POST['bn_label_class'], TEMPLATES_DEFAULT_CHARSET, true)) . '", "' . addslashes(_convert($_POST['bn_type_fiche'], TEMPLATES_DEFAULT_CHARSET, true)) . '")'; $resultat = $GLOBALS['wiki']->query($requete); $res .= '<div class="alert alert-success">' . "\n" . '<a data-dismiss="alert" class="close" type="button">×</a>' . _t('BAZ_NOUVEAU_FORMULAIRE_ENREGISTRE') . '</div>' . "\n"; } elseif (isset($_GET['action_formulaire']) && $_GET['action_formulaire'] == 'modif_v' && baz_a_le_droit('saisie_formulaire')) { //il y a des donnees pour modifier un formulaire $requete = 'UPDATE ' . BAZ_PREFIXE . 'nature SET `bn_label_nature`="' . addslashes(_convert($_POST['bn_label_nature'], TEMPLATES_DEFAULT_CHARSET, true)) . '" ,`bn_template`="' . addslashes(_convert($_POST['bn_template'], TEMPLATES_DEFAULT_CHARSET, true)) . '" ,`bn_description`="' . addslashes(_convert($_POST['bn_description'], TEMPLATES_DEFAULT_CHARSET, true)) . '" ,`bn_condition`="' . addslashes(_convert($_POST['bn_condition'], TEMPLATES_DEFAULT_CHARSET, true)) . '" ,`bn_label_class`="' . addslashes(_convert($_POST['bn_label_class'], TEMPLATES_DEFAULT_CHARSET, true)) . '" ,`bn_type_fiche`="' . addslashes(_convert($_POST['bn_type_fiche'], TEMPLATES_DEFAULT_CHARSET, true)) . '"' . ' WHERE `bn_id_nature`=' . $_POST['bn_id_nature']; $resultat = $GLOBALS['wiki']->query($requete); $res .= '<div class="alert alert-success">' . "\n" . '<a data-dismiss="alert" class="close" type="button">×</a>' . _t('BAZ_FORMULAIRE_MODIFIE') . '</div>' . "\n"; } elseif (isset($_GET['action_formulaire']) && $_GET['action_formulaire'] == 'delete' && baz_a_le_droit('saisie_formulaire')) { // il y a un id de formulaire a supprimer, suppression de l'entree dans la table nature $requete = 'DELETE FROM ' . BAZ_PREFIXE . 'nature WHERE bn_id_nature=' . $_GET['idformulaire']; $resultat = $GLOBALS['wiki']->query($requete); //TODO : suppression des fiches associees au formulaire $res .= '<div class="alert alert-success">' . "\n" . '<a data-dismiss="alert" class="close" type="button">×</a>' . _t('BAZ_FORMULAIRE_ET_FICHES_SUPPRIMES') . '</div>' . "\n"; } // affichage de la liste des templates a modifier ou supprimer if (!isset($_GET['action_formulaire']) || $_GET['action_formulaire'] != 'modif' && $_GET['action_formulaire'] != 'new') { $tab_forms['forms'] = array(); $forms = baz_valeurs_tous_les_formulaires($GLOBALS['params']['categorienature']); // il y a des formulaires à importer if (isset($_POST['imported-form'])) { foreach ($_POST['imported-form'] as $id => $value) { $value = json_decode($value, true); $searchformname = multiArraySearch($forms, 'bn_label_nature', $value['bn_label_nature']); // si un formulaire du même nom existe, on le remplace if (count($searchformname) > 0) { $localform = array_pop($searchformname); $value['bn_id_nature'] = $localform['bn_id_nature']; $requete = 'UPDATE ' . BAZ_PREFIXE . 'nature SET `bn_label_nature`="' . addslashes(_convert($value['bn_label_nature'], TEMPLATES_DEFAULT_CHARSET, true)) . '" ,`bn_template`="' . addslashes(_convert($value['bn_template'], TEMPLATES_DEFAULT_CHARSET, true)) . '" ,`bn_description`="' . addslashes(_convert($value['bn_description'], TEMPLATES_DEFAULT_CHARSET, true)) . '" ,`bn_condition`="' . addslashes(_convert($value['bn_condition'], TEMPLATES_DEFAULT_CHARSET, true)) . '" ,`bn_label_class`="' . addslashes(_convert($value['bn_label_class'], TEMPLATES_DEFAULT_CHARSET, true)) . '" ,`bn_type_fiche`="' . addslashes(_convert($value['bn_type_fiche'], TEMPLATES_DEFAULT_CHARSET, true)) . '"' . ' WHERE `bn_id_nature`=' . $value['bn_id_nature']; $forms[$value['bn_type_fiche']][$value['bn_id_nature']] = $value; } else { // si un formulaire existant porte le meme id on enregistre un nouvel id $searchformid = multiArraySearch($forms, 'bn_id_nature', $id); if (count($searchformid) > 0) { $id = baz_nextId(BAZ_PREFIXE . 'nature', 'bn_id_nature', $GLOBALS['wiki']); } $requete = 'INSERT INTO ' . BAZ_PREFIXE . 'nature (`bn_id_nature` ,`bn_ce_i18n` ,`bn_label_nature` ,`bn_template` ,`bn_description` ,`bn_condition`, `bn_label_class` ,`bn_type_fiche`)' . ' VALUES (' . $id . ', "fr-FR", "' . addslashes(_convert($value['bn_label_nature'], TEMPLATES_DEFAULT_CHARSET, true)) . '", "' . addslashes(_convert($value['bn_template'], TEMPLATES_DEFAULT_CHARSET, true)) . '", "' . addslashes(_convert($value['bn_description'], TEMPLATES_DEFAULT_CHARSET, true)) . '", "' . addslashes(_convert($value['bn_condition'], TEMPLATES_DEFAULT_CHARSET, true)) . '", "' . addslashes(_convert($value['bn_label_class'], TEMPLATES_DEFAULT_CHARSET, true)) . '", "' . addslashes(_convert($value['bn_type_fiche'], TEMPLATES_DEFAULT_CHARSET, true)) . '")'; // on ajoute le formulaire à la liste des formulaires existants $forms[$value['bn_type_fiche']][$id] = $value; } $resultat = $GLOBALS['wiki']->query($requete); } ksort($forms); $res .= '<div class="alert alert-success">' . _t('BAZ_FORM_IMPORT_SUCCESSFULL') . '.</div>' . "\n"; } foreach ($forms as $cat => $form) { foreach ($form as $key => $ligne) { $tab_forms['forms'][$ligne['bn_id_nature']]['title'] = $ligne['bn_label_nature']; $tab_forms['forms'][$ligne['bn_id_nature']]['description'] = $ligne['bn_description']; $tab_forms['forms'][$ligne['bn_id_nature']]['category'] = $cat; $tab_forms['forms'][$ligne['bn_id_nature']]['can_edit'] = baz_a_le_droit('saisie_formulaire'); $tab_forms['forms'][$ligne['bn_id_nature']]['can_delete'] = $GLOBALS['wiki']->UserIsAdmin(); } } // on rajoute les bibliothèques js nécéssaires $GLOBALS['wiki']->addJavascriptFile('tools/bazar/libs/bazar.edit_forms.js'); // On cherche un template personnalise dans le repertoire themes/tools/bazar/templates $templatetoload = 'themes/tools/bazar/templates/forms_table.tpl.html'; if (!is_file($templatetoload)) { $templatetoload = 'tools/bazar/presentation/templates/forms_table.tpl.html'; } include_once 'tools/bazar/libs/squelettephp.class.php'; $templateforms = new SquelettePhp($templatetoload); $templateforms->set($tab_forms); $res .= $templateforms->analyser(); } } else { $res = '<div class="alert alert-danger alert-error">' . _t('BAZ_ONLY_REGISTERED_USERS_CAN_ACCESS') . '.</div>' . "\n"; } return $res; }
/** baz_gestion_formulaire() affiche le listing des formulaires et permet de les modifier * * @return string le code HTML */ function baz_gestion_formulaire() { $res = ''; //titre if ($GLOBALS['_BAZAR_']['affiche_menu'] == "0") { $res .= '<h2 class="titre_gestion_formulaire">' . BAZ_GESTION_FORMULAIRE . '</h2>' . "\n"; } // il y a un formulaire a modifier if (isset($_GET['action_formulaire']) && $_GET['action_formulaire'] == 'modif') { //on verifie que la page en question est bien une PageWiki de type formulaire if ($GLOBALS['wiki']->GetTripleValue($_GET['idformulaire'], 'http://outils-reseaux.org/_vocabulary/type', '', '') == 'formulaire') { $valjson = $GLOBALS['wiki']->LoadPage($_GET['idformulaire']); $valeurs_formulaire = json_decode($valjson["body"], true); $valeurs_formulaire = array_map("utf8_decode", $valeurs_formulaire); $res .= baz_formulaire_des_formulaires('modif_v', $valeurs_formulaire); } else { return '<div class="error_box">' . BAZ_PAGEWIKI_PAS_FORMULAIRE . '</div>'; } //il y a un nouveau formulaire a saisir } elseif (isset($_GET['action_formulaire']) && $_GET['action_formulaire'] == 'new') { $res .= baz_formulaire_des_formulaires('new_v'); //il y a des donnees pour ajouter un nouveau formulaire } elseif (isset($_GET['action_formulaire']) && $_GET['action_formulaire'] == 'new_v') { unset($_POST["valider"]); //on genere un NomWiki a partir du titre du formulaire $nomwikiformulaire = genere_nom_wiki('Formulaire ' . $_POST["bn_label_nature"]); //on encode en utf-8 pour reussir a encoder en json $valeurs_formulaire = array_map("utf8_encode", $_POST); //on sauve les valeurs du formulaire dans une PageWiki, pour garder l'historique $GLOBALS["wiki"]->SavePage($nomwikiformulaire, json_encode($valeurs_formulaire)); //on cree un triple pour specifier que la PageWiki creee est un formulaire $GLOBALS["wiki"]->InsertTriple($nomwikiformulaire, 'http://outils-reseaux.org/_vocabulary/type', 'formulaire', '', ''); $res .= '<div class="info_box">' . BAZ_NOUVEAU_FORMULAIRE_ENREGISTRE . '</div>' . "\n"; //il y a des donnees pour modifier un formulaire } elseif (isset($_GET['action_formulaire']) && $_GET['action_formulaire'] == 'modif_v' && baz_a_le_droit('saisie_formulaire')) { unset($_POST["valider"]); //on encode en utf-8 pour reussir a encoder en json $valeurs_formulaire = array_map("utf8_encode", $_POST); //on sauve les valeurs du formulaire dans une PageWiki, pour garder l'historique $GLOBALS["wiki"]->SavePage($_POST['idformulaire'], json_encode($valeurs_formulaire)); $res .= '<div class="info_box">' . BAZ_FORMULAIRE_MODIFIE . '</div>' . "\n"; // il y a un id de formulaire a supprimer } elseif (isset($_GET['action_formulaire']) && $_GET['action_formulaire'] == 'delete' && baz_a_le_droit('saisie_formulaire')) { //suppression de la PageWiki du formulaire et de son triple associe $GLOBALS["wiki"]->DeleteOrphanedPage($_GET['idformulaire']); $GLOBALS["wiki"]->DeleteTriple($_GET['idformulaire'], 'http://outils-reseaux.org/_vocabulary/type', NULL, '', ''); //suppression des fiches associees au formulaire $tab_fiches_a_supprimer = baz_requete_recherche_fiches('', '', $_GET['idformulaire'], '', 1, '', ''); foreach ($tab_fiches_a_supprimer as $fiche) { $valeurs_fiche = json_decode($fiche[0], true); baz_suppression($valeurs_fiche['id_fiche']); } $res .= '<div class="info_box">' . BAZ_FORMULAIRE_ET_FICHES_SUPPRIMES . '</div>' . "\n"; } // affichage de la liste des templates a modifier ou supprimer (on l'affiche dans tous les cas, sauf cas de modif de formulaire) if (!isset($_GET['action_formulaire']) || $_GET['action_formulaire'] != 'modif' && $_GET['action_formulaire'] != 'new') { $tab_formulaires = baz_valeurs_tous_les_formulaires($GLOBALS['_BAZAR_']['categorie_nature']); if (count($tab_formulaires) > 0) { $res .= '<div class="info_box">' . BAZ_INTRO_MODIFIER_FORMULAIRE . '</div>' . "\n"; $liste = ''; $type_formulaire = ''; foreach ($tab_formulaires as $type_fiche => $formulaire) { $res .= '<h3 class="titre_categorie_fiche">' . $type_fiche . '</h3>' . "\n"; $res .= '<ul class="BAZ_liste">' . "\n"; foreach ($formulaire as $nomwiki => $ligne) { $lien_formulaire = $GLOBALS['wiki']->href('', $GLOBALS['wiki']->GetPageTag(), BAZ_VARIABLE_VOIR . '=' . BAZ_VOIR_FORMULAIRE . '&idformulaire=' . $nomwiki); $res .= '<li>' . "\n"; if (baz_a_le_droit('saisie_formulaire')) { $res .= '<a class="BAZ_lien_supprimer" href="' . $lien_formulaire . '&action_formulaire=delete" onclick="javascript:return confirm(\'' . BAZ_CONFIRM_SUPPRIMER_FORMULAIRE . ' ?\');"></a>' . "\n"; } if (baz_a_le_droit('saisie_formulaire')) { $res .= '<a class="BAZ_lien_modifier" href="' . $lien_formulaire . '&action_formulaire=modif">' . $ligne['bn_label_nature'] . '</a>' . "\n"; } else { $res .= $ligne['bn_label_nature'] . "\n"; } $res .= '</li>' . "\n"; } $res .= '</ul>' . "\n"; } } else { $res .= '<div class="info_box">' . BAZ_PAS_DE_FORMULAIRES_TROUVES . '</div>' . "\n"; } //ajout du lien pour creer un nouveau formulaire if (baz_a_le_droit('saisie_formulaire')) { $res .= '<a class="BAZ_lien_nouveau" href="' . $GLOBALS['wiki']->href('', $GLOBALS['wiki']->GetPageTag(), BAZ_VARIABLE_VOIR . '=' . BAZ_VOIR_FORMULAIRE . '&action_formulaire=new') . '">' . BAZ_NOUVEAU_FORMULAIRE . '</a>' . "\n"; } } return $res; }