Utilisateur:Dr Brains/SearchPageList.js

Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;

Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
SearchPageList = new Object();
SearchPageList.Textes = new Object();
SearchPageList.Params = new Object();
SearchPageList.Variables = new Object();
SearchPageList.Fonctions = new Object();

 
////////////////////////////// DEBUT DE LA PARTIE PERSONNALISABLE ////////////////////////////


SearchPageList.Params.SpecialPageName = "SearchPageList";


SearchPageList.Textes.SpecialPageText = "Rechercher pages";
SearchPageList.Textes.SpecialPageTitle = "Rechercher une liste de pages";
SearchPageList.Textes.SpecialPageOptionLegend = "Options de recherche";

SearchPageList.Textes.CheckboxAllPagesLabel = "Toutes les pages";
SearchPageList.Textes.CheckboxAllPagesOptionItemPrefixLabel = "Préfixe";
SearchPageList.Textes.CheckboxAllPagesOptionItemNamespaceLabel = "Espace de noms";

SearchPageList.Textes.CheckboxCategoryLabel = "Pages d’une catégorie";
SearchPageList.Textes.CheckboxCategoryOptionItemPrefixLabel = "Catégorie";

SearchPageList.Textes.RunSearchLabel = "Rechercher";


/////////////////////////////// FIN DE LA PARTIE PERSONNALISABLE /////////////////////////////
 

// Ajout d'un lien dans la boîte à outils

SearchPageList.Fonctions.Link = function(){
     if(typeof(SearchPageList.Fonctions.LangCustom)=="function") SearchPageList.Fonctions.LangCustom();
     if(typeof(SearchPageList.Fonctions.SiteCustom)=="function") SearchPageList.Fonctions.SiteCustom();
     if(typeof(SearchPageList.Fonctions.UserCustom)=="function") SearchPageList.Fonctions.UserCustom();
     var OngletsCactions = document.getElementById('p-tb');
     if(OngletsCactions){
          var CactionsUl = OngletsCactions.getElementsByTagName('ul')[0];
          CactionsUl.innerHTML += '<li><a href="'+mw.config.get('wgArticlePath').split("$1").join("Special:"+SearchPageList.Params.SpecialPageName)+'" title="'+SearchPageList.Textes.SpecialPageTitle+'">'+SearchPageList.Textes.SpecialPageText+'</a></li>';
          if(OngletsCactions.className){
               OngletsCactions.className = OngletsCactions.className.replace(/[ ]*emptyPortlet[ ]*/, " ");
          }
     }
}

// Initialisation de la page spéciale

SearchPageList.Fonctions.Init = function(){      
    var Title = document.getElementsByTagName('title')[0];
    if(Title) Title.innerHTML = SearchPageList.Textes.SpecialPageTitle; 
    var PageTitle = document.getElementsByTagName('h1')[0];
    if(PageTitle) PageTitle.innerHTML = SearchPageList.Textes.SpecialPageTitle;  
    var Content = document.getElementById("bodyContent");   
    if(!Content) Content = document.getElementById("Article");  
    if(!Content) Content = document.getElementById("mw_contentholder");  
    if(!Content) Content = document.body; 
    while(Content.firstChild){ Content.removeChild(Content.firstChild); } 
    SearchPageList.Fonctions.CreatePage(Content);
}

// Création du corps la page spéciale

