Jump to content

Руководство:$wgActions

From mediawiki.org
This page is a translated version of the page Manual:$wgActions and the translation is 34% complete.
Actions: $wgActions
Массив разрешённых значений параметра action для обычных страниц.
Введено в версии:1.18.0 (r86041)
Удалено в версии:всё ещё используется
Допустимые значения:(массив, ассоциирующий строковые переменные с булевыми или строковыми переменными)
Значение по умолчанию:смотрите ниже

Подробности

Массив разрешённых значений параметра action для обычных страниц.

Синтаксис:

  • 'foo' => 'ClassName' - Загрузка указанного класса, являющегося подклассом Action
  • 'foo' => true - Загрузка класса FooAction, являющегося подклассом Action
  • 'foo' => false - Это действие отключено; вывод сообщения об ошибке

Значение по умолчанию

Since MediaWiki 1.37, core defaults are defined in ActionFactory.php.
Версия MediaWiki:
1.37
/**
 * Array of allowed values for the "title=foo&action=<action>" parameter. See
 * ActionFactory for the syntax. Core defaults are in ActionFactory::CORE_ACTIONS,
 * anything here overrides that.
 */
$wgActions = [];
Версии MediaWiki:
1.32 – 1.36
/**
 * Array of allowed values for the "title=foo&action=<action>" parameter. Syntax is:
 *     'foo' => 'ClassName'    Load the specified class which subclasses Action
 *     'foo' => true           Load the class FooAction which subclasses Action
 *                             If something is specified in the getActionOverrides()
 *                             of the relevant Page object it will be used
 *                             instead of the default class.
 *     'foo' => false          The action is disabled; show an error message
 * Unsetting core actions will probably cause things to complain loudly.
 */
$wgActions = [
	'credits' => true,
	'delete' => true,
	'edit' => true,
	'editchangetags' => SpecialPageAction::class,
	'history' => true,
	'info' => true,
	'markpatrolled' => true,
	'mcrundo' => McrUndoAction::class,
	'mcrrestore' => McrRestoreAction::class,
	'protect' => true,
	'purge' => true,
	'raw' => true,
	'render' => true,
	'revert' => true,
	'revisiondelete' => SpecialPageAction::class,
	'rollback' => true,
	'submit' => true,
	'unprotect' => true,
	'unwatch' => true,
	'view' => true,
	'watch' => true,
];
Версия MediaWiki:
1.31
$wgActions = [
	'credits' => true,
	'delete' => true,
	'edit' => true,
	'editchangetags' => SpecialPageAction::class,
	'history' => true,
	'info' => true,
	'markpatrolled' => true,
	'protect' => true,
	'purge' => true,
	'raw' => true,
	'render' => true,
	'revert' => true,
	'revisiondelete' => SpecialPageAction::class,
	'rollback' => true,
	'submit' => true,
	'unprotect' => true,
	'unwatch' => true,
	'view' => true,
	'watch' => true,
];
Версии MediaWiki:
1.25 – 1.30
$wgActions = [
	'credits' => true,
	'delete' => true,
	'edit' => true,
	'editchangetags' => 'SpecialPageAction',
	'history' => true,
	'info' => true,
	'markpatrolled' => true,
	'protect' => true,
	'purge' => true,
	'raw' => true,
	'render' => true,
	'revert' => true,
	'revisiondelete' => 'SpecialPageAction',
	'rollback' => true,
	'submit' => true,
	'unprotect' => true,
	'unwatch' => true,
	'view' => true,
	'watch' => true,
];
Версии MediaWiki:
1.19 – 1.24
$wgActions = array(
	'credits' => true,
	'delete' => true,
	'edit' => true,
	'history' => true,
	'info' => true,
	'markpatrolled' => true,
	'protect' => true,
	'purge' => true,
	'raw' => true,
	'render' => true,
	'revert' => true,
	'revisiondelete' => true,
	'rollback' => true,
	'submit' => true,
	'unprotect' => true,
	'unwatch' => true,
	'view' => true,
	'watch' => true,
);
Версия MediaWiki:
1.18
$wgActions = array(
	'credits' => true,
	'deletetrackback' => true,
	'info' => true,
	'markpatrolled' => true,
	'purge' => true,
	'revert' => true,
	'revisiondelete' => true,
	'rollback' => true,
	'unwatch' => true,
	'watch' => true,
);

Пример

There is a lot you can do with a custom action, and the best method of discovery is to browse the Action, FormAction and FormlessAction classes in the core MediaWiki code (as these are the classes you will be extending) and to look at examples of pages that provide similar function to what you require, either in the core or in stable and well-supported extensions.

The following example covers the most common use-case, namely generating a custom page for the action, possibly with some extra URL arguments.

class ExampleAction extends Action {

	// This action is called 'example_action'.  This class will only be invoked when the specified
	// action is requested.
	public function getName() {
		// This should be the same name as used when registering the action in $wgActions.
		return 'example_action';
	}

	// This is the function that is called whenever a page is being requested using this action.
	// You should not use globals $wgOut, $wgRequest, etc.  Instead, use the methods provided
	// by the Action class (e.g. $this->getOutput()), instead.
	public function show() {
		// Create local instances of the context variables we need, to simplify later code.
		$out = $this->getOutput();
		$request = $this->getRequest();

		// The view is the same for the main page and the talk page, so if we're on the
		// talk page then we need to change $Title to point to the subject page instead.
		$title = $this->page->getTitle();
		if ( $title->isTalkPage() ) {
			$title = $title->getSubjectPage();
		}

		// Set page title.
		$out->setPageTitle( 'Example Page Title' );

		// Get some parameters from the URL.
		$param = $request->getIntOrNull( 'example_param' );

		// Do some internal stuff to generate the content (placed in $output).

		// Output the results.
		$out->addHTML( $output );
		// or
		$out->addWikiText( $output );
	}
}

Register the new action in extension.json (see extension.json schema):

	"Actions": {
		"example_action": "ExampleAction"
	},

Отключить действие

Чтобы отключить действие, просто добавьте следующее, например, для действия "raw", в свой файл "LocalSettings.php":

$wgActions['raw'] = false;
Если отключить наиболее важные действия, система выдаст сообщение о критической ошибке.