From 1b391b3750fd4c1fd5062def69933d8fede81629 Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Mon, 7 Aug 2006 12:47:13 +0000 Subject: [PATCH] =?UTF-8?q?Eclatement=20d'ajax=5Fpage,=20dont=20le=20taux?= =?UTF-8?q?=20de=20croissance=20n'=C3=A9tait=20plus=20tenable.=20C'est=20l?= =?UTF-8?q?a=20question=20de=20l'interface=20de=20programmation=20d'Ajax?= =?UTF-8?q?=20qui=20est=20pos=C3=A9e.=20En=20attendant=20de=20la=20stabili?= =?UTF-8?q?ser,=20le=20fichier=20index.php=20prend=20=C3=A0=20sa=20charge?= =?UTF-8?q?=20l'aiguillage=20et=20le=20traitement=20op=C3=A9r=C3=A9s=20aup?= =?UTF-8?q?aravant=20par=20ajax=5Fpage=20qui=20a=20=C3=A9t=C3=A9=20retir?= =?UTF-8?q?=C3=A9=20du=20d=C3=A9pot,=20son=20contenu=20=C3=A9tant=20r?= =?UTF-8?q?=C3=A9parti=20en=20autant=20de=20fichiers=20inc/ajax=5FF.php=20?= =?UTF-8?q?qu'il=20contenait=20de=20fonctions=20F.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Le mode d'appel est provisoirement encore "ecrire/?exec=ajax_page&fonction=F" en attendant mieux. --- .gitattributes | 13 +- ecrire/exec/ajax_page.php | 341 ------------------ ecrire/exec/articles.php | 9 +- ecrire/img_pack/layer.js | 2 +- ecrire/img_pack/presentation.js | 2 +- ecrire/inc/ajax_documenter.php | 26 ++ ecrire/inc/ajax_informer.php | 77 ++++ ecrire/inc/ajax_memoriser.php | 66 ++++ ecrire/inc/ajax_naviguer.php | 27 ++ ecrire/inc/ajax_petitionner.php | 26 ++ ecrire/inc/ajax_plonger.php | 30 ++ ecrire/inc/ajax_poster.php | 25 ++ ecrire/inc/ajax_rechercher.php | 122 +++++++ ecrire/inc/ajax_selectionner.php | 28 ++ ecrire/inc/ajax_tourner.php | 27 ++ .../{virtualite.php => ajax_virtualiser.php} | 11 + ecrire/inc/chercher_rubrique.php | 2 +- ecrire/inc/mini_nav.php | 7 +- ecrire/inc/minipres.php | 11 +- ecrire/inc/mots.php | 2 +- ecrire/inc/presentation.php | 10 +- ecrire/index.php | 24 +- 22 files changed, 522 insertions(+), 366 deletions(-) delete mode 100644 ecrire/exec/ajax_page.php create mode 100644 ecrire/inc/ajax_documenter.php create mode 100644 ecrire/inc/ajax_informer.php create mode 100644 ecrire/inc/ajax_memoriser.php create mode 100644 ecrire/inc/ajax_naviguer.php create mode 100644 ecrire/inc/ajax_petitionner.php create mode 100644 ecrire/inc/ajax_plonger.php create mode 100644 ecrire/inc/ajax_poster.php create mode 100644 ecrire/inc/ajax_rechercher.php create mode 100644 ecrire/inc/ajax_selectionner.php create mode 100644 ecrire/inc/ajax_tourner.php rename ecrire/inc/{virtualite.php => ajax_virtualiser.php} (88%) diff --git a/.gitattributes b/.gitattributes index d82d005b37..b3a05727bb 100644 --- a/.gitattributes +++ b/.gitattributes @@ -53,7 +53,6 @@ ecrire/exec/admin_repair.php -text ecrire/exec/admin_tech.php -text ecrire/exec/admin_vider.php -text ecrire/exec/aide_index.php -text -ecrire/exec/ajax_page.php -text ecrire/exec/articles.php -text ecrire/exec/articles_edit.php -text ecrire/exec/articles_forum.php -text @@ -377,6 +376,17 @@ ecrire/img_pack/xml.gif -text ecrire/inc/actions.php -text ecrire/inc/agenda.php -text ecrire/inc/ajax.php -text +ecrire/inc/ajax_documenter.php -text +ecrire/inc/ajax_informer.php -text +ecrire/inc/ajax_memoriser.php -text +ecrire/inc/ajax_naviguer.php -text +ecrire/inc/ajax_petitionner.php -text +ecrire/inc/ajax_plonger.php -text +ecrire/inc/ajax_poster.php -text +ecrire/inc/ajax_rechercher.php -text +ecrire/inc/ajax_selectionner.php -text +ecrire/inc/ajax_tourner.php -text +ecrire/inc/ajax_virtualiser.php -text ecrire/inc/article_select.php -text ecrire/inc/auteur_voir.php -text ecrire/inc/boutons.php -text @@ -416,7 +426,6 @@ ecrire/inc/sites_voir.php -text ecrire/inc/suivi_versions.php -text ecrire/inc/syndic.php -text ecrire/inc/utils.php -text -ecrire/inc/virtualite.php -text ecrire/lang/ecrire_br.php -text ecrire/lang/ecrire_bs.php -text ecrire/lang/ecrire_cs.php -text diff --git a/ecrire/exec/ajax_page.php b/ecrire/exec/ajax_page.php deleted file mode 100644 index 5f670fdc64..0000000000 --- a/ecrire/exec/ajax_page.php +++ /dev/null @@ -1,341 +0,0 @@ -<?php - -/***************************************************************************\ - * SPIP, Systeme de publication pour l'internet * - * * - * Copyright (c) 2001-2006 * - * 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; - -# gerer un charset minimaliste en convertissant tout en unicode &#xxx; - -function exec_ajax_page_dist() -{ - global $flag_ob, $fonction; - - $var_nom = 'ajax_page_' . $fonction; - if (!function_exists($var_nom)) - spip_log("fonction $var_nom indisponible"); - else { - if ($flag_ob) { - ob_start(); - $charset = $GLOBALS['meta']["charset"]; - } -// Curieux: le content-type bloque MSIE! -// @header('Content-type: text/html; charset=$charset'); - echo "<"."?xml version='1.0' encoding='$charset'?".">\n"; - $var_nom(); - - if ($flag_ob) { - $a = ob_get_contents(); - ob_end_clean(); - include_spip('inc/charsets'); - echo charset2unicode($a, 'AUTO', true); - } - } -} - -# Une fonction stockee en base de donnees ? - -function ajax_page_sql() -{ - global $connect_id_auteur; - global $id, $exclus, $col, $id_ajax_fonc, $type, $rac; - $id = intval($id); - $exclus = intval($exclus); - $col = intval($col); - - $res = spip_query("SELECT variables FROM spip_ajax_fonc WHERE id_ajax_fonc =" . spip_abstract_quote($id_ajax_fonc) . " AND id_auteur=$connect_id_auteur"); - if ($row = spip_fetch_array($res)) { - - $variables = unserialize($row["variables"]); - while (list($i, $k) = each($variables)) { - $$i = $k; - - } - include_spip('inc/presentation'); - // Appliquer la fonction - if ($fonction == "afficher_articles") { - afficher_articles ($titre_table, $requete, - $afficher_visites, $afficher_auteurs); - } - - elseif ($fonction == "afficher_articles_trad") { - afficher_articles_trad ($titre_table, $requete, - $afficher_visites, $afficher_auteurs); - } - elseif ($fonction == "afficher_groupe_mots") { - include_spip('inc/texte'); - include_spip('inc/mots'); - echo afficher_groupe_mots ($id_groupe); - } - } -} - -function ajax_page_test() -{ - # tester si ca fonctionne pour ce brouteur - // (si on arrive la c'est que c'est bon, donc poser le cookie) - spip_setcookie('spip_accepte_ajax', 1); - -} - -# Un moteur de recherche ? -function ajax_page_recherche() -{ - global $id, $exclus, $type, $rac; - $id = intval($id); - $exclus = intval($exclus); - - include_spip('inc/texte'); - $where = split("[[:space:]]+", $type); - if ($where) { - foreach ($where as $k => $v) - $where[$k] = "'%" . substr(str_replace("%","\%", spip_abstract_quote($v)),1,-1) . "%'"; - $where_titre = ("(titre LIKE " . join(" AND titre LIKE ", $where) . ")"); - $where_desc = ("(descriptif LIKE " . join(" AND descriptif LIKE ", $where) . ")"); - $where_id = ("(id_rubrique = " . join(" AND id_rubrique = ", $where) . ")"); - } else { - $where_titre = " 1=2"; - $where_desc = " 1=2"; - $where_id = " 1=2"; - } - - if ($exclus) { - include_spip('inc/rubriques'); - $where_exclus = " AND id_rubrique NOT IN (".calcul_branche($exclus).")"; - } else - $where_exclus = ''; - - $res = spip_query("SELECT id_rubrique, id_parent, titre FROM spip_rubriques WHERE $where_id$where_exclus"); - while ($row = spip_fetch_array($res)) { - $id_rubrique = $row["id_rubrique"]; - $rub[$id_rubrique]["titre"] = typo ($row["titre"]); - $rub[$id_rubrique]["id_parent"] = $row["id_parent"]; - $points[$id_rubrique] = $points[$id_rubrique] + 3; - } - $res = spip_query("SELECT id_rubrique, id_parent, titre FROM spip_rubriques WHERE $where_titre$where_exclus"); - while ($row = spip_fetch_array($res)) { - $id_rubrique = $row["id_rubrique"]; - $rub[$id_rubrique]["titre"] = typo ($row["titre"]); - $rub[$id_rubrique]["id_parent"] = $row["id_parent"]; - $points[$id_rubrique] = $points[$id_rubrique] + 2; - } - $res = spip_query("SELECT id_rubrique, id_parent, titre FROM spip_rubriques WHERE $where_desc$where_exclus"); - while ($row = spip_fetch_array($res)) { - $id_rubrique = $row["id_rubrique"]; - $rub[$id_rubrique]["titre"] = typo ($row["titre"]); - $rub[$id_rubrique]["id_parent"] = $row["id_parent"]; - $points[$id_rubrique] = $points[$id_rubrique] + 1; - } - - if ($points) { - arsort($points); - while (list($id,$pts) = each($points)) { - - $id_rubrique = $id; - $titre = $rub[$id]["titre"]; - $id_parent = $rub[$id]["id_parent"]; - - // Eviter une premiere fois d'afficher la rubrique exclue - if ($id_parent == 0) $style = "style='background-image: url(" . _DIR_IMG_PACK . "secteur-12.gif)'"; - else $style = ""; - $onClick = " aff_selection('rubrique','" . - htmlentities($rac) . - "','$id_rubrique');"; - - $ondbClick = "findObj('id_parent').value=$id_rubrique;"; - # et l'affichage de son titre dans le bandeau - $ondbClick .= "findObj('titreparent').value='" - . strtr( - str_replace("'", "’", - str_replace('"', """, - textebrut($titre))), - "\n\r", " ")."';"; - $ondbClick .= "findObj('selection_rubrique').style.display='none';"; - - - $ret .= "<div class='pashighlight' onClick=\"changerhighlight(this); $onClick\" ondblclick=\"$ondbClick$onClick\"><div class='arial11 petite-rubrique'$style>"; - $ret .= " $titre"; - $ret .= "</div></div>"; - } - - } - if ($ret) - echo $ret; - else - echo "<div style='padding: 5px; color: red;'><b>" - .htmlentities($type) - ."</b> : "._T('avis_aucun_resultat')."</div>"; - -} - -# afficher un mini-navigateur de rubriques - -function ajax_page_aff_rubrique() -{ - global $id, $exclus, $rac; - $id = intval($id); - $exclus = intval($exclus); - - include_spip('inc/texte'); - include_spip('inc/mini_nav'); - echo mini_nav ($id, "choix_parent", "this.form.id_rubrique.value=::sel::;this.form.titreparent.value='::sel2::';findObj('selection_rubrique').style.display='none';", $exclus, $rac); - -} - -# afficher les sous-rubriques d'une rubrique (composant du mini-navigateur) - -function ajax_page_aff_rub() -{ - global $id, $exclus, $col, $rac; - $id = intval($id); - $exclus = intval($exclus); - $col = intval($col); - - include_spip('inc/texte'); - include_spip('inc/mini_nav'); - echo mini_afficher_rubrique ($id, - htmlentities($rac), - "", $col, $exclus); -} - -# petit moteur de recherche sur les rubriques - -function ajax_page_aff_nav_recherche() -{ - global $id; - $id = intval($id); - - include_spip('inc/texte'); - include_spip('inc/mini_nav'); - echo mini_nav ($id, "aff_nav_recherche", - "document.location.href='" . generer_url_ecrire('naviguer', "id_rubrique=::sel::") . - "';", 0, true); -} - -# Affiche les infos d'une rubrique selectionnee dans le mini navigateur - -function ajax_page_aff_info() -{ - global $couleur_foncee,$spip_display,$spip_lang_right ; - global $id, $exclus, $col, $type, $rac; - $id = intval($id); - $exclus = intval($exclus); - $col = intval($col); - - include_spip('inc/texte'); - if ($type == "rubrique") { - $res = spip_query("SELECT titre, descriptif FROM spip_rubriques WHERE id_rubrique = $id"); - if ($row = spip_fetch_array($res)) { - $titre = typo($row["titre"]); - $descriptif = propre($row["descriptif"]); - } else { - $titre = _T('info_racine_site'); - } - } else - $titre = ''; - - $rac = htmlentities($rac); - echo "<div style='display: none;'>"; - echo "<input type='text' id='".$rac."_sel' value='$id' />"; - echo "<input type='text' id='".$rac."_sel2' value=\"".entites_html($titre)."\" />"; - echo "</div>"; - - echo "<div class='arial2' style='padding: 5px; background-color: white; border: 1px solid $couleur_foncee; border-top: 0px;'>"; - if ($type == "rubrique" AND $spip_display != 1 AND $spip_display!=4 AND $GLOBALS['meta']['image_process'] != "non") { - $logo_f = charger_fonction('chercher_logo', 'inc'); - if ($res = $logo_f($id, 'id_rubrique', 'on')) - if ($res = decrire_logo("id_rubrique", 'on', $id, 100, 48, $res)) - echo "<div style='float: $spip_lang_right; margin-$spip_lang_right: -5px; margin-top: -5px;'>$res</div>"; - } - - echo "<div><p><b>$titre</b></p></div>"; - if (strlen($descriptif) > 0) echo "<div>$descriptif</div>"; - - echo "<div style='text-align: $spip_lang_right;'>"; - - # ce lien provoque la selection (directe) de la rubrique cliquee - $onClick = "findObj('id_parent').value=$id;"; - # et l'affichage de son titre dans le bandeau - $onClick .= "findObj('titreparent').value='" - . strtr( - str_replace("'", "’", - str_replace('"', """, - textebrut($titre))), - "\n\r", " ")."';"; - $onClick .= "findObj('selection_rubrique').style.display='none';"; - $onClick .= "return false;"; - - - echo "<input type='submit' value='"._T('bouton_choisir')."' onClick=\"$onClick\" class=\"fondo\" />"; - echo "</div>"; - - - echo "</div>"; -} - -function ajax_page_documenter() -{ - global $id_document, $script, $id, $type, $ancre; - $id = intval($id); - $id_document = intval($id_document); - - include_spip('inc/documents'); - include_spip('inc/presentation'); - - echo formulaire_documenter($id_document, array(), $script, $type, $id, $ancre); -} - -function ajax_page_tourner() -{ - global $id_document, $script, $id, $type, $ancre; - $id = intval($id); - $id_document = intval($id_document); - - include_spip('inc/documents'); - include_spip('inc/presentation'); - - echo formulaire_tourner($id_document, array(), $script, 'ajax', $type); -} - -function ajax_page_petitionner() -{ - global $id_article, $script; - $id_article = intval($id_article); - - include_spip('inc/petition'); - include_spip('inc/presentation'); - include_spip('inc/actions'); - - echo formulaire_petitionner($id_article, $script, "&id_article=$id_article", true); -} - - -function ajax_page_poster() -{ - global $id_article, $script; - $id_article = intval($id_article); - - include_spip('inc/forum'); - include_spip('inc/actions'); - - echo formulaire_poster($id_article, $script, "&id_article=$id_article", true); -} - -function ajax_page_virtualiser() -{ - global $id_article, $script; - $id_article = intval($id_article); - - include_spip('inc/virtualite'); - include_spip('inc/actions'); - - echo formulaire_virtualiser($id_article, 'ajax', $script, "&id_article=$id_article"); -} -?> diff --git a/ecrire/exec/articles.php b/ecrire/exec/articles.php index 26f673db14..010f151116 100644 --- a/ecrire/exec/articles.php +++ b/ecrire/exec/articles.php @@ -66,8 +66,11 @@ function exec_articles_dist() $flag_editable = ($flag_modifiable OR ($flag_auteur AND ($statut_article == 'prepa' OR $statut_article == 'prop' OR $statut_article == 'poubelle'))); if ($flag_editable) { + if (isset($_POST['titre'])) { // id_article_bloque, globale dans inc/presentation - $id_article_bloque = articles_set($id_article, $id_rubrique, $flag_modifiable); + $id_article_bloque = $id_article; + articles_set($id_article, $id_rubrique, $flag_modifiable); + } // renvoyer vers la page de l'article if ($new == 'oui' @@ -1316,14 +1319,10 @@ function insert_article($id_parent) function articles_set($id_article, $id_rubrique, $statut) { - if (!isset($_POST['titre'])) return 0; - if (!strlen($titre_article=corriger_caracteres($_POST['titre']))) $titre_article = _T('info_sans_titre'); revisions_articles ($id_article, $id_rubrique, $statut, $titre_article); - - return $id_article; } ?> diff --git a/ecrire/img_pack/layer.js b/ecrire/img_pack/layer.js index 079bd0415a..4c3f5c8fee 100644 --- a/ecrire/img_pack/layer.js +++ b/ecrire/img_pack/layer.js @@ -134,7 +134,7 @@ function aff_selection (type, rac, id) { findObj_forcer(rac+"_selection").style.display = "none"; - charger_id_url("./?exec=ajax_page&fonction=aff_info&type="+type+"&id="+id+"&rac="+rac, rac+"_selection"); + charger_id_url("./?exec=ajax_page&fonction=informer&type="+type+"&id="+id+"&rac="+rac, rac+"_selection"); } // diff --git a/ecrire/img_pack/presentation.js b/ecrire/img_pack/presentation.js index 9c60132bc1..244fa22822 100644 --- a/ecrire/img_pack/presentation.js +++ b/ecrire/img_pack/presentation.js @@ -228,7 +228,7 @@ function lancer_recherche(champ, cible) { function lancer_recherche_rub(champ, rac, exclus) { valeur = findObj(champ).value; if (valeur.length > 0) { - charger_id_url('./?exec=ajax_page&fonction=recherche&type='+valeur+'&exclus='+exclus+'&rac='+rac, rac+'_col_1'); + charger_id_url('./?exec=ajax_page&fonction=rechercher&type='+valeur+'&exclus='+exclus+'&rac='+rac, rac+'_col_1'); } } diff --git a/ecrire/inc/ajax_documenter.php b/ecrire/inc/ajax_documenter.php new file mode 100644 index 0000000000..188cee52ad --- /dev/null +++ b/ecrire/inc/ajax_documenter.php @@ -0,0 +1,26 @@ +<?php + +/***************************************************************************\ + * SPIP, Systeme de publication pour l'internet * + * * + * Copyright (c) 2001-2006 * + * 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 inc_ajax_documenter_dist() +{ + global $id_document, $script, $id, $type, $ancre; + $id = intval($id); + $id_document = intval($id_document); + + include_spip('inc/documents'); + include_spip('inc/presentation'); + + echo formulaire_documenter($id_document, array(), $script, $type, $id, $ancre); +} +?> diff --git a/ecrire/inc/ajax_informer.php b/ecrire/inc/ajax_informer.php new file mode 100644 index 0000000000..2e01340fee --- /dev/null +++ b/ecrire/inc/ajax_informer.php @@ -0,0 +1,77 @@ +<?php + +/***************************************************************************\ + * SPIP, Systeme de publication pour l'internet * + * * + * Copyright (c) 2001-2006 * + * 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; + +# Affiche les infos d'une rubrique selectionnee dans le mini navigateur + +function inc_ajax_informer_dist() +{ + global $couleur_foncee,$spip_display,$spip_lang_right ; + global $id, $exclus, $col, $type, $rac; + $id = intval($id); + $exclus = intval($exclus); + $col = intval($col); + $corps =''; + + include_spip('inc/texte'); + if ($type == "rubrique") { + $res = spip_query("SELECT titre, descriptif FROM spip_rubriques WHERE id_rubrique = $id"); + if ($row = spip_fetch_array($res)) { + $titre = typo($row["titre"]); + $descriptif = propre($row["descriptif"]); + } else { + $titre = _T('info_racine_site'); + } + } else + $titre = ''; + + $rac = htmlentities($rac); + $corps .= "<div style='display: none;'>"; + $corps .= "<input type='text' id='".$rac."_sel' value='$id' />"; + $corps .= "<input type='text' id='".$rac."_sel2' value=\"".entites_html($titre)."\" />"; + $corps .= "</div>"; + + $corps .= "<div class='arial2' style='padding: 5px; background-color: white; border: 1px solid $couleur_foncee; border-top: 0px;'>"; + if ($type == "rubrique" AND $spip_display != 1 AND $spip_display!=4 AND $GLOBALS['meta']['image_process'] != "non") { + $logo_f = charger_fonction('chercher_logo', 'inc'); + if ($res = $logo_f($id, 'id_rubrique', 'on')) + if ($res = decrire_logo("id_rubrique", 'on', $id, 100, 48, $res)) + $corps .= "<div style='float: $spip_lang_right; margin-$spip_lang_right: -5px; margin-top: -5px;'>$res</div>"; + } + + $corps .= "<div><p><b>$titre</b></p></div>"; + if (strlen($descriptif) > 0) $corps .= "<div>$descriptif</div>"; + + $corps .= "<div style='text-align: $spip_lang_right;'>"; + +# ce lien provoque la selection (directe) de la rubrique cliquee + $onClick = "findObj('id_parent').value=$id;"; +# et l'affichage de son titre dans le bandeau + $onClick .= "findObj('titreparent').value='" + . strtr( + str_replace("'", "’", + str_replace('"', """, + textebrut($titre))), + "\n\r", " ")."';"; + $onClick .= "findObj('selection_rubrique').style.display='none';"; + $onClick .= "return false;"; + + + $corps .= "<input type='submit' value='"._T('bouton_choisir')."' onClick=\"$onClick\" class=\"fondo\" />"; + $corps .= "</div>"; + $corps .= "</div>"; + + return $corps; +} + +?> diff --git a/ecrire/inc/ajax_memoriser.php b/ecrire/inc/ajax_memoriser.php new file mode 100644 index 0000000000..b5ec8d8844 --- /dev/null +++ b/ecrire/inc/ajax_memoriser.php @@ -0,0 +1,66 @@ +<?php + +/***************************************************************************\ + * SPIP, Systeme de publication pour l'internet * + * * + * Copyright (c) 2001-2006 * + * 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 inc_ajax_memoriser_dist() +{ + global $flag_ob; + + if ($flag_ob) ob_start(); + + ajax_page_sql(); + + if ($flag_ob) { + $a = ob_get_contents(); + ob_end_clean(); + return $a; + } +} + +# Une fonction stockee en base de donnees + +function ajax_page_sql() +{ + global $connect_id_auteur; + global $id, $exclus, $col, $id_ajax_fonc, $type, $rac; + $id = intval($id); + $exclus = intval($exclus); + $col = intval($col); + + $res = spip_query("SELECT variables FROM spip_ajax_fonc WHERE id_ajax_fonc =" . spip_abstract_quote($id_ajax_fonc) . " AND id_auteur=$connect_id_auteur"); + if ($row = spip_fetch_array($res)) { + + $variables = unserialize($row["variables"]); + while (list($i, $k) = each($variables)) { + $$i = $k; + + } + include_spip('inc/presentation'); + // Appliquer la fonction + if ($fonction == "afficher_articles") { + afficher_articles ($titre_table, $requete, + $afficher_visites, $afficher_auteurs); + } + + elseif ($fonction == "afficher_articles_trad") { + afficher_articles_trad ($titre_table, $requete, + $afficher_visites, $afficher_auteurs); + } + elseif ($fonction == "afficher_groupe_mots") { + include_spip('inc/texte'); + include_spip('inc/mots'); + echo afficher_groupe_mots ($id_groupe); + } + } +} +?> diff --git a/ecrire/inc/ajax_naviguer.php b/ecrire/inc/ajax_naviguer.php new file mode 100644 index 0000000000..4768a4aa97 --- /dev/null +++ b/ecrire/inc/ajax_naviguer.php @@ -0,0 +1,27 @@ +<?php + +/***************************************************************************\ + * SPIP, Systeme de publication pour l'internet * + * * + * Copyright (c) 2001-2006 * + * 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; + +# petit moteur de recherche sur les rubriques + +function inc_ajax_naviguer_dist() +{ + global $id; + $id = intval($id); + + include_spip('inc/texte'); + include_spip('inc/mini_nav'); + return mini_nav ($id, "aff_nav_recherche", + "document.location.href='" . generer_url_ecrire('naviguer', "id_rubrique=::sel::") . + "';", 0, true); +} diff --git a/ecrire/inc/ajax_petitionner.php b/ecrire/inc/ajax_petitionner.php new file mode 100644 index 0000000000..27cea35dda --- /dev/null +++ b/ecrire/inc/ajax_petitionner.php @@ -0,0 +1,26 @@ +<?php + +/***************************************************************************\ + * SPIP, Systeme de publication pour l'internet * + * * + * Copyright (c) 2001-2006 * + * 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 inc_ajax_petitionner_dist() +{ + global $id_article, $script; + $id_article = intval($id_article); + + include_spip('inc/petition'); + include_spip('inc/presentation'); + include_spip('inc/actions'); + + echo formulaire_petitionner($id_article, $script, "&id_article=$id_article", true); +} +?> diff --git a/ecrire/inc/ajax_plonger.php b/ecrire/inc/ajax_plonger.php new file mode 100644 index 0000000000..6b5163c556 --- /dev/null +++ b/ecrire/inc/ajax_plonger.php @@ -0,0 +1,30 @@ +<?php + +/***************************************************************************\ + * SPIP, Systeme de publication pour l'internet * + * * + * Copyright (c) 2001-2006 * + * 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; + + +# afficher les sous-rubriques d'une rubrique (composant du mini-navigateur) + +function inc_ajax_plonger_dist() +{ + global $id, $exclus, $col, $rac; + $id = intval($id); + $exclus = intval($exclus); + $col = intval($col); + + include_spip('inc/texte'); + include_spip('inc/mini_nav'); + return mini_afficher_rubrique ($id, htmlentities($rac), "", $col, $exclus); +} + +?> diff --git a/ecrire/inc/ajax_poster.php b/ecrire/inc/ajax_poster.php new file mode 100644 index 0000000000..aeda7deec0 --- /dev/null +++ b/ecrire/inc/ajax_poster.php @@ -0,0 +1,25 @@ +<?php + +/***************************************************************************\ + * SPIP, Systeme de publication pour l'internet * + * * + * Copyright (c) 2001-2006 * + * 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 inc_ajax_poster_dist() +{ + global $id_article, $script; + $id_article = intval($id_article); + + include_spip('inc/forum'); + include_spip('inc/actions'); + + echo formulaire_poster($id_article, $script, "&id_article=$id_article", true); +} +?> diff --git a/ecrire/inc/ajax_rechercher.php b/ecrire/inc/ajax_rechercher.php new file mode 100644 index 0000000000..83653e546c --- /dev/null +++ b/ecrire/inc/ajax_rechercher.php @@ -0,0 +1,122 @@ +<?php + +/***************************************************************************\ + * SPIP, Systeme de publication pour l'internet * + * * + * Copyright (c) 2001-2006 * + * 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; + +# gerer un charset minimaliste en convertissant tout en unicode &#xxx; + +function inc_ajax_rechercher_dist() +{ + global $flag_ob; + + if ($flag_ob) { ob_start(); } + ajax_page_recherche(); + + if ($flag_ob) { + $a = ob_get_contents(); + ob_end_clean(); + return $a; + } +} + +# Un moteur de recherche ? +function ajax_page_recherche() +{ + global $id, $exclus, $type, $rac; + $id = intval($id); + $exclus = intval($exclus); + + include_spip('inc/texte'); + $where = split("[[:space:]]+", $type); + if ($where) { + foreach ($where as $k => $v) + $where[$k] = "'%" . substr(str_replace("%","\%", spip_abstract_quote($v)),1,-1) . "%'"; + $where_titre = ("(titre LIKE " . join(" AND titre LIKE ", $where) . ")"); + $where_desc = ("(descriptif LIKE " . join(" AND descriptif LIKE ", $where) . ")"); + $where_id = ("(id_rubrique = " . join(" AND id_rubrique = ", $where) . ")"); + } else { + $where_titre = " 1=2"; + $where_desc = " 1=2"; + $where_id = " 1=2"; + } + + if ($exclus) { + include_spip('inc/rubriques'); + $where_exclus = " AND id_rubrique NOT IN (".calcul_branche($exclus).")"; + } else + $where_exclus = ''; + + $res = spip_query("SELECT id_rubrique, id_parent, titre FROM spip_rubriques WHERE $where_id$where_exclus"); + while ($row = spip_fetch_array($res)) { + $id_rubrique = $row["id_rubrique"]; + $rub[$id_rubrique]["titre"] = typo ($row["titre"]); + $rub[$id_rubrique]["id_parent"] = $row["id_parent"]; + $points[$id_rubrique] = $points[$id_rubrique] + 3; + } + $res = spip_query("SELECT id_rubrique, id_parent, titre FROM spip_rubriques WHERE $where_titre$where_exclus"); + while ($row = spip_fetch_array($res)) { + $id_rubrique = $row["id_rubrique"]; + $rub[$id_rubrique]["titre"] = typo ($row["titre"]); + $rub[$id_rubrique]["id_parent"] = $row["id_parent"]; + $points[$id_rubrique] = $points[$id_rubrique] + 2; + } + $res = spip_query("SELECT id_rubrique, id_parent, titre FROM spip_rubriques WHERE $where_desc$where_exclus"); + while ($row = spip_fetch_array($res)) { + $id_rubrique = $row["id_rubrique"]; + $rub[$id_rubrique]["titre"] = typo ($row["titre"]); + $rub[$id_rubrique]["id_parent"] = $row["id_parent"]; + $points[$id_rubrique] = $points[$id_rubrique] + 1; + } + + if ($points) { + arsort($points); + while (list($id,$pts) = each($points)) { + + $id_rubrique = $id; + $titre = $rub[$id]["titre"]; + $id_parent = $rub[$id]["id_parent"]; + + // Eviter une premiere fois d'afficher la rubrique exclue + if ($id_parent == 0) $style = "style='background-image: url(" . _DIR_IMG_PACK . "secteur-12.gif)'"; + else $style = ""; + $onClick = " aff_selection('rubrique','" . + htmlentities($rac) . + "','$id_rubrique');"; + + $ondbClick = "findObj('id_parent').value=$id_rubrique;"; + # et l'affichage de son titre dans le bandeau + $ondbClick .= "findObj('titreparent').value='" + . strtr( + str_replace("'", "’", + str_replace('"', """, + textebrut($titre))), + "\n\r", " ")."';"; + $ondbClick .= "findObj('selection_rubrique').style.display='none';"; + + + $ret .= "<div class='pashighlight' onClick=\"changerhighlight(this); $onClick\" ondblclick=\"$ondbClick$onClick\"><div class='arial11 petite-rubrique'$style>"; + $ret .= " $titre"; + $ret .= "</div></div>"; + } + + } + if ($ret) + echo $ret; + else + echo "<div style='padding: 5px; color: red;'><b>" + .htmlentities($type) + ."</b> : "._T('avis_aucun_resultat')."</div>"; + +} + + +?> diff --git a/ecrire/inc/ajax_selectionner.php b/ecrire/inc/ajax_selectionner.php new file mode 100644 index 0000000000..f5ac54b2cc --- /dev/null +++ b/ecrire/inc/ajax_selectionner.php @@ -0,0 +1,28 @@ +<?php + +/***************************************************************************\ + * SPIP, Systeme de publication pour l'internet * + * * + * Copyright (c) 2001-2006 * + * 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; + +# afficher un mini-navigateur de rubriques + +function inc_ajax_selectionner_dist() +{ + global $id, $exclus, $rac; + $id = intval($id); + $exclus = intval($exclus); + + include_spip('inc/texte'); + include_spip('inc/mini_nav'); + return mini_nav ($id, "choix_parent", "this.form.id_rubrique.value=::sel::;this.form.titreparent.value='::sel2::';findObj('selection_rubrique').style.display='none';", $exclus, $rac); + +} +?> diff --git a/ecrire/inc/ajax_tourner.php b/ecrire/inc/ajax_tourner.php new file mode 100644 index 0000000000..7b2fe3e0a6 --- /dev/null +++ b/ecrire/inc/ajax_tourner.php @@ -0,0 +1,27 @@ +<?php + +/***************************************************************************\ + * SPIP, Systeme de publication pour l'internet * + * * + * Copyright (c) 2001-2006 * + * 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 inc_ajax_tourner_dist() +{ + global $id_document, $script, $id, $type, $ancre; + $id = intval($id); + $id_document = intval($id_document); + + include_spip('inc/documents'); + include_spip('inc/presentation'); + + echo formulaire_tourner($id_document, array(), $script, 'ajax', $type); +} + +?> diff --git a/ecrire/inc/virtualite.php b/ecrire/inc/ajax_virtualiser.php similarity index 88% rename from ecrire/inc/virtualite.php rename to ecrire/inc/ajax_virtualiser.php index d9a95726e3..b5ffdc86de 100644 --- a/ecrire/inc/virtualite.php +++ b/ecrire/inc/ajax_virtualiser.php @@ -41,4 +41,15 @@ function formulaire_virtualiser($id_article, $virtuel, $script, $args) return ajax_action_auteur('virtualiser', $id_article, $r, $script, $args, $args); } + +function inc_ajax_virtualiser_dist() +{ + global $id_article, $script; + $id_article = intval($id_article); + + include_spip('inc/actions'); + + echo formulaire_virtualiser($id_article, 'ajax', $script, "&id_article=$id_article"); +} + ?> diff --git a/ecrire/inc/chercher_rubrique.php b/ecrire/inc/chercher_rubrique.php index eb1dbca3fc..fcc7a2e712 100644 --- a/ecrire/inc/chercher_rubrique.php +++ b/ecrire/inc/chercher_rubrique.php @@ -210,7 +210,7 @@ function selecteur_rubrique_ajax($id_rubrique, $type, $restreint, $idem=0) { <a href=\"#\" onClick=\"if(findObj('selection_rubrique').style.display=='none') {charger_id_url_si_vide('" . - generer_url_ecrire('ajax_page', "fonction=aff_rubrique&id=$id_rubrique$exclus", true) ."', + generer_url_ecrire('ajax_page', "fonction=selectionner&id=$id_rubrique$exclus", true) ."', 'selection_rubrique');} else {findObj('selection_rubrique').style.display='none';}\" ><img src='". _DIR_IMG_PACK . "loupe.png' style='vertical-align: middle;' diff --git a/ecrire/inc/mini_nav.php b/ecrire/inc/mini_nav.php index 1adb441fa1..385560c9ba 100644 --- a/ecrire/inc/mini_nav.php +++ b/ecrire/inc/mini_nav.php @@ -10,11 +10,8 @@ * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ - -// if (!defined("_ECRIRE_INC_VERSION")) return; - function mini_afficher_rubrique ($id_rubrique, $rac="", $liste="", $col = 1, $rub_exclus=0) { global $spip_lang_left; @@ -77,7 +74,7 @@ function mini_afficher_rubrique ($id_rubrique, $rac="", $liste="", $col = 1, $ru $titre = "<div class='rub-ouverte'>$titre</div>"; # ensuite, l'ouverture du menu des sous-rubriques - $url = generer_url_ecrire("ajax_page", "fonction=aff_rub&rac=$rac&exclus=$rub_exclus&id=$la_rub&col=".($col+1), true); + $url = generer_url_ecrire("ajax_page", "fonction=plonger&rac=$rac&exclus=$rub_exclus&id=$la_rub&col=".($col+1), true); $onClick .= "charger_id_url('$url'," . "'".$rac."_col_".($col+1) ."', 'slide_horizontal(\'".$rac."_principal\', \'" @@ -177,7 +174,7 @@ function mini_nav ($sel, $rac="",$fonction="", $rub_exclus=0, $aff_racine=false) $ondbClick .= "findObj('selection_rubrique').style.display='none';"; } - $onClick .= "charger_id_url('" . generer_url_ecrire("ajax_page", "fonction=aff_rub&rac=$rac&exclus=$rub_exclus&id=0&col=1", true) . "', '".$rac."_col_1');"; + $onClick .= "charger_id_url('" . generer_url_ecrire("ajax_page", "fonction=plonger&rac=$rac&exclus=$rub_exclus&id=0&col=1", true) . "', '".$rac."_col_1');"; $ret .= "<div class='arial11 petite-rubrique' onclick=\"$onClick\" ondblclick=\"$ondbClick$onClick\" style='background-image: url(" . _DIR_IMG_PACK . "racine-site-12.gif); background-color: white; border: 1px solid $couleur_foncee; border-bottom: 0px; width: 134px;'><div class='pashighlight'>"; $ret .= _T("info_racine_site"); diff --git a/ecrire/inc/minipres.php b/ecrire/inc/minipres.php index 8f166e40f6..23d1ae760a 100644 --- a/ecrire/inc/minipres.php +++ b/ecrire/inc/minipres.php @@ -119,13 +119,22 @@ function info_copyright() { } -// normalement il faudrait definir inc_info.php, mais pour mettre juste ca: +// normalement il faudrait creer inc/info.php, mais pour mettre juste ca: function exec_info_dist() { global $connect_statut; if ($connect_statut == '0minirezo') phpinfo(); } +// idem faudrait creer inc/ajax_test, mais c'est si court. +// Tester si Ajax fonctionne pour ce brouteur +// (si on arrive la c'est que c'est bon, donc poser le cookie) + +function inc_ajax_test_dist() +{ + spip_setcookie('spip_accepte_ajax', 1); +} + // Afficher le bouton "preview" dans l'espace public function afficher_bouton_preview() { $x = _T('previsualisation'); diff --git a/ecrire/inc/mots.php b/ecrire/inc/mots.php index b50e13958e..446e62197d 100644 --- a/ecrire/inc/mots.php +++ b/ecrire/inc/mots.php @@ -539,7 +539,7 @@ function afficher_groupe_mots($id_groupe) { $hash = "0x".substr(md5($connect_id_auteur.$jjscript), 0, 16); $tmp_var = substr($hash, 2, 6); - $javascript = "charger_id_url('" . generer_url_ecrire("ajax_page", "fonction=sql&id_ajax_fonc=::id_ajax_fonc::::deb::", true) . "','$tmp_var')"; + $javascript = "charger_id_url('" . generer_url_ecrire("ajax_page", "fonction=memoriser&id_ajax_fonc=::id_ajax_fonc::::deb::", true) . "','$tmp_var')"; $select = 'id_mot, titre, ' . creer_objet_multi ("titre", $spip_lang); $from = 'spip_mots'; diff --git a/ecrire/inc/presentation.php b/ecrire/inc/presentation.php index ca6c0464cf..9ae77d0a45 100644 --- a/ecrire/inc/presentation.php +++ b/ecrire/inc/presentation.php @@ -743,7 +743,7 @@ function afficher_articles($titre_table, $requete, $afficher_visites = false, $a $hash = "0x".substr(md5($connect_id_auteur.$jjscript), 0, 16); $tmp_var = substr($hash, 2, 6); - $javascript = "charger_id_url('" . generer_url_ecrire("ajax_page","fonction=sql&id_ajax_fonc=::id_ajax_fonc::::deb::", true) . "','$tmp_var')"; + $javascript = "charger_id_url('" . generer_url_ecrire("ajax_page","fonction=memoriser&id_ajax_fonc=::id_ajax_fonc::::deb::", true) . "','$tmp_var')"; if (!isset($requete['GROUP BY'])) $requete['GROUP BY'] = ''; $tous_id = array(); @@ -783,7 +783,7 @@ function afficher_articles($titre_table, $requete, $afficher_visites = false, $a if ($afficher_trad) { $texte_img .= http_img_pack("searching.gif", "*", "style='visibility: hidden; float: $spip_lang_right' id = 'img_$div_trad'"); - $texte_img .= "<div style='float: $spip_lang_right;'><a href=\"javascript:charger_id_url('" . generer_url_ecrire("ajax_page", "fonction=sql&id_ajax_fonc=$id_ajax_trad"). "','$div_trad');\"><img src='". _DIR_IMG_PACK . "langues-12.gif' /></a></div>"; + $texte_img .= "<div style='float: $spip_lang_right;'><a href=\"javascript:charger_id_url('" . generer_url_ecrire("ajax_page", "fonction=memoriser&id_ajax_fonc=$id_ajax_trad"). "','$div_trad');\"><img src='". _DIR_IMG_PACK . "langues-12.gif' /></a></div>"; } bandeau_titre_boite2($texte_img.$titre_table, "article-24.gif"); @@ -972,7 +972,7 @@ function afficher_articles_trad($titre_table, $requete, $afficher_visites = fals $jjscript = (serialize($jjscript)); $hash = "0x".substr(md5($connect_id_auteur.$jjscript), 0, 16); $tmp_var = substr($hash, 2, 6); - $javascript = "charger_id_url('" . generer_url_ecrire("ajax_page", 'fonction=sql&id_ajax_fonc=::id_ajax_fonc::::deb::') . "','$tmp_var')"; + $javascript = "charger_id_url('" . generer_url_ecrire("ajax_page", 'fonction=memoriser&id_ajax_fonc=::id_ajax_fonc::::deb::') . "','$tmp_var')"; $tous_id = array(); $cpt = spip_fetch_array(spip_query("SELECT COUNT(*) AS n FROM " . $requete['FROM'] . ($requete['WHERE'] ? (' WHERE ' . $requete['WHERE']) : '') . ($requete['GROUP BY'] ? (' GROUP BY ' . $requete['GROUP BY']) : ''))); @@ -1005,7 +1005,7 @@ function afficher_articles_trad($titre_table, $requete, $afficher_visites = fals $texte_img .= http_img_pack("searching.gif", "*", "style='visibility: hidden; float: $spip_lang_right' id = 'img_$div_trad'"); - $texte_img .= "<div style='float: $spip_lang_right;'><a href=\"javascript:charger_id_url('" . generer_url_ecrire("ajax_page", "fonction=sql&id_ajax_fonc=$id_ajax_trad") . "','$div_trad');\"><img src='". _DIR_IMG_PACK . "langues-off-12.gif' /></a></div>"; + $texte_img .= "<div style='float: $spip_lang_right;'><a href=\"javascript:charger_id_url('" . generer_url_ecrire("ajax_page", "fonction=memoriser&id_ajax_fonc=$id_ajax_trad") . "','$div_trad');\"><img src='". _DIR_IMG_PACK . "langues-off-12.gif' /></a></div>"; bandeau_titre_boite2($texte_img.$titre_table, "article-24.gif"); @@ -2199,7 +2199,7 @@ if (true /*$bandeau_colore*/) { // echo "<a href='" . generer_url_ecrire("articles_tous","") . "' class='icone26' onMouseOver=\"changestyle('bandeautoutsite','visibility','visible');\">" . // http_img_pack("tout-site.png", "", "width='26' height='20'") . "</a>"; - echo "<a href='" . generer_url_ecrire("articles_tous") . "' class='icone26' onmouseover=\"changestyle('bandeautoutsite','visibility','visible'); charger_id_url_si_vide('" . generer_url_ecrire("ajax_page", "fonction=aff_nav_recherche&id=$id_rubrique") . "','nav-recherche');\">", + echo "<a href='" . generer_url_ecrire("articles_tous") . "' class='icone26' onmouseover=\"changestyle('bandeautoutsite','visibility','visible'); charger_id_url_si_vide('" . generer_url_ecrire("ajax_page", "fonction=naviguer&id=$id_rubrique") . "','nav-recherche');\">", http_img_pack("tout-site.png", "", "width='26' height='20'") . "</a>"; if ($id_rubrique > 0) echo "<a href='" . generer_url_ecrire("brouteur","id_rubrique=$id_rubrique") . "' class='icone26' onmouseover=\"changestyle('bandeaunavrapide','visibility','visible');\">" . http_img_pack("naviguer-site.png", "", "width='26' height='20'") ."</a>"; diff --git a/ecrire/index.php b/ecrire/index.php index ad991dfe0c..36082d6295 100644 --- a/ecrire/index.php +++ b/ecrire/index.php @@ -182,7 +182,25 @@ else verifie_include_plugins(); } -$var_f = charger_fonction($exec); -$var_f(); - +if ($exec != 'ajax_page') { + $var_f = charger_fonction($exec); + $var_f(); + } else { + $var_f = 'ajax_' . _request('fonction'); + $var_f = charger_fonction($var_f, 'inc'); + +// recuperer le resulat pour reencodage et envoi du prefixe +// (attention: ca peut envoyer des entetes ==> envoyer le prefixe apres) + $r = $var_f(); + + include_spip('inc/charsets'); + $charset = $GLOBALS['meta']["charset"]; + +// Curieux: le content-type bloque MSIE! +// @header('Content-type: text/html; charset=$charset'); + + echo "<"."?xml version='1.0' encoding='$charset'?".">\n"; +# gerer un charset minimaliste en convertissant tout en unicode &#xxx; + echo charset2unicode($r, 'AUTO', true); + } ?> -- GitLab