Skip to content
Extraits de code Groupes Projets
Valider aefcdba3 rédigé par esj's avatar esj
Parcourir les fichiers

La lenteur en fin de chargement de l'espace privé était due aux gadgets agenda...

La lenteur en fin de chargement de l'espace privé était due aux gadgets agenda et navigationrapide (qui est donc lent!). Ils sont à présent en Ajax, comme le gadget des rubriques. C'est pas mal JQuery, mais j'ai pas compris comment faire pour qu'un seul des gadgets ne soit chargé (c'est déjà mieux qu'avant mais c'est bizarre). 

Par ailleurs il y avait du code mort dans les gadgets, et le plus simple a été finalement d'implémenter le tout de sorte que chacun des gadgets est surchargeable indépendamment des autres, plutot que de devoir redéfinir tout le fichier inc/gadgets.
parent 46e7c91d
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -434,7 +434,6 @@ ecrire/exec/export_all.php -text
ecrire/exec/forum.php -text
ecrire/exec/forum_admin.php -text
ecrire/exec/forum_envoi.php -text
ecrire/exec/gadgets.php -text
ecrire/exec/grouper_mots.php -text
ecrire/exec/iconifier.php -text
ecrire/exec/import_all.php -text
......@@ -448,6 +447,9 @@ ecrire/exec/legender.php -text
ecrire/exec/legender_auteur.php -text
ecrire/exec/meme_rubrique.php -text
ecrire/exec/memoriser.php -text
ecrire/exec/menu_agenda.php -text
ecrire/exec/menu_navigation.php -text
ecrire/exec/menu_rubriques.php -text
ecrire/exec/message.php -text
ecrire/exec/message_edit.php -text
ecrire/exec/messagerie.php -text
......
......@@ -12,26 +12,25 @@
if (!defined("_ECRIRE_INC_VERSION")) return;
// http://doc.spip.org/@exec_gadgets_dist
function exec_gadgets_dist()
{
$id_rubrique = intval(_request('id_rubrique'));
$gadget = _request('gadget');
$gadgets = charger_fonction('gadgets', 'inc');
header("Cache-Control: max-age=3600");
if ($date = intval(_request('date')))
header("Last-Modified: ".gmdate("D, d M Y H:i:s", $date)." GMT");
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])
AND !strstr($_SERVER['SERVER_SOFTWARE'],'IIS/')) {
include_spip('inc/headers');
header('Content-Type: text/html; charset='. $GLOBALS['meta']['charset']);
http_status(304);
exit;
} else {
ajax_retour($gadgets($id_rubrique, $gadget));
}
include_spip('inc/presentation');
function exec_menu_agenda_dist() {
list($evtm, $evtt, $evtr) = http_calendrier_messages(date("Y"), date("m"), date("d"));
$ret = "<table><tr>"
. "<td style='width: 200px; vertical-align: top;' >"
. "<div>"
. $evtm
. "</div>"
. "</td>"
. (!$evtt ? '' :
( "<td style='width: 10px; vertical-align: top'> &nbsp; </td>"
. "<td style='width: 200px; color: black; vertical-align: top'>"
. "<div>&nbsp;</div>$evtt</td>"))
. "</tr></table>";
ajax_retour($ret);
}
?>
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2007 *
* 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;
include_spip('inc/presentation');
function exec_menu_navigation_dist() {
global $connect_id_auteur, $connect_statut, $couleur_claire,$couleur_foncee, $spip_lang_left, $spip_lang_right, $spip_ecran;
$id_rubrique = intval(_request('id_rubrique'));
$gadget = '<div style="width: 300px;">';
$vos_articles = spip_query("SELECT articles.id_article, articles.id_rubrique, articles.titre, articles.statut FROM spip_articles AS articles, spip_auteurs_articles AS lien WHERE articles.id_article=lien.id_article AND lien.id_auteur=$connect_id_auteur AND articles.statut='prepa' ORDER BY articles.date DESC LIMIT 5");
if (spip_num_rows($vos_articles) > 0) {
$gadget .= "<div>&nbsp;</div>";
$gadget .= "<div class='bandeau_rubriques' style='z-index: 1;'>";
$gadget .= bandeau_titre_boite2(afficher_plus(generer_url_ecrire("articles_page","")) . '<b>' ._T('info_en_cours_validation') . '</b>', "article-24.gif", $couleur_foncee, 'white', false);
$gadget .= "\n<div class='plan-articles'>\n";
while($row = spip_fetch_array($vos_articles)) {
$id_article = $row['id_article'];
$titre = typo(sinon($row['titre'], _T('ecrire:info_sans_titre')));
$statut = $row['statut'];
$gadget .= "<a class='$statut spip_xx-small' href='" . generer_url_ecrire("articles","id_article=$id_article") . "'>$titre</a>\n";
}
$gadget .= "</div>";
$gadget .= "</div>";
}
$vos_articles = spip_query("SELECT id_article, id_rubrique, titre, statut FROM spip_articles WHERE statut='prop' ORDER BY date DESC LIMIT 5");
if (spip_num_rows($vos_articles) > 0) {
$gadget .= "<div>&nbsp;</div>";
$gadget .= "<div class='bandeau_rubriques' style='z-index: 1;'>";
$gadget .= bandeau_titre_boite2(afficher_plus('./') . '<b>' . _T('info_articles_proposes') . '</b>', "article-24.gif", $couleur_foncee, 'white', false);
$gadget .= "<div class='plan-articles'>";
while($row = spip_fetch_array($vos_articles)) {
$id_article = $row['id_article'];
$titre = sinon($row['titre'], _T('ecrire:info_sans_titre'));
$statut = $row['statut'];
$gadget .= "<a class='$statut spip_xx-small' href='" . generer_url_ecrire("articles","id_article=$id_article") . "'>$titre</a>";
}
$gadget .= "</div>";
$gadget .= "</div>";
}
$vos_articles = spip_query("SELECT * FROM spip_breves WHERE statut='prop' ORDER BY date_heure DESC LIMIT 5");
if (spip_num_rows($vos_articles) > 0) {
$gadget .= "<div>&nbsp;</div>";
$gadget .= "<div class='bandeau_rubriques' style='z-index: 1;'>";
$gadget .= bandeau_titre_boite2(afficher_plus(generer_url_ecrire("breves")).'<b>' . _T('info_breves_valider') . '</b>', "breve-24.gif", "$couleur_foncee", "white", false);
$gadget .= "<div class='plan-articles'>";
while($row = spip_fetch_array($vos_articles)) {
$id_breve = $row['id_breve'];
$titre = typo(sinon($row['titre'], _T('ecrire:info_sans_titre')));
$statut = $row['statut'];
$gadget .= "<a class='$statut spip_xx-small' href='" . generer_url_ecrire("breves_voir","id_breve=$id_breve") . "'>$titre</a>";
}
$gadget .= "</div>";
$gadget .= "</div>";
}
$result = spip_query("SELECT id_rubrique FROM spip_rubriques LIMIT 1");
if (spip_num_rows($result) > 0) {
$gadget .= "<div>&nbsp;</div>";
if ($id_rubrique > 0) {
$dans_rub = "&id_rubrique=$id_rubrique";
$dans_parent = "&id_parent=$id_rubrique";
} else $dans_rub = $dans_parent = '';
if ($connect_statut == "0minirezo") {
$gadget .= "<div style='width: 140px; float: $spip_lang_left;'>";
if ($id_rubrique > 0)
$gadget .= icone_horizontale(_T('icone_creer_sous_rubrique'), generer_url_ecrire("rubriques_edit","new=oui$dans_parent"), "rubrique-24.gif", "creer.gif", false);
else
$gadget .= icone_horizontale(_T('icone_creer_rubrique'), generer_url_ecrire("rubriques_edit","new=oui"), "rubrique-24.gif", "creer.gif", false);
$gadget .= "</div>";
}
$gadget .= "<div style='width: 140px; float: $spip_lang_left;'>";
$gadget .= icone_horizontale(_T('icone_ecrire_article'), generer_url_ecrire("articles_edit","new=oui$dans_rub"), "article-24.gif","creer.gif", false);
$gadget .= "</div>";
if ($GLOBALS['meta']["activer_breves"] != "non") {
$gadget .= "<div style='width: 140px; float: $spip_lang_left;'>";
$gadget .= icone_horizontale(_T('icone_nouvelle_breve'), generer_url_ecrire("breves_edit","new=oui$dans_rub"), "breve-24.gif","creer.gif", false);
$gadget .= "</div>";
}
if ($GLOBALS['meta']["activer_sites"] == 'oui') {
if ($connect_statut == '0minirezo' OR $GLOBALS['meta']["proposer_sites"] > 0) {
$gadget .= "<div style='width: 140px; float: $spip_lang_left;'>";
$gadget .= icone_horizontale(_T('info_sites_referencer'), generer_url_ecrire("sites_edit","new=oui$dans_parent"), "site-24.gif","creer.gif", false);
$gadget .= "</div>";
}
}
}
$gadget .="</div>";
ajax_retour($gadget);
}
?>
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2007 *
* 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 exec_menu_rubriques_dist() {
global $spip_ecran;
header("Cache-Control: max-age=3600");
if ($date = intval(_request('date')))
header("Last-Modified: ".gmdate("D, d M Y H:i:s", $date)." GMT");
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])
AND !strstr($_SERVER['SERVER_SOFTWARE'],'IIS/')) {
include_spip('inc/headers');
header('Content-Type: text/html; charset='. $GLOBALS['meta']['charset']);
http_status(304);
exit;
} else {
$largeur_t = ($spip_ecran == "large") ? 900 : 650;
gen_liste_rubriques();
$arr_low = extraire_article(0);
$total_lignes = $i = sizeof($arr_low);
$ret = '';
if ($i > 0) {
$nb_col = min(8,ceil($total_lignes / 30));
if ($nb_col <= 1) $nb_col = ceil($total_lignes / 10);
$max_lignes = ceil($total_lignes / $nb_col);
$largeur = min(200, ceil($largeur_t / $nb_col));
$count_lignes = 0;
$style = " style='z-index: 0; vertical-align: top;'";
foreach( $arr_low as $id_rubrique => $titre_rubrique) {
if ($count_lignes == $max_lignes) {
$count_lignes = 0;
$ret .= "</div></td>\n<td$style><div class='bandeau_rubriques'>";
}
$count_lignes ++;
if (autoriser('voir','rubrique',$id_rubrique)){
$ret .= bandeau_rubrique($id_rubrique, $titre_rubrique, 1, $largeur);
}
}
$ret = "<table><tr>\n<td$style><div class='bandeau_rubriques'>"
. $ret
. "\n</div></td></tr></table>\n";
}
ajax_retour("<div>&nbsp;</div>" . $ret);
}
}
// http://doc.spip.org/@bandeau_rubrique
function bandeau_rubrique($id_rubrique, $titre_rubrique, $zdecal, $largeur) {
global $spip_ecran, $spip_display;
global $spip_lang, $spip_lang_rtl, $spip_lang_left, $spip_lang_right;
$titre_rubrique = preg_replace(',[\x00-\x1f]+,', ' ', $titre_rubrique);
// Limiter volontairement le nombre de sous-menus
$zmax = 6;
if ($zdecal == 1) $image = "secteur-12.gif";
//else $image = "rubrique-12.gif";
else $image = '';
if ($image)
$image = " background-image: url(" . http_wrapper($image) .");";
$nav = "<a href='"
. generer_url_ecrire('naviguer', 'id_rubrique='.$id_rubrique)
. "'\nclass='bandeau_rub' style='width: "
. $largeur
. "px;"
. $image
. "'>\n&nbsp;"
. supprimer_tags($titre_rubrique)
. "</a>\n";
if ($zdecal >= $zmax) return "\n<div>$nav</div>";
$arr_rub = extraire_article($id_rubrique);
$i = sizeof($arr_rub);
if (!$i) return "\n<div>$nav</div>";
$pxdecal = max(15, ceil($largeur/5)) . 'px';
$idom = 'b_' . $id_rubrique;
$ret = "<div class='pos_r'
onmouseover=\"montrer('$idom');\"
onmouseout=\"cacher('$idom'); \">"
. '<div class="brt">'
. $nav
. "</div>\n<div class='bandeau_rub' style='top: 14px; left: "
. $pxdecal
. "; z-index: "
. $zdecal
. ";' id='"
. $idom
. "'><table cellspacing='0' cellpadding='0'><tr><td valign='top'>";
if ($nb_rub = count($arr_rub)) {
$nb_col = min(10,max(1,ceil($nb_rub / 10)));
$ret_ligne = max(4,ceil($nb_rub / $nb_col));
}
$count_ligne = 0;
foreach( $arr_rub as $id_rub => $titre_rub) {
$count_ligne ++;
if ($count_ligne > $ret_ligne) {
$count_ligne = 0;
$ret .= "</td>";
$ret .= '<td valign="top" style="border-left: 1px solid #cccccc;">';
}
if (autoriser('voir','rubrique',$id_rub)){
$titre = supprimer_numero(typo($titre_rub));
$ret .= bandeau_rubrique($id_rub, $titre, $zdecal+1, $largeur);
}
}
$ret .= "</td></tr></table>\n";
$ret .= "</div></div>\n";
return $ret;
}
function extraire_article($id_p) {
if (array_key_exists($id_p, $GLOBALS['db_art_cache'])) {
return $GLOBALS['db_art_cache'][$id_p];
} else {
return array();
}
}
// http://doc.spip.org/@gen_liste_rubriques
function gen_liste_rubriques() {
// ici, un petit fichier cache ne fait pas de mal
if (lire_fichier(_DIR_TMP.'cache-menu-rubriques.txt', $cache)
AND list($date,$GLOBALS['db_art_cache']) = @unserialize($cache)
AND $date == $GLOBALS['meta']["date_calcul_rubriques"])
return; // c'etait en cache :-)
// se restreindre aux rubriques utilisees recemment +secteurs
$liste="0";
$s = spip_query("SELECT id_rubrique FROM spip_rubriques ORDER BY id_parent=0 DESC, date DESC LIMIT 500");
while ($t = spip_fetch_array($s))
$liste .=",".$t['id_rubrique'];
$res = spip_query("SELECT id_rubrique, id_parent, titre FROM spip_rubriques WHERE id_rubrique IN ($liste) ORDER BY id_parent,0+titre,titre");
// il ne faut pas filtrer le autoriser voir ici car on met le resultat en cache, commun a tout le monde
$GLOBALS['db_art_cache'] = array();
if (spip_num_rows($res) > 0) {
while ($row = spip_fetch_array($res)) {
$id = $row['id_rubrique'];
$parent = $row['id_parent'];
$GLOBALS['db_art_cache'][$parent][$id] =
supprimer_numero(typo(sinon($row['titre'], _T('ecrire:info_sans_titre'))));
}
}
// ecrire dans le cache
ecrire_fichier(_DIR_TMP.'cache-menu-rubriques.txt',
serialize(array(
$GLOBALS['meta']["date_calcul_rubriques"],
$GLOBALS['db_art_cache']
))
);
}
?>
......@@ -114,32 +114,7 @@ function init_body($rubrique='accueil', $sous_rubrique='accueil', $id_rubrique='
$res .= "\n<div align='center' style=\"max-height: 40px; width: 100%; border-bottom: solid 1px white;$style\">"
. "<table cellpadding='0' style='background: none;' width='$largeur'><tr>"
. "<td valign='middle' class='bandeau_couleur' style='text-align: $spip_lang_left;'>"
// ce bouton commande le menu de rubriques (cf. inc/gadgets)
. "<a id='boutonbandeautoutsite' href='" . generer_url_ecrire("articles_tous") . "' class='icone26' onmouseover=\"changestyle('bandeautoutsite');\" onfocus=\"changestyle('bandeautoutsite');\" onblur=\"changestyle('bandeautoutsite');\">"
. http_img_pack("tout-site.png", _T('icone_site_entier'), "width='26' height='20'") . "</a>";
if ($id_rubrique > 0)
$res .= "<a href='" . generer_url_ecrire("brouteur","id_rubrique=$id_rubrique") . "' class='icone26' onmouseover=\"changestyle('bandeaunavrapide');\" onfocus=\"changestyle('bandeaunavrapide');\" onblur=\"changestyle('bandeaunavrapide');\">" .
http_img_pack("naviguer-site.png", _T('icone_brouteur'), "width='26' height='20'") ."</a>";
else $res .= "<a href='" . generer_url_ecrire("brouteur") . "' class='icone26' onmouseover=\"changestyle('bandeaunavrapide');\" onfocus=\"changestyle('bandeaunavrapide');\" onblur=\"changestyle('bandeaunavrapide');\">" .
http_img_pack("naviguer-site.png", _T('icone_brouteur'), "width='26' height='20'") . "</a>";
$res .= "<a href='"
. generer_url_ecrire("recherche")
. "' class='icone26' onmouseover=\"changestyle('bandeaurecherche'); jQuery('#form_recherche')[0].focus();\" onfocus=\"changestyle('bandeaurecherche');\" onblur=\"changestyle('bandeaurecherche');\">"
. http_img_pack("loupe.png", _T('info_rechercher'), "width='26' height='20'")
."</a>"
. http_img_pack("rien.gif", "", "width='10'")
. "<a href='"
. generer_url_ecrire("calendrier","type=semaine")
. "' class='icone26' onmouseover=\"changestyle('bandeauagenda');\">"
. http_img_pack("cal-rv.png", _T('icone_agenda'), "width='26' height='20'") ."</a>"
. "<a href='" . generer_url_ecrire("messagerie") . "' class='icone26' onmouseover=\"changestyle('bandeaumessagerie');\" onfocus=\"changestyle('bandeaumessagerie');\" onblur=\"changestyle('bandeaumessagerie');\">"
. http_img_pack("cal-messagerie.png", _T('icone_messagerie_personnelle'), "width='26' height='20'")
."</a>"
. "<a href='" . generer_url_ecrire("synchro") . "' class='icone26' onmouseover=\"changestyle('bandeausynchro');\" onfocus=\"changestyle('bandeausynchro');\" onblur=\"changestyle('bandeausynchro');\">" .
http_img_pack("cal-suivi.png", _T('icone_suivi_activite'), "width='26' height='20'")
. "</a>"
. installer_gadgets($id_rubrique)
. "</td>"
. "<td valign='middle' class='bandeau_couleur' style='text-align: $spip_lang_left;'>"
......
......@@ -15,287 +15,15 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/presentation');
//
// Le bandeau des gadgets s'affiche en deux temps :
// Pour les boutons dont l'action fait des requetes SQL,
// le bandeau des gadgets s'affiche en deux temps :
// 1. On affiche un minimum de <div> permettant aux boutons de jouer
// du on/off au survol
// -> fonction bandeau_gadgets()
// 2. En fin de page on envoie le vrai contenu (bien lourd) via innerHTML
// -> fonction dessiner_gadgets()
// 2. Au survol, sera execute un script en Ajax menu_{gadget}.php
//
// http://doc.spip.org/@inc_gadgets_dist
function inc_gadgets_dist($id_rubrique, $gadget)
{
$gadget = 'gadget_' . $gadget;
return (function_exists($gadget)) ? $gadget($id_rubrique) : '';
}
//
// GADGET DES RUBRIQUES
//
// http://doc.spip.org/@extraire_article
function extraire_article($id_p) {
if (array_key_exists($id_p, $GLOBALS['db_art_cache'])) {
return $GLOBALS['db_art_cache'][$id_p];
} else {
return array();
}
}
// http://doc.spip.org/@gen_liste_rubriques
function gen_liste_rubriques() {
// ici, un petit fichier cache ne fait pas de mal
if (lire_fichier(_DIR_TMP.'cache-menu-rubriques.txt', $cache)
AND list($date,$GLOBALS['db_art_cache']) = @unserialize($cache)
AND $date == $GLOBALS['meta']["date_calcul_rubriques"])
return; // c'etait en cache :-)
// se restreindre aux rubriques utilisees recemment +secteurs
$liste="0";
$s = spip_query("SELECT id_rubrique FROM spip_rubriques ORDER BY id_parent=0 DESC, date DESC LIMIT 500");
while ($t = spip_fetch_array($s))
$liste .=",".$t['id_rubrique'];
$res = spip_query("SELECT id_rubrique, id_parent, titre FROM spip_rubriques WHERE id_rubrique IN ($liste) ORDER BY id_parent,0+titre,titre");
// il ne faut pas filtrer le autoriser voir ici car on met le resultat en cache, commun a tout le monde
$GLOBALS['db_art_cache'] = array();
if (spip_num_rows($res) > 0) {
while ($row = spip_fetch_array($res)) {
$id = $row['id_rubrique'];
$parent = $row['id_parent'];
$GLOBALS['db_art_cache'][$parent][$id] =
supprimer_numero(typo(sinon($row['titre'], _T('ecrire:info_sans_titre'))));
}
}
// ecrire dans le cache
ecrire_fichier(_DIR_TMP.'cache-menu-rubriques.txt',
serialize(array(
$GLOBALS['meta']["date_calcul_rubriques"],
$GLOBALS['db_art_cache']
))
);
}
// http://doc.spip.org/@gadget_rubriques
function gadget_rubriques() {
global $spip_ecran;
$largeur_t = ($spip_ecran == "large") ? 900 : 650;
gen_liste_rubriques();
$arr_low = extraire_article(0);
$total_lignes = $i = sizeof($arr_low);
$ret = '';
if ($i > 0) {
$nb_col = min(8,ceil($total_lignes / 30));
if ($nb_col <= 1) $nb_col = ceil($total_lignes / 10);
$max_lignes = ceil($total_lignes / $nb_col);
$largeur = min(200, ceil($largeur_t / $nb_col));
$count_lignes = 0;
$style = " style='z-index: 0; vertical-align: top;'";
foreach( $arr_low as $id_rubrique => $titre_rubrique) {
if ($count_lignes == $max_lignes) {
$count_lignes = 0;
$ret .= "</div></td>\n<td$style><div class='bandeau_rubriques'>";
}
$count_lignes ++;
if (autoriser('voir','rubrique',$id_rubrique)){
$ret .= bandeau_rubrique($id_rubrique, $titre_rubrique, 1, $largeur);
}
}
$ret = "<table><tr>\n<td$style><div class='bandeau_rubriques'>"
. $ret
. "\n</div></td></tr></table>\n";
}
unset($GLOBALS['db_art_cache']); // On libere la memoire
return "<div>&nbsp;</div>" . $ret;
}
// http://doc.spip.org/@bandeau_rubrique
function bandeau_rubrique($id_rubrique, $titre_rubrique, $zdecal, $largeur) {
global $spip_ecran, $spip_display;
global $spip_lang, $spip_lang_rtl, $spip_lang_left, $spip_lang_right;
$titre_rubrique = preg_replace(',[\x00-\x1f]+,', ' ', $titre_rubrique);
// Limiter volontairement le nombre de sous-menus
$zmax = 6;
if ($zdecal == 1) $image = "secteur-12.gif";
//else $image = "rubrique-12.gif";
else $image = '';
if ($image)
$image = " background-image: url(" . http_wrapper($image) .");";
$nav = "<a href='"
. generer_url_ecrire('naviguer', 'id_rubrique='.$id_rubrique)
. "'\nclass='bandeau_rub' style='width: "
. $largeur
. "px;"
. $image
. "'>\n&nbsp;"
. supprimer_tags($titre_rubrique)
. "</a>\n";
if ($zdecal >= $zmax) return "\n<div>$nav</div>";
$arr_rub = extraire_article($id_rubrique);
$i = sizeof($arr_rub);
if (!$i) return "\n<div>$nav</div>";
$pxdecal = max(15, ceil($largeur/5)) . 'px';
$idom = 'b_' . $id_rubrique;
$ret = "<div class='pos_r'
onmouseover=\"montrer('$idom');\"
onmouseout=\"cacher('$idom'); \">"
. '<div class="brt">'
. $nav
. "</div>\n<div class='bandeau_rub' style='top: 14px; left: "
. $pxdecal
. "; z-index: "
. $zdecal
. ";' id='"
. $idom
. "'><table cellspacing='0' cellpadding='0'><tr><td valign='top'>";
if ($nb_rub = count($arr_rub)) {
$nb_col = min(10,max(1,ceil($nb_rub / 10)));
$ret_ligne = max(4,ceil($nb_rub / $nb_col));
}
$count_ligne = 0;
foreach( $arr_rub as $id_rub => $titre_rub) {
$count_ligne ++;
if ($count_ligne > $ret_ligne) {
$count_ligne = 0;
$ret .= "</td>";
$ret .= '<td valign="top" style="border-left: 1px solid #cccccc;">';
}
if (autoriser('voir','rubrique',$id_rub)){
$titre = supprimer_numero(typo($titre_rub));
$ret .= bandeau_rubrique($id_rub, $titre, $zdecal+1, $largeur);
}
}
$ret .= "</td></tr></table>\n";
$ret .= "</div></div>\n";
return $ret;
}
// FIN GADGET DES RUBRIQUES
//
// GADGET DE NAVIGATION RAPIDE
//
// http://doc.spip.org/@gadget_navigation
function gadget_navigation($id_rubrique) {
global $connect_id_auteur, $connect_login, $connect_statut, $couleur_claire,$couleur_foncee, $spip_lang_left, $spip_lang_right, $spip_ecran;
$gadget = '<div style="width: 300px;">';
$vos_articles = spip_query("SELECT articles.id_article, articles.id_rubrique, articles.titre, articles.statut FROM spip_articles AS articles, spip_auteurs_articles AS lien WHERE articles.id_article=lien.id_article AND lien.id_auteur=$connect_id_auteur AND articles.statut='prepa' ORDER BY articles.date DESC LIMIT 5");
if (spip_num_rows($vos_articles) > 0) {
$gadget .= "<div>&nbsp;</div>";
$gadget .= "<div class='bandeau_rubriques' style='z-index: 1;'>";
$gadget .= bandeau_titre_boite2(afficher_plus(generer_url_ecrire("articles_page","")) . '<b>' ._T('info_en_cours_validation') . '</b>', "article-24.gif", $couleur_foncee, 'white', false);
$gadget .= "\n<div class='plan-articles'>\n";
while($row = spip_fetch_array($vos_articles)) {
$id_article = $row['id_article'];
$titre = typo(sinon($row['titre'], _T('ecrire:info_sans_titre')));
$statut = $row['statut'];
$gadget .= "<a class='$statut spip_xx-small' href='" . generer_url_ecrire("articles","id_article=$id_article") . "'>$titre</a>\n";
}
$gadget .= "</div>";
$gadget .= "</div>";
}
$vos_articles = spip_query("SELECT id_article, id_rubrique, titre, statut FROM spip_articles WHERE statut='prop' ORDER BY date DESC LIMIT 5");
if (spip_num_rows($vos_articles) > 0) {
$gadget .= "<div>&nbsp;</div>";
$gadget .= "<div class='bandeau_rubriques' style='z-index: 1;'>";
$gadget .= bandeau_titre_boite2(afficher_plus('./') . '<b>' . _T('info_articles_proposes') . '</b>', "article-24.gif", $couleur_foncee, 'white', false);
$gadget .= "<div class='plan-articles'>";
while($row = spip_fetch_array($vos_articles)) {
$id_article = $row['id_article'];
$titre = sinon($row['titre'], _T('ecrire:info_sans_titre'));
$statut = $row['statut'];
$gadget .= "<a class='$statut spip_xx-small' href='" . generer_url_ecrire("articles","id_article=$id_article") . "'>$titre</a>";
}
$gadget .= "</div>";
$gadget .= "</div>";
}
$vos_articles = spip_query("SELECT * FROM spip_breves WHERE statut='prop' ORDER BY date_heure DESC LIMIT 5");
if (spip_num_rows($vos_articles) > 0) {
$gadget .= "<div>&nbsp;</div>";
$gadget .= "<div class='bandeau_rubriques' style='z-index: 1;'>";
$gadget .= bandeau_titre_boite2(afficher_plus(generer_url_ecrire("breves")).'<b>' . _T('info_breves_valider') . '</b>', "breve-24.gif", "$couleur_foncee", "white", false);
$gadget .= "<div class='plan-articles'>";
while($row = spip_fetch_array($vos_articles)) {
$id_breve = $row['id_breve'];
$titre = typo(sinon($row['titre'], _T('ecrire:info_sans_titre')));
$statut = $row['statut'];
$gadget .= "<a class='$statut spip_xx-small' href='" . generer_url_ecrire("breves_voir","id_breve=$id_breve") . "'>$titre</a>";
}
$gadget .= "</div>";
$gadget .= "</div>";
}
$result = spip_query("SELECT id_rubrique FROM spip_rubriques LIMIT 1");
if (spip_num_rows($result) > 0) {
$gadget .= "<div>&nbsp;</div>";
if ($id_rubrique > 0) {
$dans_rub = "&id_rubrique=$id_rubrique";
$dans_parent = "&id_parent=$id_rubrique";
} else $dans_rub = $dans_parent = '';
if ($connect_statut == "0minirezo") {
$gadget .= "<div style='width: 140px; float: $spip_lang_left;'>";
if ($id_rubrique > 0)
$gadget .= icone_horizontale(_T('icone_creer_sous_rubrique'), generer_url_ecrire("rubriques_edit","new=oui$dans_parent"), "rubrique-24.gif", "creer.gif", false);
else
$gadget .= icone_horizontale(_T('icone_creer_rubrique'), generer_url_ecrire("rubriques_edit","new=oui"), "rubrique-24.gif", "creer.gif", false);
$gadget .= "</div>";
}
$gadget .= "<div style='width: 140px; float: $spip_lang_left;'>";
$gadget .= icone_horizontale(_T('icone_ecrire_article'), generer_url_ecrire("articles_edit","new=oui$dans_rub"), "article-24.gif","creer.gif", false);
$gadget .= "</div>";
if ($GLOBALS['meta']["activer_breves"] != "non") {
$gadget .= "<div style='width: 140px; float: $spip_lang_left;'>";
$gadget .= icone_horizontale(_T('icone_nouvelle_breve'), generer_url_ecrire("breves_edit","new=oui$dans_rub"), "breve-24.gif","creer.gif", false);
$gadget .= "</div>";
}
if ($GLOBALS['meta']["activer_sites"] == 'oui') {
if ($connect_statut == '0minirezo' OR $GLOBALS['meta']["proposer_sites"] > 0) {
$gadget .= "<div style='width: 140px; float: $spip_lang_left;'>";
$gadget .= icone_horizontale(_T('info_sites_referencer'), generer_url_ecrire("sites_edit","new=oui$dans_parent"), "site-24.gif","creer.gif", false);
$gadget .= "</div>";
}
}
}
$gadget .="</div>";
return $gadget;
}
// http://doc.spip.org/@bandeau_gadgets
function bandeau_gadgets($largeur, $options, $id_rubrique) {
global $connect_id_auteur, $connect_login, $connect_statut, $couleur_claire,$couleur_foncee, $spip_lang_left, $spip_lang_right, $spip_ecran;
......@@ -433,25 +161,6 @@ function bandeau_gadgets($largeur, $options, $id_rubrique) {
return $bandeau;
}
// http://doc.spip.org/@gadget_agenda
function gadget_agenda() {
global $connect_id_auteur;
list($evtm, $evtt, $evtr) = http_calendrier_messages(date("Y"), date("m"), date("d"));
return "<table><tr>"
. "<td style='width: 200px; vertical-align: top;' >"
. "<div>"
. $evtm
. "</div>"
. "</td>"
. (!$evtt ? '' :
( "<td style='width: 10px; vertical-align: top'> &nbsp; </td>"
. "<td style='width: 200px; color: black; vertical-align: top'>"
. "<div>&nbsp;</div>$evtt</td>"))
. "</tr></table>";
}
// http://doc.spip.org/@gadget_messagerie
function gadget_messagerie() {
global $connect_statut;
......@@ -463,45 +172,88 @@ function gadget_messagerie() {
icone_horizontale(_T('lien_nouvelle_annonce'),generer_action_auteur("editer_message","affich"), "annonce.gif",'',false));
}
function installer_gadgets($id_rubrique)
{
return "<a id='boutonbandeautoutsite' href='"
. generer_url_ecrire("articles_tous")
. "' class='icone26' onmouseover=\"changestyle('bandeautoutsite');\" onfocus=\"changestyle('bandeautoutsite');\" onblur=\"changestyle('bandeautoutsite');\">"
. http_img_pack("tout-site.png", _T('icone_site_entier'), "width='26' height='20'")
. "</a>"
. "<a id='boutonbandeaunavrapide' href='"
. generer_url_ecrire("brouteur",($id_rubrique ? "id_rubrique=$id_rubrique" : ''))
. "' class='icone26' onmouseover=\"changestyle('bandeaunavrapide');\" onfocus=\"changestyle('bandeaunavrapide');\" onblur=\"changestyle('bandeaunavrapide');\">"
. http_img_pack("naviguer-site.png", _T('icone_brouteur'), "width='26' height='20'")
."</a>"
. "<a href='"
. generer_url_ecrire("recherche")
. "' class='icone26' onmouseover=\"changestyle('bandeaurecherche'); jQuery('#form_recherche')[0].focus();\" onfocus=\"changestyle('bandeaurecherche');\" onblur=\"changestyle('bandeaurecherche');\">"
. http_img_pack("loupe.png", _T('info_rechercher'), "width='26' height='20'")
."</a>"
. http_img_pack("rien.gif", "", "width='10'")
. "<a id='boutonbandeauagenda' href='"
. generer_url_ecrire("calendrier","type=semaine")
. "' class='icone26' onmouseover=\"changestyle('bandeauagenda');\">"
. http_img_pack("cal-rv.png", _T('icone_agenda'), "width='26' height='20'")
."</a>"
. "<a href='"
. generer_url_ecrire("messagerie")
. "' class='icone26' onmouseover=\"changestyle('bandeaumessagerie');\" onfocus=\"changestyle('bandeaumessagerie');\" onblur=\"changestyle('bandeaumessagerie');\">"
. http_img_pack("cal-messagerie.png", _T('icone_messagerie_personnelle'), "width='26' height='20'")
."</a>"
. "<a href='"
. generer_url_ecrire("synchro")
. "' class='icone26' onmouseover=\"changestyle('bandeausynchro');\" onfocus=\"changestyle('bandeausynchro');\" onblur=\"changestyle('bandeausynchro');\">"
. http_img_pack("cal-suivi.png", _T('icone_suivi_activite'), "width='26' height='20'")
. "</a>";
}
// http://doc.spip.org/@repercuter_gadgets
function repercuter_gadgets($id_rubrique) {
if (!_SPIP_AJAX) return '';
// ne sert ici qu'a caracteriser l'asynchronisme de ces scripts,
// afin de les neutraliser lors d'une restauration
// afin de les ignorer lors des scripts speciaux (restauration etc).
$ajax = "\\x26var_ajaxcharset=utf8" ;
$rub = $ajax . ($id_rubrique ? "\\x26id_rubrique=$id_rubrique" : '');
// comme on cache fortement ce menu, son url change en fonction de sa date de modif
$date = $GLOBALS['meta']['date_calcul_rubriques'];
return
// Seul le gadget des rubriques (potentiellement lourd) est charge en ajax
"
jQuery('#boutonbandeautoutsite')
.parent()
.one('mouseover',function(){
changestyle('bandeautoutsite');
jQuery('#gadget-rubriques')
.load('./?exec=gadgets\\x26gadget=rubriques$ajax\\x26date=$date');
.load('./?exec=menu_rubriques$ajax\\x26date=$date');
})
.one('focus', function(){jQuery(this).mouseover();});"
// les autres sont remplis ici
."
jQuery('#gadget-navigation')
.html('".addslashes(strtr(gadget_navigation($id_rubrique),"\n\r"," "))."');
"
jQuery('#boutonbandeaunavrapide')
.parent()
.one('mouseover',function(){
changestyle('bandeaunavrapide');
jQuery('#gadget-navigation')
.load('./?exec=menu_navigation$ajax\\x26id_rubrique=$id_rubrique');
})
.one('focus', function(){jQuery(this).mouseover();});"
."
jQuery('#gadget-agenda')
.html('".addslashes(strtr(gadget_agenda($id_rubrique),"\n\r"," "))."');
"
jQuery('#boutonbandeauagenda')
.parent()
.one('mouseover',function(){
changestyle('bandeauagenda');
jQuery('#gadget-agenda')
.load('./?exec=menu_agenda$ajax');
})
.one('focus', function(){jQuery(this).mouseover();});"
."
jQuery('#gadget-messagerie')
.html('".addslashes(strtr(gadget_messagerie($id_rubrique),"\n\r"," "))."');
.html('".addslashes(strtr(gadget_messagerie(),"\n\r"," "))."');
"
// la case de recherche s'efface la premiere fois qu'on la clique
......@@ -509,7 +261,6 @@ function repercuter_gadgets($id_rubrique) {
jQuery('#form_recherche')
.one('click',function(){this.value='';});
";
}
?>
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter