Suradnica:MayaSimFan/friendlytag.js

Napomena: Nakon objave možda ćete trebati očistiti međuspremnik svog preglednika kako biste vidjeli promjene.

  • Firefox / Safari: držite Shift i pritisnite Reload, ili pritisnite bilo Ctrl-F5 ili Ctrl-R (⌘-R na Macu)
  • Google Chrome: pritisnite Ctrl-Shift-R (⌘-Shift-R na Macu)
  • Internet Explorer / Edge: držite Ctrl i kliknite Refresh, ili pritisnite Ctrl-F5
  • Opera: pritisnite Ctrl-F5.
// <nowiki>
// If FriendlyConfig aint exist.
if( typeof( FriendlyConfig ) == 'undefined' ) {
	FriendlyConfig = {};
}
 
/**
 FriendlyConfig.summaryAd ( string )
 If ad should be added or not to summary, default [[WP:FRIENDLY|Friendly]]
 */
if( typeof( FriendlyConfig.summaryAd ) == 'undefined' ) {
	FriendlyConfig.summaryAd = " pomoću [[WP:FRIENDLY|Friendly]]ja";
}
 
/**
 FriendlyConfig.groupByDefault ( boolean )
 */
if( typeof( FriendlyConfig.groupByDefault ) == 'undefined' ) {
	FriendlyConfig.groupByDefault = true;
}
 
/**
 FriendlyConfig.watchTaggedPages ( boolean )
 */
if( typeof( FriendlyConfig.watchTaggedPages ) == 'undefined' ) {
	FriendlyConfig.watchTaggedPages = true;
}
 
/**
 FriendlyConfig.markTaggedPagesAsMinor ( boolean )
 */
if( typeof( FriendlyConfig.markTaggedPagesAsMinor ) == 'undefined' ) {
	FriendlyConfig.markTaggedPagesAsMinor = true;
}
 
/**
 FriendlyConfig.markTaggedPagesAsPatrolled ( boolean )
 */
if( typeof( FriendlyConfig.markTaggedPagesAsPatrolled ) == 'undefined' ) {
	FriendlyConfig.markTaggedPagesAsPatrolled = true;
}
 
function friendlytag() {
	if( QueryString.exists( 'redirect' ) && QueryString.get( 'redirect' ) == 'no' && !QueryString.exists( 'rcid' ) ) {
		isRedirect = true;
		mw.util.addPortletLink( 'p-cactions', "javascript:friendlytag.callback()", "označi", "friendly-tag", "Označi preusmjeravanje", "");
	} else if( wgNamespaceNumber != 0 || wgCurRevisionId == false ) {
		return;
	} else {
		mw.util.addPortletLink( 'p-cactions', "javascript:friendlytag.callback()", "označi", "friendly-tag", "Označi članak", "");
	}
}
 
$(friendlytag);
 
friendlytag.callback = function friendlytagCallback( uid ) {
	var Window = new SimpleWindow( 600, 400 );
	if( !isRedirect ) {
		Window.setTitle( "Označavanje - održavanje članka" );
	} else {
		Window.setTitle( "Označavanje - preusmjeravanje" );
	}
	var form = new QuickForm( friendlytag.callback.evaluate );
 
	if( !isRedirect ) { 
		form.append( { type:'submit' } );
 
		form.append( { type:'header', label:'Predlošci za održavanje' } );
		form.append( { type:'checkbox', name: 'maintenance', list: friendlytag.maintenanceList } );
 
		form.append( { type:'header', label:'Predlošci za probleme' } );
		form.append( { type:'checkbox', name: 'problem', list: friendlytag.problemList } );
 
		form.append( { type:'header', label:'Predlošci za obavijesti' } );
		form.append( { type:'checkbox', name: 'notice', list: friendlytag.noticeList } );
 
		if( typeof( FriendlyConfig.customTagList ) == 'object' ) {
			form.append( { type:'header', label:'Custom templates' } );
			form.append( { type: 'checkbox', name: 'custom', list: FriendlyConfig.customTagList } );
		}
	} else {
		form.append( { type:'submit' } );
 
		form.append( { type:'header', label:'Spelling, misspelling, tense and capitalization templates' } );
		form.append( { type:'checkbox', name: 'spelling', list: friendlytag.spellingList } );
 
		form.append( { type:'header', label:'Alternative name templates' } );
		form.append( { type:'checkbox', name: 'alternative', list: friendlytag.alternativeList } );
 
		form.append( { type:'header', label:'Miscellaneous and administrative redirect templates' } );
		form.append( { type:'checkbox', name: 'administrative', list: friendlytag.administrativeList } );
	}
 
	form.append( { type:'submit' } );
 
	var result = form.render();
	Window.setContent( result );
	Window.display();
}
 
isRedirect = false;
 
friendlytag.maintenanceList = [
	{
		label: '\{\{bolji naslov\}\}: članak treba preimenovati (objasniti na stranici za razgovor)',
		value: 'bolji naslov'
	},
	{
		label: '\{\{esej\}\}: članak ili dio članka izgleda kao esej',
		value: 'esej'
	},
	{
		label: '\{\{reklama\}\}: članak ili dio članka izgleda kao reklama',
		value: 'reklama'
	},
	{
		label: '\{\{rad obožavatelja\}\}: članak ili dio članka izgleda kao rad obožavatelja',
		value: 'rad obožavatelja'
	},
	{
		label: '\{\{priča\}\}: članak izgleda kao osobno mišljenje ili priča',
		value: 'priča'
	},
	{
		label: '\{\{u wikicitat\}\}: članak ili dio članka treba premjestiti u Wikicitat',
		value: 'u wikicitat'
	},
	{
		label: '\{\{u wikiknjige\}\}: članak ili dio članka treba premjestiti u Wikiknjige',
		value: 'u wikiknjige'
	},
	{
		label: '\{\{u wikizvor\}\}: članak ili dio članka treba premjestiti u Wikizvor',
		value: 'u wikizvor'
	},
	{
		label: '\{\{u wječnik\}\}: članak ili dio članka treba premjestiti u Wječnik',
		value: 'u wječnik'
	},
	{
		label: '\{\{pravopis\}\}: članak ili dio članka zahtijeva jezičnu i pravopisnu doradu',
		value: 'pravopis'
	},
	{
		label: '\{\{dijakritički znakovi\}\}: članku ili dijelu članka nedostaju hrvatski dijakritički znakovi',
		value: 'dijakritički znakovi'
	},
	{
		label: '\{\{velika slova\}\}: članak s pretjeranom količinom verzala (velikih slova)',
		value: 'velika slova'
	},
	{
		label: '\{\{stilska dorada\}\}: članak ili dio članka zahtijeva stilsku doradu',
		value: 'stilska dorada'
	},
	{
		label: '\{\{wikipedizirati\}\}: članak ili dio članka nije wikipediziran',
		value: 'wikipedizirati'
	},
	{
		label: '\{\{wp+\}\}: članak nema wikipoveznica ili ih ima premalo',
		value: 'wp+'
	},
	{
		label: '\{\{wp-\}\}: članak ima previše wikipoveznica ili su neodgovarajuće',
		value: 'wp-'
	},
	{
		label: '\{\{krive wikipoveznice\}\}: članak sadrži pogrešno napisane wikipoveznice',
		value: 'krive wikipoveznice'
	},
	{
		label: '\{\{wp na hr!\}\}: članak sadrži wikipoveznice prema drugim wikipedijama ili vanjske poveznice na mjestima gdje to nije potrebno',
		value: 'wp na hr!'
	},
	{
		label: '\{\{prijevod\}\}: članak nije preveden djelomično ili uopće',
		value: 'prijevod',
		subgroup: {
			name: 'prijevod',
			type: 'select',
			list: [
				{
					label: "\{\{prijevod\}\}: članak nije preveden djelomično ili uopće",
					value: "prijevod"
				},
				{
					label: "Predlošci \{\{prijevod\}\} za pojedine jezike",
					list: [
						{
							label: "\{\{prijevod|alb\}\}: članak nije preveden s albanskog jezika",
							value: "prijevod-alb"
						},
						{
							label: "\{\{prijevod|boš\}\}: članak nije preveden s bošnjačkog jezika",
							value: "prijevod-boš"
						},
						{
							label: "\{\{prijevod|eng\}\}: članak nije preveden s engleskog jezika",
							value: "prijevod-eng"
						},
						{
							label: "\{\{prijevod|fra\}\}: članak nije preveden s francuskog jezika",
							value: "prijevod-fra"
						},
						{
							label: "\{\{prijevod|ita\}\}: članak nije preveden s talijanskog jezika",
							value: "prijevod-ita"
						},
						{
							label: "\{\{prijevod|mađ\}\}: članak nije preveden s mađarskog jezika",
							value: "prijevod-mađ"
						},
						{
							label: "\{\{prijevod|nje\}\}: članak nije preveden s njemačkog jezika",
							value: "prijevod-nje"
						},
						{
							label: "\{\{prijevod|por\}\}: članak nije preveden s portugalskog jezika",
							value: "prijevod-por"
						},
						{
							label: "\{\{prijevod|rus\}\}: članak nije preveden s ruskog jezika",
							value: "prijevod-rus"
						},
						{
							label: "\{\{prijevod|slo\}\}: članak nije preveden sa slovenskog jezika",
							value: "prijevod-slo"
						},
						{
							label: "\{\{prijevod|srp\}\}: članak nije preveden sa srpskog jezika",
							value: "prijevod-srp"
						},
						{
							label: "\{\{prijevod|špa\}\}: članak nije preveden sa španjolskog jezika",
							value: "prijevod-špa"
						},
						{
							label: "\{\{prijevod|šve\}\}: članak nije preveden sa švedskog jezika",
							value: "prijevod-šve"
						}
					]
				}
			]
		}
	},
	{
		label: '\{\{prekratko\}\}: članak je prekratak, čak i za mrvu',
		value: 'prekratko' 
	},
	{
		label: '\{\{provjeriti vanjske poveznice\}\}: članak zahtjeva provjeru i čišćenje vanjskih poveznica',
		value: 'provjeriti vanjske poveznice' 
	}
];
 
 
friendlytag.problemList = [
	{
		label: '\{\{bris\}\}: članak je potrebno obrisati',
		value: 'bris',
		subgroup: {
			name: 'bris',
			type: 'select',
			list: [
				{
					label: "\{\{bris\}\}: članak je potrebno obrisati",
					value: "bris"
				},
				{
					label: "\{\{bris|kratko\}\}: članak je prekratak",
					value: "kratko"
				},
				{
					label: "\{\{bris|nespada\}\}: članak ne spada u Wikipediju",
					value: "nespada"
				},
				{
					label: "\{\{bris|grafit\}\}: grafit",
					value: "grafit"
				},
				{
					label: "\{\{bris|test\}\}: testiranje",
					value: "test"
				},
				{
					label: "\{\{bris|napadi\}\}: napadi",
					value: "napadi"
				}
			]
		}
	},
	{
		label: '\{\{subst:CBris\}\}: članak je možda prepisan s web stranice (navesti url)',
		value: 'CBris'
	},
	{
		label: '\{\{subst:CBBris\}\}: članak je možda prepisan iz knjige (navesti knjigu)',
		value: 'CBBris'
	},
	{
		label: '\{\{subst:KBris\}\}: članak možda ne udovoljava Wikipedijinim kriterijima',
		value: 'KBris'
	},
	{
		label: '\{\{subst:NSBris\}\}: članak možda ne udovoljava Wikipedijinim standardima',
		value: 'NSBris'
	},
	{
		label: '\{\{originalne ideje\}\}: članak možda sadržavata originalne ideje ili plodove originalnog istraživačkog rada',
		value: 'originalne ideje'
	},
	{
		label: '\{\{neutralnost\}\}: članak nije pisan s nepristrane točke gledišta',
		value: 'neutralnost'
	},
	{
		label: '\{\{jednostrano\}\}: članak možda jednostrano prikazuje temu',
		value: 'jednostrano'
	},
	{
		label: '\{\{neprovjereno\}\}: članak ili dio članka sadrži neprovjerene i možda nepouzdane podatke',
		value: 'neprovjereno'
	},
	{
		label: '\{\{točnost\}\}: točnost podataka u članku je osporena',
		value: 'točnost'
	},
	{
		label: '\{\{izvor\}\}: članak ili dio članka nije pokriven izvorima',
		value: 'izvor' 
	},
	{
		label: '\{\{zastario\}\}: članak ili dio članka sadrži zastarjele podatke',
		value: 'zastario'
	}
];
 
