MediaWiki:Gadget-defaultsummaries.js

A Wikipédiából, a szabad enciklopédiából

Megjegyzés: közzététel után frissítened kell a böngésződ gyorsítótárát, hogy lásd a változásokat.

  • Firefox / Safari: tartsd lenyomva a Shift gombot és kattints a Frissítés gombra a címsorban, vagy használd a Ctrl–F5 vagy Ctrl–R (Macen ⌘–R) billentyűkombinációt
  • Google Chrome: használd a Ctrl–Shift–R (Macen ⌘–Shift–R) billentyűkombinációt
  • Internet Explorer / Edge: tartsd nyomva a Ctrl-t, és kattints a Frissítés gombra, vagy nyomj Ctrl–F5-öt
  • Opera: Nyomj Ctrl–F5-öt
/*
 * Importálva az angol Wikipédiából:
 * https://en.wikipedia.org/wiki/MediaWiki:Gadget-defaultsummaries.js
 *
 * Imported as of 09/06/2011 from [[User:ErrantX/defaultsummaries.js]]
 * Edited version from [[User:MC10/defaultsummaries.js]]
 * Implements default edit summary dropdown boxes
 */

(function () { // Wrap with anonymous function
	/**
	 * @param {string} text
	 * @returns {OO.ui.MenuOptionWidget}
	 */
	function getOption(text) {
		return new OO.ui.MenuOptionWidget({
			data: text,
			label: text,
		});
	}

	/**
	 * @param {string} label
	 * @param {OO.ui.MenuOptionWidget[]} options
	 * @param {jQuery} $summaryBox
	 * @returns {jQuery}
	 */
	function getDropdown(label, options, $summaryBox) {
		const dropdown = new OO.ui.DropdownWidget({
			label: label,
			menu: {
				items: options
			},
			$overlay: true,
		});
		const menu = dropdown.getMenu();
		menu.on('select', widget => {
			if (widget) {
				addSummary($summaryBox, widget.getData());
				menu.selectItem();
				dropdown.setLabel(label);
			}
		});
		return dropdown.$element;
	}

	/**
	 * Add a canned summary text to the edit summary field.
	 * @param {jQuery} $summaryBox
	 * @param {string} text
	 */
	function addSummary($summaryBox, text) {
		// Save the original value of the edit summary field
		var editsummOriginalSummary = $summaryBox.val();

		var newSummary = editsummOriginalSummary;

		// Append old edit summary with space, if exists,
		// and last character != space
		if (newSummary.length !== 0 && newSummary.charAt(newSummary.length - 1) !== " ") {
			newSummary += " ";
		}
		newSummary += text;
		$summaryBox.val( newSummary ).trigger( 'change' );
	}

	/**
	 * For convenience, get a `<div>` with dropdown boxes with
	 * some canned edit summaries.
	 * @param {jQuery} $summaryBox The summary box to add the summaries to
	 */
	function getSummaryOptions($summaryBox) {
		const div = document.createElement('div');
		div.id = 'defaultsummaries';

		const minorOptions = [
			getOption("Törölt kép(ek) linkje ki"),
			getOption("Elütések, nyelvtani javítások"),
			getOption("Formázás"),
			getOption("[[Wikipédia:Vandalizmus|Vandalizmus]] vagy teszt szerkesztés [[Wikipédia:visszaállítás|visszaállítás]]a"),
			getOption("Magyarázat nélküli törlés [[Wikipédia:visszaállítás|visszaállítás]]a"),
			getOption("Kisebb lektorálás"),
		];
		const majorOptions = [
			getOption("Azonnal törlendő"),
			getOption("[[Wikipédia:Jószócikk-eljárás adminisztrálása|Jószócikk-eljárás(ok) adminisztrálása]]"),
		];

		const namespaceNumber = mw.config.get('wgNamespaceNumber');
		if (namespaceNumber === 0) {
			majorOptions.push(
				getOption("Szócikk bővítése"),
				getOption("Forráshivatkozás hozzáadása"),
				getOption("Kategória hozzáadása/eltávolítása"),
				getOption("Külső hivatkozás hozzáadása/eltávolítása"),
				getOption("Belső hivatkozások hozzáadása/eltávolítása"),
				getOption("Forrás nélküli tartalom eltávolítása"),
				getOption("[[Spam]] eltávolítása"),
				getOption("Javítgatások"),
				getOption("Nagyobb lektorálás")
			);
		} else {
			majorOptions.push(
				getOption("Válasz"),
				getOption("Megjegyzés"),
				getOption("Javaslat"),
				getOption("Kérdés"),
				getOption("Megoldva/kész")
			);
			// vitalapok (szerkesztői kivételével)
			if ((namespaceNumber % 2 !== 0) && (namespaceNumber !== 3)) {
				majorOptions.push(getOption("[[Wikipédia:Önkéntes ügyfélszolgálat|Engedély]] kihelyezése"));
			}
		}

		getDropdown("Gyakori szerkesztési összefoglalók", majorOptions, $summaryBox).appendTo(div);
		getDropdown("Gyakori apró szerkesztési összefoglalók", minorOptions, $summaryBox).appendTo(div);
		return div;
	}

	mw.hook('ve.saveDialog.stateChanged').add(() => {
		//.ve-init-mw-viewPageTarget-saveDialog-checkboxes
		mw.loader.using('oojs-ui-widgets').then(() => {
			const $dialogBody = ve.init.target.saveDialog.$body;
			if ($dialogBody.find('#defaultsummaries').length === 0) {
				const $summaryBox = $dialogBody.find('.ve-ui-mwSaveDialog-summary textarea');
				$dialogBody.find('.ve-ui-mwSaveDialog-options').before(getSummaryOptions($summaryBox));
			}
		});
	});
	mw.hook('wikipage.editform').add(($editForm) => {
		mw.loader.using('oojs-ui-widgets').then(() => {
			if ($editForm.find('#defaultsummaries').length === 0) {
				const $summaryBox = $editForm.find('#wpSummary');
				const div = getSummaryOptions($summaryBox);
				div.style.display = 'flex';
				div.style.width = '75%';
				$editForm.find('.editCheckboxes').before(div);
			}
		});
	});
}()); // End wrap with anonymous function