Finish hooking up the frontend from {T377575} to the [[ https://www.mediawiki.org/wiki/Community_Configuration | community configuration ]] backend storage. There are some unknowns eg. with our customized Codex interface, but theThe configuration itselfvariable for backlink symbol set iswill be a single string.
* [ ] Define backlink configuration in `CiteSchema.php`. (Remove unused custom group config.)
* Root schema should be an Object, to leave space for additional features to be configured.
* Backlink configuration is a String naming the current alphabet. The variable name can be something like "BacklinkAlphabet".
* Backlink config defaults to some kind of `undefined`, which is a clear signal to use the legacy value. We allow null or empty string.
* Discuss: do we allow "unsetting" to revert to legacy backlinks? It would offer a soft migration. If we do so, plan to make it a temporary stage, and give the unset value an explicit magic name, eg `REVERTED` to be distinguished from the undefined initial state.
* [ ] Implement a new provider in extension.json `CommunityConfigurationProviders`. A wikipage json store like in https://www.mediawiki.org/wiki/Extension:CommunityConfiguration/Technical_documentation#Registering_a_new_provider is probably idealsubclass of `AbstractEditorCapability` (see below).
* [ ] Needs to show up as a subpage like `Special:CommunityConfiguration/Cite` . Stop publishing as `Special:CiteConfiguration`, if possible.
* [ ] StillConfiguration page is hidden behind a feature flag, enabled only when `$wgCiteCommunityConfigurationUseNumericBacklinkLabels === true`false`
* [ ] Load stored configurations into the UI on page open, save changes back to the store when the submit button is clicked. This is probably simplest to implement by sending the form data to the backend and then calling `$provider->storeValidConfiguration()`.
Out of scope:Hints:
Implement the page following the basic structure of https://github.com/wikimedia/mediawiki-extensions-CommunityConfiguration/blob/master/src/EditorCapabilities/GenericFormEditorCapability.php and implement a new subclass of AbstractEditorCapability. Register in extension.json using code like this,
```
"attributes": {
"CommunityConfiguration": {
"EditorCapabilities": {
"citeEditor": {
// must be an implementation of IEditorCapability; AbstractEditorCapability is provided as an optional (but recommended) helper
"class": "MediaWiki\\Extension\\Cite\\CiteEditorCapability"
"services": [...]
}
},
"Providers": {
"cite": {
"store": {
"type": "wikipage",
"args": [ "MediaWiki:CiteConfig.json" ]
},
"validator": {
"type": "jsonschema",
"args": [...]
},
"type": "mw-config" // or "data",
"options": {
"editorCapability": "citeEditor" // or whatever the capability was registered as in the above
}
}
}
}
}
```
* Custom groups, which are configured by a variable-length array of nested config. Remove unused custom group config from CiteSchema.php