friendlytag.noticeList = [
	{
		label: '\{\{aktualno\}\}: članak o događaju u tijeku ili djelu u stvaranju',
		value: 'current',
		subgroup: {
			name: 'aktualno',
			type: 'select',
			list: [
				{
					label: "\{\{aktualno\}\}: članak o događaju u tijeku ili djelu u stvaranju",
					value: "aktualno"
				},
				{
					label: "\{\{aktualno-izbori\}\}: članak o političkim izborima u tijeku",
					value: "aktualno-izbori"
				},
                                {
					label: "\{\{aktualno-sport\}\}: članak o sportskom događaju u tijeku",
					value: "aktualno-sport"
				},
			]
		}
	},
	{
		label: '\{\{budući događaj\}\}: članak o zakazanom ili očekivanom budućem događaju',
		value: 'future',
		subgroup: {
			name: 'budući događaj',
			type: 'select',
			list:  [
				{
					label: "\{\{budući događaj\}\}: članak o zakazanom ili očekivanom budućem događaju",
					value: "budući događaj"
				},
				{
					label: "Tehnologija",
					list: [
						{
							label: "\{\{budući zrakoplov\}\}: članak o planiranom zrakoplovu ili zrakoplovu u izgradnji",
							value: "budući zrakoplov"
						}
					]
				},
				{
					label: "Zabava",
					list: [
						{
							label: "\{\{nadolazeći film\}\}: članak o očekivanom filmu ili filmu u pripremi",
							value: "nadolazeći film"
						},
						{
							label: "\{\{nadolazeća video igra\}\}: članak o očekivanoj video igri",
							value: "nadolazeća video igra"
						},
						{
							label: "\{\{nadolazeća Wii video igra\}\}: članak o očekivanoj video igri za Wii",
							value: "nadolazeća video igra Wii"
						}
					]
				},
                                {
					label: "Sport",
					list: [
						{
							label: "\{\{budući sportski događaj\}\}: članak o planiranom sportskom događaju",
							value: "budući sportski događaj"
						}
					]
				},
				{
					label: "Ostalo",
					list: [
						{
							label: "\{\{budući izbori\}\}: članak o budućim političkim izborima",
							value: "budući izbori"
						}
					]
				}
			]
		}
	},
	{
		label: '\{\{radovi\}\}: članak se upravo proširuje - rok 3 sata',
		value: 'radovi' 
        },
	{
		label: '\{\{radovi24\}\}: članak se upravo proširuje - rok 24 sata',
		value: 'radovi24' 
        }
];
 
 
friendlytag.spellingList = [
	{
		label: '\{\{R from abbreviation\}\}: redirect from a title with an abbreviation',
		value: 'R from abbreviation' 
	},
	{
		label: '\{\{R to list entry\}\}: redirect to a \"list of minor entities\"-type article which is a collection of brief descriptions for subjects not notable enough to have separate articles',
		value: 'R to list entry' 
	},
	{
		label: '\{\{R to section\}\}: sames as \{\{R to list entry\}\}, but when list is more sectionlike in organization, such as list of fictional characters in a fictional universe.',
		value: 'R to section' 
	},
	{
		label: '\{\{R from misspelling\}\}: redirect from a misspelling or typographical error',
		value: 'R from misspelling' 
	},
	{
		label: '\{\{R from alternative spelling\}\}: redirect from a title with a different spelling',
		value: 'R from alternative spelling' 
	},
	{
		label: '\{\{R from plural\}\}: redirect from a plural word to the singular equivalent',
		value: 'R from plural' 
	},
	{
		label: '\{\{R from related word\}\}: redirect from a related word',
		value: 'R from related word' 
	},
	{
		label: '\{\{R with possibilities\}\}: redirect from a title for a topic more detailed than what is currently provided on the target page, or section of that page, hence something which can and should be expanded',
		value: 'R with possibilities' 
	},
	{
		label: '\{\{R from member\}\}: redirect from a person who is a member of a group to more general related topics, such as the group, organization, ensemble or team that he or she belongs to',
		value: 'R from member' 
	},
	{
		label: '\{\{R from other capitalisation\}\}: redirect from a title with another method of capitalisation',
		value: 'R from other capitalisation'
	}
];
 
