_ _    _ _____  ___   __                       
 __      _(_) | _(_)___ / ( _ ) / /_   ___ ___  _ __ ___  
 \ \ /\ / / | |/ / | |_ \ / _ \| '_ \ / __/ _ \| '_ ` _ \ 
  \ V  V /| |   <| |___) | (_) | (_) | (_| (_) | | | | | |
   \_/\_/ |_|_|\_\_|____/ \___/ \___(_)___\___/|_| |_| |_|

MediaWiki:Gadget-LiveRC.js/Extensions/InstallAndConfigLiveRCExtension.js

MediaWiki:Gadget-LiveRC.js/Extensions/InstallAndConfigLiveRCExtension.js est un sujet qui a retenu l'attention et l'intérêt de nombreuses personnes aujourd'hui. Avec une histoire riche en détails et un impact important sur la société, le MediaWiki:Gadget-LiveRC.js/Extensions/InstallAndConfigLiveRCExtension.js s'est avéré être une source de débat et de réflexion pour beaucoup. Au fil des années, MediaWiki:Gadget-LiveRC.js/Extensions/InstallAndConfigLiveRCExtension.js a évolué et s'est adapté à l'évolution des circonstances, ce qui en fait un sujet pertinent aujourd'hui. Dans cet article, nous explorerons les différentes facettes et perspectives de MediaWiki:Gadget-LiveRC.js/Extensions/InstallAndConfigLiveRCExtension.js, ainsi que son influence sur divers aspects de la vie quotidienne.
/* 
 --------------------------------------------------------------------------------------
 ---------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'''
 
Fournit une interface de configuration lorsque l'utilisateur est présent sur la page d'installation
 
* Licence : ...?
* Documentation :
* Auteur : ]
* Développement et maintenance :
 
 
{{Catégorisation JS|LiveRC}}
 
<source lang=javascript> */

if(typeof(LiveRC_AddHook)=="function") { // DÉBUT IF
LiveRC_Config.push("InstallAndConfigLiveRCExtension");

/* </source>

== Variables globales ==

<source lang=javascript> */
/* *************************************************************************************************************************** */

lrcTexts                   = "Configuration";
lrcTexts                  = "Configuration locale de LiveRC ($1)";
lrcTexts                     = "Configuration de LiveRC";

UnTranslatedTexts            = "Mise à jour de la configuration LiveRC locale";

lrcParamDesc           = "Texte du lien de configuration";
lrcParamDesc          = "Infobulle du lien de configuration";
lrcParamDesc             = "Légende du panneau de configuration LiveRC";
lrcParamDesc = "Configuration LiveRC";
lrcParamDesc       = "Paramètres de configuration de LiveRC";
lrcParamDesc             = "Résumé de modification mise à jour de la config LiveRC";


lrcParamDesc              = "Configuration de l’installation";
 lrcParamDesc        = "Page d’installation de LiveRC";
 lrcParamDesc          = "Page de stockage de la configuration mediawiki locale";
 lrcParamDesc                 = "Page de stockage du CSS local pour LiveRC";
 lrcParamDesc           = "Sous-page de stockage des paramètres personnalisés";
 lrcParamDesc       = "Modèle pour la catégorisation des pages";
 lrcParamDesc             = "URL pour les rapports de bugs";
 lrcParamDesc                = "Balises pour marquer les édits faits avec des outils automatiques";
 lrcParamDesc      = "Catégories de suivi";
 lrcParamDesc          = "IDs à rechercher pour le contenu d’une page";
lrcParamDesc            = "Listes d’utilisateurs locaux par groupe";
lrcParamDesc       = "Configuration des limitations";
 lrcParamDesc             = "Limite de versions revertables";
 lrcParamDesc        = "Droits de limitation des fonctions d’édition automatique";
 lrcParamDesc    = "Liste des utilisateurs interdits d’édition automatique";
lrcParamDesc       = "Configuration de l’extension FlaggedRevs";
 lrcParamDesc       = "Stabilisation intégrée à l’outil de protection";
 lrcParamDesc       = "Liste des namespaces où la validation est active";
lrcParamDesc              = "Configuration de l’extension Flow";
 lrcParamDesc         = "Liste des pages où flow est actif";
 lrcParamDesc    = "Liste des namespaces où flow est actif";
 lrcParamDesc = "Actions permises sur les pages où flow est actif";


LiveRC_Config = ;

/* *************************************************************************************************************************** */
/* </source>

== Fonctions utilitaires ==

<source lang=javascript> */

window.LiveRC_ConfigLiveRCExtension_UserCanEdit = function(Page){
  var Right = LiveRC_ConfigLiveRCExtension_InstallationPageNeededRight(Page);
  if(!Right) return true;
  else return lrcUserHasRight(Right);
}

window.LiveRC_ConfigLiveRCExtension_InstallationPageNeededRight = function(Page){
  Page = Page.replace(/_/g, " ");
  var ns = getNamespaceInfoFromPage(Page);
  var title = getNamespaceInfoFromPage(Page, "PageName");
  if(ns==8) return "editinterface";
  if(ns==2 && Page.match(/\.js$/)!=null){
    if(title.indexOf(mw.config.get('wgUserName')) === 0) return false;
    else return "edituserjs";
  }
  return false
}

/* </source>

== Lancement ==

=== Divers ===

<source lang=javascript> */

window.LiveRC_ConfigLiveRCExtension_AddNeededRightToExtension = function(){
  var Right = LiveRC_ConfigLiveRCExtension_InstallationPageNeededRight(LiveRC_Config);
  if(!Right) Right = '';
  for(var a=0,l=lrcExtensions.length;a<l;a++){
    var Ext = lrcExtensions;
    if(Ext != "InstallAndConfigLiveRCExtension") continue;
    lrcExtensions = Right;
  }
  for(var a=0,l=Custom_lrcExtensions.length;a<l;a++){
    var Ext = Custom_lrcExtensions;
    if(Ext != "InstallAndConfigLiveRCExtension") continue;
    Custom_lrcExtensions = Right;
  }
}

window.LiveRC_ConfigLiveRCExtension_GetOldLocalCSS = function(){
    lrcDisplayDebug("Get LiveRC personal styles");
    var URL = lrcGetAPIURL('format=xml&action=query&prop=revisions&rvlimit=1&rvprop=ids')
           + '&titles='+encodeURIComponent(LiveRC_Config)
    wpajax.http({url: URL,
                 onSuccess: LiveRC_ConfigLiveRCExtension_GetOldLocalCSSOldid
    });
}
 
window.LiveRC_ConfigLiveRCExtension_GetOldLocalCSSOldid = function(RequeteOldid){
  var ObjetXML = RequeteOldid.responseXML;
  if (ObjetXML){
    var LastRevision = ObjetXML.getElementsByTagName('rev');
    if (LastRevision){
      var Oldid = LastRevision.getAttribute('revid');
      var URL = lrcGetUglyPageURL(LiveRC_Config,'&action=raw&oldid='+Oldid);
      wpajax.http({url:URL, onSuccess:LiveRC_ManageParams_GetOldCSS });
    }
  }
}

/* </source>

== Ajout lien au menu de gauche ==

<source lang=javascript> */

window.LiveRC_ConfigLiveRCExtension_AddLink = function(){
  if(!LiveRC_ConfigLiveRCExtension_UserCanEdit(LiveRC_Config)) return;
  var LRClink = document.getElementById("n-liveRC");
  if(!LRClink) return;
  var UL = LRClink.getElementsByTagName('ul');
  if(!UL){
    UL = document.createElement('ul');
    LRClink.appendChild(UL);
  }
  lrcDisplayDebug('Add Config link in tools panel');
  var ConfigLi = document.createElement('li');
  ConfigLi.id = 'n-liveRC-sitecustom';
  UL.insertBefore(ConfigLi, UL.firstChild);
  var Link = document.createElement('a');
  Link.innerHTML = lrcMakeText("CLRCE_linktext");
  Link.title = lrcMakeText("CLRCE_linktitle").split('$1').join(LiveRC_Config);
  Link.href = lrcGetPageURL(LiveRC_Config);
  ConfigLi.appendChild(Link);
}

/* </source>

== Menu ==

=== Ouverture du menu ===

<source lang=javascript> */

window.LiveRC_ConfigLiveRCExtension_ByPassMissingExtensions = function(){
  LiveRC_Config = true;
  var Alert = document.getElementById("LiveRCAlert");
  if(Alert) Alert.parentNode.removeChild(Alert);
  setTimeout("LiveRC_ConfigLiveRCExtension_BuildForm();", 50)
}

window.LiveRC_ConfigLiveRCExtension_BuildForm = function(Again){
    var Target = $('pre.source-javascript');
    if(!Target) Target = document.getElementById("mw-content-text").firstChild;
    if(!Target) return;
    var MissingExtension = ;
    for(var a=0,l=lrcExtensions.length;a<l;a++){
      var ExtName = lrcExtensions.name;
      if(LiveRC_Config.indexOf(ExtName)===-1 && ExtName != "InserisciTemplate"){
        MissingExtension.push(ExtName);      
        mw.loader.load(lrcExtensions.url + '&action=raw&ctype=text/javascript');
      }
    }
    var Length = MissingExtension.length;
    if(Length>0 && LiveRC_Config !== true){
        var ByPassLink = '<a href="javascript:LiveRC_ConfigLiveRCExtension_ByPassMissingExtensions();" '
                       + '></a>';
        if(Again) LiveRC_alert("Missing extension"+(Length>1 ?"s" : "")+" : "+ByPassLink+"<ul><li>"+MissingExtension.join("</li><li>")+"</li></ul>")
        LiveRC_Config = setTimeout("LiveRC_ConfigLiveRCExtension_BuildForm(true);", (Again ? 5000 : 500 ));
        return;
    }else{
        clearTimeout(LiveRC_Config);
    }
    var clearyourcache = document.getElementById("mw-clearyourcache");
    if(clearyourcache) clearyourcache.style.display = "none";
    var Fieldset = document.createElement('fieldset');
    var Legend = document.createElement('legend');
    Fieldset.id = "ConfigLiveRCExtension_Menu";
    Fieldset.appendChild(Legend);
    Legend.appendChild(document.createTextNode(lrcMakeText("CLRCE_legend")));
    Target.parentNode.insertBefore(Fieldset, Target);
    var FormDiv = document.createElement('div');
    FormDiv.id = "OutFixedBottomPanel";
    Fieldset.appendChild(FormDiv);
    FormDiv.style.position = "static";
    LiveRC_AddHook("AfterCreateParamPanel", LiveRC_ConfigLiveRCExtension_DeleteTabs);
    LiveRC_AddHook("AfterCreateParamPanel", LiveRC_ConfigLiveRCExtension_AddConfigTab);
    LiveRC_ManageParams_OpenMenu(true);
    var MenuTitle = document.getElementById("LiveRC_ParamMenuAnchor");
    if(MenuTitle) MenuTitle.parentNode.removeChild(MenuTitle);
    var LRCConfigSaveButton = document.getElementById("LiveRC_OptionsContentInput_LiveRCConfigLegend");
    if(LRCConfigSaveButton) LRCConfigSaveButton.style.marginLeft = "0.5em";
    LiveRC_ConfigLiveRCExtension_EditActionButtons();
    LiveRC_ConfigLiveRCExtension_EditCSSActionButtons();
    LiveRC_ConfigLiveRCExtension_ShowToggleButtons();
    LiveRC_ConfigLiveRCExtension_PopulateConfigTab();

    var ResizeZone = document.createElement('div');
    ResizeZone.id = "CLRCE_ParamMenuAnchor";
    ResizeZone.innerHTML = "&nbsp;"
    FormDiv.appendChild(ResizeZone);
    LiveRC_SetVerticalResizeZone(document.getElementById("CLRCE_ParamMenuAnchor"),
                         lrcGetElementsByClass("LiveRC_ParamMenuPart",document.getElementById("LiveRC_ParamMenu"),"div"),
                         document.getElementById("LiveRC_ParamMenu"), true
    );
    $(document.body).addClass("InstallAndConfigLiveRCExtensionLaunched");
    mw.loader.addStyleTag(".InstallAndConfigLiveRCExtensionLaunched #LiveRC_ParamMenuContent { border:none !important; }");
    LiveRC_LaunchProcessNextStep();
}

/* </source>

=== Modifications du menu ===

<source lang=javascript> */

window.LiveRC_ConfigLiveRCExtension_DeleteTabs = function(){
    var TabsToDelete = ;
    if(!LiveRC_ConfigLiveRCExtension_UserCanEdit(LiveRC_Config)) TabsToDelete.push("lrcCSSstyles");
    for(var a=0,l=TabsToDelete.length;a<l;a++){
        var TabName = "LiveRC_OptionsContent_"+TabsToDelete;
        var Tab = document.getElementById(TabName);
        if(Tab) Tab.parentNode.removeChild(Tab);
    }
}

window.LiveRC_ConfigLiveRCExtension_EditActionButtons = function(){
    var AllActionButtons = lrcGetElementsByClass("ActionButtons",document.getElementById("LiveRC_ParamMenuForm"),"p");
    for(var a=0,l=AllActionButtons.length;a<l;a++){
        var ActionButtons = AllActionButtons;
        while(ActionButtons.firstChild) { ActionButtons.removeChild(ActionButtons.firstChild); }
        var OKInput = document.createElement('input');
        OKInput.type = "button";
        OKInput.value = lrcMakeText("OK");
        OKInput.onclick = function(){ LiveRC_ConfigLiveRCExtension_CheckMenu(this); return false;}
        OKInput.onselect = function(){ LiveRC_ConfigLiveRCExtension_CheckMenu(this); return false;}
        ActionButtons.appendChild(OKInput);
        var RAZInput = document.createElement('input');
        RAZInput.type = "button";
        RAZInput.value = lrcMakeText("RAZ");
        RAZInput.onclick = function(){ LiveRC_ConfigLiveRCExtension_RAZParams(this); return false;}
        RAZInput.onselect = function(){ LiveRC_ConfigLiveRCExtension_RAZParams(this); return false;}
        ActionButtons.appendChild(RAZInput);
    }
} 

window.LiveRC_ConfigLiveRCExtension_EditCSSActionButtons = function(){
    var Fieldset = document.getElementById("LiveRC_OptionsContent_lrcCSSstyles");
    if(!Fieldset) return;
    var ActionButtons = lrcGetElementsByClass("ActionButtons",Fieldset,"p");
    if(!ActionButtons) return
    while(ActionButtons.firstChild) { ActionButtons.removeChild(ActionButtons.firstChild); }
    var OKInput = document.createElement('input');
    OKInput.type = "button";
    OKInput.value = lrcMakeText("OK")+" .";
    OKInput.onclick = function(){ LiveRC_ConfigLiveRCExtension_CheckCSSMenu(this); return false;}
    OKInput.onselect = function(){ LiveRC_ConfigLiveRCExtension_CheckCSSMenu(this); return false;}
    ActionButtons.appendChild(OKInput);
    var RAZInput = document.createElement('input');
    RAZInput.type = "button";
    RAZInput.value = lrcMakeText("RAZ")+" .";
    RAZInput.onclick = function(){ LiveRC_ConfigLiveRCExtension_RAZCSSParams(this); return false;}
    RAZInput.onselect = function(){ LiveRC_ConfigLiveRCExtension_RAZCSSParams(this); return false;}
    ActionButtons.appendChild(RAZInput);
}

window.LiveRC_ConfigLiveRCExtension_ShowToggleButtons = function(){
    var ToggleBar = document.getElementById("ToggleButtons");
    var Buttons = ToggleBar.getElementsByTagName("input");
    for(var a=0,l=Buttons.length;a<l;a++){
        var Button = Buttons;
        if(Button.style.display = "none") Buttons.style.display = "";
    }
}

/* </source>

=== Onglet "Configuration LiveRC" ===

<source lang=javascript> */

window.LiveRC_ConfigLiveRCExtension_AddConfigTab = function(){
    var ConfigUl = LiveRC_ManageParams_CreateNewListMenu("LiveRCConfigLegend", LiveRC_ManageParams_CreateActionButtons());
}

window.LiveRC_ConfigLiveRCExtension_PopulateConfigTab = function(){
    var ConfigFieldset = document.getElementById("LiveRC_OptionsContent_LiveRCConfigLegend");
    if(!ConfigFieldset) return;
    var ConfigUl = ConfigFieldset.getElementsByTagName('ul');
    if(!ConfigUl) return;
    for(var ParamName in LiveRC_Config){
        var fieldset = document.createElement('fieldset');
        fieldset.id = "LiveRCConfig_"+ParamName;  
        var legend = document.createElement('legend');
        legend.innerHTML = lrcMakeParamDescription("CLRCE_"+ParamName);
        fieldset.appendChild(legend); 
        var UL = document.createElement('ul'); 
        fieldset.appendChild(UL);   
        LiveRC_Config(UL);
        ConfigUl.parentNode.appendChild(fieldset);
    }
    ConfigUl.parentNode.removeChild(ConfigUl);
    LiveRC_ConfigLiveRCExtension_CustomConfigTab();

}

window.LiveRC_ConfigLiveRCExtension_CustomConfigTab = function(){
    var ToolTagsFieldset = document.getElementById("LiveRCConfig_ToolTags");
    if(ToolTagsFieldset){
        var Inputs = ToolTagsFieldset.getElementsByTagName('input');
        for(var i=0,ilen=Inputs.length;i<ilen;i++){
            var Input = Inputs;
            if(Input.name && Input.name == "toolname" && Input.value == "LiveRC") Input.disabled = "disabled";
        }
    }
}

LiveRC_Config = {
  "SiteConfigs"        : function(UL){
    var LiParams = [
      {
        "Desc" : lrcMakeParamDescription("CLRCE_InstallationPage"),
        "Name" : "InstallationPage",
        "ValueType" : "string",
        "AddButton" : false,
        "OldValue" : LiveRC_Config,
        "DefaultValue" : LiveRC_Config
      },
      {
        "Desc" : lrcMakeParamDescription("CLRCE_SiteConfigPage"),
        "Name" : "SiteConfigPage",
        "ValueType" : "string",
        "AddButton" : false,
        "OldValue" : LiveRC_Config,
        "DefaultValue" : LiveRC_Config
      },
      {
        "Desc" : lrcMakeParamDescription("CLRCE_CSSPage"),
        "Name" : "CSSPage",
        "ValueType" : "string",
        "AddButton" : false,
        "OldValue" : LiveRC_Config,
        "DefaultValue" : LiveRC_Config
      },
      {
        "Desc" : lrcMakeParamDescription("CLRCE_UserParamPage"),
        "Name" : "UserParamPage",
        "ValueType" : "string",
        "AddButton" : false,
        "OldValue" : LiveRC_Config,
        "DefaultValue" : LiveRC_Config
      },
      {
        "Desc" : lrcMakeParamDescription("CLRCE_CustomCatTemplate"),
        "Name" : "CustomCatTemplate",
        "ValueType" : "string",
        "AddButton" : false,
        "OldValue" : LiveRC_Config,
        "DefaultValue" : LiveRC_Config
      },
      {
        "Desc" : lrcMakeParamDescription("CLRCE_BugzillaURL"),
        "Name" : "BugzillaURL",
        "ValueType" : "string",
        "AddButton" : false,
        "OldValue" : LiveRC_Config,
        "DefaultValue" : LiveRC_Config
      }
    ];
    for(var a=0,l=LiParams.length;a<l;a++){
      var Li = LiveRC_ManageParams_CreateLiFromParam(LiParams);
      Li = LiveRC_ConfigLiveRCExtension_DisableSomeLines(Li, LiParams);
      UL.appendChild(Li);
    }
    var Sep = document.createElement('hr');
    Sep.style.margin = "1em";
    UL.parentNode.appendChild(Sep);
    var TrackingCategoriesUl = document.createElement('ul');
    UL.parentNode.appendChild(TrackingCategoriesUl);
    var Values = ;
    var TrackingCategories = LiveRC_Config;
    var desc = lrcMakeParamDescription("CLRCE_TrackingCategories");
    for(var a=0,l=TrackingCategories.length;a<l;a++){ Values= {}; Values = TrackingCategories; }
    for(var a=0,l=Values.length;a<l;a++){
      var LiParams = {
        "Desc" : lrcMakeParamDescription("CLRCE_TrackingCategories"),
        "Name" : "TrackingCategories",
        "ValueType" : "object",
        "AddButton" : true,
        "OldValue" : Values,
        "DefaultValue" : Values
      }
      var Li = LiveRC_ManageParams_CreateLiFromParam(LiParams);
      TrackingCategoriesUl.appendChild(Li);
    }
    var P = document.createElement('li');
    var Types = "{"+lrcEscapeStr(lrcMakeParamDescription("CLRCE_TrackingCategories"))+":'string'}";
    var func = 'LiveRC_ManageParams_AddNewParam('+lrcEscapeStr("TrackingCategories")+', '+Types+');'
    P.innerHTML = '<a id="AddParam_TrackingCategories" title="'+lrcMakeText("AddParamLineButton_Title")+'" href="javascript:'+func+'" >'+lrcMakeText("AddParamLineButton_Text")+'</a>';
    TrackingCategoriesUl.appendChild(P);
    var Sep = document.createElement('hr');
    Sep.style.margin = "1em";
    UL.parentNode.appendChild(Sep);
    var PageContentIdsUl = document.createElement('ul');
    UL.parentNode.appendChild(PageContentIdsUl);
    var Values = ;
    var PageContentIds = LiveRC_Config;
    var desc = lrcMakeParamDescription("CLRCE_PageContentIds");
    for(var a=0,l=PageContentIds.length;a<l;a++){ Values= {}; Values = PageContentIds; }
    for(var a=0,l=Values.length;a<l;a++){
      var LiParams = {
        "Desc" : lrcMakeParamDescription("CLRCE_PageContentIds"),
        "Name" : "PageContentIds",
        "ValueType" : "object",
        "AddButton" : true,
        "OldValue" : Values,
        "DefaultValue" : Values
      }
      var Li = LiveRC_ManageParams_CreateLiFromParam(LiParams);
      PageContentIdsUl.appendChild(Li);
    }
    var P = document.createElement('li');
    var Types = "{"+lrcEscapeStr(lrcMakeParamDescription("CLRCE_PageContentIds"))+":'string'}";
    var func = 'LiveRC_ManageParams_AddNewParam('+lrcEscapeStr("PageContentIds")+', '+Types+');'
    P.innerHTML = '<a id="AddParam_PageContentIds" title="'+lrcMakeText("AddParamLineButton_Title")+'" href="javascript:'+func+'" >'+lrcMakeText("AddParamLineButton_Text")+'</a>';
    PageContentIdsUl.appendChild(P);
  },
  "ToolTags"           : function(UL){
    var ToolTags = LiveRC_Config;
    for(var toolname in ToolTags){ 
      var groupvalue = {toolname:toolname, tagname:ToolTags};
      var LiParams = {
        "Desc" : lrcMakeParamDescription("CLRCE_ToolTags"),
        "Name" : "ToolTags",
        "ValueType" : "object",
        "AddButton" : true,
        "OldValue" : groupvalue,
        "DefaultValue" : groupvalue
      };
      var Li = LiveRC_ManageParams_CreateLiFromParam(LiParams, false);
      UL.appendChild(Li);
    }
    var P = document.createElement('li');
    var Types = "{'toolname':'string','tagname':'string'}";
    var func = 'LiveRC_ManageParams_AddNewParam('+lrcEscapeStr("ToolTags")+', '+Types+');'
    P.innerHTML = '<a id="AddParam_ToolTags" title="'+lrcMakeText("AddParamLineButton_Title")+'" href="javascript:'+func+'" >'+lrcMakeText("AddParamLineButton_Text")+'</a>';
    UL.appendChild(P);
  },
  "UserGroupList"           : function(UL){
    var Groups = LiveRC_Config;
    for(var group in Groups){
      var groupvalue = {group:group,show:Groups.show};
      var LiParams = {
        "Desc" : lrcMakeParamDescription("CLRCE_UserGroupList"),
        "Name" : "UserGroupList",
        "ValueType" : "object",
        "AddButton" : true,
        "OldValue" : groupvalue,
        "DefaultValue" : groupvalue
      };
      var Li = LiveRC_ManageParams_CreateLiFromParam(LiParams, false);
      UL.appendChild(Li);
    }
    var P = document.createElement('li');
    var Types = "{'group':'string','show':'boolean'}";
    var func = 'LiveRC_ManageParams_AddNewParam('+lrcEscapeStr("UserGroupList")+', '+Types+', false);'
    P.innerHTML = '<a id="AddParam_UserGroupList" title="'+lrcMakeText("AddParamLineButton_Title")+'" href="javascript:'+func+'" >'+lrcMakeText("AddParamLineButton_Text")+'</a>';
    UL.appendChild(P);
  },
  "LimitationsConfigs"             : function(UL){
    var LiParams = {
      "Desc" : lrcMakeParamDescription("CLRCE_RevertLimit"),
      "Name" : "RevertLimit",
      "ValueType" : "number",
      "AddButton" : false,
      "OldValue" : LiveRC_Config,
      "DefaultValue" : LiveRC_Config
    }
    var Li = LiveRC_ManageParams_CreateLiFromParam(LiParams);
    UL.appendChild(Li);
    var Sep = document.createElement('hr');
    Sep.style.margin = "1em";
    UL.parentNode.appendChild(Sep);
    var LimitationsRightUl = document.createElement('ul');
    UL.parentNode.appendChild(LimitationsRightUl);
    var LimitationsRight = LiveRC_Config;
    var Values = ;
    for(var feature in LimitationsRight){ Values.push({feature:feature, limitationright:LimitationsRight });  }
    for(var a=0,l=Values.length;a<l;a++){
      var LiParams = {
        "Desc" : lrcMakeParamDescription("CLRCE_LimitationsRight"),
        "Name" : "LimitationsRight",
        "ValueType" : "object",
        "AddButton" : true,
        "OldValue" : Values,
        "DefaultValue" : Values
      }
      var Li = LiveRC_ManageParams_CreateLiFromParam(LiParams);
      LimitationsRightUl.appendChild(Li);
    }
    var P = document.createElement('li');
    var Types = "{'feature':'string','limitationright':'string'}";
    var func = 'LiveRC_ManageParams_AddNewParam('+lrcEscapeStr("LimitationsRight")+', '+Types+');'
    P.innerHTML = '<a id="AddParam_LimitationsRight" title="'+lrcMakeText("AddParamLineButton_Title")+'" href="javascript:'+func+'" >'+lrcMakeText("AddParamLineButton_Text")+'</a>';
    LimitationsRightUl.appendChild(P);
    var Sep = document.createElement('hr');
    Sep.style.margin = "1em";
    UL.parentNode.appendChild(Sep);
    var LimitationsBlacklistUl = document.createElement('ul');
    UL.parentNode.appendChild(LimitationsBlacklistUl);
    var Values = ;
    var LimitationsBlacklist = LiveRC_Config;
    var desc = lrcMakeParamDescription("CLRCE_LimitationsBlacklist");
    for(var a=0,l=LimitationsBlacklist.length;a<l;a++){ Values= {}; Values = LimitationsBlacklist; }
    for(var a=0,l=Values.length;a<l;a++){
      var LiParams = {
        "Desc" : lrcMakeParamDescription("CLRCE_LimitationsBlacklist"),
        "Name" : "LimitationsBlacklist",
        "ValueType" : "object",
        "AddButton" : true,
        "OldValue" : Values,
        "DefaultValue" : Values
      }
      var Li = LiveRC_ManageParams_CreateLiFromParam(LiParams, false);
      LimitationsBlacklistUl.appendChild(Li);
    }
    var P = document.createElement('li');
    var Types = "{"+lrcEscapeStr(lrcMakeParamDescription("CLRCE_LimitationsBlacklist"))+":'string'}";
    var func = 'LiveRC_ManageParams_AddNewParam('+lrcEscapeStr("LimitationsBlacklist")+', '+Types+', false);'
    P.innerHTML = '<a id="AddParam_LimitationsBlacklist" title="'+lrcMakeText("AddParamLineButton_Title")+'" href="javascript:'+func+'" >'+lrcMakeText("AddParamLineButton_Text")+'</a>';
    LimitationsBlacklistUl.appendChild(P);
  },
  "FlaggedRevsConfigs"       : function(UL){
    var AlreadySetOnce = (typeof(LiveRC_getSiteConfig)==="function");
    var FlaggedRevsExtensionNotInstalled = (AlreadySetOnce && !lrcIsExtensionInstalled("Flagged Revisions"));
    var LiParams = {
      "Desc" : lrcMakeParamDescription("CLRCE_FlagRevProtection"),
      "Name" : "FlagRevProtection",
      "ValueType" : "boolean",
      "AddButton" : false,
      "OldValue" : LiveRC_Config,
      "DefaultValue" : LiveRC_Config
    }
    var Li = LiveRC_ManageParams_CreateLiFromParam(LiParams);
    UL.appendChild(Li);
    var Sep = document.createElement('hr');
    Sep.style.margin = "1em";
    UL.parentNode.appendChild(Sep);
    var FlagRevNamespacesUl = document.createElement('ul');
    UL.parentNode.appendChild(FlagRevNamespacesUl);
    var Values = ;
    var FlagRevNamespaces = LiveRC_Config;
    var desc = lrcMakeParamDescription("CLRCE_FlagRevNamespaces");
    for(var a=0,l=FlagRevNamespaces.length;a<l;a++){ Values= {}; Values = FlagRevNamespaces; }
    for(var a=0,l=Values.length;a<l;a++){
      var LiParams = {
        "Desc" : lrcMakeParamDescription("CLRCE_FlagRevNamespaces"),
        "Name" : "FlagRevNamespaces",
        "ValueType" : "object",
        "AddButton" : !FlaggedRevsExtensionNotInstalled,
        "OldValue" : Values,
        "DefaultValue" : Values
      }
      var Li = LiveRC_ManageParams_CreateLiFromParam(LiParams, false);
      FlagRevNamespacesUl.appendChild(Li);
    }
    if(!FlaggedRevsExtensionNotInstalled){
      var P = document.createElement('li');
      var Types = "{"+lrcEscapeStr(lrcMakeParamDescription("CLRCE_FlagRevNamespaces"))+":'number'}";
      var func = 'LiveRC_ManageParams_AddNewParam('+lrcEscapeStr("FlagRevNamespaces")+', '+Types+', false);'
      P.innerHTML = '<a id="AddParam_FlagRevNamespaces" title="'+lrcMakeText("AddParamLineButton_Title")+'" href="javascript:'+func+'" >'+lrcMakeText("AddParamLineButton_Text")+'</a>';
      FlagRevNamespacesUl.appendChild(P);
    }else{
      UL.parentNode.disabled = "disabled";
      UL.parentNode.style.display = "none";
    }
  },
  "FlowConfigs" : function(UL){
    var AlreadySetOnce = (typeof(LiveRC_getSiteConfig)==="function");
    var FlowExtensionNotInstalled = (AlreadySetOnce && !lrcIsExtensionInstalled("Flow"));
    var Values = ;
    var FlowOccupyPages = LiveRC_Config;
    var desc = lrcMakeParamDescription("CLRCE_FlowOccupyPages");
    for(var a=0,l=FlowOccupyPages.length;a<l;a++){ Values= {}; Values = FlowOccupyPages; }
    for(var a=0,l=Values.length;a<l;a++){
      var LiParams = {
        "Desc" : lrcMakeParamDescription("CLRCE_FlowOccupyPages"),
        "Name" : "FlowOccupyPages",
        "ValueType" : "object",
        "AddButton" : !FlowExtensionNotInstalled,
        "OldValue" : Values,
        "DefaultValue" : Values
      }
      var Li = LiveRC_ManageParams_CreateLiFromParam(LiParams, false);
      UL.appendChild(Li);
    }
    if(!FlowExtensionNotInstalled){
      var P = document.createElement('li');
       var Types = "{"+lrcEscapeStr(lrcMakeParamDescription("CLRCE_FlowOccupyPages"))+":'string'}";
      var func = 'LiveRC_ManageParams_AddNewParam('+lrcEscapeStr("FlowOccupyPages")+', '+Types+', false);'
      P.innerHTML = '<a id="AddParam_FlowOccupyPages" title="'+lrcMakeText("AddParamLineButton_Title")+'" href="javascript:'+func+'" >'+lrcMakeText("AddParamLineButton_Text")+'</a>';
      UL.appendChild(P); 
    }
    var Sep = document.createElement('hr');
    Sep.style.margin = "1em";
    UL.parentNode.appendChild(Sep);
    var FlowOccupyNamespacesUl = document.createElement('ul');
    UL.parentNode.appendChild(FlowOccupyNamespacesUl);
    var Values = ;
    var FlowOccupyNamespaces = LiveRC_Config;
    var desc = lrcMakeParamDescription("CLRCE_FlowOccupyNamespaces");
    for(var a=0,l=FlowOccupyNamespaces.length;a<l;a++){ Values= {}; Values = FlowOccupyNamespaces; }
    for(var a=0,l=Values.length;a<l;a++){
      var LiParams = {
        "Desc" : lrcMakeParamDescription("CLRCE_FlowOccupyNamespaces"),
        "Name" : "FlowOccupyNamespaces",
        "ValueType" : "object",
        "AddButton" : !FlowExtensionNotInstalled,
        "OldValue" : Values,
        "DefaultValue" : Values
      }
      var Li = LiveRC_ManageParams_CreateLiFromParam(LiParams, false);
      FlowOccupyNamespacesUl.appendChild(Li);
    }
    if(!FlowExtensionNotInstalled){
      var P = document.createElement('li');
      var Types = "{"+lrcEscapeStr(lrcMakeParamDescription("CLRCE_FlowOccupyNamespaces"))+":'number'}";
      var func = 'LiveRC_ManageParams_AddNewParam('+lrcEscapeStr("FlowOccupyNamespaces")+', '+Types+', false);'
      P.innerHTML = '<a id="AddParam_FlowOccupyNamespaces" title="'+lrcMakeText("AddParamLineButton_Title")+'" href="javascript:'+func+'" >'+lrcMakeText("AddParamLineButton_Text")+'</a>';
      FlowOccupyNamespacesUl.appendChild(P);
    }
    var Sep = document.createElement('hr');
    Sep.style.margin = "1em";
    UL.parentNode.appendChild(Sep);

    var FlowCoreActionWhitelistUl = document.createElement('ul');
    UL.parentNode.appendChild(FlowCoreActionWhitelistUl);
    var Values = ;
    var FlowCoreActionWhitelist = LiveRC_Config;
    var desc = lrcMakeParamDescription("CLRCE_FlowCoreActionWhitelist");
    for(var a=0,l=FlowCoreActionWhitelist.length;a<l;a++){ Values= {}; Values = FlowCoreActionWhitelist; }
    for(var a=0,l=Values.length;a<l;a++){
      var LiParams = {
        "Desc" : lrcMakeParamDescription("CLRCE_FlowCoreActionWhitelist"),
        "Name" : "FlowCoreActionWhitelist",
        "ValueType" : "object",
        "AddButton" : !FlowExtensionNotInstalled,
        "OldValue" : Values,
        "DefaultValue" : Values
      }
      var Li = LiveRC_ManageParams_CreateLiFromParam(LiParams, false);
      FlowCoreActionWhitelistUl.appendChild(Li);
    }
    if(!FlowExtensionNotInstalled){
      var P = document.createElement('li');
      var Types = "{"+lrcEscapeStr(lrcMakeParamDescription("CLRCE_FlowCoreActionWhitelist"))+":'string'}";
      var func = 'LiveRC_ManageParams_AddNewParam('+lrcEscapeStr("FlowCoreActionWhitelist")+', '+Types+', false);'
      P.innerHTML = '<a id="AddParam_FlowCoreActionWhitelist" title="'+lrcMakeText("AddParamLineButton_Title")+'" href="javascript:'+func+'" >'+lrcMakeText("AddParamLineButton_Text")+'</a>';
      FlowCoreActionWhitelistUl.appendChild(P);
    }else{
      UL.parentNode.disabled = "disabled";
      UL.parentNode.style.display = "none";
    }
  }
};

window.LiveRC_ConfigLiveRCExtension_DisableSomeLines = function(Li, Param){
  if(mw.config.get('wgServer')==='//fr.wikipedia.org'){
    if(LiveRC_Config.indexOf(Param)!==-1){
      var Inputs = Li.getElementsByTagName('input');
      for(var a=0,l=Inputs.length;a<l;a++){ Inputs.disabled = "disabled"; }
      var Selects = Li.getElementsByTagName('select');
      for(var a=0,l=Selects.length;a<l;a++){ Selects.disabled = "disabled"; }
      Li.style.display = "none";
    }
  }
  return Li;
}

/* </source>

== Sauvegarde de la configuration ==

<source lang=javascript> */

window.LiveRC_ConfigLiveRCExtension_CheckMenu = function(Input){
    var Menu = document.getElementById("LiveRC_ParamMenu");
    if(!Menu) return;
    lrcDisableLink(Input);
 // Populate variables
    var FieldSets = Menu.getElementsByTagName('fieldset');
    for(var b=0,m=FieldSets.length;b<m;b++){
        var ArrayName = FieldSets.id.split("LiveRC_OptionsContent_").join("");
        if(!LiveRC_Config) continue;
        var AddButton = LiveRC_Config;
        var Lis = FieldSets.getElementsByTagName('li');
        for(var a=0,l=Lis.length;a<l;a++){
            var ThisLi = Lis;
            if(!lrcHasClass(ThisLi, "RealParamMenuLi")) continue;
            var Inputs = ;
            Inputs.push(ThisLi.getElementsByTagName('input'));
            var ElementSpans = lrcGetElementsByClass("ParamMenuLiElement", ThisLi, "span");
            for(var y=0,z=ElementSpans.length;y<z;y++){
                var ElementSpan = ElementSpans;
                var InputList = ElementSpan.getElementsByTagName('input');
                var SelectList = ElementSpan.getElementsByTagName('select');
                for(var S=0,Slen=InputList.length;S<Slen;S++){ Inputs.push(InputList); }
                for(var S=0,Slen=SelectList.length;S<Slen;S++){ Inputs.push(SelectList); }
            }
            if(Inputs.length<2) continue;
            var LiParamName = Inputs.value;
            var Type = LiveRC_Config;   
            if(Type=="object"){   // ------------------------- object
                if(typeof(LiveRC_Config)=='undefined'){
                    LiveRC_Config = ;
                    LiveRC_Config = "object";
                    LiveRC_Config = true;
                }
                var NewValue = ;
                for(var i=1,il=Inputs.length;i<il;i++){
                    var Input = Inputs;
                    var iName = Input.name;
                    var iValue;
                    if(Input.type && Input.type=="checkbox"){
                        iValue = Input.checked;
                    }else{
                        iValue = Input.value;
                        if(lrcHasClass(Input.parentNode, "ParamMenuLiElement_number")) iValue = parseInt(iValue);
                        if(lrcHasClass(Input.parentNode, "ParamMenuLiElement_regexp")){
                            iValue =  iValue.replace(/^\//, "").replace(/\/(\D)?$/, "");
                            iValue = new RegExp(iValue);
                        }
                    }
                    NewValue = iValue;
                }
                LiveRC_Config = NewValue;
            }else{                // ------------------------- boolean, number, text
                var Input = Inputs;
                if(!Input) continue;
                var InputType = Input.type;
                var InputId = Input.id;
                if(typeof(LiveRC_Config)=='undefined'){
                    LiveRC_Config = ;
                }
                if(InputType && InputType=="checkbox"){
                    LiveRC_Config = Input.checked;
                }else{
                    if(lrcHasClass(Input.parentNode, "ParamMenuLiElement_string")) LiveRC_Config = Input.value;
                    if(lrcHasClass(Input.parentNode, "ParamMenuLiElement_number")) LiveRC_Config = parseInt(Input.value);
                    if(lrcHasClass(Input.parentNode, "ParamMenuLiElement_regexp")){
                        var iValue =  Input.value.replace(/^\//, "").replace(/\/(\D)?$/, "");
                        LiveRC_Config = new RegExp(iValue);
                    }
                }
            }
        }
    }

// Create Wikitext
    var NoSavedParams = ;
    var ParamPage = "";
    var Variables = "window.LiveRC_getSiteCustom = function(){\n  lrcDisplayDebug('getSiteCustom');\n\n";
    for(var ArrayName in LiveRC_Config){
        if(NoSavedParams.indexOf(ArrayName)!==-1) continue;
        var ThisArray = LiveRC_Config;
        if(.indexOf(Realtypeof(ThisArray))==-1) continue;
        var ParamStyle = "normal";
        var ThisVariableText = "";
        var Desc = lrcMakeParamDescription(ArrayName);
        var ThisVariableValues = ;
        var addbutton = false;
        for(var LiParamName in ThisArray){
            var ParamLine = ThisArray;
            if(.indexOf(Realtypeof(ParamLine))==-1) continue;
            var ValueType = ParamLine;
            var DefaultValue = ParamLine;
            var OldValue = ParamLine;
            var NewValue = ParamLine;
            var strNewValue = lrcEscapeStrHTML(NewValue);
            var AddButton = ParamLine;
            var AddCustomFunction = ParamLine;
            var linecustom = true;
            if(ValueType=="object" && AddButton){
                addbutton = true;
                if(Realtypeof(NewValue)=="undefined") continue;
                var ThisLineValues = ;
                for(var valuename in NewValue){
                    var newvaluevalue = NewValue;
                    var newvaluetype = Realtypeof(newvaluevalue);
                    if(.indexOf(newvaluetype)==-1) continue;
                    if(newvaluetype=="regexp") newvaluevalue = newvaluevalue.toString();
                    if(newvaluetype=="string") newvaluevalue = lrcEscapeStrHTML(newvaluevalue);
                    if(newvaluetype=="boolean") newvaluevalue = (newvaluevalue ? "true" : "false");
                    if(typeof(NewValue)!= "undefined"){
                      if(valuename.indexOf("desc-")!=-1) valuename = "desc";
                      ThisLineValues.push(lrcEscapeStrHTML(valuename)+" : "+newvaluevalue);
                    }
                }
                if(ThisLineValues.length>0) ThisVariableValues.push("      { " + ThisLineValues.join(" , ") + " }");
            }else if(ValueType=="object"){
                var ThisLineValues = ;
                for(var valuename in NewValue){
                    var newvaluevalue = NewValue;
                    var newvaluetype = Realtypeof(newvaluevalue);
                    if(.indexOf(newvaluetype)==-1) continue;
                    if(newvaluetype=="regexp") newvaluevalue = newvaluevalue.toString();
                    if(newvaluetype=="string") newvaluevalue = lrcEscapeStrHTML(newvaluevalue);
                    if(newvaluetype=="boolean") newvaluevalue = (newvaluevalue ? "true" : "false");
                    if(valuename.indexOf("desc-")!=-1) valuename = "desc";
                    ThisLineValues.push(lrcEscapeStrHTML(valuename)+" : "+newvaluevalue);
                }
                var ValuesLine = "{ " + ThisLineValues.join(" , ") + " }";
                ThisVariableValues.push("    lrcSetConfigSetting(\""+ArrayName+"\",\""+LiParamName+"\", " + ValuesLine + ");\n");
            }else if(ValueType=="regexp"){
                ThisVariableValues.push("    lrcSetConfigSetting(\""+ArrayName+"\",\""+LiParamName+"\", "+NewValue.toString()+" );\n");
            }else if(ValueType=="string"){
                ThisVariableValues.push("    lrcSetConfigSetting(\""+ArrayName+"\",\""+LiParamName+"\", "+strNewValue+");\n");
            }else if(ValueType=="number"){
                ThisVariableValues.push("    lrcSetConfigSetting(\""+ArrayName+"\",\""+LiParamName+"\", " + NewValue + ");\n"); /* TODO */
            }else if(ValueType=="boolean"){
                ThisVariableValues.push("    lrcSetConfigSetting(\""+ArrayName+"\",\""+LiParamName+"\", "+(NewValue ? "true":"false")+");\n"); /* TODO */
            }
        }
        if(addbutton){
            ThisVariableText = "    lrcSetConfigSetting(\""+ArrayName+"\", false, );\n"; /* TODO */
        }else if(!addbutton && ThisVariableValues.length>0){
            ThisVariableText = ThisVariableValues.join("");            
        }
        if(ThisVariableText!==""){
            ThisVariableText = "  try{\n" + ThisVariableText + "  }catch(e){ }\n\n";           
            Variables += "\n  // -- "+ Desc +" --\n\n" + ThisVariableText;
        }
    }
    var NewExtensionsArray = LiveRC_Config;
    var OldExtensionsArray = LiveRC_Config;
    if(.indexOf(Realtypeof(NewExtensionsArray))!=-1){
        var ExtensionText = "";
        for(var a=0,l=OldExtensionsArray.length;a<l;a++){
            var OldExtName = OldExtensionsArray;
            var found = false;
            for(var b=0,m=NewExtensionsArray.length;b<m;b++){
                var NewExt = NewExtensionsArray;
                if(NewExt && NewExt == OldExtName) found = true;
            }
            if(!found) ExtensionText += '    LiveRC_DeleteExtension(' + lrcEscapeStrHTML(OldExtName) + ');\n';
        }
        for(var a=0,l=NewExtensionsArray.length;a<l;a++){
            var NewExt = NewExtensionsArray;
            var NewExtName = NewExt;
            var found = (OldExtensionsArray.indexOf(NewExtName)!==-1);
            if(!found){
                var Desc = ( NewExt ? NewExt : ( NewExt ? NewExt : "") );
                ExtensionText += '    LiveRC_AddNewExtension({\n'
                               + '      "name" : '+ lrcEscapeStrHTML(NewExtName) + ',\n'
                               + '      "url" : '+ lrcEscapeStrHTML(NewExt) + ',\n'
                               + '      "neededright" : '+ lrcEscapeStrHTML(NewExt) + ',\n'
                               + '      "desc" : '+ lrcEscapeStrHTML(Desc) + '\n'
                               + '    });\n';
            };
        }
        if(ExtensionText!==""){
            ExtensionText = "  try{\n" + ExtensionText + "  }catch(e){ }\n\n";           
            Variables += "\n  // -- "+ lrcMakeParamDescription("lrcExtensions") +" --\n\n" + ExtensionText;
        }
 
    }
    var LiveRCConfigTextOut = "";
    var LiveRCConfigTextPost = "";
    var ConfigFieldset = document.getElementById("LiveRC_OptionsContent_LiveRCConfigLegend");
    if(ConfigFieldset){
      var Configs = {};
      var Fieldsets = ConfigFieldset.getElementsByTagName('fieldset');
      for(var a=0,l=Fieldsets.length;a<l;a++){
        var ThisFieldset = Fieldsets;
        if(ThisFieldset.style.display == "none") continue;
        var Lis = ThisFieldset.getElementsByTagName('li');
        for(var b=0,m=Lis.length;b<m;b++){
          var ThisLi = Lis;
          var ConfigID = ThisLi.id.split("LI_").join("");
          var Inputs = ;
          Inputs.push(ThisLi.getElementsByTagName('input'));
          var ElementSpans = lrcGetElementsByClass("ParamMenuLiElement", ThisLi, "span");
          for(var y=0,z=ElementSpans.length;y<z;y++){
            var ElementSpan = ElementSpans;
            var InputList = ElementSpan.getElementsByTagName('input');
            var SelectList = ElementSpan.getElementsByTagName('select');
            for(var S=0,Slen=InputList.length;S<Slen;S++){ Inputs.push(InputList); }
            for(var S=0,Slen=SelectList.length;S<Slen;S++){ Inputs.push(SelectList); }
          }
          if(Inputs.length<2) continue;
          switch(ConfigID){
            case 'InstallationPage':
            case 'SiteConfigPage':
            case 'CSSPage':
            case 'UserParamPage':
            case 'CustomCatTemplate':
            case 'BugzillaURL':
            case 'RevertLimit':
            case 'FlagRevProtection':
              var Input = Inputs;
              if(!Input) continue;
              var InputType = Input.type;
              var Value = Input.value;
              if(InputType && InputType=="checkbox"){
                Value = Input.checked;
              }else{
                if(lrcHasClass(Input.parentNode, "ParamMenuLiElement_string")) Value = Value;
                if(lrcHasClass(Input.parentNode, "ParamMenuLiElement_number")) Value = parseInt(Value);
                if(lrcHasClass(Input.parentNode, "ParamMenuLiElement_regexp")){
                   Value =  Value.replace(/^\//, "").replace(/\/(\D)?$/, "");
                   Value = new RegExp(Value);
                }
              }
              Configs = Value;
              break;
            case 'PageContentIds':
            case 'TrackingCategories':
            case 'LimitationsBlacklist':
            case 'FlowOccupyPages':
            case 'FlowOccupyNamespaces':
            case 'FlowCoreActionWhitelist':
              if(!Configs) Configs = ;
              var Input = Inputs;
              if(!Input) continue;
              var InputType = Input.type;
              var Value = Input.value;
              if(InputType && InputType=="checkbox"){
                Value = Input.checked;
              }else{
                if(lrcHasClass(Input.parentNode, "ParamMenuLiElement_string")) Value = Value;
                if(lrcHasClass(Input.parentNode, "ParamMenuLiElement_number")) Value = parseInt(Value);
                if(lrcHasClass(Input.parentNode, "ParamMenuLiElement_regexp")){
                   Value =  Value.replace(/^\//, "").replace(/\/(\D)?$/, "");
                   Value = new RegExp(Value);
                }
              }
              Configs.push(Value);
              break;
            case 'ToolTags':
            case 'UserGroupList':
            case 'LimitationsRight':
              if(!Configs) Configs = ;
              var Item = {};
              for(var I=0,Ilen=Inputs.length;I<Ilen;I++){
                var Input = Inputs;
                var InputType = Input.type;
                if(InputType == "hidden") continue;
                var Value = Input.value;
                var Name = Input.name;                
                if(InputType && InputType=="checkbox"){
                  Value = Input.checked;
                }else{
                  if(lrcHasClass(Input.parentNode, "ParamMenuLiElement_string")) Value = Value;
                  if(lrcHasClass(Input.parentNode, "ParamMenuLiElement_number")) Value = parseInt(Value);
                  if(lrcHasClass(Input.parentNode, "ParamMenuLiElement_regexp")){
                     Value =  Value.replace(/^\//, "").replace(/\/(\D)?$/, "");
                     Value = new RegExp(Value);
                  }
                }
                Item = Value;
              }
              Configs.push(Item);
              break;
          }
        }
      }
      for(var conf in Configs){
        var Value = Configs;
        switch(conf){
          case 'InstallationPage':
          case 'SiteConfigPage':
          case 'CSSPage':
          case 'UserParamPage':
          case 'CustomCatTemplate':
          case 'BugzillaURL':
          case 'RevertLimit':
          case 'FlagRevProtection':
            var Valuetype = Realtypeof(Value);
            if(.indexOf(Valuetype)==-1) continue;
            if(Valuetype=="regexp") Value = Value.toString();
            if(Valuetype=="string") Value = lrcEscapeStrHTML(Value);
            if(Valuetype=="boolean") Value = (Value ? "true" : "false");
            if(LiveRC_Config.indexOf(conf)===-1){
              LiveRCConfigTextPost += "      // -- "+ lrcMakeParamDescription("CLRCE_"+conf) +" --\n"
                                    + "    LiveRC_Config = "+Value+";\n";
            }else{
              LiveRCConfigTextOut += "    // -- "+ lrcMakeParamDescription("CLRCE_"+conf) +" --\n"
                                   + "  LiveRC_Config = "+Value+";\n";
            }
            break;
          case 'PageContentIds':
          case 'TrackingCategories':
          case 'LimitationsBlacklist':
          case 'FlowOccupyPages':
          case 'FlowOccupyNamespaces':
          case 'FlowCoreActionWhitelist':
            var ThisLineValues = ;
            for(var valuename in Value){
              var valuevalue = Value;
              var valuetype = Realtypeof(valuevalue);
              if(.indexOf(valuetype)==-1) continue;
              if(valuetype=="regexp") valuevalue = valuevalue.toString();
              if(valuetype=="string") valuevalue = lrcEscapeStrHTML(valuevalue);
              if(valuetype=="boolean") valuevalue = (valuevalue ? "true" : "false");
              ThisLineValues.push(valuevalue);
            }
            LiveRCConfigTextPost += "      // -- "+ lrcMakeParamDescription("CLRCE_"+conf) +" --\n"
                                  + "    LiveRC_Config = ;\n";

            break;
          case 'UserGroupList':
            var ThisLineValues = ;
            for(var v=0,vlen=Value.length;v<vlen;v++){
              var valuevalue = Value;
              ThisLineValues.push("      \""+valuevalue.group+"\" : { list:, show:"+(valuevalue.show ? "true" : "false") +" }");
            }
            LiveRCConfigTextPost += "      // -- "+ lrcMakeParamDescription("CLRCE_"+conf) +" --\n"
                                  + "    LiveRC_Config = {\n"
                                  + ThisLineValues.join(",\n")+"\n"
                                  + "    };\n";

            break;
          case 'LimitationsRight':
            var ThisLineValues = ;
            for(var v=0,vlen=Value.length;v<vlen;v++){
              var valuevalue = Value;
              ThisLineValues.push("    LiveRC_Config = "+lrcEscapeStrHTML(valuevalue.limitationright)+";\n");
            }
            LiveRCConfigTextPost += "      // -- "+ lrcMakeParamDescription("CLRCE_"+conf) +" --\n"
                                  + ThisLineValues.join("");
            break;
          case 'ToolTags':
            var ThisLineValues = ;
            for(var v=0,vlen=Value.length;v<vlen;v++){
              var valuevalue = Value;
              ThisLineValues.push("    LiveRC_Config = "+lrcEscapeStrHTML(valuevalue.tagname)+";\n");
            }
            LiveRCConfigTextPost += "      // -- "+ lrcMakeParamDescription("CLRCE_"+conf) +" --\n"
                                  + ThisLineValues.join("");
            break;
        }
      }
    }
    if(LiveRCConfigTextPost!==""){
        LiveRCConfigTextPost = "  try{\n" + LiveRCConfigTextPost + "  }catch(e){ }\n\n";           
        Variables += "\n  // -- "+ lrcMakeParamDescription("LiveRCConfigLegend") +" --\n\n" + LiveRCConfigTextPost;
    }
    Variables += "}\n\n";
    if(LiveRCConfigTextOut!=="" && (mw.config.get('wgServer')!=='//fr.wikipedia.org')){
      LiveRCConfigTextOut = "if(typeof(LiveRC_Config)=='undefined'){\n"
                          + "  var LiveRC_Config = {};\n"
                          + LiveRCConfigTextOut;
                          + "}\n\n";
    }else{
      LiveRCConfigTextOut = "";
    }
    ParamPage += Variables + LiveRCConfigTextOut;
    if(mw.config.get('wgServer')!=='//fr.wikipedia.org')
      ParamPage += "mw.loader.load('//fr.wikipedia.org/w/index.php?title=Mediawiki:Gadget-LiveRC.js&action=raw&ctype=text/javascript'));\n\n";
    LiveRC_ManageParams_UpdateParams(ParamPage, LiveRC_Config, "CLRCE_resume");
}

window.LiveRC_ConfigLiveRCExtension_RAZParams = function(Input){
    lrcDisableLink(Input);
    var ParamPage = "// "+lrcMakeText("Comment")+ "\n";
    LiveRC_ManageParams_UpdateParams(ParamPage, LiveRC_Config, "CLRCE_resume");
}


window.LiveRC_ConfigLiveRCExtension_CheckCSSMenu = function(Input){
  LiveRC_ManageParams_CheckCSSMenu(Input, LiveRC_Config, "CLRCE_resume");
}

window.LiveRC_ConfigLiveRCExtension_RAZCSSParams = function(Input){
  LiveRC_ManageParams_RAZCSSParams(Input, LiveRC_Config, "CLRCE_resume");
}

/* </source>

== Hooks ==

<source lang=javascript> */

LiveRC_AddHook("BeforeInitActivationProcess", function(){
    LiveRC_Config = true;
    LiveRC_Config = true;
    LiveRC_Config = true;
    if(mw.config.get('wgNamespaceNumber')<0 || (mw.config.get('wgAction')!="view" && mw.config.get('wgAction') != "purge")) return; 
    if(mw.config.get('wgPageName').replace(/_/g, " ") !== LiveRC_Config) return;
    for(var a=0,l=lrcExtensions.length;a<l;a++){
      if(LiveRC_Config.indexOf(lrcExtensions.name)===-1)
        mw.loader.load(lrcExtensions.url + '&action=raw&ctype=text/javascript');
    }
    LiveRC_AddHook("AfterGotUserInfos", function (){
      LiveRC_ConfigLiveRCExtension_AddNeededRightToExtension();
      if(LiveRC_ConfigLiveRCExtension_UserCanEdit(mw.config.get('wgPageName'))){
        if(LiveRC_ConfigLiveRCExtension_UserCanEdit(LiveRC_Config)){
          LiveRC_ConfigLiveRCExtension_GetOldLocalCSS();
        }
        LiveRC_Config.push({functions:LiveRC_ConfigLiveRCExtension_BuildForm});
      }
    });
});


LiveRC_AddHook("AfterGotUserInfos", LiveRC_ConfigLiveRCExtension_AddLink );

/* <source lang=javascript> */

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