Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
92.00% covered (success)
92.00%
23 / 25
50.00% covered (danger)
50.00%
2 / 4
CRAP
0.00% covered (danger)
0.00%
0 / 1
CiteVisualEditorModule
92.00% covered (success)
92.00%
23 / 25
50.00% covered (danger)
50.00%
2 / 4
8.03
0.00% covered (danger)
0.00%
0 / 1
 getScript
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 supportsURLLoading
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 makePrependedScript
100.00% covered (success)
100.00%
19 / 19
100.00% covered (success)
100.00%
1 / 1
5
 getDefinitionSummary
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace Cite\ResourceLoader;
4
5use MediaWiki\ResourceLoader as RL;
6
7/**
8 * File module with extra data generated by the server.
9 *
10 * Temporary hack since 2015 for T93800.
11 *
12 * @copyright 2011-2018 VisualEditor Team's Cite sub-team and others; see AUTHORS.txt
13 * @license MIT
14 */
15class CiteVisualEditorModule extends RL\FileModule {
16
17    /** @inheritDoc */
18    public function getScript( RL\Context $context ) {
19        return $this->makePrependedScript( $context ) . parent::getScript( $context );
20    }
21
22    /** @inheritDoc */
23    public function supportsURLLoading() {
24        // URL loading (in legacy debug mode) doesn't work correctly because of the prepended script (T309697)
25        return false;
26    }
27
28    /**
29     * @internal
30     * @param RL\Context $context
31     * @return string JavaScript code
32     */
33    public function makePrependedScript( RL\Context $context ) {
34        $citationDefinition = json_decode(
35            $context->msg( 'cite-tool-definition.json' )
36                ->inContentLanguage()
37                ->plain()
38        );
39
40        if ( $citationDefinition === null ) {
41            $citationDefinition = json_decode(
42                $context->msg( 'visualeditor-cite-tool-definition.json' )
43                    ->inContentLanguage()
44                    ->plain()
45            );
46        }
47
48        $citationTools = [];
49        if ( is_array( $citationDefinition ) ) {
50            foreach ( $citationDefinition as $tool ) {
51                if ( !isset( $tool->title ) ) {
52                    $tool->title = $context->msg( 'visualeditor-cite-tool-name-' . $tool->name )
53                        ->text();
54                }
55                $citationTools[] = $tool;
56            }
57        }
58
59        // TODO: When this custom module is converted to adopt packageFiles, this data
60        // can be exported via a callback as a virtual "tools.json" file. Then the JS
61        // in MWReference.init.js can do `ve.ui.mwCitationTools = require( "./tools.json" )`
62
63        // Limit and expose
64        $limit = 5;
65        $citationTools = array_slice( $citationTools, 0, $limit );
66        return 've.ui.mwCitationTools = ' . $context->encodeJson( $citationTools ) . ';';
67    }
68
69    /** @inheritDoc */
70    public function getDefinitionSummary( RL\Context $context ) {
71        $summary = parent::getDefinitionSummary( $context );
72        $summary[] = [
73            'script' => $this->makePrependedScript( $context ),
74        ];
75        return $summary;
76    }
77
78}