Manual:Forzar previsualización

From mediawiki.org
This page is a translated version of the page Manual:Force preview and the translation is 90% complete.

Forzar previsualización es código JavaScript que impide que determinadas personas o grupos puedan guardar los cambios realizados en una página del wiki sin previsualizarla antes al menos una vez.

Para usar este código, insértalo en la página MediaWiki:Common.js de tu wiki.

Ten en cuenta que este método no es del todo fiable. Si un usuario desactiva la ejecución de JavaScript en su navegador, el código no llegará a ejecutarse y por tanto no podrá obligarle a usar la previsualización. Si quieres asegurarte del cumplimiento de esta norma, deberías considerar Extensión:ForcePreview .

NOTE: some of these scripts are outdated and use addOnloadHook that is deprecated.

For MediaWiki 1.23 or newer

// Force Preview and Edit-Summary - Start
if (mw.config.get("wgAction") === "edit")
	$.when(mw.loader.using("user.options"), $.ready).then(function () {
		var $wpSave = $("#wpSave"),
			$wpPreview = $("#wpPreview"),
			saveVal = $wpSave.val(),
			classNames = "oo-ui-widget-enabled oo-ui-flaggedElement-progressive oo-ui-flaggedElement-primary";
		if (!mw.user.options.get("forceeditsummary") || mw.user.options.get("previewonfirst"))
			mw.loader.using("mediawiki.api", function () {
				new mw.Api().saveOptions({forceeditsummary: 1, previewonfirst: 0});
			});
		if (!$("#wikiPreview,#wikiDiff").is(":visible") && $wpSave.length && $wpPreview.length) {
			$wpSave.prop("disabled", true)
				.val("Save page (use preview first)")
				.parent().removeClass(classNames).addClass("oo-ui-widget-disabled");
			$wpPreview.one("click", function (e) { // re-enable
				$wpSave.prop("disabled", false)
					.val(saveVal)
					.parent().removeClass("oo-ui-widget-disabled").addClass(classNames);
			}).parent().addClass(classNames);
		}
	});
// Force Preview and Edit-Summary - End

Para MediaWiki 1.17 o posteriores

Not right working with LivePreview (v.1.17) and OOUI (v.1.23).

// -------------------------------------------------------------------------------
//  Forzar previsualización - Inicio de código JavaScript
//
//  Para permitir que algún grupo pueda saltarse esta norma,
//  introduce el nombre del grupo en la matriz permittedGroups.
//  Ejemplos:
//    var permittedGroups = [];                       // obligar a todo el mundo
//    var permittedGroups = [ "user"];                // no obligar a los usuarios identificados
//    var permittedGroups = [ "sysop", "bureaucrat"]; // no obligar a los administradores y burócratas
// -------------------------------------------------------------------------------
var permittedGroups = [];

function forcePreview() {
	if ( mw.config.get( "wgAction" ) !== "edit" ) return;
	if ( mw.config.get( "wgUserGroups" ).filter(function(group) {
		return permittedGroups.indexOf(group) > -1;
	}).length ) return;
	var saveButton = document.getElementById( "wpSave" );
	if ( !saveButton ) return;
	saveButton.disabled = true;
	saveButton.value = "Save page (use preview first)";
	saveButton.style.fontWeight = "normal";
	document.getElementById("wpPreview").style.fontWeight = "bold";
}

jQuery(document).ready( forcePreview );
// -----------------------------------------------------
//  Forzar previsualización - Fin de código JavaScript
// -----------------------------------------------------

Para MediaWiki 1.14 o posteriores

El siguiente código te permite decidir a quién se le obliga a usar la previsualización. Te permite definir uno o más grupos que no se verán afectados por esta norma y podrán guardar directamente. Para dar este permiso a un grupo de usuarios, añade el nombre del grupo a la matriz permittedGroups tal como se indica en los comentarios del código JavaScript.

// -------------------------------------------------------------------------------
//  Forzar previsualización - Inicio de código JavaScript
//
//  Para permitir que algún grupo pueda saltarse esta norma,
//  introduce el nombre del grupo en la matriz permittedGroups.
//  Ejemplos:
//    var permittedGroups = [];                       // obligar a todo el mundo
//    var permittedGroups = [ "user"];                // no obligar a los usuarios identificados
//    var permittedGroups = [ "sysop", "bureaucrat"]; // no obligar a los administradores y burócratas
// -------------------------------------------------------------------------------
var permittedGroups = [];

function forcePreview()
{
  if( wgAction !== "edit") return;
  if( wgUserGroups === null) {
    wgUserGroups = [];
  }
  if( wgUserGroups.filter(function(group) {
    return permittedGroups.indexOf(group) > -1;
  }).length ) {
    return;
  }
  var saveButton = document.getElementById("wpSave");
  if( !saveButton )
    return;
  saveButton.disabled = true;
  saveButton.value = "Save page (use preview first)";
  saveButton.style.fontWeight = "normal";
  document.getElementById("wpPreview").style.fontWeight = "bold";
}

addOnloadHook(forcePreview);
// -----------------------------------------------------
//  Forzar previsualización - Fin de código JavaScript
// -----------------------------------------------------

Versiones más antiguas

Los scripts mostrados a continuación están basados en el script de Marc Mongenet, de fr.wikipedia.org.

Forzar previsualización usando wgUserGroups, requiere MW 1.10 o posteriores

function forcePreview() {
  if (wgUserGroups === "user" || wgAction !== "edit") return;
  saveButton = document.getElementById("wpSave");
  if (!saveButton) return;
  saveButton.disabled = true;
  saveButton.value = "Save page (use preview first)";
  saveButton.style.fontWeight = "normal";
  document.getElementById("wpPreview").style.fontWeight = "bold";
}
addOnloadHook(forcePreview);

Si quieres indicar excepciones para ciertos grupos, simplemente cambia los signos == (IGUAL A) por != (DISTINTO DE).

  if (wgUserGroups !== "user" || wgAction !== "edit") return;

Las opciones más comunes son "user", "bureaucrat", "sysop" y otras, dependiendo de tu configuración.

Forzar previsualización de Marc Mongenet, usando wgUserName, requiere MW > 1.6

/* Forzar previsualización para usuarios anónimos */
/* por Marc Mongenet, 2006, fr.wikipedia */

function forcePreview() {
  if (wgUserName !== null || wgAction !== "edit") return;
  saveButton = document.getElementById("wpSave");
  if (!saveButton) return;
  saveButton.disabled = true;
  saveButton.value = "Save page (use preview first)";
  saveButton.style.fontWeight = "normal";
  document.getElementById("wpPreview").style.fontWeight = "bold";
}
addOnloadHook(forcePreview);

/* Fin de forcePreview */

Véase también