/** * 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; }
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] = ' '; # 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; }