MediaWiki:Common.js

Daripada Wiktionary

Catatan: Selepas menyiarkan perubahan, anda mungkin perlu memintas cache pelayar untuk melihatnya.

  • Firefox / Safari: Tahan Shift sambil mengklik Reload, atau tekan sama ada Ctrl-F5 atau Ctrl-R (⌘-R pada Mac)
  • Google Chrome: Tekan Ctrl-Shift-R (⌘-Shift-R pada Mac)
  • Internet Explorer / Edge: Tahan Ctrl sambil mengklik Refresh, atau tekan Ctrl-F5
  • Opera: Tekan Ctrl-F5.
'use strict'; /* Any JavaScript here will be loaded for all users on every page load. */ // {{documentation}} <nowiki>
/*jshint shadow:true, undef:true, latedef:true, unused:true, es3:true */
/*global jQuery, mw, importScript, importStylesheet */

/** [[WT:PREFS]] v2.0 **/
try { (function () {

var prefs;
try {
	prefs = localStorage.getItem('AGprefs');
} catch (e) {
}

prefs = prefs && JSON.parse(prefs);

if (mw.config.get('wgUserGroups').indexOf('autoconfirmed') !== -1)
	return;

if (mw.config.get('wgUserGroups').indexOf('user') === -1) {
	// XXX: [[Wiktionary:Preferences/V2]] is just a temporary page

	mw.loader.using(['mediawiki.util'], function () {
		mw.util.addPortletLink('p-personal', mw.util.getUrl('Wiktionary:Preferences/V2'),
			'Keutamaan', 'pt-agprefs', 'Peribadikan Keutamaan (tetapan disimpan setiap pelayar).', '',
			document.getElementById('pt-createaccount'));
	});
	
	if ((mw.config.get('wgAction') === 'view') && (mw.config.get('wgPageName') === 'Wiktionary:Keutamaan/V2')) {
		mw.loader.load('ext.gadget.AGprefs'); // [[MediaWiki:Gadget-AGprefs.js]]
	}
}

if (!prefs)
	return;

mw.loader.state('the_pope_is_an_atheist_woman_alien', 'missing');
for (var key in prefs.modules) {
	if (prefs.modules[key]) {
		mw.loader.load([key]);
	} else {
		// unavoidable race condition. to prevent it, every enabled-by-default gadget should have "site" as a dependency
		if (mw.loader.getState(key) !== 'ready') {
			mw.loader.moduleRegistry[key].dependencies.push('the_pope_is_an_atheist_woman_alien');
			mw.loader.state(key, 'missing');
		} else {
			// XXX
			mw.log.warn(key + " could not be disabled; make sure it has 'site' declared as a dependency");
		}
	}
}

for (var key in prefs.sheets) {
	importStylesheet('MediaWiki:Gadget-' + key);
}

for (var key in prefs.scripts) {
	importScript('MediaWiki:Gadget-' + key);
}

if (mw.config.get('wgUserGroups').indexOf('user') !== -1)
mw.loader.using([ 'mediawiki.api'], function () {
	var changes = [];
	for (var key in prefs.gadgets)
		changes.push('gadget-' + key + '=' + (prefs.gadgets[key] ? '1' : '0'));

	(new mw.Api()).postWithToken('options', {
		action: 'options',
		change: changes.join('|')
	}).then(function () {
		try { localStorage.removeItem('AGprefs'); } catch (e) { /* */ }
		mw.notify(
			jQuery('<b><a href="/wiki/Wiktionary:Keutamaan/V2">Keutamaan setiap pelayar</a> anda telah dipindahkan</b><br/><br/>' +
			'Mulai sekarang, anda perlu menggunakan <a href="/wiki/Khas:Keutamaan">laman keutamaan pengguna</a> anda. ' +
			'Keutamaan tidak lagi digunakan selepas anda log keluar.')
		);
	});
});

})(); } catch (e) { mw.log.warn(e); }

