Manual:プレビューの強制

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 100% complete.

Other languages:
English • ‎español • ‎français • ‎polski • ‎中文 • ‎日本語

強制プレビューとは特定の個人やグループが最低1回はプレビューしないとウィキページを保存できないようにするJavaScriptです。

このコードを使用するには、ご利用のウィキのMediaWiki:Common.js pageに追加します。

この方法は完璧ではない典にご注意ください。 利用者がブラウザでJavaScriptを無効にしてあると、プレビューを強制されることはありません。 この方針を徹底したい場合には、必ずExtension:ForcePreview を参照します。

MediaWiki 1.23以降

// 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 以降向け

下記の設定で、プレビューモードを強制する対象をコントロールします。 対象とする利用者グループを1、2件設定して、プレビューを回避して、直接、保存できるようにします。 利用者グループに強制プレビュー回避を許可するには、コメント欄に表示したように、JavaScript コードを使い、グループ名をpermittedGroups配列に記入します。

// -------------------------------------------------------------------------------
//  強制プレビュー 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);

特定の利用者グループを例外に設定する場合、。== (等しい)記号を!= (等しくない)に変更するだけです。

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

一般的な選択肢として「user」、「"bureaucrat」、「sysop」があり、個別の設定によりもっと増やすことができます。

Marc Mongenetによる強制プレビューwgUserName開発、にはMWバージョン1.6以降が必要

/* 匿名利用者に対する強制プレビュー */
/* 2006年フランス語版ウィキペディアのMarc Mongenet 作成 */

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

/* この機能の終わり */

関連項目