手冊:強制預覽

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 • ‎中文 • ‎日本語

強制預覽(Force preview) 是一個能使特定的人或用戶組別於保存頁面之前必須至少預覽頁面至少一次的JavaScript。

欲使用此程式碼,請將其導入至個別維基的 MediaWiki:Common.js 頁面。

注意這個方法並非完全萬無一失。 如果該用戶於瀏覽器關閉JavaScript功能,此強制預覽功能是不會運作的。 如果您想要確保這個方針是強制執行的,那麼您應該查看 扩展:强制预览

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

對於 MediaWiki 1.17 或更新版本

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

// -------------------------------------------------------------------------------
//  強制預覽 JavaScript功能 - 開始
//
//  為了允許任何組別繞過強制預覽功能
//  於 permittedGroups 欄輸入組別名稱
//  例如:
//    var permittedGroups = [];                       // 強制每個人
//    var permittedGroups = [ "user"];                // 允許登錄帳戶
//    var permittedGroups = [ "sysop", "bureaucrat"]; // 允許管理員,官僚
// -------------------------------------------------------------------------------
var permittedGroups = [];

Array.prototype.intersects = function() {
	// --------------------------------------------------------
	//  若參數欄含有任何元素,則返回為true值
	//  若以此欄的元素相同
	// --------------------------------------------------------
	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 );
// -----------------------------------------------------
//  強制預覽 JavaScript功能 - 結束
// -----------------------------------------------------

對於Mediawiki 1.14或更新版本

以下會允許您可以控制特定用戶必須強制執行預覽模式。 它允許您設置一個或多個用戶組以直接保存頁面而繞過強制預覽功能。 為了允許用戶組別,於permittedGroups欄添加組別名稱,如以下JavaScroup程式碼的註解欄所示

// -------------------------------------------------------------------------------
//  強制預覽 JavaScript功能 - 開始
//
//  為了允許任何組別繞過強制預覽功能
//  於 permittedGroups 欄輸入組別名稱
//  例如:
//    var permittedGroups = [];                       // 強制每個人
//    var permittedGroups = [ "user"];                // 允許登錄帳戶
//    var permittedGroups = [ "sysop", "bureaucrat"]; // 允許管理員,官僚
// -------------------------------------------------------------------------------
var permittedGroups = [];

Array.prototype.intersects = function() {
  // --------------------------------------------------------
  //  若參數欄含有任何元素,則返回為true值
  //  若以此欄的元素相同
  // --------------------------------------------------------
  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);
// -----------------------------------------------------
//  強制預覽 JavaScript功能 - 結束
// -----------------------------------------------------

較舊的版本

以下腳本是根據由 fr.wikipedia.org Marc Mongenet的腳本。

使 wgUserGroups 強制預覽, MW版本需 >= 1.10

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

如果您想要排除特定的用戶組別。僅需更改 == (EQUAL TO) 符號至 != (NOT EQUAL TO)

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

常見的由 "用戶", "官僚", "管理員" 等等選定範圍是取決於您的配置方式。

Marc Mongenet的強制執行功能, 由 wgUserName, MW版本需 > 1.6

/* 使匿名用戶強制預覽 */
/* 由fr.wikipedia, Marc Mongenet, 2006 */

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

/* 強制執行功能結束 */

參見