Utilisateur:Dr Brains/LiveRC/ProposeTranslationExtension.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) ;
Firefox (sur GNU/Linux) / 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'''
Ajoute un bouton pour proposer une traduction complète de l'interface dans une nouvelle langue
* 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
lrcParams["DefaultTargetPage"] = "MediaWiki:Gadget-LiveRC.js/i18n/$LANG$.js";
lrcIcons["ProposeTranslationExtensionIcon"] = {"type":0,
"src":"thumb/0/02/Translation_-_Noun_project_987.svg/32px-Translation_-_Noun_project_987.svg.png",
"width":32,
"height":32
}
lrcTexts["ProposeTranslationExtensionIcon_Title"] = "Afficher/masquer le formulaire de traduction";
lrcTexts["ProposeTranslationMenuTitle"] = "Proposer une traduction";
lrcTexts["ProposeTranslationMenuDefaultLangSelectorTitle"] = "Langue de référence"
lrcTexts["ProposeTranslationMenuLangSelectorTitle"] = "Langue traduite";
lrcTexts["ProposeTranslationMenuSandboxTitle"] = "Page de sauvegarde";
lrcTexts["ProposeTranslationHideTranslatedLabel"] = "N’afficher que les traductions manquantes";
lrcTexts["ProposeTranslationSaveAllParams"] = "Sauvegarder la totalité de la langue sélectionnée";
lrcTexts["NotJavascriptPage"] = "La page $1 n’est pas une page javascript. Une telle page doit se terminer par <code>.js</code>";
lrcTexts["NeedRightToEdit"] = "Vous n’avez pas le droit $1 nécessaire pour éditer la page $2";
lrcTexts["ThisIsGlobalTranslation"] = "ATTENTION !<br />Toute modification sur la page $1 impactera la totalité des utilisateurs utilisant la langue $2.<br />Continuer ?";
UnTranslatedTexts["ProposeTranslationResume"] = "Mise à jour traductions (langue = $1)";
lrcParamDesc["DescDefaultTargetPage"] = "[ProposeTranslation] Page de sauvegarde par défaut";
lrcParamDesc["DescProposeTranslationExtensionIcon"] = "[ProposeTranslation] Bouton d’affichage/masquage du formulaire de traduction";
lrcParamDesc["DescProposeTranslationExtensionIcon_Title"] = "[ProposeTranslation] Infobulle du bouton d’affichage/masquage du formulaire de traduction";
lrcParamDesc["DescProposeTranslationMenuTitle"] = "[ProposeTranslation] Titre de la fenêtre pour proposer une traduction";
lrcParamDesc["DescProposeTranslationMenuLangSelectorTitle"] = "[ProposeTranslation] Label du sélecteur de langue";
lrcParamDesc["DescProposeTranslationMenuSandboxTitle"] = "[ProposeTranslation] Label du sélecteur de la page de brouillon";
lrcParamDesc["DescProposeTranslationHideTranslatedLabel"] = "[ProposeTranslation] Label de la case pour masquer les traductions déjà disponibles";
lrcParamDesc["DescProposeTranslationSaveAllParams"] = "[ProposeTranslation] Label de la case pour sauvegarder la totalité des valeurs pour une langue";
lrcParamDesc["DescProposeTranslationMenuDefaultLangSelectorTitle"] = "[ProposeTranslation] Label du sélecteur de langue de référence";
lrcParamDesc["DescNotJavascriptPage"] = "[ProposeTranslation] Avertissement \"Page non .js\"";
lrcParamDesc["DescNeedRightToEdit"] = "[ProposeTranslation] Avertissement \"Droit utilisateur manquant\"";
lrcParamDesc["DescThisIsGlobalTranslation"] = "[ProposeTranslation] Avertissement \"Page de traduction globale\"";
lrcParamDesc["DescProposeTranslationResume"] = "[ProposeTranslation] Résumé de modification";
// Auto generated translations
var ProposeTranslationExtension_NoNeedTranslationList = new Array(/^DescNS_/, /^DescLog_/);
importStylesheetURI('//fr.wikipedia.org/w/index.php?title=MediaWiki:Gadget-LiveRC.js/Extensions/ProposeTranslationExtension.css&action=raw&ctype=text/css');
function ProposeTranslationExtension_AddButton(){
var Buttons = document.getElementById("LiveRCButtons");
if(!Buttons) return;
var Span = document.createElement('span');
Span.id = "TranslationIcon";
var OnSpan = document.createElement("span");
$(OnSpan).addClass("OnButton");
OnSpan.innerHTML = lrcMakeIcon("ProposeTranslationExtensionIcon");
OnSpan.style.display = "none";
var OffSpan = document.createElement('span');
$(OffSpan).addClass("OffButton");
OffSpan.innerHTML = lrcMakeIcon("ProposeTranslationExtensionIcon");
var Link = document.createElement('a');
Link.href = "javascript:ProposeTranslationExtension_ToggleMenu();";
Link.appendChild(OnSpan);
Link.appendChild(OffSpan);
Span.appendChild(Link);
Buttons.insertBefore(document.createTextNode(" "), Buttons.firstChild);
Buttons.insertBefore(Span, Buttons.firstChild);
}
LiveRC_AddHook("AfterOptions", ProposeTranslationExtension_AddButton);
function ProposeTranslationExtension_ToggleMenu(){
var Button = document.getElementById("TranslationIcon");
if(!Button) return;
var Spans = Button.getElementsByTagName("span");
var OnSpan = Spans[0];
var OffSpan = Spans[1];
if(OnSpan.style.display == "none" ){
OnSpan.style.display = "";
OffSpan.style.display = "none";
ProposeTranslationExtension_CreateMenu("ProposeTranslationExtension_Menu");
LiveRC_ManageParams_CloseMenu();
lrcCloseAll()
}else{
OnSpan.style.display = "none";
OffSpan.style.display = "";
var Menu = document.getElementById("ProposeTranslationExtension_Menu");
if(Menu) Menu.parentNode.removeChild(Menu);
$(document.body).removeClass("LiveRCTranslationgDisplayed");
}
}
function ProposeTranslationExtension_TextTranslationFill(OptionArray, ArrayName, onlytext){
LiveRC_Config["ProposeTextTranslation"][ArrayName] = new Array();
var WhiteList = ProposeTranslationExtension_NoNeedTranslationList;
for(var ParamName in OptionArray){
var inwhitelist = false;
for(var a=0,l=WhiteList.length;a<l;a++){ if(ParamName.match(WhiteList[a])!=null){ inwhitelist = true; } }
if(inwhitelist) continue;
if(ParamName.match(/^DescNS_/)!=null) continue;
var ParamDefValue = OptionArray[ParamName];
var TextsinDefValue = new Array();
var Name;
if(!onlytext){
Name = ParamDefValue["name"];
if(!Name) Name = ParamDefValue["target"];
for(var T in ParamDefValue){
if(T.indexOf("desc")!=-1) TextsinDefValue[T] = ParamDefValue[T];
}
}else{
Name = ParamName;
TextsinDefValue = ParamDefValue;
}
LiveRC_Config["ProposeTextTranslation"][ArrayName][Name] = TextsinDefValue;
}
}
function ProposeTranslationExtension_CreateMenu(id){
var TargetDiv = document.getElementById("OutFixedBottomPanel");
if(!TargetDiv) return;
lrcCloseAll();
$(document.body).addClass("LiveRCTranslationgDisplayed");
LiveRC_Config["ProposeTextTranslation"] = new Array();
ProposeTranslationExtension_TextTranslationFill(lrcTranslatedTexts, "lrcTranslatedTexts", true);
ProposeTranslationExtension_TextTranslationFill(lrcTranslatedParamDesc, "lrcTranslatedParamDesc", true);
ProposeTranslationExtension_TextTranslationFill(lrcExtensions, "lrcExtensions");
ProposeTranslationExtension_TextTranslationFill(lrcCSSstyles, "lrcCSSstyles");
var Menu = document.createElement('div');
Menu.id = id;
var MenuAnchor = document.createElement('div');
MenuAnchor.id = id + "_Anchor";
MenuAnchor.innerHTML = lrcMakeText("ProposeTranslationMenuTitle");
Menu.appendChild(MenuAnchor);
var MenuContent = document.createElement('div');
MenuContent.id = id + "_Content";
$(MenuContent).addClass("LiveRC_MenuContent");
Menu.appendChild(MenuContent);
MenuContent.appendChild(ProposeTranslationExtension_CreateOptionButtons());
var ToggleButtons = document.createElement('p');
ToggleButtons.id = id+"_ToggleButtons";
MenuContent.appendChild(ToggleButtons);
var Form = document.createElement('form');
Form.id = id + "_Form";
MenuContent.appendChild(Form);
TargetDiv.appendChild(Menu);
for(var ArrayName in LiveRC_Config["ProposeTextTranslation"]){
var ThisArray = LiveRC_Config["ProposeTextTranslation"][ArrayName];
var VariableFieldset = document.createElement('fieldset');
VariableFieldset.id = "LiveRC_TranslationContent_"+ArrayName;
VariableFieldset.setAttribute("style", "text-align:left;");
Form.appendChild(VariableFieldset);
var VariableLegend = document.createElement('legend');
VariableLegend.appendChild(document.createTextNode(lrcMakeParamDescription(ArrayName)));
VariableFieldset.appendChild(VariableLegend);
VariableFieldset.appendChild(ProposeTranslationExtension_CreateActionButtons());
var VariableDiv = document.createElement('div');
VariableDiv.className = "LiveRC_TranslationMenuPart";
VariableDiv.setAttribute("style", "height:350px;overflow-y:auto;");
VariableFieldset.appendChild(VariableDiv);
var VariableUl = document.createElement('ul');
VariableUl.id = "LiveRC_TranslationContentUL_"+ArrayName;
VariableUl.className = "LiveRC_TranslationContentUL";
// VariableUl.setAttribute("style", "-moz-column-count:2;-webkit-column-count:2;column-count:2;");
VariableDiv.appendChild(VariableUl);
}
ProposeTranslationExtension_FillTextLists(lrcMakeParam("Language"));
ProposeTranslationExtension_CreateToggleButtons(id);
ProposeTranslationExtension_HighlightMissingTranslations();
LiveRC_SetVerticalResizeZone(MenuAnchor, $(Menu).find("div.LiveRC_TranslationMenuPart").toArray(), Menu);
}
function ProposeTranslationExtension_FillTextLists(DefaultLang){
for(var ArrayName in LiveRC_Config["ProposeTextTranslation"]){
var ThisArray = LiveRC_Config["ProposeTextTranslation"][ArrayName];
var VariableUl = document.getElementById("LiveRC_TranslationContentUL_"+ArrayName);
if(!VariableUl) continue;
while(VariableUl.firstChild){ VariableUl.removeChild(VariableUl.firstChild); };
for(var ThisParamName in ThisArray){
var ThisParam = ThisArray[ThisParamName];
var P = document.createElement('li');
$(P).addClass("ParamMenuLi");
VariableUl.appendChild(P);
var HiddenInput = document.createElement('input');
HiddenInput.type = "hidden";
HiddenInput.name = "variable_index";
HiddenInput.value = ThisParamName;
P.appendChild(HiddenInput);
var Label = document.createElement('label');
Label.setAttribute('for', ThisParamName);
Label.innerHTML = ThisParamName;
P.appendChild(Label);
P.appendChild(document.createElement("br"));
var Oldtranslations = document.createElement('span');
$(Oldtranslations).addClass('translations');
var TranslationsText = new Array();
for(var VarIndex in ThisParam){
if(VarIndex === "desc") continue;
TranslationsText.push(ProposeTranslationExtension_FillTextList(VarIndex, ThisParam, DefaultLang));
}
if(TranslationsText.length===0)
TranslationsText.push(ProposeTranslationExtension_FillTextList("desc", ThisParam, DefaultLang));
Oldtranslations.innerHTML = TranslationsText.join("");
P.appendChild(Oldtranslations);
var Input = document.createElement('input');
Input.name = ThisParamName;
Input.type = "text";
Input.size = 120;
Input.setAttribute("style", "padding:2px;margin:0");
Input.value = "";
P.appendChild(Input);
}
}
}
function ProposeTranslationExtension_FillTextList(VarIndex, ThisParam, DefaultLang){
if(!ThisParam[VarIndex]) return "";
var Default = " defaultlang";
var Lang = VarIndex;
if(Lang.indexOf("desc-")!=-1) Lang = Lang.split("desc-").join("");
if(Lang != DefaultLang) Default = "";
var ThisTranslation = '* <code><span class="lang'+Default+'">'+Lang+'</span></code>'
+ ' : '
+ '<span class="trad">'+ThisParam[VarIndex].htmlize()+'</span><br />';
return ('<span class="translation">' + ThisTranslation + '</span>');
}
function ProposeTranslationExtension_CreateActionButtons(){
var ActionP = document.createElement('p');
var OKInput = document.createElement('input');
OKInput.type = "button";
OKInput.value = lrcMakeText("OK");
OKInput.onclick = function(){ ProposeTranslationExtension_CheckTargetPage(); return false;}
OKInput.onselect = function(){ ProposeTranslationExtension_CheckTargetPage(); return false;}
ActionP.appendChild(OKInput);
var CancelInput = document.createElement('input');
CancelInput.type = "button";
CancelInput.value = lrcMakeText("Cancel");
CancelInput.onclick = function(){ ProposeTranslationExtension_ToggleMenu(this); return false;}
CancelInput.onselect = function(){ ProposeTranslationExtension_ToggleMenu(this); return false;}
ActionP.appendChild(CancelInput);
return ActionP;
}
function ProposeTranslationExtension_CreateToggleButtons(id){
var Form = document.getElementById(id + "_Form");
var P = document.getElementById(id + "_ToggleButtons");
var Fieldsets = Form.getElementsByTagName('fieldset');
for(var a=0,l=Fieldsets.length;a<l;a++){
var Id = ""+Fieldsets[a].id.split("LiveRC_TranslationContent_").join("");
var Input = document.createElement('input');
Input.id = "LiveRC_TranslationContentInput_"+Id;
Input.type = "button";
Input.setAttribute("style", "padding:0;");
Input.value = lrcMakeParamDescription(Id+"_short");
Input.title = lrcMakeParamDescription(Id);
Input.onclick = function(){ ProposeTranslationExtension_ToggleMenuContent(this); return false;};
Input.onselect = function(){ ProposeTranslationExtension_ToggleMenuContent(this); return false;};
P.appendChild(Input);
}
ProposeTranslationExtension_ToggleMenuContent();
LiveRC_Config["Timeout"]["TranslationMenu"] = setTimeout("ProposeTranslationExtension_SetMenuHeights()", 500);
}
function ProposeTranslationExtension_ToggleMenuContent(Input){
var Id = false;
if(Input) Id = Input.id.split("LiveRC_TranslationContentInput_").join("LiveRC_TranslationContent_");
var Form = document.getElementById("ProposeTranslationExtension_Menu_Form");
var Onglets = document.getElementById("ProposeTranslationExtension_Menu_ToggleButtons").getElementsByTagName('input');
var Fieldsets = Form.getElementsByTagName('fieldset');
for(var a=0,l=Fieldsets.length;a<l;a++){
if(Id){
Onglets[a].setAttribute("style", ((Id == Fieldsets[a].id)? "font-weight:bold;padding:0;" : "padding:0;") );
Fieldsets[a].style.display = ((Id == Fieldsets[a].id)? "" : "none");
}else{
Onglets[a].setAttribute("style", ((a==0)? "font-weight:bold;padding:0;" : "padding:0;") );
Fieldsets[a].style.display = ((a==0)? "" : "none");
}
}
}
function ProposeTranslationExtension_SetMenuHeights(){
var Menu = document.getElementById("ProposeTranslationExtension_Menu");
if(!Menu) return;
var HeightFound = false;
var FieldSets = Menu.getElementsByTagName('fieldset');
for(var b=0,m=FieldSets.length;b<m;b++){
if(FieldSets[b].style.display == "none") continue;
var MenuPart = $(FieldSets[b]).find("div.LiveRC_TranslationMenuPart")[0];
if(!MenuPart) continue;
var StyleHeight = MenuPart.style.height;
if(StyleHeight) HeightFound = StyleHeight;
}
if(HeightFound){
$(Menu).find("div.LiveRC_TranslationMenuPart").css("height", HeightFound);
}
clearTimeout(LiveRC_Config["Timeout"]["TranslationMenu"]);
LiveRC_Config["Timeout"]["TranslationMenu"] = setTimeout("ProposeTranslationExtension_SetMenuHeights()", 500);
}
function ProposeTranslationExtension_CreateOptionButtons(){
var Span = document.createElement("p");
Span.id = "ProposeTranslationExtension_SelectorsSpan";
var DefaultLangSelect = ProposeTranslationExtension_CreateLangSelector({
selectedopt:lrcMakeParam("Language"),
label:lrcMakeText("ProposeTranslationMenuDefaultLangSelectorTitle"),
id:"ProposeTranslationExtension_DefaultLangSelector",
onchangefunc:ProposeTranslationExtension_OnLangSelectorChange
});
Span.appendChild(DefaultLangSelect);
Span.appendChild(document.createTextNode(" • "));
var EmptyOpt = document.createElement('option');
EmptyOpt.value = "";
EmptyOpt.innerHTML = "";
var LangSelect = ProposeTranslationExtension_CreateLangSelector({
selectedopt:lrcMakeParam("Language"),
label:lrcMakeText("ProposeTranslationMenuLangSelectorTitle"),
id:"ProposeTranslationExtension_LangSelector",
onchangefunc:ProposeTranslationExtension_OnLangSelectorChange
});
Span.appendChild(LangSelect);
Span.appendChild(document.createTextNode(" • "));
var PageLabel = document.createElement('label');
PageLabel.setAttribute('for', "ProposeTranslationExtension_PageSelector");
PageLabel.innerHTML = lrcMakeText("ProposeTranslationMenuSandboxTitle");
Span.appendChild(PageLabel);
var PageInput = document.createElement('input');
PageInput.name = "ProposeTranslationExtension_PageSelector";
PageInput.id = "ProposeTranslationExtension_PageSelector";
PageInput.type = "text";
PageInput.size = 45;
PageInput.value = lrcMakeParam("DefaultTargetPage");
Span.appendChild(PageInput);
Span.appendChild(document.createElement("br"));
var SaveAllLabel = document.createElement('label');
SaveAllLabel.setAttribute("for","SaveAllParams");
SaveAllLabel.innerHTML = lrcMakeText("ProposeTranslationSaveAllParams");
var SaveAllInput = document.createElement('input');
SaveAllInput.type = "checkbox";
SaveAllInput.id = "SaveAllParams";
SaveAllInput.checked = "checked";
SaveAllInput.name = "SaveAllParams";
Span.appendChild(SaveAllLabel);
Span.appendChild(SaveAllInput);
Span.appendChild(document.createTextNode(" • "));
var HideTranslatedLabel = document.createElement('label');
HideTranslatedLabel.setAttribute('for', "HideTranslatedSelector");
HideTranslatedLabel.innerHTML = lrcMakeText("ProposeTranslationHideTranslatedLabel");
var HideTranslatedInput = document.createElement('input');
HideTranslatedInput.id = "HideTranslatedSelector";
HideTranslatedInput.name = "HideTranslatedSelector";
HideTranslatedInput.type = "checkbox";
HideTranslatedInput.onclick = ProposeTranslationExtension_HideTranslatedTexts;
Span.appendChild(HideTranslatedLabel);
Span.appendChild(HideTranslatedInput);
return Span;
}
function ProposeTranslationExtension_CreateLangSelector(Args){
var Span = document.createElement('span');
var LangLabel = document.createElement('label');
LangLabel.setAttribute('for', "ProposeTranslationExtension_LangSelector");
LangLabel.innerHTML = Args.label;
var LangSelect = document.createElement("select");
if(Args.id) LangSelect.id = Args.id;
if(Args.firstopt) LangSelect.appendChild(Args.firstopt);
for(var langcode in LiveRC_Config["MediawikiLanguages"]){
var ThisLang = LiveRC_Config["MediawikiLanguages"][langcode];
var opt = document.createElement('option');
opt.value = langcode;
opt.innerHTML = "("+langcode+") "+ThisLang;
if(LiveRC_Config["SupportedLanguages"].indexOf(langcode)!=-1) opt.style.fontWeight = "bold";
if(Args.selectedopt === langcode) opt.selected = "selected";
LangSelect.appendChild(opt);
}
if(typeof(Args.onchangefunc)==="function") LangSelect.onchange = Args.onchangefunc;
Span.appendChild(LangLabel);
Span.appendChild(LangSelect);
return Span;
}
function ProposeTranslationExtension_OnLangSelectorChange(){
var LangSelector = document.getElementById("ProposeTranslationExtension_LangSelector");
var DefaultLangSelector = document.getElementById("ProposeTranslationExtension_DefaultLangSelector");
if( !DefaultLangSelector || !LangSelector ) return;
var Lang = LangSelector.value;
var DefaultLang = LangSelector.value;
var LangsToLoad = new Array();
if(!LiveRC_Config["LoadedLanguages"][Lang]){
LangsToLoad.push(Lang);
}
if(!LiveRC_Config["LoadedLanguages"][DefaultLang]){
LangsToLoad.push(DefaultLang);
}
if(LangsToLoad.length>0){
var LoadLaunched = false;
for(var a=0,l=LangsToLoad.length;a<l;a++){
var ThisLang = LangsToLoad[a];
if(LiveRC_Config["LoadedLanguages"][ThisLang]) continue;
if(LiveRC_Config["AvailableLanguages"].indexOf(ThisLang)!=-1) continue;
if(LiveRC_Config["SupportedLanguages"].indexOf(ThisLang)==-1) continue;
LiveRC_Config["AvailableLanguages"].push(ThisLang);
LoadLaunched = true;
lrcDisplayDebug("Load translations: " + ThisLang );
mw.loader.load('//fr.wikipedia.org/w/index.php?title='
+ 'MediaWiki:Gadget-LiveRC.js/i18n/'+ThisLang+'.js'
+ '&action=raw&ctype=text/javascript');
}
}
if(LoadLaunched){
var EndFunc = {functions:new Array(ProposeTranslationExtension_UpdateTextLis)};
LiveRC_Config["LaunchProcess"].push(EndFunc);
LiveRC_Config["Timeout"]["CheckIfTranslationsLoaded"] = setTimeout("LiveRC_CheckIfTranslationsLoaded();", 500);
LiveRC_Config["Timeout"]["LanguageMissing"] = setTimeout("LiveRC_Alert_TranslationsNotLoaded();", (25*1000));
}else{
ProposeTranslationExtension_UpdateTextLis();
}
}
function ProposeTranslationExtension_UpdateTextLis(){
var DefaultLangSelector = document.getElementById("ProposeTranslationExtension_DefaultLangSelector");
if(!DefaultLangSelector) return;
var DefaultLang = DefaultLangSelector.value;
LiveRC_Config["ProposeTextTranslation"] = new Array();
ProposeTranslationExtension_TextTranslationFill(lrcTranslatedTexts, "lrcTranslatedTexts", true);
ProposeTranslationExtension_TextTranslationFill(lrcTranslatedParamDesc, "lrcTranslatedParamDesc", true);
ProposeTranslationExtension_TextTranslationFill(lrcExtensions, "lrcExtensions");
ProposeTranslationExtension_TextTranslationFill(lrcCSSstyles, "lrcCSSstyles");
ProposeTranslationExtension_FillTextLists(DefaultLang);
ProposeTranslationExtension_ToggleMenuContent();
ProposeTranslationExtension_HighlightMissingTranslations();
}
function ProposeTranslationExtension_HighlightMissingTranslations(){
var Form = document.getElementById("ProposeTranslationExtension_Menu_Form");
var LangSelector = document.getElementById("ProposeTranslationExtension_LangSelector");
if( !Form || !LangSelector) return;
var SelectedLang = LangSelector.value;
if(!SelectedLang) return;
var AllLis = Form.getElementsByTagName('li');
for(var a=0,l=AllLis.length;a<l;a++){
var Li = AllLis[a];
var Trad = ProposeTranslationExtension_GetTrad(Li, SelectedLang);
if(Trad === false){
$(Li).addClass("NotranslationParamLi");
}else{
$(Li).removeClass("NotranslationParamLi");
}
}
ProposeTranslationExtension_HideTranslatedTexts();
}
function ProposeTranslationExtension_HideTranslatedTexts(){
var Form = document.getElementById("ProposeTranslationExtension_Menu_Form");
var Input = document.getElementById("HideTranslatedSelector");
var LangSelector = document.getElementById("ProposeTranslationExtension_LangSelector");
if( !Form || !Input || !LangSelector ) return;
var SelectedLang = LangSelector.value;
if(!SelectedLang){
$(Form).removeClass("HideTranslated");
return;
}
if(Input.checked){
$(Form).addClass("HideTranslated");
}else{
$(Form).removeClass("HideTranslated");
}
}
function ProposeTranslationExtension_GetTrad(Li, SelectedLang){
var foundtranslation = false;
var Translations = $(Li).find("span.translation");
for(var b=0,m=Translations.length;b<m;b++){
if(foundtranslation) continue;
var Lang = $(Translations[b]).find("span.lang")[0].innerHTML;
var Trad = $(Translations[b]).find("span.trad")[0].innerHTML;
if(Lang == SelectedLang) foundtranslation = true;
}
if(foundtranslation) return Trad;
return false;
}
function ProposeTranslationExtension_CheckTargetPage(){
var LangSelector = document.getElementById("ProposeTranslationExtension_LangSelector");
var PageSelector = document.getElementById("ProposeTranslationExtension_PageSelector");
if( !LangSelector || !PageSelector ) return;
var Lang = LangSelector.value;
if(!Lang) return;
var Page = PageSelector.value;
if(!Page) return;
var RealPageTarget = Page.split("$LANG$").join(Lang);
var FunctionToLaunch = function(){
ProposeTranslationExtension_CheckMenu(Lang, Page);
}
var Message = "";
if(Page.match(/\.js$/)==null){
Message = lrcMakeText("NotJavascriptPage").split("$1").join(RealPageTarget)
LiveRC_alert(Message);
return
}
Message = lrcMakeText("NeedRightToEdit")
var PageNamespace = getNamespaceInfoFromPage(Page);
if(PageNamespace==8 && !lrcUserHasRight("editinterface")){
Message = Message.split("$1").join("<code>editinterface</code>").split("$2").join("<code>"+RealPageTarget+"</code>");
LiveRC_alert(Message);
return
}
if(PageNamespace==2 && !(Page.indexOf(mw.config.get('wgUserName'))==-1) && !lrcUserHasRight("edituserjs")){
Message = Message.split("$1").join("<code>edituserjs</code>").split("$2").join("<code>"+RealPageTarget+"</code>")
LiveRC_alert(Message);
return
}
if(Page==lrcParams["DefaultTargetPage"]){
var TheLang = LiveRC_Config["MediawikiLanguages"][Lang];
Message = lrcMakeText("ThisIsGlobalTranslation").split("$1").join("<code>"+RealPageTarget+"</code>").split("$2").join(TheLang);
LiveRC_confirm(Message, FunctionToLaunch);
return;
}else{
FunctionToLaunch();
}
}
function ProposeTranslationExtension_CheckMenu(Lang, Page){
var Form = document.getElementById("ProposeTranslationExtension_Menu_Form");
if( !Form ) return;
Page = Page.split("$LANG$").join(Lang);
var SaveAllParams = false;
var SaveAllParamsInput = document.getElementById('SaveAllParams');
if(SaveAllParamsInput){
SaveAllParams = SaveAllParamsInput.checked;
}
var AllLines = new Array();
var AddFunctions = {"lrcTranslatedTexts" : "addTradToTranslatedTexts",
"lrcTranslatedParamDesc" : "addTradToTranslatedParamDesc",
"lrcExtensions" : "addTradToExtensions",
"lrcCSSstyles" : "addTradToCSSstyles"
};
var Fieldsets = Form.getElementsByTagName('fieldset');
for(var a=0,l=Fieldsets.length;a<l;a++){
var Fieldset = Fieldsets[a];
var ArrayName = Fieldset.id.split("LiveRC_TranslationContent_").join("");
var FunctionName = AddFunctions[ArrayName];
var Lis = Fieldset.getElementsByTagName('li');
for(var b=0,m=Lis.length;b<m;b++){
var Li = Lis[b];
var Inputs = Li.getElementsByTagName('input')
var Label = Inputs[0].value;
var Translation = Inputs[1].value;
if(!Translation && SaveAllParams){
Translation = ProposeTranslationExtension_GetTrad(Li, Lang);
}
if(Translation){
var ThisLineText = " " + FunctionName + "("
+ lrcEscapeStrHTML(Label)
+ ","
+ lrcEscapeStrHTML(Lang)
+ ","
+ lrcEscapeStrHTML(Translation).unhtmlize()
+ ");"
AllLines.push(ThisLineText);
}
}
AllLines.push("\n");
}
AllLines.push("");
var NewTranslationTemplate = "/*\n"
+ " ******************* $1 translations for LiveRC *******************\n"
+ "\n"
+ "\n"
+ "{{Catégorisation JS|LiveRC}}\n"
+ "*/\n"
+ "\n"
+ "LiveRC_Config['LoadFunctions']['$2'] = function(){ // =============== START TRANSLATION\n"
+ "\n"
+ " LiveRC_Config['LoadedLanguages']['$2'] = true;\n"
+ " lrcDisplayDebug('Translations loaded: $2');\n"
+ "\n"
+ "$3\n"
+ "} // =============== END TRANSLATION\n"
var NewTranslationText = NewTranslationTemplate;
NewTranslationText = NewTranslationText.split("$1").join(Lang.toUpperCase());
NewTranslationText = NewTranslationText.split("$2").join(Lang);
NewTranslationText = NewTranslationText.split("$3").join(AllLines.join("\n"));
var P = document.getElementById("LiveRC_ParamMenuRunning");
if(!P){
P = document.createElement('p');
P.id = "LiveRC_ParamMenuRunning";
Form.insertBefore(P,Form.firstChild);
}
if(P) P.innerHTML = lrcMakeText("EditRunning").split("$1").join(Page);
var URL = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?format=xml&action=query&prop=info&intoken=edit&inprop=protection&titles='+encodeURIComponent(Page);
// alert(URL);
wpajax.http({ url: URL,
onSuccess: ProposeTranslationExtension_EditSandBox,
page: Page,
message: NewTranslationText,
lang: Lang
});
}
function ProposeTranslationExtension_EditSandBox(Req, data){
var Page=data.page;
var message=data.message;
var Lang = data.lang;
var EditParam = new Array();
var ObjetXML = Req.responseXML;
var Isprotected = false;
var PR = ObjetXML.getElementsByTagName("pr");
for(var a=0,l=PR.length;a<l;a++){
var Type = PR[a].getAttribute("type");
var Level = PR[a].getAttribute("level");
if(Type=="edit" && mw.config.get('wgUserGroups').indexOf(Level)==-1) Isprotected = true;
}
if(Isprotected){
alert('Page protégée');
return;
}
var page = ObjetXML.getElementsByTagName("page")[0];
EditParam["token"] = encodeURIComponent(page.getAttribute("edittoken"));
EditParam["text"] = encodeURIComponent(message);
EditParam["summary"] = lrcMakeText("RESUMESTART")+lrcMakeText("ProposeTranslationResume").split("$1").join(Lang);
EditParam["title"] = encodeURIComponent(Page);
EditParam["watchlist"] = "preferences";
if(lrcMakeParam("BypassWatchdefault")) EditParam["watchlist"] = "nochange";
var Params = new Array();
for(var Param in EditParam){
Params.push(Param+"="+EditParam[Param]);
}
Params = Params.join("&");
var headers = new Array();
headers['Content-Type'] = 'application/x-www-form-urlencoded';
var P = document.getElementById("LiveRC_ParamMenuRunning");
if(!P){
var Form = document.getElementById("ProposeTranslationExtension_Menu_Form");
P = document.createElement('p');
P.id = "LiveRC_ParamMenuRunning";
Form.insertBefore(P,Form.firstChild);
}
if(P) P.innerHTML += "<br />" + lrcMakeText("SaveRunning").split("$1").join(Page);
wpajax.http({ url: mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?action=edit',
method: "POST", headers: headers,
onSuccess: ProposeTranslationExtension_EditSandBoxDone,
page: Page,
data: Params});
}
function ProposeTranslationExtension_EditSandBoxDone(Req, data){
var Page=data.page;
var P = document.getElementById("LiveRC_ParamMenuRunning");
if(!P){
var Form = document.getElementById("ProposeTranslationExtension_Menu_Form");
P = document.createElement('p');
P.id = "LiveRC_ParamMenuRunning";
Form.insertBefore(P,Form.firstChild);
}
RefreshText = lrcMakeText("SaveDone").split("$1").join(Page)
+ "<br/>"
+ lrcMakeText("SaveRefresh")
+ '<sup>'
+ '<a class="LiveRC_ManageParams_SaveParamsRefresh" '
+ 'href="javascript:;" onclick="LiveRC_ManageParams_SaveParamsRefresh();" '
+ 'title="'+lrcMakeText("HideRefreshP_TIP")+'" >'
+ lrcMakeText("HideRefreshP_SHORT")
+ '</a>'
+ '</sup>';
if(P) P.innerHTML = RefreshText;
}
} // FIN IF
//</source>