From b825d4a3b0a9f0409dbdf65ce9018fc4bcb1c21f Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Thu, 8 May 2008 20:33:56 +0000 Subject: [PATCH] =?UTF-8?q?Suite=20de=20[11602]:=20Tous=20les=20appels=20?= =?UTF-8?q?=C3=A0=20{{{afficher=5Ftranches=5Frequete}}}=20migrent=20dans?= =?UTF-8?q?=20{{{affiche=5Ftranche=5Fbandeau}}}=20=20et=20tous=20les=20app?= =?UTF-8?q?els=20=C3=A0=20{{{affiche=5Ftranche=5Fbandeau}}}=20=20migrent?= =?UTF-8?q?=20dans=20{{{presenter=5Fliste}}}=20ainsi=20que=20le=20GIF=20an?= =?UTF-8?q?im=C3=A9=20invisible=20hors=20appel=20Ajax.=20Cette=20fonction?= =?UTF-8?q?=20dispose=20ainsi=20de=20l'ID=20du=20bloc=20appelable=20en=20A?= =?UTF-8?q?jax=20s'il=20existe.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/inc/afficher_objets.php | 38 +++++++----------------- ecrire/inc/editer_auteurs.php | 20 ++++--------- ecrire/inc/grouper_mots.php | 17 +++-------- ecrire/inc/message_select.php | 13 ++------- ecrire/inc/presenter_liste.php | 53 ++++++++++++++++++++-------------- 5 files changed, 52 insertions(+), 89 deletions(-) diff --git a/ecrire/inc/afficher_objets.php b/ecrire/inc/afficher_objets.php index 44deec532d..ae4971ceb3 100644 --- a/ecrire/inc/afficher_objets.php +++ b/ecrire/inc/afficher_objets.php @@ -232,24 +232,18 @@ function inc_afficher_objets_dist($type, $titre,$requete,$formater='', $force=fa else $langue_defaut = $GLOBALS['meta']['langue_site']; } else $afficher_langue = $langue_defaut = ''; - $tmp_var = 't_' . substr(md5(join('', $requete)), 0, 4); - $arg = array( $afficher_langue, false, $langue_defaut); if (!function_exists($skel = "afficher_{$type}s_boucle")){ $skel = "afficher_objet_boucle"; $arg = array($type,id_table_objet($type),$afficher_langue, false, $langue_defaut); } $presenter_liste = charger_fonction('presenter_liste', 'inc'); - $tranches = affiche_tranche_bandeau($requete, $tmp_var, $force, $skel, $arg); + $tmp_var = 't_' . substr(md5(join('', $requete)), 0, 4); $largeurs = array('7','', '', '', '100', '38'); $styles = array('arial11', 'arial11', 'arial1', 'arial1', 'arial1 centered', 'arial1'); - if ($deb_aff > 0) - $requete['LIMIT'] = "$deb_aff, $nb_aff" ; - else if (empty($requete['LIMIT'])) $requete['LIMIT'] = "99999"; - $tableau = array(); // ne sert pas ici - return $presenter_liste($requete, $skel, $tableau, $arg, $force, $largeurs, $styles, $tranches, $titre, icone_table($type)); + return $presenter_liste($requete, $skel, $tableau, $arg, $force, $largeurs, $styles, $tmp_var, $titre, icone_table($type)); } function charger_fonction_logo_if() @@ -381,8 +375,6 @@ function inc_afficher_articles_dist($titre, $requete, $formater='') { $hash = substr(md5(serialize($requete) . $GLOBALS['meta']['gerer_trad'] . $titre), 0, 31); $tmp_var = 't' . substr($hash, 0, 7); - $nb_aff = floor(1.5 * _TRANCHES); - $deb_aff = intval(_request($tmp_var)); // // Stocke la fonction ajax dans le fichier temp pour exec=memoriser @@ -393,7 +385,7 @@ function inc_afficher_articles_dist($titre, $requete, $formater='') { $ajax_fonctions = @unserialize($ajax_fonctions); // on ajoute notre fonction - if (isset($requete['LIMIT'])) $cpt = min($requete['LIMIT'], $cpt); + $v = array(time(), $titre, $requete, $tmp_var, $formater); $ajax_fonctions[$hash] = $v; @@ -406,6 +398,7 @@ function inc_afficher_articles_dist($titre, $requete, $formater='') { ecrire_fichier(_DIR_SESSIONS.'ajax_fonctions.txt', serialize($ajax_fonctions)); + if (isset($requete['LIMIT'])) $cpt = min($requete['LIMIT'], $cpt); return afficher_articles_trad($titre, $requete, $formater, $tmp_var, $hash, $cpt); } @@ -426,34 +419,23 @@ function afficher_articles_trad($titre_table, $requete, $formater, $tmp_var, $ha $alt = _T('afficher_trad'); } - $nb_aff = ($cpt > floor(1.5 * _TRANCHES)) ? _TRANCHES : floor(1.5 * _TRANCHES) ; - $deb_aff = intval(_request($tmp_var)); - - if ($deb_aff >= 0) - $requete['LIMIT'] = "$deb_aff, $nb_aff" ; - else if (empty($requete['LIMIT'])) $requete['LIMIT'] = "99999"; - - $style = "style='visibility: hidden; float: $spip_lang_right'"; - - $texte = http_img_pack("searching.gif", "", $style . " id='img_$tmp_var'"); + $texte = '<b>' . $titre_table . '</b>'; if (($GLOBALS['meta']['gerer_trad'] == "oui")) { $url = generer_url_ecrire('memoriser',"hash=$hash&trad=" . (1-$trad)); $texte .= "\n<span style='float: $spip_lang_right;'><a href=\"#\"\nonclick=\"return charger_id_url('$url','$tmp_var');\">" - . "<img\nsrc='". chemin_image($icone) ."' alt='$alt' /></a></span>"; + . "<img\nsrc='". chemin_image($icone) ."' alt='$alt' /></a></span>"; + } - $texte .= '<b>' . $titre_table . '</b>'; + $presenter_liste = charger_fonction('presenter_liste', 'inc'); $largeurs = array(11, '', 80, 100, 50); $styles = array('', 'arial2', 'arial1', 'arial1', 'arial1'); $tableau = array(); - - $tranches = ($cpt <= $nb_aff) ? '' - : afficher_tranches_requete($cpt, $tmp_var, generer_url_ecrire('memoriser', "hash=$hash&trad=$trad"), $nb_aff); - - $res = $presenter_liste($requete, $formater, $tableau, array(), false, $largeurs, $styles, $tranches, $texte, "article-24.gif"); + $url = generer_url_ecrire('memoriser', "hash=$hash&trad=$trad"); + $res = $presenter_liste($requete, $formater, $tableau, array(), false, $largeurs, $styles, $tmp_var, $texte, "article-24.gif", $url, $cpt); return ajax_action_greffe($tmp_var, '', $res); } diff --git a/ecrire/inc/editer_auteurs.php b/ecrire/inc/editer_auteurs.php index 2d99f2c379..8765deec0c 100644 --- a/ecrire/inc/editer_auteurs.php +++ b/ecrire/inc/editer_auteurs.php @@ -199,23 +199,13 @@ function afficher_auteurs_objet($type, $id, $flag_editable, $cond, $script_edit, $presenter_liste = charger_fonction('presenter_liste', 'inc'); - $result = sql_select("id_auteur", $from, $where); - $cpt = sql_count($result); + $requete = array('SELECT' => "id_auteur", 'FROM' => $from, 'WHERE' => $where); $tmp_var = "editer_auteurs-$id"; - $nb_aff = floor(1.5 * _TRANCHES); - if ($cpt > $nb_aff) { - $nb_aff = _TRANCHES; - $tranches = afficher_tranches_requete($cpt, $tmp_var, generer_url_ecrire('editer_auteurs',$arg_ajax), $nb_aff); - } else $tranches = ''; - - $deb_aff = _request($tmp_var); - $deb_aff = ($deb_aff !== NULL ? intval($deb_aff) : 0); - - $limit = (($deb_aff < 0) ? '' : "$deb_aff, $nb_aff"); - $requete = array('SELECT' => "id_auteur", 'FROM' => $from, 'WHERE' => $where, 'LIMIT' => $limit); + $url = generer_url_ecrire('editer_auteurs',$arg_ajax); // charger ici meme si pas d'auteurs - // car inc_formater_auteur peut aussi redefinir determiner_non_auteurs qui sert plus loin + // car inc_formater_auteur peut aussi redefinir + // determiner_non_auteurs qui sert plus loin if (!$formater = charger_fonction("formater_auteur_$type", 'inc',true)) $formater = charger_fonction('formater_auteur', 'inc'); @@ -225,7 +215,7 @@ function afficher_auteurs_objet($type, $id, $flag_editable, $cond, $script_edit, $styles = array('arial11', 'arial2', 'arial11', 'arial11', 'arial11', 'arial1'); $tableau = array(); // ne sert pas - return $presenter_liste($requete, 'ajouter_auteur_un', $tableau, array($formater, $retirer, $arg_ajax, $flag_editable, $id, $type, $script_edit), false, $largeurs, $styles, $tranche); + return $presenter_liste($requete, 'ajouter_auteur_un', $tableau, array($formater, $retirer, $arg_ajax, $flag_editable, $id, $type, $script_edit), false, $largeurs, $styles, $tmp_var, '','', $url); } // http://doc.spip.org/@ajouter_auteur_un diff --git a/ecrire/inc/grouper_mots.php b/ecrire/inc/grouper_mots.php index c8711b5817..4ea969349c 100644 --- a/ecrire/inc/grouper_mots.php +++ b/ecrire/inc/grouper_mots.php @@ -17,7 +17,7 @@ include_spip('inc/actions'); include_spip('base/abstract_sql'); // http://doc.spip.org/@inc_grouper_mots_dist -function inc_grouper_mots_dist($id_groupe, $cpt) { +function inc_grouper_mots_dist($id_groupe, $total) { global $connect_statut, $spip_lang_right, $spip_lang; $presenter_liste = charger_fonction('presenter_liste', 'inc'); @@ -27,19 +27,12 @@ function inc_grouper_mots_dist($id_groupe, $cpt) { // - a donner un ID a la balise ou greffer le retour d'Ajax // tant pour la prochaine tranche que pour le retrait de mot $tmp_var = "editer_mots-$id_groupe"; - $nb_aff = floor(1.5 * _TRANCHES); - if ($cpt > $nb_aff) { - $nb_aff = _TRANCHES; - $tranches = afficher_tranches_requete($cpt, $tmp_var, generer_url_ecrire('grouper_mots',"id_groupe=$id_groupe&total=$cpt"), $nb_aff); - } else $tranches = ''; + $url = generer_url_ecrire('grouper_mots',"id_groupe=$id_groupe"); - - $deb_aff = _request($tmp_var); - $deb_aff = ($deb_aff !== NULL ? intval($deb_aff) : 0); $select = 'id_mot, id_groupe, titre, descriptif, ' . sql_multi ("titre", $spip_lang); - $requete = array('SELECT' => $select, 'FROM' => 'spip_mots', 'WHERE' => "id_groupe=$id_groupe", 'ORDER BY' => 'multi', 'LIMIT' => (($deb_aff < 0) ? '' : "$deb_aff, $nb_aff")); + $requete = array('SELECT' => $select, 'FROM' => 'spip_mots', 'WHERE' => "id_groupe=$id_groupe", 'ORDER BY' => 'multi'); $tableau = array(); $occurrences = calculer_liens_mots($id_groupe); @@ -50,9 +43,7 @@ function inc_grouper_mots_dist($id_groupe, $cpt) { $largeurs = array('', 100); $styles = array('arial11', 'arial1'); } - - return http_img_pack("searching.gif", "*", "style='visibility: hidden; position: absolute; $spip_lang_right: 0px; top: -20px;' id='img_$tmp_var'") - . $presenter_liste($requete, 'afficher_groupe_mots_boucle', $tableau, array($occurrences, $total, $deb_aff), false, $largeurs, $styles, $tranches); + return $presenter_liste($requete, 'afficher_groupe_mots_boucle', $tableau, array($occurrences, $total, $deb_aff), false, $largeurs, $styles, $tmp_var, '', '', $url); } // http://doc.spip.org/@afficher_groupe_mots_boucle diff --git a/ecrire/inc/message_select.php b/ecrire/inc/message_select.php index a7da79ad46..31d2f3754f 100644 --- a/ecrire/inc/message_select.php +++ b/ecrire/inc/message_select.php @@ -17,8 +17,6 @@ if (!defined("_ECRIRE_INC_VERSION")) return; // http://doc.spip.org/@afficher_messages function afficher_messages($titre, $from, $where, &$messages_vus, $afficher_auteurs = true, $important = false) { - $tmp_var = 't_' . substr(md5($where.$from), 0, 4); - $requete = array('SELECT' => 'messages.id_message, messages.date_heure, messages.date_fin, messages.titre, messages.type, messages.rv', 'FROM' => "spip_messages AS messages$from", 'WHERE' => $where .(!$messages_vus ? '' : ' AND messages.id_message NOT IN ('.join(',', $messages_vus).')'), 'ORDER BY'=> 'date_heure DESC'); if ($afficher_auteurs) { @@ -30,18 +28,11 @@ function afficher_messages($titre, $from, $where, &$messages_vus, $afficher_aute } $presenter_liste = charger_fonction('presenter_liste', 'inc'); - $tranches = affiche_tranche_bandeau($requete, $tmp_var, false, 'afficher_message_boucles', $afficher_auteurs); - - if ($deb_aff > 0) - $requete['LIMIT'] = "$deb_aff, $nb_aff" ; - else if (empty($requete['LIMIT'])) $requete['LIMIT'] = "99999"; - - -# $result = sql_select((isset($requete["SELECT"]) ? $requete["SELECT"] : "*"), $requete['FROM'], $requete['WHERE'], $requete['GROUP BY'], $requete['ORDER BY'], ($deb_aff > 0 ? "$deb_aff, $nb_aff" : ($requete['LIMIT'] ? $requete['LIMIT'] : "99999"))); + $tmp_var = 't_' . substr(md5(join('', $requete)), 0, 4); // cette variable est passe par reference et recevra les valeurs du champ indique $les_messages = 'id_message'; - $res = $presenter_liste($requete, 'afficher_message_boucles', $les_messages, $afficher_auteur, $important, $largeurs, $styles, $tranches, $titre, "messagerie-24.gif"); + $res = $presenter_liste($requete, 'afficher_message_boucles', $les_messages, $afficher_auteur, $important, $largeurs, $styles, $tmp_var, $titre, "messagerie-24.gif"); $messages_vus = array_merge($messages_vus, $les_messages); if (!$res) return ''; diff --git a/ecrire/inc/presenter_liste.php b/ecrire/inc/presenter_liste.php index 9b2fdd01aa..fb52ca71c3 100644 --- a/ecrire/inc/presenter_liste.php +++ b/ecrire/inc/presenter_liste.php @@ -12,10 +12,20 @@ if (!defined("_ECRIRE_INC_VERSION")) return; -function inc_presenter_liste_dist($requete, $fonc, &$prims, $own, $force, $largeurs, $styles, $tranches = '', $title='', $icone='') +// Cette fonction prend un argument un tableau decrivant une requete Select +// et une fonction formatant chaque ligne du resultat de la requete +// Elle renvoie une enumeration HTML de ces lignes formatees, +// avec une pagination appelable en Ajax si $idom et $url sont fournis + +function inc_presenter_liste_dist($requete, $fonc, &$prims, $own, $force, $largeurs, $styles, $idom='', $title='', $icone='', $url='', $cpt=NULL) { global $spip_display, $spip_lang_left; + // $requete est passe par reference, pour modifier l'index LIMIT + if ($idom) + $tranches = affiche_tranche_bandeau($requete, $idom, $url, $cpt); + else $tranches = ''; + $prim = $prims; $prims = array(); $result = sql_select((isset($requete["SELECT"]) ? $requete["SELECT"] : "*"), $requete['FROM'], $requete['WHERE'], $requete['GROUP BY'], $requete['ORDER BY'], $requete['LIMIT']); @@ -73,29 +83,31 @@ function inc_presenter_liste_dist($requete, $fonc, &$prims, $own, $force, $large } // http://doc.spip.org/@afficher_tranches_requete -function afficher_tranches_requete($num_rows, $tmp_var, $url='', $nb_aff = 10, $old_arg=NULL) { +function afficher_tranches_requete($num_rows, $idom, $url='', $nb_aff = 10, $old_arg=NULL) { static $ancre = 0; global $browser_name, $spip_lang_right, $spip_display; if ($old_arg!==NULL){ // eviter de casser la compat des vieux appels $cols_span ayant disparu ... - $tmp_var = $url; $url = $nb_aff; $nb_aff=$old_arg; + $idom = $url; $url = $nb_aff; $nb_aff=$old_arg; } $ancre++; $self = self(); $ie_style = ($browser_name == "MSIE") ? "height:1%" : ''; + $style = "style='visibility: hidden; float: $spip_lang_right'"; + $texte = http_img_pack("searching.gif", "*", "$style id='img_$idom'") - $texte = "\n<div style='$ie_style;' class='arial1 tranches' id='a$ancre'>"; - $texte .= navigation_pagination($num_rows, $nb_aff, $url, $onclick=true, $tmp_var); + . "\n<div style='$ie_style;' class='arial1 tranches' id='a$ancre'>" + . navigation_pagination($num_rows, $nb_aff, $url, $onclick=true, $idom); $on =''; - $script = parametre_url($self, $tmp_var, -1); + $script = parametre_url($self, $idom, -1); if ($url) { $on = "\nonclick=\"return charger_id_url('" . $url . "&" - . $tmp_var + . $idom . "=-1','" - . $tmp_var + . $idom . '\');"'; } $l = htmlentities(_T('lien_tout_afficher')); @@ -106,28 +118,25 @@ function afficher_tranches_requete($num_rows, $tmp_var, $url='', $nb_aff = 10, $ } // http://doc.spip.org/@affiche_tranche_bandeau -function affiche_tranche_bandeau($requete, $tmp_var, $force, $skel, $own='') +function affiche_tranche_bandeau(&$requete, $idom, $url='', $cpt=NULL) { - global $spip_display ; - $res = ""; - if (!isset($requete['GROUP BY'])) $requete['GROUP BY'] = ''; - $cpt = sql_countsel($requete['FROM'], $requete['WHERE'], $requete['GROUP BY']); - - if (!($cpt OR $force)) return ''; + if ($cpt === NULL) + $cpt = sql_countsel($requete['FROM'], $requete['WHERE'], $requete['GROUP BY']); + $deb_aff = intval(_request($idom)); $nb_aff = floor(1.5 * _TRANCHES); if (isset($requete['LIMIT'])) $cpt = min($requete['LIMIT'], $cpt); - - else if (!($deb_aff = intval(_request($tmp_var)))) - $requete['LIMIT'] = $nb_aff; - if ($cpt > $nb_aff) { $nb_aff = (_TRANCHES); - return afficher_tranches_requete($cpt, $tmp_var, '', $nb_aff); - } - return ''; + $res = afficher_tranches_requete($cpt, $idom, $url, $nb_aff); + } else $res = ''; + + if (!isset($requete['LIMIT'])) + $requete['LIMIT'] = "$deb_aff, $nb_aff"; + + return $res; } ?> -- GitLab