mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Gadgets
synced 2024-12-18 01:40:31 +00:00
fce6fdfb20
== What ==
* Remove the empty Gadget and Gadget_definition namespaces.
* Remove the "gadgets-definition-edit" user right.
* Remove need for custom namespace permissions that previously
had to extend editsitejs to apply to NS_GADGET.
== Why ==
Simplify the (unused) "GadgetDefinitionNamespaceRepo" backend for
Gadgets 2.0 by making it less radically different from the status quo.
The experimental 2.0 branch will now make use of the "gadget definition"
content model via "MediaWiki:Gadgets/<id>.json" pages, instead of
through a dedicated namespace.
When I first worked the Gadgets 2.0 branch, content models
were not a thing in MediaWiki, and interface-admin wasn't a thing yet
either. Now that we have per-page permissions and per-page content
models, we don't really need a separate namespace.
This follows the principle of least surprise, and fits well with other
interface admin and site configuration tools such as:
- Citoid, MediaWiki:Citoid-template-type-map.json,
- VisualEditor, MediaWiki:Visualeditor-template-tools-definition.json,
- AbuseFilter, MediaWiki:BlockedExternalDomains.json,
- the upcoming "Community Config" initiative.
If/when we develop the SpecialPage GUI for editing gadget definitions,
this can save its data to these pages the same as it would in
any other namespace. Similar to how Special:BlockedExternalDomains
operates on MediaWiki:BlockedExternalDomains.json.
See also bf1d6b3e93
(I6ffd5e9467), which recently removed the
gadgets-edit user right in favour of the editsite{css,js,json} rights.
Change-Id: I5b04ab251552e839087d0a8a6923d205adc7f771
38 lines
1 KiB
PHP
38 lines
1 KiB
PHP
<?php
|
|
|
|
namespace MediaWiki\Extension\Gadgets;
|
|
|
|
use MediaWiki\Extension\CodeEditor\Hooks\CodeEditorGetPageLanguageHook;
|
|
use MediaWiki\Title\Title;
|
|
|
|
/**
|
|
* Hooks from CodeEditor extension,
|
|
* which is optional to use with this extension.
|
|
*/
|
|
class CodeEditorHooks implements CodeEditorGetPageLanguageHook {
|
|
|
|
/**
|
|
* Set the CodeEditor language for GadgetDefinition pages.
|
|
*
|
|
* The CodeEditor extension sets the default syntax highlight language based
|
|
* on the content model (not page title), so while gadget definitions have ".json"
|
|
* page titles, the fact that we use a more specific subclass as content model,
|
|
* means we must explicitly opt-in to JSON syntax highlighting.
|
|
*
|
|
* @param Title $title
|
|
* @param string|null &$lang
|
|
* @param string $model
|
|
* @param string $format
|
|
* @return bool
|
|
*/
|
|
public function onCodeEditorGetPageLanguage( Title $title, ?string &$lang, string $model, string $format ) {
|
|
if ( $title->hasContentModel( 'GadgetDefinition' ) ) {
|
|
$lang = 'json';
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
}
|