ميدياويكي:Gadget-ArabicAds.js

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

$.when(
    $.getJSON(mw.config.get('wgScript') + '?action=raw&ctype=application/json&maxage=5&title=MediaWiki:إعلانات/بيانات.json'),
    mw.loader.using(['mediawiki.util']),
    $.ready
).then(function (jsonData) {
    let ads = jsonData[0];
    let validAds = [];
    const datestring = (new Date).toISOString();
    const Adkey = 'arabic-ads-last';
    function cookiesEnabled() {
		if ( mw.cookie.get( 'mf_testcookie' ) === 'test_value' ) {
			return true;
		} else {
			mw.cookie.set( 'mf_testcookie', 'test_value', {
				path: '/'
			} );
			return mw.cookie.get( 'mf_testcookie' ) === 'test_value';
		}
	}
    ads.forEach(ad => {
        if ((ad.start < datestring) && (ad.end > datestring)) {
            validAds.push(ad);
        }
    });
    console.log(validAds.length);
    let cad;
    let hasCookies = cookiesEnabled();
    if (validAds.length == 1) {
        cad = validAds[0];
    } else if (validAds.length > 1) {
        if (hasCookies) {
            let lastAd = mw.cookie.get(Adkey);
            lastAd = Number(lastAd) || -1;

            for (let i = 0; i < validAds.length; i++) {
                if (validAds[i].id > lastAd) {
                    cad = validAds[i];
                    break;
                }
            }
            if (cad === undefined) {
                cad = validAds[0];
            }
        } else {
            cad = validAds[Math.floor(Math.random() * validAds.length)];
        }
    }

    if (cad !== undefined) {
        if (hasCookies) {mw.cookie.set(Adkey, cad.id, { expires: 2 * 86400, path: '/' });}
        $.get(mw.config.get('wgScript') + '?action=render&maxage=86400&title=MediaWiki:إعلانات/' + cad.page, function (getData){
            $("#siteNotice")[0].innerHTML += '<div>' + getData + '</div>';
        } )
       
        console.log(cad.id);
    }
});