Manual:Forzar previsualización

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page Manual:Force preview and the translation is 98% complete.
Other languages:
English • ‎español • ‎français • ‎polski • ‎中文 • ‎日本語

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 .

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 = [];

Array.prototype.intersects = function() {
	// --------------------------------------------------------
	//  Devuelve TRUE si cualquier elemento de la matriz del
	//  argumento es igual que un elemento de esta matriz
	// --------------------------------------------------------
	if ( !arguments.length ) return false;

	var array2 = arguments[0];

	var len1 = this.length;
	var len2 = array2.length;
	if ( len2 == 0 ) return false;

	for ( var i = 0; i < len1; i++ ) {
		for ( var j = 0; j < len2; j++ ) {
			if ( this[i] === array2[j] ) return true;
		}
	}
	return false;
};

function forcePreview() {
	if ( mw.config.get( "wgAction" ) != "edit" ) return;
	if ( mw.config.get( "wgUserGroups" ).intersects( permittedGroups ) ) 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 = [];

Array.prototype.intersects = function() {
  // --------------------------------------------------------
  //  Devuelve TRUE si cualquier elemento de la matriz del
  //  argumento es igual que un elemento de esta matriz
  // --------------------------------------------------------
  if( !arguments.length ){
    return false;
  }
  var array2 = arguments[0];

  var len1 = this.length;
  var len2 = array2.length;
  if( len2 == 0 ){
    return false;
  }

  for(var i=0; i<len1; i++){
    for(var j=0; j<len2; j++) {
      if( this[i] === array2[j] ) {
        return true;
      }
    }
  }
  return false;
};

function forcePreview()
{
  if( wgAction != "edit") return;
  if( wgUserGroups === null) {
    wgUserGroups = [];
  }
  if( wgUserGroups.intersects(permittedGroups) ) {
    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