مستخدم:إسلام/vector.js

يرجى فتح الوصلات الداخلية للمقالات المتعلّقة بموضوع المقالة.
هذه الصفحة لم تصنف بعد. أضف تصنيفًا لها لكي تظهر في قائمة الصفحات المتعلقة بها.
من ويكيبيديا، الموسوعة الحرة

ملاحظة: بعد الحفظ، قد يلزمك إفراغ الكاش لرؤية التغييرات.

importScript('مستخدم:Salam32/twinkle.js');
importScript ("مستخدم:ASammour/cosmetics.js");
importScript ("مستخدم:ASammour/conflict-revisions.js");

/**هل الصفحة ضمن نطاق مقالات؟ */
mw.loader.using('mediawiki.storage').then(function () {
	// opt out for privacy reasons due to errors in scripts. [[metawiki:User:Jon_(WMF)/Edit_to_user_or_gadget_script|more info]]
  mw.storage.session.set( 'client-error-opt-out', '1' );
});

if (wgNamespaceNumber === 0 && wgAction === "view") {

    /**قائمة القوالب المراد ترتيبها */
    var templates = [];

    /**يمكن تغيير ترتيب الأسطر التالية لتغيير ترتيب القوالب */
    /*templates.push(".sisterlinks");
    templates.push(".navbox");
    templates.push(".auth-control");
    templates.push(".medic-box");
    templates.push(".chem-box");
    templates.push(".taxon-box");
    templates.push(".bandeau-portail");
    templates.push(".stub");
    templates.push("#fa-box, #ga-box");*/


    for (var i = 0; i < templates.length; i++) {
        /**جلب القوالب بعد المراجع */
        if ($('div[class^="reflist"]')[0]) {
            sortTemp(true, templates[i]);
        }
        else {
            sortTemp(false, templates[i]);
        }
    }

    function sortTemp(hasRef, temp) {

        var selector;
        (hasRef ? selector = $("div[class^= 'reflist']").nextAll(temp) : selector = $(temp));
        selector.insertBefore("#catlinks");
    }

    /**
     * ترتيب التصنيفات أبجديا
     */
    var mylist = $('#mw-normal-catlinks ul');
    var listitems = mylist.children('li').get();
    var sameTitleCats = [];
    var otherCats = [];

    $.each(listitems, function () {
        if (mw.config.get('wgPageName').includes($(this).find("a").text())) {
            sameTitleCats.push($(this));
        }
        else {
            otherCats.push($(this));
        }
    });

    otherCats.sort(function (a, b) {
        return $(a).text().toUpperCase().localeCompare($(b).text().toUpperCase());
    })

    mylist.empty().append(sameTitleCats);
    mylist.append(otherCats);
}

/*التحقق إذا ما كان المستخدم قد قام بأي تعديل على الصفحة*/
/*التحقق إذا كان المستخدم يعدل في النطاق الرئيسي*/
if (mw.config.get( 'wgNamespaceNumber' ) === 0
	&& wgAction === "edit"){
	/*هل غير المستخدم أي شيء في نص المقالة؟*/
   $('#wpTextbox1').change(function() { 
   	
   	/*عند الضغط على زر الحفظ، أو المعاينة ستتم العمليات*/
	$('#wpSave,#wpPreview').click (function(){
		run ();	
	});
   });
}

/*الدالة الرئيسية*/

