User:Arkanosis/iKiwi.js

/*
 * iKiwi - Permet de récupérer des interwikis sur d'autres Wikipédia
 * Compatibilité : {de,en,es,fr,it,ja,nl,pl,pt,ru,sv}wiki
 * Support : Discussion_utilisateur:Arkanosis
 * Licence : MIT/X11
 * Installation : ajouter
 * importScript('User:Arkanosis/iKiwi.js');
 * dans le monobook.js ou vector.js de toutes les Wikipédia d'où et dans lesquelles
 * on souhaite pouvoir récupérer des interwikis
 * (important : si l'ajout n'est pas fait sur d'autres Wikipédia, le script ne
 * fonctionnera pas)
 * (important : si l'ajout n'est pas fait sur d'autres Wikipédia, le script ne
 * fonctionnera pas)

iKiwiVersion = '0.5.0a';

var iKiwiDefaultDistantWiki = 'en'; if (typeof (iKiwiDistantWikis) == 'undefined') var iKiwiDistantWikis = ['de', 'en', 'es', 'fr', 'it', 'ja', 'nl', 'pl', 'pt', 'ru', 'sv']; else { iKiwiDefaultDistantWiki = iKiwiDistantWikis[0]; } if (iKiwiDistantWikis.indexOf(wgContentLanguage) != -1) { iKiwiDistantWikis[iKiwiDistantWikis.indexOf(wgContentLanguage)] = iKiwiDistantWikis[iKiwiDistantWikis.length - 1]; iKiwiDistantWikis.pop; } iKiwiDistantWikis.sort; if (typeof (iKiwiWatchMain) == 'undefined') var iKiwiWatchMain = false; if (typeof (iKiwiWatchOthers) == 'undefined') var iKiwiWatchOthers = false;

if (typeof (iKiwiDisplayPanel) == 'undefined') var iKiwiDisplayPanel = true;

var iKiwiInterWiki = new RegExp('^\\s*\\[\\[([a-z][a-z].?(x?-[^\\]]+)?|simple|tokipona):([^\\]]*)\\]\\]\\s*$'); var iKiwiBlank = new RegExp('^\\s*$'); var iKiwiHtmlInterWiki = new RegExp('fr:([^<]+)'); var iKiwiRedirect = new RegExp('^\\s*#(?:redirect|redirection|omdirigering|перенаправление|перенапр|redirecionamento|patrz|przekieruj|tam|doorverwijzing|転送|リダイレクト|転送|リダイレクト|rinvia|rinvio|rimando|redirección|redireccion|weiterleitung)\\s*\\[\\[([^\\]\\#]+)\\]\\]', 'i');

var iKiwiPanelNextState = 0; var iKiwiStates = [ 'none', 'block' ];

var iKiwiI18nText = { 'de': { 'usertalk': 'Benutzer_Diskussion', 'redirectfrom': 'Weitergeleitet von', 'alreadylinked': 'Der remote Artikel ist bereits im Zusammenhang mit', 'nomoreiw': 'Es gibt kein interWiki mehr zu hinzufügen', 'noarticle': 'Es gibt kein Artikel mit diesem Name', 'extpage': 'Remote Artikel:', 'panel': 'Die interWiki aus einer anderen Version des Artikels hinzufügen', 'autopreview': 'auto Vorschau', 'adding': 'Adding', 'from': 'von', 'iwadded': 'interWiki', 'iwsadded': 'interWikis', 'follow': 'Diese Seite beobachten', 'preview': 'Vorschau zeigen', 'publish': 'Seite speichern', }, 'en': { 'usertalk': 'User_talk', 'redirectfrom': 'Redirected from', 'alreadylinked': 'The remote article is already linked to ', 'twolocallinks': 'The local article is linked twice to ', 'twodistantlinks': 'The distant article is linked twice to ', 'twolinks': 'The local article and the distant article have different links to ', 'nomoreiw': 'There is no additional interWiki to add', 'noarticle': 'There is no article with this name', 'extpage': 'Remote article:', 'panel': 'Get the interWikis from another version of the article', 'autopreview': 'auto preview', 'adding': 'Adding', 'from': 'from', 'iwadded': 'interWiki', 'iwsadded': 'interWikis', 'follow': 'Watch this page', 'preview': 'Show preview', 'publish': 'Save page', }, 'es': { 'usertalk': 'Usuario_Discusión', 'redirectfrom': 'Redirigido desde', 'from': 'desde', 'follow': 'Vigilar esta página', 'preview': 'Mostrar previsualización', 'publish': 'Grabar la página', }, 'fr': { 'usertalk': 'Discussion_utilisateur', 'redirectfrom': 'Redirigé depuis', 'alreadylinked': 'L\'article distant est déjà lié à l\'article', 'twolocallinks': 'L\'article local est lié deux fois à ', 'twodistantlinks': 'L\'article distant est lié deux fois à ', 'twolinks': 'L\'article local et l\'article distant ont des liens différents vers ', 'nomoreiw': 'Il n\'y a pas d\'interWiki supplémentaire à ajouter', 'noarticle': 'Il n\'y a pas d\'article avec ce nom', 'extpage': 'Page d\'où récupérer les interWikis :', 'panel': 'Rapatrier les interWikis d\'une autre version de l\'article', 'autopreview': 'aperçu automatique', 'adding': 'Ajout de', 'from': 'depuis', 'iwadded': 'interWiki rapatrié', 'iwsadded': 'interWikis rapatriés', 'follow': 'Suivre cette page', 'preview': 'Prévisualiser', 'publish': 'Publier', }, 'it': { 'usertalk': 'Discussioni_utente', 'redirectfrom': 'Reindirizzamento da', 'from': 'da', 'follow': 'Tieni d\'occhio questa pagina', 'preview': 'Visualizza anteprima', 'publish': 'Salva la pagina', }, 'ja': { 'usertalk': '利用者‐会話', 'redirectfrom': 'から転送', 'follow': 'ウォッチリストに追加', 'preview': 'プレビューを表示', 'publish': '編集を保存', }, 'nl': { 'usertalk': 'Overleg gebruiker', 'redirectfrom': 'Doorverwezen vanaf', 'from': 'vanaf', 'follow': 'Deze pagina volgen', 'preview': 'Toon bewerking ter controle', 'publish': 'Pagina opslaan', }, 'pl': { 'usertalk': 'Dyskusja wikipedysty', 'redirectfrom': 'Przekierowano z', 'from': 'z', 'follow': 'Obserwuj', 'preview': 'Pokaż podgląd', 'publish': 'Zapisz', }, 'pt': { 'usertalk': 'Usuário_Discussão', 'redirectfrom': 'Redireccionado de', 'from': 'de', 'follow': 'Vigiar esta página', 'preview': 'Mostrar previsão', 'publish': 'Gravar página', }, 'ru': { 'usertalk': 'Обсуждение_участника', 'redirectfrom': 'Перенаправлено с', 'from': 'c', 'follow': 'Включить эту страницу в список наблюдения', 'preview': 'Предварительный просмотр', 'publish': 'Записать страницу', }, 'sv': { 'usertalk': 'Användardiskussion', 'redirectfrom': 'Omdirigerad från', 'from': 'från', 'follow': 'Bevaka denna sida', 'preview': 'Visa förhandsgranskning', 'publish': 'Spara', }, };

function iKiwiI18n(lang, message) { if (typeof (iKiwiI18nText[lang]) == 'undefined') lang = 'en'; if (typeof (iKiwiI18nText[lang][message]) == 'undefined') return iKiwiI18nText['en'][message]; return iKiwiI18nText[lang][message]; }

var iKiwiDocPage = iKiwiI18n(wgContentLanguage, 'usertalk') + ':Arkanosis/iKiwi.js';

function iKiwiNormalize(string) {   return string .replace(/[àáâãäåą]/g, 'a') .replace(/[æ]/g, 'ae') .replace(/[çć]/g, 'c') .replace(/[èéêëę]/g, 'e') .replace(/[ìíîï]/g, 'i') .replace(/[ł]/g, 'l') .replace(/[ñ]/g, 'n') .replace(/[òóôõöø]/g, 'o') .replace(/[œ]/g, 'oe') .replace(/[ś]/g, 's') .replace(/[ß]/g, 'ss') .replace(/[ùúûü]/g, 'u') .replace(/[ýÿ]/g, 'y') .replace(/[źż]/g, 'z')

.replace(/[ÀÁÂÃÄÅĄ]/g, 'A') .replace(/[Æ]/g, 'AE') .replace(/[ÇĆ]/g, 'C') .replace(/[ÈÉÊËĘ]/g, 'E') .replace(/[ÌÍÎÏ]/g, 'I') .replace(/[Ł]/g, 'L') .replace(/[Ñ]/g, 'N') .replace(/[ÒÓÔÕÖØ]/g, 'O') .replace(/[Œ]/g, 'OE') .replace(/[Ś]/g, 'S') .replace(/[ÙÚÛÜ]/g, 'U') .replace(/[Ý]/g, 'Y') .replace(/[ŹŻ]/g, 'Z'); }

var iKiwiTranslations = [ {    'en': ['disambiguation'], 'fr': ['homonymie'], }, {    'en': ['book', 'story'], 'fr': ['livre', 'roman', 'nouvelle'] }, {    'en': ['&', 'and'], 'fr': ['&', 'et'], }, ];

function iKiwiTranslate(from, to, string) { var translations = [string];

if (['de', 'es', 'fr', 'nl', 'pl', 'pt', 'sv'].indexOf(from) != -1 && ['en', 'it', 'ja', 'ru'].indexOf(to) != -1) {   var normalizedString = iKiwiNormalize(string); if (normalizedString != string) translations.push(normalizedString); }

if (/.*\(.+\)/.exec(string)) {   // TODO develop an heuristic: it should be better to have the versions without parenthesis at the end translations.push(string.replace(/(\s|_)*\([^\)]+\)$/, ));   if (translations.length == 3)    {      translations.push(translations[1].replace(/(\s|_)*\([^\)]+\)$/, )); if (translations[2] == translations[3]) translations.pop; } }

for (var translationItemId = 0; translationItemId < iKiwiTranslations.length; ++translationItemId) {   var originalTokens = iKiwiTranslations[translationItemId][from]; var replacementTokens = iKiwiTranslations[translationItemId][to];

for (var originalTokenId = 0; originalTokenId < originalTokens.length; ++originalTokenId) {     var originalToken = originalTokens[originalTokenId]; var newTranslations = translations.slice(0);

for (var currentTranslationId = 0; currentTranslationId < translations.length; ++currentTranslationId) {       var currentTranslation = translations[currentTranslationId]; if (translations[currentTranslationId].indexOf(originalToken)) for (var replacementTokenId = 0; replacementTokenId < replacementTokens.length; ++replacementTokenId) {           var replacementToken = replacementTokens[replacementTokenId]; if (originalToken != replacementToken) {             var newTranslation = currentTranslation.replace(new RegExp('\\b' + originalToken.replace(/[.*+?|\[\]{}\\]/g, '\\$&') + '\\b', 'g'), replacementToken); if (newTranslations.indexOf(newTranslation) == -1) newTranslations.push(newTranslation); }         }      }      translations = newTranslations; } }

return translations.slice(1); }

// Taken from http://meta.wikimedia.org/wiki/Interwiki_sorting_order var iKiwiSpecialOrdered = [ 'en', 'pl' ]; var iKiwiSpecialOrder = [ 'ace', 'af', 'ak', 'als', 'am', 'ang', 'ab', 'ar', 'an', 'arc', 'roa-rup', 'frp', 'as', 'ast', 'gn', 'av', 'ay', 'az', 'bm', 'bn', 'zh-min-nan', 'nan', 'map-bms', 'ba', 'be', 'be-x-old', 'bh', 'bcl', 'bi', 'bar', 'bo', 'bs', 'br', 'bg', 'bxr', 'ca', 'cv', 'ceb', 'cs', 'ch', 'cbk-zam', 'ny', 'sn', 'tum', 'cho', 'co', 'cy', 'da', 'dk', 'pdc', 'de', 'dv', 'nv', 'dsb', 'dz', 'mh', 'et', 'el', 'eml', 'en', 'myv', 'es', 'eo', 'ext', 'eu', 'ee', 'fa', 'hif', 'fo', 'fr', 'fy', 'ff', 'fur', 'ga', 'gv', 'gd', 'gl', 'gan', 'ki', 'glk', 'gu', 'got', 'hak', 'xal', 'ko', 'ha', 'haw', 'hy', 'hi', 'ho', 'hsb', 'hr', 'io', 'ig', 'ilo', 'bpy', 'id', 'ia', 'ie', 'iu', 'ik', 'os', 'xh', 'zu', 'is', 'it', 'he', 'jv', 'kl', 'kn', 'kr', 'pam', 'ka', 'ks', 'csb', 'kk', 'kw', 'rw', 'ky', 'rn', 'sw', 'kv', 'kg', 'ht', 'ku', 'kj', 'lad', 'lbe', 'lo', 'la', 'lv', 'lb', 'lt', 'lij', 'li', 'ln', 'jbo', 'lg', 'lmo', 'hu', 'mk', 'mg', 'ml', 'mt', 'mi', 'mr', 'arz', 'mzn', 'ms', 'cdo', 'mwl', 'mdf', 'mo', 'mn', 'mus', 'my', 'nah', 'na', 'fj', 'nl', 'nds-nl', 'cr', 'ne', 'new', 'ja', 'nap', 'ce', 'pih', 'no', 'nb', 'nn', 'nrm', 'nov', 'ii', 'oc', 'mhr', 'or', 'om', 'ng', 'hz', 'uz', 'pa', 'pi', 'pag', 'pnb', 'pap', 'ps', 'km', 'pcd', 'pms', 'tpi', 'nds', 'pl', 'tokipona', 'tp', 'pnt', 'pt', 'aa', 'kaa', 'crh', 'ty', 'ksh', 'ro', 'rmy', 'rm', 'qu', 'ru', 'sah', 'se', 'sm', 'sa', 'sg', 'sc', 'sco', 'stq', 'st', 'tn', 'sq', 'scn', 'si', 'simple', 'sd', 'ss', 'sk', 'cu', 'sl', 'szl', 'so', 'ckb', 'srn', 'sr', 'sh', 'su', 'fi', 'sv', 'tl', 'ta', 'kab', 'roa-tara', 'tt', 'te', 'tet', 'th', 'ti', 'tg', 'to', 'chr', 'chy', 've', 'tr', 'tk', 'tw', 'udm', 'bug', 'uk', 'ur', 'ug', 'za', 'vec', 'vi', 'vo', 'fiu-vro', 'wa', 'zh-classical', 'vls', 'war', 'wo', 'wuu', 'ts', 'yi', 'yo', 'zh-yue', 'diq', 'zea', 'bat-smg', 'zh', 'zh-tw', 'zh-cn' ];

function iKiwiSpecialOrderCompare(first, second) { var firstInterWiki = iKiwiInterWiki.exec(first); var secondInterWiki = iKiwiInterWiki.exec(second);

return iKiwiSpecialOrder.indexOf(firstInterWiki[1]) - iKiwiSpecialOrder.indexOf(secondInterWiki[1]); }

function iKiwiDistantWiki { return document.getElementById('iKiwiDistantWiki').value; }

function iKiwiUrl(wiki, page) { return 'http://' + wiki + '.wikipedia.org' + wgScript + '?title=' + encodeURIComponent(page); }

function iKiwiLocalUrl(page) { return iKiwiUrl(wgContentLanguage, page); }

function iKiwiDistantUrl(page) { return iKiwiUrl(iKiwiDistantWiki, page); }

function iKiwiError(message) { document.getElementById('iKiwiExtPage').setAttribute('style', 'background-color:#D66;'); with (document.getElementById('iKiwiWarning')) {   innerHTML = ' ' + message; setAttribute('style', 'color:red;'); } document.getElementById('iKiwiSubmit').setAttribute('disabled', 'disabled');

var textarea = document.getElementById('iKiwiText'); if (textarea) {   textarea.setAttribute('style', 'display:none;'); document.getElementById('iKiwiDiff').setAttribute('style', 'display:none;'); } }

function iKiwiExtractInterWikis(text) { var lines = text.split('\n'); var interWikis = new Array; for (var lineId = 0; lineId < lines.length; ++lineId) {   var interWiki = iKiwiInterWiki.exec(lines[lineId]); if (interWiki) interWikis.push(interWiki[0].replace(/^\s+/g, ).replace(/\s+$/g, ).replace(/_/g, ' ')); } return interWikis; }

function iKiwiRemoveInterWikis(text) { var lines = text.split('\n'); for (var lineId = lines.length - 1; lineId >= 0; --lineId) if (!iKiwiInterWiki.exec(lines[lineId]) && !iKiwiBlank.exec(lines[lineId])) return lines.slice(0, lineId + 1).join('\n'); }

function iKiwiXssRequest(url) { var xssFrame = document.getElementById('iKiwiXssFrame'); if (xssFrame) xssFrame.setAttribute('src', url); else {   document.domain = 'wikipedia.org'; document.getElementsByTagName('body')[0].innerHTML += ' '; } }

function iKiwiXssServer { document.domain = 'wikipedia.org';

var text = document.getElementById('wpTextbox1').value;

if (!text.length) {   var destinationLanguage = /iKiwiDestinationLanguage=([^&]+)/.exec(location.href); if (destinationLanguage) {     var translations = iKiwiTranslate(destinationLanguage[1], wgContentLanguage, wgPageName); for (var translationId = 0; translationId < translations.length; ++translationId) {       var translation = translations[translationId]; var xhr = sajax_init_object; xhr.open('GET', mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/index.php?title=' + encodeURIComponent(translation) + '&action=raw', false); xhr.send(''); text = xhr.responseText; if (text) {         window.parent.iKiwiRedirectCallBack(translation); break; }     }    }  }

for (var nbFollowedRedirects = 0; nbFollowedRedirects < 10; ++nbFollowedRedirects) // avoid circular redirections {   var redirect = iKiwiRedirect.exec(text); if (!redirect) break;

var xhr = sajax_init_object; xhr.open('GET', mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/index.php?title=' + encodeURIComponent(redirect[1]) + '&action=raw', false); xhr.send(''); text = xhr.responseText;

window.parent.iKiwiRedirectCallBack(redirect[1]); }

if (text.length) { window.parent.iKiwiAddInterWikisCallBack(text); } else { // TODO /w/api.php?action=query&list=search&srsearch= window.parent.iKiwiSuggestCallBack; } }

function iKiwiGetForm { var xhr = sajax_init_object;

xhr.open('GET', mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/index.php?title=' + encodeURIComponent(mw.config.get('wgPageName')) + '&action=edit', false); xhr.send('');

var parser = new DOMParser; return parser.parseFromString(xhr.responseText, 'application/xhtml+xml'); }

function iKiwiPostRequest(request, editForm, text, summary) { var inputs = editForm.getElementsByTagName('input'); for (inputId = 0; inputId < inputs.length; ++inputId) switch (inputs[inputId].name) {     case 'wpStarttime': var wpStarttime = inputs[inputId].value; break; case 'wpEdittime': var wpEdittime = inputs[inputId].value; break; case 'wpEditToken': var wpEditToken = inputs[inputId].value; break; default: break; } var parameters = 'wp' + request + '=1' + '&wpTextbox1=' + encodeURIComponent(text) + '&wpStarttime=' + encodeURIComponent(wpStarttime) + '&wpEdittime=' + encodeURIComponent(wpEdittime) + '&wpEditToken=' + encodeURIComponent(wpEditToken) + '&wpSummary=' + encodeURIComponent('iKiwi : ' + summary) + '&wpMinoredit=on';

if (document.getElementById('iKiwiFollow').checked) parameters += '&wpWatchthis=on'; var xhr = sajax_init_object;

with (xhr) {   open('POST', mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/index.php?title=' + encodeURIComponent(mw.config.get('wgPageName')) + '&action=submit', false); setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); setRequestHeader('Content-length', parameters.length); setRequestHeader('Connection', 'close'); send(parameters); }

return xhr; }

function iKiwiPreview(editForm, text, summary) { var xhr = iKiwiPostRequest('Diff', editForm, text, summary); var parser = new DOMParser; return parser.parseFromString(xhr.responseText, 'application/xhtml+xml'); }

function iKiwiPublish { iKiwiPostRequest('Save', document.editForm, document.newText, document.summary); iKiwiSelectPage; }

function iKiwiRedirectCallBack(page) { var extPage = document.getElementById('iKiwiExtPage'); var distantPageName = iKiwiDistantWiki + ':' + extPage.value;

var redirect = document.getElementById('iKiwiRedirect'); redirect.innerHTML = ' ' + iKiwiI18n(wgUserLanguage, 'redirectfrom') + ' ' + distantPageName + ''; redirect.setAttribute('style', 'display:inline;'); extPage.value = page; }

function iKiwiSuggestCallBack {

iKiwiError(iKiwiI18n(wgUserLanguage, 'noarticle')); }

function iKiwiAddInterWikisCallBack(text) { var editForm = iKiwiGetForm;

var originalText = editForm.getElementById('wpTextbox1').value;

var newText = iKiwiRemoveInterWikis(originalText);

var interWikis = []; var originalInterWikis = iKiwiExtractInterWikis(originalText); var distantInterWikis = iKiwiExtractInterWikis(text);

var distantPageName = iKiwiDistantWiki + ':' + document.getElementById('iKiwiExtPage').value;

interWikis.push( + distantPageName + );

var distantWikis = [ iKiwiDistantWiki ];

for (var originalInterWikiId = 0; originalInterWikiId < originalInterWikis.length; ++originalInterWikiId) if (interWikis.indexOf(originalInterWikis[originalInterWikiId]) == -1) {     var interWiki = iKiwiInterWiki.exec(originalInterWikis[originalInterWikiId]); if (distantWikis.indexOf(interWiki[1]) != -1) { iKiwiError(iKiwiI18n(wgUserLanguage, 'twolocallinks') + interWiki[1]); return; }     interWikis.push(originalInterWikis[originalInterWikiId]); distantWikis.push(interWiki[1]); }

var originalLinksCount = distantWikis.length;

for (var distantInterWikiId = 0; distantInterWikiId < distantInterWikis.length; ++distantInterWikiId) if (interWikis.indexOf(distantInterWikis[distantInterWikiId]) == -1) {     if (distantInterWikis[distantInterWikiId].indexOf('[[' + wgContentLanguage + ':') != -1)      {        if (distantInterWikis[distantInterWikiId].indexOf('[[' + wgContentLanguage + ':' +  wgPageName.replace(/_/g, ' ')) == -1)        {          var interWiki = iKiwiInterWiki.exec(distantInterWikis[distantInterWikiId]);          iKiwiError(iKiwiI18n(wgUserLanguage, 'alreadylinked') + ' ' + interWiki[3] + '');          return;        }      } else {        var interWiki = iKiwiInterWiki.exec(distantInterWikis[distantInterWikiId]);        var distantWikiId = distantWikis.indexOf(interWiki[1]);        if (distantWikiId != -1) {            if (distantWikiId < originalLinksCount) {              iKiwiError(iKiwiI18n(wgUserLanguage, 'twolinks') + interWiki[1]);            } else {              iKiwiError(iKiwiI18n(wgUserLanguage, 'twodistantlinks') + interWiki[1] + ': ' + distantPageName + '');            }            return;        }        interWikis.push(distantInterWikis[distantInterWikiId]);        distantWikis.push(interWiki[1]);      }    }

var nbNewInterWikis = interWikis.length - originalInterWikis.length;

if (!nbNewInterWikis) {   iKiwiError(iKiwiI18n(wgUserLanguage, 'nomoreiw')); return; }

if (iKiwiSpecialOrdered.indexOf(wgContentLanguage) != -1) interWikis.sort(iKiwiSpecialOrderCompare); else interWikis.sort;

newText += '\n\n'

for (var interWikiId = 0; interWikiId < interWikis.length; ++interWikiId) newText += interWikis[interWikiId] + '\n';

document.getElementById('iKiwiExtPage').removeAttribute('style'); with (document.getElementById('iKiwiWarning')) {   if (nbNewInterWikis > 1) innerHTML = ' ' + nbNewInterWikis + ' ' + iKiwiI18n(wgUserLanguage, 'iwsadded'); else innerHTML = ' ' + nbNewInterWikis + ' ' + iKiwiI18n(wgUserLanguage, 'iwadded'); innerHTML += ' ' + iKiwiI18n(wgUserLanguage, 'from') + ' ' + distantPageName + ''; setAttribute('style', 'color:green;'); } document.getElementById('iKiwiSubmit').removeAttribute('disabled');

document.editForm = editForm; document.newText = newText; document.summary = iKiwiI18n(wgContentLanguage, 'adding') + ' ' + nbNewInterWikis + ' interWiki' + (nbNewInterWikis > 1 ? 's' : ) + ' ' + iKiwiI18n(wgContentLanguage, 'from') + ' ' + distantPageName + ;

if (location.href.indexOf('&iKiwiFromPIW') != -1) document.summary += ' (Détecté par P:IW)';

var preview = iKiwiPreview(editForm, newText, document.summary); var diff = preview.getElementById('wikiDiff'); diff.setAttribute('id', 'iKiwiDiff');

var textarea = document.getElementById('iKiwiText'); if (!textarea) {   textarea = document.createElement('textarea'); with (textarea) {     setAttribute('id', 'iKiwiText'); setAttribute('rows', 10); setAttribute('readonly', 'readonly'); appendChild(document.createTextNode(text)); }

var fieldSet = document.getElementById('iKiwiFieldSet'); var follow = document.getElementById('iKiwiFollow');

fieldSet.insertBefore(textarea, follow); fieldSet.insertBefore(document.createElement('br'), follow);

document.getElementsByTagName('head')[0].innerHTML+='';

fieldSet.insertBefore(diff, follow); } else { textarea.value = text; textarea.setAttribute('style', 'display:block;');

document.getElementById('iKiwiFieldSet').replaceChild(diff, document.getElementById('iKiwiDiff')); } }

function iKiwiAddInterWikis { document.getElementById('iKiwiRedirect').setAttribute('style', 'display:none;');

var distantWiki = document.getElementById('iKiwiDistantWiki').value; var page = document.getElementById('iKiwiExtPage').value; var follow = document.getElementById('iKiwiFollow').checked;

iKiwiXssRequest(iKiwiDistantUrl(page) + '&action=edit&xssServe&iKiwiDestinationLanguage=' + wgContentLanguage);

document.getElementById('iKiwiExtPage').value = page; document.getElementById('iKiwiDistantWiki').value = distantWiki; if (follow) document.getElementById('iKiwiFollow').checked = 'checked'; else document.getElementById('iKiwiFollow').removeAttribute('checked'); }

function iKiwiSelectPage(autoPreview) { var iForm = document.getElementById('iKiwiForm');

if (iForm) { iForm.setAttribute('style', 'display:' + iKiwiStates[iKiwiPanelNextState] + ';'); iKiwiPanelNextState = !iKiwiPanelNextState + 0; document.getElementById('iKiwiLinks').setAttribute('style', 'display:' + iKiwiStates[iKiwiPanelNextState] + ';'); } else { document.getElementById('iKiwiLinks').setAttribute('style', 'display:none;');

iForm = document.createElement('form'); iForm.setAttribute('id', 'iKiwiForm');

var fieldSet = document.createElement('fieldset'); fieldSet.setAttribute('id', 'iKiwiFieldSet');

var link = document.createElement('a'); with (link) {     setAttribute('href', 'javascript:iKiwiSelectPage;'); setAttribute('id', 'iKiwiHidePanel'); setAttribute('title', 'Masquer le panneau iKiwi'); appendChild(document.createTextNode('[iKiwi — ' + iKiwiVersion + ']')); }

var doc = document.createElement('a'); with (doc) {     setAttribute('href', iKiwiLocalUrl(iKiwiDocPage)); setAttribute('id', 'iKiwiDoc'); setAttribute('title', 'Documentation'); appendChild(document.createTextNode('(documentation)')); }

var legend = document.createElement('legend'); with (legend) {     appendChild(link); appendChild(document.createTextNode(' ')); appendChild(doc); }   var label = document.createElement('label'); with (label) {     setAttribute('for', 'iKiwiExtPage'); appendChild(document.createTextNode(iKiwiI18n(wgUserLanguage, 'extpage'))); }

var distantLanguage = /iKiwiSourceLanguage=([^&]+)/.exec(location.href); if (distantLanguage) iKiwiDefaultDistantWiki = distantLanguage[1];

var distantWiki = document.createElement('select'); distantWiki.setAttribute('id', 'iKiwiDistantWiki'); for (var wikiId = 0; wikiId < iKiwiDistantWikis.length; ++wikiId) {     var option = document.createElement('option'); with (option) {       setAttribute('id', 'iKiwiDistantWiki-' + iKiwiDistantWikis[wikiId]); setAttribute('value', iKiwiDistantWikis[wikiId]); appendChild(document.createTextNode(iKiwiDistantWikis[wikiId])); }     if (iKiwiDistantWikis[wikiId] == iKiwiDefaultDistantWiki) option.setAttribute('selected', 'selected'); distantWiki.appendChild(option); }

// TODO autocomplétion var input = document.createElement('input'); with (input) {     setAttribute('id', 'iKiwiExtPage'); setAttribute('type', 'text'); setAttribute('value', wgPageName.replace(/_/g, ' ')); }

var warning = document.createElement('strong'); with (warning) {     setAttribute('id', 'iKiwiWarning'); setAttribute('style', 'display:none'); appendChild(document.createTextNode('')); }

var redirect = document.createElement('em'); with (redirect) {     setAttribute('id', 'iKiwiRedirect'); setAttribute('style', 'display:none;'); appendChild(document.createTextNode('')); }

var follow = document.createElement('input'); with (follow) {     setAttribute('id', 'iKiwiFollow'); setAttribute('type', 'checkbox'); if (!document.getElementById('ca-watch') || iKiwiWatchOthers || iKiwiWatchMain && !wgNamespaceNumber) setAttribute('checked', 'checked'); }

var followLabel = document.createElement('label'); with (followLabel) {     setAttribute('for', 'iKiwiFollow'); appendChild(document.createTextNode(iKiwiI18n(wgUserLanguage, 'follow'))); }

var submit = document.createElement('input'); with (submit) {     setAttribute('id', 'iKiwiSubmit'); setAttribute('name', 'iKiwiSubmit'); setAttribute('type', 'submit'); setAttribute('value', iKiwiI18n(wgUserLanguage, 'publish')); setAttribute('disabled', 'disabled'); setAttribute('onClick', 'javascript:iKiwiPublish; return false;') }

var preview = document.createElement('input'); with (preview) {     setAttribute('id', 'iKiwiPreview'); setAttribute('name', 'iKiwiPreview'); setAttribute('type', 'submit'); setAttribute('value', iKiwiI18n(wgUserLanguage, 'preview')); setAttribute('onClick', 'javascript:iKiwiAddInterWikis; return false;') }

iForm.appendChild(fieldSet);

with (fieldSet) {     appendChild(legend); appendChild(label); appendChild(document.createElement('br')); appendChild(distantWiki); appendChild(document.createTextNode(' ')); appendChild(input); appendChild(warning); appendChild(redirect); appendChild(document.createElement('br')); appendChild(follow); appendChild(followLabel); appendChild(document.createElement('br')); appendChild(submit); appendChild(preview); }

document.getElementById('content').insertBefore(iForm, document.getElementById('firstHeading')); }

if (!iKiwiPanelNextState && typeof (autoPreview) != 'undefined' && autoPreview) iKiwiAddInterWikis; }

function iKiwiAddLinks { var link1 = document.createElement('a'); with (link1) {   setAttribute('href', 'javascript:iKiwiSelectPage;'); setAttribute('id', 'iKiwiDisplayPanel'); setAttribute('title', iKiwiI18n(wgUserLanguage, 'panel')); appendChild(document.createTextNode('iKiwi')); } var link2 = document.createElement('a'); with (link2) {   setAttribute('href', 'javascript:iKiwiSelectPage(true);'); setAttribute('id', 'iKiwiDisplayPanel'); setAttribute('title', iKiwiI18n(wgUserLanguage, 'panel') + ' (' + iKiwiI18n(wgUserLanguage, 'autopreview') + ')'); appendChild(document.createTextNode('+')); }

var links = document.createElement('p'); with (links) {   setAttribute('id', 'iKiwiLinks'); appendChild(document.createTextNode('[')); appendChild(link1); appendChild(document.createTextNode('|')); appendChild(link2); appendChild(document.createTextNode(']')); }

document.getElementById('content').insertBefore(links, document.getElementById('firstHeading')); }

function iKiwiAddPreviewLinks { var lis = document.getElementsByTagName('li'); for (var liId = 0; liId < lis.length; ++liId) {   var sourceLanguage = 'en'; var language = /\/([a-z]{2})fr/.exec(location.href); if (language) sourceLanguage = language[1]; // TODO set iKiwiSourceArticle // TODO add another iKiwi link for the distant wiki article var interWiki = iKiwiHtmlInterWiki.exec(lis[liId].innerHTML); if (interWiki) lis[liId].innerHTML = lis[liId].innerHTML.replace(iKiwiHtmlInterWiki, interWiki[0] + ' '); } }

function iKiwi { if (location.href.indexOf('&xssServe') != -1) iKiwiXssServer; else {   var autoPreview = location.href.indexOf('&iKiwiAutoPreview') != -1; if ((iKiwiDisplayPanel || autoPreview) && [0, 2, 4, 6, 10, 12, 14, 100, 102, 104].indexOf(wgNamespaceNumber) != -1) iKiwiAddLinks; if (autoPreview) iKiwiSelectPage(true); if (location.href.indexOf('Projet:Interwikification/') != -1) iKiwiAddPreviewLinks; } }

$(iKiwi);