Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 18
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
ZObjectEditingPageTrait
0.00% covered (danger)
0.00%
0 / 18
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 generateZObjectPayload
0.00% covered (danger)
0.00%
0 / 18
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2/**
3 * WikiLambda Object page util (trait) for edition or creation
4 *
5 * @file
6 * @ingroup Extensions
7 * @copyright 2020– Abstract Wikipedia team; see AUTHORS.txt
8 * @license MIT
9 */
10
11namespace MediaWiki\Extension\WikiLambda;
12
13use MediaWiki\Context\IContextSource;
14use MediaWiki\Extension\WikiLambda\Registry\ZLangRegistry;
15use MediaWiki\Html\Html;
16use MediaWiki\Output\OutputPage;
17
18trait ZObjectEditingPageTrait {
19    /**
20     * Generate the edition or creation header and render it in the output.
21     *
22     * @param OutputPage $output
23     * @param IContextSource $context
24     * @param array $jsEditingConfigVarOverride variables to pass to the mw.config in JavaScript.
25     *
26     */
27    public function generateZObjectPayload(
28        OutputPage $output, IContextSource $context, array $jsEditingConfigVarOverride
29    ) {
30        $userLang = $context->getLanguage();
31
32        // Fallback no-JS notice.
33        $output->addHtml( Html::element(
34            'div',
35            [ 'class' => [ 'client-nojs', 'ext-wikilambda-editor-nojswarning' ] ],
36            $context->msg( 'wikilambda-special-createobject-nojs' )->inLanguage( $userLang )->text()
37        ) );
38
39        $userLangCode = $userLang->getCode();
40
41        $zLangRegistry = ZLangRegistry::singleton();
42        // If the userLang isn't recognised (e.g. it's qqx, or a language we don't support yet, or it's
43        // nonsense), then fall back to English.
44        $userLangZid = $zLangRegistry->getLanguageZidFromCode( $userLangCode, true );
45        // Normalise our used language code from what the Language object says
46        $userLangCode = $zLangRegistry->getLanguageCodeFromZid( $userLangZid );
47
48        $jsEditingConfigVarBase = [
49            'zlang' => $userLangCode,
50            'zlangZid' => $userLangZid,
51            'viewmode' => false
52        ];
53        $jsEditingConfigVar = array_merge( $jsEditingConfigVarBase, $jsEditingConfigVarOverride );
54
55        $output->addJsConfigVars( 'wgWikiLambda', $jsEditingConfigVar );
56
57        // Vue app element
58        $output->addHtml( Html::element( 'div', [ 'id' => 'ext-wikilambda-app' ] ) );
59    }
60}