MediaWiki:Gadget-LiveRC.js/Extensions/CategoryRCExtension.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.
/* 
 --------------------------------------------------------------------------------------
 ---------LLLL---------III--------------------------RRRRRRRRRR--------CCCCC------------
 ---------LLLL---------III--------------------------RRRRRRRRRRRR----CCCCCCCCC----------
 ---------LLLL--------------------------------------RRR------RRR---CCC-----CCC---------
 ---------LLLL---------III--VV-----VV--EEEEEEEEE----RRR------RRR--CCC------------------
 ---------LLLL---------III---VV---VV---EEE----------RRRRRRRRRRR---CCC------------------
 ---------LLLL---------III---VV---VV---EEEEEE-------RRRRRRRRRR----CCC------------------
 ---------LLLL---------III----VV-VV----EEEEEE-------RRR-----RRR----CCC-----CCC---------
 ---------LLLLLLLLLLL--III----VVVVV----EEE----------RRR------RRR----CCCCCCCCC----------
 ---------LLLLLLLLLLL--III-----VVV-----EEEEEEEEE----RRR-------RRR-----CCCCC------------
 --------------------------------------------------------------------------------------
 
'''Extension de LiveRC'''
 
Permet de n'afficher que les modifications faites dans une ou plusieurs catégories

* Licence : ...?
* Documentation :
* Auteur : [[:fr:User:Dr Brains]]
* Développement et maintenance :

 
{{Catégorisation JS|LiveRC}}

<source lang=javascript> */
if (typeof(LiveRC_AddHook)!="undefined") { // DÉBUT IF
LiveRC_Config["InstalledLiveRCExtensions"].push("CategoryRC");
/* ************************************************************************************************************************************************ */

// Options
try{
lrcOptionMenuValues["showCatRC"] = false;
}catch(e){ }
 
// textes
try{
lrcTexts["showCatRC_SHORT"]     = "Catégories";
lrcTexts["showCatRC_TIP"]       = "Filtrer les RC par catégorie";
lrcTexts["RCCategoryNoCat"]     = "Vous devez sélectionner l’option « $1 » pour pouvoir filtrer par catégorie";
lrcTexts["CRC_DELETECAT_SHORT"] = "-";
lrcTexts["CRC_ADDCAT_SHORT"]    = "+";
}catch(e){ }
 
// Descriptions
try{
lrcParamDesc["DescshowCatRC"]                = '[CategoryRC] Case "Catégories"';
lrcParamDesc["DescshowCatRC_SHORT"]          = '[CategoryRC] Texte de la case "Catégories"';
lrcParamDesc["DescshowCatRC_TIP"]            = '[CategoryRC] Infobulle de la case "Catégories"';
lrcParamDesc["DescRCCategoryNoCat"]          = "[CategoryRC] Avertissement paramétrage de LiveRC";
lrcParamDesc["DescCRC_DELETECAT_SHORT"]      = "[CategoryRC] Texte du bouton pour supprimer une catégorie";
lrcParamDesc["DescCRC_ADDCAT_SHORT"]         = "[CategoryRC] Texte du bouton pour ajouter une catégorie";
lrcParamDesc["DescLiveRC_defaultCats"]       = "Catégories pour le filtrage des RC";
lrcParamDesc["DescLiveRC_defaultCats_short"] = "RC par catégorie";
}catch(e){ }


window.LiveRC_defaultCats = [
    {cat:"Portail:Amérique/Articles liés", checked:true}, 
    {cat:"Portail:Cinéma/Articles liés", checked:true}, 
    {cat:"Portail:Europe/Articles liés", checked:true}, 
    {cat:"Portail:Musique/Articles liés", checked:true}
];
window.LiveRC_defaultCats_Custom = new Array();
window.Custom_LiveRC_defaultCats = new Array();


window.defineCustomDefaultCats = function(defaultCats){
  Custom_LiveRC_defaultCats = defaultCats;
}
LiveRC_AddHook("AfterFillParamPanel", function(){
    LiveRC_ManageParams_Fill(LiveRC_defaultCats, "LiveRC_defaultCats", "defineCustomDefaultCats", true);
});

window.LiveRC_CategoryRC_CheckIfGetPageInfosEnabled = function(){
  setTimeout("LiveRC_CategoryRC_AutoUncheckCatFilter();", 75);
}

window.LiveRC_CategoryRC_AutoUncheckCatFilter = function(){
  var showCatRC = document.getElementById("showCatRC");
  if(!showCatRC) return;
  if(!showCatRC.checked) return;
  if(!lrcMakeParam("GetPageInfos")){
    var NoCatMessage = lrcMakeText("RCCategoryNoCat")
    NoCatMessage = NoCatMessage.split("$1").join("<code>"+lrcMakeParamDescription("DescGetPageInfos")+"</code>");
    LiveRC_alert(NoCatMessage);
    showCatRC.checked = false;
    disableAllCheckboxesInChecklist("showCatRC", "showCatRC_CheckList")
  }
}

window.LiveRC_CategoryRC_AddButton = function(){    
    var NamespaceForm = document.getElementById('NamespaceForm');
    if(!NamespaceForm) return;
    var CategoryForm = document.createElement('form');
    CategoryForm.id = "CategoryForm";
    var Span = document.createElement("span");
    Span.style.padding = "3px";
    Span.title = lrcMakeText("showCatRC_TIP");
    var NewInput = document.createElement('input');
    NewInput.id = "showCatRC";
    NewInput.type = "checkbox";
    NewInput.onmouseup = LiveRC_CategoryRC_CheckIfGetPageInfosEnabled;
    var NewLabel = document.createElement('label');
    NewLabel.setAttribute('for', "showCatRC");
    NewLabel.appendChild(document.createTextNode(lrcMakeText("showCatRC_SHORT")));
    Span.appendChild(NewInput);
    Span.appendChild(NewLabel);
    CategoryForm.appendChild(Span);
    NamespaceForm.parentNode.insertBefore(CategoryForm, NamespaceForm.nextSibling);
    var SepSpan = document.createElement('span');
    SepSpan.appendChild(document.createTextNode("·"));
    NamespaceForm.parentNode.insertBefore(SepSpan, NamespaceForm.nextSibling);
    if(lrcMakeOption("showCatRC") && lrcMakeParam("GetPageInfos")){ 
        NewInput.checked = "checked";
    }
    addCatFilterCheckInMenu();
}
LiveRC_AddHook("AfterOptions", LiveRC_CategoryRC_AddButton);


window.addCatFilterCheckInMenu = function(){
  var Lines = new Array();
  var CheckList = createChecklistMenu("showCatRC", Lines);
  var Li = document.createElement('li');  
  Li.style.textAlign = "right";
  var AddCatInput = document.createElement('input');
  AddCatInput.type = "button";
  AddCatInput.style.width = "100%";
  AddCatInput.value = lrcMakeText("CRC_ADDCAT_SHORT");
  AddCatInput.onclick = function(){ LiveRC_CategoryRC_AddACat(this); };
  AddCatInput.onselect = function(){ LiveRC_CategoryRC_AddACat(this); };
  Li.appendChild(AddCatInput);
  CheckList.appendChild(Li); 
  var defaultCats = LiveRC_defaultCats_Custom;
  if(defaultCats.length===0) defaultCats = Custom_LiveRC_defaultCats;
  if(defaultCats.length===0) defaultCats = LiveRC_defaultCats;
  for(var a=0,l=defaultCats.length;a<l;a++){
    var ThisItem = defaultCats[a];
    var Cat = ThisItem["cat"];
    var checked = (ThisItem["checked"] ? ' checked="checked" ' : '');
    LiveRC_CategoryRC_AddACat(AddCatInput, Cat, checked);
  };
  LiveRC_SetCheckListPosition(CheckList.id);
}

window.LiveRC_CategoryRC_DeleteThisCat = function(DeleteInput){
    var Li = DeleteInput.parentNode;
    if(Li) Li.parentNode.removeChild(Li);
}

window.LiveRC_CategoryRC_AddACat = function(AddCatInput, Value, Checked){
    var LastLi = AddCatInput.parentNode;
    var Li = document.createElement('li');
    var InputCheck = document.createElement("input");
    InputCheck.type = "checkBox";
    if(Checked) InputCheck.checked = "checked";
    var Input = document.createElement("input");
    Input.type = "text";
    Input.size = 40;
    Input.value = (Value ? Value : "");
    var DeleteInput = document.createElement('input');
    DeleteInput.type = "button";
    DeleteInput.value = lrcMakeText("CRC_DELETECAT_SHORT");
    DeleteInput.onclick = function(){ LiveRC_CategoryRC_DeleteThisCat(this); };
    DeleteInput.onselect = function(){ LiveRC_CategoryRC_DeleteThisCat(this); };
    Li.appendChild(InputCheck);
    Li.appendChild(Input);
    Li.appendChild(DeleteInput);
    LastLi.parentNode.insertBefore(Li, LastLi);
    LiveRC_Suggest_AddPageSuggestion({
        "InputNode"       : Input,
        "NSFilter"        : 14,
        "StripNS"         : true,
        "ListDown"        : true,
        "AddExist"        : true
    });
    LiveRC_Suggest_GetPageSuggestions(LiveRC_Suggest_GetSuggestionIndex(Input));
    disableAllCheckboxesInChecklist("showCatRC", "showCatRC_CheckList");  
}

window.LiveRC_CategoryRC_getCategories = function(){
    var showCatRC = document.getElementById("showCatRC");
    if(!showCatRC) return false;
    if(!showCatRC.checked) return false;
    var showCatList = document.getElementById("showCatRC_CheckList");
    if(!showCatList) return false;
    var Categories = new Array();
    var Lis = showCatList.getElementsByTagName('li');
    for(var a=0,l=Lis.length;a<l;a++){
        var Li = Lis[a];
        var CheckBox = Li.getElementsByTagName('input')[0];
        var Input = Li.getElementsByTagName('input')[1];
        var CatExist = Li.getElementsByTagName('input')[2];
        if(!CheckBox || !Input || !CatExist) continue;
        if(CatExist.value == "0") continue;
        if(CheckBox.type != "checkbox") continue;
        if(!CheckBox.checked) continue;
        var Cat = Input.value;
        if(!Cat) continue;
        if(Categories.indexOf(Cat)==-1) Categories.push(lrcGetNamespaceName(14)+":"+Cat);
    }
    if(Categories.length===0) return false;
    return Categories;
}

window.LiveRC_CategoryRC_filterRC = function(Args){
    if(!lrcMakeParam("GetPageInfos")) return;
    var showCatRC = document.getElementById("showCatRC");
    if(!showCatRC) return;
    if(!showCatRC.checked) return;
    var ID = Args.id;
    var TR = document.getElementById(ID);
    if(!TR) return;
    var Categories = LiveRC_CategoryRC_getCategories();
    if(!Categories) return;
    var rc = Args.rc;
    var Cats = rc.categories;
    if(typeof(Cats)!=="object" || Cats.length === 0){
        TR.parentNode.removeChild(TR);
        return;
    }
    var HasCat = false;
    for(var a=0,l=Cats.length;a<l;a++){
        if(Categories.indexOf(Cats[a])!=-1){
            HasCat = true;
        }
    }
    if(!HasCat) TR.parentNode.removeChild(TR);
}
LiveRC_AddHook("AfterRC", LiveRC_CategoryRC_filterRC);

/* ************************************************************************************************************************************************ */
} // FIN IF
//</source>