friendlytag.alternativeList = [
	{
		label: '\{\{R from alternative name\}\}: redirect from a title that is another name, a pseudonym, a nickname, or a synonym',
		value: 'R from alternative name' 
	},
	{
		label: '\{\{R from full name\}\}: redirect from a title that is a complete or more complete name',
		value: 'R from full name' 
	},
	{
		label: '\{\{R from surname\}\}: redirect from a title that is a surname',
		value: 'R from surname' 
	},
	{
		label: '\{\{R from historic name\}\}: redirect from a title that is another name, a pseudonym, a nickname, or a synonym that has a significant historic past as a region, state, principate\'s holding, city, city-state or such, but which region has been subsumed into a modern era municipality, district or state, or otherwise suffered from a name change over time',
		value: 'R from historic name' 
	},
	{
		label: '\{\{R from scientific name\}\}: redirect from the scientific name to the common name',
		value: 'R from scientific name' 
	},
	{
		label: '\{\{R to scientific name\}\}: redirect from the common name to the scientific name',
		value: 'R to scientific name' 
	},
	{
		label: '\{\{R from name and country\}\}: redirect from the specific name to the briefer name',
		value: 'R from name and country' 
	},
	{
		label: '\{\{R from alternative language\}\}: redirect from an English name to a name in another language, or vice-versa',
		value: 'R from alternative language' 
	},
	{
		label: '\{\{R from ASCII\}\}: redirect from a title in basic ASCII to the formal article title, with differences that are not diacritical marks (accents, umlauts, etc.)',
		value: 'R from ASCII' 
	},
	{
		label: '\{\{R from title without diacritics\}\}: redirect to the article title with diacritical marks (accents, umlauts, etc.)',
		value: 'R from title without diacritics'
	}
];
 
