Пример #1
0
/**
 * Retourne une liste HTML des rubriques enfants d'une rubrique
 *
 * @uses extraire_article()
 *
 * @param int $id_rubrique
 *     Identifiant de la rubrique parente
 * @param string $titre_rubrique
 *     Titre de cette rubrique
 * @param int $zdecal
 *     Décalage vertical, en nombre d'élément
 *
 * @return string
 *     Code HTML présentant la liste des rubriques
 **/
function bandeau_rubrique($id_rubrique, $titre_rubrique, $zdecal)
{
    static $zmax = 6;
    $nav = "<a href='" . generer_url_entite($id_rubrique, 'rubrique', '', '', false) . "'>" . supprimer_tags(preg_replace(',[\\x00-\\x1f]+,', ' ', $titre_rubrique)) . "</a>\n";
    // Limiter volontairement le nombre de sous-menus
    if (!--$zmax) {
        $zmax++;
        return "\n<li>{$nav}</li>";
    }
    $arr_rub = extraire_article($id_rubrique, $GLOBALS['db_art_cache']);
    $i = sizeof($arr_rub);
    if (!$i) {
        $zmax++;
        return "\n<li>{$nav}</li>";
    }
    $nb_col = 1;
    if ($nb_rub = count($arr_rub)) {
        $nb_col = min(10, max(1, ceil($nb_rub / 10)));
    }
    $ret = "<li class='haschild'>{$nav}<ul class='cols_{$nb_col}'>";
    foreach ($arr_rub as $id_rub => $titre_rub) {
        if (autoriser('voir', 'rubrique', $id_rub)) {
            $titre = supprimer_numero(typo($titre_rub));
            $ret .= bandeau_rubrique($id_rub, $titre, $zdecal + $i);
            $i++;
        }
    }
    $ret .= "</ul></li>\n";
    $zmax++;
    return $ret;
}
Пример #2
0
function bandeau_rubrique($id_rubrique, $titre_rubrique, $zdecal, $largeur, $image='') {

	global $spip_lang_left;

	static $zmax = 6;

	$nav = "<a href='"
	. generer_url_ecrire('naviguer', 'id_rubrique='.$id_rubrique)
	. "'\nclass='bandeau_rub$image' style='width: "
	. $largeur
	. "px;'>\n&nbsp;"
	. supprimer_tags(preg_replace(',[\x00-\x1f]+,', ' ', $titre_rubrique))
	. "</a>\n";

	// Limiter volontairement le nombre de sous-menus 
	if (!(--$zmax)) {
		$zmax++;
		return "\n<div>$nav</div>";
	}

	$arr_rub = extraire_article($id_rubrique, $GLOBALS['db_art_cache']);
	$i = sizeof($arr_rub);
	if (!$i) {
		$zmax++;
		return "\n<div>$nav</div>";
	}

	$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 .= "<div class='pos_r' style='z-index: "
	. $zdecal . ";' onmouseover=\"bandeauHover(this);\">"
	. '<div class="brt">'
	. $nav
	. "</div>\n<div class='bandeau_rub' style='top: 14px; $spip_lang_left: "
	. $pxdecal
	. "; z-index: "
	. ($zdecal+1)
	. "'><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+$i, $largeur);
				$i--;
			}
		}
	$ret .= "</td></tr></table>\n";
	$ret .= "</div></div>\n";

	$zmax++;
	return $ret;
}