mw.loader.using('mediawiki.util').done(function(){
	/** &withmodule= query parameter **/
	if (mw.util.getParamValue('withmodule'))
		mw.loader.load(mw.util.getParamValue('withmodule').split(','));
	
	/** &preloadtext= and &preloadminor= **/
	if (mw.config.get('wgAction') === 'edit')
	jQuery(document).ready(function() {
		var wpTextbox1 = document.getElementById('wpTextbox1');
		var wpMinoredit = document.getElementById('wpMinoredit');
		if (!wpTextbox1)
			return;

		var preloadtext = mw.util.getParamValue('preloadtext');
		var preloadminor = mw.util.getParamValue('preloadminor'); 

		if (preloadtext && !wpTextbox1.value)
			wpTextbox1.value = preloadtext;
		if ((preloadminor !== null) && wpMinoredit)
			wpMinoredit.checked = !/^(0|false|no|)$/i.test(preloadminor);
	});

	/** Monthly subpages; see {{discussion recent months}} **/
	/*  See also: [[Special:AbuseFilter/43]]  */
	if (/^Wiktionary:(Kedai Kopi|Grease_pit|Tea_room|Etymology_scriptorium|Information_desk)$/.test(mw.config.get('wgPageName')))
	jQuery(document).ready(function() {
		var nNSR = document.getElementById('new-section-redirect').getElementsByTagName('a')[0];
		var caAddSection = document.getElementById('ca-addsection');
		if (!caAddSection) {
			caAddSection = mw.util.addPortletLink(mw.config.get('skin') === 'vector' ? 'p-views' : 'p-cactions',
				nNSR.href, '+', 'ca-addsection', "Mulakan bahagian baru", '+', document.getElementById('ca-history')
			);
		} else {
			caAddSection.getElementsByTagName('a')[0].href = nNSR.href;
		}
	});
});