friendlytag.administrativeList = [
	{
		label: '\{\{R from merge\}\}: redirect from a merged page in order to preserve its edit history',
		value: 'R from merge' 
	},
	{
		label: '\{\{R to disambiguation page\}\}: redirect to a disambiguation page',
		value: 'R to disambiguation page' 
	},
	{
		label: '\{\{R from duplicated article\}\}: redirect to a similar article in order to preserve its edit history',
		value: 'R from duplicated article' 
	},
	{
		label: '\{\{R for as of\}\}: redirect page affects an \"as of ...\" link',
		value: 'R for as of' 
	},
	{
		label: '\{\{R to decade\}\}: redirect from a year to the decade article',
		value: 'R to decade' 
	},
	{
		label: '\{\{R from shortcut\}\}: redirect from a Wikipedia shortcut',
		value: 'R from shortcut' 
	},
	{
		label: '\{\{R from CamelCase\}\}: redirect from a CamelCase title',
		value: 'R from CamelCase' 
	},
	{
		label: '\{\{R from EXIF\}\}: redirect of a wikilink created from JPEG EXIF information (i.e. the \"metadata\" section on some image description pages)',
		value: 'R from EXIF' 
	},
	{
		label: '\{\{R from school\}\}: redirect from a school article that had very little information',
		value: 'R from school'
	}
];
 
