/** checkboxfiche() - permet d'aller saisir et modifier un autre type de fiche * * @param mixed L'objet QuickForm du formulaire * @param mixed Le tableau des valeurs des différentes option pour le texte HTML * @param string Type d'action pour le formulaire : saisie, modification, vue,... saisie par défaut * @param mixed Tableau des valeurs par défauts (pour modification) * * @return void */ function checkboxfiche(&$formtemplate, $tableau_template, $mode, $valeurs_fiche) { $id = $tableau_template[0] . $tableau_template[1] . $tableau_template[6]; //on teste la presence de filtres pour les valeurs $tabquery = array(); if (isset($_GET["query"]) && !empty($_GET["query"])) { $tableau = array(); $tab = explode('|', $_GET["query"]); //découpe la requete autour des | foreach ($tab as $req) { $tabdecoup = explode('=', $req, 2); $tableau[$tabdecoup[0]] = trim($tabdecoup[1]); } $tabquery = array_merge($tabquery, $tableau); } if ($mode == 'saisie' || $mode == 'formulaire_recherche' && $tableau_template[9] == 1) { $bulledaide = ''; if ($mode == 'saisie' && isset($tableau_template[10]) && $tableau_template[10] != '') { $bulledaide = ' <img class="tooltip_aide" title="' . htmlentities($tableau_template[10], ENT_QUOTES, TEMPLATES_DEFAULT_CHARSET) . '" src="tools/bazar/presentation/images/aide.png" width="16" height="16" alt="image aide" />'; } $checkbox_html = '<div class="control-group form-group">' . "\n" . '<label class="control-label col-sm-3">' . "\n"; if ($mode == 'saisie' && isset($tableau_template[8]) && $tableau_template[8] == 1) { $checkbox_html .= '<span class="symbole_obligatoire">* </span>' . "\n"; } $checkbox_html .= $tableau_template[2] . $bulledaide . ' : </label>' . "\n" . '<div class="controls col-sm-9"'; if ($mode == 'saisie' && isset($tableau_template[8]) && $tableau_template[8] == 1) { $checkbox_html .= ' required="required"'; } $checkbox_html .= '>' . "\n"; if (isset($valeurs_fiche[$id]) && $valeurs_fiche[$id] != '') { $def = explode(',', $valeurs_fiche[$id]); } elseif (isset($_REQUEST[$id]) && $_REQUEST[$id] != '') { $def = explode(',', $_REQUEST[$id]); } else { $def = explode(',', $tableau_template[5]); } $val_type = baz_valeurs_formulaire($tableau_template[1]); //on recupere les parameres pour une requete specifique if ($GLOBALS['wiki']->config['global_query'] && isset($_GET['query'])) { $query = $tableau_template[12]; if (!empty($query)) { $query .= '|' . $_GET['query']; } else { $query = $_GET['query']; } } else { $query = $tableau_template[12]; } if (!empty($query)) { $tabquery = array(); $tableau = array(); $tab = explode('|', $query); //découpe la requete autour des | foreach ($tab as $req) { $tabdecoup = explode('=', $req, 2); $tableau[$tabdecoup[0]] = trim($tabdecoup[1]); } $tabquery = array_merge($tabquery, $tableau); } else { $tabquery = ''; } $tab_result = baz_requete_recherche_fiches($tabquery, 'alphabetique', $tableau_template[1], $val_type["bn_type_fiche"], 1, '', '', true, !empty($tableau_template[13]) ? $tableau_template[13] : ''); $checkboxtab = ''; foreach ($tab_result as $fiche) { $valeurs_fiche_liste = json_decode($fiche["body"], true); if (TEMPLATES_DEFAULT_CHARSET != 'UTF-8') { $valeurs_fiche_liste = array_map('utf8_decode', $valeurs_fiche_liste); } $checkboxtab[$valeurs_fiche_liste['id_fiche']] = $valeurs_fiche_liste['bf_titre']; } if (is_array($checkboxtab)) { if ($tableau_template[7] == 'tags') { foreach ($checkboxtab as $key => $title) { $tabfiches[$key] = '{"id":"' . $key . '", "title":"' . str_replace('"', '\\"', $title) . '"}'; } $script = '$(function(){ var tagsexistants = [' . implode(',', $tabfiches) . ']; var bazartag = []; bazartag["' . $id . '"] = $(\'#formulaire .yeswiki-input-entries' . $id . '\'); bazartag["' . $id . '"].tagsinput({ itemValue: \'id\', itemText: \'title\', typeahead: { afterSelect: function(val) { this.$element.val(""); }, source: tagsexistants }, freeInput: false, confirmKeys: [13, 188] });' . "\n"; if (is_array($def) && count($def) > 0 && !empty($def[0])) { foreach ($def as $key) { if (isset($tabfiches[$key])) { $script .= 'bazartag["' . $id . '"].tagsinput(\'add\', ' . $tabfiches[$key] . ');' . "\n"; } } } $script .= '});' . "\n"; $GLOBALS['wiki']->AddJavascriptFile('tools/tags/libs/vendor/bootstrap-tagsinput.min.js'); $GLOBALS['wiki']->AddJavascript($script); $checkbox_html .= '<input type="text" name="' . $id . '" class="yeswiki-input-entries yeswiki-input-entries' . $id . '">'; } else { $checkbox_html .= '<input type="text" class="pull-left filter-entries" value="" placeholder="' . _t('BAZAR_FILTER') . '"><label class="pull-right"><input type="checkbox" class="selectall" /> ' . _t('BAZAR_CHECKALL') . '</label>' . "\n" . '<div class="clearfix"></div>' . "\n" . '<ul class="list-bazar-entries list-unstyled">'; foreach ($checkboxtab as $key => $label) { $checkbox_html .= '<div class="yeswiki-checkbox checkbox"> <input type="checkbox" id="ckbx_' . $key . '" value="1" name="' . $id . '[' . $key . ']"'; if ($def != '' && in_array($key, $def)) { $checkbox_html .= ' checked="checked"'; } $checkbox_html .= ' class="element_checkbox"><label for="ckbx_' . $key . '">' . $label . '</label></div>'; } $checkbox_html .= "\n" . '</ul>' . "\n"; // javascript additions $GLOBALS['wiki']->AddJavascriptFile('tools/bazar/libs/vendor/jquery.fastLiveFilter.js'); $script = "\$(function() { \$('.filter-entries').each(function() {\n \$(this).fastLiveFilter(\$(this).siblings('.list-bazar-entries')); });\n });"; $GLOBALS['wiki']->AddJavascript($script); } } $checkbox_html .= "</div>\n</div>\n"; $formtemplate->addElement('html', $checkbox_html); } elseif ($mode == 'requete') { if (isset($valeurs_fiche[$tableau_template[0] . $tableau_template[1] . $tableau_template[6]]) && $valeurs_fiche[$tableau_template[0] . $tableau_template[1] . $tableau_template[6]] != 0) { return array($tableau_template[0] . $tableau_template[1] . $tableau_template[6] => $valeurs_fiche[$tableau_template[0] . $tableau_template[1] . $tableau_template[6]]); } } elseif ($mode == 'html') { $html = ''; if (isset($valeurs_fiche[$tableau_template[0] . $tableau_template[1] . $tableau_template[6]]) && $valeurs_fiche[$tableau_template[0] . $tableau_template[1] . $tableau_template[6]] != '') { $html .= '<div class="BAZ_rubrique" data-id="' . $tableau_template[0] . $tableau_template[1] . $tableau_template[6] . '">' . "\n" . '<span class="BAZ_label">' . $tableau_template[2] . ' :</span>' . "\n"; $html .= '<span class="BAZ_texte">' . "\n"; $tab_fiche = explode(',', $valeurs_fiche[$tableau_template[0] . $tableau_template[1] . $tableau_template[6]]); foreach ($tab_fiche as $fiche) { $html .= '<ul>'; if ($tableau_template[3] == 'fiche') { $html .= baz_voir_fiche(0, $fiche); } else { $val_fiche = baz_valeurs_fiche($fiche); // il y a des filtres à faire sur les fiches if (count($tabquery) > 0) { $match = false; foreach ($tabquery as $key => $value) { if (strstr($val_fiche[$key], $value)) { $match = true; } else { $match = false; break; } } } if (is_array($val_fiche) && (!isset($match) || $match == true)) { $html .= '<li><a href="' . str_replace('&', '&', $GLOBALS['wiki']->href('', $fiche)) . '" class="modalbox" title="Voir la fiche ' . htmlspecialchars($val_fiche['bf_titre'], ENT_COMPAT | ENT_HTML401, TEMPLATES_DEFAULT_CHARSET) . '">' . $val_fiche['bf_titre'] . '</a></li>' . "\n"; } } $html .= '</ul>'; } $html .= '</span>' . "\n" . '</div> <!-- /.BAZ_rubrique -->' . "\n"; } return $html; } }
/** baz_rechercher() Formate la liste de toutes les fiches * * @return string le code HTML a afficher */ function baz_rechercher() { $res = ''; //creation du lien pour le formulaire de recherche $lien_formulaire = $GLOBALS['wiki']->href('', $GLOBALS['wiki']->GetPageTag(), BAZ_VARIABLE_VOIR . '=' . BAZ_VOIR_DEFAUT . '&' . BAZ_VARIABLE_ACTION . '=' . BAZ_MOTEUR_RECHERCHE, 0); $formtemplate = '<form action="' . $lien_formulaire . '" method="post" name="formulaire" id="formulaire">' . "\n"; //on recupere la liste des formulaires, a afficher dans une liste deroulante pour la recherche $tab_formulaires = baz_valeurs_tous_les_formulaires(); foreach ($tab_formulaires as $type_fiche => $formulaire) { foreach ($formulaire as $nomwiki => $ligne) { $tableau_typeformulaires[] = $nomwiki; $type_formulaire_select[$nomwiki] = $ligne['bn_label_nature'] . ' (' . $type_fiche . ')'; } } $type_fiche_choisie = isset($_REQUEST['id_typeannonce']); $formtemplate_champs_recherche_supplementaires = ''; if (count($tab_formulaires) > 1) { $formtemplate .= '<div class="formulaire_ligne">' . "\n" . '<div class="formulaire_label">' . BAZ_TYPE_FICHE . '</div>' . "\n"; $formtemplate .= '<div class="formulaire_input">' . "\n" . ' <select name="id_typeannonce" onchange="javascript:this.form.submit();">' . "\n" . ' <option value="toutes">' . BAZ_TOUS_TYPES_FICHES . '</option>' . "\n"; foreach ($type_formulaire_select as $nomwikiformulaire => $formulaire_select) { $formtemplate .= ' <option value="' . $nomwikiformulaire . '"'; if ($type_fiche_choisie && $_REQUEST['id_typeannonce'] == $nomwikiformulaire) { $formtemplate .= ' selected="selected"'; } $formtemplate .= '>' . $formulaire_select . '</option>' . "\n"; } $formtemplate .= ' </select>' . "\n" . '</div>' . "\n" . '</div>' . "\n"; // on ajoute les champs de recherche du type de fiche choisi if ($type_fiche_choisie) { $tab_nature = baz_valeurs_formulaire($_REQUEST['id_typeannonce']); $tableau = formulaire_valeurs_template_champs($GLOBALS['_BAZAR_']['template']); for ($i = 0; $i < count($tableau); $i++) { if ($tableau[$i][0] == 'liste' || $tableau[$i][0] == 'checkbox' || $tableau[$i][0] == 'listefiche' || $tableau[$i][0] == 'checkboxfiche' || $tableau[$i][0] == 'labelhtml') { $formtemplate_champs_recherche_supplementaires .= $tableau[$i][0]($formtemplate, $tableau[$i], 'formulaire_recherche', ''); } } } } else { $formtemplate .= '<input type="hidden" name="id_typeannonce" value="' . $GLOBALS['_BAZAR_']['id_typeannonce'] . '" />' . "\n"; } //requete pour obtenir l'id, le nom et prenom de toutes les personnes ayant depose une fiche // dans le but de construire l'element de formulaire select avec les noms des emetteurs de fiche if (BAZ_RECHERCHE_PAR_EMETTEUR) { //TODO: gestion des emetteurs } else { $formtemplate .= '<input type="hidden" value="tous" name="personnes">' . "\n"; } //teste si le user est admin, dans ce cas, il peut voir les fiches perimees if ($GLOBALS['wiki']->UserIsAdmin()) { //TODO: gestion des fiches perimees } $formtemplate .= '<div class="grouperecherche">' . "\n" . ' <input type="text" name="recherche_mots_cles" onfocus="if (this.value==\'' . BAZ_MOT_CLE . '\') {this.value=\'\';}" value="' . BAZ_MOT_CLE . '" class="boite_recherche" maxlength="255">' . "\n" . ' <input type="submit" value="' . BAZ_RECHERCHER . '" name="rechercher" class="btn bouton_recherche">' . "\n" . '</div>' . "\n"; //affichage du formulaire $res .= $formtemplate . $formtemplate_champs_recherche_supplementaires . "\n" . '</form>' . "\n"; //si la recherche n'a pas encore ete effectuee, on affiche les 10 dernieres fiches if (!isset($_REQUEST['id_typeannonce'])) { $tableau_dernieres_fiches = baz_requete_recherche_fiches('', '', $GLOBALS['_BAZAR_']['id_typeannonce'], $GLOBALS['_BAZAR_']['categorie_nature'], 1, '', 10); if (count($tableau_dernieres_fiches) > 0) { $res .= '<h2>' . BAZ_DERNIERES_FICHES . '</h2>'; $res .= baz_afficher_liste_resultat($tableau_dernieres_fiches, false); } else { $res .= '<div class="info_box">' . BAZ_PAS_DE_FICHES . '</div>' . "\n"; } } else { $tableau_fiches = baz_requete_recherche_fiches('', '', $_REQUEST['id_typeannonce'], $GLOBALS['_BAZAR_']['categorie_nature'], 1, ''); $res .= baz_afficher_liste_resultat($tableau_fiches); } return $res; }
/** * Affiche la liste des resultats d'une recherche. * * @param $tableau_fiches : tableau de fiches provenant du resultat de la recherche * @param $info_nb : booleen pour afficher ou non le nombre du resultat de la recherche (vrai par defaut) */ function displayResultList($tableau_fiches, $params, $info_nb = true) { // tableau des valeurs "facettables" avec leur nombres $facettevalue = array(); // tableau qui contiendra les fiches $fiches['fiches'] = array(); foreach ($tableau_fiches as $fiche) { $fiche = json_decode($fiche['body'], true); if (TEMPLATES_DEFAULT_CHARSET != 'UTF-8') { $fiche = array_map('utf8_decode', $fiche); } // champs correspondants if (!empty($params['correspondance'])) { $tabcorrespondance = explode('=', trim($params['correspondance'])); if (isset($tabcorrespondance[0])) { if (isset($tabcorrespondance[1]) && isset($fiche[$tabcorrespondance[1]])) { $fiche[$tabcorrespondance[0]] = $fiche[$tabcorrespondance[1]]; } else { $fiche[$tabcorrespondance[0]] = ''; } } else { exit('<div class="alert alert-danger">action bazarliste : parametre correspondance mal rempli : il doit etre de la forme correspondance="identifiant_1=identifiant_2"</div>'); } } $fiche['html_data'] = getHtmlDataAttributes($fiche); $fiche['html'] = baz_voir_fiche(0, $fiche); //permet de voir la fiche $fiche['datastr'] = getHtmlDataAttributes($fiche); // on scanne tous les champs qui pourraient faire des filtres pour les facettes if (count($params['groups']) > 0) { $valform = baz_valeurs_formulaire($fiche['id_typeannonce']); foreach ($fiche as $key => $value) { if (!empty($value)) { $facetteasked = isset($params['groups'][0]) && $params['groups'][0] == 'all' || in_array($key, $params['groups']); if (in_array($key, array('id_typeannonce', 'createur')) && $facetteasked) { // champs génériques des métadonnées if ($key == 'id_typeannonce') { $value = $fiche['id_typeannonce'] . '|' . $valform['bn_label_nature']; } if (isset($facettevalue[$key][$value])) { ++$facettevalue[$key][$value]; } else { $facettevalue[$key][$value] = 1; } } else { // liste, checkbox, listefiche ou checkboxfiche $templatef = $valform['template']; if (is_array($templatef)) { foreach ($templatef as $id => $val) { if ($val[1] === $key || isset($val[6]) && $val[0] . $val[1] . $val[6] === $key) { $islist = in_array($templatef[$id][0], array('checkbox', 'liste', 'scope')); $islistforeign = in_array($templatef[$id][0], array('checkboxfiche', 'listefiche')); if ($islist && $facetteasked) { // liste ou checkbox $tabval = explode(',', $value); foreach ($tabval as $val) { $facettevalue[$key]['type'] = 'liste'; $facettevalue[$key]['source'] = $templatef[$id][1]; if (isset($facettevalue[$key][$val])) { ++$facettevalue[$key][$val]; } else { $facettevalue[$key][$val] = 1; } } } elseif ($islistforeign && $facetteasked) { // listefiche ou checkboxfiche $facettevalue[$key]['type'] = 'fiche'; $facettevalue[$key]['source'] = $templatef[$id][1]; $tabval = explode(',', $value); foreach ($tabval as $val) { if (isset($facettevalue[$key][$val])) { ++$facettevalue[$key][$val]; } else { $facettevalue[$key][$val] = 1; } } } } } } } } } } // tableau qui contient le contenu de toutes les fiches $fiches['fiches'][$fiche['id_fiche']] = $fiche; } // tri des fiches $GLOBALS['ordre'] = $params['ordre']; $GLOBALS['champ'] = $params['champ']; usort($fiches['fiches'], 'champCompare'); // Limite le nombre de résultat au nombre de fiches demandées if ($params['nb'] != '') { $fiches['fiches'] = array_slice($fiches['fiches'], 0, $params['nb']); } if ($info_nb) { $fiches['info_res'] = '<div class="alert alert-info">' . _t('BAZ_IL_Y_A'); $nb_result = count($fiches['fiches']); if ($nb_result <= 1) { $fiches['info_res'] .= $nb_result . ' ' . _t('BAZ_FICHE') . '</div>' . "\n"; } else { $fiches['info_res'] .= $nb_result . ' ' . _t('BAZ_FICHES') . '</div>' . "\n"; } } else { $fiches['info_res'] = ''; } if (!empty($params['pagination'])) { // Mise en place du Pager require_once 'Pager/Pager.php'; $param = array('mode' => BAZ_MODE_DIVISION, 'perPage' => $params['pagination'], 'delta' => BAZ_DELTA, 'httpMethod' => 'GET', 'extraVars' => array_merge($_POST, $_GET), 'altNext' => _t('BAZ_SUIVANT'), 'altPrev' => _t('BAZ_PRECEDENT'), 'nextImg' => _t('BAZ_SUIVANT'), 'prevImg' => _t('BAZ_PRECEDENT'), 'itemData' => $fiches['fiches']); $pager =& Pager::factory($param); $fiches['fiches'] = $pager->getPageData(); $fiches['pager_links'] = '<div class="bazar_numero">' . $pager->links . '</div>' . "\n"; } else { $fiches['pager_links'] = ''; } // affichage des resultats include_once 'tools/bazar/libs/squelettephp.class.php'; // On cherche un template personnalise dans le repertoire themes/tools/bazar/templates $templatetoload = 'themes/tools/bazar/templates/' . $params['template']; if (!is_file($templatetoload)) { $templatetoload = 'tools/bazar/presentation/templates/' . $params['template']; } $squelfacette = new SquelettePhp($templatetoload); $fiches['param'] = $params; $squelfacette->set($fiches); $output = $squelfacette->analyser(); // affichage spécifique pour facette if (count($facettevalue) > 0) { // affichage des resultats et filtres dans une grille $outputfacette = '<div class="facette-container row row-fluid">' . "\n"; // calcul de la largeur de la colonne pour les resultats, en fonction de la taille des filtres $resultcolsize = 12 - intval($params['filtercolsize']); // colonne des resultats $outputresult = '<div class="col-xs-' . $resultcolsize . ' span' . $resultcolsize . '">' . "\n" . '<div class="results">' . "\n" . '<div class="alert alert-info">' . "\n" . _t('BAZ_IL_Y_A') . '<span class="nb-results">' . count($fiches['fiches']) . '</span> ' . _t('BAZ_FICHES_CORRESPONDANTES_FILTRES') . "\n" . '.</div>' . "\n" . $output . "\n" . '</div> <!-- /.results -->' . "\n" . '</div> <!-- /.col-xs-' . $resultcolsize . ' -->'; // colonne des filtres $outputfilter = '<div class="col-xs-' . $params['filtercolsize'] . ' span' . $params['filtercolsize'] . '">' . "\n" . '<div class="filters no-dblclick">' . "\n"; if (isset($facettevalue['id_typeannonce'])) { if (count($facettevalue['id_typeannonce']) > 1) { $outputfilter .= '<div class="filter-box panel panel-default" data-id="id_typeannonce">' . "\n"; $outputfilter .= '<div class="panel-heading">' . _t('BAZ_TYPE_FICHE') . '</div>' . "\n"; $outputfilter .= '<div class="panel-body">' . "\n"; foreach ($facettevalue['id_typeannonce'] as $id => $nb) { $infotypef = explode('|', $id); $outputfilter .= '<div class="checkbox"> <input class="filter-checkbox" type="checkbox" name="id_typeannonce" value="' . htmlspecialchars($infotypef[0]) . '"> <label for="id_typeannonce"> ' . $infotypef[1] . ' (<span class="nb">' . $nb . '</span>)</label> </div>' . "\n"; } $outputfilter .= '</div></div><!-- /.filter-box -->' . "\n"; } unset($facettevalue['id_typeannonce']); } if (isset($facettevalue['createur'])) { if (count($facettevalue['createur']) > 1) { $outputfilter .= '<div class="filter-box panel panel-default" data-id="createur">' . "\n"; $outputfilter .= '<div class="panel-heading">' . _t('BAZ_CREATOR') . '</div>' . "\n"; $outputfilter .= '<div class="panel-body">' . "\n"; foreach ($facettevalue['createur'] as $id => $nb) { $outputfilter .= '<div class="checkbox"> <input class="filter-checkbox" type="checkbox" name="createur" value="' . htmlspecialchars($id) . '"><label for="createur"> ' . $id . ' (<span class="nb">' . $nb . '</span>) </label></div>' . "\n"; } $outputfilter .= '</div></div><!-- /.filter-box -->' . "\n"; } unset($facettevalue['createur']); } $i = 0; $first = true; foreach ($params['groups'] as $id) { // on formatte la liste des resultats en fonction de la source if ($facettevalue[$id]['type'] == 'liste') { $list = baz_valeurs_liste($facettevalue[$id]['source']); } elseif ($facettevalue[$id]['type'] == 'fiche') { $form = baz_valeurs_formulaire($facettevalue[$id]['source']); $list['titre_liste'] = $form['bn_label_nature']; foreach ($facettevalue[$id] as $idfiche => $nb) { if ($idfiche != 'source' && $idfiche != 'type') { $f = baz_valeurs_fiche($idfiche); $list['label'][$idfiche] = $f['bf_titre']; } } } $idkey = htmlspecialchars($id); $outputfilter .= '<div class="filter-box panel panel-default ' . $idkey . '" data-id="' . $idkey . '">' . "\n"; $titlefilterbox = ''; if (isset($params['groupicons'][$i]) && !empty($params['groupicons'][$i])) { $titlefilterbox .= '<i class="' . $params['groupicons'][$i] . '"></i> '; } if (isset($params['titles'][$i]) && !empty($params['titles'][$i])) { $titlefilterbox .= $params['titles'][$i]; } else { $titlefilterbox .= $list['titre_liste']; } $outputfilter .= '<div class="panel-heading'; if (!$first) { $outputfilter .= ' collapsed'; } $outputfilter .= '" data-toggle="collapse" href="#collapse' . $GLOBALS['nbbazarliste'] . '_' . $idkey . '" >' . $titlefilterbox . '</div>' . "\n"; $outputfilter .= '<div id="collapse' . $GLOBALS['nbbazarliste'] . '_' . $idkey . '" class="panel-collapse'; if ($first) { $outputfilter .= ' in'; } $outputfilter .= ' collapse">' . "\n"; $outputfilter .= '<div class="panel-body">' . "\n"; foreach ($list['label'] as $listkey => $label) { if (isset($facettevalue[$id][$listkey]) && !empty($facettevalue[$id][$listkey])) { $outputfilter .= '<div class="checkbox"> <input class="filter-checkbox" type="checkbox" id="' . $idkey . $listkey . '" name="' . $idkey . '" value="' . htmlspecialchars($listkey) . '"> <label for="' . $idkey . $listkey . '"> ' . $label . ' (<span class="nb">' . $facettevalue[$id][$listkey] . '</span>) </label></div>' . "\n"; } } $outputfilter .= '</div></div></div><!-- /.filter-box -->' . "\n"; ++$i; $first = false; } $outputfilter .= '</div> <!-- /.filters -->' . "\n" . '</div> <!-- /.col-xs-3 -->' . "\n"; // disposition des filtres (gauche ou droite) if ($params['filterposition'] == 'right') { $outputfacette .= $outputresult . $outputfilter; } else { $outputfacette .= $outputfilter . $outputresult; } $output = $outputfacette . '</div><!-- /.facette-container.row -->'; } return $output; }
$GLOBALS['_BAZAR_']['typeannonce'] = $tab_nature['bn_label_nature']; $GLOBALS['_BAZAR_']['condition'] = $tab_nature['bn_condition']; $GLOBALS['_BAZAR_']['template'] = $tab_nature['bn_template']; $GLOBALS['_BAZAR_']['class'] = $tab_nature['bn_label_class']; $GLOBALS['_BAZAR_']['categorie_nature'] = $tab_nature['bn_type_fiche']; } //si un identifiant fiche est renseigné, on récupère toutes les valeurs associées if (isset($_REQUEST['id_fiche'])) { $GLOBALS['_BAZAR_']['id_fiche'] = $_REQUEST['id_fiche']; //on récupère les valeurs de la fiche $GLOBALS['_BAZAR_']['valeurs_fiche'] = baz_valeurs_fiche($GLOBALS['_BAZAR_']['id_fiche']); if ($GLOBALS['_BAZAR_']['valeurs_fiche']) { $GLOBALS['_BAZAR_']['id_typeannonce'] = $GLOBALS['_BAZAR_']['valeurs_fiche']['id_typeannonce']; $_REQUEST['id_typeannonce'] = $GLOBALS['_BAZAR_']['id_typeannonce']; //on récupère aussi les valeurs générales du type de fiche aussi $tab_nature = baz_valeurs_formulaire($GLOBALS['_BAZAR_']['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_']['class'] = $tab_nature['bn_label_class']; $GLOBALS['_BAZAR_']['categorie_nature'] = $tab_nature['bn_type_fiche']; } else { $GLOBALS['_BAZAR_']['id_fiche'] = NULL; exit('<div class="error_box">la fiche que vous recherchez n\'existe plus (sans doute a t\'elle été supprimée entre temps)...</div>'); } } //utilisateur $GLOBALS['_BAZAR_']['nomwiki'] = $GLOBALS['wiki']->GetUser(); //variable d'affichage du bazar $output = ''; // +------------------------------------------------------------------------------------------------------+
/** listefiche() - Ajoute un element de type liste deroulante correspondant a un autre type de fiche au formulaire * * @param mixed L'objet QuickForm du formulaire * @param mixed Le tableau des valeurs des differentes option pour l'element liste * @param string Type d'action pour le formulaire : saisie, modification, vue,... saisie par defaut * @return void */ function listefiche(&$formtemplate, $tableau_template, $mode, $valeurs_fiche) { if ($mode == 'saisie') { $bulledaide = ''; if (isset($tableau_template[10]) && $tableau_template[10] != '') { $bulledaide = ' <img class="tooltip_aide" title="' . htmlentities($tableau_template[10]) . '" src="tools/bazar/presentation/images/aide.png" width="16" height="16" alt="image aide" />'; } $val_type = baz_valeurs_formulaire($tableau_template[1]); $tab_result = baz_requete_recherche_fiches('', 'alphabetique', $tableau_template[1], $val_type["bn_type_fiche"]); $select[0] = BAZ_CHOISIR; foreach ($tab_result as $fiche) { $valeurs_fiche = json_decode($fiche[0], true); $valeurs_fiche = array_map('utf8_decode', $valeurs_fiche); $select[$valeurs_fiche['id_fiche']] = $valeurs_fiche['bf_titre']; } $option = array('id' => $tableau_template[0] . $tableau_template[1] . $tableau_template[6]); if (isset($valeurs_fiche[$tableau_template[0] . $tableau_template[1] . $tableau_template[6]]) && $valeurs_fiche[$tableau_template[0] . $tableau_template[1] . $tableau_template[6]] != '') { $def = $valeurs_fiche[$tableau_template[0] . $tableau_template[1] . $tableau_template[6]]; } else { $def = $tableau_template[5]; } require_once 'HTML/QuickForm/select.php'; $select = new HTML_QuickForm_select($tableau_template[0] . $tableau_template[1] . $tableau_template[6], $tableau_template[2] . $bulledaide, $select, $option); if ($tableau_template[4] != '') { $select->setSize($tableau_template[4]); } $select->setMultiple(0); $select->setValue($def); $formtemplate->addElement($select); if (isset($tableau_template[8]) && $tableau_template[8] == 1 && $resultat->numRows() > 0) { $formtemplate->addRule($tableau_template[0] . $tableau_template[1] . $tableau_template[6], $tableau_template[2] . ' obligatoire', 'required', '', 'client'); } } elseif ($mode == 'requete') { if (isset($valeurs_fiche[$tableau_template[0] . $tableau_template[1] . $tableau_template[6]]) && $valeurs_fiche[$tableau_template[0] . $tableau_template[1] . $tableau_template[6]] != 0) { return array($tableau_template[0] . $tableau_template[1] . $tableau_template[6] => $valeurs_fiche[$tableau_template[0] . $tableau_template[1] . $tableau_template[6]]); } } elseif ($mode == 'formulaire_recherche') { if ($tableau_template[9] == 1) { $tab_result = baz_requete_recherche_fiches('', $tri = 'alphabetique', $tableau_template[1], ''); $select[0] = BAZ_INDIFFERENT; foreach ($tab_result as $fiche) { $valeurs_fiche = json_decode($fiche[0], true); $valeurs_fiche = array_map('utf8_decode', $valeurs_fiche); $select[$valeurs_fiche['id_fiche']] = $valeurs_fiche['bf_titre']; } $option = array('id' => $tableau_template[0] . $tableau_template[1] . $tableau_template[6]); require_once 'HTML/QuickForm/select.php'; $select = new HTML_QuickForm_select($tableau_template[0] . $tableau_template[1] . $tableau_template[6], $tableau_template[2], $select, $option); if ($tableau_template[4] != '') { $select->setSize($tableau_template[4]); } $select->setMultiple(0); $formtemplate->addElement($select); } } elseif ($mode == 'html') { $html = ''; if (isset($valeurs_fiche[$tableau_template[0] . $tableau_template[1] . $tableau_template[6]]) && $valeurs_fiche[$tableau_template[0] . $tableau_template[1] . $tableau_template[6]] != '') { if ($tableau_template[3] == 'fiche') { $html = baz_voir_fiche(0, $valeurs_fiche[$tableau_template[0] . $tableau_template[1] . $tableau_template[6]]); } else { $html = '<div class="BAZ_rubrique BAZ_rubrique_' . $GLOBALS['_BAZAR_']['class'] . '">' . "\n" . '<span class="BAZ_label ' . $tableau_template[2] . '_rubrique">' . $tableau_template[2] . ' :</span>' . "\n"; $html .= '<span class="BAZ_texte BAZ_texte_' . $GLOBALS['_BAZAR_']['class'] . ' ' . $tableau_template[2] . '_description">'; $url_voirfiche = clone $GLOBALS['_BAZAR_']['url']; $url_voirfiche->addQueryString(BAZ_VARIABLE_VOIR, BAZ_VOIR_CONSULTER); $url_voirfiche->addQueryString(BAZ_VARIABLE_ACTION, BAZ_VOIR_FICHE); $url_voirfiche->addQueryString('wiki', $_GET['wiki'] . '/iframe'); $url_voirfiche->addQueryString('id_fiche', $valeurs_fiche[$tableau_template[0] . $tableau_template[1] . $tableau_template[6]]); $html .= '<a href="' . str_replace('&', '&', $url_voirfiche->getUrl()) . '" class="voir_fiche ouvrir_overlay" title="Voir la fiche ' . $res[0] . '" rel="#overlay">' . $res[0] . '</a></span>' . "\n" . '</div>' . "\n"; } } return $html; } }
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // Vérification de sécurité if (!defined("WIKINI_VERSION")) { die("accès direct interdit"); } //dans le cas ou on vient de modifier dans le formulaire une fiche bazar, on enregistre les modifications if (isset($_POST['id_fiche']) && $this->HasAccess('write')) { $type = $this->GetTripleValue($this->GetPageTag(), 'http://outils-reseaux.org/_vocabulary/type', '', ''); if ($type == 'fiche_bazar') { $GLOBALS['_BAZAR_']['id_fiche'] = $_POST['id_fiche']; $tab_nature = baz_valeurs_formulaire($_POST['id_typeannonce']); $GLOBALS['_BAZAR_']['id_typeannonce'] = $tab_nature['bn_id_nature']; $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']; $GLOBALS['_BAZAR_']['appropriation'] = $tab_nature['bn_appropriation']; $GLOBALS['_BAZAR_']['class'] = $tab_nature['bn_label_class']; baz_formulaire(BAZ_ACTION_MODIFIER_V); $this->Redirect($this->Href()); } }
function checkBazarAcls($page, $tag) { global $wiki; // TODO : // loadpagebyid // bazarliste ... // champ mot de passe ? // if (checkBazarOwner($page, $tag)) { // Pas de controle si proprietaire return $page; } if ($page) { $valjson = $page["body"]; $valeur = json_decode($valjson, true); $valeur = array_map('utf8_decode', $valeur); if ($valeur) { $val_formulaire = baz_valeurs_formulaire($valeur['id_typeannonce']); $fieldname = array(); foreach ($val_formulaire['template'] as $line) { if (isset($line[11]) && $line[11] != '') { if ($wiki->CheckAcl($line[11]) == "%") { $line[11] = $wiki->GetUserName(); } if (!$wiki->CheckACL($line[11])) { // On memorise les champs non autorise $fieldname[] = $line[1]; } } } if (count($fieldname) > 0) { // foreach ($fieldname as $field) { $valeur[$field] = ""; // on vide le champ } $valeur = array_map("utf8_encode", $valeur); $page["body"] = json_encode($valeur); } } } return $page; }
//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', 1); // generation du formulaire $form = baz_afficher_formulaire_fiche('saisie', $formtemplate, $url, '', true); $form = preg_replace('~<div class="form-actions">.*</div>~Ui', "\n" . '<a href="#" class="btn btn-block btn-positive btn-save">' . _t('BAZ_SAVE') . '</a>', $form); $form = preg_replace('~<div id="map".*>~Ui', "\n" . '<div id="map">', $form); echo json_encode(array('html' => $form)); } } break; case "forms": // les formulaires bazar $formval = baz_valeurs_formulaire($form); // si un seul formulaire, on cree un tableau à une entrée if (!empty($form)) { $formval = array($formval['bn_id_nature'] => $formval); } foreach ($formval as $idform => $form) { $i = 0; $prepared = array(); $form['template'] = _convert($form['template'], 'ISO-8859-15'); foreach ($form['template'] as $formelem) { if (in_array($formelem[0], array('radio', 'liste', 'checkbox', 'listefiche', 'checkboxfiche'))) { //identifiant dans la base $prepared[$i]['id'] = $formelem[0] . $formelem[1] . $formelem[6]; // type de champ if (in_array($formelem[0], array('listefiche', 'liste'))) { $prepared[$i]['type'] = 'select';