Utilisateur:Dr Brains/GetOtherWikiPage.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.$(AddInterwiki_Portlet);
function AddInterwiki_Portlet(){
var ToolBox = document.getElementById('p-tb');
if(ToolBox){
ToolBox.getElementsByTagName('ul')[0].innerHTML += '<li><a href="javascript:AddInterwiki_GetOldInterwiki();" title="Ajouter un ou plusieurs interwikis">Interwikis</a></li>';
}
}
function AddInterwiki_GetOldInterwiki(){
var Form = document.getElementById('Interwikiform');
if(Form){
return;
}else{
AddInterwiki_GetOldInterwiki();
}
}
var OldInterwiki = new Array();
var OldInterwikiHref = new Array();
var OldInterwikiCount = -1;
function AddInterwiki_GetOldInterwiki(){
if(!OldInterwiki[0]){
var LangPortlet = document.getElementById('p-lang');
if(LangPortlet){
var Lis = LangPortlet.getElementsByTagName('li');
for(var a=0;a<Lis.length;a++){
var Lang = Lis[a].className.split('-')[1];
var Lien = Lis[a].getElementsByTagName('a')[0];
OldInterwikiCount++
OldInterwiki[OldInterwikiCount] = '[[' + Lang + ':' + decodeURIComponent(Lien.href).split('/wiki/')[1].replace(/_/g," ") + ']]';
OldInterwikiHref[OldInterwikiCount] = decodeURIComponent(Lien.href).split('/wiki/').join('/w/index.php?title=').replace(/_/g," ");
}
}
}
AddInterwiki_CreateForm();
}
function AddInterwiki_CreateForm(){
var Content = document.getElementById('bodyContent');
if(!Content) Content = document.getElementById('mw_contentholder');
if(!Content) Content = document.getElementById('article');
if(!Content) Content = document.body;
var Formulaire = document.createElement('div');
Formulaire.id = 'Interwikiform';
Content.insertBefore(Formulaire, Content.firstChild);
Formulaire.style.border = '3px double black';
Formulaire.style.padding = '1em';
var PageCibledefaut = ''
if(!OldInterwiki[0]) PageCibledefaut = document.URL.split('fr.').join('en.');
var FormulaireContent = '<center>'
+ '<form>'
+ '<input type="button" onclick="AddInterwiki_Cancel()" onselect="AddInterwiki_Cancel()" value="Annuler" />'
+ '<br/>'
+ '<br/>'
+ '<table width="100%">'
+ '<tr>'
+ '<td width="33% align="center" valign="top" >'
+ '<label for="Liste_OldInterwiki">Liste des liens inter-langues présents</label>'
+ '<br/>'
+ '<select id="Liste_OldInterwiki" size="'+(OldInterwikiCount+1)+'">';
for(var a=0;a<OldInterwiki.length;a++){
FormulaireContent += '<option value="'+OldInterwiki[a]+'" size="50" onclick="AddInterwiki_SelectInterwiki(\'' + encodeURIComponent(OldInterwikiHref[a]).replace(/'/g,"ZAPOSTROPHE") + '\')" >' + OldInterwiki[a] + '</option>';
}
FormulaireContent += '</select>'
+ '<br/>'
+ '<label for"PageCible">Page où chercher des liens inter-langues</label>'
+ '<br/>'
+ '<input id="PageCible" size="50" type="text" value="'+PageCibledefaut+'" />'
+ '<br/>';
FormulaireContent += '<input type="button" onclick="AddInterwiki_GetNewInterwikis()" onselect="AddInterwiki_GetNewInterwikis()" value="Lancer la recherche" />'
+ '</td>'
+ '<td width="33%" align="center" valign="top" >'
+ '<label for"Textarea_ExtractedInterwiki">Interwikis extraits</label>'
+ '<textarea id="Textarea_ExtractedInterwiki" value="" ></textarea>'
+ '</td>'
+ '<td width="33%" align="center" valign="top" >'
+ '<label for"Textarea_NewInterwiki">Interwikis à ajouter</label>'
+ '<textarea id="Textarea_NewInterwiki" value="" ></textarea>'
+ '<br/>'
+ '<input id="AddInterwiki" type="button" onclick="AddInterwiki_AddNewInterwikis()" onselect="AddInterwiki_AddNewInterwikis()" disabled="disabled" value="Ajouter" />'
+ '</td>'
+ '</tr>'
+ '</table>';
FormulaireContent += '<div id="ResultatCible" style="display:none;height:600px;overflow-y:auto;border:1px solid black;"></div>'
+ '<br/>';
FormulaireContent += '</form>'
+ '</center>';
Formulaire.innerHTML = FormulaireContent;
}
//////////////////////////////////////////////////////////////////////////////////
function AddInterwiki_Cancel(){
var OldFormulaire = document.getElementById('Interwikiform');
if(OldFormulaire) OldFormulaire.parentNode.removeChild(OldFormulaire);
}
function AddInterwiki_SelectInterwiki(page){
page = decodeURIComponent(page.replace(/ZAPOSTROPHE/g, "'"));
document.getElementById("PageCible").value = page;
}
function AddInterwiki_GetNewInterwikis(){
var CibleInput = document.getElementById("PageCible");
var PageCible = CibleInput.value + '&action=edit';
//alert(PageCible);
if(PageCible!=''){
var ResultDiv = document.getElementById("ResultatCible");
ResultDiv.innerHTML = '<iframe id="FrameInterwiki" src="'+ PageCible+ '" width="100%" height="100%"</iframe>';
ResultDiv.style.display = 'block';
document.getElementById("AddInterwiki").disabled = "disabled";
document.getElementById("Textarea_NewInterwiki").value = "";
AddInterwiki_GetPageContent();
}
}
function AddInterwiki_GetPageContent(){
var ResultDiv = document.getElementById("ResultatCible");
var Frame = document.getElementById("FrameInterwiki");
if(!Frame) return;
var PageCible = Frame.src;
var LangCible = PageCible.split('http://')[1].split('.')[0];
try{
var Contenu = document.getElementById("FrameInterwiki").contentDocument.body;
if(!Contenu){
setTimeout("AddInterwiki_GetPageContent()", 500);
return;
}
var TextArea = AddInterwiki_getElementWithId("wpTextbox1", "textarea", Contenu);
var CaHistory = AddInterwiki_getElementWithId("ca-history", "li", Contenu);
if((!CaHistory)&&(!TextArea)){
setTimeout("AddInterwiki_GetPageContent()", 500);
return;
}
if(!CaHistory){
alert('La page demandée n\'existe pas dans cette langue');
return;
}
AddInterwiki_GetInterwikis(ResultDiv, TextArea.value);
}catch(e){
setTimeout("AddInterwiki_GetPageContent()", 500);
}
}
function AddInterwiki_GetInterwikis(ResultDiv, WikiText){
var ExtractedInterwiki = new Array();
var ExtractedInterwikiCount = -1;
var TitleElement = ResultDiv.getElementsByTagName("h1")[0];
if(TitleElement){
ExtractedInterwikiCount++
ExtractedInterwiki[ExtractedInterwikiCount] = '[[' + LangCible + ':' + TitleElement.textContent.split('[edit]').join('') + ']]';
//alert(ExtractedInterwiki[ExtractedInterwikiCount]);
}
var LangPortlet = AddInterwiki_getElementWithId( ResultDiv, "div" , "p-lang");
if(LangPortlet){
var UlPortlet = LangPortlet.getElementsByTagName('ul')[0];
var Lis = UlPortlet.getElementsByTagName('li');
for(var a=0;a<Lis.length;a++){
var Lang = Lis[a].className.split('-')[1];
var Lien = Lis[a].getElementsByTagName('a')[0];
if(Lang!=mw.config.get('wgServer').split('http://')[1].split('.')[0]){
ExtractedInterwikiCount++
ExtractedInterwiki[ExtractedInterwikiCount] = '[[' + Lang + ':' + decodeURIComponent(Lien.href).split("/wiki/")[1].replace(/_/g," ") + ']]';
//alert(ExtractedInterwiki[ExtractedInterwikiCount]);
}
}
}
var ExtractedInterwikiListe = '';
var NewInterwikiListe = '';
ExtractedInterwiki.sort();
var NewInterwiki = new Array();
var NewInterwikiCount = -1;
for(var a=0;a<ExtractedInterwiki.length;a++){
ExtractedInterwikiListe += ExtractedInterwiki[a] + '\n';
var matchinterwiki = false;
for(var b=0;b<OldInterwiki.length;b++){
if(ExtractedInterwiki[a] == OldInterwiki[b]) matchinterwiki = true;
}
if(matchinterwiki== false){
NewInterwikiCount++
NewInterwiki[NewInterwikiCount] = ExtractedInterwiki[a];
NewInterwikiListe += NewInterwiki[NewInterwikiCount] + '\n';
}
}
document.getElementById("Textarea_ExtractedInterwiki").value = ExtractedInterwikiListe;
document.getElementById("Textarea_ExtractedInterwiki").rows = ExtractedInterwikiCount;
document.getElementById("Textarea_NewInterwiki").value = NewInterwikiListe;
document.getElementById("Textarea_NewInterwiki").rows = NewInterwikiCount;
if(NewInterwiki[0]) document.getElementById("AddInterwiki").disabled = "";
//alert(ListeInterwiki);
ResultDiv.innerHTML = '';
ResultDiv.style.display = 'none';
}
function AddInterwiki_getElementWithId( elementId, elementTagName, elementParentNode ){
if(!elementParentNode) elementParentNode = document;
if(!elementTagName) elementTagName = '*';
var TheElement = false;
var Elements = elementParentNode.getElementsByTagName(elementTagName);
var elementcount = 0;
while(elementcount<Elements.length){
var Id = Elements[elementcount].id;
if(Id){
if(Id==elementId){
TheElement = Elements[elementcount];
break;
}
}
elementcount++
}
return TheElement;
}