X-Git-Url: http://git.cyclocoop.org/?p=velocampus%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fecrire%2Fexec%2Fmenu_rubriques.php;fp=www%2Fecrire%2Fexec%2Fmenu_rubriques.php;h=dc3e31a0bb8e928423694c8bb8f2d201b804a8c9;hp=0000000000000000000000000000000000000000;hb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed;hpb=aaf970bf4cdaf76689ecc10609048e18d073820c diff --git a/www/ecrire/exec/menu_rubriques.php b/www/ecrire/exec/menu_rubriques.php new file mode 100644 index 0000000..dc3e31a --- /dev/null +++ b/www/ecrire/exec/menu_rubriques.php @@ -0,0 +1,192 @@ + 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;'"; + $image = " petit-secteur"; + foreach( $arr_low as $id_rubrique => $titre_rubrique) { + if ($count_lignes == $max_lignes) { + $count_lignes = 0; + + $ret .= "\n
"; + } + $count_lignes ++; + if (autoriser('voir','rubrique',$id_rubrique)){ + $ret .= bandeau_rubrique($id_rubrique, $titre_rubrique, $i, $largeur, $image); + $i--; + } + } + + $ret = "\n
" + . $ret + . "\n
\n"; + } + + include_spip('inc/actions'); + ajax_retour("
 
" . $ret); + } +} + + +// http://doc.spip.org/@bandeau_rubrique +function bandeau_rubrique($id_rubrique, $titre_rubrique, $zdecal, $largeur, $image='') { + + global $spip_lang_left; + + static $zmax = 6; + + $nav = "\n " + . supprimer_tags(preg_replace(',[\x00-\x1f]+,', ' ', $titre_rubrique)) + . "\n"; + + // Limiter volontairement le nombre de sous-menus + if (!(--$zmax)) { + $zmax++; + return "\n
$nav
"; + } + + $arr_rub = extraire_article($id_rubrique, $GLOBALS['db_art_cache']); + $i = sizeof($arr_rub); + if (!$i) { + $zmax++; + return "\n
$nav
"; + } + + $pxdecal = max(15, ceil($largeur/5)) . 'px'; + + $ret = http_script("// http://doc.spip.org/@bandeauHover +// http://doc.spip.org/@bandeauHover + function bandeauHover(r) { + if (!$(r).is('.hovered')) + $(r) + .addClass('hovered') + .children('.bandeau_rub') + .css('visibility', 'visible') // bizarre + .show() + .end() + .hover( + function(){\$(this).children('.bandeau_rub').show();}, + function(){\$(this).children('.bandeau_rub').hide();} + ); + };"); + + $ret .= "
" + . '
' + . $nav + . "
\n
"; + $ret .= '
"; + + 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 .= "'; + + } + if (autoriser('voir','rubrique',$id_rub)){ + $titre = supprimer_numero(typo($titre_rub)); + $ret .= bandeau_rubrique($id_rub, $titre, $zdecal+$i, $largeur); + $i--; + } + } + $ret .= "
\n"; + $ret .= "
\n"; + + $zmax++; + return $ret; +} + + +// http://doc.spip.org/@extraire_article +function extraire_article($id_p, $t) { + return array_key_exists($id_p, $t) ? $t[$id_p]: array(); +} + +// http://doc.spip.org/@gen_liste_rubriques +function gen_liste_rubriques() { + + // ici, un petit fichier cache ne fait pas de mal + $last = $GLOBALS['meta']["date_calcul_rubriques"]; + if (lire_fichier(_CACHE_RUBRIQUES, $cache)) { + list($date,$GLOBALS['db_art_cache']) = @unserialize($cache); + if ($date == $last) return false; // c'etait en cache :-) + } + // se restreindre aux rubriques utilisees recemment +secteurs + + $where = sql_in_select("id_rubrique", "id_rubrique", "spip_rubriques", "", "", "id_parent=0 DESC, date DESC", _CACHE_RUBRIQUES_MAX); + + // puis refaire la requete pour avoir l'ordre alphabetique + + $res = sql_select("id_rubrique, titre, id_parent", "spip_rubriques", $where, '', '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(); + while ($r = sql_fetch($res)) { + $t = sinon($r['titre'], _T('ecrire:info_sans_titre')); + $GLOBALS['db_art_cache'][$r['id_parent']][$r['id_rubrique']] = supprimer_numero(typo($t)); + } + + $t = array($last ? $last : time(), $GLOBALS['db_art_cache']); + ecrire_fichier(_CACHE_RUBRIQUES, serialize($t)); + return true; +} +?>