friendlytag.callbacks = {
	main: function( self ) {
		var form = self.responseXML.getElementById( 'editform' );
		var tagRe, text = '', summaryText = '( tags.length > 1 ? 'Predlošci' : 'Predložak' )';
		var tags = new Array(), groupableTags = new Array();
 
		if( !isRedirect ) {
			// Check for preexisting tags and separate tags into groupable and non-groupable arrays
			Status.info( 'Info', 'Provjeravam već postojeće oznake na članku' );
			for( var i = 0; i < self.params.tags.length; i++ ) {
				tagRe = new RegExp( '(\\{\\{' + self.params.tags[i] + '(\\||\\}\\}))', 'im' );
				if( !tagRe.exec( form.wpTextbox1.value ) ) {
					if( friendlytag.groupHash[ self.params.tags[i] ] ) {
						groupableTags = groupableTags.concat( self.params.tags[i] );
					} else {
						tags = tags.concat( self.params.tags[i] );
					}
				} else {
					Status.info( 'Info', 'Predložak \{\{' + self.params.tags[i]
						+ '\}\} već postoji u članku...izbacujem' );
				}
			}
		} else {
			// Check for preexisting tags
			Status.info( 'Info', 'Provjeravam već postojeće oznake na preusmjeravanju' );
			for( var i = 0; i < self.params.tags.length; i++ ) {
				tagRe = new RegExp( '(\\{\\{' + self.params.tags[i] + '(\\||\\}\\}))', 'im' );
				if( !tagRe.exec( form.wpTextbox1.value ) ) {
					tags = tags.concat( self.params.tags[i] );
				} else {
					Status.info( 'Info', 'Predložak \{\{' + self.params.tags[i]
						+ '\}\} već postoji na preusmjeravanju...izbacujem' );
				}
			}
		}
 
		if( !isRedirect ) {
			text += form.wpTextbox1.value;
		} else {
			text = form.wpTextbox1.value + text;
		}
		summaryText += ' ' + ( tags.length > 1 ? 'dodani' : 'dodan' )
		+ ' na ' + ( isRedirect ? 'preusmjeravanje.' : 'članak.' ) + FriendlyConfig.summaryAd;
 
		var postData = {
			'wpMinoredit': FriendlyConfig.markTaggedPagesAsMinor ? 1 : undefined,
			'wpWatchthis': form.wpWatchthis.checked ? 1 : (FriendlyConfig.watchTaggedPages ? 1 : undefined),
			'wpStarttime': form.wpStarttime.value,
			'wpEdittime': form.wpEdittime.value,
			'wpAutoSummary': form.wpAutoSummary.value,
			'wpEditToken': form.wpEditToken.value,
			'wpSummary': summaryText,
			'wpTextbox1': text
		};
 
		self.post( postData );
 
		if( FriendlyConfig.markTaggedPagesAsPatrolled && self.params.rcid != '' ) {
			var query = {
				'title': wgPageName,
				'action': 'markpatrolled',
				'rcid': self.params.rcid
			};
 
			var wikipedia_wiki = new Wikipedia.wiki( 'Označavam stranicu pregledanom', query );
			wikipedia_wiki.post();
		}
	}
}
 
friendlytag.callback.evaluate = function friendlytagCallbackEvaluate(e) {
	var form = e.target;
	if( isRedirect ) {
		var tags = form.getChecked( 'administrative' ).concat( form.getChecked( 'alternative' ) ).concat( form.getChecked( 'spelling' ) );
	} else {
		if( typeof( FriendlyConfig.customTagList ) == 'object' ) {
			var tags = form.getChecked( 'notice' ).concat( form.getChecked( 'problem' ) ).concat( form.getChecked( 'maintenance' ) ).concat( form.getChecked( 'custom' ) );
		} else {
			var tags = form.getChecked( 'notice' ).concat( form.getChecked( 'problem' ) ).concat( form.getChecked( 'maintenance' ) );
		}
	}
	var params;
 
	if( tags.length == 0 ) {
		alert( 'Morate odabrati barem jednu oznaku!' );
		return;
	}
	if( !isRedirect ) {
		params = {
			tags: tags,
			group: form.group.checked,
			rcid: QueryString.exists( 'rcid' ) ? QueryString.get( 'rcid' ) : ''
		}
	} else {
		params = {
			tags: tags,
			rcid: QueryString.exists( 'rcid' ) ? QueryString.get( 'rcid' ) : ''
		}
	}
 
	Status.init( form );
 
	var query = { 
		'title': wgPageName, 
		'action': 'submit'
	};
	Wikipedia.actionCompleted.redirect = wgPageName;
	Wikipedia.actionCompleted.notice = "Označavanje završeno, ponovno učitavam članak za nekoliko sekundi";
	var wikipedia_wiki = new Wikipedia.wiki( 'Article modification', query, friendlytag.callbacks.main );
	wikipedia_wiki.params = params;
	wikipedia_wiki.get();
}
// </nowiki>