Suggest est un code JavaScript contenant des fonctions génériques destinées à créer des zones de suggestion pour un champ de saisie (<input type="text" />).
L'ajout d’une liste de suggestion se fait par la syntaxe suivante :
Suggest_AddPageSuggestion({
"InputNode" : champTexte,
"NSFilter" : espaceDeNom,
"StripNS" : afficherLespaceDeNom,
"SuggestLimit" : maxSuggestions,
"SuggestListSize" : tailleListe,
"AddExist" : avecIcône,
"ListDown" : enDessous,
"Prefix" : préfixe,
"Suffix" : suffixe,
"RedirectFilter" : filtreRedirect
});
On peut insérer autant de liste de suggestions que l'on souhaite, chacune pouvant être paramétrée différemment.
Hormis "InputNode", tous les paramètres sont facultatifs.
Ce paramètre est obligatoire. Il doit correspondre à un élément <input type="text" /> existant, soit dans le DOM de la page soit inséré dans un autre élément
L'id de cette balise est généré automatiquement. Si une balise a déjà une id, la fonction recherche un <label> associé et met à jour son attribut "for". Cette id est renvoyée par la fonction (voir plus bas)
Ce paramètre permet de spécifier un espace de noms pour filtrer la requête.
Mis à "false", les suggestions intègrent toutes les pages. Pour rechercher une page avec espace de noms, il est nécessaire de rentrer l'espace de noms dans le champ de saisie, par exemple Projet:Scripts et gadgets/Notices/Suggest.
Si paramétré selon un espace de noms (qui existe), Seules les pages de cet espace de noms sont recherchées. Il n'est pas nécessaire de rentrer l'espace de noms pour débuter la recherche.
Si paramétré à "true", l'espace de noms est masqué dans les suggestions et est automatiquement retiré du champ de saisie si espaceDeNom est différent de "false"
Ce paramètre est obligatoirement à "false" si espaceDeNom est à "false", et obligatoirement à "true" si préfixe est défini.
Ce paramètre permet de préciser la limite de la requête, et donc le nombre maximum de pages qui seront suggérées.
Ce paramètre permet de préciser la taille de la liste de suggestion, c'est-à-dire le nombre de suggestions visibles dans la liste déroulante.
Ce paramètre permet de préciser si l'icône marquant l'existence ou non de la page saisie doit être affichée ou non.
Note aux développeurs : l'existence ou non de la page saisie est également indiquée via l'attribut "value" d’une <input type="hidden" /> : 0 si la page n'existe pas, 1 si elle existe.
Ce paramètre permet d'afficher le liste de suggestion en dessous de la zone de saisie plutôt qu'au-dessus.
Ce paramètre permet de préciser un préfixe pour la recherche de pages.
Ce paramètre permet de préciser un suffixe pour la recherche de pages.
Le filtrage s'effectuant après la requête, il est conseiller d'élever la limite de cette dernière (paramètre maxSuggestions)
Ce paramètre permet de préciser les options de filtrage des redirection.
Il peut prendre trois valeurs :
Cette fonction permet de récupérer le numéro d'index des éléments créés par la fonction principale avec la syntaxe suivante :
var Index = Suggest_GetSuggestionIndex(Element);
Ce numéro correspond au nombre accolé à l'ID des éléments. Ces id on les valeurs suivantes :
<input type="text" />)<select />)<input type="hidden" />)<img />)Le n° récupéré par cette fonction correspond à la valeur de x. Il est identique pour tous les éléments d'un même set. Le connaître permet donc de récupérer les autres éléments du set, ainsi que ses paramètres de configuration, contenus dans un tableau :
<input type="text" />)<select />)<input type="hidden" />)<img />)Remarques :
var Index = Suggest_AddPageSuggestion({
"InputNode" : champTexte,
"NSFilter" : espaceDeNom,
"StripNS" : afficherLespaceDeNom,
"SuggestLimit" : maxSuggestions,
"SuggestListSize" : tailleListe,
"AddExist" : avecIcône,
"ListDown" : enDessous,
"Prefix" : préfixe,
"Suffix" : suffixe,
"RedirectFilter" : filtreRedirect
});
Une fonction permet de créer un menu déroulant de sélection d'espace de noms avec la syntaxe suivante :
var Menu = Suggest_AddNamespaceSuggestion(ID, CLASS);
La fonction renvoie l'élément <select>. Celui-ci reste à insérer dans le DOM.
Les deux paramètres sont facultatifs :
<select><select>Différentes infos sur le titre d’une page peuvent être récupérées avec la syntaxe suivante
var Info = Suggest_GetNamespaceInfoFormPage(Page, ToReturn);
if(typeof(Suggest_AddPageSuggestion)!="function") obtenir('Suggest');
addOnloadHook(function(){
var Div = document.createElement('div');
Div.innerHTML = ''
+ '<div id="TestSuggest" style="text-align:justify;" >'
+ '<form style="display:block">'
+ '<input id="SuggestNSAllNoStrip" name="Page" type="text" value="" />'
+ '<label for="SuggestNSAllNoStrip" >NS = All ; NoStrip ; AddExist = true ; ListDown = true ; SuggestLimit = 20 ; SuggestListSize = 8</label>'
+ '</form>'
+ '<form style="display:block">'
+ '<input id="SuggestNS14Strip" name="Page" type="text" value="" />'
+ '<label for="SuggestNS14Strip" >NS = 14 ; Strip ; AddExist = true</label>'
+ '</form>'
+ '<form style="display:block">'
+ '<input id="SuggestNS14NoStrip" name="Page" type="text" value="" />'
+ '<label for="SuggestNS14NoStrip" >NS = 14 ; NoStrip ; AddExist = true</label>'
+ '</form>'
+ '<form style="display:block">'
+ '<input id="SuggestPortail" name="Page" type="text" value="" />'
+ '<label for="SuggestPortail" >NS = 10 ; NoStrip ; Prefix = Portail ; AddExist = true ; ListDown = true</label>'
+ '</form>'
+ '<form style="display:block">'
+ '<input id="SuggestSuffix" name="Page" type="text" value="" />'
+ '<label for="SuggestSuffix" >NS = 8 ; Strip ; Suffix = .js ; SuggestLimit = 50</label>'
+ '</form>'
+ '</div>';
var Content = document.getElementById('bodyContent');
Content.insertBefore(Div, Content.firstChild);
Suggest_AddPageSuggestion({
"InputNode" : document.getElementById("SuggestNSAllNoStrip"),
"SuggestLimit" : 20,
"SuggestListSize" : 8,
"AddExist" : true,
"ListDown" : true
});
Suggest_AddPageSuggestion({
"InputNode" : document.getElementById("SuggestNS14Strip"),
"NSFilter" : 14,
"StripNS" : true,
"AddExist" : true
});
Suggest_AddPageSuggestion({
"InputNode" : document.getElementById("SuggestNS14NoStrip"),
"NSFilter" : 14,
"AddExist" : true
});
Suggest_AddPageSuggestion({
"InputNode" : document.getElementById("SuggestPortail"),
"NSFilter" : 10,
"AddExist" : true,
"ListDown" : true,
"Prefix" : "Portail "
});
Suggest_AddPageSuggestion({
"InputNode" : document.getElementById("SuggestSuffix"),
"NSFilter" : 8,
"StripNS" : true,
"SuggestLimit" : 50,
"Suffix" : ".js"
});
});