Пример #1
0
/** baz_formulaire() - Renvoie le formulaire pour les saisies ou modification des fiches
*
* @param	string	action du formulaire : soit formulaire de saisie, soit inscription dans la base de donnees, soit formulaire de modification, soit modification de la base de donnees
* @param	string	url de renvois du formulaire (facultatif)
* @param	array	valeurs de la fiche en cas de modification (facultatif)
*
* @return   string  HTML
*/
function baz_formulaire($mode, $url = '', $valeurs = '')
{
    $res = '';
    if ($url == '') {
        $lien_formulaire = $GLOBALS['wiki']->href('', $GLOBALS['wiki']->GetPageTag(), BAZ_VARIABLE_VOIR . '=' . BAZ_VOIR_SAISIR);
        //Definir le lien du formulaire en fonction du mode de formulaire choisi
        if ($mode == BAZ_CHOISIR_TYPE_FICHE) {
            $lien_formulaire .= '&' . BAZ_VARIABLE_ACTION . '=' . BAZ_ACTION_NOUVEAU;
        }
        if ($mode == BAZ_ACTION_NOUVEAU) {
            if (!isset($_POST['accept_condition']) && $GLOBALS['_BAZAR_']['condition'] != NULL) {
                $lien_formulaire .= '&' . BAZ_VARIABLE_ACTION . '=' . BAZ_ACTION_NOUVEAU;
            } else {
                $lien_formulaire .= '&' . BAZ_VARIABLE_ACTION . '=' . BAZ_ACTION_NOUVEAU_V;
            }
        }
        if ($mode == BAZ_ACTION_MODIFIER) {
            if (!isset($_POST['accept_condition']) && $GLOBALS['_BAZAR_']['condition'] != NULL) {
                $lien_formulaire .= '&' . BAZ_VARIABLE_ACTION . '=' . BAZ_ACTION_MODIFIER;
            } else {
                $lien_formulaire .= '&' . BAZ_VARIABLE_ACTION . '=' . BAZ_ACTION_MODIFIER_V;
            }
            $lien_formulaire .= '&id_fiche=' . $GLOBALS['_BAZAR_']['id_fiche'];
        }
        if ($mode == BAZ_ACTION_MODIFIER_V) {
            $lien_formulaire .= '&' . BAZ_VARIABLE_ACTION . '=' . BAZ_ACTION_MODIFIER_V . '&id_fiche=' . $GLOBALS['_BAZAR_']['id_fiche'];
        }
    }
    //contruction du squelette du formulaire
    $formtemplate = '<form action="' . ($url ? $url : $lien_formulaire) . '" method="post" name="formulaire" id="formulaire" enctype="multipart/form-data">' . "\n";
    //antispam
    $formtemplate .= '<input name="antispam" type="hidden" value="0" />' . "\n";
    //------------------------------------------------------------------------------------------------
    //AFFICHAGE DU FORMULAIRE GENERAL DE CHOIX DU TYPE DE FICHE
    //------------------------------------------------------------------------------------------------
    if ($mode == BAZ_CHOISIR_TYPE_FICHE) {
        if (isset($GLOBALS['_BAZAR_']['id_typeannonce']) && $GLOBALS['_BAZAR_']['id_typeannonce'] != 'toutes') {
            $mode = BAZ_ACTION_NOUVEAU;
        } else {
            //titre
            if ($GLOBALS['_BAZAR_']['affiche_menu'] == "0") {
                $res .= '<h2 class="titre_saisir_fiche">' . BAZ_SAISIR_UNE_NOUVELLE_FICHE . '</h2>' . "\n";
            }
            //requete pour obtenir le nom et la description des types d'annonce
            $tab_formulaire = baz_valeurs_tous_les_formulaires($GLOBALS['_BAZAR_']['categorie_nature']);
            if (count($tab_formulaire) == 1) {
                $tab_type_formulaire = array_shift($tab_formulaire);
                $GLOBALS['_BAZAR_']['id_typeannonce'] = key($tab_type_formulaire);
                $_REQUEST['id_typeannonce'] = $GLOBALS['_BAZAR_']['id_typeannonce'];
                $ligne = array_shift($tab_type_formulaire);
                $GLOBALS['_BAZAR_']['typeannonce'] = $ligne['bn_label_nature'];
                $GLOBALS['_BAZAR_']['condition'] = $ligne['bn_condition'];
                $GLOBALS['_BAZAR_']['template'] = $ligne['bn_template'];
                $GLOBALS['_BAZAR_']['commentaire'] = $ligne['bn_commentaire'];
                $GLOBALS['_BAZAR_']['appropriation'] = $ligne['bn_appropriation'];
                $GLOBALS['_BAZAR_']['image_titre'] = $ligne['bn_image_titre'];
                $GLOBALS['_BAZAR_']['image_logo'] = $ligne['bn_image_logo'];
                $GLOBALS['_BAZAR_']['categorie_nature'] = $ligne['bn_type_fiche'];
                $mode = BAZ_ACTION_NOUVEAU;
                //on remplace l'attribut action du formulaire par l'action adequate
                $lien_formulaire->addQueryString(BAZ_VARIABLE_ACTION, BAZ_ACTION_NOUVEAU_V);
                $attributes = array('action' => str_replace("&amp;", "&", $lien_formulaire->getURL()));
                $formtemplate->updateAttributes($attributes);
            } else {
                if (count($tab_formulaire) > 0) {
                    $res .= '<div class="info_box">' . BAZ_CHOIX_TYPE_FICHE . '</div>' . "\n";
                    foreach ($tab_formulaire as $type_fiche => $formulaire) {
                        $res .= '<h3 class="titre_categorie_fiche">' . $type_fiche . '</h3>' . "\n";
                        foreach ($formulaire as $nomwiki => $ligne) {
                            $res .= '<a href="' . $lien_formulaire . '&amp;id_typeannonce=' . $nomwiki . '" title="' . BAZ_SAISIR_FICHE_DE_CE_TYPE . '" class="lien_formulaire">' . "\n";
                            $res .= '<span class="BAZ_titre_liste">' . $ligne['bn_label_nature'] . '</span>' . "\n";
                            if ($ligne['bn_description'] != '') {
                                $res .= ' : ' . $ligne['bn_description'] . "\n";
                            }
                            $res .= '</a>' . "\n";
                        }
                    }
                } else {
                    $res .= '<div class="info_box">' . BAZ_PAS_DE_FORMULAIRES_TROUVES . '</div>' . "\n";
                }
            }
        }
    }
    //------------------------------------------------------------------------------------------------
    //AFFICHAGE DU FORMULAIRE CORRESPONDANT AU TYPE DE FICHE CHOISI PAR L'UTILISATEUR
    //------------------------------------------------------------------------------------------------
    if ($mode == BAZ_ACTION_NOUVEAU) {
        // Affichage du modele de formulaire
        $res .= baz_formulaire_des_fiches('saisie', $formtemplate, $url ? $url : $lien_formulaire);
    }
    //------------------------------------------------------------------------------------------------
    // CAS DE LA MODIFICATION D'UNE FICHE (FORMULAIRE DE MODIFICATION)
    //------------------------------------------------------------------------------------------------
    if ($mode == BAZ_ACTION_MODIFIER) {
        $res .= baz_formulaire_des_fiches('modification', $formtemplate, $url ? $url : $lien_formulaire, $valeurs);
    }
    //------------------------------------------------------------------------------------------------
    // CAS DE L'AJOUT D'UNE FICHE
    //------------------------------------------------------------------------------------------------
    if ($mode == BAZ_ACTION_NOUVEAU_V && $_POST['antispam'] == 1) {
        baz_insertion_fiche($_POST);
        // Redirection vers la fiche
        $GLOBALS['wiki']->Redirect('Location: ' . $GLOBALS['wiki']->href('', $GLOBALS['wiki']->GetPageTag(), BAZ_VARIABLE_VOIR . '=' . BAZ_VOIR_CONSULTER . '&amp;' . BAZ_VARIABLE_ACTION . '=' . BAZ_VOIR_FICHE . '&amp;id_fiche=' . $GLOBALS['_BAZAR_']['id_fiche'] . 'message=ajout_ok'));
        exit;
    }
    //------------------------------------------------------------------------------------------------
    // CAS DE LA MODIFICATION D'UNE FICHE (VALIDATION ET MAJ)
    //------------------------------------------------------------------------------------------------
    if ($mode == BAZ_ACTION_MODIFIER_V && $_POST['antispam'] == 1) {
        if ($formtemplate->validate() && baz_a_le_droit('saisie_fiche', $GLOBALS['wiki']->GetPageOwner($GLOBALS['_BAZAR_']['id_fiche']))) {
            $formtemplate->process('baz_mise_a_jour_fiche', false);
            // Redirection vers mes_fiches pour eviter la revalidation du formulaire
            $GLOBALS['_BAZAR_']['url']->addQueryString('message', 'modif_ok');
            $GLOBALS['_BAZAR_']['url']->addQueryString(BAZ_VARIABLE_VOIR, BAZ_VOIR_CONSULTER);
            $GLOBALS['_BAZAR_']['url']->addQueryString(BAZ_VARIABLE_ACTION, BAZ_VOIR_FICHE);
            $GLOBALS['_BAZAR_']['url']->addQueryString('id_fiche', $GLOBALS['_BAZAR_']['id_fiche']);
            header('Location: ' . $GLOBALS['_BAZAR_']['url']->getURL());
            exit;
        }
    }
    return $res;
}
Пример #2
0
/** baz_formulaire() - Renvoie le formulaire pour les saisies ou modification des fiches
 * @param   string  action du formulaire :
 *  - soit formulaire de saisie
 *  - soit sauvegarde dans la base de donnees
 *  - soit formulaire de modification
 *  - soit modification de la base de donnees
 * @param   string  url de renvois du formulaire (facultatif)
 * @param   array   valeurs de la fiche en cas de modification (facultatif)
 *
 * @return   string  HTML
 */
