Example #1
0
/**
 * Sélecteur de rubriques pour l'espace privé en mode classique (menu)
 *
 * @uses sous_menu_rubriques()
 * 
 * @param int $id_rubrique
 *     Identifiant de rubrique courante (0 si NEW)
 * @param string $type
 *     Type de l'objet à placer.
 * @param bool $restreint
 *     True pour indiquer qu'il faut limiter les rubriques affichées
 *     aux rubriques éditables par l'admin restreint
 * @param int $idem
 *     En mode rubrique, identifiant de soi-même
 * @return string
 *     Code HTML du sélecteur
**/
function selecteur_rubrique_html($id_rubrique, $type, $restreint, $idem = 0)
{
    $data = array();
    if ($type == 'rubrique' and autoriser('publierdans', 'rubrique', 0)) {
        $data[0] = _T('info_racine_site');
    } elseif ($type == 'auteur' or !$id_rubrique) {
        $data[0] = ' ';
    }
    //
    // creer une structure contenant toute l'arborescence
    //
    include_spip('base/abstract_sql');
    $q = sql_select("id_rubrique, id_parent, titre, statut, lang, langue_choisie", "spip_rubriques", $type == 'breve' ? ' id_parent=0 ' : '', '', "0+titre,titre");
    while ($r = sql_fetch($q)) {
        if (autoriser('voir', 'rubrique', $r['id_rubrique'])) {
            // titre largeur maxi a 50
            $titre = couper(supprimer_tags(typo($r['titre'])) . " ", 50);
            if ($GLOBALS['meta']['multi_rubriques'] == 'oui' and ($r['langue_choisie'] == "oui" or $r['id_parent'] == 0)) {
                $titre .= ' [' . traduire_nom_langue($r['lang']) . ']';
            }
            $data[$r['id_rubrique']] = $titre;
            $enfants[$r['id_parent']][] = $r['id_rubrique'];
            if ($id_rubrique == $r['id_rubrique']) {
                $id_parent = $r['id_parent'];
            }
        }
    }
    // si une seule rubrique comme choix possible,
    // inutile de mettre le selecteur sur un choix vide par defaut
    // sauf si le selecteur s'adresse a une rubrique puisque on peut la mettre a la racine dans ce cas
    if (count($data) == 2 and isset($data[0]) and !in_array($type, array('auteur', 'rubrique')) and !$id_rubrique) {
        unset($data[0]);
    }
    $opt = sous_menu_rubriques($id_rubrique, 0, 0, $data, $enfants, $idem, $restreint, $type);
    $att = " id='id_parent' name='id_parent'\nclass='selecteur_parent verdana1'";
    if (preg_match(',^<option[^<>]*value=.(\\d*).[^<>]*>([^<]*)</option>$,', $opt, $r)) {
        $r = "<input{$att} type='hidden' value='" . $r[1] . "' />" . $r[2];
    } else {
        $r = "<select" . $att . " size='1'>\n{$opt}</select>\n";
    }
    # message pour neuneus (a supprimer ?)
    #	if ($type != 'auteur' AND $type != 'breve')
    #		$r .= "\n<br />"._T('texte_rappel_selection_champs');
    return $r;
}
Example #2
0
function selecteur_rubrique_html($id_rubrique, $type, $restreint, $idem=0) {
	$data = array();
	if ($type == 'rubrique')
		$data[0] = _T('info_racine_site');
	if ($type == 'auteur')
		$data[0] = '&nbsp;'; # premier choix = neant (rubriques restreintes)

	//
	// creer une structure contenant toute l'arborescence
	//

	include_spip('base/abstract_sql');
	$where = array();
	if ($type == 'breve')
		$where[]= ' id_parent=0 ';
	if (is_array($restreint) AND $restreint)
		$where[]= sql_in('id_rubrique', $restreint);

	$q = sql_select("id_rubrique, id_parent, titre, statut, lang, langue_choisie", "spip_rubriques", join(' AND ', $where), '', "0+titre,titre");
	while ($r = sql_fetch($q)) {
		if (autoriser('voir','rubrique',$r['id_rubrique'])){
			// titre largeur maxi a 50
			$titre = couper(supprimer_tags(typo($r['titre']))." ", 50);
			if ($GLOBALS['meta']['multi_rubriques'] == 'oui'
			AND ($r['langue_choisie'] == "oui" OR $r['id_parent'] == 0))
				$titre .= ' ['.traduire_nom_langue($r['lang']).']';
			$data[$r['id_rubrique']] = $titre;
			$enfants[$r['id_parent']][] = $r['id_rubrique'];
		}
	}


	$opt = sous_menu_rubriques($id_rubrique,0, 0,$data,$enfants,$idem, $restreint, $type);
	$att = " id='id_parent' name='id_parent'\nclass='selecteur_parent verdana1'";

	if (preg_match(',^<option[^<>]*value=.(\d*).[^<>]*>([^<]*)</option>$,',$opt,$r))
	  $r = "<input$att type='hidden' value='" . $r[1] . "' />" . $r[2] ;
	else 
	  $r = "<select$att size='1'>\n$opt</select>\n";

	# message pour neuneus (a supprimer ?)
#	if ($type != 'auteur' AND $type != 'breve')
#		$r .= "\n<br />"._T('texte_rappel_selection_champs');

	return $r;
}