function run (){
	var content = $('#wpTextbox1').val();

	/*التحقق إذا كان المستخدم لا يعدل في التحويلات وصفحات التوضيح*/
	if (!content.match (/\#تحويل/g) 
	&& !content.match (/\#REDIRECT/g)
	&& !content.match (/\{\{توضيح\}\}/g)
	&& !wgTitle.match (/توضيح/g)){
	content = commaFix (content);
	content = arDate (content);
	//content = tagging (content);
	//content = decodeUrl (content);
	content = sorting (content);
	content = replacing (content);
	$('#wpTextbox1').val(content);
	}
}


/*تصحيح الفاصلة الأجنبية*/
function commaFix (content){
	var commaPattern = content.match(/.{3},.{3}/g);
	if (commaPattern) {
		for (var i = 0; i < commaPattern.length; i++) {
			 var is = new RegExp(".*[ا-ي].*");
			 var num = new RegExp(".*\\d+.*");
			 /*التحقق أن الفاصلة الأجنبية موجودة داخل نص عربي*/
			 if (is.test(commaPattern[i]) && !num.test(commaPattern[i])) {
				content = content.replace(commaPattern[i],commaPattern[i].replace(/ ,/g, ",").replace(/,/g, ", ").replace (/\s{2,}/g," "));
	            content = content.replace(commaPattern[i], commaPattern[i].replace(" , ", "، "));
	            content = content.replace(commaPattern[i], commaPattern[i].replace(" ,", "،"));
	            content = content.replace(commaPattern[i], commaPattern[i].replace(", ", "، "));
	            content = content.replace(" , ", ", ");
	            content = content.replace(" ، ", "، ");
                content = fixSpaceComma (content);
			 }
		}
	}
	return content;
}

/**
 * دالة لتعريب التاريخ المنقول من الويكيات الأجنبية
 * على سبيل المثال
 * يناير 26,
 * ستصبح
 * 26 يناير
 */

function arDate (content){
	var arDate = content.match(/(يناير|فبراير|مارس|أبريل|إبريل|مايو|يونيو|يوليو|أغسطس|سبتمبر|أكتوبر|نوفمبر|ديسمبر) \d{1,2},/g );
	if (arDate) {
		for (var i = 0; i < arDate.length; i++) {
			content = content.replace (arDate[0], arDate[0].match(/\d+/g).map(Number)+" "+arDate[0].replace (/\d{1,2},/g,"").trim()); 
		}
	}
	return content;
}

function fixSpaceComma (content){
	var commaPattern = content.match(/.{3}،.{3}/g);
	if (commaPattern) {
		for (var i = 0; i < commaPattern.length; i++) {
			 var num = new RegExp(".*\\d+.*");
			 if (!num.test(commaPattern[i])) {
				content = content.replace(commaPattern[i],commaPattern[i].replace(/ ،/g, "،").replace(/،/g, "، ").replace (/\s{2,}/g," "));
			 }
		}
	}
	return content;
}

/*جلب الشهر والتاريخ لاستخدامهما في قوالب الصيانة*/
function getMonthYear (){
	var months = ["يناير", "فبراير", "مارس", "إبريل", "مايو", "يونيو",
              "يوليو", "أغسطس", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر"];
	var date = new Date();
	var currentDate = months[date.getMonth()]+" "+date.getFullYear();
	return currentDate;
}


/*وسم المقالات*/
function tagging (content){
	/*وسم المقالات التي لا تحتوي على شريط بوابات*/
	if (!content.includes ("{{شريط بوابات") && !content.includes ("مقالات بحاجة لشريط بوابات")
	&& !$("#firstHeading").text().includes ("تعديل قسم")){
		content  = content + "\n[[تصنيف:مقالات بحاجة لشريط بوابات]]\n";
	}
	

	/*وسم المقالات التي لا تحتوي على وصلات داخلية*/
	if (!content.includes ("\[\\[") && !content.includes ("{{نهاية مسدودة")
	&& !$("#firstHeading").text().includes ("تعديل قسم")){
		content  = "{{نهاية مسدودة|"+getMonthYear()+"}}\n"+content;
	}
	
	/*وسم المقالات التي لا تحتوي تصانيف*/
	if (!content.includes ("\[\\[تصنيف:") && !content.includes ("{{غير مصنفة")
	&& !$("#firstHeading").text().includes ("تعديل قسم")){
		content = content.replace ("[[تصنيف:","{{غير مصنفة|"+getMonthYear()+"}}\n"+"[[تصنيف:");
	}
	return content;	
}

/*تدقيق إملائي*/
function spellCheck (content){
	content = content.replace (/إست.{3}/g, function replacer(match){
    	return match.replace ("إست","است");
	}); //استفعال
	
	content = content.replace (" الى ", " إلى ");
	content = content.replace (" فى ", " في ");
	content = content.replace (" اول ", " أول ");
	content = content.replace (" اكثر ", " أكثر ");
	content = content.replace (" امريكي ", " أمريكي ");
	content = content.replace (" اول ", " أول ");
	content = content.replace (" إثنان ", " اثنان ");
	content = content.replace (" إمرأة ", " امرأة ");
	content = content.replace (" إبنة ", " ابنة ");
	content = content.replace (" إبن ", " ابن ");
	content = content.replace (" إثنتان ", " اثنتان ");
	content = content.replace (" إسم ", " اسم ");
}

/*استبدالات*/
function replacing (content){
	content = content.replace("/ ( /g", " (");
	content = content.replace("/ . /g", ". ");
	content = content.replace("/ .\n/g", ".");
	content = content.replace("/ ) /g", ") ");
	content = content.replace("/\[file:/g", "[ملف:");
	content = content.replace("/\|thumbnail/g", "|تصغير");
	content = content.replace("/\|thumb/g", "|تصغير");
	content = content.replace("/\|left\|/g", "|يسار|");
	content = content.replace("/\|right\|/g", "|يمين|");
	content = content.replace("/\|center\|/g", "|مركز|");
	content = content.replace("==اقرأ أيضاً==", "==انظر أيضًا==");
	content = content.replace("==طالع أيضاً==", "==انظر أيضًا==");
	content = content.replace("==مقالات متعلقة==", "==انظر أيضًا==");
	content = content.replace("==صفحات ذات صلة==", "==انظر أيضًا==");
	content = content.replace("==See also==", "==انظر أيضًا==");
	content = content.replace("==المصادر==", "==مصادر==");
	content = content.replace("==الهوامش==", "==هوامش==");
	content = content.replace("==المراجع==", "==مراجع==");
	content = content.replace("==روابط خارجية==", "==وصلات خارجية==");
	content = content.replace("==مصادر خارجية==", "==وصلات خارجية==");
	content = content.replace("/ )./g", ").");
	content = content.replace("/ )،/g", ")،");
	content = content.replace(/ و /g, " و");
	content = content.replace(/ {3,}/g,' ');
	content = content.replace(/\{\{قالب:/g, "{{");
	content = content.replace(/\[\[Category:/g, "[[تصنيف:");
	content = content.replace(/\[\[ /g, "[[");
	content = content.replace(/ \]\]/g, "]]");
	content = content.replace(/<references \/>/g, "{{مراجع}}");
	content = content.replace(new RegExp('(\n){3,}', 'gim') , '\n\n');

	return content;
}


/*ترتيب القوالب في أسفل المقالة، وترتيب التصنيفات*/
function sorting (content){

	var portal = content.match (/\{\{شريط بوابات.{1,}\}\}/g);
	
	var stub = content.match (/\{\{بذرة.{0,}\}\}/g);
	
	var auth = content.match (/\{\{ضبط استنادي{0,}\}\}/g);
	
	var finals = "";
	
	if (auth){
		for (var i=0;i<auth.length;i++){
		    finals = finals + auth[i]+"\n";
		    content = content.replace (auth[i],"");
		}
	}
	
	if (portal){
		for (var i=0;i<portal.length;i++){
		    finals = finals + portal[i]+"\n";
		    content = content.replace (portal[i],"");
		}
	}
	
	if (stub){
		for (var i=0;i<stub.length;i++){
		    finals = finals + stub[i]+"\n";
		    content = content.replace (stub[i],"");
		}
	}
	
	var cats = content.match(/\[\[تصنيف:.{3,}\]\]/g);
	
	if (cats){	
		for (var i=0;i<cats.length;i++){
		     content = content.replace (cats[i],"");
		}
		
		cats.sort();
		
		for (var i=0;i<cats.length;i++){
		     finals = finals + "\n" +cats[i];
		}
	}

	content = content + "\n"+finals;
	return content;
}


/*جلب الوصلات داخل المقالة*/
function getLinks (content){
	
}


/*تخصيص البذور، والبوابات*/
function specify (cats){
	
}

// 載入自己修改的Twinkle

(function () {


    var groups = mw.config.get('wgUserGroups');


    var VERSION = 'c23e288';
    var PREFIX = 'MediaWiki:Gadget-';
    var rebuildcache = localStorage.fakeTwinkle_version !== VERSION;
    var tests = [];

    var ajax = function (title) {
        return $.ajax({
            url: mw.config.get('wgScript') + '?title=' + title + '&action=raw&ctype=text/javascript',
            dataType: 'text',
        });
    };

    var load = function (p) {
        var done = function (data) {
            if (rebuildcache || !localStorage['fakeTwinkle_' + p.name]) {
                localStorage['fakeTwinkle_' + p.name] = data;
            }    
        };
        if (localStorage['fakeTwinkle_' + p.name] && !rebuildcache) {
            return $.Deferred().resolve(localStorage['fakeTwinkle_' + p.name]);
        } else {
            if (p.test) {
                return ajax(PREFIX + p.name).done(done);
            } else {
                return ajax('MediaWiki:Gadget-' + p.name).done(done);
            }
        }
    };

    var message = function (text) {
        console.log('[FakeTwinkle]', text);
    //    $('#simpleSearch input[type="search"]').attr('placeHolder', text);
    };

    //tests.push({name: 'morebits(old).js',        test: true});
    tests.push({name: 'Twinkle(old).js',         test: true});
    tests.push({name: 'twinklearv.js',           test: true});
    tests.push({name: 'twinklewarn.js',          test: true});
    tests.push({name: 'friendlyshared.js',       test: true});
    tests.push({name: 'friendlytag.js',          test: true});
    tests.push({name: 'friendlytalkback.js',     test: true});
    tests.push({name: 'twinklebatchdelete.js',   test: true});
    tests.push({name: 'twinklebatchundelete.js', test: true});
    tests.push({name: 'twinkleblock.js',         test: true});
    tests.push({name: 'twinkleclose.js',         test: true});
    tests.push({name: 'twinkleconfig.js',        test: true});
    tests.push({name: 'twinklecopyvio.js',       test: true});
    tests.push({name: 'twinkledelimages.js',     test: true});
    tests.push({name: 'twinklediff.js',          test: true});
    tests.push({name: 'twinklefluff.js',         test: true});
    //tests.push({name: 'twinkleimage.js',         test: true});
    tests.push({name: 'twinkleprotect.js',       test: true});
    tests.push({name: 'twinklespeedy.js',        test: true});
    tests.push({name: 'twinkleunlink.js',        test: true});
    tests.push({name: 'twinklexfd.js',           test: true});

    mw.loader.using(['morebits','select2' , 'mediawiki.api','mediawiki.language'
    //, 'jquery.ui', 'jquery.tipsy'
    ]).done(function () {

        //importStylesheet('MediaWiki:Gadget-morebits.css');

        //importScript('MediaWiki:Gadget-select2.min.js');
        //importStylesheet('MediaWiki:Gadget-select2.min.css');
        importStylesheet('MediaWiki:Gadget-Twinkle.css');
        importStylesheet('MediaWiki:Gadget-Twinkle-pagestyles.css');

        
        var i=0;
        var finished = 0;
        var code = [];

        // all
        message('Loading FakeTW...');
        var promises = [];
        var done = function (x) {
            return function (data) {
                finished++;
                //message('Loading FakeTW... (' + finished + '/' + tests.length + ')');
                code[x] = data;
            };
        };
        for (i=0; i<tests.length; i++) {
            promises.push(load(tests[i]).done(done(i)));
        }
        $.when.apply($, promises).done(function () {
            localStorage.fakeTwinkle_version = VERSION;
            eval(code.join('\n;\n'));
            message('Twinkle Done');
        });
    });
})();