MediaWiki:Gadget-friendlyshared.js

Not: Sayfayı kaydettikten sonra değişiklikleri görebilmek için tarayıcınızın önbelleğinizi temizlemeniz gerekir. Google Chrome, Firefox, Microsoft Edge ve Safari: ⇧ Shift tuşuna basılı tutun ve Yeniden Yükle araç çubuğu düğmesine tıklayın. Ayrıntılar ve diğer tarayıcılara yönelik yönergeler için Vikipedi:Önbelleğinizi atlayın sayfasını inceleyin.

// <nowiki>


(function($) {

/*
 ****************************************
 *** friendlyshared.js: Paylaşılan IP etiketleme modülü
 ****************************************
 * Çağırma modu:           Sekme ("Paylaşılıyor")
 * Etkin olduğu yerler:    Anonim kullanıcı mesaj sayfaları
 */

Twinkle.shared = function friendlyshared() {
	if (mw.config.get('wgNamespaceNumber') === 3 && mw.util.isIPAddress(mw.config.get('wgTitle'))) {
		var username = mw.config.get('wgRelevantUserName');
		Twinkle.addPortletLink(function() {
			Twinkle.shared.callback(username);
		}, 'Paylaşılıyor', 'friendly-shared', 'Paylaşılan IP adresi etiketleme');
	}
};

Twinkle.shared.callback = function friendlysharedCallback() {
	var Window = new Morebits.simpleWindow(600, 450);
	Window.setTitle('Paylaşılan IP adresi etiketleme');
	Window.setScriptName('Twinkle');
	Window.addFooterLink('Paylaşılan IP tercihleri', 'VP:TW/T#shared');
	Window.addFooterLink('Twinkle yardımı', 'VP:TW#shared');
	//Window.addFooterLink('Give feedback', 'WT:TW');
	
	var form = new Morebits.quickForm(Twinkle.shared.callback.evaluate);

	var div = form.append({
		type: 'div',
		id: 'sharedip-templatelist',
		className: 'morebits-scrollbox'
	}
	);
	div.append({ type: 'header', label: 'Paylaşılan IP adresi şablonları' });
	div.append({ type: 'radio', name: 'template', list: Twinkle.shared.standardList,
		event: function(e) {
			Twinkle.shared.callback.change_shared(e);
			e.stopPropagation();
		}
	});

	var org = form.append({ type: 'field', label: 'Diğer ayrıntıları doldurun (isteğe bağlı) ve "Gönder" tuşuna tıklayın' });
	org.append({
		type: 'input',
		name: 'organization',
		label: 'IP adresi sahibi/işletmecisi',
		disabled: true,
		tooltip: 'IP adresine sahip olan/işleten kuruluşun adını isteğe bağlı olarak girebilirsiniz. Gerekliyse bu alanda viki dilini de kullanabilirsiniz.'
	}
	);
	org.append({
		type: 'input',
		name: 'host',
		label: 'Ana bilgisayar adı (isteğe bağlı)',
		disabled: true,
		tooltip: 'Ana bilgisayar adı (örnek olarak, proxy.example.com) isteğe bağlı olarak şablonda gözükmesi üzere buraya girilebilir.'
	}
	);
	org.append({
		type: 'input',
		name: 'contact',
		label: 'İletişim bilgileri (sadece talep edildiyse)',
		disabled: true,
		tooltip: 'Organizasyon için isteğe bağlı olarak bazı iletişim bilgilerini girebilirsiniz. Bu parametreyi yalnızca kuruluş özellikle iletişim bilgisi eklenmesini talep etmişse kullanın. Gerekliyse bu alanda viki dilini de kullanabilirsiniz.'
	}
	);

	var previewlink = document.createElement('a');
	$(previewlink).click(function() {
		Twinkle.shared.preview(result);
	});
	previewlink.style.cursor = 'pointer';
	previewlink.textContent = 'Preview';
	form.append({ type: 'div', id: 'sharedpreview', label: [ previewlink ] });
	form.append({ type: 'submit' });

	var result = form.render();
	Window.setContent(result);
	Window.display();
};

Twinkle.shared.standardList = [
	{
		label: '{{Paylaşılan IP}}: standart paylaşılan IP adresi şablonu',
		value: 'Paylaşılan IP',
		tooltip: 'IP kullanıcılarına ve onları uyarmak veya engellemek isteyen hizmetlilere faydalı bilgiler gösteren anonim kullanıcı mesaj sayfası şablonu'
	},
	{
		label: '{{Paylaşılan IP eğitim}}: eğitim kurumları için değiştirilen paylaşılan IP adresi şablonu',
		value: 'Paylaşılan IP eğitim'
	},
	{
		label: '{{Shared IP corp}}: shared IP address template modified for businesses',
		value: 'Shared IP corp'
	},
	{
		label: '{{Shared IP public}}: shared IP address template modified for public terminals',
		value: 'Shared IP public'
	},
	{
		label: '{{Shared IP gov}}: shared IP address template modified for government agencies or facilities',
		value: 'Shared IP gov'
	},
	{
		label: '{{Dynamic IP}}: shared IP address template modified for organizations with dynamic addressing',
		value: 'Dynamic IP'
	},
	{
		label: '{{Static IP}}: shared IP address template modified for static IP addresses',
		value: 'Static IP'
	},
	{
		label: '{{ISP}}: shared IP address template modified for ISP organizations (specifically proxies)',
		value: 'ISP'
	},
	{
		label: '{{Mobile IP}}: shared IP address template modified for mobile phone companies and their customers',
		value: 'Mobile IP'
	},
	{
		label: '{{Whois}}: template for IP addresses in need of monitoring, but unknown whether static, dynamic or shared',
		value: 'Whois'
	}
];

Twinkle.shared.callback.change_shared = function friendlysharedCallbackChangeShared(e) {
	e.target.form.contact.disabled = e.target.value !== 'Paylaşılan IP eğitim';  // only supported by {{Shared IP edu}}
	e.target.form.organization.disabled = false;
	e.target.form.host.disabled = e.target.value === 'Whois';  // host= not supported by {{Whois}}
};

Twinkle.shared.callbacks = {
	main: function(pageobj) {
		var params = pageobj.getCallbackParameters();
		var pageText = pageobj.getPageText();
		var found = false;

		for (var i = 0; i < Twinkle.shared.standardList.length; i++) {
			var tagRe = new RegExp('(\\{\\{' + Twinkle.shared.standardList[i].value + '(\\||\\}\\}))', 'im');
			if (tagRe.exec(pageText)) {
				Morebits.status.warn('Info', 'Kullanıcı mesaj sayfasında zaten {{' + Twinkle.shared.standardList[i].value + '}} şablonu bulundu. İptal ediliyor');
				found = true;
			}
		}

		if (found) {
			return;
		}

		Morebits.status.info('Info', 'Paylaşılan IP adresi şablonunu kullanıcının mesaj sayfasının en üstüne ekleniyor.');
		var text = Twinkle.shared.getTemplateWikitext(params);

		var summaryText = '{{[[Şablon:' + params.template + '|' + params.template + ']]}} şablonu eklendi.';
		pageobj.setPageText(text + pageText);
		pageobj.setEditSummary(summaryText);
		pageobj.setChangeTags(Twinkle.changeTags);
		pageobj.setMinorEdit(Twinkle.getPref('markSharedIPAsMinor'));
		pageobj.setCreateOption('recreate');
		pageobj.save();
	}
};

Twinkle.shared.preview = function(form) {
	var input = Morebits.quickForm.getInputData(form);
	if (input.template) {
		var previewDialog = new Morebits.simpleWindow(700, 500);
		previewDialog.setTitle('Shared IP template preview');
		previewDialog.setScriptName('Add Shared IP template');
		previewDialog.setModality(true);

		var previewdiv = document.createElement('div');
		previewdiv.style.marginLeft = previewdiv.style.marginRight = '0.5em';
		previewdiv.style.fontSize = 'small';
		previewDialog.setContent(previewdiv);

		var previewer = new Morebits.wiki.preview(previewdiv);
		previewer.beginRender(Twinkle.shared.getTemplateWikitext(input), mw.config.get('wgPageName'));

		var submit = document.createElement('input');
		submit.setAttribute('type', 'submit');
		submit.setAttribute('value', 'Close');
		previewDialog.addContent(submit);

		previewDialog.display();

		$(submit).click(function() {
			previewDialog.close();
		});
	}
};

Twinkle.shared.getTemplateWikitext = function(input) {
	var text = '{{' + input.template + '|' + input.organization;
	if (input.contact) {
		text += '|' + input.contact;
	}
	if (input.host) {
		text += '|host=' + input.host;
	}
	text += '}}\n\n';
	return text;
};

Twinkle.shared.callback.evaluate = function friendlysharedCallbackEvaluate(e) {
	var params = Morebits.quickForm.getInputData(e.target);
	if (!params.template) {
		alert('Kullanmak için uygun bir paylaşılan IP adresi şablonu seçmelisiniz.');
		return;
	}
	if (!params.organization) {
		alert('{{' + params.template + '}} şablonu için bir organizasyon girmelisiniz.');
		return;
	}

	Morebits.simpleWindow.setButtonsEnabled(false);
	Morebits.status.init(e.target);

	Morebits.wiki.actionCompleted.redirect = mw.config.get('wgPageName');
	Morebits.wiki.actionCompleted.notice = 'Etiketleme tamamlandı, birkaç saniye içinde mesaj sayfası yeniden yükleniyor';

	var wikipedia_page = new Morebits.wiki.page(mw.config.get('wgPageName'), 'Kullanıcı mesaj sayfası değişikliği');
	wikipedia_page.setFollowRedirect(true);
	wikipedia_page.setCallbackParameters(params);
	wikipedia_page.load(Twinkle.shared.callbacks.main);
};

Twinkle.addInitCallback(Twinkle.shared, 'shared');
})(jQuery);


// </nowiki>