User:Magalhães/autoEdit.js
Jump to navigation
Jump to search
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
/**********************************************************************************
***********************************************************************************
** _ ______ _ _ _ **
** | | | ____| | (_) | **
** __ _ _ _| |_ ___ | |__ __| |_| |_ **
** / _` | | | | __/ _ \| __| / _` | | __| **
** | (_| | |_| | || (_) | |___| (_| | | |_ **
** \__,_|\__,_|\__\___/|______\__,_|_|\__| v1.1 **
** **
** ----------------------------------------------------------------------------- **
** To instal : **
** Add to your common.js [[Special:MyPage/common.js]], **
** importScript( 'User:Jitrixis/autoEdit.js' ); **
** **
** Links : **
** [[User:Jitrixis/autoEdit.js]] **
** [[User talk:Jitrixis/autoEdit.js]] **
** [[User talk:Jitrixis/autoEdit.js/lists]] **
** [[Wikidata:Tools#User:Jitrixis.2FautoEdit.js]] **
** **
** In collaboration with [[User:Zolo]] **
** **
***********************************************************************************
**********************************************************************************/
/////////////////////////////////////////////////////////////////////////
//////////////THE TRANSLATION VARIABLE IS UNDER THE LISTE ^^/////////////
/////////////////////////////////////////////////////////////////////////
/////////////////////////LISTES VARIABLE GLOBALE/////////////////////////
var desclist = {
'a city in the Philippines': {
'en': 'city in the Philippines',
'de': 'Stadt auf den Philippinen',
'nl': 'stad in de Filipijnen',
},
'french departement': {
'af': 'Franse departement',
'als': 'Département z Frànkrich',
'ar': 'إقليم فرنسي',
'an': 'departemento frances',
'ast': 'departamentu de Francia',
'bar': 'Französisches Département',
'bg': 'Департамент на Франция',
'ca': 'departament de França',
'cs': 'francouzský departement',
'co': 'dipartimentu di a Francia',
'cy': 'département Ffrainc',
'da': 'fransk departement',
'de': 'französisches Departement',
'en': 'French department',
'eo': 'Franca departemento',
'es': 'departamento francés',
'et': 'Prantsusmaa departemang',
'fi': 'Ranskan departementti',
'fr': 'département français',
'frp': 'dèpartement francês',
'fy': 'Frânsk departemint',
'gl': 'departamento francés',
'hu': 'megye Franciaországban',
'id': 'sebuah departemen Perancis',
'io': 'departmento di Francia',
'it': 'dipartimento francese',
'ja': 'フランスの県',
'jv': 'Departemen ing Prancis',
'ko': '프랑스의 주',
'la': 'praefectura Franciae',
'kg': 'kizunga ya Fwalansa',
'lad': 'departamento franses',
'lb': 'franséischt Departement',
'lt': 'Prancūzijos departamentas',
'lv': 'Francijas departaments',
'lmo': 'dipartiment fransés',
'ms': 'jabatan di Perancis',
'nds': 'Bezirke vun Frankriek',
'nl': 'Frans departement',
'nn': 'franske departement',
'no': 'fransk departement',
'oc': 'departament francés',
'pam': 'Departamentu ning France',
'pl': 'francuski departament',
'pt': 'departamento da França',
'ro': 'departament Franței',
'ru': 'департамент Франции',
'sco': 'French depairtment',
'se': 'Frankriikka departemeantta',
'simple':'French department',
'sl': 'departement vo Francúzsku',
'sv': 'franskt departement',
'sw': 'département ya Ufaransa',
'th': 'จังหวัดในประเทศฝรั่งเศส',
'vec': 'dipartimento fransexe',
'vi': 'tỉnh của Pháp',
'vls': 'Frans departement',
'vo': 'Ziläk in Fransän',
'zea': 'Frans departement',
'zh': '法国的省份',
'zh-min-nan': 'Hoat-kok ê chi̍t khóan'
},
'french administrative region': {
'af': 'administratiewe gewes (région) van Frankryk',
'als': 'Region vun Frànkrich',
'an': 'rechión de Francia',
'ang': 'land on Francum',
'an': 'rechión de Francia',
'ast': 'rexón de Francia',
'az': 'Fransa region',
'bar': 'Region in Frånkreich',
'br': 'Rannvro Bro-C\'hall',
'bs': 'regija u Francuskoj',
'ca': 'regió administrativa francesa',
'ca': 'regione francese',
'cs': 'francouzský region',
'da': 'fransk region',
'de': 'französische Region',
'en': 'administrative region of France',
'ext': 'rehión aministrativa de Francia',
'eo': 'regiono de Francio',
'es': 'región de Francia',
'fr': 'région administrative française',
'frp': 'règ·ion administrativa francêsa',
'fy': 'regio yn Frankryk',
'gl': 'rexión de Francia',
'gv': 'ard ny Frank',
'hu': 'Franciaország régió',
'ia': 'region de Francia',
'id': 'région di Perancis',
'io': 'Franciana regiono',
'is': 'Hérað Frakklands',
'it': 'regione francese',
'ja': 'フランスの地域圏',
'jv': 'région Perancis',
'ko': '프랑스의 레지옹',
'la': 'regio Franciae',
'lb': 'regioun vu Frankräich',
'lmo': 'Region frances',
'mg': 'faritra frantsay',
'ms': 'Kawasan di Perancis',
'nds': 'Regionen vun Frankriek',
'nl': 'regio van Frankrijk',
'nrm': 'régioun de Fraunce',
'oc': 'region francesa',
'os': 'регион Францы',
'pms': 'region dla Fransa',
'pl': 'francúzsky administratívny región',
'ru': 'регион Франции',
'sq': 'rajon administrativ në Francën',
'sv': 'fransk region',
'vi': 'Vùng của Pháp',
'zh': '法国大区',
'zh-min-nan': 'Hoat-kok ê tōa-khu (région)'
},
'church of the holy spirit': {
'be': 'Царква Святога Духа',
'cs': 'Kostel svatého Ducha',
'da': 'Helligåndskirken',
'de': 'Heilig-Geist-Kirche',
'en': 'Church of the Holy Spirit',
'eo': 'Preĝejo de Sankta Spirito',
'es': 'Iglesia del Espíritu Santo',
'et': 'Püha Vaimu kirik',
'fr': 'Église du Saint-Esprit',
'it': 'Chiesa dello Spirito Santo',
'nl': 'Heilige Geestkerk',
'pl': 'Kościół Ducha Świętego',
'pt': 'Igreja do Espírito Santo',
'ru': 'Церковь Святого Духа',
'sk': 'Kostol Svätého Ducha',
'sv': 'Helgeandskyrkan',
'uk': 'Церква Святого Духа',
'zh': '圣神教堂'
},
'date': {
'ca': 'data',
'de': 'Datum',
'en': 'date',
'en': 'date',
'eo': 'dato',
'gl': 'data',
'fr': 'date',
'he': 'דייט',
'it': 'date',
'ja': '伊達',
'ko': '데이트',
'nl': 'date',
'pl': 'date',
'ru': 'дата',
'tl': 'date',
'zh': '伊達'
}
};
importScript('User:'+wgUserName+'/autoEditLists.js');
/////////////////////////LISTES/////////////////////////
( function ( mw, $ ) {
/*
**Return item Number.
*/
var itemId = mw.config.get( 'wbItemId' );
if( !itemId ) {
return;
}
/*
**Localized message.
*/
var transData = {
'en': {
'box-title': 'Automatic addition',
'box-cancel': 'Close',
'box-send': 'Update',
'sended': 'Sent',
'labels': 'Labels',
'descriptions': 'Descriptions',
'list': 'Lists',
'none': 'None',
'warning-message': '<ul><li>Labels checkbox : Update automatically the label of all language thanks to the interwiki site links.</li><li>Descriptions checkbox : Update automatically the description thanks to a list that you can custom (<a href="http://www.wikidata.org/w/index.php?title=User:'+wgUserName+'/autoEditLists.js&action=edit&editintro=User talk:Jitrixis/autoEdit.js/editintro">link</a>).</li></ul>',
// DO NOT TRANSLATE. ///// If your reading direction is left to right, /////
// if not translate by ('floatRight': 'left','floatLeft': 'right') /////////
'floatRight': 'right',
'floatLeft': 'left'
// DO NOT TRANSLATE. ///////////////////////////////////////////////////////
},
'fr': {
'box-title': 'Ajout automatique',
'box-cancel': 'Fermer',
'box-send': 'Mettre à jour',
'sended': 'Envoyés',
'labels': 'Libéllés',
'descriptions': 'Descriptions',
'list': 'Listes',
'none': 'Aucune',
'warning-message': '<ul><li>L\'option "libéllés" : Ajoute automatiquement le libéllé de toutes les langues grâce au liens interwiki.</li><li>L\'option "description" : Ajoute automatiquement la description grâce à une liste que vous pouvez personnaliser (<a href="http://www.wikidata.org/w/index.php?title=User:'+wgUserName+'/autoEditLists.js&action=edit&editintro=User talk:Jitrixis/autoEdit.js/editintro">lien</a>).</li></ul>'
},
'de': {
'box-title': 'Autmatisches hinzufügen',
'box-cancel': 'Schließen',
'box-send': 'Update',
'sended': 'Gesendet',
'labels': 'Bezeichnungen',
'descriptions': 'Beschreibungen',
'list': 'Listen',
'none': 'Nichts',
'warning-message': '<ul><li>Bezeichnungen Checkbox: Bearbeite automatisch die Bezeichnungen von allen Sprachlinks der Interwiki Seite-Links.</li><li>Beschreibungen Checkbox: Bearbeite automatisch die Beschreibungen nach einer Liste, die du bearbeiten kannst. (<a href="http://www.wikidata.org/w/index.php?title=User:'+wgUserName+'/autoEditLists.js&action=edit&editintro=User talk:Jitrixis/autoEdit.js/editintro">Link</a>).</li></ul>',
},
'nl': {
'box-title': 'Automatisch toevoegen',
'box-cancel': 'Sluiten',
'box-send': 'Updaten',
'sended': 'Verzonden',
'labels': 'Labels',
'descriptions': 'Beschrijvingen',
'list': 'Lijsten',
'none': 'Niks',
'warning-message': '<ul><li>Selectievakje labels : Labels automatisch updaten door middel van de taalverwijzingen.</li><li>Selectievakje beschrijvingen : Beschrijvingen automatisch updaten door een zelf gemaakte lijst (<a href="http://www.wikidata.org/w/index.php?title=User:'+wgUserName+'/autoEditLists.js&action=edit&editintro=User talk:Jitrixis/autoEdit.js/editintro">link</a>).</li></ul>',
},
'it': {
'box-title': 'Aggiunta automatica',
'box-cancel': 'Chiudi',
'box-send': 'Aggiorna',
'sended': 'Inserito',
'labels': 'Etichette',
'descriptions': 'Descrizioni',
'list': 'Elenchi',
'none': 'Nessuno',
'warning-message': '<ul><li>Casella etichette : Aggiorna automaticamente l\'etichetta di tutte le lingue grazie ai collegamenti interwiki.</li><li>Descriptions checkbox : Casella descrizioni : Aggiorna automaticamente la descrizione grazie a un elenco che puoi personalizzare (<a href="http://www.wikidata.org/w/index.php?title=User:'+wgUserName+'/autoEditLists.js&action=edit&editintro=User talk:Jitrixis/autoEdit.js/editintro">link</a>).</li></ul>',
},
'es': {
'box-title': 'Adición automática',
'box-cancel': 'Cerrar',
'box-send': 'Actualizar',
'sended': 'Enviado',
'labels': 'Etiquetas',
'descriptions': 'Descripciones',
'list': 'Listas',
'none': 'Ninguna',
'warning-message': '<ul><li>Casilla de etiquetas: Actualizar automáticamente la etiqueta de todos los idiomas a partir de los enlaces interwiki.</li><li>Casilla de descripciones: Actualizar automáticamente la descripción de múltiples idiomas a partir de una lista que usted puede personalizar (<a href="http://www.wikidata.org/w/index.php?title=User:'+wgUserName+'/autoEditLists.js&action=edit&editintro=User talk:Jitrixis/autoEdit.js/editintro">enlace</a>).</li></ul>',
},
'fi': {
'box-title': 'Automaattinen täydennys',
'box-cancel': 'Sulje',
'box-send': 'Päivitä',
'sended': 'Lähetetty',
'labels': 'Otsikot',
'descriptions': 'Kuvaukset',
'list': 'Listat',
'none': 'Ei mitään',
'warning-message': '<ul><li>Otsikot-valintaruutu : Päivittää automaattisesti kaikkien kielten otsikot kieltenvälisten linkkien mukaan.</li><li>Kuvaukset-valintaruutu : Päivittää automaattisesti kaikkien kielten kuvaukset listojen mukaan, joita voi tehdä itse (<a href="http://www.wikidata.org/w/index.php?title=User:'+wgUserName+'/autoEditLists.js&action=edit&editintro=User talk:Jitrixis/autoEdit.js/editintro">linkki</a>).</li></ul>',
},
'fa': {
'box-title': 'لقب خودکار',
'box-cancel': 'بستن',
'box-send': 'به روز',
'sended': 'فرستاده شد',
'labels': 'برچسبها',
'descriptions': 'توضیحات',
'list': 'فهرستها',
'none': 'هیچکدام',
'warning-message': '<ul><li>دکمهٔ برچسبها : بهروز رسانی برچسب پیوندهای زبان های دیگر بر پایه میان ویکیها.</li><li>دکمهٔ توضیحات : بهروز رسانی توضیحات پیوندهای زبان های دیگر بر پایه فهرستی که میتوانید آن را شخصیسازی نمائید. (<a href="http://www.wikidata.org/w/index.php?title=User:'+wgUserName+'/autoEditLists.js&action=edit&editintro=User talk:Jitrixis/autoEdit.js/editintro">پیوند</a>).</li></ul>',
}
};
/*
**Check if main language can be translated.
*/
var lang = mw.user.options.get( 'language' );
if( !inArray( lang, ['en', 'fr', 'de', 'nl', 'it', 'es', 'fi', 'fa'] ) ) {
lang = 'en';
}
/*
**Return if the array conain the value.
*/
function inArray( value, array ) {
var contains = false;
for (var i = 0; i < array.length; i++) {
contains = array[i] == value;
if(contains) {
break;
}
}
return contains;
}
/*
**Return localized message.
*/
function translate( key ) {
if( transData[ lang ][ key ] ) {
return transData[ lang ][ key ];
} else {
return transData[ 'en' ][ key ];
}
}
/**
* Return the language code from the ID of the Wiki
*/
function getLanguageCodeFromWikiId( wiki ) {
var splited = wiki.match( /^(.*)wiki$/i );
if( !splited[1] ) {
return '';
} else {
return splited[1].replace(/_/g, '-');
}
}
/*
**Dialog and link
*/
function labelLister() {
var selectButton = "";
for (var nb in desclist) {
var optionText = "";
if(desclist[nb][mw.user.options.get( 'language' )]){
optionText = desclist[nb][mw.user.options.get( 'language' )];
} else if(desclist[nb]['en']) {
optionText = desclist[nb]['en'];
} else {
optionText = nb;
}
selectButton += '<option value="' + nb + '">' + optionText + '</option>';
}
desclist['none'] = {};
mw.loader.using( ['jquery.ui'], function() {
var formFind = '<div id="autoEdit" title=""><form id="editForm"><div id="autoEdit-main">' + translate( 'warning-message' ) + '<fieldset><legend>' + translate( 'box-send' ) + ' :</legend><input type="checkbox" id="autoEdit-label"/><label for="autoEdit-label">' + translate( 'labels' ) + '</label> <input type="checkbox" id="autoEdit-desc"/><label for="autoEdit-desc">' + translate( 'descriptions' ) + '</label></fieldset><fieldset><legend>' + translate( 'list' ) + '</legend><select id="autoEdit-list" style="width:100%"><option value="null" selected="selected">' + translate( 'none' ) + '</option>' + selectButton;
formFind += '</select></fieldset></div><div id="autoEdit-success" style="width:100%"></div></form></div>';
if(document.getElementById("content")) {
var messageFind = $( formFind ).appendTo( '#content' );
} else {
var messageFind = $( formFind ).appendTo( '#mw_content' );
}
messageFind.dialog({
title: '<img id="autoEdit-logo" src="//upload.wikimedia.org/wikipedia/commons/2/28/Symbol_arrow_up.svg" style="color:black;width:20px"> ' + translate( 'box-title' ),
autoOpen: false,
modal: true,
width: 500,
height: 355,
show: "blind",
hide: "blind",
buttons: [ {
text: translate( 'box-cancel' ),
click: function() {
$( this ).dialog( "close" );
}
},{
text: translate( 'box-send' ),
click: function() {
document.getElementById("autoEdit-main").style.display="none";
var loader = '<img style="margin-left:45%" id="autoEdit-loader" src="//upload.wikimedia.org/wikipedia/commons/d/de/Ajax-loader.gif"/><br/>';
$('#autoEdit-success').append( loader );
labelListing();
}
} ]
} );
var portletLink = mw.util.addPortletLink( 'p-tb', '#', translate( 'box-title' ), 't-autoEdit', translate( 'box-title' ) );
$(portletLink).click( function() {
$('#autoEdit-success').empty();
document.getElementById("autoEdit-main").style.display="inline";
$(".ui-dialog-buttonset").css("width","100%");
$(".ui-button").css("float",translate( 'floatRight' ));
$( 'div#autoEdit' ).dialog( 'open' );
} );
} );
}
/*
**List label, description and sitelinks
*/
function labelListing() {
var iwiki = {};
var desc = [];
var inputSelect = $( '#autoEdit-list' ).val();
$.ajax({
url: mw.util.wikiScript( 'api' ),
data: {
'format': 'json',
'action': 'wbgetitems',
'ids': itemId,
'props': 'labels|descriptions|sitelinks'
},
success: function( data ) {
for (var id in data.items[itemId].sitelinks) {
iwiki[getLanguageCodeFromWikiId(id)] = data.items[itemId].sitelinks[id].title.replace(/\(.*\)/g,"");
}
for (var id in data.items[itemId].labels) {
//if(iwiki[id]){
try{
delete iwiki[id];
} catch (err) {
}
//}
}
for (var id in data.items[itemId].descriptions) {
//if(desclist[inputSelect][id]){
try{
delete desclist[inputSelect][id];
} catch (err) {
}
//}
}
apiGet(iwiki, desclist[inputSelect]);
},
error: function() {
alert( 'API Error' );
onError();
}
});
}
function apiGet(lbl, desc){
sendItem(lbl, desc);
}
/*
**Send the input value on the edit menu
*/
function setItem( item, summary ) {
$.ajax( {
type: 'POST',
url: mw.util.wikiScript( 'api' ),
data: {
'format': 'json',
'action': 'wbsetitem',
'id': itemId,
'type': 'item',
'token': mw.user.tokens.get( 'csrfToken' ),
'data': item,
'summary': '[[User:Jitrixis/autoEdit.js|autoEdit]] ' + summary,
'exclude': 'pageid|ns|title|lastrevid|touched|sitelinks|aliases'
}
} )
.done(function( data ) {
if(data.success == 1){
alert(translate( 'sended' ));
$( '#autoEdit' ).dialog( "close" );
} else {
$('#autoEdit-success').append( 'Error : ' );
$('#autoEdit-success').append( $.toJSON( data ) );
}
} )
.fail(function( data ) {
$('#autoEdit').append( $.toJSON( data.success ) );
} )
}
/*
**Control how to send an item
*/
function sendItem(lbl, desc) {
var inputLabel = document.getElementById("autoEdit-label").checked;
var inputDesc = document.getElementById("autoEdit-desc").checked;
var inputSelect = $( '#autoEdit-list' ).val();
var sommaire = "Update ";
//CREATE LABEL SAVE
var jsonLabel = [];
if(inputLabel == true){
for (var nb in lbl) {
if(lbl[nb] != ""){
var jsonLabelArray = {};
jsonLabelArray = {
"language": nb,
"value": lbl[nb],
}
jsonLabel.push(jsonLabelArray);
}
}
sommaire += "Labels ";
}
//CREATE DESCRIPTION SAVE
var jsonDesc = [];
if(inputDesc == true){
for (var nb in desc) {
if(desc[nb] != ""){
var jsonDescArray = {};
jsonDescArray = {
"language": nb,
"value": desc[nb],
}
jsonDesc.push(jsonDescArray);
}
}
sommaire += "Descriptions (" + inputSelect + ")";
}
setItem( $.toJSON( { 'labels': jsonLabel, 'descriptions': jsonDesc } ), sommaire);
}
$( document ).ready( labelLister );
} ( mediaWiki, jQuery ) );