User:GZWDer/common.js

// /* User:Zhaofeng Li/Reflinks.js */ //importScript( 'User:Zhaofeng Li/Reflinks.js' );// Backlink: User:Zhaofeng Li/Reflinks.js

//Link Translator //由User:Liangent最初设计 //由User:Kovl修改 //源代码取自User:Liangent/Gadgets/Toolkit/linktranslator.uncompressed.js //v2015-2-6-7-52 //此脚本不依赖其他脚本 $(function { mw.loader.load('http://tools.wmflabs.org/magnustools/resources/js/jquery/jquery-ui.min.js'); var LTUI = {   Translate:"翻译",    TranslateLinks:"翻译链接",    LinkTranslator:"链接翻译器",    TLTitle:"自动翻译从其他语言维基百科复制的文本",    SourceLanguageCode:"目标维基的语言代码：",    OriginalLink:"原链接：",    NOLINKINPAGE:"此页没有链接",    Done:"完成",    NoWikiEd:"linktranslator.js与WikiEd不兼容，请于页面右上角暂时禁用WikiEd. ",    EditMessage:"由链接翻译器自动翻译；",    //OPTION    KeepOriginalText:"显示原文：",    CommentOriginalLink:"注释原链接：",    UseLangLink:"跨语言链接：",    //STATUS    PARSEFAILED:"解析失败",    ERROR:"错误",    NOLINK:"没有链接",    MULTIPLELINK:"多个连接",    PAGESAME:"页面相同",    PAGEDIFF:"页面不同",    DONTEXIST:"页面不存在" }; var LTConf = {    SourceLanguageCode:"en",    KeepOriginalText:"", //"checked" OR ""    CommentOriginalLink:"",    UseLangLink:"checked" }; //clear previous button $('#wpLinktranslator').remove; // secure server? if ((mw.config.get('wgAction') == 'edit' || mw.config.get('wgAction') == 'submit') && mw.config.get('wgServer') == '//en.wikipedia.org') { $('#wpDiff').after('\n'); $('#wpLinktranslator').click(LTClick); } //variables var jobid = 0; var ldsb = '__LEFT_DOUBLE_SQUARE_BRACKETS__'; var EXEConf; //on click "Translate links" #wpLinktranslator function LTClick(event) { event.preventDefault; $('#linktranslator').remove; if ($("#wikEdFrameWrapper").css("visibility") == "visible"){ alert(LTUI.NoWikiEd); return; }   $('' +        '' + LTUI.SourceLanguageCode + ' ' +        ' ' +        '' + LTUI.KeepOriginalText + ' ' +        ' ' +        '' + LTUI.CommentOriginalLink + ' ' +        ' ' +        '' + LTUI.UseLangLink + ' ' +        ' ' +        ' ' ).dialog({ modal: false, close: function {jobid++;}, width: 500 });   $('#linktranslator-translate').click(TClick); } //on click "Translate" #linktranslator-translate function TClick(event) {    event.preventDefault;    var thisjobid = jobid; // or in #wpLinktranslator's click event?    EXEConf = {		KeepOriginalText:$('#linktranslator-keep-original').prop('checked'),		CommentOriginalLink:$('#linktranslator-comment-link').prop('checked'),		UseLangLink:$('#linktranslator-lang-link').prop('checked')	};    LTConf.SourceLanguageCode = $('#linktranslator-source-lang').val;    var api = 'http://' + LTConf.SourceLanguageCode + '.wikipedia.org/w/api.php';    if (document.location.protocol == 'https:') {        api = 'https://' + LTConf.SourceLanguageCode + '.wikipedia.org/w/api.php';    }    var wikitext = $('#wpTextbox1').val;    // how to make a set to avoid duplicated links?    var links = $('#wpTextbox1').val.match(/\[\[.+?\]\]/g);    if (links === null) { $('#linktranslator').text(LTUI.NOLINKINPAGE); return; } else { // assert links.length != 0 here. $('#linktranslator').dialog( "option", "position", { my: "top", at: "top"} ); //$('#linktranslator').html(' '); //$('#linktranslator-progressbar').progressbar; }   var respcount = 0; // TODO: should be rewritten using jQuery.each function eachlink(i) { var linkidx = i;       var link = links[i].slice(2, -2); var linktarget = link; // TODO: pipe tricks like /subpage/? var linkdisplay = link; var idx = link.indexOf('|'); if (idx != -1) { linktarget = link.substring(0, idx); linkdisplay = link.substring(idx + 1); }       $('#linktranslator').append(' '); $('#linktranslator-item-' + i).text(links[i] + ' -> ') .append(' ... '); // TODO: if newtarget == linkdisplay? // TODO: cannot identify if missing or (for main page, also blank text) $.ajax({           data: {                action: 'parse',                format: 'json',                page: linktarget,                prop: 'langlinks',                redirects: 1            },            dataType: "jsonp",            type: 'POST',            url: api,            success: function(data) {                console.log(data);                if (thisjobid != jobid) {                    return;                }                var llink;                var newtarget;                var newlinks;                if(data.parse){                	//request successful                    llink = $.grep(data.parse.langlinks, function(e){ return e.lang === 'en'; });                } else if(data.error.info){                	//request completed with error                    if(data.error.info == "The page you specified doesn't exist")                        {$('#linktranslator-item-' + linkidx + ' .linktranslator-item-newlink').text(LTUI.DONTEXIST);} else {$('#linktranslator-item-' + linkidx + ' .linktranslator-item-newlink').text(LTUI.ERROR + '(' + data.error.info + ')');} return; } else{ //error without info field $('#linktranslator-item-' + linkidx + ' .linktranslator-item-newlink').text(LTUI.PARSEFAILED); return; }               if (llink.length === 1) { newtarget = llink[0]["*"]; if(linktarget === newtarget){ $('#linktranslator-item-' + linkidx + ' .linktranslator-item-newlink').text(LTUI.PAGESAME); return; }                   //EXEConf.KeepOriginalText if(EXEConf.KeepOriginalText) { newlinks = ldsb + newtarget + '|' + linkdisplay + ']]'; } else { newlinks = ldsb + newtarget + ']]'; }               } else if (llink.length === 0) { if(EXEConf.UseLangLink) { newlinks = '{{link-' + LTConf.SourceLanguageCode + '||' + ''; if(EXEConf.KeepOriginalText) { newlinks = '{{tsl|' + LTConf.SourceLanguageCode + '|' + linktarget + '||' + linkdisplay +'}}'; } else { newlinks = '{{tsl|' + LTConf.SourceLanguageCode + '|' + linktarget + '}}'; }                   } else { $('#linktranslator-item-' + linkidx + ' .linktranslator-item-newlink').text(LTUI.NOLINK); return; }               } else { $('#linktranslator-item-' + linkidx + ' .linktranslator-item-newlink').text(LTUI.MULTIPLELINK); return; }               //EXEConf.CommentOriginalLink var newcomment; if(EXEConf.CommentOriginalLink) { newcomment = ''; } else { newcomment = ''; }               //mark on dialogue $('#linktranslator-item-' + linkidx + ' .linktranslator-item-newlink').text(newlinks.replace(new RegExp(ldsb, 'g'), '[['));               // only replacing the first is ok, we will run this many times                wikitext = wikitext.replace(links[linkidx], newlinks + newcomment);            },            error: function(jqXHR, textStatus, errorThrown) {                if (thisjobid != jobid) {                    return;                }                $('#linktranslator-item-' + linkidx + ' .linktranslator-item-newlink').text(LTUI.ERROR + '(' + textStatus + ')');            },            complete: function {                if (thisjobid != jobid) {                    return;                }                respcount++;                //$('#linktranslator-progressbar').progressbar('value', respcount * 100 / links.length);                if (respcount >= links.length) {                    $('#wpTextbox1').val(wikitext.replace(new RegExp(ldsb, 'g'), '[['));                    $('#linktranslator').prepend(' ' + LTUI.Done + ' ');                }            }        });//ajax complete    }//trino complete    for (var i = 0; i < links.length; i++) {eachlink(i);}    $('#wpSummary').val(LTUI.EditMessage + $('#wpSummary').val); } //end });

/*if ( mw.config.get( 'wgCanonicalNamespace' ) === 'File' ) {  var page = 'User:Mattflaschen/CommonsHelper Labs.js'; var url = '//commons.wikimedia.org/w' + '/index.php?title=' + encodeURIComponent( page.replace( / /g, '_' ) ) + '&action=raw&ctype=text/javascript'; mw.loader.load( url ); }*/ //importScript('Wikipedia:Igloo/gloo.js'); //