مدیاویکی:Gadget-QuickRCDiff.js

از اسلامیکال
نسخهٔ تاریخ ‏۲۵ ژانویهٔ ۲۰۲۳، ساعت ۰۸:۰۹ توسط Aboammar (بحث | مشارکت‌ها)
(تفاوت) → نسخهٔ قدیمی‌تر | نمایش نسخهٔ فعلی (تفاوت) | نسخهٔ جدیدتر ← (تفاوت)
پرش به ناوبری پرش به جستجو

نکته: پس از انتشار ممکن است برای دیدن تغییرات نیاز باشد که حافظهٔ نهانی مرورگر خود را پاک کنید.

  • فایرفاکس / سافاری: کلید Shift را نگه دارید و روی دکمهٔ Reload کلیک کنید، یا کلید‌های Ctrl-F5 یا Ctrl-R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ⌘-R)
  • گوگل کروم: کلیدهای Ctrl+Shift+R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ⌘-Shift-R)
  • اینترنت اکسپلورر/ Edge: کلید Ctrl را نگه‌دارید و روی دکمهٔ Refresh کلیک کنید، یا کلید‌های Ctrl-F5 را با هم فشار دهید
  • اپرا: Ctrl-F5 را بفشارید.
$(mw.util.addPortletLink('p-tb', '#', '⇦ گشت‌زنی سریع', 't-scoring', 'فعال‌سازی ابزار بررسی و ارزشیابی. نسخه، با کلیک بر روی این دکمه ابزار برای این صفحه فعال می‌شود.')).css('font-weight', 'bold').click(function (e) {
    mw.loader.using(['mediawiki.api','jquery.ui','mediawiki.diff.styles']).then(function(){
        mw.loader.load('/w/index.php?title=MediaWiki:Gadget-QuickRCDiff.css&action=raw&ctype=text/css', 'text/css');
        if ($('.qRcDiff').length>0|| $('.qRcDiffLoaded').length>0 ){
            return;
        }
        mw.notify('ابزار ارزشیابی نسخه فعال شد. الان می‌توانید بر روی نسخه‌ها کلیک کنید!');
        if(/[&?]diff\=/.test(window.location.href)){
            var diffpages=true  
        }else{
            var diffpages=false
        }
        if ($.inArray(mw.config.get('wgCanonicalSpecialPageName'), ['Watchlist', 'Recentchanges', 'Contributions']) != -1|| mw.config.get('wgAction')=="history"||diffpages)(function() {
            var lastRequset, $diffDialog, $diffDialog2, $diffContent, $diffContent1, diffId, diffId2,beforeBtn,nextBtn,theScore;
            var diffTitle, username, mylist, mytarget, lastRevert, lastComment, historys, lastRevertedUser,diffs;
            var QuickRCDiff = {};
            var scriptpathbefore = mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=";
            var scriptpathafter = "&action=raw&ctype=text/javascript&happy=yes";
            var newwidth = '90%'
            var newheight = '650'
            var textBox = document.createElement("INPUT");
            var labelBox = document.createElement("label");
            var ComboBox1 = document.createElement("SELECT");
            var warnings= {
                "--- یک پیام انتخاب کنید ---":"",
                "تازه‌کاران: امضا مکنید" :"امضا مکنید",
                "تازه‌کاران: صفحه‌کلید فارسی" :"استفاده از صفحه کلید فارسی",
                "تازه‌کاران: پیش‌نمایش" :"از پیش‌نمایش استفاده کنید",
                "تازه‌کاران: ویکی خواهر" :"ویرایش در ویکی‌های خواهر",
                "تازه‌کاران: خلاصه ویرایش" :"تذکر خلاصه ویرایش",
                "تازه‌کاران: هشدار خرابکاری" :"تذکر خرابکاری",
                "تازه‌کاران: آخرین هشدار خرابکاری" :"تذکر خرابکاری (آخرین)",
                "تازه‌کاران: ویرایش اخلالگرانه" :"هشدار ویرایش اخلالگرانه",
                "تازه‌کاران: صفحه تمرین" :"صفحه تمرین",
                "تازه‌کاران: صفحهٔ کاربری مقاله‌نما" :"هشدار مقاله‌نما",
                "ابزارها: کمک‌مترجم" :"ابزار کمک‌مترجم",
                "ابزارها: ابزارهای ویرایشی" :"ابزارهای ویرایشی",
                "ابزارها: ابرابزار" :"ابرابزار",
                "ابزارها: اشتباه‌یاب" :"ابزار اشتباه‌یاب",
                "مقاله: آموزش ویکی‌نویسی" :"ویکی‌نویسی",
                "مقاله: ویرایش دانشجویی" :"ویرایش دانشجویی",
                "مقاله: نوشتار نامناسب" :"نوشتار نامناسب",
                "مقاله: زیادی کوتاه" :"بیش از حد کوتاه",
                "مقاله: حداقل‌ها" :"حداقل‌های مقاله",
                "مقاله: حذف شده" :"مقاله حذف شده",
                "مقاله: تغییرمسیر" :"از تغییرمسیر استفاده کنید",
                "مقاله: انتقال" :"از انتقال استفاده کنید",
                "مقاله: القاب ممنوع" :"هشدار القاب ممنوع",
                "حق تکثیر: کپی‌کاری" :"کپی مکنید",
                "حق تکثیر: یادکرد دقیق" :"یادکرد دقیق منبع",
                "حق تکثیر: ارجاع به جای کپی" :"نحوه استفاده از مقالات علمی",
                "حق تکثیر: منابع معتبر" :"منابع معتبر",
                "حق تکثیر: آموزش یادکرد" :"ارجاع صحیح",
                "هرزنگاری: تبلیغ" :"تبلیغ مکنید",
                "هرزنگاری: سرشناسی" :"پیام سرشناسی",
                "هرزنگاری: سره‌نویسی" :"سره ننویسید",
                "هرزنگاری: خودنوشته" :"خودنوشته",
                "هرزنگاری: اشتباه‌گرفته‌اید" :"اشتباه گرفته‌اید"
            }
            ComboBox1.setAttribute("id", "myComboBox");
            $.ajax({
                url: scriptpathbefore + "User:" + encodeURIComponent(mw.config.get('wgUserName')) + "/QuickRCDiffoptions.js" + scriptpathafter,
                dataType: 'text',
                error: function(){ console.log("Could not load QuickRCDiffoptions.js"); },
                success: function(optionsText){

                    //quick pass if user has no options
                    if ( optionsText === "" ) {
                        return;
                    }
                    optionsText = optionsText.replace(/(?:^(?:\/\/[^\n]*\n)*\n*|(?:\/\/[^\n]*(?:\n|$))*$)/g, "");
                    if (optionsText.lastIndexOf("window.QuickRCDiff.prefs = ", 0) === 0) {
                        optionsText = optionsText.replace(/(?:^window.QuickRCDiff.prefs = |;\n*$)/g, "");
                    }
                    try {
                        var options = JSON.parse(optionsText);
                        if( options ) {
                            QuickRCDiff.prefs = options;
                        }
                    }
                    catch (e) {
                         console.log("Could not parse QuickRCDiffoptions.js");
                    }
                },
                complete: function(){
                    $(document).ready(QuickRCDiff.load);
                }
            });
            //QuickRCDiff["prefs"]["warnings"]
            textBox.setAttribute("type", "text");
            textBox.setAttribute("class", "textbox");
            function warningUser( username, template) {
                    if (!template){
                        alert('لطفاً از پنجرهٔ پایین‌رونده یک هشدار انتخاب کنید!')
                        return;
                    }
                    var userWarningsummary = 'الگوی «' + template + '» به بحث کاربر افزوده شد. ([[اسلامیکال:گشت سریع|گشت سریع]])'
                    var template="{{جا:"+template+"}}~~"+"~~"
                    api = new mw.Api();
                    api.get( {
                        action : 'query',
                        titles : 'بحث_کاربر:'+username,
                        prop   : 'revisions',
                        rvprop : 'content'
                    } ).done( function( data ) {
                        pages = data.query.pages;
                        page_id = Object.keys(pages)[0];
                        if( page_id == -1 ) {
                            wikitext = template;
                        } else {
                            wikitext = pages[page_id].revisions[0]["*"] + '\n\n' + template;
                        }
                        api.post( {
                            action  : 'edit',
                            title   :'بحث_کاربر:'+username,
                            summary : userWarningsummary,
                            text    : wikitext,
                            token   : mw.user.tokens.get('csrfToken')
                        } ).done ( function( data ) {
                            mw.log( "Saved successfully" );
                            //location.reload();
                            mw.notify('در بحث کاربر:'+username+' هشدار '+template.replace(/\~/g,'')+' درج شد!');
                        } ).fail( function( code, result ) {
                            if ( code === "http" ) {
                                mw.log( "HTTP error: " + result.textStatus );
                            } else if ( code === "ok-but-empty" ) {
                                mw.log( "Got an empty response from the server" );
                            } else {
                                mw.log( "API error: " + code );
                            } 
                        } );
                    } );
                }
            // At diff pages
            function addScore( rev_num,rev_score) {
                rev_num=rev_num.replace(/[&?](oldid|diff)\=/g,'')
                if (!rev_score){
                    alert('لطفا یک دلیل برای واگردانی یا عدم واگردانی مشخص کنید')
                    return;
                }
                if (historys){
                    var type='h'
                }
                if (diffs){
                    var type='d'
                }
                if (!historys && !diffs){
                    var type='RC'
                }
                var userWarningsummary = 'افزودن ارزشیابی «'+rev_score+'» برای نسخهٔ [[Special:Diff/'+rev_num+']] -ت:'+type
                api = new mw.Api();
                api.get( {
                    action : 'query',
                    titles : 'اسلامیکال:واحد ضد خرابکاری/ربات/ارزشیابی',
                    prop   : 'revisions',
                    rvprop : 'content'
                } ).done( function( data ) {
                    pages = data.query.pages;
                    page_id = Object.keys(pages)[0];
                    theScore='{{تفاوت نسخه|'+rev_num+'|'+rev_score
                    wikitext=pages[page_id].revisions[0]["*"]+'\n# '+theScore+'|tager:کاربر:'+mw.config.get( 'wgUserName' ).replace(' ','_')+'|ت:'+type+'}}'

                    wikitext=wikitext.replace('|-','|')

                    api.post( {
                        action  : 'edit',
                        title   :'اسلامیکال:واحد ضد خرابکاری/ربات/ارزشیابی',
                        summary : userWarningsummary,
                        text    : wikitext,
                        token   : mw.user.tokens.get('csrfToken')
                    } ).done ( function( data ) {
                        mw.log( "Saved successfully" );
                        //location.reload();
                    mw.notify(theScore+'}}');
                    } ).fail( function( code, result ) {
                        if ( code === "http" ) {
                            mw.log( "HTTP error: " + result.textStatus );
                        } else if ( code === "ok-but-empty" ) {
                            mw.log( "Got an empty response from the server" );
                        } else {
                            mw.log( "API error: " + code );
                        } 
                    } );
                } );
            }

            function qRcDiffHandler(content) {
                document.addEventListener('keyup', keyPress, false);
                mw.loader.load(['jquery.spinner', 'mediawiki.diff.styles']);
                $("ul#pagehistory li:not(.active)").not('qRcDiff').addClass('qRcDiff')// for history
                $('.mw-line-even,.mw-line-odd', content).not('qRcDiff').addClass('qRcDiff') // for RC
                if (diffpages){
                    clicked_item(window.location.href, 'diff')
                }
                $('.qRcDiff', content).click(function(e) {
                    mylist = $('.qRcDiff')
                    var second = 0;
                    if ($diffDialog) {
                        $diffDialog.dialog('close');
                    }
                    clicked_item(e, second)
                });

                function scorll(a) {
                    window.scrollTo(0, $(window).scrollTop() + 40 * a);
                }

                function otherCase(casenum,goDown) {
                    if (!goDown){
                        if (casenum >= 0) {
                                nextBtn.prop("disabled", false).prop('title', '(کلید ↓) مورد پایین');
                                scorll(-1)
                                clicked_item(mylist[casenum - 1], 2)

                            } else {
                                beforeBtn.prop("disabled", true).prop('title', '');
                        }
                    }else{
                        if (casenum <= mylist.length) {
                            beforeBtn.prop("disabled", false).prop('title', 'مورد بالا (کلید ↑)');
                            scorll(1)
                            clicked_item(mylist[casenum + 1], 2)
                        } else {
                            nextBtn.prop("disabled", true).prop('title', '');
                        }
                    }
                }

                function keyPress(e) {
                    if ($(".ui-dialog").is(":visible")) { // اگر پنجره باز بود عمل کند
                        //console.log(e.keyCode)
                        if (e.keyCode == 38||e.keyCode == 37) { //   ↑↑↑
                            var casenum = find_loc(mytarget)
                            $diffDialog.dialog('close')
                            otherCase(casenum,false)// مورد بالا
                        }
                        if (e.keyCode == 40||e.keyCode == 39) { //    ↓↓↓
                            var casenum = find_loc(mytarget)
                            $diffDialog.dialog('close')
                            otherCase(casenum,true)// مورد پایین
                        }
                        if (e.keyCode == 65) { // warning
                            if (!diffId) {
                                return; //nothing to do
                            }
                            var template = document.getElementById("myComboBox").value
                            //alert(e)
                            warningUser(username, template)
                        }
                        if (e.shiftKey && e.keyCode == 66 || e.shiftKey && e.keyCode == 82) { // Shift + B or R= revert
                            //console.log('revert by key')
                            if (!username) {
                                return; //nothing to do
                            }
                            var api = new mw.Api();
                            api.postWithToken('rollback', {
                                action: 'rollback',
                                user: username,
                                title: diffTitle
                            }).done(function(data) {
                                mw.notify(diffTitle+' واگردانی انجام شد');
                                var casenum = find_loc(mytarget)
                                $diffDialog.dialog('close')
                                /*
                                if (!nextDirection){
                                    otherCase(casenum,true)// مورد پایین
                                }else{
                                    otherCase(casenum,false)// مورد بالا
                                }*/
                            }).fail(function(result) {
                                mw.notify(username);
                                mw.notify(diffTitle);
                                mw.notify('واگردانی انجام نشد!');
                                console.log(result)
                            });
                        }
                        if (e.shiftKey && e.keyCode == 71 || e.shiftKey && e.keyCode == 80) { // Shift + G or p = patrol
                            //console.log('patrol by key')
                            if (!diffId) {
                                return; //nothing to do
                            }
                            var api = new mw.Api();
                            api.postWithToken('patrol', {
                                action: 'patrol',
                                revid: diffId
                            }).done(function(data) {
                                if (data && data.patrol) {
                                    //patrolBtn.prop("disabled",true)
                                    mw.notify('به این ویرایش برچسب گشت زده‌شد');
                                    var casenum = find_loc(mytarget)
                                    $diffDialog.dialog('close')
                                    /*
                                    if (!nextDirection){
                                        otherCase(casenum,true)// مورد پایین
                                    }else{
                                        otherCase(casenum,false)// مورد بالا
                                    }*/
                                } else {
                                    var desc = (data && data.error && data.error.info) || '';
                                    mw.notify('خطا:' + desc);
                                }
                            });
                        }
                    }
                }

                function find_loc(mycase) {
                    var i = 0;
                    for (i; i < mylist.length; i++) {
                        if (mycase == mylist[i]) {
                            return i
                        }
                    }
                }
                
                function clicked_item(e, second) {
                    if (!second) {
                        mytarget = e.target
                    } else {
                        mytarget = e
                    }
                    if (second!=='diff'){
                    	var outerHTML = $(mytarget).prop('outerHTML');
                        if (outerHTML && outerHTML.slice(0,7)=="<a href"){
                            return;
                        }
                        diffs=false
                    }else{
                        $("#firstHeading").not('qRcDiffLoaded').addClass('qRcDiffLoaded')
                        diffs=true
                    }
                    //initalizations
                    if (!$diffContent) $diffContent = $('<div style="height: 100% ; overflow-y: auto">');
                    if (!$diffContent1) $diffContent1 = $('<div>')
                    //if ($diffDialog) {
                    var buttons = {
                        'ارسال هشدار به کاربر': function() {
                            if (!diffId) {
                                return; //nothing to do
                            }
                            var template = document.getElementById("myComboBox").value
                            //alert(e)
                            warningUser(username, template)
                        },
                        '♥': function() {
                            if (!diffId) {
                                return; //nothing to do
                            }
                            var api = new mw.Api();
                            api.postWithToken('csrf', {
                                action: 'thank',
                                source: 'diff',
                                rev: diffId
                            }).done(function(data) {
                                thanksBtn.prop("disabled", true).prop('title', '');
                                mw.notify('برای ویرایشگر تشکر ارسال شد');
                            });
                        },
                        'واگردانی': function() {
                            if (!username) {
                                return; //nothing to do
                            }
                            var api = new mw.Api();
                            api.postWithToken('rollback', {
                                action: 'rollback',
                                user: username,
                                title: diffTitle
                            }).done(function(data) {
                                mw.notify(diffTitle+' واگردانی انجام شد');
                                var casenum = find_loc(mytarget)
                                //$diffDialog.dialog('close')
                                /*
                                if (!nextDirection){
                                    otherCase(casenum,true)// مورد پایین
                                }else{
                                    otherCase(casenum,false)// مورد بالا
                                }*/
                            }).fail(function(result) {
                                mw.notify(username);
                                mw.notify(diffTitle);
                                mw.notify('واگردانی انجام نشد!');
                                console.log(result)
                            });
                        },
                        'واگردانی با ارسال پیام': function() {
                            if (!username) {
                                return; //nothing to do
                            }
                            var api = new mw.Api();
                            api.postWithToken('rollback', {
                                action: 'rollback',
                                user: username,
                                title: diffTitle
                            }).done(function(data) {
                                mw.notify(diffTitle+' واگردانی انجام شد');
                                var template = document.getElementById("myComboBox").value
                                warningUser(username, template)
                                var casenum = find_loc(mytarget)
                                //$diffDialog.dialog('close')
                                /*
                                if (!nextDirection){
                                    otherCase(casenum,true)// مورد پایین
                                }else{
                                    otherCase(casenum,false)// مورد بالا
                                }*/
                            }).fail(function(result) {
                                mw.notify(username);
                                mw.notify(diffTitle);
                                mw.notify('واگردانی انجام نشد!');
                                console.log(result)
                            });
                        },
                        '↷ خنثی‌سازی': function() {
                            window.open('//fa.wikipedia.org/w/index.php?title=' + diffTitle + '&oldid=' + diffId2 + '&pageId=' + diffId + '&action=edit&user=' + username + '&withJS=MediaWiki:Gadget-QuickRCDiff-Helper.js', '_blank')
                            if (!diffId) {
                                return; //nothing to do
                            }
                            var api = new mw.Api();
                            api.postWithToken('patrol', {
                                action: 'patrol',
                                revid: diffId
                            }).done(function(data) {
                                if (data && data.patrol) {
                                    //patrolBtn.prop("disabled",true)
                                    mw.notify('به دلیل خنثی‌سازی به این ویرایش برچسب گشت زده‌شد');
                                    var casenum = find_loc(mytarget)
                                    //$diffDialog.dialog('close')
                                    /*
                                    if (!nextDirection){
                                        otherCase(casenum,true)// مورد پایین
                                    }else{
                                        otherCase(casenum,false)// مورد بالا
                                    }*/
                                } else {
                                    var desc = (data && data.error && data.error.info) || '';
                                    mw.notify('خطا:' + desc);
                                }
                            });
                        },
                        '↷ خنثی‌سازی  با ارسال پیام': function() {
                            window.open('//fa.wikipedia.org/w/index.php?title=' + diffTitle + '&oldid=' + diffId2 + '&pageId=' + diffId + '&action=edit&user=' + username + '&withJS=MediaWiki:Gadget-QuickRCDiff-Helper.js', '_blank')
                            if (!diffId) {
                                return; //nothing to do
                            }
                            var api = new mw.Api();
                            api.postWithToken('patrol', {
                                action: 'patrol',
                                revid: diffId
                            }).done(function(data) {
                                if (data && data.patrol) {
                                    //patrolBtn.prop("disabled",true)
                                    mw.notify('به دلیل خنثی‌سازی به این ویرایش برچسب گشت زده‌شد');
                                    var template = document.getElementById("myComboBox").value
                                    warningUser(username, template)
                                    var casenum = find_loc(mytarget)
                                    //$diffDialog.dialog('close')
                                    /*
                                    if (!nextDirection){
                                        otherCase(casenum,true)// مورد پایین
                                    }else{
                                        otherCase(casenum,false)// مورد بالا
                                    }*/
                                } else {
                                    var desc = (data && data.error && data.error.info) || '';
                                    mw.notify('خطا:' + desc);
                                }
                            });
                        },
                        'برچسب گشت': function() {
                            if (!diffId) {
                                return; //nothing to do
                            }
                            var api = new mw.Api();
                            api.postWithToken('patrol', {
                                action: 'patrol',
                                revid: diffId
                            }).done(function(data) {
                                if (data && data.patrol) {
                                    //patrolBtn.prop("disabled",true)
                                    mw.notify('به این ویرایش برچسب گشت زده‌شد');
                                    var casenum = find_loc(mytarget)
                                    //$diffDialog.dialog('close')
                                    /*
                                    if (!nextDirection){
                                        otherCase(casenum,true)// مورد پایین
                                    }else{
                                        otherCase(casenum,false)// مورد بالا
                                    }*/
                                } else {
                                    var desc = (data && data.error && data.error.info) || '';
                                    mw.notify('خطا:' + desc);
                                }
                            });
                        },
                        'ویرایش‌های در حال انتظار': function() {
                            window.open('//fa.wikipedia.org/w/index.php?title=' + diffTitle + '&oldid=' + diffId2 + '&diff=cur', '_blank')
                        },
                        'بررسی کپی‌کاری ®': function() {
                            window.open('http://copyvios.toolforge.org/?lang=fa&project=wikipedia&title=' + diffTitle + '&oldid=' + diffId + '&action=search&use_engine=1&use_links=1', '_blank')
                        },
                        'برچسب برای ویرایش بد:': function() {
                                $(".textbox").val('');
                                $(".RBtn01").show().prop("disabled", false)
                                $(".RBtn02").show().prop("disabled", false)
                                $(".RBtn03").show().prop("disabled", false)
                                $(".RBtn04").show().prop("disabled", false)
                                $(".RBtn05").show().prop("disabled", false)
                                $(".RBtn06").show().prop("disabled", false)
                                $(".RBtn07").show().prop("disabled", false)
                                $(".RBtn08").show().prop("disabled", false)
                                $(".RBtn09").show().prop("disabled", false)
                                $(".RBtn10").show().prop("disabled", false)
                                $(".RBtn11").show().prop("disabled", false)
                                $(".RBtn12").show().prop("disabled", false)
                                $(".RBtn13").show().prop("disabled", false)
                                
                                $(".NBtn01").hide()
                                $(".NBtn02").hide()
                                $(".NBtn03").hide()
                                $(".NBtn04").hide()
                                $(".NBtn05").hide()
                                $(".NBtn06").hide()
                                $(".NBtn07").hide()
                                $(".NBtn08").hide()
                                $(".NBtn09").hide()
                                $(".NBtn10").hide()
                                $(".NBtn11").hide()
                                $(".NBtn12").hide()
                                $(".NBtn13").hide()
                                $(".NBtn14").hide()
                                $(".NBtn15").hide()
                        },
                        'افزودن متن نامناسب': function() {//RBtn01
                                $(".textbox").val($(".textbox").val() + '-Rمتن_نامناسب');
                        },
                        'تبلیغ': function() {//RBtn02
                                $(".textbox").val($(".textbox").val() +'-Rتبلیغ')
                        },
                        'کپی‌کاری': function() {//RBtn03
                                $(".textbox").val($(".textbox").val() +'-Rکپی')
                        },
                        'عبارت نامفهوم': function() {//RBtn04
                                $(".textbox").val($(".textbox").val() +'-Rچرند')
                        },
                        'فحاشی، توهین': function() {//RBtn05
                                $(".textbox").val($(".textbox").val() +'-Rفحش')
                        },
                        'خراب‌کردن پیوند یا سینکس ویکی': function() {//RBtn07
                                $(".textbox").val($(".textbox").val() +'-Rسینتکس')
                        },
                        'دستکاری اعداد و آمار، پیوند': function() {//RBtn08
                                $(".textbox").val($(".textbox").val() +'-Rآمار')
                        },
                        'خراب‌کردن گرامر یا املاء': function() {//RBtn09
                                $(".textbox").val($(".textbox").val() +'-Rگرامر')
                        },
                        'حذف نادرست مطلب': function() {//RBtn10
                                $(".textbox").val($(".textbox").val() +'-Rحذف_نادرست')
                        },
                        'خرابکاری عمدی': function() {//RBtn11
                                $(".textbox").val($(".textbox").val() +'-Rخرابکار')
                        },
                        'کاربر تحریم': function() {//RBtn12
                                $(".textbox").val($(".textbox").val() +'-Rتحریم')
                        },
                        'سایر دلایل': function() {//RBtn13
                                $(".textbox").val($(".textbox").val() +'-Rسایر')
                        },
                        'برچسب برای ویرایش درست:': function() {
                                $(".textbox").val('');
                                $(".RBtn01").hide()
                                $(".RBtn02").hide()
                                $(".RBtn03").hide()
                                $(".RBtn04").hide()
                                $(".RBtn05").hide()
                                $(".RBtn06").hide()
                                $(".RBtn07").hide()
                                $(".RBtn08").hide()
                                $(".RBtn09").hide()
                                $(".RBtn10").hide()
                                $(".RBtn11").hide()
                                $(".RBtn12").hide()
                                $(".RBtn13").hide()
                                
                                $(".NBtn01").show().prop("disabled", false)
                                $(".NBtn02").show().prop("disabled", false)
                                $(".NBtn03").show().prop("disabled", false)
                                $(".NBtn04").show().prop("disabled", false)
                                $(".NBtn05").show().prop("disabled", false)
                                $(".NBtn06").show().prop("disabled", false)
                                $(".NBtn07").show().prop("disabled", false)
                                $(".NBtn08").show().prop("disabled", false)
                                $(".NBtn09").show().prop("disabled", false)
                                $(".NBtn10").show().prop("disabled", false)
                                $(".NBtn11").show().prop("disabled", false)
                                $(".NBtn12").show().prop("disabled", false)
                                $(".NBtn13").show().prop("disabled", false)
                                $(".NBtn14").show().prop("disabled", false)
                                $(".NBtn15").show().prop("disabled", false)
                        },
                        'افزودن یا اصلاح متن درست': function() {//NBtn01
                                $(".textbox").val($(".textbox").val() +'-Nدرست')
                        },
                        'به‌روزکردن آمار و ارقام': function() {//NBtn02
                                $(".textbox").val($(".textbox").val() +'-Nآمار')
                        },
                        'افزودن منبع، الگو، رده و..': function() {//NBtn03
                                $(".textbox").val($(".textbox").val() +'-Nمنبع')
                        },
                        'اصلاح ساختار مقاله': function() {//NBtn04
                                $(".textbox").val($(".textbox").val() +'-Nساختار')
                        },
                        'ترجمه': function() {//NBtn05
                                $(".textbox").val($(".textbox").val() +'-Nترجمه')
                        },
                        'رفع املاء': function() {//NBtn06
                                $(".textbox").val($(".textbox").val() +'-Nاملا')
                        },
                        'رفع گرامر': function() {//NBtn07
                                $(".textbox").val($(".textbox").val() +'-Nگرامر')
                        },
                        'اصلاح پیوند یا سینتکس ویکی': function() {//NBtn08
                                $(".textbox").val($(".textbox").val() +'-Nسینتکس')
                        },
                        'اصلاح یا افزودن سجاوندی': function() {//NBtn09
                                $(".textbox").val($(".textbox").val() +'-Nسجاوندی')
                        },
                        'ابزار خودکار': function() {//NBtn10
                                $(".textbox").val($(".textbox").val() +'-Nابزارها')
                        },
                        'حذف متن نادرست یا نامناسب': function() {//NBtn11
                                $(".textbox").val($(".textbox").val() +'-Nحذف_نامناسب')
                        },
                        'واگردانی یا خنثی‌‌سازی درست یک خرابکاری توسط کاربر دیگر': function() {//NBtn12
                                $(".textbox").val($(".textbox").val() +'-Nواگردانی')
                        },
                        'ویرایش موثر': function() {//NBtn13
                                $(".textbox").val($(".textbox").val() +'-Nموثر')
                        },
                        'پاسخ به بحث': function() {//NBtn14
                                $(".textbox").val($(".textbox").val() +'-Nپاسخ')
                        },
                        'ویرایش نامهم یا سایر موردها': function() {//NBtn15
                                $(".textbox").val($(".textbox").val() +'-Nسایر')
                        },
                        'ذخیره': function() {
                                addScore( diffId,$(".textbox").val())
                                //mw.notify('ذخیره شد');
                                $(".textbox").val('');
                                /*
                                if (second!=='diff'){ 
                                    var casenum = find_loc(mytarget)
                                    $diffDialog.dialog('close')
                                    otherCase(casenum,true)// مورد پایین
                                }*/
                        },
                        '↑ مورد بالا': function() {
                            var casenum = find_loc(mytarget)
                            $diffDialog.dialog('close')
                            //clicked_item (mylist[casenum-1],2)
                            otherCase(casenum,false)// مورد بالا
                        },
                        'مورد پایین ↓': function() {
                            var casenum = find_loc(mytarget)
                            $diffDialog.dialog('close')
                            otherCase(casenum,true)// مورد پایین
                        }
                    };
                    if (second=='diff'){
                        newheight=150
                    }                        
                    $diffDialog = $('<div id="QPwindow2" style="text-align:right;">').append($diffContent1).append($diffContent).dialog({
                        width: newwidth,
                        height: newheight,
                        draggable: false,
                        resizable: true,
                        resizeStop: function(event, ui) {
                            newheight = $(this).outerHeight()
                        },
                        buttons: buttons
                    });
                    $diffDialog.dialog('widget').css({
                        position: 'fixed',
                        bottom: '0',
                        top: 'auto'
                    });
                    //combo
                    try{
                        warning=QuickRCDiff["prefs"]["warnings"]
                    }
                    catch(err) {
                        warning=warnings
                    }
                    $(":button:contains('هشدار به کاربر')").before(ComboBox1);
                    for (var i in warning){
                    var z = document.createElement("option");
                      z.setAttribute("value", warning[i]);
                      var t = document.createTextNode(i);
                      z.appendChild(t);
                      document.getElementById("myComboBox").append(z);
                    }
                    //var e = document.getElementById("myComboBox");
                    // combo
                    $(":button:contains('↑ مورد بالا')").before(textBox);
                    //$(":button:contains('مورد پایین ↓')");
                    $(":button:contains('برچسب برای ویرایش بد:')").before('</br></br><hr><b>لطفاً به این ویرایش به صورت کاملاً ایزوله و فارغ از دسترسی‌های کاربر (آی‌پی، کاربر گشت‌زن یا دیوانسالار)، سابقه مشارکت‌ها، سایر ویرایش‌های تاریخچهٔ صفحه، برچسب بزنید. (برای اطلاعات بیشتر [[پال:ابز]])</b><br>');
                    $(":button:contains('برچسب برای ویرایش درست:')").before('<br>');
                    $(":button:contains('ذخیره')").before('<br>');
                    var warningBtn = $(":button:contains('ارسال هشدار به کاربر')").prop('title', 'درج هشدار انتخاب شده در بحث کاربر (Shift + A)').prop('class', 'warningButton');
                    var patrolBtn = $(":button:contains('برچسب گشت')").prop('title', 'گشت‌زدن (Shift + P یا Shift + G)').prop('class', 'patrolButton');
                    var revertBtn2 = $(":button:contains('واگردانی')").prop('title', 'واگردانی همهٔ ویرایش‌های اخیر این کاربر در این صفحه (Shift + R یا Shift + B)').prop('class', 'revertButton');
                    var revertwarnBtn = $(":button:contains('واگردانی با ارسال پیام')").prop('title', 'واگردانی همهٔ ویرایش‌های اخیر این کاربر در این صفحه + ارسال هشدار انتخاب شده ').prop('class', 'revertButton');
                    var copyBtn = $(":button:contains('بررسی کپی‌کاری ®')").prop('title', 'آیا متن اضافه شده کپی‌کاری‌ست؟').prop('class', 'copyButton');
                    var thanksBtn = $(":button:contains('♥')").prop('title', 'تشکر').prop('class', 'thankButton');
                    var undowarnBtn = $(":button:contains('↷ خنثی‌سازی  با ارسال پیام')").prop('title', 'برگردانی به یک نسخهٔ قبل‌تر + ارسال هشدار').prop('class', 'undoButton');
                    var undoBtn = $(":button:contains('↷ خنثی‌سازی')").prop('title', 'برگردانی این نسخه به یک نسخهٔ قبل‌تر').prop('class', 'undoButton');
                    var pendingBtn = $(":button:contains('ویرایش‌های در حال انتظار')").prop('title', 'با کلیک بر روی این دکمه سایر ویرایش‌های در حال انتظار این مقاله را بازبینی کنید').prop('class', 'pendingButton');
                    pendingBtn.prop("disabled", true).prop('title', '');
                    
                    var revertBtn = $(":button:contains('برچسب برای ویرایش بد:')").prop('title', 'ویرایش مشکل دارد اگر من بودم آن را حذف یا واگردانی یا خنثی‌سازی می‌کردم یا درخواست حذف می‌دادم').prop('class', 'revertBtn').css('color', 'red');

                    var RBtn01 = $(":button:contains('افزودن متن نامناسب')").prop('title', 'افزودن متنی که تقریباً گرامرش درست است ولی مفهومش مناسب نیست مانند محتوی جانبدارانه، القاب، منبع ضعیف داشته‌باشد یا مفهوم مقاله را با مشکل مواجه می‌کند').prop('class', 'RBtn01');
                    var RBtn02 = $(":button:contains('تبلیغ')").prop('title', 'تبلیغ، اسپمینگ پیوند اینترنتی، شماره تلفن شخصی و… منظور تبلیغ آشکار است. اگر کاربر متنی بیافزاید که ظاهر درست داشته باشد ولی منبع نامعتبر باشد شامل تبلیغ نمی‌شود. تبلیغ یکی افزودن متن کاملا تبلیغاتی یا افزودن بی‌دلیل پیوند به بیرون با منبع به متنی که در آن منبع نیست').prop('class', 'RBtn02');
                    var RBtn03 = $(":button:contains('کپی‌کاری')").prop('title', 'کپی‌کاری با منبع یا بدون منبع (منبع معتبر یا نامعتبر)').prop('class', 'RBtn03');
                    var RBtn04 = $(":button:contains('عبارت نامفهوم')").prop('title', 'عبارت نامفهوم، چرندیات، ایموجی و…').prop('class', 'RBtn04');
                    var RBtn05 = $(":button:contains('فحاشی، توهین')").prop('title', 'فحاشی، توهین یا افشای اطلاعات شخصی').prop('class', 'RBtn05');
                    var RBtn07 = $(":button:contains('خراب‌کردن پیوند یا سینکس ویکی')").prop('title', 'خراب کردن نحوهٔ نمایش مقاله از نظر سینتکس ویکی (خراب کردن سینتکس ویکی) یا خرابکاری در پیوند داخلی').prop('class', 'RBtn07');
                    var RBtn08 = $(":button:contains('دستکاری اعداد و آمار، پیوند')").prop('title', 'دستکاری آمار و اعداد یا پیوندهای داخلی (به نیت تغییر عدد) به نحوی که جانبدارانه باشد یا نادرست باشد یا با منبع تطبیق نداشته باشد (خرابکاری باشد) و حتما باید عدد و ارقام در ویرایش تغییر کرده باشند.').prop('class', 'RBtn08');
                    var RBtn09 = $(":button:contains('خراب‌کردن گرامر یا املاء')").prop('title', 'خراب کردن گرامر یا ساختار متن').prop('class', 'RBtn09');
                    var RBtn10 = $(":button:contains('حذف نادرست مطلب')").prop('title', 'حذف متن، تصویر، رده، منبع یا الگویی که درست است. ممکن است متن منبع داشته باشد یا منبع نداشته').prop('class', 'RBtn10');
                    var RBtn11 = $(":button:contains('خرابکاری عمدی')").prop('title', 'خرابکاری عمدی صورت گرفته و کاربر حسن نیت ندارد و بهتر است با به وی هشدار داده شود یا بسته شود.').prop('class', 'RBtn11');
                    var RBtn12 = $(":button:contains('کاربر تحریم')").prop('title', 'کاربر تحریم یا بسته شده که باید واگردانی شود.').prop('class', 'RBtn12');
                    var RBtn13 = $(":button:contains('سایر دلایل')").prop('title', 'سایر موارد در بالا نیست.').prop('class', 'RBtn13');
                    
                    var normalBtn = $(":button:contains('برچسب برای ویرایش درست:')").prop('title', 'ویرایش مشکلی ندارد و اگر من بودم آن را رها می‌کردم و واگردانی یا خنثی‌سازی نمی‌کردم.').prop('class', 'normalBtn').css('color', 'green');

                    var NBtn01 = $(":button:contains('افزودن یا اصلاح متن درست')").prop('title', 'افزودن یا اصلاح متن درست و مناسب (با منبع یا بدون منبع)').prop('class', 'NBtn01');
                    var NBtn02 = $(":button:contains('به‌روزکردن آمار و ارقام')").prop('title', 'به‌روز کردن آمار و ارقام جعبه یا متن  یا تاریخ‌های تولد و سایر تاریخ‌ها. حتما باید عدد و ارقام در ویرایش تغییر کرده باشند.').prop('class', 'NBtn02');
                    var NBtn03 = $(":button:contains('افزودن منبع، الگو، رده و..')").prop('title', 'افزودن یادکرد یا منبع، تصویر مناسب، الگو، رده یا جدول مناسب').prop('class', 'NBtn03');
                    var NBtn04 = $(":button:contains('اصلاح ساختار مقاله')").prop('title', 'اصلاح ساختار مقاله یا جابجایی زیربخش‌ها یا مرتب کردن مقاله یا متن مثلا زیربخش یا جمله یا پاراگراف تاریخچه را از ابتدای مقاله به وسط مقاله یا متن ببرد. معمولا جابجایی منظور است نه فقط افزودن یا حذف کامل یک بخش یا متن').prop('class', 'NBtn04');
                    var NBtn05 = $(":button:contains('ترجمه')").prop('title', 'جایگزینی نویسه یا عدد لاتین (حتما نویسه لاتین در ویرایش قبلی باشد) با متن فارسی به قصد ترجمه متن، عدد، پیوند و...توجه: با گسترش مقاله توسط ترجمه اشتباه نشود').prop('class', 'NBtn05');
                    var NBtn06 = $(":button:contains('رفع املاء')").prop('title', 'رفع غلط املایی (زمانی که کلمه در ویرایش قبل غلط املایی داشته)').prop('class', 'NBtn06');
                    var NBtn07 = $(":button:contains('رفع گرامر')").prop('title', 'رفع مشکل انشایی و گرامری').prop('class', 'NBtn07');
                    var NBtn08 = $(":button:contains('اصلاح یا افزودن سجاوندی')").prop('title', 'اصلاح یا افزودن سجاوندی یا فاصله یا نویسه‌های پنهان').prop('class', 'NBtn08');
                    var NBtn09 = $(":button:contains('اصلاح پیوند یا سینتکس ویکی')").prop('title', 'اصلاح سینتکس ویکی یا ویکی‌سازی یا اصلاح پیوند داخلی').prop('class', 'NBtn09');
                    var NBtn10 = $(":button:contains('ابزار خودکار')").prop('title', 'ابزارهای خودکار (مانند ربات، جاوااسکریپت مانند ابرابزار، پال:وخ و…)').prop('class', 'NBtn10');
                    var NBtn11 = $(":button:contains('حذف متن نادرست یا نامناسب')").prop('title', 'حذف متن، تصویر یا الگو یا رده نادرست یا نامناسب').prop('class', 'NBtn11');
                    var NBtn12 = $(":button:contains('واگردانی یا خنثی‌‌سازی درست یک خرابکاری توسط کاربر دیگر')").prop('title', 'واگردانی یا خنثی‌سازی یک خرابکاری توسط کاربر دیگر که درست بوده و مقاله را به همین صورت رها می‌کنیم چون محصول نهایی بهتر از گذشته است. توجه: باید در خلاصه ویرایش عبارت واگردانی یا خنثی‌سازی باشد').prop('class', 'NBtn12');
                    var NBtn13 = $(":button:contains('ویرایش موثر')").prop('title', 'ویرایش به ارتقا مقاله بسیار کمک کرده و کاربر شایسته تقدیر یا نشان است. معمولا برای ویرایش‌های استاندارد یا ترجمه‌های خوب و منبع‌دار این برچسب را می‌زنیم.').prop('class', 'NBtn13');
                    var NBtn14 = $(":button:contains('پاسخ به بحث')").prop('title', 'پاسخ به بحث، که مشکل فحاشی و تمسخر و... نداشته باشد و برای آن پاسخ کاربر تذکر نگیرد یا بسته نشود! یا انصراف از بحث و حذف متن توسط خود کاربر').prop('class', 'NBtn14');
                    var NBtn15 = $(":button:contains('ویرایش نامهم یا سایر موردها')").prop('title', 'سایر مواردی که در بالا نیست یا ویرایش نامهم یعنی ویرایشی که بود و نبودش زیاد تفاوت مفهومی و ظاهری برای متن و اسلامیکال ندارد و از کنارش می‌گذریم!').prop('class', 'NBtn15');

                    var SaveBtn10 = $(":button:contains('ذخیره')").prop('title', 'ذخیره موارد انتخاب شده').prop('class', 'SaveBtn10');
                    
                    nextBtn = $(":button:contains('مورد پایین ↓')").prop('title', '(کلید ↓) مورد پایین').prop('class', 'nextBtn');
                    beforeBtn = $(":button:contains('↑ مورد بالا')").prop('title', 'مورد بالا (کلید ↑)').prop('class', 'beforeBtn');
                    $(".RBtn01").hide()
                    $(".RBtn02").hide()
                    $(".RBtn03").hide()
                    $(".RBtn04").hide()
                    $(".RBtn05").hide()
                    $(".RBtn06").hide()
                    $(".RBtn07").hide()
                    $(".RBtn08").hide()
                    $(".RBtn09").hide()
                    $(".RBtn10").hide()
                    $(".RBtn11").hide()
                    $(".RBtn12").hide()
                    $(".RBtn13").hide()
                    
                    $(".NBtn01").hide()
                    $(".NBtn02").hide()
                    $(".NBtn03").hide()
                    $(".NBtn04").hide()
                    $(".NBtn05").hide()
                    $(".NBtn06").hide()
                    $(".NBtn07").hide()
                    $(".NBtn08").hide()
                    $(".NBtn09").hide()
                    $(".NBtn10").hide()
                    $(".NBtn11").hide()
                    $(".NBtn12").hide()
                    $(".NBtn13").hide()
                    $(".NBtn14").hide()
                    $(".NBtn15").hide()
                    if (second=='diff'){
                        diffId = mytarget.match(/[&?]diff=(\d+)/);
                        //alert(diffId)
                        if (!diffId){
                            if (mytarget.match(/[&?]diff=([^&]+)/)[1]!=='next'){
                                diffId=mytarget.match(/[&?]oldid=(\d+)/)[1]
                            }else{
                                alert('نشانی اینترنتی مشکل داردو نباید next در مقابل diff باشد. از طریق تفاوت ویرایشی در تاریخچه اقدام کنید.');
                                $diffDialog.dialog('close')
                                return;
                            }
                        }else{
                            diffId=diffId[0]
                        }
                        nextBtn.hide()
                        beforeBtn.hide()
                        $diffDialog.dialog('isOpen') || $diffDialog.dialog('open').dialog('widget').css({
                                'top': 'auto'
                            }).css('float', 'left');
                    }
                    try {
                        nextDirection= QuickRCDiff["prefs"]["goUp"]//true > go up
                    }
                    catch(err) {
                        nextDirection= false //false > go down
                    }
                    if ($(mytarget).find('.mw-fr-reviewlink').text()) {
                        alert('این مقاله دارای محافظت همراه با بازبینی‌ست. لطفا به کمک دکمهٔ «ویرایش‌های در حال انتظار» آنها را بازبینی کنید.');
                        pendingBtn.prop("disabled", false).prop('title', 'با کلیک بر روی این دکمه سایر ویرایش‌های در حال انتظار این مقاله را بازبینی کنید');
                    }
                    var self = mytarget,
                        diffHref = $(mytarget).find('a[href*=oldid]')
                        .filter(function() {
                            return !$(mytarget)
                                .hasClass('WLM-icon'); // WLM collision fix
                        })
                        .prop('href'),
                        unpatrolled = $(mytarget).find('.unpatrolled').length;

                    diffTitle = $(mytarget).find('.mw-changeslist-title').text();
                    historys=false
                    if (!diffHref){
                        var casenum = find_loc(mytarget)
                        $diffDialog.dialog('close')
                        //otherCase(casenum,true)// مورد پایین
                        mw.notify('موردی را که انتخاب کردید تفاوت ویرایشی ندارد یا صفحهٔ جدید است.');
                        return;
                    }
                    if (!diffTitle){
                        diffTitle=decodeURIComponent(diffHref.match(/title\=([^&\=]+)/g)[0].replace('title=', '') )
                        historys=true
                    }
                    //alert(diffHref)
                    var param = {
                        action: 'query',
                        prop: 'revisions',
                        titles: diffTitle,
                        rvlimit: 50,
                        rvprop: 'user|comment'
                    };
                    var api = new mw.Api();
                    api.get(param).done(function(res1) {
                        if (res1 === null) {
                            $diffContent.html('در زمان دریافت اطلاعات خطایی رخ داد. دوباره تلاش کنید!');
                            return false;
                        }

                        if ($(mytarget).find('.mw-changeslist-line-inner').text().match(/   (.*?) بحث مشارکت‌ها /g)) {
                            username = $(mytarget).find('.mw-changeslist-line-inner').text().match(/   (.*?) بحث مشارکت‌ها /g)[0].replace('بحث', '').replace('مشارکت‌ها', '').trim();
                            username = username.replace('/\u200F/g', '').replace('\u200F', '')
                        }else{
                            if ($(mytarget).find('.mw-changeslist-line-inner').text().match(/   (.*?) بحث /g)) {// It is IP
                                username = $(mytarget).find('.mw-changeslist-line-inner').text().match(/   (.*?) بحث /g)[0].replace('بحث', '').trim();
                            }else{
                                username=$(mytarget).find('.history-user').text().replace('بحث', '').replace('مشارکت‌ها', '').replace('بستن', '').trim()
                            }
                        }
                        if (username.split('   ').length>1){
                                username=username.split('   ')[1]
                        }
                        if (username.split('  ').length>1){
                                username=username.split('  ')[1]
                        }
                        username=username.replace('بحث', '').replace('مشارکت‌ها', '').trim()
                        //alert (username)
                        
                        if (self == lastRequset) {
                            return;
                        }
                        $diffContent.html($.createSpinner());
                        var param = {
                            action: 'query',
                            prop: 'revisions',
                        };
                        var isWikidata = false;
                        //alert(diffHref)
                        if (diffHref) {
                            if (historys) {
                                var childern
                                $("#pagehistory").children().each(function() {// check is the top item of history?
                                    var $this = $(this);
                                    childern=$this.prop('outerHTML')
                                    return false
                                });
                                if ($(mytarget).prop('outerHTML')==childern){// top item of history
                                   diffId=diffHref.match(/[&?]diff=(\d+)/)[1]
                                   diffId2 = diffId;
                                }else{// other imtems of history
                                   diffId=diffHref.match(/[&?]oldid=(\d+)/)[1]
                                   diffId2 = diffId;
                                }
                             }else{
                                
                                //diffId = diffHref.match(/[&?]diff=(\d+)&oldid=(\d+)/)[1];
                                //diffId2 = diffHref.match(/[&?]diff=(\d+)&oldid=(\d+)/)[2];
                                diffId=diffHref.match(/[&?]diff=(\d+)/)[1]; 
                                diffId2=diffHref.match(/[&?]oldid=(\d+)/)[1]
                            }
                            isWikidata = diffHref.match(/www\.wikidata\.org/);
                            param.rvprop = 'timestamp|comment';
                            param.rvdiffto = 'prev';
                            param.revids = diffId;
                        } else {
                            diffId = 0;
                            param.rvprop = 'content|comment';
                            param.titles = diffTitle;
                        }
                        lastComment = res1.query.pages[Object.keys(res1.query.pages)[0]].revisions[0]["comment"];
                        if (lastComment === null) {
                            $diffContent.html('در زمان دریافت اطلاعات خطایی رخ داد. دوباره تلاش کنید!');
                            return false;
                        }
                        if (lastComment.match(/\[\[Special\:Contributions\/(.*?)\|/)) {
                            lastRevertedUser = lastComment.match(/\[\[Special\:Contributions\/(.*?)\|/)[1]
                        } else {
                            lastRevertedUser = ''
                            lastComment = ''
                        }
                        if (lastComment.match(/(واگردان|بازگردان|برگردان|خنثی)/g) && lastRevertedUser === username) {
                            lastRevert = true
                        } else {
                            lastRevert = false
                        }

                        var api = isWikidata ? new mw.ForeignApi('https://www.wikidata.org/w/api.php') : new mw.Api();

                        api.get(param).done(function(res) {
                            var backColor = ''
                            var s1 = true
                            
                            $(self).addClass('changeslist-entry-active');
                            if (lastRequset) {
                                $(lastRequset).addClass('changeslist-entry-visited');
                                $(lastRequset).removeClass('changeslist-entry-active');
                            }
                            lastRequset = self;
                            if (res === null) {
                                $diffContent.html('در زمان دریافت اطلاعات خطایی رخ داد. دوباره تلاش کنید!');
                                return false;
                            }
                            var revision = res.query.pages[Object.keys(res.query.pages)[0]].revisions[0];
                            var diffString = diffHref ? revision.diff["*"] : revision['*'];
                            var editSummary=revision['comment']
                            if (diffString === null) {
                                $diffContent.html('در زمان دریافت اطلاعات خطایی رخ داد. دوباره تلاش کنید!');
                                return false;
                            }
                            var trTemp = $('<tr><td class="diff-marker">&nbsp;</td><td class="diff-context"></td></tr>');
                            var newTable = $('<table class="diff"></table>')
                                .html('<colgroup><col class="diff-marker"><col class="diff-content"><col class="diff-marker"><col class="diff-content"></colgroup>');
                            var topTable = $('<table class="diff"></table>')
                                .html('<colgroup><col class="diff-marker"><col class="diff-content"><col class="diff-marker"><col class="diff-content"></colgroup>');
                            var p1 = '"//fa.wikipedia.org/w/index.php?title=' + diffTitle + '&diff=prev&oldid=' + diffId2 + '"'
                            var p2 = '"//fa.wikipedia.org/w/index.php?title=' + diffTitle + '&diff=next&oldid=' + diffId + '"'
                            if (!$(mytarget).find('.mw-rollback-link').text()) { // واگردانی نباشد
                                if (!diffHref) {
                                    //console.log('New')
                                    //ویرایش نو
                                    var p1 = "'javascript: void(0)' class='disabled'"
                                }
                            } else {
                                //console.log('Last')
                                //ویرایش آخر
                                var p2 = "'javascript: void(0)' class='disabled'"
                            }
                            topTable.append($('<tr><td colspan="4" align="center" class="diff-context2"><a href=' + p1 + ' target="_blank">→ تفاوت ویرایش قدیمی‌تر</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="//fa.wikipedia.org/w/index.php?title=' + diffTitle + '&&action=history" target="_blank">[تاریخچه]</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=' + p2 + ' target="_blank">تفاوت ویرایش جدیدتر ←</a></td></tr>'));
                            if ((lastRevert||!unpatrolled)&& !historys) {
                                var checkmarks=' ✔ '
                            }else{
                                var checkmarks=''
                            }
                            if (editSummary.replace(/\/\*(.*?)\*\//g,'').trim()){
                                topTable.append($('<tr><td colspan="4" align="center" class="diff-lineno"><p style="color:black"><span id="CheckMark">'+checkmarks+'</span>&nbsp;ویرایش شده توسط&nbsp;&nbsp;&nbsp;<a href="//fa.wikipedia.org/wiki/کاربر:' + username + '" target="_blank">' + username + '</a>&nbsp;<a href="//fa.wikipedia.org/wiki/بحث_کاربر:' + username + '" target="_blank">(بحث)</a>&nbsp;&nbsp;(خلاصه ویرایش:&nbsp;'+editSummary.replace(/\/\*(.*?)\*\//g,'').trim()+')</p></td></tr>'));
                            }else{
                                topTable.append($('<tr><td colspan="4" align="center" class="diff-lineno"><p style="color:black"><span id="CheckMark">'+checkmarks+'</span>&nbsp;ویرایش شده توسط&nbsp;&nbsp;&nbsp;<a href="//fa.wikipedia.org/wiki/کاربر:' + username + '" target="_blank">' + username + '</a>&nbsp;<a href="//fa.wikipedia.org/wiki/بحث_کاربر:' + username + '" target="_blank">(بحث)</a></p></td></tr>'));

                            }
                            if (!$(mytarget).find('.mw-rollback-link').text()) {
                                if (diffHref) {
                                    if (lastRevert) {
                                        lastRevert = false
                                        if (!unpatrolled) {
                                            topTable.append($('<tr><td colspan="2" class="diff-marker2">&nbsp;</td><td colspan="2" align="center" class="diff-lineno"><p style="color:red;">در آخرین نسخهٔ این صفحه، ویرایش‌های کاربر:' + username + ' واگردانی یا خنثی‌سازی شده‌است و </p><p style="color:MediumSeaGreen;">گشت هم خورده‌است</p><p style="color:red;"> در نتیجه دکمهٔ «مورد پایین» یا «مورد بالا» را بزنید!</p></td></tr>'));
                                            backColor = '#edfbd3'
                                            s1 = false
                                        } else {
                                            topTable.append($('<tr><td colspan="2" class="diff-marker2">&nbsp;</td><td colspan="2" align="center" class="diff-lineno"><p style="color:red;">در آخرین نسخهٔ این صفحه، ویرایش‌های کاربر:' + username + ' واگردانی یا خنثی‌سازی شده‌است؛ در نتیجه می‌توانید این نسخه را </p><p style="color:MediumSeaGreen;">برچسب گشت بزنید!</p></td></tr>'));
                                            backColor = '#edfbd3'
                                            s1 = false
                                        }

                                    } else {
                                        if (unpatrolled) {
                                            topTable.append($('<tr><td colspan="2" class="diff-marker2">&nbsp;</td><td colspan="2" align="center" class="diff-lineno"><p style="color:#3ec6d8;">این ویرایش آخرین نسخه نیست!</p></td></tr>'));
                                        }
                                    }
                                }
                            }
                            if ((!unpatrolled && backColor !== '#edfbd3')&& !historys) {
                                topTable.append($('<tr><td colspan="4" align="center" class="diff-lineno"><p style="color:MediumSeaGreen;">این نسخه برچسب گشت‌خورده!</p></td></tr>'));
                                backColor = '#edfbd3' //سبز
                                s1 = false
                            } else {
                                if ($(mytarget).find('.mw-changeslist-line-inner').text().match(/ویرایش به وسیلهٔ ابرابزار/g)) {
                                    topTable.append($('<tr><td colspan="2" class="diff-marker2">&nbsp;</td><td colspan="2" align="center" class="diff-lineno"><p style="color:#e9b2f7;">خلاصه ویرایش: ویرایش خودکار به کمک ابرابزار</p></td></tr>'));
                                    backColor = '#f2f6ff' //آبی کم‌رنگ
                                    s1 = false
                                }
                                if ($(mytarget).find('.mw-changeslist-line-inner').text().match(/‏جایگزینی با اشتباه‌یاب:/g)) {
                                    topTable.append($('<tr><td colspan="2" class="diff-marker2">&nbsp;</td><td colspan="2" align="center" class="diff-lineno"><p style="color:#e9b2f7;">خلاصه ویرایش: ویرایش نیمه خودکار به کمک اشتباه‌یاب</p></td></tr>'));
                                }
                            }
                            if (s1) {
                                if ($(mytarget)[0]['outerHTML'].search(/mw\-changeslist\-damaging\-maybebad/i) > 0) {
                                    backColor = '#fcfad1' // نارنجی کم رنگ
                                    //console.log('O')
                                } else {
                                    if ($(mytarget)[0]['outerHTML'].search(/mw\-changeslist\-damaging\-verylikelybad/i) > 0) {
                                        backColor = '#f7afaf' // قرمز پررنگ
                                        //console.log('R')
                                    } else {
                                        if ($(mytarget)[0]['outerHTML'].search(/mw\-changeslist\-damaging\-likelygood/i) > 0) {
                                            backColor = '#f2f2f2' // سفید
                                            //console.log('W1')
                                        }
                                    }
                                }
                            }
                            if (backColor == '#fcfad1') {
                                topTable.append($('<tr><td colspan="4" align="center" class="diff-lineno"><p style="color:red">این ویرایش توسط سامانه ORES (سامانه ارزشیابی ویرایش) به عنوان «مشکوک به خرابکاری» شناخته شده‌است</p></td></tr>'));
                            }
                            if (backColor == '#f7afaf') {
                                topTable.append($('<tr><td colspan="4" align="center" class="diff-lineno"><p style="color:#b70c0c">این ویرایش توسط سامانه ORES (سامانه ارزشیابی ویرایش) به عنوان به «خرابکاری» شناخته شده‌است</p></td></tr>'));
                            }
                            if (!diffHref) {
                                newTable.append($('<tr><td colspan="4" class="diff-lineno">صفحهٔ جدید</td></tr>'));
                                var rows = diffString.split('\n');
                                for (var tr in rows) {
                                    var curTr = trTemp.clone();
                                    curTr.find('.diff-context').first().text(rows[tr]);
                                    newTable.append(curTr);
                                }
                            } else {
                                newTable.append(diffString);
                            }
                            $diffDialog.dialog('option', 'title', '<i><a href="//fa.wikipedia.org/wiki/' + diffTitle + '" target="_blank">' + diffTitle + '</a></i>');
                            $diffContent1.html(topTable);
                            $diffContent.html(newTable);
                            if (!backColor) {
                                backColor = '#f2f2f2' //سفید
                                console.log('W2')
                            }
                            $diffDialog.css({
                                'background-color': backColor
                            })
                            $diffDialog.dialog('isOpen') || $diffDialog.dialog('open').dialog('widget').css({
                                //'height': newheight,
                                'top': 'auto'
                            }).css('float', 'left');
                            backColor = ''
                        })
                      });
                };
            }
            mw.hook('wikipage.content').add(qRcDiffHandler);
        })();
    });
});