function baz_formulaire($mode, $url = '', $valeurs = '')
{
    $res = '';
    if ($url == '') {
        $lien_formulaire = $GLOBALS['_BAZAR_']['url'];
        $lien_formulaire->addQueryString(BAZ_VARIABLE_VOIR, BAZ_VOIR_SAISIR);
        //Definir le lien du formulaire en fonction du mode de formulaire choisi
        if ($mode == BAZ_CHOISIR_TYPE_FICHE) {
            if ($GLOBALS['params']['vue'] == BAZ_VOIR_SAISIR && isset($_REQUEST['id_typeannonce'])) {
                $lien_formulaire->addQueryString(BAZ_VARIABLE_ACTION, BAZ_ACTION_NOUVEAU_V);
            } else {
                $lien_formulaire->addQueryString(BAZ_VARIABLE_ACTION, BAZ_ACTION_NOUVEAU);
            }
        }
        if ($mode == BAZ_ACTION_NOUVEAU) {
            if (isset($_REQUEST['id_typeannonce'])) {
                if (!isset($_POST['bf_titre']) || !isset($_POST['accept_condition']) && $GLOBALS['_BAZAR_']['condition'] != null) {
                    $lien_formulaire->addQueryString(BAZ_VARIABLE_ACTION, BAZ_ACTION_NOUVEAU);
                } else {
                    $lien_formulaire->addQueryString(BAZ_VARIABLE_ACTION, BAZ_ACTION_NOUVEAU_V);
                }
            } else {
                $mode = BAZ_CHOISIR_TYPE_FICHE;
            }
        }
        if ($mode == BAZ_ACTION_MODIFIER) {
            if (!isset($_POST['bf_titre']) || !isset($_POST['accept_condition']) && $GLOBALS['_BAZAR_']['condition'] != null) {
                $lien_formulaire->addQueryString(BAZ_VARIABLE_ACTION, BAZ_ACTION_MODIFIER);
            } else {
                $lien_formulaire->addQueryString(BAZ_VARIABLE_ACTION, BAZ_ACTION_MODIFIER_V);
            }
            $lien_formulaire->addQueryString('id_fiche', $valeurs['id_fiche']);
        }
        if ($mode == BAZ_ACTION_MODIFIER_V) {
            $lien_formulaire->addQueryString(BAZ_VARIABLE_ACTION, BAZ_ACTION_MODIFIER_V);
            $lien_formulaire->addQueryString('id_fiche', $valeurs['id_fiche']);
        }
    }
    // contruction du squelette du formulaire
    $formtemplate = new HTML_QuickForm('formulaire', 'post', preg_replace('/&amp;/', '&', $url ? $url : $lien_formulaire->getURL()));
    $squelette =& $formtemplate->defaultRenderer();
    $squelette->setFormTemplate('<form {attributes} class="form-horizontal" novalidate="novalidate">' . "\n" . '{content}' . "\n" . '</form>' . "\n");
    $squelette->setElementTemplate('<div class="control-group form-group">' . "\n" . '<label class="control-label col-sm-3">' . "\n" . '<!-- BEGIN required --><span class="symbole_obligatoire">*&nbsp;</span><!-- END required -->' . "\n" . '{label} :</label>' . "\n" . '<div class="controls col-sm-9"> ' . "\n" . '{element}' . "\n" . '<!-- BEGIN error --><span class="alert alert-error alert-danger">{error}</span><!-- END error -->' . "\n" . '</div>' . "\n" . '</div>' . "\n");
    $squelette->setElementTemplate('<div class="control-group form-group">' . "\n" . '<div class="liste_a_cocher"><strong>{label}&nbsp;{element}</strong>' . "\n" . '<!-- BEGIN required --><span class="symbole_obligatoire">&nbsp;*</span><!-- END required -->' . "\n" . '</div>' . "\n" . '</div>' . "\n", 'accept_condition');
    $squelette->setElementTemplate('<div class="form-actions form-group">' . "\n" . '<div class="col-sm-9 col-sm-offset-3">{label}{element}</div></div>' . "\n", 'groupe_boutons');
    $squelette->setElementTemplate('<div class="control-group form-group">' . "\n" . '<div class="control-label col-sm-3">' . "\n" . '{label} :</div>' . "\n" . '<div class="controls col-sm-9"> ' . "\n" . '{element}' . "\n" . '</div>' . "\n" . '</div>', 'select');
    $squelette->setRequiredNoteTemplate('<div class="col-sm-9 col-sm-offset-3 symbole_obligatoire">* {requiredNote}</div>' . "\n");
    //Traduction de champs requis
    $formtemplate->setRequiredNote(_t('BAZ_CHAMPS_REQUIS'));
    $formtemplate->setJsWarnings(_t('BAZ_ERREUR_SAISIE'), _t('BAZ_VEUILLEZ_CORRIGER'));
    //antispam
    $formtemplate->addElement('hidden', 'antispam', 0);
    //------------------------------------------------------------------------------------------------
    // CHOIX DU TYPE DE FICHE
    //------------------------------------------------------------------------------------------------
    if ($mode == BAZ_CHOISIR_TYPE_FICHE) {
        if (isset($_REQUEST['id_typeannonce']) && !empty($_REQUEST['id_typeannonce'])) {
            $GLOBALS['params']['idtypeannonce'] = $_REQUEST['id_typeannonce'];
            $mode = BAZ_ACTION_NOUVEAU;
        } else {
            $resultat = array();
            $tabform = baz_valeurs_tous_les_formulaires($GLOBALS['params']['categorienature'], 'html', $GLOBALS['params']['idtypeannonce']);
            foreach ($tabform as $cat => $form) {
                foreach ($form as $key => $value) {
                    $resultat[$value['bn_id_nature']] = $value;
                }
            }
            if (count($resultat) == 0) {
                $res .= '<div class="alert alert-info">' . _t('BAZ_NO_FORMS_FOUND') . '.</div>' . "\n";
            } elseif (count($resultat) == 1) {
                $ligne = reset($resultat);
                $_REQUEST['id_typeannonce'] = $ligne['bn_id_nature'];
                $GLOBALS['params']['idtypeannonce'] = $ligne['bn_id_nature'];
                $mode = BAZ_ACTION_NOUVEAU;
                //on remplace l'attribut action du formulaire par l'action adequate
                $lien_formulaire->addQueryString(BAZ_VARIABLE_ACTION, BAZ_ACTION_NOUVEAU_V);
                $formtemplate->updateAttributes(array('action' => str_replace('&amp;', '&', $lien_formulaire->getURL())));
            } else {
                $res .= '<table id="add-entry-table" class="bazar-table table table-condensed table-striped">
                    <thead>
                        <tr>
                            <th>' . _t('BAZ_FORMULAIRE') . '</th>
                            <th style="width:220px;">' . _t('BAZ_ACTIONS') . '</th>
                            <th>' . _t('BAZ_CATEGORIE') . '</th>
                        </tr>
                    </thead>
                    <tbody>' . "\n";
                foreach ($resultat as $ligne) {
                    $newurl = $GLOBALS['wiki']->href('', $GLOBALS['wiki']->GetPageTag(), BAZ_VARIABLE_VOIR . '=' . BAZ_VOIR_SAISIR . '&amp;' . BAZ_VARIABLE_ACTION . '=' . BAZ_ACTION_NOUVEAU . '&amp;id_typeannonce=' . $ligne['bn_id_nature']);
                    $res .= '<tr>
                            <td>
                                <strong>' . $ligne['bn_label_nature'] . '</strong>' . "\n" . (!empty($ligne['bn_description']) ? '<br>' . $ligne['bn_description'] : '') . '
                            </td>
                            <td>
                            <a class="btn btn-mini btn-xs btn-primary" href="' . $newurl . '">' . '<i class="glyphicon glyphicon-plus icon-plus"></i> ' . _t('BAZ_SAISIR_UNE_NOUVELLE_FICHE') . '</a>&nbsp;&nbsp;' . "\n" . '</td>
                            <td>' . $ligne['bn_type_fiche'] . '</td>
                        </tr>';
                }
                $res .= '</tbody>
                </table>' . "\n";
            }
        }
    }
    //------------------------------------------------------------------------------------------------
    // AFFICHAGE DU FORMULAIRE CORRESPONDANT AU TYPE DE FICHE CHOISI PAR L'UTILISATEUR
    //------------------------------------------------------------------------------------------------
    if ($mode == BAZ_ACTION_NOUVEAU) {
        // Affichage du modele de formulaire
        $res .= baz_afficher_formulaire_fiche('saisie', $formtemplate, $url);
    }
    //------------------------------------------------------------------------------------------------
    // CAS DE LA MODIFICATION D'UNE FICHE (FORMULAIRE DE MODIFICATION)
    //------------------------------------------------------------------------------------------------
    if ($mode == BAZ_ACTION_MODIFIER) {
        $res .= baz_afficher_formulaire_fiche('modification', $formtemplate, $url, $valeurs);
    }
    //------------------------------------------------------------------------------------------------
    // CAS DE L'AJOUT D'UNE FICHE
    //------------------------------------------------------------------------------------------------
    if ($mode == BAZ_ACTION_NOUVEAU_V) {
        if ($formtemplate->validate() && $_POST['antispam'] == 1) {
            $valeur = baz_insertion_fiche($_POST);
            // Redirection pour eviter la revalidation du formulaire
            $GLOBALS['_BAZAR_']['url']->addQueryString('message', 'ajout_ok');
            $GLOBALS['_BAZAR_']['url']->addQueryString(BAZ_VARIABLE_VOIR, BAZ_VOIR_CONSULTER);
            $GLOBALS['_BAZAR_']['url']->addQueryString(BAZ_VARIABLE_ACTION, BAZ_VOIR_FICHE);
            $GLOBALS['_BAZAR_']['url']->addQueryString('id_fiche', $valeur['id_fiche']);
            header('Location: ' . $GLOBALS['_BAZAR_']['url']->getURL());
            exit;
        }
    }
    //------------------------------------------------------------------------------------------------
    // CAS DE LA MODIFICATION D'UNE FICHE (VALIDATION ET MAJ)
    //------------------------------------------------------------------------------------------------
    if ($mode == BAZ_ACTION_MODIFIER_V) {
        if ($formtemplate->validate() && $_POST['antispam'] == 1 && baz_a_le_droit('saisie_fiche', $GLOBALS['wiki']->GetPageOwner($_POST['id_fiche']))) {
            $valeur = baz_mise_a_jour_fiche($_POST);
            if ($GLOBALS['wiki']->GetPageTag() != $valeur['id_fiche']) {
                // Redirection pour eviter la revalidation du formulaire
                $GLOBALS['_BAZAR_']['url']->addQueryString('message', 'modif_ok');
                $GLOBALS['_BAZAR_']['url']->addQueryString(BAZ_VARIABLE_VOIR, BAZ_VOIR_CONSULTER);
                $GLOBALS['_BAZAR_']['url']->addQueryString(BAZ_VARIABLE_ACTION, BAZ_VOIR_FICHE);
                $GLOBALS['_BAZAR_']['url']->addQueryString('id_fiche', $valeur['id_fiche']);
                header('Location: ' . $GLOBALS['_BAZAR_']['url']->getURL());
            } else {
                header('Location: ' . $GLOBALS['wiki']->href('', $GLOBALS['wiki']->GetPageTag()));
            }
        }
    }
    return $res;
}
Пример #3
0
                 echo json_encode(array('html' => baz_voir_fiche(0, $idfiche)));
             } else {
                 $decoded_entry = json_decode($wikipage['body'], true);
                 echo json_encode($decoded_entry);
             }
         } else {
             echo json_encode(array('error' => 'id_fiche ' . $idfiche . ' not found.'));
         }
     }
     break;
 case "save_entry":
     // sauver une fiche bazar
     if (!isset($_POST['id_typeannonce']) || empty($_POST['id_typeannonce'])) {
         echo json_encode(array('error' => 'no form id specified.'));
     } else {
         $fiche = baz_insertion_fiche($_POST);
         echo json_encode($fiche);
     }
     break;
 case "template":
     // les templates bazar, pour afficher dans d'autres applis
     // on peut préciser dans l'url type=form (template formulaire) ou type=entry (template fiche)
     if (empty($form)) {
         echo json_encode(array('error' => 'no form id specified.'));
     } else {
         $_REQUEST['id_typeannonce'] = $form;
         $tab_nature = baz_valeurs_formulaire($_REQUEST['id_typeannonce']);
         $GLOBALS['_BAZAR_']['typeannonce'] = $tab_nature['bn_label_nature'];
         $GLOBALS['_BAZAR_']['condition'] = $tab_nature['bn_condition'];
         $GLOBALS['_BAZAR_']['template'] = $tab_nature['bn_template'];
         $GLOBALS['_BAZAR_']['commentaire'] = $tab_nature['bn_commentaire'];