Manual:Force preview

From MediaWiki.org
Jump to: navigation, search

Force preview is JavaScript that prevents specified individuals or groups from saving a wiki page before they preview it at least once.

In order to use this code, insert it into your wiki's Mediawiki:Common.js page.

Note that this method is not foolproof. If a user disables JavaScript in their browser, they will not have preview forced on them. If you want to ensure that this policy is enforced, then you should look at Extension:ForcePreview.

For MediaWiki 1.17 or newer[edit | edit source]

// -------------------------------------------------------------------------------
//  Force Preview  JavaScript code - Start
//
//  To allow any group to bypass being forced to preview, 
//  enter the group name in the permittedGroups array.
//  E.g.
//    var permittedGroups = [];                       // force everyone
//    var permittedGroups = [ "user"];                // permit logged-in users 
//    var permittedGroups = [ "sysop", "bureaucrat"]; // permit sysop, bureaucrat 
// -------------------------------------------------------------------------------
var permittedGroups = [];
 
Array.prototype.intersects = function() {
	// --------------------------------------------------------
	//  Returns true if any element in the argument array
	//  is the same as an element in this array
	// --------------------------------------------------------
	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 );
// -----------------------------------------------------
//  Force Preview  JavaScript code - End
// -----------------------------------------------------

For Mediawiki 1.14 or newer[edit | edit source]

The following will permit you to control who has preview mode forced on them. It permits you to set one or more user groups to bypass forced preview and save directly. In order to permit a user group, add the group name to the permittedGroups array as shown in the comments with the JavaScript code.

// -------------------------------------------------------------------------------
//  Force Preview  JavaScript code - Start
//
//  To allow any group to bypass being forced to preview, 
//  enter the group name in the permittedGroups array.
//  E.g.
//    var permittedGroups = [];                       // force everyone
//    var permittedGroups = [ "user"];                // permit logged-in users 
//    var permittedGroups = [ "sysop", "bureaucrat"]; // permit sysop, bureaucrat 
// -------------------------------------------------------------------------------
var permittedGroups = [];
 
Array.prototype.intersects = function() {
  // --------------------------------------------------------
  //  Returns true if any element in the argument array
  //  is the same as an element in this array
  // --------------------------------------------------------
  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);
// -----------------------------------------------------
//  Force Preview  JavaScript code - End
// -----------------------------------------------------

Older Versions[edit | edit source]

The below scripts are based on Marc Mongenet's script, from fr.wikipedia.org.

Force preview by wgUserGroups, requires a MW version >= 1.10[edit | edit source]

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);

If you wish to provide exceptions to certain usergroups. Just change == (EQUAL TO) signs to != (NOT EQUAL TO)

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

Common choices range from "user", "bureaucrat", "sysop" and more depending on your configuration.

Marc Mongenet's force preview, by wgUserName, requires a MW version > 1.6[edit | edit source]

/* Force preview for anons */
/* by 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);
 
/* End of forcePreview */

See also[edit | edit source]

Language: English  • français