/** [[Special:PrefixIndex/Tajuk yang tidak disokong]] **/
if ((mw.config.get('wgAction') === 'view') && /^Tajuk_yang_tidak_disokong\//.test(mw.config.get('wgPageName')))
jQuery(document).ready(function () {
	var titleMap = {
		'Left_curly_bracket'      : '{',
		'Right_curly_bracket'     : '}',
		'Left_square_bracket'     : '[',
		'Right_square_bracket'    : ']',
		'Less_than'          : '&lt;',
		'Greater_than'       : '>',
		'Equal_greater_than'          : '=&gt;',
		'Equal_less_than'          : '=&lt;',
		'Greater_than_equal'          : '&gt;=',
		'Less_than_equal'          : '&lt;=',
		'Hyphen_greater_than'          : '-&gt;',
		'Less_than_hyphen'          : '&lt;-',
		'Greater_than_low_line_less_than'          : '&gt;_&lt;',
		'Double_colon'            : '::',
		'Enclosing_colons'            : ': :',
		'Colon_equals'            : ':=',
		'Colon_capital_thorn'            : ':Þ',
		'Colon_slash_slash'       : '://',
		'Colon_left_paren'        : ':(',
		'Colon_right_paren'       : ':)',
		'Less_than_greater_than'  : '&lt;&gt;',
		'Less_than_three'         : '&lt;3',
		'Enclosing_less_than_greater_than'   : '&lt; &gt;',
		'Less_than_trailing_slash_greater_than'   : '&lt; /&gt;',
        'HTML_start_tag_end_tag'  : '&lt; &gt; &lt;/ &gt;',
        'HTML_comment'            : '&lt;!-- --&gt;',
        'g_tag'                   : '&lt;g&gt;',
		'Colon_hyphen_left_paren' : ':-(',
		'Colon_hyphen_right_paren': ':-)',
		'Vertical_line'           : '|',
		'Vertical_line_vertical_line' : '||',
		'Enclosing_vertical_lines' : '| |',
		'C_sharp'                 : 'C#',
		'Number_sign'             : '#',
		'Enclosing_number_signs'     : '# #',
		'Colon'                   : ':',
		'Double_period'           : '..',
		'Full_stop'               : '.',
		'Low_line'                : '_',
		'Low_line_interfix'       : '-_-',
		'Replacement_character'   : '\ufffd',
		'Square_brackets'         : '[ ]',
		'Curly_brackets'          : '{ }',
		'Square_bracketed_ellipsis'   : '[…]',
		'Enclosing_low_lines'   : '_ _',
		'C_through_N_to_K'   : 'C|N>K',
		'о_slash_dot'   : 'о/.',
		
		'Thai_name_of_Bangkok'    : 'กรุงเทพมหานคร อมรรัตนโกสินทร์ มหินทรายุธยามหาดิลกภพ นพรัตน์ราชธานีบุรีรมย์ อุดมราชนิเวศน์มหาสถาน อมรพิมานอวตารสถิต สักกะทัตติยะวิษณุกรรมประสิทธิ์',
		'Ancient_Greek_dish'      : 'λοπαδοτεμαχοσελαχογαλεοκρανιολειψανοδριμυποτριμματοσιλφιοκαραβομελιτοκατακεχυμενοκιχλ\u00ADεπικοσσυφοφαττοπεριστεραλεκτρυονοπτοκεφαλλιοκιγκλοπελειολαγῳοσιραιοβαφητραγανοπτερύγων',
		
		'Ideographic_space'       : '[ideographic space]',
		'Space'                   : '[space]',
		'Ogham_space'             : '[Ogham space]',

		''                        : ''
	};
	var newTitle = titleMap[mw.config.get('wgPageName').replace(/^Tajuk_yang_tidak_disokong\//, '')] ||
		(mw.config.get('wgTitle').replace(/^Tajuk yang tidak disokong\//, ''));
	
	var titleTag = document.getElementsByTagName('title')[0];
	titleTag.innerHTML = titleTag.innerHTML.replace(/^.*(?= -)/, newTitle.replace(/<[^>]+>/g, ''));
	document.getElementById('firstHeading').innerHTML = newTitle;
});

// 
if (mw.config.get('wgCanonicalSpecialPageName') == 'Badtitle') {
	var m, rxArticlePath = new RegExp('^' + mw.config.get('wgArticlePath').replace('$1', '(.*)') + '$');
	var title;
	if ((m = rxArticlePath.exec(location.pathname))) {
		title = decodeURIComponent(m[1]);
	} else {
		title = mw.util.getParamValue('title');
	}
	
	// not all titles are listed, because not all actually trigger the "bad title" message
	var revTitleMap = {
		'<': 'Tajuk yang tidak disokong/Less than',
		'>': 'Tajuk yang tidak disokong/Greater than',
		'{': 'Tajuk yang tidak disokong/Left curly bracket',
		'}': 'Tajuk yang tidak disokong/Right curly bracket',
		'[': 'Tajuk yang tidak disokong/Left square bracket',
		']': 'Tajuk yang tidak disokong/Right square bracket',
		'_': 'Tajuk yang tidak disokong/Low line',
		' ': 'Tajuk yang tidak disokong/Space',
		':': 'Tajuk yang tidak disokong/Colon',
		'.': 'Tajuk yang tidak disokong/Full stop',
		'|': 'Tajuk yang tidak disokong/Vertical line',
		'||': 'Tajuk yang tidak disokong/Vertical line vertical line',
		'| |': 'Tajuk yang tidak disokong/Enclosing vertical lines',
		
		'::': 'Tajuk yang tidak disokong/Double colon',
		': :': 'Tajuk yang tidak disokong/Enclosing colons',
		'<>': 'Tajuk yang tidak disokong/Less than greater than',
		'< >': 'Tajuk yang tidak disokong/Enclosing less than greater than',
		'<3': 'Tajuk yang tidak disokong/Less than three',
		'<g>': 'Tajuk yang tidak disokong/g tag',
		'< > </ >': 'Tajuk yang tidak disokong/HTML start tag end tag',
		
		'[ ]': 'Tajuk yang tidak disokong/Square brackets',
		'{ }': 'Tajuk yang tidak disokong/Curly brackets',

		'C|N>K': 'Tajuk yang tidak disokong/C through N to K',

		'\ufffd': 'Tajuk yang tidak disokong/Replacement character'
	};
	if (revTitleMap[title]) {
		location.href = mw.util.getUrl(revTitleMap[title]);
	}
}

// The rest of the scripts are at [[MediaWiki:Gadget-legacy.js]].
// Most of them should be converted into gadgets as time and resources allow.
// </nowiki>