SearchPageList.Fonctions.CreatePage = function(Content){
    var Fieldset = document.createElement("fieldset");
    Content.appendChild(Fieldset);

    var Legend = document.createElement("legend");
    Legend.appendChild(document.createTextNode(SearchPageList.Textes.SpecialPageOptionLegend));
    Fieldset.appendChild(Legend);

    var Table = document.createElement("table");
    Table.id = "SearchPageListOptionTable";
    Table.setAttribute("style", "width:100%;text-align:center;");
    var TR1 = document.createElement('tr');
    Table.appendChild(TR1);
    var TD11 = document.createElement('td');
    TR1.appendChild(TD11);
    var TD12 = document.createElement('td');
    TR1.appendChild(TD12);
    var TR2 = document.createElement('tr');
    Table.appendChild(TR2);
    var TD21 = document.createElement('td');
    TR2.appendChild(TD21);
    var TD22 = document.createElement('td');
    TR2.appendChild(TD22);
    var TR3 = document.createElement('tr');
    Table.appendChild(TR3);
    var TD31 = document.createElement('td');
    TD31.setAttribute("colspan", "2");
    TR3.appendChild(TD31);
    Fieldset.appendChild(Table);


    var CheckboxAllPages = document.createElement("input");
    CheckboxAllPages.type = "checkbox";
    CheckboxAllPages.id = "MenuCheckboxAllPages";
    CheckboxAllPages.className = "MenuCheckbox";
    CheckboxAllPages.onchange = function(){ SearchPageList.Fonctions.CheckboxCliqued("MenuCheckboxAllPages"); }
    var CheckboxAllPagesLabel = document.createElement("label");
    CheckboxAllPagesLabel.for="MenuCheckboxAllPages";
    CheckboxAllPagesLabel.appendChild(document.createTextNode(SearchPageList.Textes.CheckboxAllPagesLabel));
    TD11.appendChild(CheckboxAllPages);
    TD11.appendChild(CheckboxAllPagesLabel);
    var CheckboxCategory = document.createElement("input");
    CheckboxCategory.type = "checkbox";
    CheckboxCategory.id = "MenuCheckboxCategory";
    CheckboxCategory.className = "MenuCheckbox";
    CheckboxCategory.onchange = function(){ SearchPageList.Fonctions.CheckboxCliqued("MenuCheckboxCategory"); }
    var CheckboxCategoryLabel = document.createElement("label");
    CheckboxCategoryLabel.for="MenuCheckboxCategory";
    CheckboxCategoryLabel.appendChild(document.createTextNode(SearchPageList.Textes.CheckboxCategoryLabel));
    TD12.appendChild(CheckboxCategory);
    TD12.appendChild(CheckboxCategoryLabel);


    var CheckboxAllPagesOptionItems = document.createElement("div");
    CheckboxAllPages.id = "MenuCheckboxAllPagesOptions";    
    var CheckboxAllPagesOptionItemPrefix = document.createElement("input");
    CheckboxAllPagesOptionItemPrefix.type = "text";
    CheckboxAllPagesOptionItemPrefix.id = "MenuCheckboxAllPagesOptionsPrefix";
    var CheckboxAllPagesOptionItemPrefixLabel = document.createElement("label");
    CheckboxAllPagesOptionItemPrefixLabel.for = "MenuCheckboxAllPagesOptionsPrefix";
    CheckboxAllPagesOptionItemPrefixLabel.appendChild( document.createTextNode(SearchPageList.Textes.CheckboxAllPagesOptionItemPrefixLabel) );
    var CheckboxAllPagesOptionItemNamespace = document.createElement("select");
    CheckboxAllPagesOptionItemNamespace.id = "MenuCheckboxAllPagesOptionsNamespace";
    for(var ns in mw.config.get('wgFormattedNamespaces')){
        if(ns==-1) continue;
        var Option = document.createElement('option');
        Option.value = ns;
        Option.innerHTML = mw.config.get('wgFormattedNamespaces')[ns];
        CheckboxAllPagesOptionItemNamespace.appendChild(Option);
    }
    var CheckboxAllPagesOptionItemNamespaceLabel = document.createElement("label");
    CheckboxAllPagesOptionItemNamespaceLabel.for = "MenuCheckboxAllPagesOptionsNamespace";
    CheckboxAllPagesOptionItemNamespaceLabel.appendChild( document.createTextNode(SearchPageList.Textes.CheckboxAllPagesOptionItemNamespaceLabel) );
    CheckboxAllPagesOptionItems.appendChild(CheckboxAllPagesOptionItemPrefix);
    CheckboxAllPagesOptionItems.appendChild(CheckboxAllPagesOptionItemPrefixLabel);
    CheckboxAllPagesOptionItems.appendChild(document.createElement("br"));
    CheckboxAllPagesOptionItems.appendChild(CheckboxAllPagesOptionItemNamespace);
    CheckboxAllPagesOptionItems.appendChild(CheckboxAllPagesOptionItemNamespaceLabel);
    TD21.appendChild(CheckboxAllPagesOptionItems);
  

    var CheckboxCategoryOptionItems = document.createElement("div");
    CheckboxCategory.id = "MenuCheckboxCategoryOptions";    
    var CheckboxCategoryOptionItemCat = document.createElement("input");
    CheckboxCategoryOptionItemCat.type = "text";
    CheckboxCategoryOptionItemCat.id = "MenuCheckboxCategoryOptionsCat";
    var CheckboxCategoryOptionItemCatLabel = document.createElement("label");
    CheckboxCategoryOptionItemCatLabel.for = "MenuCheckboxCategoryOptionsCat";
    CheckboxCategoryOptionItemCatLabel.appendChild( document.createTextNode(SearchPageList.Textes.CheckboxCategoryOptionItemCatLabel) );
    CheckboxCategoryOptionItems.appendChild(CheckboxCategoryOptionItemCat);
    TD22.appendChild(CheckboxCategoryOptionItems);


    var ButtonGo = document.createElement("input");
    ButtonGo.type = "button";
    ButtonGo.value = SearchPageList.Textes.RunSearchLabel;
    ButtonGo.onclick = function(){ SearchPageList.Fonctions.InitSearch(); };
    ButtonGo.select = function(){ SearchPageList.Fonctions.InitSearch(); };
    TD31.appendChild(ButtonGo);


    var Liste = document.createElement("ol");
    Liste.id = "SearchPageListOl";
    Content.appendChild(Liste);

    SearchPageList.Fonctions.getURLParams();
}

