मीडियाविकि:Gadget-HotInterwiki.js
ध्यान दें: प्रकाशित करने के बाद बदलाव देखने के लिए आपको अपने ब्राउज़र के कैश को हटाना पड़ सकता है।
- Firefox/Safari: Reload क्लिक समय Shift दबाएँ, या फिर Ctrl-F5 या Ctrl-R दबाएँ (Mac पर ⌘-R)
- Google Chrome: Ctrl-Shift-R दबाएँ (Mac पर ⌘-Shift-R)
- Internet Explorer/Edge: Refresh पर क्लिक करते समय Ctrl दबाएँ, या Ctrl-F5 दबाएँ
- Opera: Ctrl-F5 दबाएँ।
/* {{Projet:JavaScript/Script|HotInterwiki}} */
/*
Gadget de retrait/modification/ajout de lien inter-langue
* Documentation : [[Projet:JavaScript/Notices/HotInterwiki]]
*/
//<source lang=javascript>//<pre>//<nowiki>
// ***********************************************
// Variables
//////////////////////
// Textes
var HotInterwiki_Text = new Array();
HotInterwiki_Text["Autres langues"] = "अन्य भाषाएँ";
HotInterwiki_Text["(-)"] = "(-)";
HotInterwiki_Text["ConfirmRemove"] = "क्या आप अन्तरविकि कड़ी [[$1]] हटाना चाहते हैं?";
HotInterwiki_Text["SummaryRemove"] = "अंतरविकि कड़ी [[$1]] हटाई";
HotInterwiki_Text["(±)"] = "(±)";
HotInterwiki_Text["ConfirmModify"] = "क्या आप अन्तरविकि कड़ी [[$1]] को बदलकर [[$2]] करना चाहते हैं?";
HotInterwiki_Text["SummaryModify"] = "अंतरविकि कड़ी बदली [[$1]] से [[$2]]";
HotInterwiki_Text["(+)"] = "(+)";
HotInterwiki_Text["ConfirmAdd"] = "क्या आप अन्तरविकि कड़ी [[$1]] जोड़ना चाहते हैं?";
HotInterwiki_Text["SummaryAdd"] = "अंतरविकि कड़ी [[$1]] जोड़ी";
HotInterwiki_Text["IntputOK"] = "OK";
HotInterwiki_Text["IntputCancel"] = "Cancel";
HotInterwiki_Text["InterwikiTemplate"] = "$1:$2";
HotInterwiki_Text["InterwikiError"] = "गलत अन्तरविकि उपसर्ग";
//////////////////////
// Paramètres
var HotInterwiki_Param = new Array();
HotInterwiki_Param["AutoSubmit"] = true;
//////////////////////
// Autres variables
var HotInterwiki_Matrix = new Array();
HotInterwiki_Matrix['li'] = new Array();
HotInterwiki_Matrix['interwiki'] = new Array();
HotInterwiki_Matrix['form'] = new Array();
// ***********************************************
// Lancement
if(mw.config.get('wgNamespaceNumber')>-1&&document.URL.indexOf("printable=yes")==-1&&mw.config.get('wgAction')!="history"){
// Importation styles CSS
importStylesheetURI('//fr.wikipedia.org/w/index.php?title=Utilisateur:Dr Brains/HotInterwiki.css&action=raw&ctype=text/css');
// Lancement
$(HotInterwiki_Init);
}
// ***********************************************
// Initialisation
function HotInterwiki_Init(){
if(typeof(HotInterwiki_LangCustom)=="function") HotInterwiki_LangCustom();
if(typeof(HotInterwiki_SiteCustom)=="function") HotInterwiki_SiteCustom();
if(typeof(HotInterwiki_UserCustom)=="function") HotInterwiki_UserCustom();
var PLang = document.getElementById('p-lang');
if(!PLang) PLang = HotInterwiki_CreatePLang();
if(!PLang) return;
HotInterwiki_ModifyUl(PLang);
HotInterwiki_AddIWLi(PLang);
}
// ***********************************************
// Création cadre "Autres langues"
function HotInterwiki_CreatePLang(){
try{
var Target = document.getElementById('p-tb');
var TargetClassName = Target.className
var TargetBodyClassName = Target.getElementsByTagName('div')[0].className;
}catch(e){
return false;
}
var PLang = document.createElement('div');
PLang.id = "p-lang";
PLang.className = TargetClassName
var H5Lang = document.createElement('h5');
H5Lang.appendChild(document.createTextNode(HotInterwiki_Text["Autres langues"]));
var BodyLang = document.createElement('div');
BodyLang.className = TargetBodyClassName;
BodyLang.appendChild(document.createElement('ul'));
PLang.appendChild(H5Lang);
PLang.appendChild(BodyLang);
Target.parentNode.appendChild(PLang);
return PLang;
}
// ***********************************************
// Liens de retrait ou de modification d'un interwiki
function HotInterwiki_ModifyUl(PLang){
var Ul = PLang.getElementsByTagName('ul')[0];
if(!Ul) return;
var Lis = Ul.getElementsByTagName('li');
for(var a=0,l=Lis.length;a<l;a++){
var Li = Lis[a];
HotInterwiki_Matrix['li'][a] = Li;
Li.id = "Interwiki_"+a;
var Link = Li.getElementsByTagName('a')[0];
var LinkText = Link.title;
var Lang = Li.className.split("interwiki-").join("");
HotInterwiki_Matrix['interwiki'][a] = Lang + ":" + LinkText;
var SpanLinks = document.createElement('span');
var RemoveLink = document.createElement('a');
RemoveLink.href = "javascript:HotInterwiki_RemoveIW("+a+");";
RemoveLink.appendChild(document.createTextNode(HotInterwiki_Text["(-)"]));
var ModifyLink = document.createElement('a');
ModifyLink.href = "javascript:HotInterwiki_CreateForm("+a+");";
ModifyLink.appendChild(document.createTextNode(HotInterwiki_Text["(±)"]));
SpanLinks.appendChild(document.createTextNode(" "));
SpanLinks.appendChild(RemoveLink);
SpanLinks.appendChild(document.createTextNode(" "));
SpanLinks.appendChild(ModifyLink);
Li.appendChild(SpanLinks);
}
}
// ***********************************************
// Lien d'ajout d'un interwiki
function HotInterwiki_AddIWLi(PLang){
var Ul = PLang.getElementsByTagName('ul')[0];
if(!Ul) return;
var AddLi = document.createElement('li');
AddLi.id = "Interwiki_1000";
var AddLink = document.createElement('a');
AddLink.appendChild(document.createTextNode(HotInterwiki_Text["(+)"]));
AddLink.href = "javascript:HotInterwiki_CreateForm(1000);";
AddLi.appendChild(AddLink);
Ul.appendChild(AddLi);
HotInterwiki_Matrix['li'][1000] = AddLi;
HotInterwiki_Matrix['interwiki'][1000] = "";
}
// ***********************************************
// Retrait d'un interwiki
function HotInterwiki_RemoveIW(LiID){
var Li = document.getElementById("Interwiki_"+LiID);
var Lang = Li.className.split("interwiki-").join("");
var Link = Li.getElementsByTagName('a')[0];
var Text = Link.title;
var Interwiki = HotInterwiki_Text["InterwikiTemplate"].split('$1').join(Lang).split('$2').join(Text)
var SurEtCertain = confirm(HotInterwiki_Text["ConfirmRemove"].split('$1').join(Interwiki));
if(SurEtCertain) HotInterwiki_Edit(Interwiki, false);
}
// ***********************************************
// Création formulaire de modification ou d'ajout d'interwiki
function HotInterwiki_CreateForm(Index){
var Li = document.getElementById("Interwiki_"+Index);
if(!Li) return;
var Link = Li.getElementsByTagName('a')[0];
var Span = Li.getElementsByTagName('span')[0];
if(Link) Link.style.display = "none";
if(Span) Span.style.display = "none";
var Form = document.createElement('form');
Form.style.display = "inline";
Form.id = "InterwikiForm_"+Index;
Form.method = "post" ;
Form.onsubmit = function () {
var FormIndex = HotInterwiki_getIndex(this);
HotInterwiki_OK(FormIndex);
return false;
} ;
var InputText = document.createElement('input');
InputText.type = "text";
InputText.value = HotInterwiki_Matrix['interwiki'][Index];
var InputOK = document.createElement('input');
InputOK.type = "button";
InputOK.id = "InterwikiOKInput_"+Index;
InputOK.className = "InterwikiInput";
InputOK.value = HotInterwiki_Text["IntputOK"];
InputOK.onclick = function(){
var FormIndex = HotInterwiki_getIndex(this);
HotInterwiki_OK(FormIndex);
}
InputOK.onselect = function(){
var FormIndex = HotInterwiki_getIndex(this);
HotInterwiki_OK(FormIndex);
}
var InputCancel = document.createElement('input');
InputCancel.type = "button";
InputCancel.id = "InterwikiOKInput_"+Index;
InputCancel.className = "InterwikiInput";
InputCancel.value = HotInterwiki_Text["IntputCancel"];
InputCancel.onclick = function(){
var FormIndex = HotInterwiki_getIndex(this);
HotInterwiki_Cancel(FormIndex);
}
InputCancel.onselect = function(){
var FormIndex = HotInterwiki_getIndex(this);
HotInterwiki_Cancel(FormIndex);
}
Form.appendChild(InputText);
Form.appendChild(InputOK);
Form.appendChild(InputCancel);
Li.appendChild(Form);
HotInterwiki_Matrix['form'][Index] = Form;
}
// ***********************************************
// Validation du formulaire de modification ou d'ajout d'interwiki
function HotInterwiki_OK(FormIndex){
var Li = HotInterwiki_Matrix['li'][FormIndex];
var Form = HotInterwiki_Matrix['form'][FormIndex];
var OldText = HotInterwiki_Matrix['interwiki'][FormIndex];
var NewText = Form.getElementsByTagName('input')[0].value;
if(NewText == "") return;
var IWRegExp = new RegExp('^([a-z][a-z].?(x?-[^\\]]+)?|simple|tokipona):([^\\]]*)$');
if(NewText.match(IWRegExp)==null){
alert(HotInterwiki_Text["InterwikiError"]);
return;
}
var ConfirmText;
if(OldText == ""){
ConfirmText = HotInterwiki_Text["ConfirmAdd"].split('$1').join(NewText);
OldText = false;
}else{
ConfirmText = HotInterwiki_Text["ConfirmModify"].split('$1').join(OldText).split('$2').join(NewText);
}
var SurEtCertain = confirm(ConfirmText);
if(SurEtCertain) HotInterwiki_Edit(OldText, NewText);
}
// ***********************************************
// Annulation du formulaire de modification ou d'ajout d'interwiki
function HotInterwiki_Cancel(FormIndex){
var Li = HotInterwiki_Matrix['li'][FormIndex];
var Form = HotInterwiki_Matrix['form'][FormIndex];
Form.parentNode.removeChild(Form);
var Link = Li.getElementsByTagName('a')[0];
var Span = Li.getElementsByTagName('span')[0];
if(Link) Link.style.display = "";
if(Span) Span.style.display = "";
}
// ***********************************************
// Initialisation édition
function HotInterwiki_Edit(IWtoRemove, IwToAdd){
var URL = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + mw.config.get('wgPageName').replace(/&/g, "%26") + '&action=edit';
var NouvelleRequete = sajax_init_object();
NouvelleRequete.open("GET", URL, true);
NouvelleRequete.onreadystatechange = function() {
if(NouvelleRequete.readyState != 4) return;
while(document.body.firstChild){document.body.removeChild(document.body.firstChild);}
document.body.innerHTML = NouvelleRequete.responseText;
HotInterwiki_DoEdit(IWtoRemove, IwToAdd);
}
NouvelleRequete.send(null);
}
// ***********************************************
// Édition
function HotInterwiki_DoEdit(IWtoRemove, IwToAdd){
var OldText = document.getElementById("wpTextbox1").value;
var IWRegExp = new RegExp('^\\s*\\[\\[([a-z][a-z].?(x?-[^\\]]+)?|simple|tokipona):([^\\]]*)\\]\\]\\s*$');
var blankRegExp = new RegExp('^\\s*$');
var lines = OldText.split('\n');
var BeforeInterwikis = new Array();
var Interwikis = new Array();
var FoundInterwiki = false;
for (var lineId = lines.length - 1; lineId >= 0; --lineId){
if (!IWRegExp.exec(lines[lineId]) && !blankRegExp.exec(lines[lineId])){
BeforeInterwikis = lines.slice(0, lineId + 1);
Interwikis = lines.slice(lineId + 1);
break;
}
}
BeforeInterwikis = BeforeInterwikis.join('\n') + '\n';
Interwikis = Interwikis.join('\n');
var Summary = "";
if(IWtoRemove==false && IwToAdd!=false){ // ************ Add
if(Interwikis!=""){
Interwikis = Interwikis.replace(/^\n/, "");
Interwikis = Interwikis.split('\n');
Interwikis.push("[["+IwToAdd+"]]");
Interwikis = Interwikis.sort();
Interwikis = "\n" + Interwikis.join('\n');
}else{
Interwikis = "\n[["+IwToAdd+"]]\n";
}
Summary = HotInterwiki_Text["SummaryAdd"].split('$1').join(IwToAdd);
}else if(IWtoRemove!=false && IwToAdd==false){ // ****** Remove
Interwikis = Interwikis.split("[["+IWtoRemove+"]]\n").join("");
Summary = HotInterwiki_Text["SummaryRemove"].split('$1').join(IWtoRemove);
}else if(IWtoRemove!=false && IwToAdd!=false){ // ****** Modify
Interwikis = Interwikis.split("[["+IWtoRemove+"]]\n").join("[["+IwToAdd+"]]\n");
Interwikis = Interwikis.replace(/^\n/, "");
Interwikis = Interwikis.split('\n');
Interwikis = Interwikis.sort();
Interwikis = "\n" + Interwikis.join('\n');
Summary = HotInterwiki_Text["SummaryModify"].split('$1').join(IWtoRemove).split('$2').join(IwToAdd);
}
document.getElementById("wpTextbox1").value = BeforeInterwikis+Interwikis;
document.getElementById("wpSummary").value = Summary;
if(HotInterwiki_Param["AutoSubmit"]) document.editform.submit();
}
// ***********************************************
// Récupère le n° d'index d'un élément
function HotInterwiki_getIndex(Element){
return parseInt(Element.id.replace(/[^0-9]/g, ""));
}
//</nowiki></pre></source>