// Application des paramètres d'URL

SearchPageList.Fonctions.getURLParams = function(){

}

// Clic sur une checkbox

SearchPageList.Fonctions.CheckboxCliqued = function(id){
    var TheCkeckbox = document.getElementById(id);
    var Table = document.getElementById("SearchPageListOptionTable");
    if(!TheCkeckbox || !Table) return;
    var TheCkeckboxChecked = TheCkeckbox.checked;
    var CheckBoxes = getElementsByClassName(Table, "input", "MenuCheckbox");
    var OptionsType = new Array("select", "input", "textarea");
    for(var a=0,l= CheckBoxes.length;a<l;a++){
        var ThisCheckBox = CheckBoxes[a];
        var IstItTheCheckbox = (ThisCheckBox==TheCkeckbox);
        var ThisOptions = document.getElementById(id + "Options");
        if(ThisOptions){
            for(var b=0,m=OptionsType.length;b<m;a++){
                 var ThisOptionsItems = ThisOptions.getElementsByTagName(OptionsType[b]);
                 for(var c=0,n=ThisOptionsItems.length;c<n;c++){
                     ThisOptionsItems.disabled = ( IstItTheCheckbox ? false : "disabled" );
                 }
            }
        }
        if( ThisCheckBox == TheCkeckbox ){

        }else{
             ThisCheckBox.checked = false;
        }
    }
}

// Lancement de la recherche

SearchPageList.Fonctions.InitSearch = function(){


}






// Fonction de lancement
 
if((mw.config.get('wgNamespaceNumber')==-1)&&(mw.config.get('wgTitle').indexOf(SearchPageList.Params.SpecialPageName)!=-1)){
    addOnloadHook(SearchPageList.Fonctions.Init);
}else{
    addOnloadHook(SearchPageList.Fonctions.Link);
}